diff --git a/css/app.f08e491a.css b/css/app.3a39f5ba.css similarity index 98% rename from css/app.f08e491a.css rename to css/app.3a39f5ba.css index a5fd4d04..6a0adbc7 100644 --- a/css/app.f08e491a.css +++ b/css/app.3a39f5ba.css @@ -1 +1 @@ -.message[data-v-03d14766]{max-width:600px}.message+.message[data-v-03d14766]{margin-top:15px}.message-container[data-v-03d14766]{min-width:50px;display:flex;align-items:center;padding:10px;font-size:13px;overflow:hidden;border-radius:2px;box-shadow:0 1px 8px rgba(0,0,0,.15);background:#fff;pointer-events:all;position:relative}.message-container .icons[data-v-03d14766]{display:flex;align-items:center;margin-right:10px}.message-container .title[data-v-03d14766]{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-container .content[data-v-03d14766]{width:100%}.message-container .description[data-v-03d14766]{line-height:1.5;color:#41464b}.message-container .title+.description[data-v-03d14766]{margin-top:5px}.message-container .control[data-v-03d14766]{position:relative;height:100%;margin-left:10px}.message-container .close-btn[data-v-03d14766]{font-size:15px;color:#666;display:flex;align-items:center;cursor:pointer}.message-container .close-btn[data-v-03d14766]:hover{color:#d14424}.message-fade-enter-active[data-v-03d14766]{animation:message-fade-in-down-03d14766 .3s}.message-fade-leave-active[data-v-03d14766]{animation:message-fade-out-03d14766 .3s}@keyframes message-fade-in-down-03d14766{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes message-fade-out-03d14766{0%{opacity:1;margin-top:0}to{opacity:0;margin-top:-45px}}.hotkey-doc[data-v-a0322054]{height:100%;overflow:auto;font-size:12px;margin:0 -15px;padding:0 15px 15px}.title[data-v-a0322054]{font-size:14px;font-weight:700;border-bottom:1px solid #e5e5e5;padding:25px 0 5px 0}.title[data-v-a0322054]:first-child{padding-top:0}.hotkey-item[data-v-a0322054]{border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0;display:flex;align-items:center}.label[data-v-a0322054]{width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.input[data-v-64bedb34]{display:none}.fullscreen-spin[data-v-a5c6b41c]{top:0;bottom:0;left:0;right:0;z-index:100;background-color:hsla(0,0%,95%,.7)}.fullscreen-spin[data-v-a5c6b41c],.spin[data-v-a5c6b41c]{position:fixed;display:flex;justify-content:center;align-items:center}.spin[data-v-a5c6b41c]{width:200px;height:200px;top:50%;left:50%;margin-top:-100px;margin-left:-100px;flex-direction:column}.spinner[data-v-a5c6b41c]{width:36px;height:36px;border:3px solid #d14424;border-top-color:transparent;border-radius:50%;animation:spinner-a5c6b41c .8s linear infinite}.text[data-v-a5c6b41c]{margin-top:20px;color:#d14424}@keyframes spinner-a5c6b41c{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.drawer[data-v-749dadac]{height:100%;position:fixed;top:0;bottom:0;z-index:5000;background:#fff;display:flex;flex-direction:column}.drawer.left[data-v-749dadac]{left:0;box-shadow:3px 0 6px -4px rgba(0,0,0,.12),9px 0 28px 8px rgba(0,0,0,.05)}.drawer.right[data-v-749dadac]{right:0;box-shadow:-3px 0 6px -4px rgba(0,0,0,.12),-9px 0 28px 8px rgba(0,0,0,.05)}.header[data-v-749dadac]{height:50px;padding:0 15px;position:relative;display:flex;align-items:center}.header .close-btn[data-v-749dadac]{width:20px;height:20px;display:flex;justify-content:center;align-items:center;position:absolute;top:15px;right:15px;cursor:pointer}.content[data-v-749dadac]{padding:0 15px;overflow:auto;flex:1}.drawer-slide-right-enter-active[data-v-749dadac]{animation:drawer-slide-right-enter-749dadac .25s ease both}.drawer-slide-right-leave-active[data-v-749dadac]{animation:drawer-slide-right-leave-749dadac .25s ease both}.drawer-slide-left-enter-active[data-v-749dadac]{animation:drawer-slide-left-enter-749dadac .25s ease both}.drawer-slide-left-leave-active[data-v-749dadac]{animation:drawer-slide-left-leave-749dadac .25s ease both}@keyframes drawer-slide-right-enter-749dadac{0%{transform:translateX(100%)}}@keyframes drawer-slide-right-leave-749dadac{to{transform:translateX(100%)}}@keyframes drawer-slide-left-enter-749dadac{0%{transform:translateX(-100%)}}@keyframes drawer-slide-left-leave-749dadac{to{transform:translateX(-100%)}}.input[data-v-a97ba0dc]{background-color:#fff;border:1px solid #d9d9d9;padding:0 5px;border-radius:2px;transition:border-color .25s;font-size:13px;display:flex}.input input[data-v-a97ba0dc]{min-width:0;height:30px;outline:0;border:0;line-height:30px;vertical-align:top;color:#41464b;padding:0 5px;flex:1;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}.input input[data-v-a97ba0dc]::-moz-placeholder{color:#bfbfbf}.input input[data-v-a97ba0dc]::placeholder{color:#bfbfbf}.input.focused[data-v-a97ba0dc],.input[data-v-a97ba0dc]:not(.disabled):hover{border-color:#d14424}.input.disabled[data-v-a97ba0dc]{background-color:#f5f5f5;border-color:#dcdcdc;color:#b7b7b7}.input .prefix[data-v-a97ba0dc],.input .suffix[data-v-a97ba0dc]{display:flex;justify-content:center;align-items:center;line-height:30px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.popover.center[data-v-70fabe9a]{display:flex;justify-content:center;align-items:center}.popover-content[data-v-70fabe9a]{background-color:#fff;padding:10px;border:1px solid #eee;box-shadow:3px 3px 3px rgba(0,0,0,.15);border-radius:2px;font-size:13px}.tippy-box[data-theme~=popover]{border:0;outline:0}.popover-menu-item[data-v-2f137c4f]{min-width:80px;padding:6px 10px;border-radius:2px;font-size:13px;cursor:pointer}.popover-menu-item.center[data-v-2f137c4f]{text-align:center}.popover-menu-item[data-v-2f137c4f]:hover{background-color:#f1f1f1}.popover-menu-item+.popover-menu-item[data-v-2f137c4f]{margin-top:2px}.editor-header[data-v-0b9f8c7b]{background-color:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:0 5px}.left[data-v-0b9f8c7b],.menu-item[data-v-0b9f8c7b],.right[data-v-0b9f8c7b]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-0b9f8c7b]{height:30px;font-size:14px;padding:0 10px;border-radius:2px;cursor:pointer}.menu-item .icon[data-v-0b9f8c7b]{font-size:18px;color:#666}.menu-item[data-v-0b9f8c7b]:hover{background-color:#f1f1f1}.group-menu-item[data-v-0b9f8c7b]{height:30px;display:flex;margin:0 8px;padding:0 2px;border-radius:2px}.group-menu-item[data-v-0b9f8c7b]:hover{background-color:#f1f1f1}.group-menu-item .menu-item[data-v-0b9f8c7b]{padding:0 3px}.group-menu-item .arrow-btn[data-v-0b9f8c7b]{display:flex;justify-content:center;align-items:center;cursor:pointer}.title[data-v-0b9f8c7b]{height:32px;margin-left:2px;font-size:13px}.title .title-input[data-v-0b9f8c7b]{width:200px;height:100%;padding-left:0;padding-right:0}.title .title-text[data-v-0b9f8c7b]{min-width:20px;max-width:400px;line-height:32px;padding:0 6px;border-radius:2px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.title .title-text[data-v-0b9f8c7b]:hover{background-color:#f1f1f1}.github-link[data-v-0b9f8c7b]{display:inline-block;height:30px}svg[data-v-11836cf8],svg[data-v-35e36256],svg[data-v-6e021ee2]{overflow:visible;position:absolute;z-index:2;top:0;left:0}.image-clip-handler[data-v-5984406b]{width:100%;height:100%;position:relative}.image-clip-handler .bottom-img[data-v-5984406b]{top:0;left:0;width:100%;height:100%;opacity:.5}.image-clip-handler img[data-v-5984406b]{width:100%;height:100%}.image-clip-handler .top-image-content[data-v-5984406b]{position:absolute;overflow:hidden}.image-clip-handler .top-image-content img[data-v-5984406b]{position:absolute}.operate[data-v-5984406b]{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.clip-point[data-v-5984406b]{position:absolute;width:16px;height:16px}.clip-point svg[data-v-5984406b]{overflow:visible}.clip-point.left-top[data-v-5984406b]{left:0;top:0}.clip-point.right-top[data-v-5984406b]{left:100%;top:0;transform:rotate(90deg);transform-origin:0 0}.clip-point.left-bottom[data-v-5984406b]{left:0;top:100%;transform:rotate(-90deg);transform-origin:0 0}.clip-point.right-bottom[data-v-5984406b]{left:100%;top:100%;transform:rotate(180deg);transform-origin:0 0}.clip-point.top[data-v-5984406b]{left:50%;top:0;margin-left:-8px}.clip-point.bottom[data-v-5984406b]{left:50%;bottom:0;margin-left:-8px;transform:rotate(180deg)}.clip-point.left[data-v-5984406b]{left:0;top:50%;margin-top:-8px;transform:rotate(-90deg)}.clip-point.right[data-v-5984406b]{right:0;top:50%;margin-top:-8px;transform:rotate(90deg)}.clip-point.bottom.rotate-135[data-v-5984406b],.clip-point.left-bottom.rotate-90[data-v-5984406b],.clip-point.left-top.rotate-0[data-v-5984406b],.clip-point.left.rotate-45[data-v-5984406b],.clip-point.right-bottom.rotate-0[data-v-5984406b],.clip-point.right-top.rotate-90[data-v-5984406b],.clip-point.right.rotate-45[data-v-5984406b],.clip-point.top.rotate-135[data-v-5984406b]{cursor:nwse-resize}.clip-point.bottom.rotate-0[data-v-5984406b],.clip-point.left-bottom.rotate-135[data-v-5984406b],.clip-point.left-top.rotate-45[data-v-5984406b],.clip-point.left.rotate-90[data-v-5984406b],.clip-point.right-bottom.rotate-45[data-v-5984406b],.clip-point.right-top.rotate-135[data-v-5984406b],.clip-point.right.rotate-90[data-v-5984406b],.clip-point.top.rotate-0[data-v-5984406b]{cursor:ns-resize}.clip-point.bottom.rotate-45[data-v-5984406b],.clip-point.left-bottom.rotate-0[data-v-5984406b],.clip-point.left-top.rotate-90[data-v-5984406b],.clip-point.left.rotate-135[data-v-5984406b],.clip-point.right-bottom.rotate-90[data-v-5984406b],.clip-point.right-top.rotate-0[data-v-5984406b],.clip-point.right.rotate-135[data-v-5984406b],.clip-point.top.rotate-45[data-v-5984406b]{cursor:nesw-resize}.clip-point.bottom.rotate-90[data-v-5984406b],.clip-point.left-bottom.rotate-45[data-v-5984406b],.clip-point.left-top.rotate-135[data-v-5984406b],.clip-point.left.rotate-0[data-v-5984406b],.clip-point.right-bottom.rotate-135[data-v-5984406b],.clip-point.right-top.rotate-45[data-v-5984406b],.clip-point.right.rotate-0[data-v-5984406b],.clip-point.top.rotate-90[data-v-5984406b]{cursor:ew-resize}.editable-element-image[data-v-1156b3e1]{position:absolute}.editable-element-image.lock .element-content[data-v-1156b3e1]{cursor:default}.rotate-wrapper[data-v-1156b3e1]{width:100%;height:100%}.element-content[data-v-1156b3e1]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-1156b3e1]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-1156b3e1]{position:absolute}.color-mask[data-v-1156b3e1]{position:absolute;top:0;bottom:0;left:0;right:0}svg[data-v-efb76626]{overflow:visible;position:absolute;top:0;left:0}.prosemirror-editor[data-v-653f533c]{cursor:text}.prosemirror-editor.format-painter[data-v-653f533c]{cursor:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTcuMzUuMDEyLS4wNjYuOTk4YTUuMjcxIDUuMjcxIDAgMCAwLTEuMTg0LjA2IDMuOCAzLjggMCAwIDAtLjkzMy40NzJjLS40NC4zNTYtLjc4My44MTEtLjk5OCAxLjMyNGwuMDE4LS4wMzZ2NS4xMmgxLjA0di45OGgtMS4wNGwtLjAwMiA0LjE1Yy4xODcuNDI2LjQ2LjgxLjc5MSAxLjExN2wuMTc1LjE1MmMuMjkzLjIwOC42MTUuMzczLjg5LjQ3Mi40MS4wODIuODMuMTEyIDEuMjQ5LjA5bC4wNTcuOTk5YTYuMDYzIDYuMDYzIDAgMCAxLTEuNTg4LS4xMjkgNC44MzYgNC44MzYgMCAwIDEtMS4yNS0uNjQ3IDQuNDYzIDQuNDYzIDAgMCAxLS44MzgtLjg4M2MtLjIyNC4zMzItLjUuNjQyLS44MjQuOTI3YTQuMTEgNC4xMSAwIDAgMS0xLjMwNS42MzNBNi4xMjYgNi4xMjYgMCAwIDEgMCAxNS45MDlsLjA2OC0uOTk3Yy40MjQuMDI2Ljg1LS4wMDEgMS4yMTctLjA3LjMzNi0uMDk5LjY1MS0uMjU0Ljg5NC0uNDMuNDMtLjM4Ljc2NS0uODQ3Ljk4Mi0xLjM2OGwtLjAwNS4wMTRWOC45M0gyLjExNXYtLjk4aDEuMDRWMi44NjJhMy43NyAzLjc3IDAgMCAwLS43NzQtMS4xNjdsLS4xNjUtLjE1NmEzLjA2NCAzLjA2NCAwIDAgMC0uODgtLjQ0OEE1LjA2MiA1LjA2MiAwIDAgMCAuMDY3IDEuMDFMMCAuMDEyYTYuMTQgNi4xNCAwIDAgMSAxLjU5Mi4xMWMuNDUzLjEzNS44NzcuMzQ1IDEuMjkuNjUuMy4yNjUuNTY1LjU2NC43ODcuODkuMjMzLS4zMzEuNTItLjYzNC44NTMtLjkwNGE0LjgzNSA0LjgzNSAwIDAgMSAxLjMtLjY0OEE2LjE1NSA2LjE1NSAwIDAgMSA3LjM1LjAxMnoiIGZpbGw9IiMwRDBEMEQiLz48cGF0aCBkPSJtMTcuMzUgMTQuNSA0LjUtNC41LTYtNmMtMiAyLTMgMi01LjUgMi41LjQgMy4yIDQuODMzIDYuNjY3IDcgOHptNC41ODgtNC40OTNhLjMuMyAwIDAgMCAuNDI0IDBsLjY4LS42OGExLjUgMS41IDAgMCAwIDAtMi4xMjJMMjEuNjkgNS44NTNsMi4wMjUtMS41ODNhMS42MjkgMS42MjkgMCAxIDAtMi4yNzktMi4yOTZsLTEuNjAzIDIuMDIyLTEuMzU3LTEuMzU3YTEuNSAxLjUgMCAwIDAtMi4xMjEgMGwtLjY4LjY4YS4zLjMgMCAwIDAgMCAuNDI1bDYuMjYzIDYuMjYzeiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xNS44OTIgMy45NjJzLTEuMDMgMS4yMDItMi40OTQgMS44OWMtMS4wMDYuNDc0LTIuMTguNTg2LTIuNzM0LjYyNy0uMi4wMTUtLjM0NC4yMS0uMjc2LjM5OS4yOTIuODIgMS4xMTIgMi44IDIuNjU4IDQuMzQ2IDIuMTI2IDIuMTI3IDMuNjU4IDIuOTY4IDQuMTQyIDMuMjAzLjEuMDQ4LjIxNC4wMy4yOTgtLjA0Mi4zODYtLjMyNSAxLjUtMS4yNzcgMi4yMS0xLjk4Ni44OTItLjg4OSAyLjE4Ny0yLjQ0NyAyLjE4Ny0yLjQ0N20uNDc5LjA1NWEuMy4zIDAgMCAxLS40MjQgMGwtNi4yNjQtNi4yNjNhLjMuMyAwIDAgMSAwLS40MjVsLjY4LS42OGExLjUgMS41IDAgMCAxIDIuMTIyIDBsMS4zNTcgMS4zNTcgMS42MDMtMi4wMjJhMS42MjkgMS42MjkgMCAxIDEgMi4yOCAyLjI5NkwyMS42OSA1Ljg1M2wxLjM1MiAxLjM1MmExLjUgMS41IDAgMCAxIDAgMi4xMjJsLS42OC42OHoiIHN0cm9rZT0iIzMzMyIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==) 2 5,default!important}.editable-element-text[data-v-2a1e49ba]{position:absolute}.editable-element-text.lock .element-content[data-v-2a1e49ba]{cursor:default}.rotate-wrapper[data-v-2a1e49ba]{width:100%;height:100%}.element-content[data-v-2a1e49ba]{position:relative;padding:10px;line-height:1.5;word-break:break-word;cursor:move}.element-content .text[data-v-2a1e49ba]{position:relative}.element-content[data-v-2a1e49ba] a{cursor:text}.drag-handler[data-v-2a1e49ba]{height:10px;position:absolute;left:0;right:0}.drag-handler.top[data-v-2a1e49ba]{top:0}.drag-handler.bottom[data-v-2a1e49ba]{bottom:0}.editable-element-shape[data-v-5d988de2]{position:absolute;pointer-events:none}.editable-element-shape.lock .element-content[data-v-5d988de2]{cursor:default}.editable-element-shape.format-painter .element-content[data-v-5d988de2]{cursor:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNzUgMTMuNzY0VjEuNDIxYS4zLjMgMCAwIDEgLjQ0OC0uMjZsMTAuOTEgNi4xOTdhLjMuMyAwIDAgMS0uMTE2LjU1OWwtNC4xOTYuNDQyIDIuNTgyIDQuNDcyYS4zLjMgMCAwIDEtLjExLjQxbC0zLjE4NCAxLjgzOGEuMy4zIDAgMCAxLS40MS0uMTFsLTIuNTgxLTQuNDcyLTIuODEgMy40NTZhLjMuMyAwIDAgMS0uNTMzLS4xODl6IiBmaWxsPSIjZmZmIiBzdHJva2U9IiMzMzMiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJtMjYgMTQuNSA0LjUtNC41LTYtNmMtMiAyLTMgMi01LjUgMi41LjQgMy4yIDQuODMzIDYuNjY3IDcgOHptNC41ODgtNC40OTRhLjMuMyAwIDAgMCAuNDI0IDBsLjY4LS42OGExLjUgMS41IDAgMCAwIDAtMi4xMjFMMzAuMzQgNS44NTJsMi4wMjYtMS41ODJhMS42MjkgMS42MjkgMCAxIDAtMi4yOC0yLjI5NmwtMS42MDMgMi4wMjEtMS4zNTctMS4zNTZhMS41IDEuNSAwIDAgMC0yLjEyIDBsLS42ODEuNjhhLjMuMyAwIDAgMCAwIC40MjRsNi4yNjMgNi4yNjN6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTI0LjU0MyAzLjk2MXMtMS4wMyAxLjIwMi0yLjQ5NCAxLjg5MWMtMS4wMDYuNDc0LTIuMTgxLjU4NS0yLjczNC42MjctLjIuMDE0LS4zNDQuMjA5LS4yNzcuMzk4LjI5My44MiAxLjExMiAyLjgwMSAyLjY1OCA0LjM0NyAyLjEyNiAyLjEyNiAzLjY1OSAyLjk2OCA0LjE0MiAzLjIwMi4xLjA0OC4yMTUuMDMuMjk5LS4wNDEuMzg1LS4zMjYgMS41LTEuMjc3IDIuMjEtMS45ODYuODkxLS44OSAyLjE4Ni0yLjQ0OCAyLjE4Ni0yLjQ0OG0uNDguMDU1YS4zLjMgMCAwIDEtLjQyNSAwbC02LjI2My02LjI2M2EuMy4zIDAgMCAxIDAtLjQyNGwuNjgtLjY4YTEuNSAxLjUgMCAwIDEgMi4xMjIgMGwxLjM1NiAxLjM1NiAxLjYwNC0yLjAyMWExLjYyOSAxLjYyOSAwIDEgMSAyLjI3OSAyLjI5NkwzMC4zNCA1Ljg1MmwxLjM1MyAxLjM1M2ExLjUgMS41IDAgMCAxIDAgMi4xMjFsLS42OC42OHoiIHN0cm9rZT0iIzMzMyIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==) 2 5,default!important}.rotate-wrapper[data-v-5d988de2]{width:100%;height:100%}.element-content[data-v-5d988de2]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-5d988de2]{transform-origin:0 0;overflow:visible}.element-content .shape-path[data-v-5d988de2]{pointer-events:all}.shape-text[data-v-5d988de2]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;padding:10px;line-height:1.2;word-break:break-word;pointer-events:none}.shape-text.editable[data-v-5d988de2]{pointer-events:all}.shape-text.top[data-v-5d988de2]{justify-content:flex-start}.shape-text.middle[data-v-5d988de2]{justify-content:center}.shape-text.bottom[data-v-5d988de2]{justify-content:flex-end}.editable-element-shape[data-v-16512454]{position:absolute;pointer-events:none}.editable-element-shape.lock .line-path[data-v-16512454],.editable-element-shape.lock .line-point[data-v-16512454]{cursor:default}.element-content[data-v-16512454]{width:100%;height:100%;position:relative}.element-content svg[data-v-16512454]{transform-origin:0 0;overflow:visible}.line-path[data-v-16512454],.line-point[data-v-16512454]{pointer-events:all;cursor:move}.chart[data-v-ae2a96a6]{display:flex}.chart-content[data-v-ae2a96a6]{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,.4)}.chart-content .ct-series-a .ct-line,.chart-content .ct-series-a .ct-point{stroke:var(--theme-color-1)}.chart-content .ct-series-a .ct-area{fill:var(--theme-color-1)}.chart-content .ct-series-a .ct-bar{stroke:var(--theme-color-1)}.chart-content .ct-series-a .ct-slice-pie{fill:var(--theme-color-1)}.chart-content .ct-series-a .ct-slice-donut{stroke:var(--theme-color-1)}.chart-content .ct-series-b .ct-line,.chart-content .ct-series-b .ct-point{stroke:var(--theme-color-2)}.chart-content .ct-series-b .ct-area{fill:var(--theme-color-2)}.chart-content .ct-series-b .ct-bar{stroke:var(--theme-color-2)}.chart-content .ct-series-b .ct-slice-pie{fill:var(--theme-color-2)}.chart-content .ct-series-b .ct-slice-donut{stroke:var(--theme-color-2)}.chart-content .ct-series-c .ct-line,.chart-content .ct-series-c .ct-point{stroke:var(--theme-color-3)}.chart-content .ct-series-c .ct-area{fill:var(--theme-color-3)}.chart-content .ct-series-c .ct-bar{stroke:var(--theme-color-3)}.chart-content .ct-series-c .ct-slice-pie{fill:var(--theme-color-3)}.chart-content .ct-series-c .ct-slice-donut{stroke:var(--theme-color-3)}.chart-content .ct-series-d .ct-line,.chart-content .ct-series-d .ct-point{stroke:var(--theme-color-4)}.chart-content .ct-series-d .ct-area{fill:var(--theme-color-4)}.chart-content .ct-series-d .ct-bar{stroke:var(--theme-color-4)}.chart-content .ct-series-d .ct-slice-pie{fill:var(--theme-color-4)}.chart-content .ct-series-d .ct-slice-donut{stroke:var(--theme-color-4)}.chart-content .ct-series-e .ct-line,.chart-content .ct-series-e .ct-point{stroke:var(--theme-color-5)}.chart-content .ct-series-e .ct-area{fill:var(--theme-color-5)}.chart-content .ct-series-e .ct-bar{stroke:var(--theme-color-5)}.chart-content .ct-series-e .ct-slice-pie{fill:var(--theme-color-5)}.chart-content .ct-series-e .ct-slice-donut{stroke:var(--theme-color-5)}.chart-content .ct-series-f .ct-line,.chart-content .ct-series-f .ct-point{stroke:var(--theme-color-6)}.chart-content .ct-series-f .ct-area{fill:var(--theme-color-6)}.chart-content .ct-series-f .ct-bar{stroke:var(--theme-color-6)}.chart-content .ct-series-f .ct-slice-pie{fill:var(--theme-color-6)}.chart-content .ct-series-f .ct-slice-donut{stroke:var(--theme-color-6)}.chart-content .ct-series-g .ct-line,.chart-content .ct-series-g .ct-point{stroke:var(--theme-color-7)}.chart-content .ct-series-g .ct-area{fill:var(--theme-color-7)}.chart-content .ct-series-g .ct-bar{stroke:var(--theme-color-7)}.chart-content .ct-series-g .ct-slice-pie{fill:var(--theme-color-7)}.chart-content .ct-series-g .ct-slice-donut{stroke:var(--theme-color-7)}.chart-content .ct-series-h .ct-line,.chart-content .ct-series-h .ct-point{stroke:var(--theme-color-8)}.chart-content .ct-series-h .ct-area{fill:var(--theme-color-8)}.chart-content .ct-series-h .ct-bar{stroke:var(--theme-color-8)}.chart-content .ct-series-h .ct-slice-pie{fill:var(--theme-color-8)}.chart-content .ct-series-h .ct-slice-donut{stroke:var(--theme-color-8)}.chart-content .ct-series-i .ct-line,.chart-content .ct-series-i .ct-point{stroke:var(--theme-color-9)}.chart-content .ct-series-i .ct-area{fill:var(--theme-color-9)}.chart-content .ct-series-i .ct-bar{stroke:var(--theme-color-9)}.chart-content .ct-series-i .ct-slice-pie{fill:var(--theme-color-9)}.chart-content .ct-series-i .ct-slice-donut{stroke:var(--theme-color-9)}.chart-content .ct-grid{stroke:var(--grid-color)}.chart-content .ct-label{fill:var(--grid-color);color:var(--grid-color)}.legends{height:20px;justify-content:center;font-size:14px}.legend,.legends{display:flex;align-items:center}.legend+.legend{margin-left:10px}.legend .block{width:10px;height:10px;margin-right:5px}.editable-element-chart[data-v-6fc3de39]{position:absolute}.editable-element-chart.lock .element-content[data-v-6fc3de39]{cursor:default}.rotate-wrapper[data-v-6fc3de39]{width:100%;height:100%}.element-content[data-v-6fc3de39]{width:100%;height:100%;overflow:hidden;cursor:move}.custom-textarea[data-v-7a7222ac]{border:0;outline:0;-webkit-user-modify:read-write-plaintext-only}.editable-table[data-v-0236a619],table[data-v-0236a619]{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}table[data-v-0236a619]{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;border:0;word-wrap:break-word;--themeColor:$themeColor;--subThemeColor1:$themeColor;--subThemeColor2:$themeColor}table.theme[data-v-0236a619]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-0236a619]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-0236a619]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-0236a619]:last-child,table.theme.col-header tr .cell[data-v-0236a619]:first-child,table.theme.row-footer tr:last-child .cell[data-v-0236a619],table.theme.row-header tr:first-child .cell[data-v-0236a619]{background-color:var(--themeColor)}table .cell[data-v-0236a619]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;background-clip:padding-box;cursor:default}table .cell.selected[data-v-0236a619]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-0236a619]{padding:5px;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:text}table .cell-text.active[data-v-0236a619]{-webkit-user-select:text;-moz-user-select:text;user-select:text}.drag-line[data-v-0236a619]{position:absolute;top:0;bottom:0;width:3px;background-color:#d14424;margin-left:-1px;opacity:0;z-index:2;cursor:col-resize}.editable-element-table[data-v-742a731e]{position:absolute}.editable-element-table.lock .element-content[data-v-742a731e]{cursor:default}.rotate-wrapper[data-v-742a731e]{width:100%;height:100%}.element-content[data-v-742a731e]{width:100%;height:100%;position:relative;cursor:move}.table-mask[data-v-742a731e]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-742a731e]{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-742a731e]:hover:not(.lock){opacity:.9}.editable-element-latex[data-v-35c33b80]{position:absolute}.editable-element-latex.lock .element-content[data-v-35c33b80]{cursor:default}.rotate-wrapper[data-v-35c33b80]{width:100%;height:100%}.element-content[data-v-35c33b80]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-35c33b80]{transform-origin:0 0;overflow:visible}.video-player[data-v-e55352ca]{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:1;transform-origin:0 0}.video-player.hide-controller[data-v-e55352ca]{cursor:none}.video-player.hide-controller .controller-mask[data-v-e55352ca],.video-player.hide-controller .controller[data-v-e55352ca]{opacity:0;transform:translateY(100%)}.video-wrap[data-v-e55352ca]{position:relative;background:#000;font-size:0;width:100%;height:100%}.video-wrap .video[data-v-e55352ca]{width:100%;height:100%}.controller-mask[data-v-e55352ca]{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom;height:98px;width:100%;position:absolute;bottom:0;transition:all .3s ease}.controller[data-v-e55352ca]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.controller .bar-wrap[data-v-e55352ca]{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-e55352ca]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-e55352ca]{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.controller .bar-wrap .bar-time.hidden[data-v-e55352ca]{opacity:0}.controller .bar-wrap .bar[data-v-e55352ca]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-e55352ca]{position:absolute;left:0;top:0;bottom:0;background:hsla(0,0%,100%,.4);height:3px;transition:all .5s ease;will-change:width}.controller .bar-wrap .bar .played[data-v-e55352ca]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-e55352ca]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons[data-v-e55352ca]{height:38px;position:absolute;bottom:0;display:flex;align-items:center}.controller .icons.icons-right[data-v-e55352ca]{right:15px}.controller .icons .time[data-v-e55352ca]{line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.controller .icons .icon[data-v-e55352ca]{width:40px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-e55352ca]{font-size:26px}.controller .icons .icon .icon-content[data-v-e55352ca]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.loop-icon[data-v-e55352ca]{font-size:12px}.controller .icons .icon.loop-icon .icon-content[data-v-e55352ca]{opacity:.5}.controller .icons .icon.speed-icon[data-v-e55352ca]{font-size:12px;position:relative}.controller .icons .icon .speed-menu[data-v-e55352ca]{width:70px;position:absolute;bottom:30px;left:-23px;background-color:#22211b;padding:5px 0;color:#ddd}.controller .icons .icon .speed-menu .speed-menu-item[data-v-e55352ca]{padding:8px 0;text-align:center}.controller .icons .icon .speed-menu .speed-menu-item[data-v-e55352ca]:hover{background-color:#393833;color:#fff}.controller .icons .icon .speed-menu .speed-menu-item.active[data-v-e55352ca]{font-weight:700;color:#fff}.controller .icons .icon.active .icon-content[data-v-e55352ca],.controller .icons .icon:hover .icon-content[data-v-e55352ca]{opacity:1}.controller .icons .volume[data-v-e55352ca]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-e55352ca]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-e55352ca]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-e55352ca]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-e55352ca]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-e55352ca]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-e55352ca]{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.controller .icons .volume-bar .volume-bar-inner[data-v-e55352ca]{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width;background-color:#fff}.controller .icons .volume-bar .volume-bar-inner .thumb[data-v-e55352ca]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons .loop[data-v-e55352ca]{display:inline-block;height:100%}.bezel[data-v-e55352ca]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.bezel .bezel-icon[data-v-e55352ca]{position:absolute;top:50%;left:50%;margin:-26px 0 0 -26px;height:52px;width:52px;padding:12px;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,.5);border-radius:50%;opacity:0;pointer-events:none;font-size:40px}.bezel .bezel-icon.bezel-transition[data-v-e55352ca]{animation:bezel-hide-e55352ca .5s linear}@keyframes bezel-hide-e55352ca{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.load-error[data-v-e55352ca]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:15px;color:#fff;pointer-events:none;display:flex;justify-content:center;align-items:center}.editable-element-video[data-v-5dc89f2a]{position:absolute}.editable-element-video.lock .handler-border[data-v-5dc89f2a]{cursor:default}.rotate-wrapper[data-v-5dc89f2a]{width:100%;height:100%}.element-content[data-v-5dc89f2a]{width:100%;height:100%;position:relative}.handler-border[data-v-5dc89f2a]{position:absolute;cursor:move}.handler-border.t[data-v-5dc89f2a]{width:100%;height:20px;top:0;left:0}.handler-border.b[data-v-5dc89f2a]{width:100%;height:5px;bottom:0;left:0}.handler-border.l[data-v-5dc89f2a]{width:10px;height:100%;left:0;top:0}.handler-border.r[data-v-5dc89f2a]{width:10px;height:100%;right:0;top:0}.audio-player[data-v-44037f56]{width:280px;height:50px;position:relative;line-height:1;transform-origin:0 0;background:#000}.audio-player[data-v-44037f56],.controller[data-v-44037f56]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.controller[data-v-44037f56]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;transition:all .3s ease}.controller .bar-wrap[data-v-44037f56]{padding:5px 0;cursor:pointer;position:absolute;bottom:35px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-44037f56]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-44037f56]{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.controller .bar-wrap .bar-time.hidden[data-v-44037f56]{opacity:0}.controller .bar-wrap .bar[data-v-44037f56]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-44037f56]{position:absolute;left:0;top:0;bottom:0;background:hsla(0,0%,100%,.4);height:3px;transition:all .5s ease;will-change:width}.controller .bar-wrap .bar .played[data-v-44037f56]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-44037f56]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons[data-v-44037f56]{height:38px;position:absolute;bottom:0;left:14px;display:flex;align-items:center}.controller .icons .icon[data-v-44037f56]{width:36px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-44037f56]{font-size:26px}.controller .icons .icon .icon-content[data-v-44037f56]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.active .icon-content[data-v-44037f56],.controller .icons .icon:hover .icon-content[data-v-44037f56]{opacity:1}.controller .icons .volume[data-v-44037f56]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-44037f56]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-44037f56]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-44037f56]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-44037f56]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-44037f56]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-44037f56]{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.controller .icons .volume-bar .volume-bar-inner[data-v-44037f56]{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width;background-color:#fff}.controller .icons .volume-bar .volume-bar-inner .thumb[data-v-44037f56]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .time[data-v-44037f56]{height:38px;position:absolute;right:20px;bottom:0;display:flex;align-items:center;line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.controller .time .ptime[data-v-44037f56]{margin-right:2px}.controller .time .dtime[data-v-44037f56]{margin-left:2px}.editable-element-audio[data-v-53bdc956]{position:absolute}.editable-element-audio.lock .audio-icon[data-v-53bdc956]{cursor:default}.rotate-wrapper[data-v-53bdc956]{width:100%;height:100%}.element-content[data-v-53bdc956]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-53bdc956]{cursor:move}.audio-player[data-v-53bdc956]{position:absolute}.mouse-selection[data-v-2c5e1d42]{position:absolute;background-color:rgba(209,68,36,.1);border:1px solid #d14424;z-index:200}.mouse-selection.quadrant-1[data-v-2c5e1d42]{transform-origin:50% 0;transform:rotate(180deg)}.mouse-selection.quadrant-2[data-v-2c5e1d42]{transform-origin:0 0;transform:rotate(180deg)}.mouse-selection.quadrant-3[data-v-2c5e1d42]{transform-origin:0 50%;transform:rotate(180deg)}.mouse-selection.quadrant-4[data-v-2c5e1d42]{transform-origin:0 0;transform:rotate(0deg)}.grid-lines[data-v-05484a24]{width:100%;height:100%;overflow:visible;z-index:999;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-background[data-v-b6b18502]{width:100%;height:100%;background-position:50%;position:absolute}.alignment-line[data-v-ed6fc00a]{position:absolute;z-index:100}.alignment-line .line[data-v-ed6fc00a]{width:0;height:0;border:0 dashed #d14424}.alignment-line .line.vertical[data-v-ed6fc00a]{transform:translateY(-.5px);border-left-width:1px}.alignment-line .line.horizontal[data-v-ed6fc00a]{transform:translateX(-.5px);border-top-width:1px}.ruler[data-v-2963c74c]{font-size:12px}.h[data-v-2963c74c]{position:absolute;background-color:#fff;border:1px solid #eee;height:20px;top:5px;display:flex;justify-content:space-between;align-items:center;overflow:hidden}.h .ruler-marker-100[data-v-2963c74c]{height:100%;width:10%;line-height:20px;text-align:right;flex-shrink:0;padding-right:5px;position:relative}.h .ruler-marker-100.hide span[data-v-2963c74c],.h .ruler-marker-100.omit[data-v-2963c74c]:before{display:none}.h .ruler-marker-100[data-v-2963c74c]:not(:last-child):after{content:"";width:.1px;height:12px;position:absolute;right:0;bottom:0;background-color:#999}.h .ruler-marker-100[data-v-2963c74c]:before{content:"";width:.1px;height:8px;position:absolute;right:50%;bottom:0;background-color:#999}.v[data-v-2963c74c]{position:absolute;background-color:#fff;border:1px solid #eee;width:20px;left:5px;overflow:hidden}.v .ruler-marker-100[data-v-2963c74c]{width:100%;line-height:20px;text-align:right;padding-bottom:5px;position:relative;writing-mode:vertical-rl}.v .ruler-marker-100.hide span[data-v-2963c74c],.v .ruler-marker-100.omit[data-v-2963c74c]:before{display:none}.v .ruler-marker-100[data-v-2963c74c]:not(:last-child):after{content:"";height:.1px;width:12px;position:absolute;bottom:0;right:0;background-color:#999}.v .ruler-marker-100[data-v-2963c74c]:before{content:"";height:.1px;width:8px;position:absolute;bottom:50%;right:0;background-color:#999}.element-create-selection[data-v-85b0bbaa]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.element-create-selection svg[data-v-85b0bbaa]{overflow:visible}.selection[data-v-85b0bbaa]{position:absolute;opacity:.8}.selection[data-v-85b0bbaa]:not(.line){border:1px solid #d14424}.shape-create-canvas[data-v-6dc9876e]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.shape-create-canvas svg[data-v-6dc9876e]{width:100%;height:100%;overflow:visible}.resize-handler[data-v-1e66197f]{position:absolute;width:10px;height:10px;left:0;top:0;margin:-5px 0 0 -5px;border:1px solid #d14424;background-color:#fff;border-radius:1px;cursor:pointer}.resize-handler.bottom.rotate-135[data-v-1e66197f],.resize-handler.left-bottom.rotate-90[data-v-1e66197f],.resize-handler.left-top.rotate-0[data-v-1e66197f],.resize-handler.left.rotate-45[data-v-1e66197f],.resize-handler.right-bottom.rotate-0[data-v-1e66197f],.resize-handler.right-top.rotate-90[data-v-1e66197f],.resize-handler.right.rotate-45[data-v-1e66197f],.resize-handler.top.rotate-135[data-v-1e66197f]{cursor:nwse-resize}.resize-handler.bottom.rotate-0[data-v-1e66197f],.resize-handler.left-bottom.rotate-135[data-v-1e66197f],.resize-handler.left-top.rotate-45[data-v-1e66197f],.resize-handler.left.rotate-90[data-v-1e66197f],.resize-handler.right-bottom.rotate-45[data-v-1e66197f],.resize-handler.right-top.rotate-135[data-v-1e66197f],.resize-handler.right.rotate-90[data-v-1e66197f],.resize-handler.top.rotate-0[data-v-1e66197f]{cursor:ns-resize}.resize-handler.bottom.rotate-45[data-v-1e66197f],.resize-handler.left-bottom.rotate-0[data-v-1e66197f],.resize-handler.left-top.rotate-90[data-v-1e66197f],.resize-handler.left.rotate-135[data-v-1e66197f],.resize-handler.right-bottom.rotate-90[data-v-1e66197f],.resize-handler.right-top.rotate-0[data-v-1e66197f],.resize-handler.right.rotate-135[data-v-1e66197f],.resize-handler.top.rotate-45[data-v-1e66197f]{cursor:nesw-resize}.resize-handler.bottom.rotate-90[data-v-1e66197f],.resize-handler.left-bottom.rotate-45[data-v-1e66197f],.resize-handler.left-top.rotate-135[data-v-1e66197f],.resize-handler.left.rotate-0[data-v-1e66197f],.resize-handler.right-bottom.rotate-135[data-v-1e66197f],.resize-handler.right-top.rotate-45[data-v-1e66197f],.resize-handler.right.rotate-0[data-v-1e66197f],.resize-handler.top.rotate-90[data-v-1e66197f]{cursor:ew-resize}.border-line[data-v-8346cf6c]{position:absolute;width:0;height:0;left:0;top:0;border:0 dashed #d14424}.border-line.top[data-v-8346cf6c]{border-top-width:1px}.border-line.bottom[data-v-8346cf6c]{border-bottom-width:1px}.border-line.left[data-v-8346cf6c]{border-left-width:1px}.border-line.right[data-v-8346cf6c]{border-right-width:1px}.border-line.wide[data-v-8346cf6c]:before{content:"";position:absolute;background:transparent;cursor:move}.border-line.wide.top[data-v-8346cf6c]:before{top:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.bottom[data-v-8346cf6c]:before{bottom:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.left[data-v-8346cf6c]:before{top:-8px;left:-8px;width:16px;height:calc(100% + 16px)}.border-line.wide.right[data-v-8346cf6c]:before{top:-8px;right:-8px;width:16px;height:calc(100% + 16px)}.multi-select-operate[data-v-97dc9b9a]{position:absolute;top:0;left:0;z-index:101}.rotate-handler[data-v-b99d8dae]{position:absolute;width:10px;height:10px;top:-25px;margin-left:-5px;border:1px solid #d14424;background-color:#fff;border-radius:1px;cursor:grab}.rotate-handler[data-v-b99d8dae]:active{cursor:grabbing}.image-element-operate.cliping[data-v-7bcad5a9]{visibility:hidden}.operate-keypoint-handler[data-v-52dcdbf8]{position:absolute;width:10px;height:10px;left:0;top:0;margin:-5px 0 0 -5px;border:1px solid #d14424;background-color:#ffe873;border-radius:1px}svg[data-v-3aa5cc44]{position:absolute;left:0;top:0;pointer-events:none;transform-origin:0 0}.anchor-line[data-v-3aa5cc44]{stroke-width:1px;stroke-dasharray:5 5;opacity:.5}.divider.horizontal[data-v-6b66cde8]{width:100%;margin:24px 0;border-block-start:1px solid rgba(5,5,5,.06)}.divider.vertical[data-v-6b66cde8]{position:relative;height:1em;display:inline-block;margin:0 8px;border-inline-start:1px solid rgba(5,5,5,.06)}.link-handler[data-v-316c4664]{height:30px;position:absolute;left:0;font-size:12px;padding:0 10px;background-color:#fff;box-shadow:3px 3px 3px rgba(0,0,0,.15);display:flex;align-items:center;color:#d14424}.link[data-v-316c4664]{max-width:300px;margin-right:20px;word-break:keep-all;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btns[data-v-316c4664]{display:flex;align-items:center}.btns .btn[data-v-316c4664]{word-break:keep-all;cursor:pointer}.operate[data-v-5ec1ff35]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.operate.multi-select[data-v-5ec1ff35]{opacity:.2}.animation-index[data-v-5ec1ff35]{position:absolute;top:0;left:-24px;font-size:12px}.animation-index .index-item[data-v-5ec1ff35]{width:18px;height:18px;background-color:#fff;color:#d14424;border:1px solid #d14424;display:flex;justify-content:center;align-items:center}.animation-index .index-item+.index-item[data-v-5ec1ff35]{margin-top:5px}.base-element-image[data-v-24fef706]{position:absolute}.rotate-wrapper[data-v-24fef706]{width:100%;height:100%}.element-content[data-v-24fef706]{width:100%;height:100%;position:relative}.element-content .image-content[data-v-24fef706]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-24fef706]{position:absolute}.color-mask[data-v-24fef706]{position:absolute;top:0;bottom:0;left:0;right:0}.base-element-text[data-v-52a206f2]{position:absolute}.rotate-wrapper[data-v-52a206f2]{width:100%;height:100%}.element-content[data-v-52a206f2]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-52a206f2]{position:relative}.base-element-shape[data-v-b13f8fa8]{position:absolute}.rotate-wrapper[data-v-b13f8fa8]{width:100%;height:100%}.element-content[data-v-b13f8fa8]{width:100%;height:100%;position:relative}.element-content svg[data-v-b13f8fa8]{transform-origin:0 0;overflow:visible}.shape-text[data-v-b13f8fa8]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;padding:10px;line-height:1.2;word-break:break-word}.shape-text.top[data-v-b13f8fa8]{justify-content:flex-start}.shape-text.middle[data-v-b13f8fa8]{justify-content:center}.shape-text.bottom[data-v-b13f8fa8]{justify-content:flex-end}.base-element-line[data-v-443e2f82]{position:absolute}.element-content[data-v-443e2f82]{width:100%;height:100%;position:relative}.element-content svg[data-v-443e2f82]{transform-origin:0 0;overflow:visible}.base-element-chart[data-v-7c03d68d]{position:absolute}.element-content[data-v-7c03d68d],.rotate-wrapper[data-v-7c03d68d]{width:100%;height:100%}.static-table[data-v-5d949d4d],table[data-v-5d949d4d]{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}table[data-v-5d949d4d]{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;border:0;word-wrap:break-word;--themeColor:$themeColor;--subThemeColor1:$themeColor;--subThemeColor2:$themeColor}table.theme[data-v-5d949d4d]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-5d949d4d]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-5d949d4d]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-5d949d4d]:last-child,table.theme.col-header tr .cell[data-v-5d949d4d]:first-child,table.theme.row-footer tr:last-child .cell[data-v-5d949d4d],table.theme.row-header tr:first-child .cell[data-v-5d949d4d]{background-color:var(--themeColor)}table .cell[data-v-5d949d4d]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;background-clip:padding-box}table .cell-text[data-v-5d949d4d]{padding:5px;line-height:1.5}.base-element-table[data-v-3eff7eba]{position:absolute}.rotate-wrapper[data-v-3eff7eba]{width:100%;height:100%}.element-content[data-v-3eff7eba]{width:100%;height:100%;position:relative}.base-element-latex[data-v-1587280d]{position:absolute}.rotate-wrapper[data-v-1587280d]{width:100%;height:100%}.element-content[data-v-1587280d]{width:100%;height:100%;position:relative}.element-content svg[data-v-1587280d]{transform-origin:0 0;overflow:visible}.base-element-video[data-v-09436dde]{position:absolute}.rotate-wrapper[data-v-09436dde]{width:100%;height:100%}.element-content[data-v-09436dde]{width:100%;height:100%;background-color:#000;background-position:50%;background-size:contain;background-repeat:no-repeat;display:flex;justify-content:center;align-items:center}.icon[data-v-09436dde]{font-size:140px;color:#aaa}.base-element-audio[data-v-5da834d7]{position:absolute}.rotate-wrapper[data-v-5da834d7]{width:100%;height:100%}.element-content[data-v-5da834d7]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-5da834d7]{cursor:move}.thumbnail-slide[data-v-43dcaa52]{background-color:#fff;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elements[data-v-43dcaa52]{transform-origin:0 0}.background[data-v-43dcaa52]{width:100%;height:100%;background-position:50%;position:absolute}.placeholder[data-v-43dcaa52]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.tabs[data-v-5e3d7626]{display:flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:1}.tabs[data-v-5e3d7626]:not(.card){font-size:13px;align-items:center;justify-content:flex-start;border-bottom:1px solid #eee}.tabs:not(.card).space-around[data-v-5e3d7626]{justify-content:space-around}.tabs:not(.card).space-between[data-v-5e3d7626]{justify-content:space-between}.tabs:not(.card) .tab[data-v-5e3d7626]{text-align:center;border-bottom:2px solid transparent;padding:8px 10px;cursor:pointer}.tabs:not(.card) .tab.active[data-v-5e3d7626]{border-bottom:2px solid var(--color,#d14424)}.tabs.card[data-v-5e3d7626]{height:40px;font-size:12px;flex-shrink:0}.tabs.card .tab[data-v-5e3d7626]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tabs.card .tab.active[data-v-5e3d7626]{background-color:transparent;border-bottom-color:transparent}.tabs.card .tab+.tab[data-v-5e3d7626]{border-left:1px solid #eee}.button[data-v-52c90330]{height:32px;line-height:32px;outline:0;font-size:13px;padding:0 15px;text-align:center;color:#41464b;border-radius:2px;-webkit-user-select:none;-moz-user-select:none;user-select:none;letter-spacing:1px;cursor:pointer}.button.small[data-v-52c90330]{height:24px;line-height:24px;padding:0 7px;letter-spacing:0}.button.default[data-v-52c90330]{background-color:#fff;border:1px solid #d9d9d9;color:#41464b}.button.default[data-v-52c90330]:hover{color:#d14424;border-color:#d14424}.button.primary[data-v-52c90330]{background-color:#d14424;border:1px solid #d14424;color:#fff}.button.primary[data-v-52c90330]:hover{background-color:#de6949;border-color:#de6949}.button.checkbox[data-v-52c90330],.button.radio[data-v-52c90330]{background-color:#fff;border:1px solid #d9d9d9;color:#41464b}.button.checkbox[data-v-52c90330]:not(.checked):hover,.button.radio[data-v-52c90330]:not(.checked):hover{color:#d14424}.button.checked[data-v-52c90330]{color:#fff;background-color:#d14424;border-color:#d14424}.button.checked[data-v-52c90330]:hover{background-color:#de6949;border-color:#de6949}.button.disabled[data-v-52c90330]{background-color:#f5f5f5;border:1px solid #d9d9d9;color:#b7b7b7;cursor:default}.select[data-v-5bf3b141]{width:100%;height:32px;padding-right:32px;border-radius:2px;transition:border-color .25s;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:#fff;border:1px solid #d9d9d9;position:relative;cursor:pointer}.select[data-v-5bf3b141]:not(.disabled):hover{border-color:#d14424}.select.disabled[data-v-5bf3b141]{background-color:#f5f5f5;border-color:#dcdcdc;color:#b7b7b7;cursor:default}.select .selector[data-v-5bf3b141]{min-width:50px;height:30px;line-height:30px;padding-left:10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.options[data-v-5bf3b141]{max-height:260px;padding:5px;overflow:auto;text-align:left;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.option[data-v-5bf3b141]{height:32px;line-height:32px;padding:0 5px;border-radius:2px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.option.disabled[data-v-5bf3b141]{color:#b7b7b7;cursor:default}.option[data-v-5bf3b141]:not(.disabled,.selected):hover{background-color:hsla(0,0%,40%,.05)}.option.selected[data-v-5bf3b141]{background-color:rgba(209,68,36,.05)}.icon[data-v-5bf3b141]{width:32px;height:30px;color:#bfbfbf;position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center}.link-dialog[data-v-cc39ee16]{font-size:13px;line-height:1.675}.input[data-v-cc39ee16]{width:100%;height:32px}.preview[data-v-cc39ee16]{margin-top:12px}.thumbnail[data-v-cc39ee16]{border:1px solid rgba(209,68,36,.15);margin-top:5px}.btns[data-v-cc39ee16]{margin-top:20px;text-align:right}.mask[data-v-fea8edcc],.modal[data-v-fea8edcc]{top:0;left:0;width:100%;height:100%;z-index:5000}.modal[data-v-fea8edcc]{position:fixed;display:flex;justify-content:center;align-items:center;outline:0;border:0}.mask[data-v-fea8edcc]{position:absolute;background:rgba(0,0,0,.25)}.modal-content[data-v-fea8edcc]{z-index:5001;padding:20px;background:#fff;border-radius:2px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.2);position:relative}.close-btn[data-v-fea8edcc]{width:20px;height:20px;display:flex;justify-content:center;align-items:center;position:absolute;top:16px;right:16px;cursor:pointer}.modal-fade-enter-active[data-v-fea8edcc]{animation:modal-fade-enter-fea8edcc .25s ease-in both}.modal-fade-leave-active[data-v-fea8edcc]{animation:modal-fade-leave-fea8edcc .25s ease-out both}.modal-zoom-enter-active[data-v-fea8edcc]{animation:modal-zoom-enter-fea8edcc .25s cubic-bezier(.4,0,0,1.5) both}.modal-zoom-leave-active[data-v-fea8edcc]{animation:modal-zoom-leave-fea8edcc .25s both}@keyframes modal-fade-enter-fea8edcc{0%{opacity:0}}@keyframes modal-fade-leave-fea8edcc{to{opacity:0}}@keyframes modal-zoom-enter-fea8edcc{0%{transform:scale3d(.3,.3,.3)}}@keyframes modal-zoom-leave-fea8edcc{to{transform:scale3d(.3,.3,.3)}}.canvas[data-v-5294a048]{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;background-color:#f9f9f9;position:relative}.drag-mask[data-v-5294a048]{cursor:grab;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-wrapper[data-v-5294a048]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-5294a048]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-item-thumbnail[data-v-8603ad34]{position:relative;cursor:pointer}.shape-content[data-v-8603ad34]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center}.shape-content:hover .shape-path[data-v-8603ad34]:not(.outlined){stroke:#d14424}.shape-content:hover .shape-path.outlined[data-v-8603ad34]{fill:#d14424}.shape-content svg[data-v-8603ad34]:not(:root){overflow:visible}.shape-pool[data-v-8b994b42]{width:340px;max-height:520px;overflow:auto;margin-top:-12px;margin-bottom:-12px;margin-right:-12px;padding-right:12px;padding-top:12px}.category-name[data-v-8b994b42]{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-8b994b42]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.shape-item[data-v-8b994b42]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0}.shape-item[data-v-8b994b42]:not(:nth-child(10n)){margin-right:2.22222%}.line-pool[data-v-554824b6]{width:220px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-554824b6]{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-554824b6]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.line-item[data-v-554824b6]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.line-item[data-v-554824b6]:not(:nth-child(5n)){margin-right:1.25%}.line-content[data-v-554824b6]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.line-content[data-v-554824b6]:hover{color:#d14424}.line-content svg[data-v-554824b6]:not(:root){overflow:visible}.chart-pool[data-v-398f5699]{width:200px;margin-bottom:-5px;display:flex;flex-wrap:wrap;align-content:flex-start}.chart-item[data-v-398f5699]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.chart-item[data-v-398f5699]:not(:nth-child(5n)){margin-right:1.25%}.chart-content[data-v-398f5699]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.chart-content[data-v-398f5699]:hover{color:#d14424}.number-input[data-v-268948c2]{background-color:#fff;border:1px solid #d9d9d9;padding:0 0 0 5px;border-radius:2px;transition:border-color .25s;font-size:13px;display:inline-flex}.number-input .input-wrap[data-v-268948c2]{flex:1;color:#41464b;padding:0 0 0 5px;position:relative}.number-input:not(.disabled) .input-wrap:hover .handlers[data-v-268948c2]{opacity:1}.number-input .handlers[data-v-268948c2]{width:20px;position:absolute;top:0;bottom:0;right:0;display:flex;flex-direction:column;font-size:6px;color:#999;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:opacity .25s}.number-input .handlers .handler[data-v-268948c2]{width:100%;height:50%;display:flex;justify-content:center;align-items:center;border-left:1px solid #d9d9d9;cursor:pointer}.number-input .handlers .handler+.handler[data-v-268948c2]{border-top:1px solid #d9d9d9}.number-input .handlers .handler[data-v-268948c2]:hover{color:#d14424}.number-input input[data-v-268948c2]{width:100%;min-width:0;padding:0;height:30px;line-height:30px;outline:0;border:0;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}.number-input input[data-v-268948c2]::-moz-placeholder{color:#bfbfbf}.number-input input[data-v-268948c2]::placeholder{color:#bfbfbf}.number-input.focused[data-v-268948c2],.number-input[data-v-268948c2]:not(.disabled):hover{border-color:#d14424}.number-input.disabled[data-v-268948c2]{background-color:#f5f5f5;border-color:#dcdcdc;color:#b7b7b7}.number-input .prefix[data-v-268948c2],.number-input .suffix[data-v-268948c2]{display:flex;justify-content:center;align-items:center;line-height:30px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.table-generator[data-v-372c6730]{width:100%;margin-top:-12px}.title[data-v-372c6730]{height:28px;line-height:28px;background-color:#ededed;margin:0 -12px 12px -12px;padding:0 14px;font-size:12px;display:flex;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;user-select:none}.title .right[data-v-372c6730]{cursor:pointer}.title .right[data-v-372c6730]:hover{color:#d14424}table[data-v-372c6730]{border-collapse:separate}td[data-v-372c6730]{width:23px;height:23px;line-height:23px;border:2px solid #fff;background-color:#f7f7f7}.cell[data-v-372c6730]{width:100%;height:100%;border:1px solid #dcdcdc}.cell.active[data-v-372c6730]{background-color:rgba(209,68,36,.1);border-color:#d14424}.custom[data-v-372c6730]{width:230px}.custom .row[data-v-372c6730]{display:flex;align-items:center}.custom .row+.row[data-v-372c6730]{margin-top:10px}.btns[data-v-372c6730]{margin-top:10px;text-align:right}.btns .btn[data-v-372c6730]{margin-left:10px}.media-input[data-v-35a1214c]{width:480px}.btns[data-v-35a1214c]{margin-top:10px;text-align:right}svg[data-v-567417d3]{overflow:hidden}.textarea[data-v-65d72404]{outline:0;width:100%;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;padding:10px;transition:border-color .25s;box-sizing:border-box;line-height:1.675;resize:none;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}.textarea[data-v-65d72404]:focus{border-color:#d14424;background-color:#fff}.textarea.resizable[data-v-65d72404]{resize:vertical}.textarea.disabled[data-v-65d72404]{background-color:#f5f5f5;border-color:#dcdcdc;color:#b7b7b7}.textarea[data-v-65d72404]::-moz-placeholder{color:#bfbfbf}.textarea[data-v-65d72404]::placeholder{color:#bfbfbf}.latex-editor[data-v-49a14edf]{height:560px}.container[data-v-49a14edf]{height:calc(100% - 50px);display:flex}.left[data-v-49a14edf]{width:540px;height:100%;display:flex;flex-direction:column;flex-shrink:0}.input-area[data-v-49a14edf]{flex:1}.input-area textarea[data-v-49a14edf]{height:100%!important;border-color:#eee!important;padding:10px!important}.input-area textarea[data-v-49a14edf]:focus{box-shadow:none!important}.preview[data-v-49a14edf]{height:160px;display:flex;justify-content:center;align-items:center;text-align:center;margin-top:20px;border:1px solid #eee;-webkit-user-select:none;-moz-user-select:none;user-select:none}.placeholder[data-v-49a14edf]{color:#888;font-size:13px}.preview-content[data-v-49a14edf]{width:100%;height:100%;padding:10px;display:flex;justify-content:center;align-items:center}.right[data-v-49a14edf]{width:280px;height:100%;margin-left:20px;border:1px solid #eee;background-color:#fff;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none}.content[data-v-49a14edf]{height:calc(100% - 40px);font-size:13px}.formula[data-v-49a14edf]{height:100%;padding:12px;overflow:auto;overflow:overlay}.formula-item+.formula-item[data-v-49a14edf]{margin-top:10px}.formula-item .formula-title[data-v-49a14edf]{margin-bottom:5px}.formula-item .formula-item-content[data-v-49a14edf]{height:60px;padding:5px;display:flex;align-items:center;background-color:#f9f9f9;cursor:pointer}.symbol[data-v-49a14edf]{height:100%;display:flex;flex-direction:column}.symbol-pool[data-v-49a14edf]{display:flex;flex-wrap:wrap;flex:1;padding:12px;overflow:auto;overflow:overlay}.symbol-item[data-v-49a14edf]{display:flex;justify-content:center;align-items:center}.symbol-item[data-v-49a14edf]:hover{background-color:#f9f9f9;cursor:pointer}.footer[data-v-49a14edf]{height:50px;display:flex;justify-content:flex-end;align-items:flex-end}.footer .btn[data-v-49a14edf]{margin-left:10px}.canvas-tool[data-v-7e81f183]{position:relative;border-bottom:1px solid #eee;background-color:#fff;display:flex;justify-content:space-between;padding:0 10px;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.left-handler[data-v-7e81f183]{display:flex;align-items:center}.add-element-handler[data-v-7e81f183]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.add-element-handler .handler-item[data-v-7e81f183]{width:32px}.add-element-handler .handler-item[data-v-7e81f183]:not(.group-btn):hover{background-color:#f1f1f1}.add-element-handler .handler-item.active[data-v-7e81f183]{color:#d14424}.add-element-handler .handler-item.group-btn[data-v-7e81f183]{width:auto;margin-right:4px}.add-element-handler .handler-item.group-btn[data-v-7e81f183]:hover{background-color:#f3f3f3}.add-element-handler .handler-item.group-btn .arrow[data-v-7e81f183],.add-element-handler .handler-item.group-btn .icon[data-v-7e81f183]{height:100%;display:flex;justify-content:center;align-items:center}.add-element-handler .handler-item.group-btn .icon[data-v-7e81f183]{width:26px;padding:0 2px}.add-element-handler .handler-item.group-btn .icon[data-v-7e81f183]:hover{background-color:#e9e9e9}.add-element-handler .handler-item.group-btn .icon.active[data-v-7e81f183]{color:#d14424}.add-element-handler .handler-item.group-btn .arrow[data-v-7e81f183]{font-size:12px}.add-element-handler .handler-item.group-btn .arrow[data-v-7e81f183]:hover{background-color:#e9e9e9}.handler-item[data-v-7e81f183]{height:24px;font-size:14px;margin:0 2px;display:flex;justify-content:center;align-items:center;border-radius:2px;overflow:hidden;cursor:pointer}.handler-item.disable[data-v-7e81f183]{opacity:.5}.left-handler .handler-item[data-v-7e81f183],.right-handler .handler-item[data-v-7e81f183]{padding:0 8px}.left-handler .handler-item.active[data-v-7e81f183],.left-handler .handler-item[data-v-7e81f183]:not(.disable):hover,.right-handler .handler-item.active[data-v-7e81f183],.right-handler .handler-item[data-v-7e81f183]:not(.disable):hover{background-color:#f1f1f1}.right-handler[data-v-7e81f183]{display:flex;align-items:center}.right-handler .text[data-v-7e81f183]{display:inline-block;width:40px;text-align:center;cursor:pointer}.right-handler .viewport-size[data-v-7e81f183]{font-size:13px}@media screen and (width <= 1024px){.text[data-v-7e81f183]{display:none}}@media screen and (width <= 1000px){.left-handler[data-v-7e81f183],.right-handler[data-v-7e81f183]{display:none}}.layout-pool[data-v-8ee3e590]{width:394px;height:500px;padding:2px;margin-right:-12px;padding-right:12px;overflow:auto;display:flex;flex-wrap:wrap;align-content:flex-start}.layout-item[data-v-8ee3e590]{width:48%;margin-bottom:4%}.layout-item[data-v-8ee3e590]:not(:nth-child(2n)){margin-right:4%}.layout-item[data-v-8ee3e590]:last-child,.layout-item[data-v-8ee3e590]:nth-last-child(2){margin-bottom:0}.layout-item .thumbnail[data-v-8ee3e590]{outline:1px solid #eee;cursor:pointer}.layout-item .thumbnail[data-v-8ee3e590]:hover{outline-color:#d14424}.thumbnails[data-v-0dbead61]{border-right:1px solid #eee;background-color:#fff;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none}.add-slide[data-v-0dbead61]{height:40px;font-size:12px;display:flex;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .btn[data-v-0dbead61]{flex:1;display:flex;justify-content:center;align-items:center}.add-slide .btn[data-v-0dbead61]:hover{background-color:#f9f9f9}.add-slide .select-btn[data-v-0dbead61]{width:30px;height:100%;display:flex;justify-content:center;align-items:center;border-left:1px solid #eee}.add-slide .select-btn[data-v-0dbead61]:hover{background-color:#f9f9f9}.add-slide .icon[data-v-0dbead61]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-0dbead61]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-0dbead61]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-0dbead61]{outline:2px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-0dbead61]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-0dbead61],.thumbnail-item.selected .thumbnail[data-v-0dbead61]{outline-color:#d14424}.label[data-v-0dbead61]{font-size:12px;color:#999;width:20px;cursor:grab}.label.offset-left[data-v-0dbead61]{position:relative;left:-4px}.label[data-v-0dbead61]:active{cursor:grabbing}.page-number[data-v-0dbead61]{height:40px;font-size:12px;border-top:1px solid #eee;line-height:40px;text-align:center;color:#666}.slider[data-v-563bd2a0]{width:100%;height:12px;padding:4px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.slider.disabled .track[data-v-563bd2a0]{background-color:#b4b4b4}.slider.disabled .thumb[data-v-563bd2a0]{outline:2px solid #b4b4b4}.slider[data-v-563bd2a0]:not(.disabled){cursor:pointer}.slider:not(.disabled) .bar[data-v-563bd2a0]:hover{background-color:#f0f0f0}.slider:not(.disabled) .track[data-v-563bd2a0]:hover{background-color:#de6949}.slider:not(.disabled) .thumb[data-v-563bd2a0]:active,.slider:not(.disabled) .thumb[data-v-563bd2a0]:hover{outline:4px solid #d14424}.bar[data-v-563bd2a0]{width:calc(100% - 10px);margin-left:5px;height:4px;border-radius:2px;position:relative;background-color:#f5f5f5;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color .2s}.track[data-v-563bd2a0]{position:absolute;top:0;left:0;height:100%;background-color:#d14424;transition:background-color .2s}.thumb[data-v-563bd2a0]{position:absolute;top:50%;left:0;width:10px;height:10px;background-color:#fff;outline:2px solid #d14424;transform:translate(-50%,-50%);border-radius:50%;z-index:100}.thumb[data-v-563bd2a0]:active:after,.thumb[data-v-563bd2a0]:active:before,.thumb[data-v-563bd2a0]:hover:after,.thumb[data-v-563bd2a0]:hover:before{display:block}.thumb[data-v-563bd2a0]:before{content:attr(data-tooltip);min-width:28px;bottom:24px;background-color:#262626;text-align:center;color:#fff;border-radius:2px;padding:6px 5px;font-size:12px}.thumb[data-v-563bd2a0]:after,.thumb[data-v-563bd2a0]:before{display:none;position:absolute;left:50%;transform:translateX(-50%)}.thumb[data-v-563bd2a0]:after{content:"";bottom:15px;border:5px solid transparent;border-top-color:#262626}.row[data-v-03715c20]{width:100%;display:flex;align-items:center;margin-bottom:10px}.color-btn[data-v-7fa73bdc]{width:100%;display:flex!important;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-7fa73bdc]{height:20px;margin-left:8px;flex:1;outline:1px dashed hsla(0,0%,40%,.12);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAEBJREFUOE9jfPbs2X8GIoCkpCQRqhgYGEcNxBlOo2GIM2iGQLL5//8/UTnl+fPnxOWUUQNxhtNoGOLOKYM+2QAAh2Nq10DwkukAAAAASUVORK5CYII=)}.content[data-v-7fa73bdc]{width:100%;height:100%}.color-btn-icon[data-v-7fa73bdc]{width:32px;font-size:13px;color:#bfbfbf}.checkerboard[data-v-fa191ace]{background-size:contain}.alpha-checkboard-wrap[data-v-84628bc8],.alpha[data-v-84628bc8],.checkerboard[data-v-fa191ace]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-checkboard-wrap[data-v-84628bc8]{overflow:hidden}.alpha-gradient[data-v-84628bc8]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-container[data-v-84628bc8]{cursor:pointer;position:relative;z-index:2;height:100%;margin:0 3px}.alpha-pointer[data-v-84628bc8]{z-index:2;position:absolute}.alpha-picker[data-v-84628bc8]{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-5711e710]{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);position:absolute;top:0;right:0;bottom:0;left:0}.hue-container[data-v-5711e710]{cursor:pointer;margin:0 2px;position:relative;height:100%}.hue-pointer[data-v-5711e710]{z-index:2;position:absolute;top:0}.hue-picker[data-v-5711e710]{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-c79c0446],.saturation-white[data-v-c79c0446],.saturation[data-v-c79c0446]{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer}.saturation-white[data-v-c79c0446]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-c79c0446]{background:linear-gradient(0deg,#000,transparent)}.saturation-pointer[data-v-c79c0446]{cursor:pointer;position:absolute}.saturation-circle[data-v-c79c0446]{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-65e2913c]{width:100%;position:relative;overflow:hidden;text-align:center;font-size:14px}.editable-input[data-v-65e2913c]:after{content:"#";position:absolute;left:0;top:50%;transform:translateY(-50%);color:#999}.input-content[data-v-65e2913c]{width:100%;padding:3px;border:0;border-bottom:1px solid #ddd;outline:none;text-align:center}.input-label[data-v-65e2913c]{text-transform:capitalize}.color-picker[data-v-fec0b01a]{position:relative;width:240px;background:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-bottom:-10px}.picker-saturation-wrap[data-v-fec0b01a]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-fec0b01a]{display:flex}.picker-sliders[data-v-fec0b01a]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-fec0b01a]{position:relative;height:10px}.picker-alpha-wrap[data-v-fec0b01a]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-fec0b01a]{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-fec0b01a]{background-size:auto}.picker-current-color[data-v-fec0b01a]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.picker-field[data-v-fec0b01a]{display:flex;margin-bottom:8px}.picker-field .transparent[data-v-fec0b01a]{width:24px;height:24px;margin-top:4px;margin-left:8px;position:relative;cursor:pointer}.picker-field .transparent[data-v-fec0b01a]:after{content:"";width:26px;height:2px;position:absolute;top:11px;left:-1px;transform:rotate(-45deg);background-color:red}.picker-field .transparent .checkerboard[data-v-fec0b01a]{background-size:auto}.picker-field .straw[data-v-fec0b01a]{width:24px;height:24px;margin-top:4px;margin-left:8px;display:flex;justify-content:center;align-items:center;font-size:20px;background-color:#f5f5f5;outline:1px solid #f1f1f1;cursor:pointer}.picker-field .input[data-v-fec0b01a]{flex:1}.picker-presets[data-v-fec0b01a]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-presets-color[data-v-fec0b01a]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-fec0b01a]:not(:nth-child(10n)){margin-right:3.33333%}.picker-presets-color.alpha[data-v-fec0b01a]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADBJREFUOE9jfPbs2X8GPEBSUhKfNAPjqAHDIgz+//+PNx08f/4cfzoYNYCBceiHAQC5flV5JzgrxQAAAABJRU5ErkJggg==)}.picker-presets-color-content[data-v-fec0b01a]{position:absolute;top:0;right:0;bottom:0;left:0}.picker-gradient-presets[data-v-fec0b01a]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-gradient-col[data-v-fec0b01a]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-fec0b01a]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-fec0b01a]{width:100%;height:16px;position:relative;cursor:pointer}.recent-colors-title[data-v-fec0b01a]{font-size:12px;margin-bottom:4px}.switch[data-v-0566b060]{height:20px;display:inline-block;cursor:pointer}.switch:not(.disabled).active .switch-core[data-v-0566b060]{border-color:#d14424;background-color:#d14424}.switch:not(.disabled).active .switch-core[data-v-0566b060]:after{left:100%;margin-left:-17px}.switch.disabled[data-v-0566b060]{cursor:default}.switch.disabled .switch-core[data-v-0566b060]:after{background-color:#f5f5f5}.switch-core[data-v-0566b060]{margin:0;display:inline-block;position:relative;width:40px;height:20px;border:1px solid #d9d9d9;outline:none;border-radius:10px;box-sizing:border-box;background:#d9d9d9;transition:border-color .3s,background-color .3s;vertical-align:middle}.switch-core[data-v-0566b060]:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;transition:all .3s;width:16px;height:16px;background-color:#fff}.row[data-v-18fbbd33]{width:100%;height:30px;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-18fbbd33]{text-align:right}.row[data-v-3a267bbc]{width:100%;height:30px;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-3a267bbc]{text-align:right}.text-color-btn[data-v-37449800]{width:100%;display:flex!important;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-37449800]{width:17px;height:4px;margin-top:1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAACdJREFUGFdjfPbs2X8GBgYGSUlJEMXAiCHw//9/sIrnz59DVKALAADNxxVfaiODNQAAAABJRU5ErkJggg==)}.text-color-block .text-color-block-content[data-v-37449800]{width:100%;height:100%}.button-group[data-v-4db942e2]{display:flex;align-items:center}.button-group[data-v-4db942e2] button.button{border-radius:0;border-left-width:1px;border-right-width:0;display:inline-block}.button-group[data-v-4db942e2]:not(.passive) button.button:not(:last-child,.radio,.checkbox):hover{position:relative}.button-group[data-v-4db942e2]:not(.passive) button.button:not(:last-child,.radio,.checkbox):hover:after{content:"";width:1px;height:calc(100% + 2px);background-color:#d14424;position:absolute;top:-1px;right:-1px}.button-group[data-v-4db942e2]:not(.passive) button.button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.button-group[data-v-4db942e2]:not(.passive) button.button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.button-group.passive[data-v-4db942e2] button.button:not(.last,.radio,.checkbox):hover{position:relative}.button-group.passive[data-v-4db942e2] button.button:not(.last,.radio,.checkbox):hover:after{content:"";width:1px;height:calc(100% + 2px);background-color:#d14424;position:absolute;top:-1px;right:-1px}.button-group.passive[data-v-4db942e2] button.button.first{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.button-group.passive[data-v-4db942e2] button.button.last{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.select-group[data-v-d2acb09c]{display:flex;align-items:center}.select-group[data-v-d2acb09c] .select-wrap .select{border-radius:0;border-left-width:0;border-right-width:0}.select-group[data-v-d2acb09c] .select-wrap+.select-wrap .select{border-left-width:1px}.select-group[data-v-d2acb09c] .select-wrap:hover+.select-wrap .select{border-left-color:#d14424}.select-group[data-v-d2acb09c] .select-wrap:first-child .select{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.select-group[data-v-d2acb09c] .select-wrap:last-child .select{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.text-style-panel[data-v-4cf37a85]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-4cf37a85]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-4cf37a85]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-4cf37a85]{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-4cf37a85]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-4cf37a85]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-4cf37a85]:nth-child(n+3){margin-top:-1px}.font-size-btn[data-v-4cf37a85]{padding:0}.link-popover[data-v-4cf37a85]{width:240px}.link-popover .btns[data-v-4cf37a85]{margin-top:10px;text-align:right}.list-wrap[data-v-4cf37a85]{width:176px;color:#666;padding:8px;margin:-12px;display:flex;flex-wrap:wrap;align-content:flex-start}.list[data-v-4cf37a85]{background-color:#f9f9f9;padding:4px 4px 4px 20px;cursor:pointer}.list[data-v-4cf37a85]:not(:nth-child(3n)){margin-right:8px}.list[data-v-4cf37a85]:nth-child(4),.list[data-v-4cf37a85]:nth-child(5),.list[data-v-4cf37a85]:nth-child(6){margin-top:8px}.list[data-v-4cf37a85]:hover{color:#d14424}.list:hover span[data-v-4cf37a85]{background-color:#d14424}.list-item[data-v-4cf37a85]{width:24px;height:12px;position:relative;font-size:12px;top:-5px}.list-item span[data-v-4cf37a85]{width:100%;height:2px;display:inline-block;position:absolute;top:10px;background-color:#666}.popover-btn[data-v-4cf37a85]{padding:0 3px}.row[data-v-2c8acf3c],.row[data-v-7571b056]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-2c8acf3c]{text-align:right}.filter[data-v-2c8acf3c]{font-size:12px}.filter-item[data-v-2c8acf3c]{padding:6px 0;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-2c8acf3c]{width:60px}.filter-item .filter-slider[data-v-2c8acf3c]{flex:1;margin:0 6px}.row[data-v-0ae0ff99]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-0ae0ff99]{text-align:right}.row[data-v-080b6de7]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-080b6de7]{text-align:right}.origin-image[data-v-080b6de7]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-080b6de7]{width:100%;margin-bottom:10px}.btn-icon[data-v-080b6de7]{margin-right:3px}.clip[data-v-080b6de7]{width:260px;font-size:12px}.clip .title[data-v-080b6de7]{margin-bottom:5px}.shape-clip[data-v-080b6de7]{margin-bottom:10px;display:flex;flex-wrap:wrap;align-content:flex-start}.shape-clip-item[data-v-080b6de7]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-080b6de7]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item:hover .shape[data-v-080b6de7]{background-color:#ccc}.shape-clip-item .shape[data-v-080b6de7]{width:40px;height:40px;background-color:#e1e1e1}.popover-btn[data-v-080b6de7]{padding:0 3px}.shape-style-panel[data-v-0674f2cf]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-0674f2cf]{width:100%;display:flex;align-items:center;margin-bottom:10px}.font-size-btn[data-v-0674f2cf]{padding:0}.title[data-v-0674f2cf]{display:flex;justify-content:space-between;margin-bottom:10px}.shape-pool[data-v-0674f2cf]{width:235px;height:150px;overflow:auto;padding:5px;padding-right:10px;border:1px solid #eee;margin-bottom:20px}.shape-list[data-v-0674f2cf]{display:flex;flex-wrap:wrap;align-content:flex-start}.shape-item[data-v-0674f2cf]{width:14%;margin-bottom:3.2%;height:0;padding-bottom:14%;flex-shrink:0}.shape-item[data-v-0674f2cf]:not(:nth-child(6n)){margin-right:3.2%}.row[data-v-ae80032c]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-ae80032c]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-ae80032c]{margin-left:8px}.line-wrapper[data-v-ae80032c]{overflow:visible}.line-btn-icon[data-v-ae80032c]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-ae80032c]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-ae80032c]{margin-top:10px}.chart-data-editor[data-v-f7b59928]{width:600px;position:relative}.editor-content[data-v-f7b59928]{width:100%;height:360px;position:relative;border-right:1px solid #ccc;border-bottom:1px solid #ccc;overflow:auto;overflow:overlay}.range-box[data-v-f7b59928]{position:absolute;top:0;left:0;z-index:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.temp-range[data-v-f7b59928]{width:0;height:0;position:absolute;top:0;left:0;background-color:hsla(0,0%,53%,.3)}.range-line[data-v-f7b59928]{width:0;height:0;position:absolute;left:0;top:0;border:0 solid #d14424}.range-line.t[data-v-f7b59928]{border-top-width:1px}.range-line.b[data-v-f7b59928]{border-bottom-width:1px}.range-line.l[data-v-f7b59928]{border-left-width:1px}.range-line.r[data-v-f7b59928]{border-right-width:1px}.resizable[data-v-f7b59928]{position:absolute;width:12px;height:12px;left:0;top:0;margin:-9px 0 0 -9px;cursor:nwse-resize}.resizable[data-v-f7b59928]:after{content:"";position:absolute;width:4px;height:12px;right:0;top:0;background-color:#d14424}.resizable[data-v-f7b59928]:before{content:"";position:absolute;width:12px;height:4px;right:0;bottom:0;background-color:#d14424}table[data-v-f7b59928]{width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;table-layout:fixed}table td[data-v-f7b59928]{text-align:center;border:1px solid #ccc;vertical-align:middle;width:100px;height:32px}table td.head[data-v-f7b59928]{background-color:rgba(209,68,36,.1)}table .item[data-v-f7b59928]{width:100%;height:100%;border:0;outline:0;font-size:13px;text-align:center;background-color:transparent}table .item.selected[data-v-f7b59928]{background-color:rgba(209,68,36,.02)}.btns[data-v-f7b59928]{margin-top:10px;display:flex;justify-content:space-between}.checkbox[data-v-26bf4835]{height:20px;display:flex;align-items:center;cursor:pointer}.checkbox:not(.disabled).checked .checkbox-input[data-v-26bf4835]{background-color:#d14424;border-color:#d14424}.checkbox:not(.disabled).checked .checkbox-input[data-v-26bf4835]:after{transform:rotate(45deg) scaleY(1)}.checkbox:not(.disabled).checked .checkbox-label[data-v-26bf4835]{color:#d14424}.checkbox.disabled[data-v-26bf4835]{color:#b7b7b7;cursor:default}.checkbox.disabled .checkbox-input[data-v-26bf4835]{background-color:#f5f5f5}.checkbox-input[data-v-26bf4835]{display:inline-block;position:relative;border:1px solid #d9d9d9;border-radius:2px;width:16px;height:16px;background-color:#fff;vertical-align:middle;transition:border-color .15s cubic-bezier(.71,-.46,.29,1.46),background-color .15s cubic-bezier(.71,-.46,.29,1.46);z-index:1}.checkbox-input[data-v-26bf4835]:after{content:"";border:2px solid #fff;border-left:0;border-top:0;height:9px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:6px;transition:transform .15s ease-in .05s;transform-origin:center}.checkbox-original[data-v-26bf4835]{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.checkbox-label[data-v-26bf4835]{margin-left:5px;line-height:20px;font-size:13px}.chart-style-panel[data-v-45827db6],.checkbox-label[data-v-26bf4835]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-45827db6]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-45827db6]{width:100%}.btn-icon[data-v-45827db6]{margin-right:3px}.color-btn-wrap[data-v-45827db6]{position:relative}.delete-color-btn[data-v-45827db6]{position:absolute;width:30px;right:2px;top:2px;bottom:2px;display:flex;justify-content:center;align-items:center;background-color:#fff;cursor:pointer}.preset-themes[data-v-45827db6]{width:250px;margin-bottom:-10px;display:flex;flex-wrap:wrap;align-content:flex-start}.preset-theme[data-v-45827db6]{display:flex;cursor:pointer;width:48%;margin-bottom:4%}.preset-theme[data-v-45827db6]:not(:nth-child(2n)){margin-right:4%}.preset-theme-color[data-v-45827db6]{width:20px;height:20px}.preset-theme-color.select[data-v-45827db6]{transform:scale(1.2);transition:transform .1s}.row[data-v-e5523cbc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-e5523cbc]{margin-bottom:18px}.switch-wrapper[data-v-e5523cbc]{text-align:right}.set-count[data-v-e5523cbc]{display:flex;justify-content:center;align-items:center}.set-count .btn[data-v-e5523cbc]{padding:0 8px}.set-count .count-text[data-v-e5523cbc]{flex:1;text-align:center;margin:0 8px}.row[data-v-3a5ca316],.row[data-v-b3551c8c]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-b3551c8c],.title[data-v-b3551c8c]{margin-bottom:10px}.background-image[data-v-b3551c8c]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-b3551c8c]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-b3551c8c]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-position:50%;background-size:contain;background-repeat:no-repeat;cursor:pointer}.switch-row[data-v-b3551c8c]{height:32px}.switch-wrapper[data-v-b3551c8c]{text-align:right}.row[data-v-32517bcf]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-row[data-v-32517bcf]{height:32px}.switch-wrapper[data-v-32517bcf]{text-align:right}.row[data-v-80f1bc4e]{width:100%;display:flex;align-items:center;margin-bottom:10px}.font-size-btn[data-v-80f1bc4e]{padding:0}.row[data-v-a2bcea28]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-a2bcea28]{margin-bottom:10px}.label[data-v-a2bcea28]{text-align:center}.btn-icon[data-v-a2bcea28]{margin-right:3px}.icon-btn[data-v-a2bcea28]{cursor:pointer}.text-btn[data-v-a2bcea28]{height:30px;line-height:30px;text-align:center;cursor:pointer}.text-btn[data-v-a2bcea28]:hover{background-color:#efefef;border-radius:2px}.element-animation-panel[data-v-5abd2ee4]{height:100%;display:flex;flex-direction:column}.element-animation[data-v-5abd2ee4]{height:32px;display:flex;align-items:center}.element-animation-btn[data-v-5abd2ee4]{width:100%}.config-item[data-v-5abd2ee4]{display:flex;align-items:center}.config-item+.config-item[data-v-5abd2ee4]{margin-top:5px}.tip[data-v-5abd2ee4]{height:32px;display:flex;justify-content:center;align-items:center;font-style:italic}.animation-pool[data-v-5abd2ee4]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-10px;padding-right:5px;position:relative}.animation-pool .mask[data-v-5abd2ee4]{position:absolute;top:0;right:0;bottom:0;left:0}.animation-pool.in .type-title[data-v-5abd2ee4]{border-left-color:#68a490;background-color:rgba(104,164,144,.15)}.animation-pool.out .type-title[data-v-5abd2ee4]{border-left-color:#d86344;background-color:rgba(216,99,68,.15)}.animation-pool.attention .type-title[data-v-5abd2ee4]{border-left-color:#e8b76a;background-color:hsla(37,73%,66%,.15)}.pool-type[data-v-5abd2ee4]:not(:last-child){margin-bottom:5px}.type-title[data-v-5abd2ee4]{width:100%;font-size:13px;margin-bottom:10px;border-left:4px solid #aaa;background-color:#eee;padding:4px 0 4px 10px}.pool-item-wrapper[data-v-5abd2ee4]{display:flex;flex-wrap:wrap;align-content:flex-start}.pool-item[data-v-5abd2ee4]{width:24%;margin-bottom:1.33333%;margin-bottom:5px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-5abd2ee4]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-5abd2ee4]{background-color:#f9f9f9;border-radius:2px}.animation-sequence[data-v-5abd2ee4]{flex:1;padding-right:12px;margin-right:-12px;overflow:auto;overflow:overlay}.sequence-item[data-v-5abd2ee4]{border:1px solid #eee;padding:8px;border-radius:2px;margin-bottom:8px;transition:all .5s}.sequence-item.in.active[data-v-5abd2ee4]{border-color:#68a490}.sequence-item.out.active[data-v-5abd2ee4]{border-color:#d86344}.sequence-item.attention.active[data-v-5abd2ee4]{border-color:#e8b76a}.sequence-item.active[data-v-5abd2ee4]{height:auto}.sequence-item .sequence-content[data-v-5abd2ee4]{display:flex;align-items:center;cursor:grab}.sequence-item .sequence-content[data-v-5abd2ee4]:active{cursor:grabbing}.sequence-item .sequence-content .index[data-v-5abd2ee4]{flex:1}.sequence-item .sequence-content .text[data-v-5abd2ee4]{flex:6}.sequence-item .sequence-content .handler[data-v-5abd2ee4]{flex:2;font-size:15px;text-align:right}.sequence-item .sequence-content .handler-btn[data-v-5abd2ee4]{margin-left:8px;cursor:pointer}.slide-design-panel[data-v-9a96acfa]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-9a96acfa]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-9a96acfa]{display:flex;justify-content:space-between;margin-bottom:10px}.title .more[data-v-9a96acfa]{cursor:pointer}.title .more .text[data-v-9a96acfa]{font-size:12px;margin-right:3px}.background-image-wrapper[data-v-9a96acfa]{margin-bottom:10px}.background-image[data-v-9a96acfa]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-9a96acfa]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-9a96acfa]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-position:50%;background-size:contain;background-repeat:no-repeat;cursor:pointer}.theme-list[data-v-9a96acfa]{display:flex;flex-wrap:wrap;align-content:flex-start}.theme-item[data-v-9a96acfa]{width:48%;margin-bottom:4%;padding-bottom:30%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-9a96acfa]:not(:nth-child(2n)){margin-right:4%}.theme-item .theme-item-content[data-v-9a96acfa]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;padding:8px;border:1px solid #eee;border-radius:2px}.theme-item .text[data-v-9a96acfa]{font-size:16px}.theme-item .colors[data-v-9a96acfa]{display:flex}.theme-item .color-block[data-v-9a96acfa]{margin-top:8px;width:12px;height:12px;margin-right:2px}.theme-item:hover .btns[data-v-9a96acfa]{display:flex}.theme-item .btns[data-v-9a96acfa]{position:absolute;top:0;right:0;bottom:0;left:0;flex-direction:column;justify-content:center;align-items:center;display:none;background-color:rgba(0,0,0,.25)}.theme-item .btn[data-v-9a96acfa]{width:72px;padding:5px 0;text-align:center;background-color:#d14424;color:#fff;font-size:12px;border-radius:2px}.theme-item .btn[data-v-9a96acfa]:hover{background-color:#de6949}.theme-item .btn+.btn[data-v-9a96acfa]{margin-top:5px}.animation-pool[data-v-0562c530]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-0562c530]{width:50%;height:100px;border:1px solid #d6d6d6;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:20px 0 15px 0;position:relative;cursor:pointer}.animation-item.active[data-v-0562c530]{border-color:#d14424;z-index:1}.animation-item[data-v-0562c530]:nth-child(2n){margin-left:-1px}.animation-item[data-v-0562c530]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-0562c530]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-0562c530]:hover:after{animation:fade-0562c530 .3s linear}.animation-block.fade[data-v-0562c530]:hover:after,.animation-block.slideX[data-v-0562c530]:hover:after{content:"PPTist";width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(209,68,36,.75);color:#fff;display:flex;justify-content:center;align-items:center}.animation-block.slideX[data-v-0562c530]:hover:after{animation:slideX-0562c530 .3s linear}.animation-block.slideY[data-v-0562c530]:hover:after{animation:slideY-0562c530 .3s linear}.animation-block.slideX3D[data-v-0562c530]:hover:after,.animation-block.slideY[data-v-0562c530]:hover:after{content:"PPTist";width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(209,68,36,.75);color:#fff;display:flex;justify-content:center;align-items:center}.animation-block.slideX3D[data-v-0562c530]:hover:after{animation:slideX3D-0562c530 .3s linear}.animation-block.slideY3D[data-v-0562c530]:hover:after{animation:slideY3D-0562c530 .3s linear}.animation-block.rotate[data-v-0562c530]:hover:after,.animation-block.slideY3D[data-v-0562c530]:hover:after{content:"PPTist";width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(209,68,36,.75);color:#fff;display:flex;justify-content:center;align-items:center}.animation-block.rotate[data-v-0562c530]:hover:after{transform-origin:0 0;animation:rotate-0562c530 .3s linear}.animation-block.scaleY[data-v-0562c530]:hover:after{animation:scaleY-0562c530 .3s linear}.animation-block.scaleX[data-v-0562c530]:hover:after,.animation-block.scaleY[data-v-0562c530]:hover:after{content:"PPTist";width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(209,68,36,.75);color:#fff;display:flex;justify-content:center;align-items:center}.animation-block.scaleX[data-v-0562c530]:hover:after{animation:scaleX-0562c530 .3s linear}.animation-block.scale[data-v-0562c530]:hover:after{animation:scale-0562c530 .3s linear}.animation-block.scaleReverse[data-v-0562c530]:hover:after,.animation-block.scale[data-v-0562c530]:hover:after{content:"PPTist";width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(209,68,36,.75);color:#fff;display:flex;justify-content:center;align-items:center}.animation-block.scaleReverse[data-v-0562c530]:hover:after{animation:scaleReverse-0562c530 .3s linear}.animation-text[data-v-0562c530]{font-size:12px;color:#333;text-align:center}@keyframes fade-0562c530{0%{opacity:0}to{opacity:1}}@keyframes slideX-0562c530{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideY-0562c530{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideX3D-0562c530{0%{transform:translateX(100%) scale(.5)}to{transform:translateX(0)}}@keyframes slideY3D-0562c530{0%{transform:translateY(100%) scale(.5)}to{transform:translateY(0)}}@keyframes rotate-0562c530{0%{transform:rotate(-90deg)}to{transform:rotate(0)}}@keyframes scaleY-0562c530{0%{transform:scaleY(.1)}to{transform:scaleY(1)}}@keyframes scaleX-0562c530{0%{transform:scaleX(.1)}to{transform:scaleY(1)}}@keyframes scale-0562c530{0%{transform:scale(.25)}to{transform:scale(1)}}@keyframes scaleReverse-0562c530{0%{transform:scale(2)}to{transform:scale(1)}}.row[data-v-e95a4c6c]{width:100%;display:flex;align-items:center;margin-bottom:10px}.symbol-panel[data-v-2bb5f257]{height:100%;display:flex;flex-direction:column}.symbol-panel .pool[data-v-2bb5f257]{padding:5px 12px;margin:0 -12px;flex:1;font-size:18px;overflow:auto;overflow:overlay;display:flex;flex-wrap:wrap;align-content:flex-start}.symbol-panel .symbol-item[data-v-2bb5f257]{width:18%;margin-bottom:2.5%;height:0;padding-bottom:18%;position:relative;cursor:pointer;border:1px solid #eee}.symbol-panel .symbol-item[data-v-2bb5f257]:not(:nth-child(5n)){margin-right:2.5%}.symbol-panel .symbol-item[data-v-2bb5f257]:hover{color:#d14424}.symbol-panel .symbol-item .symbol[data-v-2bb5f257]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#fff}.toolbar[data-v-6c9ece83]{border-left:1px solid #eee;background-color:#fff;display:flex;flex-direction:column}.content[data-v-6c9ece83]{padding:12px;font-size:13px;overflow:auto;overflow:overlay}.editor[data-v-31d96c24]{height:100%;overflow:auto}.prosemirror-editor[data-v-31d96c24]{height:100%;cursor:text}.prosemirror-editor[data-v-31d96c24] .ProseMirror{height:100%;font-size:12px;overflow:auto;padding:8px;line-height:1.5}.prosemirror-editor[data-v-31d96c24] .ProseMirror>p[data-placeholder]:before{content:attr(data-placeholder);pointer-events:none;position:absolute;font-size:12px;color:hsla(0,0%,40%,.5)}.menu[data-v-31d96c24]{display:flex;background-color:#fff;padding:6px 4px;border-radius:2px;box-shadow:0 0 20px 0 rgba(0,0,0,.15)}.menu button[data-v-31d96c24]{outline:0;border:0;background-color:#fff;padding:3px;border-radius:2px;font-size:16px;margin:0 3px;display:flex;align-items:center;justify-content:center;cursor:pointer}.menu button.active[data-v-31d96c24],.menu button[data-v-31d96c24]:hover{background-color:#d14424;color:#fff}.remark[data-v-458a41b9]{position:relative;border-top:1px solid #eee}.resize-handler[data-v-458a41b9]{height:7px;position:absolute;top:-3px;left:0;right:0;cursor:n-resize;z-index:2}.export-img-dialog[data-v-1df3f398]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-1df3f398],.thumbnails-view[data-v-1df3f398]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-1df3f398]:after{content:"";background-color:#fff}.configs[data-v-1df3f398]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-1df3f398]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-1df3f398]{width:100px;position:relative}.configs .title[data-v-1df3f398]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-1df3f398]{flex:1}.btns[data-v-1df3f398]{width:300px;height:100px;display:flex;justify-content:center;align-items:center;z-index:1}.btns .export[data-v-1df3f398]{flex:1}.btns .close[data-v-1df3f398]{width:100px;margin-left:10px}.export-json-dialog[data-v-6a7223ca]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.preview[data-v-6a7223ca]{width:100%;height:calc(100% - 100px);background-color:#f9f9f9;color:#0451a5;overflow:auto}pre[data-v-6a7223ca]{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}.btns[data-v-6a7223ca]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-6a7223ca]{flex:1}.btns .close[data-v-6a7223ca]{width:100px;margin-left:10px}[data-v-6a7223ca]::-webkit-scrollbar{width:10px;height:10px;background-color:#f9f9f9}[data-v-6a7223ca]::-webkit-scrollbar-thumb{background-color:#c1c1c1}.export-pdf-dialog[data-v-1668f898]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-1668f898],.thumbnails-view[data-v-1668f898]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-1668f898]:after{content:"";background-color:#fff}.thumbnail.break-page[data-v-1668f898]{-moz-column-break-after:page;break-after:page}.configs[data-v-1668f898]{width:300px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-1668f898]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-1668f898]{width:100px}.configs .config-item[data-v-1668f898]{flex:1}.configs .tip[data-v-1668f898]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-1668f898]{width:300px;height:100px;display:flex;justify-content:center;align-items:center;z-index:1}.btns .export[data-v-1668f898]{flex:1}.btns .close[data-v-1668f898]{width:100px;margin-left:10px}.export-pptx-dialog[data-v-265d4b60]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-265d4b60]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-265d4b60]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-265d4b60]{width:100px;position:relative}.configs .title[data-v-265d4b60]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-265d4b60]{flex:1}.configs .tip[data-v-265d4b60]{font-size:12px;color:#aaa;line-height:1.8;margin-top:10px}.btns[data-v-265d4b60]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-265d4b60]{flex:1}.btns .close[data-v-265d4b60]{width:100px;margin-left:10px}.export-pptist-dialog[data-v-26422ed7]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-26422ed7]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-26422ed7]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-26422ed7]{width:100px;position:relative}.configs .title[data-v-26422ed7]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-26422ed7]{flex:1}.configs .tip[data-v-26422ed7]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-26422ed7]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-26422ed7]{flex:1}.btns .close[data-v-26422ed7]{width:100px;margin-left:10px}.export-dialog[data-v-b20137f0]{margin:-20px}.content[data-v-b20137f0]{height:460px;padding:12px;font-size:13px;overflow:auto;overflow:overlay}.moveable-panel[data-v-fc791e00]{position:fixed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(56,56,56,.15);border:1px solid #eee;border-radius:2px;display:flex;flex-direction:column;z-index:999}.header[data-v-fc791e00]{height:40px;display:flex;align-items:center;border-bottom:1px solid #f0f0f0;cursor:move}.title[data-v-fc791e00]{flex:1;font-size:13px;padding-left:10px}.close-btn[data-v-fc791e00]{width:40px;height:40px;display:flex;justify-content:center;align-items:center;color:#666;font-size:12px;cursor:pointer}.content[data-v-fc791e00]{flex:1;padding:10px;overflow:auto}.select-panel[data-v-15470598]{height:100%;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.handler[data-v-15470598]{height:24px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}.handler .icon-btns[data-v-15470598]{height:100%;flex:1;display:flex;align-items:center;justify-content:flex-end}.handler .icon-btn[data-v-15470598]{width:16px;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer}.handler .icon-btn[data-v-15470598]:hover{color:#d14424}.element-list[data-v-15470598]{height:calc(100% - 32px);padding-right:10px;margin-right:-10px;overflow:auto}.item[data-v-15470598]{padding:5px;font-size:12px;border-radius:2px;display:flex;align-items:center;cursor:pointer}.item.active[data-v-15470598]{background-color:rgba(209,68,36,.1)}.item.group-active[data-v-15470598]{background-color:rgba(209,68,36,.2)}.item[data-v-15470598]:hover{background-color:rgba(209,68,36,.25)}.item .name[data-v-15470598]{height:18px;line-height:18px;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.item .icons[data-v-15470598]{width:20px;display:flex;align-items:center;justify-content:center;margin-left:5px}.group-els[data-v-15470598]{padding:5px 0}.group-els .group-title[data-v-15470598]{margin-bottom:5px;padding:0 5px}.group-els .item[data-v-15470598]{margin-left:15px}.input[data-v-15470598]{width:100%;height:16px;border:0;outline:0;padding-left:0;padding-right:0;flex:1;font-size:12px;background-color:transparent}.search-panel[data-v-fb93ddde]{font-size:13px}.content[data-v-fb93ddde]{display:flex;flex-direction:column;justify-content:space-between}.input[data-v-fb93ddde]{margin-top:10px}.count[data-v-fb93ddde]{margin-right:8px}.count[data-v-fb93ddde],.ignore-case[data-v-fb93ddde]{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ignore-case[data-v-fb93ddde]{cursor:pointer}.ignore-case.active[data-v-fb93ddde]{color:#d14424}.next-btn[data-v-fb93ddde]{width:22px;height:100%;display:flex;justify-content:center;align-items:center;margin:0!important;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.next-btn[data-v-fb93ddde]:hover{color:#d14424}.footer[data-v-fb93ddde]{display:flex;justify-content:flex-end;align-items:center;margin-top:10px}.close-btn[data-v-fb93ddde]{width:32px;height:32px;position:absolute;top:8px;right:3px;display:flex;justify-content:center;align-items:center;color:#666;font-size:12px;cursor:pointer}.pptist-editor[data-v-1e00f97b]{height:100%}.layout-header[data-v-1e00f97b]{height:40px}.layout-content[data-v-1e00f97b]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-1e00f97b]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-1e00f97b]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-1e00f97b]{height:40px}.layout-content-right[data-v-1e00f97b]{width:260px;height:100%}.screen-element-video[data-v-76bf5b3f]{position:absolute}.element-content[data-v-76bf5b3f],.rotate-wrapper[data-v-76bf5b3f]{width:100%;height:100%}.screen-element-audio[data-v-adf39436]{position:absolute}.rotate-wrapper[data-v-adf39436]{width:100%;height:100%}.element-content[data-v-adf39436]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.element-content:hover .audio-player[data-v-adf39436]{display:block}.audio-icon[data-v-adf39436]{cursor:pointer}.audio-player[data-v-adf39436]{position:absolute;display:none}.link[data-v-2139723a]{cursor:pointer}.screen-slide[data-v-016af5da]{position:absolute;top:0;left:0;transform-origin:0 0;overflow:hidden}.background[data-v-016af5da]{width:100%;height:100%;background-position:50%;position:absolute}.screen-slide-list[data-v-552b63d2]{background:#1d1d1d;position:relative;width:100%;height:100%}.slide-item[data-v-552b63d2]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-552b63d2]{z-index:2}.slide-item.hide[data-v-552b63d2]{opacity:0}.slide-item.turning-mode-no.before[data-v-552b63d2]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-552b63d2]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-552b63d2]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-552b63d2],.slide-item.turning-mode-fade.before[data-v-552b63d2]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-552b63d2]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-552b63d2]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-552b63d2]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-552b63d2]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-552b63d2]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-552b63d2]{transform:translateY(100%)}.slide-item.turning-mode-slideX3D[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-slideX3D.before[data-v-552b63d2]{transform:translateX(-100%) scale(.5)}.slide-item.turning-mode-slideX3D.after[data-v-552b63d2]{transform:translateX(100%) scale(.5)}.slide-item.turning-mode-slideY3D[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-slideY3D.before[data-v-552b63d2]{transform:translateY(-100%) scale(.5)}.slide-item.turning-mode-slideY3D.after[data-v-552b63d2]{transform:translateY(100%) scale(.5)}.slide-item.turning-mode-rotate[data-v-552b63d2]{transition:transform .5s;transform-origin:0 0}.slide-item.turning-mode-rotate.before[data-v-552b63d2]{transform:rotate(90deg)}.slide-item.turning-mode-rotate.after[data-v-552b63d2]{transform:rotate(-90deg)}.slide-item.turning-mode-scaleY[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-scaleY.after[data-v-552b63d2],.slide-item.turning-mode-scaleY.before[data-v-552b63d2]{transform:scaleY(.1)}.slide-item.turning-mode-scaleX[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-scaleX.after[data-v-552b63d2],.slide-item.turning-mode-scaleX.before[data-v-552b63d2]{transform:scaleX(.1)}.slide-item.turning-mode-scale[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-scale.after[data-v-552b63d2],.slide-item.turning-mode-scale.before[data-v-552b63d2]{transform:scale(.25)}.slide-item.turning-mode-scaleReverse[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-scaleReverse.after[data-v-552b63d2],.slide-item.turning-mode-scaleReverse.before[data-v-552b63d2]{transform:scale(2)}.slide-content[data-v-552b63d2]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.slide-thumbnails[data-v-15912b32]{width:100%;height:100%;position:fixed;top:0;left:0;background-color:#1a1a1a;z-index:99}.return-button[data-v-15912b32]{height:60px;padding:20px 30px 0}.return-button .icon[data-v-15912b32]{color:#fff;font-size:36px;cursor:pointer}.return-button .icon[data-v-15912b32]:hover{color:#d14424}.slide-thumbnails-content[data-v-15912b32]{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-15912b32]{width:150px;outline:2px solid #aaa;margin-right:12px;margin-bottom:12px}.slide-thumbnails-content .thumbnail[data-v-15912b32]:hover{outline-color:#d14424}.slide-thumbnails-content .thumbnail.active[data-v-15912b32]{outline-width:3px;outline-color:#d14424}.writing-board[data-v-d8027742]{z-index:8;cursor:none;position:absolute;top:0;right:0;bottom:0;left:0}.blackboard[data-v-d8027742]{width:100%;height:100%;background-color:#0f392b}.canvas[data-v-d8027742]{position:absolute;top:0;left:0}.eraser[data-v-d8027742],.pen[data-v-d8027742]{pointer-events:none;position:absolute;z-index:9}.eraser .icon[data-v-d8027742],.pen .icon[data-v-d8027742]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-d8027742]{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-92cd0b5a]{font-size:12px;z-index:10;position:absolute;top:0;right:0;bottom:0;left:0}.writing-board-tool .writing-board-wrap[data-v-92cd0b5a]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.writing-board-tool .tools[data-v-92cd0b5a]{width:100%;height:100%;display:flex;align-items:center;justify-content:space-between}.writing-board-tool .tool-content[data-v-92cd0b5a]{display:flex;align-items:center}.writing-board-tool .btn[data-v-92cd0b5a]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-92cd0b5a]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-92cd0b5a]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-92cd0b5a]{font-size:20px}.writing-board-tool .colors[data-v-92cd0b5a]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-92cd0b5a]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-92cd0b5a]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-92cd0b5a]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-92cd0b5a]{margin-left:8px}.size[data-v-92cd0b5a]{width:200px;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:13px}.size .label[data-v-92cd0b5a]{width:70px}.size .size-slider[data-v-92cd0b5a]{flex:1}.countdown-timer[data-v-83a589f0]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.header[data-v-83a589f0]{height:16px;font-size:13px;margin-bottom:16px;display:flex;align-items:center}.header .text-btn[data-v-83a589f0]{margin-right:8px;cursor:pointer}.header .text-btn.active[data-v-83a589f0],.header .text-btn[data-v-83a589f0]:hover{color:#d14424}.content[data-v-83a589f0]{display:flex;justify-content:space-between;padding:0 5px}.timer[data-v-83a589f0]{width:54px;height:54px;border-radius:50%;background-color:rgba(209,68,36,.05);font-size:22px;overflow:hidden}.timer input[data-v-83a589f0]{width:100%;height:100%;border:0;outline:0;background-color:transparent;text-align:center}.colon[data-v-83a589f0]{height:54px;line-height:54px;font-size:22px}.icon-btn[data-v-83a589f0]{width:20px;height:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.pause[data-v-83a589f0],.play[data-v-83a589f0]{font-size:17px}.reset[data-v-83a589f0]{font-size:12px}.close-btn[data-v-83a589f0]{position:absolute;top:0;right:0;padding:10px;cursor:pointer}.base-view[data-v-e9c1efea]{width:100%;height:100%}.base-view.laser-pen[data-v-e9c1efea]{cursor:url(data:image/png;base64,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) 20 20,default!important}.tools-left[data-v-e9c1efea]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10}.tools-left .tool-btn[data-v-e9c1efea]{opacity:.35;cursor:pointer}.tools-left .tool-btn[data-v-e9c1efea]:hover{opacity:.9}.tools-left .tool-btn+.tool-btn[data-v-e9c1efea]{margin-left:8px}.tools-right[data-v-e9c1efea]{height:66px;position:fixed;bottom:-66px;right:0;z-index:5;padding:8px;transition:bottom .2s}.tools-right.visible[data-v-e9c1efea]{bottom:0}.tools-right[data-v-e9c1efea]:after{content:"";width:100%;height:66px;position:absolute;left:0;top:-66px}.tools-right .content[data-v-e9c1efea]{width:100%;height:100%;display:flex;justify-content:center;align-items:center;border-radius:2px;font-size:25px;background-color:#fff;color:#41464b;padding:8px 10px;box-shadow:0 2px 12px 0 rgba(56,56,56,.2);border:1px solid #e2e6ed}.tools-right .tool-btn[data-v-e9c1efea]{cursor:pointer}.tools-right .tool-btn.active[data-v-e9c1efea],.tools-right .tool-btn[data-v-e9c1efea]:hover{color:#d14424}.tools-right .tool-btn+.tool-btn[data-v-e9c1efea]{margin-left:15px}.tools-right .page-number[data-v-e9c1efea]{font-size:13px;padding:8px 12px;cursor:pointer}.presenter-view[data-v-77a65275]{width:100%;height:100%;display:flex}.toolbar[data-v-77a65275]{width:70px;height:100%;background-color:#fff;border-right:1px solid #eee;font-size:12px;margin:20px 0}.toolbar .tool-btn[data-v-77a65275]{display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}.toolbar .tool-btn+.tool-btn[data-v-77a65275]{margin-top:22px}.toolbar .tool-btn.active[data-v-77a65275],.toolbar .tool-btn[data-v-77a65275]:hover{color:#d14424}.toolbar .divider[data-v-77a65275]{width:70%;margin:24px 15%!important}.toolbar .tool-icon[data-v-77a65275]{margin-bottom:8px;font-size:22px}.content[data-v-77a65275]{width:calc(100% - 430px);height:100%;background-color:#1d1d1d}.slide-list-wrap[data-v-77a65275]{height:calc(100% - 190px);margin:20px;overflow:hidden;position:relative}.slide-list-wrap.laser-pen[data-v-77a65275]{cursor:url(data:image/png;base64,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) 20 20,default!important}.thumbnails[data-v-77a65275]{height:150px;padding:15px;white-space:nowrap;overflow-x:auto;overflow-y:hidden;border-top:1px solid #3a3a3a}.thumbnail[data-v-77a65275]{display:inline-block;outline:2px solid #aaa}.thumbnail+.thumbnail[data-v-77a65275]{margin-left:10px}.thumbnail[data-v-77a65275]:hover{outline-color:#d14424}.thumbnail.active[data-v-77a65275]{outline-width:3px;outline-color:#d14424}.remark[data-v-77a65275]{width:360px;height:100%;position:relative;background-color:#2a2a2a;border-left:1px solid #3a3a3a;color:#fff}.remark .header[data-v-77a65275]{height:60px;padding:0 20px;display:flex;justify-content:space-between;align-items:center;font-size:18px;border-bottom:1px solid #3a3a3a}.remark .remark-content[data-v-77a65275]{height:calc(100% - 60px);padding:20px;line-height:1.5;overflow:auto;overflow:overlay}.remark .remark-scale[data-v-77a65275]{position:absolute;right:5px;bottom:5px;font-size:22px;display:flex}.remark .scale-btn[data-v-77a65275]{width:40px;height:40px;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.remark .scale-btn.disable[data-v-77a65275]{color:#666;cursor:no-drop}.remark .scale-btn[data-v-77a65275]:not(.disable):hover{background-color:#333}[data-v-77a65275]::-webkit-scrollbar{width:0;height:0}.pptist-screen[data-v-6bf3d190]{width:100%;height:100%}.mobile-operate[data-v-fd451ff6]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mobile-thumbnails[data-v-2c80920e]{padding:10px;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.thumbnail-item[data-v-2c80920e]{position:relative;display:inline-block;outline:2px solid #aaa}.thumbnail-item+.thumbnail-item[data-v-2c80920e]{margin-left:10px}.thumbnail-item.active[data-v-2c80920e]{outline-color:#d14424}.thumbnail-item.active .label[data-v-2c80920e]{background-color:#d14424}.thumbnail-item .label[data-v-2c80920e]{min-width:20px;height:14px;line-height:14px;position:absolute;right:-1px;top:-1px;color:#fff;background-color:#aaa;z-index:1;font-size:12px;text-align:center;padding:0 5px}.sortable-chosen[data-v-2c80920e]{top:-5px}[data-v-2c80920e]::-webkit-scrollbar{width:0;height:0}.slide-toolbar[data-v-24150aba]{height:230px;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column;position:relative;z-index:2}.remark[data-v-24150aba]{position:relative;flex:1;border-bottom:1px solid #eee;line-height:1.5}.remark textarea[data-v-24150aba]{width:100%;height:100%;overflow-y:auto;resize:none;border:0;outline:0;padding:8px 10px;font-size:12px;box-sizing:border-box;position:absolute;top:0;right:0;bottom:0;left:0}.toolbar[data-v-24150aba]{height:90px;border-bottom:1px solid #eee;padding:10px}.row[data-v-24150aba]{width:100%;display:flex;align-items:center;margin-bottom:5px}.row .icon[data-v-24150aba]{margin-right:3px}.element-toolbar[data-v-f3d1ac70]{width:100%;height:240px;position:absolute;z-index:99;bottom:0;left:0;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column;animation:slideInUp-f3d1ac70 .15s}@keyframes slideInUp-f3d1ac70{0%{transform:translateY(100%)}to{transform:translateY(0)}}.content[data-v-f3d1ac70]{padding:10px;flex:1;overflow:auto}.row[data-v-f3d1ac70]{width:100%;display:flex;align-items:center;margin-bottom:10px}.row .icon[data-v-f3d1ac70]{margin-right:3px}.row-block[data-v-f3d1ac70]{margin-bottom:10px;background-color:#f9f9f9;border-radius:2px;padding:10px}.label[data-v-f3d1ac70]{font-size:13px;margin-bottom:20px;margin-left:6px}.colors[data-v-f3d1ac70]{display:flex;flex-wrap:wrap;align-content:flex-start}.color[data-v-f3d1ac70]{width:12%;margin-bottom:.57143%;padding-bottom:5px;display:flex;justify-content:center;align-items:center}.color[data-v-f3d1ac70]:not(:nth-child(8n)){margin-right:.57143%}.color .color-block[data-v-f3d1ac70]{width:30px;height:30px;border-radius:50%}.mobile-editor-header[data-v-5c34ab81]{height:50px;background-color:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 18px;font-size:13px;box-shadow:0 0 15px 0 rgba(0,0,0,.1);position:relative;z-index:2}.history[data-v-5c34ab81]{display:flex;justify-content:center;align-items:center}.history-item[data-v-5c34ab81]{margin-right:20px}.history-item.disable[data-v-5c34ab81]{opacity:.5}.mobile-editor[data-v-3756d058]{height:100%;position:relative;background-color:#f9f9f9}.content[data-v-3756d058]{height:calc(100% - 280px);display:flex;justify-content:center;align-items:center}.viewport[data-v-3756d058]{transform-origin:0 0}.viewport-wrapper[data-v-3756d058]{position:relative;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.background[data-v-3756d058]{width:100%;height:100%;background-position:50%;position:absolute}.mobile-player[data-v-62f26eba]{transform-origin:0 0;background-color:#1d1d1d;position:relative}.screen-slide-list[data-v-62f26eba]{position:relative;width:100%;height:100%}.slide-item[data-v-62f26eba]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-62f26eba]{z-index:2}.slide-item.hide[data-v-62f26eba]{opacity:0}.slide-item.turning-mode-no.before[data-v-62f26eba]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-62f26eba]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-62f26eba]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-62f26eba],.slide-item.turning-mode-fade.before[data-v-62f26eba]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-62f26eba]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-62f26eba]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-62f26eba]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-62f26eba]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-62f26eba]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-62f26eba]{transform:translateY(100%)}.slide-content[data-v-62f26eba]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.header[data-v-62f26eba]{width:100%;height:40px;line-height:40px;padding:0 15px;position:absolute;top:0;left:0;z-index:99;background-color:rgba(29,29,29,.7);text-align:right;font-size:13px;color:#fff;animation:slideInDown-62f26eba .15s}.header .back[data-v-62f26eba]{height:100%}.thumbnails[data-v-62f26eba]{width:100%;position:absolute;bottom:0;left:0;z-index:99;background-color:rgba(29,29,29,.7);overflow:auto!important;animation:slideInUp-62f26eba .15s}@keyframes slideInUp-62f26eba{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInDown-62f26eba{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.mobile-preview[data-v-53dd42dc]{height:100%;background-color:#f9f9f9}.thumbnail-list[data-v-53dd42dc]{height:calc(100% - 50px);padding:10px;overflow:auto}.thumbnail-item[data-v-53dd42dc]{display:flex;justify-content:center;align-items:center;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.thumbnail-item+.thumbnail-item[data-v-53dd42dc]{margin-top:10px}.menu[data-v-53dd42dc]{height:50px;position:relative;box-shadow:0 -2px 4px 0 rgba(51,51,51,.05);background:#fff;display:flex;justify-content:center;align-items:center}.menu .menu-item[data-v-53dd42dc]{width:50%;height:100%;display:flex;justify-content:center;align-items:center;font-size:13px}.menu .menu-item .icon[data-v-53dd42dc]{margin-right:8px;font-size:18px}#app,.mobile[data-v-9826ff08]{height:100%}.ProseMirror,.ProseMirror-static{outline:0;border:0;font-size:20px;word-break:break-word;white-space:normal}.ProseMirror-static:not(.ProseMirror-static),.ProseMirror:not(.ProseMirror-static){-webkit-user-select:text;-moz-user-select:text;user-select:text}.ProseMirror ::-moz-selection,.ProseMirror-static ::-moz-selection{background-color:rgba(209,68,36,.25);color:inherit}.ProseMirror ::selection,.ProseMirror-static ::selection{background-color:rgba(209,68,36,.25);color:inherit}.ProseMirror p,.ProseMirror-static p{margin-top:var(--paragraphSpace)}.ProseMirror p:first-child,.ProseMirror-static p:first-child{margin-top:0}.ProseMirror ul,.ProseMirror-static ul{list-style-type:disc;padding-inline-start:1.25em}.ProseMirror ul li,.ProseMirror-static ul li{list-style-type:inherit;padding:2px 0}.ProseMirror ol,.ProseMirror-static ol{list-style-type:decimal;padding-inline-start:1.25em}.ProseMirror ol li,.ProseMirror-static ol li{list-style-type:inherit;padding:2px 0}.ProseMirror code,.ProseMirror-static code{background-color:#eee;padding:2px 6px;margin:0 1px;border-radius:4px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.ProseMirror sup,.ProseMirror-static sup{vertical-align:super;font-size:smaller}.ProseMirror sub,.ProseMirror-static sub{vertical-align:sub;font-size:smaller}.ProseMirror blockquote,.ProseMirror-static blockquote{overflow:hidden;padding-right:1.2em;padding-left:1.2em;margin-left:0;margin-right:0;font-style:italic;border-left:4px solid #ddd}.ProseMirror [data-indent="1"],.ProseMirror-static [data-indent="1"]{padding-left:20px}.ProseMirror [data-indent="2"],.ProseMirror-static [data-indent="2"]{padding-left:40px}.ProseMirror [data-indent="3"],.ProseMirror-static [data-indent="3"]{padding-left:60px}.ProseMirror [data-indent="4"],.ProseMirror-static [data-indent="4"]{padding-left:80px}.ProseMirror [data-indent="5"],.ProseMirror-static [data-indent="5"]{padding-left:100px}.ProseMirror [data-indent="6"],.ProseMirror-static [data-indent="6"]{padding-left:120px}.ProseMirror [data-indent="7"],.ProseMirror-static [data-indent="7"]{padding-left:140px}.ProseMirror [data-indent="8"],.ProseMirror-static [data-indent="8"]{padding-left:160px}.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}:after,:before{box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body,html{width:100%;height:100%;overflow:hidden;background-color:#fff;color:#41464b}body{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}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;color:#d14424}img{vertical-align:middle;border-style:none}hr{box-sizing:content-box;height:0;overflow:visible}mark.active{background-color:#ff9632}button,input,optgroup,select,textarea{color:inherit}button,input{overflow:visible}button,select{text-transform:none}textarea{overflow:auto;resize:vertical}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}::-webkit-scrollbar{width:5px;height:5px;background-color:transparent}::-webkit-scrollbar-thumb{background-color:#c1c1c1}@font-face{font-display:swap;font-family:仓耳小丸子;src:url(../fonts/%E4%BB%93%E8%80%B3%E5%B0%8F%E4%B8%B8%E5%AD%90.64a7acb4.woff2) format("woff2")}@font-face{font-display:swap;font-family:优设标题黑;src:url(../fonts/%E4%BC%98%E8%AE%BE%E6%A0%87%E9%A2%98%E9%BB%91.df0c1330.woff2) format("woff2")}@font-face{font-display:swap;font-family:字制区喜脉体;src:url(../fonts/%E5%AD%97%E5%88%B6%E5%8C%BA%E5%96%9C%E8%84%89%E4%BD%93.cb8f58a4.woff2) format("woff2")}@font-face{font-display:swap;font-family:峰广明锐体;src:url(../fonts/%E5%B3%B0%E5%B9%BF%E6%98%8E%E9%94%90%E4%BD%93.8c45ca35.woff2) format("woff2")}@font-face{font-display:swap;font-family:得意黑;src:url(../fonts/%E5%BE%97%E6%84%8F%E9%BB%91.7caef6f6.woff2) format("woff2")}@font-face{font-display:swap;font-family:摄图摩登小方体;src:url(../fonts/%E6%91%84%E5%9B%BE%E6%91%A9%E7%99%BB%E5%B0%8F%E6%96%B9%E4%BD%93.7d229dc8.woff2) format("woff2")}@font-face{font-display:swap;font-family:站酷快乐体;src:url(../fonts/%E7%AB%99%E9%85%B7%E5%BF%AB%E4%B9%90%E4%BD%93.8fd3ebd9.woff2) format("woff2")}@font-face{font-display:swap;font-family:素材集市康康体;src:url(../fonts/%E7%B4%A0%E6%9D%90%E9%9B%86%E5%B8%82%E5%BA%B7%E5%BA%B7%E4%BD%93.ceb20972.woff2) format("woff2")}@font-face{font-display:swap;font-family:素材集市酷方体;src:url(../fonts/%E7%B4%A0%E6%9D%90%E9%9B%86%E5%B8%82%E9%85%B7%E6%96%B9%E4%BD%93.42328465.woff2) format("woff2")}@font-face{font-display:swap;font-family:途牛类圆体;src:url(../fonts/%E9%80%94%E7%89%9B%E7%B1%BB%E5%9C%86%E4%BD%93.a94398b6.woff2) format("woff2")}@font-face{font-display:swap;font-family:锐字真言体;src:url(../fonts/%E9%94%90%E5%AD%97%E7%9C%9F%E8%A8%80%E4%BD%93.487089ad.woff2) format("woff2")}.menu-content[data-v-77e74b43]{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-77e74b43]{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-77e74b43]{display:block}.menu-item:not(.disable):hover>.has-children.has-handler[data-v-77e74b43]:after{transform:scale(1)}.menu-item[data-v-77e74b43]:hover:not(.disable){background-color:rgba(209,68,36,.2)}.menu-item.divider[data-v-77e74b43]{height:1px;overflow:hidden;margin:5px;background-color:#e5e5e5;line-height:0;padding:0}.menu-item.disable[data-v-77e74b43]{color:#b1b1b1;cursor:no-drop}.menu-item-content[data-v-77e74b43]{display:flex;align-items:center;justify-content:space-between;position:relative}.menu-item-content.has-children[data-v-77e74b43]: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-77e74b43]: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-77e74b43]{opacity:.6}.menu-item-content .sub-menu[data-v-77e74b43]{width:120px;position:absolute;display:none;left:112%;top:-6px}.mask{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:9998}.contextmenu{position:fixed;z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tippy-box[data-theme~=tooltip]{background-color:#262626;color:#fff;border-radius:2px;padding:8px;font-size:12px;line-height:1.5}.tippy-box[data-theme~=tooltip] .tippy-arrow{width:12px;height:12px;color:#262626}.tippy-box[data-theme~=tooltip] .tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-box[data-theme~=tooltip][data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-theme~=tooltip][data-placement^=top]>.tippy-arrow:before{bottom:-5px;left:0;border-width:6px 6px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-theme~=tooltip][data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-theme~=tooltip][data-placement^=bottom]>.tippy-arrow:before{top:-5px;left:0;border-width:0 6px 6px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-theme~=tooltip][data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-theme~=tooltip][data-placement^=left]>.tippy-arrow:before{border-width:6px 0 6px 6px;border-left-color:initial;right:-5px;transform-origin:center left}.tippy-box[data-theme~=tooltip][data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-theme~=tooltip][data-placement^=right]>.tippy-arrow:before{left:-5px;border-width:6px 6px 6px 0;border-right-color:initial;transform-origin:center right} \ No newline at end of file +.message[data-v-03d14766]{max-width:600px}.message+.message[data-v-03d14766]{margin-top:15px}.message-container[data-v-03d14766]{min-width:50px;display:flex;align-items:center;padding:10px;font-size:13px;overflow:hidden;border-radius:2px;box-shadow:0 1px 8px rgba(0,0,0,.15);background:#fff;pointer-events:all;position:relative}.message-container .icons[data-v-03d14766]{display:flex;align-items:center;margin-right:10px}.message-container .title[data-v-03d14766]{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-container .content[data-v-03d14766]{width:100%}.message-container .description[data-v-03d14766]{line-height:1.5;color:#41464b}.message-container .title+.description[data-v-03d14766]{margin-top:5px}.message-container .control[data-v-03d14766]{position:relative;height:100%;margin-left:10px}.message-container .close-btn[data-v-03d14766]{font-size:15px;color:#666;display:flex;align-items:center;cursor:pointer}.message-container .close-btn[data-v-03d14766]:hover{color:#d14424}.message-fade-enter-active[data-v-03d14766]{animation:message-fade-in-down-03d14766 .3s}.message-fade-leave-active[data-v-03d14766]{animation:message-fade-out-03d14766 .3s}@keyframes message-fade-in-down-03d14766{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes message-fade-out-03d14766{0%{opacity:1;margin-top:0}to{opacity:0;margin-top:-45px}}.hotkey-doc[data-v-a0322054]{height:100%;overflow:auto;font-size:12px;margin:0 -15px;padding:0 15px 15px}.title[data-v-a0322054]{font-size:14px;font-weight:700;border-bottom:1px solid #e5e5e5;padding:25px 0 5px 0}.title[data-v-a0322054]:first-child{padding-top:0}.hotkey-item[data-v-a0322054]{border-bottom:1px solid #e5e5e5;padding:15px 0 5px 0;display:flex;align-items:center}.label[data-v-a0322054]{width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.input[data-v-64bedb34]{display:none}.fullscreen-spin[data-v-a5c6b41c]{top:0;bottom:0;left:0;right:0;z-index:100;background-color:hsla(0,0%,95%,.7)}.fullscreen-spin[data-v-a5c6b41c],.spin[data-v-a5c6b41c]{position:fixed;display:flex;justify-content:center;align-items:center}.spin[data-v-a5c6b41c]{width:200px;height:200px;top:50%;left:50%;margin-top:-100px;margin-left:-100px;flex-direction:column}.spinner[data-v-a5c6b41c]{width:36px;height:36px;border:3px solid #d14424;border-top-color:transparent;border-radius:50%;animation:spinner-a5c6b41c .8s linear infinite}.text[data-v-a5c6b41c]{margin-top:20px;color:#d14424}@keyframes spinner-a5c6b41c{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.drawer[data-v-749dadac]{height:100%;position:fixed;top:0;bottom:0;z-index:5000;background:#fff;display:flex;flex-direction:column}.drawer.left[data-v-749dadac]{left:0;box-shadow:3px 0 6px -4px rgba(0,0,0,.12),9px 0 28px 8px rgba(0,0,0,.05)}.drawer.right[data-v-749dadac]{right:0;box-shadow:-3px 0 6px -4px rgba(0,0,0,.12),-9px 0 28px 8px rgba(0,0,0,.05)}.header[data-v-749dadac]{height:50px;padding:0 15px;position:relative;display:flex;align-items:center}.header .close-btn[data-v-749dadac]{width:20px;height:20px;display:flex;justify-content:center;align-items:center;position:absolute;top:15px;right:15px;cursor:pointer}.content[data-v-749dadac]{padding:0 15px;overflow:auto;flex:1}.drawer-slide-right-enter-active[data-v-749dadac]{animation:drawer-slide-right-enter-749dadac .25s ease both}.drawer-slide-right-leave-active[data-v-749dadac]{animation:drawer-slide-right-leave-749dadac .25s ease both}.drawer-slide-left-enter-active[data-v-749dadac]{animation:drawer-slide-left-enter-749dadac .25s ease both}.drawer-slide-left-leave-active[data-v-749dadac]{animation:drawer-slide-left-leave-749dadac .25s ease both}@keyframes drawer-slide-right-enter-749dadac{0%{transform:translateX(100%)}}@keyframes drawer-slide-right-leave-749dadac{to{transform:translateX(100%)}}@keyframes drawer-slide-left-enter-749dadac{0%{transform:translateX(-100%)}}@keyframes drawer-slide-left-leave-749dadac{to{transform:translateX(-100%)}}.input[data-v-a97ba0dc]{background-color:#fff;border:1px solid #d9d9d9;padding:0 5px;border-radius:2px;transition:border-color .25s;font-size:13px;display:flex}.input input[data-v-a97ba0dc]{min-width:0;height:30px;outline:0;border:0;line-height:30px;vertical-align:top;color:#41464b;padding:0 5px;flex:1;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}.input input[data-v-a97ba0dc]::-moz-placeholder{color:#bfbfbf}.input input[data-v-a97ba0dc]::placeholder{color:#bfbfbf}.input.focused[data-v-a97ba0dc],.input[data-v-a97ba0dc]:not(.disabled):hover{border-color:#d14424}.input.disabled[data-v-a97ba0dc]{background-color:#f5f5f5;border-color:#dcdcdc;color:#b7b7b7}.input .prefix[data-v-a97ba0dc],.input .suffix[data-v-a97ba0dc]{display:flex;justify-content:center;align-items:center;line-height:30px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.popover.center[data-v-70fabe9a]{display:flex;justify-content:center;align-items:center}.popover-content[data-v-70fabe9a]{background-color:#fff;padding:10px;border:1px solid #eee;box-shadow:3px 3px 3px rgba(0,0,0,.15);border-radius:2px;font-size:13px}.tippy-box[data-theme~=popover]{border:0;outline:0}.popover-menu-item[data-v-2f137c4f]{min-width:80px;padding:6px 10px;border-radius:2px;font-size:13px;cursor:pointer}.popover-menu-item.center[data-v-2f137c4f]{text-align:center}.popover-menu-item[data-v-2f137c4f]:hover{background-color:#f1f1f1}.popover-menu-item+.popover-menu-item[data-v-2f137c4f]{margin-top:2px}.editor-header[data-v-0b9f8c7b]{background-color:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:0 5px}.left[data-v-0b9f8c7b],.menu-item[data-v-0b9f8c7b],.right[data-v-0b9f8c7b]{display:flex;justify-content:center;align-items:center}.menu-item[data-v-0b9f8c7b]{height:30px;font-size:14px;padding:0 10px;border-radius:2px;cursor:pointer}.menu-item .icon[data-v-0b9f8c7b]{font-size:18px;color:#666}.menu-item[data-v-0b9f8c7b]:hover{background-color:#f1f1f1}.group-menu-item[data-v-0b9f8c7b]{height:30px;display:flex;margin:0 8px;padding:0 2px;border-radius:2px}.group-menu-item[data-v-0b9f8c7b]:hover{background-color:#f1f1f1}.group-menu-item .menu-item[data-v-0b9f8c7b]{padding:0 3px}.group-menu-item .arrow-btn[data-v-0b9f8c7b]{display:flex;justify-content:center;align-items:center;cursor:pointer}.title[data-v-0b9f8c7b]{height:32px;margin-left:2px;font-size:13px}.title .title-input[data-v-0b9f8c7b]{width:200px;height:100%;padding-left:0;padding-right:0}.title .title-text[data-v-0b9f8c7b]{min-width:20px;max-width:400px;line-height:32px;padding:0 6px;border-radius:2px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.title .title-text[data-v-0b9f8c7b]:hover{background-color:#f1f1f1}.github-link[data-v-0b9f8c7b]{display:inline-block;height:30px}svg[data-v-11836cf8],svg[data-v-35e36256],svg[data-v-6e021ee2]{overflow:visible;position:absolute;z-index:2;top:0;left:0}.image-clip-handler[data-v-5984406b]{width:100%;height:100%;position:relative}.image-clip-handler .bottom-img[data-v-5984406b]{top:0;left:0;width:100%;height:100%;opacity:.5}.image-clip-handler img[data-v-5984406b]{width:100%;height:100%}.image-clip-handler .top-image-content[data-v-5984406b]{position:absolute;overflow:hidden}.image-clip-handler .top-image-content img[data-v-5984406b]{position:absolute}.operate[data-v-5984406b]{position:absolute;width:100%;height:100%;top:0;left:0;cursor:move}.clip-point[data-v-5984406b]{position:absolute;width:16px;height:16px}.clip-point svg[data-v-5984406b]{overflow:visible}.clip-point.left-top[data-v-5984406b]{left:0;top:0}.clip-point.right-top[data-v-5984406b]{left:100%;top:0;transform:rotate(90deg);transform-origin:0 0}.clip-point.left-bottom[data-v-5984406b]{left:0;top:100%;transform:rotate(-90deg);transform-origin:0 0}.clip-point.right-bottom[data-v-5984406b]{left:100%;top:100%;transform:rotate(180deg);transform-origin:0 0}.clip-point.top[data-v-5984406b]{left:50%;top:0;margin-left:-8px}.clip-point.bottom[data-v-5984406b]{left:50%;bottom:0;margin-left:-8px;transform:rotate(180deg)}.clip-point.left[data-v-5984406b]{left:0;top:50%;margin-top:-8px;transform:rotate(-90deg)}.clip-point.right[data-v-5984406b]{right:0;top:50%;margin-top:-8px;transform:rotate(90deg)}.clip-point.bottom.rotate-135[data-v-5984406b],.clip-point.left-bottom.rotate-90[data-v-5984406b],.clip-point.left-top.rotate-0[data-v-5984406b],.clip-point.left.rotate-45[data-v-5984406b],.clip-point.right-bottom.rotate-0[data-v-5984406b],.clip-point.right-top.rotate-90[data-v-5984406b],.clip-point.right.rotate-45[data-v-5984406b],.clip-point.top.rotate-135[data-v-5984406b]{cursor:nwse-resize}.clip-point.bottom.rotate-0[data-v-5984406b],.clip-point.left-bottom.rotate-135[data-v-5984406b],.clip-point.left-top.rotate-45[data-v-5984406b],.clip-point.left.rotate-90[data-v-5984406b],.clip-point.right-bottom.rotate-45[data-v-5984406b],.clip-point.right-top.rotate-135[data-v-5984406b],.clip-point.right.rotate-90[data-v-5984406b],.clip-point.top.rotate-0[data-v-5984406b]{cursor:ns-resize}.clip-point.bottom.rotate-45[data-v-5984406b],.clip-point.left-bottom.rotate-0[data-v-5984406b],.clip-point.left-top.rotate-90[data-v-5984406b],.clip-point.left.rotate-135[data-v-5984406b],.clip-point.right-bottom.rotate-90[data-v-5984406b],.clip-point.right-top.rotate-0[data-v-5984406b],.clip-point.right.rotate-135[data-v-5984406b],.clip-point.top.rotate-45[data-v-5984406b]{cursor:nesw-resize}.clip-point.bottom.rotate-90[data-v-5984406b],.clip-point.left-bottom.rotate-45[data-v-5984406b],.clip-point.left-top.rotate-135[data-v-5984406b],.clip-point.left.rotate-0[data-v-5984406b],.clip-point.right-bottom.rotate-135[data-v-5984406b],.clip-point.right-top.rotate-45[data-v-5984406b],.clip-point.right.rotate-0[data-v-5984406b],.clip-point.top.rotate-90[data-v-5984406b]{cursor:ew-resize}.editable-element-image[data-v-1156b3e1]{position:absolute}.editable-element-image.lock .element-content[data-v-1156b3e1]{cursor:default}.rotate-wrapper[data-v-1156b3e1]{width:100%;height:100%}.element-content[data-v-1156b3e1]{width:100%;height:100%;position:relative;cursor:move}.element-content .image-content[data-v-1156b3e1]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-1156b3e1]{position:absolute}.color-mask[data-v-1156b3e1]{position:absolute;top:0;bottom:0;left:0;right:0}svg[data-v-efb76626]{overflow:visible;position:absolute;top:0;left:0}.prosemirror-editor[data-v-653f533c]{cursor:text}.prosemirror-editor.format-painter[data-v-653f533c]{cursor:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTcuMzUuMDEyLS4wNjYuOTk4YTUuMjcxIDUuMjcxIDAgMCAwLTEuMTg0LjA2IDMuOCAzLjggMCAwIDAtLjkzMy40NzJjLS40NC4zNTYtLjc4My44MTEtLjk5OCAxLjMyNGwuMDE4LS4wMzZ2NS4xMmgxLjA0di45OGgtMS4wNGwtLjAwMiA0LjE1Yy4xODcuNDI2LjQ2LjgxLjc5MSAxLjExN2wuMTc1LjE1MmMuMjkzLjIwOC42MTUuMzczLjg5LjQ3Mi40MS4wODIuODMuMTEyIDEuMjQ5LjA5bC4wNTcuOTk5YTYuMDYzIDYuMDYzIDAgMCAxLTEuNTg4LS4xMjkgNC44MzYgNC44MzYgMCAwIDEtMS4yNS0uNjQ3IDQuNDYzIDQuNDYzIDAgMCAxLS44MzgtLjg4M2MtLjIyNC4zMzItLjUuNjQyLS44MjQuOTI3YTQuMTEgNC4xMSAwIDAgMS0xLjMwNS42MzNBNi4xMjYgNi4xMjYgMCAwIDEgMCAxNS45MDlsLjA2OC0uOTk3Yy40MjQuMDI2Ljg1LS4wMDEgMS4yMTctLjA3LjMzNi0uMDk5LjY1MS0uMjU0Ljg5NC0uNDMuNDMtLjM4Ljc2NS0uODQ3Ljk4Mi0xLjM2OGwtLjAwNS4wMTRWOC45M0gyLjExNXYtLjk4aDEuMDRWMi44NjJhMy43NyAzLjc3IDAgMCAwLS43NzQtMS4xNjdsLS4xNjUtLjE1NmEzLjA2NCAzLjA2NCAwIDAgMC0uODgtLjQ0OEE1LjA2MiA1LjA2MiAwIDAgMCAuMDY3IDEuMDFMMCAuMDEyYTYuMTQgNi4xNCAwIDAgMSAxLjU5Mi4xMWMuNDUzLjEzNS44NzcuMzQ1IDEuMjkuNjUuMy4yNjUuNTY1LjU2NC43ODcuODkuMjMzLS4zMzEuNTItLjYzNC44NTMtLjkwNGE0LjgzNSA0LjgzNSAwIDAgMSAxLjMtLjY0OEE2LjE1NSA2LjE1NSAwIDAgMSA3LjM1LjAxMnoiIGZpbGw9IiMwRDBEMEQiLz48cGF0aCBkPSJtMTcuMzUgMTQuNSA0LjUtNC41LTYtNmMtMiAyLTMgMi01LjUgMi41LjQgMy4yIDQuODMzIDYuNjY3IDcgOHptNC41ODgtNC40OTNhLjMuMyAwIDAgMCAuNDI0IDBsLjY4LS42OGExLjUgMS41IDAgMCAwIDAtMi4xMjJMMjEuNjkgNS44NTNsMi4wMjUtMS41ODNhMS42MjkgMS42MjkgMCAxIDAtMi4yNzktMi4yOTZsLTEuNjAzIDIuMDIyLTEuMzU3LTEuMzU3YTEuNSAxLjUgMCAwIDAtMi4xMjEgMGwtLjY4LjY4YS4zLjMgMCAwIDAgMCAuNDI1bDYuMjYzIDYuMjYzeiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xNS44OTIgMy45NjJzLTEuMDMgMS4yMDItMi40OTQgMS44OWMtMS4wMDYuNDc0LTIuMTguNTg2LTIuNzM0LjYyNy0uMi4wMTUtLjM0NC4yMS0uMjc2LjM5OS4yOTIuODIgMS4xMTIgMi44IDIuNjU4IDQuMzQ2IDIuMTI2IDIuMTI3IDMuNjU4IDIuOTY4IDQuMTQyIDMuMjAzLjEuMDQ4LjIxNC4wMy4yOTgtLjA0Mi4zODYtLjMyNSAxLjUtMS4yNzcgMi4yMS0xLjk4Ni44OTItLjg4OSAyLjE4Ny0yLjQ0NyAyLjE4Ny0yLjQ0N20uNDc5LjA1NWEuMy4zIDAgMCAxLS40MjQgMGwtNi4yNjQtNi4yNjNhLjMuMyAwIDAgMSAwLS40MjVsLjY4LS42OGExLjUgMS41IDAgMCAxIDIuMTIyIDBsMS4zNTcgMS4zNTcgMS42MDMtMi4wMjJhMS42MjkgMS42MjkgMCAxIDEgMi4yOCAyLjI5NkwyMS42OSA1Ljg1M2wxLjM1MiAxLjM1MmExLjUgMS41IDAgMCAxIDAgMi4xMjJsLS42OC42OHoiIHN0cm9rZT0iIzMzMyIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==) 2 5,default!important}.editable-element-text[data-v-2a1e49ba]{position:absolute}.editable-element-text.lock .element-content[data-v-2a1e49ba]{cursor:default}.rotate-wrapper[data-v-2a1e49ba]{width:100%;height:100%}.element-content[data-v-2a1e49ba]{position:relative;padding:10px;line-height:1.5;word-break:break-word;cursor:move}.element-content .text[data-v-2a1e49ba]{position:relative}.element-content[data-v-2a1e49ba] a{cursor:text}.drag-handler[data-v-2a1e49ba]{height:10px;position:absolute;left:0;right:0}.drag-handler.top[data-v-2a1e49ba]{top:0}.drag-handler.bottom[data-v-2a1e49ba]{bottom:0}.editable-element-shape[data-v-5d988de2]{position:absolute;pointer-events:none}.editable-element-shape.lock .element-content[data-v-5d988de2]{cursor:default}.editable-element-shape.format-painter .element-content[data-v-5d988de2]{cursor:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzQiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNzUgMTMuNzY0VjEuNDIxYS4zLjMgMCAwIDEgLjQ0OC0uMjZsMTAuOTEgNi4xOTdhLjMuMyAwIDAgMS0uMTE2LjU1OWwtNC4xOTYuNDQyIDIuNTgyIDQuNDcyYS4zLjMgMCAwIDEtLjExLjQxbC0zLjE4NCAxLjgzOGEuMy4zIDAgMCAxLS40MS0uMTFsLTIuNTgxLTQuNDcyLTIuODEgMy40NTZhLjMuMyAwIDAgMS0uNTMzLS4xODl6IiBmaWxsPSIjZmZmIiBzdHJva2U9IiMzMzMiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJtMjYgMTQuNSA0LjUtNC41LTYtNmMtMiAyLTMgMi01LjUgMi41LjQgMy4yIDQuODMzIDYuNjY3IDcgOHptNC41ODgtNC40OTRhLjMuMyAwIDAgMCAuNDI0IDBsLjY4LS42OGExLjUgMS41IDAgMCAwIDAtMi4xMjFMMzAuMzQgNS44NTJsMi4wMjYtMS41ODJhMS42MjkgMS42MjkgMCAxIDAtMi4yOC0yLjI5NmwtMS42MDMgMi4wMjEtMS4zNTctMS4zNTZhMS41IDEuNSAwIDAgMC0yLjEyIDBsLS42ODEuNjhhLjMuMyAwIDAgMCAwIC40MjRsNi4yNjMgNi4yNjN6IiBmaWxsPSIjZmZmIi8+PHBhdGggZD0iTTI0LjU0MyAzLjk2MXMtMS4wMyAxLjIwMi0yLjQ5NCAxLjg5MWMtMS4wMDYuNDc0LTIuMTgxLjU4NS0yLjczNC42MjctLjIuMDE0LS4zNDQuMjA5LS4yNzcuMzk4LjI5My44MiAxLjExMiAyLjgwMSAyLjY1OCA0LjM0NyAyLjEyNiAyLjEyNiAzLjY1OSAyLjk2OCA0LjE0MiAzLjIwMi4xLjA0OC4yMTUuMDMuMjk5LS4wNDEuMzg1LS4zMjYgMS41LTEuMjc3IDIuMjEtMS45ODYuODkxLS44OSAyLjE4Ni0yLjQ0OCAyLjE4Ni0yLjQ0OG0uNDguMDU1YS4zLjMgMCAwIDEtLjQyNSAwbC02LjI2My02LjI2M2EuMy4zIDAgMCAxIDAtLjQyNGwuNjgtLjY4YTEuNSAxLjUgMCAwIDEgMi4xMjIgMGwxLjM1NiAxLjM1NiAxLjYwNC0yLjAyMWExLjYyOSAxLjYyOSAwIDEgMSAyLjI3OSAyLjI5NkwzMC4zNCA1Ljg1MmwxLjM1MyAxLjM1M2ExLjUgMS41IDAgMCAxIDAgMi4xMjFsLS42OC42OHoiIHN0cm9rZT0iIzMzMyIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPg==) 2 5,default!important}.rotate-wrapper[data-v-5d988de2]{width:100%;height:100%}.element-content[data-v-5d988de2]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-5d988de2]{transform-origin:0 0;overflow:visible}.element-content .shape-path[data-v-5d988de2]{pointer-events:all}.shape-text[data-v-5d988de2]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;padding:10px;line-height:1.2;word-break:break-word;pointer-events:none}.shape-text.editable[data-v-5d988de2]{pointer-events:all}.shape-text.top[data-v-5d988de2]{justify-content:flex-start}.shape-text.middle[data-v-5d988de2]{justify-content:center}.shape-text.bottom[data-v-5d988de2]{justify-content:flex-end}.editable-element-shape[data-v-16512454]{position:absolute;pointer-events:none}.editable-element-shape.lock .line-path[data-v-16512454],.editable-element-shape.lock .line-point[data-v-16512454]{cursor:default}.element-content[data-v-16512454]{width:100%;height:100%;position:relative}.element-content svg[data-v-16512454]{transform-origin:0 0;overflow:visible}.line-path[data-v-16512454],.line-point[data-v-16512454]{pointer-events:all;cursor:move}.chart[data-v-ae2a96a6]{display:flex}.chart-content[data-v-ae2a96a6]{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,.4)}.chart-content .ct-series-a .ct-line,.chart-content .ct-series-a .ct-point{stroke:var(--theme-color-1)}.chart-content .ct-series-a .ct-area{fill:var(--theme-color-1)}.chart-content .ct-series-a .ct-bar{stroke:var(--theme-color-1)}.chart-content .ct-series-a .ct-slice-pie{fill:var(--theme-color-1)}.chart-content .ct-series-a .ct-slice-donut{stroke:var(--theme-color-1)}.chart-content .ct-series-b .ct-line,.chart-content .ct-series-b .ct-point{stroke:var(--theme-color-2)}.chart-content .ct-series-b .ct-area{fill:var(--theme-color-2)}.chart-content .ct-series-b .ct-bar{stroke:var(--theme-color-2)}.chart-content .ct-series-b .ct-slice-pie{fill:var(--theme-color-2)}.chart-content .ct-series-b .ct-slice-donut{stroke:var(--theme-color-2)}.chart-content .ct-series-c .ct-line,.chart-content .ct-series-c .ct-point{stroke:var(--theme-color-3)}.chart-content .ct-series-c .ct-area{fill:var(--theme-color-3)}.chart-content .ct-series-c .ct-bar{stroke:var(--theme-color-3)}.chart-content .ct-series-c .ct-slice-pie{fill:var(--theme-color-3)}.chart-content .ct-series-c .ct-slice-donut{stroke:var(--theme-color-3)}.chart-content .ct-series-d .ct-line,.chart-content .ct-series-d .ct-point{stroke:var(--theme-color-4)}.chart-content .ct-series-d .ct-area{fill:var(--theme-color-4)}.chart-content .ct-series-d .ct-bar{stroke:var(--theme-color-4)}.chart-content .ct-series-d .ct-slice-pie{fill:var(--theme-color-4)}.chart-content .ct-series-d .ct-slice-donut{stroke:var(--theme-color-4)}.chart-content .ct-series-e .ct-line,.chart-content .ct-series-e .ct-point{stroke:var(--theme-color-5)}.chart-content .ct-series-e .ct-area{fill:var(--theme-color-5)}.chart-content .ct-series-e .ct-bar{stroke:var(--theme-color-5)}.chart-content .ct-series-e .ct-slice-pie{fill:var(--theme-color-5)}.chart-content .ct-series-e .ct-slice-donut{stroke:var(--theme-color-5)}.chart-content .ct-series-f .ct-line,.chart-content .ct-series-f .ct-point{stroke:var(--theme-color-6)}.chart-content .ct-series-f .ct-area{fill:var(--theme-color-6)}.chart-content .ct-series-f .ct-bar{stroke:var(--theme-color-6)}.chart-content .ct-series-f .ct-slice-pie{fill:var(--theme-color-6)}.chart-content .ct-series-f .ct-slice-donut{stroke:var(--theme-color-6)}.chart-content .ct-series-g .ct-line,.chart-content .ct-series-g .ct-point{stroke:var(--theme-color-7)}.chart-content .ct-series-g .ct-area{fill:var(--theme-color-7)}.chart-content .ct-series-g .ct-bar{stroke:var(--theme-color-7)}.chart-content .ct-series-g .ct-slice-pie{fill:var(--theme-color-7)}.chart-content .ct-series-g .ct-slice-donut{stroke:var(--theme-color-7)}.chart-content .ct-series-h .ct-line,.chart-content .ct-series-h .ct-point{stroke:var(--theme-color-8)}.chart-content .ct-series-h .ct-area{fill:var(--theme-color-8)}.chart-content .ct-series-h .ct-bar{stroke:var(--theme-color-8)}.chart-content .ct-series-h .ct-slice-pie{fill:var(--theme-color-8)}.chart-content .ct-series-h .ct-slice-donut{stroke:var(--theme-color-8)}.chart-content .ct-series-i .ct-line,.chart-content .ct-series-i .ct-point{stroke:var(--theme-color-9)}.chart-content .ct-series-i .ct-area{fill:var(--theme-color-9)}.chart-content .ct-series-i .ct-bar{stroke:var(--theme-color-9)}.chart-content .ct-series-i .ct-slice-pie{fill:var(--theme-color-9)}.chart-content .ct-series-i .ct-slice-donut{stroke:var(--theme-color-9)}.chart-content .ct-grid{stroke:var(--grid-color)}.chart-content .ct-label{fill:var(--grid-color);color:var(--grid-color)}.legends{height:20px;justify-content:center;font-size:14px}.legend,.legends{display:flex;align-items:center}.legend+.legend{margin-left:10px}.legend .block{width:10px;height:10px;margin-right:5px}.editable-element-chart[data-v-6fc3de39]{position:absolute}.editable-element-chart.lock .element-content[data-v-6fc3de39]{cursor:default}.rotate-wrapper[data-v-6fc3de39]{width:100%;height:100%}.element-content[data-v-6fc3de39]{width:100%;height:100%;overflow:hidden;cursor:move}.custom-textarea[data-v-7a7222ac]{border:0;outline:0;-webkit-user-modify:read-write-plaintext-only}.editable-table[data-v-0236a619],table[data-v-0236a619]{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}table[data-v-0236a619]{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;border:0;word-wrap:break-word;--themeColor:$themeColor;--subThemeColor1:$themeColor;--subThemeColor2:$themeColor}table.theme[data-v-0236a619]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-0236a619]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-0236a619]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-0236a619]:last-child,table.theme.col-header tr .cell[data-v-0236a619]:first-child,table.theme.row-footer tr:last-child .cell[data-v-0236a619],table.theme.row-header tr:first-child .cell[data-v-0236a619]{background-color:var(--themeColor)}table .cell[data-v-0236a619]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;font-size:14px;background-clip:padding-box;cursor:default}table .cell.selected[data-v-0236a619]:after{content:"";width:100%;height:100%;position:absolute;top:0;left:0;background-color:hsla(0,0%,40%,.4)}table .cell-text[data-v-0236a619]{padding:5px;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:text}table .cell-text.active[data-v-0236a619]{-webkit-user-select:text;-moz-user-select:text;user-select:text}.drag-line[data-v-0236a619]{position:absolute;top:0;bottom:0;width:3px;background-color:#d14424;margin-left:-1px;opacity:0;z-index:2;cursor:col-resize}.editable-element-table[data-v-742a731e]{position:absolute}.editable-element-table.lock .element-content[data-v-742a731e]{cursor:default}.rotate-wrapper[data-v-742a731e]{width:100%;height:100%}.element-content[data-v-742a731e]{width:100%;height:100%;position:relative;cursor:move}.table-mask[data-v-742a731e]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .2s}.table-mask .mask-tip[data-v-742a731e]{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-742a731e]:hover:not(.lock){opacity:.9}.editable-element-latex[data-v-35c33b80]{position:absolute}.editable-element-latex.lock .element-content[data-v-35c33b80]{cursor:default}.rotate-wrapper[data-v-35c33b80]{width:100%;height:100%}.element-content[data-v-35c33b80]{width:100%;height:100%;position:relative;cursor:move}.element-content svg[data-v-35c33b80]{transform-origin:0 0;overflow:visible}.video-player[data-v-e55352ca]{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:1;transform-origin:0 0}.video-player.hide-controller[data-v-e55352ca]{cursor:none}.video-player.hide-controller .controller-mask[data-v-e55352ca],.video-player.hide-controller .controller[data-v-e55352ca]{opacity:0;transform:translateY(100%)}.video-wrap[data-v-e55352ca]{position:relative;background:#000;font-size:0;width:100%;height:100%}.video-wrap .video[data-v-e55352ca]{width:100%;height:100%}.controller-mask[data-v-e55352ca]{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom;height:98px;width:100%;position:absolute;bottom:0;transition:all .3s ease}.controller[data-v-e55352ca]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.controller .bar-wrap[data-v-e55352ca]{padding:5px 0;cursor:pointer;position:absolute;bottom:33px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-e55352ca]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-e55352ca]{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.controller .bar-wrap .bar-time.hidden[data-v-e55352ca]{opacity:0}.controller .bar-wrap .bar[data-v-e55352ca]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-e55352ca]{position:absolute;left:0;top:0;bottom:0;background:hsla(0,0%,100%,.4);height:3px;transition:all .5s ease;will-change:width}.controller .bar-wrap .bar .played[data-v-e55352ca]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-e55352ca]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons[data-v-e55352ca]{height:38px;position:absolute;bottom:0;display:flex;align-items:center}.controller .icons.icons-right[data-v-e55352ca]{right:15px}.controller .icons .time[data-v-e55352ca]{line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.controller .icons .icon[data-v-e55352ca]{width:40px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-e55352ca]{font-size:26px}.controller .icons .icon .icon-content[data-v-e55352ca]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.loop-icon[data-v-e55352ca]{font-size:12px}.controller .icons .icon.loop-icon .icon-content[data-v-e55352ca]{opacity:.5}.controller .icons .icon.speed-icon[data-v-e55352ca]{font-size:12px;position:relative}.controller .icons .icon .speed-menu[data-v-e55352ca]{width:70px;position:absolute;bottom:30px;left:-23px;background-color:#22211b;padding:5px 0;color:#ddd}.controller .icons .icon .speed-menu .speed-menu-item[data-v-e55352ca]{padding:8px 0;text-align:center}.controller .icons .icon .speed-menu .speed-menu-item[data-v-e55352ca]:hover{background-color:#393833;color:#fff}.controller .icons .icon .speed-menu .speed-menu-item.active[data-v-e55352ca]{font-weight:700;color:#fff}.controller .icons .icon.active .icon-content[data-v-e55352ca],.controller .icons .icon:hover .icon-content[data-v-e55352ca]{opacity:1}.controller .icons .volume[data-v-e55352ca]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-e55352ca]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-e55352ca]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-e55352ca]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-e55352ca]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-e55352ca]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-e55352ca]{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.controller .icons .volume-bar .volume-bar-inner[data-v-e55352ca]{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width;background-color:#fff}.controller .icons .volume-bar .volume-bar-inner .thumb[data-v-e55352ca]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons .loop[data-v-e55352ca]{display:inline-block;height:100%}.bezel[data-v-e55352ca]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:22px;color:#fff;pointer-events:none}.bezel .bezel-icon[data-v-e55352ca]{position:absolute;top:50%;left:50%;margin:-26px 0 0 -26px;height:52px;width:52px;padding:12px;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,.5);border-radius:50%;opacity:0;pointer-events:none;font-size:40px}.bezel .bezel-icon.bezel-transition[data-v-e55352ca]{animation:bezel-hide-e55352ca .5s linear}@keyframes bezel-hide-e55352ca{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(2)}}.load-error[data-v-e55352ca]{position:absolute;left:0;right:0;top:0;bottom:0;font-size:15px;color:#fff;pointer-events:none;display:flex;justify-content:center;align-items:center}.editable-element-video[data-v-5dc89f2a]{position:absolute}.editable-element-video.lock .handler-border[data-v-5dc89f2a]{cursor:default}.rotate-wrapper[data-v-5dc89f2a]{width:100%;height:100%}.element-content[data-v-5dc89f2a]{width:100%;height:100%;position:relative}.handler-border[data-v-5dc89f2a]{position:absolute;cursor:move}.handler-border.t[data-v-5dc89f2a]{width:100%;height:20px;top:0;left:0}.handler-border.b[data-v-5dc89f2a]{width:100%;height:5px;bottom:0;left:0}.handler-border.l[data-v-5dc89f2a]{width:10px;height:100%;left:0;top:0}.handler-border.r[data-v-5dc89f2a]{width:10px;height:100%;right:0;top:0}.audio-player[data-v-44037f56]{width:280px;height:50px;position:relative;line-height:1;transform-origin:0 0;background:#000}.audio-player[data-v-44037f56],.controller[data-v-44037f56]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.controller[data-v-44037f56]{position:absolute;bottom:0;left:0;right:0;height:41px;padding:0 20px;transition:all .3s ease}.controller .bar-wrap[data-v-44037f56]{padding:5px 0;cursor:pointer;position:absolute;bottom:35px;width:calc(100% - 40px);height:3px}.controller .bar-wrap:hover .bar .played .thumb[data-v-44037f56]{transform:scale(1)}.controller .bar-wrap .bar-time[data-v-44037f56]{position:absolute;left:0;top:-20px;border-radius:4px;padding:5px 7px;background-color:rgba(0,0,0,.62);color:#fff;font-size:12px;text-align:center;opacity:1;transition:opacity .1s ease-in-out;word-wrap:normal;word-break:normal;z-index:2;pointer-events:none}.controller .bar-wrap .bar-time.hidden[data-v-44037f56]{opacity:0}.controller .bar-wrap .bar[data-v-44037f56]{position:relative;height:3px;width:100%;background:hsla(0,0%,100%,.2);cursor:pointer}.controller .bar-wrap .bar .loaded[data-v-44037f56]{position:absolute;left:0;top:0;bottom:0;background:hsla(0,0%,100%,.4);height:3px;transition:all .5s ease;will-change:width}.controller .bar-wrap .bar .played[data-v-44037f56]{position:absolute;left:0;top:0;bottom:0;height:3px;will-change:width;background-color:#fff}.controller .bar-wrap .bar .played .thumb[data-v-44037f56]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .icons[data-v-44037f56]{height:38px;position:absolute;bottom:0;left:14px;display:flex;align-items:center}.controller .icons .icon[data-v-44037f56]{width:36px;height:100%;position:relative;cursor:pointer;display:flex;align-items:center;font-size:20px}.controller .icons .icon.play-icon[data-v-44037f56]{font-size:26px}.controller .icons .icon .icon-content[data-v-44037f56]{transition:all .2s ease-in-out;opacity:.8;color:#fff}.controller .icons .icon.active .icon-content[data-v-44037f56],.controller .icons .icon:hover .icon-content[data-v-44037f56]{opacity:1}.controller .icons .volume[data-v-44037f56]{height:100%;position:relative;cursor:pointer;display:flex;align-items:center}.controller .icons .volume:hover .volume-bar-wrap .volume-bar[data-v-44037f56]{width:45px}.controller .icons .volume:hover .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-44037f56]{transform:scale(1)}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar[data-v-44037f56]{width:45px}.controller .icons .volume.volume-active .volume-bar-wrap .volume-bar .volume-bar-inner .thumb[data-v-44037f56]{transform:scale(1)}.controller .icons .volume-bar-wrap[data-v-44037f56]{display:inline-block;margin:0 15px 0 -5px;vertical-align:middle;height:100%}.controller .icons .volume-bar[data-v-44037f56]{position:relative;top:17px;width:0;height:3px;background:#aaa;transition:all .3s ease-in-out}.controller .icons .volume-bar .volume-bar-inner[data-v-44037f56]{position:absolute;bottom:0;left:0;height:100%;transition:all .1s ease;will-change:width;background-color:#fff}.controller .icons .volume-bar .volume-bar-inner .thumb[data-v-44037f56]{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:11px;width:11px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;transform:scale(0);background-color:#fff}.controller .time[data-v-44037f56]{height:38px;position:absolute;right:20px;bottom:0;display:flex;align-items:center;line-height:38px;color:#eee;text-shadow:0 0 2px rgba(0,0,0,.5);vertical-align:middle;font-size:13px;cursor:default}.controller .time .ptime[data-v-44037f56]{margin-right:2px}.controller .time .dtime[data-v-44037f56]{margin-left:2px}.editable-element-audio[data-v-53bdc956]{position:absolute}.editable-element-audio.lock .audio-icon[data-v-53bdc956]{cursor:default}.rotate-wrapper[data-v-53bdc956]{width:100%;height:100%}.element-content[data-v-53bdc956]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-53bdc956]{cursor:move}.audio-player[data-v-53bdc956]{position:absolute}.mouse-selection[data-v-2c5e1d42]{position:absolute;background-color:rgba(209,68,36,.1);border:1px solid #d14424;z-index:200}.mouse-selection.quadrant-1[data-v-2c5e1d42]{transform-origin:50% 0;transform:rotate(180deg)}.mouse-selection.quadrant-2[data-v-2c5e1d42]{transform-origin:0 0;transform:rotate(180deg)}.mouse-selection.quadrant-3[data-v-2c5e1d42]{transform-origin:0 50%;transform:rotate(180deg)}.mouse-selection.quadrant-4[data-v-2c5e1d42]{transform-origin:0 0;transform:rotate(0deg)}.grid-lines[data-v-05484a24]{width:100%;height:100%;overflow:visible;z-index:999;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-background[data-v-b6b18502]{width:100%;height:100%;background-position:50%;position:absolute}.alignment-line[data-v-ed6fc00a]{position:absolute;z-index:100}.alignment-line .line[data-v-ed6fc00a]{width:0;height:0;border:0 dashed #d14424}.alignment-line .line.vertical[data-v-ed6fc00a]{transform:translateY(-.5px);border-left-width:1px}.alignment-line .line.horizontal[data-v-ed6fc00a]{transform:translateX(-.5px);border-top-width:1px}.ruler[data-v-2963c74c]{font-size:12px}.h[data-v-2963c74c]{position:absolute;background-color:#fff;border:1px solid #eee;height:20px;top:5px;display:flex;justify-content:space-between;align-items:center;overflow:hidden}.h .ruler-marker-100[data-v-2963c74c]{height:100%;width:10%;line-height:20px;text-align:right;flex-shrink:0;padding-right:5px;position:relative}.h .ruler-marker-100.hide span[data-v-2963c74c],.h .ruler-marker-100.omit[data-v-2963c74c]:before{display:none}.h .ruler-marker-100[data-v-2963c74c]:not(:last-child):after{content:"";width:.1px;height:12px;position:absolute;right:0;bottom:0;background-color:#999}.h .ruler-marker-100[data-v-2963c74c]:before{content:"";width:.1px;height:8px;position:absolute;right:50%;bottom:0;background-color:#999}.v[data-v-2963c74c]{position:absolute;background-color:#fff;border:1px solid #eee;width:20px;left:5px;overflow:hidden}.v .ruler-marker-100[data-v-2963c74c]{width:100%;line-height:20px;text-align:right;padding-bottom:5px;position:relative;writing-mode:vertical-rl}.v .ruler-marker-100.hide span[data-v-2963c74c],.v .ruler-marker-100.omit[data-v-2963c74c]:before{display:none}.v .ruler-marker-100[data-v-2963c74c]:not(:last-child):after{content:"";height:.1px;width:12px;position:absolute;bottom:0;right:0;background-color:#999}.v .ruler-marker-100[data-v-2963c74c]:before{content:"";height:.1px;width:8px;position:absolute;bottom:50%;right:0;background-color:#999}.element-create-selection[data-v-85b0bbaa]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.element-create-selection svg[data-v-85b0bbaa]{overflow:visible}.selection[data-v-85b0bbaa]{position:absolute;opacity:.8}.selection[data-v-85b0bbaa]:not(.line){border:1px solid #d14424}.shape-create-canvas[data-v-6dc9876e]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;cursor:crosshair}.shape-create-canvas svg[data-v-6dc9876e]{width:100%;height:100%;overflow:visible}.resize-handler[data-v-1e66197f]{position:absolute;width:10px;height:10px;left:0;top:0;margin:-5px 0 0 -5px;border:1px solid #d14424;background-color:#fff;border-radius:1px;cursor:pointer}.resize-handler.bottom.rotate-135[data-v-1e66197f],.resize-handler.left-bottom.rotate-90[data-v-1e66197f],.resize-handler.left-top.rotate-0[data-v-1e66197f],.resize-handler.left.rotate-45[data-v-1e66197f],.resize-handler.right-bottom.rotate-0[data-v-1e66197f],.resize-handler.right-top.rotate-90[data-v-1e66197f],.resize-handler.right.rotate-45[data-v-1e66197f],.resize-handler.top.rotate-135[data-v-1e66197f]{cursor:nwse-resize}.resize-handler.bottom.rotate-0[data-v-1e66197f],.resize-handler.left-bottom.rotate-135[data-v-1e66197f],.resize-handler.left-top.rotate-45[data-v-1e66197f],.resize-handler.left.rotate-90[data-v-1e66197f],.resize-handler.right-bottom.rotate-45[data-v-1e66197f],.resize-handler.right-top.rotate-135[data-v-1e66197f],.resize-handler.right.rotate-90[data-v-1e66197f],.resize-handler.top.rotate-0[data-v-1e66197f]{cursor:ns-resize}.resize-handler.bottom.rotate-45[data-v-1e66197f],.resize-handler.left-bottom.rotate-0[data-v-1e66197f],.resize-handler.left-top.rotate-90[data-v-1e66197f],.resize-handler.left.rotate-135[data-v-1e66197f],.resize-handler.right-bottom.rotate-90[data-v-1e66197f],.resize-handler.right-top.rotate-0[data-v-1e66197f],.resize-handler.right.rotate-135[data-v-1e66197f],.resize-handler.top.rotate-45[data-v-1e66197f]{cursor:nesw-resize}.resize-handler.bottom.rotate-90[data-v-1e66197f],.resize-handler.left-bottom.rotate-45[data-v-1e66197f],.resize-handler.left-top.rotate-135[data-v-1e66197f],.resize-handler.left.rotate-0[data-v-1e66197f],.resize-handler.right-bottom.rotate-135[data-v-1e66197f],.resize-handler.right-top.rotate-45[data-v-1e66197f],.resize-handler.right.rotate-0[data-v-1e66197f],.resize-handler.top.rotate-90[data-v-1e66197f]{cursor:ew-resize}.border-line[data-v-8346cf6c]{position:absolute;width:0;height:0;left:0;top:0;border:0 dashed #d14424}.border-line.top[data-v-8346cf6c]{border-top-width:1px}.border-line.bottom[data-v-8346cf6c]{border-bottom-width:1px}.border-line.left[data-v-8346cf6c]{border-left-width:1px}.border-line.right[data-v-8346cf6c]{border-right-width:1px}.border-line.wide[data-v-8346cf6c]:before{content:"";position:absolute;background:transparent;cursor:move}.border-line.wide.top[data-v-8346cf6c]:before{top:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.bottom[data-v-8346cf6c]:before{bottom:-8px;left:-8px;width:calc(100% + 16px);height:16px}.border-line.wide.left[data-v-8346cf6c]:before{top:-8px;left:-8px;width:16px;height:calc(100% + 16px)}.border-line.wide.right[data-v-8346cf6c]:before{top:-8px;right:-8px;width:16px;height:calc(100% + 16px)}.multi-select-operate[data-v-97dc9b9a]{position:absolute;top:0;left:0;z-index:101}.rotate-handler[data-v-b99d8dae]{position:absolute;width:10px;height:10px;top:-25px;margin-left:-5px;border:1px solid #d14424;background-color:#fff;border-radius:1px;cursor:grab}.rotate-handler[data-v-b99d8dae]:active{cursor:grabbing}.image-element-operate.cliping[data-v-7bcad5a9]{visibility:hidden}.operate-keypoint-handler[data-v-52dcdbf8]{position:absolute;width:10px;height:10px;left:0;top:0;margin:-5px 0 0 -5px;border:1px solid #d14424;background-color:#ffe873;border-radius:1px}svg[data-v-3aa5cc44]{position:absolute;left:0;top:0;pointer-events:none;transform-origin:0 0}.anchor-line[data-v-3aa5cc44]{stroke-width:1px;stroke-dasharray:5 5;opacity:.5}.divider.horizontal[data-v-6b66cde8]{width:100%;margin:24px 0;border-block-start:1px solid rgba(5,5,5,.06)}.divider.vertical[data-v-6b66cde8]{position:relative;height:1em;display:inline-block;margin:0 8px;border-inline-start:1px solid rgba(5,5,5,.06)}.link-handler[data-v-316c4664]{height:30px;position:absolute;left:0;font-size:12px;padding:0 10px;background-color:#fff;box-shadow:3px 3px 3px rgba(0,0,0,.15);display:flex;align-items:center;color:#d14424}.link[data-v-316c4664]{max-width:300px;margin-right:20px;word-break:keep-all;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btns[data-v-316c4664]{display:flex;align-items:center}.btns .btn[data-v-316c4664]{word-break:keep-all;cursor:pointer}.operate[data-v-5ec1ff35]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.operate.multi-select[data-v-5ec1ff35]{opacity:.2}.animation-index[data-v-5ec1ff35]{position:absolute;top:0;left:-24px;font-size:12px}.animation-index .index-item[data-v-5ec1ff35]{width:18px;height:18px;background-color:#fff;color:#d14424;border:1px solid #d14424;display:flex;justify-content:center;align-items:center}.animation-index .index-item+.index-item[data-v-5ec1ff35]{margin-top:5px}.base-element-image[data-v-24fef706]{position:absolute}.rotate-wrapper[data-v-24fef706]{width:100%;height:100%}.element-content[data-v-24fef706]{width:100%;height:100%;position:relative}.element-content .image-content[data-v-24fef706]{width:100%;height:100%;overflow:hidden;position:relative}.element-content img[data-v-24fef706]{position:absolute}.color-mask[data-v-24fef706]{position:absolute;top:0;bottom:0;left:0;right:0}.base-element-text[data-v-52a206f2]{position:absolute}.rotate-wrapper[data-v-52a206f2]{width:100%;height:100%}.element-content[data-v-52a206f2]{position:relative;padding:10px;line-height:1.5;word-break:break-word}.element-content .text[data-v-52a206f2]{position:relative}.base-element-shape[data-v-b13f8fa8]{position:absolute}.rotate-wrapper[data-v-b13f8fa8]{width:100%;height:100%}.element-content[data-v-b13f8fa8]{width:100%;height:100%;position:relative}.element-content svg[data-v-b13f8fa8]{transform-origin:0 0;overflow:visible}.shape-text[data-v-b13f8fa8]{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;padding:10px;line-height:1.2;word-break:break-word}.shape-text.top[data-v-b13f8fa8]{justify-content:flex-start}.shape-text.middle[data-v-b13f8fa8]{justify-content:center}.shape-text.bottom[data-v-b13f8fa8]{justify-content:flex-end}.base-element-line[data-v-443e2f82]{position:absolute}.element-content[data-v-443e2f82]{width:100%;height:100%;position:relative}.element-content svg[data-v-443e2f82]{transform-origin:0 0;overflow:visible}.base-element-chart[data-v-7c03d68d]{position:absolute}.element-content[data-v-7c03d68d],.rotate-wrapper[data-v-7c03d68d]{width:100%;height:100%}.static-table[data-v-5d949d4d],table[data-v-5d949d4d]{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}table[data-v-5d949d4d]{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;border:0;word-wrap:break-word;--themeColor:$themeColor;--subThemeColor1:$themeColor;--subThemeColor2:$themeColor}table.theme[data-v-5d949d4d]{background-color:#fff}table.theme tr:nth-child(2n) .cell[data-v-5d949d4d]{background-color:var(--subThemeColor1)}table.theme tr:nth-child(odd) .cell[data-v-5d949d4d]{background-color:var(--subThemeColor2)}table.theme.col-footer tr .cell[data-v-5d949d4d]:last-child,table.theme.col-header tr .cell[data-v-5d949d4d]:first-child,table.theme.row-footer tr:last-child .cell[data-v-5d949d4d],table.theme.row-header tr:first-child .cell[data-v-5d949d4d]{background-color:var(--themeColor)}table .cell[data-v-5d949d4d]{position:relative;white-space:normal;word-wrap:break-word;vertical-align:middle;background-clip:padding-box}table .cell-text[data-v-5d949d4d]{padding:5px;line-height:1.5}.base-element-table[data-v-3eff7eba]{position:absolute}.rotate-wrapper[data-v-3eff7eba]{width:100%;height:100%}.element-content[data-v-3eff7eba]{width:100%;height:100%;position:relative}.base-element-latex[data-v-1587280d]{position:absolute}.rotate-wrapper[data-v-1587280d]{width:100%;height:100%}.element-content[data-v-1587280d]{width:100%;height:100%;position:relative}.element-content svg[data-v-1587280d]{transform-origin:0 0;overflow:visible}.base-element-video[data-v-09436dde]{position:absolute}.rotate-wrapper[data-v-09436dde]{width:100%;height:100%}.element-content[data-v-09436dde]{width:100%;height:100%;background-color:#000;background-position:50%;background-size:contain;background-repeat:no-repeat;display:flex;justify-content:center;align-items:center}.icon[data-v-09436dde]{font-size:140px;color:#aaa}.base-element-audio[data-v-5da834d7]{position:absolute}.rotate-wrapper[data-v-5da834d7]{width:100%;height:100%}.element-content[data-v-5da834d7]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.audio-icon[data-v-5da834d7]{cursor:move}.thumbnail-slide[data-v-43dcaa52]{background-color:#fff;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none}.elements[data-v-43dcaa52]{transform-origin:0 0}.background[data-v-43dcaa52]{width:100%;height:100%;background-position:50%;position:absolute}.placeholder[data-v-43dcaa52]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.tabs[data-v-5e3d7626]{display:flex;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:1}.tabs[data-v-5e3d7626]:not(.card){font-size:13px;align-items:center;justify-content:flex-start;border-bottom:1px solid #eee}.tabs:not(.card).space-around[data-v-5e3d7626]{justify-content:space-around}.tabs:not(.card).space-between[data-v-5e3d7626]{justify-content:space-between}.tabs:not(.card) .tab[data-v-5e3d7626]{text-align:center;border-bottom:2px solid transparent;padding:8px 10px;cursor:pointer}.tabs:not(.card) .tab.active[data-v-5e3d7626]{border-bottom:2px solid var(--color,#d14424)}.tabs.card[data-v-5e3d7626]{height:40px;font-size:12px;flex-shrink:0}.tabs.card .tab[data-v-5e3d7626]{flex:1;display:flex;justify-content:center;align-items:center;background-color:#f9f9f9;border-bottom:1px solid #eee;cursor:pointer}.tabs.card .tab.active[data-v-5e3d7626]{background-color:transparent;border-bottom-color:transparent}.tabs.card .tab+.tab[data-v-5e3d7626]{border-left:1px solid #eee}.button[data-v-52c90330]{height:32px;line-height:32px;outline:0;font-size:13px;padding:0 15px;text-align:center;color:#41464b;border-radius:2px;-webkit-user-select:none;-moz-user-select:none;user-select:none;letter-spacing:1px;cursor:pointer}.button.small[data-v-52c90330]{height:24px;line-height:24px;padding:0 7px;letter-spacing:0}.button.default[data-v-52c90330]{background-color:#fff;border:1px solid #d9d9d9;color:#41464b}.button.default[data-v-52c90330]:hover{color:#d14424;border-color:#d14424}.button.primary[data-v-52c90330]{background-color:#d14424;border:1px solid #d14424;color:#fff}.button.primary[data-v-52c90330]:hover{background-color:#de6949;border-color:#de6949}.button.checkbox[data-v-52c90330],.button.radio[data-v-52c90330]{background-color:#fff;border:1px solid #d9d9d9;color:#41464b}.button.checkbox[data-v-52c90330]:not(.checked):hover,.button.radio[data-v-52c90330]:not(.checked):hover{color:#d14424}.button.checked[data-v-52c90330]{color:#fff;background-color:#d14424;border-color:#d14424}.button.checked[data-v-52c90330]:hover{background-color:#de6949;border-color:#de6949}.button.disabled[data-v-52c90330]{background-color:#f5f5f5;border:1px solid #d9d9d9;color:#b7b7b7;cursor:default}.select[data-v-5bf3b141]{width:100%;height:32px;padding-right:32px;border-radius:2px;transition:border-color .25s;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:#fff;border:1px solid #d9d9d9;position:relative;cursor:pointer}.select[data-v-5bf3b141]:not(.disabled):hover{border-color:#d14424}.select.disabled[data-v-5bf3b141]{background-color:#f5f5f5;border-color:#dcdcdc;color:#b7b7b7;cursor:default}.select .selector[data-v-5bf3b141]{min-width:50px;height:30px;line-height:30px;padding-left:10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.options[data-v-5bf3b141]{max-height:260px;padding:5px;overflow:auto;text-align:left;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.option[data-v-5bf3b141]{height:32px;line-height:32px;padding:0 5px;border-radius:2px;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.option.disabled[data-v-5bf3b141]{color:#b7b7b7;cursor:default}.option[data-v-5bf3b141]:not(.disabled,.selected):hover{background-color:hsla(0,0%,40%,.05)}.option.selected[data-v-5bf3b141]{background-color:rgba(209,68,36,.05)}.icon[data-v-5bf3b141]{width:32px;height:30px;color:#bfbfbf;position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center}.link-dialog[data-v-cc39ee16]{font-size:13px;line-height:1.675}.input[data-v-cc39ee16]{width:100%;height:32px}.preview[data-v-cc39ee16]{margin-top:12px}.thumbnail[data-v-cc39ee16]{border:1px solid rgba(209,68,36,.15);margin-top:5px}.btns[data-v-cc39ee16]{margin-top:20px;text-align:right}.mask[data-v-fea8edcc],.modal[data-v-fea8edcc]{top:0;left:0;width:100%;height:100%;z-index:5000}.modal[data-v-fea8edcc]{position:fixed;display:flex;justify-content:center;align-items:center;outline:0;border:0}.mask[data-v-fea8edcc]{position:absolute;background:rgba(0,0,0,.25)}.modal-content[data-v-fea8edcc]{z-index:5001;padding:20px;background:#fff;border-radius:2px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.2);position:relative}.close-btn[data-v-fea8edcc]{width:20px;height:20px;display:flex;justify-content:center;align-items:center;position:absolute;top:16px;right:16px;cursor:pointer}.modal-fade-enter-active[data-v-fea8edcc]{animation:modal-fade-enter-fea8edcc .25s ease-in both}.modal-fade-leave-active[data-v-fea8edcc]{animation:modal-fade-leave-fea8edcc .25s ease-out both}.modal-zoom-enter-active[data-v-fea8edcc]{animation:modal-zoom-enter-fea8edcc .25s cubic-bezier(.4,0,0,1.5) both}.modal-zoom-leave-active[data-v-fea8edcc]{animation:modal-zoom-leave-fea8edcc .25s both}@keyframes modal-fade-enter-fea8edcc{0%{opacity:0}}@keyframes modal-fade-leave-fea8edcc{to{opacity:0}}@keyframes modal-zoom-enter-fea8edcc{0%{transform:scale3d(.3,.3,.3)}}@keyframes modal-zoom-leave-fea8edcc{to{transform:scale3d(.3,.3,.3)}}.canvas[data-v-5294a048]{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;background-color:#f9f9f9;position:relative}.drag-mask[data-v-5294a048]{cursor:grab;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-wrapper[data-v-5294a048]{position:absolute;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.viewport[data-v-5294a048]{position:absolute;top:0;left:0;transform-origin:0 0}.shape-item-thumbnail[data-v-8603ad34]{position:relative;cursor:pointer}.shape-content[data-v-8603ad34]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center}.shape-content:hover .shape-path[data-v-8603ad34]:not(.outlined){stroke:#d14424}.shape-content:hover .shape-path.outlined[data-v-8603ad34]{fill:#d14424}.shape-content svg[data-v-8603ad34]:not(:root){overflow:visible}.shape-pool[data-v-8b994b42]{width:340px;max-height:520px;overflow:auto;margin-top:-12px;margin-bottom:-12px;margin-right:-12px;padding-right:12px;padding-top:12px}.category-name[data-v-8b994b42]{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-8b994b42]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.shape-item[data-v-8b994b42]{width:8%;margin-bottom:2.22222%;height:0;padding-bottom:8%;flex-shrink:0}.shape-item[data-v-8b994b42]:not(:nth-child(10n)){margin-right:2.22222%}.line-pool[data-v-554824b6]{width:220px;overflow:auto;margin-bottom:-12px;margin-right:-12px;padding-right:12px}.category-name[data-v-554824b6]{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-554824b6]{display:flex;flex-wrap:wrap;align-content:flex-start;margin-bottom:10px}.line-item[data-v-554824b6]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.line-item[data-v-554824b6]:not(:nth-child(5n)){margin-right:1.25%}.line-content[data-v-554824b6]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.line-content[data-v-554824b6]:hover{color:#d14424}.line-content svg[data-v-554824b6]:not(:root){overflow:visible}.chart-pool[data-v-398f5699]{width:200px;margin-bottom:-5px;display:flex;flex-wrap:wrap;align-content:flex-start}.chart-item[data-v-398f5699]{width:19%;margin-bottom:1.25%;height:0;padding-bottom:19%;flex-shrink:0;position:relative;cursor:pointer}.chart-item[data-v-398f5699]:not(:nth-child(5n)){margin-right:1.25%}.chart-content[data-v-398f5699]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;color:#999}.chart-content[data-v-398f5699]:hover{color:#d14424}.number-input[data-v-268948c2]{background-color:#fff;border:1px solid #d9d9d9;padding:0 0 0 5px;border-radius:2px;transition:border-color .25s;font-size:13px;display:inline-flex}.number-input .input-wrap[data-v-268948c2]{flex:1;color:#41464b;padding:0 0 0 5px;position:relative}.number-input:not(.disabled) .input-wrap:hover .handlers[data-v-268948c2]{opacity:1}.number-input .handlers[data-v-268948c2]{width:20px;position:absolute;top:0;bottom:0;right:0;display:flex;flex-direction:column;font-size:6px;color:#999;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:opacity .25s}.number-input .handlers .handler[data-v-268948c2]{width:100%;height:50%;display:flex;justify-content:center;align-items:center;border-left:1px solid #d9d9d9;cursor:pointer}.number-input .handlers .handler+.handler[data-v-268948c2]{border-top:1px solid #d9d9d9}.number-input .handlers .handler[data-v-268948c2]:hover{color:#d14424}.number-input input[data-v-268948c2]{width:100%;min-width:0;padding:0;height:30px;line-height:30px;outline:0;border:0;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}.number-input input[data-v-268948c2]::-moz-placeholder{color:#bfbfbf}.number-input input[data-v-268948c2]::placeholder{color:#bfbfbf}.number-input.focused[data-v-268948c2],.number-input[data-v-268948c2]:not(.disabled):hover{border-color:#d14424}.number-input.disabled[data-v-268948c2]{background-color:#f5f5f5;border-color:#dcdcdc;color:#b7b7b7}.number-input .prefix[data-v-268948c2],.number-input .suffix[data-v-268948c2]{display:flex;justify-content:center;align-items:center;line-height:30px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.table-generator[data-v-372c6730]{width:100%;margin-top:-12px}.title[data-v-372c6730]{height:28px;line-height:28px;background-color:#ededed;margin:0 -12px 12px -12px;padding:0 14px;font-size:12px;display:flex;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;user-select:none}.title .right[data-v-372c6730]{cursor:pointer}.title .right[data-v-372c6730]:hover{color:#d14424}table[data-v-372c6730]{border-collapse:separate}td[data-v-372c6730]{width:23px;height:23px;line-height:23px;border:2px solid #fff;background-color:#f7f7f7}.cell[data-v-372c6730]{width:100%;height:100%;border:1px solid #dcdcdc}.cell.active[data-v-372c6730]{background-color:rgba(209,68,36,.1);border-color:#d14424}.custom[data-v-372c6730]{width:230px}.custom .row[data-v-372c6730]{display:flex;align-items:center}.custom .row+.row[data-v-372c6730]{margin-top:10px}.btns[data-v-372c6730]{margin-top:10px;text-align:right}.btns .btn[data-v-372c6730]{margin-left:10px}.media-input[data-v-35a1214c]{width:480px}.btns[data-v-35a1214c]{margin-top:10px;text-align:right}svg[data-v-567417d3]{overflow:hidden}.textarea[data-v-65d72404]{outline:0;width:100%;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;padding:10px;transition:border-color .25s;box-sizing:border-box;line-height:1.675;resize:none;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}.textarea[data-v-65d72404]:focus{border-color:#d14424;background-color:#fff}.textarea.resizable[data-v-65d72404]{resize:vertical}.textarea.disabled[data-v-65d72404]{background-color:#f5f5f5;border-color:#dcdcdc;color:#b7b7b7}.textarea[data-v-65d72404]::-moz-placeholder{color:#bfbfbf}.textarea[data-v-65d72404]::placeholder{color:#bfbfbf}.latex-editor[data-v-49a14edf]{height:560px}.container[data-v-49a14edf]{height:calc(100% - 50px);display:flex}.left[data-v-49a14edf]{width:540px;height:100%;display:flex;flex-direction:column;flex-shrink:0}.input-area[data-v-49a14edf]{flex:1}.input-area textarea[data-v-49a14edf]{height:100%!important;border-color:#eee!important;padding:10px!important}.input-area textarea[data-v-49a14edf]:focus{box-shadow:none!important}.preview[data-v-49a14edf]{height:160px;display:flex;justify-content:center;align-items:center;text-align:center;margin-top:20px;border:1px solid #eee;-webkit-user-select:none;-moz-user-select:none;user-select:none}.placeholder[data-v-49a14edf]{color:#888;font-size:13px}.preview-content[data-v-49a14edf]{width:100%;height:100%;padding:10px;display:flex;justify-content:center;align-items:center}.right[data-v-49a14edf]{width:280px;height:100%;margin-left:20px;border:1px solid #eee;background-color:#fff;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none}.content[data-v-49a14edf]{height:calc(100% - 40px);font-size:13px}.formula[data-v-49a14edf]{height:100%;padding:12px;overflow:auto;overflow:overlay}.formula-item+.formula-item[data-v-49a14edf]{margin-top:10px}.formula-item .formula-title[data-v-49a14edf]{margin-bottom:5px}.formula-item .formula-item-content[data-v-49a14edf]{height:60px;padding:5px;display:flex;align-items:center;background-color:#f9f9f9;cursor:pointer}.symbol[data-v-49a14edf]{height:100%;display:flex;flex-direction:column}.symbol-pool[data-v-49a14edf]{display:flex;flex-wrap:wrap;flex:1;padding:12px;overflow:auto;overflow:overlay}.symbol-item[data-v-49a14edf]{display:flex;justify-content:center;align-items:center}.symbol-item[data-v-49a14edf]:hover{background-color:#f9f9f9;cursor:pointer}.footer[data-v-49a14edf]{height:50px;display:flex;justify-content:flex-end;align-items:flex-end}.footer .btn[data-v-49a14edf]{margin-left:10px}.canvas-tool[data-v-7e81f183]{position:relative;border-bottom:1px solid #eee;background-color:#fff;display:flex;justify-content:space-between;padding:0 10px;font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.left-handler[data-v-7e81f183]{display:flex;align-items:center}.add-element-handler[data-v-7e81f183]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex}.add-element-handler .handler-item[data-v-7e81f183]{width:32px}.add-element-handler .handler-item[data-v-7e81f183]:not(.group-btn):hover{background-color:#f1f1f1}.add-element-handler .handler-item.active[data-v-7e81f183]{color:#d14424}.add-element-handler .handler-item.group-btn[data-v-7e81f183]{width:auto;margin-right:4px}.add-element-handler .handler-item.group-btn[data-v-7e81f183]:hover{background-color:#f3f3f3}.add-element-handler .handler-item.group-btn .arrow[data-v-7e81f183],.add-element-handler .handler-item.group-btn .icon[data-v-7e81f183]{height:100%;display:flex;justify-content:center;align-items:center}.add-element-handler .handler-item.group-btn .icon[data-v-7e81f183]{width:26px;padding:0 2px}.add-element-handler .handler-item.group-btn .icon[data-v-7e81f183]:hover{background-color:#e9e9e9}.add-element-handler .handler-item.group-btn .icon.active[data-v-7e81f183]{color:#d14424}.add-element-handler .handler-item.group-btn .arrow[data-v-7e81f183]{font-size:12px}.add-element-handler .handler-item.group-btn .arrow[data-v-7e81f183]:hover{background-color:#e9e9e9}.handler-item[data-v-7e81f183]{height:24px;font-size:14px;margin:0 2px;display:flex;justify-content:center;align-items:center;border-radius:2px;overflow:hidden;cursor:pointer}.handler-item.disable[data-v-7e81f183]{opacity:.5}.left-handler .handler-item[data-v-7e81f183],.right-handler .handler-item[data-v-7e81f183]{padding:0 8px}.left-handler .handler-item.active[data-v-7e81f183],.left-handler .handler-item[data-v-7e81f183]:not(.disable):hover,.right-handler .handler-item.active[data-v-7e81f183],.right-handler .handler-item[data-v-7e81f183]:not(.disable):hover{background-color:#f1f1f1}.right-handler[data-v-7e81f183]{display:flex;align-items:center}.right-handler .text[data-v-7e81f183]{display:inline-block;width:40px;text-align:center;cursor:pointer}.right-handler .viewport-size[data-v-7e81f183]{font-size:13px}@media screen and (width <= 1024px){.text[data-v-7e81f183]{display:none}}@media screen and (width <= 1000px){.left-handler[data-v-7e81f183],.right-handler[data-v-7e81f183]{display:none}}.layout-pool[data-v-8ee3e590]{width:394px;height:500px;padding:2px;margin-right:-12px;padding-right:12px;overflow:auto;display:flex;flex-wrap:wrap;align-content:flex-start}.layout-item[data-v-8ee3e590]{width:48%;margin-bottom:4%}.layout-item[data-v-8ee3e590]:not(:nth-child(2n)){margin-right:4%}.layout-item[data-v-8ee3e590]:last-child,.layout-item[data-v-8ee3e590]:nth-last-child(2){margin-bottom:0}.layout-item .thumbnail[data-v-8ee3e590]{outline:1px solid #eee;cursor:pointer}.layout-item .thumbnail[data-v-8ee3e590]:hover{outline-color:#d14424}.thumbnails[data-v-0dbead61]{border-right:1px solid #eee;background-color:#fff;display:flex;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;user-select:none}.add-slide[data-v-0dbead61]{height:40px;font-size:12px;display:flex;flex-shrink:0;border-bottom:1px solid #eee;cursor:pointer}.add-slide .btn[data-v-0dbead61]{flex:1;display:flex;justify-content:center;align-items:center}.add-slide .btn[data-v-0dbead61]:hover{background-color:#f9f9f9}.add-slide .select-btn[data-v-0dbead61]{width:30px;height:100%;display:flex;justify-content:center;align-items:center;border-left:1px solid #eee}.add-slide .select-btn[data-v-0dbead61]:hover{background-color:#f9f9f9}.add-slide .icon[data-v-0dbead61]{margin-right:3px;font-size:14px}.thumbnail-list[data-v-0dbead61]{padding:5px 0;flex:1;overflow:auto}.thumbnail-item[data-v-0dbead61]{display:flex;justify-content:center;align-items:center;padding:5px 0}.thumbnail-item .thumbnail[data-v-0dbead61]{outline:2px solid rgba(209,68,36,.15)}.thumbnail-item.active .label[data-v-0dbead61]{color:#d14424}.thumbnail-item.active .thumbnail[data-v-0dbead61],.thumbnail-item.selected .thumbnail[data-v-0dbead61]{outline-color:#d14424}.label[data-v-0dbead61]{font-size:12px;color:#999;width:20px;cursor:grab}.label.offset-left[data-v-0dbead61]{position:relative;left:-4px}.label[data-v-0dbead61]:active{cursor:grabbing}.page-number[data-v-0dbead61]{height:40px;font-size:12px;border-top:1px solid #eee;line-height:40px;text-align:center;color:#666}.slider[data-v-563bd2a0]{width:100%;height:12px;padding:4px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.slider.disabled .track[data-v-563bd2a0]{background-color:#b4b4b4}.slider.disabled .thumb[data-v-563bd2a0]{outline:2px solid #b4b4b4}.slider[data-v-563bd2a0]:not(.disabled){cursor:pointer}.slider:not(.disabled) .bar[data-v-563bd2a0]:hover{background-color:#f0f0f0}.slider:not(.disabled) .track[data-v-563bd2a0]:hover{background-color:#de6949}.slider:not(.disabled) .thumb[data-v-563bd2a0]:active,.slider:not(.disabled) .thumb[data-v-563bd2a0]:hover{outline:4px solid #d14424}.bar[data-v-563bd2a0]{width:calc(100% - 10px);margin-left:5px;height:4px;border-radius:2px;position:relative;background-color:#f5f5f5;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color .2s}.track[data-v-563bd2a0]{position:absolute;top:0;left:0;height:100%;background-color:#d14424;transition:background-color .2s}.thumb[data-v-563bd2a0]{position:absolute;top:50%;left:0;width:10px;height:10px;background-color:#fff;outline:2px solid #d14424;transform:translate(-50%,-50%);border-radius:50%;z-index:100}.thumb[data-v-563bd2a0]:active:after,.thumb[data-v-563bd2a0]:active:before,.thumb[data-v-563bd2a0]:hover:after,.thumb[data-v-563bd2a0]:hover:before{display:block}.thumb[data-v-563bd2a0]:before{content:attr(data-tooltip);min-width:28px;bottom:24px;background-color:#262626;text-align:center;color:#fff;border-radius:2px;padding:6px 5px;font-size:12px}.thumb[data-v-563bd2a0]:after,.thumb[data-v-563bd2a0]:before{display:none;position:absolute;left:50%;transform:translateX(-50%)}.thumb[data-v-563bd2a0]:after{content:"";bottom:15px;border:5px solid transparent;border-top-color:#262626}.row[data-v-03715c20]{width:100%;display:flex;align-items:center;margin-bottom:10px}.color-btn[data-v-7fa73bdc]{width:100%;display:flex!important;align-items:center;justify-content:center;padding:0!important}.color-block[data-v-7fa73bdc]{height:20px;margin-left:8px;flex:1;outline:1px dashed hsla(0,0%,40%,.12);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAEBJREFUOE9jfPbs2X8GIoCkpCQRqhgYGEcNxBlOo2GIM2iGQLL5//8/UTnl+fPnxOWUUQNxhtNoGOLOKYM+2QAAh2Nq10DwkukAAAAASUVORK5CYII=)}.content[data-v-7fa73bdc]{width:100%;height:100%}.color-btn-icon[data-v-7fa73bdc]{width:32px;font-size:13px;color:#bfbfbf}.checkerboard[data-v-fa191ace]{background-size:contain}.alpha-checkboard-wrap[data-v-84628bc8],.alpha[data-v-84628bc8],.checkerboard[data-v-fa191ace]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-checkboard-wrap[data-v-84628bc8]{overflow:hidden}.alpha-gradient[data-v-84628bc8]{position:absolute;top:0;right:0;bottom:0;left:0}.alpha-container[data-v-84628bc8]{cursor:pointer;position:relative;z-index:2;height:100%;margin:0 3px}.alpha-pointer[data-v-84628bc8]{z-index:2;position:absolute}.alpha-picker[data-v-84628bc8]{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-5711e710]{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);position:absolute;top:0;right:0;bottom:0;left:0}.hue-container[data-v-5711e710]{cursor:pointer;margin:0 2px;position:relative;height:100%}.hue-pointer[data-v-5711e710]{z-index:2;position:absolute;top:0}.hue-picker[data-v-5711e710]{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-c79c0446],.saturation-white[data-v-c79c0446],.saturation[data-v-c79c0446]{position:absolute;top:0;right:0;bottom:0;left:0;cursor:pointer}.saturation-white[data-v-c79c0446]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-c79c0446]{background:linear-gradient(0deg,#000,transparent)}.saturation-pointer[data-v-c79c0446]{cursor:pointer;position:absolute}.saturation-circle[data-v-c79c0446]{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-65e2913c]{width:100%;position:relative;overflow:hidden;text-align:center;font-size:14px}.editable-input[data-v-65e2913c]:after{content:"#";position:absolute;left:0;top:50%;transform:translateY(-50%);color:#999}.input-content[data-v-65e2913c]{width:100%;padding:3px;border:0;border-bottom:1px solid #ddd;outline:none;text-align:center}.input-label[data-v-65e2913c]{text-transform:capitalize}.color-picker[data-v-fec0b01a]{position:relative;width:240px;background:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-bottom:-10px}.picker-saturation-wrap[data-v-fec0b01a]{width:100%;padding-bottom:50%;position:relative;overflow:hidden}.picker-controls[data-v-fec0b01a]{display:flex}.picker-sliders[data-v-fec0b01a]{padding:4px 0;flex:1}.picker-hue-wrap[data-v-fec0b01a]{position:relative;height:10px}.picker-alpha-wrap[data-v-fec0b01a]{position:relative;height:10px;margin-top:4px;overflow:hidden}.picker-color-wrap[data-v-fec0b01a]{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-fec0b01a]{background-size:auto}.picker-current-color[data-v-fec0b01a]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2}.picker-field[data-v-fec0b01a]{display:flex;margin-bottom:8px}.picker-field .transparent[data-v-fec0b01a]{width:24px;height:24px;margin-top:4px;margin-left:8px;position:relative;cursor:pointer}.picker-field .transparent[data-v-fec0b01a]:after{content:"";width:26px;height:2px;position:absolute;top:11px;left:-1px;transform:rotate(-45deg);background-color:red}.picker-field .transparent .checkerboard[data-v-fec0b01a]{background-size:auto}.picker-field .straw[data-v-fec0b01a]{width:24px;height:24px;margin-top:4px;margin-left:8px;display:flex;justify-content:center;align-items:center;font-size:20px;background-color:#f5f5f5;outline:1px solid #f1f1f1;cursor:pointer}.picker-field .input[data-v-fec0b01a]{flex:1}.picker-presets[data-v-fec0b01a]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-presets-color[data-v-fec0b01a]{width:7%;margin-bottom:3.33333%;height:0;padding-bottom:7%;flex-shrink:0;position:relative;cursor:pointer}.picker-presets-color[data-v-fec0b01a]:not(:nth-child(10n)){margin-right:3.33333%}.picker-presets-color.alpha[data-v-fec0b01a]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADBJREFUOE9jfPbs2X8GPEBSUhKfNAPjqAHDIgz+//+PNx08f/4cfzoYNYCBceiHAQC5flV5JzgrxQAAAABJRU5ErkJggg==)}.picker-presets-color-content[data-v-fec0b01a]{position:absolute;top:0;right:0;bottom:0;left:0}.picker-gradient-presets[data-v-fec0b01a]{display:flex;flex-wrap:wrap;align-content:flex-start}.picker-gradient-col[data-v-fec0b01a]{width:7%;margin-bottom:3.33333%;display:flex;flex-direction:column}.picker-gradient-col[data-v-fec0b01a]:not(:nth-child(10n)){margin-right:3.33333%}.picker-gradient-color[data-v-fec0b01a]{width:100%;height:16px;position:relative;cursor:pointer}.recent-colors-title[data-v-fec0b01a]{font-size:12px;margin-bottom:4px}.switch[data-v-0566b060]{height:20px;display:inline-block;cursor:pointer}.switch:not(.disabled).active .switch-core[data-v-0566b060]{border-color:#d14424;background-color:#d14424}.switch:not(.disabled).active .switch-core[data-v-0566b060]:after{left:100%;margin-left:-17px}.switch.disabled[data-v-0566b060]{cursor:default}.switch.disabled .switch-core[data-v-0566b060]:after{background-color:#f5f5f5}.switch-core[data-v-0566b060]{margin:0;display:inline-block;position:relative;width:40px;height:20px;border:1px solid #d9d9d9;outline:none;border-radius:10px;box-sizing:border-box;background:#d9d9d9;transition:border-color .3s,background-color .3s;vertical-align:middle}.switch-core[data-v-0566b060]:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;transition:all .3s;width:16px;height:16px;background-color:#fff}.row[data-v-18fbbd33]{width:100%;height:30px;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-18fbbd33]{text-align:right}.row[data-v-3a267bbc]{width:100%;height:30px;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-3a267bbc]{text-align:right}.text-color-btn[data-v-37449800]{width:100%;display:flex!important;flex-direction:column;justify-content:center;align-items:center;padding:0}.text-color-block[data-v-37449800]{width:17px;height:4px;margin-top:1px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAACdJREFUGFdjfPbs2X8GBgYGSUlJEMXAiCHw//9/sIrnz59DVKALAADNxxVfaiODNQAAAABJRU5ErkJggg==)}.text-color-block .text-color-block-content[data-v-37449800]{width:100%;height:100%}.button-group[data-v-4db942e2]{display:flex;align-items:center}.button-group[data-v-4db942e2] button.button{border-radius:0;border-left-width:1px;border-right-width:0;display:inline-block}.button-group[data-v-4db942e2]:not(.passive) button.button:not(:last-child,.radio,.checkbox):hover{position:relative}.button-group[data-v-4db942e2]:not(.passive) button.button:not(:last-child,.radio,.checkbox):hover:after{content:"";width:1px;height:calc(100% + 2px);background-color:#d14424;position:absolute;top:-1px;right:-1px}.button-group[data-v-4db942e2]:not(.passive) button.button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.button-group[data-v-4db942e2]:not(.passive) button.button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.button-group.passive[data-v-4db942e2] button.button:not(.last,.radio,.checkbox):hover{position:relative}.button-group.passive[data-v-4db942e2] button.button:not(.last,.radio,.checkbox):hover:after{content:"";width:1px;height:calc(100% + 2px);background-color:#d14424;position:absolute;top:-1px;right:-1px}.button-group.passive[data-v-4db942e2] button.button.first{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.button-group.passive[data-v-4db942e2] button.button.last{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.select-group[data-v-d2acb09c]{display:flex;align-items:center}.select-group[data-v-d2acb09c] .select-wrap .select{border-radius:0;border-left-width:0;border-right-width:0}.select-group[data-v-d2acb09c] .select-wrap+.select-wrap .select{border-left-width:1px}.select-group[data-v-d2acb09c] .select-wrap:hover+.select-wrap .select{border-left-color:#d14424}.select-group[data-v-d2acb09c] .select-wrap:first-child .select{border-top-left-radius:2px;border-bottom-left-radius:2px;border-left-width:1px}.select-group[data-v-d2acb09c] .select-wrap:last-child .select{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right-width:1px}.text-style-panel[data-v-4cf37a85]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-4cf37a85]{width:100%;display:flex;align-items:center;margin-bottom:10px}.preset-style[data-v-4cf37a85]{display:flex;flex-wrap:wrap;margin-bottom:10px}.preset-style-item[data-v-4cf37a85]{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-4cf37a85]:hover{border-color:#d14424;color:#d14424;z-index:1}.preset-style-item[data-v-4cf37a85]:nth-child(2n){margin-left:-1px}.preset-style-item[data-v-4cf37a85]:nth-child(n+3){margin-top:-1px}.font-size-btn[data-v-4cf37a85]{padding:0}.link-popover[data-v-4cf37a85]{width:240px}.link-popover .btns[data-v-4cf37a85]{margin-top:10px;text-align:right}.list-wrap[data-v-4cf37a85]{width:176px;color:#666;padding:8px;margin:-12px;display:flex;flex-wrap:wrap;align-content:flex-start}.list[data-v-4cf37a85]{background-color:#f9f9f9;padding:4px 4px 4px 20px;cursor:pointer}.list[data-v-4cf37a85]:not(:nth-child(3n)){margin-right:8px}.list[data-v-4cf37a85]:nth-child(4),.list[data-v-4cf37a85]:nth-child(5),.list[data-v-4cf37a85]:nth-child(6){margin-top:8px}.list[data-v-4cf37a85]:hover{color:#d14424}.list:hover span[data-v-4cf37a85]{background-color:#d14424}.list-item[data-v-4cf37a85]{width:24px;height:12px;position:relative;font-size:12px;top:-5px}.list-item span[data-v-4cf37a85]{width:100%;height:2px;display:inline-block;position:absolute;top:10px;background-color:#666}.popover-btn[data-v-4cf37a85]{padding:0 3px}.row[data-v-2c8acf3c],.row[data-v-7571b056]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-2c8acf3c]{text-align:right}.filter[data-v-2c8acf3c]{font-size:12px}.filter-item[data-v-2c8acf3c]{padding:6px 0;display:flex;justify-content:center;align-items:center}.filter-item .name[data-v-2c8acf3c]{width:60px}.filter-item .filter-slider[data-v-2c8acf3c]{flex:1;margin:0 6px}.row[data-v-0ae0ff99]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-0ae0ff99]{text-align:right}.row[data-v-080b6de7]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-wrapper[data-v-080b6de7]{text-align:right}.origin-image[data-v-080b6de7]{height:100px;background-size:contain;background-repeat:no-repeat;background-position:50%;background-color:#f9f9f9;margin-bottom:10px}.full-width-btn[data-v-080b6de7]{width:100%;margin-bottom:10px}.btn-icon[data-v-080b6de7]{margin-right:3px}.clip[data-v-080b6de7]{width:260px;font-size:12px}.clip .title[data-v-080b6de7]{margin-bottom:5px}.shape-clip[data-v-080b6de7]{margin-bottom:10px;display:flex;flex-wrap:wrap;align-content:flex-start}.shape-clip-item[data-v-080b6de7]{display:flex;justify-content:center;align-items:center;cursor:pointer;width:16%;margin-bottom:5%}.shape-clip-item[data-v-080b6de7]:not(:nth-child(5n)){margin-right:5%}.shape-clip-item:hover .shape[data-v-080b6de7]{background-color:#ccc}.shape-clip-item .shape[data-v-080b6de7]{width:40px;height:40px;background-color:#e1e1e1}.popover-btn[data-v-080b6de7]{padding:0 3px}.shape-style-panel[data-v-0674f2cf]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-0674f2cf]{width:100%;display:flex;align-items:center;margin-bottom:10px}.font-size-btn[data-v-0674f2cf]{padding:0}.title[data-v-0674f2cf]{display:flex;justify-content:space-between;margin-bottom:10px}.shape-pool[data-v-0674f2cf]{width:235px;height:150px;overflow:auto;padding:5px;padding-right:10px;border:1px solid #eee;margin-bottom:20px}.shape-list[data-v-0674f2cf]{display:flex;flex-wrap:wrap;align-content:flex-start}.shape-item[data-v-0674f2cf]{width:14%;margin-bottom:3.2%;height:0;padding-bottom:14%;flex-shrink:0}.shape-item[data-v-0674f2cf]:not(:nth-child(6n)){margin-right:3.2%}.row[data-v-ae80032c]{width:100%;display:flex;align-items:center;margin-bottom:10px}.line-btn[data-v-ae80032c]{display:flex;align-items:center;justify-content:space-between;padding:0!important}.line-btn .line-wrapper[data-v-ae80032c]{margin-left:8px}.line-wrapper[data-v-ae80032c]{overflow:visible}.line-btn-icon[data-v-ae80032c]{width:30px;font-size:12px;margin-top:2px;color:#bfbfbf}.preset-point-style[data-v-ae80032c]{padding:0 10px}.preset-point-style+.preset-point-style[data-v-ae80032c]{margin-top:10px}.chart-data-editor[data-v-f7b59928]{width:600px;position:relative}.editor-content[data-v-f7b59928]{width:100%;height:360px;position:relative;border-right:1px solid #ccc;border-bottom:1px solid #ccc;overflow:auto;overflow:overlay}.range-box[data-v-f7b59928]{position:absolute;top:0;left:0;z-index:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.temp-range[data-v-f7b59928]{width:0;height:0;position:absolute;top:0;left:0;background-color:hsla(0,0%,53%,.3)}.range-line[data-v-f7b59928]{width:0;height:0;position:absolute;left:0;top:0;border:0 solid #d14424}.range-line.t[data-v-f7b59928]{border-top-width:1px}.range-line.b[data-v-f7b59928]{border-bottom-width:1px}.range-line.l[data-v-f7b59928]{border-left-width:1px}.range-line.r[data-v-f7b59928]{border-right-width:1px}.resizable[data-v-f7b59928]{position:absolute;width:12px;height:12px;left:0;top:0;margin:-9px 0 0 -9px;cursor:nwse-resize}.resizable[data-v-f7b59928]:after{content:"";position:absolute;width:4px;height:12px;right:0;top:0;background-color:#d14424}.resizable[data-v-f7b59928]:before{content:"";position:absolute;width:12px;height:4px;right:0;bottom:0;background-color:#d14424}table[data-v-f7b59928]{width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;table-layout:fixed}table td[data-v-f7b59928]{text-align:center;border:1px solid #ccc;vertical-align:middle;width:100px;height:32px}table td.head[data-v-f7b59928]{background-color:rgba(209,68,36,.1)}table .item[data-v-f7b59928]{width:100%;height:100%;border:0;outline:0;font-size:13px;text-align:center;background-color:transparent}table .item.selected[data-v-f7b59928]{background-color:rgba(209,68,36,.02)}.btns[data-v-f7b59928]{margin-top:10px;display:flex;justify-content:space-between}.checkbox[data-v-26bf4835]{height:20px;display:flex;align-items:center;cursor:pointer}.checkbox:not(.disabled).checked .checkbox-input[data-v-26bf4835]{background-color:#d14424;border-color:#d14424}.checkbox:not(.disabled).checked .checkbox-input[data-v-26bf4835]:after{transform:rotate(45deg) scaleY(1)}.checkbox:not(.disabled).checked .checkbox-label[data-v-26bf4835]{color:#d14424}.checkbox.disabled[data-v-26bf4835]{color:#b7b7b7;cursor:default}.checkbox.disabled .checkbox-input[data-v-26bf4835]{background-color:#f5f5f5}.checkbox-input[data-v-26bf4835]{display:inline-block;position:relative;border:1px solid #d9d9d9;border-radius:2px;width:16px;height:16px;background-color:#fff;vertical-align:middle;transition:border-color .15s cubic-bezier(.71,-.46,.29,1.46),background-color .15s cubic-bezier(.71,-.46,.29,1.46);z-index:1}.checkbox-input[data-v-26bf4835]:after{content:"";border:2px solid #fff;border-left:0;border-top:0;height:9px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:6px;transition:transform .15s ease-in .05s;transform-origin:center}.checkbox-original[data-v-26bf4835]{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.checkbox-label[data-v-26bf4835]{margin-left:5px;line-height:20px;font-size:13px}.chart-style-panel[data-v-45827db6],.checkbox-label[data-v-26bf4835]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-45827db6]{width:100%;display:flex;align-items:center;margin-bottom:10px}.full-width-btn[data-v-45827db6]{width:100%}.btn-icon[data-v-45827db6]{margin-right:3px}.color-btn-wrap[data-v-45827db6]{position:relative}.delete-color-btn[data-v-45827db6]{position:absolute;width:30px;right:2px;top:2px;bottom:2px;display:flex;justify-content:center;align-items:center;background-color:#fff;cursor:pointer}.preset-themes[data-v-45827db6]{width:250px;margin-bottom:-10px;display:flex;flex-wrap:wrap;align-content:flex-start}.preset-theme[data-v-45827db6]{display:flex;cursor:pointer;width:48%;margin-bottom:4%}.preset-theme[data-v-45827db6]:not(:nth-child(2n)){margin-right:4%}.preset-theme-color[data-v-45827db6]{width:20px;height:20px}.preset-theme-color.select[data-v-45827db6]{transform:scale(1.2);transition:transform .1s}.row[data-v-e5523cbc]{width:100%;display:flex;align-items:center;margin-bottom:10px}.theme-switch[data-v-e5523cbc]{margin-bottom:18px}.switch-wrapper[data-v-e5523cbc]{text-align:right}.set-count[data-v-e5523cbc]{display:flex;justify-content:center;align-items:center}.set-count .btn[data-v-e5523cbc]{padding:0 8px}.set-count .count-text[data-v-e5523cbc]{flex:1;text-align:center;margin:0 8px}.row[data-v-3a5ca316],.row[data-v-b3551c8c]{width:100%;display:flex;align-items:center;margin-bottom:10px}.background-image-wrapper[data-v-b3551c8c],.title[data-v-b3551c8c]{margin-bottom:10px}.background-image[data-v-b3551c8c]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-b3551c8c]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-b3551c8c]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-position:50%;background-size:contain;background-repeat:no-repeat;cursor:pointer}.switch-row[data-v-b3551c8c]{height:32px}.switch-wrapper[data-v-b3551c8c]{text-align:right}.row[data-v-32517bcf]{width:100%;display:flex;align-items:center;margin-bottom:10px}.switch-row[data-v-32517bcf]{height:32px}.switch-wrapper[data-v-32517bcf]{text-align:right}.row[data-v-80f1bc4e]{width:100%;display:flex;align-items:center;margin-bottom:10px}.font-size-btn[data-v-80f1bc4e]{padding:0}.row[data-v-a2bcea28]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-a2bcea28]{margin-bottom:10px}.label[data-v-a2bcea28]{text-align:center}.btn-icon[data-v-a2bcea28]{margin-right:3px}.icon-btn[data-v-a2bcea28]{cursor:pointer}.text-btn[data-v-a2bcea28]{height:30px;line-height:30px;text-align:center;cursor:pointer}.text-btn[data-v-a2bcea28]:hover{background-color:#efefef;border-radius:2px}.element-animation-panel[data-v-5abd2ee4]{height:100%;display:flex;flex-direction:column}.element-animation[data-v-5abd2ee4]{height:32px;display:flex;align-items:center}.element-animation-btn[data-v-5abd2ee4]{width:100%}.config-item[data-v-5abd2ee4]{display:flex;align-items:center}.config-item+.config-item[data-v-5abd2ee4]{margin-top:5px}.tip[data-v-5abd2ee4]{height:32px;display:flex;justify-content:center;align-items:center;font-style:italic}.animation-pool[data-v-5abd2ee4]{width:400px;height:500px;overflow-y:auto;overflow-x:hidden;font-size:12px;margin-right:-10px;padding-right:5px;position:relative}.animation-pool .mask[data-v-5abd2ee4]{position:absolute;top:0;right:0;bottom:0;left:0}.animation-pool.in .type-title[data-v-5abd2ee4]{border-left-color:#68a490;background-color:rgba(104,164,144,.15)}.animation-pool.out .type-title[data-v-5abd2ee4]{border-left-color:#d86344;background-color:rgba(216,99,68,.15)}.animation-pool.attention .type-title[data-v-5abd2ee4]{border-left-color:#e8b76a;background-color:hsla(37,73%,66%,.15)}.pool-type[data-v-5abd2ee4]:not(:last-child){margin-bottom:5px}.type-title[data-v-5abd2ee4]{width:100%;font-size:13px;margin-bottom:10px;border-left:4px solid #aaa;background-color:#eee;padding:4px 0 4px 10px}.pool-item-wrapper[data-v-5abd2ee4]{display:flex;flex-wrap:wrap;align-content:flex-start}.pool-item[data-v-5abd2ee4]{width:24%;margin-bottom:1.33333%;margin-bottom:5px;height:40px;line-height:40px;text-align:center;cursor:pointer}.pool-item[data-v-5abd2ee4]:not(:nth-child(4n)){margin-right:1.33333%}.animation-box[data-v-5abd2ee4]{background-color:#f9f9f9;border-radius:2px}.animation-sequence[data-v-5abd2ee4]{flex:1;padding-right:12px;margin-right:-12px;overflow:auto;overflow:overlay}.sequence-item[data-v-5abd2ee4]{border:1px solid #eee;padding:8px;border-radius:2px;margin-bottom:8px;transition:all .5s}.sequence-item.in.active[data-v-5abd2ee4]{border-color:#68a490}.sequence-item.out.active[data-v-5abd2ee4]{border-color:#d86344}.sequence-item.attention.active[data-v-5abd2ee4]{border-color:#e8b76a}.sequence-item.active[data-v-5abd2ee4]{height:auto}.sequence-item .sequence-content[data-v-5abd2ee4]{display:flex;align-items:center;cursor:grab}.sequence-item .sequence-content[data-v-5abd2ee4]:active{cursor:grabbing}.sequence-item .sequence-content .index[data-v-5abd2ee4]{flex:1}.sequence-item .sequence-content .text[data-v-5abd2ee4]{flex:6}.sequence-item .sequence-content .handler[data-v-5abd2ee4]{flex:2;font-size:15px;text-align:right}.sequence-item .sequence-content .handler-btn[data-v-5abd2ee4]{margin-left:8px;cursor:pointer}.slide-design-panel[data-v-ea674bd8]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.row[data-v-ea674bd8]{width:100%;display:flex;align-items:center;margin-bottom:10px}.title[data-v-ea674bd8]{display:flex;justify-content:space-between;margin-bottom:10px}.title .more[data-v-ea674bd8]{cursor:pointer}.title .more .text[data-v-ea674bd8]{font-size:12px;margin-right:3px}.background-image-wrapper[data-v-ea674bd8]{margin-bottom:10px}.background-image[data-v-ea674bd8]{height:0;padding-bottom:56.25%;border:1px dashed #eee;border-radius:2px;position:relative;transition:all .2s}.background-image[data-v-ea674bd8]:hover{border-color:#d14424;color:#d14424}.background-image .content[data-v-ea674bd8]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-position:50%;background-size:contain;background-repeat:no-repeat;cursor:pointer}.theme-list[data-v-ea674bd8]{display:flex;flex-wrap:wrap;align-content:flex-start}.theme-item[data-v-ea674bd8]{width:48%;margin-bottom:4%;padding-bottom:30%;border-radius:2px;position:relative;cursor:pointer}.theme-item[data-v-ea674bd8]:not(:nth-child(2n)){margin-right:4%}.theme-item .theme-item-content[data-v-ea674bd8]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;padding:8px;border:1px solid #eee;border-radius:2px}.theme-item .text[data-v-ea674bd8]{font-size:16px}.theme-item .colors[data-v-ea674bd8]{display:flex}.theme-item .color-block[data-v-ea674bd8]{margin-top:8px;width:12px;height:12px;margin-right:2px}.theme-item:hover .btns[data-v-ea674bd8]{display:flex}.theme-item .btns[data-v-ea674bd8]{position:absolute;top:0;right:0;bottom:0;left:0;flex-direction:column;justify-content:center;align-items:center;display:none;background-color:rgba(0,0,0,.25)}.theme-item .btn[data-v-ea674bd8]{width:72px;padding:5px 0;text-align:center;background-color:#d14424;color:#fff;font-size:12px;border-radius:2px}.theme-item .btn[data-v-ea674bd8]:hover{background-color:#de6949}.theme-item .btn+.btn[data-v-ea674bd8]{margin-top:5px}.animation-pool[data-v-0562c530]{display:flex;flex-wrap:wrap;margin-bottom:10px}.animation-item[data-v-0562c530]{width:50%;height:100px;border:1px solid #d6d6d6;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:20px 0 15px 0;position:relative;cursor:pointer}.animation-item.active[data-v-0562c530]{border-color:#d14424;z-index:1}.animation-item[data-v-0562c530]:nth-child(2n){margin-left:-1px}.animation-item[data-v-0562c530]:nth-child(n+3){margin-top:-1px}.animation-block[data-v-0562c530]{width:64px;height:36px;background:#666;position:relative;overflow:hidden}.animation-block.fade[data-v-0562c530]:hover:after{animation:fade-0562c530 .3s linear}.animation-block.fade[data-v-0562c530]:hover:after,.animation-block.slideX[data-v-0562c530]:hover:after{content:"PPTist";width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(209,68,36,.75);color:#fff;display:flex;justify-content:center;align-items:center}.animation-block.slideX[data-v-0562c530]:hover:after{animation:slideX-0562c530 .3s linear}.animation-block.slideY[data-v-0562c530]:hover:after{animation:slideY-0562c530 .3s linear}.animation-block.slideX3D[data-v-0562c530]:hover:after,.animation-block.slideY[data-v-0562c530]:hover:after{content:"PPTist";width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(209,68,36,.75);color:#fff;display:flex;justify-content:center;align-items:center}.animation-block.slideX3D[data-v-0562c530]:hover:after{animation:slideX3D-0562c530 .3s linear}.animation-block.slideY3D[data-v-0562c530]:hover:after{animation:slideY3D-0562c530 .3s linear}.animation-block.rotate[data-v-0562c530]:hover:after,.animation-block.slideY3D[data-v-0562c530]:hover:after{content:"PPTist";width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(209,68,36,.75);color:#fff;display:flex;justify-content:center;align-items:center}.animation-block.rotate[data-v-0562c530]:hover:after{transform-origin:0 0;animation:rotate-0562c530 .3s linear}.animation-block.scaleY[data-v-0562c530]:hover:after{animation:scaleY-0562c530 .3s linear}.animation-block.scaleX[data-v-0562c530]:hover:after,.animation-block.scaleY[data-v-0562c530]:hover:after{content:"PPTist";width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(209,68,36,.75);color:#fff;display:flex;justify-content:center;align-items:center}.animation-block.scaleX[data-v-0562c530]:hover:after{animation:scaleX-0562c530 .3s linear}.animation-block.scale[data-v-0562c530]:hover:after{animation:scale-0562c530 .3s linear}.animation-block.scaleReverse[data-v-0562c530]:hover:after,.animation-block.scale[data-v-0562c530]:hover:after{content:"PPTist";width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(209,68,36,.75);color:#fff;display:flex;justify-content:center;align-items:center}.animation-block.scaleReverse[data-v-0562c530]:hover:after{animation:scaleReverse-0562c530 .3s linear}.animation-text[data-v-0562c530]{font-size:12px;color:#333;text-align:center}@keyframes fade-0562c530{0%{opacity:0}to{opacity:1}}@keyframes slideX-0562c530{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideY-0562c530{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideX3D-0562c530{0%{transform:translateX(100%) scale(.5)}to{transform:translateX(0)}}@keyframes slideY3D-0562c530{0%{transform:translateY(100%) scale(.5)}to{transform:translateY(0)}}@keyframes rotate-0562c530{0%{transform:rotate(-90deg)}to{transform:rotate(0)}}@keyframes scaleY-0562c530{0%{transform:scaleY(.1)}to{transform:scaleY(1)}}@keyframes scaleX-0562c530{0%{transform:scaleX(.1)}to{transform:scaleY(1)}}@keyframes scale-0562c530{0%{transform:scale(.25)}to{transform:scale(1)}}@keyframes scaleReverse-0562c530{0%{transform:scale(2)}to{transform:scale(1)}}.row[data-v-e95a4c6c]{width:100%;display:flex;align-items:center;margin-bottom:10px}.symbol-panel[data-v-2bb5f257]{height:100%;display:flex;flex-direction:column}.symbol-panel .pool[data-v-2bb5f257]{padding:5px 12px;margin:0 -12px;flex:1;font-size:18px;overflow:auto;overflow:overlay;display:flex;flex-wrap:wrap;align-content:flex-start}.symbol-panel .symbol-item[data-v-2bb5f257]{width:18%;margin-bottom:2.5%;height:0;padding-bottom:18%;position:relative;cursor:pointer;border:1px solid #eee}.symbol-panel .symbol-item[data-v-2bb5f257]:not(:nth-child(5n)){margin-right:2.5%}.symbol-panel .symbol-item[data-v-2bb5f257]:hover{color:#d14424}.symbol-panel .symbol-item .symbol[data-v-2bb5f257]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#fff}.toolbar[data-v-6c9ece83]{border-left:1px solid #eee;background-color:#fff;display:flex;flex-direction:column}.content[data-v-6c9ece83]{padding:12px;font-size:13px;overflow:auto;overflow:overlay}.editor[data-v-31d96c24]{height:100%;overflow:auto}.prosemirror-editor[data-v-31d96c24]{height:100%;cursor:text}.prosemirror-editor[data-v-31d96c24] .ProseMirror{height:100%;font-size:12px;overflow:auto;padding:8px;line-height:1.5}.prosemirror-editor[data-v-31d96c24] .ProseMirror>p[data-placeholder]:before{content:attr(data-placeholder);pointer-events:none;position:absolute;font-size:12px;color:hsla(0,0%,40%,.5)}.menu[data-v-31d96c24]{display:flex;background-color:#fff;padding:6px 4px;border-radius:2px;box-shadow:0 0 20px 0 rgba(0,0,0,.15)}.menu button[data-v-31d96c24]{outline:0;border:0;background-color:#fff;padding:3px;border-radius:2px;font-size:16px;margin:0 3px;display:flex;align-items:center;justify-content:center;cursor:pointer}.menu button.active[data-v-31d96c24],.menu button[data-v-31d96c24]:hover{background-color:#d14424;color:#fff}.remark[data-v-458a41b9]{position:relative;border-top:1px solid #eee}.resize-handler[data-v-458a41b9]{height:7px;position:absolute;top:-3px;left:0;right:0;cursor:n-resize;z-index:2}.export-img-dialog[data-v-1df3f398]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-1df3f398],.thumbnails-view[data-v-1df3f398]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-1df3f398]:after{content:"";background-color:#fff}.configs[data-v-1df3f398]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-1df3f398]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-1df3f398]{width:100px;position:relative}.configs .title[data-v-1df3f398]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-1df3f398]{flex:1}.btns[data-v-1df3f398]{width:300px;height:100px;display:flex;justify-content:center;align-items:center;z-index:1}.btns .export[data-v-1df3f398]{flex:1}.btns .close[data-v-1df3f398]{width:100px;margin-left:10px}.export-json-dialog[data-v-6a7223ca]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.preview[data-v-6a7223ca]{width:100%;height:calc(100% - 100px);background-color:#f9f9f9;color:#0451a5;overflow:auto}pre[data-v-6a7223ca]{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}.btns[data-v-6a7223ca]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-6a7223ca]{flex:1}.btns .close[data-v-6a7223ca]{width:100px;margin-left:10px}[data-v-6a7223ca]::-webkit-scrollbar{width:10px;height:10px;background-color:#f9f9f9}[data-v-6a7223ca]::-webkit-scrollbar-thumb{background-color:#c1c1c1}.export-pdf-dialog[data-v-1668f898]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.thumbnails-view[data-v-1668f898],.thumbnails-view[data-v-1668f898]:after{position:absolute;top:0;right:0;bottom:0;left:0}.thumbnails-view[data-v-1668f898]:after{content:"";background-color:#fff}.thumbnail.break-page[data-v-1668f898]{-moz-column-break-after:page;break-after:page}.configs[data-v-1668f898]{width:300px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center;z-index:1}.configs .row[data-v-1668f898]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-1668f898]{width:100px}.configs .config-item[data-v-1668f898]{flex:1}.configs .tip[data-v-1668f898]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-1668f898]{width:300px;height:100px;display:flex;justify-content:center;align-items:center;z-index:1}.btns .export[data-v-1668f898]{flex:1}.btns .close[data-v-1668f898]{width:100px;margin-left:10px}.export-pptx-dialog[data-v-265d4b60]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-265d4b60]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-265d4b60]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-265d4b60]{width:100px;position:relative}.configs .title[data-v-265d4b60]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-265d4b60]{flex:1}.configs .tip[data-v-265d4b60]{font-size:12px;color:#aaa;line-height:1.8;margin-top:10px}.btns[data-v-265d4b60]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-265d4b60]{flex:1}.btns .close[data-v-265d4b60]{width:100px;margin-left:10px}.export-pptist-dialog[data-v-26422ed7]{height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;position:relative;overflow:hidden}.configs[data-v-26422ed7]{width:350px;height:calc(100% - 100px);display:flex;flex-direction:column;justify-content:center}.configs .row[data-v-26422ed7]{display:flex;justify-content:center;align-items:center;margin-bottom:25px}.configs .title[data-v-26422ed7]{width:100px;position:relative}.configs .title[data-v-26422ed7]:after{content:attr(data-range);position:absolute;top:20px;left:0}.configs .config-item[data-v-26422ed7]{flex:1}.configs .tip[data-v-26422ed7]{font-size:12px;color:#aaa;line-height:1.8;margin-top:25px}.btns[data-v-26422ed7]{width:300px;height:100px;display:flex;justify-content:center;align-items:center}.btns .export[data-v-26422ed7]{flex:1}.btns .close[data-v-26422ed7]{width:100px;margin-left:10px}.export-dialog[data-v-b20137f0]{margin:-20px}.content[data-v-b20137f0]{height:460px;padding:12px;font-size:13px;overflow:auto;overflow:overlay}.moveable-panel[data-v-fc791e00]{position:fixed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(56,56,56,.15);border:1px solid #eee;border-radius:2px;display:flex;flex-direction:column;z-index:999}.header[data-v-fc791e00]{height:40px;display:flex;align-items:center;border-bottom:1px solid #f0f0f0;cursor:move}.title[data-v-fc791e00]{flex:1;font-size:13px;padding-left:10px}.close-btn[data-v-fc791e00]{width:40px;height:40px;display:flex;justify-content:center;align-items:center;color:#666;font-size:12px;cursor:pointer}.content[data-v-fc791e00]{flex:1;padding:10px;overflow:auto}.select-panel[data-v-15470598]{height:100%;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.handler[data-v-15470598]{height:24px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}.handler .icon-btns[data-v-15470598]{height:100%;flex:1;display:flex;align-items:center;justify-content:flex-end}.handler .icon-btn[data-v-15470598]{width:16px;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer}.handler .icon-btn[data-v-15470598]:hover{color:#d14424}.element-list[data-v-15470598]{height:calc(100% - 32px);padding-right:10px;margin-right:-10px;overflow:auto}.item[data-v-15470598]{padding:5px;font-size:12px;border-radius:2px;display:flex;align-items:center;cursor:pointer}.item.active[data-v-15470598]{background-color:rgba(209,68,36,.1)}.item.group-active[data-v-15470598]{background-color:rgba(209,68,36,.2)}.item[data-v-15470598]:hover{background-color:rgba(209,68,36,.25)}.item .name[data-v-15470598]{height:18px;line-height:18px;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.item .icons[data-v-15470598]{width:20px;display:flex;align-items:center;justify-content:center;margin-left:5px}.group-els[data-v-15470598]{padding:5px 0}.group-els .group-title[data-v-15470598]{margin-bottom:5px;padding:0 5px}.group-els .item[data-v-15470598]{margin-left:15px}.input[data-v-15470598]{width:100%;height:16px;border:0;outline:0;padding-left:0;padding-right:0;flex:1;font-size:12px;background-color:transparent}.search-panel[data-v-fb93ddde]{font-size:13px}.content[data-v-fb93ddde]{display:flex;flex-direction:column;justify-content:space-between}.input[data-v-fb93ddde]{margin-top:10px}.count[data-v-fb93ddde]{margin-right:8px}.count[data-v-fb93ddde],.ignore-case[data-v-fb93ddde]{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ignore-case[data-v-fb93ddde]{cursor:pointer}.ignore-case.active[data-v-fb93ddde]{color:#d14424}.next-btn[data-v-fb93ddde]{width:22px;height:100%;display:flex;justify-content:center;align-items:center;margin:0!important;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.next-btn[data-v-fb93ddde]:hover{color:#d14424}.footer[data-v-fb93ddde]{display:flex;justify-content:flex-end;align-items:center;margin-top:10px}.close-btn[data-v-fb93ddde]{width:32px;height:32px;position:absolute;top:8px;right:3px;display:flex;justify-content:center;align-items:center;color:#666;font-size:12px;cursor:pointer}.pptist-editor[data-v-1e00f97b]{height:100%}.layout-header[data-v-1e00f97b]{height:40px}.layout-content[data-v-1e00f97b]{height:calc(100% - 40px);display:flex}.layout-content-left[data-v-1e00f97b]{width:160px;height:100%;flex-shrink:0}.layout-content-center[data-v-1e00f97b]{width:calc(100% - 420px)}.layout-content-center .center-top[data-v-1e00f97b]{height:40px}.layout-content-right[data-v-1e00f97b]{width:260px;height:100%}.screen-element-video[data-v-76bf5b3f]{position:absolute}.element-content[data-v-76bf5b3f],.rotate-wrapper[data-v-76bf5b3f]{width:100%;height:100%}.screen-element-audio[data-v-adf39436]{position:absolute}.rotate-wrapper[data-v-adf39436]{width:100%;height:100%}.element-content[data-v-adf39436]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.element-content:hover .audio-player[data-v-adf39436]{display:block}.audio-icon[data-v-adf39436]{cursor:pointer}.audio-player[data-v-adf39436]{position:absolute;display:none}.link[data-v-2139723a]{cursor:pointer}.screen-slide[data-v-016af5da]{position:absolute;top:0;left:0;transform-origin:0 0;overflow:hidden}.background[data-v-016af5da]{width:100%;height:100%;background-position:50%;position:absolute}.screen-slide-list[data-v-552b63d2]{background:#1d1d1d;position:relative;width:100%;height:100%}.slide-item[data-v-552b63d2]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-552b63d2]{z-index:2}.slide-item.hide[data-v-552b63d2]{opacity:0}.slide-item.turning-mode-no.before[data-v-552b63d2]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-552b63d2]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-552b63d2]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-552b63d2],.slide-item.turning-mode-fade.before[data-v-552b63d2]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-552b63d2]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-552b63d2]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-552b63d2]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-552b63d2]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-552b63d2]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-552b63d2]{transform:translateY(100%)}.slide-item.turning-mode-slideX3D[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-slideX3D.before[data-v-552b63d2]{transform:translateX(-100%) scale(.5)}.slide-item.turning-mode-slideX3D.after[data-v-552b63d2]{transform:translateX(100%) scale(.5)}.slide-item.turning-mode-slideY3D[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-slideY3D.before[data-v-552b63d2]{transform:translateY(-100%) scale(.5)}.slide-item.turning-mode-slideY3D.after[data-v-552b63d2]{transform:translateY(100%) scale(.5)}.slide-item.turning-mode-rotate[data-v-552b63d2]{transition:transform .5s;transform-origin:0 0}.slide-item.turning-mode-rotate.before[data-v-552b63d2]{transform:rotate(90deg)}.slide-item.turning-mode-rotate.after[data-v-552b63d2]{transform:rotate(-90deg)}.slide-item.turning-mode-scaleY[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-scaleY.after[data-v-552b63d2],.slide-item.turning-mode-scaleY.before[data-v-552b63d2]{transform:scaleY(.1)}.slide-item.turning-mode-scaleX[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-scaleX.after[data-v-552b63d2],.slide-item.turning-mode-scaleX.before[data-v-552b63d2]{transform:scaleX(.1)}.slide-item.turning-mode-scale[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-scale.after[data-v-552b63d2],.slide-item.turning-mode-scale.before[data-v-552b63d2]{transform:scale(.25)}.slide-item.turning-mode-scaleReverse[data-v-552b63d2]{transition:transform .5s}.slide-item.turning-mode-scaleReverse.after[data-v-552b63d2],.slide-item.turning-mode-scaleReverse.before[data-v-552b63d2]{transform:scale(2)}.slide-content[data-v-552b63d2]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.slide-thumbnails[data-v-15912b32]{width:100%;height:100%;position:fixed;top:0;left:0;background-color:#1a1a1a;z-index:99}.return-button[data-v-15912b32]{height:60px;padding:20px 30px 0}.return-button .icon[data-v-15912b32]{color:#fff;font-size:36px;cursor:pointer}.return-button .icon[data-v-15912b32]:hover{color:#d14424}.slide-thumbnails-content[data-v-15912b32]{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-15912b32]{width:150px;outline:2px solid #aaa;margin-right:12px;margin-bottom:12px}.slide-thumbnails-content .thumbnail[data-v-15912b32]:hover{outline-color:#d14424}.slide-thumbnails-content .thumbnail.active[data-v-15912b32]{outline-width:3px;outline-color:#d14424}.writing-board[data-v-d8027742]{z-index:8;cursor:none;position:absolute;top:0;right:0;bottom:0;left:0}.blackboard[data-v-d8027742]{width:100%;height:100%;background-color:#0f392b}.canvas[data-v-d8027742]{position:absolute;top:0;left:0}.eraser[data-v-d8027742],.pen[data-v-d8027742]{pointer-events:none;position:absolute;z-index:9}.eraser .icon[data-v-d8027742],.pen .icon[data-v-d8027742]{filter:drop-shadow(2px 2px 2px #555)}.eraser[data-v-d8027742]{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-92cd0b5a]{font-size:12px;z-index:10;position:absolute;top:0;right:0;bottom:0;left:0}.writing-board-tool .writing-board-wrap[data-v-92cd0b5a]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.writing-board-tool .tools[data-v-92cd0b5a]{width:100%;height:100%;display:flex;align-items:center;justify-content:space-between}.writing-board-tool .tool-content[data-v-92cd0b5a]{display:flex;align-items:center}.writing-board-tool .btn[data-v-92cd0b5a]{padding:5px 10px;cursor:pointer}.writing-board-tool .btn[data-v-92cd0b5a]:hover{color:#d14424}.writing-board-tool .btn.active[data-v-92cd0b5a]{background-color:rgba(209,68,36,.5);color:#fff}.writing-board-tool .icon[data-v-92cd0b5a]{font-size:20px}.writing-board-tool .colors[data-v-92cd0b5a]{display:flex;padding:0 10px}.writing-board-tool .color[data-v-92cd0b5a]{width:16px;height:16px;border-radius:2px;cursor:pointer}.writing-board-tool .color[data-v-92cd0b5a]:hover{transform:scale(1.15)}.writing-board-tool .color.active[data-v-92cd0b5a]{transform:scale(1.3)}.writing-board-tool .color+.color[data-v-92cd0b5a]{margin-left:8px}.size[data-v-92cd0b5a]{width:200px;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:13px}.size .label[data-v-92cd0b5a]{width:70px}.size .size-slider[data-v-92cd0b5a]{flex:1}.countdown-timer[data-v-83a589f0]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.header[data-v-83a589f0]{height:16px;font-size:13px;margin-bottom:16px;display:flex;align-items:center}.header .text-btn[data-v-83a589f0]{margin-right:8px;cursor:pointer}.header .text-btn.active[data-v-83a589f0],.header .text-btn[data-v-83a589f0]:hover{color:#d14424}.content[data-v-83a589f0]{display:flex;justify-content:space-between;padding:0 5px}.timer[data-v-83a589f0]{width:54px;height:54px;border-radius:50%;background-color:rgba(209,68,36,.05);font-size:22px;overflow:hidden}.timer input[data-v-83a589f0]{width:100%;height:100%;border:0;outline:0;background-color:transparent;text-align:center}.colon[data-v-83a589f0]{height:54px;line-height:54px;font-size:22px}.icon-btn[data-v-83a589f0]{width:20px;height:20px;display:flex;justify-content:center;align-items:center;cursor:pointer}.pause[data-v-83a589f0],.play[data-v-83a589f0]{font-size:17px}.reset[data-v-83a589f0]{font-size:12px}.close-btn[data-v-83a589f0]{position:absolute;top:0;right:0;padding:10px;cursor:pointer}.base-view[data-v-e9c1efea]{width:100%;height:100%}.base-view.laser-pen[data-v-e9c1efea]{cursor:url(data:image/png;base64,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) 20 20,default!important}.tools-left[data-v-e9c1efea]{position:fixed;bottom:8px;left:8px;font-size:25px;color:#666;z-index:10}.tools-left .tool-btn[data-v-e9c1efea]{opacity:.35;cursor:pointer}.tools-left .tool-btn[data-v-e9c1efea]:hover{opacity:.9}.tools-left .tool-btn+.tool-btn[data-v-e9c1efea]{margin-left:8px}.tools-right[data-v-e9c1efea]{height:66px;position:fixed;bottom:-66px;right:0;z-index:5;padding:8px;transition:bottom .2s}.tools-right.visible[data-v-e9c1efea]{bottom:0}.tools-right[data-v-e9c1efea]:after{content:"";width:100%;height:66px;position:absolute;left:0;top:-66px}.tools-right .content[data-v-e9c1efea]{width:100%;height:100%;display:flex;justify-content:center;align-items:center;border-radius:2px;font-size:25px;background-color:#fff;color:#41464b;padding:8px 10px;box-shadow:0 2px 12px 0 rgba(56,56,56,.2);border:1px solid #e2e6ed}.tools-right .tool-btn[data-v-e9c1efea]{cursor:pointer}.tools-right .tool-btn.active[data-v-e9c1efea],.tools-right .tool-btn[data-v-e9c1efea]:hover{color:#d14424}.tools-right .tool-btn+.tool-btn[data-v-e9c1efea]{margin-left:15px}.tools-right .page-number[data-v-e9c1efea]{font-size:13px;padding:8px 12px;cursor:pointer}.presenter-view[data-v-77a65275]{width:100%;height:100%;display:flex}.toolbar[data-v-77a65275]{width:70px;height:100%;background-color:#fff;border-right:1px solid #eee;font-size:12px;margin:20px 0}.toolbar .tool-btn[data-v-77a65275]{display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}.toolbar .tool-btn+.tool-btn[data-v-77a65275]{margin-top:22px}.toolbar .tool-btn.active[data-v-77a65275],.toolbar .tool-btn[data-v-77a65275]:hover{color:#d14424}.toolbar .divider[data-v-77a65275]{width:70%;margin:24px 15%!important}.toolbar .tool-icon[data-v-77a65275]{margin-bottom:8px;font-size:22px}.content[data-v-77a65275]{width:calc(100% - 430px);height:100%;background-color:#1d1d1d}.slide-list-wrap[data-v-77a65275]{height:calc(100% - 190px);margin:20px;overflow:hidden;position:relative}.slide-list-wrap.laser-pen[data-v-77a65275]{cursor:url(data:image/png;base64,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) 20 20,default!important}.thumbnails[data-v-77a65275]{height:150px;padding:15px;white-space:nowrap;overflow-x:auto;overflow-y:hidden;border-top:1px solid #3a3a3a}.thumbnail[data-v-77a65275]{display:inline-block;outline:2px solid #aaa}.thumbnail+.thumbnail[data-v-77a65275]{margin-left:10px}.thumbnail[data-v-77a65275]:hover{outline-color:#d14424}.thumbnail.active[data-v-77a65275]{outline-width:3px;outline-color:#d14424}.remark[data-v-77a65275]{width:360px;height:100%;position:relative;background-color:#2a2a2a;border-left:1px solid #3a3a3a;color:#fff}.remark .header[data-v-77a65275]{height:60px;padding:0 20px;display:flex;justify-content:space-between;align-items:center;font-size:18px;border-bottom:1px solid #3a3a3a}.remark .remark-content[data-v-77a65275]{height:calc(100% - 60px);padding:20px;line-height:1.5;overflow:auto;overflow:overlay}.remark .remark-scale[data-v-77a65275]{position:absolute;right:5px;bottom:5px;font-size:22px;display:flex}.remark .scale-btn[data-v-77a65275]{width:40px;height:40px;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}.remark .scale-btn.disable[data-v-77a65275]{color:#666;cursor:no-drop}.remark .scale-btn[data-v-77a65275]:not(.disable):hover{background-color:#333}[data-v-77a65275]::-webkit-scrollbar{width:0;height:0}.pptist-screen[data-v-6bf3d190]{width:100%;height:100%}.mobile-operate[data-v-fd451ff6]{position:absolute;z-index:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mobile-thumbnails[data-v-2c80920e]{padding:10px;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.thumbnail-item[data-v-2c80920e]{position:relative;display:inline-block;outline:2px solid #aaa}.thumbnail-item+.thumbnail-item[data-v-2c80920e]{margin-left:10px}.thumbnail-item.active[data-v-2c80920e]{outline-color:#d14424}.thumbnail-item.active .label[data-v-2c80920e]{background-color:#d14424}.thumbnail-item .label[data-v-2c80920e]{min-width:20px;height:14px;line-height:14px;position:absolute;right:-1px;top:-1px;color:#fff;background-color:#aaa;z-index:1;font-size:12px;text-align:center;padding:0 5px}.sortable-chosen[data-v-2c80920e]{top:-5px}[data-v-2c80920e]::-webkit-scrollbar{width:0;height:0}.slide-toolbar[data-v-24150aba]{height:230px;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column;position:relative;z-index:2}.remark[data-v-24150aba]{position:relative;flex:1;border-bottom:1px solid #eee;line-height:1.5}.remark textarea[data-v-24150aba]{width:100%;height:100%;overflow-y:auto;resize:none;border:0;outline:0;padding:8px 10px;font-size:12px;box-sizing:border-box;position:absolute;top:0;right:0;bottom:0;left:0}.toolbar[data-v-24150aba]{height:90px;border-bottom:1px solid #eee;padding:10px}.row[data-v-24150aba]{width:100%;display:flex;align-items:center;margin-bottom:5px}.row .icon[data-v-24150aba]{margin-right:3px}.element-toolbar[data-v-f3d1ac70]{width:100%;height:240px;position:absolute;z-index:99;bottom:0;left:0;background-color:#fff;box-shadow:0 0 15px 0 rgba(0,0,0,.1);display:flex;flex-direction:column;animation:slideInUp-f3d1ac70 .15s}@keyframes slideInUp-f3d1ac70{0%{transform:translateY(100%)}to{transform:translateY(0)}}.content[data-v-f3d1ac70]{padding:10px;flex:1;overflow:auto}.row[data-v-f3d1ac70]{width:100%;display:flex;align-items:center;margin-bottom:10px}.row .icon[data-v-f3d1ac70]{margin-right:3px}.row-block[data-v-f3d1ac70]{margin-bottom:10px;background-color:#f9f9f9;border-radius:2px;padding:10px}.label[data-v-f3d1ac70]{font-size:13px;margin-bottom:20px;margin-left:6px}.colors[data-v-f3d1ac70]{display:flex;flex-wrap:wrap;align-content:flex-start}.color[data-v-f3d1ac70]{width:12%;margin-bottom:.57143%;padding-bottom:5px;display:flex;justify-content:center;align-items:center}.color[data-v-f3d1ac70]:not(:nth-child(8n)){margin-right:.57143%}.color .color-block[data-v-f3d1ac70]{width:30px;height:30px;border-radius:50%}.mobile-editor-header[data-v-5c34ab81]{height:50px;background-color:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 18px;font-size:13px;box-shadow:0 0 15px 0 rgba(0,0,0,.1);position:relative;z-index:2}.history[data-v-5c34ab81]{display:flex;justify-content:center;align-items:center}.history-item[data-v-5c34ab81]{margin-right:20px}.history-item.disable[data-v-5c34ab81]{opacity:.5}.mobile-editor[data-v-3756d058]{height:100%;position:relative;background-color:#f9f9f9}.content[data-v-3756d058]{height:calc(100% - 280px);display:flex;justify-content:center;align-items:center}.viewport[data-v-3756d058]{transform-origin:0 0}.viewport-wrapper[data-v-3756d058]{position:relative;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.background[data-v-3756d058]{width:100%;height:100%;background-position:50%;position:absolute}.mobile-player[data-v-62f26eba]{transform-origin:0 0;background-color:#1d1d1d;position:relative}.screen-slide-list[data-v-62f26eba]{position:relative;width:100%;height:100%}.slide-item[data-v-62f26eba]{position:absolute;top:0;left:0;width:100%;height:100%}.slide-item.current[data-v-62f26eba]{z-index:2}.slide-item.hide[data-v-62f26eba]{opacity:0}.slide-item.turning-mode-no.before[data-v-62f26eba]{transform:translateY(-100%)}.slide-item.turning-mode-no.after[data-v-62f26eba]{transform:translateY(100%)}.slide-item.turning-mode-fade[data-v-62f26eba]{transition:opacity .75s}.slide-item.turning-mode-fade.after[data-v-62f26eba],.slide-item.turning-mode-fade.before[data-v-62f26eba]{pointer-events:none;opacity:0}.slide-item.turning-mode-slideX[data-v-62f26eba]{transition:transform .35s}.slide-item.turning-mode-slideX.before[data-v-62f26eba]{transform:translateX(-100%)}.slide-item.turning-mode-slideX.after[data-v-62f26eba]{transform:translateX(100%)}.slide-item.turning-mode-slideY[data-v-62f26eba]{transition:transform .35s}.slide-item.turning-mode-slideY.before[data-v-62f26eba]{transform:translateY(-100%)}.slide-item.turning-mode-slideY.after[data-v-62f26eba]{transform:translateY(100%)}.slide-content[data-v-62f26eba]{background-color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;justify-content:center;align-items:center}.header[data-v-62f26eba]{width:100%;height:40px;line-height:40px;padding:0 15px;position:absolute;top:0;left:0;z-index:99;background-color:rgba(29,29,29,.7);text-align:right;font-size:13px;color:#fff;animation:slideInDown-62f26eba .15s}.header .back[data-v-62f26eba]{height:100%}.thumbnails[data-v-62f26eba]{width:100%;position:absolute;bottom:0;left:0;z-index:99;background-color:rgba(29,29,29,.7);overflow:auto!important;animation:slideInUp-62f26eba .15s}@keyframes slideInUp-62f26eba{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInDown-62f26eba{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.mobile-preview[data-v-53dd42dc]{height:100%;background-color:#f9f9f9}.thumbnail-list[data-v-53dd42dc]{height:calc(100% - 50px);padding:10px;overflow:auto}.thumbnail-item[data-v-53dd42dc]{display:flex;justify-content:center;align-items:center;box-shadow:0 0 15px 0 rgba(0,0,0,.1)}.thumbnail-item+.thumbnail-item[data-v-53dd42dc]{margin-top:10px}.menu[data-v-53dd42dc]{height:50px;position:relative;box-shadow:0 -2px 4px 0 rgba(51,51,51,.05);background:#fff;display:flex;justify-content:center;align-items:center}.menu .menu-item[data-v-53dd42dc]{width:50%;height:100%;display:flex;justify-content:center;align-items:center;font-size:13px}.menu .menu-item .icon[data-v-53dd42dc]{margin-right:8px;font-size:18px}#app,.mobile[data-v-9826ff08]{height:100%}.ProseMirror,.ProseMirror-static{outline:0;border:0;font-size:20px;word-break:break-word;white-space:normal}.ProseMirror-static:not(.ProseMirror-static),.ProseMirror:not(.ProseMirror-static){-webkit-user-select:text;-moz-user-select:text;user-select:text}.ProseMirror ::-moz-selection,.ProseMirror-static ::-moz-selection{background-color:rgba(209,68,36,.25);color:inherit}.ProseMirror ::selection,.ProseMirror-static ::selection{background-color:rgba(209,68,36,.25);color:inherit}.ProseMirror p,.ProseMirror-static p{margin-top:var(--paragraphSpace)}.ProseMirror p:first-child,.ProseMirror-static p:first-child{margin-top:0}.ProseMirror ul,.ProseMirror-static ul{list-style-type:disc;padding-inline-start:1.25em}.ProseMirror ul li,.ProseMirror-static ul li{list-style-type:inherit;padding:2px 0}.ProseMirror ol,.ProseMirror-static ol{list-style-type:decimal;padding-inline-start:1.25em}.ProseMirror ol li,.ProseMirror-static ol li{list-style-type:inherit;padding:2px 0}.ProseMirror code,.ProseMirror-static code{background-color:#eee;padding:2px 6px;margin:0 1px;border-radius:4px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.ProseMirror sup,.ProseMirror-static sup{vertical-align:super;font-size:smaller}.ProseMirror sub,.ProseMirror-static sub{vertical-align:sub;font-size:smaller}.ProseMirror blockquote,.ProseMirror-static blockquote{overflow:hidden;padding-right:1.2em;padding-left:1.2em;margin-left:0;margin-right:0;font-style:italic;border-left:4px solid #ddd}.ProseMirror [data-indent="1"],.ProseMirror-static [data-indent="1"]{padding-left:20px}.ProseMirror [data-indent="2"],.ProseMirror-static [data-indent="2"]{padding-left:40px}.ProseMirror [data-indent="3"],.ProseMirror-static [data-indent="3"]{padding-left:60px}.ProseMirror [data-indent="4"],.ProseMirror-static [data-indent="4"]{padding-left:80px}.ProseMirror [data-indent="5"],.ProseMirror-static [data-indent="5"]{padding-left:100px}.ProseMirror [data-indent="6"],.ProseMirror-static [data-indent="6"]{padding-left:120px}.ProseMirror [data-indent="7"],.ProseMirror-static [data-indent="7"]{padding-left:140px}.ProseMirror [data-indent="8"],.ProseMirror-static [data-indent="8"]{padding-left:160px}.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}:after,:before{box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body,html{width:100%;height:100%;overflow:hidden;background-color:#fff;color:#41464b}body{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}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;color:#d14424}img{vertical-align:middle;border-style:none}hr{box-sizing:content-box;height:0;overflow:visible}mark.active{background-color:#ff9632}button,input,optgroup,select,textarea{color:inherit}button,input{overflow:visible}button,select{text-transform:none}textarea{overflow:auto;resize:vertical}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}::-webkit-scrollbar{width:5px;height:5px;background-color:transparent}::-webkit-scrollbar-thumb{background-color:#c1c1c1}@font-face{font-display:swap;font-family:仓耳小丸子;src:url(../fonts/%E4%BB%93%E8%80%B3%E5%B0%8F%E4%B8%B8%E5%AD%90.64a7acb4.woff2) format("woff2")}@font-face{font-display:swap;font-family:优设标题黑;src:url(../fonts/%E4%BC%98%E8%AE%BE%E6%A0%87%E9%A2%98%E9%BB%91.df0c1330.woff2) format("woff2")}@font-face{font-display:swap;font-family:字制区喜脉体;src:url(../fonts/%E5%AD%97%E5%88%B6%E5%8C%BA%E5%96%9C%E8%84%89%E4%BD%93.cb8f58a4.woff2) format("woff2")}@font-face{font-display:swap;font-family:峰广明锐体;src:url(../fonts/%E5%B3%B0%E5%B9%BF%E6%98%8E%E9%94%90%E4%BD%93.8c45ca35.woff2) format("woff2")}@font-face{font-display:swap;font-family:得意黑;src:url(../fonts/%E5%BE%97%E6%84%8F%E9%BB%91.7caef6f6.woff2) format("woff2")}@font-face{font-display:swap;font-family:摄图摩登小方体;src:url(../fonts/%E6%91%84%E5%9B%BE%E6%91%A9%E7%99%BB%E5%B0%8F%E6%96%B9%E4%BD%93.7d229dc8.woff2) format("woff2")}@font-face{font-display:swap;font-family:站酷快乐体;src:url(../fonts/%E7%AB%99%E9%85%B7%E5%BF%AB%E4%B9%90%E4%BD%93.8fd3ebd9.woff2) format("woff2")}@font-face{font-display:swap;font-family:素材集市康康体;src:url(../fonts/%E7%B4%A0%E6%9D%90%E9%9B%86%E5%B8%82%E5%BA%B7%E5%BA%B7%E4%BD%93.ceb20972.woff2) format("woff2")}@font-face{font-display:swap;font-family:素材集市酷方体;src:url(../fonts/%E7%B4%A0%E6%9D%90%E9%9B%86%E5%B8%82%E9%85%B7%E6%96%B9%E4%BD%93.42328465.woff2) format("woff2")}@font-face{font-display:swap;font-family:途牛类圆体;src:url(../fonts/%E9%80%94%E7%89%9B%E7%B1%BB%E5%9C%86%E4%BD%93.a94398b6.woff2) format("woff2")}@font-face{font-display:swap;font-family:锐字真言体;src:url(../fonts/%E9%94%90%E5%AD%97%E7%9C%9F%E8%A8%80%E4%BD%93.487089ad.woff2) format("woff2")}.menu-content[data-v-77e74b43]{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-77e74b43]{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-77e74b43]{display:block}.menu-item:not(.disable):hover>.has-children.has-handler[data-v-77e74b43]:after{transform:scale(1)}.menu-item[data-v-77e74b43]:hover:not(.disable){background-color:rgba(209,68,36,.2)}.menu-item.divider[data-v-77e74b43]{height:1px;overflow:hidden;margin:5px;background-color:#e5e5e5;line-height:0;padding:0}.menu-item.disable[data-v-77e74b43]{color:#b1b1b1;cursor:no-drop}.menu-item-content[data-v-77e74b43]{display:flex;align-items:center;justify-content:space-between;position:relative}.menu-item-content.has-children[data-v-77e74b43]: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-77e74b43]: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-77e74b43]{opacity:.6}.menu-item-content .sub-menu[data-v-77e74b43]{width:120px;position:absolute;display:none;left:112%;top:-6px}.mask{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:9998}.contextmenu{position:fixed;z-index:9999;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tippy-box[data-theme~=tooltip]{background-color:#262626;color:#fff;border-radius:2px;padding:8px;font-size:12px;line-height:1.5}.tippy-box[data-theme~=tooltip] .tippy-arrow{width:12px;height:12px;color:#262626}.tippy-box[data-theme~=tooltip] .tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-box[data-theme~=tooltip][data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-theme~=tooltip][data-placement^=top]>.tippy-arrow:before{bottom:-5px;left:0;border-width:6px 6px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-theme~=tooltip][data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-theme~=tooltip][data-placement^=bottom]>.tippy-arrow:before{top:-5px;left:0;border-width:0 6px 6px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-theme~=tooltip][data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-theme~=tooltip][data-placement^=left]>.tippy-arrow:before{border-width:6px 0 6px 6px;border-left-color:initial;right:-5px;transform-origin:center left}.tippy-box[data-theme~=tooltip][data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-theme~=tooltip][data-placement^=right]>.tippy-arrow:before{left:-5px;border-width:6px 6px 6px 0;border-right-color:initial;transform-origin:center right} \ No newline at end of file diff --git a/index.html b/index.html index d01f2e45..8f7690e7 100644 --- a/index.html +++ b/index.html @@ -30,4 +30,4 @@ 100% { transform: rotate(360deg); } - }
正在加载中,请稍等 ...
\ No newline at end of file + }
正在加载中,请稍等 ...
\ No newline at end of file diff --git a/js/app.04af034d.js b/js/app.9b709042.js similarity index 77% rename from js/app.04af034d.js rename to js/app.9b709042.js index e8b2f70f..89fff6af 100644 --- a/js/app.04af034d.js +++ b/js/app.9b709042.js @@ -1,2 +1,2 @@ -(function(){var e={2078:function(e,t,l){"use strict";var a,n=l(9963),o=l(9876),i=(l(7658),l(6252)),s=l(2262),r=l(3416);(function(e){e["SYMBOL"]="symbol",e["EL_ANIMATION"]="elAnimation",e["EL_STYLE"]="elStyle",e["EL_POSITION"]="elPosition",e["SLIDE_DESIGN"]="slideDesign",e["SLIDE_ANIMATION"]="slideAnimation",e["MULTI_POSITION"]="multiPosition"})(a||(a={}));var u=l(5804);const c=(e,t)=>e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list,d=e=>{const{empty:t}=e.state.selection;t&&(0,u.td)(e.state,e.dispatch)},p=(e,t,l)=>{if(l)e.dispatch(e.state.tr.addMark(l.from,l.to,t));else{const{$from:l,$to:a}=e.state.selection;e.dispatch(e.state.tr.addMark(l.pos,a.pos,t))}},v=(e,t,l,a)=>{let n=t;const o=e=>e.type===a;let i=null,s=null,r=null;while(n<=l){const t=e.nodeAt(n);if(!t||!t.marks)return null;const l=t.marks.find(o);if(!l)return null;if(i&&l!==i)return null;s=s||t,i=i||l,r=t,n++}let u=t,c=l,d=0;n=t-1;while(n>d){const t=e.nodeAt(n),l=t&&t.marks.find(o);if(!l||l!==i)break;u=n,s=t,n--}n=l+1,d=e.nodeSize-2;while(nArray.isArray(e)&&e.indexOf(t.type)>-1||t.type===e,h=(e,t)=>{for(let l=e.depth;l>0;l--){const a=e.node(l);if(t(a))return{pos:l>0?e.before(l):0,start:e.start(l),depth:l,node:a}}},f=e=>t=>h(t.$from,e),g=e=>t=>f((t=>m(e,t)))(t),y=(e,t)=>{const l=t.schema.nodes[e];return!!g(l)(t.selection)},w=e=>e?"text"===e.type.name?e:e.lastChild?w(e.lastChild):null:null,x=e=>{const{selection:t,doc:l}=e.state,{from:a}=t;let n=l.nodeAt(a)||l.nodeAt(a-1);return n=w(n),n?.marks||[]},k=(e,t,l)=>{for(const a of e)if(a.type.name===t&&a.attrs[l])return a.attrs[l];return null},b=(e,t)=>{for(const l of e)if(l.type.name===t)return!0;return!1},_=(e,t)=>{const{from:l,$from:a,to:n,empty:o}=e.selection;return o?t.isInSet(e.storedMarks||a.marks()):e.doc.rangeHasMark(l,n,t)},I=(e,t)=>{const{selection:l,doc:a}=e.state,{from:n,to:o}=l;let i=!0,s="";return a.nodesBetween(n,o,(e=>(i&&e.attrs[t]&&(i=!1,s=e.attrs[t]),i))),s},S={color:"#000",backcolor:"",fontsize:"20px",fontname:"微软雅黑",align:"left"},C=(e,t={})=>{const l={...S,...t},a=x(e),n=b(a,"strong"),o=b(a,"em"),i=b(a,"underline"),s=b(a,"strikethrough"),r=b(a,"superscript"),u=b(a,"subscript"),c=b(a,"code"),d=k(a,"forecolor","color")||l.color,p=k(a,"backcolor","backcolor")||l.backcolor,v=k(a,"fontsize","fontsize")||l.fontsize,m=k(a,"fontname","fontname")||l.fontname,h=k(a,"link","href")||"",f=I(e,"align")||l.align,g=y("bullet_list",e.state),w=y("ordered_list",e.state),_=y("blockquote",e.state);return{bold:n,em:o,underline:i,strikethrough:s,superscript:r,subscript:u,code:c,color:d,backcolor:p,fontsize:v,fontname:m,link:h,align:f,bulletList:g,orderedList:w,blockquote:_}},L=e=>{const t=x(e),l=k(t,"fontsize","fontsize")||S.fontsize;return parseInt(l)},T={bold:!1,em:!1,underline:!1,strikethrough:!1,superscript:!1,subscript:!1,code:!1,color:"#000",backcolor:"",fontsize:"20px",fontname:"微软雅黑",link:"",align:"left",bulletList:!1,orderedList:!1,blockquote:!1},E=[{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"}],M=[{label:"得意黑",value:"得意黑"},{label:"仓耳小丸子",value:"仓耳小丸子"},{label:"优设标题黑",value:"优设标题黑"},{label:"峰广明锐体",value:"峰广明锐体"},{label:"摄图摩登小方体",value:"摄图摩登小方体"},{label:"站酷快乐体",value:"站酷快乐体"},{label:"字制区喜脉体",value:"字制区喜脉体"},{label:"素材集市康康体",value:"素材集市康康体"},{label:"素材集市酷方体",value:"素材集市酷方体"},{label:"途牛类圆体",value:"途牛类圆体"},{label:"锐字真言体",value:"锐字真言体"}],U=e=>{if("string"!==typeof e)return!1;const t="Arial";if(e.toLowerCase()===t.toLowerCase())return!0;const l=100,a=100,n=100,o="a",i=document.createElement("canvas"),s=i.getContext("2d",{willReadFrequently:!0});if(!s)return!1;i.width=a,i.height=n,s.textAlign="center",s.fillStyle="black",s.textBaseline="middle";const r=e=>{s.clearRect(0,0,a,n),s.font=`${l}px ${e}, ${t}`,s.fillText(o,a/2,n/2);const i=s.getImageData(0,0,a,n).data;return[].slice.call(i).filter((e=>0!==e))};return r(t).join("")!==r(e).join("")};var W=l(7234),D=l(6486);const H=[{id:"test-slide-1",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z",fill:"#5b9bd5",fixedRatio:!1,opacity:.7,rotate:0},{type:"shape",id:"ookHrf",left:0,top:0,width:300,height:320,viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z",fill:"#5b9bd5",fixedRatio:!1,flipV:!0,rotate:0},{type:"text",id:"idn7Mx",left:355,top:65.25,width:585,height:188,lineHeight:1.2,content:"

PPTIST

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

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

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333"},{type:"line",id:"FnpZs4",left:361,top:238,start:[0,0],end:[549,0],points:["",""],color:"#5b9bd5",style:"solid",width:2}],background:{type:"solid",color:"#ffffff"}},{id:"test-slide-2",elements:[{type:"text",id:"ptNnUJ",left:145,top:148,width:711,height:77,lineHeight:1.2,content:"

在此处添加标题

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

在此处添加副标题

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

感谢观看

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333",wordSpace:5}],background:{type:"solid",color:"#fff"}}],F={themeColor:"#5b9bd5",fontColor:"#333",fontName:"Microsoft Yahei",backgroundColor:"#fff",shadow:{h:3,v:3,blur:2,color:"#808080"},outline:{width:2,color:"#525252",style:"solid"}},A=[{id:"template",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z",fill:"{{themeColor}}",fixedRatio:!1,opacity:.7,rotate:0},{type:"shape",id:"ookHrf",left:0,top:0,width:300,height:320,viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z",fill:"{{themeColor}}",fixedRatio:!1,flipV:!0,rotate:0},{type:"text",id:"AkIh3E",left:355,top:95.11111111111111,width:585,height:116,lineHeight:1.2,content:"

输入标题

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

请在此处输入副标题

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

在此处添加标题

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

在此处添加副标题

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

感谢观看

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

01

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

在此处输入标题

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

  2. 在此处输入内容

  3. 在此处输入内容

  4. 在此处输入内容

  5. 在此处输入内容

  6. 在此处输入内容

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

1

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

4

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

3

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

2

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

在此输入内容

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

在此输入内容

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

在此输入内容

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

在此输入内容

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

01

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

在此处添加标题

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

1.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

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

2.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

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

1.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

2.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

3.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

4.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

请在此处输入标题

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

请在此处输入内容1

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

请在此处输入内容2

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

请在此处输入内容3

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

请在此处输入内容4

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

1

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

在此输入内容

在此输入内容

在此输入内容

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

2

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

在此输入内容

在此输入内容

在此输入内容

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

3

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

在此输入内容

在此输入内容

在此输入内容

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

4

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

在此输入内容

在此输入内容

在此输入内容

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

5

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

在此输入内容

在此输入内容

在此输入内容

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

6

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

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}}],$=(0,o.Q_)("slides",{state:()=>({title:"未命名演示文稿",theme:F,slides:H,slideIndex:0,viewportRatio:.5625}),getters:{currentSlide(e){return e.slides[e.slideIndex]},currentSlideAnimations(e){const t=e.slides[e.slideIndex];if(!t?.animations)return[];const l=t.elements,a=l.map((e=>e.id));return t.animations.filter((e=>a.includes(e.elId)))},formatedAnimations(e){const t=e.slides[e.slideIndex];if(!t?.animations)return[];const l=t.elements,a=l.map((e=>e.id)),n=t.animations.filter((e=>a.includes(e.elId))),o=[];for(const i of n)if("click"!==i.trigger&&o.length){if("meantime"===i.trigger){const e=o[o.length-1];e.animations=e.animations.filter((e=>e.elId!==i.elId)),e.animations.push(i),o[o.length-1]=e}else if("auto"===i.trigger){const e=o[o.length-1];e.autoNext=!0,o[o.length-1]=e,o.push({animations:[i],autoNext:!1})}}else o.push({animations:[i],autoNext:!1});return o},layouts(e){const{themeColor:t,fontColor:l,fontName:a,backgroundColor:n}=e.theme,o=(0,W.Z)(l).isDark()?"rgba(230, 230, 230, 0.5)":"rgba(180, 180, 180, 0.5)",i=JSON.stringify(A).replaceAll("{{themeColor}}",t).replaceAll("{{fontColor}}",l).replaceAll("{{fontName}}",a).replaceAll("{{backgroundColor}}",n).replaceAll("{{subColor}}",o);return JSON.parse(i)}},actions:{setTitle(e){this.title=e||"未命名演示文稿"},setTheme(e){this.theme={...this.theme,...e}},setViewportRatio(e){this.viewportRatio=e},setSlides(e){this.slides=e},addSlide(e){const t=Array.isArray(e)?e:[e],l=this.slideIndex+1;this.slides.splice(l,0,...t),this.slideIndex=l},updateSlide(e){const t=this.slideIndex;this.slides[t]={...this.slides[t],...e}},deleteSlide(e){const t=Array.isArray(e)?e:[e],l=[];for(let o=0;oe.id===t[o]));l.push(e)}let a=Math.min(...l);const n=this.slides.length-t.length-1;a>n&&(a=n),this.slideIndex=a,this.slides=this.slides.filter((e=>!t.includes(e.id)))},updateSlideIndex(e){this.slideIndex=e},addElement(e){const t=Array.isArray(e)?e:[e],l=this.slides[this.slideIndex].elements,a=[...l,...t];this.slides[this.slideIndex].elements=a},deleteElement(e){const t=Array.isArray(e)?e:[e],l=this.slides[this.slideIndex].elements,a=l.filter((e=>!t.includes(e.id)));this.slides[this.slideIndex].elements=a},updateElement(e){const{id:t,props:l,slideId:a}=e,n="string"===typeof t?[t]:t,o=a?this.slides.findIndex((e=>e.id===a)):this.slideIndex,i=this.slides[o],s=i.elements.map((e=>n.includes(e.id)?{...e,...l}:e));this.slides[o].elements=s},removeElementProps(e){const{id:t,propName:l}=e,a="string"===typeof l?[l]:l,n=this.slideIndex,o=this.slides[n],i=o.elements.map((e=>e.id===t?(0,D.omit)(e,a):e));this.slides[n].elements=i}}}),Z=(0,r.kP)("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),O=Z(10),R=(0,o.Q_)("main",{state:()=>({activeElementIdList:[],handleElementId:"",activeGroupElementId:"",hiddenElementIdList:[],canvasPercentage:90,canvasScale:1,canvasDragged:!1,thumbnailsFocus:!1,editorAreaFocus:!1,disableHotkeys:!1,gridLineSize:0,showRuler:!1,creatingElement:null,creatingCustomShape:!1,availableFonts:E,toolbarState:a.SLIDE_DESIGN,clipingImageElementId:"",richTextAttrs:T,selectedTableCells:[],isScaling:!1,selectedSlidesIndex:[],dialogForExport:"",databaseId:O,textFormatPainter:null,shapeFormatPainter:null,showSelectPanel:!1,showSearchPanel:!1}),getters:{activeElementList(e){const t=$(),l=t.currentSlide;return l&&l.elements?l.elements.filter((t=>e.activeElementIdList.includes(t.id))):[]},handleElement(e){const t=$(),l=t.currentSlide;return l&&l.elements&&l.elements.find((t=>e.handleElementId===t.id))||null}},actions:{setActiveElementIdList(e){1===e.length?this.handleElementId=e[0]:this.handleElementId="",this.activeElementIdList=e},setHandleElementId(e){this.handleElementId=e},setActiveGroupElementId(e){this.activeGroupElementId=e},setHiddenElementIdList(e){this.hiddenElementIdList=e},setCanvasPercentage(e){this.canvasPercentage=e},setCanvasScale(e){this.canvasScale=e},setCanvasDragged(e){this.canvasDragged=e},setThumbnailsFocus(e){this.thumbnailsFocus=e},setEditorareaFocus(e){this.editorAreaFocus=e},setDisableHotkeysState(e){this.disableHotkeys=e},setGridLineSize(e){this.gridLineSize=e},setRulerState(e){this.showRuler=e},setCreatingElement(e){this.creatingElement=e},setCreatingCustomShapeState(e){this.creatingCustomShape=e},setAvailableFonts(){this.availableFonts=E.filter((e=>U(e.value)))},setToolbarState(e){this.toolbarState=e},setClipingImageElementId(e){this.clipingImageElementId=e},setRichtextAttrs(e){this.richTextAttrs=e},setSelectedTableCells(e){this.selectedTableCells=e},setScalingState(e){this.isScaling=e},updateSelectedSlidesIndex(e){this.selectedSlidesIndex=e},setDialogForExport(e){this.dialogForExport=e},setTextFormatPainter(e){this.textFormatPainter=e},setShapeFormatPainter(e){this.shapeFormatPainter=e},setSelectPanelState(e){this.showSelectPanel=e},setSearchPanelState(e){this.showSearchPanel=e}}});var z=l(7327),P=l(8134);const B="PPTIST_DISCARDED_DB",N="PPTist",j=async()=>{const e=(new Date).getTime(),t=localStorage.getItem(B),l=t?JSON.parse(t):[],a=await P.Z.getDatabaseNames(),n=a.filter((t=>{if(-1===t.indexOf(N))return!1;const[a,n,o]=t.split("_");return a!==N||!n||!o||(!!l.includes(n)||e-+o>=432e5)}));for(const o of n)P.Z.delete(o);localStorage.removeItem(B)};class Y extends P.Z{constructor(){super(`${N}_${O}_${(new Date).getTime()}`),(0,z.Z)(this,"snapshots",void 0),(0,z.Z)(this,"writingBoardImgs",void 0),this.version(1).stores({snapshots:"++id",writingBoardImgs:"++id"}),this.snapshots=this.table("snapshots"),this.writingBoardImgs=this.table("writingBoardImgs")}}const V=new Y,J=(0,o.Q_)("snapshot",{state:()=>({snapshotCursor:-1,snapshotLength:0}),getters:{canUndo(e){return e.snapshotCursor>0},canRedo(e){return e.snapshotCursor=0&&this.snapshotCursoro&&(l.push(t[0]),n--),n>=2&&V.snapshots.update(t[n-2],{index:e.slideIndex}),await V.snapshots.bulkDelete(l),this.setSnapshotCursor(n-1),this.setSnapshotLength(n)},async unDo(){if(this.snapshotCursor<=0)return;const e=$(),t=R(),l=this.snapshotCursor-1,a=await V.snapshots.orderBy("id").toArray(),n=a[l],{index:o,slides:i}=n,s=o>i.length-1?i.length-1:o;e.setSlides(i),e.updateSlideIndex(s),this.setSnapshotCursor(l),t.setActiveElementIdList([])},async reDo(){if(this.snapshotCursor>=this.snapshotLength-1)return;const e=$(),t=R(),l=this.snapshotCursor+1,a=await V.snapshots.orderBy("id").toArray(),n=a[l],{index:o,slides:i}=n,s=o>i.length-1?i.length-1:o;e.setSlides(i),e.updateSlideIndex(s),this.setSnapshotCursor(l),t.setActiveElementIdList([])}}}),q=(0,o.Q_)("keyboard",{state:()=>({ctrlKeyState:!1,shiftKeyState:!1,spaceKeyState:!1}),getters:{ctrlOrShiftKeyActive(e){return e.ctrlKeyState||e.shiftKeyState}},actions:{setCtrlKeyState(e){this.ctrlKeyState=e},setShiftKeyState(e){this.shiftKeyState=e},setSpaceKeyState(e){this.spaceKeyState=e}}}),X=(0,o.Q_)("screen",{state:()=>({screening:!1}),actions:{setScreening(e){this.screening=e}}}),G=(e,t)=>(0,D.padStart)(""+e,t,"0"),K=()=>!navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i);var Q,ee,te,le,ae,ne,oe=l(3577);(function(e){e["UP"]="up",e["DOWN"]="down",e["TOP"]="top",e["BOTTOM"]="bottom"})(Q||(Q={})),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"}(le||(le={})),function(e){e["START"]="start",e["END"]="end",e["C"]="ctrl",e["C1"]="ctrl1",e["C2"]="ctrl2"}(ae||(ae={})),function(e){e["C"]="C",e["X"]="X",e["Z"]="Z",e["Y"]="Y",e["A"]="A",e["G"]="G",e["L"]="L",e["F"]="F",e["D"]="D",e["B"]="B",e["P"]="P",e["MINUS"]="-",e["EQUAL"]="=",e["DIGIT_0"]="0",e["DELETE"]="DELETE",e["UP"]="ARROWUP",e["DOWN"]="ARROWDOWN",e["LEFT"]="ARROWLEFT",e["RIGHT"]="ARROWRIGHT",e["ENTER"]="ENTER",e["SPACE"]=" ",e["TAB"]="TAB",e["BACKSPACE"]="BACKSPACE",e["ESC"]="ESCAPE",e["PAGEUP"]="PAGEUP",e["PAGEDOWN"]="PAGEDOWN",e["F5"]="F5"}(ne||(ne={}));const ie=[{type:"通用",children:[{label:"剪切",value:"Ctrl + X"},{label:"复制",value:"Ctrl + C"},{label:"粘贴",value:"Ctrl + V"},{label:"粘贴为纯文本",value:"Ctrl + Shift + V"},{label:"快速复制粘贴",value:"Ctrl + D"},{label:"全选",value:"Ctrl + A"},{label:"撤销",value:"Ctrl + Z"},{label:"恢复",value:"Ctrl + Y"},{label:"删除",value:"Delete / Backspace"},{label:"多选",value:"按住 Ctrl 或 Shift"},{label:"打开搜索替换",value:"Ctrl + F"},{label:"打印",value:"Ctrl + P"},{label:"关闭弹窗",value:"ESC"}]},{type:"幻灯片放映",children:[{label:"从头开始放映幻灯片",value:"F5"},{label:"从当前开始放映幻灯片",value:"Shift + F5"},{label:"切换上一页",value:"↑ / ← / PgUp"},{label:"切换下一页",value:"↓ / → / PgDown"},{label:"切换下一页",value:"Enter / Space"},{label:"退出放映",value:"ESC"}]},{type:"幻灯片编辑",children:[{label:"新建幻灯片",value:"Enter"},{label:"移动画布",value:"Space + 鼠标拖拽"},{label:"缩放画布",value:"Ctrl + 鼠标滚轮"},{label:"放大画布",value:"Ctrl + ="},{label:"缩小画布",value:"Ctrl + -"},{label:"使画布适应当前屏幕",value:"Ctrl + 0"},{label:"上一页(未选中元素)",value:"↑ / ←"},{label:"下一页(未选中元素)",value:"↓ / →"},{label:"上一页",value:"鼠标上滚 / PgUp"},{label:"下一页",value:"鼠标下滚 / PgDown"}]},{type:"元素操作",children:[{label:"移动",value:"↑ / ← / ↓ / →"},{label:"锁定",value:"Ctrl + L"},{label:"组合",value:"Ctrl + G"},{label:"取消组合",value:"Ctrl + Shift + G"},{label:"置顶层",value:"Alt + F"},{label:"置底层",value:"Alt + B"},{label:"锁定宽高比例",value:"按住 Ctrl 或 Shift"},{label:"创建水平 / 垂直线条",value:"按住 Ctrl 或 Shift"},{label:"切换焦点元素",value:"Tab"},{label:"确认图片裁剪",value:"Enter"},{label:"完成自定义形状绘制",value:"Enter"}]},{type:"表格编辑",children:[{label:"聚焦到下一个单元格",value:"Tab"},{label:"在上方插入一行",value:"Ctrl + ↑"},{label:"在下方插入一行",value:"Ctrl + ↓"},{label:"在左侧插入一列",value:"Ctrl + ←"},{label:"在右侧插入一列",value:"Ctrl + →"}]},{type:"图表数据编辑",children:[{label:"聚焦到下一行",value:"Enter"}]},{type:"文本编辑",children:[{label:"加粗",value:"Ctrl + B"},{label:"斜体",value:"Ctrl + I"},{label:"下划线",value:"Ctrl + U"},{label:"行内代码",value:"Ctrl + E"},{label:"上角标",value:"Ctrl + ;"},{label:"下角标",value:"Ctrl + '"},{label:"选中段落",value:"ESC"}]}];var se=l(2152),re=l.n(se),ue=l(1354),ce=l.n(ue);const de="pptist",pe=e=>ce().AES.encrypt(e,de).toString(),ve=e=>{const t=ce().AES.decrypt(e,de);return t.toString(ce().enc.Utf8)},me=e=>new Promise(((t,l)=>{const a=document.createElement("button"),n=new(re())(a,{text:()=>e,action:()=>"copy",container:document.body});n.on("success",(e=>{n.destroy(),t(e)})),n.on("error",(e=>{n.destroy(),l(e)})),document.body.appendChild(a),a.click(),document.body.removeChild(a)})),he=()=>new Promise(((e,t)=>{navigator.clipboard?.readText?navigator.clipboard.readText().then((l=>(l||t("剪贴板为空或者不包含文本"),e(l)))):t("浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V")})),fe=e=>{let t;try{t=JSON.parse(ve(e))}catch{t=e}return t},ge=e=>{const t=e.split("\r\n");""===t[t.length-1]&&t.pop();let l=-1;const a=[];for(const n in t){if(a[n]=t[n].split("\t"),1===a[n].length)return null;if(-1===l)l=a[n].length;else if(l!==a[n].length)return null}return a},ye=e=>{const{left:t,top:l,width:a,height:n,rotate:o=0}=e,i=Math.sqrt(Math.pow(a,2)+Math.pow(n,2))/2,s=180*Math.atan(n/a)/Math.PI,r=(180-o-s)*Math.PI/180,u=(s-o)*Math.PI/180,c=t+a/2,d=l+n/2,p=[c+i*Math.cos(r),c+i*Math.cos(u),c-i*Math.cos(r),c-i*Math.cos(u)],v=[d-i*Math.sin(r),d-i*Math.sin(u),d+i*Math.sin(r),d+i*Math.sin(u)];return{xRange:[Math.min(...p),Math.max(...p)],yRange:[Math.min(...v),Math.max(...v)]}},we=e=>{const{xRange:t,yRange:l}=ye({left:e.left,top:e.top,width:e.width,height:e.height,rotate:0}),{xRange:a,yRange:n}=ye({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});return{offsetX:a[0]-t[0],offsetY:n[0]-l[0]}},xe=e=>{let t,l,a,n;if("line"===e.type)t=e.left,l=e.left+Math.max(e.start[0],e.end[0]),a=e.top,n=e.top+Math.max(e.start[1],e.end[1]);else if("rotate"in e&&e.rotate){const{left:o,top:i,width:s,height:r,rotate:u}=e,{xRange:c,yRange:d}=ye({left:o,top:i,width:s,height:r,rotate:u});t=c[0],l=c[1],a=d[0],n=d[1]}else t=e.left,l=e.left+e.width,a=e.top,n=e.top+e.height;return{minX:t,maxX:l,minY:a,maxY:n}},ke=e=>{const t=[],l=[],a=[],n=[];e.forEach((e=>{const{minX:o,maxX:i,minY:s,maxY:r}=xe(e);t.push(o),l.push(s),a.push(i),n.push(r)}));const o=Math.min(...t),i=Math.max(...a),s=Math.min(...l),r=Math.max(...n);return{minX:o,maxX:i,minY:s,maxY:r}},be=e=>{const t=[];return e.forEach((e=>{const l=t.findIndex((t=>t.value===e.value));if(-1===l)t.push(e);else{const a=t[l],n=Math.min(a.range[0],e.range[0]),o=Math.max(a.range[1],e.range[1]),i=[n,o],s={value:e.value,range:i};t[l]=s}})),t},_e=e=>{const t={};for(const l of e)t[l.id]=(0,r.x0)(10);return t},Ie=e=>{const t={},l={};for(const a of e){const e=a.groupId;e&&!t[e]&&(t[e]=(0,r.x0)(10)),l[a.id]=(0,r.x0)(10)}return{groupIdMap:t,elIdMap:l}},Se=e=>{const t=(0,W.Z)(e);return[t.setAlpha(.3).toRgbString(),t.setAlpha(.1).toRgbString()]},Ce=e=>{const t=e.start.join(","),l=e.end.join(",");if(e.broken){const a=e.broken.join(",");return`M${t} L${a} L${l}`}if(e.curve){const a=e.curve.join(",");return`M${t} Q${a} ${l}`}if(e.cubic){const[a,n]=e.cubic,o=a.join(","),i=n.join(",");return`M${t} C${o} ${i} ${l}`}return`M${t} L${l}`},Le=(e,t)=>{const l=e.getBoundingClientRect(),a=t.getBoundingClientRect();return l.top>=a.top&&l.bottom<=a.bottom};var Te=l(6108),Ee=l(1061),Me=l(8261),Ue=l(9512),We=l(2025),De=l(9872),He=l(1321),Fe=l(2696),Ae=l(3271),$e=l(9015),Ze=l(5761),Oe=l(7559),Re=l(4023),ze=l(4141),Pe=l(5010),Be=l(6492),Ne=l(1094),je=l(2677),Ye=l(683),Ve=l(7259),Je=l(1258),qe=l(9978),Xe=l(597),Ge=l(85),Ke=l(6071),Qe=l(2489),et=l(9925),tt=l(5361),lt=l(3185),at=l(139),nt=l(8461),ot=l(2882),it=l(3862),st=l(3764),rt=l(9371),ut=l(9912),ct=l(3935),dt=l(3735),pt=l(3542),vt=l(7537),mt=l(5314),ht=l(3325),ft=l(3275),gt=l(3317),yt=l(7712),wt=l(9370),xt=l(2778),kt=l(4422),bt=l(4957),_t=l(7872),It=l(5356),St=l(8684),Ct=l(9577),Lt=l(887),Tt=l(6866),Et=l(509),Mt=l(7606),Ut=l(4412),Wt=l(8814),Dt=l(2057),Ht=l(6048),Ft=l(5114),At=l(9917),$t=l(7747),Zt=l(7425),Ot=l(6717),Rt=l(6302),zt=l(3060),Pt=l(7107),Bt=l(2100),Nt=l(5460),jt=l(5268),Yt=l(1432),Vt=l(5193),Jt=l(4566),qt=l(7091),Xt=l(9602),Gt=l(4891),Kt=l(4012),Qt=l(3681),el=l(1440),tl=l(3482),ll=l(646),al=l(8e3),nl=l(4628),ol=l(9141),il=l(1060),sl=l(8389),rl=l(3467),ul=l(6935),cl=l(3590),dl=l(6453),pl=l(5957),vl=l(4467),ml=l(5547),hl=l(5650),fl=l(2790),gl=l(5620),yl=l(3339),wl=l(4666),xl=l(5215),kl=l(904),bl=l(3650),_l=l(4296),Il=l(6519),Sl=l(4790),Cl=l(3260),Ll=l(2146),Tl=l(6755),El=l(2849),Ml=l(6940),Ul=l(6116),Wl=l(5741),Dl=l(2939),Hl=l(9524),Fl=l(6135),Al=l(6821),$l=l(6149);const Zl={IconPlayOne:$l.Z,IconFullScreenPlay:Al.Z,IconLock:Fl.Z,IconUnlock:Hl.Z,IconPpt:Dl.Z,IconFormat:Wl.Z,IconPicture:Ul.Z,IconFullScreen:Ml.Z,IconList:El.Z,IconOrderedList:Tl.Z,IconFlipVertically:Ll.Z,IconFlipHorizontally:Cl.Z,IconFontSize:Sl.Z,IconCode:Il.Z,IconTextBold:_l.Z,IconTextItalic:bl.Z,IconTextUnderline:kl.Z,IconStrikethrough:xl.Z,IconEdit:wl.Z,IconQuote:yl.Z,IconBackgroundColor:gl.Z,IconGroup:fl.Z,IconUngroup:hl.Z,IconBack:ml.Z,IconNext:vl.Z,IconFullwidth:pl.Z,IconAlignTop:dl.Z,IconAlignLeft:cl.Z,IconAlignRight:ul.Z,IconAlignBottom:rl.Z,IconAlignVertically:sl.Z,IconAlignHorizontally:il.Z,IconBringToFront:ol.Z,IconSendToBack:nl.Z,IconAlignTextLeft:al.Z,IconAlignTextRight:ll.Z,IconAlignTextCenter:tl.Z,IconAlignTextBoth:el.Z,IconRowHeight:Qt.Z,IconWrite:Kt.Z,IconInsertTable:Gt.Z,IconAddText:Xt.Z,IconFill:qt.Z,IconTailoring:Jt.Z,IconEffects:Vt.Z,IconColorFilter:Yt.Z,IconUp:jt.Z,IconDown:Nt.Z,IconPlus:Bt.Z,IconMinus:Pt.Z,IconConnection:zt.Z,IconBringToFrontOne:Rt.Z,IconSentToBack:Ot.Z,IconGithub:Zt.Z,IconChartProportion:$t.Z,IconChartHistogram:At.Z,IconChartHistogramOne:Ft.Z,IconChartLineArea:Ht.Z,IconChartRing:Dt.Z,IconChartScatter:Wt.Z,IconChartLine:Ut.Z,IconChartPie:Mt.Z,IconText:Et.Z,IconRotate:Tt.Z,IconLeftTwo:Lt.Z,IconRightTwo:Ct.Z,IconPlatte:St.Z,IconClose:It.Z,IconCloseSmall:_t.Z,IconUndo:bt.Z,IconTransform:kt.Z,IconClick:xt.Z,IconTheme:wt.Z,IconArrowCircleLeft:yt.Z,IconGraphicDesign:gt.Z,IconLogout:ft.Z,IconErase:ht.Z,IconClear:mt.Z,IconAlignTextTopOne:vt.Z,IconAlignTextBottomOne:pt.Z,IconAlignTextMiddleOne:dt.Z,IconPause:ct.Z,IconVolumeMute:ut.Z,IconVolumeNotice:rt.Z,IconVolumeSmall:st.Z,IconVideoTwo:it.Z,IconFormula:ot.Z,IconLinkOne:nt.Z,IconFullScreenOne:at.Z,IconOffScreenOne:lt.Z,IconPower:tt.Z,IconListView:et.Z,IconMagic:Qe.Z,IconHighLight:Ke.Z,IconDownload:Ge.Z,IconIndentLeft:Xe.Z,IconIndentRight:qe.Z,IconVerticalSpacingBetweenItems:Je.Z,IconCopy:Ve.Z,IconDelete:Ye.Z,IconSquare:je.Z,IconRound:Ne.Z,IconNeedle:Be.Z,IconTextRotationNone:Pe.Z,IconTextRotationDown:ze.Z,IconFormatBrush:Re.Z,IconPreviewOpen:Oe.Z,IconPreviewClose:Ze.Z,IconStopwatchStart:$e.Z,IconSearch:Ae.Z,IconLeft:Fe.Z,IconRight:He.Z,IconMoveOne:De.Z,IconHamburgerButton:We.Z,IconAttention:Ue.Z,IconCheckOne:Me.Z,IconCloseOne:Ee.Z,IconInfo:Te.Z};var Ol={install(e){for(const t of Object.keys(Zl))e.component(t,Zl[t])}};const Rl=["id"],zl={class:"icons"},Pl={class:"content"},Bl={key:0,class:"title"},Nl={class:"description"},jl={key:0,class:"control"};var Yl=(0,i.aZ)({__name:"Message",props:{id:{},message:{},type:{default:"success"},title:{default:""},duration:{default:3e3},closable:{type:Boolean,default:!1}},emits:["close","destroy"],setup(e,{expose:t,emit:l}){const{IconAttention:a,IconCheckOne:o,IconCloseOne:r,IconInfo:u,IconCloseSmall:c}=Zl,d=e,p=l,v=(0,s.iH)(!0),m=(0,s.iH)(null),h=()=>{d.duration<=0||(m.value=setTimeout(g,d.duration))},f=()=>{m.value&&clearTimeout(m.value)},g=()=>v.value=!1;return(0,i.wF)((()=>{f()})),(0,i.bv)((()=>{h()})),t({close:g}),(e,t)=>((0,i.wg)(),(0,i.j4)(n.uT,{name:"message-fade",appear:"",mode:"in-out",onBeforeLeave:t[3]||(t[3]=e=>p("close")),onAfterLeave:t[4]||(t[4]=e=>p("destroy"))},{default:(0,i.w5)((()=>[v.value?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"message",id:e.id},[(0,i._)("div",{class:"message-container",onMouseenter:t[1]||(t[1]=e=>f()),onMouseleave:t[2]||(t[2]=e=>h())},[(0,i._)("div",zl,["warning"===e.type?((0,i.wg)(),(0,i.j4)((0,s.SU)(a),{key:0,theme:"filled",size:"18",fill:"#faad14"})):(0,i.kq)("",!0),"success"===e.type?((0,i.wg)(),(0,i.j4)((0,s.SU)(o),{key:1,theme:"filled",size:"18",fill:"#52c41a"})):(0,i.kq)("",!0),"error"===e.type?((0,i.wg)(),(0,i.j4)((0,s.SU)(r),{key:2,theme:"filled",size:"18",fill:"#ff4d4f"})):(0,i.kq)("",!0),"info"===e.type?((0,i.wg)(),(0,i.j4)((0,s.SU)(u),{key:3,theme:"filled",size:"18",fill:"#1677ff"})):(0,i.kq)("",!0)]),(0,i._)("div",Pl,[e.title?((0,i.wg)(),(0,i.iD)("div",Bl,(0,oe.zw)(e.title),1)):(0,i.kq)("",!0),(0,i._)("div",Nl,(0,oe.zw)(e.message),1)]),e.closable?((0,i.wg)(),(0,i.iD)("div",jl,[(0,i._)("span",{class:"close-btn",onClick:t[0]||(t[0]=e=>g())},[(0,i.Wm)((0,s.SU)(c))])])):(0,i.kq)("",!0)],32)],8,Rl)):(0,i.kq)("",!0)])),_:1}))}}),Vl=l(3744);const Jl=(0,Vl.Z)(Yl,[["__scopeId","data-v-03d14766"]]);var ql=Jl;const Xl=[];let Gl=null,Kl=0;const Ql={duration:3e3},ea=e=>{const t="message-"+Kl++,l={...Ql,...e,id:t};Gl||(Gl=document.createElement("div"),Gl.className="message-wrap",Gl.style.cssText="\n width: 100%;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 6000;\n pointer-events: none;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: 15px;\n background-color: rgba(255, 255, 255, 0);\n transition: all 1s ease-in-out;\n align-items: center;\n ",document.body.appendChild(Gl));const a=(0,i.Wm)(ql,l,null),o=document.createElement("div");a.appContext=e.ctx||ea._context||null,a.props.onClose=e.onClose,a.props.onDestroy=()=>{Gl&&Gl.childNodes.length<=1&&(Gl.remove(),Gl=null),(0,n.sY)(null,o)},(0,n.sY)(a,o),Gl.appendChild(o.firstElementChild);const s={id:t,close:()=>a?.component?.exposed?.close()};return Xl.push(s),s};ea.success=(e,t)=>ea({...t,type:"success",message:e}),ea.info=(e,t)=>ea({...t,type:"info",message:e}),ea.warning=(e,t)=>ea({...t,type:"warning",message:e}),ea.error=(e,t)=>ea({...t,type:"error",message:e}),ea.closeAll=function(){for(let e=Xl.length-1;e>=0;e--)Xl[e].close()};var ta=ea;const la=e=>{const t=e.replace(/[\n\r]+/g,"
"),l=t.split("
");let a="";for(const n of l)n&&(a+=`
${n}
`);return a},aa=e=>new Promise((t=>{const l=document.createElement("img");l.src=e,l.style.opacity="0",document.body.appendChild(l),l.onload=()=>{const e=l.clientWidth,a=l.clientHeight;l.onload=null,l.onerror=null,document.body.removeChild(l),t({width:e,height:a})},l.onerror=()=>{l.onload=null,l.onerror=null}})),na=e=>new Promise((t=>{const l=new FileReader;l.addEventListener("load",(()=>{t(l.result)})),l.readAsDataURL(e)})),oa=1e3;var ia,sa;(function(e){e["ROUND_RECT"]="roundRect",e["ROUND_RECT_DIAGONAL"]="roundRectDiagonal",e["ROUND_RECT_SINGLE"]="roundRectSingle",e["ROUND_RECT_SAMESIDE"]="roundRectSameSide",e["CUT_RECT_DIAGONAL"]="cutRectDiagonal",e["CUT_RECT_SINGLE"]="cutRectSingle",e["CUT_RECT_SAMESIDE"]="cutRectSameSide",e["CUT_ROUND_RECT"]="cutRoundRect",e["MESSAGE"]="message",e["ROUND_MESSAGE"]="roundMessage",e["L"]="L",e["RING_RECT"]="ringRect",e["PLUS"]="plus",e["TRIANGLE"]="triangle",e["PARALLELOGRAM_LEFT"]="parallelogramLeft",e["PARALLELOGRAM_RIGHT"]="parallelogramRight",e["TRAPEZOID"]="trapezoid",e["BULLET"]="bullet",e["INDICATOR"]="indicator"})(ia||(ia={})),function(e){e["TEXT"]="text",e["IMAGE"]="image",e["SHAPE"]="shape",e["LINE"]="line",e["CHART"]="chart",e["TABLE"]="table",e["LATEX"]="latex",e["VIDEO"]="video",e["AUDIO"]="audio"}(sa||(sa={}));const ra={[ia.ROUND_RECT]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M ${a} 0 L ${e-a} 0 Q ${e} 0 ${e} ${a} L ${e} ${t-a} Q ${e} ${t} ${e-a} ${t} L ${a} ${t} Q 0 ${t} 0 ${t-a} L 0 ${a} Q 0 0 ${a} 0 Z`}},[ia.CUT_RECT_DIAGONAL]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 ${t-a} L 0 0 L ${e-a} 0 L ${e} ${a} L ${e} ${t} L ${a} ${t} Z`}},[ia.CUT_RECT_SINGLE]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 ${t} L 0 0 L ${e-a} 0 L ${e} ${a} L ${e} ${t} Z`}},[ia.CUT_RECT_SAMESIDE]:{editable:!0,defaultValue:.2,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 ${a} L ${a} 0 L ${e-a} 0 L ${e} ${a} L ${e} ${t} L 0 ${t} Z`}},[ia.ROUND_RECT_DIAGONAL]:{editable:!0,defaultValue:.125,range:[0,1],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M ${a} 0 L ${e} 0 L ${e} ${t-a} Q ${e} ${t} ${e-a} ${t} L 0 ${t} L 0 ${a} Q 0 0 ${a} 0 Z`}},[ia.ROUND_RECT_SINGLE]:{editable:!0,defaultValue:.125,range:[0,1],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 0 L ${e-a} 0 Q ${e} 0 ${e} ${a} L ${e} ${t} L 0 ${t} L 0 0 Z`}},[ia.ROUND_RECT_SAMESIDE]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 ${a} Q 0 0 ${a} 0 L ${e-a} 0 Q ${e} 0 ${e} ${a} L ${e} ${t} L 0 ${t} Z`}},[ia.CUT_ROUND_RECT]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M ${a} 0 L ${e-a} 0 L ${e} ${a} L ${e} ${t} L 0 ${t} L 0 ${a} Q 0 0 ${a} 0 Z`}},[ia.MESSAGE]:{formula:(e,t)=>{const l=.2*e,a=.2*t;return`M 0 0 L ${e} 0 L ${e} ${t-a} L ${e/2} ${t-a} L ${e/2-l} ${t} L ${e/2-l} ${t-a} L 0 ${t-a} Z`}},[ia.ROUND_MESSAGE]:{formula:(e,t)=>{const l=.125*Math.min(e,t),a=.2*e,n=.2*t;return`M 0 ${l} Q 0 0 ${l} 0 L ${e-l} 0 Q ${e} 0 ${e} ${l} L ${e} ${t-l-n} Q ${e} ${t-n} ${e-l} ${t-n} L ${e/2} ${t-n} L ${e/2-a} ${t} L ${e/2-a} ${t-n} L ${l} ${t-n} Q 0 ${t-n} 0 ${t-l-n} L 0 ${l} Z`}},[ia.L]:{editable:!0,defaultValue:.25,range:[.1,.9],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 0 L 0 ${t} L ${e} ${t} L ${e} ${t-a} L ${a} ${t-a} L ${a} 0 Z`}},[ia.RING_RECT]:{editable:!0,defaultValue:.25,range:[.1,.45],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 0 ${e} 0 ${e} ${t} L 0 ${t} L 0 0 Z M ${a} ${a} L ${a} ${t-a} L ${e-a} ${t-a} L ${e-a} ${a} Z`}},[ia.PLUS]:{editable:!0,defaultValue:.25,range:[.1,.9],relative:"center",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M ${e/2-a/2} 0 L ${e/2-a/2} ${t/2-a/2} L 0 ${t/2-a/2} L 0 ${t/2+a/2} L ${e/2-a/2} ${t/2+a/2} L ${e/2-a/2} ${t} L ${e/2+a/2} ${t} L ${e/2+a/2} ${t/2+a/2} L ${e} ${t/2+a/2} L ${e} ${t/2-a/2} L ${e/2+a/2} ${t/2-a/2} L ${e/2+a/2} 0 Z`}},[ia.TRIANGLE]:{editable:!0,defaultValue:.5,range:[0,1],relative:"left",getBaseSize:e=>e,formula:(e,t,l)=>{const a=e*l;return`M ${a} 0 L 0 ${t} L ${e} ${t} Z`}},[ia.PARALLELOGRAM_LEFT]:{editable:!0,defaultValue:.25,range:[0,.9],relative:"left",getBaseSize:e=>e,formula:(e,t,l)=>{const a=e*l;return`M ${a} 0 L ${e} 0 L ${e-a} ${t} L 0 ${t} Z`}},[ia.PARALLELOGRAM_RIGHT]:{editable:!0,defaultValue:.25,range:[0,.9],relative:"right",getBaseSize:e=>e,formula:(e,t,l)=>{const a=e*l;return`M 0 0 L ${e-a} 0 L ${e} ${t} L ${a} ${t} Z`}},[ia.TRAPEZOID]:{editable:!0,defaultValue:.25,range:[0,.5],relative:"left",getBaseSize:e=>e,formula:(e,t,l)=>{const a=e*l;return`M ${a} 0 L ${e-a} 0 L ${e} ${t} L 0 ${t} Z`}},[ia.BULLET]:{editable:!0,defaultValue:.2,range:[0,1],relative:"top",getBaseSize:(e,t)=>t,formula:(e,t,l)=>{const a=t*l;return`M ${e/2} 0 L 0 ${a} L 0 ${t} L ${e} ${t} L ${e} ${a} Z`}},[ia.INDICATOR]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:e=>e,formula:(e,t,l)=>{const a=e*l;return`M ${e} ${t/2} L ${e-a} 0 L 0 0 L ${a} ${t/2} L 0 ${t} L ${e-a} ${t} Z`}}},ua=[{type:"矩形",children:[{viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",pptxShapeType:"rect"},{viewBox:[200,200],path:"M 50 0 L 150 0 Q 200 0 200 50 L 200 150 Q 200 200 150 200 L 50 200 Q 0 200 0 150 L 0 50 Q 0 0 50 0 Z",pathFormula:ia.ROUND_RECT,pptxShapeType:"roundRect"},{viewBox:[200,200],path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z",pathFormula:ia.CUT_RECT_SINGLE,pptxShapeType:"snip1Rect"},{viewBox:[200,200],path:"M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 Z",pathFormula:ia.CUT_RECT_SAMESIDE,pptxShapeType:"snip2SameRect"},{viewBox:[200,200],path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 Z",pathFormula:ia.CUT_RECT_DIAGONAL,pptxShapeType:"snip2DiagRect"},{viewBox:[200,200],path:"M 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Q 0 0 50 0 Z",pathFormula:ia.CUT_ROUND_RECT,pptxShapeType:"snipRoundRect"},{viewBox:[200,200],path:"M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 0 Z",pathFormula:ia.ROUND_RECT_SINGLE,pptxShapeType:"round1Rect"},{viewBox:[200,200],path:"M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 Z",pathFormula:ia.ROUND_RECT_SAMESIDE,pptxShapeType:"round2SameRect"},{viewBox:[200,200],path:"M 50 0 L 200 0 L 200 150 Q 200 200 150 200 L 0 200 L 0 50 Q 0 0 50 0 Z",pathFormula:ia.ROUND_RECT_DIAGONAL,pptxShapeType:"round2DiagRect"},{viewBox:[200,200],path:"M 0 80 L 60 0 L 100 40 L 180 20 L 200 120 L 160 200 L 0 200 L 60 140 Z",title:"任意多边形"}]},{type:"常用形状",children:[{viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",pptxShapeType:"ellipse"},{viewBox:[200,200],path:"M 100 0 L 0 200 L 200 200 L 100 0 Z",pathFormula:ia.TRIANGLE,pptxShapeType:"triangle"},{viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:[200,200],path:"M 70 20 L 0 160 Q 0 200 40 200 L 160 200 Q 200 200 200 160 L 130 20 Q 100 -20 70 20 Z"},{viewBox:[200,200],path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z",pathFormula:ia.PARALLELOGRAM_LEFT,pptxShapeType:"parallelogram"},{viewBox:[200,200],path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z",pathFormula:ia.PARALLELOGRAM_RIGHT},{viewBox:[200,200],path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z",pathFormula:ia.TRAPEZOID,pptxShapeType:"trapezoid"},{viewBox:[200,200],path:"M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z",pptxShapeType:"diamond"},{viewBox:[200,200],path:"M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z",pathFormula:ia.BULLET},{viewBox:[200,200],path:"M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z",pathFormula:ia.INDICATOR},{viewBox:[200,200],path:"M 0 0 C 80 20 120 20 200 0 C 180 80 180 120 200 200 C 80 180 120 180 0 200 C 20 120 20 80 0 0 Z"},{viewBox:[200,200],path:"M 10 10 C 60 0 140 0 190 10 C 200 60 200 140 190 190 C 140 200 60 200 10 190 C 0 140 0 60 10 10 Z"},{viewBox:[200,200],path:"M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z"},{viewBox:[200,200],path:"M 40 20 A 100 100 0 1 0 200 100 L 100 100 L 40 20 Z"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z",pptxShapeType:"pie"},{viewBox:[200,200],path:"M 160 20 A 100 100 0 1 0 200 100 L 100 100 L 160 20 Z"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z",pptxShapeType:"chord"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z",pptxShapeType:"teardrop"},{viewBox:[200,200],path:"M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z"},{viewBox:[200,200],path:"M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z",pptxShapeType:"pentagon"},{viewBox:[200,200],path:"M 40 0 L 160 0 L 200 100 L 160 200 L 40 200 L 0 100 Z",pptxShapeType:"hexagon"},{viewBox:[200,200],path:"M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z"},{viewBox:[200,200],path:"M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z",pptxShapeType:"octagon"},{viewBox:[200,200],path:"M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z"},{viewBox:[200,200],path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z"},{viewBox:[200,200],path:"M 50 0 A 25 50 0 1 0 50 200 L 150 200 A 25 50 0 1 0 150 0 L 50 0 Z"},{viewBox:[200,200],path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z"},{viewBox:[200,200],path:"M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z"},{viewBox:[200,200],path:"M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z"},{viewBox:[200,200],path:"M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z"},{viewBox:[200,200],path:"M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z"},{viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z",pathFormula:ia.L},{viewBox:[200,200],path:"M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z",pathFormula:ia.RING_RECT},{viewBox:[200,200],path:"M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z"},{viewBox:[200,200],path:"M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z",pathFormula:ia.PLUS},{viewBox:[200,200],path:"M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z"},{viewBox:[200,200],path:"M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 Z",pathFormula:ia.MESSAGE},{viewBox:[200,200],path:"M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z",pathFormula:ia.ROUND_MESSAGE},{viewBox:[200,200],path:"M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z"},{viewBox:[200,200],path:"M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z"},{viewBox:[200,200],path:"M 0 20 C 60 60 140 -40 200 20 L 200 180 C 140 140 60 240 0 180 L 0 20 Z"},{viewBox:[200,200],path:"M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z"},{viewBox:[200,200],path:"M 100 0 Q 0 50 0 175 Q 100 225 200 175 Q 200 50 100 0 Z"},{viewBox:[200,200],path:"M 0 100 A 50 50 0 1 1 200 100 L 100 200 L 0 100 Z"},{viewBox:[200,200],path:"M 100 0 L 120 80 L 200 100 L 120 120 L 100 200 L 80 120 L 0 100 L 80 80 L 100 0 Z",pptxShapeType:"star4"},{viewBox:[1024,1024],path:"M1018.67652554 400.05983681l-382.95318779-5.89158658L512 34.78141155 388.27666225 394.16825023l-382.95318779 5.89158658L311.68602415 629.83174977l-117.83174978 365.27842665 312.25413766-223.88032637 312.25413904 223.88032637-117.83175116-365.27842665 318.14572563-229.77191296z",pptxShapeType:"star5",special:!0},{viewBox:[200,200],path:"M 100 0 L 60 60 L 0 100 L 60 140 L 100 200 L 140 140 L 200 100 L 140 60 L 100 0 Z"},{viewBox:[200,200],path:"M 100 0 L 140 60 L 200 60 L 160 100 L 200 140 L 140 140 L 100 200 L 60 140 L 0 140 L 40 100 L 0 60 L 60 60 L 100 0 Z",pptxShapeType:"star6"},{viewBox:[200,200],path:"M 100 0 L 80 40 L 20 20 L 40 80 L 0 100 L 40 120 L 20 180 L 80 160 L 100 200 L 120 160 L 180 180 L 160 120 L 200 100 L 160 80 L 180 20 L 120 40 L 100 0 Z"},{viewBox:[200,200],path:"M 200 0 C 80 40 80 160 200 200 C -60 200 -60 0 200 0 Z"}]},{type:"箭头",children:[{viewBox:[200,200],path:"M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z",pptxShapeType:"upArrow"},{viewBox:[200,200],path:"M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z",pptxShapeType:"downArrow"},{viewBox:[200,200],path:"M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z",pptxShapeType:"leftArrow"},{viewBox:[200,200],path:"M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z",pptxShapeType:"rightArrow"},{viewBox:[200,200],path:"M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z",pptxShapeType:"upDownArrow"},{viewBox:[200,200],path:"M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z",pptxShapeType:"leftRightArrow"},{viewBox:[200,200],path:"M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z"},{viewBox:[200,200],path:"M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:[200,200],path:"M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z",pptxShapeType:"notchedRightArrow"},{viewBox:[200,200],path:"M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z"},{viewBox:[200,200],path:"M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z"},{viewBox:[200,200],path:"M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z",pptxShapeType:"chevron"},{viewBox:[200,200],path:"M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z"},{viewBox:[200,200],path:"M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z",pptxShapeType:"homePlate"},{viewBox:[200,200],path:"M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z"},{viewBox:[200,200],path:"M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z"},{viewBox:[200,200],path:"M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z"},{viewBox:[200,200],path:"M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z"},{viewBox:[200,200],path:"M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z"},{viewBox:[200,200],path:"M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z"},{viewBox:[200,200],path:"M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z"},{viewBox:[200,200],path:"M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z"},{viewBox:[1024,1024],path:"M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z",special:!0},{viewBox:[1024,1024],path:"M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z",special:!0}]},{type:"其他形状",children:[{viewBox:[1024,1024],path:"M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z",special:!0},{viewBox:[1024,1024],path:"M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z",special:!0},{viewBox:[1024,1024],path:"M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z",special:!0},{viewBox:[1024,1024],path:"M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z",special:!0},{viewBox:[1024,1024],path:"M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z",special:!0},{viewBox:[1024,1024],path:"M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z",special:!0},{viewBox:[1024,1024],path:"M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z",special:!0},{viewBox:[1024,1024],path:"M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z",special:!0},{viewBox:[1024,1024],path:"M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z",special:!0},{viewBox:[1024,1024],path:"M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z",special:!0},{viewBox:[1024,1024],path:"M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z",special:!0},{viewBox:[1024,1024],path:"M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z",special:!0},{viewBox:[1024,1024],path:"M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z",special:!0},{viewBox:[1024,1024],path:"M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z",special:!0},{viewBox:[1024,1024],path:"M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z",special:!0},{viewBox:[1024,1024],path:"M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z",special:!0},{viewBox:[1024,1024],path:"M997.8886764 504.17210418L537.2729208 43.89182982c-13.97838539-13.97838539-36.56745619-13.97838539-50.5458416 0L26.1113236 504.17210418c-13.41924998 13.41924998-21.02349164 31.64706454-21.02349163 50.65766867 0 39.47496036 32.09437288 71.56933323 71.56933324 71.56933323h48.53295408V954.83524937c0 19.79339373 15.99127289 35.78466661 35.78466663 35.78466662H440.43066677V740.12724968h125.24633315v250.49266631h297.34821416c19.79339373 0 35.78466661-15.99127289 35.78466663-35.78466662V626.39910608h48.53295408c19.01060414 0 37.23841869-7.49241457 50.65766869-21.02349163 27.84494371-27.95677079 27.84494371-73.24673948-0.11182708-101.20351027z",special:!0},{viewBox:[1024,1024],path:"M1009.13013121 349.27572283L674.72427717 14.86986879c-8.82158299-8.82158299-20.35749924-13.16451618-31.89341544-13.16451618s-23.07183245 4.34293316-31.89341547 13.16451618L392.29790453 233.6451272c-16.5574327-1.90003326-33.25058207-2.71433322-49.94373146-2.71433324-99.34459624 0-198.68919249 32.70771543-280.25490606 98.12314628-20.90036589 16.69314938-22.52896582 48.04369819-3.66434987 67.04403081l246.59717401 246.59717401-292.33368895 292.06225564c-3.52863319 3.52863319-5.83581644 8.27871636-6.24296642 13.30023282l-4.61436649 50.48659809c-1.22144996 12.75736619 8.95729967 23.6146991 21.57894918 23.6146991 0.6785833 0 1.35716662 0 2.03574992-0.13571666l50.48659809-4.61436649c5.02151649-0.40714999 9.77159962-2.71433322 13.30023282-6.24296643l292.33368896-292.33368896 246.59717402 246.59717401c8.82158299 8.82158299 20.35749924 13.16451618 31.89341544 13.16451618 13.16451618 0 26.19331567-5.70009979 35.15061536-16.82886604 76.40848044-95.40881307 108.16617924-214.83947521 95.27309638-330.33435417l218.63954175-218.63954173c17.50744934-17.37173267 17.50744934-45.8722316 0-63.51539759z",special:!0},{viewBox:[1024,1024],path:"M976.62005979 160.47737905c-0.39452595-0.39452595-80.35178503 78.64217259-239.47725131 237.50462156l-111.6508437-111.65084369 237.89914752-237.89914752c-125.19623464-75.35445635-286.03131335-56.02268482-390.31767264 48.26367449-81.92988882 81.92988882-112.57140424 200.15616502-83.37648398 310.09739626l2.36715569 8.81107954-372.82702222 372.69551356c-8.15353628 8.15353628-8.15353628 21.56741857 0 29.72095487l185.95323084 185.95323084c8.15353628 8.15353628 21.56741857 8.15353628 29.72095485 0l372.56400493-372.56400493 8.81107953 2.3671557c110.07273989 29.32642892 228.29901608-1.18357785 310.36041356-83.24497533 104.41786795-104.2863593 123.74963948-265.12143802 49.97328693-390.05465535z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m220.16 343.26755556l-239.616 332.23111111c-14.44977778 20.13866667-44.37333333 20.13866667-58.82311111 0L291.84 481.16622222c-4.32355555-6.03022222 0-14.44977778 7.39555555-14.44977777h53.36177778c11.60533333 0 22.64177778 5.57511111 29.46844445 15.13244444l81.00977777 112.41244444 178.85866667-248.03555555c6.82666667-9.44355555 17.74933333-15.13244445 29.46844445-15.13244445H724.76444445c7.39555555 0 11.71911111 8.41955555 7.39555555 14.44977778z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m218.45333333 537.03111112c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222H302.64888889c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222v-54.61333334c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h418.70222222c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v54.61333334z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m188.18844445 703.37422223l-75.09333334-0.34133333L512 570.48177778l-112.98133333 134.71288889-75.20711112 0.34133333c-5.00622222 0-9.10222222-3.98222222-9.10222222-9.10222222 0-2.16177778 0.79644445-4.20977778 2.16177778-5.91644445l148.02488889-176.35555555L316.87111111 337.92c-1.36533333-1.70666667-2.16177778-3.75466667-2.16177778-5.91644445 0-5.00622222 4.096-9.10222222 9.10222222-9.10222222l75.20711112 0.34133334L512 458.06933333l112.98133333-134.71288888 75.09333334-0.34133334c5.00622222 0 9.10222222 3.98222222 9.10222222 9.10222222 0 2.16177778-0.79644445 4.20977778-2.16177778 5.91644445L559.21777778 514.27555555l147.91111111 176.35555556c1.36533333 1.70666667 2.16177778 3.75466667 2.16177778 5.91644444 0 5.00622222-4.096 9.10222222-9.10222222 9.10222223z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m218.45333333 537.03111112c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222H548.40888889v172.94222222c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222h-54.61333334c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222V548.40888889H302.64888889c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222v-54.61333334c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h172.94222222V302.64888889c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h54.61333334c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v172.94222222h172.94222222c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v54.61333334z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m163.95377778 517.57511112L427.46311111 700.64355555c-1.59288889 1.13777778-3.41333333 1.70666667-5.34755556 1.70666667-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222V331.88977778c0-1.93422222 0.56888889-3.75466667 1.70666667-5.34755556 2.95822222-4.096 8.64711111-5.00622222 12.74311111-2.048L675.95377778 505.17333333c0.79644445 0.56888889 1.47911111 1.25155555 2.048 2.048 2.95822222 3.98222222 2.048 9.67111111-2.048 12.62933334z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m200.81777778 666.39644445l-32.54044445 44.37333333c-2.95822222 4.096-8.64711111 4.89244445-12.74311111 1.93422222L479.34577778 577.76355555c-2.38933333-1.70666667-3.75466667-4.43733333-3.75466667-7.39555555V257.13777778c0-5.00622222 4.096-9.10222222 9.10222222-9.10222223h54.72711112c5.00622222 0 9.10222222 4.096 9.10222222 9.10222223v281.6l162.24711111 117.30488889c4.096 2.84444445 5.00622222 8.53333333 2.048 12.62933333z",special:!0},{viewBox:[1024,1024],path:"M981.10577778 314.48177778c-25.6-61.09866667-62.464-115.93955555-109.34044445-163.04355556-46.87644445-46.99022222-101.60355555-83.968-162.70222222-109.568C646.59911111 15.58755555 580.38044445 2.27555555 512 2.27555555h-2.27555555c-68.83555555 0.34133333-135.39555555 13.99466667-198.08711112 40.84622223-60.52977778 25.94133333-114.80177778 62.80533333-161.22311111 109.79555555-46.42133333 46.99022222-82.83022222 101.60355555-108.08888889 162.47466667C16.27022222 378.42488889 3.072 445.44 3.41333333 514.38933333c0.34133333 78.96177778 19.22844445 157.35466667 54.49955556 227.44177778v172.94222222c0 28.89955555 23.43822222 52.33777778 52.224 52.33777778h172.71466666c69.97333333 35.38488889 148.13866667 54.272 226.98666667 54.61333334h2.38933333c68.03911111 0 133.91644445-13.19822222 196.03911112-39.02577778 60.75733333-25.37244445 115.37066667-61.78133333 162.13333333-108.31644445 46.87644445-46.53511111 83.74044445-100.92088889 109.568-161.56444444 26.73777778-62.80533333 40.39111111-129.59288889 40.73244445-198.54222223 0.22755555-69.29066667-13.19822222-136.53333333-39.59466667-199.79377777zM284.89955555 566.61333333c-30.03733333 0-54.49955555-24.46222222-54.49955555-54.61333333s24.46222222-54.61333333 54.49955555-54.61333333 54.49955555 24.46222222 54.49955556 54.61333333-24.34844445 54.61333333-54.49955556 54.61333333z m227.10044445 0c-30.03733333 0-54.49955555-24.46222222-54.49955555-54.61333333s24.46222222-54.61333333 54.49955555-54.61333333 54.49955555 24.46222222 54.49955555 54.61333333-24.46222222 54.61333333-54.49955555 54.61333333z m227.10044445 0c-30.03733333 0-54.49955555-24.46222222-54.49955556-54.61333333s24.46222222-54.61333333 54.49955556-54.61333333 54.49955555 24.46222222 54.49955555 54.61333333-24.46222222 54.61333333-54.49955555 54.61333333z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM745.4750693 325.8561164l-267.95558363 371.52436096c-16.15876501 22.52048353-49.62140436 22.52048353-65.78016939 0L253.07805667 477.51948567c-4.83490607-6.74342161 0-16.15876501 8.27023406-16.15876499h59.67291961c12.97790576 0 25.31963967 6.23448413 32.95370188 16.92217123l90.59087157 125.70755774 200.01242995-277.37092701c7.63406221-10.56045272 19.84856175-16.92217125 32.95370189-16.92217124H737.20483524c8.27023407 0 13.10514012 9.41534338 8.27023406 16.158765z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM756.28999077 542.53624885c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962H277.88875885c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962v-61.0724977c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h468.2224823c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v61.0724977z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM720.79160148 697.63494611c5.59831228 6.61618726 0.8906406 16.6677025-7.76129658 16.66770249h-74.94104404c-5.98001539 0-11.70556205-2.67192177-15.64982754-7.25235911L512 575.36271635l-110.43943332 131.68757314c-3.81703111 4.58043732-9.54257777 7.25235911-15.64982754 7.25235911H310.9696951c-8.65193717 0-13.35960887-10.05151525-7.76129658-16.66770249L458.81603326 512 303.20839852 326.36505389c-5.59831228-6.61618726-0.8906406-16.6677025 7.76129658-16.66770249h74.94104404c5.98001539 0 11.70556205 2.67192177 15.64982754 7.25235911L512 448.63728365l110.43943332-131.68757314c3.81703111-4.58043732 9.54257777-7.25235911 15.64982754-7.25235911H713.0303049c8.65193717 0 13.35960887 10.05151525 7.76129658 16.66770249L565.18396674 512l155.60763474 185.63494611z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM677.02297814 523.19662459L423.31764398 722.70011704c-9.41534338 7.37959347-23.28388974 0.76340622-23.28388975-11.19662459V312.62374191c0-11.9600308 13.86854636-18.70345241 23.28388975-11.19662457l253.70533416 199.37625807c7.25235911 5.72554666 7.25235911 16.6677025 0 22.39324918z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM756.28999077 542.53624885c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962H552.71499847v193.39624268c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962h-61.0724977c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962V552.71499847H277.88875885c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962v-61.0724977c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h193.39624268V277.88875885c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h61.0724977c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v193.39624268h193.39624268c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v61.0724977z",special:!0},{viewBox:[1024,1024],path:"M902.67315697 135.41705551L528.62204754 7.94466448C524.10877635 6.40354749 518.05438818 5.63298899 512 5.63298899s-12.10877635 0.7705585-16.62204754 2.31167549L121.32684303 135.41705551c-9.13662215 3.08223399-16.62204754 13.64989334-16.62204753 23.33691443v531.02488283c0 9.68702108 6.27454775 22.45627614 13.87005291 28.51066431L498.0198673 1013.9638196c3.85279247 2.9721542 8.8063828 4.51327118 13.87005291 4.51327118s10.12734022-1.54111698 13.87005291-4.51327118l379.4450189-295.67430252c7.59550517-5.94430839 13.87005291-18.71356345 13.87005291-28.51066431V158.75396994c0.22015956-9.68702108-7.26526581-20.14460066-16.40188796-23.33691443zM712.89560763 323.43332829L478.86598471 645.63685899c-7.04510625 9.68702108-21.57563786 9.68702108-28.6207441 0l-139.14084824-191.5388259c-4.18303182-5.8342286 0-13.9801327 7.15518603-13.9801327h60.76404132c5.61406904 0 11.0079785 2.75199463 14.31037204 7.26526582l71.22162091 97.97100864 166.11039557-228.74579323c3.30239355-4.51327118 8.58622323-7.26526581 14.31037204-7.26526581H705.7404216c7.15518602 0.11007979 11.33821785 8.25598388 7.15518603 14.09021248z",special:!0},{viewBox:[1024,1024],path:"M959.86498307 186.28001231H797.00498922v-101.78749614c0-44.91373267-36.51626425-81.42999692-81.42999691-81.42999693H308.42500769c-44.91373267 0-81.42999692 36.51626425-81.42999691 81.42999693v101.78749614H64.13501693c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499847v40.71499845c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874962h76.8495596l31.42688945 665.43575611c2.03574992 43.38692024 37.91584233 77.61296581 81.30276254 77.6129658h577.64404066c43.5141546 0 79.26701262-34.09881122 81.30276254-77.6129658l31.42688945-665.43575611H990.40123192c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874962v-40.71499845c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499847z m-254.46874039 0H318.60375732v-91.60874653h386.79248536v91.60874653z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 248.62485371H654.50249462V104.85001539c0-22.52048353-18.19451494-40.71499847-40.71499847-40.71499846H94.67126578v-50.89374808c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961h-71.25124732c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v997.5174623c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h71.25124732c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961V674.85999383h315.54123807v143.77483833c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h529.29497999c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V289.33985217c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846z",special:!0},{viewBox:[1024,1024],path:"M804.63905145 265.16532183V94.67126578h109.42155836c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-71.25124732c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961H109.93939019c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v71.25124732c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h109.42155836v170.49405605c0 103.6960117 53.94737296 194.92305513 135.3773699 246.83467817-81.42999692 51.91162303-135.37736988 143.13866646-135.3773699 246.83467817v170.49405605h-109.42155836c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v71.25124732c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h804.12121962c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-71.25124732c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961h-109.42155836V758.83467817c0-103.6960117-53.94737296-194.92305513-135.3773699-246.83467817 81.42999692-51.91162303 135.37736988-143.13866646 135.3773699-246.83467817z",special:!0},{viewBox:[1024,1024],path:"M1020.928 448.44373333l-35.36213334-373.4528c-1.79200001-19.3536-17.2032-34.64533332-36.55679999-36.55679999L575.55626667 3.072h-0.47786666c-3.82293334 0-6.8096 1.19466667-9.07946669 3.46453333L6.53653333 565.99893332c-4.65919999 4.65919999-4.65919999 12.1856 0 16.84480001l434.61973334 434.61973334c2.26986667 2.26986667 5.25653333 3.46453333 8.48213333 3.46453333s6.21226667-1.19466667 8.48213333-3.46453333l559.46239999-559.46239999c2.38933332-2.5088 3.584-5.97333334 3.34506668-9.55733335zM735.40266668 362.66666667c-42.17173333 0-76.45866667-34.28693333-76.45866667-76.45866667s34.28693333-76.45866667 76.45866667-76.45866667 76.45866667 34.28693333 76.45866665 76.45866667-34.28693333 76.45866667-76.45866665 76.45866667z",special:!0}]},{type:"线性",children:[{viewBox:[1024,1024],path:"M1009.55537674 75.96950982l-61.38012212-61.38012214c-4.48769762-4.48769762-11.870684-4.48769762-16.3583816 0L14.44462326 931.67210859c-4.48769762 4.48769762-4.48769762 11.870684 0 16.35838159l61.38012212 61.38012214c4.48769762 4.48769762 11.870684 4.48769762 16.3583816 0L1009.41061232 92.18312698c4.63246205-4.34293316 4.63246205-11.72591956 0.14476442-16.21361716zM210.88996692 419.35075905c114.94296453 0 208.46079213-93.51782759 208.46079213-208.46079213s-93.51782759-208.46079213-208.46079213-208.4607921-208.46079213 93.51782759-208.4607921 208.4607921 93.51782759 208.46079213 208.4607921 208.46079213z m0-312.69118816c57.47148228 0 104.23039605 46.75891379 104.23039607 104.23039603s-46.75891379 104.23039605-104.23039607 104.23039607-104.23039605-46.75891379-104.23039603-104.23039607 46.75891379-104.23039605 104.23039603-104.23039603zM813.11003308 604.64924095c-114.94296453 0-208.46079213 93.51782759-208.46079213 208.46079213s93.51782759 208.46079213 208.46079213 208.4607921 208.46079213-93.51782759 208.4607921-208.4607921-93.51782759-208.46079213-208.4607921-208.46079213z m0 312.69118816c-57.47148228 0-104.23039605-46.75891379-104.23039607-104.23039603s46.75891379-104.23039605 104.23039607-104.23039607 104.23039605 46.75891379 104.23039603 104.23039607-46.75891379 104.23039605-104.23039603 104.23039603z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M1004.96017383 478.58365209L483.27851088 25.80594621c-4.00443838-3.45210207-9.11354943-5.3852792-14.49882864-5.38527921h-122.20441284c-10.21822208 0-14.91308089 12.70373557-7.18037228 19.33177152l483.57045622 419.77561022H14.8973037c-6.07569962 0-11.04672658 4.97102697-11.04672658 11.04672657v82.85044938c0 6.07569962 4.97102697 11.04672658 11.04672658 11.04672657h807.92996557L339.25681303 984.24756148c-7.7327086 6.76612003-3.0378498 19.33177153 7.18037229 19.33177152h126.34693531c2.62359757 0 5.24719513-0.96658859 7.18037228-2.76168164L1004.96017383 545.41634791c20.2983601-17.67476253 20.2983601-49.1579333 0-66.83269582z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M1011.38217956 558.9924242L545.80649025 22.43713295c-17.81503843-20.62055629-49.79794206-20.62055629-67.75325638 0L12.61782044 558.9924242c-6.31241519 7.29434645-1.12220714 18.51641789 8.41655359 18.51641789h113.62347344c6.45269109 0 12.62483038-2.80551785 16.97338308-7.71517411L458.69516062 215.87758959V1005.77114384c0 6.1721393 5.04993216 11.22207145 11.22207144 11.22207145h84.16553588c6.1721393 0 11.22207145-5.04993216 11.22207144-11.22207145V215.87758959l307.06393007 353.91607839c4.20827679 4.90965626 10.38041608 7.71517413 16.97338308 7.71517411h113.62347344c9.53876074 0 14.72896878-11.22207145 8.41655359-18.51641789z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M1009.1026963 459.52804874H201.17273073l483.57045624-419.77561022c7.7327086-6.76612003 3.0378498-19.33177153-7.18037229-19.33177152h-122.20441283c-5.3852792 0-10.49439025 1.93317715-14.49882866 5.38527921L19.03982617 478.58365209c-20.2983601 17.67476253-20.2983601 49.1579333 0 66.69461175L543.89742302 1000.81765136c2.07126124 1.79509307 4.55677472 2.76168163 7.18037228 2.76168164h126.3469353c10.21822208 0 14.91308089-12.70373557 7.18037228-19.33177152L201.17273073 564.47195126H1009.1026963c6.07569962 0 11.04672658-4.97102697 11.04672658-11.04672657v-82.85044938c0-6.07569962-4.97102697-11.04672658-11.04672658-11.04672657z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M1002.96562597 446.49115791h-113.62347344c-6.45269109 0-12.62483038 2.80551785-16.97338308 7.71517411L565.30483938 808.12241041V18.22885616c0-6.1721393-5.04993216-11.22207145-11.22207144-11.22207145h-84.16553588c-6.1721393 0-11.22207145 5.04993216-11.22207144 11.22207145v789.89355425L151.63123055 454.20633202c-4.20827679-4.90965626-10.38041608-7.71517413-16.97338308-7.71517411h-113.62347344c-9.53876074 0-14.72896878 11.36234735-8.41655359 18.51641789L478.19350975 1001.56286705c17.81503843 20.62055629 49.79794206 20.62055629 67.75325638 0L1011.38217956 465.0075758c6.31241519-7.29434645 1.12220714-18.51641789-8.41655359-18.51641789z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M975.82443246 622.46726585H14.8973037c-6.07569962 0-11.04672658 4.97102697-11.04672658 11.04672658v82.85044937c0 6.07569962 4.97102697 11.04672658 11.04672658 11.04672659h835.6848661L651.32683905 980.10503902c-5.66144737 7.18037229-0.55233633 17.9509307 8.69929718 17.9509307h100.11095967c6.76612003 0 13.11798782-3.0378498 17.39859437-8.42312903l233.08593092-295.63802022c22.78387358-28.99765728 2.20934532-71.52755463-34.79718873-71.52755462zM1009.1026963 296.58883161H173.4178302l199.25533075-252.69387063c5.66144737-7.18037229 0.55233633-17.9509307-8.69929718-17.9509307h-100.11095967c-6.76612003 0-13.11798782 3.0378498-17.39859437 8.42312903L13.37837881 330.00517953c-22.78387358 28.99765728-2.20934532 71.52755463 34.65910466 71.52755462h961.06521283c6.07569962 0 11.04672658-4.97102697 11.04672658-11.04672658v-82.85044937c0-6.07569962-4.97102697-11.04672658-11.04672658-11.04672659z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M1010.75873115 64.13501693H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v81.42999691c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874964h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874964v-81.42999691c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961zM1010.75873115 858.07748691H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874964v81.42999691c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-81.42999691c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874964zM1010.75873115 461.10625194H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874959v81.42999694c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874959h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874959v-81.42999694c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874959z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M591.98717801 512l405.34042913-483.16579151c6.79427767-8.02960089 1.08090782-20.22841761-9.41933951-20.2284176h-123.22349044c-7.25752386 0-14.20621693 3.24272343-18.99309439 8.80167789L511.38233839 415.95362022 177.07299399 17.40746878c-4.63246205-5.55895447-11.58115512-8.80167789-18.99309439-8.80167789H34.85640916c-10.50024731 0-16.21361717 12.19881672-9.41933952 20.2284176L430.77749876 512 25.43706964 995.16579151c-6.79427767 8.02960089-1.08090782 20.22841761 9.41933952 20.2284176h123.22349044c7.25752386 0 14.20621693-3.24272343 18.99309439-8.80167789l334.3093444-398.54615144 334.30934441 398.54615144c4.63246205 5.55895447 11.58115512 8.80167789 18.99309439 8.80167789h123.22349044c10.50024731 0 16.21361717-12.19881672 9.41933951-20.2284176L591.98717801 512z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M953.5488 832.61667556c-24.08448-57.08913778-58.74574221-108.31644445-102.70947556-152.28017777-43.96373333-43.96373333-95.19104-78.49756444-152.28017777-102.70947558-0.50972445-0.25486222-1.01944888-0.38229333-1.52917334-0.63715555C776.41955556 519.64586667 828.02915556 426.23886221 828.02915556 320.85333332c0-174.58062221-141.44853334-316.02915556-316.02915556-316.02915554S195.97084444 146.27271111 195.97084444 320.85333332c0 105.38552889 51.6096 198.79253333 130.99918223 256.26396447-0.50972445 0.25486222-1.01944888 0.38229333-1.52917334 0.63715555-57.08913778 24.08448-108.31644445 58.61831112-152.28017777 102.70947554-43.96373333 43.96373333-78.49756444 95.19104-102.70947556 152.28017779C46.74901333 888.55893332 34.13333334 947.8144 32.85902222 1008.72647111c-0.12743111 5.7344 4.46008889 10.44935111 10.19448889 10.44935111h76.45866667c5.60696888 0 10.06705778-4.46008889 10.19448889-9.93962666 2.54862221-98.37681778 42.05226667-190.50951112 111.88451555-260.34176001 72.25344-72.25344 168.20906666-112.01194667 270.40881778-112.01194667s198.15537778 39.75850667 270.40881778 112.01194667C852.24106667 818.72668444 891.74471111 910.85937779 894.29333333 1009.23619556c0.12743111 5.60696888 4.58752 9.93962667 10.19448889 9.93962666h76.45866667c5.7344 0 10.32192-4.71495112 10.19448889-10.44935111-1.27431111-60.91207112-13.88999112-120.16753779-37.59217778-176.10979555zM512 540.03484444c-58.49088 0-113.54112-22.81016889-154.95623111-64.22527999S292.81848888 379.34421333 292.81848888 320.85333332c0-58.49088 22.81016889-113.54112 64.22528001-154.9562311S453.50912 101.67182221 512 101.67182221s113.54112 22.81016889 154.95623111 64.22528001S731.18151112 262.36245333 731.18151112 320.85333332c0 58.49088-22.81016889 113.54112-64.22528001 154.95623113S570.49088 540.03484444 512 540.03484444z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M985.31555555 111.50222222H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888889v728.17777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h946.6311111c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V147.91111111c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888889z m-45.5111111 126.06577778V830.57777778H84.19555555V237.568l-31.40266666-24.46222222 44.71466666-57.45777778 48.6968889 37.888h731.70488888l48.69688889-37.888 44.71466667 57.45777778-31.51644444 24.46222222z M877.90933333 193.42222222L512 477.86666667 146.09066667 193.42222222l-48.69688889-37.888-44.71466667 57.45777778 31.40266667 24.46222222 388.66488889 302.19377778c22.98311111 17.86311111 55.18222222 17.86311111 78.16533333 0L939.80444445 237.568l31.40266666-24.46222222-44.71466666-57.45777778-48.58311112 37.77422222z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M985.31555555 88.74666667H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888888v564.33777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h432.35555555v127.43111111H275.34222222c-10.01244445 0-18.20444445 8.192-18.20444444 18.20444445v54.61333333c0 5.00622222 4.096 9.10222222 9.10222222 9.10222222h491.52c5.00622222 0 9.10222222-4.096 9.10222222-9.10222222v-54.61333333c0-10.01244445-8.192-18.20444445-18.20444444-18.20444445H552.96V725.90222222h432.35555555c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V125.15555555c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888888z m-45.5111111 555.23555555H84.19555555V170.66666667h855.6088889v473.31555555z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m0 932.97777778c-233.69955555 0-423.25333333-189.55377778-423.25333333-423.25333333 0-101.26222222 35.61244445-194.33244445 95.00444444-267.15022222l595.39911111 595.39911111C706.33244445 899.64088889 613.26222222 935.25333333 512 935.25333333z m328.24888889-156.10311111L244.84977778 183.75111111C317.66755555 124.35911111 410.73777778 88.74666667 512 88.74666667c233.69955555 0 423.25333333 189.55377778 423.25333333 423.25333333 0 101.26222222-35.61244445 194.33244445-95.00444444 267.15022222z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M901.80266667 257.82044445L656.95288889 12.97066667c-6.82666667-6.82666667-16.04266667-10.69511111-25.71377778-10.69511112H147.91111111c-20.13866667 0-36.40888889 16.27022222-36.40888889 36.4088889v946.6311111c0 20.13866667 16.27022222 36.40888889 36.40888889 36.4088889h728.17777778c20.13866667 0 36.40888889-16.27022222 36.40888889-36.4088889V283.648c0-9.67111111-3.86844445-19.00088889-10.69511111-25.82755555zM828.52977778 300.37333333H614.4V86.24355555L828.52977778 300.37333333z m2.048 639.43111112H193.42222222V84.19555555h343.60888889v245.76c0 26.39644445 21.39022222 47.78666667 47.78666667 47.78666667h245.76v562.06222223z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M981.07392 55.79662222H42.92608c-31.22062222 0-50.71758221 34.02410666-35.04355556 61.16693334L304.28728889 620.82616888V927.42542221c0 22.55530667 18.09521779 40.77795555 40.52309333 40.77795557h334.37923556c22.42787556 0 40.52309333-18.22264888 40.52309333-40.77795557V620.82616888L1016.24490667 116.96355556c15.54659555-27.14282666-3.95036444-61.16693333-35.17098667-61.16693334zM628.47203556 876.45297779H395.52796444V677.66044445h233.07150222v198.79253334z m12.23338666-301.50200891l-12.10595556 21.15356445h-233.19893332l-12.10595556-21.15356445L130.59868445 147.54702221h762.8026311L640.70542222 574.95096888z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M980.62285431 4.54099753H654.39920987c-4.2719763 0-7.76722963 3.49525333-7.76722962 7.76722964v72.4941432c0 4.2719763 3.49525333 7.76722963 7.76722962 7.76722963h207.64393877L604.04167111 350.57107753c-64.72691358-49.83972347-143.69374815-76.7661195-226.67365136-76.7661195-99.54999309 0-193.27456395 38.83614815-263.5679921 109.25903012S4.54099753 547.08198717 4.54099753 646.63198025s38.83614815 193.27456395 109.25903012 263.5679921C184.09345581 980.62285431 277.81802667 1019.45900247 377.36801975 1019.45900247s193.27456395-38.83614815 263.5679921-109.25903012C711.35889383 839.90654419 750.19504197 746.18197333 750.19504197 646.63198025c0-82.9799032-26.92639605-161.68783013-76.63666567-226.41474372L931.4304 162.34521283V369.60079013c0 4.2719763 3.49525333 7.76722963 7.76722963 7.76722962h72.4941432c4.2719763 0 7.76722963-3.49525333 7.76722964-7.76722962V43.37714569c0-21.35988148-17.47626667-38.83614815-38.83614816-38.83614816zM377.36801975 921.07409383c-151.33152395 0-274.44211358-123.11058963-274.44211358-274.44211358s123.11058963-274.44211358 274.44211358-274.44211358 274.44211358 123.11058963 274.44211358 274.44211358-123.11058963 274.44211358-274.44211358 274.44211358z",special:!0,outlined:!0}]}],ca={bar:"bar",horizontalBar:"bar",line:"line",area:"line",scatter:"line",pie:"pie",ring:"pie"};var da=()=>{const e=J(),t=(0,D.debounce)((function(){e.addSnapshot()}),300,{trailing:!0}),l=(0,D.throttle)((function(){e.reDo()}),100,{leading:!0,trailing:!1}),a=(0,D.throttle)((function(){e.unDo()}),100,{leading:!0,trailing:!1});return{addHistorySnapshot:t,redo:l,undo:a}},pa=()=>{const e=R(),t=$(),{creatingElement:l}=(0,o.Jk)(e),{theme:a,viewportRatio:n}=(0,o.Jk)(t),{addHistorySnapshot:i}=da(),s=(a,n)=>{t.addElement(a),e.setActiveElementIdList([a.id]),l.value&&e.setCreatingElement(null),setTimeout((()=>{e.setEditorareaFocus(!0)}),0),n&&n(),i()},u=e=>{aa(e).then((({width:t,height:l})=>{const a=l/t;aoa?(t=oa,l=t*a):l>oa*n.value&&(l=oa*n.value,t=l/a),s({type:"image",id:(0,r.x0)(10),src:e,width:t,height:l,left:(oa-t)/2,top:(oa*n.value-l)/2,fixedRatio:!0,rotate:0})}))},c=e=>{const t={type:"chart",id:(0,r.x0)(10),chartType:ca[e],left:300,top:81.25,width:400,height:400,rotate:0,themeColor:[a.value.themeColor],gridColor:a.value.fontColor,data:{labels:["类别1","类别2","类别3","类别4","类别5"],legends:["系列1"],series:[[12,19,5,2,18]]}},l={..."bar"===e?{horizontalBars:!1,stackBars:!1}:{},..."horizontalBar"===e?{horizontalBars:!0,stackBars:!1}:{},..."line"===e?{showLine:!0,lineSmooth:!0,showArea:!1}:{},..."area"===e?{showLine:!0,lineSmooth:!0,showArea:!0}:{},..."scatter"===e?{showLine:!1,lineSmooth:!0,showArea:!1}:{},..."pie"===e?{donut:!1}:{},..."ring"===e?{donut:!0}:{}};s({...t,options:l})},d=(e,t)=>{const l={fontname:a.value.fontName,color:a.value.fontColor},o=[];for(let a=0;a{const{left:l,top:n,width:o,height:i}=e,u=t?.content||"",c=t?.vertical||!1,d=(0,r.x0)(10);s({type:"text",id:d,left:l,top:n,width:o,height:i,content:u,rotate:0,defaultFontName:a.value.fontName,defaultColor:a.value.fontColor,vertical:c},(()=>{setTimeout((()=>{const e=document.querySelector(`#editable-element-${d} .ProseMirror`);e&&e.focus()}),0)}))},v=(e,t,l={})=>{const{left:n,top:o,width:i,height:u}=e,c={type:"shape",id:(0,r.x0)(10),left:n,top:o,width:i,height:u,viewBox:t.viewBox,path:t.path,fill:a.value.themeColor,fixedRatio:!1,rotate:0,...l};if(t.special&&(c.special=!0),t.pathFormula){c.pathFormula=t.pathFormula,c.viewBox=[i,u];const e=ra[t.pathFormula];"editable"in e?(c.path=e.formula(i,u,e.defaultValue),c.keypoint=e.defaultValue):c.path=e.formula(i,u)}s(c)},m=(e,t)=>{const{left:l,top:n,start:o,end:i}=e,u={type:"line",id:(0,r.x0)(10),left:l,top:n,start:o,end:i,points:t.points,color:a.value.themeColor,style:t.style,width:2};t.isBroken&&(u.broken=[(o[0]+i[0])/2,(o[1]+i[1])/2]),t.isCurve&&(u.curve=[(o[0]+i[0])/2,(o[1]+i[1])/2]),t.isCubic&&(u.cubic=[[(o[0]+i[0])/2,(o[1]+i[1])/2],[(o[0]+i[0])/2,(o[1]+i[1])/2]]),s(u)},h=e=>{s({type:"latex",id:(0,r.x0)(10),width:e.w,height:e.h,rotate:0,left:(oa-e.w)/2,top:(oa*n.value-e.h)/2,path:e.path,latex:e.latex,color:a.value.fontColor,strokeWidth:2,viewBox:[e.w,e.h],fixedRatio:!0})},f=e=>{s({type:"video",id:(0,r.x0)(10),width:500,height:300,rotate:0,left:(oa-500)/2,top:(oa*n.value-300)/2,src:e,autoplay:!1})},g=e=>{s({type:"audio",id:(0,r.x0)(10),width:50,height:50,rotate:0,left:(oa-50)/2,top:(oa*n.value-50)/2,loop:!1,autoplay:!1,fixedRatio:!0,color:a.value.themeColor,src:e})};return{createImageElement:u,createChartElement:c,createTableElement:d,createTextElement:p,createShapeElement:v,createLineElement:m,createLatexElement:h,createVideoElement:f,createAudioElement:g}},va=()=>{const e=R(),t=$(),{currentSlide:l,slides:a}=(0,o.Jk)(t),{addHistorySnapshot:n}=da(),s=a=>{const{groupIdMap:o,elIdMap:i}=Ie(a),s=a[0];let r,u=0;do{r=l.value.elements.find((e=>{if(e.type!==s.type)return!1;const{minX:t,maxX:l,minY:a,maxY:n}=xe(e),{minX:o,maxX:i,minY:r,maxY:c}=xe({...s,left:s.left+u,top:s.top+u});return t===o&&l===i&&a===r&&n===c})),r&&(u+=10)}while(r);for(const e of a)e.id=i[e.id],e.left=e.left+u,e.top=e.top+u,e.groupId&&(e.groupId=o[e.groupId]);t.addElement(a),e.setActiveElementIdList(Object.values(i)),n()},u=e=>{const l=_e(e),a=e.map((e=>{const{groupIdMap:t,elIdMap:a}=Ie(e.elements);for(const n of e.elements)n.id=a[n.id],n.groupId&&(n.groupId=t[n.groupId]),n.link&&"slide"===n.link.type&&(l[n.link.target]?n.link.target=l[n.link.target]:delete n.link);if(e.animations)for(const l of e.animations)l.id=(0,r.x0)(10),l.elId=a[l.elId];return{...e,id:l[e.id]}}));t.addSlide(a),n()},c=(0,i.Fl)((()=>!(a.value.length>1)&&!(a.value[0].elements.length>0)));return{addElementsFromData:s,addSlidesFromData:u,isEmptySlide:c}},ma=()=>{const{createTextElement:e}=pa(),{addElementsFromData:t,addSlidesFromData:l}=va(),a=t=>{e({left:0,top:0,width:600,height:50},{content:t})},n=(e,n)=>{const o=n?.onlySlide||!1,i=n?.onlyElements||!1,s=fe(e);if("object"===typeof s){const{type:e,data:a}=s;"elements"!==e||o?"slides"!==e||i||l(a):t(a)}else if(!i&&!o){const e=la(s);a(e)}};return{pasteTextClipboardData:n}},ha=()=>{const e=R(),t=$(),{selectedSlidesIndex:l,activeElementIdList:a}=(0,o.Jk)(e),{currentSlide:n,slides:s,theme:u,slideIndex:c}=(0,o.Jk)(t),d=(0,i.Fl)((()=>[...l.value,c.value])),p=(0,i.Fl)((()=>s.value.filter(((e,t)=>d.value.includes(t))))),v=(0,i.Fl)((()=>p.value.map((e=>e.id)))),{pasteTextClipboardData:m}=ma(),{addSlidesFromData:h}=va(),{addHistorySnapshot:f}=da(),g=()=>{const l={id:(0,r.x0)(10),elements:[],background:{type:"solid",color:u.value.backgroundColor}};t.updateSlideIndex(0),e.setActiveElementIdList([]),t.setSlides([l])},y=l=>{l===ne.UP&&c.value>0?(a.value.length&&e.setActiveElementIdList([]),t.updateSlideIndex(c.value-1)):l===ne.DOWN&&c.value{const t=pe(JSON.stringify({type:"slides",data:p.value}));me(t).then((()=>{e.setThumbnailsFocus(!0)}))},x=()=>{he().then((e=>{m(e,{onlySlide:!0})})).catch((e=>ta.warning(e)))},k=()=>{const l={id:(0,r.x0)(10),elements:[],background:{type:"solid",color:u.value.backgroundColor}};e.setActiveElementIdList([]),t.addSlide(l),f()},b=l=>{const{groupIdMap:a,elIdMap:n}=Ie(l.elements);for(const e of l.elements)e.id=n[e.id],e.groupId&&(e.groupId=a[e.groupId]);const o={...l,id:(0,r.x0)(10)};e.setActiveElementIdList([]),t.addSlide(o),f()},_=()=>{const e=JSON.parse(JSON.stringify(n.value));h([e])},I=(l=v.value)=>{s.value.length===l.length?g():t.deleteSlide(l),e.updateSelectedSlidesIndex([]),f()},S=()=>{const e=[...v.value];w(),I(e)},C=()=>{const t=Array.from(Array(s.value.length),((e,t)=>t));e.setActiveElementIdList([]),e.updateSelectedSlidesIndex(t)},L=(e,l)=>{if(l===e)return;const a=JSON.parse(JSON.stringify(s.value)),n=a[l];a.splice(l,1),a.splice(e,0,n),t.setSlides(a),t.updateSlideIndex(e)};return{resetSlides:g,updateSlideIndex:y,copySlide:w,pasteSlide:x,createSlide:k,createSlideByTemplate:b,copyAndPasteSlide:_,deleteSlide:I,cutSlide:S,selectAllSlide:C,sortSlides:L}},fa=()=>{const e=R(),t=$(),{activeElementIdList:l}=(0,o.Jk)(e),{currentSlide:a}=(0,o.Jk)(t),{addHistorySnapshot:n}=da(),i=()=>{const o=JSON.parse(JSON.stringify(a.value.elements));for(const e of o)l.value.includes(e.id)&&(e.lock=!0);t.updateSlide({elements:o}),e.setActiveElementIdList([]),n()},s=l=>{const o=JSON.parse(JSON.stringify(a.value.elements));if(l.groupId){const a=[];for(const e of o)e.groupId===l.groupId&&(e.lock=!1,a.push(e.id));t.updateSlide({elements:o}),e.setActiveElementIdList(a)}else{for(const e of o)if(e.id===l.id){e.lock=!1;break}t.updateSlide({elements:o}),e.setActiveElementIdList([l.id])}n()};return{lockElement:i,unlockElement:s}},ga=()=>{const e=R(),t=$(),{activeElementIdList:l,activeGroupElementId:a}=(0,o.Jk)(e),{currentSlide:n}=(0,o.Jk)(t),{addHistorySnapshot:i}=da(),s=()=>{if(!l.value.length)return;let o=[];o=a.value?n.value.elements.filter((e=>e.id!==a.value)):n.value.elements.filter((e=>!l.value.includes(e.id))),e.setActiveElementIdList([]),t.updateSlide({elements:o}),i()},r=()=>{n.value.elements.length&&(e.setActiveElementIdList([]),t.updateSlide({elements:[]}),i())};return{deleteElement:s,deleteAllElements:r}},ya=()=>{const e=R(),t=$(),{activeElementIdList:l,activeElementList:a,handleElementId:n}=(0,o.Jk)(e),{currentSlide:s}=(0,o.Jk)(t),{addHistorySnapshot:u}=da(),c=(0,i.Fl)((()=>{if(a.value.length<2)return!1;const e=a.value[0].groupId;if(!e)return!0;const t=a.value.every((t=>(t.groupId&&t.groupId)===e));return!t})),d=()=>{if(!a.value.length)return;let e=JSON.parse(JSON.stringify(s.value.elements));const n=(0,r.x0)(10),o=[];for(const t of e)l.value.includes(t.id)&&(t.groupId=n,o.push(t));const i=e.findIndex((e=>e.id===o[o.length-1].id)),c=o.map((e=>e.id));e=e.filter((e=>!c.includes(e.id)));const d=i-o.length+1;e.splice(d,0,...o),t.updateSlide({elements:e}),u()},p=()=>{if(!a.value.length)return;const o=a.value.some((e=>e.groupId));if(!o)return;const i=JSON.parse(JSON.stringify(s.value.elements));for(const e of i)l.value.includes(e.id)&&e.groupId&&delete e.groupId;t.updateSlide({elements:i});const r=n.value?[n.value]:[];e.setActiveElementIdList(r),u()};return{canCombine:c,combineElements:d,uncombineElements:p}},wa=()=>{const e=R(),{activeElementIdList:t,activeElementList:l}=(0,o.Jk)(e),{pasteTextClipboardData:a}=ma(),{deleteElement:n}=ga(),i=()=>{if(!t.value.length)return;const a=pe(JSON.stringify({type:"elements",data:l.value}));me(a).then((()=>{e.setEditorareaFocus(!0)}))},s=()=>{i(),n()},r=()=>{he().then((e=>{a(e)})).catch((e=>ta.warning(e)))},u=()=>{i(),r()};return{copyElement:i,cutElement:s,pasteElement:r,quickCopyElement:u}},xa=()=>{const e=R(),{currentSlide:t}=(0,o.Jk)($()),{hiddenElementIdList:l}=(0,o.Jk)(e),a=()=>{const a=t.value.elements.filter((e=>!e.lock&&!l.value.includes(e.id))),n=a.map((e=>e.id));e.setActiveElementIdList(n)};return{selectAllElement:a}},ka=()=>{const e=$(),{activeElementIdList:t,activeGroupElementId:l}=(0,o.Jk)(R()),{currentSlide:a}=(0,o.Jk)(e),{addHistorySnapshot:n}=da(),i=(o,i=1)=>{let s=[];const r=e=>{let{left:t,top:l}=e;switch(o){case ne.LEFT:t-=i;break;case ne.RIGHT:t+=i;break;case ne.UP:l-=i;break;case ne.DOWN:l+=i;break;default:break}return{...e,left:t,top:l}};s=l.value?a.value.elements.map((e=>l.value===e.id?r(e):e)):a.value.elements.map((e=>t.value.includes(e.id)?r(e):e)),e.updateSlide({elements:s}),n()};return{moveElement:i}},ba=(l(541),()=>{const e=$(),{currentSlide:t}=(0,o.Jk)(e),{addHistorySnapshot:l}=da(),a=(e,t)=>({minLevel:e.findIndex((e=>e.id===t[0].id)),maxLevel:e.findIndex((e=>e.id===t[t.length-1].id))}),n=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter((e=>e.groupId===t.groupId)),{minLevel:o,maxLevel:i}=a(e,n);if(i===e.length-1)return;const s=l[i+1],r=l.splice(o,n.length);if(s.groupId){const e=l.filter((e=>e.groupId===s.groupId));l.splice(o+e.length,0,...r)}else l.splice(o+1,0,...r)}else{const a=e.findIndex((e=>e.id===t.id));if(a===e.length-1)return;const n=l[a+1],o=l.splice(a,1)[0];if(n.groupId){const e=l.filter((e=>e.groupId===n.groupId));l.splice(a+e.length,0,o)}else l.splice(a+1,0,o)}return l},i=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter((e=>e.groupId===t.groupId)),{minLevel:o}=a(e,n);if(0===o)return;const i=l[o-1],s=l.splice(o,n.length);if(i.groupId){const e=l.filter((e=>e.groupId===i.groupId));l.splice(o-e.length,0,...s)}else l.splice(o-1,0,...s)}else{const a=e.findIndex((e=>e.id===t.id));if(0===a)return;const n=l[a-1],o=l.splice(a,1)[0];if(n.groupId){const e=l.filter((e=>e.groupId===n.groupId));l.splice(a-e.length,0,o)}else l.splice(a-1,0,o)}return l},s=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter((e=>e.groupId===t.groupId)),{minLevel:o,maxLevel:i}=a(e,n);if(i===e.length-1)return null;const s=l.splice(o,n.length);l.push(...s)}else{const a=e.findIndex((e=>e.id===t.id));if(a===e.length-1)return null;l.splice(a,1),l.push(t)}return l},r=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter((e=>e.groupId===t.groupId)),{minLevel:o}=a(e,n);if(0===o)return;const i=l.splice(o,n.length);l.unshift(...i)}else{const a=e.findIndex((e=>e.id===t.id));if(0===a)return;l.splice(a,1),l.unshift(t)}return l},u=(a,o)=>{let u;o===Q.UP?u=n(t.value.elements,a):o===Q.DOWN?u=i(t.value.elements,a):o===Q.TOP?u=s(t.value.elements,a):o===Q.BOTTOM&&(u=r(t.value.elements,a)),u&&(e.updateSlide({elements:u}),l())};return{orderElement:u}});const _a=()=>{const e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen()},Ia=()=>{document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},Sa=()=>{const e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement;return!!e};var Ca=()=>{const e=X(),t=$(),l=()=>{_a(),e.setScreening(!0)},a=()=>{t.updateSlideIndex(0),l()},n=()=>{e.setScreening(!1),Sa()&&Ia()};return{enterScreening:l,enterScreeningFromStart:a,exitScreening:n}},La=()=>{const e=R(),{canvasPercentage:t,canvasScale:l,canvasDragged:a}=(0,o.Jk)(e),n=(0,i.Fl)((()=>Math.round(100*l.value)+"%")),s=l=>{let a=t.value;const n=5,o=200,i=30;"+"===l&&a<=o&&(a+=n),"-"===l&&a>=i&&(a-=n),e.setCanvasPercentage(a)},r=a=>{const n=Math.round(a/l.value*t.value)/100;e.setCanvasPercentage(n)},u=()=>{e.setCanvasPercentage(90),a&&e.setCanvasDragged(!1)};return{canvasScalePercentage:n,setCanvasScalePercentage:r,scaleCanvas:s,resetCanvas:u}},Ta=()=>{const e=R(),t=q(),{activeElementIdList:l,disableHotkeys:a,handleElement:n,handleElementId:s,editorAreaFocus:r,thumbnailsFocus:u,showSearchPanel:c}=(0,o.Jk)(e),{currentSlide:d}=(0,o.Jk)($()),{ctrlKeyState:p,shiftKeyState:v,spaceKeyState:m}=(0,o.Jk)(t),{updateSlideIndex:h,copySlide:f,createSlide:g,deleteSlide:y,cutSlide:w,copyAndPasteSlide:x,selectAllSlide:k}=ha(),{combineElements:b,uncombineElements:_}=ya(),{deleteElement:I}=ga(),{lockElement:S}=fa(),{copyElement:C,cutElement:L,quickCopyElement:T}=wa(),{selectAllElement:E}=xa(),{moveElement:M}=ka(),{orderElement:U}=ba(),{redo:W,undo:D}=da(),{enterScreening:H,enterScreeningFromStart:F}=Ca(),{scaleCanvas:A,resetCanvas:Z}=La(),O=()=>{l.value.length?C():u.value&&f()},z=()=>{l.value.length?L():u.value&&w()},P=()=>{l.value.length?T():u.value&&x()},B=()=>{r.value&&E(),u.value&&k()},N=()=>{r.value&&S()},j=()=>{r.value&&b()},Y=()=>{r.value&&_()},V=()=>{l.value.length?I():u.value&&y()},J=e=>{l.value.length?M(e):e!==ne.UP&&e!==ne.DOWN||h(e)},X=e=>{e===ne.PAGEUP?h(ne.UP):e===ne.PAGEDOWN&&h(ne.DOWN)},G=e=>{n.value&&U(n.value,e)},K=()=>{u.value&&g()},ee=()=>{if(!d.value.elements.length)return;if(!s.value){const t=d.value.elements[0];return void e.setActiveElementIdList([t.id])}const t=d.value.elements.findIndex((e=>e.id===s.value)),l=t>=d.value.elements.length-1?0:t+1,a=d.value.elements[l].id;e.setActiveElementIdList([a])},te=l=>{const{ctrlKey:n,shiftKey:o,altKey:i,metaKey:s}=l,d=n||s,m=l.key.toUpperCase();if(d&&!p.value&&t.setCtrlKeyState(!0),o&&!v.value&&t.setShiftKeyState(!0),a.value||m!==ne.SPACE||t.setSpaceKeyState(!0),d&&m===ne.P)return l.preventDefault(),void e.setDialogForExport("pdf");if(o&&m===ne.F5)return l.preventDefault(),H(),void t.setShiftKeyState(!1);if(m===ne.F5)return l.preventDefault(),void F();if(n&&m===ne.F)return l.preventDefault(),void e.setSearchPanelState(!c.value);if(r.value||u.value){if(d&&m===ne.C){if(a.value)return;l.preventDefault(),O()}if(d&&m===ne.X){if(a.value)return;l.preventDefault(),z()}if(d&&m===ne.D){if(a.value)return;l.preventDefault(),P()}if(d&&m===ne.Z){if(a.value)return;l.preventDefault(),D()}if(d&&m===ne.Y){if(a.value)return;l.preventDefault(),W()}if(d&&m===ne.A){if(a.value)return;l.preventDefault(),B()}if(d&&m===ne.L){if(a.value)return;l.preventDefault(),N()}if(!o&&d&&m===ne.G){if(a.value)return;l.preventDefault(),j()}if(o&&d&&m===ne.G){if(a.value)return;l.preventDefault(),Y()}if(i&&m===ne.F){if(a.value)return;l.preventDefault(),G(Q.TOP)}if(i&&m===ne.B){if(a.value)return;l.preventDefault(),G(Q.BOTTOM)}if(m===ne.DELETE||m===ne.BACKSPACE){if(a.value)return;l.preventDefault(),V()}if(m===ne.UP){if(a.value)return;l.preventDefault(),J(ne.UP)}if(m===ne.DOWN){if(a.value)return;l.preventDefault(),J(ne.DOWN)}if(m===ne.LEFT){if(a.value)return;l.preventDefault(),J(ne.LEFT)}if(m===ne.RIGHT){if(a.value)return;l.preventDefault(),J(ne.RIGHT)}if(m===ne.PAGEUP){if(a.value)return;l.preventDefault(),X(ne.PAGEUP)}if(m===ne.PAGEDOWN){if(a.value)return;l.preventDefault(),X(ne.PAGEDOWN)}if(m===ne.ENTER){if(a.value)return;l.preventDefault(),K()}if(m===ne.MINUS){if(a.value)return;l.preventDefault(),A("-")}if(m===ne.EQUAL){if(a.value)return;l.preventDefault(),A("+")}if(m===ne.DIGIT_0){if(a.value)return;l.preventDefault(),Z()}if(m===ne.TAB){if(a.value)return;l.preventDefault(),ee()}}},le=()=>{p.value&&t.setCtrlKeyState(!1),v.value&&t.setShiftKeyState(!1),m.value&&t.setSpaceKeyState(!1)};(0,i.bv)((()=>{document.addEventListener("keydown",te),document.addEventListener("keyup",le),window.addEventListener("blur",le)})),(0,i.Ah)((()=>{document.removeEventListener("keydown",te),document.removeEventListener("keyup",le),window.removeEventListener("blur",le)}))},Ea=()=>{const{editorAreaFocus:e,thumbnailsFocus:t,disableHotkeys:l}=(0,o.Jk)(R()),{pasteTextClipboardData:a}=ma(),{createImageElement:n}=pa(),s=e=>{na(e).then((e=>n(e)))},r=n=>{if(!e.value&&!t.value)return;if(l.value)return;if(!n.clipboardData)return;const o=n.clipboardData.items,i=o[0];if(i){for(const e of o)if("file"===e.kind&&-1!==e.type.indexOf("image")){const t=e.getAsFile();return void(t&&s(t))}"string"===i.kind&&"text/plain"===i.type&&i.getAsString((e=>a(e)))}};(0,i.bv)((()=>{document.addEventListener("paste",r)})),(0,i.Ah)((()=>{document.removeEventListener("paste",r)}))},Ma=l(7536),Ua=()=>{const e=$(),{theme:t}=(0,o.Jk)($()),{addSlidesFromData:l,isEmptySlide:a}=va(),n=(0,s.iH)(!1),i=(t,n=!1)=>{const o=t[0],i=new FileReader;i.addEventListener("load",(()=>{try{const t=JSON.parse(ve(i.result));n||a.value?e.setSlides(t):l(t)}catch{ta.error("无法正确读取 / 解析该文件")}})),i.readAsText(o)},u=e=>{let t=[0,0],l=[0,0];return e.isFlipV||e.isFlipH?e.isFlipV&&e.isFlipH?(t=[e.width,e.height],l=[0,0]):e.isFlipV&&!e.isFlipH?(t=[0,e.height],l=[e.width,0]):(t=[e.width,0],l=[0,e.height]):(t=[0,0],l=[e.width,e.height]),{type:"line",id:(0,r.x0)(10),width:e.borderWidth||1,left:e.left,top:e.top,start:t,end:l,style:"solid"===e.borderType?"solid":"dashed",color:e.borderColor,points:["","straightConnector1"===e.shapType?"arrow":""]}},c=o=>{const i=o[0];if(!i)return;n.value=!0;const s=[];for(const e of ua)s.push(...e.children);const c=new FileReader;c.onload=async o=>{const i=await(0,Ma.Q)(o.target.result,{slideFactor:75/914400,fontsizeFactor:100/98}),c=i.size.width,d=oa/c,p=[];for(const e of i.slides){const{type:l,value:a}=e.fill;let n;n="image"===l?{type:"image",image:a.picBase64,imageSize:"cover"}:"gradient"===l?{type:"gradient",gradientType:"linear",gradientColor:[a.colors[0].color,a.colors[a.colors.length-1].color],gradientRotate:a.rot}:{type:"solid",color:a};const o={id:(0,r.x0)(10),elements:[],background:n},i=e=>{for(const l of e)if(l.width=l.width*d,l.height=l.height*d,l.left=l.left*d,l.top=l.top*d,"text"===l.type){const e={type:"text",id:(0,r.x0)(10),width:l.width,height:l.height,left:l.left,top:l.top,rotate:l.rotate,defaultFontName:t.value.fontName,defaultColor:t.value.fontColor,content:l.content,lineHeight:1,outline:{color:l.borderColor,width:l.borderWidth,style:"solid"===l.borderType?"solid":"dashed"},fill:l.fillColor,vertical:l.isVertical};l.shadow&&(e.shadow=l.shadow),o.elements.push(e)}else if("image"===l.type)o.elements.push({type:"image",id:(0,r.x0)(10),src:l.src,width:l.width,height:l.height,left:l.left,top:l.top,fixedRatio:!0,rotate:l.rotate});else if("audio"===l.type)o.elements.push({type:"audio",id:(0,r.x0)(10),src:l.blob,width:l.width,height:l.height,left:l.left,top:l.top,rotate:0,fixedRatio:!1,color:t.value.themeColor,loop:!1,autoplay:!1});else if("video"===l.type)o.elements.push({type:"video",id:(0,r.x0)(10),src:l.blob||l.src,width:l.width,height:l.height,left:l.left,top:l.top,rotate:0,autoplay:!1});else if("shape"===l.type)if("line"===l.shapType||/Connector/.test(l.shapType)){const e=u(l);o.elements.push(e)}else{const e=s.find((e=>e.pptxShapeType===l.shapType)),a={mid:"middle",down:"bottom",up:"top"},n={type:"shape",id:(0,r.x0)(10),width:l.width,height:l.height,left:l.left,top:l.top,viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:l.fillColor||"none",fixedRatio:!1,rotate:l.rotate,outline:{color:l.borderColor,width:l.borderWidth,style:"solid"===l.borderType?"solid":"dashed"},text:{content:l.content,defaultFontName:t.value.fontName,defaultColor:t.value.fontColor,align:a[l.vAlign]||"middle"},flipH:l.isFlipH,flipV:l.isFlipV};if(l.shadow&&(n.shadow=l.shadow),e&&(n.path=e.path,n.viewBox=e.viewBox,e.pathFormula)){n.pathFormula=e.pathFormula,n.viewBox=[l.width,l.height];const t=ra[e.pathFormula];"editable"in t?(n.path=t.formula(l.width,l.height,t.defaultValue),n.keypoint=t.defaultValue):n.path=t.formula(l.width,l.height)}"custom"===l.shapType&&(n.special=!0,n.path=l.path,n.viewBox=[l.width,l.height]),o.elements.push(n)}else if("table"===l.type){const e=l.data.length,a=l.data[0].length,n={fontname:t.value.fontName,color:t.value.fontColor},i=[];for(let t=0;te+"")),a=["系列1"],n=[t[1]]}else{const t=l.data;e=Object.values(t[0].xlabels),a=t.map((e=>e.key)),n=t.map((e=>e.values.map((e=>e.y))))}const i={};let s="bar";switch(l.chartType){case"barChart":case"bar3DChart":s="bar","bar"===l.barDir&&(i.horizontalBars=!0),"stacked"!==l.grouping&&"percentStacked"!==l.grouping||(i.stackBars=!0);break;case"lineChart":case"line3DChart":case"areaChart":case"area3DChart":case"scatterChart":case"bubbleChart":s="line","areaChart"!==l.chartType&&"area3DChart"!==l.chartType||(i.showArea=!0),"scatterChart"!==l.chartType&&"bubbleChart"!==l.chartType||(i.showLine=!1);break;case"pieChart":case"pie3DChart":case"doughnutChart":s="pie","doughnutChart"===l.chartType&&(i.donut=!0);break;default:}o.elements.push({type:"chart",id:(0,r.x0)(10),chartType:s,width:l.width,height:l.height,left:l.left,top:l.top,rotate:0,themeColor:[t.value.themeColor],gridColor:t.value.fontColor,data:{labels:e,legends:a,series:n},options:i})}else if("group"===l.type||"diagram"===l.type){const e=l.elements.map((e=>({...e,left:e.left+l.left,top:e.top+l.top})));i(e)}};i(e.elements),p.push(o)}a.value?e.setSlides(p):l(p),n.value=!1},c.readAsArrayBuffer(i)};return{importSpecificFile:i,importPPTXFile:c,exporting:n}};const Wa={class:"hotkey-doc"},Da={class:"title"},Ha={class:"label"},Fa={class:"value"};var Aa=(0,i.aZ)({__name:"HotkeyDoc",setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Wa,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(ie),(e=>((0,i.wg)(),(0,i.iD)(i.HY,{key:e.type},[(0,i._)("div",Da,(0,oe.zw)(e.type),1),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.children,(e=>((0,i.wg)(),(0,i.iD)("div",{class:"hotkey-item",key:e.label},[(0,i._)("div",Ha,(0,oe.zw)(e.label),1),(0,i._)("div",Fa,(0,oe.zw)(e.value),1)])))),128))],64)))),128))]))}});const $a=(0,Vl.Z)(Aa,[["__scopeId","data-v-a0322054"]]);var Za=$a;const Oa=["accept"];var Ra=(0,i.aZ)({__name:"FileInput",props:{accept:{default:"image/*"}},emits:["change"],setup(e,{emit:t}){const l=t,a=(0,s.iH)(),n=()=>{a.value&&(a.value.value="",a.value.click())},o=e=>{const t=e.target.files;t&&l("change",t)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"file-input",onClick:t[1]||(t[1]=e=>n())},[(0,i.WI)(e.$slots,"default"),(0,i._)("input",{class:"input",type:"file",name:"upload",ref_key:"inputRef",ref:a,accept:e.accept,onChange:t[0]||(t[0]=e=>o(e))},null,40,Oa)]))}});const za=(0,Vl.Z)(Ra,[["__scopeId","data-v-64bedb34"]]);var Pa=za;const Ba=e=>((0,i.dD)("data-v-a5c6b41c"),e=e(),(0,i.Cn)(),e),Na={key:0,class:"fullscreen-spin"},ja={class:"spin"},Ya=Ba((()=>(0,i._)("div",{class:"spinner"},null,-1))),Va={class:"text"};var Ja=(0,i.aZ)({__name:"FullscreenSpin",props:{loading:{type:Boolean,default:!1},tip:{default:""}},setup(e){return(e,t)=>e.loading?((0,i.wg)(),(0,i.iD)("div",Na,[(0,i._)("div",ja,[Ya,(0,i._)("div",Va,(0,oe.zw)(e.tip),1)])])):(0,i.kq)("",!0)}});const qa=(0,Vl.Z)(Ja,[["__scopeId","data-v-a5c6b41c"]]);var Xa=qa;const Ga={class:"header"};var Ka=(0,i.aZ)({__name:"Drawer",props:{visible:{type:Boolean},width:{default:320},contentStyle:{},placement:{default:"right"}},emits:["update:visible"],setup(e,{emit:t}){const l=e,a=t,o=(0,s.iH)(!1),r=(0,i.Fl)((()=>({width:l.width+"px",...l.contentStyle||{}})));return(e,t)=>{const s=(0,i.up)("IconClose");return(0,i.wg)(),(0,i.j4)(i.lR,{to:"body"},[(0,i.Wm)(n.uT,{name:`drawer-slide-${e.placement}`,onAfterLeave:t[1]||(t[1]=e=>o.value=!1),onBeforeEnter:t[2]||(t[2]=e=>o.value=!0)},{default:(0,i.w5)((()=>[(0,i.wy)((0,i._)("div",{class:(0,oe.C_)(["drawer",e.placement]),style:(0,oe.j5)({width:l.width+"px"})},[(0,i._)("div",Ga,[(0,i.WI)(e.$slots,"title"),(0,i._)("span",{class:"close-btn",onClick:t[0]||(t[0]=e=>a("update:visible",!1))},[(0,i.Wm)(s)])]),o.value?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"content",style:(0,oe.j5)(r.value)},[(0,i.WI)(e.$slots,"default")],4)):(0,i.kq)("",!0)],6),[[n.F8,e.visible]])])),_:3},8,["name"])])}}});const Qa=(0,Vl.Z)(Ka,[["__scopeId","data-v-749dadac"]]);var en=Qa;const tn={class:"prefix"},ln=["disabled","value","placeholder"],an={class:"suffix"};var nn=(0,i.aZ)({__name:"Input",props:{value:{},disabled:{type:Boolean,default:!1},placeholder:{default:""}},emits:["update:value","input","change","blur","focus","enter"],setup(e,{expose:t,emit:l}){const a=l,o=(0,s.iH)(!1),r=e=>{a("update:value",e.target.value)},u=e=>{o.value=!1,a("blur",e)},c=e=>{o.value=!0,a("focus",e)},d=(0,s.iH)(),p=()=>{d.value&&d.value.focus()};return t({focus:p}),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["input",{disabled:e.disabled,focused:o.value}])},[(0,i._)("span",tn,[(0,i.WI)(e.$slots,"prefix")]),(0,i._)("input",{type:"text",ref_key:"inputRef",ref:d,disabled:e.disabled,value:e.value,placeholder:e.placeholder,onInput:t[0]||(t[0]=e=>r(e)),onFocus:t[1]||(t[1]=e=>c(e)),onBlur:t[2]||(t[2]=e=>u(e)),onChange:t[3]||(t[3]=e=>a("change",e)),onKeydown:t[4]||(t[4]=(0,n.D2)((e=>a("enter",e)),["enter"]))},null,40,ln),(0,i._)("span",an,[(0,i.WI)(e.$slots,"suffix")])],2))}});const on=(0,Vl.Z)(nn,[["__scopeId","data-v-a97ba0dc"]]);var sn=on,rn=l(6488),un=(l(8627),(0,i.aZ)({__name:"Popover",props:{value:{type:Boolean,default:!1},trigger:{default:"click"},placement:{default:"bottom"},appendTo:{},contentStyle:{},center:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e,a=t,n=(0,s.iH)(),o=(0,s.iH)(),r=(0,s.iH)(),u=(0,s.iH)(!1),c=(0,i.Fl)((()=>l.contentStyle||{}));return(0,i.YP)((()=>l.value),(()=>{n.value&&(l.value?n.value.show():n.value.hide())})),(0,i.bv)((()=>{n.value=(0,rn.ZP)(o.value,{content:r.value,allowHTML:!0,trigger:l.trigger,placement:l.placement,interactive:!0,appendTo:l.appendTo||document.body,maxWidth:"none",offset:[0,8],duration:200,animation:"scale",theme:"popover",onShow(){u.value=!0},onShown(){l.value||a("update:value",!0)},onHidden(){l.value&&a("update:value",!1),u.value=!1}})})),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["popover",{center:e.center}]),ref_key:"triggerRef",ref:o},[(0,i._)("div",{class:"popover-content",style:(0,oe.j5)(c.value),ref_key:"contentRef",ref:r},[u.value?(0,i.WI)(e.$slots,"content",{key:0}):(0,i.kq)("",!0)],4),(0,i.WI)(e.$slots,"default")],2))}}));const cn=(0,Vl.Z)(un,[["__scopeId","data-v-70fabe9a"]]);var dn=cn,pn=(0,i.aZ)({__name:"PopoverMenuItem",props:{center:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:t}){const l=t;return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["popover-menu-item",{center:e.center}]),onClick:t[0]||(t[0]=e=>l("click"))},[(0,i.WI)(e.$slots,"default")],2))}});const vn=(0,Vl.Z)(pn,[["__scopeId","data-v-2f137c4f"]]);var mn=vn;const hn={class:"editor-header"},fn={class:"left"},gn={class:"menu-item"},yn={class:"title"},wn=["title"],xn={class:"right"},kn={class:"group-menu-item"},bn={class:"arrow-btn"},_n={class:"github-link",href:"https://github.com/pipipi-pikachu/PPTist",target:"_blank"},In={class:"menu-item"};var Sn=(0,i.aZ)({__name:"index",setup(e){const t=R(),l=$(),{title:a}=(0,o.Jk)(l),{enterScreening:n,enterScreeningFromStart:r}=Ca(),{importSpecificFile:u,importPPTXFile:c,exporting:d}=Ua(),{resetSlides:p}=ha(),v=(0,s.iH)(!1),m=(0,s.iH)(!1),h=(0,s.iH)(!1),f=(0,s.iH)(),g=(0,s.iH)(""),y=()=>{g.value=a.value,h.value=!0,(0,i.Y3)((()=>f.value?.focus()))},w=()=>{l.setTitle(g.value),h.value=!1},x=e=>{window.open(e),v.value=!1},k=e=>{t.setDialogForExport(e),v.value=!1};return(e,t)=>{const l=(0,i.up)("IconHamburgerButton"),o=(0,i.up)("IconPpt"),b=(0,i.up)("IconDown"),_=(0,i.up)("IconDownload"),I=(0,i.up)("IconGithub"),S=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",hn,[(0,i._)("div",fn,[(0,i.Wm)(dn,{trigger:"click",placement:"bottom-start",value:v.value,"onUpdate:value":t[7]||(t[7]=e=>v.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(Pa,{accept:".pptist",onChange:t[0]||(t[0]=e=>{(0,s.SU)(u)(e),v.value=!1})},{default:(0,i.w5)((()=>[(0,i.Wm)(mn,null,{default:(0,i.w5)((()=>[(0,i.Uk)("导入 pptist 文件")])),_:1})])),_:1}),(0,i.Wm)(Pa,{accept:"application/vnd.openxmlformats-officedocument.presentationml.presentation",onChange:t[1]||(t[1]=e=>{(0,s.SU)(c)(e),v.value=!1})},{default:(0,i.w5)((()=>[(0,i.Wm)(mn,null,{default:(0,i.w5)((()=>[(0,i.Uk)("导入 pptx 文件(测试版)")])),_:1})])),_:1}),(0,i.Wm)(mn,{onClick:t[2]||(t[2]=e=>k("pptx"))},{default:(0,i.w5)((()=>[(0,i.Uk)("导出文件")])),_:1}),(0,i.Wm)(mn,{onClick:t[3]||(t[3]=e=>{(0,s.SU)(p)(),v.value=!1})},{default:(0,i.w5)((()=>[(0,i.Uk)("重置幻灯片")])),_:1}),(0,i.Wm)(mn,{onClick:t[4]||(t[4]=e=>x("https://github.com/pipipi-pikachu/PPTist/issues"))},{default:(0,i.w5)((()=>[(0,i.Uk)("意见反馈")])),_:1}),(0,i.Wm)(mn,{onClick:t[5]||(t[5]=e=>x("https://github.com/pipipi-pikachu/PPTist/blob/master/doc/Q&A.md"))},{default:(0,i.w5)((()=>[(0,i.Uk)("常见问题")])),_:1}),(0,i.Wm)(mn,{onClick:t[6]||(t[6]=e=>{v.value=!1,m.value=!0})},{default:(0,i.w5)((()=>[(0,i.Uk)("快捷键")])),_:1})])),default:(0,i.w5)((()=>[(0,i._)("div",gn,[(0,i.Wm)(l,{class:"icon"})])])),_:1},8,["value"]),(0,i._)("div",yn,[h.value?((0,i.wg)(),(0,i.j4)(sn,{key:0,class:"title-input",ref_key:"titleInputRef",ref:f,value:g.value,"onUpdate:value":t[8]||(t[8]=e=>g.value=e),onBlur:t[9]||(t[9]=e=>w())},null,8,["value"])):((0,i.wg)(),(0,i.iD)("div",{key:1,class:"title-text",onClick:t[10]||(t[10]=e=>y()),title:(0,s.SU)(a)},(0,oe.zw)((0,s.SU)(a)),9,wn))])]),(0,i._)("div",xn,[(0,i._)("div",kn,[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"menu-item",onClick:t[11]||(t[11]=e=>(0,s.SU)(n)())},[(0,i.Wm)(o,{class:"icon"})])),[[S,"幻灯片放映"]]),(0,i.Wm)(dn,{trigger:"click",center:""},{content:(0,i.w5)((()=>[(0,i.Wm)(mn,{onClick:t[12]||(t[12]=e=>(0,s.SU)(r)())},{default:(0,i.w5)((()=>[(0,i.Uk)("从头开始")])),_:1}),(0,i.Wm)(mn,{onClick:t[13]||(t[13]=e=>(0,s.SU)(n)())},{default:(0,i.w5)((()=>[(0,i.Uk)("从当前页开始")])),_:1})])),default:(0,i.w5)((()=>[(0,i._)("div",bn,[(0,i.Wm)(b,{class:"arrow"})])])),_:1})]),(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"menu-item",onClick:t[14]||(t[14]=e=>k("pptx"))},[(0,i.Wm)(_,{class:"icon"})])),[[S,"导出"]]),(0,i._)("a",_n,[(0,i._)("div",In,[(0,i.Wm)(I,{class:"icon"})])])]),(0,i.Wm)(en,{width:320,visible:m.value,"onUpdate:visible":t[15]||(t[15]=e=>m.value=e),placement:"right"},{default:(0,i.w5)((()=>[(0,i.Wm)(Za)])),_:1},8,["visible"]),(0,i.Wm)(Xa,{loading:(0,s.SU)(d),tip:"正在导入..."},null,8,["loading"])])}}});const Cn=(0,Vl.Z)(Sn,[["__scopeId","data-v-0b9f8c7b"]]);var Ln=Cn;const Tn=Symbol(),En=Symbol(),Mn=Symbol(),Un=()=>{const e=window.getSelection();e&&e.removeAllRanges()};var Wn=e=>{const t=(0,s.iH)(0),l=(0,s.iH)(0),a=R(),{canvasPercentage:n,canvasDragged:r}=(0,o.Jk)(a),{viewportRatio:u}=(0,o.Jk)($()),c=()=>{if(!e.value)return;const o=e.value.clientWidth,i=e.value.clientHeight;if(i/o>u.value){const e=o*(n.value/100);a.setCanvasScale(e/oa),t.value=(o-e)/2,l.value=(i-e*u.value)/2}else{const e=i*(n.value/100);a.setCanvasScale(e/(oa*u.value)),t.value=(o-e/u.value)/2,l.value=(i-e)/2}},d=(n,o)=>{if(!e.value)return;const i=e.value.clientWidth,s=e.value.clientHeight,r=i*(n/100),c=i*(o/100),d=s*(n/100),p=s*(o/100);s/i>u.value?a.setCanvasScale(r/oa):a.setCanvasScale(d/(oa*u.value)),t.value=t.value-(r-c)/2,l.value=l.value-(d-p)/2};(0,i.YP)(n,d),(0,i.YP)(u,c),(0,i.YP)(r,(()=>{r.value||c()}));const p=(0,i.Fl)((()=>({width:oa,height:oa*u.value,left:t.value,top:l.value}))),v=new ResizeObserver(c);(0,i.bv)((()=>{e.value&&v.observe(e.value)})),(0,i.Ah)((()=>{e.value&&v.unobserve(e.value)}));const m=e=>{let n=!0;const o=e.pageX,i=e.pageY,s=t.value,r=l.value;document.onmousemove=e=>{if(!n)return;const a=e.pageX,u=e.pageY;t.value=s+(a-o),l.value=r+(u-i)},document.onmouseup=()=>{n=!1,document.onmousemove=null,document.onmouseup=null,a.setCanvasDragged(!0)}};return{viewportStyles:p,dragViewport:m}},Dn=(e,t)=>{const l=R(),{canvasScale:a,hiddenElementIdList:n}=(0,o.Jk)(l),i=(0,s.iH)(!1),r=(0,s.iH)(1),u=(0,s.iH)({top:0,left:0,width:0,height:0}),c=o=>{if(!t.value)return;let s=!0;const c=t.value.getBoundingClientRect(),d=5,p=o.pageX,v=o.pageY,m=(p-c.x)/a.value,h=(v-c.y)/a.value;u.value={top:h,left:m,width:0,height:0},i.value=!1,r.value=4,document.onmousemove=e=>{if(!s)return;const t=e.pageX,l=e.pageY,n=(t-p)/a.value,o=(l-v)/a.value,c=Math.abs(n),m=Math.abs(o);if(c0&&o>0?h=4:n<0&&o<0?h=2:n>0&&o<0?h=1:n<0&&o>0&&(h=3),u.value={...u.value,width:c,height:m},i.value=!0,r.value=h},document.onmouseup=()=>{document.onmousemove=null,document.onmouseup=null,s=!1;let t=[];for(let l=0;lo&&pi&&mo-s&&pi-c&&mo&&pi-c&&mo-s&&pi&&m{if(l.groupId){const a=t.map((e=>e.id)),n=e.value.filter((e=>e.groupId===l.groupId));return n.every((e=>a.includes(e.id)))}return!0}));const a=t.map((e=>e.id));l.setActiveElementIdList(a),i.value=!1}};return{mouseSelection:u,mouseSelectionVisible:i,mouseSelectionQuadrant:r,updateMouseSelection:c}},Hn=e=>{const{disableHotkeys:t}=(0,o.Jk)(R()),{createImageElement:l,createTextElement:a}=pa(),n=e=>{if(!e.dataTransfer||0===e.dataTransfer.items.length)return;const n=e.dataTransfer.items[0];if("file"===n.kind&&-1!==n.type.indexOf("image")){const e=n.getAsFile();e&&na(e).then((e=>l(e)))}else"string"===n.kind&&"text/plain"===n.type&&n.getAsString((e=>{if(t.value)return;const l=la(e);a({left:0,top:0,width:600,height:50},{content:l})}))};(0,i.bv)((()=>{e.value&&e.value.addEventListener("drop",n),document.ondragleave=e=>e.preventDefault(),document.ondrop=e=>e.preventDefault(),document.ondragenter=e=>e.preventDefault(),document.ondragover=e=>e.preventDefault()})),(0,i.Ah)((()=>{e.value&&e.value.removeEventListener("drop",n),document.ondragleave=null,document.ondrop=null,document.ondragenter=null,document.ondragover=null}))};const Fn=(e,t)=>{const l=Math.atan2(e,t),a=180/Math.PI*l;return a};var An=(e,t,l)=>{const a=$(),{addHistorySnapshot:n}=da(),o=(o,i)=>{const s=!(o instanceof MouseEvent);if(s&&(!o.changedTouches||!o.changedTouches[0]))return;let r=!0,u=0;const c=i.rotate||0,d=i.left,p=i.top,v=i.width,m=i.height,h=d+v/2,f=p+m/2;if(!t.value)return;const g=t.value.getBoundingClientRect(),y=t=>{if(!r)return;const a=t instanceof MouseEvent?t.pageX:t.changedTouches[0].pageX,n=t instanceof MouseEvent?t.pageY:t.changedTouches[0].pageY,o=(a-g.left)/l.value,s=(n-g.top)/l.value,c=o-h,d=f-s;u=Fn(c,d);const p=5;Math.abs(u)<=p?u=0:u>0&&Math.abs(u-45)<=p?u-=u-45:u<0&&Math.abs(u+45)<=p?u-=u+45:u>0&&Math.abs(u-90)<=p?u-=u-90:u<0&&Math.abs(u+90)<=p?u-=u+90:u>0&&Math.abs(u-135)<=p?u-=u-135:u<0&&Math.abs(u+135)<=p?u-=u+135:u>0&&Math.abs(u-180)<=p?u-=u-180:u<0&&Math.abs(u+180)<=p&&(u-=u+180),e.value=e.value.map((e=>i.id===e.id?{...e,rotate:u}:e))},w=()=>{r=!1,document.onmousemove=null,document.onmouseup=null,c!==u&&(a.updateSlide({elements:e.value}),n())};s?(document.ontouchmove=y,document.ontouchend=w):(document.onmousemove=y,document.onmouseup=w)};return{rotateElement:o}};const $n={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格",video:"视频",audio:"音频",latex:"公式"},Zn={text:20,image:20,shape:15,chart:200,table:20,video:250,audio:20,latex:20},On=(e,t)=>{const{left:l,top:a,width:n,height:o}=e,i=Math.sqrt(Math.pow(n,2)+Math.pow(o,2))/2,s=180*Math.atan(o/n)/Math.PI,r=(180-t-s)*Math.PI/180,u=(s-t)*Math.PI/180,c=(90-t)*Math.PI/180,d=t*Math.PI/180,p=n/2,v=o/2,m=l+p,h=a+v,f={left:m+i*Math.cos(r),top:h-i*Math.sin(r)},g={left:m+v*Math.cos(c),top:h-v*Math.sin(c)},y={left:m+i*Math.cos(u),top:h-i*Math.sin(u)},w={left:m+p*Math.cos(d),top:h+p*Math.sin(d)},x={left:m-i*Math.cos(r),top:h+i*Math.sin(r)},k={left:m-v*Math.sin(d),top:h+v*Math.cos(d)},b={left:m-i*Math.cos(u),top:h+i*Math.sin(u)},_={left:m-p*Math.cos(d),top:h-p*Math.sin(d)};return{leftTopPoint:f,topPoint:g,rightTopPoint:y,rightPoint:w,rightBottomPoint:x,bottomPoint:k,leftBottomPoint:b,leftPoint:_}},Rn=(e,t)=>{const l={[le.RIGHT_BOTTOM]:t.leftTopPoint,[le.LEFT_BOTTOM]:t.rightTopPoint,[le.LEFT_TOP]:t.rightBottomPoint,[le.RIGHT_TOP]:t.leftBottomPoint,[le.TOP]:t.bottomPoint,[le.BOTTOM]:t.topPoint,[le.LEFT]:t.rightPoint,[le.RIGHT]:t.leftPoint};return l[e]};var zn,Pn,Bn=(e,t,l)=>{const a=R(),n=$(),{activeElementIdList:i,activeGroupElementId:s}=(0,o.Jk)(a),{viewportRatio:r}=(0,o.Jk)(n),{ctrlOrShiftKeyActive:u}=(0,o.Jk)(q()),{addHistorySnapshot:c}=da(),d=(o,d,p)=>{const v=!(o instanceof MouseEvent);if(v&&(!o.changedTouches||!o.changedTouches[0]))return;let m=!0;a.setScalingState(!0);const h=d.left,f=d.top,g=d.width,y=d.height,w="table"===d.type?d.cellMinHeight:0,x="rotate"in d&&d.rotate?d.rotate:0,k=Math.PI*x/180,b=u.value||"fixedRatio"in d&&d.fixedRatio,_=g/y,I=v?o.changedTouches[0].pageX:o.pageX,S=v?o.changedTouches[0].pageY:o.pageY,C=Zn[d.type]||20,L=e=>e{const t=C/_;return e{const a=5,n=[];let o=!1,i=!1;const s={offsetX:0,offsetY:0};if(l||0===l)for(let t=0;t{if(!m)return;const a=t instanceof MouseEvent?t.pageX:t.changedTouches[0].pageX,n=t instanceof MouseEvent?t.pageY:t.changedTouches[0].pageY,o=a-I,i=n-S;let s=g,r=y,u=h,c=f;if(x){const e=(Math.cos(k)*o+Math.sin(k)*i)/l.value;let t=(Math.cos(k)*i-Math.sin(k)*o)/l.value;b&&(p!==le.RIGHT_BOTTOM&&p!==le.LEFT_TOP||(t=e/_),p!==le.LEFT_BOTTOM&&p!==le.RIGHT_TOP||(t=-e/_)),p===le.RIGHT_BOTTOM?(s=L(g+e),r=T(y+t)):p===le.LEFT_BOTTOM?(s=L(g-e),r=T(y+t),u=h-(s-g)):p===le.LEFT_TOP?(s=L(g-e),r=T(y-t),u=h-(s-g),c=f-(r-y)):p===le.RIGHT_TOP?(s=L(g+e),r=T(y-t),c=f-(r-y)):p===le.TOP?(r=L(y-t),c=f-(r-y)):p===le.BOTTOM?r=L(y+t):p===le.LEFT?(s=L(g-e),u=h-(s-g)):p===le.RIGHT&&(s=L(g+e));const a=On({width:s,height:r,left:u,top:c},x),n=Rn(p,a),d=n.left,v=n.top,m=d-M,w=v-U;u-=m,c-=w}else{let e=o/l.value,t=i/l.value;if(b&&(p!==le.RIGHT_BOTTOM&&p!==le.LEFT_TOP||(t=e/_),p!==le.LEFT_BOTTOM&&p!==le.RIGHT_TOP||(t=-e/_)),p===le.RIGHT_BOTTOM){const{offsetX:l,offsetY:a}=H(h+g+e,f+y+t);e-=l,t-=a,b&&(a?e=t*_:t=e/_),s=L(g+e),r=T(y+t)}else if(p===le.LEFT_BOTTOM){const{offsetX:l,offsetY:a}=H(h+e,f+y+t);e-=l,t-=a,b&&(a?e=-t*_:t=-e/_),s=L(g-e),r=T(y+t),u=h-(s-g)}else if(p===le.LEFT_TOP){const{offsetX:l,offsetY:a}=H(h+e,f+t);e-=l,t-=a,b&&(a?e=t*_:t=e/_),s=L(g-e),r=T(y-t),u=h-(s-g),c=f-(r-y)}else if(p===le.RIGHT_TOP){const{offsetX:l,offsetY:a}=H(h+g+e,f+t);e-=l,t-=a,b&&(a?e=-t*_:t=-e/_),s=L(g+e),r=T(y-t),c=f-(r-y)}else if(p===le.LEFT){const{offsetX:t}=H(h+e,null);e-=t,s=L(g-e),u=h-(s-g)}else if(p===le.RIGHT){const{offsetX:t}=H(h+g+e,null);e-=t,s=L(g+e)}else if(p===le.TOP){const{offsetY:e}=H(null,f+t);t-=e,r=L(y-t),c=f-(r-y)}else if(p===le.BOTTOM){const{offsetY:e}=H(null,f+y+t);t-=e,r=L(y+t)}}e.value=e.value.map((e=>{if(d.id!==e.id)return e;if("shape"===e.type&&"pathFormula"in e&&e.pathFormula){const t=ra[e.pathFormula];let l="";return l="editable"in t?t.formula(s,r,e.keypoint):t.formula(s,r),{...e,left:u,top:c,width:s,height:r,viewBox:[s,r],path:l}}if("table"===e.type){let t=w+(r-y)/e.data.length;return t=t<36?36:t,t===w?{...e,left:u,width:s}:{...e,left:u,top:c,width:s,height:r,cellMinHeight:t<36?36:t}}return{...e,left:u,top:c,width:s,height:r}}))},A=l=>{m=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null,t.value=[];const o=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,i=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY;I===o&&S===i||(n.updateSlide({elements:e.value}),a.setScalingState(!1),c())};v?(document.ontouchmove=F,document.ontouchend=A):(document.onmousemove=F,document.onmouseup=A)},p=(t,a,o)=>{let s=!0;const{minX:r,maxX:d,minY:p,maxY:v}=a,m=d-r,h=v-p,f=m/h,g=t.pageX,y=t.pageY,w=JSON.parse(JSON.stringify(e.value));document.onmousemove=t=>{if(!s)return;const a=t.pageX,n=t.pageY,c=(a-g)/l.value;let x=(n-y)/l.value;u.value&&(o!==le.RIGHT_BOTTOM&&o!==le.LEFT_TOP||(x=c/f),o!==le.LEFT_BOTTOM&&o!==le.RIGHT_TOP||(x=-c/f));let k=r,b=d,_=p,I=v;o===le.RIGHT_BOTTOM?(b=d+c,I=v+x):o===le.LEFT_BOTTOM?(k=r+c,I=v+x):o===le.LEFT_TOP?(k=r+c,_=p+x):o===le.RIGHT_TOP?(b=d+c,_=p+x):o===le.TOP?_=p+x:o===le.BOTTOM?I=v+x:o===le.LEFT?k=r+c:o===le.RIGHT&&(b=d+c);const S=b-k,C=I-_;let L=S/m,T=C/h;L<=0&&(L=0),T<=0&&(T=0),e.value=e.value.map((e=>{if(("image"===e.type||"shape"===e.type)&&i.value.includes(e.id)){const t=w.find((t=>t.id===e.id));return{...e,width:t.width*L,height:t.height*T,left:k+(t.left-r)*L,top:_+(t.top-p)*T}}return e}))},document.onmouseup=t=>{s=!1,document.onmousemove=null,document.onmouseup=null,g===t.pageX&&y===t.pageY||(n.updateSlide({elements:e.value}),c())}};return{scaleElement:d,scaleMultiElement:p}},Nn=(e,t)=>{const l=R(),{activeElementIdList:a,activeGroupElementId:n,handleElementId:i,editorAreaFocus:s}=(0,o.Jk)(l),{ctrlOrShiftKeyActive:r}=(0,o.Jk)(q()),u=(o,u,c=!0)=>{if(s.value||l.setEditorareaFocus(!0),a.value.includes(u.id)){if(r.value){let t=[];if(u.groupId){const l=[];e.value.forEach((e=>{e.groupId===u.groupId&&l.push(e.id)})),t=a.value.filter((e=>!l.includes(e)))}else t=a.value.filter((e=>e!==u.id));t.length>0&&l.setActiveElementIdList(t)}else if(i.value!==u.id)l.setHandleElementId(u.id);else if(n.value!==u.id){const e=o instanceof MouseEvent?o.pageX:o.changedTouches[0].pageX,t=o instanceof MouseEvent?o.pageY:o.changedTouches[0].pageY;o.target.onmouseup=a=>{const n=a.pageX,o=a.pageY;e===n&&t===o&&(l.setActiveGroupElementId(u.id),a.target.onmouseup=null)}}}else{let t=[];if(t=r.value?[...a.value,u.id]:[u.id],u.groupId){const l=[];e.value.forEach((e=>{e.groupId===u.groupId&&l.push(e.id)})),t=[...t,...l]}l.setActiveElementIdList((0,D.uniq)(t)),l.setHandleElementId(u.id)}c&&t(o,u)};return{selectElement:u}},jn=(e,t,l)=>{const a=$(),{activeElementIdList:n,activeGroupElementId:i}=(0,o.Jk)(R()),{shiftKeyState:s}=(0,o.Jk)(q()),{viewportRatio:r}=(0,o.Jk)(a),{addHistorySnapshot:u}=da(),c=(o,c)=>{const d=!(o instanceof MouseEvent);if(d&&(!o.changedTouches||!o.changedTouches[0]))return;if(!n.value.includes(c.id))return;let p=!0;const v=oa,m=oa*r.value,h=5,f=JSON.parse(JSON.stringify(e.value)),g=f.filter((e=>n.value.includes(e.id))),y=c.left,w=c.top,x=c.width,k="height"in c&&c.height?c.height:0,b="rotate"in c&&c.rotate?c.rotate:0,_=d?o.changedTouches[0].pageX:o.pageX,I=d?o.changedTouches[0].pageY:o.pageY;let S=null;const C=c.id===i.value;let L=[],T=[];for(const t of e.value){if("line"===t.type)continue;if(C&&t.id===c.id)continue;if(!C&&n.value.includes(t.id))continue;let e,l,a,o;if("rotate"in t&&t.rotate){const{xRange:n,yRange:i}=ye({left:t.left,top:t.top,width:t.width,height:t.height,rotate:t.rotate});e=n[0],l=i[0],a=n[1]-n[0],o=i[1]-i[0]}else e=t.left,l=t.top,a=t.width,o=t.height;const i=e+a,s=l+o,r=l+o/2,u=e+a/2,d={value:l,range:[e,i]},p={value:s,range:[e,i]},v={value:r,range:[e,i]},m={value:e,range:[l,s]},h={value:i,range:[l,s]},f={value:u,range:[l,s]};L.push(d,p,v),T.push(m,h,f)}const E={value:0,range:[0,v]},M={value:m,range:[0,v]},U={value:m/2,range:[0,v]},W={value:0,range:[0,m]},D={value:v,range:[0,m]},H={value:v/2,range:[0,m]};L.push(E,M,U),T.push(W,D,H),L=be(L),T=be(T);const F=a=>{const o=a instanceof MouseEvent?a.pageX:a.changedTouches[0].pageX,i=a instanceof MouseEvent?a.pageY:a.changedTouches[0].pageY;if(!1!==S&&(S=Math.abs(_-o)Math.abs(u)&&(u=0),Math.abs(r)e.id===c.id?{...e,left:E,top:M}:e));else{const t=e.value.find((e=>e.id===c.id));if(!t)return;e.value=e.value.map((e=>n.value.includes(e.id)?e.id===c.id?{...e,left:E,top:M}:{...e,left:e.left+(E-t.left),top:e.top+(M-t.top)}:e))}},A=l=>{p=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null,t.value=[];const n=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,o=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY;_===n&&I===o||(a.updateSlide({elements:e.value}),u())};d?(document.ontouchmove=F,document.ontouchend=A):(document.onmousemove=F,document.onmouseup=A)};return{dragElement:c}},Yn=e=>{const t=$(),{canvasScale:l}=(0,o.Jk)(R()),{ctrlOrShiftKeyActive:a}=(0,o.Jk)(q()),{addHistorySnapshot:n}=da(),i=(o,i,s)=>{let r=!0;const u=8,c=o.pageX,d=o.pageY,p=[];for(let t=0;t{if(!r)return;const n=t.pageX,o=t.pageY,v=(n-c)/l.value,m=(o-d)/l.value;let h=i.left+i.start[0],f=i.top+i.start[1],g=i.left+i.end[0],y=i.top+i.end[1];const w=i.broken||i.curve||[0,0];let x=i.left+w[0],k=i.top+w[1];const[b,_]=i.cubic||[[0,0],[0,0]];let I=i.left+b[0],S=i.top+b[1],C=i.left+_[0],L=i.top+_[1];if(s===ae.START){h+=v,f+=m,Math.abs(h-g)g&&(W[0]=M-T,D[0]=0),f>y&&(W[1]=U-E,D[1]=0),e.value=e.value.map((e=>{if(e.id===i.id){const t={...e,left:T,top:E,start:W,end:D};return s===ae.START||s===ae.END?a.value?(i.broken&&(t.broken=[x-T,k-E]),i.curve&&(t.curve=[x-T,k-E]),i.cubic&&(t.cubic=[[I-T,S-E],[C-T,L-E]])):(i.broken&&(t.broken=[(W[0]+D[0])/2,(W[1]+D[1])/2]),i.curve&&(t.curve=[(W[0]+D[0])/2,(W[1]+D[1])/2]),i.cubic&&(t.cubic=[[(W[0]+D[0])/2,(W[1]+D[1])/2],[(W[0]+D[0])/2,(W[1]+D[1])/2]])):s===ae.C?(i.broken&&(t.broken=[x-T,k-E]),i.curve&&(t.curve=[x-T,k-E])):i.cubic&&(t.cubic=[[I-T,S-E],[C-T,L-E]]),t}return e}))},document.onmouseup=l=>{r=!1,document.onmousemove=null,document.onmouseup=null;const a=l.pageX,o=l.pageY;c===a&&d===o||(t.updateSlide({elements:e.value}),n())}};return{dragLineElement:i}},Vn=(e,t)=>{const l=$(),{addHistorySnapshot:a}=da(),n=(n,o)=>{const i=!(n instanceof MouseEvent);if(i&&(!n.changedTouches||!n.changedTouches[0]))return;let s=!0;const r=i?n.changedTouches[0].pageX:n.pageX,u=i?n.changedTouches[0].pageY:n.pageY,c=ra[o.pathFormula];let d=null;if("editable"in c){const e=c.getBaseSize(o.width,o.height),t=e*o.keypoint,[l,a]=c.range,n=c.relative;d={baseSize:e,originPos:t,min:l,max:a,relative:n}}const p=l=>{if(!s)return;const a=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,n=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY,i=(a-r)/t.value,p=(n-u)/t.value;e.value=e.value.map((e=>{if(e.id===o.id&&d){const{baseSize:t,originPos:l,min:a,max:n,relative:o}=d,s=e;let r=0;return"left"===o&&(r=(l+i)/t),"right"===o&&(r=(l-i)/t),"center"===o&&(r=(l-2*i)/t),"top"===o&&(r=(l+p)/t),"bottom"===o&&(r=(l-p)/t),rn&&(r=n),{...e,keypoint:r,path:c.formula(s.width,s.height,r)}}return e}))},v=t=>{s=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null;const n=t instanceof MouseEvent?t.pageX:t.changedTouches[0].pageX,o=t instanceof MouseEvent?t.pageY:t.changedTouches[0].pageY;r===n&&u===o||(l.updateSlide({elements:e.value}),a())};i?(document.ontouchmove=p,document.ontouchend=v):(document.onmousemove=p,document.onmouseup=v)};return{moveShapeKeypoint:n}},Jn=e=>{const t=R(),{canvasScale:l,creatingElement:a}=(0,o.Jk)(t),n=t=>{const{start:a,end:n}=t;if(!e.value)return;const o=e.value.getBoundingClientRect(),[i,s]=a,[r,u]=n,c=Math.min(i,r),d=Math.max(i,r),p=Math.min(s,u),v=Math.max(s,u),m=(c-o.x)/l.value,h=(p-o.y)/l.value,f=(d-c)/l.value,g=(v-p)/l.value;return{left:m,top:h,width:f,height:g}},i=t=>{const{start:a,end:n}=t;if(!e.value)return;const o=e.value.getBoundingClientRect(),[i,s]=a,[r,u]=n,c=Math.min(i,r),d=Math.max(i,r),p=Math.min(s,u),v=Math.max(s,u),m=(c-o.x)/l.value,h=(p-o.y)/l.value,f=(d-c)/l.value,g=(v-p)/l.value,y=[i===c?0:f,s===p?0:g],w=[r===c?0:f,u===p?0:g];return{left:m,top:h,start:y,end:w}},{createTextElement:s,createShapeElement:r,createLineElement:u}=pa(),c=e=>{if(!a.value)return;const l=a.value.type;if("text"===l){const t=n(e);t&&s(t,{vertical:a.value.vertical})}else if("shape"===l){const t=n(e);t&&r(t,a.value.data)}else if("line"===l){const t=i(e);t&&u(t,a.value.data)}t.setCreatingElement(null)};return{formatCreateSelection:n,insertElementFromCreateSelection:c}},qn=()=>{const e=$(),{activeElementIdList:t,activeElementList:l}=(0,o.Jk)(R()),{currentSlide:a,viewportRatio:n}=(0,o.Jk)(e),{addHistorySnapshot:i}=da(),s=o=>{const s=oa,r=oa*n.value,{minX:u,maxX:c,minY:d,maxY:p}=ke(l.value),v=JSON.parse(JSON.stringify(a.value.elements));for(const e of v)if(t.value.includes(e.id)){if(o===ee.CENTER){const t=d+(p-d)/2-r/2,l=u+(c-u)/2-s/2;e.top=e.top-t,e.left=e.left-l}if(o===ee.TOP){const t=d-0;e.top=e.top-t}else if(o===ee.VERTICAL){const t=d+(p-d)/2-r/2;e.top=e.top-t}else if(o===ee.BOTTOM){const t=p-r;e.top=e.top-t}else if(o===ee.LEFT){const t=u-0;e.left=e.left-t}else if(o===ee.HORIZONTAL){const t=u+(c-u)/2-s/2;e.left=e.left-t}else if(o===ee.RIGHT){const t=c-s;e.left=e.left-t}}e.updateSlide({elements:v}),i()};return{alignElementToCanvas:s}},Xn=e=>{const t=(0,i.Fl)((()=>{if(e.value){const{h:t,v:l,blur:a,color:n}=e.value;return`${t}px ${l}px ${a}px ${n}`}return""}));return{shadowStyle:t}},Gn=(e,t)=>{const l=(0,i.Fl)((()=>{let l="";return e.value&&t.value?l="rotateX(180deg) rotateY(180deg)":t.value?l="rotateX(180deg)":e.value&&(l="rotateY(180deg)"),l}));return{flipStyle:l}};(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(zn||(zn={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(Pn||(Pn={}));const Kn={rect:{name:"矩形",type:zn.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:zn.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)",createPath:(e,t)=>`M 0 0 L ${.8*e} 0 L ${e} ${.2*t} L ${e} ${t} L 0 ${t} Z`},rect3:{name:"矩形3",type:zn.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)",createPath:(e,t)=>`M 0 0 L ${.8*e} 0 L ${e} ${.2*t} L ${e} ${t} L ${.2*e} ${t} L 0 ${.8*t} Z`},roundRect:{name:"圆角矩形",type:zn.RECT,radius:"10px",style:"inset(0 0 0 0 round 10px 10px 10px 10px)"},ellipse:{name:"圆形",type:zn.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:zn.POLYGON,style:"polygon(50% 0%, 0% 100%, 100% 100%)",createPath:(e,t)=>`M ${.5*e} 0 L 0 ${t} L ${e} ${t} Z`},triangle2:{name:"三角形2",type:zn.POLYGON,style:"polygon(50% 100%, 0% 0%, 100% 0%)",createPath:(e,t)=>`M ${.5*e} ${t} L 0 0 L ${e} 0 Z`},triangle3:{name:"三角形3",type:zn.POLYGON,style:"polygon(0% 0%, 0% 100%, 100% 100%)",createPath:(e,t)=>`M 0 0 L 0 ${t} L ${e} ${t} Z`},rhombus:{name:"菱形",type:zn.POLYGON,style:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)",createPath:(e,t)=>`M ${.5*e} 0 L ${e} ${.5*t} L ${.5*e} ${t} L 0 ${.5*t} Z`},pentagon:{name:"五边形",type:zn.POLYGON,style:"polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)",createPath:(e,t)=>`M ${.5*e} 0 L ${e} ${.38*t} L ${.82*e} ${t} L ${.18*e} ${t} L 0 ${.38*t} Z`},hexagon:{name:"六边形",type:zn.POLYGON,style:"polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)",createPath:(e,t)=>`M ${.2*e} 0 L ${.8*e} 0 L ${e} ${.5*t} L ${.8*e} ${t} L ${.2*e} ${t} L 0 ${.5*t} Z`},heptagon:{name:"七边形",type:zn.POLYGON,style:"polygon(50% 0%, 90% 20%, 100% 60%, 75% 100%, 25% 100%, 0% 60%, 10% 20%)",createPath:(e,t)=>`M ${.5*e} 0 L ${.9*e} ${.2*t} L ${e} ${.6*t} L ${.75*e} ${t} L ${.25*e} ${t} L 0 ${.6*t} L ${.1*e} ${.2*t} Z`},octagon:{name:"八边形",type:zn.POLYGON,style:"polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%)",createPath:(e,t)=>`M ${.3*e} 0 L ${.7*e} 0 L ${e} ${.3*t} L ${e} ${.7*t} L ${.7*e} ${t} L ${.3*e} ${t} L 0 ${.7*t} L 0 ${.3*t} Z`},chevron:{name:"V形",type:zn.POLYGON,style:"polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%)",createPath:(e,t)=>`M ${.75*e} 0 L ${e} ${.5*t} L ${.75*e} ${t} L 0 ${t} L ${.25*e} ${.5*t} L 0 0 Z`},point:{name:"点",type:zn.POLYGON,style:"polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%)",createPath:(e,t)=>`M 0 0 L ${.75*e} 0 L ${e} ${.5*t} L ${.75*e} ${t} L 0 ${t} Z`},arrow:{name:"箭头",type:zn.POLYGON,style:"polygon(0% 20%, 60% 20%, 60% 0%, 100% 50%, 60% 100%, 60% 80%, 0% 80%)",createPath:(e,t)=>`M 0 ${.2*t} L ${.6*e} ${.2*t} L ${.6*e} 0 L ${e} ${.5*t} L ${.6*e} ${t} L ${.6*e} ${.8*t} L 0 ${.8*t} Z`},parallelogram:{name:"平行四边形",type:zn.POLYGON,style:"polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)",createPath:(e,t)=>`M ${.3*e} 0 L ${e} 0 L ${.7*e} ${t} L 0 ${t} Z`},parallelogram2:{name:"平行四边形2",type:zn.POLYGON,style:"polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)",createPath:(e,t)=>`M ${.3*e} ${t} L ${e} ${t} L ${.7*e} 0 L 0 0 Z`},trapezoid:{name:"梯形",type:zn.POLYGON,style:"polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)",createPath:(e,t)=>`M ${.25*e} 0 L ${.75*e} 0 L ${e} ${t} L 0 ${t} Z`},trapezoid2:{name:"梯形2",type:zn.POLYGON,style:"polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)",createPath:(e,t)=>`M 0 0 L ${e} 0 L ${.75*e} ${t} L ${.25*e} ${t} Z`}};var Qn=e=>{const t=(0,i.Fl)((()=>{if(!e.value)return Kn.rect;const t=e.value.shape||zn.RECT;return Kn[t]})),l=(0,i.Fl)((()=>{if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};const[t,l]=e.value.range,a=(l[0]-t[0])/100,n=(l[1]-t[1])/100,o=t[0]/a,i=t[1]/n;return{left:-o+"%",top:-i+"%",width:100/a+"%",height:100/n+"%"}}));return{clipShape:t,imgPosition:l}},eo=e=>{const t=(0,i.Fl)((()=>{if(!e.value)return"";let t="";const l=Object.keys(e.value);for(const a of l)t+=`${a}(${e.value[a]}) `;return t}));return{filter:t}},to=e=>{const t=(0,i.Fl)((()=>e.value?.width??0)),l=(0,i.Fl)((()=>e.value?.style||"solid")),a=(0,i.Fl)((()=>e.value?.color||"#d14424")),n=(0,i.Fl)((()=>{if("dashed"!==l.value)return"0 0";const e=t.value;return e<=6?`${4.5*e} ${2*e}`:`${4*e} ${1.5*e}`}));return{outlineWidth:t,outlineStyle:l,outlineColor:a,strokeDashArray:n}};const lo=["width","height"],ao=["rx","ry","width","height","stroke","stroke-width","stroke-dasharray"];var no=(0,i.aZ)({__name:"ImageRectOutline",props:{width:{},height:{},outline:{},radius:{default:"0"}},setup(e){const t=e,{outlineWidth:l,outlineColor:a,strokeDashArray:n}=to((0,s.Vh)(t,"outline"));return(e,t)=>e.outline?((0,i.wg)(),(0,i.iD)("svg",{key:0,class:"image-rect-outline",overflow:"visible",width:e.width,height:e.height},[(0,i._)("rect",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",rx:e.radius,ry:e.radius,width:e.width,height:e.height,stroke:(0,s.SU)(a),"stroke-width":(0,s.SU)(l),"stroke-dasharray":(0,s.SU)(n)},null,8,ao)],8,lo)):(0,i.kq)("",!0)}});const oo=(0,Vl.Z)(no,[["__scopeId","data-v-35e36256"]]);var io=oo;const so=["width","height"],ro=["cx","cy","rx","ry","stroke","stroke-width","stroke-dasharray"];var uo=(0,i.aZ)({__name:"ImageEllipseOutline",props:{width:{},height:{},outline:{}},setup(e){const t=e,{outlineWidth:l,outlineColor:a,strokeDashArray:n}=to((0,s.Vh)(t,"outline"));return(e,t)=>e.outline?((0,i.wg)(),(0,i.iD)("svg",{key:0,class:"image-ellipse-outline",overflow:"visible",width:e.width,height:e.height},[(0,i._)("ellipse",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",cx:e.width/2,cy:e.height/2,rx:e.width/2,ry:e.height/2,stroke:(0,s.SU)(a),"stroke-width":(0,s.SU)(l),"stroke-dasharray":(0,s.SU)(n)},null,8,ro)],8,so)):(0,i.kq)("",!0)}});const co=(0,Vl.Z)(uo,[["__scopeId","data-v-11836cf8"]]);var po=co;const vo=["width","height"],mo=["d","stroke","stroke-width","stroke-dasharray"];var ho=(0,i.aZ)({__name:"ImagePolygonOutline",props:{width:{},height:{},createPath:{type:Function},outline:{}},setup(e){const t=e,{outlineWidth:l,outlineColor:a,strokeDashArray:n}=to((0,s.Vh)(t,"outline"));return(e,t)=>e.outline?((0,i.wg)(),(0,i.iD)("svg",{key:0,class:"image-polygon-outline",overflow:"visible",width:e.width,height:e.height},[(0,i._)("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",d:e.createPath(e.width,e.height),stroke:(0,s.SU)(a),"stroke-width":(0,s.SU)(l),"stroke-dasharray":(0,s.SU)(n)},null,8,mo)],8,vo)):(0,i.kq)("",!0)}});const fo=(0,Vl.Z)(ho,[["__scopeId","data-v-6e021ee2"]]);var go=fo;const yo={class:"image-outline"};var wo=(0,i.aZ)({__name:"index",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.elementInfo.clip)),{clipShape:a}=Qn(l);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",yo,["rect"===(0,s.SU)(a).type?((0,i.wg)(),(0,i.j4)(io,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,radius:(0,s.SU)(a).radius,outline:e.elementInfo.outline},null,8,["width","height","radius","outline"])):"ellipse"===(0,s.SU)(a).type?((0,i.wg)(),(0,i.j4)(po,{key:1,width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"])):"polygon"===(0,s.SU)(a).type?((0,i.wg)(),(0,i.j4)(go,{key:2,width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline,createPath:(0,s.SU)(a).createPath},null,8,["width","height","outline","createPath"])):(0,i.kq)("",!0)]))}});const xo=wo;var ko=xo;const bo=e=>((0,i.dD)("data-v-5984406b"),e=e(),(0,i.Cn)(),e),_o=["src"],Io=["src"],So=["onMousedown"],Co=bo((()=>(0,i._)("svg",{width:"16",height:"16",fill:"#fff",stroke:"#333"},[(0,i._)("path",{"stroke-width":"0.3","shape-rendering":"crispEdges",d:"M 16 0 L 0 0 L 0 16 L 4 16 L 4 4 L 16 4 L 16 0 Z"})],-1))),Lo=[Co],To=["onMousedown"],Eo=bo((()=>(0,i._)("svg",{width:"16",height:"16",fill:"#fff",stroke:"#333"},[(0,i._)("path",{"stroke-width":"0.3","shape-rendering":"crispEdges",d:"M 16 0 L 0 0 L 0 4 L 16 4 Z"})],-1))),Mo=[Eo];var Uo=(0,i.aZ)({__name:"ImageClipHandler",props:{src:{},clipPath:{},width:{},height:{},top:{},left:{},rotate:{},clipData:{}},emits:["clip"],setup(e,{emit:t}){const l=e,a=t,{canvasScale:r}=(0,o.Jk)(R()),{ctrlOrShiftKeyActive:u}=(0,o.Jk)(q()),c=(0,s.iH)({top:"0",left:"0"}),d=(0,s.iH)(!1),p=(0,s.iH)(null),v=()=>{const[e,t]=l.clipData?l.clipData.range:[[0,0],[100,100]],a=(t[0]-e[0])/100,n=(t[1]-e[1])/100,o=e[0]/a,i=e[1]/n;return{widthScale:a,heightScale:n,left:o,top:i}},m=(0,i.Fl)((()=>{const{widthScale:e,heightScale:t,left:l,top:a}=v();return{left:-l,top:-a,width:100/e,height:100/t}})),h=(0,i.Fl)((()=>({top:m.value.top+"%",left:m.value.left+"%",width:m.value.width+"%",height:m.value.height+"%"}))),f=(0,s.iH)({top:0,left:0,width:0,height:0}),g=(0,i.Fl)((()=>{const{top:e,left:t,width:l,height:a}=f.value;return{top:e+"%",left:t+"%",width:l+"%",height:a+"%"}})),y=(0,i.Fl)((()=>{const e=m.value.width,t=m.value.height,{top:l,left:a,width:n,height:o}=f.value;return{left:100/n*-a+"%",top:100/o*-l+"%",width:e/n*100+"%",height:t/o*100+"%"}})),w=()=>{const{left:e,top:t}=v();f.value={left:e,top:t,width:100,height:100},c.value={top:-t+"%",left:-e+"%"}},x=()=>{if(d.value)return;if(!p.value)return void a("clip",null);const{left:e,top:t}=v(),n={left:(f.value.left-e)/100*l.width,top:(f.value.top-t)/100*l.height,width:(f.value.width-100)/100*l.width,height:(f.value.height-100)/100*l.height},o={range:p.value,position:n};a("clip",o)},k=e=>{const t=e.key.toUpperCase();t===ne.ENTER&&x()};(0,i.bv)((()=>{w(),document.addEventListener("keydown",k)})),(0,i.Ah)((()=>{document.removeEventListener("keydown",k)}));const b=()=>{const e={left:parseInt(y.value.left),top:parseInt(y.value.top),width:parseInt(y.value.width),height:parseInt(y.value.height)},t=100/e.width,l=100/e.height,a=[-e.left*t,-e.top*l],n=[100*t+a[0],100*l+a[1]];p.value=[a,n]},_=e=>{d.value=!0;let t=!0;const a=e.pageX,n=e.pageY,o=m.value,i={...f.value};document.onmousemove=e=>{if(!t)return;const s=e.pageX,u=e.pageY;let c=(s-a)/r.value/l.width*100,d=(u-n)/r.value/l.height*100;l.rotate>45&&l.rotate<135&&(c=(u-n)/r.value/l.width*100,d=-(s-a)/r.value/l.height*100),(l.rotate>=135&&l.rotate<=180||l.rotate>=-180&&l.rotate<=-135)&&(c=-c,d=-d),l.rotate>-135&&l.rotate<-45&&(c=-(u-n)/r.value/l.width*100,d=(s-a)/r.value/l.height*100);let p=i.left+c,v=i.top+d;p<0?p=0:p+i.width>o.width&&(p=o.width-i.width),v<0?v=0:v+i.height>o.height&&(v=o.height-i.height),f.value={...f.value,left:p,top:v}},document.onmouseup=()=>{t=!1,document.onmousemove=null,document.onmouseup=null,b(),setTimeout((()=>{d.value=!1}),0)}},I=(e,t)=>{d.value=!0;let a=!0;const n=50/l.width*100,o=50/l.height*100,i=e.pageX,s=e.pageY,c=m.value,p={...f.value},v=f.value.width/f.value.height;document.onmousemove=e=>{if(!a)return;const d=e.pageX,m=e.pageY;let h,g,y,w,x=(d-i)/r.value/l.width*100,k=(m-s)/r.value/l.height*100;l.rotate>45&&l.rotate<135&&(x=(m-s)/r.value/l.width*100,k=-(d-i)/r.value/l.height*100),(l.rotate>=135&&l.rotate<=180||l.rotate>=-180&&l.rotate<=-135)&&(x=-x,k=-k),l.rotate>-135&&l.rotate<-45&&(x=-(m-s)/r.value/l.width*100,k=(d-i)/r.value/l.height*100),u.value&&(t!==le.RIGHT_BOTTOM&&t!==le.LEFT_TOP||(k=x/v),t!==le.LEFT_BOTTOM&&t!==le.RIGHT_TOP||(k=-x/v)),t===le.LEFT_TOP?(p.left+x<0&&(x=-p.left),p.top+k<0&&(k=-p.top),p.width-xc.width&&(x=c.width-(p.left+p.width)),p.top+k<0&&(k=-p.top),p.width+xc.height&&(k=c.height-(p.top+p.height)),p.width-xc.width&&(x=c.width-(p.left+p.width)),p.top+p.height+k>c.height&&(k=c.height-(p.top+p.height)),p.width+xc.height&&(k=c.height-(p.top+p.height)),p.height+kc.width&&(x=c.width-(p.left+p.width)),p.width+x{a=!1,document.onmousemove=null,document.onmouseup=null,b(),setTimeout((()=>d.value=!1),0)}},S=(0,i.Fl)((()=>{const e="rotate-",t=l.rotate;return t>-22.5&&t<=22.5?e+0:t>22.5&&t<=67.5?e+45:t>67.5&&t<=112.5?e+90:t>112.5&&t<=157.5?e+135:t>157.5||t<=-157.5?e+0:t>-157.5&&t<=-112.5?e+45:t>-112.5&&t<=-67.5?e+90:t>-67.5&&t<=-22.5?e+135:e+0})),C=[le.LEFT_TOP,le.RIGHT_TOP,le.LEFT_BOTTOM,le.RIGHT_BOTTOM],L=[le.TOP,le.BOTTOM,le.LEFT,le.RIGHT];return(e,t)=>{const l=(0,i.Q2)("click-outside");return(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"image-clip-handler",style:(0,oe.j5)(c.value)},[(0,i._)("img",{class:"bottom-img",src:e.src,draggable:!1,alt:"",style:(0,oe.j5)(h.value)},null,12,_o),(0,i._)("div",{class:"top-image-content",style:(0,oe.j5)({...g.value,clipPath:e.clipPath})},[(0,i._)("img",{class:"top-img",src:e.src,draggable:!1,alt:"",style:(0,oe.j5)(y.value)},null,12,Io)],4),(0,i._)("div",{class:"operate",style:(0,oe.j5)(g.value),onMousedown:t[0]||(t[0]=(0,n.iM)((e=>_(e)),["stop"]))},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(C,(e=>(0,i._)("div",{class:(0,oe.C_)(["clip-point",e,S.value]),key:e,onMousedown:(0,n.iM)((t=>I(t,e)),["stop"])},Lo,42,So))),64)),((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(L,(e=>(0,i._)("div",{class:(0,oe.C_)(["clip-point",e,S.value]),key:e,onMousedown:(0,n.iM)((t=>I(t,e)),["stop"])},Mo,42,To))),64))],36)],4)),[[l,x]])}}});const Wo=(0,Vl.Z)(Uo,[["__scopeId","data-v-5984406b"]]);var Do=Wo;const Ho=["src"];var Fo=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=R(),a=$(),{clipingImageElementId:r}=(0,o.Jk)(l),u=(0,i.Fl)((()=>r.value===t.elementInfo.id)),{addHistorySnapshot:c}=da(),d=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:p}=Xn(d),v=(0,i.Fl)((()=>t.elementInfo.flipH)),m=(0,i.Fl)((()=>t.elementInfo.flipV)),{flipStyle:h}=Gn(v,m),f=(0,i.Fl)((()=>t.elementInfo.clip)),{clipShape:g,imgPosition:y}=Qn(f),w=(0,i.Fl)((()=>t.elementInfo.filters)),{filter:x}=eo(w),k=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},b=e=>{if(l.setClipingImageElementId(""),!e)return;const{range:n,position:o}=e,i=t.elementInfo.clip||{shape:"rect",range:[[0,0],[100,100]]},s=t.elementInfo.left+o.left,r=t.elementInfo.top+o.top,u=t.elementInfo.width+o.width,d=t.elementInfo.height+o.height;let p=0,v=0;if(t.elementInfo.rotate){const e=s+u/2-(t.elementInfo.left+t.elementInfo.width/2),l=-(r+d/2-(t.elementInfo.top+t.elementInfo.height/2)),a=-t.elementInfo.rotate*Math.PI/180,n=e*Math.cos(a)-l*Math.sin(a),o=e*Math.sin(a)+l*Math.cos(a);p=n-e,v=-(o-l)}const m={clip:{...i,range:n},left:s+p,top:r+v,width:u,height:d};a.updateElement({id:t.elementInfo.id,props:m}),c()};return(e,t)=>{const l=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-image",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[u.value?((0,i.wg)(),(0,i.j4)(Do,{key:0,src:e.elementInfo.src,clipData:e.elementInfo.clip,width:e.elementInfo.width,height:e.elementInfo.height,top:e.elementInfo.top,left:e.elementInfo.left,rotate:e.elementInfo.rotate,clipPath:(0,s.SU)(g).style,onClip:t[0]||(t[0]=e=>b(e))},null,8,["src","clipData","width","height","top","left","rotate","clipPath"])):(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{key:1,class:"element-content",style:(0,oe.j5)({filter:(0,s.SU)(p)?`drop-shadow(${(0,s.SU)(p)})`:"",transform:(0,s.SU)(h)}),onMousedown:t[2]||(t[2]=e=>k(e)),onTouchstart:t[3]||(t[3]=e=>k(e))},[(0,i.Wm)(ko,{elementInfo:e.elementInfo},null,8,["elementInfo"]),(0,i._)("div",{class:"image-content",style:(0,oe.j5)({clipPath:(0,s.SU)(g).style})},[(0,i._)("img",{src:e.elementInfo.src,draggable:!1,style:(0,oe.j5)({top:(0,s.SU)(y).top,left:(0,s.SU)(y).left,width:(0,s.SU)(y).width,height:(0,s.SU)(y).height,filter:(0,s.SU)(x)}),onDragstart:t[1]||(t[1]=(0,n.iM)((()=>{}),["prevent"])),alt:""},null,44,Ho),e.elementInfo.colorMask?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"color-mask",style:(0,oe.j5)({backgroundColor:e.elementInfo.colorMask})},null,4)):(0,i.kq)("",!0)],4)],36)),[[l,e.contextmenus]])],4)],6)}}});const Ao=(0,Vl.Z)(Fo,[["__scopeId","data-v-1156b3e1"]]);var $o=Ao;const Zo=["width","height"],Oo=["d","stroke","stroke-width","stroke-dasharray"];var Ro=(0,i.aZ)({__name:"ElementOutline",props:{width:{},height:{},outline:{}},setup(e){const t=e,{outlineWidth:l,outlineColor:a,strokeDashArray:n}=to((0,s.Vh)(t,"outline"));return(e,t)=>e.outline?((0,i.wg)(),(0,i.iD)("svg",{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},[(0,i._)("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",d:`M0,0 L${e.width},0 L${e.width},${e.height} L0,${e.height} Z`,stroke:(0,s.SU)(a),"stroke-width":(0,s.SU)(l),"stroke-dasharray":(0,s.SU)(n)},null,8,Oo)],8,Zo)):(0,i.kq)("",!0)}});const zo=(0,Vl.Z)(Ro,[["__scopeId","data-v-efb76626"]]);var Po=zo,Bo=l(2376),No=l(4348),jo=l(2806),Yo=l(728),Vo=l(8463),Jo=l(4251),qo=l(915),Xo=l(3833),Go=l(6912);const Ko=e=>{const t={},l=(e,l)=>t[e]=l;return l("Alt-ArrowUp",u.MI),l("Alt-ArrowDown",u.Ig),l("Mod-z",Vo.Yw),l("Mod-y",Vo.KX),l("Backspace",Go.dU),l("Escape",u.N0),l("Mod-b",(0,u.w9)(e.marks.strong)),l("Mod-i",(0,u.w9)(e.marks.em)),l("Mod-u",(0,u.w9)(e.marks.underline)),l("Mod-d",(0,u.w9)(e.marks.strikethrough)),l("Mod-e",(0,u.w9)(e.marks.code)),l("Mod-;",(0,u.w9)(e.marks.superscript)),l("Mod-'",(0,u.w9)(e.marks.subscript)),l("Enter",(0,u.QF)((0,Xo.s6)(e.nodes.list_item),u.QK,u.mD,u.X0,u.$j)),l("Mod-[",(0,Xo.IB)(e.nodes.list_item)),l("Mod-]",(0,Xo.bw)(e.nodes.list_item)),l("Tab",(0,Xo.bw)(e.nodes.list_item)),t},Qo=e=>(0,Go.S0)(/^\s*>\s$/,e),ei=e=>(0,Go.S0)(/^(\d+)\.\s$/,e,(e=>({order:+e[1]})),((e,t)=>t.childCount+t.attrs.order===+e[1])),ti=e=>(0,Go.S0)(/^\s*([-+*])\s$/,e),li=()=>{const e=/(?:^|\s)((?:`)((?:[^`]+))(?:`))$/;return new Go.VK(e,((e,t,l,a)=>{const{schema:n}=e,o=e.tr.insertText(`${t[2]} `,l,a),i=n.marks.code.create();return o.addMark(l,l+t[2].length,i)}))},ai=()=>{const e=/(?:https?:\/\/)?[\w-]+(?:\.[\w-]+)+\.?(?:\d+)?(?:\/\S*)?$/;return new Go.VK(e,((e,t,l,a)=>{const{schema:n}=e,o=e.tr.insertText(t[0],l,a),i=n.marks.link.create({href:t[0],title:t[0]});return o.addMark(l,l+t[0].length,i)}))},ni=e=>{const t=[...Go.yR,Go.LH,Go.pR];return t.push(Qo(e.nodes.blockquote)),t.push(ei(e.nodes.ordered_list)),t.push(ti(e.nodes.bullet_list)),t.push(li()),t.push(ai()),(0,Go.Hw)({rules:t})},oi=e=>"paragraph"===e.type.name&&2===e.nodeSize,ii=e=>new Bo.Sy({props:{decorations(t){const{$from:l}=t.selection;if(oi(l.parent)){const a=No.p.node(l.before(),l.after(),{"data-placeholder":e});return No.EH.create(t.doc,[a])}}}}),si=(e,t)=>{const l=t?.placeholder,a=[ni(e),(0,Yo.h)(Ko(e)),(0,Yo.h)(u.YR),(0,Jo.q)(),(0,qo.d)(),(0,Vo.m8)()];return l&&a.push(ii(l)),a};var ri=l(4073);const ui={attrs:{order:{default:1},listStyleType:{default:""},fontsize:{default:""},color:{default:""}},content:"list_item+",group:"block",parseDOM:[{tag:"ol",getAttrs:e=>{const t=(e.hasAttribute("start")?e.getAttribute("start"):1)||1,l={order:+t},{listStyleType:a,fontSize:n,color:o}=e.style;return a&&(l["listStyleType"]=a),n&&(l["fontsize"]=n),o&&(l["color"]=o),l}}],toDOM:e=>{const{order:t,listStyleType:l,fontsize:a,color:n}=e.attrs;let o="";l&&(o+=`list-style-type: ${l};`),a&&(o+=`font-size: ${a};`),n&&(o+=`color: ${n};`);const i={style:o};return 1!==t&&(i["start"]=t),["ol",i,0]}},ci={attrs:{listStyleType:{default:""},fontsize:{default:""},color:{default:""}},content:"list_item+",group:"block",parseDOM:[{tag:"ul",getAttrs:e=>{const t={},{listStyleType:l,fontSize:a,color:n}=e.style;return l&&(t["listStyleType"]=l),a&&(t["fontsize"]=a),n&&(t["color"]=n),t}}],toDOM:e=>{const{listStyleType:t,fontsize:l,color:a}=e.attrs;let n="";return t&&(n+=`list-style-type: ${t};`),l&&(n+=`font-size: ${l};`),a&&(n+=`color: ${a};`),["ul",{style:n},0]}},di={...Xo.qb,content:"paragraph block*",group:"block"},pi={attrs:{align:{default:""},indent:{default:0},textIndent:{default:0}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:e=>{const{textAlign:t,textIndent:l}=e.style;let a=e.getAttribute("align")||t||"";a=/(left|right|center|justify)/.test(a)?a:"";let n=0;l&&(/em/.test(l)?n=parseInt(l):/px/.test(l)&&(n=Math.floor(parseInt(l)/20),n||(n=1)));const o=+(e.getAttribute("data-indent")||0);return{align:a,indent:o,textIndent:n}}},{tag:"img",ignore:!0},{tag:"pre",skip:!0}],toDOM:e=>{const{align:t,indent:l,textIndent:a}=e.attrs;let n="";t&&"left"!==t&&(n+=`text-align: ${t};`),a&&(n+=`text-indent: ${20*a}px;`);const o={style:n};return l&&(o["data-indent"]=l),["p",o,0]}},{doc:vi,blockquote:mi,text:hi}=ri.nodes;var fi={doc:vi,paragraph:pi,blockquote:mi,text:hi,ordered_list:ui,bullet_list:ci,list_item:di};const gi={excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:e=>"sub"===e&&null}],toDOM:()=>["sub",0]},yi={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:e=>"super"===e&&null}],toDOM:()=>["sup",0]},wi={parseDOM:[{tag:"strike"},{style:"text-decoration",getAttrs:e=>"line-through"===e&&null},{style:"text-decoration-line",getAttrs:e=>"line-through"===e&&null}],toDOM:()=>["span",{style:"text-decoration-line: line-through;"},0]},xi={parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:e=>"underline"===e&&null},{style:"text-decoration-line",getAttrs:e=>"underline"===e&&null}],toDOM:()=>["span",{style:"text-decoration: underline;"},0]},ki={attrs:{color:{}},inline:!0,group:"inline",parseDOM:[{style:"color",getAttrs:e=>e?{color:e}:{}}],toDOM:e=>{const{color:t}=e.attrs;let l="";return t&&(l+=`color: ${t};`),["span",{style:l},0]}},bi={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{style:"background-color",getAttrs:e=>e?{backcolor:e}:{}}],toDOM:e=>{const{backcolor:t}=e.attrs;let l="";return t&&(l+=`background-color: ${t};`),["span",{style:l},0]}},_i={attrs:{fontsize:{}},inline:!0,group:"inline",parseDOM:[{style:"font-size",getAttrs:e=>e?{fontsize:e}:{}}],toDOM:e=>{const{fontsize:t}=e.attrs;let l="";return t&&(l+=`font-size: ${t};`),["span",{style:l},0]}},Ii={attrs:{fontname:{}},inline:!0,group:"inline",parseDOM:[{style:"font-family",getAttrs:e=>({fontname:e&&"string"===typeof e?e.replace(/[\"\']/g,""):""})}],toDOM:e=>{const{fontname:t}=e.attrs;let l="";return t&&(l+=`font-family: ${t};`),["span",{style:l},0]}},Si={attrs:{href:{},title:{default:null},target:{default:"_blank"}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs:e=>{const t=e.getAttribute("href"),l=e.getAttribute("title");return{href:t,title:l}}}],toDOM:e=>["a",e.attrs,0]},Ci={attrs:{index:{default:null}},parseDOM:[{tag:"mark",getAttrs:e=>{const t=e.dataset.index;return{index:t}}}],toDOM:e=>["mark",{"data-index":e.attrs.index},0]},{em:Li,strong:Ti,code:Ei}=ri.marks;var Mi={em:Li,strong:Ti,fontsize:_i,fontname:Ii,code:Ei,forecolor:ki,backcolor:bi,subscript:gi,superscript:yi,strikethrough:wi,underline:xi,link:Si,mark:Ci};const Ui=fi,Wi=Mi,Di=new jo.V_({nodes:Ui,marks:Wi}),Hi=e=>{const t=`
${e}
`,l=new window.DOMParser,a=l.parseFromString(t,"text/html").body.firstElementChild;return jo.aw.fromSchema(Di).parse(a)},Fi=(e,t,l,a)=>new No.tk(e,{state:Bo.yy.create({doc:Hi(t),plugins:si(Di,a)}),...l});var Ai,$i=l(9391);(function(e){e["RICH_TEXT_COMMAND"]="RICH_TEXT_COMMAND",e["SYNC_RICH_TEXT_ATTRS_TO_STORE"]="SYNC_RICH_TEXT_ATTRS_TO_STORE",e["OPEN_CHART_DATA_EDITOR"]="OPEN_CHART_DATA_EDITOR",e["OPEN_LATEX_EDITOR"]="OPEN_LATEX_EDITOR"})(Ai||(Ai={}));const Zi=(0,$i.Z)();var Oi=Zi;const Ri=(e,t,l)=>{const{selection:a,doc:n}=e;if(!a||!n)return e;const{from:o,to:i}=a,{nodes:s}=t,r=s.blockquote,u=s.list_item,c=s.paragraph,d=[];l=l||"";const p=new Set([r,u,c]);return n.nodesBetween(o,i,((e,t)=>{const a=e.type,n=e.attrs.align||"";return n!==l&&p.has(a)&&d.push({node:e,pos:t,nodeType:a}),!0})),d.length?(d.forEach((t=>{const{node:a,pos:n,nodeType:o}=t;let{attrs:i}=a;i=l?{...i,align:l}:{...i,align:null},e=e.setNodeMarkup(n,o,i,a.marks)})),e):e},zi=(e,t)=>{const{state:l}=e,{schema:a,selection:n}=l,o=Ri(l.tr.setSelection(n),a,t);e.dispatch(o)};function Pi(e,t,l,a){if(!e.doc)return e;const n=e.doc.nodeAt(t);if(!n)return e;const o=0,i=8;let s=(n.attrs[a]||0)+l;if(si&&(s=i),s===n.attrs[a])return e;const r={...n.attrs,[a]:s};return e.setNodeMarkup(t,n.type,r,n.marks)}const Bi=(e,t,l,a)=>{const{selection:n,doc:o}=e;if(!n||!o)return e;if(!(n instanceof Bo.Bs||n instanceof Bo.C1))return e;const{from:i,to:s}=n;return o.nodesBetween(i,s,((n,o)=>{const i=n.type;return"paragraph"===i.name||"blockquote"===i.name?(e=Pi(e,o,l,a),!1):!c(n,t)})),e},Ni=(e,t)=>{const{state:l}=e,{schema:a,selection:n}=l,o=Bi(l.tr.setSelection(n),a,t,"indent");return!!o.docChanged&&(e.dispatch(o),!0)},ji=(e,t)=>{const{state:l}=e,{schema:a,selection:n}=l,o=Bi(l.tr.setSelection(n),a,t,"textIndent");return!!o.docChanged&&(e.dispatch(o),!0)},Yi=(e,t,l,a={})=>(n,o)=>{const{schema:i,selection:s}=n,{$from:r,$to:u}=s,d=r.blockRange(u);if(!d)return!1;const p=f((e=>c(e,i)))(s);if(d.depth>=1&&p&&d.depth-p.depth<=1){if(p.node.type===e&&!l)return(0,Xo.IB)(t)(n,o);if(c(p.node,i)&&e.validContent(p.node.content)){const{tr:t}=n,i={...p.node.attrs,...a};return l&&(i.listStyleType=l),t.setNodeMarkup(p.pos,e,i),o&&o(t),!1}}const v={...a};return l&&(v.listStyleType=l),(0,Xo.KI)(e,v)(n,o)},Vi=(e,t)=>{const{state:l}=e,{schema:a,selection:n}=l,o=l.tr.setSelection(n),{doc:i}=o;if(!i)return o;const{from:s,to:r}=n;i.nodesBetween(s,r,((e,l)=>{if(c(e,a)&&s-3<=l&&r+3>=l+e.nodeSize){const e=Array.isArray(t)?t:[t];for(const t of e)o.setNodeAttribute(l,t.key,t.value)}return!1})),e.dispatch(o)};var Ji=(0,i.aZ)({__name:"ProsemirrorEditor",props:{elementId:{},defaultColor:{},defaultFontName:{},value:{},editable:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1}},emits:["update","focus","blur","mousedown"],setup(e,{expose:t,emit:l}){const a=e,n=l,r=R(),{handleElementId:c,textFormatPainter:m,richTextAttrs:h}=(0,o.Jk)(r),f=(0,s.iH)();let g;const w=(0,D.debounce)((function(){n("update",g.dom.innerHTML)}),300,{trailing:!0}),x=()=>{r.setDisableHotkeysState(!0),n("focus")},k=()=>{r.setDisableHotkeysState(!1),n("blur")},b=(0,D.debounce)((function(){const e=C(g,{color:a.defaultColor,fontname:a.defaultFontName});r.setRichtextAttrs(e)}),30,{trailing:!0}),I=()=>{w(),b()},S=(0,i.Fl)((()=>a.value));(0,i.YP)(S,(()=>{if(!g)return;if(g.hasFocus())return;const{doc:e,tr:t}=g.state;g.dispatch(t.replaceRangeWith(0,e.content.size,Hi(S.value)))})),(0,i.YP)((()=>a.editable),(()=>{g.setProps({editable:()=>a.editable})}));const T=()=>g.focus();t({focus:T});const E=({target:e,action:t})=>{if(!e&&c.value!==a.elementId)return;if(e&&e!==a.elementId)return;const l="command"in t?[t]:t;for(const a of l)if("fontname"===a.command&&a.value){const e=g.state.schema.marks.fontname.create({fontname:a.value});d(g),p(g,e)}else if("fontsize"===a.command&&a.value){const e=g.state.schema.marks.fontsize.create({fontsize:a.value});d(g),p(g,e),Vi(g,{key:"fontsize",value:a.value})}else if("fontsize-add"===a.command){const e=a.value?+a.value:2;d(g);const t=L(g)+e+"px",l=g.state.schema.marks.fontsize.create({fontsize:t});p(g,l),Vi(g,{key:"fontsize",value:t})}else if("fontsize-reduce"===a.command){const e=a.value?+a.value:2;d(g);let t=L(g)-e;t<12&&(t=12);const l=g.state.schema.marks.fontsize.create({fontsize:t+"px"});p(g,l),Vi(g,{key:"fontsize",value:t+"px"})}else if("color"===a.command&&a.value){const e=g.state.schema.marks.forecolor.create({color:a.value});d(g),p(g,e),Vi(g,{key:"color",value:a.value})}else if("backcolor"===a.command&&a.value){const e=g.state.schema.marks.backcolor.create({backcolor:a.value});d(g),p(g,e)}else if("bold"===a.command)d(g),(0,u.w9)(g.state.schema.marks.strong)(g.state,g.dispatch);else if("em"===a.command)d(g),(0,u.w9)(g.state.schema.marks.em)(g.state,g.dispatch);else if("underline"===a.command)d(g),(0,u.w9)(g.state.schema.marks.underline)(g.state,g.dispatch);else if("strikethrough"===a.command)d(g),(0,u.w9)(g.state.schema.marks.strikethrough)(g.state,g.dispatch);else if("subscript"===a.command)(0,u.w9)(g.state.schema.marks.subscript)(g.state,g.dispatch);else if("superscript"===a.command)(0,u.w9)(g.state.schema.marks.superscript)(g.state,g.dispatch);else if("blockquote"===a.command){const e=y("blockquote",g.state);e?(0,u.xb)(g.state,g.dispatch):(0,u.ym)(g.state.schema.nodes.blockquote)(g.state,g.dispatch)}else if("code"===a.command)(0,u.w9)(g.state.schema.marks.code)(g.state,g.dispatch);else if("align"===a.command&&a.value)zi(g,a.value);else if("indent"===a.command&&a.value)Ni(g,+a.value);else if("textIndent"===a.command&&a.value)ji(g,+a.value);else if("bulletList"===a.command){const e=a.value||"",{bullet_list:t,list_item:l}=g.state.schema.nodes,n={color:h.value.color,fontsize:h.value.fontsize};Yi(t,l,e,n)(g.state,g.dispatch)}else if("orderedList"===a.command){const e=a.value||"",{ordered_list:t,list_item:l}=g.state.schema.nodes,n={color:h.value.color,fontsize:h.value.fontsize};Yi(t,l,e,n)(g.state,g.dispatch)}else if("clear"===a.command){d(g);const{$from:e,$to:t}=g.state.selection;g.dispatch(g.state.tr.removeMark(e.pos,t.pos)),Vi(g,[{key:"fontsize",value:""},{key:"color",value:""}])}else if("link"===a.command){const e=g.state.schema.marks.link,{from:t,to:l}=g.state.selection,n=v(g.state.doc,t,l,e);if(n)if(a.value){const e=g.state.schema.marks.link.create({href:a.value,title:a.value});p(g,e,{from:n.from.pos,to:n.to.pos+1})}else g.dispatch(g.state.tr.removeMark(n.from.pos,n.to.pos+1,e));else if(_(g.state,e))if(a.value){const e=g.state.schema.marks.link.create({href:a.value,title:a.value});p(g,e)}else(0,u.w9)(e)(g.state,g.dispatch);else a.value&&(d(g),(0,u.w9)(e,{href:a.value,title:a.value})(g.state,g.dispatch))}else"insert"===a.command&&a.value&&g.dispatch(g.state.tr.insertText(a.value));g.focus(),w(),b()},M=()=>{if(!m.value)return;const{keep:e,...t}=m.value,l=[{command:"clear"}];for(const a of Object.keys(t)){const e=a,t=m.value[a];!0===t?l.push({command:e}):t&&l.push({command:e,value:t})}E({action:l}),e||r.setTextFormatPainter(null)};(0,i.bv)((()=>{g=Fi(f.value,S.value,{handleDOMEvents:{focus:x,blur:k,keydown:I,click:b,mouseup:M},editable:()=>a.editable}),a.autoFocus&&g.focus()})),(0,i.Ah)((()=>{g&&g.destroy()}));const U=()=>{c.value===a.elementId&&b()};return Oi.on(Ai.RICH_TEXT_COMMAND,E),Oi.on(Ai.SYNC_RICH_TEXT_ATTRS_TO_STORE,U),(0,i.Ah)((()=>{Oi.off(Ai.RICH_TEXT_COMMAND,E),Oi.off(Ai.SYNC_RICH_TEXT_ATTRS_TO_STORE,U)})),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["prosemirror-editor",{"format-painter":(0,s.SU)(m)}]),ref_key:"editorViewRef",ref:f,onMousedown:t[0]||(t[0]=e=>n("mousedown",e))},null,34))}});const qi=(0,Vl.Z)(Ji,[["__scopeId","data-v-653f533c"]]);var Xi=qi;const Gi=e=>((0,i.dD)("data-v-2a1e49ba"),e=e(),(0,i.Cn)(),e),Ki=Gi((()=>(0,i._)("div",{class:"drag-handler top"},null,-1))),Qi=Gi((()=>(0,i._)("div",{class:"drag-handler bottom"},null,-1)));var es=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=R(),a=$(),{handleElementId:n,isScaling:r}=(0,o.Jk)(l),{addHistorySnapshot:u}=da(),c=(0,s.iH)(),d=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:p}=Xn(d),v=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))},m=(0,s.iH)(-1),h=(0,s.iH)(-1);(0,i.YP)(r,(()=>{n.value===t.elementInfo.id&&(r.value||(t.elementInfo.vertical||-1===m.value||(a.updateElement({id:t.elementInfo.id,props:{height:m.value}}),m.value=-1),t.elementInfo.vertical&&-1!==h.value&&(a.updateElement({id:t.elementInfo.id,props:{width:h.value}}),h.value=-1)))}));const f=e=>{const l=e[0].contentRect;if(!c.value)return;const n=l.height+20,o=l.width+20;t.elementInfo.vertical||t.elementInfo.height===n||(r.value?m.value=n:a.updateElement({id:t.elementInfo.id,props:{height:n}})),t.elementInfo.vertical&&t.elementInfo.width!==o&&(r.value?h.value=o:a.updateElement({id:t.elementInfo.id,props:{width:o}}))},g=new ResizeObserver(f);(0,i.bv)((()=>{c.value&&g.observe(c.value)})),(0,i.Ah)((()=>{c.value&&g.unobserve(c.value)}));const y=e=>{a.updateElement({id:t.elementInfo.id,props:{content:e}}),u()},w=(0,D.debounce)((function(){const e=t.elementInfo.content.replaceAll(/<[^>]+>/g,"");e||a.deleteElement(t.elementInfo.id)}),300,{trailing:!0}),x=(0,i.Fl)((()=>n.value===t.elementInfo.id));return(0,i.YP)(x,(()=>{x.value||w()})),(e,t)=>{const l=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-text",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",ref_key:"elementRef",ref:c,style:(0,oe.j5)({width:e.elementInfo.vertical?"auto":e.elementInfo.width+"px",height:e.elementInfo.vertical?e.elementInfo.height+"px":"auto",backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:(0,s.SU)(p),lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName,writingMode:e.elementInfo.vertical?"vertical-rl":"horizontal-tb"}),onMousedown:t[2]||(t[2]=e=>v(e)),onTouchstart:t[3]||(t[3]=e=>v(e))},[(0,i.Wm)(Po,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),(0,i.Wm)(Xi,{class:"text",elementId:e.elementInfo.id,defaultColor:e.elementInfo.defaultColor,defaultFontName:e.elementInfo.defaultFontName,editable:!e.elementInfo.lock,value:e.elementInfo.content,style:(0,oe.j5)({"--paragraphSpace":`${void 0===e.elementInfo.paragraphSpace?5:e.elementInfo.paragraphSpace}px`}),onUpdate:t[0]||(t[0]=e=>y(e)),onMousedown:t[1]||(t[1]=e=>v(e,!1))},null,8,["elementId","defaultColor","defaultFontName","editable","value","style"]),Ki,Qi],36)),[[l,e.contextmenus]])],4)],6)}}});const ts=(0,Vl.Z)(es,[["__scopeId","data-v-2a1e49ba"]]);var ls=ts;const as=["id","gradientTransform"],ns=["stop-color"],os=["stop-color"],is=["id"],ss=["stop-color"],rs=["stop-color"];var us=(0,i.aZ)({__name:"GradientDefs",props:{id:{},type:{},color1:{},color2:{},rotate:{default:0}},setup(e){return(e,t)=>"linear"===e.type?((0,i.wg)(),(0,i.iD)("linearGradient",{key:0,id:e.id,x1:"0%",y1:"0%",x2:"100%",y2:"0%",gradientTransform:`rotate(${e.rotate},0.5,0.5)`},[(0,i._)("stop",{offset:"0%","stop-color":e.color1},null,8,ns),(0,i._)("stop",{offset:"100%","stop-color":e.color2},null,8,os)],8,as)):((0,i.wg)(),(0,i.iD)("radialGradient",{key:1,id:e.id},[(0,i._)("stop",{offset:"0%","stop-color":e.color1},null,8,ss),(0,i._)("stop",{offset:"100%","stop-color":e.color2},null,8,rs)],8,is))}});const cs=us;var ds=cs;const ps=["width","height"],vs={key:0},ms=["transform"],hs=["d","fill","stroke","stroke-width","stroke-dasharray"];var fs=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=R(),a=$(),{handleElementId:n,shapeFormatPainter:r}=(0,o.Jk)(l),{addHistorySnapshot:u}=da(),c=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))},d=()=>{if(!r.value)return;const{keep:e,...n}=r.value;a.updateElement({id:t.elementInfo.id,props:n}),u(),e||l.setShapeFormatPainter(null)},p=(0,i.Fl)((()=>t.elementInfo.outline)),{outlineWidth:v,outlineColor:m,strokeDashArray:h}=to(p),f=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:g}=Xn(f),y=(0,i.Fl)((()=>t.elementInfo.flipH)),w=(0,i.Fl)((()=>t.elementInfo.flipV)),{flipStyle:x}=Gn(y,w),k=(0,s.iH)(!1);(0,i.YP)(n,(()=>{n.value!==t.elementInfo.id&&k.value&&(k.value=!1)}));const b=(0,i.Fl)((()=>{const e={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return t.elementInfo.text?t.elementInfo.text:e})),_=e=>{const l={...b.value,content:e};a.updateElement({id:t.elementInfo.id,props:{text:l}}),u()},I=()=>{if(!t.elementInfo.text)return;const e=t.elementInfo.text.content.replaceAll(/<[^>]+>/g,"");e||(a.removeElementProps({id:t.elementInfo.id,propName:"text"}),u())},S=(0,s.iH)(),C=()=>{k.value=!0,(0,i.Y3)((()=>S.value&&S.value.focus()))};return(e,t)=>{const l=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-shape",{lock:e.elementInfo.lock,"format-painter":(0,s.SU)(r)}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",style:(0,oe.j5)({opacity:e.elementInfo.opacity,filter:(0,s.SU)(g)?`drop-shadow(${(0,s.SU)(g)})`:"",transform:(0,s.SU)(x),color:b.value.defaultColor,fontFamily:b.value.defaultFontName}),onMousedown:t[3]||(t[3]=e=>c(e)),onMouseup:t[4]||(t[4]=e=>d()),onTouchstart:t[5]||(t[5]=e=>c(e)),onDblclick:t[6]||(t[6]=e=>C())},[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?((0,i.wg)(),(0,i.iD)("defs",vs,[(0,i.Wm)(ds,{id:`editabel-gradient-${e.elementInfo.id}`,type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):(0,i.kq)("",!0),(0,i._)("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[(0,i._)("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",d:e.elementInfo.path,fill:e.elementInfo.gradient?`url(#editabel-gradient-${e.elementInfo.id})`:e.elementInfo.fill,stroke:(0,s.SU)(m),"stroke-width":(0,s.SU)(v),"stroke-dasharray":(0,s.SU)(h)},null,8,hs)],8,ms)],8,ps)),(0,i._)("div",{class:(0,oe.C_)(["shape-text",[b.value.align,{editable:k.value||b.value.content}]])},[k.value||b.value.content?((0,i.wg)(),(0,i.j4)(Xi,{key:0,ref_key:"prosemirrorEditorRef",ref:S,elementId:e.elementInfo.id,defaultColor:b.value.defaultColor,defaultFontName:b.value.defaultFontName,editable:!e.elementInfo.lock,value:b.value.content,onUpdate:t[0]||(t[0]=e=>_(e)),onBlur:t[1]||(t[1]=e=>I()),onMousedown:t[2]||(t[2]=e=>c(e,!1))},null,8,["elementId","defaultColor","defaultFontName","editable","value"])):(0,i.kq)("",!0)],2)],36)),[[l,e.contextmenus]])],4)],6)}}});const gs=(0,Vl.Z)(fs,[["__scopeId","data-v-5d988de2"]]);var ys=gs;const ws=["id","markerWidth","markerHeight","refX","refY"],xs=["d","fill","transform"];var ks=(0,i.aZ)({__name:"LinePointMarker",props:{id:{},position:{},type:{},baseSize:{},color:{}},setup(e){const t=e,l={dot:"m0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z",arrow:"M0,0 L10,5 0,10 Z"},a={"arrow-start":180,"arrow-end":0},n=(0,i.Fl)((()=>l[t.type])),o=(0,i.Fl)((()=>a[`${t.type}-${t.position}`]||0)),s=(0,i.Fl)((()=>t.baseSize<2?2:t.baseSize));return(e,t)=>((0,i.wg)(),(0,i.iD)("marker",{id:`${e.id}-${e.type}-${e.position}`,markerUnits:"userSpaceOnUse",orient:"auto",markerWidth:3*s.value,markerHeight:3*s.value,refX:1.5*s.value,refY:1.5*s.value},[(0,i._)("path",{d:n.value,fill:e.color,transform:`scale(${.3*s.value}, ${.3*s.value}) rotate(${o.value}, 5, 5)`},null,8,xs)],8,ws))}});const bs=ks;var _s=bs;const Is=["width","height"],Ss=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"],Cs=["d"];var Ls=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},a=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:n}=Xn(a),o=(0,i.Fl)((()=>{const e=Math.abs(t.elementInfo.start[0]-t.elementInfo.end[0]);return e<24?24:e})),r=(0,i.Fl)((()=>{const e=Math.abs(t.elementInfo.start[1]-t.elementInfo.end[1]);return e<24?24:e})),u=(0,i.Fl)((()=>{if("dashed"!==t.elementInfo.style)return"0 0";const e=t.elementInfo.width;return e<=8?`${5*e} ${2.5*e}`:`${5*e} ${1.5*e}`})),c=(0,i.Fl)((()=>Ce(t.elementInfo)));return(e,t)=>{const a=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-shape",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({filter:(0,s.SU)(n)?`drop-shadow(${(0,s.SU)(n)})`:""}),onMousedown:t[0]||(t[0]=e=>l(e)),onTouchstart:t[1]||(t[1]=e=>l(e))},[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:o.value,height:r.value},[(0,i._)("defs",null,[e.elementInfo.points[0]?((0,i.wg)(),(0,i.j4)(_s,{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"])):(0,i.kq)("",!0),e.elementInfo.points[1]?((0,i.wg)(),(0,i.j4)(_s,{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"])):(0,i.kq)("",!0)]),(0,i._)("path",{class:"line-point",d:c.value,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":u.value,fill:"none","marker-start":e.elementInfo.points[0]?`url(#${e.elementInfo.id}-${e.elementInfo.points[0]}-start)`:"","marker-end":e.elementInfo.points[1]?`url(#${e.elementInfo.id}-${e.elementInfo.points[1]}-end)`:""},null,8,Ss),(0,i.wy)((0,i._)("path",{class:"line-path",d:c.value,stroke:"transparent","stroke-width":"20",fill:"none"},null,8,Cs),[[a,e.contextmenus]])],8,Is))],36)],6)}}});const Ts=(0,Vl.Z)(Ls,[["__scopeId","data-v-16512454"]]);var Es=Ts,Ms=l(7678),Us=(l(4991),(0,i.aZ)({__name:"Chart",props:{width:{},height:{},type:{},data:{},themeColor:{},legends:{},options:{},gridColor:{},legend:{}},setup(e){const t=e,l=(0,s.iH)(),a=(0,i.f3)(Tn)||(0,s.iH)(1);let n;const o=(0,i.Fl)((()=>t.legend?t.height-20:t.height)),r=()=>({...t.data,series:t.data.series[0]}),u=()=>{const e=t.options||{};return{...e,width:t.width*a.value,height:o.value*a.value}},c=()=>{if(!l.value)return;const e=u();"bar"===t.type&&(n=new Ms.vz(l.value,t.data,e)),"line"===t.type&&(n=new Ms.wW(l.value,t.data,e)),"pie"===t.type&&(n=new Ms.uc(l.value,r(),e))},d=()=>{if(!n)return void c();const e=u(),l="pie"===t.type?r():t.data;n.update(l,e)};(0,i.YP)([()=>t.width,()=>t.height,()=>t.data,()=>t.options,a],d),(0,i.bv)(c);const p=(0,i.Fl)((()=>{let e=[];if(t.themeColor.length>=10)e=t.themeColor;else if(1===t.themeColor.length)e=(0,W.Z)(t.themeColor[0]).analogous(10).map((e=>e.toRgbString()));else{const l=t.themeColor.length,a=(0,W.Z)(t.themeColor[l-1]).analogous(11-l).map((e=>e.toRgbString()));e=[...t.themeColor.slice(0,l-1),...a]}return e})),v=()=>{if(l.value)for(let e=0;e<10;e++)l.value.style.setProperty(`--theme-color-${e+1}`,p.value[e])};(0,i.YP)(p,v),(0,i.bv)(v);const m=()=>{l.value&&t.gridColor&&l.value.style.setProperty("--grid-color",t.gridColor)};return(0,i.YP)((()=>t.gridColor),m),(0,i.bv)(m),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"chart",style:(0,oe.j5)({flexDirection:"top"===e.legend?"column-reverse":"column"})},[(0,i._)("div",{class:"chart-content",ref_key:"chartRef",ref:l,style:(0,oe.j5)({width:e.width+"px",height:o.value+"px",transform:`scale(${1/(0,s.SU)(a)})`})},null,4),e.legend?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"legends",style:(0,oe.j5)({transform:`scale(${1/(0,s.SU)(a)})`})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.legends,((t,l)=>((0,i.wg)(),(0,i.iD)("div",{class:"legend",key:l,style:(0,oe.j5)({color:e.gridColor})},[(0,i._)("div",{class:"block",style:(0,oe.j5)({backgroundColor:p.value[l]})},null,4),(0,i.Uk)(" "+(0,oe.zw)(t),1)],4)))),128))],4)):(0,i.kq)("",!0)],4))}}));const Ws=(0,Vl.Z)(Us,[["__scopeId","data-v-ae2a96a6"]]);var Ds=Ws,Hs=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},a=()=>{Oi.emit(Ai.OPEN_CHART_DATA_EDITOR)};return(e,t)=>{const n=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-chart",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",style:(0,oe.j5)({backgroundColor:e.elementInfo.fill}),onMousedown:t[0]||(t[0]=e=>l(e)),onTouchstart:t[1]||(t[1]=e=>l(e)),onDblclick:t[2]||(t[2]=e=>a())},[(0,i.Wm)(Po,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),(0,i.Wm)(Ds,{width:e.elementInfo.width,height:e.elementInfo.height,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor,legends:e.elementInfo.data.legends,legend:e.elementInfo.legend||""},null,8,["width","height","type","data","options","themeColor","gridColor","legends","legend"])],36)),[[n,e.contextmenus]])],4)],6)}}});const Fs=(0,Vl.Z)(Hs,[["__scopeId","data-v-6fc3de39"]]);var As=Fs;const $s=e=>{if(!e)return{};const{bold:t,em:l,underline:a,strikethrough:n,color:o,backcolor:i,fontsize:s,fontname:r,align:u}=e;let c=`${a?"underline":""} ${n?"line-through":""}`;return" "===c&&(c="none"),{fontWeight:t?"bold":"normal",fontStyle:l?"italic":"normal",textDecoration:c,color:o||"#000",backgroundColor:i||"",fontSize:s||"14px",fontFamily:r||"微软雅黑",textAlign:u||"left"}},Zs=e=>e.replace(/\n/g,"
").replace(/ /g," ");var Os=e=>{const t=(0,i.Fl)((()=>{const t=[];for(let l=0;l1||n.rowspan>1)for(let a=l;a{const t=(0,s.iH)(["",""]);return(0,i.YP)((()=>e.value),(()=>{e.value&&(t.value=Se(e.value.color))}),{immediate:!0}),{subThemeColor:t}};const zs=["innerHTML"];var Ps=(0,i.aZ)({__name:"CustomTextarea",props:{value:{default:""}},emits:["updateValue","insertExcelData"],setup(e,{emit:t}){const l=e,a=t,n=(0,s.iH)(),o=(0,s.iH)(""),r=(0,s.iH)(!1);(0,i.YP)((()=>l.value),(()=>{r.value||(o.value=l.value,n.value&&(n.value.innerHTML=l.value))}),{immediate:!0});const u=()=>{if(!n.value)return;const e=n.value.innerHTML;a("updateValue",e)},c=()=>{r.value=!0,n.value&&(n.value.onpaste=e=>{if(e.preventDefault(),!e.clipboardData)return;const t=e.clipboardData.items[0];t&&"string"===t.kind&&"text/plain"===t.type&&t.getAsString((e=>{const t=fe(e);if("object"===typeof t)return;const l=ge(e);if(l)return a("insertExcelData",l),void(n.value&&(n.value.innerHTML=l[0][0]));document.execCommand("insertText",!1,e)}))})},d=()=>{r.value=!1,n.value&&(n.value.onpaste=null)};return(0,i.Jd)((()=>{n.value&&(n.value.onpaste=null)})),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"custom-textarea",ref_key:"textareaRef",ref:n,contenteditable:!0,onFocus:t[0]||(t[0]=e=>c()),onBlur:t[1]||(t[1]=e=>d()),onInput:t[2]||(t[2]=e=>u()),innerHTML:o.value},null,40,zs))}});const Bs=(0,Vl.Z)(Ps,[["__scopeId","data-v-7a7222ac"]]);var Ns=Bs;const js={key:0,class:"handler"},Ys=["onMousedown"],Vs=["width"],Js=["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"],qs=["innerHTML"];var Xs=(0,i.aZ)({__name:"EditableTable",props:{data:{},width:{},cellMinHeight:{},colWidths:{},outline:{},theme:{},editable:{type:Boolean,default:!0}},emits:["change","changeColWidths","changeSelectedCells"],setup(e,{emit:t}){const l=e,a=t,{canvasScale:u}=(0,o.Jk)(R()),c=(0,s.iH)(!1),d=(0,s.iH)([]),p=(0,s.iH)([]),v=(0,i.Fl)({get(){return l.data},set(e){a("change",e)}}),m=(0,i.Fl)((()=>l.theme)),{subThemeColor:h}=Rs(m),f=(0,s.iH)([]),g=(0,i.Fl)((()=>f.value.reduce(((e,t)=>e+t))));(0,i.YP)([()=>l.colWidths,()=>l.width],(()=>{f.value=l.colWidths.map((e=>e*l.width))}),{immediate:!0});const y=()=>{d.value=[],p.value=[]};(0,i.YP)((()=>l.editable),(()=>{l.editable||y()}));const w=(0,i.Fl)((()=>{const e=[];for(let t=1;te+t));e.push(l)}return e})),x=(0,i.Fl)((()=>l.data)),{hideCells:k}=Os(x),b=(0,i.Fl)((()=>{if(!d.value.length)return[];const[e,t]=d.value;if(!p.value.length)return[`${e}_${t}`];const[l,a]=p.value;if(e===l&&t===a)return[`${e}_${t}`];const n=[],o=Math.min(e,l),i=Math.min(t,a),s=Math.max(e,l),r=Math.max(t,a);for(let u=0;u=o&&u<=s&&t>=i&&t<=r&&n.push(`${u}_${t}`)}return n}));(0,i.YP)(b,((e,t)=>{(0,D.isEqual)(e,t)||a("changeSelectedCells",b.value)}));const _=(0,i.Fl)((()=>b.value.length>1?null:b.value[0])),I=()=>c.value=!1,S=(e,t,l)=>{0===e.button&&(p.value=[],c.value=!0,d.value=[t,l])},C=(e,t)=>{c.value&&(p.value=[e,t])};(0,i.bv)((()=>{document.addEventListener("mouseup",I)})),(0,i.Ah)((()=>{document.removeEventListener("mouseup",I)}));const L=(e,t)=>k.value.includes(`${e}_${t}`),T=e=>{const t=v.value.length-1;d.value=[0,e],p.value=[t,e]},E=e=>{const t=v.value[e].length-1;d.value=[e,0],p.value=[e,t]},M=()=>{const e=v.value.length-1,t=v.value[e].length-1;d.value=[0,0],p.value=[e,t]},U=e=>{const t=JSON.parse(JSON.stringify(v.value)),l=v.value[e],a=[];for(let n=0;n=0;l--)if(!L(l,n)){t[l][n].rowspan=t[l][n].rowspan-1;break}t.splice(e,1),v.value=t},W=e=>{const t=JSON.parse(JSON.stringify(v.value)),l=[];for(let a=0;a=0;l--)if(!L(a,l)){t[a][l].colspan=t[a][l].colspan-1;break}v.value=t.map((t=>(t.splice(e,1),t))),f.value.splice(e,1),a("changeColWidths",f.value)},H=e=>{const t=JSON.parse(JSON.stringify(v.value)),l=[];for(let a=0;a{v.value=v.value.map((t=>{const l={colspan:1,rowspan:1,text:"",id:(0,r.x0)(10)};return t.splice(e,0,l),t})),f.value.splice(e,0,100),a("changeColWidths",f.value)},A=(e,t)=>{let l=JSON.parse(JSON.stringify(v.value));const n={colspan:1,rowspan:1,text:""};if(e){const t=[];for(let a=0;a{const l=[];for(let a=0;a{const[e,t]=d.value,[l,a]=p.value,n=Math.min(e,l),o=Math.min(t,a),i=Math.max(e,l),s=Math.max(t,a),r=JSON.parse(JSON.stringify(v.value));r[n][o].rowspan=i-n+1,r[n][o].colspan=s-o+1,v.value=r,y()},Z=(e,t)=>{const l=JSON.parse(JSON.stringify(v.value));l[e][t].rowspan=1,l[e][t].colspan=1,v.value=l,y()},O=(e,t)=>{y();let l=!0;const n=f.value[t],o=e.pageX,i=50;document.onmousemove=e=>{if(!l)return;const a=(e.pageX-o)/u.value,s=n+a{l=!1,document.onmousemove=null,document.onmouseup=null,a("changeColWidths",f.value)}},z=()=>{const e=JSON.parse(JSON.stringify(v.value));for(let t=0;t{const e=(t,l)=>v.value[t]?v.value[t][l]?L(t,l)?e(t,l+1):[t,l]:e(t+1,0):null;p.value=[];const t=d.value[0],l=d.value[1]+1,a=e(t,l);a?d.value=a:(H(t+1),d.value=[t+1,0]),(0,i.Y3)((()=>{const e=document.querySelector(".cell-text.active");e&&e.focus()}))},B=e=>{if(!l.editable||!b.value.length)return;const t=e.key.toUpperCase();if(b.value.length<2){if(t===ne.TAB&&(e.preventDefault(),P()),e.ctrlKey&&t===ne.UP){e.preventDefault();const t=+b.value[0].split("_")[0];H(t)}if(e.ctrlKey&&t===ne.DOWN){e.preventDefault();const t=+b.value[0].split("_")[0];H(t+1)}if(e.ctrlKey&&t===ne.LEFT){e.preventDefault();const t=+b.value[0].split("_")[1];F(t)}if(e.ctrlKey&&t===ne.RIGHT){e.preventDefault();const t=+b.value[0].split("_")[1];F(t+1)}}else t===ne.DELETE&&z()};(0,i.bv)((()=>{document.addEventListener("keydown",B)})),(0,i.Ah)((()=>{document.removeEventListener("keydown",B)}));const N=(0,D.debounce)((function(e,t,l){v.value[t][l].text=e,a("change",v.value)}),300,{trailing:!0}),j=(e,t,l)=>{const n=e.length,o=e[0].length;let s=0,r=0;t+n>v.value.length&&(s=t+n-v.value.length),l+o>v.value[0].length&&(r=l+o-v.value[0].length),(s||r)&&A(s,r),(0,i.Y3)((()=>{for(let a=0;a{const e=[];for(let t=0;t{const e=Y(),t=e.length>1,l=e[0].length>1;return{canDeleteRow:t,canDeleteCol:l}},J=(e,t)=>{const l=b.value.length>1,a=v.value[e][t],n=l,o=!l&&(a.rowspan>1||a.colspan>1);return{canMerge:n,canSplit:o}},q=e=>{const t=e.dataset.cellIndex,l=+t.split("_")[0],a=+t.split("_")[1];b.value.includes(`${l}_${a}`)||(d.value=[l,a],p.value=[]);const{canMerge:n,canSplit:o}=J(l,a),{canDeleteRow:i,canDeleteCol:s}=V();return[{text:"插入列",children:[{text:"到左侧",handler:()=>F(a)},{text:"到右侧",handler:()=>F(a+1)}]},{text:"插入行",children:[{text:"到上方",handler:()=>H(l)},{text:"到下方",handler:()=>H(l+1)}]},{text:"删除列",disable:!s,handler:()=>W(a)},{text:"删除行",disable:!i,handler:()=>U(l)},{divider:!0},{text:"合并单元格",disable:!n,handler:$},{text:"取消合并单元格",disable:!o,handler:()=>Z(l,a)},{divider:!0},{text:"选中当前列",handler:()=>T(a)},{text:"选中当前行",handler:()=>E(l)},{text:"选中全部单元格",handler:M}]};return(e,t)=>{const l=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:"editable-table",style:(0,oe.j5)({width:g.value+"px"})},[e.editable?((0,i.wg)(),(0,i.iD)("div",js,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(w.value,((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"drag-line",key:t,style:(0,oe.j5)({left:e+"px"}),onMousedown:e=>O(e,t)},null,44,Ys)))),128))])):(0,i.kq)("",!0),(0,i._)("table",{class:(0,oe.C_)({theme:m.value,"row-header":m.value?.rowHeader,"row-footer":m.value?.rowFooter,"col-header":m.value?.colHeader,"col-footer":m.value?.colFooter}),style:(0,oe.j5)(`--themeColor: ${m.value?.color}; --subThemeColor1: ${(0,s.SU)(h)[0]}; --subThemeColor2: ${(0,s.SU)(h)[1]}`)},[(0,i._)("colgroup",null,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(f.value,((e,t)=>((0,i.wg)(),(0,i.iD)("col",{span:"1",key:t,width:e},null,8,Vs)))),128))]),(0,i._)("tbody",null,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(v.value,((t,a)=>((0,i.wg)(),(0,i.iD)("tr",{key:a,style:(0,oe.j5)({height:e.cellMinHeight+"px"})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t,((t,o)=>(0,i.wy)(((0,i.wg)(),(0,i.iD)("td",{class:(0,oe.C_)(["cell",{selected:b.value.includes(`${a}_${o}`)&&b.value.length>1,active:_.value===`${a}_${o}`}]),style:(0,oe.j5)({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px",...(0,s.SU)($s)(t.style)}),key:t.id,rowspan:t.rowspan,colspan:t.colspan,"data-cell-index":`${a}_${o}`,onMousedown:e=>S(e,a,o),onMouseenter:e=>C(a,o)},[_.value===`${a}_${o}`?((0,i.wg)(),(0,i.j4)(Ns,{key:0,class:(0,oe.C_)(["cell-text",{active:_.value===`${a}_${o}`}]),style:(0,oe.j5)({minHeight:e.cellMinHeight-4+"px"}),value:t.text,onUpdateValue:e=>(0,s.SU)(N)(e,a,o),onInsertExcelData:e=>j(e,a,o)},null,8,["class","style","value","onUpdateValue","onInsertExcelData"])):((0,i.wg)(),(0,i.iD)("div",{key:1,class:"cell-text",style:(0,oe.j5)({minHeight:e.cellMinHeight-4+"px"}),innerHTML:(0,s.SU)(Zs)(t.text)},null,12,qs))],46,Js)),[[n.F8,!(0,s.SU)(k).includes(`${a}_${o}`)],[l,e=>q(e)]]))),128))],4)))),128))])],6)],4)}}});const Gs=(0,Vl.Z)(Xs,[["__scopeId","data-v-0236a619"]]);var Ks=Gs;const Qs={class:"element-content"};var er=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=R(),a=$(),{canvasScale:r,handleElementId:u,isScaling:c}=(0,o.Jk)(l),d=(0,s.iH)(),{addHistorySnapshot:p}=da(),v=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},m=(0,s.iH)(!1);(0,i.YP)(u,(()=>{u.value!==t.elementInfo.id&&(m.value=!1)})),(0,i.YP)(m,(()=>{l.setDisableHotkeysState(m.value)}));const h=()=>{t.elementInfo.lock||(m.value=!0)},f=(0,s.iH)(-1);(0,i.YP)(c,(()=>{u.value===t.elementInfo.id&&(c.value&&(m.value=!1),c.value||-1===f.value||(a.updateElement({id:t.elementInfo.id,props:{height:f.value}}),f.value=-1))}));const g=e=>{const l=e[0].contentRect;if(!d.value)return;const n=l.height;t.elementInfo.height!==n&&(c.value?f.value=n:a.updateElement({id:t.elementInfo.id,props:{height:n}}))},y=new ResizeObserver(g);(0,i.bv)((()=>{d.value&&y.observe(d.value)})),(0,i.Ah)((()=>{d.value&&y.unobserve(d.value)}));const w=e=>{a.updateElement({id:t.elementInfo.id,props:{data:e}}),p()},x=e=>{const l=e.reduce(((e,t)=>e+t)),n=e.map((e=>e/l));a.updateElement({id:t.elementInfo.id,props:{width:l,colWidths:n}}),p()},k=e=>{(0,i.Y3)((()=>l.setSelectedTableCells(e)))};return(e,t)=>{const l=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-table",{lock:e.elementInfo.lock}]),ref_key:"elementRef",ref:d,style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",Qs,[(0,i.Wm)(Ks,{onMousedown:t[0]||(t[0]=(0,n.iM)((()=>{}),["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,cellMinHeight:e.elementInfo.cellMinHeight,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:m.value,onChange:t[1]||(t[1]=e=>w(e)),onChangeColWidths:t[2]||(t[2]=e=>x(e)),onChangeSelectedCells:t[3]||(t[3]=e=>k(e))},null,8,["data","width","cellMinHeight","colWidths","outline","theme","editable"]),!m.value||e.elementInfo.lock?((0,i.wg)(),(0,i.iD)("div",{key:0,class:(0,oe.C_)(["table-mask",{lock:e.elementInfo.lock}]),onDblclick:t[4]||(t[4]=e=>h()),onMousedown:t[5]||(t[5]=e=>v(e)),onTouchstart:t[6]||(t[6]=e=>v(e))},[(0,s.SU)(u)===e.elementInfo.id?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"mask-tip",style:(0,oe.j5)({transform:`scale(${1/(0,s.SU)(r)})`})},"双击编辑",4)):(0,i.kq)("",!0)],34)):(0,i.kq)("",!0)])),[[l,e.contextmenus]])],4)],6)}}});const tr=(0,Vl.Z)(er,[["__scopeId","data-v-742a731e"]]);var lr=tr;const ar=["width","height","stroke","stroke-width"],nr=["transform"],or=["d"];var ir=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},a=()=>{Oi.emit(Ai.OPEN_LATEX_EDITOR)};return(e,t)=>{const n=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-latex",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",onMousedown:t[0]||(t[0]=e=>l(e)),onTouchstart:t[1]||(t[1]=e=>l(e)),onDblclick:t[2]||(t[2]=e=>a())},[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.strokeWidth,fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[(0,i._)("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[(0,i._)("path",{d:e.elementInfo.path},null,8,or)],8,nr)],8,ar))],32)),[[n,e.contextmenus]])],4)],6)}}});const sr=(0,Vl.Z)(ir,[["__scopeId","data-v-35c33b80"]]);var rr=sr,ur=(e,t)=>{(0,i.bv)((()=>{if(!t.value)return;let l="normal";if(/m3u8(#|\?|$)/i.exec(e)?l="hls":/.flv(#|\?|$)/i.exec(e)&&(l="flv"),t.value&&"hls"===l&&(t.value.canPlayType("application/x-mpegURL")||t.value.canPlayType("application/vnd.apple.mpegURL"))&&(l="normal"),"hls"===l){const l=window.Hls;if(l&&l.isSupported()){const a=new l;a.loadSource(e),a.attachMedia(t.value)}}else if("flv"===l){const l=window.flvjs;if(l&&l.isSupported()){const a=l.createPlayer({type:"flv",url:e});a.attachMediaElement(t.value),a.load()}}}))};const cr=e=>((0,i.dD)("data-v-e55352ca"),e=e(),(0,i.Cn)(),e),dr={key:0,class:"load-error"},pr=["src","autoplay","poster"],vr={class:"bezel"},mr=cr((()=>(0,i._)("div",{class:"controller-mask"},null,-1))),hr={class:"controller"},fr={class:"icons icons-left"},gr={class:"icon-content"},yr={class:"volume"},wr={class:"icon-content"},xr=cr((()=>(0,i._)("span",{class:"thumb"},null,-1))),kr=[xr],br={class:"time"},_r={class:"ptime"},Ir={class:"dtime"},Sr={class:"icons icons-right"},Cr={class:"speed"},Lr={class:"icon speed-icon"},Tr=["onClick"],Er={class:"icon-content"},Mr={class:"bar"},Ur=cr((()=>(0,i._)("span",{class:"thumb"},null,-1))),Wr=[Ur];var Dr=(0,i.aZ)({__name:"index",props:{width:{},height:{},src:{},poster:{default:""},autoplay:{type:Boolean,default:!1},scale:{default:1}},setup(e){const t=e,l=(e=0)=>{if(0===e||isNaN(e))return"00:00";const t=e=>e<10?"0"+e:""+e,l=Math.floor(e/3600),a=Math.floor((e-3600*l)/60),n=Math.floor(e-3600*l-60*a);return(l>0?[l,a,n]:[a,n]).map(t).join(":")},a=e=>e.getBoundingClientRect().left,n=(0,s.iH)(),o=(0,s.iH)(),r=(0,s.iH)(),u=(0,s.iH)(.5),c=(0,s.iH)(!0),d=(0,s.iH)(0),p=(0,s.iH)(0),v=(0,s.iH)(0),m=(0,s.iH)(!1),h=(0,s.iH)(!1),f=(0,s.iH)(1),g=(0,s.iH)(!1),y=(0,s.iH)("00:00"),w=(0,s.iH)("0"),x=(0,i.Fl)((()=>l(d.value))),k=(0,i.Fl)((()=>l(p.value))),b=(0,i.Fl)((()=>d.value/p.value*100+"%")),_=(0,i.Fl)((()=>v.value/p.value*100+"%")),I=(0,i.Fl)((()=>100*u.value+"%")),S=(0,s.iH)(!1),C=[{label:"2x",value:2},{label:"1.5x",value:1.5},{label:"1.25x",value:1.25},{label:"1x",value:1},{label:"0.75x",value:.75},{label:"0.5x",value:.5}],L=e=>{n.value&&(e=Math.max(e,0),e=Math.min(e,p.value),n.value.currentTime=e,d.value=e)},T=()=>{n.value&&(c.value=!1,n.value.play(),h.value=!0)},E=()=>{n.value&&(c.value=!0,n.value.pause(),h.value=!0)},M=()=>{c.value?T():E()},U=e=>{n.value&&(e=Math.max(e,0),e=Math.min(e,1),n.value.volume=e,u.value=e,n.value.muted&&0!==e&&(n.value.muted=!1))},W=e=>{n.value&&(n.value.playbackRate=e),f.value=e},D=()=>{p.value=n.value?.duration||0},H=()=>{d.value=n.value?.currentTime||0},F=()=>{m.value?(L(0),T()):E()},A=()=>{v.value=n.value?.buffered.length?n.value.buffered.end(n.value.buffered.length-1):0},$=(0,s.iH)(!1),Z=()=>$.value=!0,O=e=>{if(!n.value||!o.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-a(o.value))/o.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const i=l*p.value;n.value.currentTime=i,d.value=i},R=e=>{if(!n.value||!o.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-a(o.value))/o.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const i=l*p.value;n.value.currentTime=i,d.value=i,document.removeEventListener("mousemove",O),document.removeEventListener("touchmove",O),document.removeEventListener("mouseup",R),document.removeEventListener("touchend",R)},z=()=>{document.addEventListener("mousemove",O),document.addEventListener("touchmove",O),document.addEventListener("mouseup",R),document.addEventListener("touchend",R)},P=e=>{if(!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(t-a(r.value))/45;U(l)},B=()=>{document.removeEventListener("mousemove",P),document.removeEventListener("touchmove",P),document.removeEventListener("mouseup",B),document.removeEventListener("touchend",B)},N=()=>{document.addEventListener("mousemove",P),document.addEventListener("touchmove",P),document.addEventListener("mouseup",B),document.addEventListener("touchend",B)},j=e=>{if(!r.value)return;const t=(e.clientX-a(r.value))/45;U(t)},Y=e=>{if(p.value&&o.value){const t=o.value.getBoundingClientRect().left,a=e.clientX-t;if(a<0||a>o.value.offsetWidth)return;const n=p.value*(a/o.value.offsetWidth);w.value=a-(n>=3600?25:20)+"px",y.value=l(n),g.value=!0}},V=()=>{n.value&&(n.value.muted?(n.value.muted=!1,U(.5)):(n.value.muted=!0,U(0)))},J=()=>{m.value=!m.value},q=(0,s.iH)(-1),X=(0,s.iH)(!1),G=()=>{X.value=!1,clearTimeout(q.value),q.value=setTimeout((()=>{n.value?.played.length&&(X.value=!0)}),3e3)};return ur(t.src,n),(e,t)=>{const l=(0,i.up)("IconPause"),a=(0,i.up)("IconPlayOne"),s=(0,i.up)("IconVolumeMute"),d=(0,i.up)("IconVolumeNotice"),p=(0,i.up)("IconVolumeSmall");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["video-player",{"hide-controller":X.value}]),style:(0,oe.j5)({width:e.width*e.scale+"px",height:e.height*e.scale+"px",transform:`scale(${1/e.scale})`}),onMousemove:t[22]||(t[22]=e=>G()),onClick:t[23]||(t[23]=e=>G())},[(0,i._)("div",{class:"video-wrap",onClick:t[8]||(t[8]=e=>M())},[$.value?((0,i.wg)(),(0,i.iD)("div",dr,"视频加载失败")):(0,i.kq)("",!0),(0,i._)("video",{class:"video",ref_key:"videoRef",ref:n,src:e.src,autoplay:e.autoplay,poster:e.poster,"webkit-playsinline":"",playsinline:"",onDurationchange:t[0]||(t[0]=e=>D()),onTimeupdate:t[1]||(t[1]=e=>H()),onEnded:t[2]||(t[2]=e=>F()),onProgress:t[3]||(t[3]=e=>A()),onPlay:t[4]||(t[4]=e=>{G(),c.value=!1}),onPause:t[5]||(t[5]=e=>G()),onError:t[6]||(t[6]=e=>Z())},null,40,pr),(0,i._)("div",vr,[(0,i._)("span",{class:(0,oe.C_)(["bezel-icon",{"bezel-transition":h.value}]),onAnimationend:t[7]||(t[7]=e=>h.value=!1)},[c.value?((0,i.wg)(),(0,i.j4)(l,{key:0})):((0,i.wg)(),(0,i.j4)(a,{key:1}))],34)])]),mr,(0,i._)("div",hr,[(0,i._)("div",fr,[(0,i._)("div",{class:"icon play-icon",onClick:t[9]||(t[9]=e=>M())},[(0,i._)("span",gr,[c.value?((0,i.wg)(),(0,i.j4)(a,{key:0})):((0,i.wg)(),(0,i.j4)(l,{key:1}))])]),(0,i._)("div",yr,[(0,i._)("div",{class:"icon volume-icon",onClick:t[10]||(t[10]=e=>V())},[(0,i._)("span",wr,[0===u.value?((0,i.wg)(),(0,i.j4)(s,{key:0})):1===u.value?((0,i.wg)(),(0,i.j4)(d,{key:1})):((0,i.wg)(),(0,i.j4)(p,{key:2}))])]),(0,i._)("div",{class:"volume-bar-wrap",onMousedown:t[11]||(t[11]=e=>N()),onTouchstart:t[12]||(t[12]=e=>N()),onClick:t[13]||(t[13]=e=>j(e))},[(0,i._)("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:r},[(0,i._)("div",{class:"volume-bar-inner",style:(0,oe.j5)({width:I.value})},kr,4)],512)],32)]),(0,i._)("span",br,[(0,i._)("span",_r,(0,oe.zw)(x.value),1),(0,i.Uk)(" / "),(0,i._)("span",Ir,(0,oe.zw)(k.value),1)])]),(0,i._)("div",Sr,[(0,i._)("div",Cr,[(0,i._)("div",Lr,[(0,i._)("span",{class:"icon-content",onClick:t[14]||(t[14]=e=>S.value=!S.value)},(0,oe.zw)(1===f.value?"倍速":f.value+"x"),1),S.value?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"speed-menu",onMouseleave:t[15]||(t[15]=e=>S.value=!1)},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(C,(e=>(0,i._)("div",{class:(0,oe.C_)(["speed-menu-item",{active:e.value===f.value}]),key:e.label,onClick:t=>W(e.value)},(0,oe.zw)(e.label),11,Tr))),64))],32)):(0,i.kq)("",!0)])]),(0,i._)("div",{class:"loop",onClick:t[16]||(t[16]=e=>J())},[(0,i._)("div",{class:(0,oe.C_)(["icon loop-icon",{active:m.value}])},[(0,i._)("span",Er,"循环"+(0,oe.zw)(m.value?"开":"关"),1)],2)])]),(0,i._)("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:o,onMousedown:t[17]||(t[17]=e=>z()),onTouchstart:t[18]||(t[18]=e=>z()),onMousemove:t[19]||(t[19]=e=>Y(e)),onMouseenter:t[20]||(t[20]=e=>g.value=!0),onMouseleave:t[21]||(t[21]=e=>g.value=!1)},[(0,i._)("div",{class:(0,oe.C_)(["bar-time",{hidden:!g.value}]),style:(0,oe.j5)({left:w.value})},(0,oe.zw)(y.value),7),(0,i._)("div",Mr,[(0,i._)("div",{class:"loaded",style:(0,oe.j5)({width:_.value})},null,4),(0,i._)("div",{class:"played",style:(0,oe.j5)({width:b.value})},Wr,4)])],544)])],38)}}});const Hr=(0,Vl.Z)(Dr,[["__scopeId","data-v-e55352ca"]]);var Fr=Hr,Ar=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))};return(e,t)=>{const n=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-video",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",onMousedown:t[2]||(t[2]=e=>a(e,!1)),onTouchstart:t[3]||(t[3]=e=>a(e,!1))},[(0,i.Wm)(Fr,{width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:(0,s.SU)(l)},null,8,["width","height","src","poster","scale"]),((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(["t","b","l","r"],(e=>(0,i._)("div",{class:(0,oe.C_)(["handler-border",e]),key:e,onMousedown:t[0]||(t[0]=e=>a(e)),onTouchstart:t[1]||(t[1]=e=>a(e))},null,34))),64))],32)),[[n,e.contextmenus]])],4)],6)}}});const $r=(0,Vl.Z)(Ar,[["__scopeId","data-v-5dc89f2a"]]);var Zr=$r;const Or=e=>((0,i.dD)("data-v-44037f56"),e=e(),(0,i.Cn)(),e),Rr=["src","autoplay"],zr={class:"controller"},Pr={class:"icons"},Br={class:"icon-content"},Nr={class:"volume"},jr={class:"icon-content"},Yr=Or((()=>(0,i._)("span",{class:"thumb"},null,-1))),Vr=[Yr],Jr={class:"time"},qr={class:"ptime"},Xr={class:"dtime"},Gr={class:"bar"},Kr=Or((()=>(0,i._)("span",{class:"thumb"},null,-1))),Qr=[Kr];var eu=(0,i.aZ)({__name:"AudioPlayer",props:{src:{},loop:{type:Boolean},autoplay:{type:Boolean,default:!1},scale:{default:1}},setup(e,{expose:t}){const l=e,a=(e=0)=>{if(0===e||isNaN(e))return"00:00";const t=e=>e<10?"0"+e:""+e,l=Math.floor(e/3600),a=Math.floor((e-3600*l)/60),n=Math.floor(e-3600*l-60*a);return(l>0?[l,a,n]:[a,n]).map(t).join(":")},n=e=>e.getBoundingClientRect().left,o=(0,s.iH)(),r=(0,s.iH)(),u=(0,s.iH)(),c=(0,s.iH)(.5),d=(0,s.iH)(!0),p=(0,s.iH)(0),v=(0,s.iH)(0),m=(0,s.iH)(0),h=(0,s.iH)(!1),f=(0,s.iH)("00:00"),g=(0,s.iH)("0"),y=(0,i.Fl)((()=>a(p.value))),w=(0,i.Fl)((()=>a(v.value))),x=(0,i.Fl)((()=>p.value/v.value*100+"%")),k=(0,i.Fl)((()=>m.value/v.value*100+"%")),b=(0,i.Fl)((()=>100*c.value+"%")),_=e=>{o.value&&(e=Math.max(e,0),e=Math.min(e,v.value),o.value.currentTime=e,p.value=e)},I=()=>{o.value&&(d.value=!1,o.value.play())},S=()=>{o.value&&(d.value=!0,o.value.pause())},C=()=>{d.value?I():S()},L=e=>{o.value&&(e=Math.max(e,0),e=Math.min(e,1),o.value.volume=e,c.value=e,o.value.muted&&0!==e&&(o.value.muted=!1))},T=()=>{v.value=o.value?.duration||0},E=()=>{p.value=o.value?.currentTime||0},M=()=>{d.value=!1},U=()=>{l.loop?(_(0),I()):S()},W=()=>{m.value=o.value?.buffered.length?o.value.buffered.end(o.value.buffered.length-1):0},D=()=>ta.error("视频加载失败"),H=e=>{if(!o.value||!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-n(r.value))/r.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const a=l*v.value;o.value.currentTime=a,p.value=a},F=e=>{if(!o.value||!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-n(r.value))/r.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const a=l*v.value;o.value.currentTime=a,p.value=a,document.removeEventListener("mousemove",H),document.removeEventListener("touchmove",H),document.removeEventListener("mouseup",F),document.removeEventListener("touchend",F)},A=()=>{document.addEventListener("mousemove",H),document.addEventListener("touchmove",H),document.addEventListener("mouseup",F),document.addEventListener("touchend",F)},$=e=>{if(!u.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(t-n(u.value))/45;L(l)},Z=()=>{document.removeEventListener("mousemove",$),document.removeEventListener("touchmove",$),document.removeEventListener("mouseup",Z),document.removeEventListener("touchend",Z)},O=()=>{document.addEventListener("mousemove",$),document.addEventListener("touchmove",$),document.addEventListener("mouseup",Z),document.addEventListener("touchend",Z)},R=e=>{if(!u.value)return;const t=(e.clientX-n(u.value))/45;L(t)},z=e=>{if(v.value&&r.value){const t=r.value.getBoundingClientRect().left,l=e.clientX-t;if(l<0||l>r.value.offsetWidth)return;const n=v.value*(l/r.value.offsetWidth);g.value=l-(n>=3600?25:20)+"px",f.value=a(n),h.value=!0}},P=()=>{o.value&&(o.value.muted?(o.value.muted=!1,L(.5)):(o.value.muted=!0,L(0)))};return t({toggle:C}),(e,t)=>{const l=(0,i.up)("IconPlayOne"),a=(0,i.up)("IconPause"),n=(0,i.up)("IconVolumeMute"),s=(0,i.up)("IconVolumeNotice"),p=(0,i.up)("IconVolumeSmall");return(0,i.wg)(),(0,i.iD)("div",{class:"audio-player",style:(0,oe.j5)({transform:`scale(${1/e.scale})`})},[(0,i._)("audio",{class:"audio",ref_key:"audioRef",ref:o,src:e.src,autoplay:e.autoplay,onDurationchange:t[0]||(t[0]=e=>T()),onTimeupdate:t[1]||(t[1]=e=>E()),onPlay:t[2]||(t[2]=e=>M()),onEnded:t[3]||(t[3]=e=>U()),onProgress:t[4]||(t[4]=e=>W()),onError:t[5]||(t[5]=e=>D())},null,40,Rr),(0,i._)("div",zr,[(0,i._)("div",Pr,[(0,i._)("div",{class:"icon play-icon",onClick:t[6]||(t[6]=e=>C())},[(0,i._)("span",Br,[d.value?((0,i.wg)(),(0,i.j4)(l,{key:0})):((0,i.wg)(),(0,i.j4)(a,{key:1}))])]),(0,i._)("div",Nr,[(0,i._)("div",{class:"icon volume-icon",onClick:t[7]||(t[7]=e=>P())},[(0,i._)("span",jr,[0===c.value?((0,i.wg)(),(0,i.j4)(n,{key:0})):1===c.value?((0,i.wg)(),(0,i.j4)(s,{key:1})):((0,i.wg)(),(0,i.j4)(p,{key:2}))])]),(0,i._)("div",{class:"volume-bar-wrap",onMousedown:t[8]||(t[8]=e=>O()),onTouchstart:t[9]||(t[9]=e=>O()),onClick:t[10]||(t[10]=e=>R(e))},[(0,i._)("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:u},[(0,i._)("div",{class:"volume-bar-inner",style:(0,oe.j5)({width:b.value})},Vr,4)],512)],32)])]),(0,i._)("span",Jr,[(0,i._)("span",qr,(0,oe.zw)(y.value),1),(0,i.Uk)(" / "),(0,i._)("span",Xr,(0,oe.zw)(w.value),1)]),(0,i._)("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:r,onMousedown:t[11]||(t[11]=e=>A()),onTouchstart:t[12]||(t[12]=e=>A()),onMousemove:t[13]||(t[13]=e=>z(e)),onMouseenter:t[14]||(t[14]=e=>h.value=!0),onMouseleave:t[15]||(t[15]=e=>h.value=!1)},[(0,i._)("div",{class:(0,oe.C_)(["bar-time",{hidden:!h.value}]),style:(0,oe.j5)({left:g.value})},(0,oe.zw)(f.value),7),(0,i._)("div",Gr,[(0,i._)("div",{class:"loaded",style:(0,oe.j5)({width:k.value})},null,4),(0,i._)("div",{class:"played",style:(0,oe.j5)({width:x.value})},Qr,4)])],544)])],4)}}});const tu=(0,Vl.Z)(eu,[["__scopeId","data-v-44037f56"]]);var lu=tu,au=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,{canvasScale:l,handleElementId:a}=(0,o.Jk)(R()),{viewportRatio:r}=(0,o.Jk)($()),u=(0,i.Fl)((()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px")),c=(0,i.Fl)((()=>{const e=oa,a=oa*r.value,n=280/l.value,o=50/l.value,i=t.elementInfo.width,s=t.elementInfo.height,u=t.elementInfo.left,c=t.elementInfo.top;let d=0,p=s;return u+n>=e&&(d=i-n),c+s+o>=a&&(p=-o),{left:d+"px",top:p+"px"}})),d=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))};return(e,t)=>{const o=(0,i.up)("IconVolumeNotice"),r=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-audio",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",onMousedown:t[1]||(t[1]=e=>d(e)),onTouchstart:t[2]||(t[2]=e=>d(e))},[(0,i.Wm)(o,{class:"audio-icon",style:(0,oe.j5)({fontSize:u.value,color:e.elementInfo.color})},null,8,["style"]),(0,s.SU)(a)===e.elementInfo.id?((0,i.wg)(),(0,i.j4)(lu,{key:0,class:"audio-player",style:(0,oe.j5)({...c.value}),src:e.elementInfo.src,loop:e.elementInfo.loop,scale:(0,s.SU)(l),onMousedown:t[0]||(t[0]=(0,n.iM)((()=>{}),["stop"]))},null,8,["style","src","loop","scale"])):(0,i.kq)("",!0)],32)),[[r,e.contextmenus]])],4)],6)}}});const nu=(0,Vl.Z)(au,[["__scopeId","data-v-53bdc956"]]);var ou=nu;const iu=["id"];var su=(0,i.aZ)({__name:"EditableElement",props:{elementInfo:{},elementIndex:{},isMultiSelect:{type:Boolean},selectElement:{type:Function},openLinkDialog:{type:Function}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e={[sa.IMAGE]:$o,[sa.TEXT]:ls,[sa.SHAPE]:ys,[sa.LINE]:Es,[sa.CHART]:As,[sa.TABLE]:lr,[sa.LATEX]:rr,[sa.VIDEO]:Zr,[sa.AUDIO]:ou};return e[t.elementInfo.type]||null})),{orderElement:a}=ba(),{alignElementToCanvas:n}=qn(),{combineElements:o,uncombineElements:s}=ya(),{deleteElement:r}=ga(),{lockElement:u,unlockElement:c}=fa(),{copyElement:d,pasteElement:p,cutElement:v}=wa(),{selectAllElement:m}=xa(),h=()=>t.elementInfo.lock?[{text:"解锁",handler:()=>c(t.elementInfo)}]:[{text:"剪切",subText:"Ctrl + X",handler:v},{text:"复制",subText:"Ctrl + C",handler:d},{text:"粘贴",subText:"Ctrl + V",handler:p},{divider:!0},{text:"水平居中",handler:()=>n(ee.HORIZONTAL),children:[{text:"水平垂直居中",handler:()=>n(ee.CENTER)},{text:"水平居中",handler:()=>n(ee.HORIZONTAL)},{text:"左对齐",handler:()=>n(ee.LEFT)},{text:"右对齐",handler:()=>n(ee.RIGHT)}]},{text:"垂直居中",handler:()=>n(ee.VERTICAL),children:[{text:"水平垂直居中",handler:()=>n(ee.CENTER)},{text:"垂直居中",handler:()=>n(ee.VERTICAL)},{text:"顶部对齐",handler:()=>n(ee.TOP)},{text:"底部对齐",handler:()=>n(ee.BOTTOM)}]},{divider:!0},{text:"置于顶层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:()=>a(t.elementInfo,Q.TOP),children:[{text:"置于顶层",handler:()=>a(t.elementInfo,Q.TOP)},{text:"上移一层",handler:()=>a(t.elementInfo,Q.UP)}]},{text:"置于底层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:()=>a(t.elementInfo,Q.BOTTOM),children:[{text:"置于底层",handler:()=>a(t.elementInfo,Q.BOTTOM)},{text:"下移一层",handler:()=>a(t.elementInfo,Q.DOWN)}]},{divider:!0},{text:"设置链接",handler:t.openLinkDialog},{text:t.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:t.elementInfo.groupId?s:o,hide:!t.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:m},{text:"锁定",subText:"Ctrl + L",handler:u},{text:"删除",subText:"Delete",handler:r}];return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"editable-element",ref:"elementRef",id:`editable-element-${e.elementInfo.id}`,style:(0,oe.j5)({zIndex:e.elementIndex})},[((0,i.wg)(),(0,i.j4)((0,i.LL)(l.value),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:h},null,8,["elementInfo","selectElement"]))],12,iu))}});const ru=su;var uu=ru,cu=(0,i.aZ)({__name:"MouseSelection",props:{top:{},left:{},width:{},height:{},quadrant:{}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(`mouse-selection quadrant-${e.quadrant}`),style:(0,oe.j5)({top:e.top+"px",left:e.left+"px",width:e.width+"px",height:e.height+"px"})},null,6))}});const du=(0,Vl.Z)(cu,[["__scopeId","data-v-2c5e1d42"]]);var pu=du;const vu={class:"grid-lines"},mu=["d","stroke"];var hu=(0,i.aZ)({__name:"GridLines",setup(e){const{canvasScale:t,gridLineSize:l}=(0,o.Jk)(R()),{currentSlide:a,viewportRatio:n}=(0,o.Jk)($()),r=(0,i.Fl)((()=>a.value?.background)),u=(0,i.Fl)((()=>{const e=r.value?.color||"#fff",t=["#000","#fff"];return W.Z.mostReadable(e,t,{includeFallbackColors:!0}).setAlpha(.5).toRgbString()})),c=(0,i.Fl)((()=>{const e=oa,t=oa*n.value;let a="";for(let n=0;n<=Math.floor(t/l.value);n++)a+=`M0 ${n*l.value} L${e} ${n*l.value} `;for(let n=0;n<=Math.floor(e/l.value);n++)a+=`M${n*l.value} 0 L${n*l.value} ${t} `;return a}));return(e,l)=>((0,i.wg)(),(0,i.iD)("svg",vu,[(0,i._)("path",{style:(0,oe.j5)({transform:`scale(${(0,s.SU)(t)})`}),d:c.value,fill:"none",stroke:u.value,"stroke-width":"0.3","stroke-dasharray":"5"},null,12,mu)]))}});const fu=(0,Vl.Z)(hu,[["__scopeId","data-v-05484a24"]]);var gu=fu,yu=e=>{const t=(0,i.Fl)((()=>{if(!e.value)return{backgroundColor:"#fff"};const{type:t,color:l,image:a,imageSize:n,gradientColor:o,gradientRotate:i,gradientType:s}=e.value;if("solid"===t)return{backgroundColor:l};if("image"===t)return a?"repeat"===n?{backgroundImage:`url(${a}`,backgroundRepeat:"repeat",backgroundSize:"contain"}:{backgroundImage:`url(${a}`,backgroundRepeat:"no-repeat",backgroundSize:n||"cover"}:{backgroundColor:"#fff"};if("gradient"===t){const e=i||0,t=o?o[0]:"#fff",l=o?o[1]:"#fff";return"radial"===s?{backgroundImage:`radial-gradient(${t}, ${l}`}:{backgroundImage:`linear-gradient(${e}deg, ${t}, ${l}`}}return{backgroundColor:"#fff"}}));return{backgroundStyle:t}},wu=(0,i.aZ)({__name:"ViewportBackground",setup(e){const{gridLineSize:t}=(0,o.Jk)(R()),{currentSlide:l}=(0,o.Jk)($()),a=(0,i.Fl)((()=>l.value?.background)),{backgroundStyle:n}=yu(a);return(e,l)=>((0,i.wg)(),(0,i.iD)("div",{class:"viewport-background",style:(0,oe.j5)((0,s.SU)(n))},[(0,s.SU)(t)?((0,i.wg)(),(0,i.j4)(gu,{key:0})):(0,i.kq)("",!0)],4))}});const xu=(0,Vl.Z)(wu,[["__scopeId","data-v-b6b18502"]]);var ku=xu,bu=(0,i.aZ)({__name:"AlignmentLine",props:{type:{},axis:{},length:{},canvasScale:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.axis.x*t.canvasScale+"px")),a=(0,i.Fl)((()=>t.axis.y*t.canvasScale+"px")),n=(0,i.Fl)((()=>"vertical"===t.type?{height:t.length*t.canvasScale+"px"}:{width:t.length*t.canvasScale+"px"}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"alignment-line",style:(0,oe.j5)({left:l.value,top:a.value})},[(0,i._)("div",{class:(0,oe.C_)(["line",e.type]),style:(0,oe.j5)(n.value)},null,6)],4))}});const _u=(0,Vl.Z)(bu,[["__scopeId","data-v-ed6fc00a"]]);var Iu=_u;const Su={class:"ruler"};var Cu=(0,i.aZ)({__name:"Ruler",props:{viewportStyles:{}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>t.viewportStyles.width*l.value/10));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Su,[(0,i._)("div",{class:"h",style:(0,oe.j5)({width:e.viewportStyles.width*(0,s.SU)(l)+"px",left:e.viewportStyles.left+"px"})},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(20,(e=>(0,i._)("div",{class:(0,oe.C_)(["ruler-marker-100",{hide:a.value<36,omit:a.value<72}]),key:`marker-100-${e}`},[(0,i._)("span",null,(0,oe.zw)(e),1)],2))),64))],4),(0,i._)("div",{class:"v",style:(0,oe.j5)({height:e.viewportStyles.height*(0,s.SU)(l)+"px",top:e.viewportStyles.top+"px"})},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(20,(e=>(0,i._)("div",{class:(0,oe.C_)(["ruler-marker-100",{hide:a.value<36,omit:a.value<72}]),key:e,style:(0,oe.j5)({height:a.value+"px"})},[(0,i._)("span",null,(0,oe.zw)(e),1)],6))),64))],4)]))}});const Lu=(0,Vl.Z)(Cu,[["__scopeId","data-v-2963c74c"]]);var Tu=Lu;const Eu=["width","height"],Mu=["d"];var Uu=(0,i.aZ)({__name:"ElementCreateSelection",emits:["created"],setup(e,{emit:t}){const l=t,a=R(),{creatingElement:r}=(0,o.Jk)(a),{ctrlOrShiftKeyActive:u}=(0,o.Jk)(q()),c=(0,s.iH)(),d=(0,s.iH)(),p=(0,s.iH)(),v=(0,s.iH)({x:0,y:0});(0,i.bv)((()=>{if(!p.value)return;const{x:e,y:t}=p.value.getBoundingClientRect();v.value={x:e,y:t}}));const m=e=>{let t=!0;const n=e.pageX,o=e.pageY;c.value=[n,o],document.onmousemove=e=>{if(!r.value||!t)return;let l=e.pageX,a=e.pageY;if(u.value){const e=l-n,t=a-o,i=Math.abs(e),s=Math.abs(t);if("shape"===r.value.type){const r=t>0&&e<0||t<0&&e>0;i>s?a=r?o-e:o+e:l=r?n-t:n+t}else"line"===r.value.type&&(i>s?a=o:l=n)}d.value=[l,a]},document.onmouseup=e=>{if(document.onmousemove=null,document.onmouseup=null,2===e.button)return void setTimeout((()=>a.setCreatingElement(null)),0);t=!1;const i=e.pageX,s=e.pageY,u=30;if("line"===r.value?.type&&(Math.abs(i-n)>=u||Math.abs(s-o)>=u))l("created",{start:c.value,end:d.value});else if("line"!==r.value?.type&&Math.abs(i-n)>=u&&Math.abs(s-o)>=u)l("created",{start:c.value,end:d.value});else{const e=200,t=Math.min(i,n),a=Math.min(s,o),r=Math.max(i,n),c=Math.max(s,o),d=r-t>=u?r-t:e,p=c-a>=u?c-a:e;l("created",{start:[t,a],end:[t+d,a+p]})}}},h=(0,i.Fl)((()=>{if(!c.value||!d.value)return null;if(!r.value||"line"!==r.value.type)return null;const[e,t]=c.value,[l,a]=d.value,n=Math.min(e,l),o=Math.max(e,l),i=Math.min(t,a),s=Math.max(t,a),u=o-n>=24?o-n:24,p=s-i>=24?s-i:24,v=e===n?0:o-n,m=t===i?0:s-i,h=l===n?0:o-n,f=a===i?0:s-i,g=`M${v}, ${m} L${h}, ${f}`;return{svgWidth:u,svgHeight:p,startX:v,startY:m,endX:h,endY:f,path:g}})),f=(0,i.Fl)((()=>{if(!c.value||!d.value)return{};const[e,t]=c.value,[l,a]=d.value,n=Math.min(e,l),o=Math.max(e,l),i=Math.min(t,a),s=Math.max(t,a),r=o-n,u=s-i;return{left:n-v.value.x+"px",top:i-v.value.y+"px",width:r+"px",height:u+"px"}}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"element-create-selection",ref_key:"selectionRef",ref:p,onMousedown:t[0]||(t[0]=(0,n.iM)((e=>m(e)),["stop"])),onContextmenu:t[1]||(t[1]=(0,n.iM)((()=>{}),["stop","prevent"]))},[c.value&&d.value?((0,i.wg)(),(0,i.iD)("div",{key:0,class:(0,oe.C_)(["selection",(0,s.SU)(r)?.type]),style:(0,oe.j5)(f.value)},["line"===(0,s.SU)(r)?.type&&h.value?((0,i.wg)(),(0,i.iD)("svg",{key:0,overflow:"visible",width:h.value.svgWidth,height:h.value.svgHeight},[(0,i._)("path",{d:h.value.path,stroke:"#d14424",fill:"none","stroke-width":"2"},null,8,Mu)],8,Eu)):(0,i.kq)("",!0)],6)):(0,i.kq)("",!0)],544))}});const Wu=(0,Vl.Z)(Uu,[["__scopeId","data-v-85b0bbaa"]]);var Du=Wu;const Hu={overflow:"visible"},Fu=["d","fill"];var Au=(0,i.aZ)({__name:"ShapeCreateCanvas",emits:["created"],setup(e,{emit:t}){const l=t,a=R(),{ctrlOrShiftKeyActive:r}=(0,o.Jk)(q()),{theme:u}=(0,o.Jk)($()),c=(0,s.iH)(),d=(0,s.iH)(!1),p=(0,s.iH)({x:0,y:0});(0,i.bv)((()=>{if(!c.value)return;const{x:e,y:t}=c.value.getBoundingClientRect();p.value={x:e,y:t}}));const v=(0,s.iH)(null),m=(0,s.iH)([]),h=(0,s.iH)(!1),f=(e,t=!1)=>{let l=e.pageX-p.value.x,a=e.pageY-p.value.y;if(t)return{pageX:l,pageY:a};if(r.value&&m.value.length){const[e,t]=m.value[m.value.length-1];Math.abs(e-l)-Math.abs(t-a)>0?a=t:l=e}return{pageX:l,pageY:a}},g=e=>{if(d.value){const{pageX:t,pageY:l}=f(e,!0);return m.value.push([t,l]),void(v.value=null)}const{pageX:t,pageY:l}=f(e);if(v.value=[t,l],m.value.length>=2){const[e,a]=m.value[0];Math.abs(e-t)<5&&Math.abs(a-l)<5?h.value=!0:h.value=!1}else h.value=!1},y=(0,i.Fl)((()=>{let e="";for(let t=0;t{const t=m.value.map((e=>e[0])),l=m.value.map((e=>e[1])),a=Math.min(...t),n=Math.min(...l),o=Math.max(...t),i=Math.max(...l),s=m.value.map((e=>[e[0]-a,e[1]-n]));let r="";for(let p=0;p{const{pageX:t,pageY:a}=f(e);d.value=!0,h.value?l("created",w()):m.value.push([t,a]),document.onmouseup=()=>{d.value=!1}},k=()=>{a.setCreatingCustomShapeState(!1)},b=()=>{l("created",{...w(!1),fill:"rgba(0, 0, 0, 0)",outline:{width:2,color:u.value.themeColor,style:"solid"}}),k()},_=e=>{const t=e.key.toUpperCase();t===ne.ESC&&k(),t===ne.ENTER&&b()};return(0,i.bv)((()=>{ta.success("点击绘制任意形状,首尾闭合完成绘制,按 ESC 键或鼠标右键取消,按 ENTER 键提前完成",{duration:5e3}),document.addEventListener("keydown",_)})),(0,i.Ah)((()=>document.removeEventListener("keydown",_))),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"shape-create-canvas",ref_key:"shapeCanvasRef",ref:c,onMousedown:t[0]||(t[0]=(0,n.iM)((e=>x(e)),["stop"])),onMousemove:t[1]||(t[1]=e=>g(e)),onContextmenu:t[2]||(t[2]=(0,n.iM)((e=>k()),["stop","prevent"]))},[((0,i.wg)(),(0,i.iD)("svg",Hu,[(0,i._)("path",{d:y.value,stroke:"#d14424",fill:h.value?"rgba(226, 83, 77, 0.15)":"none","stroke-width":"2"},null,8,Fu)]))],544))}});const $u=(0,Vl.Z)(Au,[["__scopeId","data-v-6dc9876e"]]);var Zu=$u,Ou=(e,t)=>{const l=(0,i.Fl)((()=>[{direction:le.LEFT_TOP,style:{}},{direction:le.TOP,style:{left:e.value/2+"px"}},{direction:le.RIGHT_TOP,style:{left:e.value+"px"}},{direction:le.LEFT,style:{top:t.value/2+"px"}},{direction:le.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:le.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:le.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:le.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}])),a=(0,i.Fl)((()=>[{direction:le.LEFT,style:{top:t.value/2+"px"}},{direction:le.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}])),n=(0,i.Fl)((()=>[{direction:le.TOP,style:{left:e.value/2+"px"}},{direction:le.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}}])),o=(0,i.Fl)((()=>[{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:l,textElementResizeHandlers:a,verticalTextElementResizeHandlers:n,borderLines:o}},Ru=(0,i.aZ)({__name:"ResizeHandler",props:{type:{},rotate:{default:0}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e="rotate-",l=t.rotate;return l>-22.5&&l<=22.5?e+0:l>22.5&&l<=67.5?e+45:l>67.5&&l<=112.5?e+90:l>112.5&&l<=157.5?e+135:l>157.5||l<=-157.5?e+0:l>-157.5&&l<=-112.5?e+45:l>-112.5&&l<=-67.5?e+90:l>-67.5&&l<=-22.5?e+135:e+0}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["resize-handler",l.value,e.type])},null,2))}});const zu=(0,Vl.Z)(Ru,[["__scopeId","data-v-1e66197f"]]);var Pu=zu,Bu=(0,i.aZ)({__name:"BorderLine",props:{type:{},isWide:{type:Boolean,default:!1}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["border-line",e.type,{wide:e.isWide}])},null,2))}});const Nu=(0,Vl.Z)(Bu,[["__scopeId","data-v-8346cf6c"]]);var ju=Nu,Yu=(0,i.aZ)({__name:"MultiSelectOperate",props:{elementList:{},scaleMultiElement:{type:Function}},setup(e){const t=e,{activeElementIdList:l,canvasScale:a}=(0,o.Jk)(R()),r=(0,i.Fl)((()=>t.elementList.filter((e=>l.value.includes(e.id))))),u=(0,s.iH)({minX:0,maxX:0,minY:0,maxY:0}),c=(0,i.Fl)((()=>(u.value.maxX-u.value.minX)*a.value)),d=(0,i.Fl)((()=>(u.value.maxY-u.value.minY)*a.value)),{resizeHandlers:p,borderLines:v}=Ou(c,d),m=()=>{const{minX:e,maxX:t,minY:l,maxY:a}=ke(r.value);u.value={minX:e,maxX:t,minY:l,maxY:a}};(0,i.m0)(m);const h=(0,i.Fl)((()=>r.value.some((e=>!!("image"!==e.type&&"shape"!==e.type||e.rotate)))));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"multi-select-operate",style:(0,oe.j5)({left:u.value.minX*(0,s.SU)(a)+"px",top:u.value.minY*(0,s.SU)(a)+"px"})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(v),(e=>((0,i.wg)(),(0,i.j4)(ju,{key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),h.value?(0,i.kq)("",!0):((0,i.wg)(!0),(0,i.iD)(i.HY,{key:0},(0,i.Ko)((0,s.SU)(p),(t=>((0,i.wg)(),(0,i.j4)(Pu,{key:t.direction,type:t.direction,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleMultiElement(l,u.value,t.direction)),["stop"])},null,8,["type","style","onMousedown"])))),128))],4))}});const Vu=(0,Vl.Z)(Yu,[["__scopeId","data-v-97dc9b9a"]]);var Ju=Vu;const qu={class:"rotate-handler"};function Xu(e,t){return(0,i.wg)(),(0,i.iD)("div",qu)}const Gu={},Ku=(0,Vl.Z)(Gu,[["render",Xu],["__scopeId","data-v-b99d8dae"]]);var Qu=Ku;const ec={inheritAttrs:!1};var tc=(0,i.aZ)({...ec,__name:"ImageElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function}},setup(e){const t=e,{canvasScale:l,clipingImageElementId:a}=(0,o.Jk)(R()),r=(0,i.Fl)((()=>a.value===t.elementInfo.id)),u=(0,i.Fl)((()=>t.elementInfo.width*l.value)),c=(0,i.Fl)((()=>t.elementInfo.height*l.value)),{resizeHandlers:d,borderLines:p}=Ou(u,c);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["image-element-operate",{cliping:r.value}])},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(p),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(d),(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onMousedown"])))),128)),(0,i.Wm)(Qu,{class:"operate-rotate-handler",style:(0,oe.j5)({left:u.value/2+"px"}),onMousedown:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"])],64)):(0,i.kq)("",!0)],2))}});const lc=(0,Vl.Z)(tc,[["__scopeId","data-v-7bcad5a9"]]);var ac=lc;const nc={class:"text-element-operate"},oc={inheritAttrs:!1};var ic=(0,i.aZ)({...oc,__name:"TextElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>t.elementInfo.width*l.value)),r=(0,i.Fl)((()=>t.elementInfo.height*l.value)),{textElementResizeHandlers:u,verticalTextElementResizeHandlers:c,borderLines:d}=Ou(a,r),p=(0,i.Fl)((()=>t.elementInfo.vertical?c.value:u.value));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",nc,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(d),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(p.value,(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onMousedown"])))),128)),(0,i.Wm)(Qu,{class:"operate-rotate-handler",style:(0,oe.j5)({left:a.value/2+"px"}),onMousedown:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"])],64)):(0,i.kq)("",!0)]))}});const sc=ic;var rc=sc;const uc={class:"shape-element-operate"},cc={inheritAttrs:!1};var dc=(0,i.aZ)({...cc,__name:"ShapeElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function},moveShapeKeypoint:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>t.elementInfo.width*l.value)),r=(0,i.Fl)((()=>t.elementInfo.height*l.value)),{resizeHandlers:u,borderLines:c}=Ou(a,r),d=(0,i.Fl)((()=>{if(!t.elementInfo.pathFormula||void 0===t.elementInfo.keypoint)return{};const e=ra[t.elementInfo.pathFormula];if("editable"in e){const a=e.getBaseSize(t.elementInfo.width,t.elementInfo.height)*t.elementInfo.keypoint;if("left"===e.relative)return{left:a*l.value+"px"};if("right"===e.relative)return{left:(t.elementInfo.width-a)*l.value+"px"};if("center"===e.relative)return{left:(t.elementInfo.width-a)/2*l.value+"px"};if("top"===e.relative)return{top:a*l.value+"px"};if("bottom"===e.relative)return{top:(t.elementInfo.height-a)*l.value+"px"}}return{}}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",uc,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(c),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(u),(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onMousedown"])))),128)),(0,i.Wm)(Qu,{class:"operate-rotate-handler",style:(0,oe.j5)({left:a.value/2+"px"}),onMousedown:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"]),void 0!==e.elementInfo.keypoint?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"operate-keypoint-handler",style:(0,oe.j5)(d.value),onMousedown:t[1]||(t[1]=(0,n.iM)((t=>e.moveShapeKeypoint(t,e.elementInfo)),["stop"]))},null,36)):(0,i.kq)("",!0)],64)):(0,i.kq)("",!0)]))}});const pc=(0,Vl.Z)(dc,[["__scopeId","data-v-52dcdbf8"]]);var vc=pc;const mc={class:"line-element-operate"},hc=["width","height","stroke"],fc={key:0},gc=["x1","y1","x2","y2"],yc=["x1","y1","x2","y2"],wc=["x1","y1","x2","y2"],xc=["x1","y1","x2","y2"],kc={inheritAttrs:!1};var bc=(0,i.aZ)({...kc,__name:"LineElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},dragLineElement:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>Math.max(t.elementInfo.start[0],t.elementInfo.end[0]))),r=(0,i.Fl)((()=>Math.max(t.elementInfo.start[1],t.elementInfo.end[1]))),u=(0,i.Fl)((()=>{const e=[{handler:ae.START,style:{left:t.elementInfo.start[0]*l.value+"px",top:t.elementInfo.start[1]*l.value+"px"}},{handler:ae.END,style:{left:t.elementInfo.end[0]*l.value+"px",top:t.elementInfo.end[1]*l.value+"px"}}];if(t.elementInfo.curve||t.elementInfo.broken){const a=t.elementInfo.curve||t.elementInfo.broken;e.push({handler:ae.C,style:{left:a[0]*l.value+"px",top:a[1]*l.value+"px"}})}else if(t.elementInfo.cubic){const[a,n]=t.elementInfo.cubic;e.push({handler:ae.C1,style:{left:a[0]*l.value+"px",top:a[1]*l.value+"px"}}),e.push({handler:ae.C2,style:{left:n[0]*l.value+"px",top:n[1]*l.value+"px"}})}return e}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",mc,[e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(u.value,(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.handler,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.dragLineElement(l,e.elementInfo,t.handler)),["stop"])},null,8,["style","onMousedown"])))),128)),((0,i.wg)(),(0,i.iD)("svg",{width:a.value||1,height:r.value||1,stroke:e.elementInfo.color,overflow:"visible",style:(0,oe.j5)({transform:`scale(${(0,s.SU)(l)})`})},[e.elementInfo.curve?((0,i.wg)(),(0,i.iD)("g",fc,[(0,i._)("line",{class:"anchor-line",x1:e.elementInfo.start[0],y1:e.elementInfo.start[1],x2:e.elementInfo.curve[0],y2:e.elementInfo.curve[1]},null,8,gc),(0,i._)("line",{class:"anchor-line",x1:e.elementInfo.end[0],y1:e.elementInfo.end[1],x2:e.elementInfo.curve[0],y2:e.elementInfo.curve[1]},null,8,yc)])):(0,i.kq)("",!0),e.elementInfo.cubic?((0,i.wg)(!0),(0,i.iD)(i.HY,{key:1},(0,i.Ko)(e.elementInfo.cubic,((t,l)=>((0,i.wg)(),(0,i.iD)("g",{key:l},[0===l?((0,i.wg)(),(0,i.iD)("line",{key:0,class:"anchor-line",x1:e.elementInfo.start[0],y1:e.elementInfo.start[1],x2:t[0],y2:t[1]},null,8,wc)):(0,i.kq)("",!0),1===l?((0,i.wg)(),(0,i.iD)("line",{key:1,class:"anchor-line",x1:e.elementInfo.end[0],y1:e.elementInfo.end[1],x2:t[0],y2:t[1]},null,8,xc)):(0,i.kq)("",!0)])))),128)):(0,i.kq)("",!0)],12,hc))],64)):(0,i.kq)("",!0)]))}});const _c=(0,Vl.Z)(bc,[["__scopeId","data-v-3aa5cc44"]]);var Ic=_c;const Sc={class:"table-element-operate"},Cc={inheritAttrs:!1};var Lc=(0,i.aZ)({...Cc,__name:"TableElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>t.elementInfo.outline.width||1)),r=(0,i.Fl)((()=>(t.elementInfo.width+a.value)*l.value)),u=(0,i.Fl)((()=>t.elementInfo.height*l.value)),{resizeHandlers:c,borderLines:d}=Ou(r,u);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Sc,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(d),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(c),(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onMousedown"])))),128)),(0,i.Wm)(Qu,{class:"operate-rotate-handler",style:(0,oe.j5)({left:r.value/2+"px"}),onMousedown:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"])],64)):(0,i.kq)("",!0)]))}});const Tc=Lc;var Ec=Tc;const Mc={class:"common-element-operate"},Uc={inheritAttrs:!1};var Wc=(0,i.aZ)({...Uc,__name:"CommonElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>t.elementInfo.width*l.value)),r=(0,i.Fl)((()=>t.elementInfo.height*l.value)),{resizeHandlers:u,borderLines:c}=Ou(a,r),d=(0,i.Fl)((()=>["chart","video","audio"].includes(t.elementInfo.type)));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Mc,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(c),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(u),(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onMousedown"])))),128)),d.value?(0,i.kq)("",!0):((0,i.wg)(),(0,i.j4)(Qu,{key:0,class:"operate-rotate-handler",style:(0,oe.j5)({left:a.value/2+"px"}),onMousedown:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"]))],64)):(0,i.kq)("",!0)]))}});const Dc=Wc;var Hc=Dc,Fc=()=>{const e=$(),{addHistorySnapshot:t}=da(),l=(l,a)=>{const n=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if("web"===a.type&&!n.test(a.target))return ta.error("不是正确的网页链接地址"),!1;if("slide"===a.type&&!a.target)return ta.error("请先选择链接目标"),!1;const o={link:a};return e.updateElement({id:l.id,props:o}),t(),!0},a=l=>{e.removeElementProps({id:l.id,propName:"link"}),t()};return{setLink:l,removeLink:a}},Ac=(0,i.aZ)({__name:"Divider",props:{type:{default:"horizontal"},margin:{default:0}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["divider",e.type]),style:(0,oe.j5)({margin:"horizontal"===e.type?`${e.margin||24}px 0`:`0 ${e.margin||8}px`})},null,6))}});const $c=(0,Vl.Z)(Ac,[["__scopeId","data-v-6b66cde8"]]);var Zc=$c;const Oc=["href"],Rc={class:"btns"};var zc=(0,i.aZ)({__name:"LinkHandler",props:{elementInfo:{},link:{},openLinkDialog:{type:Function}},setup(e){const t=e,l=R(),a=$(),{canvasScale:n}=(0,o.Jk)(l),{slides:r}=(0,o.Jk)(a),{removeLink:u}=Fc(),c=(0,i.Fl)((()=>"line"===t.elementInfo.type?0:t.elementInfo.height)),d=e=>{const t=r.value.findIndex((t=>t.id===e));-1!==t&&(l.setActiveElementIdList([]),a.updateSlideIndex(t))};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"link-handler",style:(0,oe.j5)({top:c.value*(0,s.SU)(n)+10+"px"})},["web"===e.link.type?((0,i.wg)(),(0,i.iD)("a",{key:0,class:"link",href:e.link.target,target:"_blank"},(0,oe.zw)(e.link.target),9,Oc)):((0,i.wg)(),(0,i.iD)("a",{key:1,class:"link",onClick:t[0]||(t[0]=t=>d(e.link.target))},"幻灯片页面 "+(0,oe.zw)(e.link.target),1)),(0,i._)("div",Rc,[(0,i._)("div",{class:"btn",onClick:t[1]||(t[1]=t=>e.openLinkDialog())},"更换"),(0,i.Wm)(Zc,{type:"vertical"}),(0,i._)("div",{class:"btn",onClick:t[2]||(t[2]=t=>(0,s.SU)(u)(e.elementInfo))},"移除")])],4))}});const Pc=(0,Vl.Z)(zc,[["__scopeId","data-v-316c4664"]]);var Bc=Pc;const Nc={key:1,class:"animation-index"};var jc=(0,i.aZ)({__name:"index",props:{elementInfo:{},isSelected:{type:Boolean},isActive:{type:Boolean},isActiveGroupElement:{type:Boolean},isMultiSelect:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function},dragLineElement:{type:Function},moveShapeKeypoint:{type:Function},openLinkDialog:{type:Function}},setup(e){const t=e,{canvasScale:l,toolbarState:a}=(0,o.Jk)(R()),{formatedAnimations:r}=(0,o.Jk)($()),u=(0,i.Fl)((()=>{const e={[sa.IMAGE]:ac,[sa.TEXT]:rc,[sa.SHAPE]:vc,[sa.LINE]:Ic,[sa.TABLE]:Ec,[sa.CHART]:Hc,[sa.LATEX]:Hc,[sa.VIDEO]:Hc,[sa.AUDIO]:Hc};return e[t.elementInfo.type]||null})),c=(0,i.Fl)((()=>{const e=[];for(let l=0;le.elId));a.includes(t.elementInfo.id)&&e.push(l)}return e})),d=(0,i.Fl)((()=>"rotate"in t.elementInfo?t.elementInfo.rotate:0)),p=(0,i.Fl)((()=>"height"in t.elementInfo?t.elementInfo.height:0));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["operate",{"multi-select":e.isMultiSelect&&!e.isActive}]),style:(0,oe.j5)({top:e.elementInfo.top*(0,s.SU)(l)+"px",left:e.elementInfo.left*(0,s.SU)(l)+"px",transform:`rotate(${d.value}deg)`,transformOrigin:`${e.elementInfo.width*(0,s.SU)(l)/2}px ${p.value*(0,s.SU)(l)/2}px`})},[e.isSelected?((0,i.wg)(),(0,i.j4)((0,i.LL)(u.value),{key:0,elementInfo:e.elementInfo,handlerVisible:!e.elementInfo.lock&&(e.isActiveGroupElement||!e.isMultiSelect),rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement,moveShapeKeypoint:e.moveShapeKeypoint},null,8,["elementInfo","handlerVisible","rotateElement","scaleElement","dragLineElement","moveShapeKeypoint"])):(0,i.kq)("",!0),"elAnimation"===(0,s.SU)(a)&&c.value.length?((0,i.wg)(),(0,i.iD)("div",Nc,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(c.value,(e=>((0,i.wg)(),(0,i.iD)("div",{class:"index-item",key:e},(0,oe.zw)(e+1),1)))),128))])):(0,i.kq)("",!0),e.isActive&&e.elementInfo.link?((0,i.wg)(),(0,i.j4)(Bc,{key:2,elementInfo:e.elementInfo,link:e.elementInfo.link,openLinkDialog:e.openLinkDialog,onMousedown:t[0]||(t[0]=(0,n.iM)((()=>{}),["stop"]))},null,8,["elementInfo","link","openLinkDialog"])):(0,i.kq)("",!0)],6))}});const Yc=(0,Vl.Z)(jc,[["__scopeId","data-v-5ec1ff35"]]);var Vc=Yc;const Jc=["src"];var qc=(0,i.aZ)({__name:"BaseImageElement",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:a}=Xn(l),n=(0,i.Fl)((()=>t.elementInfo.flipH)),o=(0,i.Fl)((()=>t.elementInfo.flipV)),{flipStyle:r}=Gn(n,o),u=(0,i.Fl)((()=>t.elementInfo.clip)),{clipShape:c,imgPosition:d}=Qn(u),p=(0,i.Fl)((()=>t.elementInfo.filters)),{filter:v}=eo(p);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-image",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({filter:(0,s.SU)(a)?`drop-shadow(${(0,s.SU)(a)})`:"",transform:(0,s.SU)(r)})},[(0,i.Wm)(ko,{elementInfo:e.elementInfo},null,8,["elementInfo"]),(0,i._)("div",{class:"image-content",style:(0,oe.j5)({clipPath:(0,s.SU)(c).style})},[(0,i._)("img",{src:e.elementInfo.src,draggable:!1,style:(0,oe.j5)({top:(0,s.SU)(d).top,left:(0,s.SU)(d).left,width:(0,s.SU)(d).width,height:(0,s.SU)(d).height,filter:(0,s.SU)(v)}),alt:""},null,12,Jc),e.elementInfo.colorMask?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"color-mask",style:(0,oe.j5)({backgroundColor:e.elementInfo.colorMask})},null,4)):(0,i.kq)("",!0)],4)],4)],4)],4))}});const Xc=(0,Vl.Z)(qc,[["__scopeId","data-v-24fef706"]]);var Gc=Xc;const Kc=["innerHTML"];var Qc=(0,i.aZ)({__name:"BaseTextElement",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:a}=Xn(l);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-text",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({width:e.elementInfo.vertical?"auto":e.elementInfo.width+"px",height:e.elementInfo.vertical?e.elementInfo.height+"px":"auto",backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:(0,s.SU)(a),lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName,writingMode:e.elementInfo.vertical?"vertical-rl":"horizontal-tb"})},[(0,i.Wm)(Po,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),(0,i._)("div",{class:"text ProseMirror-static",style:(0,oe.j5)({"--paragraphSpace":`${void 0===e.elementInfo.paragraphSpace?5:e.elementInfo.paragraphSpace}px`}),innerHTML:e.elementInfo.content},null,12,Kc)],4)],4)],4))}});const ed=(0,Vl.Z)(Qc,[["__scopeId","data-v-52a206f2"]]);var td=ed;const ld=["width","height"],ad={key:0},nd=["transform"],od=["d","fill","stroke","stroke-width","stroke-dasharray"],id=["innerHTML"];var sd=(0,i.aZ)({__name:"BaseShapeElement",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.elementInfo.outline)),{outlineWidth:a,outlineColor:n,strokeDashArray:o}=to(l),r=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:u}=Xn(r),c=(0,i.Fl)((()=>t.elementInfo.flipH)),d=(0,i.Fl)((()=>t.elementInfo.flipV)),{flipStyle:p}=Gn(c,d),v=(0,i.Fl)((()=>{const e={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return t.elementInfo.text?t.elementInfo.text:e}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-shape",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({opacity:e.elementInfo.opacity,filter:(0,s.SU)(u)?`drop-shadow(${(0,s.SU)(u)})`:"",transform:(0,s.SU)(p),color:v.value.defaultColor,fontFamily:v.value.defaultFontName})},[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?((0,i.wg)(),(0,i.iD)("defs",ad,[(0,i.Wm)(ds,{id:`base-gradient-${e.elementInfo.id}`,type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):(0,i.kq)("",!0),(0,i._)("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[(0,i._)("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",d:e.elementInfo.path,fill:e.elementInfo.gradient?`url(#base-gradient-${e.elementInfo.id})`:e.elementInfo.fill,stroke:(0,s.SU)(n),"stroke-width":(0,s.SU)(a),"stroke-dasharray":(0,s.SU)(o)},null,8,od)],8,nd)],8,ld)),(0,i._)("div",{class:(0,oe.C_)(["shape-text",v.value.align])},[(0,i._)("div",{class:"ProseMirror-static",innerHTML:v.value.content},null,8,id)],2)],4)],4)],4))}});const rd=(0,Vl.Z)(sd,[["__scopeId","data-v-b13f8fa8"]]);var ud=rd;const cd=["width","height"],dd=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"];var pd=(0,i.aZ)({__name:"BaseLineElement",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:a}=Xn(l),n=(0,i.Fl)((()=>{const e=Math.abs(t.elementInfo.start[0]-t.elementInfo.end[0]);return e<24?24:e})),o=(0,i.Fl)((()=>{const e=Math.abs(t.elementInfo.start[1]-t.elementInfo.end[1]);return e<24?24:e})),r=(0,i.Fl)((()=>{if("dashed"!==t.elementInfo.style)return"0 0";const e=t.elementInfo.width;return e<=8?`${5*e} ${2.5*e}`:`${5*e} ${1.5*e}`})),u=(0,i.Fl)((()=>Ce(t.elementInfo)));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-line",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({filter:(0,s.SU)(a)?`drop-shadow(${(0,s.SU)(a)})`:""})},[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:n.value,height:o.value},[(0,i._)("defs",null,[e.elementInfo.points[0]?((0,i.wg)(),(0,i.j4)(_s,{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"])):(0,i.kq)("",!0),e.elementInfo.points[1]?((0,i.wg)(),(0,i.j4)(_s,{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"])):(0,i.kq)("",!0)]),(0,i._)("path",{d:u.value,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":r.value,fill:"none","marker-start":e.elementInfo.points[0]?`url(#${e.elementInfo.id}-${e.elementInfo.points[0]}-start)`:"","marker-end":e.elementInfo.points[1]?`url(#${e.elementInfo.id}-${e.elementInfo.points[1]}-end)`:""},null,8,dd)],8,cd))],4)],4))}});const vd=(0,Vl.Z)(pd,[["__scopeId","data-v-443e2f82"]]);var md=vd,hd=(0,i.aZ)({__name:"BaseChartElement",props:{elementInfo:{}},setup(e){const t=(0,i.f3)(Tn)||(0,s.iH)(1),l=(0,i.Fl)((()=>t.value<1)),a=(0,i.Fl)((()=>l.value?1/t.value:1));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-chart",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({backgroundColor:e.elementInfo.fill})},[(0,i.Wm)(Po,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),(0,i.Wm)(Ds,{width:e.elementInfo.width*a.value,height:e.elementInfo.height*a.value,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor,legends:e.elementInfo.data.legends,legend:e.elementInfo.legend||"",style:(0,oe.j5)({zoom:1/a.value})},null,8,["width","height","type","data","options","themeColor","gridColor","legends","legend","style"])],4)],4)],4))}});const fd=(0,Vl.Z)(hd,[["__scopeId","data-v-7c03d68d"]]);var gd=fd;const yd=["width"],wd=["rowspan","colspan"],xd=["innerHTML"];var kd=(0,i.aZ)({__name:"StaticTable",props:{data:{},width:{},cellMinHeight:{},colWidths:{},outline:{},theme:{},editable:{type:Boolean,default:!0}},setup(e){const t=e,l=(0,s.iH)([]),a=(0,i.Fl)((()=>l.value.reduce(((e,t)=>e+t))));(0,i.YP)([()=>t.colWidths,()=>t.width],(()=>{l.value=t.colWidths.map((e=>e*t.width))}),{immediate:!0});const o=(0,i.Fl)((()=>t.data)),{hideCells:r}=Os(o),u=(0,i.Fl)((()=>t.theme)),{subThemeColor:c}=Rs(u);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"static-table",style:(0,oe.j5)({width:a.value+"px"})},[(0,i._)("table",{class:(0,oe.C_)({theme:u.value,"row-header":u.value?.rowHeader,"row-footer":u.value?.rowFooter,"col-header":u.value?.colHeader,"col-footer":u.value?.colFooter}),style:(0,oe.j5)(`--themeColor: ${u.value?.color}; --subThemeColor1: ${(0,s.SU)(c)[0]}; --subThemeColor2: ${(0,s.SU)(c)[1]}`)},[(0,i._)("colgroup",null,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(l.value,((e,t)=>((0,i.wg)(),(0,i.iD)("col",{span:"1",key:t,width:e},null,8,yd)))),128))]),(0,i._)("tbody",null,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.data,((t,l)=>((0,i.wg)(),(0,i.iD)("tr",{key:l,style:(0,oe.j5)({height:e.cellMinHeight+"px"})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t,((t,a)=>(0,i.wy)(((0,i.wg)(),(0,i.iD)("td",{class:"cell",style:(0,oe.j5)({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px",...(0,s.SU)($s)(t.style)}),key:t.id,rowspan:t.rowspan,colspan:t.colspan},[(0,i._)("div",{class:"cell-text",style:(0,oe.j5)({minHeight:e.cellMinHeight-4+"px"}),innerHTML:(0,s.SU)(Zs)(t.text)},null,12,xd)],12,wd)),[[n.F8,!(0,s.SU)(r).includes(`${l}_${a}`)]]))),128))],4)))),128))])],6)],4))}});const bd=(0,Vl.Z)(kd,[["__scopeId","data-v-5d949d4d"]]);var _d=bd;const Id={class:"element-content"};var Sd=(0,i.aZ)({__name:"BaseTableElement",props:{elementInfo:{}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-table",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",Id,[(0,i.Wm)(_d,{data:e.elementInfo.data,width:e.elementInfo.width,cellMinHeight:e.elementInfo.cellMinHeight,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme},null,8,["data","width","cellMinHeight","colWidths","outline","theme"])])],4)],4))}});const Cd=(0,Vl.Z)(Sd,[["__scopeId","data-v-3eff7eba"]]);var Ld=Cd;const Td={class:"element-content"},Ed=["width","height","stroke","stroke-width"],Md=["transform"],Ud=["d"];var Wd=(0,i.aZ)({__name:"BaseLatexElement",props:{elementInfo:{}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-latex",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",Td,[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.strokeWidth,fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[(0,i._)("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[(0,i._)("path",{d:e.elementInfo.path},null,8,Ud)],8,Md)],8,Ed))])],4)],4))}});const Dd=(0,Vl.Z)(Wd,[["__scopeId","data-v-1587280d"]]);var Hd=Dd,Fd=(0,i.aZ)({__name:"BaseVideoElement",props:{elementInfo:{}},setup(e){return(e,t)=>{const l=(0,i.up)("IconPlayOne");return(0,i.wg)(),(0,i.iD)("div",{class:"base-element-video",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({backgroundImage:e.elementInfo.poster?`url(${e.elementInfo.poster})`:""})},[(0,i.Wm)(l,{class:"icon"})],4)],4)],4)}}});const Ad=(0,Vl.Z)(Fd,[["__scopeId","data-v-09436dde"]]);var $d=Ad;const Zd={class:"element-content"};var Od=(0,i.aZ)({__name:"BaseAudioElement",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px"));return(e,t)=>{const a=(0,i.up)("IconVolumeNotice");return(0,i.wg)(),(0,i.iD)("div",{class:"base-element-audio",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",Zd,[(0,i.Wm)(a,{class:"audio-icon",style:(0,oe.j5)({fontSize:l.value,color:e.elementInfo.color})},null,8,["style"])])],4)],4)}}});const Rd=(0,Vl.Z)(Od,[["__scopeId","data-v-5da834d7"]]);var zd=Rd,Pd=(0,i.aZ)({__name:"ThumbnailElement",props:{elementInfo:{},elementIndex:{}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e={[sa.IMAGE]:Gc,[sa.TEXT]:td,[sa.SHAPE]:ud,[sa.LINE]:md,[sa.CHART]:gd,[sa.TABLE]:Ld,[sa.LATEX]:Hd,[sa.VIDEO]:$d,[sa.AUDIO]:zd};return e[t.elementInfo.type]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["base-element",`base-element-${e.elementInfo.id}`]),style:(0,oe.j5)({zIndex:e.elementIndex})},[((0,i.wg)(),(0,i.j4)((0,i.LL)(l.value),{elementInfo:e.elementInfo,target:"thumbnail"},null,8,["elementInfo"]))],6))}});const Bd=Pd;var Nd=Bd;const jd={key:1,class:"placeholder"};var Yd=(0,i.aZ)({__name:"index",props:{slide:{},size:{},visible:{type:Boolean,default:!0}},setup(e){const t=e,{viewportRatio:l}=(0,o.Jk)($()),a=(0,i.Fl)((()=>t.slide.background)),{backgroundStyle:n}=yu(a),r=(0,i.Fl)((()=>t.size/oa));return(0,i.JJ)(Tn,r),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"thumbnail-slide",style:(0,oe.j5)({width:e.size+"px",height:e.size*(0,s.SU)(l)+"px"})},[e.visible?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"elements",style:(0,oe.j5)({width:(0,s.SU)(oa)+"px",height:(0,s.SU)(oa)*(0,s.SU)(l)+"px",transform:`scale(${r.value})`})},[(0,i._)("div",{class:"background",style:(0,oe.j5)((0,s.SU)(n))},null,4),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.slide.elements,((e,t)=>((0,i.wg)(),(0,i.j4)(Nd,{key:e.id,elementInfo:e,elementIndex:t+1},null,8,["elementInfo","elementIndex"])))),128))],4)):((0,i.wg)(),(0,i.iD)("div",jd,"加载中 ..."))],4))}});const Vd=(0,Vl.Z)(Yd,[["__scopeId","data-v-43dcaa52"]]);var Jd=Vd;const qd=["onClick"];var Xd=(0,i.aZ)({__name:"Tabs",props:{value:{},tabs:{},card:{type:Boolean,default:!1},tabsStyle:{},tabStyle:{},spaceAround:{type:Boolean,default:!1},spaceBetween:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=t;return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["tabs",{card:e.card,"space-around":e.spaceAround,"space-between":e.spaceBetween}]),style:(0,oe.j5)(e.tabsStyle||{})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.tabs,(t=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["tab",{active:t.key===e.value}]),key:t.key,style:(0,oe.j5)({...e.tabStyle||{},"--color":t.color}),onClick:e=>l("update:value",t.key)},(0,oe.zw)(t.label),15,qd)))),128))],6))}});const Gd=(0,Vl.Z)(Xd,[["__scopeId","data-v-5e3d7626"]]);var Kd=Gd,Qd=(0,i.aZ)({__name:"Button",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},type:{default:"default"},size:{default:"normal"},first:{type:Boolean,default:!1},last:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:t}){const l=e,a=t,n=()=>{l.disabled||a("click")};return(e,t)=>((0,i.wg)(),(0,i.iD)("button",{class:(0,oe.C_)(["button",{disabled:e.disabled,checked:!e.disabled&&e.checked,default:!e.disabled&&"default"===e.type,primary:!e.disabled&&"primary"===e.type,checkbox:!e.disabled&&"checkbox"===e.type,radio:!e.disabled&&"radio"===e.type,small:"small"===e.size,first:e.first,last:e.last}]),onClick:t[0]||(t[0]=e=>n())},[(0,i.WI)(e.$slots,"default")],2))}});const ep=(0,Vl.Z)(Qd,[["__scopeId","data-v-52c90330"]]);var tp=ep;const lp={key:0,class:"select-wrap"},ap={class:"selector"},np={class:"icon"},op=["onClick"],ip={class:"selector"},sp={class:"icon"};var rp=(0,i.aZ)({__name:"Select",props:{value:{},options:{},disabled:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e,a=(0,i.Fl)((()=>l.options.find((e=>e.value===l.value))?.label||l.value)),n=t,o=(0,s.iH)(!1),r=(0,s.iH)(),u=(0,s.iH)(0),c=()=>{r.value&&(u.value=r.value.clientWidth)},d=new ResizeObserver(c);(0,i.bv)((()=>{r.value&&d.observe(r.value)})),(0,i.Ah)((()=>{r.value&&d.unobserve(r.value)}));const p=e=>{e.disabled||(n("update:value",e.value),o.value=!1)};return(e,t)=>{const l=(0,i.up)("IconDown");return e.disabled?((0,i.wg)(),(0,i.iD)("div",lp,[(0,i._)("div",{class:"select disabled",ref_key:"selectRef",ref:r},[(0,i._)("div",ap,(0,oe.zw)(e.value),1),(0,i._)("div",np,[(0,i.WI)(e.$slots,"icon",{},(()=>[(0,i.Wm)(l,{size:14})]))])],512)])):((0,i.wg)(),(0,i.j4)(dn,{key:1,class:"select-wrap",trigger:"click",value:o.value,"onUpdate:value":t[0]||(t[0]=e=>o.value=e),placement:"bottom",contentStyle:{padding:0,boxShadow:"0 6px 16px 0 rgba(0, 0, 0, 0.08)"}},{content:(0,i.w5)((()=>[(0,i._)("div",{class:"options",style:(0,oe.j5)({width:u.value+2+"px"})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.options,(t=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["option",{disabled:t.disabled,selected:t.value===e.value}]),key:t.value,onClick:e=>p(t)},(0,oe.zw)(t.label),11,op)))),128))],4)])),default:(0,i.w5)((()=>[(0,i._)("div",{class:"select",ref_key:"selectRef",ref:r},[(0,i._)("div",ip,(0,oe.zw)(a.value),1),(0,i._)("div",sp,[(0,i.WI)(e.$slots,"icon",{},(()=>[(0,i.Wm)(l,{size:14})]))])],512)])),_:3},8,["value","contentStyle"]))}}});const up=(0,Vl.Z)(rp,[["__scopeId","data-v-5bf3b141"]]);var cp=up;const dp=e=>((0,i.dD)("data-v-cc39ee16"),e=e(),(0,i.Cn)(),e),pp={class:"link-dialog"},vp={key:2,class:"preview"},mp=dp((()=>(0,i._)("div",null,"预览:",-1))),hp={class:"btns"};var fp=(0,i.aZ)({__name:"LinkDialog",emits:["close"],setup(e,{emit:t}){const l=t,{handleElement:a}=(0,o.Jk)(R()),{slides:n,currentSlide:r}=(0,o.Jk)($()),u=(0,s.iH)("web"),c=(0,s.iH)(""),d=(0,s.iH)(""),p=(0,i.Fl)((()=>n.value.map(((e,t)=>({label:`幻灯片 ${t+1}`,value:e.id,disabled:r.value.id===e.id})))));d.value=n.value.find((e=>e.id!==r.value.id))?.id||"";const v=(0,i.Fl)((()=>d.value&&n.value.find((e=>e.id===d.value))||null)),m=[{key:"web",label:"网页链接"},{key:"slide",label:"幻灯片页面"}],{setLink:h}=Fc();(0,i.bv)((()=>{a.value?.link&&("web"===a.value.link.type?c.value=a.value.link.target:"slide"===a.value.link.type&&(d.value=a.value.link.target),u.value=a.value.link.type)}));const f=()=>{const e={type:u.value,target:"web"===u.value?c.value:d.value};if(a.value){const t=h(a.value,e);t?l("close"):c.value=""}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",pp,[(0,i.Wm)(Kd,{tabs:m,value:u.value,"onUpdate:value":t[0]||(t[0]=e=>u.value=e),tabsStyle:{marginBottom:"20px"}},null,8,["value"]),"web"===u.value?((0,i.wg)(),(0,i.j4)(sn,{key:0,class:"input",value:c.value,"onUpdate:value":t[1]||(t[1]=e=>c.value=e),placeholder:"请输入网页链接地址"},null,8,["value"])):(0,i.kq)("",!0),"slide"===u.value?((0,i.wg)(),(0,i.j4)(cp,{key:1,class:"input",value:d.value,"onUpdate:value":t[2]||(t[2]=e=>d.value=e),options:p.value},null,8,["value","options"])):(0,i.kq)("",!0),"slide"===u.value&&v.value?((0,i.wg)(),(0,i.iD)("div",vp,[mp,(0,i.Wm)(Jd,{class:"thumbnail",slide:v.value,size:500},null,8,["slide"])])):(0,i.kq)("",!0),(0,i._)("div",hp,[(0,i.Wm)(tp,{onClick:t[3]||(t[3]=e=>l("close")),style:{"margin-right":"10px"}},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{type:"primary",onClick:t[4]||(t[4]=e=>f())},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])]))}});const gp=(0,Vl.Z)(fp,[["__scopeId","data-v-cc39ee16"]]);var yp=gp,wp=(0,i.aZ)({__name:"Modal",props:{visible:{type:Boolean},width:{default:480},closeButton:{type:Boolean,default:!1},closeOnClickMask:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},contentStyle:{}},emits:["update:visible","closed"],setup(e,{emit:t}){const{IconClose:l}=Zl,a=e,o=(0,s.iH)(),r=t,u=(0,s.iH)(!1),c=(0,i.Fl)((()=>({width:a.width+"px",...a.contentStyle||{}})));(0,i.YP)((()=>a.visible),(()=>{a.visible&&(0,i.Y3)((()=>o.value.focus()))}));const d=()=>{r("update:visible",!1),r("closed")},p=()=>{a.visible&&a.closeOnEsc&&d()},v=()=>{a.closeOnClickMask&&d()};return(e,t)=>((0,i.wg)(),(0,i.j4)(i.lR,{to:"body"},[(0,i.Wm)(n.uT,{name:"modal-fade"},{default:(0,i.w5)((()=>[(0,i.wy)((0,i._)("div",{class:"modal",ref_key:"modalRef",ref:o,tabindex:"-1",onKeyup:t[4]||(t[4]=(0,n.D2)((e=>p()),["esc"]))},[(0,i._)("div",{class:"mask",onClick:t[0]||(t[0]=e=>v())}),(0,i.Wm)(n.uT,{name:"modal-zoom",onAfterLeave:t[2]||(t[2]=e=>u.value=!1),onBeforeEnter:t[3]||(t[3]=e=>u.value=!0)},{default:(0,i.w5)((()=>[(0,i.wy)((0,i._)("div",{class:"modal-content",style:(0,oe.j5)(c.value)},[e.closeButton?((0,i.wg)(),(0,i.iD)("span",{key:0,class:"close-btn",onClick:t[1]||(t[1]=e=>d())},[(0,i.Wm)((0,s.SU)(l))])):(0,i.kq)("",!0),u.value?(0,i.WI)(e.$slots,"default",{key:1}):(0,i.kq)("",!0)],4),[[n.F8,e.visible]])])),_:3})],544),[[n.F8,e.visible]])])),_:3})]))}});const xp=(0,Vl.Z)(wp,[["__scopeId","data-v-fea8edcc"]]);var kp=xp;const bp={class:"operates"},_p={key:2,class:"drag-mask"};var Ip=(0,i.aZ)({__name:"index",setup(e){const t=R(),{activeElementIdList:l,activeGroupElementId:a,handleElementId:r,hiddenElementIdList:u,editorAreaFocus:c,gridLineSize:d,showRuler:p,creatingElement:v,creatingCustomShape:m,canvasScale:h,textFormatPainter:f}=(0,o.Jk)(t),{currentSlide:g}=(0,o.Jk)($()),{ctrlKeyState:y,spaceKeyState:w}=(0,o.Jk)(q()),x=(0,s.iH)(),k=(0,s.iH)([]),b=(0,s.iH)(!1),_=()=>b.value=!0;(0,i.YP)(r,(()=>{t.setActiveGroupElementId("")}));const I=(0,s.iH)([]),S=()=>{I.value=g.value?JSON.parse(JSON.stringify(g.value.elements)):[]};(0,i.m0)(S);const C=(0,s.iH)(),{dragViewport:L,viewportStyles:T}=Wn(C);Hn(C);const{mouseSelection:E,mouseSelectionVisible:M,mouseSelectionQuadrant:U,updateMouseSelection:W}=Dn(I,x),{dragElement:H}=jn(I,k,h),{dragLineElement:F}=Yn(I),{selectElement:A}=Nn(I,H),{scaleElement:Z,scaleMultiElement:O}=Bn(I,k,h),{rotateElement:z}=An(I,x,h),{moveShapeKeypoint:P}=Vn(I,h),{selectAllElement:B}=xa(),{deleteAllElements:N}=ga(),{pasteElement:j}=wa(),{enterScreeningFromStart:Y}=Ca(),{updateSlideIndex:V}=ha(),{createTextElement:J,createShapeElement:X}=pa();(0,i.bv)((()=>{l.value.length&&(0,i.Y3)((()=>t.setActiveElementIdList([])))}));const G=e=>{l.value.length&&t.setActiveElementIdList([]),w.value?L(e):W(e),c.value||t.setEditorareaFocus(!0),f.value&&t.setTextFormatPainter(null),Un()},K=e=>{if(l.value.length||v.value||m.value)return;if(!x.value)return;const t=x.value.getBoundingClientRect(),a=(e.pageX-t.x)/h.value,n=(e.pageY-t.y)/h.value;J({left:a,top:n,width:200/h.value,height:0})};(0,i.Ah)((()=>{f.value&&t.setTextFormatPainter(null)}));const Q=()=>{c.value&&t.setEditorareaFocus(!1)},{scaleCanvas:ee}=La(),te=(0,D.throttle)(ee,100,{leading:!0,trailing:!1}),le=(0,D.throttle)(V,300,{leading:!0,trailing:!1}),ae=e=>{e.preventDefault(),y.value?e.deltaY>0?te("-"):e.deltaY<0&&te("+"):e.deltaY>0?le(ne.DOWN):e.deltaY<0&&le(ne.UP)},ie=()=>{t.setRulerState(!p.value)},{insertElementFromCreateSelection:se,formatCreateSelection:re}=Jn(x),ue=e=>{const{start:l,end:a,path:n,viewBox:o}=e,i=re({start:l,end:a});if(i){const t={};e.fill&&(t.fill=e.fill),e.outline&&(t.outline=e.outline),X(i,{path:n,viewBox:o},t)}t.setCreatingCustomShapeState(!1)},ce=()=>[{text:"粘贴",subText:"Ctrl + V",handler:j},{text:"全选",subText:"Ctrl + A",handler:B},{text:"标尺",subText:p.value?"√":"",handler:ie},{text:"网格线",handler:()=>t.setGridLineSize(d.value?0:50),children:[{text:"无",subText:0===d.value?"√":"",handler:()=>t.setGridLineSize(0)},{text:"小",subText:25===d.value?"√":"",handler:()=>t.setGridLineSize(25)},{text:"中",subText:50===d.value?"√":"",handler:()=>t.setGridLineSize(50)},{text:"大",subText:100===d.value?"√":"",handler:()=>t.setGridLineSize(100)}]},{text:"重置当前页",handler:N},{divider:!0},{text:"幻灯片放映",subText:"F5",handler:Y}];return(0,i.JJ)(Tn,h),(e,t)=>{const o=(0,i.Q2)("contextmenu"),c=(0,i.Q2)("click-outside");return(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"canvas",ref_key:"canvasRef",ref:C,onWheel:t[4]||(t[4]=e=>ae(e)),onMousedown:t[5]||(t[5]=e=>G(e)),onDblclick:t[6]||(t[6]=e=>K(e))},[(0,s.SU)(v)?((0,i.wg)(),(0,i.j4)(Du,{key:0,onCreated:t[0]||(t[0]=e=>(0,s.SU)(se)(e))})):(0,i.kq)("",!0),(0,s.SU)(m)?((0,i.wg)(),(0,i.j4)(Zu,{key:1,onCreated:t[1]||(t[1]=e=>ue(e))})):(0,i.kq)("",!0),(0,i._)("div",{class:"viewport-wrapper",style:(0,oe.j5)({width:(0,s.SU)(T).width*(0,s.SU)(h)+"px",height:(0,s.SU)(T).height*(0,s.SU)(h)+"px",left:(0,s.SU)(T).left+"px",top:(0,s.SU)(T).top+"px"})},[(0,i._)("div",bp,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(k.value,((e,t)=>((0,i.wg)(),(0,i.j4)(Iu,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:(0,s.SU)(h)},null,8,["type","axis","length","canvasScale"])))),128)),(0,s.SU)(l).length>1?((0,i.wg)(),(0,i.j4)(Ju,{key:0,elementList:I.value,scaleMultiElement:(0,s.SU)(O)},null,8,["elementList","scaleMultiElement"])):(0,i.kq)("",!0),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(I.value,(e=>(0,i.wy)(((0,i.wg)(),(0,i.j4)(Vc,{key:e.id,elementInfo:e,isSelected:(0,s.SU)(l).includes(e.id),isActive:(0,s.SU)(r)===e.id,isActiveGroupElement:(0,s.SU)(a)===e.id,isMultiSelect:(0,s.SU)(l).length>1,rotateElement:(0,s.SU)(z),scaleElement:(0,s.SU)(Z),openLinkDialog:_,dragLineElement:(0,s.SU)(F),moveShapeKeypoint:(0,s.SU)(P)},null,8,["elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement","moveShapeKeypoint"])),[[n.F8,!(0,s.SU)(u).includes(e.id)]]))),128)),(0,i.Wm)(ku)]),(0,i._)("div",{class:"viewport",ref_key:"viewportRef",ref:x,style:(0,oe.j5)({transform:`scale(${(0,s.SU)(h)})`})},[(0,s.SU)(M)?((0,i.wg)(),(0,i.j4)(pu,{key:0,top:(0,s.SU)(E).top,left:(0,s.SU)(E).left,width:(0,s.SU)(E).width,height:(0,s.SU)(E).height,quadrant:(0,s.SU)(U)},null,8,["top","left","width","height","quadrant"])):(0,i.kq)("",!0),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(I.value,((e,t)=>(0,i.wy)(((0,i.wg)(),(0,i.j4)(uu,{key:e.id,elementInfo:e,elementIndex:t+1,isMultiSelect:(0,s.SU)(l).length>1,selectElement:(0,s.SU)(A),openLinkDialog:_},null,8,["elementInfo","elementIndex","isMultiSelect","selectElement"])),[[n.F8,!(0,s.SU)(u).includes(e.id)]]))),128))],4)],4),(0,s.SU)(w)?((0,i.wg)(),(0,i.iD)("div",_p)):(0,i.kq)("",!0),(0,s.SU)(p)?((0,i.wg)(),(0,i.j4)(Tu,{key:3,viewportStyles:(0,s.SU)(T)},null,8,["viewportStyles"])):(0,i.kq)("",!0),(0,i.Wm)(kp,{visible:b.value,"onUpdate:visible":t[3]||(t[3]=e=>b.value=e),width:540},{default:(0,i.w5)((()=>[(0,i.Wm)(yp,{onClose:t[2]||(t[2]=e=>b.value=!1)})])),_:1},8,["visible"])],32)),[[o,ce],[c,Q]])}}});const Sp=(0,Vl.Z)(Ip,[["__scopeId","data-v-5294a048"]]);var Cp=Sp;const Lp={class:"shape-item-thumbnail"},Tp={class:"shape-content"},Ep={overflow:"visible",width:"18",height:"18"},Mp=["transform"],Up=["fill","stroke","d"];var Wp=(0,i.aZ)({__name:"ShapeItemThumbnail",props:{shape:{}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Lp,[(0,i._)("div",Tp,[((0,i.wg)(),(0,i.iD)("svg",Ep,[(0,i._)("g",{transform:`scale(${18/e.shape.viewBox[0]}, ${18/e.shape.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[(0,i._)("path",{class:(0,oe.C_)(["shape-path",{outlined:e.shape.outlined}]),"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:e.shape.outlined?"#999":"transparent",stroke:e.shape.outlined?"transparent":"#999","stroke-width":"2",d:e.shape.path},null,10,Up)],8,Mp)]))])]))}});const Dp=(0,Vl.Z)(Wp,[["__scopeId","data-v-8603ad34"]]);var Hp=Dp;const Fp={class:"shape-pool"},Ap={class:"category-name"},$p={class:"shape-list"};var Zp=(0,i.aZ)({__name:"ShapePool",emits:["select"],setup(e,{emit:t}){const l=t,a=e=>{l("select",e)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Fp,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(ua),(e=>((0,i.wg)(),(0,i.iD)("div",{class:"category",key:e.type},[(0,i._)("div",Ap,(0,oe.zw)(e.type),1),(0,i._)("div",$p,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.children,((e,t)=>((0,i.wg)(),(0,i.j4)(Hp,{class:"shape-item",key:t,shape:e,onClick:t=>a(e)},null,8,["shape","onClick"])))),128))])])))),128))]))}});const Op=(0,Vl.Z)(Zp,[["__scopeId","data-v-8b994b42"]]);var Rp=Op;const zp=[{type:"直线",children:[{path:"M 0 0 L 20 20",style:"solid",points:["",""]},{path:"M 0 0 L 20 20",style:"dashed",points:["",""]},{path:"M 0 0 L 20 20",style:"solid",points:["","arrow"]},{path:"M 0 0 L 20 20",style:"dashed",points:["","arrow"]},{path:"M 0 0 L 20 20",style:"solid",points:["","dot"]}]},{type:"折线、曲线",children:[{path:"M 0 0 L 0 20 L 20 20",style:"solid",points:["","arrow"],isBroken:!0},{path:"M 0 0 Q 0 20 20 20",style:"solid",points:["","arrow"],isCurve:!0},{path:"M 0 0 C 20 0 0 20 20 20",style:"solid",points:["","arrow"],isCubic:!0}]}],Pp={class:"line-pool"},Bp={class:"category-name"},Np={class:"line-list"},jp=["onClick"],Yp={overflow:"visible",width:"20",height:"20"},Vp=["d","stroke-dasharray","marker-start","marker-end"];var Jp=(0,i.aZ)({__name:"LinePool",emits:["select"],setup(e,{emit:t}){const l=t,a=e=>{l("select",e)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Pp,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(zp),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"category",key:e.type},[(0,i._)("div",Bp,(0,oe.zw)(e.type),1),(0,i._)("div",Np,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.children,((e,l)=>((0,i.wg)(),(0,i.iD)("div",{class:"line-item",key:l},[(0,i._)("div",{class:"line-content",onClick:t=>a(e)},[((0,i.wg)(),(0,i.iD)("svg",Yp,[(0,i._)("defs",null,[e.points[0]?((0,i.wg)(),(0,i.j4)(_s,{key:0,class:"line-marker",id:`preset-line-${t}-${l}`,position:"start",type:e.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):(0,i.kq)("",!0),e.points[1]?((0,i.wg)(),(0,i.j4)(_s,{key:1,class:"line-marker",id:`preset-line-${t}-${l}`,position:"end",type:e.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):(0,i.kq)("",!0)]),(0,i._)("path",{class:"line-path",d:e.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===e.style?"0, 0":"4, 1","marker-start":e.points[0]?`url(#preset-line-${t}-${l}-${e.points[0]}-start)`:"","marker-end":e.points[1]?`url(#preset-line-${t}-${l}-${e.points[1]}-end)`:""},null,8,Vp)]))],8,jp)])))),128))])])))),128))]))}});const qp=(0,Vl.Z)(Jp,[["__scopeId","data-v-554824b6"]]);var Xp=qp;const Gp={class:"chart-pool"},Kp=["onClick"];var Qp=(0,i.aZ)({__name:"ChartPool",emits:["select"],setup(e,{emit:t}){const l=t,a=["bar","horizontalBar","line","area","scatter","pie","ring"],n=e=>{l("select",e)};return(e,t)=>{const l=(0,i.up)("IconChartLine"),o=(0,i.up)("IconChartHistogram"),s=(0,i.up)("IconChartPie"),r=(0,i.up)("IconChartHistogramOne"),u=(0,i.up)("IconChartLineArea"),c=(0,i.up)("IconChartRing"),d=(0,i.up)("IconChartScatter");return(0,i.wg)(),(0,i.iD)("ul",Gp,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(a,((e,t)=>(0,i._)("li",{class:"chart-item",key:t},[(0,i._)("div",{class:"chart-content",onClick:t=>n(e)},["line"===e?((0,i.wg)(),(0,i.j4)(l,{key:0,size:"24"})):"bar"===e?((0,i.wg)(),(0,i.j4)(o,{key:1,size:"24"})):"pie"===e?((0,i.wg)(),(0,i.j4)(s,{key:2,size:"24"})):"horizontalBar"===e?((0,i.wg)(),(0,i.j4)(r,{key:3,size:"24"})):"area"===e?((0,i.wg)(),(0,i.j4)(u,{key:4,size:"24"})):"ring"===e?((0,i.wg)(),(0,i.j4)(c,{key:5,size:"24"})):"scatter"===e?((0,i.wg)(),(0,i.j4)(d,{key:6,size:"24"})):(0,i.kq)("",!0)],8,Kp)]))),64))])}}});const ev=(0,Vl.Z)(Qp,[["__scopeId","data-v-398f5699"]]);var tv=ev;const lv=e=>((0,i.dD)("data-v-268948c2"),e=e(),(0,i.Cn)(),e),av={class:"prefix"},nv={class:"input-wrap"},ov=["disabled","placeholder"],iv={class:"handlers"},sv=lv((()=>(0,i._)("svg",{fill:"currentColor",width:"1em",height:"1em",viewBox:"64 64 896 896"},[(0,i._)("path",{d:"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z"})],-1))),rv=[sv],uv=lv((()=>(0,i._)("svg",{fill:"currentColor",width:"1em",height:"1em",viewBox:"64 64 896 896"},[(0,i._)("path",{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"})],-1))),cv=[uv],dv={class:"suffix"};var pv=(0,i.aZ)({__name:"NumberInput",props:{value:{},disabled:{type:Boolean,default:!1},placeholder:{default:""},min:{default:0},max:{default:1/0},step:{default:1}},emits:["update:value","input","change","blur","focus","enter"],setup(e,{emit:t}){const l=e,a=t,o=(0,s.iH)(0),r=(0,s.iH)(!1);(0,i.YP)((()=>l.value),(()=>{l.value!==o.value&&(o.value=l.value)}),{immediate:!0}),(0,i.YP)(o,(()=>{let e=+o.value;isNaN(e)?e=l.min:e>l.max?e=l.max:e{r.value=!1,a("blur",e)},c=e=>{r.value=!0,a("focus",e)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["number-input",{disabled:e.disabled,focused:r.value}])},[(0,i._)("span",av,[(0,i.WI)(e.$slots,"prefix")]),(0,i._)("div",nv,[(0,i.wy)((0,i._)("input",{type:"text",disabled:e.disabled,"onUpdate:modelValue":t[0]||(t[0]=e=>o.value=e),placeholder:e.placeholder,onInput:t[1]||(t[1]=e=>a("input",e)),onFocus:t[2]||(t[2]=e=>c(e)),onBlur:t[3]||(t[3]=e=>u(e)),onChange:t[4]||(t[4]=e=>a("change",e)),onKeydown:t[5]||(t[5]=(0,n.D2)((e=>a("enter",e)),["enter"]))},null,40,ov),[[n.nr,o.value]]),(0,i._)("div",iv,[(0,i._)("span",{class:"handler",onClick:t[6]||(t[6]=t=>o.value+=e.step)},rv),(0,i._)("span",{class:"handler",onClick:t[7]||(t[7]=t=>o.value-=e.step)},cv)])]),(0,i._)("span",dv,[(0,i.WI)(e.$slots,"suffix")])],2))}});const vv=(0,Vl.Z)(pv,[["__scopeId","data-v-268948c2"]]);var mv=vv;const hv=e=>((0,i.dD)("data-v-372c6730"),e=e(),(0,i.Cn)(),e),fv={class:"table-generator"},gv={class:"title"},yv={class:"lef"},wv=["onMouseenter"],xv={key:1,class:"custom"},kv={class:"row"},bv=hv((()=>(0,i._)("div",{class:"label",style:{width:"25%"}},"行数:",-1))),_v={class:"row"},Iv=hv((()=>(0,i._)("div",{class:"label",style:{width:"25%"}},"列数:",-1))),Sv={class:"btns"};var Cv=(0,i.aZ)({__name:"TableGenerator",emits:["insert","close"],setup(e,{emit:t}){const l=t,a=(0,s.iH)([]),n=(0,s.iH)(3),o=(0,s.iH)(3),r=(0,s.iH)(!1),u=()=>{if(!a.value.length)return;const[e,t]=a.value;l("insert",{row:e,col:t})},c=()=>n.value<1||n.value>20||o.value<1||o.value>20?ta.warning("行数/列数必须在0~20之间!"):(l("insert",{row:n.value,col:o.value}),void(r.value=!1)),d=()=>{l("close"),r.value=!1};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",fv,[(0,i._)("div",gv,[(0,i._)("div",yv,"表格 "+(0,oe.zw)(a.value.length?`${a.value[0]} x ${a.value[1]}`:""),1),(0,i._)("div",{class:"right",onClick:t[0]||(t[0]=e=>r.value=!r.value)},(0,oe.zw)(r.value?"返回":"自定义"),1)]),r.value?((0,i.wg)(),(0,i.iD)("div",xv,[(0,i._)("div",kv,[bv,(0,i.Wm)(mv,{min:1,max:20,value:n.value,"onUpdate:value":t[3]||(t[3]=e=>n.value=e),style:{width:"75%"}},null,8,["value"])]),(0,i._)("div",_v,[Iv,(0,i.Wm)(mv,{min:1,max:20,value:o.value,"onUpdate:value":t[4]||(t[4]=e=>o.value=e),style:{width:"75%"}},null,8,["value"])]),(0,i._)("div",Sv,[(0,i.Wm)(tp,{class:"btn",onClick:t[5]||(t[5]=e=>d())},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{class:"btn",type:"primary",onClick:t[6]||(t[6]=e=>c())},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])])):((0,i.wg)(),(0,i.iD)("table",{key:0,onMouseleave:t[1]||(t[1]=e=>a.value=[]),onClick:t[2]||(t[2]=e=>u())},[(0,i._)("tbody",null,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(10,(e=>(0,i._)("tr",{key:e},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(10,(t=>(0,i._)("td",{onMouseenter:l=>a.value=[e,t],key:t},[(0,i._)("div",{class:(0,oe.C_)(["cell",{active:a.value.length&&e<=a.value[0]&&t<=a.value[1]}])},null,2)],40,wv))),64))]))),64))])],32))]))}});const Lv=(0,Vl.Z)(Cv,[["__scopeId","data-v-372c6730"]]);var Tv=Lv;const Ev={class:"media-input"},Mv={class:"btns"},Uv={class:"btns"};var Wv=(0,i.aZ)({__name:"MediaInput",emits:["insertVideo","insertAudio","close"],setup(e,{emit:t}){const l=t,a=(0,s.iH)("video"),n=(0,s.iH)("https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm"),o=(0,s.iH)("https://freesound.org/data/previews/614/614107_11861866-lq.mp3"),r=[{key:"video",label:"视频"},{key:"audio",label:"音频"}],u=()=>{if(!n.value)return ta.error("请先输入正确的视频地址");l("insertVideo",n.value)},c=()=>{if(!o.value)return ta.error("请先输入正确的音频地址");l("insertAudio",o.value)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Ev,[(0,i.Wm)(Kd,{tabs:r,value:a.value,"onUpdate:value":t[0]||(t[0]=e=>a.value=e),tabsStyle:{marginBottom:"15px"}},null,8,["value"]),"video"===a.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i.Wm)(sn,{value:n.value,"onUpdate:value":t[1]||(t[1]=e=>n.value=e),placeholder:"请输入视频地址,e.g. https://xxx.mp4"},null,8,["value"]),(0,i._)("div",Mv,[(0,i.Wm)(tp,{onClick:t[2]||(t[2]=e=>l("close")),style:{"margin-right":"10px"}},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{type:"primary",onClick:t[3]||(t[3]=e=>u())},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])],64)):(0,i.kq)("",!0),"audio"===a.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i.Wm)(sn,{value:o.value,"onUpdate:value":t[4]||(t[4]=e=>o.value=e),placeholder:"请输入音频地址,e.g. https://xxx.mp3"},null,8,["value"]),(0,i._)("div",Uv,[(0,i.Wm)(tp,{onClick:t[5]||(t[5]=e=>l("close")),style:{"margin-right":"10px"}},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{type:"primary",onClick:t[6]||(t[6]=e=>c())},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])],64)):(0,i.kq)("",!0)]))}});const Dv=(0,Vl.Z)(Wv,[["__scopeId","data-v-35a1214c"]]);var Hv=Dv,Fv=l(3576);Fv.kh.SUB_SUP_SCALE=.5;const Av=[{label:"高斯公式",latex:"\\int\\int\\int _ { \\Omega } \\left( \\frac { \\partial {P} } { \\partial {x} } + \\frac { \\partial {Q} } { \\partial {y} } + \\frac { \\partial {R} }{ \\partial {z} } \\right) \\mathrm { d } V = \\oint _ { \\partial \\Omega } ( P \\cos \\alpha + Q \\cos \\beta + R \\cos \\gamma ) \\mathrm{ d} S"},{label:"傅里叶级数",latex:"f(x) = \\frac {a_0} 2 + \\sum_{n = 1}^\\infty {({a_n}\\cos {nx} + {b_n}\\sin {nx})}"},{label:"泰勒展开式",latex:"e ^ { x } = 1 + \\frac { x } { 1 ! } + \\frac { x ^ { 2 } } { 2 ! } + \\frac { x ^ { 3 } } { 3 ! } + ... , \\quad - \\infty < x < \\infty"},{label:"定积分",latex:"\\lim_ { n \\rightarrow + \\infty } \\sum _ { i = 1 } ^ { n } f \\left[ a + \\frac { i } { n } ( b - a ) \\right] \\frac { b - a } { n } = \\int _ { a } ^ { b } f ( x ) dx"},{label:"三角恒等式1",latex:"\\sin \\alpha \\pm \\sin \\beta = 2 \\sin \\frac { 1 } { 2 } ( \\alpha \\pm \\beta ) \\cos \\frac { 1 } { 2 } ( \\alpha \\mp \\beta )"},{label:"三角恒等式2",latex:"\\cos \\alpha + \\cos \\beta = 2 \\cos \\frac { 1 } { 2 } ( \\alpha + \\beta ) \\cos \\frac { 1 } { 2 } ( \\alpha - \\beta )"},{label:"和的展开式",latex:"( 1 + x ) ^ { n } = 1 + \\frac { n x } { 1 ! } + \\frac { n ( n - 1 ) x ^ { 2 } } { 2 ! } + ..."},{label:"欧拉公式",latex:" e^{ix} = \\cos {x} + i\\sin {x}"},{label:"贝努利方程",latex:"\\frac {dy} {dx} + P(x)y = Q(x) y^n ({n} \\not= {0,1})"},{label:"全微分方程",latex:"du(x,y) = P(x,y)dx + Q(x,y)dy = 0"},{label:"非齐次方程",latex:"y = (\\int Q(x) e^{\\int {P(x)dx}}dx + C)e^{-\\int {P(x)dx}}"},{label:"柯西中值定理",latex:"\\frac{{f(b) - f(a)}}{{F(b) - F(a)}} = \\frac{{f'(\\xi )}}{{F'(\\xi )}}"},{label:"拉格朗日中值定理",latex:"f(b) - f(a) = f'(\\xi )(b - a)"},{label:"导数公式",latex:"(\\arcsin x)' = \\frac{1}{{\\sqrt {1 - x^2} }}"},{label:"三角函数积分",latex:"\\int {tgxdx = - \\ln \\left| {\\cos x} \\right| + C}"},{label:"二次曲面",latex:"\\frac{{{x^2}}}{{{a^2}}} + \\frac{{{y^2}}}{{{b^2}}} - \\frac{{{z^2}}}{{{c^2}}} = 1"},{label:"二阶微分",latex:"\\frac {{d^2}y} {dx^2} + P(x) \\frac {dy} {dx} + Q(x)y = f(x)"},{label:"方向导数",latex:"\\frac{{\\partial f}}{{\\partial l}} = \\frac{{\\partial f}}{{\\partial x}}\\cos \\phi + \\frac{{\\partial f}}{{\\partial y}}\\sin \\phi"}],$v=[{type:"operators",label:"数学",children:[{latex:"\\cdot"},{latex:"\\pm"},{latex:"\\mp"},{latex:"+"},{latex:"-"},{latex:"\\times"},{latex:"\\div"},{latex:"<"},{latex:">"},{latex:"="},{latex:"\\neq\\ne"},{latex:"\\leqq"},{latex:"\\geqq"},{latex:"\\leq"},{latex:"\\geq"},{latex:"\\propto"},{latex:"\\sim"},{latex:"\\equiv"},{latex:"\\dagger"},{latex:"\\ddagger"},{latex:"\\ell"},{latex:"\\#"},{latex:"\\$"},{latex:"\\&"},{latex:"\\%"},{latex:"\\langle\\rangle"},{latex:"()"},{latex:"[]"},{latex:"\\{\\}"},{latex:"||"},{latex:"\\|"},{latex:"\\exists"},{latex:"\\in"},{latex:"\\subset"},{latex:"\\supset"},{latex:"\\cup"},{latex:"\\cap"},{latex:"\\infty"},{latex:"\\partial"},{latex:"\\nabla"},{latex:"\\aleph"},{latex:"\\wp"},{latex:"\\therefore"},{latex:"\\mid"},{latex:"\\sum"},{latex:"\\prod"},{latex:"\\bigoplus"},{latex:"\\bigodot"},{latex:"\\int"},{latex:"\\oint"},{latex:"\\oplus"},{latex:"\\odot"},{latex:"\\perp"},{latex:"\\angle"},{latex:"\\triangle"},{latex:"\\Box"},{latex:"\\rightarrow"},{latex:"\\to"},{latex:"\\leftarrow"},{latex:"\\gets"},{latex:"\\circ"},{latex:"\\bigcirc"},{latex:"\\bullet"},{latex:"\\star"},{latex:"\\diamond"},{latex:"\\ast"},{latex:","},{latex:"."},{latex:";"},{latex:"!"}]},{type:"group",label:"组合",children:[{latex:"\\frac{a}{b}"},{latex:"\\frac{dx}{dx}"},{latex:"\\frac{\\partial a}{\\partial b}"},{latex:"\\sqrt{x}"},{latex:"\\sqrt[n]{x}"},{latex:"x^{n}"},{latex:"x_{n}"},{latex:"x_a^b"},{latex:"\\int_{a}^{b}"},{latex:"\\oint_a^b"},{latex:"\\lim_{a \\rightarrow b}"},{latex:"\\prod_a^b"},{latex:"\\sum_a^b"},{latex:"\\left(\\begin{array}a \\\\ b\\end{array}\\right)"},{latex:"\\begin{bmatrix}a & b \\\\ c & d \\end{bmatrix}"},{latex:"\\begin{cases}a & x = 0 \\\\ b & x > 0\\end{cases}"},{latex:"\\hat{a}"},{latex:"\\breve{a}"},{latex:"\\acute{a}"},{latex:"\\grave{a}"},{latex:"\\tilde{a}"},{latex:"\\bar{a}"},{latex:"\\vec{a}"},{latex:"\\underline{a}"},{latex:"\\overline{a}"},{latex:"\\widehat{ab}"},{latex:"\\overleftarrow{ab}"},{latex:"\\overrightarrow{ab}"}]},{type:"verbatim",label:"函数",children:[{latex:"\\log"},{latex:"\\ln"},{latex:"\\exp"},{latex:"\\mod"},{latex:"\\lim"},{latex:"\\sin"},{latex:"\\cos"},{latex:"\\tan"},{latex:"\\csc"},{latex:"\\sec"},{latex:"\\cot"},{latex:"\\sinh"},{latex:"\\cosh"},{latex:"\\tanh"},{latex:"\\csch"},{latex:"\\sech"},{latex:"\\coth"},{latex:"\\arcsin"},{latex:"\\arccos"},{latex:"\\arctan"},{latex:"\\arccsc"},{latex:"\\arcsec"},{latex:"\\arccot"}]},{type:"greek",label:"希腊字母",children:[{latex:"\\alpha"},{latex:"\\beta"},{latex:"\\gamma"},{latex:"\\delta"},{latex:"\\varepsilon"},{latex:"\\zeta"},{latex:"\\eta"},{latex:"\\vartheta"},{latex:"\\iota"},{latex:"\\kappa"},{latex:"\\lambda"},{latex:"\\mu"},{latex:"\\nu"},{latex:"\\xi"},{latex:"\\omicron"},{latex:"\\pi"},{latex:"\\rho"},{latex:"\\sigma"},{latex:"\\tau"},{latex:"\\upsilon"},{latex:"\\varphi"},{latex:"\\chi"},{latex:"\\psi"},{latex:"\\omega"},{latex:"\\epsilon"},{latex:"\\theta"},{latex:"\\phi"},{latex:"\\varsigma"},{latex:"\\Alpha"},{latex:"\\Beta"},{latex:"\\Gamma"},{latex:"\\Delta"},{latex:"\\Epsilon"},{latex:"\\Zeta"},{latex:"\\Eta"},{latex:"\\Theta"},{latex:"\\Iota"},{latex:"\\Kappa"},{latex:"\\Lambda"},{latex:"\\Mu"},{latex:"\\Nu"},{latex:"\\Xi"},{latex:"\\Omicron"},{latex:"\\Pi"},{latex:"\\Rho"},{latex:"\\Sigma"},{latex:"\\Tau"},{latex:"\\Upsilon"},{latex:"\\Phi"},{latex:"\\Chi"},{latex:"\\Psi"},{latex:"\\Omega"}]}],Zv=["width","height"],Ov=["transform"],Rv=["d"];var zv=(0,i.aZ)({__name:"FormulaContent",props:{latex:{},width:{},height:{}},setup(e){const t=e,l=(0,s.iH)({x:0,y:0,w:0,h:0}),a=(0,s.iH)("");(0,i.YP)((()=>t.latex),(()=>{const e=new Fv._q(t.latex);a.value=e.pathd({}),l.value=e.box({})}),{immediate:!0});const n=(0,i.Fl)((()=>{const e=l.value.w+32,a=l.value.h+32;return e>t.width||a>t.height?e/a>t.width/t.height?t.width/e:t.height/a:1}));return(e,t)=>((0,i.wg)(),(0,i.iD)("svg",{class:"formula-content",overflow:"visible",width:l.value.w+32,height:l.value.h+32,stroke:"#000","stroke-width":"1",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[(0,i._)("g",{transform:`scale(${n.value}, ${n.value}) translate(0,0) matrix(1,0,0,1,0,0)`,"transform-origin":"0 50%"},[(0,i._)("path",{d:a.value},null,8,Rv)],8,Ov)],8,Zv))}});const Pv=(0,Vl.Z)(zv,[["__scopeId","data-v-567417d3"]]);var Bv=Pv;const Nv=["innerHTML"];var jv=(0,i.aZ)({__name:"SymbolContent",props:{latex:{}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e=new Fv._q(t.latex);return e.svg({SCALE_X:10,SCALE_Y:10})}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"symbol-content",innerHTML:l.value},null,8,Nv))}});const Yv=jv;var Vv=Yv;const Jv=["disabled","value","rows","placeholder"];var qv=(0,i.aZ)({__name:"TextArea",props:{value:{},rows:{default:4},disabled:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},placeholder:{default:""}},emits:["update:value"],setup(e,{expose:t,emit:l}){const a=l,n=e=>{a("update:value",e.target.value)},o=(0,s.iH)(),r=()=>{o.value&&o.value.focus()};return t({focus:r}),(e,t)=>((0,i.wg)(),(0,i.iD)("textarea",{class:(0,oe.C_)(["textarea",{disabled:e.disabled,resizable:e.resizable}]),ref_key:"textareaRef",ref:o,disabled:e.disabled,value:e.value,rows:e.rows,placeholder:e.placeholder,onInput:t[0]||(t[0]=e=>n(e))},null,42,Jv))}});const Xv=(0,Vl.Z)(qv,[["__scopeId","data-v-65d72404"]]);var Gv=Xv;const Kv={class:"latex-editor"},Qv={class:"container"},em={class:"left"},tm={class:"input-area"},lm={class:"preview"},am={key:0,class:"placeholder"},nm={key:1,class:"preview-content"},om={class:"right"},im={class:"content"},sm={key:0,class:"symbol"},rm={class:"symbol-pool"},um=["onClick"],cm={key:1,class:"formula"},dm={class:"formula-title"},pm=["onClick"],vm={class:"footer"};var mm=(0,i.aZ)({__name:"index",props:{value:{default:""}},emits:["update","close"],setup(e,{emit:t}){const l=[{label:"常用符号",key:"symbol"},{label:"预置公式",key:"formula"}],a=e,n=t,o=Av,r=$v.map((e=>({label:e.label,key:e.type}))),u=(0,s.iH)(""),c=(0,s.iH)("symbol"),d=(0,s.iH)(),p=(0,s.iH)($v[0].type),v=(0,i.Fl)((()=>{const e=$v.find((e=>e.type===p.value));return e?.children||[]}));(0,i.bv)((()=>{a.value&&(u.value=a.value)}));const m=()=>{if(!u.value)return ta.error("公式不能为空");const e=new Fv._q(u.value),t=e.pathd({}),l=e.box({});n("update",{latex:u.value,path:t,w:l.w+32,h:l.h+32})},h=e=>{d.value&&(d.value.focus(),document.execCommand("insertText",!1,e))};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Kv,[(0,i._)("div",Qv,[(0,i._)("div",em,[(0,i._)("div",tm,[(0,i.Wm)(Gv,{value:u.value,"onUpdate:value":t[0]||(t[0]=e=>u.value=e),placeholder:"输入 LaTeX 公式",ref_key:"textAreaRef",ref:d},null,8,["value"])]),(0,i._)("div",lm,[u.value?((0,i.wg)(),(0,i.iD)("div",nm,[(0,i.Wm)(Bv,{width:518,height:138,latex:u.value},null,8,["latex"])])):((0,i.wg)(),(0,i.iD)("div",am,"公式预览"))])]),(0,i._)("div",om,[(0,i.Wm)(Kd,{tabs:l,value:c.value,"onUpdate:value":t[1]||(t[1]=e=>c.value=e),card:""},null,8,["value"]),(0,i._)("div",im,["symbol"===c.value?((0,i.wg)(),(0,i.iD)("div",sm,[(0,i.Wm)(Kd,{tabs:(0,s.SU)(r),value:p.value,"onUpdate:value":t[2]||(t[2]=e=>p.value=e),spaceBetween:"",tabsStyle:{margin:"10px 10px 0"}},null,8,["tabs","value"]),(0,i._)("div",rm,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(v.value,(e=>((0,i.wg)(),(0,i.iD)("div",{class:"symbol-item",key:e.latex,onClick:t=>h(e.latex)},[(0,i.Wm)(Vv,{latex:e.latex},null,8,["latex"])],8,um)))),128))])])):((0,i.wg)(),(0,i.iD)("div",cm,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(o),(e=>((0,i.wg)(),(0,i.iD)("div",{class:"formula-item",key:e.label},[(0,i._)("div",dm,(0,oe.zw)(e.label),1),(0,i._)("div",{class:"formula-item-content",onClick:t=>u.value=e.latex},[(0,i.Wm)(Bv,{width:236,height:60,latex:e.latex},null,8,["latex"])],8,pm)])))),128))]))])])]),(0,i._)("div",vm,[(0,i.Wm)(tp,{class:"btn",onClick:t[3]||(t[3]=e=>n("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{class:"btn",type:"primary",onClick:t[4]||(t[4]=e=>m())},{default:(0,i.w5)((()=>[(0,i.Uk)("确定")])),_:1})])]))}});const hm=(0,Vl.Z)(mm,[["__scopeId","data-v-49a14edf"]]);var fm=hm;const gm={class:"canvas-tool"},ym={class:"left-handler"},wm={class:"add-element-handler"},xm={class:"handler-item group-btn"},km={class:"right-handler"},bm={class:"text"};var _m=(0,i.aZ)({__name:"index",setup(e){const t=R(),{creatingElement:l,creatingCustomShape:a,showSelectPanel:n,showSearchPanel:r}=(0,o.Jk)(t),{canUndo:u,canRedo:c}=(0,o.Jk)(J()),{redo:d,undo:p}=da(),{scaleCanvas:v,setCanvasScalePercentage:m,resetCanvas:h,canvasScalePercentage:f}=La(),g=[200,150,100,80,50],y=(0,s.iH)(!1),w=e=>{m(e),y.value=!1},{createImageElement:x,createChartElement:k,createTableElement:b,createLatexElement:_,createVideoElement:I,createAudioElement:S}=pa(),C=e=>{const t=e[0];t&&na(t).then((e=>x(e)))},L=(0,s.iH)(!1),T=(0,s.iH)(!1),E=(0,s.iH)(!1),M=(0,s.iH)(!1),U=(0,s.iH)(!1),W=(0,s.iH)(!1),D=(0,s.iH)(!1),H=(e=!1)=>{t.setCreatingElement({type:"text",vertical:e})},F=e=>{"任意多边形"===e.title?t.setCreatingCustomShapeState(!0):t.setCreatingElement({type:"shape",data:e}),L.value=!1},A=e=>{t.setCreatingElement({type:"line",data:e}),T.value=!1},$=()=>{t.setSelectPanelState(!n.value)},Z=()=>{t.setSearchPanelState(!r.value)};return(e,t)=>{const o=(0,i.up)("IconBack"),m=(0,i.up)("IconNext"),x=(0,i.up)("IconMoveOne"),O=(0,i.up)("IconSearch"),R=(0,i.up)("IconFontSize"),z=(0,i.up)("IconTextRotationNone"),P=(0,i.up)("IconTextRotationDown"),B=(0,i.up)("IconDown"),N=(0,i.up)("IconPicture"),j=(0,i.up)("IconGraphicDesign"),Y=(0,i.up)("IconConnection"),V=(0,i.up)("IconChartProportion"),J=(0,i.up)("IconInsertTable"),q=(0,i.up)("IconFormula"),X=(0,i.up)("IconVideoTwo"),G=(0,i.up)("IconMinus"),K=(0,i.up)("IconPlus"),Q=(0,i.up)("IconFullScreen"),ee=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",gm,[(0,i._)("div",ym,[(0,i.wy)((0,i.Wm)(o,{class:(0,oe.C_)(["handler-item",{disable:!(0,s.SU)(u)}]),onClick:t[0]||(t[0]=e=>(0,s.SU)(p)())},null,8,["class"]),[[ee,"撤销"]]),(0,i.wy)((0,i.Wm)(m,{class:(0,oe.C_)(["handler-item",{disable:!(0,s.SU)(c)}]),onClick:t[1]||(t[1]=e=>(0,s.SU)(d)())},null,8,["class"]),[[ee,"重做"]]),(0,i.Wm)(Zc,{type:"vertical",style:{height:"20px"}}),(0,i.wy)((0,i.Wm)(x,{class:(0,oe.C_)(["handler-item",{active:(0,s.SU)(n)}]),onClick:t[2]||(t[2]=e=>$())},null,8,["class"]),[[ee,"选择窗格"]]),(0,i.wy)((0,i.Wm)(O,{class:(0,oe.C_)(["handler-item",{active:(0,s.SU)(r)}]),onClick:t[3]||(t[3]=e=>Z())},null,8,["class"]),[[ee,"查找/替换"]])]),(0,i._)("div",wm,[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",xm,[(0,i.Wm)(R,{class:(0,oe.C_)(["icon",{active:"text"===(0,s.SU)(l)?.type}]),onClick:t[4]||(t[4]=e=>H())},null,8,["class"]),(0,i.Wm)(dn,{trigger:"click",value:D.value,"onUpdate:value":t[7]||(t[7]=e=>D.value=e),style:{height:"100%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(mn,{center:"",onClick:t[5]||(t[5]=()=>{H(),D.value=!1})},{default:(0,i.w5)((()=>[(0,i.Wm)(z),(0,i.Uk)(" 横向文本框")])),_:1}),(0,i.Wm)(mn,{center:"",onClick:t[6]||(t[6]=()=>{H(!0),D.value=!1})},{default:(0,i.w5)((()=>[(0,i.Wm)(P),(0,i.Uk)(" 竖向文本框")])),_:1})])),default:(0,i.w5)((()=>[(0,i.Wm)(B,{class:"arrow"})])),_:1},8,["value"])])),[[ee,"插入文字"]]),(0,i.Wm)(Pa,{onChange:t[8]||(t[8]=e=>C(e))},{default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(N,{class:"handler-item"},null,512),[[ee,"插入图片"]])])),_:1}),(0,i.Wm)(dn,{trigger:"click",value:L.value,"onUpdate:value":t[10]||(t[10]=e=>L.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(Rp,{onSelect:t[9]||(t[9]=e=>F(e))})])),default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(j,{class:(0,oe.C_)(["handler-item",{active:(0,s.SU)(a)||"shape"===(0,s.SU)(l)?.type}])},null,8,["class"]),[[ee,"插入形状"]])])),_:1},8,["value"]),(0,i.Wm)(dn,{trigger:"click",value:T.value,"onUpdate:value":t[12]||(t[12]=e=>T.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(Xp,{onSelect:t[11]||(t[11]=e=>A(e))})])),default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(Y,{class:(0,oe.C_)(["handler-item",{active:"line"===(0,s.SU)(l)?.type}])},null,8,["class"]),[[ee,"插入线条"]])])),_:1},8,["value"]),(0,i.Wm)(dn,{trigger:"click",value:E.value,"onUpdate:value":t[14]||(t[14]=e=>E.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(tv,{onSelect:t[13]||(t[13]=e=>{(0,s.SU)(k)(e),E.value=!1})})])),default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(V,{class:"handler-item"},null,512),[[ee,"插入图表"]])])),_:1},8,["value"]),(0,i.Wm)(dn,{trigger:"click",value:M.value,"onUpdate:value":t[17]||(t[17]=e=>M.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(Tv,{onClose:t[15]||(t[15]=e=>M.value=!1),onInsert:t[16]||(t[16]=({row:e,col:t})=>{(0,s.SU)(b)(e,t),M.value=!1})})])),default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(J,{class:"handler-item"},null,512),[[ee,"插入表格"]])])),_:1},8,["value"]),(0,i.wy)((0,i.Wm)(q,{class:"handler-item",onClick:t[18]||(t[18]=e=>W.value=!0)},null,512),[[ee,"插入公式"]]),(0,i.Wm)(dn,{trigger:"click",value:U.value,"onUpdate:value":t[22]||(t[22]=e=>U.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(Hv,{onClose:t[19]||(t[19]=e=>U.value=!1),onInsertVideo:t[20]||(t[20]=e=>{(0,s.SU)(I)(e),U.value=!1}),onInsertAudio:t[21]||(t[21]=e=>{(0,s.SU)(S)(e),U.value=!1})})])),default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(X,{class:"handler-item"},null,512),[[ee,"插入音视频"]])])),_:1},8,["value"])]),(0,i._)("div",km,[(0,i.Wm)(G,{class:"handler-item viewport-size",onClick:t[23]||(t[23]=e=>(0,s.SU)(v)("-"))}),(0,i.Wm)(dn,{trigger:"click",value:y.value,"onUpdate:value":t[24]||(t[24]=e=>y.value=e)},{content:(0,i.w5)((()=>[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(g,(e=>(0,i.Wm)(mn,{center:"",key:e,onClick:t=>w(e)},{default:(0,i.w5)((()=>[(0,i.Uk)((0,oe.zw)(e)+"%",1)])),_:2},1032,["onClick"]))),64))])),default:(0,i.w5)((()=>[(0,i._)("span",bm,(0,oe.zw)((0,s.SU)(f)),1)])),_:1},8,["value"]),(0,i.Wm)(K,{class:"handler-item viewport-size",onClick:t[25]||(t[25]=e=>(0,s.SU)(v)("+"))}),(0,i.wy)((0,i.Wm)(Q,{class:"handler-item viewport-size-adaptation",onClick:t[26]||(t[26]=e=>(0,s.SU)(h)())},null,512),[[ee,"适应屏幕"]])]),(0,i.Wm)(kp,{visible:W.value,"onUpdate:visible":t[29]||(t[29]=e=>W.value=e),width:880},{default:(0,i.w5)((()=>[(0,i.Wm)(fm,{onClose:t[27]||(t[27]=e=>W.value=!1),onUpdate:t[28]||(t[28]=e=>{(0,s.SU)(_)(e),W.value=!1})})])),_:1},8,["visible"])])}}});const Im=(0,Vl.Z)(_m,[["__scopeId","data-v-7e81f183"]]);var Sm=Im,Cm=()=>{const{slides:e}=(0,o.Jk)($()),t=(0,s.iH)(null),l=(0,s.iH)(50),a=()=>{e.value.length>l.value?t.value=setTimeout((()=>{l.value=l.value+20,a()}),600):l.value=9999};return(0,i.bv)(a),(0,i.Ah)((()=>{t.value&&clearTimeout(t.value)})),{slidesLoadLimit:l}};const Lm={class:"layout-pool"},Tm=["onClick"];var Em=(0,i.aZ)({__name:"LayoutPool",emits:["select"],setup(e,{emit:t}){const l=t,{layouts:a}=(0,o.Jk)($()),n=e=>{l("select",e)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Lm,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(a),(e=>((0,i.wg)(),(0,i.iD)("div",{class:"layout-item",key:e.id,onClick:t=>n(e)},[(0,i.Wm)(Jd,{class:"thumbnail",slide:e,size:180},null,8,["slide"])],8,Tm)))),128))]))}});const Mm=(0,Vl.Z)(Em,[["__scopeId","data-v-8ee3e590"]]);var Um=Mm,Wm=l(9980),Dm=l.n(Wm);const Hm={class:"add-slide"},Fm={class:"select-btn"},Am=["onMousedown"],$m={class:"page-number"};var Zm=(0,i.aZ)({__name:"index",setup(e){const t=R(),l=$(),a=q(),{selectedSlidesIndex:n,thumbnailsFocus:r}=(0,o.Jk)(t),{slides:u,slideIndex:c}=(0,o.Jk)(l),{ctrlKeyState:d,shiftKeyState:p}=(0,o.Jk)(a),{slidesLoadLimit:v}=Cm(),m=(0,i.Fl)((()=>[...n.value,c.value])),h=(0,s.iH)(!1),{copySlide:f,pasteSlide:g,createSlide:y,createSlideByTemplate:w,copyAndPasteSlide:x,deleteSlide:k,cutSlide:b,selectAllSlide:_,sortSlides:I}=ha(),S=(0,s.iH)();(0,i.YP)((()=>c.value),(()=>{m.value.length&&t.updateSelectedSlidesIndex([]),(0,i.Y3)((()=>{const e=S.value?.$el?.querySelector(".thumbnail-item.active");S.value&&e&&!Le(e,S.value.$el)&&setTimeout((()=>{e.scrollIntoView({behavior:"smooth"})}),100)}))}));const C=e=>{t.setActiveElementIdList([]),c.value!==e&&l.updateSlideIndex(e)},L=(e,l)=>{const a=m.value.length>1;if(!a||!m.value.includes(l)||0===e.button)if(d.value)if(c.value===l){if(!a)return;const e=m.value.filter((e=>e!==l));t.updateSelectedSlidesIndex(e),C(m.value[0])}else if(m.value.includes(l)){const e=m.value.filter((e=>e!==l));t.updateSelectedSlidesIndex(e)}else{const e=[...m.value,l];t.updateSelectedSlidesIndex(e)}else if(p.value){if(c.value===l&&!a)return;let e=Math.min(...m.value),n=l;l{r.value!==e&&(t.setThumbnailsFocus(e),e||t.updateSelectedSlidesIndex([]))},E=e=>{const{newIndex:t,oldIndex:l}=e;void 0!==t&&void 0!==l&&t!==l&&I(t,l)},{enterScreening:M,enterScreeningFromStart:U}=Ca(),W=()=>[{text:"粘贴",subText:"Ctrl + V",handler:g},{text:"全选",subText:"Ctrl + A",handler:_},{text:"新建页面",subText:"Enter",handler:y},{text:"幻灯片放映",subText:"F5",handler:U}],D=()=>[{text:"剪切",subText:"Ctrl + X",handler:b},{text:"复制",subText:"Ctrl + C",handler:f},{text:"粘贴",subText:"Ctrl + V",handler:g},{text:"全选",subText:"Ctrl + A",handler:_},{divider:!0},{text:"新建页面",subText:"Enter",handler:y},{text:"复制页面",subText:"Ctrl + D",handler:x},{text:"删除页面",subText:"Delete",handler:()=>k()},{divider:!0},{text:"从当前放映",subText:"Shift + F5",handler:M}];return(e,t)=>{const l=(0,i.up)("IconPlus"),a=(0,i.up)("IconDown"),n=(0,i.Q2)("contextmenu"),o=(0,i.Q2)("click-outside");return(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"thumbnails",onMousedown:t[4]||(t[4]=()=>T(!0))},[(0,i._)("div",Hm,[(0,i._)("div",{class:"btn",onClick:t[0]||(t[0]=e=>(0,s.SU)(y)())},[(0,i.Wm)(l,{class:"icon"}),(0,i.Uk)("添加幻灯片")]),(0,i.Wm)(dn,{trigger:"click",placement:"bottom-start",value:h.value,"onUpdate:value":t[2]||(t[2]=e=>h.value=e),center:""},{content:(0,i.w5)((()=>[(0,i.Wm)(Um,{onSelect:t[1]||(t[1]=e=>{(0,s.SU)(w)(e),h.value=!1})})])),default:(0,i.w5)((()=>[(0,i._)("div",Fm,[(0,i.Wm)(a)])])),_:1},8,["value"])]),(0,i.Wm)((0,s.SU)(Dm()),{class:"thumbnail-list",ref_key:"thumbnailsRef",ref:S,modelValue:(0,s.SU)(u),animation:200,scroll:!0,scrollSensitivity:50,onEnd:E,itemKey:"id"},{item:(0,i.w5)((({element:e,index:l})=>[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["thumbnail-item",{active:(0,s.SU)(c)===l,selected:m.value.includes(l)}]),onMousedown:e=>L(e,l),onDblclick:t[3]||(t[3]=e=>(0,s.SU)(M)())},[(0,i._)("div",{class:(0,oe.C_)(["label",{"offset-left":l>=99}])},(0,oe.zw)((0,s.SU)(G)(l+1,2)),3),(0,i.Wm)(Jd,{class:"thumbnail",slide:e,size:120,visible:l<(0,s.SU)(v)},null,8,["slide","visible"])],42,Am)),[[n,D]])])),_:1},8,["modelValue"]),(0,i._)("div",$m,"幻灯片 "+(0,oe.zw)((0,s.SU)(c)+1)+" / "+(0,oe.zw)((0,s.SU)(u).length),1)],32)),[[o,()=>T(!1)],[n,W]])}}});const Om=(0,Vl.Z)(Zm,[["__scopeId","data-v-0dbead61"]]);var Rm=Om,zm=()=>{const e=R(),{richTextAttrs:t,textFormatPainter:l}=(0,o.Jk)(e),a=(a=!1)=>{l.value?e.setTextFormatPainter(null):e.setTextFormatPainter({keep:a,bold:t.value.bold,em:t.value.em,underline:t.value.underline,strikethrough:t.value.strikethrough,color:t.value.color,backcolor:t.value.backcolor,fontname:t.value.fontname,fontsize:t.value.fontsize,align:t.value.align})};return{toggleTextFormatPainter:a}},Pm=l(8374);const Bm={class:"bar"},Nm=["data-tooltip"],jm=["data-tooltip"],Ym=["data-tooltip"];var Vm=(0,i.aZ)({__name:"Slider",props:{value:{},disabled:{type:Boolean,default:!1},min:{default:0},max:{default:100},step:{default:1},range:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e=>e.getBoundingClientRect().left,a=e,n=t,o=(0,s.iH)(),r=(0,s.iH)(0),u=(0,s.iH)(0),c=(0,s.iH)(0),d=(0,s.iH)("end"),p=e=>{let t=e/100*(a.max-a.min);if(a.step>=1)t=Math.fround(t);else{const e=a.step.toString(),l=e.match(/^[0.]*([1-9])/);if(l){const a=l[1],n=e.indexOf(a)-1;if(n>0){const e=Math.pow(10,n);t=Math.fround(t*e)/e}}}return Pm.ZP.plus(t,a.min)},v=(0,i.Fl)((()=>p(r.value))),m=(0,i.Fl)((()=>p(u.value))),h=(0,i.Fl)((()=>p(c.value)));(0,i.YP)((()=>a.value),(()=>{a.max!==a.min&&("number"===typeof a.value?r.value=(a.value-a.min)/(a.max-a.min)*100:(u.value=(a.value[0]-a.min)/(a.max-a.min)*100,c.value=(a.value[1]-a.min)/(a.max-a.min)*100))}),{immediate:!0});const f=e=>{if(!o.value)return 0;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let n=(t-l(o.value))/o.value.clientWidth;n=Math.max(n,0),n=Math.min(n,1);let i=100*n;const s=a.step/(a.max-a.min)*100,r=i%s;return r>0&&(r<=s/2?i-=r:i=i-r+s),i},g=e=>{const t=f(e);"start"===d.value?u.value=t:c.value=t},y=e=>{w(e);const t=p(r.value),l=a.value,o="start"===d.value?[t,l[1]]:[l[0],t];o[0]>o[1]&&([o[0],o[1]]=[o[1],o[0]]),n("update:value",o),document.removeEventListener("mousemove",g),document.removeEventListener("touchmove",g),document.removeEventListener("mouseup",y),document.removeEventListener("touchend",y)},w=e=>{r.value=f(e)},x=e=>{w(e);const t=p(r.value);n("update:value",t),document.removeEventListener("mousemove",w),document.removeEventListener("touchmove",w),document.removeEventListener("mouseup",x),document.removeEventListener("touchend",x)},k=e=>{if(!a.disabled)if(a.range){const t=f(e);Math.abs(t-u.value)((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["slider",{disabled:e.disabled}]),ref_key:"sliderRef",ref:o,onMousedown:t[0]||(t[0]=e=>k(e))},[(0,i._)("div",Bm,[e.range?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i._)("div",{class:"track",style:(0,oe.j5)({width:c.value-u.value+"%",left:`${u.value}%`})},null,4),(0,i._)("div",{class:"thumb",style:(0,oe.j5)({left:`${u.value}%`}),"data-tooltip":m.value},null,12,jm),(0,i._)("div",{class:"thumb",style:(0,oe.j5)({left:`${c.value}%`}),"data-tooltip":h.value},null,12,Ym)],64)):((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",{class:"track",style:(0,oe.j5)({width:`${r.value}%`})},null,4),(0,i._)("div",{class:"thumb",style:(0,oe.j5)({left:`${r.value}%`}),"data-tooltip":v.value},null,12,Nm)],64))])],34))}});const Jm=(0,Vl.Z)(Vm,[["__scopeId","data-v-563bd2a0"]]);var qm=Jm;const Xm=e=>((0,i.dD)("data-v-03715c20"),e=e(),(0,i.Cn)(),e),Gm={class:"element-opacity"},Km={class:"row"},Qm=Xm((()=>(0,i._)("div",{style:{width:"40%"}},"不透明度:",-1)));var eh=(0,i.aZ)({__name:"ElementOpacity",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=(0,s.iH)(1);(0,i.YP)(l,(()=>{l.value&&(a.value="opacity"in l.value&&void 0!==l.value.opacity?l.value.opacity:1)}),{deep:!0,immediate:!0});const{addHistorySnapshot:n}=da(),r=e=>{if(!l.value)return;const a={opacity:e};t.updateElement({id:l.value.id,props:a}),n()};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Gm,[(0,i._)("div",Km,[Qm,(0,i.Wm)(qm,{min:0,max:1,step:.1,value:a.value,"onUpdate:value":t[0]||(t[0]=e=>r(e)),style:{width:"60%"}},null,8,["value"])])]))}});const th=(0,Vl.Z)(eh,[["__scopeId","data-v-03715c20"]]);var lh=th;const ah={class:"color-block"};var nh=(0,i.aZ)({__name:"ColorButton",props:{color:{}},setup(e){return(e,t)=>{const l=(0,i.up)("IconPlatte");return(0,i.wg)(),(0,i.j4)(tp,{class:"color-btn"},{default:(0,i.w5)((()=>[(0,i._)("div",ah,[(0,i._)("div",{class:"content",style:(0,oe.j5)({backgroundColor:e.color})},null,4)]),(0,i.Wm)(l,{class:"color-btn-icon"})])),_:1})}}});const oh=(0,Vl.Z)(nh,[["__scopeId","data-v-7fa73bdc"]]);var ih=oh,sh=l(6459),rh=(0,i.aZ)({__name:"Checkboard",props:{size:{default:8},white:{default:"#fff"},grey:{default:"#e6e6e6"}},setup(e){const t=e,l={},a=(e,t,l)=>{const a=document.createElement("canvas");a.width=a.height=2*l;const n=a.getContext("2d");return n?(n.fillStyle=e,n.fillRect(0,0,a.width,a.height),n.fillStyle=t,n.fillRect(0,0,l,l),n.translate(l,l),n.fillRect(0,0,l,l),a.toDataURL()):null},n=(e,t,n)=>{const o=e+","+t+","+n;if(l[o])return l[o];const i=a(e,t,n);return l[o]=i,i},o=(0,i.Fl)((()=>{const e=n(t.white,t.grey,t.size);return{backgroundImage:`url(${e})`}}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"checkerboard",style:(0,oe.j5)(o.value)},null,4))}});const uh=(0,Vl.Z)(rh,[["__scopeId","data-v-fa191ace"]]);var ch=uh;const dh=e=>((0,i.dD)("data-v-84628bc8"),e=e(),(0,i.Cn)(),e),ph={class:"alpha"},vh={class:"alpha-checkboard-wrap"},mh=dh((()=>(0,i._)("div",{class:"alpha-picker"},null,-1))),hh=[mh];var fh=(0,i.aZ)({__name:"Alpha",props:{value:{}},emits:["colorChange"],setup(e,{emit:t}){const l=e,a=t,n=(0,i.Fl)((()=>l.value)),o=(0,i.Fl)((()=>{const e=[n.value.r,n.value.g,n.value.b].join(",");return`linear-gradient(to right, rgba(${e}, 0) 0%, rgba(${e}, 1) 100%)`})),r=(0,s.iH)(),u=e=>{if(e.preventDefault(),!r.value)return;const t=r.value.clientWidth,l=r.value.getBoundingClientRect().left+window.pageXOffset,o=e.pageX-l;let i;i=o<0?0:o>t?1:Math.round(100*o/t)/100,n.value.a!==i&&a("colorChange",{r:n.value.r,g:n.value.g,b:n.value.b,a:i})},c=()=>{window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",c)},d=e=>{u(e),window.addEventListener("mousemove",u),window.addEventListener("mouseup",c)};return(0,i.Ah)(c),(e,t)=>((0,i.wg)(),(0,i.iD)("div",ph,[(0,i._)("div",vh,[(0,i.Wm)(ch)]),(0,i._)("div",{class:"alpha-gradient",style:(0,oe.j5)({background:o.value})},null,4),(0,i._)("div",{class:"alpha-container",ref_key:"alphaRef",ref:r,onMousedown:t[0]||(t[0]=e=>d(e))},[(0,i._)("div",{class:"alpha-pointer",style:(0,oe.j5)({left:100*n.value.a+"%"})},hh,4)],544)]))}});const gh=(0,Vl.Z)(fh,[["__scopeId","data-v-84628bc8"]]);var yh=gh;const wh=e=>((0,i.dD)("data-v-5711e710"),e=e(),(0,i.Cn)(),e),xh={class:"hue"},kh=wh((()=>(0,i._)("div",{class:"hue-picker"},null,-1))),bh=[kh];var _h=(0,i.aZ)({__name:"Hue",props:{value:{},hue:{}},emits:["colorChange"],setup(e,{emit:t}){const l=e,a=t,n=(0,s.iH)(0),o=(0,s.iH)(""),r=(0,i.Fl)((()=>{const e=(0,W.Z)(l.value).toHsl();return-1!==l.hue&&(e.h=l.hue),e})),u=(0,i.Fl)((()=>0===r.value.h&&"right"===o.value?"100%":100*r.value.h/360+"%"));(0,i.YP)((()=>l.value),(()=>{const e=(0,W.Z)(l.value).toHsl(),t=0===e.s?l.hue:e.h;0!==t&&t-n.value>0&&(o.value="right"),0!==t&&t-n.value<0&&(o.value="left"),n.value=t}));const c=(0,s.iH)(),d=e=>{if(e.preventDefault(),!c.value)return;const t=c.value.clientWidth,n=c.value.getBoundingClientRect().left+window.pageXOffset,o=e.pageX-n;let i,s;o<0?i=0:o>t?i=360:(s=100*o/t,i=360*s/100),-1!==l.hue&&r.value.h===i||a("colorChange",{h:i,l:r.value.l,s:r.value.s,a:r.value.a})},p=()=>{window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",p)},v=e=>{d(e),window.addEventListener("mousemove",d),window.addEventListener("mouseup",p)};return(0,i.Ah)(p),(e,t)=>((0,i.wg)(),(0,i.iD)("div",xh,[(0,i._)("div",{class:"hue-container",ref_key:"hueRef",ref:c,onMousedown:t[0]||(t[0]=e=>v(e))},[(0,i._)("div",{class:"hue-pointer",style:(0,oe.j5)({left:u.value})},bh,4)],544)]))}});const Ih=(0,Vl.Z)(_h,[["__scopeId","data-v-5711e710"]]);var Sh=Ih;const Ch=e=>((0,i.dD)("data-v-c79c0446"),e=e(),(0,i.Cn)(),e),Lh=Ch((()=>(0,i._)("div",{class:"saturation-white"},null,-1))),Th=Ch((()=>(0,i._)("div",{class:"saturation-black"},null,-1))),Eh=Ch((()=>(0,i._)("div",{class:"saturation-circle"},null,-1))),Mh=[Eh];var Uh=(0,i.aZ)({__name:"Saturation",props:{value:{},hue:{}},emits:["colorChange"],setup(e,{emit:t}){const l=e,a=t,n=(0,i.Fl)((()=>{const e=(0,W.Z)(l.value).toHsv();return-1!==l.hue&&(e.h=l.hue),e})),o=(0,i.Fl)((()=>`hsl(${n.value.h}, 100%, 50%)`)),r=(0,i.Fl)((()=>-100*n.value.v+1+100+"%")),u=(0,i.Fl)((()=>100*n.value.s+"%")),c=(0,D.throttle)((function(e){a("colorChange",e)}),20,{leading:!0,trailing:!1}),d=(0,s.iH)(),p=e=>{if(e.preventDefault(),!d.value)return;const t=d.value.clientWidth,l=d.value.clientHeight,a=d.value.getBoundingClientRect().left+window.pageXOffset,o=d.value.getBoundingClientRect().top+window.pageYOffset,i=(0,D.clamp)(e.pageX-a,0,t),s=(0,D.clamp)(e.pageY-o,0,l),r=i/t,u=(0,D.clamp)(-s/l+1,0,1);c({h:n.value.h,s:r,v:u,a:n.value.a})},v=()=>{window.removeEventListener("mousemove",p),window.removeEventListener("mouseup",v)},m=e=>{p(e),window.addEventListener("mousemove",p),window.addEventListener("mouseup",v)};return(0,i.Ah)(v),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"saturation",ref_key:"saturationRef",ref:d,style:(0,oe.j5)({background:o.value}),onMousedown:t[0]||(t[0]=e=>m(e))},[Lh,Th,(0,i._)("div",{class:"saturation-pointer",style:(0,oe.j5)({top:r.value,left:u.value})},Mh,4)],36))}});const Wh=(0,Vl.Z)(Uh,[["__scopeId","data-v-c79c0446"]]);var Dh=Wh;const Hh={class:"editable-input"},Fh=["value"];var Ah=(0,i.aZ)({__name:"EditableInput",props:{value:{}},emits:["colorChange"],setup(e,{emit:t}){const l=e,a=t,n=(0,i.Fl)((()=>{let e="";return e=l.value.a<1?(0,W.Z)(l.value).toHex8String().toUpperCase():(0,W.Z)(l.value).toHexString().toUpperCase(),e.replace("#","")})),o=e=>{const t=e.target.value;if(t.length>=6){const e=(0,W.Z)(t);e.isValid()&&a("colorChange",e.toRgb())}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Hh,[(0,i._)("input",{class:"input-content",value:n.value,onInput:t[0]||(t[0]=e=>o(e))},null,40,Fh)]))}});const $h=(0,Vl.Z)(Ah,[["__scopeId","data-v-65e2913c"]]);var Zh=$h;const Oh={class:"color-picker"},Rh={class:"picker-saturation-wrap"},zh={class:"picker-controls"},Ph={class:"picker-color-wrap"},Bh={class:"picker-sliders"},Nh={class:"picker-hue-wrap"},jh={class:"picker-alpha-wrap"},Yh={class:"picker-field"},Vh={class:"picker-presets"},Jh=["onClick"],qh={class:"picker-gradient-presets"},Xh=["onClick"],Gh={class:"picker-presets"},Kh=["onClick"],Qh={key:0,class:"recent-colors-title"},ef={class:"picker-presets"},tf=["onClick"],lf="RECENT_COLORS";var af=(0,i.aZ)({__name:"index",props:{modelValue:{default:"#e86b99"}},emits:["update:modelValue"],setup(e,{emit:t}){const l=e,a=t,n=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],o=(e,t,l)=>{const a=(0,W.Z)(e).toRgb(),n=(0,W.Z)(t).toRgb(),o=(n.r-a.r)/l,i=(n.g-a.g)/l,s=(n.b-a.b)/l,r=[];for(let u=0;u{const e=[];for(const t of n)e.push(o(t[1],t[0],5));return e},u=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c"],c=["#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57","#00afee","#0071be","#00215f","#72349d"],d=(0,s.iH)(-1),p=(0,s.iH)([]),v=(0,i.Fl)({get(){return(0,W.Z)(l.modelValue).toRgb()},set(e){const t=`rgba(${[e.r,e.g,e.b,e.a].join(",")})`;a("update:modelValue",t)}}),m=r(),h=(0,i.Fl)((()=>`rgba(${[v.value.r,v.value.g,v.value.b,v.value.a].join(",")})`)),f=e=>{d.value=(0,W.Z)(e).toHsl().h,a("update:modelValue",e)},g=(0,D.debounce)((function(){const e=(0,W.Z)(v.value).toRgbString();if(!p.value.includes(e)){p.value=[e,...p.value];const t=10;p.value.length>t&&(p.value=p.value.slice(0,t))}}),300,{trailing:!0});(0,i.bv)((()=>{const e=localStorage.getItem(lf);e&&(p.value=JSON.parse(e))})),(0,i.YP)(p,(()=>{const e=JSON.stringify(p.value);localStorage.setItem(lf,e)}));const y=e=>{"h"in e?(d.value=e.h,v.value=(0,W.Z)(e).toRgb()):(d.value=(0,W.Z)(e).toHsl().h,v.value=e),g()},w=()=>{const e="EyeDropper"in window;e?x():k()},x=()=>{ta.success("按 ESC 键关闭取色吸管");const e=new window.EyeDropper;e.open().then((e=>{const t=(0,W.Z)(e.sRGBHex);d.value=t.toHsl().h,v.value=t.toRgb(),g()})).catch((()=>{ta.success("关闭取色吸管")}))},k=()=>{const e=document.querySelector(".canvas");if(!e)return;const t=document.createElement("div");t.style.cssText="position: fixed; top: 0; left: 0; bottom: 0; right: 0; z-index: 9999; cursor: wait;",document.body.appendChild(t);const l=document.createElement("div");l.style.cssText="position: absolute; top: -100px; left: -100px; width: 16px; height: 16px; border: 1px solid #000; z-index: 999",t.appendChild(l);const{left:a,top:n,width:o,height:i}=e.getBoundingClientRect(),s=e=>(!e.tagName||"FOREIGNOBJECT"!==e.tagName.toUpperCase())&&(!e.classList||!e.classList.contains("operate"));(0,sh.rT)(e,{filter:s,fontEmbedCSS:"",width:o,height:i,canvasWidth:o,canvasHeight:i,pixelRatio:1}).then((e=>{e.style.cssText=`position: absolute; top: ${n}px; left: ${a}px; cursor: crosshair;`,t.style.cursor="default",t.appendChild(e);const o=e.getContext("2d");if(!o)return;let i="";const s=e=>{const t=e.x,s=e.y,r=t-a,u=s-n,[c,d,p,v]=o.getImageData(r,u,1,1).data;i=`rgba(${c}, ${d}, ${p}, ${(v/255).toFixed(2)})`,l.style.left=t+10+"px",l.style.top=s+10+"px",l.style.backgroundColor=i},r=()=>{i="",l.style.left="-100px",l.style.top="-100px",l.style.backgroundColor=""},u=l=>{if(i&&0===l.button){const e=(0,W.Z)(i);d.value=e.toHsl().h,v.value=e.toRgb(),g()}document.body.removeChild(t),e.removeEventListener("mousemove",s),e.removeEventListener("mouseleave",r),window.removeEventListener("mousedown",u)};e.addEventListener("mousemove",s),e.addEventListener("mouseleave",r),window.addEventListener("mousedown",u)})).catch((()=>{ta.error("取色吸管初始化失败"),document.body.removeChild(t)}))};return(e,t)=>{const l=(0,i.up)("IconNeedle");return(0,i.wg)(),(0,i.iD)("div",Oh,[(0,i._)("div",Rh,[(0,i.Wm)(Dh,{value:v.value,hue:d.value,onColorChange:t[0]||(t[0]=e=>y(e))},null,8,["value","hue"])]),(0,i._)("div",zh,[(0,i._)("div",Ph,[(0,i._)("div",{class:"picker-current-color",style:(0,oe.j5)({background:h.value})},null,4),(0,i.Wm)(ch)]),(0,i._)("div",Bh,[(0,i._)("div",Nh,[(0,i.Wm)(Sh,{value:v.value,hue:d.value,onColorChange:t[1]||(t[1]=e=>y(e))},null,8,["value","hue"])]),(0,i._)("div",jh,[(0,i.Wm)(yh,{value:v.value,onColorChange:t[2]||(t[2]=e=>y(e))},null,8,["value"])])])]),(0,i._)("div",Yh,[(0,i.Wm)(Zh,{class:"input",value:v.value,onColorChange:t[3]||(t[3]=e=>y(e))},null,8,["value"]),(0,i._)("div",{class:"straw",onClick:t[4]||(t[4]=e=>w())},[(0,i.Wm)(l)]),(0,i._)("div",{class:"transparent",onClick:t[5]||(t[5]=e=>f("#00000000"))},[(0,i.Wm)(ch)])]),(0,i._)("div",Vh,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(u,(e=>(0,i._)("div",{class:"picker-presets-color",key:e,style:(0,oe.j5)({background:e}),onClick:t=>f(e)},null,12,Jh))),64))]),(0,i._)("div",qh,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(m),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"picker-gradient-col",key:t},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e,(e=>((0,i.wg)(),(0,i.iD)("div",{class:"picker-gradient-color",key:e,style:(0,oe.j5)({background:e}),onClick:t=>f(e)},null,12,Xh)))),128))])))),128))]),(0,i._)("div",Gh,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(c,(e=>(0,i._)("div",{key:e,class:"picker-presets-color",style:(0,oe.j5)({background:e}),onClick:t=>f(e)},null,12,Kh))),64))]),p.value.length?((0,i.wg)(),(0,i.iD)("div",Qh,"最近使用:")):(0,i.kq)("",!0),(0,i._)("div",ef,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(p.value,(e=>((0,i.wg)(),(0,i.iD)("div",{key:e,class:"picker-presets-color alpha",onClick:t=>f(e)},[(0,i._)("div",{class:"picker-presets-color-content",style:(0,oe.j5)({background:e})},null,4)],8,tf)))),128))])])}}});const nf=(0,Vl.Z)(af,[["__scopeId","data-v-fec0b01a"]]);var of=nf;const sf=e=>((0,i.dD)("data-v-0566b060"),e=e(),(0,i.Cn)(),e),rf=sf((()=>(0,i._)("span",{class:"switch-core"},null,-1))),uf=[rf];var cf=(0,i.aZ)({__name:"Switch",props:{value:{type:Boolean},disabled:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e,a=t,n=()=>{l.disabled||a("update:value",!l.value)};return(e,t)=>((0,i.wg)(),(0,i.iD)("span",{class:(0,oe.C_)(["switch",{active:e.value,disabled:e.disabled}]),onClick:t[0]||(t[0]=e=>n())},uf,2))}});const df=(0,Vl.Z)(cf,[["__scopeId","data-v-0566b060"]]);var pf=df;const vf=e=>((0,i.dD)("data-v-18fbbd33"),e=e(),(0,i.Cn)(),e),mf={class:"element-outline"},hf={key:0,class:"row"},ff=vf((()=>(0,i._)("div",{style:{width:"40%"}},"启用边框:",-1))),gf={class:"switch-wrapper",style:{width:"60%"}},yf={class:"row"},wf=vf((()=>(0,i._)("div",{style:{width:"40%"}},"边框样式:",-1))),xf={class:"row"},kf=vf((()=>(0,i._)("div",{style:{width:"40%"}},"边框颜色:",-1))),bf={class:"row"},_f=vf((()=>(0,i._)("div",{style:{width:"40%"}},"边框粗细:",-1)));var If=(0,i.aZ)({__name:"ElementOutline",props:{fixed:{type:Boolean,default:!1}},setup(e){const t=$(),{theme:l}=(0,o.Jk)(t),{handleElement:a}=(0,o.Jk)(R()),n=(0,s.iH)(),r=(0,s.iH)(!1);(0,i.YP)(a,(()=>{a.value&&(n.value="outline"in a.value?a.value.outline:void 0,r.value=!!n.value)}),{deep:!0,immediate:!0});const{addHistorySnapshot:u}=da(),c=e=>{if(!a.value)return;const l={outline:{...n.value,...e}};t.updateElement({id:a.value.id,props:l}),u()},d=e=>{if(a.value){if(e){const e=l.value.outline;t.updateElement({id:a.value.id,props:{outline:e}})}else t.removeElementProps({id:a.value.id,propName:"outline"});u()}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",mf,[e.fixed?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("div",hf,[ff,(0,i._)("div",gf,[(0,i.Wm)(pf,{value:r.value,"onUpdate:value":t[0]||(t[0]=e=>d(e))},null,8,["value"])])])),r.value&&n.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i._)("div",yf,[wf,(0,i.Wm)(cp,{style:{width:"60%"},value:n.value.style||"","onUpdate:value":t[1]||(t[1]=e=>c({style:e})),options:[{label:"实线边框",value:"solid"},{label:"虚线边框",value:"dashed"}]},null,8,["value"])]),(0,i._)("div",xf,[kf,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:n.value.color,"onUpdate:modelValue":t[2]||(t[2]=e=>c({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:n.value.color||"#000"},null,8,["color"])])),_:1})]),(0,i._)("div",bf,[_f,(0,i.Wm)(mv,{value:n.value.width||0,"onUpdate:value":t[3]||(t[3]=e=>c({width:e})),style:{width:"60%"}},null,8,["value"])])],64)):(0,i.kq)("",!0)]))}});const Sf=(0,Vl.Z)(If,[["__scopeId","data-v-18fbbd33"]]);var Cf=Sf;const Lf=e=>((0,i.dD)("data-v-3a267bbc"),e=e(),(0,i.Cn)(),e),Tf={class:"element-shadow"},Ef={class:"row"},Mf=Lf((()=>(0,i._)("div",{style:{width:"40%"}},"启用阴影:",-1))),Uf={class:"switch-wrapper",style:{width:"60%"}},Wf={class:"row"},Df=Lf((()=>(0,i._)("div",{style:{width:"40%"}},"水平阴影:",-1))),Hf={class:"row"},Ff=Lf((()=>(0,i._)("div",{style:{width:"40%"}},"垂直阴影:",-1))),Af={class:"row"},$f=Lf((()=>(0,i._)("div",{style:{width:"40%"}},"模糊距离:",-1))),Zf={class:"row"},Of=Lf((()=>(0,i._)("div",{style:{width:"40%"}},"阴影颜色:",-1)));var Rf=(0,i.aZ)({__name:"ElementShadow",setup(e){const t=$(),{theme:l}=(0,o.Jk)(t),{handleElement:a}=(0,o.Jk)(R()),n=(0,s.iH)(),r=(0,s.iH)(!1);(0,i.YP)(a,(()=>{a.value&&(n.value="shadow"in a.value?a.value.shadow:void 0,r.value=!!n.value)}),{deep:!0,immediate:!0});const{addHistorySnapshot:u}=da(),c=e=>{if(!a.value||!n.value)return;const l={...n.value,...e};t.updateElement({id:a.value.id,props:{shadow:l}}),u()},d=e=>{if(a.value){if(e){const e=l.value.shadow;t.updateElement({id:a.value.id,props:{shadow:e}})}else t.removeElementProps({id:a.value.id,propName:"shadow"});u()}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Tf,[(0,i._)("div",Ef,[Mf,(0,i._)("div",Uf,[(0,i.Wm)(pf,{value:r.value,"onUpdate:value":t[0]||(t[0]=e=>d(e))},null,8,["value"])])]),r.value&&n.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",Wf,[Df,(0,i.Wm)(qm,{style:{width:"60%"},min:-10,max:10,step:1,value:n.value.h,"onUpdate:value":t[1]||(t[1]=e=>c({h:e}))},null,8,["value"])]),(0,i._)("div",Hf,[Ff,(0,i.Wm)(qm,{style:{width:"60%"},min:-10,max:10,step:1,value:n.value.v,"onUpdate:value":t[2]||(t[2]=e=>c({v:e}))},null,8,["value"])]),(0,i._)("div",Af,[$f,(0,i.Wm)(qm,{style:{width:"60%"},min:1,max:20,step:1,value:n.value.blur,"onUpdate:value":t[3]||(t[3]=e=>c({blur:e}))},null,8,["value"])]),(0,i._)("div",Zf,[Of,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:n.value.color,"onUpdate:modelValue":t[4]||(t[4]=e=>c({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:n.value.color},null,8,["color"])])),_:1})])],64)):(0,i.kq)("",!0)]))}});const zf=(0,Vl.Z)(Rf,[["__scopeId","data-v-3a267bbc"]]);var Pf=zf;const Bf={class:"text-color-block"};var Nf=(0,i.aZ)({__name:"TextColorButton",props:{color:{}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.j4)(tp,{class:"text-color-btn"},{default:(0,i.w5)((()=>[(0,i.WI)(e.$slots,"default"),(0,i._)("div",Bf,[(0,i._)("div",{class:"text-color-block-content",style:(0,oe.j5)({backgroundColor:e.color})},null,4)])])),_:3}))}});const jf=(0,Vl.Z)(Nf,[["__scopeId","data-v-37449800"]]);var Yf=jf,Vf=(0,i.aZ)({__name:"CheckboxButton",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.j4)(tp,{checked:e.checked,disabled:e.disabled,type:"checkbox"},{default:(0,i.w5)((()=>[(0,i.WI)(e.$slots,"default")])),_:3},8,["checked","disabled"]))}});const Jf=Vf;var qf=Jf,Xf=(0,i.aZ)({__name:"ButtonGroup",props:{passive:{type:Boolean,default:!1}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["button-group",{passive:e.passive}]),ref:"groupRef"},[(0,i.WI)(e.$slots,"default")],2))}});const Gf=(0,Vl.Z)(Xf,[["__scopeId","data-v-4db942e2"]]);var Kf=Gf,Qf=(0,i.aZ)({__name:"RadioButton",props:{value:{},disabled:{type:Boolean,default:!1}},setup(e){const{value:t,updateValue:l}=(0,i.f3)(Mn);return(e,a)=>((0,i.wg)(),(0,i.j4)(tp,{checked:!e.disabled&&(0,s.SU)(t)===e.value,disabled:e.disabled,type:"radio",onClick:a[0]||(a[0]=t=>!e.disabled&&(0,s.SU)(l)(e.value))},{default:(0,i.w5)((()=>[(0,i.WI)(e.$slots,"default")])),_:3},8,["checked","disabled"]))}});const eg=Qf;var tg=eg,lg=(0,i.aZ)({__name:"RadioGroup",props:{value:{},disabled:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e,a=t,n=e=>{l.disabled||a("update:value",e)},o=(0,i.Fl)((()=>l.value));return(0,i.JJ)(Mn,{value:o,updateValue:n}),(e,t)=>((0,i.wg)(),(0,i.j4)(Kf,{class:"radio-group"},{default:(0,i.w5)((()=>[(0,i.WI)(e.$slots,"default")])),_:3}))}});const ag=lg;var ng=ag;const og={class:"select-group"};function ig(e,t){return(0,i.wg)(),(0,i.iD)("div",og,[(0,i.WI)(e.$slots,"default",{},void 0,!0)])}const sg={},rg=(0,Vl.Z)(sg,[["render",ig],["__scopeId","data-v-d2acb09c"]]);var ug=rg;const cg=e=>((0,i.dD)("data-v-4cf37a85"),e=e(),(0,i.Cn)(),e),dg={class:"text-style-panel"},pg={class:"preset-style"},vg=["onClick"],mg={class:"link-popover"},hg={class:"btns"},fg={class:"row",passive:""},gg={class:"list-wrap"},yg=["onClick"],wg=cg((()=>(0,i._)("span",null,null,-1))),xg=[wg],kg=cg((()=>(0,i._)("div",{style:{width:"10px"}},null,-1))),bg={class:"list-wrap"},_g=["onClick"],Ig=cg((()=>(0,i._)("span",null,null,-1))),Sg=[Ig],Cg={class:"row"},Lg=cg((()=>(0,i._)("div",{style:{width:"10px"}},null,-1))),Tg={class:"row"},Eg=cg((()=>(0,i._)("div",{style:{width:"40%"}},"行间距:",-1))),Mg={class:"row"},Ug=cg((()=>(0,i._)("div",{style:{width:"40%"}},"段间距:",-1))),Wg={class:"row"},Dg=cg((()=>(0,i._)("div",{style:{width:"40%"}},"字间距:",-1))),Hg={class:"row"},Fg=cg((()=>(0,i._)("div",{style:{width:"40%"}},"文本框填充:",-1)));var Ag=(0,i.aZ)({__name:"TextStylePanel",setup(e){const t=[{label:"大标题",style:{fontSize:"26px",fontWeight:700},cmd:[{command:"clear"},{command:"bold"},{command:"fontsize",value:"66px"},{command:"align",value:"center"}]},{label:"小标题",style:{fontSize:"22px",fontWeight:700},cmd:[{command:"clear"},{command:"bold"},{command:"fontsize",value:"40px"},{command:"align",value:"center"}]},{label:"正文",style:{fontSize:"20px"},cmd:[{command:"clear"},{command:"fontsize",value:"20px"}]},{label:"正文[小]",style:{fontSize:"18px"},cmd:[{command:"clear"},{command:"fontsize",value:"18px"}]},{label:"注释 1",style:{fontSize:"16px",fontStyle:"italic"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"em"}]},{label:"注释 2",style:{fontSize:"16px",textDecoration:"underline"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"underline"}]}],l=R(),a=$(),{handleElement:n,handleElementId:r,richTextAttrs:u,availableFonts:c,textFormatPainter:d}=(0,o.Jk)(l),{addHistorySnapshot:p}=da(),{toggleTextFormatPainter:v}=zm(),m=e=>{a.updateElement({id:r.value,props:e}),p()},h=(0,s.iH)(!1),f=(0,s.iH)(!1),g=(0,s.iH)(!1),y=(0,s.iH)(!1),w=(0,s.iH)(["disc","circle","square"]),x=(0,s.iH)(["decimal","lower-roman","upper-roman","lower-alpha","upper-alpha","lower-greek"]),k=(0,s.iH)("#000"),b=(0,s.iH)(),_=(0,s.iH)(),I=(0,s.iH)();(0,i.YP)(n,(()=>{n.value&&"text"===n.value.type&&(k.value=n.value.fill||"#fff",b.value=n.value.lineHeight||1.5,_.value=n.value.wordSpace||0,I.value=void 0===n.value.paragraphSpace?5:n.value.paragraphSpace,Oi.emit(Ai.SYNC_RICH_TEXT_ATTRS_TO_STORE))}),{deep:!0,immediate:!0});const S=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],C=[.9,1,1.15,1.2,1.4,1.5,1.8,2,2.5,3],L=[0,1,2,3,4,5,6,8,10],T=[0,5,10,15,20,25,30,40,50,80],E=e=>{m({lineHeight:e})},U=e=>{m({paragraphSpace:e})},W=e=>{m({wordSpace:e})},D=e=>{m({fill:e})},H=(e,t)=>{Oi.emit(Ai.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},F=e=>{Oi.emit(Ai.RICH_TEXT_COMMAND,{action:e})},A=(0,s.iH)(""),Z=(0,s.iH)(!1);(0,i.YP)(u,(()=>Z.value=!1));const O=()=>{A.value=u.value.link},z=e=>{const t=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if(!e||!t.test(e))return ta.error("不是正确的网页链接地址");H("link",e),Z.value=!1};return(e,l)=>{const a=(0,i.up)("IconFontSize"),n=(0,i.up)("IconAddText"),o=(0,i.up)("IconText"),r=(0,i.up)("IconHighLight"),p=(0,i.up)("IconTextBold"),m=(0,i.up)("IconTextItalic"),$=(0,i.up)("IconTextUnderline"),R=(0,i.up)("IconStrikethrough"),P=(0,i.up)("IconCode"),B=(0,i.up)("IconQuote"),N=(0,i.up)("IconFormat"),j=(0,i.up)("IconFormatBrush"),Y=(0,i.up)("IconLinkOne"),V=(0,i.up)("IconAlignTextLeft"),J=(0,i.up)("IconAlignTextCenter"),q=(0,i.up)("IconAlignTextRight"),X=(0,i.up)("IconAlignTextBoth"),G=(0,i.up)("IconList"),K=(0,i.up)("IconDown"),Q=(0,i.up)("IconOrderedList"),ee=(0,i.up)("IconIndentLeft"),te=(0,i.up)("IconIndentRight"),le=(0,i.up)("IconRowHeight"),ae=(0,i.up)("IconVerticalSpacingBetweenItems"),ne=(0,i.up)("IconFullwidth"),ie=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",dg,[(0,i._)("div",pg,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(t,(e=>(0,i._)("div",{class:"preset-style-item",key:e.label,style:(0,oe.j5)(e.style),onClick:t=>F(e.cmd)},(0,oe.zw)(e.label),13,vg))),64))]),(0,i.Wm)(Zc),(0,i.Wm)(ug,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(cp,{class:"font-select",style:{width:"60%"},value:(0,s.SU)(u).fontname,"onUpdate:value":l[0]||(l[0]=e=>H("fontname",e)),options:[...(0,s.SU)(c),...(0,s.SU)(M)]},{icon:(0,i.w5)((()=>[(0,i.Wm)(a)])),_:1},8,["value","options"]),(0,i.Wm)(cp,{style:{width:"40%"},value:(0,s.SU)(u).fontsize,"onUpdate:value":l[1]||(l[1]=e=>H("fontsize",e)),options:S.map((e=>({label:e,value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(n)])),_:1},8,["value","options"])])),_:1}),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).color,"onUpdate:modelValue":l[2]||(l[2]=e=>H("color",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{first:"",color:(0,s.SU)(u).color},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1},8,["color"])),[[ie,"文字颜色"]])])),_:1}),(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).backcolor,"onUpdate:modelValue":l[3]||(l[3]=e=>H("backcolor",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{color:(0,s.SU)(u).backcolor},{default:(0,i.w5)((()=>[(0,i.Wm)(r)])),_:1},8,["color"])),[[ie,"文字高亮"]])])),_:1}),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{class:"font-size-btn",style:{width:"20%"},onClick:l[4]||(l[4]=e=>H("fontsize-add"))},{default:(0,i.w5)((()=>[(0,i.Wm)(a),(0,i.Uk)("+")])),_:1})),[[ie,"增大字号"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{last:"",class:"font-size-btn",style:{width:"20%"},onClick:l[5]||(l[5]=e=>H("fontsize-reduce"))},{default:(0,i.w5)((()=>[(0,i.Wm)(a),(0,i.Uk)("-")])),_:1})),[[ie,"减小字号"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).bold,onClick:l[6]||(l[6]=e=>H("bold"))},{default:(0,i.w5)((()=>[(0,i.Wm)(p)])),_:1},8,["checked"])),[[ie,"加粗"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).em,onClick:l[7]||(l[7]=e=>H("em"))},{default:(0,i.w5)((()=>[(0,i.Wm)(m)])),_:1},8,["checked"])),[[ie,"斜体"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).underline,onClick:l[8]||(l[8]=e=>H("underline"))},{default:(0,i.w5)((()=>[(0,i.Wm)($)])),_:1},8,["checked"])),[[ie,"下划线"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).strikethrough,onClick:l[9]||(l[9]=e=>H("strikethrough"))},{default:(0,i.w5)((()=>[(0,i.Wm)(R)])),_:1},8,["checked"])),[[ie,"删除线"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).superscript,onClick:l[10]||(l[10]=e=>H("superscript"))},{default:(0,i.w5)((()=>[(0,i.Uk)("A²")])),_:1},8,["checked"])),[[ie,"上标"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).subscript,onClick:l[11]||(l[11]=e=>H("subscript"))},{default:(0,i.w5)((()=>[(0,i.Uk)("A₂")])),_:1},8,["checked"])),[[ie,"下标"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).code,onClick:l[12]||(l[12]=e=>H("code"))},{default:(0,i.w5)((()=>[(0,i.Wm)(P)])),_:1},8,["checked"])),[[ie,"行内代码"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).blockquote,onClick:l[13]||(l[13]=e=>H("blockquote"))},{default:(0,i.w5)((()=>[(0,i.Wm)(B)])),_:1},8,["checked"])),[[ie,"引用"]])])),_:1}),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{first:"",style:{flex:"1"},onClick:l[14]||(l[14]=e=>H("clear"))},{default:(0,i.w5)((()=>[(0,i.Wm)(N)])),_:1})),[[ie,"清除格式"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:!!(0,s.SU)(d),onClick:l[15]||(l[15]=e=>(0,s.SU)(v)()),onDblclick:l[16]||(l[16]=e=>(0,s.SU)(v)(!0))},{default:(0,i.w5)((()=>[(0,i.Wm)(j)])),_:1},8,["checked"])),[[ie,"格式刷(双击连续使用)"]]),(0,i.Wm)(dn,{placement:"bottom-end",trigger:"click",value:Z.value,"onUpdate:value":l[21]||(l[21]=e=>Z.value=e),style:{width:"33.33%"}},{content:(0,i.w5)((()=>[(0,i._)("div",mg,[(0,i.Wm)(sn,{value:A.value,"onUpdate:value":l[17]||(l[17]=e=>A.value=e),placeholder:"请输入超链接"},null,8,["value"]),(0,i._)("div",hg,[(0,i.Wm)(tp,{size:"small",disabled:!(0,s.SU)(u).link,onClick:l[18]||(l[18]=e=>z()),style:{"margin-right":"5px"}},{default:(0,i.w5)((()=>[(0,i.Uk)("移除")])),_:1},8,["disabled"]),(0,i.Wm)(tp,{size:"small",type:"primary",onClick:l[19]||(l[19]=e=>z(A.value))},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{last:"",style:{width:"100%"},checked:!!(0,s.SU)(u).link,onClick:l[20]||(l[20]=e=>O())},{default:(0,i.w5)((()=>[(0,i.Wm)(Y)])),_:1},8,["checked"])),[[ie,"超链接"]])])),_:1},8,["value"])])),_:1}),(0,i.Wm)(Zc),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:(0,s.SU)(u).align,"onUpdate:value":l[22]||(l[22]=e=>H("align",e))},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"left",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(V)])),_:1})),[[ie,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"center",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(J)])),_:1})),[[ie,"居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"right",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(q)])),_:1})),[[ie,"右对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"justify",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(X)])),_:1})),[[ie,"两端对齐"]])])),_:1},8,["value"]),(0,i._)("div",fg,[(0,i.Wm)(Kf,{style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{first:"",type:(0,s.SU)(u).bulletList?"primary":"default",style:{flex:"1"},onClick:l[23]||(l[23]=e=>H("bulletList"))},{default:(0,i.w5)((()=>[(0,i.Wm)(G)])),_:1},8,["type"])),[[ie,"项目符号"]]),(0,i.Wm)(dn,{trigger:"click",value:h.value,"onUpdate:value":l[24]||(l[24]=e=>h.value=e)},{content:(0,i.w5)((()=>[(0,i._)("div",gg,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(w.value,(e=>((0,i.wg)(),(0,i.iD)("ul",{class:"list",key:e,style:(0,oe.j5)({listStyleType:e}),onClick:t=>H("bulletList",e)},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(3,(e=>(0,i._)("li",{class:"list-item",key:e},xg))),64))],12,yg)))),128))])])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{last:"",class:"popover-btn"},{default:(0,i.w5)((()=>[(0,i.Wm)(K)])),_:1})])),_:1},8,["value"])])),_:1}),kg,(0,i.Wm)(Kf,{style:{flex:"1"},passive:""},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{first:"",type:(0,s.SU)(u).orderedList?"primary":"default",style:{flex:"1"},onClick:l[25]||(l[25]=e=>H("orderedList"))},{default:(0,i.w5)((()=>[(0,i.Wm)(Q)])),_:1},8,["type"])),[[ie,"编号"]]),(0,i.Wm)(dn,{trigger:"click",value:f.value,"onUpdate:value":l[26]||(l[26]=e=>f.value=e)},{content:(0,i.w5)((()=>[(0,i._)("div",bg,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(x.value,(e=>((0,i.wg)(),(0,i.iD)("ul",{class:"list",key:e,style:(0,oe.j5)({listStyleType:e}),onClick:t=>H("orderedList",e)},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(3,(e=>(0,i._)("li",{class:"list-item",key:e},Sg))),64))],12,_g)))),128))])])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{last:"",class:"popover-btn"},{default:(0,i.w5)((()=>[(0,i.Wm)(K)])),_:1})])),_:1},8,["value"])])),_:1})]),(0,i._)("div",Cg,[(0,i.Wm)(Kf,{style:{flex:"1"},passive:""},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{first:"",style:{flex:"1"},onClick:l[27]||(l[27]=e=>H("indent","-1"))},{default:(0,i.w5)((()=>[(0,i.Wm)(ee)])),_:1})),[[ie,"减小段落缩进"]]),(0,i.Wm)(dn,{trigger:"click",value:g.value,"onUpdate:value":l[29]||(l[29]=e=>g.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(mn,{onClick:l[28]||(l[28]=e=>H("textIndent","-1"))},{default:(0,i.w5)((()=>[(0,i.Uk)("减小首行缩进")])),_:1})])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{last:"",class:"popover-btn"},{default:(0,i.w5)((()=>[(0,i.Wm)(K)])),_:1})])),_:1},8,["value"])])),_:1}),Lg,(0,i.Wm)(Kf,{style:{flex:"1"},passive:""},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{first:"",style:{flex:"1"},onClick:l[30]||(l[30]=e=>H("indent","+1"))},{default:(0,i.w5)((()=>[(0,i.Wm)(te)])),_:1})),[[ie,"增大段落缩进"]]),(0,i.Wm)(dn,{trigger:"click",value:y.value,"onUpdate:value":l[32]||(l[32]=e=>y.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(mn,{onClick:l[31]||(l[31]=e=>H("textIndent","+1"))},{default:(0,i.w5)((()=>[(0,i.Uk)("增大首行缩进")])),_:1})])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{last:"",class:"popover-btn"},{default:(0,i.w5)((()=>[(0,i.Wm)(K)])),_:1})])),_:1},8,["value"])])),_:1})]),(0,i.Wm)(Zc),(0,i._)("div",Tg,[Eg,(0,i.Wm)(cp,{style:{width:"60%"},value:b.value||1,"onUpdate:value":l[33]||(l[33]=e=>E(e)),options:C.map((e=>({label:e+"倍",value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(le)])),_:1},8,["value","options"])]),(0,i._)("div",Mg,[Ug,(0,i.Wm)(cp,{style:{width:"60%"},value:I.value||0,"onUpdate:value":l[34]||(l[34]=e=>U(e)),options:T.map((e=>({label:e+"px",value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(ae)])),_:1},8,["value","options"])]),(0,i._)("div",Wg,[Dg,(0,i.Wm)(cp,{style:{width:"60%"},value:_.value||0,"onUpdate:value":l[35]||(l[35]=e=>W(e)),options:L.map((e=>({label:e+"px",value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(ne)])),_:1},8,["value","options"])]),(0,i._)("div",Hg,[Fg,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:k.value,"onUpdate:modelValue":l[36]||(l[36]=e=>D(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:k.value},null,8,["color"])])),_:1})]),(0,i.Wm)(Zc),(0,i.Wm)(Cf),(0,i.Wm)(Zc),(0,i.Wm)(Pf),(0,i.Wm)(Zc),(0,i.Wm)(lh)])}}});const $g=(0,Vl.Z)(Ag,[["__scopeId","data-v-4cf37a85"]]);var Zg=$g;const Og={class:"element-flip"};var Rg=(0,i.aZ)({__name:"ElementFlip",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=(0,s.iH)(!1),n=(0,s.iH)(!1);(0,i.YP)(l,(()=>{!l.value||"image"!==l.value.type&&"shape"!==l.value.type||(a.value=!!l.value.flipH,n.value=!!l.value.flipV)}),{deep:!0,immediate:!0});const{addHistorySnapshot:r}=da(),u=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),r())};return(e,t)=>{const l=(0,i.up)("IconFlipVertically"),o=(0,i.up)("IconFlipHorizontally");return(0,i.wg)(),(0,i.iD)("div",Og,[(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(qf,{style:{flex:"1"},checked:n.value,onClick:t[0]||(t[0]=e=>u({flipV:!n.value}))},{default:(0,i.w5)((()=>[(0,i.Wm)(l),(0,i.Uk)(" 垂直翻转")])),_:1},8,["checked"]),(0,i.Wm)(qf,{style:{flex:"1"},checked:a.value,onClick:t[1]||(t[1]=e=>u({flipH:!a.value}))},{default:(0,i.w5)((()=>[(0,i.Wm)(o),(0,i.Uk)(" 水平翻转")])),_:1},8,["checked"])])),_:1})])}}});const zg=(0,Vl.Z)(Rg,[["__scopeId","data-v-7571b056"]]);var Pg=zg;const Bg=e=>((0,i.dD)("data-v-2c8acf3c"),e=e(),(0,i.Cn)(),e),Ng={class:"element-filter"},jg={class:"row"},Yg=Bg((()=>(0,i._)("div",{style:{flex:"2"}},"启用滤镜:",-1))),Vg={class:"switch-wrapper",style:{flex:"3"}},Jg={key:0,class:"filter"},qg={class:"name"};var Xg=(0,i.aZ)({__name:"ElementFilter",setup(e){const t=[{label:"模糊",key:"blur",default:0,value:0,unit:"px",max:10,step:1},{label:"亮度",key:"brightness",default:100,value:100,unit:"%",max:200,step:5},{label:"对比度",key:"contrast",default:100,value:100,unit:"%",max:200,step:5},{label:"灰度",key:"grayscale",default:0,value:0,unit:"%",max:100,step:5},{label:"饱和度",key:"saturate",default:100,value:100,unit:"%",max:200,step:5},{label:"色相",key:"hue-rotate",default:0,value:0,unit:"deg",max:360,step:10},{label:"不透明度",key:"opacity",default:100,value:100,unit:"%",max:100,step:5}],l=$(),{handleElement:a,handleElementId:n}=(0,o.Jk)(R()),r=(0,s.iH)(JSON.parse(JSON.stringify(t))),u=(0,s.iH)(!1),{addHistorySnapshot:c}=da();(0,i.YP)(a,(()=>{if(!a.value||"image"!==a.value.type)return;const e=a.value.filters;e?(r.value=t.map((t=>{const l=e[t.key];return l?{...t,value:parseInt(l)}:t})),u.value=!0):(r.value=JSON.parse(JSON.stringify(t)),u.value=!1)}),{deep:!0,immediate:!0});const d=(e,t)=>{const o=a.value,i=o.filters||{},s={...i,[e.key]:`${t}${e.unit}`};l.updateElement({id:n.value,props:{filters:s}}),c()},p=e=>{a.value&&(e?l.updateElement({id:a.value.id,props:{filters:{}}}):l.removeElementProps({id:a.value.id,propName:"filters"}),c())};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Ng,[(0,i._)("div",jg,[Yg,(0,i._)("div",Vg,[(0,i.Wm)(pf,{value:u.value,"onUpdate:value":t[0]||(t[0]=e=>p(e))},null,8,["value"])])]),u.value?((0,i.wg)(),(0,i.iD)("div",Jg,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(r.value,(e=>((0,i.wg)(),(0,i.iD)("div",{class:"filter-item",key:e.key},[(0,i._)("div",qg,(0,oe.zw)(e.label),1),(0,i.Wm)(qm,{class:"filter-slider",max:e.max,min:0,step:e.step,value:e.value,"onUpdate:value":t=>d(e,t)},null,8,["max","step","value","onUpdate:value"])])))),128))])):(0,i.kq)("",!0)]))}});const Gg=(0,Vl.Z)(Xg,[["__scopeId","data-v-2c8acf3c"]]);var Kg=Gg;const Qg=e=>((0,i.dD)("data-v-0ae0ff99"),e=e(),(0,i.Cn)(),e),ey={class:"element-color-mask"},ty={class:"row"},ly=Qg((()=>(0,i._)("div",{style:{width:"40%"}},"着色(蒙版):",-1))),ay={class:"switch-wrapper",style:{width:"60%"}},ny={key:0,class:"row",style:{"margin-top":"15px"}},oy=Qg((()=>(0,i._)("div",{style:{width:"40%"}},"蒙版颜色:",-1))),iy="rgba(226, 83, 77, 0.5)";var sy=(0,i.aZ)({__name:"ElementColorMask",setup(e){const t=$(),{handleElement:l,handleElementId:a}=(0,o.Jk)(R()),n=(0,s.iH)(iy),r=(0,s.iH)(!1),{addHistorySnapshot:u}=da();(0,i.YP)(l,(()=>{l.value&&"image"===l.value.type&&(l.value.colorMask?(n.value=l.value.colorMask,r.value=!0):r.value=!1)}),{deep:!0,immediate:!0});const c=e=>{l.value&&(e?t.updateElement({id:l.value.id,props:{colorMask:iy}}):t.removeElementProps({id:l.value.id,propName:"colorMask"}),u())},d=e=>{t.updateElement({id:a.value,props:{colorMask:e}}),u()};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",ey,[(0,i._)("div",ty,[ly,(0,i._)("div",ay,[(0,i.Wm)(pf,{value:r.value,"onUpdate:value":t[0]||(t[0]=e=>c(e))},null,8,["value"])])]),r.value?((0,i.wg)(),(0,i.iD)("div",ny,[oy,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:n.value,"onUpdate:modelValue":t[1]||(t[1]=e=>d(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:n.value},null,8,["color"])])),_:1})])):(0,i.kq)("",!0)]))}});const ry=(0,Vl.Z)(sy,[["__scopeId","data-v-0ae0ff99"]]);var uy=ry;const cy=e=>((0,i.dD)("data-v-080b6de7"),e=e(),(0,i.Cn)(),e),dy={class:"image-style-panel"},py={class:"clip"},vy=cy((()=>(0,i._)("div",{class:"title"},"按形状:",-1))),my={class:"shape-clip"},hy=["onClick"],fy={key:0,class:"title"};var gy=(0,i.aZ)({__name:"ImageStylePanel",setup(e){const t=Kn,l=[{label:"纵横比(正方形)",children:[{key:"1:1",ratio:1}]},{label:"纵横比(纵向)",children:[{key:"2:3",ratio:1.5},{key:"3:4",ratio:4/3},{key:"3:5",ratio:5/3},{key:"4:5",ratio:5/4}]},{label:"纵横比(横向)",children:[{key:"3:2",ratio:2/3},{key:"4:3",ratio:3/4},{key:"5:3",ratio:.6},{key:"5:4",ratio:.8}]},{children:[{key:"16:9",ratio:9/16},{key:"16:10",ratio:.625}]}],a=R(),n=$(),{handleElement:r,handleElementId:u}=(0,o.Jk)(a),{currentSlide:c}=(0,o.Jk)(n),d=r,p=(0,s.iH)(!1),{addHistorySnapshot:v}=da(),m=()=>{a.setClipingImageElementId(u.value),p.value=!1},h=()=>{const e=r.value,t=e.width,l=e.height,a=e.left,n=e.top,o=e.clip?e.clip.range:[[0,0],[100,100]],i=t/((o[1][0]-o[0][0])/100),s=l/((o[1][1]-o[0][1])/100),u=a-i*(o[0][0]/100),c=n-s*(o[0][1]/100);return{originClipRange:o,originWidth:i,originHeight:s,originLeft:u,originTop:c}},f=(e,t=0)=>{const l=r.value,{originClipRange:a,originWidth:o,originHeight:i,originLeft:s,originTop:c}=h();if(t){const a=i/o,r=0,d=100;let p;if(a>t){const e=(1-t/a)/2*100;p=[[r,e],[d,d-e]]}else{const e=(1-a/t)/2*100;p=[[e,r],[d-e,d]]}n.updateElement({id:u.value,props:{clip:{...l.clip,shape:e,range:p},left:s+o*(p[0][0]/100),top:c+i*(p[0][1]/100),width:o*(p[1][0]-p[0][0])/100,height:i*(p[1][1]-p[0][1])/100}})}else n.updateElement({id:u.value,props:{clip:{...l.clip,shape:e,range:a}}});m(),v()},g=e=>{const t=e[0];t&&(na(t).then((e=>{const t={src:e};n.updateElement({id:u.value,props:t})})),v())},y=()=>{const e=r.value;if(e.clip){const{originWidth:e,originHeight:t,originLeft:l,originTop:a}=h();n.updateElement({id:u.value,props:{left:l,top:a,width:e,height:t}})}n.removeElementProps({id:u.value,propName:["clip","outline","flip","shadow","filters","colorMask"]}),v()},w=()=>{const e=r.value,t={...c.value.background,type:"image",image:e.src,imageSize:"cover"};n.updateSlide({background:t}),v()};return(e,a)=>{const n=(0,i.up)("IconTailoring"),o=(0,i.up)("IconDown"),r=(0,i.up)("IconTransform"),u=(0,i.up)("IconUndo"),c=(0,i.up)("IconTheme");return(0,i.wg)(),(0,i.iD)("div",dy,[(0,i._)("div",{class:"origin-image",style:(0,oe.j5)({backgroundImage:`url(${(0,s.SU)(d).src})`})},null,4),(0,i.Wm)(Pg),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{first:"",style:{width:"calc(100% / 6 * 5)"},onClick:a[0]||(a[0]=e=>m())},{default:(0,i.w5)((()=>[(0,i.Wm)(n,{class:"btn-icon"}),(0,i.Uk)(" 裁剪图片")])),_:1}),(0,i.Wm)(dn,{trigger:"click",value:p.value,"onUpdate:value":a[1]||(a[1]=e=>p.value=e),style:{width:"calc(100% / 6)"}},{content:(0,i.w5)((()=>[(0,i._)("div",py,[vy,(0,i._)("div",my,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(t),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"shape-clip-item",key:t,onClick:e=>f(t)},[(0,i._)("div",{class:"shape",style:(0,oe.j5)({clipPath:e.style})},null,4)],8,hy)))),128))]),((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(l,(e=>((0,i.wg)(),(0,i.iD)(i.HY,{key:e.label},[e.label?((0,i.wg)(),(0,i.iD)("div",fy,"按"+(0,oe.zw)(e.label)+":",1)):(0,i.kq)("",!0),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.children,(e=>((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},key:e.key,onClick:t=>f("rect",e.ratio)},{default:(0,i.w5)((()=>[(0,i.Uk)((0,oe.zw)(e.key),1)])),_:2},1032,["onClick"])))),128))])),_:2},1024)],64)))),64))])])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{last:"",class:"popover-btn",style:{width:"100%"}},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1})])),_:1},8,["value"])])),_:1}),(0,i.Wm)(Zc),(0,i.Wm)(uy),(0,i.Wm)(Zc),(0,i.Wm)(Kg),(0,i.Wm)(Zc),(0,i.Wm)(Cf),(0,i.Wm)(Zc),(0,i.Wm)(Pf),(0,i.Wm)(Zc),(0,i.Wm)(Pa,{onChange:a[2]||(a[2]=e=>g(e))},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{class:"full-width-btn"},{default:(0,i.w5)((()=>[(0,i.Wm)(r,{class:"btn-icon"}),(0,i.Uk)(" 替换图片")])),_:1})])),_:1}),(0,i.Wm)(tp,{class:"full-width-btn",onClick:a[3]||(a[3]=e=>y())},{default:(0,i.w5)((()=>[(0,i.Wm)(u,{class:"btn-icon"}),(0,i.Uk)(" 重置样式")])),_:1}),(0,i.Wm)(tp,{class:"full-width-btn",onClick:a[4]||(a[4]=e=>w())},{default:(0,i.w5)((()=>[(0,i.Wm)(c,{class:"btn-icon"}),(0,i.Uk)(" 设为背景")])),_:1})])}}});const yy=(0,Vl.Z)(gy,[["__scopeId","data-v-080b6de7"]]);var wy=yy,xy=()=>{const e=R(),{shapeFormatPainter:t,handleElement:l}=(0,o.Jk)(e),a=(a=!1)=>{const n=l.value;t.value?e.setShapeFormatPainter(null):e.setShapeFormatPainter({keep:a,fill:n.fill,gradient:n.gradient,outline:n.outline,opacity:n.opacity,shadow:n.shadow})};return{toggleShapeFormatPainter:a}};const ky=e=>((0,i.dD)("data-v-0674f2cf"),e=e(),(0,i.Cn)(),e),by={class:"shape-style-panel"},_y={class:"title"},Iy=ky((()=>(0,i._)("span",null,"点击替换形状",-1))),Sy={class:"shape-pool"},Cy={class:"shape-list"},Ly={class:"row"},Ty=ky((()=>(0,i._)("div",{style:{width:"10px"}},null,-1))),Ey={class:"row"},My=ky((()=>(0,i._)("div",{style:{width:"40%"}},"起点颜色:",-1))),Uy={class:"row"},Wy=ky((()=>(0,i._)("div",{style:{width:"40%"}},"终点颜色:",-1))),Dy={key:0,class:"row"},Hy=ky((()=>(0,i._)("div",{style:{width:"40%"}},"渐变角度:",-1))),Fy={class:"row"};var Ay=(0,i.aZ)({__name:"ShapeStylePanel",setup(e){const t=R(),l=$(),{handleElement:a,handleElementId:n,richTextAttrs:r,availableFonts:u,textFormatPainter:c,shapeFormatPainter:d}=(0,o.Jk)(t),p=a,v=(0,s.iH)("#000"),m=(0,s.iH)({type:"linear",rotate:0,color:["#fff","#fff"]}),h=(0,s.iH)("fill"),f=(0,s.iH)("middle");(0,i.YP)(a,(()=>{a.value&&"shape"===a.value.type&&(v.value=a.value.fill||"#fff",m.value=a.value.gradient||{type:"linear",rotate:0,color:[v.value,"#fff"]},h.value=a.value.gradient?"gradient":"fill",f.value=a.value?.text?.align||"middle")}),{deep:!0,immediate:!0});const{addHistorySnapshot:g}=da(),{toggleTextFormatPainter:y}=zm(),{toggleShapeFormatPainter:w}=xy(),x=e=>{l.updateElement({id:n.value,props:e}),g()},k=e=>{"fill"===e?(l.removeElementProps({id:n.value,propName:"gradient"}),g()):x({gradient:m.value})},b=e=>{if(!m.value)return;const t={...m.value,...e};x({gradient:t})},_=e=>{x({fill:e})},I=e=>{const{width:t,height:l}=a.value,n={viewBox:e.viewBox,path:e.path,special:e.special};if(e.pathFormula){n.pathFormula=e.pathFormula,n.viewBox=[t,l];const a=ra[e.pathFormula];"editable"in a?(n.path=a.formula(t,l,a.defaultValue),n.keypoint=a.defaultValue):n.path=a.formula(t,l)}else n.pathFormula=void 0,n.keypoint=void 0;x(n)},S=e=>{const t=a.value,l={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"},n=t.text||l;x({text:{...n,align:e}})},C=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],L=(e,t)=>{Oi.emit(Ai.RICH_TEXT_COMMAND,{action:{command:e,value:t}})};return(e,t)=>{const l=(0,i.up)("IconDown"),a=(0,i.up)("IconFontSize"),n=(0,i.up)("IconAddText"),o=(0,i.up)("IconText"),g=(0,i.up)("IconHighLight"),x=(0,i.up)("IconTextBold"),T=(0,i.up)("IconTextItalic"),E=(0,i.up)("IconTextUnderline"),U=(0,i.up)("IconStrikethrough"),W=(0,i.up)("IconFormat"),D=(0,i.up)("IconFormatBrush"),H=(0,i.up)("IconAlignTextLeft"),F=(0,i.up)("IconAlignTextCenter"),A=(0,i.up)("IconAlignTextRight"),$=(0,i.up)("IconAlignTextTopOne"),Z=(0,i.up)("IconAlignTextMiddleOne"),O=(0,i.up)("IconAlignTextBottomOne"),R=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",by,[(0,i._)("div",_y,[Iy,(0,i.Wm)(l)]),(0,i._)("div",Sy,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(ua),(e=>((0,i.wg)(),(0,i.iD)("div",{class:"category",key:e.type},[(0,i._)("div",Cy,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.children,((e,t)=>((0,i.wg)(),(0,i.iD)(i.HY,null,["任意多边形"!==e.title?((0,i.wg)(),(0,i.j4)(Hp,{class:"shape-item",key:t,shape:e,onClick:t=>I(e)},null,8,["shape","onClick"])):(0,i.kq)("",!0)],64)))),256))])])))),128))]),(0,i._)("div",Ly,[(0,i.Wm)(cp,{style:{flex:"1"},value:h.value,"onUpdate:value":t[0]||(t[0]=e=>k(e)),options:[{label:"纯色填充",value:"fill"},{label:"渐变填充",value:"gradient"}]},null,8,["value"]),Ty,"fill"===h.value?((0,i.wg)(),(0,i.j4)(dn,{key:0,trigger:"click",style:{flex:"1"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:v.value,"onUpdate:modelValue":t[1]||(t[1]=e=>_(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:v.value},null,8,["color"])])),_:1})):((0,i.wg)(),(0,i.j4)(cp,{key:1,style:{flex:"1"},value:m.value.type,"onUpdate:value":t[2]||(t[2]=e=>b({type:e})),options:[{label:"线性渐变",value:"linear"},{label:"径向渐变",value:"radial"}]},null,8,["value"]))]),"gradient"===h.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",Ey,[My,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:m.value.color[0],"onUpdate:modelValue":t[3]||(t[3]=e=>b({color:[e,m.value.color[1]]}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:m.value.color[0]},null,8,["color"])])),_:1})]),(0,i._)("div",Uy,[Wy,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:m.value.color[1],"onUpdate:modelValue":t[4]||(t[4]=e=>b({color:[m.value.color[0],e]}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:m.value.color[1]},null,8,["color"])])),_:1})]),"linear"===m.value.type?((0,i.wg)(),(0,i.iD)("div",Dy,[Hy,(0,i.Wm)(qm,{style:{width:"60%"},min:0,max:360,step:15,value:m.value.rotate,"onUpdate:value":t[5]||(t[5]=e=>b({rotate:e}))},null,8,["value"])])):(0,i.kq)("",!0)],64)):(0,i.kq)("",!0),(0,i.Wm)(Pg),(0,i.Wm)(Zc),(0,s.SU)(p).text?.content?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i.Wm)(ug,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(cp,{class:"font-select",style:{width:"60%"},value:(0,s.SU)(r).fontname,"onUpdate:value":t[6]||(t[6]=e=>L("fontname",e)),options:[...(0,s.SU)(u),...(0,s.SU)(M)]},{icon:(0,i.w5)((()=>[(0,i.Wm)(a)])),_:1},8,["value","options"]),(0,i.Wm)(cp,{style:{width:"40%"},value:(0,s.SU)(r).fontsize,"onUpdate:value":t[7]||(t[7]=e=>L("fontsize",e)),options:C.map((e=>({label:e,value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(n)])),_:1},8,["value","options"])])),_:1}),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(r).color,"onUpdate:modelValue":t[8]||(t[8]=e=>L("color",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{first:"",color:(0,s.SU)(r).color},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1},8,["color"])),[[R,"文字颜色"]])])),_:1}),(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(r).backcolor,"onUpdate:modelValue":t[9]||(t[9]=e=>L("backcolor",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{color:(0,s.SU)(r).backcolor},{default:(0,i.w5)((()=>[(0,i.Wm)(g)])),_:1},8,["color"])),[[R,"文字高亮"]])])),_:1}),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{class:"font-size-btn",style:{width:"20%"},onClick:t[10]||(t[10]=e=>L("fontsize-add"))},{default:(0,i.w5)((()=>[(0,i.Wm)(a),(0,i.Uk)("+")])),_:1})),[[R,"增大字号"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{last:"",class:"font-size-btn",style:{width:"20%"},onClick:t[11]||(t[11]=e=>L("fontsize-reduce"))},{default:(0,i.w5)((()=>[(0,i.Wm)(a),(0,i.Uk)("-")])),_:1})),[[R,"减小字号"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(r).bold,onClick:t[12]||(t[12]=e=>L("bold"))},{default:(0,i.w5)((()=>[(0,i.Wm)(x)])),_:1},8,["checked"])),[[R,"加粗"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(r).em,onClick:t[13]||(t[13]=e=>L("em"))},{default:(0,i.w5)((()=>[(0,i.Wm)(T)])),_:1},8,["checked"])),[[R,"斜体"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(r).underline,onClick:t[14]||(t[14]=e=>L("underline"))},{default:(0,i.w5)((()=>[(0,i.Wm)(E)])),_:1},8,["checked"])),[[R,"下划线"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(r).strikethrough,onClick:t[15]||(t[15]=e=>L("strikethrough"))},{default:(0,i.w5)((()=>[(0,i.Wm)(U)])),_:1},8,["checked"])),[[R,"删除线"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},onClick:t[16]||(t[16]=e=>L("clear"))},{default:(0,i.w5)((()=>[(0,i.Wm)(W)])),_:1})),[[R,"清除格式"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:!!(0,s.SU)(c),onClick:t[17]||(t[17]=e=>(0,s.SU)(y)()),onDblclick:t[18]||(t[18]=e=>(0,s.SU)(y)(!0))},{default:(0,i.w5)((()=>[(0,i.Wm)(D)])),_:1},8,["checked"])),[[R,"格式刷(双击连续使用)"]])])),_:1}),(0,i.Wm)(Zc),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:(0,s.SU)(r).align,"onUpdate:value":t[19]||(t[19]=e=>L("align",e))},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"left",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(H)])),_:1})),[[R,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"center",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(F)])),_:1})),[[R,"居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"right",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(A)])),_:1})),[[R,"右对齐"]])])),_:1},8,["value"]),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:f.value,"onUpdate:value":t[20]||(t[20]=e=>S(e))},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"top",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)($)])),_:1})),[[R,"顶对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"middle",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(Z)])),_:1})),[[R,"居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"bottom",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(O)])),_:1})),[[R,"底对齐"]])])),_:1},8,["value"]),(0,i.Wm)(Zc)],64)):(0,i.kq)("",!0),(0,i.Wm)(Cf),(0,i.Wm)(Zc),(0,i.Wm)(Pf),(0,i.Wm)(Zc),(0,i.Wm)(lh),(0,i.Wm)(Zc),(0,i._)("div",Fy,[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:!!(0,s.SU)(d),onClick:t[21]||(t[21]=e=>(0,s.SU)(w)()),onDblclick:t[22]||(t[22]=e=>(0,s.SU)(w)(!0))},{default:(0,i.w5)((()=>[(0,i.Wm)(D),(0,i.Uk)(" 形状格式刷")])),_:1},8,["checked"])),[[R,"双击连续使用"]])])])}}});const $y=(0,Vl.Z)(Ay,[["__scopeId","data-v-0674f2cf"]]);var Zy=$y;const Oy=e=>((0,i.dD)("data-v-ae80032c"),e=e(),(0,i.Cn)(),e),Ry={class:"line-style-panel"},zy={class:"row"},Py=Oy((()=>(0,i._)("div",{style:{width:"40%"}},"线条样式:",-1))),By={class:"row"},Ny=Oy((()=>(0,i._)("div",{style:{width:"40%"}},"线条颜色:",-1))),jy={class:"row"},Yy=Oy((()=>(0,i._)("div",{style:{width:"40%"}},"线条宽度:",-1))),Vy={class:"row"},Jy=Oy((()=>(0,i._)("div",{style:{width:"40%"}},"起点样式:",-1))),qy={class:"row"},Xy=Oy((()=>(0,i._)("div",{style:{width:"40%"}},"终点样式:",-1)));var Gy=(0,i.aZ)({__name:"LineStylePanel",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=l,{addHistorySnapshot:n}=da(),r=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),n())};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Ry,[(0,i._)("div",zy,[Py,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(a).style,"onUpdate:value":t[0]||(t[0]=e=>r({style:e})),options:[{label:"实线",value:"solid"},{label:"虚线",value:"dashed"}]},null,8,["value"])]),(0,i._)("div",By,[Ny,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(a).color,"onUpdate:modelValue":t[1]||(t[1]=e=>r({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(a).color},null,8,["color"])])),_:1})]),(0,i._)("div",jy,[Yy,(0,i.Wm)(mv,{value:(0,s.SU)(a).width,"onUpdate:value":t[2]||(t[2]=e=>r({width:e})),style:{width:"60%"}},null,8,["value"])]),(0,i._)("div",Vy,[Jy,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(a).points[0],"onUpdate:value":t[3]||(t[3]=e=>r({points:[e,(0,s.SU)(a).points[1]]})),options:[{label:"无",value:""},{label:"箭头",value:"arrow"},{label:"圆点",value:"dot"}]},null,8,["value"])]),(0,i._)("div",qy,[Xy,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(a).points[1],"onUpdate:value":t[4]||(t[4]=e=>r({points:[(0,s.SU)(a).points[0],e]})),options:[{label:"无",value:""},{label:"箭头",value:"arrow"},{label:"圆点",value:"dot"}]},null,8,["value"])]),(0,i.Wm)(Zc),(0,i.Wm)(Pf)]))}});const Ky=(0,Vl.Z)(Gy,[["__scopeId","data-v-ae80032c"]]);var Qy=Ky;const ew={class:"chart-data-editor"},tw={class:"editor-content"},lw={class:"range-box"},aw=["id","onFocus","onPaste"],nw={class:"btns"},ow={class:"left"},iw={class:"right"},sw=100,rw=32;var uw=(0,i.aZ)({__name:"ChartDataEditor",props:{data:{}},emits:["save","close"],setup(e,{emit:t}){const l=e,a=t,o=(0,s.iH)([0,0]),r=(0,s.iH)({width:0,height:0}),u=(0,s.iH)(null),c=(0,i.Fl)((()=>{const e=o.value[0]*sw,t=o.value[1]*rw;return[{type:"t",style:{width:e+"px"}},{type:"b",style:{top:t+"px",width:e+"px"}},{type:"l",style:{height:t+"px"}},{type:"r",style:{left:e+"px",height:t+"px"}}]})),d=(0,i.Fl)((()=>{const e=o.value[0]*sw,t=o.value[1]*rw;return{left:e+"px",top:t+"px"}})),p=()=>{const e=[],{labels:t,legends:a,series:n}=l.data,i=t.length,s=n.length;e.push(["",...a]);for(let l=0;l{if(!u.value)return;const[e,t]=u.value,l=document.querySelector(`#cell-${e+1}-${t}`);l&&l.focus()},m=e=>{const t=e.key.toUpperCase();t===ne.ENTER&&v()};(0,i.bv)((()=>{document.addEventListener("keydown",m)})),(0,i.Ah)((()=>{document.removeEventListener("keydown",m)}));const h=()=>{const[e,t]=o.value,l=[],n=[],i=[];for(let a=1;a{for(let e=1;e<31;e++)for(let t=1;t<7;t++){const l=document.querySelector(`#cell-${e}-${t}`);l&&(l.value="")}},g=(e,t,l)=>{if(e.preventDefault(),!e.clipboardData)return;const a=e.clipboardData.items[0];a&&"string"===a.kind&&"text/plain"===a.type&&a.getAsString((e=>{const a=fe(e);if("object"===typeof a)return;const n=ge(e);if(n){const e=t+n.length,a=l+n[0].length;for(let o=t;oa("close"),w=e=>{let t=!0;const l=e.pageX,a=e.pageY,n=o.value[0]*sw,i=o.value[1]*rw;document.onmousemove=e=>{if(!t)return;const o=e.pageX,s=e.pageY,u=o-l,c=s-a,d=n+u,p=i+c;r.value={width:d,height:p}},document.onmouseup=e=>{t=!1,document.onmousemove=null,document.onmouseup=null;const n=e.pageX,i=e.pageY;if(l===n&&a===i)return;let s=r.value.width,u=r.value.height;s%sw>.5*sw&&(s+=sw-s%sw),u%rw>.5*rw&&(u+=rw-u%rw);let c=Math.round(u/rw),d=Math.round(s/sw);c<3&&(c=3),d<2&&(d=2),o.value=[d,c],r.value={width:0,height:0}}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",ew,[(0,i._)("div",tw,[(0,i._)("div",lw,[(0,i._)("div",{class:"temp-range",style:(0,oe.j5)({width:r.value.width+"px",height:r.value.height+"px"})},null,4),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(c.value,(e=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["range-line",e.type]),key:e.type,style:(0,oe.j5)(e.style)},null,6)))),128)),(0,i._)("div",{class:"resizable",style:(0,oe.j5)(d.value),onMousedown:t[0]||(t[0]=(0,n.iM)((e=>w(e)),["stop"]))},null,36)]),(0,i._)("table",null,[(0,i._)("tbody",null,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(31,(e=>(0,i._)("tr",{key:e},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(7,(t=>(0,i._)("td",{key:t,class:(0,oe.C_)({head:1===t&&e<=o.value[1]||1===e&&t<=o.value[0]})},[(0,i._)("input",{class:(0,oe.C_)(["item",{selected:e<=o.value[1]&&t<=o.value[0]}]),id:`cell-${e-1}-${t-1}`,autocomplete:"off",onFocus:l=>u.value=[e-1,t-1],onPaste:l=>g(l,e-1,t-1)},null,42,aw)],2))),64))]))),64))])])]),(0,i._)("div",nw,[(0,i._)("div",ow,[(0,i.Wm)(tp,{class:"btn",onClick:t[1]||(t[1]=e=>f())},{default:(0,i.w5)((()=>[(0,i.Uk)("清空")])),_:1})]),(0,i._)("div",iw,[(0,i.Wm)(tp,{class:"btn",onClick:t[2]||(t[2]=e=>y())},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{type:"primary",class:"btn",onClick:t[3]||(t[3]=e=>h()),style:{"margin-left":"10px"}},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])])]))}});const cw=(0,Vl.Z)(uw,[["__scopeId","data-v-f7b59928"]]);var dw=cw;const pw=e=>((0,i.dD)("data-v-26bf4835"),e=e(),(0,i.Cn)(),e),vw=pw((()=>(0,i._)("span",{class:"checkbox-input"},null,-1))),mw=pw((()=>(0,i._)("input",{class:"checkbox-original",type:"checkbox"},null,-1))),hw={class:"checkbox-label"};var fw=(0,i.aZ)({__name:"Checkbox",props:{value:{type:Boolean},disabled:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e,a=t,n=e=>{l.disabled||a("update:value",e.target.checked)};return(e,t)=>((0,i.wg)(),(0,i.iD)("label",{class:(0,oe.C_)(["checkbox",{checked:e.value,disabled:e.disabled}]),onChange:t[0]||(t[0]=e=>n(e))},[vw,mw,(0,i._)("span",hw,[(0,i.WI)(e.$slots,"default")])],34))}});const gw=(0,Vl.Z)(fw,[["__scopeId","data-v-26bf4835"]]);var yw=gw;const ww=e=>((0,i.dD)("data-v-45827db6"),e=e(),(0,i.Cn)(),e),xw={class:"chart-style-panel"},kw={class:"row"},bw={class:"row"},_w={key:1,class:"row"},Iw={key:2,class:"row"},Sw={class:"row"},Cw=ww((()=>(0,i._)("div",{style:{width:"40%"}},"图例:",-1))),Lw={class:"row"},Tw=ww((()=>(0,i._)("div",{style:{width:"40%"}},"背景填充:",-1))),Ew={class:"row"},Mw=ww((()=>(0,i._)("div",{style:{width:"40%"}},"网格颜色:",-1))),Uw={style:{width:"40%"}},Ww={class:"color-btn-wrap",style:{width:"100%"}},Dw=["onClick"],Hw={class:"preset-themes"},Fw=["onClick","onMouseenter"];var Aw=(0,i.aZ)({__name:"index",setup(e){const t=[["#d87c7c","#919e8b","#d7ab82","#6e7074","#61a0a8","#efa18d"],["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78"],["#516b91","#59c4e6","#edafda","#93b7e3","#a5e7f0","#cbb0e3"],["#893448","#d95850","#eb8146","#ffb248","#f2d643","#ebdba4"],["#4ea397","#22c3aa","#7bd9a5","#d0648a","#f58db2","#f2b3c9"],["#3fb1e3","#6be6c1","#626c91","#a0a7e6","#c4ebad","#96dee8"],["#fc97af","#87f7cf","#f7f494","#72ccff","#f7c5a0","#d4a4eb"],["#c1232b","#27727b","#fcce10","#e87c25","#b5c334","#fe8463"],["#2ec7c9","#b6a2de","#5ab1ef","#ffb980","#d87a80","#8d98b3"],["#e01f54","#001852","#f5e8c8","#b8d2c7","#c6b38e","#a4d8c2"],["#c12e34","#e6b600","#0098d9","#2b821d","#005eaa","#339ca8"],["#8a7ca8","#e098c7","#8fd3e8","#71669e","#cc70af","#7cb4cc"]],l=R(),a=$(),{handleElement:r,handleElementId:u}=(0,o.Jk)(l),{theme:c}=(0,o.Jk)(a),d=r,p=(0,s.iH)(!1),v=(0,s.iH)(!1),m=(0,s.iH)([-1,-1]),{addHistorySnapshot:h}=da(),f=(0,s.iH)("#000"),g=(0,s.iH)([]),y=(0,s.iH)(""),w=(0,s.iH)(""),x=(0,s.iH)(!0),k=(0,s.iH)(!0),b=(0,s.iH)(!1),_=(0,s.iH)(!1),I=(0,s.iH)(!1),S=(0,s.iH)(!1);(0,i.YP)(r,(()=>{if(r.value&&"chart"===r.value.type){if(f.value=r.value.fill||"#fff",r.value.options){const{lineSmooth:e,showLine:t,showArea:l,horizontalBars:a,donut:n,stackBars:o}=r.value.options;x.value=!!e,k.value=!!t,b.value=!!l,_.value=!!a,I.value=!!n,S.value=!!o}g.value=r.value.themeColor,y.value=r.value.gridColor||"#333",w.value=r.value.legend||""}}),{deep:!0,immediate:!0});const C=e=>{a.updateElement({id:u.value,props:e}),h()},L=e=>{p.value=!1,C({data:e})},T=e=>{C({fill:e})},E=e=>{const t=r.value,l={...t.options,...e};C({options:l})},M=(e,t)=>{const l={themeColor:g.value.map(((l,a)=>a===t?e:l))};C(l)},U=()=>{const e={themeColor:[...g.value,c.value.themeColor]};C(e)},W=(e,t)=>{const l=e.slice(0,t+1);C({themeColor:l}),v.value=!1},D=e=>{const t={themeColor:g.value.filter(((t,l)=>l!==e))};C(t)},H=e=>{C({gridColor:e})},F=e=>{C({legend:e})},A=()=>p.value=!0;return Oi.on(Ai.OPEN_CHART_DATA_EDITOR,A),(0,i.Ah)((()=>{Oi.off(Ai.OPEN_CHART_DATA_EDITOR,A)})),(e,l)=>{const a=(0,i.up)("IconEdit"),o=(0,i.up)("IconCloseSmall"),r=(0,i.up)("IconPlus"),u=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",xw,[(0,i.Wm)(tp,{class:"full-width-btn",onClick:l[0]||(l[0]=e=>p.value=!0)},{default:(0,i.w5)((()=>[(0,i.Wm)(a,{class:"btn-icon"}),(0,i.Uk)(" 编辑图表数据 ")])),_:1}),(0,i.Wm)(Zc),"line"===(0,s.SU)(d).chartType?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",kw,[(0,i.Wm)(yw,{"onUpdate:value":l[1]||(l[1]=e=>E({showArea:e})),value:b.value,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("面积图样式")])),_:1},8,["value"]),(0,i.Wm)(yw,{"onUpdate:value":l[2]||(l[2]=e=>E({showLine:e})),value:!k.value,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("散点图样式")])),_:1},8,["value"])]),(0,i._)("div",bw,[(0,i.Wm)(yw,{"onUpdate:value":l[3]||(l[3]=e=>E({lineSmooth:e})),value:x.value},{default:(0,i.w5)((()=>[(0,i.Uk)("使用平滑曲线")])),_:1},8,["value"])])],64)):(0,i.kq)("",!0),"bar"===(0,s.SU)(d).chartType?((0,i.wg)(),(0,i.iD)("div",_w,[(0,i.Wm)(yw,{"onUpdate:value":l[4]||(l[4]=e=>E({horizontalBars:e})),value:_.value,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("条形图样式")])),_:1},8,["value"]),(0,i.Wm)(yw,{"onUpdate:value":l[5]||(l[5]=e=>E({stackBars:e})),value:S.value,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("堆叠样式")])),_:1},8,["value"])])):(0,i.kq)("",!0),"pie"===(0,s.SU)(d).chartType?((0,i.wg)(),(0,i.iD)("div",Iw,[(0,i.Wm)(yw,{"onUpdate:value":l[6]||(l[6]=e=>E({donut:e})),value:I.value},{default:(0,i.w5)((()=>[(0,i.Uk)("环形图样式")])),_:1},8,["value"])])):(0,i.kq)("",!0),(0,i.Wm)(Zc),(0,i._)("div",Sw,[Cw,(0,i.Wm)(cp,{style:{width:"60%"},value:w.value,"onUpdate:value":l[7]||(l[7]=e=>F(e)),options:[{label:"不显示",value:""},{label:"显示在上方",value:"top"},{label:"显示在下方",value:"bottom"}]},null,8,["value"])]),(0,i.Wm)(Zc),(0,i._)("div",Lw,[Tw,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:f.value,"onUpdate:modelValue":l[8]||(l[8]=e=>T(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:f.value},null,8,["color"])])),_:1})]),(0,i._)("div",Ew,[Mw,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:y.value,"onUpdate:modelValue":l[9]||(l[9]=e=>H(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:y.value},null,8,["color"])])),_:1})]),(0,i.Wm)(Zc),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(g.value,((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"row",key:t},[(0,i._)("div",Uw,(0,oe.zw)(0===t?"主题配色:":""),1),(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:e,"onUpdate:modelValue":e=>M(e,t)},null,8,["modelValue","onUpdate:modelValue"])])),default:(0,i.w5)((()=>[(0,i._)("div",Ww,[(0,i.Wm)(ih,{color:e},null,8,["color"]),0!==t?(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{key:0,class:"delete-color-btn",onClick:(0,n.iM)((e=>D(t)),["stop"])},[(0,i.Wm)(o)],8,Dw)),[[u,"删除"]]):(0,i.kq)("",!0)])])),_:2},1024)])))),128)),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(dn,{trigger:"click",open:v.value,"onUpdate:open":l[11]||(l[11]=e=>v.value=e),style:{width:"40%"}},{content:(0,i.w5)((()=>[(0,i._)("div",Hw,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(t,((e,t)=>(0,i._)("div",{class:"preset-theme",key:t},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e,((a,n)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["preset-theme-color",{select:m.value[0]===t&&n<=m.value[1]}]),key:a,style:(0,oe.j5)({backgroundColor:a}),onClick:t=>W(e,n),onMouseenter:e=>m.value=[t,n],onMouseleave:l[10]||(l[10]=e=>m.value=[-1,-1])},null,46,Fw)))),128))]))),64))])])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{first:"",style:{width:"100%"}},{default:(0,i.w5)((()=>[(0,i.Uk)("推荐主题")])),_:1})])),_:1},8,["open"]),(0,i.Wm)(tp,{last:"",disabled:g.value.length>=10,style:{width:"60%"},onClick:l[12]||(l[12]=e=>U())},{default:(0,i.w5)((()=>[(0,i.Wm)(r,{class:"btn-icon"}),(0,i.Uk)(" 添加主题色 ")])),_:1},8,["disabled"])])),_:1}),(0,i.Wm)(Zc),(0,i.Wm)(Cf),(0,i.Wm)(kp,{visible:p.value,"onUpdate:visible":l[15]||(l[15]=e=>p.value=e),width:640},{default:(0,i.w5)((()=>[(0,i.Wm)(dw,{data:(0,s.SU)(d).data,onClose:l[13]||(l[13]=e=>p.value=!1),onSave:l[14]||(l[14]=e=>L(e))},null,8,["data"])])),_:1},8,["visible"])])}}});const $w=(0,Vl.Z)(Aw,[["__scopeId","data-v-45827db6"]]);var Zw=$w;const Ow=e=>((0,i.dD)("data-v-e5523cbc"),e=e(),(0,i.Cn)(),e),Rw={class:"table-style-panel"},zw={class:"row"},Pw=Ow((()=>(0,i._)("div",{style:{width:"40%"}},"行数:",-1))),Bw={class:"set-count",style:{width:"60%"}},Nw={class:"count-text"},jw={class:"row"},Yw=Ow((()=>(0,i._)("div",{style:{width:"40%"}},"列数:",-1))),Vw={class:"set-count",style:{width:"60%"}},Jw={class:"count-text"},qw={class:"row theme-switch"},Xw=Ow((()=>(0,i._)("div",{style:{width:"40%"}},"启用主题表格:",-1))),Gw={class:"switch-wrapper",style:{width:"60%"}},Kw={class:"row"},Qw={class:"row"},ex={class:"row"},tx=Ow((()=>(0,i._)("div",{style:{width:"40%"}},"主题颜色:",-1)));var lx=(0,i.aZ)({__name:"TableStylePanel",setup(e){const t=$(),{handleElement:l,handleElementId:a,selectedTableCells:n,availableFonts:u}=(0,o.Jk)(R()),c=(0,i.Fl)((()=>t.theme.themeColor)),d=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],p=(0,s.iH)({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"",fontsize:"12px",fontname:"微软雅黑",align:"left"}),v=(0,s.iH)(),m=(0,s.iH)(!1),h=(0,s.iH)(0),f=(0,s.iH)(0),g=(0,s.iH)(0),y=(0,s.iH)(0);(0,i.YP)(l,(()=>{l.value&&"table"===l.value.type&&(v.value=l.value.theme,m.value=!!v.value,h.value=l.value.data.length,f.value=l.value.data[0].length,g.value=l.value.data.length,y.value=l.value.data[0].length)}),{deep:!0,immediate:!0});const{addHistorySnapshot:w}=da(),x=()=>{if(!l.value||"table"!==l.value.type)return;let e=0,t=0;if(n.value.length){const l=n.value[0];e=+l.split("_")[0],t=+l.split("_")[1]}const a=l.value.data[e][t].style;p.value=a?{bold:!!a.bold,em:!!a.em,underline:!!a.underline,strikethrough:!!a.strikethrough,color:a.color||"#000",backcolor:a.backcolor||"",fontsize:a.fontsize||"12px",fontname:a.fontname||"微软雅黑",align:a.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"",fontsize:"12px",fontname:"微软雅黑",align:"left"}};(0,i.bv)((()=>{n.value.length&&x()})),(0,i.YP)(n,x);const k=e=>{t.updateElement({id:a.value,props:e}),w()},b=e=>{const t=l.value,a=JSON.parse(JSON.stringify(t.data));for(let l=0;l{if(!v.value)return;const t={...v.value,...e};k({theme:t})},I=e=>{if(e){const e={theme:{color:c.value,rowHeader:!0,rowFooter:!1,colHeader:!1,colFooter:!1}};k(e)}else t.removeElementProps({id:a.value,propName:"theme"}),w()},S=e=>{const t=l.value,a=t.data.length;if(e>a){const l=new Array(f.value).fill({id:(0,r.x0)(10),colspan:1,rowspan:1,text:""}),n=new Array(e-a).fill(l),o=JSON.parse(JSON.stringify(t.data));o.push(...n),k({data:o})}else{const l=t.data.slice(0,e);k({data:l})}},C=e=>{const t=l.value,a=t.data[0].length;let n=t.data,o=t.colWidths.map((e=>e*t.width));if(e>a){n=n.map((t=>{const l=new Array(e-a).fill({id:(0,r.x0)(10),colspan:1,rowspan:1,text:""});return t.push(...l),t}));const t=new Array(e-a).fill(100);o.push(...t)}else n=n.map((t=>t.slice(0,e))),o=o.slice(0,e);const i=o.reduce(((e,t)=>e+t)),s=o.map((e=>e/i)),u={width:i,data:n,colWidths:s};k(u)};return(e,t)=>{const l=(0,i.up)("IconFontSize"),a=(0,i.up)("IconAddText"),n=(0,i.up)("IconText"),o=(0,i.up)("IconFill"),r=(0,i.up)("IconTextBold"),c=(0,i.up)("IconTextItalic"),g=(0,i.up)("IconTextUnderline"),y=(0,i.up)("IconStrikethrough"),w=(0,i.up)("IconAlignTextLeft"),x=(0,i.up)("IconAlignTextCenter"),k=(0,i.up)("IconAlignTextRight"),L=(0,i.up)("IconMinus"),T=(0,i.up)("IconPlus"),E=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",Rw,[(0,i.Wm)(ug,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(cp,{style:{width:"50%"},value:p.value.fontname,"onUpdate:value":t[0]||(t[0]=e=>b({fontname:e})),options:[...(0,s.SU)(u),...(0,s.SU)(M)]},{icon:(0,i.w5)((()=>[(0,i.Wm)(l)])),_:1},8,["value","options"]),(0,i.Wm)(cp,{style:{width:"50%"},value:p.value.fontsize,"onUpdate:value":t[1]||(t[1]=e=>b({fontsize:e})),options:d.map((e=>({label:e,value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(a)])),_:1},8,["value","options"])])),_:1}),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(dn,{trigger:"click",style:{width:"50%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:p.value.color,"onUpdate:modelValue":t[2]||(t[2]=e=>b({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{first:"",color:p.value.color},{default:(0,i.w5)((()=>[(0,i.Wm)(n)])),_:1},8,["color"])),[[E,"文字颜色"]])])),_:1}),(0,i.Wm)(dn,{trigger:"click",style:{width:"50%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:p.value.backcolor,"onUpdate:modelValue":t[3]||(t[3]=e=>b({backcolor:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{last:"",color:p.value.backcolor},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1},8,["color"])),[[E,"单元格填充"]])])),_:1})])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:p.value.bold,onClick:t[4]||(t[4]=e=>b({bold:!p.value.bold}))},{default:(0,i.w5)((()=>[(0,i.Wm)(r)])),_:1},8,["checked"])),[[E,"加粗"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:p.value.em,onClick:t[5]||(t[5]=e=>b({em:!p.value.em}))},{default:(0,i.w5)((()=>[(0,i.Wm)(c)])),_:1},8,["checked"])),[[E,"斜体"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:p.value.underline,onClick:t[6]||(t[6]=e=>b({underline:!p.value.underline}))},{default:(0,i.w5)((()=>[(0,i.Wm)(g)])),_:1},8,["checked"])),[[E,"下划线"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:p.value.strikethrough,onClick:t[7]||(t[7]=e=>b({strikethrough:!p.value.strikethrough}))},{default:(0,i.w5)((()=>[(0,i.Wm)(y)])),_:1},8,["checked"])),[[E,"删除线"]])])),_:1}),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:p.value.align,"onUpdate:value":t[8]||(t[8]=e=>b({align:e}))},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"left",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(w)])),_:1})),[[E,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"center",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(x)])),_:1})),[[E,"居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"right",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(k)])),_:1})),[[E,"右对齐"]])])),_:1},8,["value"]),(0,i.Wm)(Zc),(0,i.Wm)(Cf,{fixed:!0}),(0,i.Wm)(Zc),(0,i._)("div",zw,[Pw,(0,i._)("div",Bw,[(0,i.Wm)(tp,{class:"btn",disabled:h.value<=1,onClick:t[9]||(t[9]=e=>S(h.value-1))},{default:(0,i.w5)((()=>[(0,i.Wm)(L)])),_:1},8,["disabled"]),(0,i._)("div",Nw,(0,oe.zw)(h.value),1),(0,i.Wm)(tp,{class:"btn",disabled:h.value>=30,onClick:t[10]||(t[10]=e=>S(h.value+1))},{default:(0,i.w5)((()=>[(0,i.Wm)(T)])),_:1},8,["disabled"])])]),(0,i._)("div",jw,[Yw,(0,i._)("div",Vw,[(0,i.Wm)(tp,{class:"btn",disabled:f.value<=1,onClick:t[11]||(t[11]=e=>C(f.value-1))},{default:(0,i.w5)((()=>[(0,i.Wm)(L)])),_:1},8,["disabled"]),(0,i._)("div",Jw,(0,oe.zw)(f.value),1),(0,i.Wm)(tp,{class:"btn",disabled:f.value>=30,onClick:t[12]||(t[12]=e=>C(f.value+1))},{default:(0,i.w5)((()=>[(0,i.Wm)(T)])),_:1},8,["disabled"])])]),(0,i.Wm)(Zc),(0,i._)("div",qw,[Xw,(0,i._)("div",Gw,[(0,i.Wm)(pf,{value:m.value,"onUpdate:value":t[13]||(t[13]=e=>I(e))},null,8,["value"])])]),v.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",Kw,[(0,i.Wm)(yw,{"onUpdate:value":t[14]||(t[14]=e=>_({rowHeader:e})),value:v.value.rowHeader,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("标题行")])),_:1},8,["value"]),(0,i.Wm)(yw,{"onUpdate:value":t[15]||(t[15]=e=>_({rowFooter:e})),value:v.value.rowFooter,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("汇总行")])),_:1},8,["value"])]),(0,i._)("div",Qw,[(0,i.Wm)(yw,{"onUpdate:value":t[16]||(t[16]=e=>_({colHeader:e})),value:v.value.colHeader,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("第一列")])),_:1},8,["value"]),(0,i.Wm)(yw,{"onUpdate:value":t[17]||(t[17]=e=>_({colFooter:e})),value:v.value.colFooter,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("最后一列")])),_:1},8,["value"])]),(0,i._)("div",ex,[tx,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:v.value.color,"onUpdate:modelValue":t[18]||(t[18]=e=>_({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:v.value.color},null,8,["color"])])),_:1})])],64)):(0,i.kq)("",!0)])}}});const ax=(0,Vl.Z)(lx,[["__scopeId","data-v-e5523cbc"]]);var nx=ax;const ox=e=>((0,i.dD)("data-v-3a5ca316"),e=e(),(0,i.Cn)(),e),ix={class:"latex-style-panel"},sx={class:"row"},rx={class:"row"},ux=ox((()=>(0,i._)("div",{style:{width:"40%"}},"颜色:",-1))),cx={class:"row"},dx=ox((()=>(0,i._)("div",{style:{width:"40%"}},"粗细:",-1)));var px=(0,i.aZ)({__name:"LatexStylePanel",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=l,n=(0,s.iH)(!1),{addHistorySnapshot:r}=da(),u=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),r())},c=e=>{u({path:e.path,latex:e.latex,width:e.w,height:e.h,viewBox:[e.w,e.h]})},d=()=>n.value=!0;return Oi.on(Ai.OPEN_LATEX_EDITOR,d),(0,i.Ah)((()=>{Oi.off(Ai.OPEN_LATEX_EDITOR,d)})),(e,t)=>((0,i.wg)(),(0,i.iD)("div",ix,[(0,i._)("div",sx,[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[0]||(t[0]=e=>n.value=!0)},{default:(0,i.w5)((()=>[(0,i.Uk)("编辑 LaTeX")])),_:1})]),(0,i.Wm)(Zc),(0,i._)("div",rx,[ux,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(a).color,"onUpdate:modelValue":t[1]||(t[1]=e=>u({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(a).color},null,8,["color"])])),_:1})]),(0,i._)("div",cx,[dx,(0,i.Wm)(mv,{min:1,max:3,value:(0,s.SU)(a).strokeWidth,"onUpdate:value":t[2]||(t[2]=e=>u({strokeWidth:e})),style:{width:"60%"}},null,8,["value"])]),(0,i.Wm)(kp,{visible:n.value,"onUpdate:visible":t[5]||(t[5]=e=>n.value=e),width:880},{default:(0,i.w5)((()=>[(0,i.Wm)(fm,{value:(0,s.SU)(a).latex,onClose:t[3]||(t[3]=e=>n.value=!1),onUpdate:t[4]||(t[4]=e=>{c(e),n.value=!1})},null,8,["value"])])),_:1},8,["visible"])]))}});const vx=(0,Vl.Z)(px,[["__scopeId","data-v-3a5ca316"]]);var mx=vx;const hx=e=>((0,i.dD)("data-v-b3551c8c"),e=e(),(0,i.Cn)(),e),fx={class:"video-style-panel"},gx=hx((()=>(0,i._)("div",{class:"title"},"视频预览封面",-1))),yx={class:"background-image-wrapper"},wx={class:"background-image"},xx={class:"row"},kx={class:"row switch-row"},bx=hx((()=>(0,i._)("div",{style:{width:"40%"}},"自动播放:",-1))),_x={class:"switch-wrapper",style:{width:"60%"}};var Ix=(0,i.aZ)({__name:"VideoStylePanel",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=l,{addHistorySnapshot:n}=da(),r=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),n())},u=e=>{const t=e[0];t&&na(t).then((e=>r({poster:e})))};return(e,t)=>{const l=(0,i.up)("IconPlus");return(0,i.wg)(),(0,i.iD)("div",fx,[gx,(0,i._)("div",yx,[(0,i.Wm)(Pa,{onChange:t[0]||(t[0]=e=>u(e))},{default:(0,i.w5)((()=>[(0,i._)("div",wx,[(0,i._)("div",{class:"content",style:(0,oe.j5)({backgroundImage:(0,s.SU)(a).poster?`url(${(0,s.SU)(a).poster})`:""})},[(0,i.Wm)(l)],4)])])),_:1})]),(0,i._)("div",xx,[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[1]||(t[1]=e=>r({poster:""}))},{default:(0,i.w5)((()=>[(0,i.Uk)("重置封面")])),_:1})]),(0,i._)("div",kx,[bx,(0,i._)("div",_x,[(0,i.Wm)(pf,{value:(0,s.SU)(a).autoplay,"onUpdate:value":t[2]||(t[2]=e=>r({autoplay:e}))},null,8,["value"])])])])}}});const Sx=(0,Vl.Z)(Ix,[["__scopeId","data-v-b3551c8c"]]);var Cx=Sx;const Lx=e=>((0,i.dD)("data-v-32517bcf"),e=e(),(0,i.Cn)(),e),Tx={class:"audio-style-panel"},Ex={class:"row"},Mx=Lx((()=>(0,i._)("div",{style:{width:"40%"}},"图标颜色:",-1))),Ux={class:"row switch-row"},Wx=Lx((()=>(0,i._)("div",{style:{width:"40%"}},"自动播放:",-1))),Dx={class:"switch-wrapper",style:{width:"60%"}},Hx={class:"row switch-row"},Fx=Lx((()=>(0,i._)("div",{style:{width:"40%"}},"循环播放:",-1))),Ax={class:"switch-wrapper",style:{width:"60%"}};var $x=(0,i.aZ)({__name:"AudioStylePanel",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=l,{addHistorySnapshot:n}=da(),r=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),n())};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Tx,[(0,i._)("div",Ex,[Mx,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(a).color,"onUpdate:modelValue":t[0]||(t[0]=e=>r({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(a).color},null,8,["color"])])),_:1})]),(0,i._)("div",Ux,[Wx,(0,i._)("div",Dx,[(0,i.Wm)(pf,{value:(0,s.SU)(a).autoplay,"onUpdate:value":t[1]||(t[1]=e=>r({autoplay:e}))},null,8,["value"])])]),(0,i._)("div",Hx,[Fx,(0,i._)("div",Ax,[(0,i.Wm)(pf,{value:(0,s.SU)(a).loop,"onUpdate:value":t[2]||(t[2]=e=>r({loop:e}))},null,8,["value"])])])]))}});const Zx=(0,Vl.Z)($x,[["__scopeId","data-v-32517bcf"]]);var Ox=Zx;const Rx=e=>((0,i.dD)("data-v-80f1bc4e"),e=e(),(0,i.Cn)(),e),zx={class:"multi-style-panel"},Px={class:"row"},Bx=Rx((()=>(0,i._)("div",{style:{width:"40%"}},"填充颜色:",-1))),Nx={class:"row"},jx=Rx((()=>(0,i._)("div",{style:{width:"40%"}},"边框样式:",-1))),Yx={class:"row"},Vx=Rx((()=>(0,i._)("div",{style:{width:"40%"}},"边框颜色:",-1))),Jx={class:"row"},qx=Rx((()=>(0,i._)("div",{style:{width:"40%"}},"边框粗细:",-1)));var Xx=(0,i.aZ)({__name:"MultiStylePanel",setup(e){const t=$(),{richTextAttrs:l,availableFonts:a,activeElementList:n}=(0,o.Jk)(R()),{addHistorySnapshot:r}=da(),u=(e,l)=>{t.updateElement({id:e,props:l}),r()},c=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],d=(0,s.iH)("#fff"),p=(0,s.iH)({width:0,color:"#fff",style:"solid"}),v=e=>{for(const t of n.value){if("text"!==t.type&&"shape"!==t.type&&"chart"!==t.type||u(t.id,{fill:e}),"table"===t.type){const l=JSON.parse(JSON.stringify(t.data));for(let t=0;t{for(const t of n.value){if("text"===t.type||"image"===t.type||"shape"===t.type||"table"===t.type||"chart"===t.type){const l=t.outline||{width:2,color:"#000",style:"solid"},a={outline:{...l,...e}};u(t.id,a)}"line"===t.type&&u(t.id,e)}p.value={...p.value,...e}},h=(e,t)=>{for(const l of n.value){if(("text"===l.type||"shape"===l.type&&l.text?.content)&&Oi.emit(Ai.RICH_TEXT_COMMAND,{target:l.id,action:{command:e,value:t}}),"table"===l.type){const a=JSON.parse(JSON.stringify(l.data));for(let l=0;l{const n=(0,i.up)("IconFontSize"),o=(0,i.up)("IconAddText"),r=(0,i.up)("IconText"),u=(0,i.up)("IconHighLight"),f=(0,i.up)("IconAlignTextLeft"),g=(0,i.up)("IconAlignTextCenter"),y=(0,i.up)("IconAlignTextRight"),w=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",zx,[(0,i._)("div",Px,[Bx,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:d.value,"onUpdate:modelValue":t[0]||(t[0]=e=>v(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:d.value},null,8,["color"])])),_:1})]),(0,i.Wm)(Zc),(0,i._)("div",Nx,[jx,(0,i.Wm)(cp,{style:{width:"60%"},value:p.value.style||"","onUpdate:value":t[1]||(t[1]=e=>m({style:e})),options:[{label:"实线边框",value:"solid"},{label:"虚线边框",value:"dashed"}]},null,8,["value"])]),(0,i._)("div",Yx,[Vx,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:p.value.color,"onUpdate:modelValue":t[2]||(t[2]=e=>m({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:p.value.color||"#000"},null,8,["color"])])),_:1})]),(0,i._)("div",Jx,[qx,(0,i.Wm)(mv,{value:p.value.width||0,"onUpdate:value":t[3]||(t[3]=e=>m({width:e})),style:{width:"60%"}},null,8,["value"])]),(0,i.Wm)(Zc),(0,i.Wm)(ug,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(l).fontname,"onUpdate:value":t[4]||(t[4]=e=>h("fontname",e)),options:[...(0,s.SU)(a),...(0,s.SU)(M)]},{icon:(0,i.w5)((()=>[(0,i.Wm)(n)])),_:1},8,["value","options"]),(0,i.Wm)(cp,{style:{width:"40%"},value:(0,s.SU)(l).fontsize,"onUpdate:value":t[5]||(t[5]=e=>h("fontsize",e)),options:c.map((e=>({label:e,value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1},8,["value","options"])])),_:1}),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(l).color,"onUpdate:modelValue":t[6]||(t[6]=e=>h("color",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{first:"",color:(0,s.SU)(l).color},{default:(0,i.w5)((()=>[(0,i.Wm)(r)])),_:1},8,["color"])),[[w,"文字颜色"]])])),_:1}),(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(l).backcolor,"onUpdate:modelValue":t[7]||(t[7]=e=>h("backcolor",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{color:(0,s.SU)(l).backcolor},{default:(0,i.w5)((()=>[(0,i.Wm)(u)])),_:1},8,["color"])),[[w,"文字高亮"]])])),_:1}),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{class:"font-size-btn",style:{width:"20%"},onClick:t[8]||(t[8]=e=>h("fontsize-add","2"))},{default:(0,i.w5)((()=>[(0,i.Wm)(n),(0,i.Uk)("+")])),_:1})),[[w,"增大字号"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{last:"",class:"font-size-btn",style:{width:"20%"},onClick:t[9]||(t[9]=e=>h("fontsize-reduce","2"))},{default:(0,i.w5)((()=>[(0,i.Wm)(n),(0,i.Uk)("-")])),_:1})),[[w,"减小字号"]])])),_:1}),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:(0,s.SU)(l).align,"onUpdate:value":t[10]||(t[10]=e=>h("align",e))},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"left",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(f)])),_:1})),[[w,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"center",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(g)])),_:1})),[[w,"居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"right",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(y)])),_:1})),[[w,"右对齐"]])])),_:1},8,["value"])])}}});const Gx=(0,Vl.Z)(Xx,[["__scopeId","data-v-80f1bc4e"]]);var Kx=Gx;const Qx={class:"element-style-panel"};var ek=(0,i.aZ)({__name:"index",setup(e){const t={[sa.TEXT]:Zg,[sa.IMAGE]:wy,[sa.SHAPE]:Zy,[sa.LINE]:Qy,[sa.CHART]:Zw,[sa.TABLE]:nx,[sa.LATEX]:mx,[sa.VIDEO]:Cx,[sa.AUDIO]:Ox},{activeElementIdList:l,activeElementList:a,handleElement:n,activeGroupElementId:s}=(0,o.Jk)(R()),r=(0,i.Fl)((()=>{if(l.value.length>1){if(!s.value)return Kx;const e=a.value.find((e=>e.id===s.value));return e&&t[e.type]||null}return n.value&&t[n.value.type]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Qx,[((0,i.wg)(),(0,i.j4)((0,i.LL)(r.value)))]))}});const tk=ek;var lk=tk;const ak=e=>((0,i.dD)("data-v-a2bcea28"),e=e(),(0,i.Cn)(),e),nk={class:"element-positopn-panel"},ok=ak((()=>(0,i._)("div",{class:"title"},"层级:",-1))),ik=ak((()=>(0,i._)("div",{class:"title"},"对齐:",-1))),sk={class:"row"},rk=ak((()=>(0,i._)("div",{style:{width:"10%"}},null,-1))),uk={key:0,class:"row"},ck={key:1,style:{width:"10%"}},dk={class:"row"},pk=ak((()=>(0,i._)("div",{style:{width:"7%"}},null,-1)));var vk=(0,i.aZ)({__name:"ElementPositionPanel",setup(e){const t=$(),{handleElement:l,handleElementId:a}=(0,o.Jk)(R()),n=(0,s.iH)(0),r=(0,s.iH)(0),u=(0,s.iH)(0),c=(0,s.iH)(0),d=(0,s.iH)(0),p=(0,s.iH)(!1),v=(0,i.Fl)((()=>l.value&&Zn[l.value.type]||20)),m=(0,i.Fl)((()=>"text"===l.value?.type&&!l.value.vertical)),h=(0,i.Fl)((()=>"text"===l.value?.type&&l.value.vertical));(0,i.YP)(l,(()=>{l.value&&(n.value=(0,D.round)(l.value.left,1),r.value=(0,D.round)(l.value.top,1),p.value="fixedRatio"in l.value&&!!l.value.fixedRatio,"line"!==l.value.type&&(u.value=(0,D.round)(l.value.width,1),c.value=(0,D.round)(l.value.height,1),d.value="rotate"in l.value&&void 0!==l.value.rotate?(0,D.round)(l.value.rotate,1):0))}),{deep:!0,immediate:!0});const{orderElement:f}=ba(),{alignElementToCanvas:g}=qn(),{addHistorySnapshot:y}=da(),w=e=>{const l={left:e};t.updateElement({id:a.value,props:l}),y()},x=e=>{const l={top:e};t.updateElement({id:a.value,props:l}),y()},k=(e,t)=>{if(l.value&&"shape"===l.value.type&&"pathFormula"in l.value&&l.value.pathFormula){const a=ra[l.value.pathFormula];let n="";return n="editable"in a?a.formula(e,t,l.value.keypoint):a.formula(e,t),{viewBox:[e,t],path:n}}return null},b=e=>{let l={width:e};const n=k(e,c.value);n&&(l={...l,...n}),t.updateElement({id:a.value,props:l}),y()},_=e=>{let l={height:e};const n=k(u.value,e);n&&(l={...l,...n}),t.updateElement({id:a.value,props:l}),y()},I=e=>{const l={rotate:e};t.updateElement({id:a.value,props:l}),y()},S=e=>{const l={fixedRatio:e};t.updateElement({id:a.value,props:l}),y()},C=e=>{let l=45*Math.floor(d.value/45);"+"===e?l+=45:"-"===e&&(l-=45),l<-180&&(l=-180),l>180&&(l=180);const n={rotate:l};t.updateElement({id:a.value,props:n}),y()};return(e,t)=>{const a=(0,i.up)("IconSendToBack"),o=(0,i.up)("IconBringToFrontOne"),y=(0,i.up)("IconBringToFront"),k=(0,i.up)("IconSentToBack"),L=(0,i.up)("IconAlignLeft"),T=(0,i.up)("IconAlignVertically"),E=(0,i.up)("IconAlignRight"),M=(0,i.up)("IconAlignTop"),U=(0,i.up)("IconAlignHorizontally"),W=(0,i.up)("IconAlignBottom"),D=(0,i.up)("IconLock"),H=(0,i.up)("IconUnlock"),F=(0,i.up)("IconRotate"),A=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",nk,[ok,(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[0]||(t[0]=e=>(0,s.SU)(f)((0,s.SU)(l),(0,s.SU)(Q).TOP))},{default:(0,i.w5)((()=>[(0,i.Wm)(a,{class:"btn-icon"}),(0,i.Uk)(" 置顶")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[1]||(t[1]=e=>(0,s.SU)(f)((0,s.SU)(l),(0,s.SU)(Q).BOTTOM))},{default:(0,i.w5)((()=>[(0,i.Wm)(o,{class:"btn-icon"}),(0,i.Uk)(" 置底")])),_:1})])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[2]||(t[2]=e=>(0,s.SU)(f)((0,s.SU)(l),(0,s.SU)(Q).UP))},{default:(0,i.w5)((()=>[(0,i.Wm)(y,{class:"btn-icon"}),(0,i.Uk)(" 上移")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[3]||(t[3]=e=>(0,s.SU)(f)((0,s.SU)(l),(0,s.SU)(Q).DOWN))},{default:(0,i.w5)((()=>[(0,i.Wm)(k,{class:"btn-icon"}),(0,i.Uk)(" 下移")])),_:1})])),_:1}),(0,i.Wm)(Zc),ik,(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[4]||(t[4]=e=>(0,s.SU)(g)((0,s.SU)(ee).LEFT))},{default:(0,i.w5)((()=>[(0,i.Wm)(L)])),_:1})),[[A,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[5]||(t[5]=e=>(0,s.SU)(g)((0,s.SU)(ee).HORIZONTAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(T)])),_:1})),[[A,"水平居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[6]||(t[6]=e=>(0,s.SU)(g)((0,s.SU)(ee).RIGHT))},{default:(0,i.w5)((()=>[(0,i.Wm)(E)])),_:1})),[[A,"右对齐"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[7]||(t[7]=e=>(0,s.SU)(g)((0,s.SU)(ee).TOP))},{default:(0,i.w5)((()=>[(0,i.Wm)(M)])),_:1})),[[A,"上对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[8]||(t[8]=e=>(0,s.SU)(g)((0,s.SU)(ee).VERTICAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(U)])),_:1})),[[A,"垂直居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[9]||(t[9]=e=>(0,s.SU)(g)((0,s.SU)(ee).BOTTOM))},{default:(0,i.w5)((()=>[(0,i.Wm)(W)])),_:1})),[[A,"下对齐"]])])),_:1}),(0,i.Wm)(Zc),(0,i._)("div",sk,[(0,i.Wm)(mv,{step:5,value:n.value,"onUpdate:value":t[10]||(t[10]=e=>w(e)),style:{width:"45%"}},{prefix:(0,i.w5)((()=>[(0,i.Uk)(" 水平: ")])),_:1},8,["value"]),rk,(0,i.Wm)(mv,{step:5,value:r.value,"onUpdate:value":t[11]||(t[11]=e=>x(e)),style:{width:"45%"}},{prefix:(0,i.w5)((()=>[(0,i.Uk)(" 垂直: ")])),_:1},8,["value"])]),"line"!==(0,s.SU)(l).type?((0,i.wg)(),(0,i.iD)("div",uk,[(0,i.Wm)(mv,{min:v.value,max:1500,step:5,disabled:h.value,value:u.value,"onUpdate:value":t[12]||(t[12]=e=>b(e)),style:{width:"45%"}},{prefix:(0,i.w5)((()=>[(0,i.Uk)(" 宽度: ")])),_:1},8,["min","disabled","value"]),["image","shape","audio"].includes((0,s.SU)(l).type)?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[p.value?(0,i.wy)(((0,i.wg)(),(0,i.j4)(D,{key:0,style:{width:"10%"},class:"icon-btn",onClick:t[13]||(t[13]=e=>S(!1))},null,512)),[[A,"解除宽高比锁定"]]):(0,i.wy)(((0,i.wg)(),(0,i.j4)(H,{key:1,style:{width:"10%"},class:"icon-btn",onClick:t[14]||(t[14]=e=>S(!0))},null,512)),[[A,"宽高比锁定"]])],64)):((0,i.wg)(),(0,i.iD)("div",ck)),(0,i.Wm)(mv,{min:v.value,max:800,step:5,disabled:m.value||"table"===(0,s.SU)(l).type,value:c.value,"onUpdate:value":t[15]||(t[15]=e=>_(e)),style:{width:"45%"}},{prefix:(0,i.w5)((()=>[(0,i.Uk)(" 高度: ")])),_:1},8,["min","disabled","value"])])):(0,i.kq)("",!0),["line","video","audio"].includes((0,s.SU)(l).type)?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i.Wm)(Zc),(0,i._)("div",dk,[(0,i.Wm)(mv,{min:-180,max:180,step:5,value:d.value,"onUpdate:value":t[16]||(t[16]=e=>I(e)),style:{width:"45%"}},{prefix:(0,i.w5)((()=>[(0,i.Uk)(" 旋转: ")])),_:1},8,["value"]),pk,(0,i._)("div",{class:"text-btn",onClick:t[17]||(t[17]=e=>C("-")),style:{width:"24%"}},[(0,i.Wm)(F),(0,i.Uk)(" -45°")]),(0,i._)("div",{class:"text-btn",onClick:t[18]||(t[18]=e=>C("+")),style:{width:"24%"}},[(0,i.Wm)(F,{style:(0,oe.j5)({transform:"rotateY(180deg)"})},null,8,["style"]),(0,i.Uk)(" +45°")])])],64))])}}});const mk=(0,Vl.Z)(vk,[["__scopeId","data-v-a2bcea28"]]);var hk=mk;const fk=1e3,gk="click",yk="animate__",wk=[{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"}]}],xk=[{type:"bounce",name:"弹跳",children:[{name:"弹出",value:"bounceOut"},{name:"向左弹出",value:"bounceOutLeft"},{name:"向右弹出",value:"bounceOutRight"},{name:"向上弹出",value:"bounceOutUp"},{name:"向下弹出",value:"bounceOutDown"}]},{type:"fade",name:"浮现",children:[{name:"浮出",value:"fadeOut"},{name:"向下浮出",value:"fadeOutDown"},{name:"向下长距浮出",value:"fadeOutDownBig"},{name:"向左浮出",value:"fadeOutLeft"},{name:"向左长距浮出",value:"fadeOutLeftBig"},{name:"向右浮出",value:"fadeOutRight"},{name:"向右长距浮出",value:"fadeOutRightBig"},{name:"向上浮出",value:"fadeOutUp"},{name:"向上长距浮出",value:"fadeOutUpBig"},{name:"从左上浮出",value:"fadeOutTopLeft"},{name:"从右上浮出",value:"fadeOutTopRight"},{name:"从左下浮出",value:"fadeOutBottomLeft"},{name:"从右下浮出",value:"fadeOutBottomRight"}]},{type:"rotate",name:"旋转",children:[{name:"旋转退出",value:"rotateOut"},{name:"绕左下退出",value:"rotateOutDownLeft"},{name:"绕右下退出",value:"rotateOutDownRight"},{name:"绕左上退出",value:"rotateOutUpLeft"},{name:"绕右上退出",value:"rotateOutUpRight"}]},{type:"zoom",name:"缩放",children:[{name:"缩小退出",value:"zoomOut"},{name:"向下缩小退出",value:"zoomOutDown"},{name:"从左缩小退出",value:"zoomOutLeft"},{name:"从右缩小退出",value:"zoomOutRight"},{name:"向上缩小退出",value:"zoomOutUp"}]},{type:"slide",name:"滑出",children:[{name:"向下滑出",value:"slideOutDown"},{name:"从左滑出",value:"slideOutLeft"},{name:"从右滑出",value:"slideOutRight"},{name:"向上滑出",value:"slideOutUp"}]},{type:"flip",name:"翻转",children:[{name:"X轴翻转退出",value:"flipOutX"},{name:"Y轴翻转退出",value:"flipOutY"}]},{type:"back",name:"缩小滑出",children:[{name:"向下缩小滑出",value:"backOutDown"},{name:"从左缩小滑出",value:"backOutLeft"},{name:"从右缩小滑出",value:"backOutRight"},{name:"向上缩小滑出",value:"backOutUp"}]},{type:"lightSpeed",name:"飞出",children:[{name:"从右飞出",value:"lightSpeedOutRight"},{name:"从左飞出",value:"lightSpeedOutLeft"}]}],kk=[{type:"shake",name:"晃动",children:[{name:"左右摇晃",value:"shakeX"},{name:"上下摇晃",value:"shakeY"},{name:"摇头",value:"headShake"},{name:"摆动",value:"swing"},{name:"晃动",value:"wobble"},{name:"惊恐",value:"tada"},{name:"果冻",value:"jello"}]},{type:"other",name:"其他",children:[{name:"弹跳",value:"bounce"},{name:"闪烁",value:"flash"},{name:"脉搏",value:"pulse"},{name:"橡皮筋",value:"rubberBand"},{name:"心跳(快)",value:"heartBeat"}]}],bk=[{label:"无",value:"no"},{label:"随机",value:"random"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"},{label:"左右推移(3D)",value:"slideX3D"},{label:"上下推移(3D)",value:"slideY3D"},{label:"淡入淡出",value:"fade"},{label:"旋转",value:"rotate"},{label:"上下展开",value:"scaleY"},{label:"左右展开",value:"scaleX"},{label:"放大",value:"scale"},{label:"缩小",value:"scaleReverse"}],_k=e=>((0,i.dD)("data-v-5abd2ee4"),e=e(),(0,i.Cn)(),e),Ik={class:"element-animation-panel"},Sk={key:0,class:"element-animation"},Ck={class:"type-title"},Lk={class:"pool-item-wrapper"},Tk=["onMouseenter","onClick"],Ek={key:0,class:"mask"},Mk={key:1,class:"tip"},Uk={class:"sequence-content"},Wk={class:"index"},Dk={class:"text"},Hk={class:"handler"},Fk={key:0,class:"configs"},Ak={class:"config-item"},$k=_k((()=>(0,i._)("div",{style:{width:"35%"}},"持续时长:",-1))),Zk={class:"config-item"},Ok=_k((()=>(0,i._)("div",{style:{width:"35%"}},"触发方式:",-1))),Rk={class:"config-item"};var zk=(0,i.aZ)({__name:"ElementAnimationPanel",setup(e){const t={};for(const o of wk)for(const e of o.children)t[e.value]=e.name;for(const o of xk)for(const e of o.children)t[e.value]=e.name;for(const o of kk)for(const e of o.children)t[e.value]=e.name;const l=["in","out","attention"],a=$(),{handleElement:n,handleElementId:u}=(0,o.Jk)(R()),{currentSlide:c,formatedAnimations:d,currentSlideAnimations:p}=(0,o.Jk)(a),v=[{key:"in",label:"入场",color:"#68a490"},{key:"out",label:"退场",color:"#d86344"},{key:"attention",label:"强调",color:"#e8b76a"}],m=(0,s.iH)("in"),h=(0,s.iH)(!1);(0,i.YP)((()=>u.value),(()=>{g.value=!1}));const f=(0,s.iH)(""),g=(0,s.iH)(!1),{addHistorySnapshot:y}=da(),w=(0,i.Fl)((()=>{const e=[];for(let l=0;le.id===o.elId));if(!i)continue;const s=$n[i.type],r=t[o.effect];e.push({...o,index:0===n?l+1:"",elType:s,animationEffect:r})}}return e})),x=(0,i.Fl)((()=>{const e=p.value,t=e.filter((e=>e.elId===u.value));return t||[]})),k=e=>{const t=p.value.filter((t=>t.id!==e));a.updateSlide({animations:t}),y()},b=e=>{const{newIndex:t,oldIndex:l}=e;if(void 0===t||void 0===l||t===l)return;const n=JSON.parse(JSON.stringify(p.value)),o=n[l];n.splice(l,1),n.splice(t,0,o),a.updateSlide({animations:n}),y()},_=(e,t,l)=>{const a=document.querySelector(`#editable-element-${e} [class^=editable-element-]`);if(a){const e=`${yk}${t}`;document.documentElement.style.setProperty("--animate-duration",`${l}ms`),a.classList.add(`${yk}animated`,e);const n=()=>{document.documentElement.style.removeProperty("--animate-duration"),a.classList.remove(`${yk}animated`,e)};a.addEventListener("animationend",n,{once:!0})}},I=async()=>{h.value=!h.value;for(let e=0;esetTimeout(e,t.duration+100))),_(t.elId,t.effect,t.duration),e>=w.value.length-1&&(h.value=!1)}},S=(e,t)=>{if(t<100||t>5e3)return;const l=p.value.map((l=>l.id===e?{...l,duration:t}:l));a.updateSlide({animations:l}),y()},C=(e,t)=>{const l=p.value.map((l=>l.id===e?{...l,trigger:t}:l));a.updateSlide({animations:l}),y()},L=(e,t)=>{const l=p.value.map((l=>l.id===T.value?{...l,type:e,effect:t}:l));a.updateSlide({animations:l}),g.value=!1,y();const n=p.value.find((e=>e.elId===u.value)),o=n?.duration||fk;setTimeout((()=>{_(u.value,t,o)}),0)},T=(0,s.iH)(""),E=(e,t)=>{if(T.value)return void L(e,t);const l=JSON.parse(JSON.stringify(p.value));l.push({id:(0,r.x0)(10),elId:u.value,type:e,effect:t,duration:fk,trigger:gk}),a.updateSlide({animations:l}),g.value=!1,y(),setTimeout((()=>{_(u.value,t,fk)}),0)},M=(0,s.iH)(!1),U=e=>{e?setTimeout((()=>M.value=!0),600):M.value=!1},W=e=>{g.value=!0,T.value=e,U(!0)},D={in:wk,out:xk,attention:kk};return(e,t)=>{const a=(0,i.up)("IconEffects"),o=(0,i.up)("IconClick"),r=(0,i.up)("IconPlayOne"),u=(0,i.up)("IconCloseSmall"),c=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",Ik,[(0,s.SU)(n)?((0,i.wg)(),(0,i.iD)("div",Sk,[(0,i.Wm)(dn,{trigger:"click",value:g.value,"onUpdate:value":[t[3]||(t[3]=e=>g.value=e),t[4]||(t[4]=e=>U(e))],style:{width:"100%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(Kd,{tabs:v,value:m.value,"onUpdate:value":t[0]||(t[0]=e=>m.value=e),tabsStyle:{marginBottom:"20px"},tabStyle:{width:"33.333%"},spaceAround:""},null,8,["value"]),((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(l,(e=>((0,i.wg)(),(0,i.iD)(i.HY,null,[m.value===e?((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["animation-pool",e]),key:e},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(D[e],(l=>((0,i.wg)(),(0,i.iD)("div",{class:"pool-type",key:l.name},[(0,i._)("div",Ck,(0,oe.zw)(l.name)+":",1),(0,i._)("div",Lk,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(l.children,(l=>((0,i.wg)(),(0,i.iD)("div",{class:"pool-item",key:l.name,onMouseenter:e=>f.value=l.value,onMouseleave:t[1]||(t[1]=e=>f.value=""),onClick:t=>E(e,l.value)},[(0,i._)("div",{class:(0,oe.C_)(["animation-box",[`${(0,s.SU)(yk)}animated`,`${(0,s.SU)(yk)}fast`,f.value===l.value&&`${(0,s.SU)(yk)}${l.value}`]])},(0,oe.zw)(l.name),3)],40,Tk)))),128))])])))),128)),M.value?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("div",Ek))],2)):(0,i.kq)("",!0)],64)))),64))])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{class:"element-animation-btn",onClick:t[2]||(t[2]=e=>T.value="")},{default:(0,i.w5)((()=>[(0,i.Wm)(a,{style:{"margin-right":"5px"}}),(0,i.Uk)(" 添加动画 ")])),_:1})])),_:1},8,["value"])])):((0,i.wg)(),(0,i.iD)("div",Mk,[(0,i.Wm)(o,{style:{"margin-right":"5px"}}),(0,i.Uk)(" 选中画布中的元素添加动画")])),(0,i.Wm)(Zc),(0,i.Wm)((0,s.SU)(Dm()),{class:"animation-sequence",modelValue:w.value,animation:200,scroll:!0,scrollSensitivity:50,handle:".sequence-content",itemKey:"id",onEnd:b},{item:(0,i.w5)((({element:e})=>[(0,i._)("div",{class:(0,oe.C_)(["sequence-item",[e.type,{active:(0,s.SU)(n)?.id===e.elId}]])},[(0,i._)("div",Uk,[(0,i._)("div",Wk,(0,oe.zw)(e.index),1),(0,i._)("div",Dk,"【"+(0,oe.zw)(e.elType)+"】"+(0,oe.zw)(e.animationEffect),1),(0,i._)("div",Hk,[(0,i.wy)((0,i.Wm)(r,{class:"handler-btn",onClick:t=>_(e.elId,e.effect,e.duration)},null,8,["onClick"]),[[c,"预览"]]),(0,i.wy)((0,i.Wm)(u,{class:"handler-btn",onClick:t=>k(e.id)},null,8,["onClick"]),[[c,"删除"]])])]),x.value[0]?.elId===e.elId?((0,i.wg)(),(0,i.iD)("div",Fk,[(0,i.Wm)(Zc,{style:{margin:"16px 0"}}),(0,i._)("div",Ak,[$k,(0,i.Wm)(mv,{min:500,max:3e3,step:500,value:e.duration,"onUpdate:value":t=>S(e.id,t),style:{width:"65%"}},null,8,["value","onUpdate:value"])]),(0,i._)("div",Zk,[Ok,(0,i.Wm)(cp,{value:e.trigger,"onUpdate:value":t=>C(e.id,t),style:{width:"65%"},options:[{label:"主动触发",value:"click"},{label:"与上一动画同时",value:"meantime"},{label:"上一动画之后",value:"auto"}]},null,8,["value","onUpdate:value"])]),(0,i._)("div",Rk,[(0,i.Wm)(tp,{style:{width:"100%"},onClick:t=>W(e.id)},{default:(0,i.w5)((()=>[(0,i.Uk)("更换动画")])),_:2},1032,["onClick"])])])):(0,i.kq)("",!0)],2)])),_:1},8,["modelValue"]),w.value.length>=2?((0,i.wg)(),(0,i.iD)(i.HY,{key:2},[(0,i.Wm)(Zc),(0,i.Wm)(tp,{onClick:t[5]||(t[5]=e=>I())},{default:(0,i.w5)((()=>[(0,i.Uk)((0,oe.zw)(h.value?"停止预览":"预览全部"),1)])),_:1})],64)):(0,i.kq)("",!0)])}}});const Pk=(0,Vl.Z)(zk,[["__scopeId","data-v-5abd2ee4"]]);var Bk=Pk;const Nk=[{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#5b9bd5","#ed7d31","#a5a5a5","#ffc000","#4472c4","#70ad47"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#83992a","#3c9670","#44709d","#a23b32","#d87728","#deb340"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#e48312","#bd582c","#865640","#9b8357","#c2bc80","#94a088"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#bdc8df","#003fa9","#f5ba00","#ff7567","#7676d9","#923ffc"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#90c225","#54a121","#e6b91e","#e86618","#c42f19","#918756"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#1cade4","#2683c6","#27ced7","#42ba97","#3e8853","#62a39f"]},{background:"#e9efd6",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#a5300f","#de7e18","#9f8351","#728653","#92aa4c","#6aac91"]},{background:"#17444e",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#b01513","#ea6312","#e6b729","#6bab90","#55839a","#9e5d9d"]},{background:"#36234d",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#b31166","#e33d6f","#e45f3c","#e9943a","#9b6bf2","#d63cd0"]},{background:"#247fad",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#052f61","#a50e82","#14967c","#6a9e1f","#e87d37","#c62324"]},{background:"#103f55",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#40aebd","#97e8d5","#a1cf49","#628f3e","#f2df3a","#fcb01c"]},{background:"#242367",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#ac3ec1","#477bd1","#46b298","#90ba4c","#dd9d31","#e25345"]},{background:"#e4b75e",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#f0a22e","#a5644e","#b58b80","#c3986d","#a19574","#c17529"]},{background:"#333333",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#bdc8df","#003fa9","#f5ba00","#ff7567","#7676d9","#923ffc"]}];var jk=()=>{const e=$(),{slides:t,currentSlide:l,theme:a}=(0,o.Jk)(e),{addHistorySnapshot:n}=da(),i=e=>{const t=[];for(const l of e.elements){if("shape"===l.type&&0!==(0,W.Z)(l.fill).getAlpha()){const e=(0,W.Z)(l.fill).toRgbString();t.includes(e)||t.push(e)}if("text"===l.type&&l.fill&&0!==(0,W.Z)(l.fill).getAlpha()){const e=(0,W.Z)(l.fill).toRgbString();t.includes(e)||t.push(e)}if("table"===l.type&&l.theme&&0!==(0,W.Z)(l.theme.color).getAlpha()){const e=(0,W.Z)(l.theme.color).toRgbString();t.includes(e)||t.push(e)}if("chart"===l.type&&l.fill&&0!==(0,W.Z)(l.fill).getAlpha()){const e=(0,W.Z)(l.fill).toRgbString();t.includes(e)||t.push(e)}if("line"===l.type&&0!==(0,W.Z)(l.color).getAlpha()){const e=(0,W.Z)(l.color).toRgbString();t.includes(e)||t.push(e)}if("audio"===l.type&&0!==(0,W.Z)(l.color).getAlpha()){const e=(0,W.Z)(l.color).toRgbString();t.includes(e)||t.push(e)}}return t},s=(e,t)=>{const l=i(e),a={};if(l.length>t.length){const e=(0,W.Z)(t[0]).analogous(l.length-t.length+10),a=e.map((e=>e.toHexString())).slice(1);t.push(...a)}for(let n=0;n{const l=s(e,t.colors);e.background&&"image"===e.background.type||(e.background={type:"solid",color:t.background});for(const a of e.elements){if("shape"===a.type&&(a.fill=l[(0,W.Z)(a.fill).toRgbString()]||a.fill,a.gradient&&delete a.gradient),"text"===a.type&&(a.fill&&(a.fill=l[(0,W.Z)(a.fill).toRgbString()]||a.fill),a.defaultColor=t.fontColor,a.defaultFontName=t.fontname),"table"===a.type){a.theme&&(a.theme.color=l[(0,W.Z)(a.theme.color).toRgbString()]||a.theme.color);for(const e of a.data)for(const l of e)l.style&&(l.style.color=t.fontColor,l.style.fontname=t.fontname)}"chart"===a.type&&(a.themeColor=[l[(0,W.Z)(a.themeColor[0]).toRgbString()]]||0,a.gridColor=t.fontColor),"line"===a.type&&(a.color=l[(0,W.Z)(a.color).toRgbString()]||a.color),"audio"===a.type&&(a.color=l[(0,W.Z)(a.color).toRgbString()]||a.color),"latex"===a.type&&(a.color=t.fontColor)}},u=t=>{const a=JSON.parse(JSON.stringify(l.value));r(a,t),e.updateSlide({background:a.background,elements:a.elements}),n()},c=l=>{const a=JSON.parse(JSON.stringify(t.value));for(const e of a)r(e,l);e.setTheme({backgroundColor:l.background,themeColor:l.colors[0],fontColor:l.fontColor,fontName:l.fontname}),e.setSlides(a),n()},d=(l=!1)=>{const o=JSON.parse(JSON.stringify(t.value)),{themeColor:i,backgroundColor:s,fontColor:r,fontName:u,outline:c,shadow:d}=a.value;for(const e of o){e.background&&"image"===e.background.type||(e.background={type:"solid",color:s});for(const t of e.elements)if(l&&("outline"in t&&t.outline&&(t.outline=c),"shadow"in t&&t.shadow&&(t.shadow=d)),"shape"===t.type)t.fill=i;else if("line"===t.type)t.color=i;else if("text"===t.type)t.defaultColor=r,t.defaultFontName=u,t.fill&&(t.fill=i);else if("table"===t.type){t.theme&&(t.theme.color=i);for(const e of t.data)for(const t of e)t.style&&(t.style.color=r,t.style.fontname=u)}else"chart"===t.type?(t.themeColor=[i],t.gridColor=r):"latex"===t.type?t.color=r:"audio"===t.type&&(t.color=i)}e.setSlides(o),n()};return{applyPresetThemeToSingleSlide:u,applyPresetThemeToAllSlides:c,applyThemeToAllSlides:d}};const Yk=e=>((0,i.dD)("data-v-9a96acfa"),e=e(),(0,i.Cn)(),e),Vk={class:"slide-design-panel"},Jk=Yk((()=>(0,i._)("div",{class:"title"},"背景填充",-1))),qk={class:"row"},Xk=Yk((()=>(0,i._)("div",{style:{width:"10px"}},null,-1))),Gk={key:0,class:"background-image-wrapper"},Kk={class:"background-image"},Qk={key:1,class:"background-gradient-wrapper"},eb={class:"row"},tb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"起点颜色:",-1))),lb={class:"row"},ab=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"终点颜色:",-1))),nb={key:0,class:"row"},ob=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"渐变角度:",-1))),ib={class:"row"},sb={class:"row"},rb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"画布尺寸:",-1))),ub={class:"title"},cb=Yk((()=>(0,i._)("span",null,"全局主题",-1))),db=Yk((()=>(0,i._)("span",{class:"text"},"更多",-1))),pb={class:"row"},vb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"字体:",-1))),mb={class:"row"},hb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"字体颜色:",-1))),fb={class:"row"},gb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"背景颜色:",-1))),yb={class:"row"},wb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"主题色:",-1))),xb={class:"row"},kb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"边框样式:",-1))),bb={class:"row"},_b=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"边框颜色:",-1))),Ib={class:"row"},Sb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"边框粗细:",-1))),Cb={class:"row",style:{height:"30px"}},Lb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"水平阴影:",-1))),Tb={class:"row",style:{height:"30px"}},Eb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"垂直阴影:",-1))),Mb={class:"row",style:{height:"30px"}},Ub=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"模糊距离:",-1))),Wb={class:"row"},Db=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"阴影颜色:",-1))),Hb={class:"row"},Fb=Yk((()=>(0,i._)("div",{class:"title"},"预置主题",-1))),Ab={class:"theme-list"},$b={class:"theme-item-content"},Zb={class:"colors"},Ob={class:"btns"},Rb=["onClick"],zb=["onClick"];var Pb=(0,i.aZ)({__name:"SlideDesignPanel",setup(e){const t=$(),{availableFonts:l}=(0,o.Jk)(R()),{slides:a,currentSlide:n,viewportRatio:r,theme:u}=(0,o.Jk)(t),c=(0,s.iH)(!1),d=(0,i.Fl)((()=>n.value.background?n.value.background:{type:"solid",value:"#fff"})),{addHistorySnapshot:p}=da(),{applyPresetThemeToSingleSlide:v,applyPresetThemeToAllSlides:m,applyThemeToAllSlides:h}=jk(),f=e=>{if("solid"===e){const e={...d.value,type:"solid",color:d.value.color||"#fff"};t.updateSlide({background:e})}else if("image"===e){const e={...d.value,type:"image",image:d.value.image||"",imageSize:d.value.imageSize||"cover"};t.updateSlide({background:e})}else{const e={...d.value,type:"gradient",gradientType:d.value.gradientType||"linear",gradientColor:d.value.gradientColor||["#fff","#fff"],gradientRotate:d.value.gradientRotate||0};t.updateSlide({background:e})}p()},g=e=>{t.updateSlide({background:{...d.value,...e}}),p()},y=e=>{const t=e[0];t&&na(t).then((e=>g({image:e})))},w=()=>{const e=a.value.map((e=>({...e,background:n.value.background})));t.setSlides(e),p()},x=e=>{t.setTheme(e)},k=e=>{t.setViewportRatio(e)};return(e,t)=>{const a=(0,i.up)("IconPlus"),n=(0,i.up)("IconDown"),o=(0,i.up)("IconRight");return(0,i.wg)(),(0,i.iD)("div",Vk,[Jk,(0,i._)("div",qk,[(0,i.Wm)(cp,{style:{flex:"1"},value:d.value.type,"onUpdate:value":t[0]||(t[0]=e=>f(e)),options:[{label:"纯色填充",value:"solid"},{label:"图片填充",value:"image"},{label:"渐变填充",value:"gradient"}]},null,8,["value"]),Xk,"solid"===d.value.type?((0,i.wg)(),(0,i.j4)(dn,{key:0,trigger:"click",style:{flex:"1"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:d.value.color,"onUpdate:modelValue":t[1]||(t[1]=e=>g({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:d.value.color||"#fff"},null,8,["color"])])),_:1})):"image"===d.value.type?((0,i.wg)(),(0,i.j4)(cp,{key:1,style:{flex:"1"},value:d.value.imageSize||"cover","onUpdate:value":t[2]||(t[2]=e=>g({imageSize:e})),options:[{label:"缩放",value:"contain"},{label:"拼贴",value:"repeat"},{label:"缩放铺满",value:"cover"}]},null,8,["value"])):((0,i.wg)(),(0,i.j4)(cp,{key:2,style:{flex:"1"},value:d.value.gradientType||"","onUpdate:value":t[3]||(t[3]=e=>g({gradientType:e})),options:[{label:"线性渐变",value:"linear"},{label:"径向渐变",value:"radial"}]},null,8,["value"]))]),"image"===d.value.type?((0,i.wg)(),(0,i.iD)("div",Gk,[(0,i.Wm)(Pa,{onChange:t[4]||(t[4]=e=>y(e))},{default:(0,i.w5)((()=>[(0,i._)("div",Kk,[(0,i._)("div",{class:"content",style:(0,oe.j5)({backgroundImage:`url(${d.value.image})`})},[(0,i.Wm)(a)],4)])])),_:1})])):(0,i.kq)("",!0),"gradient"===d.value.type?((0,i.wg)(),(0,i.iD)("div",Qk,[(0,i._)("div",eb,[tb,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:d.value.gradientColor[0],"onUpdate:modelValue":t[5]||(t[5]=e=>g({gradientColor:[e,d.value.gradientColor[1]]}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:d.value.gradientColor[0]},null,8,["color"])])),_:1})]),(0,i._)("div",lb,[ab,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:d.value.gradientColor[1],"onUpdate:modelValue":t[6]||(t[6]=e=>g({gradientColor:[d.value.gradientColor[0],e]}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:d.value.gradientColor[1]},null,8,["color"])])),_:1})]),"linear"===d.value.gradientType?((0,i.wg)(),(0,i.iD)("div",nb,[ob,(0,i.Wm)(qm,{min:0,max:360,step:15,value:d.value.gradientRotate||0,"onUpdate:value":t[7]||(t[7]=e=>g({gradientRotate:e})),style:{width:"60%"}},null,8,["value"])])):(0,i.kq)("",!0)])):(0,i.kq)("",!0),(0,i._)("div",ib,[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[8]||(t[8]=e=>w())},{default:(0,i.w5)((()=>[(0,i.Uk)("应用背景到全部")])),_:1})]),(0,i.Wm)(Zc),(0,i._)("div",sb,[rb,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(r),"onUpdate:value":t[9]||(t[9]=e=>k(e)),options:[{label:"宽屏 16 : 9",value:.5625},{label:"宽屏 16 : 10",value:.625},{label:"标准 4 : 3",value:.75},{label:"纸张 A3 / A4",value:.70710678}]},null,8,["value"])]),(0,i.Wm)(Zc),(0,i._)("div",ub,[cb,(0,i._)("span",{class:"more",onClick:t[10]||(t[10]=e=>c.value=!c.value)},[db,c.value?((0,i.wg)(),(0,i.j4)(n,{key:0})):((0,i.wg)(),(0,i.j4)(o,{key:1}))])]),(0,i._)("div",pb,[vb,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(u).fontName,"onUpdate:value":t[11]||(t[11]=e=>x({fontName:e})),options:[...(0,s.SU)(l),...(0,s.SU)(M)]},null,8,["value","options"])]),(0,i._)("div",mb,[hb,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).fontColor,"onUpdate:modelValue":t[12]||(t[12]=e=>x({fontColor:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(u).fontColor},null,8,["color"])])),_:1})]),(0,i._)("div",fb,[gb,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).backgroundColor,"onUpdate:modelValue":t[13]||(t[13]=e=>x({backgroundColor:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(u).backgroundColor},null,8,["color"])])),_:1})]),(0,i._)("div",yb,[wb,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).themeColor,"onUpdate:modelValue":t[14]||(t[14]=e=>x({themeColor:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(u).themeColor},null,8,["color"])])),_:1})]),c.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:2},[(0,i._)("div",xb,[kb,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(u).outline.style||"","onUpdate:value":t[15]||(t[15]=e=>x({outline:{...(0,s.SU)(u).outline,style:e}})),options:[{label:"实线边框",value:"solid"},{label:"虚线边框",value:"dashed"}]},null,8,["value"])]),(0,i._)("div",bb,[_b,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).outline.color,"onUpdate:modelValue":t[16]||(t[16]=e=>x({outline:{...(0,s.SU)(u).outline,color:e}}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(u).outline.color||"#000"},null,8,["color"])])),_:1})]),(0,i._)("div",Ib,[Sb,(0,i.Wm)(mv,{value:(0,s.SU)(u).outline.width||0,"onUpdate:value":t[17]||(t[17]=e=>x({outline:{...(0,s.SU)(u).outline,width:e}})),style:{width:"60%"}},null,8,["value"])]),(0,i._)("div",Cb,[Lb,(0,i.Wm)(qm,{style:{width:"60%"},min:-10,max:10,step:1,value:(0,s.SU)(u).shadow.h,"onUpdate:value":t[18]||(t[18]=e=>x({shadow:{...(0,s.SU)(u).shadow,h:e}}))},null,8,["value"])]),(0,i._)("div",Tb,[Eb,(0,i.Wm)(qm,{style:{width:"60%"},min:-10,max:10,step:1,value:(0,s.SU)(u).shadow.v,"onUpdate:value":t[19]||(t[19]=e=>x({shadow:{...(0,s.SU)(u).shadow,v:e}}))},null,8,["value"])]),(0,i._)("div",Mb,[Ub,(0,i.Wm)(qm,{style:{width:"60%"},min:1,max:20,step:1,value:(0,s.SU)(u).shadow.blur,"onUpdate:value":t[20]||(t[20]=e=>x({shadow:{...(0,s.SU)(u).shadow,blur:e}}))},null,8,["value"])]),(0,i._)("div",Wb,[Db,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).shadow.color,"onUpdate:modelValue":t[21]||(t[21]=e=>x({shadow:{...(0,s.SU)(u).shadow,color:e}}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(u).shadow.color},null,8,["color"])])),_:1})])],64)):(0,i.kq)("",!0),(0,i._)("div",Hb,[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[22]||(t[22]=e=>(0,s.SU)(h)(c.value))},{default:(0,i.w5)((()=>[(0,i.Uk)("应用主题到全部")])),_:1})]),(0,i.Wm)(Zc),Fb,(0,i._)("div",Ab,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(Nk),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"theme-item",key:t,style:(0,oe.j5)({backgroundColor:e.background,fontFamily:e.fontname})},[(0,i._)("div",$b,[(0,i._)("div",{class:"text",style:(0,oe.j5)({color:e.fontColor})},"文字 Aa",4),(0,i._)("div",Zb,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.colors,((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"color-block",key:t,style:(0,oe.j5)({backgroundColor:e})},null,4)))),128))]),(0,i._)("div",Ob,[(0,i._)("div",{class:"btn",onClick:t=>(0,s.SU)(v)(e)},"应用",8,Rb),(0,i._)("div",{class:"btn",onClick:t=>(0,s.SU)(m)(e)},"应用全局",8,zb)])])],4)))),128))])])}}});const Bb=(0,Vl.Z)(Pb,[["__scopeId","data-v-9a96acfa"]]);var Nb=Bb;const jb={class:"slide-animation-panel"},Yb={class:"animation-pool"},Vb=["onClick"],Jb={class:"animation-text"};var qb=(0,i.aZ)({__name:"SlideAnimationPanel",setup(e){const t=$(),{slides:l,currentSlide:a}=(0,o.Jk)(t),n=(0,i.Fl)((()=>a.value.turningMode||"slideY")),r=bk,{addHistorySnapshot:u}=da(),c=e=>{e!==n.value&&(t.updateSlide({turningMode:e}),u())},d=()=>{const e=l.value.map((e=>({...e,turningMode:a.value.turningMode})));t.setSlides(e),ta.success("已应用到全部"),u()};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",jb,[(0,i._)("div",Yb,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(r),(e=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["animation-item",{active:n.value===e.value}]),key:e.label,onClick:t=>c(e.value)},[(0,i._)("div",{class:(0,oe.C_)(["animation-block",e.value])},null,2),(0,i._)("div",Jb,(0,oe.zw)(e.label),1)],10,Vb)))),128))]),(0,i.Wm)(tp,{style:{width:"100%"},onClick:t[0]||(t[0]=e=>d())},{default:(0,i.w5)((()=>[(0,i.Uk)("应用到全部")])),_:1})]))}});const Xb=(0,Vl.Z)(qb,[["__scopeId","data-v-0562c530"]]);var Gb=Xb,Kb=()=>{const e=$(),{activeElementIdList:t,activeElementList:l}=(0,o.Jk)(R()),{currentSlide:a}=(0,o.Jk)(e),{addHistorySnapshot:n}=da(),i=o=>{const{minX:i,maxX:s,minY:r,maxY:u}=ke(l.value),c=JSON.parse(JSON.stringify(a.value.elements)),d={};for(const e of l.value)if(e.groupId&&!d[e.groupId]){const t=l.value.filter((t=>t.groupId===e.groupId));d[e.groupId]=ke(t)}if(o===ee.LEFT)c.forEach((e=>{if(t.value.includes(e.id))if(e.groupId){const t=d[e.groupId],l=t.minX-i;e.left=e.left-l}else if("rotate"in e&&e.rotate){const{offsetX:t}=we({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.left=i-t}else e.left=i}));else if(o===ee.RIGHT)c.forEach((e=>{if(t.value.includes(e.id))if(e.groupId){const t=d[e.groupId],l=t.maxX-s;e.left=e.left-l}else{const t="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){const{offsetX:l}=we({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.left=s-t+l}else e.left=s-t}}));else if(o===ee.TOP)c.forEach((e=>{if(t.value.includes(e.id))if(e.groupId){const t=d[e.groupId],l=t.minY-r;e.top=e.top-l}else if("rotate"in e&&e.rotate){const{offsetY:t}=we({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.top=r-t}else e.top=r}));else if(o===ee.BOTTOM)c.forEach((e=>{if(t.value.includes(e.id))if(e.groupId){const t=d[e.groupId],l=t.maxY-u;e.top=e.top-l}else{const t="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){const{offsetY:l}=we({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.top=u-t+l}else e.top=u-t}}));else if(o===ee.HORIZONTAL){const e=(i+s)/2;c.forEach((l=>{if(t.value.includes(l.id))if(l.groupId){const t=d[l.groupId],a=(t.maxX+t.minX)/2,n=a-e;l.left=l.left-n}else{const t="line"===l.type?Math.max(l.start[0],l.end[0]):l.width;l.left=e-t/2}}))}else if(o===ee.VERTICAL){const e=(r+u)/2;c.forEach((l=>{if(t.value.includes(l.id))if(l.groupId){const t=d[l.groupId],a=(t.maxY+t.minY)/2,n=a-e;l.top=l.top-n}else{const t="line"===l.type?Math.max(l.start[1],l.end[1]):l.height;l.top=e-t/2}}))}e.updateSlide({elements:c}),n()};return{alignActiveElement:i}},Qb=()=>{const e=$(),{activeElementIdList:t,activeElementList:l}=(0,o.Jk)(R()),{currentSlide:a}=(0,o.Jk)(e),{addHistorySnapshot:n}=da(),s=(0,i.Fl)((()=>{let e=0;const t=[];for(const a of l.value)a.groupId?t.includes(a.groupId)||(t.push(a.groupId),e+=1):e+=1;return e})),r=()=>{const{minX:o,maxX:i}=ke(l.value),s=JSON.parse(JSON.stringify(l.value)),r=JSON.parse(JSON.stringify(a.value.elements)),u=[];let c=[];for(const e of s)if(e.groupId){const t=c.find((t=>t.groupId===e.groupId));t?c=c.map((t=>t.groupId===e.groupId?{...t,els:[...t.els,e]}:t)):c.push({groupId:e.groupId,els:[e]})}else{const{minX:t,maxX:l}=xe(e);u.push({min:t,max:l,el:e})}const d=[];for(const e of c){const{minX:t,maxX:l}=ke(e.els);d.push({min:t,max:l,els:e.els})}const p=[...u,...d];p.sort(((e,t)=>e.min-t.min));let v=0;for(const e of p){const t=e.max-e.min;v+=t}const m=(i-o-v)/(p.length-1),h=[],f=p[0];let g={min:f.min,max:f.max};if("el"in f)h.push({pos:f.min,el:f.el});else for(const e of f.els){const{minX:t}=xe(e);h.push({pos:t,el:e})}for(let e=1;e{const{minY:o,maxY:i}=ke(l.value),s=JSON.parse(JSON.stringify(l.value)),r=JSON.parse(JSON.stringify(a.value.elements)),u=[];let c=[];for(const e of s)if(e.groupId){const t=c.find((t=>t.groupId===e.groupId));t?c=c.map((t=>t.groupId===e.groupId?{...t,els:[...t.els,e]}:t)):c.push({groupId:e.groupId,els:[e]})}else{const{minY:t,maxY:l}=xe(e);u.push({min:t,max:l,el:e})}const d=[];for(const e of c){const{minY:t,maxY:l}=ke(e.els);d.push({min:t,max:l,els:e.els})}const p=[...u,...d];p.sort(((e,t)=>e.min-t.min));let v=0;for(const e of p){const t=e.max-e.min;v+=t}const m=(i-o-v)/(p.length-1),h=[],f=p[0];let g={min:f.min,max:f.max};if("el"in f)h.push({pos:f.min,el:f.el});else for(const e of f.els){const{minY:t}=xe(e);h.push({pos:t,el:e})}for(let e=1;e{t.value?n(e):o(e)};return(e,n)=>{const o=(0,i.up)("IconAlignLeft"),p=(0,i.up)("IconAlignHorizontally"),v=(0,i.up)("IconAlignRight"),m=(0,i.up)("IconAlignTop"),h=(0,i.up)("IconAlignVertically"),f=(0,i.up)("IconAlignBottom"),g=(0,i.up)("IconGroup"),y=(0,i.up)("IconUngroup"),w=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",e_,[(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[0]||(n[0]=e=>d((0,s.SU)(ee).LEFT))},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1})),[[w,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[1]||(n[1]=e=>d((0,s.SU)(ee).HORIZONTAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(p)])),_:1})),[[w,"水平居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[2]||(n[2]=e=>d((0,s.SU)(ee).RIGHT))},{default:(0,i.w5)((()=>[(0,i.Wm)(v)])),_:1})),[[w,"右对齐"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[3]||(n[3]=e=>d((0,s.SU)(ee).TOP))},{default:(0,i.w5)((()=>[(0,i.Wm)(m)])),_:1})),[[w,"上对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[4]||(n[4]=e=>d((0,s.SU)(ee).VERTICAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(h)])),_:1})),[[w,"垂直居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[5]||(n[5]=e=>d((0,s.SU)(ee).BOTTOM))},{default:(0,i.w5)((()=>[(0,i.Wm)(f)])),_:1})),[[w,"下对齐"]])])),_:1}),(0,s.SU)(r)>2?((0,i.wg)(),(0,i.j4)(Kf,{key:0,class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:n[6]||(n[6]=e=>(0,s.SU)(u)())},{default:(0,i.w5)((()=>[(0,i.Uk)("水平均匀分布")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:n[7]||(n[7]=e=>(0,s.SU)(c)())},{default:(0,i.w5)((()=>[(0,i.Uk)("垂直均匀分布")])),_:1})])),_:1})):(0,i.kq)("",!0),(0,i.Wm)(Zc),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{disabled:!(0,s.SU)(t),onClick:n[8]||(n[8]=e=>(0,s.SU)(l)()),style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(g,{style:{"margin-right":"3px"}}),(0,i.Uk)("组合")])),_:1},8,["disabled"]),(0,i.Wm)(tp,{disabled:(0,s.SU)(t),onClick:n[9]||(n[9]=e=>(0,s.SU)(a)()),style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(y,{style:{"margin-right":"3px"}}),(0,i.Uk)("取消组合")])),_:1},8,["disabled"])])),_:1})])}}});const l_=(0,Vl.Z)(t_,[["__scopeId","data-v-e95a4c6c"]]);var a_=l_;const n_=[{key:"letter",label:"字母",children:["α","β","γ","δ","ϵ","ε","ζ","η","θ","ϑ","ι","κ","λ","μ","ν","ξ","π","ϖ","ρ","ϱ","σ","ς","τ","υ","ϕ","φ","χ","ψ","ω","Γ","Δ","Θ","Λ","Ξ","Π","Σ","Υ","Φ","Ψ","Ω","𝐀","𝐁","𝐂","𝐃","𝐄","𝐅","𝐆","𝐇","𝐈","𝐉","𝐊","𝐋","𝐌","𝐍","𝐎","𝐏","𝐐","𝐑","𝐒","𝐓","𝐔","𝐕","𝐖","𝐗","𝐘","𝐙","𝐚","𝐛","𝐜","𝐝","𝐞","𝐟","𝐠","𝐡","𝐢","𝐣","𝐤","𝐥","𝐦","𝐧","𝐨","𝐩","𝐪","𝐫","𝐬","𝐭","𝐮","𝐯","𝐰","𝐱","𝐲","𝐳","𝓐","𝓑","𝓒","𝓓","𝓔","𝓕","𝓖","𝓗","𝓘","𝓙","𝓚","𝓛","𝓜","𝓝","𝓞","𝓟","𝓠","𝓡","𝓢","𝓣","𝓤","𝓥","𝓦","𝓧","𝓨","𝓩","𝓪","𝓫","𝓬","𝓭","𝓮","𝓯","𝓰","𝓱","𝓲","𝓳","𝓴","𝓵","𝓶","𝓷","𝓸","𝓹","𝓺","𝓻","𝓼","𝓽","𝓾","𝓿","𝔀","𝔁","𝔂","𝔃"]},{key:"number",label:"序号",children:["①","②","③","④","⑤","⑥","⑦","⑧","⑨","⑩","⑪","⑫","⑬","⑭","⑮","⑯","⑰","⑱","⑲","⑳","⑴","⑵","⑶","⑷","⑸","⑹","⑺","⑻","⑼","⑽","⑾","⑿","⒀","⒁","⒂","⒃","⒄","⒅","⒆","⒇","º","¹","²","³","⁴","⁵","⁶","⁷","⁸","⁹","₀","₁","₂","₃","₄","₅","₆","₇","₈","₉","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ","Ⅼ","Ⅽ","Ⅾ","Ⅿ","ⅰ","ⅱ","ⅲ","ⅳ","ⅴ","ⅵ","ⅶ","ⅷ","ⅸ","ⅹ","ⅺ","ⅻ","ⅼ","ⅽ","ⅾ","ⅿ","ↀ","ↁ","ↂ","㊀","㊁","㊂","㊃","㊄","㊅","㊆","㊇","㊈","㊉","㈠","㈡","㈢","㈣","㈤","㈥","㈦","㈧","㈨","㈩","𝟘","𝟙","𝟚","𝟛","𝟜","𝟝","𝟞","𝟟","𝟠","𝟡"]},{key:"math",label:"数学",children:["+","-","×","÷","=","~","¬","±","%","°","ǃ","‰","‱","½","⅓","⅔","¼","¾","<",">","l","o","g","l","g","l","n","⨂","⨁","⨄","⨃","⨅","⨆","√","∛","∜","∝","∞","∟","∠","∡","∢","∧","∨","∩","∪","∫","∬","∭","∮","∯","∰","∱","∲","∳","∴","∵","∼","∽","∾","∿","≃","≄","≅","≆","≇","≈","≊","≋","≌","≍","≎","≏","≐","≑","≒","≓","≔","≕","≤","≥","≦","≧","≨","≩","≪","≫","≺","≻","≼","≽","≾","≿","⊀","⊁","⊂","⊃","⊄","⊅","⊆","⊇","⊈","⊉","⊊","⊋","⊏","⊐","⊑","⊒","⊓","⊔","⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯","⊲","⊳","⊴","⊵","⋀","⋁","⋂","⋃","⋉","⋊","⋋","⋌","⟨","⟩","⟪","⟫","⟮","⟯","⧼","⧽","⦰"]},{key:"arrow",label:"箭头",children:["←","↑","→","↓","↔","↕","↖","↗","↘","↙","↚","↛","↜","↝","↞","↟","↠","↡","↢","↣","↤","↥","↦","↧","↨","↫","↬","↭","↮","↯","↰","↱","↲","↳","↴","↵","↶","↷","↸","↹","↺","↻","↼","↽","↾","↿","⇀","⇁","⇂","⇃","⇄","⇅","⇆","⇇","⇈","⇉","⇊","⇋","⇌","⇍","⇎","⇏","⇐","⇑","⇒","⇓","⇔","⇕","⇖","⇗","⇘","⇙","⇚","⇛","⇜","⇝","⇞","⇟","⇠","⇡","⇢","⇣","⇤","⇥","⇦","⇧","⇨","⇩","⇪","⇫","⇬","⇭","⇮","⇯","⇰","⇱","⇲","⇳","⇴","⇵","⇶","⇷","⇸","⇹","⇺","⇻","⇼","⇽","⇾","⇿"]},{key:"graph",label:"图形",children:["▢","▣","▤","▥","▦","▧","▨","▩","▭","▮","▯","▰","▱","▲","▷","▼","◁","◈","◉","◍","◐","◑","◒","◓","◔","◕","◧","◨","◩","◪","◫","◬","◭","◮"]}],o_={class:"symbol-panel"},i_={class:"pool"},s_=["onClick"],r_={class:"symbol"};var u_=(0,i.aZ)({__name:"SymbolPanel",setup(e){const t=(0,s.iH)(n_[0].key),l=(0,i.Fl)((()=>{const e=n_.find((e=>e.key===t.value));return e?.children||[]})),a=n_.map((e=>({key:e.key,label:e.label}))),n=e=>{Oi.emit(Ai.RICH_TEXT_COMMAND,{action:{command:"insert",value:e}})};return(e,o)=>((0,i.wg)(),(0,i.iD)("div",o_,[(0,i.Wm)(Kd,{tabs:(0,s.SU)(a),value:t.value,"onUpdate:value":o[0]||(o[0]=e=>t.value=e),tabsStyle:{marginBottom:"8px"},spaceBetween:""},null,8,["tabs","value"]),(0,i._)("div",i_,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(l.value,((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"symbol-item",key:t,onClick:t=>n(e)},[(0,i._)("div",r_,(0,oe.zw)(e),1)],8,s_)))),128))])]))}});const c_=(0,Vl.Z)(u_,[["__scopeId","data-v-2bb5f257"]]);var d_=c_;const p_={class:"toolbar"},v_={class:"content"};var m_=(0,i.aZ)({__name:"index",setup(e){const t=R(),{activeElementIdList:l,handleElement:n,toolbarState:r}=(0,o.Jk)(t),u=(0,i.Fl)((()=>"text"===n.value?.type?[{label:"样式",key:a.EL_STYLE},{label:"符号",key:a.SYMBOL},{label:"位置",key:a.EL_POSITION},{label:"动画",key:a.EL_ANIMATION}]:[{label:"样式",key:a.EL_STYLE},{label:"位置",key:a.EL_POSITION},{label:"动画",key:a.EL_ANIMATION}])),c=[{label:"设计",key:a.SLIDE_DESIGN},{label:"切换",key:a.SLIDE_ANIMATION},{label:"动画",key:a.EL_ANIMATION}],d=[{label:"样式",key:a.EL_STYLE},{label:"位置",key:a.MULTI_POSITION}],p=e=>{t.setToolbarState(e)},v=(0,i.Fl)((()=>l.value.length?l.value.length>1?d:u.value:c));(0,i.YP)(v,(()=>{const e=v.value.map((e=>e.key));e.includes(r.value)||t.setToolbarState(e[0])}));const m=(0,i.Fl)((()=>{const e={[a.EL_STYLE]:lk,[a.EL_POSITION]:hk,[a.EL_ANIMATION]:Bk,[a.SLIDE_DESIGN]:Nb,[a.SLIDE_ANIMATION]:Gb,[a.MULTI_POSITION]:a_,[a.SYMBOL]:d_};return e[r.value]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",p_,[(0,i.Wm)(Kd,{tabs:v.value,value:(0,s.SU)(r),card:"","onUpdate:value":t[0]||(t[0]=e=>p(e))},null,8,["tabs","value"]),(0,i._)("div",v_,[((0,i.wg)(),(0,i.j4)((0,i.LL)(m.value)))])]))}});const h_=(0,Vl.Z)(m_,[["__scopeId","data-v-6c9ece83"]]);var f_=h_;const g_={class:"editor"};var y_=(0,i.aZ)({__name:"Editor",props:{value:{}},emits:["update"],setup(e,{expose:t,emit:l}){const a=e,n=l,o=R(),r=(0,s.iH)();let c;const v=(0,s.iH)(),m=(0,s.iH)(),h=(0,s.iH)(),f=()=>{m.value&&m.value.hide()},g=(0,D.debounce)((function(){n("update",c.dom.innerHTML)}),300,{trailing:!0}),y=()=>{o.setDisableHotkeysState(!0)},w=()=>{o.setDisableHotkeysState(!1)},x=()=>{if(!c)return;const{doc:e,tr:t}=c.state;c.dispatch(t.replaceRangeWith(0,e.content.size,Hi(a.value)))};t({updateTextContent:x});const k=()=>{const e=window.getSelection();if(!e||!e.anchorNode||!e.focusNode||e.isCollapsed||"Caret"===e.type||"None"===e.type)return;const t=e.getRangeAt(0);if(m.value){v.value=C(c);const{x:e,y:l,left:a,top:n}=t.getBoundingClientRect();m.value.setProps({getReferenceClientRect:()=>({x:e,y:l,left:a,top:n,height:0,width:0,right:a,bottom:n})}),m.value.show()}},b=(e,t)=>{if("color"===e&&t){const e=c.state.schema.marks.forecolor.create({color:t});d(c),p(c,e)}else if("backcolor"===e&&t){const e=c.state.schema.marks.backcolor.create({backcolor:t});d(c),p(c,e)}else if("bold"===e)d(c),(0,u.w9)(c.state.schema.marks.strong)(c.state,c.dispatch);else if("em"===e)d(c),(0,u.w9)(c.state.schema.marks.em)(c.state,c.dispatch);else if("underline"===e)d(c),(0,u.w9)(c.state.schema.marks.underline)(c.state,c.dispatch);else if("strikethrough"===e)d(c),(0,u.w9)(c.state.schema.marks.strikethrough)(c.state,c.dispatch);else if("bulletList"===e){const{bullet_list:e,list_item:t}=c.state.schema.nodes;Yi(e,t,"")(c.state,c.dispatch)}else if("orderedList"===e){const{ordered_list:e,list_item:t}=c.state.schema.nodes;Yi(e,t,"")(c.state,c.dispatch)}else if("clear"===e){d(c);const{$from:e,$to:t}=c.state.selection;c.dispatch(c.state.tr.removeMark(e.pos,t.pos))}c.focus(),g(),v.value=C(c)};return(0,i.bv)((()=>{c=Fi(r.value,a.value,{handleDOMEvents:{focus:y,blur:w,mouseup:k,mousedown:()=>{window.getSelection()?.removeAllRanges(),f()},keydown:f,input:g}},{placeholder:"点击输入演讲者备注"}),m.value=(0,rn.ZP)(r.value,{duration:0,content:h.value,interactive:!0,trigger:"manual",placement:"top-start",hideOnClick:"toggle",offset:[0,6]})})),(0,i.Ah)((()=>{c&&c.destroy()})),(e,t)=>{const l=(0,i.up)("IconTextBold"),a=(0,i.up)("IconTextItalic"),n=(0,i.up)("IconTextUnderline"),o=(0,i.up)("IconStrikethrough"),s=(0,i.up)("IconText"),u=(0,i.up)("IconHighLight"),c=(0,i.up)("IconList"),d=(0,i.up)("IconOrderedList"),p=(0,i.up)("IconFormat"),m=(0,i.Q2)("click-outside");return(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",g_,[(0,i._)("div",{class:"prosemirror-editor",ref_key:"editorViewRef",ref:r},null,512),(0,i._)("div",{class:"menu",ref_key:"menuRef",ref:h},[(0,i._)("button",{class:(0,oe.C_)({active:v.value?.bold}),onClick:t[0]||(t[0]=e=>b("bold"))},[(0,i.Wm)(l)],2),(0,i._)("button",{class:(0,oe.C_)({active:v.value?.em}),onClick:t[1]||(t[1]=e=>b("em"))},[(0,i.Wm)(a)],2),(0,i._)("button",{class:(0,oe.C_)({active:v.value?.underline}),onClick:t[2]||(t[2]=e=>b("underline"))},[(0,i.Wm)(n)],2),(0,i._)("button",{class:(0,oe.C_)({active:v.value?.strikethrough}),onClick:t[3]||(t[3]=e=>b("strikethrough"))},[(0,i.Wm)(o)],2),(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:v.value?.color,"onUpdate:modelValue":t[4]||(t[4]=e=>b("color",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i._)("button",null,[(0,i.Wm)(s)])])),_:1}),(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:v.value?.backcolor,"onUpdate:modelValue":t[5]||(t[5]=e=>b("backcolor",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i._)("button",null,[(0,i.Wm)(u)])])),_:1}),(0,i._)("button",{class:(0,oe.C_)({active:v.value?.bulletList}),onClick:t[6]||(t[6]=e=>b("bulletList"))},[(0,i.Wm)(c)],2),(0,i._)("button",{class:(0,oe.C_)({active:v.value?.orderedList}),onClick:t[7]||(t[7]=e=>b("orderedList"))},[(0,i.Wm)(d)],2),(0,i._)("button",{onClick:t[8]||(t[8]=e=>b("clear"))},[(0,i.Wm)(p)])],512)])),[[m,f]])}}});const w_=(0,Vl.Z)(y_,[["__scopeId","data-v-31d96c24"]]);var x_=w_;const k_={class:"remark"};var b_=(0,i.aZ)({__name:"index",props:{height:{}},emits:["update:height"],setup(e,{emit:t}){const l=e,a=t,n=$(),{currentSlide:r}=(0,o.Jk)(n),u=(0,s.iH)();(0,i.YP)((()=>r.value.id),(()=>{(0,i.Y3)((()=>{u.value.updateTextContent()}))}),{immediate:!0});const c=(0,i.Fl)((()=>r.value?.remark||"")),d=e=>{n.updateSlide({remark:e})},p=e=>{let t=!0;const n=e.pageY,o=l.height;document.onmousemove=e=>{if(!t)return;const l=e.pageY,i=l-n;let s=-i+o;s<40&&(s=40),s>360&&(s=360),a("update:height",s)},document.onmouseup=()=>{t=!1,document.onmousemove=null,document.onmouseup=null}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",k_,[(0,i._)("div",{class:"resize-handler",onMousedown:t[0]||(t[0]=e=>p(e))},null,32),(0,i.Wm)(x_,{value:c.value,ref_key:"editorRef",ref:u,onUpdate:t[1]||(t[1]=e=>d(e))},null,8,["value"])]))}});const __=(0,Vl.Z)(b_,[["__scopeId","data-v-458a41b9"]]);var I_=__,S_=l(3162),C_=l(3907);const L_=["style","script","template"],T_=["html","head","body","p","dt","dd","li","option","thead","th","tbody","tr","td","tfoot","colgroup"],E_={li:["ul","ol","menu"],dt:["dl"],dd:["dl"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table"],td:["table"]},M_=["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],U_=(e,t)=>{const l=t-e.position;W_(e,l)},W_=(e,t)=>{e.position=e.position+t},D_=(e,t)=>{const l=!1;while(!l){const l=e.indexOf("<",t);if(-1===l)return l;const a=e.charAt(l+1);if("/"===a||"!"===a||/[A-Za-z0-9]/.test(a))return l;t=l+1}return-1},H_=e=>{const{str:t}=e;let l=D_(t,e.position);if(l===e.position)return;-1===l&&(l=t.length);const a=t.slice(e.position,l);U_(e,l),e.tokens.push({type:"text",content:a})},F_=e=>{const{str:t}=e;W_(e,4);let l=t.indexOf("--\x3e",e.position),a=l+3;-1===l&&(l=a=t.length);const n=t.slice(e.position,l);U_(e,a),e.tokens.push({type:"comment",content:n})},A_=e=>{const{str:t}=e,l=t.length;let a=e.position;while(a"===e);if(l)break;a++}let n=a+1;while(n"===e);if(!l)break;n++}U_(e,n);const o=t.slice(a,n);return e.tokens.push({type:"tag",content:o}),o},$_=e=>{const{str:t,tokens:l}=e;let a=e.position,n=null,o=a;const i=[],s=t.length;while(a"===e;if(l){a!==o&&i.push(t.slice(o,a));break}const s=/\s/.test(e);if(s){a!==o&&i.push(t.slice(o,a)),o=a+1,a++;continue}const r="'"===e||'"'===e;r?(n=e,a++):a++}U_(e,a);const r="attribute";for(let u=0;u1){const a=e+t;l.push({type:r,content:a}),u+=1;continue}const a=i[u+2];if(u+=1,a){const t=e+"="+a;l.push({type:r,content:t}),u+=1;continue}}}if((0,D.endsWith)(e,"=")){const t=i[u+1];if(t&&-1===t.indexOf("=")){const a=e+t;l.push({type:r,content:a}),u+=1;continue}const a=e.slice(0,-1);l.push({type:r,content:a})}else l.push({type:r,content:e})}},Z_=(e,t)=>{const{str:l,tokens:a}=t,n=e.toLowerCase(),o=l.length;let i=t.position;while(i{const{str:t}=e,l=t.charAt(e.position+1),a="/"===l;W_(e,a?2:1),e.tokens.push({type:"tag-start",close:a});const n=A_(e);$_(e);const o=t.charAt(e.position),i="/"===o;return W_(e,i?2:1),e.tokens.push({type:"tag-end",close:i}),n},R_=e=>{const t=e.str,l=t.length;while(e.position{const t={str:e,position:0,tokens:[]};return R_(t),t.tokens},P_=e=>{const t={tagName:null,children:[]},l={tokens:e,cursor:0,stack:[t]};return j_(l),t.children},B_=(e,t)=>{const l=E_[e];if(l){let a=t.length-1;while(a>=0){const n=t[a].tagName;if(n===e)break;if(n&&l.includes(n))return!0;a--}}return!1},N_=(e,t)=>{e.splice(t)},j_=e=>{const{stack:t,tokens:l}=e;let{cursor:a}=e,n=t[t.length-1].children;const o=l.length;while(a-1)if(t[e].tagName===s){n=!0;break}while(a0){if(s===t[e].tagName){N_(t,e);const l=e-1;n=t[l].children;break}e-=1}}const c=[];let d;while(a{const l=e.indexOf(t);return-1===l?[e]:[e.slice(0,l),e.slice(l+t.length)]},V_=e=>{const t=e.charAt(0),l=e.length-1,a='"'===t||"'"===t;return a&&t===e.charAt(l)?e.slice(1,l):e},J_=e=>e.map((e=>{const t=Y_(e.trim(),"="),l=t[0],a="string"===typeof t[1]?V_(t[1]):null;return{key:l,value:a}})),q_=e=>e.map((e=>{if("element"===e.type){const t=q_(e.children),l={type:"element",tagName:e.tagName.toLowerCase(),attributes:J_(e.attributes),children:t};return l}const t={type:e.type,content:e.content};return t})),X_=e=>{const t=z_(e),l=P_(t);return q_(l)};var G_=l(5851),K_=l(7943);const Q_={1:"Z",2:"M",4:"H",8:"V",16:"L",32:"C",64:"S",128:"Q",256:"T",512:"A"},eI=e=>{const t=new G_.OU(e),l=[];for(const a of t.commands){const e=Q_[a.type];if(2!==a.type&&16!==a.type||l.push({x:a.x,y:a.y,relative:a.relative,type:e}),32===a.type)l.push({x:a.x,y:a.y,curve:{type:"cubic",x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2},relative:a.relative,type:e});else if(128===a.type)l.push({x:a.x,y:a.y,curve:{type:"quadratic",x1:a.x1,y1:a.y1},relative:a.relative,type:e});else if(512===a.type){const e=l[l.length-1];if(!["M","L","Q","C"].includes(e.type))continue;const t=(0,K_.Z)({px:e.x,py:e.y,cx:a.x,cy:a.y,rx:a.rX,ry:a.rY,xAxisRotation:a.xRot,largeArcFlag:a.lArcFlag,sweepFlag:a.sweepFlag});for(const a of t)l.push({x:a.x,y:a.y,curve:{type:"cubic",x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2},relative:!1,type:"C"})}else{if(1!==a.type)continue;l.push({close:!0,type:e})}}return l},tI="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",lI="data:image/svg+xml;base64,",aI=e=>{e=e.replace(/\r\n/g,"\n");let t="";for(let l=0;l127&&a<2048?(t+=String.fromCharCode(a>>6|192),t+=String.fromCharCode(63&a|128)):(t+=String.fromCharCode(a>>12|224),t+=String.fromCharCode(a>>6&63|128),t+=String.fromCharCode(63&a|128))}return t},nI=e=>{let t,l,a,n,o,i,s,r="",u=0;e=aI(e);while(u>2,o=(3&t)<<4|l>>4,i=(15&l)<<2|a>>6,s=63&a,isNaN(l)?i=s=64:isNaN(a)&&(s=64),r=r+tI.charAt(n)+tI.charAt(o)+tI.charAt(i)+tI.charAt(s);return r},oI=e=>{const t=new XMLSerializer,l=t.serializeToString(e);return lI+nI(l)},iI=100,sI=.75;var rI=()=>{const e=$(),{slides:t,theme:l,viewportRatio:a,title:n}=(0,o.Jk)(e),i=(0,s.iH)(!1),r=(e,t,l,a=!0)=>{i.value=!0;const o="png"===t?sh.YM:sh.hi,s=e.querySelectorAll("foreignObject [xmlns]");s.forEach((e=>e.removeAttribute("xmlns"))),setTimeout((()=>{const s={quality:l,width:1600};a&&(s.fontEmbedCSS=""),o(e,s).then((e=>{i.value=!1,(0,S_.saveAs)(e,`${n.value}.${t}`)})).catch((()=>{i.value=!1,ta.error("导出图片失败")}))}),200)},u=e=>{const t=new Blob([pe(JSON.stringify(e))],{type:""});(0,S_.saveAs)(t,`${n.value}.pptist`)},c=()=>{const e=new Blob([JSON.stringify(t.value)],{type:""});(0,S_.saveAs)(e,`${n.value}.json`)},d=e=>{const t=(0,W.Z)(e),l=t.getAlpha(),a=0===l?"#ffffff":t.setAlpha(1).toHexString();return{alpha:l,color:a}},p=e=>{const t=X_(e);let l=!1,a=0;const n=[],o=(e,t={})=>{for(const i of e){const e="tagName"in i&&["div","li","p"].includes(i.tagName);if(e&&n.length){const e=n[n.length-1];e.options||(e.options={}),e.options.breakLine=!0}const s={...t},r="attributes"in i?i.attributes.find((e=>"style"===e.key)):null;if(r&&r.value){const e=r.value.split(";");for(const t of e){const[e,l]=t.split(": "),[a,n]=[(0,D.trim)(e),(0,D.trim)(l)];a&&n&&(s[a]=n)}}if("tagName"in i){if("em"===i.tagName&&(s["font-style"]="italic"),"strong"===i.tagName&&(s["font-weight"]="bold"),"sup"===i.tagName&&(s["vertical-align"]="super"),"sub"===i.tagName&&(s["vertical-align"]="sub"),"a"===i.tagName){const e=i.attributes.find((e=>"href"===e.key));s["href"]=e?.value||""}if("ul"===i.tagName&&(s["list-type"]="ul"),"ol"===i.tagName&&(s["list-type"]="ol"),"li"===i.tagName&&(l=!0),"p"===i.tagName&&"attributes"in i){const e=i.attributes.find((e=>"data-indent"===e.key));e&&e.value&&(a=+e.value)}}if("tagName"in i&&"br"===i.tagName)n.push({text:"",options:{breakLine:!0}});else if("content"in i){const e=i.content.replace(/ /g," ").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&").replace(/\n/g,""),t={};s["font-size"]&&(t.fontSize=parseInt(s["font-size"])*sI),s["color"]&&(t.color=d(s["color"]).color),s["background-color"]&&(t.highlight=d(s["background-color"]).color),s["text-decoration-line"]&&(-1!==s["text-decoration-line"].indexOf("underline")&&(t.underline={color:t.color||"#000000",style:"sng"}),-1!==s["text-decoration-line"].indexOf("line-through")&&(t.strike="sngStrike")),s["text-decoration"]&&(-1!==s["text-decoration"].indexOf("underline")&&(t.underline={color:t.color||"#000000",style:"sng"}),-1!==s["text-decoration"].indexOf("line-through")&&(t.strike="sngStrike")),s["vertical-align"]&&("super"===s["vertical-align"]&&(t.superscript=!0),"sub"===s["vertical-align"]&&(t.subscript=!0)),s["text-align"]&&(t.align=s["text-align"]),s["font-weight"]&&(t.bold="bold"===s["font-weight"]),s["font-style"]&&(t.italic="italic"===s["font-style"]),s["font-family"]&&(t.fontFace=s["font-family"]),s["href"]&&(t.hyperlink={url:s["href"]}),l&&"ol"===s["list-type"]&&(t.bullet={type:"number",indent:1.25*(t.fontSize||20)},t.paraSpaceBefore=.1,l=!1),l&&"ul"===s["list-type"]&&(t.bullet={indent:1.25*(t.fontSize||20)},t.paraSpaceBefore=.1,l=!1),a&&(t.indentLevel=a,a=0),n.push({text:e,options:t})}else"children"in i&&o(i.children,s)}};return o(t),n},v=(e,t={x:1,y:1})=>e.map((e=>{if(void 0!==e.close)return{close:!0};if("M"===e.type)return{x:e.x/iI*t.x,y:e.y/iI*t.y,moveTo:!0};if(e.curve){if("cubic"===e.curve.type)return{x:e.x/iI*t.x,y:e.y/iI*t.y,curve:{type:"cubic",x1:e.curve.x1/iI*t.x,y1:e.curve.y1/iI*t.y,x2:e.curve.x2/iI*t.x,y2:e.curve.y2/iI*t.y}};if("quadratic"===e.curve.type)return{x:e.x/iI*t.x,y:e.y/iI*t.y,curve:{type:"quadratic",x1:e.curve.x1/iI*t.x,y1:e.curve.y1/iI*t.y}}}return{x:e.x/iI*t.x,y:e.y/iI*t.y}})),m=e=>{const t=d(e.color),{h:l,v:a}=e;let n=4,o=45;return 0===l&&0===a?(n=4,o=45):0===l?a>0?(n=a,o=90):(n=-a,o=270):0===a?l>0?(n=l,o=1):(n=-l,o=180):l>0&&a>0?(n=Math.max(l,a),o=45):l>0&&a<0?(n=Math.max(l,-a),o=315):l<0&&a>0?(n=Math.max(-l,a),o=135):l<0&&a<0&&(n=Math.max(-l,-a),o=225),{type:"outer",color:t.color.replace("#",""),opacity:t.alpha,blur:e.blur*sI,offset:n,angle:o}},h=e=>{const t=d(e?.color||"#000000");return{color:t.color,transparency:100*(1-t.alpha),width:(e.width||1)*sI,dashType:"solid"===e.style?"solid":"dash"}},f=e=>{const{type:l,target:a}=e;if("web"===l)return{url:a};if("slide"===l){const e=t.value.findIndex((e=>e.id===a));if(-1!==e)return{slide:e+1}}return null},g=(e,t,o)=>{i.value=!0;const s=new C_.Z;if(.625===a.value?s.layout="LAYOUT_16x10":.75===a.value?s.layout="LAYOUT_4x3":.70710678===a.value?(s.defineLayout({name:"A3",width:10,height:7.0710678}),s.layout="A3"):s.layout="LAYOUT_16x9",t){const{color:e,alpha:t}=d(l.value.backgroundColor);s.defineSlideMaster({title:"PPTIST_MASTER",background:{color:e,transparency:100*(1-t)}})}for(const l of e){const e=s.addSlide();if(l.background){const t=l.background;if("image"===t.type&&t.image)e.background={data:t.image};else if("solid"===t.type&&t.color){const l=d(t.color);e.background={color:l.color,transparency:100*(1-l.alpha)}}else if("gradient"===t.type&&t.gradientColor){const[l,a]=t.gradientColor,n=W.Z.mix(l,a).toHexString(),o=d(n);e.background={color:o.color,transparency:100*(1-o.alpha)}}}if(l.remark&&e.addNotes(l.remark),l.elements)for(const t of l.elements)if("text"===t.type){const l=p(t.content),a={x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI,fontSize:20*sI,fontFace:"微软雅黑",color:"#000000",valign:"top",margin:10*sI,paraSpaceBefore:5*sI,lineSpacingMultiple:1.2,autoFit:!0};if(t.rotate&&(a.rotate=t.rotate),t.wordSpace&&(a.charSpacing=t.wordSpace*sI),t.lineHeight&&(a.lineSpacingMultiple=t.lineHeight/1.25),t.fill){const e=d(t.fill),l=void 0===t.opacity?1:t.opacity;a.fill={color:e.color,transparency:100*(1-e.alpha*l)}}t.defaultColor&&(a.color=d(t.defaultColor).color),t.defaultFontName&&(a.fontFace=t.defaultFontName),t.shadow&&(a.shadow=m(t.shadow)),t.outline?.width&&(a.line=h(t.outline)),void 0!==t.opacity&&(a.transparency=100*(1-t.opacity)),void 0!==t.paragraphSpace&&(a.paraSpaceBefore=t.paragraphSpace*sI),t.vertical&&(a.vert="eaVert"),e.addText(l,a)}else if("image"===t.type){const l={path:t.src,x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI};if(t.flipH&&(l.flipH=t.flipH),t.flipV&&(l.flipV=t.flipV),t.rotate&&(l.rotate=t.rotate),t.link){const e=f(t.link);e&&(l.hyperlink=e)}if(t.filters?.opacity&&(l.transparency=100-parseInt(t.filters?.opacity)),t.clip){"ellipse"===t.clip.shape&&(l.rounding=!0);const[e,a]=t.clip.range,[n,o]=e,[i,s]=a,r=t.width/((i-n)/iI),u=t.height/((s-o)/iI);l.w=r/iI,l.h=u/iI,l.sizing={type:"crop",x:n/iI*r/iI,y:o/iI*u/iI,w:(i-n)/iI*r/iI,h:(s-o)/iI*u/iI}}e.addImage(l)}else if("shape"===t.type){if(t.special){const l=document.querySelector(`.thumbnail-list .base-element-${t.id} svg`),a=oI(l),n={data:a,x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI};if(t.rotate&&(n.rotate=t.rotate),t.link){const e=f(t.link);e&&(n.hyperlink=e)}e.addImage(n)}else{const l={x:t.width/t.viewBox[0],y:t.height/t.viewBox[1]},a=v(eI(t.path),l),n=d(t.fill),o=void 0===t.opacity?1:t.opacity,i={x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI,fill:{color:n.color,transparency:100*(1-n.alpha*o)},points:a};if(t.flipH&&(i.flipH=t.flipH),t.flipV&&(i.flipV=t.flipV),t.shadow&&(i.shadow=m(t.shadow)),t.outline?.width&&(i.line=h(t.outline)),t.rotate&&(i.rotate=t.rotate),t.link){const e=f(t.link);e&&(i.hyperlink=e)}e.addShape("custGeom",i)}if(t.text){const l=p(t.text.content),a={x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI,fontSize:20*sI,fontFace:"微软雅黑",color:"#000000",paraSpaceBefore:5*sI,valign:t.text.align};t.rotate&&(a.rotate=t.rotate),t.text.defaultColor&&(a.color=d(t.text.defaultColor).color),t.text.defaultFontName&&(a.fontFace=t.text.defaultFontName),e.addText(l,a)}}else if("line"===t.type){const l=Ce(t),a=v(eI(l)),{minX:n,maxX:o,minY:i,maxY:s}=xe(t),r=d(t.color),u={x:t.left/iI,y:t.top/iI,w:(o-n)/iI,h:(s-i)/iI,line:{color:r.color,transparency:100*(1-r.alpha),width:t.width*sI,dashType:"solid"===t.style?"solid":"dash",beginArrowType:t.points[0]?"arrow":"none",endArrowType:t.points[1]?"arrow":"none"},points:a};t.shadow&&(u.shadow=m(t.shadow)),e.addShape("custGeom",u)}else if("chart"===t.type){const l=[];for(let e=0;ed(e).color));else if(1===t.themeColor.length)a=(0,W.Z)(t.themeColor[0]).analogous(10).map((e=>d(e.toHexString()).color));else{const e=t.themeColor.length,l=(0,W.Z)(t.themeColor[e-1]).analogous(11-e).map((e=>e.toHexString()));a=[...t.themeColor.slice(0,e-1),...l].map((e=>d(e).color))}const n={x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI,chartColors:"pie"===t.chartType?a:a.slice(0,t.data.series.length)};t.fill&&(n.plotArea={fill:{color:d(t.fill).color}}),t.legend&&(n.showLegend=!0,n.legendPos="top"===t.legend?"t":"b",n.legendColor=d(t.gridColor||"#000000").color,n.legendFontSize=14*sI);let o=s.ChartType.bar;"bar"===t.chartType?(o=s.ChartType.bar,n.barDir=t.options?.horizontalBars?"bar":"col"):"line"===t.chartType?(t.options?.showArea?o=s.ChartType.area:!1===t.options?.showLine?(o=s.ChartType.scatter,l.unshift({name:"X-Axis",values:Array(t.data.series[0].length).fill(0).map(((e,t)=>t))}),n.lineSize=0):o=s.ChartType.line,t.options?.lineSmooth&&(n.lineSmooth=!0)):"pie"===t.chartType&&(t.options?.donut?(o=s.ChartType.doughnut,n.holeSize=75):o=s.ChartType.pie),e.addChart(o,l,n)}else if("table"===t.type){const l=[];for(let e=0;e1||n.rowspan>1)for(let a=e;ad(e))));for(let e=0;et.width*e/iI))};t.theme&&(s.fill={color:"#ffffff"}),t.outline.width&&t.outline.color&&(s.border={type:"solid"===t.outline.style?"solid":"dash",pt:t.outline.width*sI,color:d(t.outline.color).color}),e.addTable(a,s)}else if("latex"===t.type){const l=document.querySelector(`.thumbnail-list .base-element-${t.id} svg`),a=oI(l),n={data:a,x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI};if(t.link){const e=f(t.link);e&&(n.hyperlink=e)}e.addImage(n)}else if(!o&&("video"===t.type||"audio"===t.type)){const l={x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI,path:t.src,type:t.type};"video"===t.type&&t.poster&&(l.cover=t.poster);const a=t.src.match(/\.([a-zA-Z0-9]+)(?:[\?#]|$)/);a&&a[1]?l.extn=a[1]:t.ext&&(l.extn=t.ext);const n=["avi","mp4","m4v","mov","wmv"],o=["mp3","m4a","mp4","wav","wma"];l.extn&&[...n,...o].includes(l.extn)&&e.addMedia(l)}}setTimeout((()=>{s.writeFile({fileName:`${n.value}.pptx`}).then((()=>i.value=!1)).catch((()=>{i.value=!1,ta.error("导出失败")}))}),200)};return{exporting:i,exportImage:r,exportJSON:c,exportSpecificFile:u,exportPPTX:g}};const uI=e=>((0,i.dD)("data-v-1df3f398"),e=e(),(0,i.Cn)(),e),cI={class:"export-img-dialog"},dI={class:"thumbnails-view"},pI={class:"configs"},vI={class:"row"},mI=uI((()=>(0,i._)("div",{class:"title"},"导出格式:",-1))),hI={class:"row"},fI=uI((()=>(0,i._)("div",{class:"title"},"导出范围:",-1))),gI={key:0,class:"row"},yI=["data-range"],wI={class:"row"},xI=uI((()=>(0,i._)("div",{class:"title"},"图片质量:",-1))),kI={class:"row"},bI=uI((()=>(0,i._)("div",{class:"title"},"忽略在线字体:",-1))),_I={class:"config-item"},II={class:"btns"};var SI=(0,i.aZ)({__name:"ExportImage",emits:["close"],setup(e,{emit:t}){const l=t,{slides:a,currentSlide:n}=(0,o.Jk)($()),r=(0,s.iH)(),u=(0,s.iH)("all"),c=(0,s.iH)([1,a.value.length]),d=(0,s.iH)("jpeg"),p=(0,s.iH)(1),v=(0,s.iH)(!0),m=(0,i.Fl)((()=>"all"===u.value?a.value:"current"===u.value?[n.value]:a.value.filter(((e,t)=>{const[l,a]=c.value;return t>=l-1&&t<=a-1})))),{exportImage:h,exporting:f}=rI(),g=()=>{r.value&&h(r.value,d.value,p.value,v.value)};return(e,t)=>{const n=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",cI,[(0,i._)("div",dI,[(0,i._)("div",{class:"thumbnails",ref_key:"imageThumbnailsRef",ref:r},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(m.value,(e=>((0,i.wg)(),(0,i.j4)(Jd,{class:"thumbnail",key:e.id,slide:e,size:1600},null,8,["slide"])))),128))],512)]),(0,i._)("div",pI,[(0,i._)("div",vI,[mI,(0,i.Wm)(ng,{class:"config-item",value:d.value,"onUpdate:value":t[0]||(t[0]=e=>d.value=e)},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{style:{width:"50%"},value:"jpeg"},{default:(0,i.w5)((()=>[(0,i.Uk)("JPEG")])),_:1}),(0,i.Wm)(tg,{style:{width:"50%"},value:"png"},{default:(0,i.w5)((()=>[(0,i.Uk)("PNG")])),_:1})])),_:1},8,["value"])]),(0,i._)("div",hI,[fI,(0,i.Wm)(ng,{class:"config-item",value:u.value,"onUpdate:value":t[1]||(t[1]=e=>u.value=e)},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{style:{width:"33.33%"},value:"all"},{default:(0,i.w5)((()=>[(0,i.Uk)("全部")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"current"},{default:(0,i.w5)((()=>[(0,i.Uk)("当前页")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"custom"},{default:(0,i.w5)((()=>[(0,i.Uk)("自定义")])),_:1})])),_:1},8,["value"])]),"custom"===u.value?((0,i.wg)(),(0,i.iD)("div",gI,[(0,i._)("div",{class:"title","data-range":`(${c.value[0]} ~ ${c.value[1]})`},"自定义范围:",8,yI),(0,i.Wm)(qm,{class:"config-item",range:"",min:1,max:(0,s.SU)(a).length,step:1,value:c.value,"onUpdate:value":t[2]||(t[2]=e=>c.value=e)},null,8,["max","value"])])):(0,i.kq)("",!0),(0,i._)("div",wI,[xI,(0,i.Wm)(qm,{class:"config-item",min:0,max:1,step:.1,value:p.value,"onUpdate:value":t[3]||(t[3]=e=>p.value=e)},null,8,["value"])]),(0,i._)("div",kI,[bI,(0,i._)("div",_I,[(0,i.wy)((0,i.Wm)(pf,{value:v.value,"onUpdate:value":t[4]||(t[4]=e=>v.value=e)},null,8,["value"]),[[n,"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。"]])])])]),(0,i._)("div",II,[(0,i.Wm)(tp,{class:"btn export",type:"primary",onClick:t[5]||(t[5]=e=>g())},{default:(0,i.w5)((()=>[(0,i.Uk)("导出图片")])),_:1}),(0,i.Wm)(tp,{class:"btn close",onClick:t[6]||(t[6]=e=>l("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("关闭")])),_:1})]),(0,i.Wm)(Xa,{loading:(0,s.SU)(f),tip:"正在导出..."},null,8,["loading"])])}}});const CI=(0,Vl.Z)(SI,[["__scopeId","data-v-1df3f398"]]);var LI=CI;const TI={class:"export-json-dialog"},EI={class:"preview"},MI={class:"btns"};var UI=(0,i.aZ)({__name:"ExportJSON",emits:["close"],setup(e,{emit:t}){const l=t,{slides:a}=(0,o.Jk)($()),{exportJSON:n}=rI();return(e,t)=>((0,i.wg)(),(0,i.iD)("div",TI,[(0,i._)("div",EI,[(0,i._)("pre",null,(0,oe.zw)((0,s.SU)(a)),1)]),(0,i._)("div",MI,[(0,i.Wm)(tp,{class:"btn export",type:"primary",onClick:t[0]||(t[0]=e=>(0,s.SU)(n)())},{default:(0,i.w5)((()=>[(0,i.Uk)("导出 JSON")])),_:1}),(0,i.Wm)(tp,{class:"btn close",onClick:t[1]||(t[1]=e=>l("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("关闭")])),_:1})])]))}});const WI=(0,Vl.Z)(UI,[["__scopeId","data-v-6a7223ca"]]);var DI=WI;const HI=()=>{const e=document.createElement("iframe");return e.style.width="0",e.style.height="0",e.style.position="absolute",e.style.right="0",e.style.top="0",e.style.border="0",document.body.appendChild(e),e},FI=(e,t,l)=>{const a="";let n="";const o=document.styleSheets;if(o)for(const d of o)if(d.cssRules)for(const e of d.cssRules)n+=e.cssText;const{width:i,height:s,margin:r}=l,u=`\n \n \n \n `,c=""+t.innerHTML+"";e.open(),e.write(`\n ${a}\n \n ${u}\n ${c}\n \n `),e.close()},AI=(e,t)=>{const l=HI(),a=l.contentWindow;if(!l.contentDocument||!a)return;FI(l.contentDocument,e,t);const n=()=>{a.focus(),a.print()},o=()=>{l.removeEventListener("load",n),a.removeEventListener("afterprint",o),document.body.removeChild(l)};l.addEventListener("load",n),a.addEventListener("afterprint",o)},$I=e=>((0,i.dD)("data-v-1668f898"),e=e(),(0,i.Cn)(),e),ZI={class:"export-pdf-dialog"},OI={class:"thumbnails-view"},RI={class:"configs"},zI={class:"row"},PI=$I((()=>(0,i._)("div",{class:"title"},"导出范围:",-1))),BI={class:"row"},NI=$I((()=>(0,i._)("div",{class:"title"},"每页数量:",-1))),jI={class:"row"},YI=$I((()=>(0,i._)("div",{class:"title"},"边缘留白:",-1))),VI={class:"config-item"},JI=$I((()=>(0,i._)("div",{class:"tip"}," 提示:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 ",-1))),qI={class:"btns"};var XI=(0,i.aZ)({__name:"ExportPDF",emits:["close"],setup(e,{emit:t}){const l=t,{slides:a,currentSlide:n,viewportRatio:r}=(0,o.Jk)($()),u=(0,s.iH)(),c=(0,s.iH)("all"),d=(0,s.iH)(1),p=(0,s.iH)(!0),v=()=>{if(!u.value)return;const e={width:1600,height:"all"===c.value?1600*r.value*d.value:1600*r.value,margin:p.value?50:0};AI(u.value,e)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",ZI,[(0,i._)("div",OI,[(0,i._)("div",{class:"thumbnails",ref_key:"pdfThumbnailsRef",ref:u},["current"===c.value?((0,i.wg)(),(0,i.j4)(Jd,{key:0,class:"thumbnail",slide:(0,s.SU)(n),size:1600},null,8,["slide"])):((0,i.wg)(!0),(0,i.iD)(i.HY,{key:1},(0,i.Ko)((0,s.SU)(a),((e,t)=>((0,i.wg)(),(0,i.j4)(Jd,{class:(0,oe.C_)(["thumbnail",{"break-page":(t+1)%d.value===0}]),key:e.id,slide:e,size:1600},null,8,["class","slide"])))),128))],512)]),(0,i._)("div",RI,[(0,i._)("div",zI,[PI,(0,i.Wm)(ng,{class:"config-item",value:c.value,"onUpdate:value":t[0]||(t[0]=e=>c.value=e)},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{style:{width:"50%"},value:"all"},{default:(0,i.w5)((()=>[(0,i.Uk)("全部")])),_:1}),(0,i.Wm)(tg,{style:{width:"50%"},value:"current"},{default:(0,i.w5)((()=>[(0,i.Uk)("当前页")])),_:1})])),_:1},8,["value"])]),(0,i._)("div",BI,[NI,(0,i.Wm)(cp,{class:"config-item",value:d.value,"onUpdate:value":t[1]||(t[1]=e=>d.value=e),options:[{label:"1",value:1},{label:"2",value:2},{label:"3",value:3}]},null,8,["value"])]),(0,i._)("div",jI,[YI,(0,i._)("div",VI,[(0,i.Wm)(pf,{value:p.value,"onUpdate:value":t[2]||(t[2]=e=>p.value=e)},null,8,["value"])])]),JI]),(0,i._)("div",qI,[(0,i.Wm)(tp,{class:"btn export",type:"primary",onClick:t[3]||(t[3]=e=>v())},{default:(0,i.w5)((()=>[(0,i.Uk)("打印 / 导出 PDF")])),_:1}),(0,i.Wm)(tp,{class:"btn close",onClick:t[4]||(t[4]=e=>l("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("关闭")])),_:1})])]))}});const GI=(0,Vl.Z)(XI,[["__scopeId","data-v-1668f898"]]);var KI=GI;const QI=e=>((0,i.dD)("data-v-265d4b60"),e=e(),(0,i.Cn)(),e),eS={class:"export-pptx-dialog"},tS={class:"configs"},lS={class:"row"},aS=QI((()=>(0,i._)("div",{class:"title"},"导出范围:",-1))),nS={key:0,class:"row"},oS=["data-range"],iS={class:"row"},sS=QI((()=>(0,i._)("div",{class:"title"},"忽略音频/视频:",-1))),rS={class:"config-item"},uS={class:"row"},cS=QI((()=>(0,i._)("div",{class:"title"},"覆盖默认母版:",-1))),dS={class:"config-item"},pS={key:1,class:"tip"},vS={class:"btns"};var mS=(0,i.aZ)({__name:"ExportPPTX",emits:["close"],setup(e,{emit:t}){const l=t,{slides:a,currentSlide:n}=(0,o.Jk)($()),{exportPPTX:r,exporting:u}=rI(),c=(0,s.iH)("all"),d=(0,s.iH)([1,a.value.length]),p=(0,s.iH)(!0),v=(0,s.iH)(!0),m=(0,i.Fl)((()=>"all"===c.value?a.value:"current"===c.value?[n.value]:a.value.filter(((e,t)=>{const[l,a]=d.value;return t>=l-1&&t<=a-1}))));return(e,t)=>{const n=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",eS,[(0,i._)("div",tS,[(0,i._)("div",lS,[aS,(0,i.Wm)(ng,{class:"config-item",value:c.value,"onUpdate:value":t[0]||(t[0]=e=>c.value=e)},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{style:{width:"33.33%"},value:"all"},{default:(0,i.w5)((()=>[(0,i.Uk)("全部")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"current"},{default:(0,i.w5)((()=>[(0,i.Uk)("当前页")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"custom"},{default:(0,i.w5)((()=>[(0,i.Uk)("自定义")])),_:1})])),_:1},8,["value"])]),"custom"===c.value?((0,i.wg)(),(0,i.iD)("div",nS,[(0,i._)("div",{class:"title","data-range":`(${d.value[0]} ~ ${d.value[1]})`},"自定义范围:",8,oS),(0,i.Wm)(qm,{class:"config-item",range:"",min:1,max:(0,s.SU)(a).length,step:1,value:d.value,"onUpdate:value":t[1]||(t[1]=e=>d.value=e)},null,8,["max","value"])])):(0,i.kq)("",!0),(0,i._)("div",iS,[sS,(0,i._)("div",rS,[(0,i.wy)((0,i.Wm)(pf,{value:v.value,"onUpdate:value":t[2]||(t[2]=e=>v.value=e)},null,8,["value"]),[[n,"导出时默认忽略音视频,若您的幻灯片中存在音视频元素,且希望将其导出到PPTX文件中,可选择关闭【忽略音视频】选项,但要注意这将会大幅增加导出用时。"]])])]),(0,i._)("div",uS,[cS,(0,i._)("div",dS,[(0,i.Wm)(pf,{value:p.value,"onUpdate:value":t[3]||(t[3]=e=>p.value=e)},null,8,["value"])])]),v.value?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("div",pS," 提示:1. 支持导出格式:avi、mp4、mov、wmv、mp3、wav;2. 跨域资源无法导出。 "))]),(0,i._)("div",vS,[(0,i.Wm)(tp,{class:"btn export",type:"primary",onClick:t[4]||(t[4]=e=>(0,s.SU)(r)(m.value,p.value,v.value))},{default:(0,i.w5)((()=>[(0,i.Uk)("导出 PPTX")])),_:1}),(0,i.Wm)(tp,{class:"btn close",onClick:t[5]||(t[5]=e=>l("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("关闭")])),_:1})]),(0,i.Wm)(Xa,{loading:(0,s.SU)(u),tip:"正在导出..."},null,8,["loading"])])}}});const hS=(0,Vl.Z)(mS,[["__scopeId","data-v-265d4b60"]]);var fS=hS;const gS=e=>((0,i.dD)("data-v-26422ed7"),e=e(),(0,i.Cn)(),e),yS={class:"export-pptist-dialog"},wS={class:"configs"},xS={class:"row"},kS=gS((()=>(0,i._)("div",{class:"title"},"导出范围:",-1))),bS={key:0,class:"row"},_S=["data-range"],IS=gS((()=>(0,i._)("div",{class:"tip"}," 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 ",-1))),SS={class:"btns"};var CS=(0,i.aZ)({__name:"ExportSpecificFile",emits:["close"],setup(e,{emit:t}){const l=t,{slides:a,currentSlide:n}=(0,o.Jk)($()),{exportSpecificFile:r}=rI(),u=(0,s.iH)("all"),c=(0,s.iH)([1,a.value.length]),d=(0,i.Fl)((()=>"all"===u.value?a.value:"current"===u.value?[n.value]:a.value.filter(((e,t)=>{const[l,a]=c.value;return t>=l-1&&t<=a-1}))));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",yS,[(0,i._)("div",wS,[(0,i._)("div",xS,[kS,(0,i.Wm)(ng,{class:"config-item",value:u.value,"onUpdate:value":t[0]||(t[0]=e=>u.value=e)},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{style:{width:"33.33%"},value:"all"},{default:(0,i.w5)((()=>[(0,i.Uk)("全部")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"current"},{default:(0,i.w5)((()=>[(0,i.Uk)("当前页")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"custom"},{default:(0,i.w5)((()=>[(0,i.Uk)("自定义")])),_:1})])),_:1},8,["value"])]),"custom"===u.value?((0,i.wg)(),(0,i.iD)("div",bS,[(0,i._)("div",{class:"title","data-range":`(${c.value[0]} ~ ${c.value[1]})`},"自定义范围:",8,_S),(0,i.Wm)(qm,{class:"config-item",range:"",min:1,max:(0,s.SU)(a).length,step:1,value:c.value,"onUpdate:value":t[1]||(t[1]=e=>c.value=e)},null,8,["max","value"])])):(0,i.kq)("",!0),IS]),(0,i._)("div",SS,[(0,i.Wm)(tp,{class:"btn export",type:"primary",onClick:t[2]||(t[2]=e=>(0,s.SU)(r)(d.value))},{default:(0,i.w5)((()=>[(0,i.Uk)("导出 .pptist 文件")])),_:1}),(0,i.Wm)(tp,{class:"btn close",onClick:t[3]||(t[3]=e=>l("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("关闭")])),_:1})])]))}});const LS=(0,Vl.Z)(CS,[["__scopeId","data-v-26422ed7"]]);var TS=LS;const ES={class:"export-dialog"},MS={class:"content"};var US=(0,i.aZ)({__name:"index",setup(e){const t=R(),{dialogForExport:l}=(0,o.Jk)(t),a=t.setDialogForExport,n=[{key:"pptist",label:"导出 pptist 文件"},{key:"pptx",label:"导出 PPTX"},{key:"image",label:"导出图片"},{key:"json",label:"导出 JSON"},{key:"pdf",label:"打印 / 导出 PDF"}],r=(0,i.Fl)((()=>{const e={image:LI,json:DI,pdf:KI,pptx:fS,pptist:TS};return l.value&&e[l.value]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",ES,[(0,i.Wm)(Kd,{tabs:n,value:(0,s.SU)(l),card:"","onUpdate:value":t[0]||(t[0]=e=>(0,s.SU)(a)(e))},null,8,["value"]),(0,i._)("div",MS,[((0,i.wg)(),(0,i.j4)((0,i.LL)(r.value),{onClose:t[1]||(t[1]=e=>(0,s.SU)(a)(""))},null,32))])]))}});const WS=(0,Vl.Z)(US,[["__scopeId","data-v-b20137f0"]]);var DS=WS;const HS={class:"title"},FS={class:"content"};var AS=(0,i.aZ)({__name:"MoveablePanel",props:{width:{},height:{},left:{default:10},top:{default:10},title:{default:""},moveable:{type:Boolean,default:!0}},emits:["close"],setup(e,{emit:t}){const l=e,a=t,n=(0,s.iH)(0),o=(0,s.iH)(0),r=(0,s.iH)(),u=(0,i.Fl)((()=>l.height?l.height:r.value?.clientHeight||0));(0,i.bv)((()=>{l.left>=0?n.value=l.left:n.value=document.body.clientWidth+l.left-l.width,l.top>=0?o.value=l.top:o.value=document.body.clientHeight+l.top-u.value}));const c=e=>{if(!l.moveable)return;let t=!0;const a=document.body.clientWidth,i=document.body.clientHeight,s=e.pageX,r=e.pageY,c=n.value,d=o.value;document.onmousemove=e=>{if(!t)return;const p=e.pageX-s,v=e.pageY-r;let m=c+p,h=d+v;m<0&&(m=0),h<0&&(h=0),m+l.width>a&&(m=a-l.width),h+u.value>i&&(h=i-u.value),n.value=m,o.value=h},document.onmouseup=()=>{t=!1,document.onmousemove=null,document.onmouseup=null}};return(e,t)=>{const l=(0,i.up)("IconClose");return(0,i.wg)(),(0,i.iD)("div",{class:"moveable-panel",ref_key:"moveablePanelRef",ref:r,style:(0,oe.j5)({width:e.width+"px",height:e.height?e.height+"px":"auto",left:n.value+"px",top:o.value+"px"})},[e.title?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",{class:"header",onMousedown:t[1]||(t[1]=e=>c(e))},[(0,i._)("div",HS,(0,oe.zw)(e.title),1),(0,i._)("div",{class:"close-btn",onClick:t[0]||(t[0]=e=>a("close"))},[(0,i.Wm)(l)])],32),(0,i._)("div",FS,[(0,i.WI)(e.$slots,"default")])],64)):((0,i.wg)(),(0,i.iD)("div",{key:1,class:"content",onMousedown:t[2]||(t[2]=e=>c(e))},[(0,i.WI)(e.$slots,"default")],32))],4)}}});const $S=(0,Vl.Z)(AS,[["__scopeId","data-v-fc791e00"]]);var ZS=$S;const OS=e=>((0,i.dD)("data-v-15470598"),e=e(),(0,i.Cn)(),e),RS={key:0,class:"handler"},zS={class:"btns"},PS={key:0,class:"icon-btns"},BS={class:"element-list"},NS={key:0,class:"group-els"},jS=OS((()=>(0,i._)("div",{class:"group-title"},"组合",-1))),YS=["onClick","onDblclick"],VS=["id","value","onBlur","onKeydown"],JS={key:1,class:"name"},qS={class:"icons"},XS=["onClick","onDblclick"],GS=["id","value","onBlur","onKeydown"],KS={key:1,class:"name"},QS={class:"icons"};var eC=(0,i.aZ)({__name:"SelectPanel",setup(e){const t=$(),l=R(),{currentSlide:a}=(0,o.Jk)(t),{handleElement:r,handleElementId:u,activeElementIdList:c,activeGroupElementId:d,hiddenElementIdList:p}=(0,o.Jk)(l),{orderElement:v}=ba(),m=(0,i.Fl)((()=>{const e=[];for(const t of a.value.elements)if(t.groupId){const l=e[e.length-1];l&&"group"===l.type&&l.id&&l.id===t.groupId?l.elements.push(t):e.push({type:"group",id:t.groupId,elements:[t]})}else e.push(t);return e})),h=(e,t)=>{if(u.value===t)return;if(p.value.includes(t))return;const a=e.elements.map((e=>e.id));l.setActiveElementIdList(a),l.setHandleElementId(t),(0,i.Y3)((()=>l.setActiveGroupElementId(t)))},f=e=>{u.value!==e&&(p.value.includes(e)||l.setActiveElementIdList([e]))},g=e=>{p.value.includes(e)?l.setHiddenElementIdList(p.value.filter((t=>t!==e))):l.setHiddenElementIdList([...p.value,e]),c.value.includes(e)&&l.setActiveElementIdList([])},y=()=>{const e=a.value.elements.map((e=>e.id)),t=p.value.filter((t=>!e.includes(t)));l.setHiddenElementIdList(t)},w=()=>{const e=a.value.elements.map((e=>e.id));l.setHiddenElementIdList([...p.value,...e]),c.value.length&&l.setActiveElementIdList([])},x=(0,s.iH)(""),k=(e,l)=>{const a=e.target.value;t.updateElement({id:l,props:{name:a}}),x.value=""},b=e=>{x.value=e,(0,i.Y3)((()=>{const t=document.querySelector(`#input-${e}`);t.focus()}))},_=()=>{l.setSelectPanelState(!1)};return(e,t)=>{const l=(0,i.up)("IconDown"),o=(0,i.up)("IconUp"),u=(0,i.up)("IconPreviewClose"),I=(0,i.up)("IconPreviewOpen");return(0,i.wg)(),(0,i.j4)(ZS,{class:"select-panel",width:200,height:360,title:`选择(${(0,s.SU)(c).length}/${(0,s.SU)(a).elements.length})`,left:-270,top:90,onClose:t[4]||(t[4]=e=>_())},{default:(0,i.w5)((()=>[m.value.length?((0,i.wg)(),(0,i.iD)("div",RS,[(0,i._)("div",zS,[(0,i.Wm)(tp,{size:"small",style:{"margin-right":"5px"},onClick:t[0]||(t[0]=e=>y())},{default:(0,i.w5)((()=>[(0,i.Uk)("全部显示")])),_:1}),(0,i.Wm)(tp,{size:"small",onClick:t[1]||(t[1]=e=>w())},{default:(0,i.w5)((()=>[(0,i.Uk)("全部隐藏")])),_:1})]),(0,s.SU)(r)?((0,i.wg)(),(0,i.iD)("div",PS,[(0,i.Wm)(l,{class:"icon-btn",onClick:t[2]||(t[2]=e=>(0,s.SU)(v)((0,s.SU)(r),(0,s.SU)(Q).UP))}),(0,i.Wm)(o,{class:"icon-btn",onClick:t[3]||(t[3]=e=>(0,s.SU)(v)((0,s.SU)(r),(0,s.SU)(Q).DOWN))})])):(0,i.kq)("",!0)])):(0,i.kq)("",!0),(0,i._)("div",BS,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(m.value,(e=>((0,i.wg)(),(0,i.iD)(i.HY,{key:e.id},["group"===e.type?((0,i.wg)(),(0,i.iD)("div",NS,[jS,((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.elements,(t=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["item",{active:(0,s.SU)(c).includes(t.id),"group-active":(0,s.SU)(d).includes(t.id)}]),key:t.id,onClick:l=>h(e,t.id),onDblclick:e=>b(t.id)},[x.value===t.id?((0,i.wg)(),(0,i.iD)("input",{key:0,id:`input-${t.id}`,value:t.name||(0,s.SU)($n)[t.type],class:"input",type:"text",onBlur:e=>k(e,t.id),onKeydown:(0,n.D2)((e=>k(e,t.id)),["enter"])},null,40,VS)):((0,i.wg)(),(0,i.iD)("div",JS,(0,oe.zw)(t.name||(0,s.SU)($n)[t.type]),1)),(0,i._)("div",qS,[(0,s.SU)(p).includes(t.id)?((0,i.wg)(),(0,i.j4)(u,{key:0,style:{"font-size":"17px"},onClick:(0,n.iM)((e=>g(t.id)),["stop"])},null,8,["onClick"])):((0,i.wg)(),(0,i.j4)(I,{key:1,style:{"font-size":"17px"},onClick:(0,n.iM)((e=>g(t.id)),["stop"])},null,8,["onClick"]))])],42,YS)))),128))])):((0,i.wg)(),(0,i.iD)("div",{key:1,class:(0,oe.C_)(["item",{active:(0,s.SU)(c).includes(e.id)}]),onClick:t=>f(e.id),onDblclick:t=>b(e.id)},[x.value===e.id?((0,i.wg)(),(0,i.iD)("input",{key:0,id:`input-${e.id}`,value:e.name||(0,s.SU)($n)[e.type],class:"input",type:"text",onBlur:t=>k(t,e.id),onKeydown:(0,n.D2)((t=>k(t,e.id)),["enter"])},null,40,GS)):((0,i.wg)(),(0,i.iD)("div",KS,(0,oe.zw)(e.name||(0,s.SU)($n)[e.type]),1)),(0,i._)("div",QS,[(0,s.SU)(p).includes(e.id)?((0,i.wg)(),(0,i.j4)(u,{key:0,style:{"font-size":"17px"},onClick:(0,n.iM)((t=>g(e.id)),["stop"])},null,8,["onClick"])):((0,i.wg)(),(0,i.j4)(I,{key:1,style:{"font-size":"17px"},onClick:(0,n.iM)((t=>g(e.id)),["stop"])},null,8,["onClick"]))])],42,XS))],64)))),128))])])),_:1},8,["title"])}}});const tC=(0,Vl.Z)(eC,[["__scopeId","data-v-15470598"]]);var lC=tC,aC=()=>{const e=R(),t=$(),{handleElement:l}=(0,o.Jk)(e),{slides:a,slideIndex:n,currentSlide:r}=(0,o.Jk)(t),u=(0,s.iH)(""),c=(0,s.iH)(""),d=(0,s.iH)([]),p=(0,s.iH)(-1),v=(0,s.iH)("g"),m=()=>{const e=[],t=new RegExp(u.value,v.value),l=/(<([^>]+)>)/g;for(const n of a.value)for(const a of n.elements)if("text"===a.type){const o=a.content.replace(l,""),i=o.match(t);i&&e.push(...new Array(i.length).fill({slideId:n.id,elId:a.id,elType:a.type}))}else if("shape"===a.type&&a.text&&a.text.content){const o=a.text.content.replace(l,""),i=o.match(t);i&&e.push(...new Array(i.length).fill({slideId:n.id,elId:a.id,elType:a.type}))}else if("table"===a.type)for(let o=0;o{const t=[...e.childNodes],l=[];while(t.length){const e=t.shift();e.nodeType===e.TEXT_NODE?e.wholeText&&l.push(e):t.unshift(...e.childNodes)}return l},f=e=>{let t=0;const l=e.map((e=>{const l=t,a=t+e.wholeText.length;return t=a,{text:e.wholeText,startIdx:l,endIdx:a}}));return l},g=(e,t)=>{const l=new RegExp(t,v.value),a=[];let n=l.exec(e);while(n)a.push(n),n=l.exec(e);return a},y=(e,t,l,a)=>{for(let n=l.length-1;n>=0;n--){const o=l[n],i=o.index,s=i+o[0].length;for(let l=0;l=s)break;let c=e[l];const d=Math.max(0,i-r),p=Math.min(u,s)-r-d;d>0&&(c=c.splitText(d)),p{for(const l of e)l.innerHTML=l.innerHTML.replace(new RegExp(u.value,v.value),(()=>`${u.value}`))},x=()=>{const e=document.querySelectorAll(".editable-element mark");for(const t of e)setTimeout((()=>{const e=t.parentNode,l=t.textContent;e.replaceChild(document.createTextNode(l),t)}),0)},k=()=>{x(),setTimeout((()=>{for(let e=0;ee)).join(""),o=g(n,u.value);y(t,l,o,e)}}}),0)},b=()=>{const e=document.querySelectorAll("mark[data-index]");for(const t of e)setTimeout((()=>{const e=t.dataset.index;void 0!==e&&+e===p.value?t.classList.add("active"):t.classList.remove("active")}),0)},_=()=>{if(-1===p.value)return;const e=d.value[p.value];if(e.slideId===r.value.id)setTimeout(b,0);else{const l=a.value.findIndex((t=>t.id===e.slideId));-1!==l&&t.updateSlideIndex(l)}},I=()=>{if(!u.value)return ta.warning("请先输入查找内容");e.setActiveElementIdList([]),-1===p.value?m():p.value{if(!u.value)return ta.warning("请先输入查找内容");e.setActiveElementIdList([]),-1===p.value?m():p.value>0?p.value-=1:p.value=d.value.length-1,_()},C=()=>{if(!u.value)return;if(-1===p.value)return void I();const e=d.value[p.value];let l=null;if("table"===e.elType){const[t,a]=e.cellIndex;l=document.querySelector(`#editable-element-${e.elId} .cell[data-cell-index="${t}_${a}"] .cell-text`)}else l=document.querySelector(`#editable-element-${e.elId} .ProseMirror`);if(!l)return;const a=document.createElement("div");a.innerHTML=l.innerHTML;let n=!1;const o=a.querySelectorAll("mark[data-index]");for(const t of o){const e=t.parentNode;if(t.classList.contains("active"))n?e.removeChild(t):(e.replaceChild(document.createTextNode(c.value),t),n=!0);else{const l=t.textContent;e.replaceChild(document.createTextNode(l),t)}}if("text"===e.elType){const l={content:a.innerHTML};t.updateElement({id:e.elId,props:l})}else if("shape"===e.elType){const l=r.value.elements.find((t=>t.id===e.elId));if(l&&"shape"===l.type&&l.text){const n={text:{...l.text,content:a.innerHTML}};t.updateElement({id:e.elId,props:n})}}else if("table"===e.elType){const l=r.value.elements.find((t=>t.id===e.elId));if(l&&"table"===l.type){const n=l.data.map(((t,l)=>l===e.cellIndex[0]?t.map(((t,l)=>l===e.cellIndex[1]?{...t,text:a.innerHTML}:t)):t)),o={data:n};t.updateElement({id:e.elId,props:o})}}d.value.splice(p.value,1),d.value.length?(p.value>d.value.length-1&&(p.value=0),(0,i.Y3)((()=>{k(),_()}))):p.value=-1},L=()=>{if(u.value)if(-1!==p.value){for(let e=0;ee.id===n.slideId));if(!o)continue;const i=o.elements.find((e=>e.id===n.elId));if(!i)continue;const s=document.createElement("div");if("text"===i.type?s.innerHTML=i.content:"shape"===i.type&&(s.innerHTML=i.text?.content||""),"table"===n.elType){const e=i.data.map((e=>e.map((e=>e.text?{...e,text:e.text.replaceAll(u.value,c.value)}:e)))),l={data:e};t.updateElement({id:n.elId,slideId:n.slideId,props:l})}else{const l=h(s),a=f(l),o=a.map((({text:e})=>e)).join(""),i=g(o,u.value);y(l,a,i,e);const d=s.querySelectorAll("mark[data-index]");let p=-1;for(const e of d){const t=+e.dataset.index,l=e.parentNode;t===p?l.removeChild(e):(l.replaceChild(document.createTextNode(c.value),e),p=t)}if("text"===n.elType){const e={content:s.innerHTML};t.updateElement({id:n.elId,slideId:n.slideId,props:e})}else if("shape"===n.elType){const e=r.value.elements.find((e=>e.id===n.elId));if(e&&"shape"===e.type&&e.text){const l={text:{...e.text,content:s.innerHTML}};t.updateElement({id:n.elId,slideId:n.slideId,props:l})}}}}d.value=[],p.value=-1}else I()},T=()=>{p.value=-1,d.value=[],u.value||x()};(0,i.YP)(u,T),(0,i.YP)(n,(()=>{(0,i.Y3)((()=>{k(),setTimeout(b,0)}))})),(0,i.YP)(l,(()=>{l.value&&(p.value=-1,d.value=[],x())})),(0,i.Jd)(x);const E=()=>{v.value="g"===v.value?"gi":"g",T()};return{searchWord:u,replaceWord:c,searchResults:d,searchIndex:p,modifiers:v,searchNext:I,searchPrev:S,replace:C,replaceAll:L,toggleModifiers:E}};const nC={class:"count"},oC={key:1,class:"footer"};var iC=(0,i.aZ)({__name:"SearchPanel",setup(e){const t=R(),{searchWord:l,replaceWord:a,searchResults:o,searchIndex:r,modifiers:u,searchNext:c,searchPrev:d,replace:p,replaceAll:v,toggleModifiers:m}=aC(),h=(0,s.iH)("search"),f=[{key:"search",label:"查找"},{key:"replace",label:"替换"}],g=()=>{t.setSearchPanelState(!1)},y=(0,s.iH)();return(0,i.bv)((()=>{y.value.focus()})),(0,i.YP)(h,(()=>{(0,i.Y3)((()=>{y.value.focus()}))})),(e,t)=>{const w=(0,i.up)("IconClose"),x=(0,i.up)("IconLeft"),k=(0,i.up)("IconRight"),b=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.j4)(ZS,{class:"search-panel",width:330,height:0,left:-270,top:90},{default:(0,i.w5)((()=>[(0,i._)("div",{class:"close-btn",onClick:t[0]||(t[0]=e=>g()),onMousedown:t[1]||(t[1]=(0,n.iM)((()=>{}),["stop"]))},[(0,i.Wm)(w)],32),(0,i.Wm)(Kd,{tabs:f,value:h.value,"onUpdate:value":t[2]||(t[2]=e=>h.value=e)},null,8,["value"]),(0,i._)("div",{class:(0,oe.C_)(["content",h.value]),onMousedown:t[12]||(t[12]=(0,n.iM)((()=>{}),["stop"]))},[(0,i.Wm)(sn,{class:"input",value:(0,s.SU)(l),"onUpdate:value":t[6]||(t[6]=e=>(0,s.dq)(l)?l.value=e:null),placeholder:"输入查找内容",onEnter:t[7]||(t[7]=e=>(0,s.SU)(c)()),ref_key:"searchInpRef",ref:y},{suffix:(0,i.w5)((()=>[(0,i._)("span",nC,(0,oe.zw)((0,s.SU)(r)+1)+"/"+(0,oe.zw)((0,s.SU)(o).length),1),(0,i.Wm)(Zc,{type:"vertical"}),(0,i.wy)(((0,i.wg)(),(0,i.iD)("span",{class:(0,oe.C_)(["ignore-case",{active:"g"===(0,s.SU)(u)}]),onClick:t[3]||(t[3]=e=>(0,s.SU)(m)())},[(0,i.Uk)("Aa")],2)),[[b,"忽略大小写"]]),(0,i.Wm)(Zc,{type:"vertical"}),(0,i.wy)((0,i.Wm)(x,{class:"next-btn left",onClick:t[4]||(t[4]=e=>(0,s.SU)(d)())},null,512),[[b,"上一个"]]),(0,i.wy)((0,i.Wm)(k,{class:"next-btn right",onClick:t[5]||(t[5]=e=>(0,s.SU)(c)())},null,512),[[b,"下一个"]])])),_:1},8,["value"]),"replace"===h.value?((0,i.wg)(),(0,i.j4)(sn,{key:0,class:"input",value:(0,s.SU)(a),"onUpdate:value":t[8]||(t[8]=e=>(0,s.dq)(a)?a.value=e:null),placeholder:"输入替换内容",onEnter:t[9]||(t[9]=e=>(0,s.SU)(p)())},null,8,["value"])):(0,i.kq)("",!0),"replace"===h.value?((0,i.wg)(),(0,i.iD)("div",oC,[(0,i.Wm)(tp,{disabled:!(0,s.SU)(l),style:{"margin-left":"5px"},onClick:t[10]||(t[10]=e=>(0,s.SU)(p)())},{default:(0,i.w5)((()=>[(0,i.Uk)("替换")])),_:1},8,["disabled"]),(0,i.Wm)(tp,{disabled:!(0,s.SU)(l),type:"primary",style:{"margin-left":"5px"},onClick:t[11]||(t[11]=e=>(0,s.SU)(v)())},{default:(0,i.w5)((()=>[(0,i.Uk)("全部替换")])),_:1},8,["disabled"])])):(0,i.kq)("",!0)],34)])),_:1})}}});const sC=(0,Vl.Z)(iC,[["__scopeId","data-v-fb93ddde"]]);var rC=sC;const uC={class:"pptist-editor"},cC={class:"layout-content"},dC={class:"layout-content-center"};var pC=(0,i.aZ)({__name:"index",setup(e){const t=R(),{dialogForExport:l,showSelectPanel:a,showSearchPanel:n}=(0,o.Jk)(t),r=()=>t.setDialogForExport(""),u=(0,s.iH)(40);return Ta(),Ea(),(e,t)=>((0,i.wg)(),(0,i.iD)(i.HY,null,[(0,i._)("div",uC,[(0,i.Wm)(Ln,{class:"layout-header"}),(0,i._)("div",cC,[(0,i.Wm)(Rm,{class:"layout-content-left"}),(0,i._)("div",dC,[(0,i.Wm)(Sm,{class:"center-top"}),(0,i.Wm)(Cp,{class:"center-body",style:(0,oe.j5)({height:`calc(100% - ${u.value+40}px)`})},null,8,["style"]),(0,i.Wm)(I_,{class:"center-bottom",height:u.value,"onUpdate:height":t[0]||(t[0]=e=>u.value=e),style:(0,oe.j5)({height:`${u.value}px`})},null,8,["height","style"])]),(0,i.Wm)(f_,{class:"layout-content-right"})])]),(0,s.SU)(a)?((0,i.wg)(),(0,i.j4)(lC,{key:0})):(0,i.kq)("",!0),(0,s.SU)(n)?((0,i.wg)(),(0,i.j4)(rC,{key:1})):(0,i.kq)("",!0),(0,i.Wm)(kp,{visible:!!(0,s.SU)(l),width:680,onClosed:t[1]||(t[1]=e=>r())},{default:(0,i.w5)((()=>[(0,i.Wm)(DS)])),_:1},8,["visible"])],64))}});const vC=(0,Vl.Z)(pC,[["__scopeId","data-v-1e00f97b"]]);var mC=vC,hC=()=>{const e=$(),{slides:t,slideIndex:l,formatedAnimations:a}=(0,o.Jk)(e),n=(0,s.iH)(0),r=(0,s.iH)(!1),u=(0,s.iH)(l.value),c=()=>{if(r.value)return;const{animations:e,autoNext:t}=a.value[n.value];n.value+=1,r.value=!0;let l=0;for(const a of e){const n=document.querySelector(`#screen-element-${a.elId} [class^=base-element-]`);if(!n){l+=1;continue}const o=`${yk}${a.effect}`;n.style.removeProperty("--animate-duration");for(const e of n.classList)-1!==e.indexOf(yk)&&n.classList.remove(e,`${yk}animated`);n.style.setProperty("--animate-duration",`${a.duration}ms`),n.classList.add(o,`${yk}animated`);const i=()=>{"out"!==a.type&&(n.style.removeProperty("--animate-duration"),n.classList.remove(o,`${yk}animated`)),l+=1,l===e.length&&(r.value=!1,t&&c())};n.addEventListener("animationend",i,{once:!0})}},d=()=>{n.value-=1;const{animations:e}=a.value[n.value];for(const t of e){const e=document.querySelector(`#screen-element-${t.elId} [class^=base-element-]`);if(e){e.style.removeProperty("--animate-duration");for(const t of e.classList)-1!==t.indexOf(yk)&&e.classList.remove(t,`${yk}animated`)}}e.every((e=>"attention"===e.type))&&g()},p=(0,s.iH)(0),v=()=>{p.value&&(clearInterval(p.value),p.value=0)};(0,i.Ah)(v);const m=(0,s.iH)(!1),h=e=>{m.value=e},f=(0,D.throttle)((function(e){ta.success(e)}),1e3,{leading:!0,trailing:!1}),g=()=>{a.value.length&&n.value>0?d():l.value>0?(e.updateSlideIndex(l.value-1),l.value{a.value.length&&n.value{v(),ta.success("开始自动放映"),p.value=setInterval(y,w.value)},k=e=>{v(),w.value=e,x()},b=(0,D.throttle)((function(e){e.deltaY<0?g():e.deltaY>0&&y()}),500,{leading:!0,trailing:!1}),_=(0,s.iH)(null),I=e=>{_.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},S=e=>{if(!_.value)return;const t=Math.abs(_.value.x-e.changedTouches[0].pageX),l=e.changedTouches[0].pageY-_.value.y;Math.abs(l)>t&&Math.abs(l)>50&&(_.value=null,l>0?g():y())},C=e=>{const t=e.key.toUpperCase();t===ne.UP||t===ne.LEFT||t===ne.PAGEUP?g():t!==ne.DOWN&&t!==ne.RIGHT&&t!==ne.SPACE&&t!==ne.ENTER&&t!==ne.PAGEDOWN||y()};(0,i.bv)((()=>document.addEventListener("keydown",C))),(0,i.Ah)((()=>document.removeEventListener("keydown",C)));const L=()=>{e.updateSlideIndex(l.value-1),n.value=0},T=()=>{e.updateSlideIndex(l.value+1),n.value=0},E=t=>{e.updateSlideIndex(t),n.value=0},M=l=>{const a=t.value.findIndex((e=>e.id===l));-1!==a&&(e.updateSlideIndex(a),n.value=0)};return{autoPlayTimer:p,autoPlayInterval:w,setAutoPlayInterval:k,autoPlay:x,closeAutoPlay:v,loopPlay:m,setLoopPlay:h,mousewheelListener:b,touchStartListener:I,touchEndListener:S,turnPrevSlide:L,turnNextSlide:T,turnSlideToIndex:E,turnSlideToId:M,execPrev:g,execNext:y,animationIndex:n}},fC=e=>{const t=$(),{viewportRatio:l}=(0,o.Jk)(t),a=(0,s.iH)(0),n=(0,s.iH)(0),r=()=>{const t=e?.value||document.body,o=t.clientWidth,i=t.clientHeight;let s,r;i/o===l.value?(s=o,r=i):i/o>l.value?(s=o,r=o*l.value):(s=i/l.value,r=i),a.value=s,n.value=r};return(0,i.bv)((()=>{r(),window.addEventListener("resize",r)})),(0,i.Ah)((()=>{window.removeEventListener("resize",r)})),{slideWidth:a,slideHeight:n}},gC=()=>{const e=(0,s.iH)(!0),t=(0,s.iH)(!0),{exitScreening:l}=Ca(),a=()=>{e.value=Sa(),!e.value&&t.value&&l(),t.value=!0};(0,i.bv)((()=>{e.value=Sa(),document.addEventListener("fullscreenchange",a),document.addEventListener("webkitfullscreenchange",a)})),(0,i.Ah)((()=>{document.removeEventListener("fullscreenchange",a),document.removeEventListener("webkitfullscreenchange",a)}));const n=()=>{e.value&&(t.value=!1,Ia())};return{fullscreenState:e,manualExitFullscreen:n}};const yC={class:"element-content"};var wC=(0,i.aZ)({__name:"ScreenVideoElement",props:{elementInfo:{}},setup(e){const{currentSlide:t}=(0,o.Jk)($()),l=(0,i.f3)(Tn)||(0,s.iH)(1),a=(0,i.f3)(En)||(0,s.iH)(""),n=(0,i.Fl)((()=>t.value.id===a.value));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-video screen-element-video",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",yC,[n.value?((0,i.wg)(),(0,i.j4)(Fr,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,autoplay:e.elementInfo.autoplay,scale:(0,s.SU)(l)},null,8,["width","height","src","poster","autoplay","scale"])):(0,i.kq)("",!0)])],4)],4))}});const xC=(0,Vl.Z)(wC,[["__scopeId","data-v-76bf5b3f"]]);var kC=xC;const bC={class:"element-content"};var _C=(0,i.aZ)({__name:"ScreenAudioElement",props:{elementInfo:{}},setup(e){const t=e,{viewportRatio:l,currentSlide:a}=(0,o.Jk)($()),n=(0,i.f3)(Tn)||(0,s.iH)(1),r=(0,i.f3)(En)||(0,s.iH)(""),u=(0,i.Fl)((()=>a.value.id===r.value)),c=(0,i.Fl)((()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px")),d=(0,i.Fl)((()=>{const e=oa,a=oa*l.value,o=280/n.value,i=50/n.value,s=t.elementInfo.width,r=t.elementInfo.height,u=t.elementInfo.left,c=t.elementInfo.top;let d=0,p=r;return u+o>=e&&(d=s-o),c+r+i>=a&&(p=-i),{left:d+"px",top:p+"px"}})),p=(0,s.iH)(),v=()=>{p.value&&p.value.toggle()};return(e,t)=>{const l=(0,i.up)("IconVolumeNotice");return(0,i.wg)(),(0,i.iD)("div",{class:"base-element-audio screen-element-audio",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",bC,[(0,i.Wm)(l,{class:"audio-icon",style:(0,oe.j5)({fontSize:c.value,color:e.elementInfo.color}),onClick:t[0]||(t[0]=e=>v())},null,8,["style"]),u.value?((0,i.wg)(),(0,i.j4)(lu,{key:0,class:"audio-player",ref_key:"audioPlayerRef",ref:p,style:(0,oe.j5)({...d.value}),src:e.elementInfo.src,loop:e.elementInfo.loop,autoplay:e.elementInfo.autoplay,scale:(0,s.SU)(n)},null,8,["style","src","loop","autoplay","scale"])):(0,i.kq)("",!0)])],4)],4)}}});const IC=(0,Vl.Z)(_C,[["__scopeId","data-v-adf39436"]]);var SC=IC;const CC=["id","title"];var LC=(0,i.aZ)({__name:"ScreenElement",props:{elementInfo:{},elementIndex:{},animationIndex:{},turnSlideToId:{type:Function},manualExitFullscreen:{type:Function}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e={[sa.IMAGE]:Gc,[sa.TEXT]:td,[sa.SHAPE]:ud,[sa.LINE]:md,[sa.CHART]:gd,[sa.TABLE]:Ld,[sa.LATEX]:Hd,[sa.VIDEO]:kC,[sa.AUDIO]:SC};return e[t.elementInfo.type]||null})),{formatedAnimations:a,theme:n}=(0,o.Jk)($()),r=(0,i.Fl)((()=>{const e=a.value.findIndex((e=>{const l=e.animations.map((e=>e.elId));return l.includes(t.elementInfo.id)}));if(-1===e)return!1;if(ee.elId===t.elementInfo.id));return"in"===l?.type})),u=()=>{const e=t.elementInfo.link;e&&("web"===e.type?(t.manualExitFullscreen(),window.open(e.target)):"slide"===e.type&&t.turnSlideToId(e.target))};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["screen-element",{link:e.elementInfo.link}]),id:`screen-element-${e.elementInfo.id}`,style:(0,oe.j5)({zIndex:e.elementIndex,color:(0,s.SU)(n).fontColor,fontFamily:(0,s.SU)(n).fontName,visibility:r.value?"hidden":"visible"}),title:e.elementInfo.link?.target||"",onClick:t[0]||(t[0]=e=>u())},[((0,i.wg)(),(0,i.j4)((0,i.LL)(l.value),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],14,CC))}});const TC=(0,Vl.Z)(LC,[["__scopeId","data-v-2139723a"]]);var EC=TC,MC=(0,i.aZ)({__name:"ScreenSlide",props:{slide:{},scale:{},animationIndex:{},turnSlideToId:{type:Function},manualExitFullscreen:{type:Function}},setup(e){const t=e,{viewportRatio:l}=(0,o.Jk)($()),a=(0,i.Fl)((()=>t.slide.background)),{backgroundStyle:n}=yu(a),r=(0,i.Fl)((()=>t.slide.id));return(0,i.JJ)(En,r),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"screen-slide",style:(0,oe.j5)({width:(0,s.SU)(oa)+"px",height:(0,s.SU)(oa)*(0,s.SU)(l)+"px",transform:`scale(${e.scale})`})},[(0,i._)("div",{class:"background",style:(0,oe.j5)({...(0,s.SU)(n)})},null,4),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.slide.elements,((t,l)=>((0,i.wg)(),(0,i.j4)(EC,{key:t.id,elementInfo:t,elementIndex:l+1,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["elementInfo","elementIndex","animationIndex","turnSlideToId","manualExitFullscreen"])))),128))],4))}});const UC=(0,Vl.Z)(MC,[["__scopeId","data-v-016af5da"]]);var WC=UC;const DC={class:"screen-slide-list"};var HC=(0,i.aZ)({__name:"ScreenSlideList",props:{slideWidth:{},slideHeight:{},animationIndex:{},turnSlideToId:{type:Function},manualExitFullscreen:{type:Function}},setup(e){const t=e,{slides:l,slideIndex:a}=(0,o.Jk)($()),n=(0,i.Fl)((()=>l.value.map((e=>{let t=e.turningMode;if(t||(t="slideY"),"random"===t){const e=bk.filter((e=>!["random","no"].includes(e.value))).map((e=>e.value));t=e[Math.floor(Math.random()*e.length)]}return{...e,turningMode:t}})))),r=(0,i.Fl)((()=>t.slideWidth/oa));return(0,i.JJ)(Tn,r),(e,t)=>((0,i.wg)(),(0,i.iD)("div",DC,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(n.value,((t,l)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["slide-item",`turning-mode-${t.turningMode}`,{current:l===(0,s.SU)(a),before:l<(0,s.SU)(a),after:l>(0,s.SU)(a),hide:(l===(0,s.SU)(a)-1||l===(0,s.SU)(a)+1)&&t.turningMode!==n.value[(0,s.SU)(a)].turningMode}]),key:t.id},[Math.abs((0,s.SU)(a)-l)<2||t.animations?.length?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"slide-content",style:(0,oe.j5)({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[(0,i.Wm)(WC,{slide:t,scale:r.value,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["slide","scale","animationIndex","turnSlideToId","manualExitFullscreen"])],4)):(0,i.kq)("",!0)],2)))),128))]))}});const FC=(0,Vl.Z)(HC,[["__scopeId","data-v-552b63d2"]]);var AC=FC;const $C={class:"slide-thumbnails"},ZC={class:"return-button"},OC={class:"slide-thumbnails-content"},RC=["onClick"];var zC=(0,i.aZ)({__name:"SlideThumbnails",props:{turnSlideToIndex:{type:Function}},emits:["close"],setup(e,{emit:t}){const l=e,a=t,{slides:n,slideIndex:r}=(0,o.Jk)($()),{slidesLoadLimit:u}=Cm(),c=e=>{l.turnSlideToIndex(e),a("close")};return(e,t)=>{const l=(0,i.up)("IconArrowCircleLeft");return(0,i.wg)(),(0,i.iD)("div",$C,[(0,i._)("div",ZC,[(0,i.Wm)(l,{class:"icon",onClick:t[0]||(t[0]=e=>a("close"))})]),(0,i._)("div",OC,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(n),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["thumbnail",{active:t===(0,s.SU)(r)}]),key:e.id,onClick:e=>c(t)},[(0,i.Wm)(Jd,{slide:e,size:150,visible:t<(0,s.SU)(u)},null,8,["slide","visible"])],10,RC)))),128))])])}}});const PC=(0,Vl.Z)(zC,[["__scopeId","data-v-15912b32"]]);var BC=PC;const NC={key:0,class:"blackboard"};var jC=(0,i.aZ)({__name:"WritingBoard",props:{color:{default:"#ffcc00"},model:{default:"pen"},blackboard:{type:Boolean,default:!1},penSize:{default:6},markSize:{default:24},rubberSize:{default:80}},emits:["end"],setup(e,{expose:t,emit:l}){const a=e,n=l;let o=null;const r=(0,s.iH)(),u=(0,s.iH)();let c={x:0,y:0},d=!1,p=0,v=-1;const m=(0,s.iH)({x:0,y:0}),h=(0,s.iH)(!1),f=(0,s.iH)(0),g=(0,s.iH)(0),y=(0,i.Fl)((()=>u.value?f.value/u.value.width:1)),w=(0,i.Fl)((()=>u.value?g.value/u.value.height:1)),x=()=>{r.value&&(f.value=r.value.clientWidth,g.value=r.value.clientHeight)},k=new ResizeObserver(x);(0,i.bv)((()=>{r.value&&k.observe(r.value)})),(0,i.Ah)((()=>{r.value&&k.unobserve(r.value)}));const b=()=>{u.value&&r.value&&(o=u.value.getContext("2d"),o&&(u.value.width=r.value.clientWidth,u.value.height=r.value.clientHeight,o.lineCap="round",o.lineJoin="round"))};(0,i.bv)(b);const _=()=>{o&&("mark"===a.model?(o.globalCompositeOperation="xor",o.globalAlpha=.5):"pen"===a.model&&(o.globalCompositeOperation="source-over",o.globalAlpha=1))};(0,i.YP)((()=>a.model),_);const I=(e,t,l)=>{if(!o)return;const n=c.x,i=c.y;o.lineWidth=l,o.strokeStyle=a.color,o.beginPath(),o.moveTo(n,i),o.lineTo(e,t),o.stroke(),o.closePath()},S=(e,t)=>{if(!o||!u.value)return;const l=c.x,n=c.y,i=a.rubberSize/2,s=i*Math.sin(Math.atan((t-n)/(e-l))),r=i*Math.cos(Math.atan((t-n)/(e-l))),d=[l+s,n-r],p=[l-s,n+r],v=[e+s,t-r],m=[e-s,t+r];o.save(),o.beginPath(),o.arc(e,t,i,0,2*Math.PI),o.clip(),o.clearRect(0,0,u.value.width,u.value.height),o.restore(),o.save(),o.beginPath(),o.moveTo(...d),o.lineTo(...v),o.lineTo(...m),o.lineTo(...p),o.closePath(),o.clip(),o.clearRect(0,0,u.value.width,u.value.height),o.restore()},C=(e,t)=>{const l=c.x,a=c.y;return Math.sqrt((e-l)*(e-l)+(t-a)*(t-a))},L=(e,t)=>{const l=10,n=.1,o=a.penSize,i=3,s=e/t;let r;return r=s<=n?o:s>=l?i:o-s/l*o,-1===v?r:1*r/3+2*v/3},T=(e,t)=>{const l=(new Date).getTime();if("pen"===a.model){const a=C(e,t),n=l-p,o=L(a,n);I(e,t,o),v=o}else"mark"===a.model?I(e,t,a.markSize):S(e,t);c={x:e,y:t},p=(new Date).getTime()},E=e=>{if(!u.value)return[0,0];const t=e instanceof MouseEvent?e:e.changedTouches[0],l=u.value.getBoundingClientRect(),a=t.pageX-l.x,n=t.pageY-l.y;return[a,n]},M=e=>{const[t,l]=E(e),a=t/y.value,n=l/w.value;d=!0,c={x:a,y:n},p=(new Date).getTime(),e instanceof MouseEvent||(m.value={x:t,y:l},h.value=!0)},U=e=>{const[t,l]=E(e),a=t/y.value,n=l/w.value;m.value={x:t,y:l},d&&T(a,n)},W=()=>{d&&(d=!1,n("end"))},D=()=>{o&&u.value&&(o.clearRect(0,0,u.value.width,u.value.height),n("end"))},H=()=>u.value?.toDataURL(),F=e=>{if(o&&u.value&&(o.clearRect(0,0,u.value.width,u.value.height),e)){o.globalCompositeOperation="source-over",o.globalAlpha=1;const t=new Image;t.src=e,t.onload=()=>{o.drawImage(t,0,0),_()}}};return t({clearCanvas:D,getImageDataURL:H,setImageDataURL:F}),(e,t)=>{const l=(0,i.up)("IconWrite"),a=(0,i.up)("IconHighLight");return(0,i.wg)(),(0,i.iD)("div",{class:"writing-board",ref_key:"writingBoardRef",ref:r},[e.blackboard?((0,i.wg)(),(0,i.iD)("div",NC)):(0,i.kq)("",!0),(0,i._)("canvas",{class:"canvas",ref_key:"canvasRef",ref:u,style:(0,oe.j5)({width:f.value+"px",height:g.value+"px"}),onMousedown:t[0]||(t[0]=e=>M(e)),onMousemove:t[1]||(t[1]=e=>U(e)),onMouseup:t[2]||(t[2]=e=>W()),onTouchstart:t[3]||(t[3]=e=>M(e)),onTouchmove:t[4]||(t[4]=e=>U(e)),onTouchend:t[5]||(t[5]=e=>{W(),h.value=!1}),onMouseleave:t[6]||(t[6]=e=>{W(),h.value=!1}),onMouseenter:t[7]||(t[7]=e=>h.value=!0)},null,36),h.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},["eraser"===e.model?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"eraser",style:(0,oe.j5)({left:m.value.x-e.rubberSize/2+"px",top:m.value.y-e.rubberSize/2+"px",width:e.rubberSize+"px",height:e.rubberSize+"px"})},null,4)):(0,i.kq)("",!0),"pen"===e.model?((0,i.wg)(),(0,i.iD)("div",{key:1,class:"pen",style:(0,oe.j5)({left:m.value.x-e.penSize/2+"px",top:m.value.y-6*e.penSize+e.penSize/2+"px",color:e.color})},["pen"===e.model?((0,i.wg)(),(0,i.j4)(l,{key:0,class:"icon",size:6*e.penSize},null,8,["size"])):(0,i.kq)("",!0)],4)):(0,i.kq)("",!0),"mark"===e.model?((0,i.wg)(),(0,i.iD)("div",{key:2,class:"pen",style:(0,oe.j5)({left:m.value.x-e.markSize/2+"px",top:m.value.y+"px",color:e.color})},["mark"===e.model?((0,i.wg)(),(0,i.j4)(a,{key:0,class:"icon",size:1.5*e.markSize},null,8,["size"])):(0,i.kq)("",!0)],4)):(0,i.kq)("",!0)],64)):(0,i.kq)("",!0)],512)}}});const YC=(0,Vl.Z)(jC,[["__scopeId","data-v-d8027742"]]);var VC=YC;const JC=e=>((0,i.dD)("data-v-92cd0b5a"),e=e(),(0,i.Cn)(),e),qC={class:"writing-board-tool"},XC={class:"tool-content"},GC={class:"size"},KC=JC((()=>(0,i._)("div",{class:"label"},"墨迹粗细:",-1))),QC={class:"size"},eL=JC((()=>(0,i._)("div",{class:"label"},"墨迹粗细:",-1))),tL={class:"size"},lL=JC((()=>(0,i._)("div",{class:"label"},"橡皮大小:",-1))),aL={class:"colors"},nL=["onClick"];var oL=(0,i.aZ)({__name:"WritingBoardTool",props:{slideWidth:{},slideHeight:{},left:{default:-5},top:{default:-5}},emits:["close"],setup(e,{emit:t}){const l=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#ffff3a"],a=t,{currentSlide:r}=(0,o.Jk)($()),u=(0,s.iH)(),c=(0,s.iH)("#e2534d"),d=(0,s.iH)("pen"),p=(0,s.iH)(!1),v=(0,s.iH)(""),m=(0,s.iH)(6),h=(0,s.iH)(24),f=(0,s.iH)(80),g=e=>{d.value===e?v.value=v.value===e?"":e:(v.value&&(v.value=""),d.value=e)},y=()=>{u.value.clearCanvas()},w=e=>{"eraser"===d.value&&(d.value="pen"),c.value=e},x=()=>{a("close")};(0,i.YP)(r,(()=>{V.writingBoardImgs.where("id").equals(r.value.id).toArray().then((e=>{const t=e[0];u.value.setImageDataURL(t?.dataURL||"")}))}),{immediate:!0});const k=()=>{const e=u.value.getImageDataURL();e&&V.writingBoardImgs.where("id").equals(r.value.id).toArray().then((t=>{const l=t[0];l?V.writingBoardImgs.update(l,{dataURL:e}):V.writingBoardImgs.add({id:r.value.id,dataURL:e})}))};return(e,t)=>{const a=(0,i.up)("IconWrite"),o=(0,i.up)("IconHighLight"),s=(0,i.up)("IconErase"),r=(0,i.up)("IconClear"),b=(0,i.up)("IconFill"),_=(0,i.up)("IconClose"),I=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",qC,[(0,i._)("div",{class:"writing-board-wrap",style:(0,oe.j5)({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[(0,i.Wm)(VC,{ref_key:"writingBoardRef",ref:u,color:c.value,blackboard:p.value,model:d.value,penSize:m.value,markSize:h.value,rubberSize:f.value,onEnd:t[0]||(t[0]=e=>k())},null,8,["color","blackboard","model","penSize","markSize","rubberSize"])],4),(0,i.Wm)(ZS,{class:"tools-panel",width:520,height:50,left:e.left,top:e.top,moveable:""===v.value},{default:(0,i.w5)((()=>[(0,i._)("div",{class:"tools",onMousedown:t[10]||(t[10]=(0,n.iM)((()=>{}),["stop"]))},[(0,i._)("div",XC,[(0,i.Wm)(dn,{trigger:"manual",value:"pen"===v.value},{content:(0,i.w5)((()=>[(0,i._)("div",GC,[KC,(0,i.Wm)(qm,{class:"size-slider",min:4,max:10,step:2,value:m.value,"onUpdate:value":t[1]||(t[1]=e=>m.value=e)},null,8,["value"])])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["btn",{active:"pen"===d.value}]),onClick:t[2]||(t[2]=e=>g("pen"))},[(0,i.Wm)(a,{class:"icon"})],2)),[[I,"画笔"]])])),_:1},8,["value"]),(0,i.Wm)(dn,{trigger:"manual",value:"mark"===v.value},{content:(0,i.w5)((()=>[(0,i._)("div",QC,[eL,(0,i.Wm)(qm,{class:"size-slider",min:16,max:40,step:4,value:h.value,"onUpdate:value":t[3]||(t[3]=e=>h.value=e)},null,8,["value"])])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["btn",{active:"mark"===d.value}]),onClick:t[4]||(t[4]=e=>g("mark"))},[(0,i.Wm)(o,{class:"icon"})],2)),[[I,"荧光笔"]])])),_:1},8,["value"]),(0,i.Wm)(dn,{trigger:"manual",value:"eraser"===v.value},{content:(0,i.w5)((()=>[(0,i._)("div",tL,[lL,(0,i.Wm)(qm,{class:"size-slider",min:20,max:200,step:20,value:f.value,"onUpdate:value":t[5]||(t[5]=e=>f.value=e)},null,8,["value"])])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["btn",{active:"eraser"===d.value}]),onClick:t[6]||(t[6]=e=>g("eraser"))},[(0,i.Wm)(s,{class:"icon"})],2)),[[I,"橡皮擦"]])])),_:1},8,["value"]),(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"btn",onClick:t[7]||(t[7]=e=>y())},[(0,i.Wm)(r,{class:"icon"})])),[[I,"清除墨迹"]]),(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["btn",{active:p.value}]),onClick:t[8]||(t[8]=e=>p.value=!p.value)},[(0,i.Wm)(b,{class:"icon"})],2)),[[I,"黑板"]]),(0,i._)("div",aL,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(l,(e=>(0,i._)("div",{class:(0,oe.C_)(["color",{active:e===c.value}]),key:e,style:(0,oe.j5)({backgroundColor:e}),onClick:t=>w(e)},null,14,nL))),64))])]),(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"btn",onClick:t[9]||(t[9]=e=>x())},[(0,i.Wm)(_,{class:"icon"})])),[[I,"关闭画笔"]])],32)])),_:1},8,["left","top","moveable"])])}}});const iL=(0,Vl.Z)(oL,[["__scopeId","data-v-92cd0b5a"]]);var sL=iL;const rL=e=>((0,i.dD)("data-v-83a589f0"),e=e(),(0,i.Cn)(),e),uL={class:"header"},cL={class:"content"},dL={class:"timer"},pL=["value","disabled"],vL=rL((()=>(0,i._)("div",{class:"colon"},":",-1))),mL={class:"timer"},hL=["value","disabled"];var fL=(0,i.aZ)({__name:"CountdownTimer",props:{left:{default:5},top:{default:5}},emits:["close"],setup(e,{emit:t}){const l=t,a=(0,s.iH)(null),o=(0,s.iH)(!1),r=(0,s.iH)(!1),u=(0,s.iH)(0),c=(0,i.Fl)((()=>Math.floor(u.value/60))),d=(0,i.Fl)((()=>u.value%60)),p=(0,i.Fl)((()=>!r.value||o.value)),v=()=>{a.value&&clearInterval(a.value)};(0,i.Ah)(v);const m=()=>{v(),o.value=!1},h=()=>{v(),o.value=!1,r.value?u.value=600:u.value=0},f=()=>{v(),r.value?a.value=setInterval((()=>{u.value=u.value-1,u.value<=0&&h()}),1e3):a.value=setInterval((()=>{u.value=u.value+1,u.value>36e3&&m()}),1e3),o.value=!0},g=()=>{o.value?m():f()},y=()=>{r.value=!r.value,h()},w=(e,t)=>{const l=e.target;let a=l.value;const n=/^(\d)+$/.test(a);n?("second"===t&&+a>=60&&(a="59"),u.value="minute"===t?60*+a+d.value:+a+60*c.value):l.value=G("minute"===t?c.value:d.value,2)};return(e,t)=>{const a=(0,i.up)("IconClose");return(0,i.wg)(),(0,i.j4)(ZS,{class:"countdown-timer",width:180,height:110,left:e.left,top:e.top},{default:(0,i.w5)((()=>[(0,i._)("div",uL,[(0,i._)("span",{class:"text-btn",onClick:t[0]||(t[0]=e=>g())},(0,oe.zw)(o.value?"暂停":"开始"),1),(0,i._)("span",{class:"text-btn",onClick:t[1]||(t[1]=e=>h())},"重置"),(0,i._)("span",{class:(0,oe.C_)(["text-btn",{active:r.value}]),onClick:t[2]||(t[2]=e=>y())},"倒计时",2)]),(0,i._)("div",cL,[(0,i._)("div",dL,[(0,i._)("input",{type:"text",value:(0,s.SU)(G)(c.value,2),maxlength:3,disabled:p.value,onMousedown:t[3]||(t[3]=(0,n.iM)((()=>{}),["stop"])),onBlur:t[4]||(t[4]=e=>w(e,"minute")),onKeydown:[t[5]||(t[5]=(0,n.iM)((()=>{}),["stop"])),t[6]||(t[6]=(0,n.D2)((0,n.iM)((e=>w(e,"minute")),["stop"]),["enter"]))]},null,40,pL)]),vL,(0,i._)("div",mL,[(0,i._)("input",{type:"text",value:(0,s.SU)(G)(d.value,2),maxlength:3,disabled:p.value,onMousedown:t[7]||(t[7]=(0,n.iM)((()=>{}),["stop"])),onBlur:t[8]||(t[8]=e=>w(e,"second")),onKeydown:[t[9]||(t[9]=(0,n.iM)((()=>{}),["stop"])),t[10]||(t[10]=(0,n.D2)((0,n.iM)((e=>w(e,"second")),["stop"]),["enter"]))]},null,40,hL)])]),(0,i._)("div",{class:"close-btn",onClick:t[11]||(t[11]=e=>l("close"))},[(0,i.Wm)(a,{class:"icon"})])])),_:1},8,["left","top"])}}});const gL=(0,Vl.Z)(fL,[["__scopeId","data-v-83a589f0"]]);var yL=gL;const wL={class:"tools-left"},xL={class:"content"};var kL=(0,i.aZ)({__name:"BaseView",props:{changeViewMode:{type:Function}},setup(e){const t=e,{slides:l,slideIndex:a}=(0,o.Jk)($()),{autoPlayTimer:n,autoPlay:r,closeAutoPlay:u,autoPlayInterval:c,setAutoPlayInterval:d,loopPlay:p,setLoopPlay:v,mousewheelListener:m,touchStartListener:h,touchEndListener:f,turnPrevSlide:g,turnNextSlide:y,turnSlideToIndex:w,turnSlideToId:x,execPrev:k,execNext:b,animationIndex:_}=hC(),{slideWidth:I,slideHeight:S}=fC(),{exitScreening:C}=Ca(),{fullscreenState:L,manualExitFullscreen:T}=gC(),E=(0,s.iH)(!1),M=(0,s.iH)(!1),U=(0,s.iH)(!1),W=(0,s.iH)(!1),D=(0,s.iH)(!1),H=()=>[{text:"上一页",subText:"↑ ←",disable:a.value<=0,handler:()=>g()},{text:"下一页",subText:"↓ →",disable:a.value>=l.value.length-1,handler:()=>y()},{text:"第一页",disable:0===a.value,handler:()=>w(0)},{text:"最后一页",disable:a.value===l.value.length-1,handler:()=>w(l.value.length-1)},{divider:!0},{text:n.value?"取消自动放映":"自动放映",handler:n.value?u:r,children:[{text:"2.5秒",subText:2500===c.value?"√":"",handler:()=>d(2500)},{text:"5秒",subText:5e3===c.value?"√":"",handler:()=>d(5e3)},{text:"7.5秒",subText:7500===c.value?"√":"",handler:()=>d(7500)},{text:"10秒",subText:1e4===c.value?"√":"",handler:()=>d(1e4)}]},{text:"循环放映",subText:p.value?"√":"",handler:()=>v(!p.value)},{divider:!0},{text:"显示工具栏",handler:()=>E.value=!0},{text:"查看所有幻灯片",handler:()=>W.value=!0},{text:"画笔工具",handler:()=>M.value=!0},{text:"演讲者视图",handler:()=>t.changeViewMode("presenter")},{divider:!0},{text:"结束放映",subText:"ESC",handler:C}];return(e,t)=>{const n=(0,i.up)("IconLeftTwo"),o=(0,i.up)("IconRightTwo"),r=(0,i.up)("IconWrite"),u=(0,i.up)("IconMagic"),c=(0,i.up)("IconStopwatchStart"),d=(0,i.up)("IconListView"),p=(0,i.up)("IconOffScreenOne"),v=(0,i.up)("IconFullScreenOne"),g=(0,i.up)("IconPower"),y=(0,i.Q2)("contextmenu"),F=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["base-view",{"laser-pen":D.value}])},[(0,i.wy)((0,i.Wm)(AC,{slideWidth:(0,s.SU)(I),slideHeight:(0,s.SU)(S),animationIndex:(0,s.SU)(_),turnSlideToId:(0,s.SU)(x),manualExitFullscreen:(0,s.SU)(T),onWheel:t[0]||(t[0]=e=>(0,s.SU)(m)(e)),onTouchstart:t[1]||(t[1]=e=>(0,s.SU)(h)(e)),onTouchend:t[2]||(t[2]=e=>(0,s.SU)(f)(e))},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[y,H]]),W.value?((0,i.wg)(),(0,i.j4)(BC,{key:0,turnSlideToIndex:(0,s.SU)(w),onClose:t[3]||(t[3]=e=>W.value=!1)},null,8,["turnSlideToIndex"])):(0,i.kq)("",!0),M.value?((0,i.wg)(),(0,i.j4)(sL,{key:1,slideWidth:(0,s.SU)(I),slideHeight:(0,s.SU)(S),onClose:t[4]||(t[4]=e=>M.value=!1)},null,8,["slideWidth","slideHeight"])):(0,i.kq)("",!0),U.value?((0,i.wg)(),(0,i.j4)(yL,{key:2,onClose:t[5]||(t[5]=e=>U.value=!1)})):(0,i.kq)("",!0),(0,i._)("div",wL,[(0,i.Wm)(n,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[6]||(t[6]=e=>(0,s.SU)(k)())}),(0,i.Wm)(o,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[7]||(t[7]=e=>(0,s.SU)(b)())})]),(0,i._)("div",{class:(0,oe.C_)(["tools-right",{visible:E.value}]),onMouseleave:t[16]||(t[16]=e=>E.value=!1),onMouseenter:t[17]||(t[17]=e=>E.value=!0)},[(0,i._)("div",xL,[(0,i._)("div",{class:"tool-btn page-number",onClick:t[8]||(t[8]=e=>W.value=!0)},"幻灯片 "+(0,oe.zw)((0,s.SU)(a)+1)+" / "+(0,oe.zw)((0,s.SU)(l).length),1),(0,i.wy)((0,i.Wm)(r,{class:"tool-btn",onClick:t[9]||(t[9]=e=>M.value=!0)},null,512),[[F,"画笔工具"]]),(0,i.wy)((0,i.Wm)(u,{class:(0,oe.C_)(["tool-btn",{active:D.value}]),onClick:t[10]||(t[10]=e=>D.value=!D.value)},null,8,["class"]),[[F,"激光笔"]]),(0,i.wy)((0,i.Wm)(c,{class:(0,oe.C_)(["tool-btn",{active:U.value}]),onClick:t[11]||(t[11]=e=>U.value=!U.value)},null,8,["class"]),[[F,"计时器"]]),(0,i.wy)((0,i.Wm)(d,{class:"tool-btn",onClick:t[12]||(t[12]=t=>e.changeViewMode("presenter"))},null,512),[[F,"演讲者视图"]]),(0,s.SU)(L)?(0,i.wy)(((0,i.wg)(),(0,i.j4)(p,{key:0,class:"tool-btn",onClick:t[13]||(t[13]=e=>(0,s.SU)(T)())},null,512)),[[F,"退出全屏"]]):(0,i.wy)(((0,i.wg)(),(0,i.j4)(v,{key:1,class:"tool-btn",onClick:t[14]||(t[14]=e=>(0,s.SU)(_a)())},null,512)),[[F,"进入全屏"]]),(0,i.wy)((0,i.Wm)(g,{class:"tool-btn",onClick:t[15]||(t[15]=e=>(0,s.SU)(C)())},null,512),[[F,"结束放映"]])])],34)],2)}}});const bL=(0,Vl.Z)(kL,[["__scopeId","data-v-e9c1efea"]]);var _L=bL;const IL=e=>((0,i.dD)("data-v-77a65275"),e=e(),(0,i.Cn)(),e),SL={class:"presenter-view"},CL={class:"toolbar"},LL=IL((()=>(0,i._)("span",null,"普通视图",-1))),TL=IL((()=>(0,i._)("span",null,"画笔",-1))),EL=IL((()=>(0,i._)("span",null,"激光笔",-1))),ML=IL((()=>(0,i._)("span",null,"计时器",-1))),UL=IL((()=>(0,i._)("span",null,"结束放映",-1))),WL={class:"content"},DL=["onClick"],HL={class:"remark"},FL={class:"header"},AL=IL((()=>(0,i._)("span",null,"演讲者备注",-1))),$L=["innerHTML"],ZL={class:"remark-scale"};var OL=(0,i.aZ)({__name:"PresenterView",props:{changeViewMode:{type:Function}},setup(e){const t=e,{slides:l,slideIndex:a,viewportRatio:r,currentSlide:u}=(0,o.Jk)($()),c=(0,s.iH)(),d=(0,s.iH)(),p=(0,s.iH)(!1),v=(0,s.iH)(!1),m=(0,s.iH)(!1),{mousewheelListener:h,touchStartListener:f,touchEndListener:g,turnPrevSlide:y,turnNextSlide:w,turnSlideToIndex:x,turnSlideToId:k,animationIndex:b}=hC(),{slideWidth:_,slideHeight:I}=fC(c),{exitScreening:S}=Ca(),{slidesLoadLimit:C}=Cm(),{fullscreenState:L,manualExitFullscreen:T}=gC(),E=(0,s.iH)(16),M=(0,i.Fl)((()=>la(u.value.remark||"无备注"))),U=e=>{d.value&&d.value.scrollBy(e.deltaY,0)},W=e=>{e<12||e>40||(E.value=e)};(0,i.YP)(a,(()=>{(0,i.Y3)((()=>{if(!d.value)return;const e=d.value.querySelector(".thumbnail.active");if(!e)return;const t=d.value.offsetWidth,l=e.offsetLeft;d.value.scrollTo({left:l-t/2,behavior:"smooth"})}))}));const D=()=>[{text:"上一页",subText:"↑ ←",disable:a.value<=0,handler:()=>y()},{text:"下一页",subText:"↓ →",disable:a.value>=l.value.length-1,handler:()=>w()},{text:"第一页",disable:0===a.value,handler:()=>x(0)},{text:"最后一页",disable:a.value===l.value.length-1,handler:()=>x(l.value.length-1)},{divider:!0},{text:"画笔工具",handler:()=>p.value=!0},{text:"普通视图",handler:()=>t.changeViewMode("base")},{divider:!0},{text:"结束放映",subText:"ESC",handler:S}];return(e,t)=>{const o=(0,i.up)("IconListView"),u=(0,i.up)("IconWrite"),y=(0,i.up)("IconMagic"),w=(0,i.up)("IconStopwatchStart"),H=(0,i.up)("IconOffScreenOne"),F=(0,i.up)("IconPower"),A=(0,i.up)("IconMinus"),$=(0,i.up)("IconPlus"),Z=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",SL,[(0,i._)("div",CL,[(0,i._)("div",{class:"tool-btn",onClick:t[0]||(t[0]=t=>e.changeViewMode("base"))},[(0,i.Wm)(o,{class:"tool-icon"}),LL]),(0,i._)("div",{class:(0,oe.C_)(["tool-btn",{active:p.value}]),onClick:t[1]||(t[1]=e=>p.value=!p.value)},[(0,i.Wm)(u,{class:"tool-icon"}),TL],2),(0,i._)("div",{class:(0,oe.C_)(["tool-btn",{active:m.value}]),onClick:t[2]||(t[2]=e=>m.value=!m.value)},[(0,i.Wm)(y,{class:"tool-icon"}),EL],2),(0,i._)("div",{class:(0,oe.C_)(["tool-btn",{active:v.value}]),onClick:t[3]||(t[3]=e=>v.value=!v.value)},[(0,i.Wm)(w,{class:"tool-icon"}),ML],2),(0,i._)("div",{class:"tool-btn",onClick:t[4]||(t[4]=()=>(0,s.SU)(L)?(0,s.SU)(T)():(0,s.SU)(_a)())},[(0,s.SU)(L)?((0,i.wg)(),(0,i.j4)(H,{key:0,class:"tool-icon"})):((0,i.wg)(),(0,i.j4)(H,{key:1,class:"tool-icon"})),(0,i._)("span",null,(0,oe.zw)((0,s.SU)(L)?"退出全屏":"全屏"),1)]),(0,i.Wm)(Zc,{class:"divider"}),(0,i._)("div",{class:"tool-btn",onClick:t[5]||(t[5]=e=>(0,s.SU)(S)())},[(0,i.Wm)(F,{class:"tool-icon"}),UL])]),(0,i._)("div",WL,[(0,i._)("div",{class:(0,oe.C_)(["slide-list-wrap",{"laser-pen":m.value}]),ref_key:"slideListWrapRef",ref:c},[(0,i.wy)((0,i.Wm)(AC,{slideWidth:(0,s.SU)(_),slideHeight:(0,s.SU)(I),animationIndex:(0,s.SU)(b),turnSlideToId:(0,s.SU)(k),manualExitFullscreen:(0,s.SU)(T),onWheel:t[6]||(t[6]=e=>(0,s.SU)(h)(e)),onTouchstart:t[7]||(t[7]=e=>(0,s.SU)(f)(e)),onTouchend:t[8]||(t[8]=e=>(0,s.SU)(g)(e))},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[Z,D]]),p.value?((0,i.wg)(),(0,i.j4)(sL,{key:0,slideWidth:(0,s.SU)(_),slideHeight:(0,s.SU)(I),left:-365,top:-155,onClose:t[9]||(t[9]=e=>p.value=!1)},null,8,["slideWidth","slideHeight"])):(0,i.kq)("",!0),v.value?((0,i.wg)(),(0,i.j4)(yL,{key:1,left:75,onClose:t[10]||(t[10]=e=>v.value=!1)})):(0,i.kq)("",!0)],2),(0,i._)("div",{class:"thumbnails",ref_key:"thumbnailsRef",ref:d,onWheel:t[11]||(t[11]=(0,n.iM)((e=>U(e)),["prevent"]))},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(l),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["thumbnail",{active:t===(0,s.SU)(a)}]),key:e.id,onClick:e=>(0,s.SU)(x)(t)},[(0,i.Wm)(Jd,{slide:e,size:120/(0,s.SU)(r),visible:t<(0,s.SU)(C)},null,8,["slide","size","visible"])],10,DL)))),128))],544)]),(0,i._)("div",HL,[(0,i._)("div",FL,[AL,(0,i._)("span",null,"P "+(0,oe.zw)((0,s.SU)(a)+1)+" / "+(0,oe.zw)((0,s.SU)(l).length),1)]),(0,i._)("div",{class:"remark-content ProseMirror-static",style:(0,oe.j5)({fontSize:E.value+"px"}),innerHTML:M.value},null,12,$L),(0,i._)("div",ZL,[(0,i._)("div",{class:(0,oe.C_)(["scale-btn",{disable:12===E.value}]),onClick:t[12]||(t[12]=e=>W(E.value-2))},[(0,i.Wm)(A)],2),(0,i._)("div",{class:(0,oe.C_)(["scale-btn",{disable:40===E.value}]),onClick:t[13]||(t[13]=e=>W(E.value+2))},[(0,i.Wm)($)],2)])])])}}});const RL=(0,Vl.Z)(OL,[["__scopeId","data-v-77a65275"]]);var zL=RL;const PL={class:"pptist-screen"};var BL=(0,i.aZ)({__name:"index",setup(e){const t=(0,s.iH)("base"),l=e=>{t.value=e},{exitScreening:a}=Ca(),n=e=>{const t=e.key.toUpperCase();t===ne.ESC&&a()};return(0,i.bv)((()=>document.addEventListener("keydown",n))),(0,i.Ah)((()=>document.removeEventListener("keydown",n))),(e,a)=>((0,i.wg)(),(0,i.iD)("div",PL,["base"===t.value?((0,i.wg)(),(0,i.j4)(_L,{key:0,changeViewMode:l})):"presenter"===t.value?((0,i.wg)(),(0,i.j4)(zL,{key:1,changeViewMode:l})):(0,i.kq)("",!0)]))}});const NL=(0,Vl.Z)(BL,[["__scopeId","data-v-6bf3d190"]]);var jL=NL,YL=(0,i.aZ)({__name:"MobileEditableElement",props:{elementInfo:{},elementIndex:{},selectElement:{type:Function}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e={[sa.IMAGE]:$o,[sa.TEXT]:ls,[sa.SHAPE]:ys,[sa.LINE]:Es,[sa.CHART]:As,[sa.TABLE]:lr,[sa.LATEX]:rr,[sa.VIDEO]:Zr,[sa.AUDIO]:ou};return e[t.elementInfo.type]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"mobile-editable-element",style:(0,oe.j5)({zIndex:e.elementIndex})},[((0,i.wg)(),(0,i.j4)((0,i.LL)(l.value),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:()=>null},null,8,["elementInfo","selectElement"]))],4))}});const VL=YL;var JL=VL,qL=(0,i.aZ)({__name:"MobileOperate",props:{elementInfo:{},isSelected:{type:Boolean},canvasScale:{},scaleElement:{type:Function},rotateElement:{type:Function}},setup(e){const t=e,l=(0,i.Fl)((()=>"rotate"in t.elementInfo?t.elementInfo.rotate:0)),a=(0,i.Fl)((()=>t.elementInfo.width*t.canvasScale)),o=(0,i.Fl)((()=>t.elementInfo.height*t.canvasScale)),{borderLines:r,resizeHandlers:u,textElementResizeHandlers:c}=Ou(a,o),d="text"===t.elementInfo.type||"table"===t.elementInfo.type?c:u,p=(0,i.Fl)((()=>["chart","video","audio"].includes(t.elementInfo.type)));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"mobile-operate",style:(0,oe.j5)({top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:`rotate(${l.value}deg)`,transformOrigin:`${e.elementInfo.width*e.canvasScale/2}px ${e.elementInfo.height*e.canvasScale/2}px`})},[e.isSelected?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(r),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(d),(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onTouchstart:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onTouchstart"])))),128)),p.value?(0,i.kq)("",!0):((0,i.wg)(),(0,i.j4)(Qu,{key:0,class:"operate-rotate-handler",style:(0,oe.j5)({left:a.value/2+"px"}),onTouchstart:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"]))],64)):(0,i.kq)("",!0)],4))}});const XL=(0,Vl.Z)(qL,[["__scopeId","data-v-fd451ff6"]]);var GL=XL;const KL={class:"mobile-thumbnails"},QL=["onClick"],eT={class:"label"};var tT=(0,i.aZ)({__name:"MobileThumbnails",setup(e){const t=$(),{slides:l,slideIndex:a}=(0,o.Jk)(t),{sortSlides:n}=ha(),{slidesLoadLimit:r}=Cm(),u=e=>{t.updateSlideIndex(e)},c=e=>{const{newIndex:t,oldIndex:l}=e;void 0!==t&&void 0!==l&&t!==l&&n(t,l)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",KL,[(0,i.Wm)((0,s.SU)(Dm()),{class:"thumbnail-list",modelValue:(0,s.SU)(l),animation:200,scroll:!0,scrollSensitivity:50,delayOnTouchOnly:!0,delay:800,itemKey:"id",onEnd:c},{item:(0,i.w5)((({element:e,index:t})=>[(0,i._)("div",{class:(0,oe.C_)(["thumbnail-item",{active:(0,s.SU)(a)===t}]),onClick:e=>u(t)},[(0,i._)("div",eT,(0,oe.zw)(t+1),1),(0,i.Wm)(Jd,{class:"thumbnail",slide:e,size:120,visible:t<(0,s.SU)(r)},null,8,["slide","visible"])],10,QL)])),_:1},8,["modelValue"])]))}});const lT=(0,Vl.Z)(tT,[["__scopeId","data-v-2c80920e"]]);var aT=lT;const nT={class:"slide-toolbar"},oT={class:"remark"},iT=["value"],sT={class:"toolbar"};var rT=(0,i.aZ)({__name:"SlideToolbar",setup(e){const t=$(),{viewportRatio:l,currentSlide:a}=(0,o.Jk)(t),{createSlide:n,copyAndPasteSlide:r,deleteSlide:u}=ha(),{createTextElement:c,createImageElement:d,createShapeElement:p}=pa(),v=()=>{const e=400,t=56;c({left:(oa-e)/2,top:(oa*l.value-t)/2,width:e,height:t},{content:"

新添加文本

"})},m=e=>{e&&e[0]&&na(e[0]).then((e=>d(e)))},h=e=>{const t={viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},a={viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},n={square:t,round:a},o=200;p({left:(oa-o)/2,top:(oa*l.value-o)/2,width:o,height:o},n[e])},f=(0,i.Fl)((()=>a.value?.remark||"")),g=e=>{const l=e.target.value;t.updateSlide({remark:l})};return(e,t)=>{const l=(0,i.up)("IconPlus"),a=(0,i.up)("IconCopy"),o=(0,i.up)("IconDelete"),c=(0,i.up)("IconFontSize"),d=(0,i.up)("IconPicture"),p=(0,i.up)("IconSquare"),y=(0,i.up)("IconRound");return(0,i.wg)(),(0,i.iD)("div",nT,[(0,i._)("div",oT,[(0,i._)("textarea",{value:f.value,placeholder:"点击输入演讲者备注",onInput:t[0]||(t[0]=e=>g(e))},null,40,iT)]),(0,i._)("div",sT,[(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[1]||(t[1]=e=>(0,s.SU)(n)())},{default:(0,i.w5)((()=>[(0,i.Wm)(l,{class:"icon"}),(0,i.Uk)(" 新幻灯片")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[2]||(t[2]=e=>(0,s.SU)(r)())},{default:(0,i.w5)((()=>[(0,i.Wm)(a,{class:"icon"}),(0,i.Uk)(" 复制")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[3]||(t[3]=e=>(0,s.SU)(u)())},{default:(0,i.w5)((()=>[(0,i.Wm)(o,{class:"icon"}),(0,i.Uk)(" 删除")])),_:1})])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[4]||(t[4]=e=>v())},{default:(0,i.w5)((()=>[(0,i.Wm)(c,{class:"icon"}),(0,i.Uk)(" 文字")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(Pa,{onChange:t[5]||(t[5]=e=>m(e))},{default:(0,i.w5)((()=>[(0,i.Wm)(d,{class:"icon"}),(0,i.Uk)("图片 ")])),_:1})])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[6]||(t[6]=e=>h("square"))},{default:(0,i.w5)((()=>[(0,i.Wm)(p,{class:"icon"}),(0,i.Uk)(" 矩形")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[7]||(t[7]=e=>h("round"))},{default:(0,i.w5)((()=>[(0,i.Wm)(y,{class:"icon"}),(0,i.Uk)(" 圆形")])),_:1})])),_:1})]),(0,i.Wm)(aT)])}}});const uT=(0,Vl.Z)(rT,[["__scopeId","data-v-24150aba"]]);var cT=uT;const dT=e=>((0,i.dD)("data-v-f3d1ac70"),e=e(),(0,i.Cn)(),e),pT={class:"element-toolbar"},vT={class:"content"},mT={key:0,class:"style"},hT={class:"row-block"},fT=dT((()=>(0,i._)("div",{class:"label"},"文字颜色:",-1))),gT={class:"colors"},yT=["onClick"],wT={class:"row-block"},xT=dT((()=>(0,i._)("div",{class:"label"},"填充色:",-1))),kT={class:"colors"},bT=["onClick"],_T={key:1,class:"common"};var IT=(0,i.aZ)({__name:"ElementToolbar",setup(e){const t=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57"],l=R(),a=$(),{handleElement:n,handleElementId:r,richTextAttrs:u}=(0,o.Jk)(l),{addHistorySnapshot:c}=da(),d=(e,t)=>{a.updateElement({id:e,props:t}),c()},p=[{key:"style",label:"样式"},{key:"common",label:"布局"}],v=(0,s.iH)("common"),{orderElement:m}=ba(),{alignElementToCanvas:h}=qn(),{addElementsFromData:f}=va(),{deleteElement:g}=ga(),y=()=>{const e=JSON.parse(JSON.stringify(n.value));f([e])},w=(e,t)=>{Oi.emit(Ai.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},x=e=>{if(n.value){if(("text"===n.value.type||"shape"===n.value.type&&n.value.text?.content)&&Oi.emit(Ai.RICH_TEXT_COMMAND,{action:{command:"color",value:e}}),"table"===n.value.type){const t=JSON.parse(JSON.stringify(n.value.data));for(let l=0;l{if(n.value){if("text"!==n.value.type&&"shape"!==n.value.type&&"chart"!==n.value.type||d(r.value,{fill:e}),"table"===n.value.type){const t=JSON.parse(JSON.stringify(n.value.data));for(let l=0;l{const a=(0,i.up)("IconTextBold"),o=(0,i.up)("IconTextItalic"),r=(0,i.up)("IconTextUnderline"),c=(0,i.up)("IconStrikethrough"),d=(0,i.up)("IconFontSize"),f=(0,i.up)("IconAlignTextLeft"),b=(0,i.up)("IconAlignTextCenter"),_=(0,i.up)("IconAlignTextRight"),I=(0,i.up)("IconCopy"),S=(0,i.up)("IconDelete"),C=(0,i.up)("IconSendToBack"),L=(0,i.up)("IconBringToFrontOne"),T=(0,i.up)("IconBringToFront"),E=(0,i.up)("IconSentToBack"),M=(0,i.up)("IconAlignLeft"),U=(0,i.up)("IconAlignVertically"),W=(0,i.up)("IconAlignRight"),D=(0,i.up)("IconAlignTop"),H=(0,i.up)("IconAlignHorizontally"),F=(0,i.up)("IconAlignBottom");return(0,i.wg)(),(0,i.iD)("div",pT,[(0,i.Wm)(Kd,{tabs:p,value:v.value,"onUpdate:value":l[0]||(l[0]=e=>v.value=e),tabsStyle:{marginBottom:"8px"},tabStyle:{width:"30%",margin:"0 10%"}},null,8,["value"]),(0,i._)("div",vT,["style"===v.value?((0,i.wg)(),(0,i.iD)("div",mT,[(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).bold,onClick:l[1]||(l[1]=e=>w("bold"))},{default:(0,i.w5)((()=>[(0,i.Wm)(a)])),_:1},8,["checked"]),(0,i.Wm)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).em,onClick:l[2]||(l[2]=e=>w("em"))},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1},8,["checked"]),(0,i.Wm)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).underline,onClick:l[3]||(l[3]=e=>w("underline"))},{default:(0,i.w5)((()=>[(0,i.Wm)(r)])),_:1},8,["checked"]),(0,i.Wm)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).strikethrough,onClick:l[4]||(l[4]=e=>w("strikethrough"))},{default:(0,i.w5)((()=>[(0,i.Wm)(c)])),_:1},8,["checked"])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[5]||(l[5]=e=>w("fontsize-add"))},{default:(0,i.w5)((()=>[(0,i.Wm)(d),(0,i.Uk)("+")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[6]||(l[6]=e=>w("fontsize-reduce"))},{default:(0,i.w5)((()=>[(0,i.Wm)(d),(0,i.Uk)("-")])),_:1})])),_:1}),(0,i.Wm)(Zc,{style:{margin:"20px 0"}}),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:(0,s.SU)(u).align,"onUpdate:value":l[7]||(l[7]=e=>w("align",e))},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{value:"left",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(f)])),_:1}),(0,i.Wm)(tg,{value:"center",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(b)])),_:1}),(0,i.Wm)(tg,{value:"right",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(_)])),_:1})])),_:1},8,["value"]),(0,i.Wm)(Zc,{style:{margin:"20px 0"}}),(0,i._)("div",hT,[fT,(0,i._)("div",gT,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(t,(e=>(0,i._)("div",{class:"color",key:e,onClick:t=>x(e)},[(0,i._)("div",{class:"color-block",style:(0,oe.j5)({backgroundColor:e})},null,4)],8,yT))),64))])]),(0,i._)("div",wT,[xT,(0,i._)("div",kT,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(t,(e=>(0,i._)("div",{class:"color",key:e,onClick:t=>k(e)},[(0,i._)("div",{class:"color-block",style:(0,oe.j5)({backgroundColor:e})},null,4)],8,bT))),64))])])])):(0,i.kq)("",!0),"common"===v.value?((0,i.wg)(),(0,i.iD)("div",_T,[(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[8]||(l[8]=e=>y())},{default:(0,i.w5)((()=>[(0,i.Wm)(I,{class:"icon"}),(0,i.Uk)(" 复制")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[9]||(l[9]=e=>(0,s.SU)(g)())},{default:(0,i.w5)((()=>[(0,i.Wm)(S,{class:"icon"}),(0,i.Uk)(" 删除")])),_:1})])),_:1}),(0,i.Wm)(Zc,{style:{margin:"20px 0"}}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[10]||(l[10]=e=>(0,s.SU)(m)((0,s.SU)(n),(0,s.SU)(Q).TOP))},{default:(0,i.w5)((()=>[(0,i.Wm)(C,{class:"icon"}),(0,i.Uk)(" 置顶")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[11]||(l[11]=e=>(0,s.SU)(m)((0,s.SU)(n),(0,s.SU)(Q).BOTTOM))},{default:(0,i.w5)((()=>[(0,i.Wm)(L,{class:"icon"}),(0,i.Uk)(" 置底")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[12]||(l[12]=e=>(0,s.SU)(m)((0,s.SU)(n),(0,s.SU)(Q).UP))},{default:(0,i.w5)((()=>[(0,i.Wm)(T,{class:"icon"}),(0,i.Uk)(" 上移")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[13]||(l[13]=e=>(0,s.SU)(m)((0,s.SU)(n),(0,s.SU)(Q).DOWN))},{default:(0,i.w5)((()=>[(0,i.Wm)(E,{class:"icon"}),(0,i.Uk)(" 下移")])),_:1})])),_:1}),(0,i.Wm)(Zc,{style:{margin:"20px 0"}}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[14]||(l[14]=e=>(0,s.SU)(h)((0,s.SU)(ee).LEFT))},{default:(0,i.w5)((()=>[(0,i.Wm)(M,{class:"icon"}),(0,i.Uk)(" 左对齐")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[15]||(l[15]=e=>(0,s.SU)(h)((0,s.SU)(ee).HORIZONTAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(U,{class:"icon"}),(0,i.Uk)(" 水平居中")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[16]||(l[16]=e=>(0,s.SU)(h)((0,s.SU)(ee).RIGHT))},{default:(0,i.w5)((()=>[(0,i.Wm)(W,{class:"icon"}),(0,i.Uk)(" 右对齐")])),_:1})])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[17]||(l[17]=e=>(0,s.SU)(h)((0,s.SU)(ee).TOP))},{default:(0,i.w5)((()=>[(0,i.Wm)(D,{class:"icon"}),(0,i.Uk)(" 上对齐")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[18]||(l[18]=e=>(0,s.SU)(h)((0,s.SU)(ee).VERTICAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(H,{class:"icon"}),(0,i.Uk)(" 垂直居中")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[19]||(l[19]=e=>(0,s.SU)(h)((0,s.SU)(ee).BOTTOM))},{default:(0,i.w5)((()=>[(0,i.Wm)(F,{class:"icon"}),(0,i.Uk)(" 下对齐")])),_:1})])),_:1})])):(0,i.kq)("",!0)])])}}});const ST=(0,Vl.Z)(IT,[["__scopeId","data-v-f3d1ac70"]]);var CT=ST;const LT={class:"mobile-editor-header"},TT={class:"history"};var ET=(0,i.aZ)({__name:"Header",props:{changeMode:{type:Function}},setup(e){const{canUndo:t,canRedo:l}=(0,o.Jk)(J()),{redo:a,undo:r}=da();return(e,o)=>{const u=(0,i.up)("IconBack"),c=(0,i.up)("IconNext"),d=(0,i.up)("IconLogout");return(0,i.wg)(),(0,i.iD)("div",LT,[(0,i._)("div",TT,[(0,i._)("div",{class:(0,oe.C_)(["history-item",{disable:!(0,s.SU)(t)}]),onClick:o[0]||(o[0]=(0,n.iM)((e=>(0,s.SU)(r)()),["stop"]))},[(0,i.Wm)(u),(0,i.Uk)(" 撤销")],2),(0,i._)("div",{class:(0,oe.C_)(["history-item",{disable:!(0,s.SU)(l)}]),onClick:o[1]||(o[1]=(0,n.iM)((e=>(0,s.SU)(a)()),["stop"]))},[(0,i.Wm)(c),(0,i.Uk)(" 重做")],2)]),(0,i._)("div",{class:"back",onClick:o[2]||(o[2]=t=>e.changeMode("preview"))},[(0,i.Wm)(d),(0,i.Uk)(" 退出编辑")])])}}});const MT=(0,Vl.Z)(ET,[["__scopeId","data-v-5c34ab81"]]);var UT=MT;const WT={class:"mobile-editor"};var DT=(0,i.aZ)({__name:"index",props:{changeMode:{type:Function}},setup(e){const t=$(),l=R(),{slideIndex:a,currentSlide:n,viewportRatio:r}=(0,o.Jk)(t),{activeElementIdList:u,handleElement:c}=(0,o.Jk)(l),d=(0,s.iH)(),p=(0,s.iH)(),v=(0,s.iH)([]),m=(0,i.Fl)((()=>n.value.background)),{backgroundStyle:h}=yu(m),f=(0,i.Fl)((()=>{if(!d.value)return 1;const e=d.value.clientWidth,t=d.value.clientHeight,l=t/e;return l>=r.value?(e-20)/oa:(t-20)/r.value/oa}));(0,i.bv)((()=>{u.value.length&&l.setActiveElementIdList([]),0!==a.value&&t.updateSlideIndex(0)}));const g=(0,i.Fl)((()=>({width:oa*f.value+"px",height:oa*r.value*f.value+"px"}))),y=(0,s.iH)([]),w=()=>{y.value=n.value?JSON.parse(JSON.stringify(n.value.elements)):[]};(0,i.m0)(w);const{dragElement:x}=jn(y,v,f),{scaleElement:k}=Bn(y,v,f),{rotateElement:b}=An(y,p,f),_=(e,t,a=!0)=>{u.value.includes(t.id)||(l.setActiveElementIdList([t.id]),l.setHandleElementId(t.id)),a&&x(e,t)},I=()=>{l.setActiveElementIdList([])};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",WT,[(0,i.Wm)(UT,{changeMode:e.changeMode},null,8,["changeMode"]),(0,i._)("div",{class:"content",ref_key:"contentRef",ref:d,onTouchstart:t[0]||(t[0]=e=>I())},[(0,i._)("div",{class:"viewport-wrapper",style:(0,oe.j5)(g.value)},[(0,i._)("div",{class:"background",style:(0,oe.j5)((0,s.SU)(h))},null,4),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(v.value,((e,t)=>((0,i.wg)(),(0,i.j4)(Iu,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:f.value},null,8,["type","axis","length","canvasScale"])))),128)),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(y.value,(e=>((0,i.wg)(),(0,i.iD)(i.HY,{key:e.id},["line"!==e.type?((0,i.wg)(),(0,i.j4)(GL,{key:0,elementInfo:e,isSelected:(0,s.SU)(u).includes(e.id),canvasScale:f.value,scaleElement:(0,s.SU)(k),rotateElement:(0,s.SU)(b)},null,8,["elementInfo","isSelected","canvasScale","scaleElement","rotateElement"])):(0,i.kq)("",!0)],64)))),128)),(0,i._)("div",{class:"viewport",ref_key:"viewportRef",ref:p,style:(0,oe.j5)({transform:`scale(${f.value})`})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(y.value,((e,t)=>((0,i.wg)(),(0,i.j4)(JL,{key:e.id,elementInfo:e,elementIndex:t+1,selectElement:_},null,8,["elementInfo","elementIndex"])))),128))],4)],4)],544),(0,i.Wm)(cT),(0,s.SU)(c)?((0,i.wg)(),(0,i.j4)(CT,{key:0})):(0,i.kq)("",!0)]))}});const HT=(0,Vl.Z)(DT,[["__scopeId","data-v-3756d058"]]);var FT=HT;const AT={class:"header"};var $T=(0,i.aZ)({__name:"MobilePlayer",props:{changeMode:{type:Function}},setup(e){const t=$(),{slides:l,slideIndex:a,currentSlide:n,viewportRatio:r}=(0,o.Jk)(t),u=(0,s.iH)(!1),c=(0,s.iH)({width:0,height:0});(0,i.bv)((()=>{0!==a.value&&t.updateSlideIndex(0),c.value={width:document.body.clientHeight,height:document.body.clientWidth}}));const d=(0,i.Fl)((()=>{const e=c.value.height/c.value.width;let t=0,l=0;return e>=r.value?(t=c.value.width,l=t*r.value):(l=c.value.height,t=l/r.value),{width:t,height:l}})),p=(0,s.iH)(null),v=e=>{p.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},m=e=>{if(!p.value)return;const n=Math.abs(p.value.y-e.changedTouches[0].pageY),o=e.changedTouches[0].pageX-p.value.x;Math.abs(o)>n&&Math.abs(o)>50&&(p.value=null,o<0&&a.value>0&&t.updateSlideIndex(a.value-1),o>0&&a.value{const o=(0,i.up)("IconLogout");return(0,i.wg)(),(0,i.iD)("div",{class:"mobile-player",style:(0,oe.j5)({width:c.value.width+"px",height:c.value.height+"px",transform:`rotate(90deg) translateY(-${c.value.height}px)`})},[(0,i._)("div",{class:"screen-slide-list",onClick:t[0]||(t[0]=e=>u.value=!u.value),onTouchstart:t[1]||(t[1]=e=>v(e)),onTouchend:t[2]||(t[2]=e=>m(e))},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(l),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["slide-item",`turning-mode-${e.turningMode||"slideY"}`,{current:t===(0,s.SU)(a),before:t<(0,s.SU)(a),after:t>(0,s.SU)(a),hide:(t===(0,s.SU)(a)-1||t===(0,s.SU)(a)+1)&&e.turningMode!==(0,s.SU)(n).turningMode}]),key:e.id},[Math.abs((0,s.SU)(a)-t)<2?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"slide-content",style:(0,oe.j5)({width:d.value.width+"px",height:d.value.height+"px"})},[(0,i.Wm)(Jd,{slide:e,size:d.value.width},null,8,["slide","size"])],4)):(0,i.kq)("",!0)],2)))),128))],32),u.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",AT,[(0,i._)("div",{class:"back",onClick:t[3]||(t[3]=t=>e.changeMode("preview"))},[(0,i.Wm)(o),(0,i.Uk)(" 退出播放")])]),(0,i.Wm)(aT,{class:"thumbnails"})],64)):(0,i.kq)("",!0)],4)}}});const ZT=(0,Vl.Z)($T,[["__scopeId","data-v-62f26eba"]]);var OT=ZT;const RT={class:"thumbnail-list"},zT={class:"menu"};var PT=(0,i.aZ)({__name:"MobilePreview",props:{changeMode:{type:Function}},setup(e){const{slides:t}=(0,o.Jk)($()),{slidesLoadLimit:l}=Cm(),a=(0,s.iH)(),n=(0,s.iH)(0);return(0,i.bv)((()=>{a.value&&(n.value=a.value.clientWidth)})),(e,o)=>{const r=(0,i.up)("IconEdit"),u=(0,i.up)("IconFullScreenPlay");return(0,i.wg)(),(0,i.iD)("div",{class:"mobile-preview",ref_key:"mobileRef",ref:a},[(0,i._)("div",RT,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(t),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"thumbnail-item",key:e.id},[(0,i.Wm)(Jd,{slide:e,size:n.value-20,visible:t<(0,s.SU)(l)},null,8,["slide","size","visible"])])))),128))]),(0,i._)("div",zT,[(0,i._)("div",{class:"menu-item",onClick:o[0]||(o[0]=t=>e.changeMode("editor"))},[(0,i.Wm)(r,{class:"icon"}),(0,i.Uk)(" 编辑")]),(0,i.Wm)(Zc,{type:"vertical",style:{height:"30px"}}),(0,i._)("div",{class:"menu-item",onClick:o[1]||(o[1]=t=>e.changeMode("player"))},[(0,i.Wm)(u,{class:"icon"}),(0,i.Uk)(" 播放")])])],512)}}});const BT=(0,Vl.Z)(PT,[["__scopeId","data-v-53dd42dc"]]);var NT=BT;const jT={class:"mobile"};var YT=(0,i.aZ)({__name:"index",setup(e){const t=(0,s.iH)("preview"),l=e=>t.value=e,a=(0,i.Fl)((()=>{const e={editor:FT,player:OT,preview:NT};return e[t.value]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",jT,[((0,i.wg)(),(0,i.j4)((0,i.LL)(a.value),{changeMode:l}))]))}});const VT=(0,Vl.Z)(YT,[["__scopeId","data-v-9826ff08"]]);var JT=VT,qT=(0,i.aZ)({__name:"App",setup(e){const t=K(),l=R(),a=J(),{databaseId:n}=(0,o.Jk)(l),{screening:r}=(0,o.Jk)(X());return window.onbeforeunload=()=>!1,(0,i.bv)((async()=>{await j(),a.initSnapshotDatabase(),l.setAvailableFonts()})),window.addEventListener("unload",(()=>{const e=localStorage.getItem(B),t=e?JSON.parse(e):[];t.push(n.value);const l=JSON.stringify(t);localStorage.setItem(B,l)})),(e,l)=>(0,s.SU)(r)?((0,i.wg)(),(0,i.j4)(jL,{key:0})):(0,s.SU)(t)?((0,i.wg)(),(0,i.j4)(mC,{key:1})):((0,i.wg)(),(0,i.j4)(JT,{key:2}))}});const XT=qT;var GT=XT,KT=l(5205);(0,KT.z)("service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh.")},offline(){console.log("No internet connection found. App is running in offline mode.")},error(e){console.error("Error during service worker registration:",e)}});l(9744),l(9091);const QT={class:"menu-content"},eE=["onClick"],tE={class:"text"},lE={key:0,class:"sub-text"};var aE=(0,i.aZ)({__name:"MenuContent",props:{menus:{},handleClickMenuItem:{type:Function}},setup(e){return(e,t)=>{const l=(0,i.up)("menu-content",!0);return(0,i.wg)(),(0,i.iD)("ul",QT,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.menus,((t,a)=>((0,i.wg)(),(0,i.iD)(i.HY,{key:t.text||a},[t.hide?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("li",{key:0,class:(0,oe.C_)(["menu-item",{divider:t.divider,disable:t.disable}]),onClick:(0,n.iM)((l=>e.handleClickMenuItem(t)),["stop"])},[t.divider?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("div",{key:0,class:(0,oe.C_)(["menu-item-content",{"has-children":t.children,"has-handler":t.handler}])},[(0,i._)("span",tE,(0,oe.zw)(t.text),1),t.subText&&!t.children?((0,i.wg)(),(0,i.iD)("span",lE,(0,oe.zw)(t.subText),1)):(0,i.kq)("",!0),t.children&&t.children.length?((0,i.wg)(),(0,i.j4)(l,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):(0,i.kq)("",!0)],2))],10,eE))],64)))),128))])}}});const nE=(0,Vl.Z)(aE,[["__scopeId","data-v-77e74b43"]]);var oE=nE,iE=(0,i.aZ)({__name:"index",props:{axis:{},el:{},menus:{},removeContextmenu:{type:Function}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e=170,l=30,a=11,n=5,{x:o,y:i}=t.axis,s=t.menus.filter((e=>!(e.divider||e.hide))).length,r=t.menus.filter((e=>e.divider)).length,u=e,c=s*l+r*a+2*n,d=document.body.clientWidth,p=document.body.clientHeight;return{left:d<=o+u?o-u:o,top:p<=i+c?i-c:i}})),a=e=>{e.disable||e.children&&!e.handler||(e.handler&&e.handler(t.el),t.removeContextmenu())};return(e,t)=>((0,i.wg)(),(0,i.iD)(i.HY,null,[(0,i._)("div",{class:"mask",onContextmenu:t[0]||(t[0]=(0,n.iM)((t=>e.removeContextmenu()),["prevent"])),onMousedown:t[1]||(t[1]=t=>e.removeContextmenu())},null,32),(0,i._)("div",{class:"contextmenu",style:(0,oe.j5)({left:l.value.left+"px",top:l.value.top+"px"}),onContextmenu:t[2]||(t[2]=(0,n.iM)((()=>{}),["prevent"]))},[(0,i.Wm)(oE,{menus:e.menus,handleClickMenuItem:a},null,8,["menus"])],36)],64))}});const sE=iE;var rE=sE;const uE="CTX_CONTEXTMENU_HANDLER",cE=(e,t,l)=>{t.stopPropagation(),t.preventDefault();const a=l.value(e);if(!a)return;let o=null;const s=()=>{o&&(document.body.removeChild(o),o=null),e.classList.remove("contextmenu-active"),document.body.removeEventListener("scroll",s),window.removeEventListener("resize",s)},r={axis:{x:t.x,y:t.y},el:e,menus:a,removeContextmenu:s};o=document.createElement("div");const u=(0,i.Wm)(rE,r,null);(0,n.sY)(u,o),document.body.appendChild(o),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",s),window.addEventListener("resize",s)},dE={mounted(e,t){e[uE]=l=>cE(e,l,t),e.addEventListener("contextmenu",e[uE])},unmounted(e){e&&e[uE]&&(e.removeEventListener("contextmenu",e[uE]),delete e[uE])}};var pE=dE;const vE="CTX_CLICK_OUTSIDE_HANDLER",mE=(e,t,l)=>{const a=l.value,n=t.composedPath(),o=n?n.indexOf(e)<0:!e.contains(t.target);o&&a(t)},hE={mounted(e,t){e[vE]=l=>mE(e,l,t),setTimeout((()=>{document.addEventListener("click",e[vE])}),0)},unmounted(e){e[vE]&&(document.removeEventListener("click",e[vE]),delete e[vE])}};var fE=hE;const gE="TOOLTIP_INSTANCE",yE={mounted(e,t){let l="",a="top",n=[300,0];"string"===typeof t.value?l=t.value:(l=t.value.content,void 0!==t.value.placement&&(a=t.value.placement),void 0!==t.value.delay&&(n=t.value.delay)),e[gE]=(0,rn.ZP)(e,{content:l,theme:"tooltip",duration:100,animation:"scale",allowHTML:!0,placement:a,delay:n})},updated(e,t){let l="";l="string"===typeof t.value?t.value:t.value.content,e[gE]&&e[gE].setContent(l)},unmounted(e){e[gE]&&e[gE].destroy()}};var wE=yE,xE={install(e){e.directive("contextmenu",pE),e.directive("click-outside",fE),e.directive("tooltip",wE)}};const kE=(0,n.ri)(GT);kE.use(Ol),kE.use(xE),kE.use((0,o.WB)()),kE.mount("#app")},2480:function(){},3180:function(){},7687:function(){}},t={};function l(a){var n=t[a];if(void 0!==n)return n.exports;var o=t[a]={id:a,loaded:!1,exports:{}};return e[a].call(o.exports,o,o.exports,l),o.loaded=!0,o.exports}l.m=e,function(){var e=[];l.O=function(t,a,n,o){if(!a){var i=1/0;for(c=0;c=o)&&Object.keys(l.O).every((function(e){return l.O[e](a[r])}))?a.splice(r--,1):(s=!1,o0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[a,n,o]}}(),function(){l.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(t,{a:t}),t}}(),function(){l.d=function(e,t){for(var a in t)l.o(t,a)&&!l.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}}(),function(){l.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){l.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e}}(),function(){var e={143:0};l.O.j=function(t){return 0===e[t]};var t=function(t,a){var n,o,i=a[0],s=a[1],r=a[2],u=0;if(i.some((function(t){return 0!==e[t]}))){for(n in s)l.o(s,n)&&(l.m[n]=s[n]);if(r)var c=r(l)}for(t&&t(a);ue.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list,d=e=>{const{empty:t}=e.state.selection;t&&(0,u.td)(e.state,e.dispatch)},p=(e,t,l)=>{if(l)e.dispatch(e.state.tr.addMark(l.from,l.to,t));else{const{$from:l,$to:a}=e.state.selection;e.dispatch(e.state.tr.addMark(l.pos,a.pos,t))}},v=(e,t,l,a)=>{let n=t;const o=e=>e.type===a;let i=null,s=null,r=null;while(n<=l){const t=e.nodeAt(n);if(!t||!t.marks)return null;const l=t.marks.find(o);if(!l)return null;if(i&&l!==i)return null;s=s||t,i=i||l,r=t,n++}let u=t,c=l,d=0;n=t-1;while(n>d){const t=e.nodeAt(n),l=t&&t.marks.find(o);if(!l||l!==i)break;u=n,s=t,n--}n=l+1,d=e.nodeSize-2;while(nArray.isArray(e)&&e.indexOf(t.type)>-1||t.type===e,h=(e,t)=>{for(let l=e.depth;l>0;l--){const a=e.node(l);if(t(a))return{pos:l>0?e.before(l):0,start:e.start(l),depth:l,node:a}}},f=e=>t=>h(t.$from,e),g=e=>t=>f((t=>m(e,t)))(t),y=(e,t)=>{const l=t.schema.nodes[e];return!!g(l)(t.selection)},w=e=>e?"text"===e.type.name?e:e.lastChild?w(e.lastChild):null:null,x=e=>{const{selection:t,doc:l}=e.state,{from:a}=t;let n=l.nodeAt(a)||l.nodeAt(a-1);return n=w(n),n?.marks||[]},k=(e,t,l)=>{for(const a of e)if(a.type.name===t&&a.attrs[l])return a.attrs[l];return null},b=(e,t)=>{for(const l of e)if(l.type.name===t)return!0;return!1},_=(e,t)=>{const{from:l,$from:a,to:n,empty:o}=e.selection;return o?t.isInSet(e.storedMarks||a.marks()):e.doc.rangeHasMark(l,n,t)},I=(e,t)=>{const{selection:l,doc:a}=e.state,{from:n,to:o}=l;let i=!0,s="";return a.nodesBetween(n,o,(e=>(i&&e.attrs[t]&&(i=!1,s=e.attrs[t]),i))),s},S={color:"#000",backcolor:"",fontsize:"20px",fontname:"微软雅黑",align:"left"},C=(e,t={})=>{const l={...S,...t},a=x(e),n=b(a,"strong"),o=b(a,"em"),i=b(a,"underline"),s=b(a,"strikethrough"),r=b(a,"superscript"),u=b(a,"subscript"),c=b(a,"code"),d=k(a,"forecolor","color")||l.color,p=k(a,"backcolor","backcolor")||l.backcolor,v=k(a,"fontsize","fontsize")||l.fontsize,m=k(a,"fontname","fontname")||l.fontname,h=k(a,"link","href")||"",f=I(e,"align")||l.align,g=y("bullet_list",e.state),w=y("ordered_list",e.state),_=y("blockquote",e.state);return{bold:n,em:o,underline:i,strikethrough:s,superscript:r,subscript:u,code:c,color:d,backcolor:p,fontsize:v,fontname:m,link:h,align:f,bulletList:g,orderedList:w,blockquote:_}},L=e=>{const t=x(e),l=k(t,"fontsize","fontsize")||S.fontsize;return parseInt(l)},T={bold:!1,em:!1,underline:!1,strikethrough:!1,superscript:!1,subscript:!1,code:!1,color:"#000",backcolor:"",fontsize:"20px",fontname:"微软雅黑",link:"",align:"left",bulletList:!1,orderedList:!1,blockquote:!1},E=[{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"}],M=[{label:"得意黑",value:"得意黑"},{label:"仓耳小丸子",value:"仓耳小丸子"},{label:"优设标题黑",value:"优设标题黑"},{label:"峰广明锐体",value:"峰广明锐体"},{label:"摄图摩登小方体",value:"摄图摩登小方体"},{label:"站酷快乐体",value:"站酷快乐体"},{label:"字制区喜脉体",value:"字制区喜脉体"},{label:"素材集市康康体",value:"素材集市康康体"},{label:"素材集市酷方体",value:"素材集市酷方体"},{label:"途牛类圆体",value:"途牛类圆体"},{label:"锐字真言体",value:"锐字真言体"}],U=e=>{if("string"!==typeof e)return!1;const t="Arial";if(e.toLowerCase()===t.toLowerCase())return!0;const l=100,a=100,n=100,o="a",i=document.createElement("canvas"),s=i.getContext("2d",{willReadFrequently:!0});if(!s)return!1;i.width=a,i.height=n,s.textAlign="center",s.fillStyle="black",s.textBaseline="middle";const r=e=>{s.clearRect(0,0,a,n),s.font=`${l}px ${e}, ${t}`,s.fillText(o,a/2,n/2);const i=s.getImageData(0,0,a,n).data;return[].slice.call(i).filter((e=>0!==e))};return r(t).join("")!==r(e).join("")};var W=l(7234),D=l(6486);const H=[{id:"test-slide-1",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z",fill:"#5b9bd5",fixedRatio:!1,opacity:.7,rotate:0},{type:"shape",id:"ookHrf",left:0,top:0,width:300,height:320,viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z",fill:"#5b9bd5",fixedRatio:!1,flipV:!0,rotate:0},{type:"text",id:"idn7Mx",left:355,top:65.25,width:585,height:188,lineHeight:1.2,content:"

PPTIST

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

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

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333"},{type:"line",id:"FnpZs4",left:361,top:238,start:[0,0],end:[549,0],points:["",""],color:"#5b9bd5",style:"solid",width:2}],background:{type:"solid",color:"#ffffff"}},{id:"test-slide-2",elements:[{type:"text",id:"ptNnUJ",left:145,top:148,width:711,height:77,lineHeight:1.2,content:"

在此处添加标题

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

在此处添加副标题

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

感谢观看

",rotate:0,defaultFontName:"Microsoft Yahei",defaultColor:"#333",wordSpace:5}],background:{type:"solid",color:"#fff"}}],F={themeColor:"#5b9bd5",fontColor:"#333",fontName:"Microsoft Yahei",backgroundColor:"#fff",shadow:{h:3,v:3,blur:2,color:"#808080"},outline:{width:2,color:"#525252",style:"solid"}},A=[{id:"template",elements:[{type:"shape",id:"4cbRxp",left:0,top:200,width:546,height:362.5,viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z",fill:"{{themeColor}}",fixedRatio:!1,opacity:.7,rotate:0},{type:"shape",id:"ookHrf",left:0,top:0,width:300,height:320,viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z",fill:"{{themeColor}}",fixedRatio:!1,flipV:!0,rotate:0},{type:"text",id:"AkIh3E",left:355,top:95.11111111111111,width:585,height:116,lineHeight:1.2,content:"

输入标题

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

请在此处输入副标题

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

在此处添加标题

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

在此处添加副标题

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

感谢观看

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

01

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

在此处输入标题

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

  2. 在此处输入内容

  3. 在此处输入内容

  4. 在此处输入内容

  5. 在此处输入内容

  6. 在此处输入内容

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

1

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

4

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

3

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

2

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

在此输入内容

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

在此输入内容

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

在此输入内容

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

在此输入内容

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

01

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

在此处添加标题

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

1.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

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

2.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

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

1.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

2.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

3.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

4.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

请在此处输入标题

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

请在此处输入内容1

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

请在此处输入内容2

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

请在此处输入内容3

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

请在此处输入内容4

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

1

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

在此输入内容

在此输入内容

在此输入内容

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

2

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

在此输入内容

在此输入内容

在此输入内容

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

3

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

在此输入内容

在此输入内容

在此输入内容

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

4

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

在此输入内容

在此输入内容

在此输入内容

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

5

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

在此输入内容

在此输入内容

在此输入内容

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

6

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

在此输入内容

在此输入内容

在此输入内容

",rotate:0,defaultFontName:"{{fontName}}",defaultColor:"{{fontColor}}",fill:"{{subColor}}"}],background:{type:"solid",color:"{{backgroundColor}}"}}],$=(0,o.Q_)("slides",{state:()=>({title:"未命名演示文稿",theme:F,slides:H,slideIndex:0,viewportRatio:.5625}),getters:{currentSlide(e){return e.slides[e.slideIndex]},currentSlideAnimations(e){const t=e.slides[e.slideIndex];if(!t?.animations)return[];const l=t.elements,a=l.map((e=>e.id));return t.animations.filter((e=>a.includes(e.elId)))},formatedAnimations(e){const t=e.slides[e.slideIndex];if(!t?.animations)return[];const l=t.elements,a=l.map((e=>e.id)),n=t.animations.filter((e=>a.includes(e.elId))),o=[];for(const i of n)if("click"!==i.trigger&&o.length){if("meantime"===i.trigger){const e=o[o.length-1];e.animations=e.animations.filter((e=>e.elId!==i.elId)),e.animations.push(i),o[o.length-1]=e}else if("auto"===i.trigger){const e=o[o.length-1];e.autoNext=!0,o[o.length-1]=e,o.push({animations:[i],autoNext:!1})}}else o.push({animations:[i],autoNext:!1});return o},layouts(e){const{themeColor:t,fontColor:l,fontName:a,backgroundColor:n}=e.theme,o=(0,W.Z)(l).isDark()?"rgba(230, 230, 230, 0.5)":"rgba(180, 180, 180, 0.5)",i=JSON.stringify(A).replaceAll("{{themeColor}}",t).replaceAll("{{fontColor}}",l).replaceAll("{{fontName}}",a).replaceAll("{{backgroundColor}}",n).replaceAll("{{subColor}}",o);return JSON.parse(i)}},actions:{setTitle(e){this.title=e||"未命名演示文稿"},setTheme(e){this.theme={...this.theme,...e}},setViewportRatio(e){this.viewportRatio=e},setSlides(e){this.slides=e},addSlide(e){const t=Array.isArray(e)?e:[e],l=this.slideIndex+1;this.slides.splice(l,0,...t),this.slideIndex=l},updateSlide(e){const t=this.slideIndex;this.slides[t]={...this.slides[t],...e}},deleteSlide(e){const t=Array.isArray(e)?e:[e],l=[];for(let o=0;oe.id===t[o]));l.push(e)}let a=Math.min(...l);const n=this.slides.length-t.length-1;a>n&&(a=n),this.slideIndex=a,this.slides=this.slides.filter((e=>!t.includes(e.id)))},updateSlideIndex(e){this.slideIndex=e},addElement(e){const t=Array.isArray(e)?e:[e],l=this.slides[this.slideIndex].elements,a=[...l,...t];this.slides[this.slideIndex].elements=a},deleteElement(e){const t=Array.isArray(e)?e:[e],l=this.slides[this.slideIndex].elements,a=l.filter((e=>!t.includes(e.id)));this.slides[this.slideIndex].elements=a},updateElement(e){const{id:t,props:l,slideId:a}=e,n="string"===typeof t?[t]:t,o=a?this.slides.findIndex((e=>e.id===a)):this.slideIndex,i=this.slides[o],s=i.elements.map((e=>n.includes(e.id)?{...e,...l}:e));this.slides[o].elements=s},removeElementProps(e){const{id:t,propName:l}=e,a="string"===typeof l?[l]:l,n=this.slideIndex,o=this.slides[n],i=o.elements.map((e=>e.id===t?(0,D.omit)(e,a):e));this.slides[n].elements=i}}}),Z=(0,r.kP)("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),O=Z(10),R=(0,o.Q_)("main",{state:()=>({activeElementIdList:[],handleElementId:"",activeGroupElementId:"",hiddenElementIdList:[],canvasPercentage:90,canvasScale:1,canvasDragged:!1,thumbnailsFocus:!1,editorAreaFocus:!1,disableHotkeys:!1,gridLineSize:0,showRuler:!1,creatingElement:null,creatingCustomShape:!1,availableFonts:E,toolbarState:a.SLIDE_DESIGN,clipingImageElementId:"",richTextAttrs:T,selectedTableCells:[],isScaling:!1,selectedSlidesIndex:[],dialogForExport:"",databaseId:O,textFormatPainter:null,shapeFormatPainter:null,showSelectPanel:!1,showSearchPanel:!1}),getters:{activeElementList(e){const t=$(),l=t.currentSlide;return l&&l.elements?l.elements.filter((t=>e.activeElementIdList.includes(t.id))):[]},handleElement(e){const t=$(),l=t.currentSlide;return l&&l.elements&&l.elements.find((t=>e.handleElementId===t.id))||null}},actions:{setActiveElementIdList(e){1===e.length?this.handleElementId=e[0]:this.handleElementId="",this.activeElementIdList=e},setHandleElementId(e){this.handleElementId=e},setActiveGroupElementId(e){this.activeGroupElementId=e},setHiddenElementIdList(e){this.hiddenElementIdList=e},setCanvasPercentage(e){this.canvasPercentage=e},setCanvasScale(e){this.canvasScale=e},setCanvasDragged(e){this.canvasDragged=e},setThumbnailsFocus(e){this.thumbnailsFocus=e},setEditorareaFocus(e){this.editorAreaFocus=e},setDisableHotkeysState(e){this.disableHotkeys=e},setGridLineSize(e){this.gridLineSize=e},setRulerState(e){this.showRuler=e},setCreatingElement(e){this.creatingElement=e},setCreatingCustomShapeState(e){this.creatingCustomShape=e},setAvailableFonts(){this.availableFonts=E.filter((e=>U(e.value)))},setToolbarState(e){this.toolbarState=e},setClipingImageElementId(e){this.clipingImageElementId=e},setRichtextAttrs(e){this.richTextAttrs=e},setSelectedTableCells(e){this.selectedTableCells=e},setScalingState(e){this.isScaling=e},updateSelectedSlidesIndex(e){this.selectedSlidesIndex=e},setDialogForExport(e){this.dialogForExport=e},setTextFormatPainter(e){this.textFormatPainter=e},setShapeFormatPainter(e){this.shapeFormatPainter=e},setSelectPanelState(e){this.showSelectPanel=e},setSearchPanelState(e){this.showSearchPanel=e}}});var z=l(7327),P=l(8134);const B="PPTIST_DISCARDED_DB",N="PPTist",j=async()=>{const e=(new Date).getTime(),t=localStorage.getItem(B),l=t?JSON.parse(t):[],a=await P.Z.getDatabaseNames(),n=a.filter((t=>{if(-1===t.indexOf(N))return!1;const[a,n,o]=t.split("_");return a!==N||!n||!o||(!!l.includes(n)||e-+o>=432e5)}));for(const o of n)P.Z.delete(o);localStorage.removeItem(B)};class Y extends P.Z{constructor(){super(`${N}_${O}_${(new Date).getTime()}`),(0,z.Z)(this,"snapshots",void 0),(0,z.Z)(this,"writingBoardImgs",void 0),this.version(1).stores({snapshots:"++id",writingBoardImgs:"++id"}),this.snapshots=this.table("snapshots"),this.writingBoardImgs=this.table("writingBoardImgs")}}const V=new Y,J=(0,o.Q_)("snapshot",{state:()=>({snapshotCursor:-1,snapshotLength:0}),getters:{canUndo(e){return e.snapshotCursor>0},canRedo(e){return e.snapshotCursor=0&&this.snapshotCursoro&&(l.push(t[0]),n--),n>=2&&V.snapshots.update(t[n-2],{index:e.slideIndex}),await V.snapshots.bulkDelete(l),this.setSnapshotCursor(n-1),this.setSnapshotLength(n)},async unDo(){if(this.snapshotCursor<=0)return;const e=$(),t=R(),l=this.snapshotCursor-1,a=await V.snapshots.orderBy("id").toArray(),n=a[l],{index:o,slides:i}=n,s=o>i.length-1?i.length-1:o;e.setSlides(i),e.updateSlideIndex(s),this.setSnapshotCursor(l),t.setActiveElementIdList([])},async reDo(){if(this.snapshotCursor>=this.snapshotLength-1)return;const e=$(),t=R(),l=this.snapshotCursor+1,a=await V.snapshots.orderBy("id").toArray(),n=a[l],{index:o,slides:i}=n,s=o>i.length-1?i.length-1:o;e.setSlides(i),e.updateSlideIndex(s),this.setSnapshotCursor(l),t.setActiveElementIdList([])}}}),q=(0,o.Q_)("keyboard",{state:()=>({ctrlKeyState:!1,shiftKeyState:!1,spaceKeyState:!1}),getters:{ctrlOrShiftKeyActive(e){return e.ctrlKeyState||e.shiftKeyState}},actions:{setCtrlKeyState(e){this.ctrlKeyState=e},setShiftKeyState(e){this.shiftKeyState=e},setSpaceKeyState(e){this.spaceKeyState=e}}}),X=(0,o.Q_)("screen",{state:()=>({screening:!1}),actions:{setScreening(e){this.screening=e}}}),G=(e,t)=>(0,D.padStart)(""+e,t,"0"),K=()=>!navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i);var Q,ee,te,le,ae,ne,oe=l(3577);(function(e){e["UP"]="up",e["DOWN"]="down",e["TOP"]="top",e["BOTTOM"]="bottom"})(Q||(Q={})),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"}(le||(le={})),function(e){e["START"]="start",e["END"]="end",e["C"]="ctrl",e["C1"]="ctrl1",e["C2"]="ctrl2"}(ae||(ae={})),function(e){e["C"]="C",e["X"]="X",e["Z"]="Z",e["Y"]="Y",e["A"]="A",e["G"]="G",e["L"]="L",e["F"]="F",e["D"]="D",e["B"]="B",e["P"]="P",e["MINUS"]="-",e["EQUAL"]="=",e["DIGIT_0"]="0",e["DELETE"]="DELETE",e["UP"]="ARROWUP",e["DOWN"]="ARROWDOWN",e["LEFT"]="ARROWLEFT",e["RIGHT"]="ARROWRIGHT",e["ENTER"]="ENTER",e["SPACE"]=" ",e["TAB"]="TAB",e["BACKSPACE"]="BACKSPACE",e["ESC"]="ESCAPE",e["PAGEUP"]="PAGEUP",e["PAGEDOWN"]="PAGEDOWN",e["F5"]="F5"}(ne||(ne={}));const ie=[{type:"通用",children:[{label:"剪切",value:"Ctrl + X"},{label:"复制",value:"Ctrl + C"},{label:"粘贴",value:"Ctrl + V"},{label:"粘贴为纯文本",value:"Ctrl + Shift + V"},{label:"快速复制粘贴",value:"Ctrl + D"},{label:"全选",value:"Ctrl + A"},{label:"撤销",value:"Ctrl + Z"},{label:"恢复",value:"Ctrl + Y"},{label:"删除",value:"Delete / Backspace"},{label:"多选",value:"按住 Ctrl 或 Shift"},{label:"打开搜索替换",value:"Ctrl + F"},{label:"打印",value:"Ctrl + P"},{label:"关闭弹窗",value:"ESC"}]},{type:"幻灯片放映",children:[{label:"从头开始放映幻灯片",value:"F5"},{label:"从当前开始放映幻灯片",value:"Shift + F5"},{label:"切换上一页",value:"↑ / ← / PgUp"},{label:"切换下一页",value:"↓ / → / PgDown"},{label:"切换下一页",value:"Enter / Space"},{label:"退出放映",value:"ESC"}]},{type:"幻灯片编辑",children:[{label:"新建幻灯片",value:"Enter"},{label:"移动画布",value:"Space + 鼠标拖拽"},{label:"缩放画布",value:"Ctrl + 鼠标滚轮"},{label:"放大画布",value:"Ctrl + ="},{label:"缩小画布",value:"Ctrl + -"},{label:"使画布适应当前屏幕",value:"Ctrl + 0"},{label:"上一页(未选中元素)",value:"↑ / ←"},{label:"下一页(未选中元素)",value:"↓ / →"},{label:"上一页",value:"鼠标上滚 / PgUp"},{label:"下一页",value:"鼠标下滚 / PgDown"}]},{type:"元素操作",children:[{label:"移动",value:"↑ / ← / ↓ / →"},{label:"锁定",value:"Ctrl + L"},{label:"组合",value:"Ctrl + G"},{label:"取消组合",value:"Ctrl + Shift + G"},{label:"置顶层",value:"Alt + F"},{label:"置底层",value:"Alt + B"},{label:"锁定宽高比例",value:"按住 Ctrl 或 Shift"},{label:"创建水平 / 垂直线条",value:"按住 Ctrl 或 Shift"},{label:"切换焦点元素",value:"Tab"},{label:"确认图片裁剪",value:"Enter"},{label:"完成自定义形状绘制",value:"Enter"}]},{type:"表格编辑",children:[{label:"聚焦到下一个单元格",value:"Tab"},{label:"在上方插入一行",value:"Ctrl + ↑"},{label:"在下方插入一行",value:"Ctrl + ↓"},{label:"在左侧插入一列",value:"Ctrl + ←"},{label:"在右侧插入一列",value:"Ctrl + →"}]},{type:"图表数据编辑",children:[{label:"聚焦到下一行",value:"Enter"}]},{type:"文本编辑",children:[{label:"加粗",value:"Ctrl + B"},{label:"斜体",value:"Ctrl + I"},{label:"下划线",value:"Ctrl + U"},{label:"行内代码",value:"Ctrl + E"},{label:"上角标",value:"Ctrl + ;"},{label:"下角标",value:"Ctrl + '"},{label:"选中段落",value:"ESC"}]}];var se=l(2152),re=l.n(se),ue=l(1354),ce=l.n(ue);const de="pptist",pe=e=>ce().AES.encrypt(e,de).toString(),ve=e=>{const t=ce().AES.decrypt(e,de);return t.toString(ce().enc.Utf8)},me=e=>new Promise(((t,l)=>{const a=document.createElement("button"),n=new(re())(a,{text:()=>e,action:()=>"copy",container:document.body});n.on("success",(e=>{n.destroy(),t(e)})),n.on("error",(e=>{n.destroy(),l(e)})),document.body.appendChild(a),a.click(),document.body.removeChild(a)})),he=()=>new Promise(((e,t)=>{navigator.clipboard?.readText?navigator.clipboard.readText().then((l=>(l||t("剪贴板为空或者不包含文本"),e(l)))):t("浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V")})),fe=e=>{let t;try{t=JSON.parse(ve(e))}catch{t=e}return t},ge=e=>{const t=e.split("\r\n");""===t[t.length-1]&&t.pop();let l=-1;const a=[];for(const n in t){if(a[n]=t[n].split("\t"),1===a[n].length)return null;if(-1===l)l=a[n].length;else if(l!==a[n].length)return null}return a},ye=e=>{const{left:t,top:l,width:a,height:n,rotate:o=0}=e,i=Math.sqrt(Math.pow(a,2)+Math.pow(n,2))/2,s=180*Math.atan(n/a)/Math.PI,r=(180-o-s)*Math.PI/180,u=(s-o)*Math.PI/180,c=t+a/2,d=l+n/2,p=[c+i*Math.cos(r),c+i*Math.cos(u),c-i*Math.cos(r),c-i*Math.cos(u)],v=[d-i*Math.sin(r),d-i*Math.sin(u),d+i*Math.sin(r),d+i*Math.sin(u)];return{xRange:[Math.min(...p),Math.max(...p)],yRange:[Math.min(...v),Math.max(...v)]}},we=e=>{const{xRange:t,yRange:l}=ye({left:e.left,top:e.top,width:e.width,height:e.height,rotate:0}),{xRange:a,yRange:n}=ye({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});return{offsetX:a[0]-t[0],offsetY:n[0]-l[0]}},xe=e=>{let t,l,a,n;if("line"===e.type)t=e.left,l=e.left+Math.max(e.start[0],e.end[0]),a=e.top,n=e.top+Math.max(e.start[1],e.end[1]);else if("rotate"in e&&e.rotate){const{left:o,top:i,width:s,height:r,rotate:u}=e,{xRange:c,yRange:d}=ye({left:o,top:i,width:s,height:r,rotate:u});t=c[0],l=c[1],a=d[0],n=d[1]}else t=e.left,l=e.left+e.width,a=e.top,n=e.top+e.height;return{minX:t,maxX:l,minY:a,maxY:n}},ke=e=>{const t=[],l=[],a=[],n=[];e.forEach((e=>{const{minX:o,maxX:i,minY:s,maxY:r}=xe(e);t.push(o),l.push(s),a.push(i),n.push(r)}));const o=Math.min(...t),i=Math.max(...a),s=Math.min(...l),r=Math.max(...n);return{minX:o,maxX:i,minY:s,maxY:r}},be=e=>{const t=[];return e.forEach((e=>{const l=t.findIndex((t=>t.value===e.value));if(-1===l)t.push(e);else{const a=t[l],n=Math.min(a.range[0],e.range[0]),o=Math.max(a.range[1],e.range[1]),i=[n,o],s={value:e.value,range:i};t[l]=s}})),t},_e=e=>{const t={};for(const l of e)t[l.id]=(0,r.x0)(10);return t},Ie=e=>{const t={},l={};for(const a of e){const e=a.groupId;e&&!t[e]&&(t[e]=(0,r.x0)(10)),l[a.id]=(0,r.x0)(10)}return{groupIdMap:t,elIdMap:l}},Se=e=>{const t=(0,W.Z)(e);return[t.setAlpha(.3).toRgbString(),t.setAlpha(.1).toRgbString()]},Ce=e=>{const t=e.start.join(","),l=e.end.join(",");if(e.broken){const a=e.broken.join(",");return`M${t} L${a} L${l}`}if(e.curve){const a=e.curve.join(",");return`M${t} Q${a} ${l}`}if(e.cubic){const[a,n]=e.cubic,o=a.join(","),i=n.join(",");return`M${t} C${o} ${i} ${l}`}return`M${t} L${l}`},Le=(e,t)=>{const l=e.getBoundingClientRect(),a=t.getBoundingClientRect();return l.top>=a.top&&l.bottom<=a.bottom};var Te=l(6108),Ee=l(1061),Me=l(8261),Ue=l(9512),We=l(2025),De=l(9872),He=l(1321),Fe=l(2696),Ae=l(3271),$e=l(9015),Ze=l(5761),Oe=l(7559),Re=l(4023),ze=l(4141),Pe=l(5010),Be=l(6492),Ne=l(1094),je=l(2677),Ye=l(683),Ve=l(7259),Je=l(1258),qe=l(9978),Xe=l(597),Ge=l(85),Ke=l(6071),Qe=l(2489),et=l(9925),tt=l(5361),lt=l(3185),at=l(139),nt=l(8461),ot=l(2882),it=l(3862),st=l(3764),rt=l(9371),ut=l(9912),ct=l(3935),dt=l(3735),pt=l(3542),vt=l(7537),mt=l(5314),ht=l(3325),ft=l(3275),gt=l(3317),yt=l(7712),wt=l(9370),xt=l(2778),kt=l(4422),bt=l(4957),_t=l(7872),It=l(5356),St=l(8684),Ct=l(9577),Lt=l(887),Tt=l(6866),Et=l(509),Mt=l(7606),Ut=l(4412),Wt=l(8814),Dt=l(2057),Ht=l(6048),Ft=l(5114),At=l(9917),$t=l(7747),Zt=l(7425),Ot=l(6717),Rt=l(6302),zt=l(3060),Pt=l(7107),Bt=l(2100),Nt=l(5460),jt=l(5268),Yt=l(1432),Vt=l(5193),Jt=l(4566),qt=l(7091),Xt=l(9602),Gt=l(4891),Kt=l(4012),Qt=l(3681),el=l(1440),tl=l(3482),ll=l(646),al=l(8e3),nl=l(4628),ol=l(9141),il=l(1060),sl=l(8389),rl=l(3467),ul=l(6935),cl=l(3590),dl=l(6453),pl=l(5957),vl=l(4467),ml=l(5547),hl=l(5650),fl=l(2790),gl=l(5620),yl=l(3339),wl=l(4666),xl=l(5215),kl=l(904),bl=l(3650),_l=l(4296),Il=l(6519),Sl=l(4790),Cl=l(3260),Ll=l(2146),Tl=l(6755),El=l(2849),Ml=l(6940),Ul=l(6116),Wl=l(5741),Dl=l(2939),Hl=l(9524),Fl=l(6135),Al=l(6821),$l=l(6149);const Zl={IconPlayOne:$l.Z,IconFullScreenPlay:Al.Z,IconLock:Fl.Z,IconUnlock:Hl.Z,IconPpt:Dl.Z,IconFormat:Wl.Z,IconPicture:Ul.Z,IconFullScreen:Ml.Z,IconList:El.Z,IconOrderedList:Tl.Z,IconFlipVertically:Ll.Z,IconFlipHorizontally:Cl.Z,IconFontSize:Sl.Z,IconCode:Il.Z,IconTextBold:_l.Z,IconTextItalic:bl.Z,IconTextUnderline:kl.Z,IconStrikethrough:xl.Z,IconEdit:wl.Z,IconQuote:yl.Z,IconBackgroundColor:gl.Z,IconGroup:fl.Z,IconUngroup:hl.Z,IconBack:ml.Z,IconNext:vl.Z,IconFullwidth:pl.Z,IconAlignTop:dl.Z,IconAlignLeft:cl.Z,IconAlignRight:ul.Z,IconAlignBottom:rl.Z,IconAlignVertically:sl.Z,IconAlignHorizontally:il.Z,IconBringToFront:ol.Z,IconSendToBack:nl.Z,IconAlignTextLeft:al.Z,IconAlignTextRight:ll.Z,IconAlignTextCenter:tl.Z,IconAlignTextBoth:el.Z,IconRowHeight:Qt.Z,IconWrite:Kt.Z,IconInsertTable:Gt.Z,IconAddText:Xt.Z,IconFill:qt.Z,IconTailoring:Jt.Z,IconEffects:Vt.Z,IconColorFilter:Yt.Z,IconUp:jt.Z,IconDown:Nt.Z,IconPlus:Bt.Z,IconMinus:Pt.Z,IconConnection:zt.Z,IconBringToFrontOne:Rt.Z,IconSentToBack:Ot.Z,IconGithub:Zt.Z,IconChartProportion:$t.Z,IconChartHistogram:At.Z,IconChartHistogramOne:Ft.Z,IconChartLineArea:Ht.Z,IconChartRing:Dt.Z,IconChartScatter:Wt.Z,IconChartLine:Ut.Z,IconChartPie:Mt.Z,IconText:Et.Z,IconRotate:Tt.Z,IconLeftTwo:Lt.Z,IconRightTwo:Ct.Z,IconPlatte:St.Z,IconClose:It.Z,IconCloseSmall:_t.Z,IconUndo:bt.Z,IconTransform:kt.Z,IconClick:xt.Z,IconTheme:wt.Z,IconArrowCircleLeft:yt.Z,IconGraphicDesign:gt.Z,IconLogout:ft.Z,IconErase:ht.Z,IconClear:mt.Z,IconAlignTextTopOne:vt.Z,IconAlignTextBottomOne:pt.Z,IconAlignTextMiddleOne:dt.Z,IconPause:ct.Z,IconVolumeMute:ut.Z,IconVolumeNotice:rt.Z,IconVolumeSmall:st.Z,IconVideoTwo:it.Z,IconFormula:ot.Z,IconLinkOne:nt.Z,IconFullScreenOne:at.Z,IconOffScreenOne:lt.Z,IconPower:tt.Z,IconListView:et.Z,IconMagic:Qe.Z,IconHighLight:Ke.Z,IconDownload:Ge.Z,IconIndentLeft:Xe.Z,IconIndentRight:qe.Z,IconVerticalSpacingBetweenItems:Je.Z,IconCopy:Ve.Z,IconDelete:Ye.Z,IconSquare:je.Z,IconRound:Ne.Z,IconNeedle:Be.Z,IconTextRotationNone:Pe.Z,IconTextRotationDown:ze.Z,IconFormatBrush:Re.Z,IconPreviewOpen:Oe.Z,IconPreviewClose:Ze.Z,IconStopwatchStart:$e.Z,IconSearch:Ae.Z,IconLeft:Fe.Z,IconRight:He.Z,IconMoveOne:De.Z,IconHamburgerButton:We.Z,IconAttention:Ue.Z,IconCheckOne:Me.Z,IconCloseOne:Ee.Z,IconInfo:Te.Z};var Ol={install(e){for(const t of Object.keys(Zl))e.component(t,Zl[t])}};const Rl=["id"],zl={class:"icons"},Pl={class:"content"},Bl={key:0,class:"title"},Nl={class:"description"},jl={key:0,class:"control"};var Yl=(0,i.aZ)({__name:"Message",props:{id:{},message:{},type:{default:"success"},title:{default:""},duration:{default:3e3},closable:{type:Boolean,default:!1}},emits:["close","destroy"],setup(e,{expose:t,emit:l}){const{IconAttention:a,IconCheckOne:o,IconCloseOne:r,IconInfo:u,IconCloseSmall:c}=Zl,d=e,p=l,v=(0,s.iH)(!0),m=(0,s.iH)(null),h=()=>{d.duration<=0||(m.value=setTimeout(g,d.duration))},f=()=>{m.value&&clearTimeout(m.value)},g=()=>v.value=!1;return(0,i.wF)((()=>{f()})),(0,i.bv)((()=>{h()})),t({close:g}),(e,t)=>((0,i.wg)(),(0,i.j4)(n.uT,{name:"message-fade",appear:"",mode:"in-out",onBeforeLeave:t[3]||(t[3]=e=>p("close")),onAfterLeave:t[4]||(t[4]=e=>p("destroy"))},{default:(0,i.w5)((()=>[v.value?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"message",id:e.id},[(0,i._)("div",{class:"message-container",onMouseenter:t[1]||(t[1]=e=>f()),onMouseleave:t[2]||(t[2]=e=>h())},[(0,i._)("div",zl,["warning"===e.type?((0,i.wg)(),(0,i.j4)((0,s.SU)(a),{key:0,theme:"filled",size:"18",fill:"#faad14"})):(0,i.kq)("",!0),"success"===e.type?((0,i.wg)(),(0,i.j4)((0,s.SU)(o),{key:1,theme:"filled",size:"18",fill:"#52c41a"})):(0,i.kq)("",!0),"error"===e.type?((0,i.wg)(),(0,i.j4)((0,s.SU)(r),{key:2,theme:"filled",size:"18",fill:"#ff4d4f"})):(0,i.kq)("",!0),"info"===e.type?((0,i.wg)(),(0,i.j4)((0,s.SU)(u),{key:3,theme:"filled",size:"18",fill:"#1677ff"})):(0,i.kq)("",!0)]),(0,i._)("div",Pl,[e.title?((0,i.wg)(),(0,i.iD)("div",Bl,(0,oe.zw)(e.title),1)):(0,i.kq)("",!0),(0,i._)("div",Nl,(0,oe.zw)(e.message),1)]),e.closable?((0,i.wg)(),(0,i.iD)("div",jl,[(0,i._)("span",{class:"close-btn",onClick:t[0]||(t[0]=e=>g())},[(0,i.Wm)((0,s.SU)(c))])])):(0,i.kq)("",!0)],32)],8,Rl)):(0,i.kq)("",!0)])),_:1}))}}),Vl=l(3744);const Jl=(0,Vl.Z)(Yl,[["__scopeId","data-v-03d14766"]]);var ql=Jl;const Xl=[];let Gl=null,Kl=0;const Ql={duration:3e3},ea=e=>{const t="message-"+Kl++,l={...Ql,...e,id:t};Gl||(Gl=document.createElement("div"),Gl.className="message-wrap",Gl.style.cssText="\n width: 100%;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 6000;\n pointer-events: none;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: 15px;\n background-color: rgba(255, 255, 255, 0);\n transition: all 1s ease-in-out;\n align-items: center;\n ",document.body.appendChild(Gl));const a=(0,i.Wm)(ql,l,null),o=document.createElement("div");a.appContext=e.ctx||ea._context||null,a.props.onClose=e.onClose,a.props.onDestroy=()=>{Gl&&Gl.childNodes.length<=1&&(Gl.remove(),Gl=null),(0,n.sY)(null,o)},(0,n.sY)(a,o),Gl.appendChild(o.firstElementChild);const s={id:t,close:()=>a?.component?.exposed?.close()};return Xl.push(s),s};ea.success=(e,t)=>ea({...t,type:"success",message:e}),ea.info=(e,t)=>ea({...t,type:"info",message:e}),ea.warning=(e,t)=>ea({...t,type:"warning",message:e}),ea.error=(e,t)=>ea({...t,type:"error",message:e}),ea.closeAll=function(){for(let e=Xl.length-1;e>=0;e--)Xl[e].close()};var ta=ea;const la=e=>{const t=e.replace(/[\n\r]+/g,"
"),l=t.split("
");let a="";for(const n of l)n&&(a+=`
${n}
`);return a},aa=e=>new Promise((t=>{const l=document.createElement("img");l.src=e,l.style.opacity="0",document.body.appendChild(l),l.onload=()=>{const e=l.clientWidth,a=l.clientHeight;l.onload=null,l.onerror=null,document.body.removeChild(l),t({width:e,height:a})},l.onerror=()=>{l.onload=null,l.onerror=null}})),na=e=>new Promise((t=>{const l=new FileReader;l.addEventListener("load",(()=>{t(l.result)})),l.readAsDataURL(e)})),oa=1e3;var ia,sa;(function(e){e["ROUND_RECT"]="roundRect",e["ROUND_RECT_DIAGONAL"]="roundRectDiagonal",e["ROUND_RECT_SINGLE"]="roundRectSingle",e["ROUND_RECT_SAMESIDE"]="roundRectSameSide",e["CUT_RECT_DIAGONAL"]="cutRectDiagonal",e["CUT_RECT_SINGLE"]="cutRectSingle",e["CUT_RECT_SAMESIDE"]="cutRectSameSide",e["CUT_ROUND_RECT"]="cutRoundRect",e["MESSAGE"]="message",e["ROUND_MESSAGE"]="roundMessage",e["L"]="L",e["RING_RECT"]="ringRect",e["PLUS"]="plus",e["TRIANGLE"]="triangle",e["PARALLELOGRAM_LEFT"]="parallelogramLeft",e["PARALLELOGRAM_RIGHT"]="parallelogramRight",e["TRAPEZOID"]="trapezoid",e["BULLET"]="bullet",e["INDICATOR"]="indicator"})(ia||(ia={})),function(e){e["TEXT"]="text",e["IMAGE"]="image",e["SHAPE"]="shape",e["LINE"]="line",e["CHART"]="chart",e["TABLE"]="table",e["LATEX"]="latex",e["VIDEO"]="video",e["AUDIO"]="audio"}(sa||(sa={}));const ra={[ia.ROUND_RECT]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M ${a} 0 L ${e-a} 0 Q ${e} 0 ${e} ${a} L ${e} ${t-a} Q ${e} ${t} ${e-a} ${t} L ${a} ${t} Q 0 ${t} 0 ${t-a} L 0 ${a} Q 0 0 ${a} 0 Z`}},[ia.CUT_RECT_DIAGONAL]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 ${t-a} L 0 0 L ${e-a} 0 L ${e} ${a} L ${e} ${t} L ${a} ${t} Z`}},[ia.CUT_RECT_SINGLE]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 ${t} L 0 0 L ${e-a} 0 L ${e} ${a} L ${e} ${t} Z`}},[ia.CUT_RECT_SAMESIDE]:{editable:!0,defaultValue:.2,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 ${a} L ${a} 0 L ${e-a} 0 L ${e} ${a} L ${e} ${t} L 0 ${t} Z`}},[ia.ROUND_RECT_DIAGONAL]:{editable:!0,defaultValue:.125,range:[0,1],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M ${a} 0 L ${e} 0 L ${e} ${t-a} Q ${e} ${t} ${e-a} ${t} L 0 ${t} L 0 ${a} Q 0 0 ${a} 0 Z`}},[ia.ROUND_RECT_SINGLE]:{editable:!0,defaultValue:.125,range:[0,1],relative:"right",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 0 L ${e-a} 0 Q ${e} 0 ${e} ${a} L ${e} ${t} L 0 ${t} L 0 0 Z`}},[ia.ROUND_RECT_SAMESIDE]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 ${a} Q 0 0 ${a} 0 L ${e-a} 0 Q ${e} 0 ${e} ${a} L ${e} ${t} L 0 ${t} Z`}},[ia.CUT_ROUND_RECT]:{editable:!0,defaultValue:.125,range:[0,.5],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M ${a} 0 L ${e-a} 0 L ${e} ${a} L ${e} ${t} L 0 ${t} L 0 ${a} Q 0 0 ${a} 0 Z`}},[ia.MESSAGE]:{formula:(e,t)=>{const l=.2*e,a=.2*t;return`M 0 0 L ${e} 0 L ${e} ${t-a} L ${e/2} ${t-a} L ${e/2-l} ${t} L ${e/2-l} ${t-a} L 0 ${t-a} Z`}},[ia.ROUND_MESSAGE]:{formula:(e,t)=>{const l=.125*Math.min(e,t),a=.2*e,n=.2*t;return`M 0 ${l} Q 0 0 ${l} 0 L ${e-l} 0 Q ${e} 0 ${e} ${l} L ${e} ${t-l-n} Q ${e} ${t-n} ${e-l} ${t-n} L ${e/2} ${t-n} L ${e/2-a} ${t} L ${e/2-a} ${t-n} L ${l} ${t-n} Q 0 ${t-n} 0 ${t-l-n} L 0 ${l} Z`}},[ia.L]:{editable:!0,defaultValue:.25,range:[.1,.9],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 0 L 0 ${t} L ${e} ${t} L ${e} ${t-a} L ${a} ${t-a} L ${a} 0 Z`}},[ia.RING_RECT]:{editable:!0,defaultValue:.25,range:[.1,.45],relative:"left",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M 0 0 ${e} 0 ${e} ${t} L 0 ${t} L 0 0 Z M ${a} ${a} L ${a} ${t-a} L ${e-a} ${t-a} L ${e-a} ${a} Z`}},[ia.PLUS]:{editable:!0,defaultValue:.25,range:[.1,.9],relative:"center",getBaseSize:(e,t)=>Math.min(e,t),formula:(e,t,l)=>{const a=Math.min(e,t)*l;return`M ${e/2-a/2} 0 L ${e/2-a/2} ${t/2-a/2} L 0 ${t/2-a/2} L 0 ${t/2+a/2} L ${e/2-a/2} ${t/2+a/2} L ${e/2-a/2} ${t} L ${e/2+a/2} ${t} L ${e/2+a/2} ${t/2+a/2} L ${e} ${t/2+a/2} L ${e} ${t/2-a/2} L ${e/2+a/2} ${t/2-a/2} L ${e/2+a/2} 0 Z`}},[ia.TRIANGLE]:{editable:!0,defaultValue:.5,range:[0,1],relative:"left",getBaseSize:e=>e,formula:(e,t,l)=>{const a=e*l;return`M ${a} 0 L 0 ${t} L ${e} ${t} Z`}},[ia.PARALLELOGRAM_LEFT]:{editable:!0,defaultValue:.25,range:[0,.9],relative:"left",getBaseSize:e=>e,formula:(e,t,l)=>{const a=e*l;return`M ${a} 0 L ${e} 0 L ${e-a} ${t} L 0 ${t} Z`}},[ia.PARALLELOGRAM_RIGHT]:{editable:!0,defaultValue:.25,range:[0,.9],relative:"right",getBaseSize:e=>e,formula:(e,t,l)=>{const a=e*l;return`M 0 0 L ${e-a} 0 L ${e} ${t} L ${a} ${t} Z`}},[ia.TRAPEZOID]:{editable:!0,defaultValue:.25,range:[0,.5],relative:"left",getBaseSize:e=>e,formula:(e,t,l)=>{const a=e*l;return`M ${a} 0 L ${e-a} 0 L ${e} ${t} L 0 ${t} Z`}},[ia.BULLET]:{editable:!0,defaultValue:.2,range:[0,1],relative:"top",getBaseSize:(e,t)=>t,formula:(e,t,l)=>{const a=t*l;return`M ${e/2} 0 L 0 ${a} L 0 ${t} L ${e} ${t} L ${e} ${a} Z`}},[ia.INDICATOR]:{editable:!0,defaultValue:.2,range:[0,.9],relative:"right",getBaseSize:e=>e,formula:(e,t,l)=>{const a=e*l;return`M ${e} ${t/2} L ${e-a} 0 L 0 0 L ${a} ${t/2} L 0 ${t} L ${e-a} ${t} Z`}}},ua=[{type:"矩形",children:[{viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",pptxShapeType:"rect"},{viewBox:[200,200],path:"M 50 0 L 150 0 Q 200 0 200 50 L 200 150 Q 200 200 150 200 L 50 200 Q 0 200 0 150 L 0 50 Q 0 0 50 0 Z",pathFormula:ia.ROUND_RECT,pptxShapeType:"roundRect"},{viewBox:[200,200],path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z",pathFormula:ia.CUT_RECT_SINGLE,pptxShapeType:"snip1Rect"},{viewBox:[200,200],path:"M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 Z",pathFormula:ia.CUT_RECT_SAMESIDE,pptxShapeType:"snip2SameRect"},{viewBox:[200,200],path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 Z",pathFormula:ia.CUT_RECT_DIAGONAL,pptxShapeType:"snip2DiagRect"},{viewBox:[200,200],path:"M 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Q 0 0 50 0 Z",pathFormula:ia.CUT_ROUND_RECT,pptxShapeType:"snipRoundRect"},{viewBox:[200,200],path:"M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 0 Z",pathFormula:ia.ROUND_RECT_SINGLE,pptxShapeType:"round1Rect"},{viewBox:[200,200],path:"M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 Z",pathFormula:ia.ROUND_RECT_SAMESIDE,pptxShapeType:"round2SameRect"},{viewBox:[200,200],path:"M 50 0 L 200 0 L 200 150 Q 200 200 150 200 L 0 200 L 0 50 Q 0 0 50 0 Z",pathFormula:ia.ROUND_RECT_DIAGONAL,pptxShapeType:"round2DiagRect"},{viewBox:[200,200],path:"M 0 80 L 60 0 L 100 40 L 180 20 L 200 120 L 160 200 L 0 200 L 60 140 Z",title:"任意多边形"}]},{type:"常用形状",children:[{viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z",pptxShapeType:"ellipse"},{viewBox:[200,200],path:"M 100 0 L 0 200 L 200 200 L 100 0 Z",pathFormula:ia.TRIANGLE,pptxShapeType:"triangle"},{viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:[200,200],path:"M 70 20 L 0 160 Q 0 200 40 200 L 160 200 Q 200 200 200 160 L 130 20 Q 100 -20 70 20 Z"},{viewBox:[200,200],path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z",pathFormula:ia.PARALLELOGRAM_LEFT,pptxShapeType:"parallelogram"},{viewBox:[200,200],path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z",pathFormula:ia.PARALLELOGRAM_RIGHT},{viewBox:[200,200],path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z",pathFormula:ia.TRAPEZOID,pptxShapeType:"trapezoid"},{viewBox:[200,200],path:"M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z",pptxShapeType:"diamond"},{viewBox:[200,200],path:"M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z",pathFormula:ia.BULLET},{viewBox:[200,200],path:"M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z",pathFormula:ia.INDICATOR},{viewBox:[200,200],path:"M 0 0 C 80 20 120 20 200 0 C 180 80 180 120 200 200 C 80 180 120 180 0 200 C 20 120 20 80 0 0 Z"},{viewBox:[200,200],path:"M 10 10 C 60 0 140 0 190 10 C 200 60 200 140 190 190 C 140 200 60 200 10 190 C 0 140 0 60 10 10 Z"},{viewBox:[200,200],path:"M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z"},{viewBox:[200,200],path:"M 40 20 A 100 100 0 1 0 200 100 L 100 100 L 40 20 Z"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z",pptxShapeType:"pie"},{viewBox:[200,200],path:"M 160 20 A 100 100 0 1 0 200 100 L 100 100 L 160 20 Z"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z",pptxShapeType:"chord"},{viewBox:[200,200],path:"M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z",pptxShapeType:"teardrop"},{viewBox:[200,200],path:"M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z"},{viewBox:[200,200],path:"M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z",pptxShapeType:"pentagon"},{viewBox:[200,200],path:"M 40 0 L 160 0 L 200 100 L 160 200 L 40 200 L 0 100 Z",pptxShapeType:"hexagon"},{viewBox:[200,200],path:"M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z"},{viewBox:[200,200],path:"M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z",pptxShapeType:"octagon"},{viewBox:[200,200],path:"M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z"},{viewBox:[200,200],path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z"},{viewBox:[200,200],path:"M 50 0 A 25 50 0 1 0 50 200 L 150 200 A 25 50 0 1 0 150 0 L 50 0 Z"},{viewBox:[200,200],path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z"},{viewBox:[200,200],path:"M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z"},{viewBox:[200,200],path:"M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z"},{viewBox:[200,200],path:"M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z"},{viewBox:[200,200],path:"M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z"},{viewBox:[200,200],path:"M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z",pathFormula:ia.L},{viewBox:[200,200],path:"M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z",pathFormula:ia.RING_RECT},{viewBox:[200,200],path:"M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z"},{viewBox:[200,200],path:"M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z",pathFormula:ia.PLUS},{viewBox:[200,200],path:"M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z"},{viewBox:[200,200],path:"M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 Z",pathFormula:ia.MESSAGE},{viewBox:[200,200],path:"M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z",pathFormula:ia.ROUND_MESSAGE},{viewBox:[200,200],path:"M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z"},{viewBox:[200,200],path:"M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z"},{viewBox:[200,200],path:"M 0 20 C 60 60 140 -40 200 20 L 200 180 C 140 140 60 240 0 180 L 0 20 Z"},{viewBox:[200,200],path:"M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z"},{viewBox:[200,200],path:"M 100 0 Q 0 50 0 175 Q 100 225 200 175 Q 200 50 100 0 Z"},{viewBox:[200,200],path:"M 0 100 A 50 50 0 1 1 200 100 L 100 200 L 0 100 Z"},{viewBox:[200,200],path:"M 100 0 L 120 80 L 200 100 L 120 120 L 100 200 L 80 120 L 0 100 L 80 80 L 100 0 Z",pptxShapeType:"star4"},{viewBox:[1024,1024],path:"M1018.67652554 400.05983681l-382.95318779-5.89158658L512 34.78141155 388.27666225 394.16825023l-382.95318779 5.89158658L311.68602415 629.83174977l-117.83174978 365.27842665 312.25413766-223.88032637 312.25413904 223.88032637-117.83175116-365.27842665 318.14572563-229.77191296z",pptxShapeType:"star5",special:!0},{viewBox:[200,200],path:"M 100 0 L 60 60 L 0 100 L 60 140 L 100 200 L 140 140 L 200 100 L 140 60 L 100 0 Z"},{viewBox:[200,200],path:"M 100 0 L 140 60 L 200 60 L 160 100 L 200 140 L 140 140 L 100 200 L 60 140 L 0 140 L 40 100 L 0 60 L 60 60 L 100 0 Z",pptxShapeType:"star6"},{viewBox:[200,200],path:"M 100 0 L 80 40 L 20 20 L 40 80 L 0 100 L 40 120 L 20 180 L 80 160 L 100 200 L 120 160 L 180 180 L 160 120 L 200 100 L 160 80 L 180 20 L 120 40 L 100 0 Z"},{viewBox:[200,200],path:"M 200 0 C 80 40 80 160 200 200 C -60 200 -60 0 200 0 Z"}]},{type:"箭头",children:[{viewBox:[200,200],path:"M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z",pptxShapeType:"upArrow"},{viewBox:[200,200],path:"M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z",pptxShapeType:"downArrow"},{viewBox:[200,200],path:"M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z",pptxShapeType:"leftArrow"},{viewBox:[200,200],path:"M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z",pptxShapeType:"rightArrow"},{viewBox:[200,200],path:"M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z",pptxShapeType:"upDownArrow"},{viewBox:[200,200],path:"M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z",pptxShapeType:"leftRightArrow"},{viewBox:[200,200],path:"M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z"},{viewBox:[200,200],path:"M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:[200,200],path:"M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z",pptxShapeType:"notchedRightArrow"},{viewBox:[200,200],path:"M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z"},{viewBox:[200,200],path:"M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z"},{viewBox:[200,200],path:"M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z",pptxShapeType:"chevron"},{viewBox:[200,200],path:"M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z"},{viewBox:[200,200],path:"M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z",pptxShapeType:"homePlate"},{viewBox:[200,200],path:"M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z"},{viewBox:[200,200],path:"M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z"},{viewBox:[200,200],path:"M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z"},{viewBox:[200,200],path:"M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z"},{viewBox:[200,200],path:"M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z"},{viewBox:[200,200],path:"M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z"},{viewBox:[200,200],path:"M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z"},{viewBox:[200,200],path:"M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z"},{viewBox:[1024,1024],path:"M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z",special:!0},{viewBox:[1024,1024],path:"M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z",special:!0}]},{type:"其他形状",children:[{viewBox:[1024,1024],path:"M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z",special:!0},{viewBox:[1024,1024],path:"M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z",special:!0},{viewBox:[1024,1024],path:"M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z",special:!0},{viewBox:[1024,1024],path:"M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z",special:!0},{viewBox:[1024,1024],path:"M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z",special:!0},{viewBox:[1024,1024],path:"M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z",special:!0},{viewBox:[1024,1024],path:"M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z",special:!0},{viewBox:[1024,1024],path:"M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z",special:!0},{viewBox:[1024,1024],path:"M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z",special:!0},{viewBox:[1024,1024],path:"M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z",special:!0},{viewBox:[1024,1024],path:"M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z",special:!0},{viewBox:[1024,1024],path:"M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z",special:!0},{viewBox:[1024,1024],path:"M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z",special:!0},{viewBox:[1024,1024],path:"M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z",special:!0},{viewBox:[1024,1024],path:"M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z",special:!0},{viewBox:[1024,1024],path:"M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z",special:!0},{viewBox:[1024,1024],path:"M997.8886764 504.17210418L537.2729208 43.89182982c-13.97838539-13.97838539-36.56745619-13.97838539-50.5458416 0L26.1113236 504.17210418c-13.41924998 13.41924998-21.02349164 31.64706454-21.02349163 50.65766867 0 39.47496036 32.09437288 71.56933323 71.56933324 71.56933323h48.53295408V954.83524937c0 19.79339373 15.99127289 35.78466661 35.78466663 35.78466662H440.43066677V740.12724968h125.24633315v250.49266631h297.34821416c19.79339373 0 35.78466661-15.99127289 35.78466663-35.78466662V626.39910608h48.53295408c19.01060414 0 37.23841869-7.49241457 50.65766869-21.02349163 27.84494371-27.95677079 27.84494371-73.24673948-0.11182708-101.20351027z",special:!0},{viewBox:[1024,1024],path:"M1009.13013121 349.27572283L674.72427717 14.86986879c-8.82158299-8.82158299-20.35749924-13.16451618-31.89341544-13.16451618s-23.07183245 4.34293316-31.89341547 13.16451618L392.29790453 233.6451272c-16.5574327-1.90003326-33.25058207-2.71433322-49.94373146-2.71433324-99.34459624 0-198.68919249 32.70771543-280.25490606 98.12314628-20.90036589 16.69314938-22.52896582 48.04369819-3.66434987 67.04403081l246.59717401 246.59717401-292.33368895 292.06225564c-3.52863319 3.52863319-5.83581644 8.27871636-6.24296642 13.30023282l-4.61436649 50.48659809c-1.22144996 12.75736619 8.95729967 23.6146991 21.57894918 23.6146991 0.6785833 0 1.35716662 0 2.03574992-0.13571666l50.48659809-4.61436649c5.02151649-0.40714999 9.77159962-2.71433322 13.30023282-6.24296643l292.33368896-292.33368896 246.59717402 246.59717401c8.82158299 8.82158299 20.35749924 13.16451618 31.89341544 13.16451618 13.16451618 0 26.19331567-5.70009979 35.15061536-16.82886604 76.40848044-95.40881307 108.16617924-214.83947521 95.27309638-330.33435417l218.63954175-218.63954173c17.50744934-17.37173267 17.50744934-45.8722316 0-63.51539759z",special:!0},{viewBox:[1024,1024],path:"M976.62005979 160.47737905c-0.39452595-0.39452595-80.35178503 78.64217259-239.47725131 237.50462156l-111.6508437-111.65084369 237.89914752-237.89914752c-125.19623464-75.35445635-286.03131335-56.02268482-390.31767264 48.26367449-81.92988882 81.92988882-112.57140424 200.15616502-83.37648398 310.09739626l2.36715569 8.81107954-372.82702222 372.69551356c-8.15353628 8.15353628-8.15353628 21.56741857 0 29.72095487l185.95323084 185.95323084c8.15353628 8.15353628 21.56741857 8.15353628 29.72095485 0l372.56400493-372.56400493 8.81107953 2.3671557c110.07273989 29.32642892 228.29901608-1.18357785 310.36041356-83.24497533 104.41786795-104.2863593 123.74963948-265.12143802 49.97328693-390.05465535z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m220.16 343.26755556l-239.616 332.23111111c-14.44977778 20.13866667-44.37333333 20.13866667-58.82311111 0L291.84 481.16622222c-4.32355555-6.03022222 0-14.44977778 7.39555555-14.44977777h53.36177778c11.60533333 0 22.64177778 5.57511111 29.46844445 15.13244444l81.00977777 112.41244444 178.85866667-248.03555555c6.82666667-9.44355555 17.74933333-15.13244445 29.46844445-15.13244445H724.76444445c7.39555555 0 11.71911111 8.41955555 7.39555555 14.44977778z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m218.45333333 537.03111112c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222H302.64888889c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222v-54.61333334c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h418.70222222c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v54.61333334z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m188.18844445 703.37422223l-75.09333334-0.34133333L512 570.48177778l-112.98133333 134.71288889-75.20711112 0.34133333c-5.00622222 0-9.10222222-3.98222222-9.10222222-9.10222222 0-2.16177778 0.79644445-4.20977778 2.16177778-5.91644445l148.02488889-176.35555555L316.87111111 337.92c-1.36533333-1.70666667-2.16177778-3.75466667-2.16177778-5.91644445 0-5.00622222 4.096-9.10222222 9.10222222-9.10222222l75.20711112 0.34133334L512 458.06933333l112.98133333-134.71288888 75.09333334-0.34133334c5.00622222 0 9.10222222 3.98222222 9.10222222 9.10222222 0 2.16177778-0.79644445 4.20977778-2.16177778 5.91644445L559.21777778 514.27555555l147.91111111 176.35555556c1.36533333 1.70666667 2.16177778 3.75466667 2.16177778 5.91644444 0 5.00622222-4.096 9.10222222-9.10222222 9.10222223z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m218.45333333 537.03111112c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222H548.40888889v172.94222222c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222h-54.61333334c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222V548.40888889H302.64888889c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222v-54.61333334c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h172.94222222V302.64888889c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h54.61333334c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v172.94222222h172.94222222c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v54.61333334z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m163.95377778 517.57511112L427.46311111 700.64355555c-1.59288889 1.13777778-3.41333333 1.70666667-5.34755556 1.70666667-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222V331.88977778c0-1.93422222 0.56888889-3.75466667 1.70666667-5.34755556 2.95822222-4.096 8.64711111-5.00622222 12.74311111-2.048L675.95377778 505.17333333c0.79644445 0.56888889 1.47911111 1.25155555 2.048 2.048 2.95822222 3.98222222 2.048 9.67111111-2.048 12.62933334z",special:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m200.81777778 666.39644445l-32.54044445 44.37333333c-2.95822222 4.096-8.64711111 4.89244445-12.74311111 1.93422222L479.34577778 577.76355555c-2.38933333-1.70666667-3.75466667-4.43733333-3.75466667-7.39555555V257.13777778c0-5.00622222 4.096-9.10222222 9.10222222-9.10222223h54.72711112c5.00622222 0 9.10222222 4.096 9.10222222 9.10222223v281.6l162.24711111 117.30488889c4.096 2.84444445 5.00622222 8.53333333 2.048 12.62933333z",special:!0},{viewBox:[1024,1024],path:"M981.10577778 314.48177778c-25.6-61.09866667-62.464-115.93955555-109.34044445-163.04355556-46.87644445-46.99022222-101.60355555-83.968-162.70222222-109.568C646.59911111 15.58755555 580.38044445 2.27555555 512 2.27555555h-2.27555555c-68.83555555 0.34133333-135.39555555 13.99466667-198.08711112 40.84622223-60.52977778 25.94133333-114.80177778 62.80533333-161.22311111 109.79555555-46.42133333 46.99022222-82.83022222 101.60355555-108.08888889 162.47466667C16.27022222 378.42488889 3.072 445.44 3.41333333 514.38933333c0.34133333 78.96177778 19.22844445 157.35466667 54.49955556 227.44177778v172.94222222c0 28.89955555 23.43822222 52.33777778 52.224 52.33777778h172.71466666c69.97333333 35.38488889 148.13866667 54.272 226.98666667 54.61333334h2.38933333c68.03911111 0 133.91644445-13.19822222 196.03911112-39.02577778 60.75733333-25.37244445 115.37066667-61.78133333 162.13333333-108.31644445 46.87644445-46.53511111 83.74044445-100.92088889 109.568-161.56444444 26.73777778-62.80533333 40.39111111-129.59288889 40.73244445-198.54222223 0.22755555-69.29066667-13.19822222-136.53333333-39.59466667-199.79377777zM284.89955555 566.61333333c-30.03733333 0-54.49955555-24.46222222-54.49955555-54.61333333s24.46222222-54.61333333 54.49955555-54.61333333 54.49955555 24.46222222 54.49955556 54.61333333-24.34844445 54.61333333-54.49955556 54.61333333z m227.10044445 0c-30.03733333 0-54.49955555-24.46222222-54.49955555-54.61333333s24.46222222-54.61333333 54.49955555-54.61333333 54.49955555 24.46222222 54.49955555 54.61333333-24.46222222 54.61333333-54.49955555 54.61333333z m227.10044445 0c-30.03733333 0-54.49955555-24.46222222-54.49955556-54.61333333s24.46222222-54.61333333 54.49955556-54.61333333 54.49955555 24.46222222 54.49955555 54.61333333-24.46222222 54.61333333-54.49955555 54.61333333z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM745.4750693 325.8561164l-267.95558363 371.52436096c-16.15876501 22.52048353-49.62140436 22.52048353-65.78016939 0L253.07805667 477.51948567c-4.83490607-6.74342161 0-16.15876501 8.27023406-16.15876499h59.67291961c12.97790576 0 25.31963967 6.23448413 32.95370188 16.92217123l90.59087157 125.70755774 200.01242995-277.37092701c7.63406221-10.56045272 19.84856175-16.92217125 32.95370189-16.92217124H737.20483524c8.27023407 0 13.10514012 9.41534338 8.27023406 16.158765z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM756.28999077 542.53624885c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962H277.88875885c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962v-61.0724977c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h468.2224823c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v61.0724977z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM720.79160148 697.63494611c5.59831228 6.61618726 0.8906406 16.6677025-7.76129658 16.66770249h-74.94104404c-5.98001539 0-11.70556205-2.67192177-15.64982754-7.25235911L512 575.36271635l-110.43943332 131.68757314c-3.81703111 4.58043732-9.54257777 7.25235911-15.64982754 7.25235911H310.9696951c-8.65193717 0-13.35960887-10.05151525-7.76129658-16.66770249L458.81603326 512 303.20839852 326.36505389c-5.59831228-6.61618726-0.8906406-16.6677025 7.76129658-16.66770249h74.94104404c5.98001539 0 11.70556205 2.67192177 15.64982754 7.25235911L512 448.63728365l110.43943332-131.68757314c3.81703111-4.58043732 9.54257777-7.25235911 15.64982754-7.25235911H713.0303049c8.65193717 0 13.35960887 10.05151525 7.76129658 16.66770249L565.18396674 512l155.60763474 185.63494611z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM677.02297814 523.19662459L423.31764398 722.70011704c-9.41534338 7.37959347-23.28388974 0.76340622-23.28388975-11.19662459V312.62374191c0-11.9600308 13.86854636-18.70345241 23.28388975-11.19662457l253.70533416 199.37625807c7.25235911 5.72554666 7.25235911 16.6677025 0 22.39324918z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM756.28999077 542.53624885c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962H552.71499847v193.39624268c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962h-61.0724977c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962V552.71499847H277.88875885c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962v-61.0724977c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h193.39624268V277.88875885c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h61.0724977c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v193.39624268h193.39624268c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v61.0724977z",special:!0},{viewBox:[1024,1024],path:"M902.67315697 135.41705551L528.62204754 7.94466448C524.10877635 6.40354749 518.05438818 5.63298899 512 5.63298899s-12.10877635 0.7705585-16.62204754 2.31167549L121.32684303 135.41705551c-9.13662215 3.08223399-16.62204754 13.64989334-16.62204753 23.33691443v531.02488283c0 9.68702108 6.27454775 22.45627614 13.87005291 28.51066431L498.0198673 1013.9638196c3.85279247 2.9721542 8.8063828 4.51327118 13.87005291 4.51327118s10.12734022-1.54111698 13.87005291-4.51327118l379.4450189-295.67430252c7.59550517-5.94430839 13.87005291-18.71356345 13.87005291-28.51066431V158.75396994c0.22015956-9.68702108-7.26526581-20.14460066-16.40188796-23.33691443zM712.89560763 323.43332829L478.86598471 645.63685899c-7.04510625 9.68702108-21.57563786 9.68702108-28.6207441 0l-139.14084824-191.5388259c-4.18303182-5.8342286 0-13.9801327 7.15518603-13.9801327h60.76404132c5.61406904 0 11.0079785 2.75199463 14.31037204 7.26526582l71.22162091 97.97100864 166.11039557-228.74579323c3.30239355-4.51327118 8.58622323-7.26526581 14.31037204-7.26526581H705.7404216c7.15518602 0.11007979 11.33821785 8.25598388 7.15518603 14.09021248z",special:!0},{viewBox:[1024,1024],path:"M959.86498307 186.28001231H797.00498922v-101.78749614c0-44.91373267-36.51626425-81.42999692-81.42999691-81.42999693H308.42500769c-44.91373267 0-81.42999692 36.51626425-81.42999691 81.42999693v101.78749614H64.13501693c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499847v40.71499845c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874962h76.8495596l31.42688945 665.43575611c2.03574992 43.38692024 37.91584233 77.61296581 81.30276254 77.6129658h577.64404066c43.5141546 0 79.26701262-34.09881122 81.30276254-77.6129658l31.42688945-665.43575611H990.40123192c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874962v-40.71499845c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499847z m-254.46874039 0H318.60375732v-91.60874653h386.79248536v91.60874653z",special:!0},{viewBox:[1024,1024],path:"M980.2224823 248.62485371H654.50249462V104.85001539c0-22.52048353-18.19451494-40.71499847-40.71499847-40.71499846H94.67126578v-50.89374808c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961h-71.25124732c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v997.5174623c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h71.25124732c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961V674.85999383h315.54123807v143.77483833c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h529.29497999c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V289.33985217c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846z",special:!0},{viewBox:[1024,1024],path:"M804.63905145 265.16532183V94.67126578h109.42155836c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-71.25124732c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961H109.93939019c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v71.25124732c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h109.42155836v170.49405605c0 103.6960117 53.94737296 194.92305513 135.3773699 246.83467817-81.42999692 51.91162303-135.37736988 143.13866646-135.3773699 246.83467817v170.49405605h-109.42155836c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v71.25124732c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h804.12121962c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-71.25124732c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961h-109.42155836V758.83467817c0-103.6960117-53.94737296-194.92305513-135.3773699-246.83467817 81.42999692-51.91162303 135.37736988-143.13866646 135.3773699-246.83467817z",special:!0},{viewBox:[1024,1024],path:"M1020.928 448.44373333l-35.36213334-373.4528c-1.79200001-19.3536-17.2032-34.64533332-36.55679999-36.55679999L575.55626667 3.072h-0.47786666c-3.82293334 0-6.8096 1.19466667-9.07946669 3.46453333L6.53653333 565.99893332c-4.65919999 4.65919999-4.65919999 12.1856 0 16.84480001l434.61973334 434.61973334c2.26986667 2.26986667 5.25653333 3.46453333 8.48213333 3.46453333s6.21226667-1.19466667 8.48213333-3.46453333l559.46239999-559.46239999c2.38933332-2.5088 3.584-5.97333334 3.34506668-9.55733335zM735.40266668 362.66666667c-42.17173333 0-76.45866667-34.28693333-76.45866667-76.45866667s34.28693333-76.45866667 76.45866667-76.45866667 76.45866667 34.28693333 76.45866665 76.45866667-34.28693333 76.45866667-76.45866665 76.45866667z",special:!0}]},{type:"线性",children:[{viewBox:[1024,1024],path:"M1009.55537674 75.96950982l-61.38012212-61.38012214c-4.48769762-4.48769762-11.870684-4.48769762-16.3583816 0L14.44462326 931.67210859c-4.48769762 4.48769762-4.48769762 11.870684 0 16.35838159l61.38012212 61.38012214c4.48769762 4.48769762 11.870684 4.48769762 16.3583816 0L1009.41061232 92.18312698c4.63246205-4.34293316 4.63246205-11.72591956 0.14476442-16.21361716zM210.88996692 419.35075905c114.94296453 0 208.46079213-93.51782759 208.46079213-208.46079213s-93.51782759-208.46079213-208.46079213-208.4607921-208.46079213 93.51782759-208.4607921 208.4607921 93.51782759 208.46079213 208.4607921 208.46079213z m0-312.69118816c57.47148228 0 104.23039605 46.75891379 104.23039607 104.23039603s-46.75891379 104.23039605-104.23039607 104.23039607-104.23039605-46.75891379-104.23039603-104.23039607 46.75891379-104.23039605 104.23039603-104.23039603zM813.11003308 604.64924095c-114.94296453 0-208.46079213 93.51782759-208.46079213 208.46079213s93.51782759 208.46079213 208.46079213 208.4607921 208.46079213-93.51782759 208.4607921-208.4607921-93.51782759-208.46079213-208.4607921-208.46079213z m0 312.69118816c-57.47148228 0-104.23039605-46.75891379-104.23039607-104.23039603s46.75891379-104.23039605 104.23039607-104.23039607 104.23039605 46.75891379 104.23039603 104.23039607-46.75891379 104.23039605-104.23039603 104.23039603z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M1004.96017383 478.58365209L483.27851088 25.80594621c-4.00443838-3.45210207-9.11354943-5.3852792-14.49882864-5.38527921h-122.20441284c-10.21822208 0-14.91308089 12.70373557-7.18037228 19.33177152l483.57045622 419.77561022H14.8973037c-6.07569962 0-11.04672658 4.97102697-11.04672658 11.04672657v82.85044938c0 6.07569962 4.97102697 11.04672658 11.04672658 11.04672657h807.92996557L339.25681303 984.24756148c-7.7327086 6.76612003-3.0378498 19.33177153 7.18037229 19.33177152h126.34693531c2.62359757 0 5.24719513-0.96658859 7.18037228-2.76168164L1004.96017383 545.41634791c20.2983601-17.67476253 20.2983601-49.1579333 0-66.83269582z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M1011.38217956 558.9924242L545.80649025 22.43713295c-17.81503843-20.62055629-49.79794206-20.62055629-67.75325638 0L12.61782044 558.9924242c-6.31241519 7.29434645-1.12220714 18.51641789 8.41655359 18.51641789h113.62347344c6.45269109 0 12.62483038-2.80551785 16.97338308-7.71517411L458.69516062 215.87758959V1005.77114384c0 6.1721393 5.04993216 11.22207145 11.22207144 11.22207145h84.16553588c6.1721393 0 11.22207145-5.04993216 11.22207144-11.22207145V215.87758959l307.06393007 353.91607839c4.20827679 4.90965626 10.38041608 7.71517413 16.97338308 7.71517411h113.62347344c9.53876074 0 14.72896878-11.22207145 8.41655359-18.51641789z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M1009.1026963 459.52804874H201.17273073l483.57045624-419.77561022c7.7327086-6.76612003 3.0378498-19.33177153-7.18037229-19.33177152h-122.20441283c-5.3852792 0-10.49439025 1.93317715-14.49882866 5.38527921L19.03982617 478.58365209c-20.2983601 17.67476253-20.2983601 49.1579333 0 66.69461175L543.89742302 1000.81765136c2.07126124 1.79509307 4.55677472 2.76168163 7.18037228 2.76168164h126.3469353c10.21822208 0 14.91308089-12.70373557 7.18037228-19.33177152L201.17273073 564.47195126H1009.1026963c6.07569962 0 11.04672658-4.97102697 11.04672658-11.04672657v-82.85044938c0-6.07569962-4.97102697-11.04672658-11.04672658-11.04672657z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M1002.96562597 446.49115791h-113.62347344c-6.45269109 0-12.62483038 2.80551785-16.97338308 7.71517411L565.30483938 808.12241041V18.22885616c0-6.1721393-5.04993216-11.22207145-11.22207144-11.22207145h-84.16553588c-6.1721393 0-11.22207145 5.04993216-11.22207144 11.22207145v789.89355425L151.63123055 454.20633202c-4.20827679-4.90965626-10.38041608-7.71517413-16.97338308-7.71517411h-113.62347344c-9.53876074 0-14.72896878 11.36234735-8.41655359 18.51641789L478.19350975 1001.56286705c17.81503843 20.62055629 49.79794206 20.62055629 67.75325638 0L1011.38217956 465.0075758c6.31241519-7.29434645 1.12220714-18.51641789-8.41655359-18.51641789z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M975.82443246 622.46726585H14.8973037c-6.07569962 0-11.04672658 4.97102697-11.04672658 11.04672658v82.85044937c0 6.07569962 4.97102697 11.04672658 11.04672658 11.04672659h835.6848661L651.32683905 980.10503902c-5.66144737 7.18037229-0.55233633 17.9509307 8.69929718 17.9509307h100.11095967c6.76612003 0 13.11798782-3.0378498 17.39859437-8.42312903l233.08593092-295.63802022c22.78387358-28.99765728 2.20934532-71.52755463-34.79718873-71.52755462zM1009.1026963 296.58883161H173.4178302l199.25533075-252.69387063c5.66144737-7.18037229 0.55233633-17.9509307-8.69929718-17.9509307h-100.11095967c-6.76612003 0-13.11798782 3.0378498-17.39859437 8.42312903L13.37837881 330.00517953c-22.78387358 28.99765728-2.20934532 71.52755463 34.65910466 71.52755462h961.06521283c6.07569962 0 11.04672658-4.97102697 11.04672658-11.04672658v-82.85044937c0-6.07569962-4.97102697-11.04672658-11.04672658-11.04672659z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M1010.75873115 64.13501693H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v81.42999691c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874964h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874964v-81.42999691c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961zM1010.75873115 858.07748691H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874964v81.42999691c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-81.42999691c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874964zM1010.75873115 461.10625194H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874959v81.42999694c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874959h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874959v-81.42999694c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874959z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M591.98717801 512l405.34042913-483.16579151c6.79427767-8.02960089 1.08090782-20.22841761-9.41933951-20.2284176h-123.22349044c-7.25752386 0-14.20621693 3.24272343-18.99309439 8.80167789L511.38233839 415.95362022 177.07299399 17.40746878c-4.63246205-5.55895447-11.58115512-8.80167789-18.99309439-8.80167789H34.85640916c-10.50024731 0-16.21361717 12.19881672-9.41933952 20.2284176L430.77749876 512 25.43706964 995.16579151c-6.79427767 8.02960089-1.08090782 20.22841761 9.41933952 20.2284176h123.22349044c7.25752386 0 14.20621693-3.24272343 18.99309439-8.80167789l334.3093444-398.54615144 334.30934441 398.54615144c4.63246205 5.55895447 11.58115512 8.80167789 18.99309439 8.80167789h123.22349044c10.50024731 0 16.21361717-12.19881672 9.41933951-20.2284176L591.98717801 512z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M953.5488 832.61667556c-24.08448-57.08913778-58.74574221-108.31644445-102.70947556-152.28017777-43.96373333-43.96373333-95.19104-78.49756444-152.28017777-102.70947558-0.50972445-0.25486222-1.01944888-0.38229333-1.52917334-0.63715555C776.41955556 519.64586667 828.02915556 426.23886221 828.02915556 320.85333332c0-174.58062221-141.44853334-316.02915556-316.02915556-316.02915554S195.97084444 146.27271111 195.97084444 320.85333332c0 105.38552889 51.6096 198.79253333 130.99918223 256.26396447-0.50972445 0.25486222-1.01944888 0.38229333-1.52917334 0.63715555-57.08913778 24.08448-108.31644445 58.61831112-152.28017777 102.70947554-43.96373333 43.96373333-78.49756444 95.19104-102.70947556 152.28017779C46.74901333 888.55893332 34.13333334 947.8144 32.85902222 1008.72647111c-0.12743111 5.7344 4.46008889 10.44935111 10.19448889 10.44935111h76.45866667c5.60696888 0 10.06705778-4.46008889 10.19448889-9.93962666 2.54862221-98.37681778 42.05226667-190.50951112 111.88451555-260.34176001 72.25344-72.25344 168.20906666-112.01194667 270.40881778-112.01194667s198.15537778 39.75850667 270.40881778 112.01194667C852.24106667 818.72668444 891.74471111 910.85937779 894.29333333 1009.23619556c0.12743111 5.60696888 4.58752 9.93962667 10.19448889 9.93962666h76.45866667c5.7344 0 10.32192-4.71495112 10.19448889-10.44935111-1.27431111-60.91207112-13.88999112-120.16753779-37.59217778-176.10979555zM512 540.03484444c-58.49088 0-113.54112-22.81016889-154.95623111-64.22527999S292.81848888 379.34421333 292.81848888 320.85333332c0-58.49088 22.81016889-113.54112 64.22528001-154.9562311S453.50912 101.67182221 512 101.67182221s113.54112 22.81016889 154.95623111 64.22528001S731.18151112 262.36245333 731.18151112 320.85333332c0 58.49088-22.81016889 113.54112-64.22528001 154.95623113S570.49088 540.03484444 512 540.03484444z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M985.31555555 111.50222222H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888889v728.17777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h946.6311111c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V147.91111111c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888889z m-45.5111111 126.06577778V830.57777778H84.19555555V237.568l-31.40266666-24.46222222 44.71466666-57.45777778 48.6968889 37.888h731.70488888l48.69688889-37.888 44.71466667 57.45777778-31.51644444 24.46222222z M877.90933333 193.42222222L512 477.86666667 146.09066667 193.42222222l-48.69688889-37.888-44.71466667 57.45777778 31.40266667 24.46222222 388.66488889 302.19377778c22.98311111 17.86311111 55.18222222 17.86311111 78.16533333 0L939.80444445 237.568l31.40266666-24.46222222-44.71466666-57.45777778-48.58311112 37.77422222z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M985.31555555 88.74666667H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888888v564.33777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h432.35555555v127.43111111H275.34222222c-10.01244445 0-18.20444445 8.192-18.20444444 18.20444445v54.61333333c0 5.00622222 4.096 9.10222222 9.10222222 9.10222222h491.52c5.00622222 0 9.10222222-4.096 9.10222222-9.10222222v-54.61333333c0-10.01244445-8.192-18.20444445-18.20444444-18.20444445H552.96V725.90222222h432.35555555c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V125.15555555c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888888z m-45.5111111 555.23555555H84.19555555V170.66666667h855.6088889v473.31555555z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m0 932.97777778c-233.69955555 0-423.25333333-189.55377778-423.25333333-423.25333333 0-101.26222222 35.61244445-194.33244445 95.00444444-267.15022222l595.39911111 595.39911111C706.33244445 899.64088889 613.26222222 935.25333333 512 935.25333333z m328.24888889-156.10311111L244.84977778 183.75111111C317.66755555 124.35911111 410.73777778 88.74666667 512 88.74666667c233.69955555 0 423.25333333 189.55377778 423.25333333 423.25333333 0 101.26222222-35.61244445 194.33244445-95.00444444 267.15022222z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M901.80266667 257.82044445L656.95288889 12.97066667c-6.82666667-6.82666667-16.04266667-10.69511111-25.71377778-10.69511112H147.91111111c-20.13866667 0-36.40888889 16.27022222-36.40888889 36.4088889v946.6311111c0 20.13866667 16.27022222 36.40888889 36.40888889 36.4088889h728.17777778c20.13866667 0 36.40888889-16.27022222 36.40888889-36.4088889V283.648c0-9.67111111-3.86844445-19.00088889-10.69511111-25.82755555zM828.52977778 300.37333333H614.4V86.24355555L828.52977778 300.37333333z m2.048 639.43111112H193.42222222V84.19555555h343.60888889v245.76c0 26.39644445 21.39022222 47.78666667 47.78666667 47.78666667h245.76v562.06222223z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M981.07392 55.79662222H42.92608c-31.22062222 0-50.71758221 34.02410666-35.04355556 61.16693334L304.28728889 620.82616888V927.42542221c0 22.55530667 18.09521779 40.77795555 40.52309333 40.77795557h334.37923556c22.42787556 0 40.52309333-18.22264888 40.52309333-40.77795557V620.82616888L1016.24490667 116.96355556c15.54659555-27.14282666-3.95036444-61.16693333-35.17098667-61.16693334zM628.47203556 876.45297779H395.52796444V677.66044445h233.07150222v198.79253334z m12.23338666-301.50200891l-12.10595556 21.15356445h-233.19893332l-12.10595556-21.15356445L130.59868445 147.54702221h762.8026311L640.70542222 574.95096888z",special:!0,outlined:!0},{viewBox:[1024,1024],path:"M980.62285431 4.54099753H654.39920987c-4.2719763 0-7.76722963 3.49525333-7.76722962 7.76722964v72.4941432c0 4.2719763 3.49525333 7.76722963 7.76722962 7.76722963h207.64393877L604.04167111 350.57107753c-64.72691358-49.83972347-143.69374815-76.7661195-226.67365136-76.7661195-99.54999309 0-193.27456395 38.83614815-263.5679921 109.25903012S4.54099753 547.08198717 4.54099753 646.63198025s38.83614815 193.27456395 109.25903012 263.5679921C184.09345581 980.62285431 277.81802667 1019.45900247 377.36801975 1019.45900247s193.27456395-38.83614815 263.5679921-109.25903012C711.35889383 839.90654419 750.19504197 746.18197333 750.19504197 646.63198025c0-82.9799032-26.92639605-161.68783013-76.63666567-226.41474372L931.4304 162.34521283V369.60079013c0 4.2719763 3.49525333 7.76722963 7.76722963 7.76722962h72.4941432c4.2719763 0 7.76722963-3.49525333 7.76722964-7.76722962V43.37714569c0-21.35988148-17.47626667-38.83614815-38.83614816-38.83614816zM377.36801975 921.07409383c-151.33152395 0-274.44211358-123.11058963-274.44211358-274.44211358s123.11058963-274.44211358 274.44211358-274.44211358 274.44211358 123.11058963 274.44211358 274.44211358-123.11058963 274.44211358-274.44211358 274.44211358z",special:!0,outlined:!0}]}],ca={bar:"bar",horizontalBar:"bar",line:"line",area:"line",scatter:"line",pie:"pie",ring:"pie"};var da=()=>{const e=J(),t=(0,D.debounce)((function(){e.addSnapshot()}),300,{trailing:!0}),l=(0,D.throttle)((function(){e.reDo()}),100,{leading:!0,trailing:!1}),a=(0,D.throttle)((function(){e.unDo()}),100,{leading:!0,trailing:!1});return{addHistorySnapshot:t,redo:l,undo:a}},pa=()=>{const e=R(),t=$(),{creatingElement:l}=(0,o.Jk)(e),{theme:a,viewportRatio:n}=(0,o.Jk)(t),{addHistorySnapshot:i}=da(),s=(a,n)=>{t.addElement(a),e.setActiveElementIdList([a.id]),l.value&&e.setCreatingElement(null),setTimeout((()=>{e.setEditorareaFocus(!0)}),0),n&&n(),i()},u=e=>{aa(e).then((({width:t,height:l})=>{const a=l/t;aoa?(t=oa,l=t*a):l>oa*n.value&&(l=oa*n.value,t=l/a),s({type:"image",id:(0,r.x0)(10),src:e,width:t,height:l,left:(oa-t)/2,top:(oa*n.value-l)/2,fixedRatio:!0,rotate:0})}))},c=e=>{const t={type:"chart",id:(0,r.x0)(10),chartType:ca[e],left:300,top:81.25,width:400,height:400,rotate:0,themeColor:[a.value.themeColor],gridColor:a.value.fontColor,data:{labels:["类别1","类别2","类别3","类别4","类别5"],legends:["系列1"],series:[[12,19,5,2,18]]}},l={..."bar"===e?{horizontalBars:!1,stackBars:!1}:{},..."horizontalBar"===e?{horizontalBars:!0,stackBars:!1}:{},..."line"===e?{showLine:!0,lineSmooth:!0,showArea:!1}:{},..."area"===e?{showLine:!0,lineSmooth:!0,showArea:!0}:{},..."scatter"===e?{showLine:!1,lineSmooth:!0,showArea:!1}:{},..."pie"===e?{donut:!1}:{},..."ring"===e?{donut:!0}:{}};s({...t,options:l})},d=(e,t)=>{const l={fontname:a.value.fontName,color:a.value.fontColor},o=[];for(let a=0;a{const{left:l,top:n,width:o,height:i}=e,u=t?.content||"",c=t?.vertical||!1,d=(0,r.x0)(10);s({type:"text",id:d,left:l,top:n,width:o,height:i,content:u,rotate:0,defaultFontName:a.value.fontName,defaultColor:a.value.fontColor,vertical:c},(()=>{setTimeout((()=>{const e=document.querySelector(`#editable-element-${d} .ProseMirror`);e&&e.focus()}),0)}))},v=(e,t,l={})=>{const{left:n,top:o,width:i,height:u}=e,c={type:"shape",id:(0,r.x0)(10),left:n,top:o,width:i,height:u,viewBox:t.viewBox,path:t.path,fill:a.value.themeColor,fixedRatio:!1,rotate:0,...l};if(t.special&&(c.special=!0),t.pathFormula){c.pathFormula=t.pathFormula,c.viewBox=[i,u];const e=ra[t.pathFormula];"editable"in e?(c.path=e.formula(i,u,e.defaultValue),c.keypoint=e.defaultValue):c.path=e.formula(i,u)}s(c)},m=(e,t)=>{const{left:l,top:n,start:o,end:i}=e,u={type:"line",id:(0,r.x0)(10),left:l,top:n,start:o,end:i,points:t.points,color:a.value.themeColor,style:t.style,width:2};t.isBroken&&(u.broken=[(o[0]+i[0])/2,(o[1]+i[1])/2]),t.isCurve&&(u.curve=[(o[0]+i[0])/2,(o[1]+i[1])/2]),t.isCubic&&(u.cubic=[[(o[0]+i[0])/2,(o[1]+i[1])/2],[(o[0]+i[0])/2,(o[1]+i[1])/2]]),s(u)},h=e=>{s({type:"latex",id:(0,r.x0)(10),width:e.w,height:e.h,rotate:0,left:(oa-e.w)/2,top:(oa*n.value-e.h)/2,path:e.path,latex:e.latex,color:a.value.fontColor,strokeWidth:2,viewBox:[e.w,e.h],fixedRatio:!0})},f=e=>{s({type:"video",id:(0,r.x0)(10),width:500,height:300,rotate:0,left:(oa-500)/2,top:(oa*n.value-300)/2,src:e,autoplay:!1})},g=e=>{s({type:"audio",id:(0,r.x0)(10),width:50,height:50,rotate:0,left:(oa-50)/2,top:(oa*n.value-50)/2,loop:!1,autoplay:!1,fixedRatio:!0,color:a.value.themeColor,src:e})};return{createImageElement:u,createChartElement:c,createTableElement:d,createTextElement:p,createShapeElement:v,createLineElement:m,createLatexElement:h,createVideoElement:f,createAudioElement:g}},va=()=>{const e=R(),t=$(),{currentSlide:l,slides:a}=(0,o.Jk)(t),{addHistorySnapshot:n}=da(),s=a=>{const{groupIdMap:o,elIdMap:i}=Ie(a),s=a[0];let r,u=0;do{r=l.value.elements.find((e=>{if(e.type!==s.type)return!1;const{minX:t,maxX:l,minY:a,maxY:n}=xe(e),{minX:o,maxX:i,minY:r,maxY:c}=xe({...s,left:s.left+u,top:s.top+u});return t===o&&l===i&&a===r&&n===c})),r&&(u+=10)}while(r);for(const e of a)e.id=i[e.id],e.left=e.left+u,e.top=e.top+u,e.groupId&&(e.groupId=o[e.groupId]);t.addElement(a),e.setActiveElementIdList(Object.values(i)),n()},u=e=>{const l=_e(e),a=e.map((e=>{const{groupIdMap:t,elIdMap:a}=Ie(e.elements);for(const n of e.elements)n.id=a[n.id],n.groupId&&(n.groupId=t[n.groupId]),n.link&&"slide"===n.link.type&&(l[n.link.target]?n.link.target=l[n.link.target]:delete n.link);if(e.animations)for(const l of e.animations)l.id=(0,r.x0)(10),l.elId=a[l.elId];return{...e,id:l[e.id]}}));t.addSlide(a),n()},c=(0,i.Fl)((()=>!(a.value.length>1)&&!(a.value[0].elements.length>0)));return{addElementsFromData:s,addSlidesFromData:u,isEmptySlide:c}},ma=()=>{const{createTextElement:e}=pa(),{addElementsFromData:t,addSlidesFromData:l}=va(),a=t=>{e({left:0,top:0,width:600,height:50},{content:t})},n=(e,n)=>{const o=n?.onlySlide||!1,i=n?.onlyElements||!1,s=fe(e);if("object"===typeof s){const{type:e,data:a}=s;"elements"!==e||o?"slides"!==e||i||l(a):t(a)}else if(!i&&!o){const e=la(s);a(e)}};return{pasteTextClipboardData:n}},ha=()=>{const e=R(),t=$(),{selectedSlidesIndex:l,activeElementIdList:a}=(0,o.Jk)(e),{currentSlide:n,slides:s,theme:u,slideIndex:c}=(0,o.Jk)(t),d=(0,i.Fl)((()=>[...l.value,c.value])),p=(0,i.Fl)((()=>s.value.filter(((e,t)=>d.value.includes(t))))),v=(0,i.Fl)((()=>p.value.map((e=>e.id)))),{pasteTextClipboardData:m}=ma(),{addSlidesFromData:h}=va(),{addHistorySnapshot:f}=da(),g=()=>{const l={id:(0,r.x0)(10),elements:[],background:{type:"solid",color:u.value.backgroundColor}};t.updateSlideIndex(0),e.setActiveElementIdList([]),t.setSlides([l])},y=l=>{l===ne.UP&&c.value>0?(a.value.length&&e.setActiveElementIdList([]),t.updateSlideIndex(c.value-1)):l===ne.DOWN&&c.value{const t=pe(JSON.stringify({type:"slides",data:p.value}));me(t).then((()=>{e.setThumbnailsFocus(!0)}))},x=()=>{he().then((e=>{m(e,{onlySlide:!0})})).catch((e=>ta.warning(e)))},k=()=>{const l={id:(0,r.x0)(10),elements:[],background:{type:"solid",color:u.value.backgroundColor}};e.setActiveElementIdList([]),t.addSlide(l),f()},b=l=>{const{groupIdMap:a,elIdMap:n}=Ie(l.elements);for(const e of l.elements)e.id=n[e.id],e.groupId&&(e.groupId=a[e.groupId]);const o={...l,id:(0,r.x0)(10)};e.setActiveElementIdList([]),t.addSlide(o),f()},_=()=>{const e=JSON.parse(JSON.stringify(n.value));h([e])},I=(l=v.value)=>{s.value.length===l.length?g():t.deleteSlide(l),e.updateSelectedSlidesIndex([]),f()},S=()=>{const e=[...v.value];w(),I(e)},C=()=>{const t=Array.from(Array(s.value.length),((e,t)=>t));e.setActiveElementIdList([]),e.updateSelectedSlidesIndex(t)},L=(e,l)=>{if(l===e)return;const a=JSON.parse(JSON.stringify(s.value)),n=a[l];a.splice(l,1),a.splice(e,0,n),t.setSlides(a),t.updateSlideIndex(e)};return{resetSlides:g,updateSlideIndex:y,copySlide:w,pasteSlide:x,createSlide:k,createSlideByTemplate:b,copyAndPasteSlide:_,deleteSlide:I,cutSlide:S,selectAllSlide:C,sortSlides:L}},fa=()=>{const e=R(),t=$(),{activeElementIdList:l}=(0,o.Jk)(e),{currentSlide:a}=(0,o.Jk)(t),{addHistorySnapshot:n}=da(),i=()=>{const o=JSON.parse(JSON.stringify(a.value.elements));for(const e of o)l.value.includes(e.id)&&(e.lock=!0);t.updateSlide({elements:o}),e.setActiveElementIdList([]),n()},s=l=>{const o=JSON.parse(JSON.stringify(a.value.elements));if(l.groupId){const a=[];for(const e of o)e.groupId===l.groupId&&(e.lock=!1,a.push(e.id));t.updateSlide({elements:o}),e.setActiveElementIdList(a)}else{for(const e of o)if(e.id===l.id){e.lock=!1;break}t.updateSlide({elements:o}),e.setActiveElementIdList([l.id])}n()};return{lockElement:i,unlockElement:s}},ga=()=>{const e=R(),t=$(),{activeElementIdList:l,activeGroupElementId:a}=(0,o.Jk)(e),{currentSlide:n}=(0,o.Jk)(t),{addHistorySnapshot:i}=da(),s=()=>{if(!l.value.length)return;let o=[];o=a.value?n.value.elements.filter((e=>e.id!==a.value)):n.value.elements.filter((e=>!l.value.includes(e.id))),e.setActiveElementIdList([]),t.updateSlide({elements:o}),i()},r=()=>{n.value.elements.length&&(e.setActiveElementIdList([]),t.updateSlide({elements:[]}),i())};return{deleteElement:s,deleteAllElements:r}},ya=()=>{const e=R(),t=$(),{activeElementIdList:l,activeElementList:a,handleElementId:n}=(0,o.Jk)(e),{currentSlide:s}=(0,o.Jk)(t),{addHistorySnapshot:u}=da(),c=(0,i.Fl)((()=>{if(a.value.length<2)return!1;const e=a.value[0].groupId;if(!e)return!0;const t=a.value.every((t=>(t.groupId&&t.groupId)===e));return!t})),d=()=>{if(!a.value.length)return;let e=JSON.parse(JSON.stringify(s.value.elements));const n=(0,r.x0)(10),o=[];for(const t of e)l.value.includes(t.id)&&(t.groupId=n,o.push(t));const i=e.findIndex((e=>e.id===o[o.length-1].id)),c=o.map((e=>e.id));e=e.filter((e=>!c.includes(e.id)));const d=i-o.length+1;e.splice(d,0,...o),t.updateSlide({elements:e}),u()},p=()=>{if(!a.value.length)return;const o=a.value.some((e=>e.groupId));if(!o)return;const i=JSON.parse(JSON.stringify(s.value.elements));for(const e of i)l.value.includes(e.id)&&e.groupId&&delete e.groupId;t.updateSlide({elements:i});const r=n.value?[n.value]:[];e.setActiveElementIdList(r),u()};return{canCombine:c,combineElements:d,uncombineElements:p}},wa=()=>{const e=R(),{activeElementIdList:t,activeElementList:l}=(0,o.Jk)(e),{pasteTextClipboardData:a}=ma(),{deleteElement:n}=ga(),i=()=>{if(!t.value.length)return;const a=pe(JSON.stringify({type:"elements",data:l.value}));me(a).then((()=>{e.setEditorareaFocus(!0)}))},s=()=>{i(),n()},r=()=>{he().then((e=>{a(e)})).catch((e=>ta.warning(e)))},u=()=>{i(),r()};return{copyElement:i,cutElement:s,pasteElement:r,quickCopyElement:u}},xa=()=>{const e=R(),{currentSlide:t}=(0,o.Jk)($()),{hiddenElementIdList:l}=(0,o.Jk)(e),a=()=>{const a=t.value.elements.filter((e=>!e.lock&&!l.value.includes(e.id))),n=a.map((e=>e.id));e.setActiveElementIdList(n)};return{selectAllElement:a}},ka=()=>{const e=$(),{activeElementIdList:t,activeGroupElementId:l}=(0,o.Jk)(R()),{currentSlide:a}=(0,o.Jk)(e),{addHistorySnapshot:n}=da(),i=(o,i=1)=>{let s=[];const r=e=>{let{left:t,top:l}=e;switch(o){case ne.LEFT:t-=i;break;case ne.RIGHT:t+=i;break;case ne.UP:l-=i;break;case ne.DOWN:l+=i;break;default:break}return{...e,left:t,top:l}};s=l.value?a.value.elements.map((e=>l.value===e.id?r(e):e)):a.value.elements.map((e=>t.value.includes(e.id)?r(e):e)),e.updateSlide({elements:s}),n()};return{moveElement:i}},ba=(l(541),()=>{const e=$(),{currentSlide:t}=(0,o.Jk)(e),{addHistorySnapshot:l}=da(),a=(e,t)=>({minLevel:e.findIndex((e=>e.id===t[0].id)),maxLevel:e.findIndex((e=>e.id===t[t.length-1].id))}),n=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter((e=>e.groupId===t.groupId)),{minLevel:o,maxLevel:i}=a(e,n);if(i===e.length-1)return;const s=l[i+1],r=l.splice(o,n.length);if(s.groupId){const e=l.filter((e=>e.groupId===s.groupId));l.splice(o+e.length,0,...r)}else l.splice(o+1,0,...r)}else{const a=e.findIndex((e=>e.id===t.id));if(a===e.length-1)return;const n=l[a+1],o=l.splice(a,1)[0];if(n.groupId){const e=l.filter((e=>e.groupId===n.groupId));l.splice(a+e.length,0,o)}else l.splice(a+1,0,o)}return l},i=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter((e=>e.groupId===t.groupId)),{minLevel:o}=a(e,n);if(0===o)return;const i=l[o-1],s=l.splice(o,n.length);if(i.groupId){const e=l.filter((e=>e.groupId===i.groupId));l.splice(o-e.length,0,...s)}else l.splice(o-1,0,...s)}else{const a=e.findIndex((e=>e.id===t.id));if(0===a)return;const n=l[a-1],o=l.splice(a,1)[0];if(n.groupId){const e=l.filter((e=>e.groupId===n.groupId));l.splice(a-e.length,0,o)}else l.splice(a-1,0,o)}return l},s=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter((e=>e.groupId===t.groupId)),{minLevel:o,maxLevel:i}=a(e,n);if(i===e.length-1)return null;const s=l.splice(o,n.length);l.push(...s)}else{const a=e.findIndex((e=>e.id===t.id));if(a===e.length-1)return null;l.splice(a,1),l.push(t)}return l},r=(e,t)=>{const l=JSON.parse(JSON.stringify(e));if(t.groupId){const n=l.filter((e=>e.groupId===t.groupId)),{minLevel:o}=a(e,n);if(0===o)return;const i=l.splice(o,n.length);l.unshift(...i)}else{const a=e.findIndex((e=>e.id===t.id));if(0===a)return;l.splice(a,1),l.unshift(t)}return l},u=(a,o)=>{let u;o===Q.UP?u=n(t.value.elements,a):o===Q.DOWN?u=i(t.value.elements,a):o===Q.TOP?u=s(t.value.elements,a):o===Q.BOTTOM&&(u=r(t.value.elements,a)),u&&(e.updateSlide({elements:u}),l())};return{orderElement:u}});const _a=()=>{const e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen()},Ia=()=>{document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()},Sa=()=>{const e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement;return!!e};var Ca=()=>{const e=X(),t=$(),l=()=>{_a(),e.setScreening(!0)},a=()=>{t.updateSlideIndex(0),l()},n=()=>{e.setScreening(!1),Sa()&&Ia()};return{enterScreening:l,enterScreeningFromStart:a,exitScreening:n}},La=()=>{const e=R(),{canvasPercentage:t,canvasScale:l,canvasDragged:a}=(0,o.Jk)(e),n=(0,i.Fl)((()=>Math.round(100*l.value)+"%")),s=l=>{let a=t.value;const n=5,o=200,i=30;"+"===l&&a<=o&&(a+=n),"-"===l&&a>=i&&(a-=n),e.setCanvasPercentage(a)},r=a=>{const n=Math.round(a/l.value*t.value)/100;e.setCanvasPercentage(n)},u=()=>{e.setCanvasPercentage(90),a&&e.setCanvasDragged(!1)};return{canvasScalePercentage:n,setCanvasScalePercentage:r,scaleCanvas:s,resetCanvas:u}},Ta=()=>{const e=R(),t=q(),{activeElementIdList:l,disableHotkeys:a,handleElement:n,handleElementId:s,editorAreaFocus:r,thumbnailsFocus:u,showSearchPanel:c}=(0,o.Jk)(e),{currentSlide:d}=(0,o.Jk)($()),{ctrlKeyState:p,shiftKeyState:v,spaceKeyState:m}=(0,o.Jk)(t),{updateSlideIndex:h,copySlide:f,createSlide:g,deleteSlide:y,cutSlide:w,copyAndPasteSlide:x,selectAllSlide:k}=ha(),{combineElements:b,uncombineElements:_}=ya(),{deleteElement:I}=ga(),{lockElement:S}=fa(),{copyElement:C,cutElement:L,quickCopyElement:T}=wa(),{selectAllElement:E}=xa(),{moveElement:M}=ka(),{orderElement:U}=ba(),{redo:W,undo:D}=da(),{enterScreening:H,enterScreeningFromStart:F}=Ca(),{scaleCanvas:A,resetCanvas:Z}=La(),O=()=>{l.value.length?C():u.value&&f()},z=()=>{l.value.length?L():u.value&&w()},P=()=>{l.value.length?T():u.value&&x()},B=()=>{r.value&&E(),u.value&&k()},N=()=>{r.value&&S()},j=()=>{r.value&&b()},Y=()=>{r.value&&_()},V=()=>{l.value.length?I():u.value&&y()},J=e=>{l.value.length?M(e):e!==ne.UP&&e!==ne.DOWN||h(e)},X=e=>{e===ne.PAGEUP?h(ne.UP):e===ne.PAGEDOWN&&h(ne.DOWN)},G=e=>{n.value&&U(n.value,e)},K=()=>{u.value&&g()},ee=()=>{if(!d.value.elements.length)return;if(!s.value){const t=d.value.elements[0];return void e.setActiveElementIdList([t.id])}const t=d.value.elements.findIndex((e=>e.id===s.value)),l=t>=d.value.elements.length-1?0:t+1,a=d.value.elements[l].id;e.setActiveElementIdList([a])},te=l=>{const{ctrlKey:n,shiftKey:o,altKey:i,metaKey:s}=l,d=n||s,m=l.key.toUpperCase();if(d&&!p.value&&t.setCtrlKeyState(!0),o&&!v.value&&t.setShiftKeyState(!0),a.value||m!==ne.SPACE||t.setSpaceKeyState(!0),d&&m===ne.P)return l.preventDefault(),void e.setDialogForExport("pdf");if(o&&m===ne.F5)return l.preventDefault(),H(),void t.setShiftKeyState(!1);if(m===ne.F5)return l.preventDefault(),void F();if(n&&m===ne.F)return l.preventDefault(),void e.setSearchPanelState(!c.value);if(r.value||u.value){if(d&&m===ne.C){if(a.value)return;l.preventDefault(),O()}if(d&&m===ne.X){if(a.value)return;l.preventDefault(),z()}if(d&&m===ne.D){if(a.value)return;l.preventDefault(),P()}if(d&&m===ne.Z){if(a.value)return;l.preventDefault(),D()}if(d&&m===ne.Y){if(a.value)return;l.preventDefault(),W()}if(d&&m===ne.A){if(a.value)return;l.preventDefault(),B()}if(d&&m===ne.L){if(a.value)return;l.preventDefault(),N()}if(!o&&d&&m===ne.G){if(a.value)return;l.preventDefault(),j()}if(o&&d&&m===ne.G){if(a.value)return;l.preventDefault(),Y()}if(i&&m===ne.F){if(a.value)return;l.preventDefault(),G(Q.TOP)}if(i&&m===ne.B){if(a.value)return;l.preventDefault(),G(Q.BOTTOM)}if(m===ne.DELETE||m===ne.BACKSPACE){if(a.value)return;l.preventDefault(),V()}if(m===ne.UP){if(a.value)return;l.preventDefault(),J(ne.UP)}if(m===ne.DOWN){if(a.value)return;l.preventDefault(),J(ne.DOWN)}if(m===ne.LEFT){if(a.value)return;l.preventDefault(),J(ne.LEFT)}if(m===ne.RIGHT){if(a.value)return;l.preventDefault(),J(ne.RIGHT)}if(m===ne.PAGEUP){if(a.value)return;l.preventDefault(),X(ne.PAGEUP)}if(m===ne.PAGEDOWN){if(a.value)return;l.preventDefault(),X(ne.PAGEDOWN)}if(m===ne.ENTER){if(a.value)return;l.preventDefault(),K()}if(m===ne.MINUS){if(a.value)return;l.preventDefault(),A("-")}if(m===ne.EQUAL){if(a.value)return;l.preventDefault(),A("+")}if(m===ne.DIGIT_0){if(a.value)return;l.preventDefault(),Z()}if(m===ne.TAB){if(a.value)return;l.preventDefault(),ee()}}},le=()=>{p.value&&t.setCtrlKeyState(!1),v.value&&t.setShiftKeyState(!1),m.value&&t.setSpaceKeyState(!1)};(0,i.bv)((()=>{document.addEventListener("keydown",te),document.addEventListener("keyup",le),window.addEventListener("blur",le)})),(0,i.Ah)((()=>{document.removeEventListener("keydown",te),document.removeEventListener("keyup",le),window.removeEventListener("blur",le)}))},Ea=()=>{const{editorAreaFocus:e,thumbnailsFocus:t,disableHotkeys:l}=(0,o.Jk)(R()),{pasteTextClipboardData:a}=ma(),{createImageElement:n}=pa(),s=e=>{na(e).then((e=>n(e)))},r=n=>{if(!e.value&&!t.value)return;if(l.value)return;if(!n.clipboardData)return;const o=n.clipboardData.items,i=o[0];if(i){for(const e of o)if("file"===e.kind&&-1!==e.type.indexOf("image")){const t=e.getAsFile();return void(t&&s(t))}"string"===i.kind&&"text/plain"===i.type&&i.getAsString((e=>a(e)))}};(0,i.bv)((()=>{document.addEventListener("paste",r)})),(0,i.Ah)((()=>{document.removeEventListener("paste",r)}))},Ma=l(7536),Ua=()=>{const e=$(),{theme:t}=(0,o.Jk)($()),{addSlidesFromData:l,isEmptySlide:a}=va(),n=(0,s.iH)(!1),i=(t,n=!1)=>{const o=t[0],i=new FileReader;i.addEventListener("load",(()=>{try{const t=JSON.parse(ve(i.result));n||a.value?e.setSlides(t):l(t)}catch{ta.error("无法正确读取 / 解析该文件")}})),i.readAsText(o)},u=e=>{let t=[0,0],l=[0,0];return e.isFlipV||e.isFlipH?e.isFlipV&&e.isFlipH?(t=[e.width,e.height],l=[0,0]):e.isFlipV&&!e.isFlipH?(t=[0,e.height],l=[e.width,0]):(t=[e.width,0],l=[0,e.height]):(t=[0,0],l=[e.width,e.height]),{type:"line",id:(0,r.x0)(10),width:e.borderWidth||1,left:e.left,top:e.top,start:t,end:l,style:"solid"===e.borderType?"solid":"dashed",color:e.borderColor,points:["","straightConnector1"===e.shapType?"arrow":""]}},c=o=>{const i=o[0];if(!i)return;n.value=!0;const s=[];for(const e of ua)s.push(...e.children);const c=new FileReader;c.onload=async o=>{const i=await(0,Ma.Q)(o.target.result,{slideFactor:75/914400,fontsizeFactor:100/98}),c=i.size.width,d=oa/c,p=[];for(const e of i.slides){const{type:l,value:a}=e.fill;let n;n="image"===l?{type:"image",image:a.picBase64,imageSize:"cover"}:"gradient"===l?{type:"gradient",gradientType:"linear",gradientColor:[a.colors[0].color,a.colors[a.colors.length-1].color],gradientRotate:a.rot}:{type:"solid",color:a};const o={id:(0,r.x0)(10),elements:[],background:n},i=e=>{for(const l of e)if(l.width=l.width*d,l.height=l.height*d,l.left=l.left*d,l.top=l.top*d,"text"===l.type){const e={type:"text",id:(0,r.x0)(10),width:l.width,height:l.height,left:l.left,top:l.top,rotate:l.rotate,defaultFontName:t.value.fontName,defaultColor:t.value.fontColor,content:l.content,lineHeight:1,outline:{color:l.borderColor,width:l.borderWidth,style:"solid"===l.borderType?"solid":"dashed"},fill:l.fillColor,vertical:l.isVertical};l.shadow&&(e.shadow=l.shadow),o.elements.push(e)}else if("image"===l.type)o.elements.push({type:"image",id:(0,r.x0)(10),src:l.src,width:l.width,height:l.height,left:l.left,top:l.top,fixedRatio:!0,rotate:l.rotate});else if("audio"===l.type)o.elements.push({type:"audio",id:(0,r.x0)(10),src:l.blob,width:l.width,height:l.height,left:l.left,top:l.top,rotate:0,fixedRatio:!1,color:t.value.themeColor,loop:!1,autoplay:!1});else if("video"===l.type)o.elements.push({type:"video",id:(0,r.x0)(10),src:l.blob||l.src,width:l.width,height:l.height,left:l.left,top:l.top,rotate:0,autoplay:!1});else if("shape"===l.type)if("line"===l.shapType||/Connector/.test(l.shapType)){const e=u(l);o.elements.push(e)}else{const e=s.find((e=>e.pptxShapeType===l.shapType)),a={mid:"middle",down:"bottom",up:"top"},n={type:"shape",id:(0,r.x0)(10),width:l.width,height:l.height,left:l.left,top:l.top,viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z",fill:l.fillColor||"none",fixedRatio:!1,rotate:l.rotate,outline:{color:l.borderColor,width:l.borderWidth,style:"solid"===l.borderType?"solid":"dashed"},text:{content:l.content,defaultFontName:t.value.fontName,defaultColor:t.value.fontColor,align:a[l.vAlign]||"middle"},flipH:l.isFlipH,flipV:l.isFlipV};if(l.shadow&&(n.shadow=l.shadow),e&&(n.path=e.path,n.viewBox=e.viewBox,e.pathFormula)){n.pathFormula=e.pathFormula,n.viewBox=[l.width,l.height];const t=ra[e.pathFormula];"editable"in t?(n.path=t.formula(l.width,l.height,t.defaultValue),n.keypoint=t.defaultValue):n.path=t.formula(l.width,l.height)}"custom"===l.shapType&&(n.special=!0,n.path=l.path,n.viewBox=[l.width,l.height]),o.elements.push(n)}else if("table"===l.type){const e=l.data.length,a=l.data[0].length,n={fontname:t.value.fontName,color:t.value.fontColor},i=[];for(let t=0;te+"")),a=["系列1"],n=[t[1]]}else{const t=l.data;e=Object.values(t[0].xlabels),a=t.map((e=>e.key)),n=t.map((e=>e.values.map((e=>e.y))))}const i={};let s="bar";switch(l.chartType){case"barChart":case"bar3DChart":s="bar","bar"===l.barDir&&(i.horizontalBars=!0),"stacked"!==l.grouping&&"percentStacked"!==l.grouping||(i.stackBars=!0);break;case"lineChart":case"line3DChart":case"areaChart":case"area3DChart":case"scatterChart":case"bubbleChart":s="line","areaChart"!==l.chartType&&"area3DChart"!==l.chartType||(i.showArea=!0),"scatterChart"!==l.chartType&&"bubbleChart"!==l.chartType||(i.showLine=!1);break;case"pieChart":case"pie3DChart":case"doughnutChart":s="pie","doughnutChart"===l.chartType&&(i.donut=!0);break;default:}o.elements.push({type:"chart",id:(0,r.x0)(10),chartType:s,width:l.width,height:l.height,left:l.left,top:l.top,rotate:0,themeColor:[t.value.themeColor],gridColor:t.value.fontColor,data:{labels:e,legends:a,series:n},options:i})}else if("group"===l.type||"diagram"===l.type){const e=l.elements.map((e=>({...e,left:e.left+l.left,top:e.top+l.top})));i(e)}};i(e.elements),p.push(o)}a.value?e.setSlides(p):l(p),n.value=!1},c.readAsArrayBuffer(i)};return{importSpecificFile:i,importPPTXFile:c,exporting:n}};const Wa={class:"hotkey-doc"},Da={class:"title"},Ha={class:"label"},Fa={class:"value"};var Aa=(0,i.aZ)({__name:"HotkeyDoc",setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Wa,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(ie),(e=>((0,i.wg)(),(0,i.iD)(i.HY,{key:e.type},[(0,i._)("div",Da,(0,oe.zw)(e.type),1),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.children,(e=>((0,i.wg)(),(0,i.iD)("div",{class:"hotkey-item",key:e.label},[(0,i._)("div",Ha,(0,oe.zw)(e.label),1),(0,i._)("div",Fa,(0,oe.zw)(e.value),1)])))),128))],64)))),128))]))}});const $a=(0,Vl.Z)(Aa,[["__scopeId","data-v-a0322054"]]);var Za=$a;const Oa=["accept"];var Ra=(0,i.aZ)({__name:"FileInput",props:{accept:{default:"image/*"}},emits:["change"],setup(e,{emit:t}){const l=t,a=(0,s.iH)(),n=()=>{a.value&&(a.value.value="",a.value.click())},o=e=>{const t=e.target.files;t&&l("change",t)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"file-input",onClick:t[1]||(t[1]=e=>n())},[(0,i.WI)(e.$slots,"default"),(0,i._)("input",{class:"input",type:"file",name:"upload",ref_key:"inputRef",ref:a,accept:e.accept,onChange:t[0]||(t[0]=e=>o(e))},null,40,Oa)]))}});const za=(0,Vl.Z)(Ra,[["__scopeId","data-v-64bedb34"]]);var Pa=za;const Ba=e=>((0,i.dD)("data-v-a5c6b41c"),e=e(),(0,i.Cn)(),e),Na={key:0,class:"fullscreen-spin"},ja={class:"spin"},Ya=Ba((()=>(0,i._)("div",{class:"spinner"},null,-1))),Va={class:"text"};var Ja=(0,i.aZ)({__name:"FullscreenSpin",props:{loading:{type:Boolean,default:!1},tip:{default:""}},setup(e){return(e,t)=>e.loading?((0,i.wg)(),(0,i.iD)("div",Na,[(0,i._)("div",ja,[Ya,(0,i._)("div",Va,(0,oe.zw)(e.tip),1)])])):(0,i.kq)("",!0)}});const qa=(0,Vl.Z)(Ja,[["__scopeId","data-v-a5c6b41c"]]);var Xa=qa;const Ga={class:"header"};var Ka=(0,i.aZ)({__name:"Drawer",props:{visible:{type:Boolean},width:{default:320},contentStyle:{},placement:{default:"right"}},emits:["update:visible"],setup(e,{emit:t}){const l=e,a=t,o=(0,s.iH)(!1),r=(0,i.Fl)((()=>({width:l.width+"px",...l.contentStyle||{}})));return(e,t)=>{const s=(0,i.up)("IconClose");return(0,i.wg)(),(0,i.j4)(i.lR,{to:"body"},[(0,i.Wm)(n.uT,{name:`drawer-slide-${e.placement}`,onAfterLeave:t[1]||(t[1]=e=>o.value=!1),onBeforeEnter:t[2]||(t[2]=e=>o.value=!0)},{default:(0,i.w5)((()=>[(0,i.wy)((0,i._)("div",{class:(0,oe.C_)(["drawer",e.placement]),style:(0,oe.j5)({width:l.width+"px"})},[(0,i._)("div",Ga,[(0,i.WI)(e.$slots,"title"),(0,i._)("span",{class:"close-btn",onClick:t[0]||(t[0]=e=>a("update:visible",!1))},[(0,i.Wm)(s)])]),o.value?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"content",style:(0,oe.j5)(r.value)},[(0,i.WI)(e.$slots,"default")],4)):(0,i.kq)("",!0)],6),[[n.F8,e.visible]])])),_:3},8,["name"])])}}});const Qa=(0,Vl.Z)(Ka,[["__scopeId","data-v-749dadac"]]);var en=Qa;const tn={class:"prefix"},ln=["disabled","value","placeholder"],an={class:"suffix"};var nn=(0,i.aZ)({__name:"Input",props:{value:{},disabled:{type:Boolean,default:!1},placeholder:{default:""}},emits:["update:value","input","change","blur","focus","enter"],setup(e,{expose:t,emit:l}){const a=l,o=(0,s.iH)(!1),r=e=>{a("update:value",e.target.value)},u=e=>{o.value=!1,a("blur",e)},c=e=>{o.value=!0,a("focus",e)},d=(0,s.iH)(),p=()=>{d.value&&d.value.focus()};return t({focus:p}),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["input",{disabled:e.disabled,focused:o.value}])},[(0,i._)("span",tn,[(0,i.WI)(e.$slots,"prefix")]),(0,i._)("input",{type:"text",ref_key:"inputRef",ref:d,disabled:e.disabled,value:e.value,placeholder:e.placeholder,onInput:t[0]||(t[0]=e=>r(e)),onFocus:t[1]||(t[1]=e=>c(e)),onBlur:t[2]||(t[2]=e=>u(e)),onChange:t[3]||(t[3]=e=>a("change",e)),onKeydown:t[4]||(t[4]=(0,n.D2)((e=>a("enter",e)),["enter"]))},null,40,ln),(0,i._)("span",an,[(0,i.WI)(e.$slots,"suffix")])],2))}});const on=(0,Vl.Z)(nn,[["__scopeId","data-v-a97ba0dc"]]);var sn=on,rn=l(6488),un=(l(8627),(0,i.aZ)({__name:"Popover",props:{value:{type:Boolean,default:!1},trigger:{default:"click"},placement:{default:"bottom"},appendTo:{},contentStyle:{},center:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e,a=t,n=(0,s.iH)(),o=(0,s.iH)(),r=(0,s.iH)(),u=(0,s.iH)(!1),c=(0,i.Fl)((()=>l.contentStyle||{}));return(0,i.YP)((()=>l.value),(()=>{n.value&&(l.value?n.value.show():n.value.hide())})),(0,i.bv)((()=>{n.value=(0,rn.ZP)(o.value,{content:r.value,allowHTML:!0,trigger:l.trigger,placement:l.placement,interactive:!0,appendTo:l.appendTo||document.body,maxWidth:"none",offset:[0,8],duration:200,animation:"scale",theme:"popover",onShow(){u.value=!0},onShown(){l.value||a("update:value",!0)},onHidden(){l.value&&a("update:value",!1),u.value=!1}})})),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["popover",{center:e.center}]),ref_key:"triggerRef",ref:o},[(0,i._)("div",{class:"popover-content",style:(0,oe.j5)(c.value),ref_key:"contentRef",ref:r},[u.value?(0,i.WI)(e.$slots,"content",{key:0}):(0,i.kq)("",!0)],4),(0,i.WI)(e.$slots,"default")],2))}}));const cn=(0,Vl.Z)(un,[["__scopeId","data-v-70fabe9a"]]);var dn=cn,pn=(0,i.aZ)({__name:"PopoverMenuItem",props:{center:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:t}){const l=t;return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["popover-menu-item",{center:e.center}]),onClick:t[0]||(t[0]=e=>l("click"))},[(0,i.WI)(e.$slots,"default")],2))}});const vn=(0,Vl.Z)(pn,[["__scopeId","data-v-2f137c4f"]]);var mn=vn;const hn={class:"editor-header"},fn={class:"left"},gn={class:"menu-item"},yn={class:"title"},wn=["title"],xn={class:"right"},kn={class:"group-menu-item"},bn={class:"arrow-btn"},_n={class:"github-link",href:"https://github.com/pipipi-pikachu/PPTist",target:"_blank"},In={class:"menu-item"};var Sn=(0,i.aZ)({__name:"index",setup(e){const t=R(),l=$(),{title:a}=(0,o.Jk)(l),{enterScreening:n,enterScreeningFromStart:r}=Ca(),{importSpecificFile:u,importPPTXFile:c,exporting:d}=Ua(),{resetSlides:p}=ha(),v=(0,s.iH)(!1),m=(0,s.iH)(!1),h=(0,s.iH)(!1),f=(0,s.iH)(),g=(0,s.iH)(""),y=()=>{g.value=a.value,h.value=!0,(0,i.Y3)((()=>f.value?.focus()))},w=()=>{l.setTitle(g.value),h.value=!1},x=e=>{window.open(e),v.value=!1},k=e=>{t.setDialogForExport(e),v.value=!1};return(e,t)=>{const l=(0,i.up)("IconHamburgerButton"),o=(0,i.up)("IconPpt"),b=(0,i.up)("IconDown"),_=(0,i.up)("IconDownload"),I=(0,i.up)("IconGithub"),S=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",hn,[(0,i._)("div",fn,[(0,i.Wm)(dn,{trigger:"click",placement:"bottom-start",value:v.value,"onUpdate:value":t[7]||(t[7]=e=>v.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(Pa,{accept:".pptist",onChange:t[0]||(t[0]=e=>{(0,s.SU)(u)(e),v.value=!1})},{default:(0,i.w5)((()=>[(0,i.Wm)(mn,null,{default:(0,i.w5)((()=>[(0,i.Uk)("导入 pptist 文件")])),_:1})])),_:1}),(0,i.Wm)(Pa,{accept:"application/vnd.openxmlformats-officedocument.presentationml.presentation",onChange:t[1]||(t[1]=e=>{(0,s.SU)(c)(e),v.value=!1})},{default:(0,i.w5)((()=>[(0,i.Wm)(mn,null,{default:(0,i.w5)((()=>[(0,i.Uk)("导入 pptx 文件(测试版)")])),_:1})])),_:1}),(0,i.Wm)(mn,{onClick:t[2]||(t[2]=e=>k("pptx"))},{default:(0,i.w5)((()=>[(0,i.Uk)("导出文件")])),_:1}),(0,i.Wm)(mn,{onClick:t[3]||(t[3]=e=>{(0,s.SU)(p)(),v.value=!1})},{default:(0,i.w5)((()=>[(0,i.Uk)("重置幻灯片")])),_:1}),(0,i.Wm)(mn,{onClick:t[4]||(t[4]=e=>x("https://github.com/pipipi-pikachu/PPTist/issues"))},{default:(0,i.w5)((()=>[(0,i.Uk)("意见反馈")])),_:1}),(0,i.Wm)(mn,{onClick:t[5]||(t[5]=e=>x("https://github.com/pipipi-pikachu/PPTist/blob/master/doc/Q&A.md"))},{default:(0,i.w5)((()=>[(0,i.Uk)("常见问题")])),_:1}),(0,i.Wm)(mn,{onClick:t[6]||(t[6]=e=>{v.value=!1,m.value=!0})},{default:(0,i.w5)((()=>[(0,i.Uk)("快捷键")])),_:1})])),default:(0,i.w5)((()=>[(0,i._)("div",gn,[(0,i.Wm)(l,{class:"icon"})])])),_:1},8,["value"]),(0,i._)("div",yn,[h.value?((0,i.wg)(),(0,i.j4)(sn,{key:0,class:"title-input",ref_key:"titleInputRef",ref:f,value:g.value,"onUpdate:value":t[8]||(t[8]=e=>g.value=e),onBlur:t[9]||(t[9]=e=>w())},null,8,["value"])):((0,i.wg)(),(0,i.iD)("div",{key:1,class:"title-text",onClick:t[10]||(t[10]=e=>y()),title:(0,s.SU)(a)},(0,oe.zw)((0,s.SU)(a)),9,wn))])]),(0,i._)("div",xn,[(0,i._)("div",kn,[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"menu-item",onClick:t[11]||(t[11]=e=>(0,s.SU)(n)())},[(0,i.Wm)(o,{class:"icon"})])),[[S,"幻灯片放映"]]),(0,i.Wm)(dn,{trigger:"click",center:""},{content:(0,i.w5)((()=>[(0,i.Wm)(mn,{onClick:t[12]||(t[12]=e=>(0,s.SU)(r)())},{default:(0,i.w5)((()=>[(0,i.Uk)("从头开始")])),_:1}),(0,i.Wm)(mn,{onClick:t[13]||(t[13]=e=>(0,s.SU)(n)())},{default:(0,i.w5)((()=>[(0,i.Uk)("从当前页开始")])),_:1})])),default:(0,i.w5)((()=>[(0,i._)("div",bn,[(0,i.Wm)(b,{class:"arrow"})])])),_:1})]),(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"menu-item",onClick:t[14]||(t[14]=e=>k("pptx"))},[(0,i.Wm)(_,{class:"icon"})])),[[S,"导出"]]),(0,i._)("a",_n,[(0,i._)("div",In,[(0,i.Wm)(I,{class:"icon"})])])]),(0,i.Wm)(en,{width:320,visible:m.value,"onUpdate:visible":t[15]||(t[15]=e=>m.value=e),placement:"right"},{default:(0,i.w5)((()=>[(0,i.Wm)(Za)])),_:1},8,["visible"]),(0,i.Wm)(Xa,{loading:(0,s.SU)(d),tip:"正在导入..."},null,8,["loading"])])}}});const Cn=(0,Vl.Z)(Sn,[["__scopeId","data-v-0b9f8c7b"]]);var Ln=Cn;const Tn=Symbol(),En=Symbol(),Mn=Symbol(),Un=()=>{const e=window.getSelection();e&&e.removeAllRanges()};var Wn=e=>{const t=(0,s.iH)(0),l=(0,s.iH)(0),a=R(),{canvasPercentage:n,canvasDragged:r}=(0,o.Jk)(a),{viewportRatio:u}=(0,o.Jk)($()),c=()=>{if(!e.value)return;const o=e.value.clientWidth,i=e.value.clientHeight;if(i/o>u.value){const e=o*(n.value/100);a.setCanvasScale(e/oa),t.value=(o-e)/2,l.value=(i-e*u.value)/2}else{const e=i*(n.value/100);a.setCanvasScale(e/(oa*u.value)),t.value=(o-e/u.value)/2,l.value=(i-e)/2}},d=(n,o)=>{if(!e.value)return;const i=e.value.clientWidth,s=e.value.clientHeight,r=i*(n/100),c=i*(o/100),d=s*(n/100),p=s*(o/100);s/i>u.value?a.setCanvasScale(r/oa):a.setCanvasScale(d/(oa*u.value)),t.value=t.value-(r-c)/2,l.value=l.value-(d-p)/2};(0,i.YP)(n,d),(0,i.YP)(u,c),(0,i.YP)(r,(()=>{r.value||c()}));const p=(0,i.Fl)((()=>({width:oa,height:oa*u.value,left:t.value,top:l.value}))),v=new ResizeObserver(c);(0,i.bv)((()=>{e.value&&v.observe(e.value)})),(0,i.Ah)((()=>{e.value&&v.unobserve(e.value)}));const m=e=>{let n=!0;const o=e.pageX,i=e.pageY,s=t.value,r=l.value;document.onmousemove=e=>{if(!n)return;const a=e.pageX,u=e.pageY;t.value=s+(a-o),l.value=r+(u-i)},document.onmouseup=()=>{n=!1,document.onmousemove=null,document.onmouseup=null,a.setCanvasDragged(!0)}};return{viewportStyles:p,dragViewport:m}},Dn=(e,t)=>{const l=R(),{canvasScale:a,hiddenElementIdList:n}=(0,o.Jk)(l),i=(0,s.iH)(!1),r=(0,s.iH)(1),u=(0,s.iH)({top:0,left:0,width:0,height:0}),c=o=>{if(!t.value)return;let s=!0;const c=t.value.getBoundingClientRect(),d=5,p=o.pageX,v=o.pageY,m=(p-c.x)/a.value,h=(v-c.y)/a.value;u.value={top:h,left:m,width:0,height:0},i.value=!1,r.value=4,document.onmousemove=e=>{if(!s)return;const t=e.pageX,l=e.pageY,n=(t-p)/a.value,o=(l-v)/a.value,c=Math.abs(n),m=Math.abs(o);if(c0&&o>0?h=4:n<0&&o<0?h=2:n>0&&o<0?h=1:n<0&&o>0&&(h=3),u.value={...u.value,width:c,height:m},i.value=!0,r.value=h},document.onmouseup=()=>{document.onmousemove=null,document.onmouseup=null,s=!1;let t=[];for(let l=0;lo&&pi&&mo-s&&pi-c&&mo&&pi-c&&mo-s&&pi&&m{if(l.groupId){const a=t.map((e=>e.id)),n=e.value.filter((e=>e.groupId===l.groupId));return n.every((e=>a.includes(e.id)))}return!0}));const a=t.map((e=>e.id));l.setActiveElementIdList(a),i.value=!1}};return{mouseSelection:u,mouseSelectionVisible:i,mouseSelectionQuadrant:r,updateMouseSelection:c}},Hn=e=>{const{disableHotkeys:t}=(0,o.Jk)(R()),{createImageElement:l,createTextElement:a}=pa(),n=e=>{if(!e.dataTransfer||0===e.dataTransfer.items.length)return;const n=e.dataTransfer.items[0];if("file"===n.kind&&-1!==n.type.indexOf("image")){const e=n.getAsFile();e&&na(e).then((e=>l(e)))}else"string"===n.kind&&"text/plain"===n.type&&n.getAsString((e=>{if(t.value)return;const l=la(e);a({left:0,top:0,width:600,height:50},{content:l})}))};(0,i.bv)((()=>{e.value&&e.value.addEventListener("drop",n),document.ondragleave=e=>e.preventDefault(),document.ondrop=e=>e.preventDefault(),document.ondragenter=e=>e.preventDefault(),document.ondragover=e=>e.preventDefault()})),(0,i.Ah)((()=>{e.value&&e.value.removeEventListener("drop",n),document.ondragleave=null,document.ondrop=null,document.ondragenter=null,document.ondragover=null}))};const Fn=(e,t)=>{const l=Math.atan2(e,t),a=180/Math.PI*l;return a};var An=(e,t,l)=>{const a=$(),{addHistorySnapshot:n}=da(),o=(o,i)=>{const s=!(o instanceof MouseEvent);if(s&&(!o.changedTouches||!o.changedTouches[0]))return;let r=!0,u=0;const c=i.rotate||0,d=i.left,p=i.top,v=i.width,m=i.height,h=d+v/2,f=p+m/2;if(!t.value)return;const g=t.value.getBoundingClientRect(),y=t=>{if(!r)return;const a=t instanceof MouseEvent?t.pageX:t.changedTouches[0].pageX,n=t instanceof MouseEvent?t.pageY:t.changedTouches[0].pageY,o=(a-g.left)/l.value,s=(n-g.top)/l.value,c=o-h,d=f-s;u=Fn(c,d);const p=5;Math.abs(u)<=p?u=0:u>0&&Math.abs(u-45)<=p?u-=u-45:u<0&&Math.abs(u+45)<=p?u-=u+45:u>0&&Math.abs(u-90)<=p?u-=u-90:u<0&&Math.abs(u+90)<=p?u-=u+90:u>0&&Math.abs(u-135)<=p?u-=u-135:u<0&&Math.abs(u+135)<=p?u-=u+135:u>0&&Math.abs(u-180)<=p?u-=u-180:u<0&&Math.abs(u+180)<=p&&(u-=u+180),e.value=e.value.map((e=>i.id===e.id?{...e,rotate:u}:e))},w=()=>{r=!1,document.onmousemove=null,document.onmouseup=null,c!==u&&(a.updateSlide({elements:e.value}),n())};s?(document.ontouchmove=y,document.ontouchend=w):(document.onmousemove=y,document.onmouseup=w)};return{rotateElement:o}};const $n={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格",video:"视频",audio:"音频",latex:"公式"},Zn={text:20,image:20,shape:15,chart:200,table:20,video:250,audio:20,latex:20},On=(e,t)=>{const{left:l,top:a,width:n,height:o}=e,i=Math.sqrt(Math.pow(n,2)+Math.pow(o,2))/2,s=180*Math.atan(o/n)/Math.PI,r=(180-t-s)*Math.PI/180,u=(s-t)*Math.PI/180,c=(90-t)*Math.PI/180,d=t*Math.PI/180,p=n/2,v=o/2,m=l+p,h=a+v,f={left:m+i*Math.cos(r),top:h-i*Math.sin(r)},g={left:m+v*Math.cos(c),top:h-v*Math.sin(c)},y={left:m+i*Math.cos(u),top:h-i*Math.sin(u)},w={left:m+p*Math.cos(d),top:h+p*Math.sin(d)},x={left:m-i*Math.cos(r),top:h+i*Math.sin(r)},k={left:m-v*Math.sin(d),top:h+v*Math.cos(d)},b={left:m-i*Math.cos(u),top:h+i*Math.sin(u)},_={left:m-p*Math.cos(d),top:h-p*Math.sin(d)};return{leftTopPoint:f,topPoint:g,rightTopPoint:y,rightPoint:w,rightBottomPoint:x,bottomPoint:k,leftBottomPoint:b,leftPoint:_}},Rn=(e,t)=>{const l={[le.RIGHT_BOTTOM]:t.leftTopPoint,[le.LEFT_BOTTOM]:t.rightTopPoint,[le.LEFT_TOP]:t.rightBottomPoint,[le.RIGHT_TOP]:t.leftBottomPoint,[le.TOP]:t.bottomPoint,[le.BOTTOM]:t.topPoint,[le.LEFT]:t.rightPoint,[le.RIGHT]:t.leftPoint};return l[e]};var zn,Pn,Bn=(e,t,l)=>{const a=R(),n=$(),{activeElementIdList:i,activeGroupElementId:s}=(0,o.Jk)(a),{viewportRatio:r}=(0,o.Jk)(n),{ctrlOrShiftKeyActive:u}=(0,o.Jk)(q()),{addHistorySnapshot:c}=da(),d=(o,d,p)=>{const v=!(o instanceof MouseEvent);if(v&&(!o.changedTouches||!o.changedTouches[0]))return;let m=!0;a.setScalingState(!0);const h=d.left,f=d.top,g=d.width,y=d.height,w="table"===d.type?d.cellMinHeight:0,x="rotate"in d&&d.rotate?d.rotate:0,k=Math.PI*x/180,b=u.value||"fixedRatio"in d&&d.fixedRatio,_=g/y,I=v?o.changedTouches[0].pageX:o.pageX,S=v?o.changedTouches[0].pageY:o.pageY,C=Zn[d.type]||20,L=e=>e{const t=C/_;return e{const a=5,n=[];let o=!1,i=!1;const s={offsetX:0,offsetY:0};if(l||0===l)for(let t=0;t{if(!m)return;const a=t instanceof MouseEvent?t.pageX:t.changedTouches[0].pageX,n=t instanceof MouseEvent?t.pageY:t.changedTouches[0].pageY,o=a-I,i=n-S;let s=g,r=y,u=h,c=f;if(x){const e=(Math.cos(k)*o+Math.sin(k)*i)/l.value;let t=(Math.cos(k)*i-Math.sin(k)*o)/l.value;b&&(p!==le.RIGHT_BOTTOM&&p!==le.LEFT_TOP||(t=e/_),p!==le.LEFT_BOTTOM&&p!==le.RIGHT_TOP||(t=-e/_)),p===le.RIGHT_BOTTOM?(s=L(g+e),r=T(y+t)):p===le.LEFT_BOTTOM?(s=L(g-e),r=T(y+t),u=h-(s-g)):p===le.LEFT_TOP?(s=L(g-e),r=T(y-t),u=h-(s-g),c=f-(r-y)):p===le.RIGHT_TOP?(s=L(g+e),r=T(y-t),c=f-(r-y)):p===le.TOP?(r=L(y-t),c=f-(r-y)):p===le.BOTTOM?r=L(y+t):p===le.LEFT?(s=L(g-e),u=h-(s-g)):p===le.RIGHT&&(s=L(g+e));const a=On({width:s,height:r,left:u,top:c},x),n=Rn(p,a),d=n.left,v=n.top,m=d-M,w=v-U;u-=m,c-=w}else{let e=o/l.value,t=i/l.value;if(b&&(p!==le.RIGHT_BOTTOM&&p!==le.LEFT_TOP||(t=e/_),p!==le.LEFT_BOTTOM&&p!==le.RIGHT_TOP||(t=-e/_)),p===le.RIGHT_BOTTOM){const{offsetX:l,offsetY:a}=H(h+g+e,f+y+t);e-=l,t-=a,b&&(a?e=t*_:t=e/_),s=L(g+e),r=T(y+t)}else if(p===le.LEFT_BOTTOM){const{offsetX:l,offsetY:a}=H(h+e,f+y+t);e-=l,t-=a,b&&(a?e=-t*_:t=-e/_),s=L(g-e),r=T(y+t),u=h-(s-g)}else if(p===le.LEFT_TOP){const{offsetX:l,offsetY:a}=H(h+e,f+t);e-=l,t-=a,b&&(a?e=t*_:t=e/_),s=L(g-e),r=T(y-t),u=h-(s-g),c=f-(r-y)}else if(p===le.RIGHT_TOP){const{offsetX:l,offsetY:a}=H(h+g+e,f+t);e-=l,t-=a,b&&(a?e=-t*_:t=-e/_),s=L(g+e),r=T(y-t),c=f-(r-y)}else if(p===le.LEFT){const{offsetX:t}=H(h+e,null);e-=t,s=L(g-e),u=h-(s-g)}else if(p===le.RIGHT){const{offsetX:t}=H(h+g+e,null);e-=t,s=L(g+e)}else if(p===le.TOP){const{offsetY:e}=H(null,f+t);t-=e,r=L(y-t),c=f-(r-y)}else if(p===le.BOTTOM){const{offsetY:e}=H(null,f+y+t);t-=e,r=L(y+t)}}e.value=e.value.map((e=>{if(d.id!==e.id)return e;if("shape"===e.type&&"pathFormula"in e&&e.pathFormula){const t=ra[e.pathFormula];let l="";return l="editable"in t?t.formula(s,r,e.keypoint):t.formula(s,r),{...e,left:u,top:c,width:s,height:r,viewBox:[s,r],path:l}}if("table"===e.type){let t=w+(r-y)/e.data.length;return t=t<36?36:t,t===w?{...e,left:u,width:s}:{...e,left:u,top:c,width:s,height:r,cellMinHeight:t<36?36:t}}return{...e,left:u,top:c,width:s,height:r}}))},A=l=>{m=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null,t.value=[];const o=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,i=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY;I===o&&S===i||(n.updateSlide({elements:e.value}),a.setScalingState(!1),c())};v?(document.ontouchmove=F,document.ontouchend=A):(document.onmousemove=F,document.onmouseup=A)},p=(t,a,o)=>{let s=!0;const{minX:r,maxX:d,minY:p,maxY:v}=a,m=d-r,h=v-p,f=m/h,g=t.pageX,y=t.pageY,w=JSON.parse(JSON.stringify(e.value));document.onmousemove=t=>{if(!s)return;const a=t.pageX,n=t.pageY,c=(a-g)/l.value;let x=(n-y)/l.value;u.value&&(o!==le.RIGHT_BOTTOM&&o!==le.LEFT_TOP||(x=c/f),o!==le.LEFT_BOTTOM&&o!==le.RIGHT_TOP||(x=-c/f));let k=r,b=d,_=p,I=v;o===le.RIGHT_BOTTOM?(b=d+c,I=v+x):o===le.LEFT_BOTTOM?(k=r+c,I=v+x):o===le.LEFT_TOP?(k=r+c,_=p+x):o===le.RIGHT_TOP?(b=d+c,_=p+x):o===le.TOP?_=p+x:o===le.BOTTOM?I=v+x:o===le.LEFT?k=r+c:o===le.RIGHT&&(b=d+c);const S=b-k,C=I-_;let L=S/m,T=C/h;L<=0&&(L=0),T<=0&&(T=0),e.value=e.value.map((e=>{if(("image"===e.type||"shape"===e.type)&&i.value.includes(e.id)){const t=w.find((t=>t.id===e.id));return{...e,width:t.width*L,height:t.height*T,left:k+(t.left-r)*L,top:_+(t.top-p)*T}}return e}))},document.onmouseup=t=>{s=!1,document.onmousemove=null,document.onmouseup=null,g===t.pageX&&y===t.pageY||(n.updateSlide({elements:e.value}),c())}};return{scaleElement:d,scaleMultiElement:p}},Nn=(e,t)=>{const l=R(),{activeElementIdList:a,activeGroupElementId:n,handleElementId:i,editorAreaFocus:s}=(0,o.Jk)(l),{ctrlOrShiftKeyActive:r}=(0,o.Jk)(q()),u=(o,u,c=!0)=>{if(s.value||l.setEditorareaFocus(!0),a.value.includes(u.id)){if(r.value){let t=[];if(u.groupId){const l=[];e.value.forEach((e=>{e.groupId===u.groupId&&l.push(e.id)})),t=a.value.filter((e=>!l.includes(e)))}else t=a.value.filter((e=>e!==u.id));t.length>0&&l.setActiveElementIdList(t)}else if(i.value!==u.id)l.setHandleElementId(u.id);else if(n.value!==u.id){const e=o instanceof MouseEvent?o.pageX:o.changedTouches[0].pageX,t=o instanceof MouseEvent?o.pageY:o.changedTouches[0].pageY;o.target.onmouseup=a=>{const n=a.pageX,o=a.pageY;e===n&&t===o&&(l.setActiveGroupElementId(u.id),a.target.onmouseup=null)}}}else{let t=[];if(t=r.value?[...a.value,u.id]:[u.id],u.groupId){const l=[];e.value.forEach((e=>{e.groupId===u.groupId&&l.push(e.id)})),t=[...t,...l]}l.setActiveElementIdList((0,D.uniq)(t)),l.setHandleElementId(u.id)}c&&t(o,u)};return{selectElement:u}},jn=(e,t,l)=>{const a=$(),{activeElementIdList:n,activeGroupElementId:i}=(0,o.Jk)(R()),{shiftKeyState:s}=(0,o.Jk)(q()),{viewportRatio:r}=(0,o.Jk)(a),{addHistorySnapshot:u}=da(),c=(o,c)=>{const d=!(o instanceof MouseEvent);if(d&&(!o.changedTouches||!o.changedTouches[0]))return;if(!n.value.includes(c.id))return;let p=!0;const v=oa,m=oa*r.value,h=5,f=JSON.parse(JSON.stringify(e.value)),g=f.filter((e=>n.value.includes(e.id))),y=c.left,w=c.top,x=c.width,k="height"in c&&c.height?c.height:0,b="rotate"in c&&c.rotate?c.rotate:0,_=d?o.changedTouches[0].pageX:o.pageX,I=d?o.changedTouches[0].pageY:o.pageY;let S=null;const C=c.id===i.value;let L=[],T=[];for(const t of e.value){if("line"===t.type)continue;if(C&&t.id===c.id)continue;if(!C&&n.value.includes(t.id))continue;let e,l,a,o;if("rotate"in t&&t.rotate){const{xRange:n,yRange:i}=ye({left:t.left,top:t.top,width:t.width,height:t.height,rotate:t.rotate});e=n[0],l=i[0],a=n[1]-n[0],o=i[1]-i[0]}else e=t.left,l=t.top,a=t.width,o=t.height;const i=e+a,s=l+o,r=l+o/2,u=e+a/2,d={value:l,range:[e,i]},p={value:s,range:[e,i]},v={value:r,range:[e,i]},m={value:e,range:[l,s]},h={value:i,range:[l,s]},f={value:u,range:[l,s]};L.push(d,p,v),T.push(m,h,f)}const E={value:0,range:[0,v]},M={value:m,range:[0,v]},U={value:m/2,range:[0,v]},W={value:0,range:[0,m]},D={value:v,range:[0,m]},H={value:v/2,range:[0,m]};L.push(E,M,U),T.push(W,D,H),L=be(L),T=be(T);const F=a=>{const o=a instanceof MouseEvent?a.pageX:a.changedTouches[0].pageX,i=a instanceof MouseEvent?a.pageY:a.changedTouches[0].pageY;if(!1!==S&&(S=Math.abs(_-o)Math.abs(u)&&(u=0),Math.abs(r)e.id===c.id?{...e,left:E,top:M}:e));else{const t=e.value.find((e=>e.id===c.id));if(!t)return;e.value=e.value.map((e=>n.value.includes(e.id)?e.id===c.id?{...e,left:E,top:M}:{...e,left:e.left+(E-t.left),top:e.top+(M-t.top)}:e))}},A=l=>{p=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null,t.value=[];const n=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,o=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY;_===n&&I===o||(a.updateSlide({elements:e.value}),u())};d?(document.ontouchmove=F,document.ontouchend=A):(document.onmousemove=F,document.onmouseup=A)};return{dragElement:c}},Yn=e=>{const t=$(),{canvasScale:l}=(0,o.Jk)(R()),{ctrlOrShiftKeyActive:a}=(0,o.Jk)(q()),{addHistorySnapshot:n}=da(),i=(o,i,s)=>{let r=!0;const u=8,c=o.pageX,d=o.pageY,p=[];for(let t=0;t{if(!r)return;const n=t.pageX,o=t.pageY,v=(n-c)/l.value,m=(o-d)/l.value;let h=i.left+i.start[0],f=i.top+i.start[1],g=i.left+i.end[0],y=i.top+i.end[1];const w=i.broken||i.curve||[0,0];let x=i.left+w[0],k=i.top+w[1];const[b,_]=i.cubic||[[0,0],[0,0]];let I=i.left+b[0],S=i.top+b[1],C=i.left+_[0],L=i.top+_[1];if(s===ae.START){h+=v,f+=m,Math.abs(h-g)g&&(W[0]=M-T,D[0]=0),f>y&&(W[1]=U-E,D[1]=0),e.value=e.value.map((e=>{if(e.id===i.id){const t={...e,left:T,top:E,start:W,end:D};return s===ae.START||s===ae.END?a.value?(i.broken&&(t.broken=[x-T,k-E]),i.curve&&(t.curve=[x-T,k-E]),i.cubic&&(t.cubic=[[I-T,S-E],[C-T,L-E]])):(i.broken&&(t.broken=[(W[0]+D[0])/2,(W[1]+D[1])/2]),i.curve&&(t.curve=[(W[0]+D[0])/2,(W[1]+D[1])/2]),i.cubic&&(t.cubic=[[(W[0]+D[0])/2,(W[1]+D[1])/2],[(W[0]+D[0])/2,(W[1]+D[1])/2]])):s===ae.C?(i.broken&&(t.broken=[x-T,k-E]),i.curve&&(t.curve=[x-T,k-E])):i.cubic&&(t.cubic=[[I-T,S-E],[C-T,L-E]]),t}return e}))},document.onmouseup=l=>{r=!1,document.onmousemove=null,document.onmouseup=null;const a=l.pageX,o=l.pageY;c===a&&d===o||(t.updateSlide({elements:e.value}),n())}};return{dragLineElement:i}},Vn=(e,t)=>{const l=$(),{addHistorySnapshot:a}=da(),n=(n,o)=>{const i=!(n instanceof MouseEvent);if(i&&(!n.changedTouches||!n.changedTouches[0]))return;let s=!0;const r=i?n.changedTouches[0].pageX:n.pageX,u=i?n.changedTouches[0].pageY:n.pageY,c=ra[o.pathFormula];let d=null;if("editable"in c){const e=c.getBaseSize(o.width,o.height),t=e*o.keypoint,[l,a]=c.range,n=c.relative;d={baseSize:e,originPos:t,min:l,max:a,relative:n}}const p=l=>{if(!s)return;const a=l instanceof MouseEvent?l.pageX:l.changedTouches[0].pageX,n=l instanceof MouseEvent?l.pageY:l.changedTouches[0].pageY,i=(a-r)/t.value,p=(n-u)/t.value;e.value=e.value.map((e=>{if(e.id===o.id&&d){const{baseSize:t,originPos:l,min:a,max:n,relative:o}=d,s=e;let r=0;return"left"===o&&(r=(l+i)/t),"right"===o&&(r=(l-i)/t),"center"===o&&(r=(l-2*i)/t),"top"===o&&(r=(l+p)/t),"bottom"===o&&(r=(l-p)/t),rn&&(r=n),{...e,keypoint:r,path:c.formula(s.width,s.height,r)}}return e}))},v=t=>{s=!1,document.ontouchmove=null,document.ontouchend=null,document.onmousemove=null,document.onmouseup=null;const n=t instanceof MouseEvent?t.pageX:t.changedTouches[0].pageX,o=t instanceof MouseEvent?t.pageY:t.changedTouches[0].pageY;r===n&&u===o||(l.updateSlide({elements:e.value}),a())};i?(document.ontouchmove=p,document.ontouchend=v):(document.onmousemove=p,document.onmouseup=v)};return{moveShapeKeypoint:n}},Jn=e=>{const t=R(),{canvasScale:l,creatingElement:a}=(0,o.Jk)(t),n=t=>{const{start:a,end:n}=t;if(!e.value)return;const o=e.value.getBoundingClientRect(),[i,s]=a,[r,u]=n,c=Math.min(i,r),d=Math.max(i,r),p=Math.min(s,u),v=Math.max(s,u),m=(c-o.x)/l.value,h=(p-o.y)/l.value,f=(d-c)/l.value,g=(v-p)/l.value;return{left:m,top:h,width:f,height:g}},i=t=>{const{start:a,end:n}=t;if(!e.value)return;const o=e.value.getBoundingClientRect(),[i,s]=a,[r,u]=n,c=Math.min(i,r),d=Math.max(i,r),p=Math.min(s,u),v=Math.max(s,u),m=(c-o.x)/l.value,h=(p-o.y)/l.value,f=(d-c)/l.value,g=(v-p)/l.value,y=[i===c?0:f,s===p?0:g],w=[r===c?0:f,u===p?0:g];return{left:m,top:h,start:y,end:w}},{createTextElement:s,createShapeElement:r,createLineElement:u}=pa(),c=e=>{if(!a.value)return;const l=a.value.type;if("text"===l){const t=n(e);t&&s(t,{vertical:a.value.vertical})}else if("shape"===l){const t=n(e);t&&r(t,a.value.data)}else if("line"===l){const t=i(e);t&&u(t,a.value.data)}t.setCreatingElement(null)};return{formatCreateSelection:n,insertElementFromCreateSelection:c}},qn=()=>{const e=$(),{activeElementIdList:t,activeElementList:l}=(0,o.Jk)(R()),{currentSlide:a,viewportRatio:n}=(0,o.Jk)(e),{addHistorySnapshot:i}=da(),s=o=>{const s=oa,r=oa*n.value,{minX:u,maxX:c,minY:d,maxY:p}=ke(l.value),v=JSON.parse(JSON.stringify(a.value.elements));for(const e of v)if(t.value.includes(e.id)){if(o===ee.CENTER){const t=d+(p-d)/2-r/2,l=u+(c-u)/2-s/2;e.top=e.top-t,e.left=e.left-l}if(o===ee.TOP){const t=d-0;e.top=e.top-t}else if(o===ee.VERTICAL){const t=d+(p-d)/2-r/2;e.top=e.top-t}else if(o===ee.BOTTOM){const t=p-r;e.top=e.top-t}else if(o===ee.LEFT){const t=u-0;e.left=e.left-t}else if(o===ee.HORIZONTAL){const t=u+(c-u)/2-s/2;e.left=e.left-t}else if(o===ee.RIGHT){const t=c-s;e.left=e.left-t}}e.updateSlide({elements:v}),i()};return{alignElementToCanvas:s}},Xn=e=>{const t=(0,i.Fl)((()=>{if(e.value){const{h:t,v:l,blur:a,color:n}=e.value;return`${t}px ${l}px ${a}px ${n}`}return""}));return{shadowStyle:t}},Gn=(e,t)=>{const l=(0,i.Fl)((()=>{let l="";return e.value&&t.value?l="rotateX(180deg) rotateY(180deg)":t.value?l="rotateX(180deg)":e.value&&(l="rotateY(180deg)"),l}));return{flipStyle:l}};(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(zn||(zn={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(Pn||(Pn={}));const Kn={rect:{name:"矩形",type:zn.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:zn.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)",createPath:(e,t)=>`M 0 0 L ${.8*e} 0 L ${e} ${.2*t} L ${e} ${t} L 0 ${t} Z`},rect3:{name:"矩形3",type:zn.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)",createPath:(e,t)=>`M 0 0 L ${.8*e} 0 L ${e} ${.2*t} L ${e} ${t} L ${.2*e} ${t} L 0 ${.8*t} Z`},roundRect:{name:"圆角矩形",type:zn.RECT,radius:"10px",style:"inset(0 0 0 0 round 10px 10px 10px 10px)"},ellipse:{name:"圆形",type:zn.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:zn.POLYGON,style:"polygon(50% 0%, 0% 100%, 100% 100%)",createPath:(e,t)=>`M ${.5*e} 0 L 0 ${t} L ${e} ${t} Z`},triangle2:{name:"三角形2",type:zn.POLYGON,style:"polygon(50% 100%, 0% 0%, 100% 0%)",createPath:(e,t)=>`M ${.5*e} ${t} L 0 0 L ${e} 0 Z`},triangle3:{name:"三角形3",type:zn.POLYGON,style:"polygon(0% 0%, 0% 100%, 100% 100%)",createPath:(e,t)=>`M 0 0 L 0 ${t} L ${e} ${t} Z`},rhombus:{name:"菱形",type:zn.POLYGON,style:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)",createPath:(e,t)=>`M ${.5*e} 0 L ${e} ${.5*t} L ${.5*e} ${t} L 0 ${.5*t} Z`},pentagon:{name:"五边形",type:zn.POLYGON,style:"polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)",createPath:(e,t)=>`M ${.5*e} 0 L ${e} ${.38*t} L ${.82*e} ${t} L ${.18*e} ${t} L 0 ${.38*t} Z`},hexagon:{name:"六边形",type:zn.POLYGON,style:"polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)",createPath:(e,t)=>`M ${.2*e} 0 L ${.8*e} 0 L ${e} ${.5*t} L ${.8*e} ${t} L ${.2*e} ${t} L 0 ${.5*t} Z`},heptagon:{name:"七边形",type:zn.POLYGON,style:"polygon(50% 0%, 90% 20%, 100% 60%, 75% 100%, 25% 100%, 0% 60%, 10% 20%)",createPath:(e,t)=>`M ${.5*e} 0 L ${.9*e} ${.2*t} L ${e} ${.6*t} L ${.75*e} ${t} L ${.25*e} ${t} L 0 ${.6*t} L ${.1*e} ${.2*t} Z`},octagon:{name:"八边形",type:zn.POLYGON,style:"polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%)",createPath:(e,t)=>`M ${.3*e} 0 L ${.7*e} 0 L ${e} ${.3*t} L ${e} ${.7*t} L ${.7*e} ${t} L ${.3*e} ${t} L 0 ${.7*t} L 0 ${.3*t} Z`},chevron:{name:"V形",type:zn.POLYGON,style:"polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%)",createPath:(e,t)=>`M ${.75*e} 0 L ${e} ${.5*t} L ${.75*e} ${t} L 0 ${t} L ${.25*e} ${.5*t} L 0 0 Z`},point:{name:"点",type:zn.POLYGON,style:"polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%)",createPath:(e,t)=>`M 0 0 L ${.75*e} 0 L ${e} ${.5*t} L ${.75*e} ${t} L 0 ${t} Z`},arrow:{name:"箭头",type:zn.POLYGON,style:"polygon(0% 20%, 60% 20%, 60% 0%, 100% 50%, 60% 100%, 60% 80%, 0% 80%)",createPath:(e,t)=>`M 0 ${.2*t} L ${.6*e} ${.2*t} L ${.6*e} 0 L ${e} ${.5*t} L ${.6*e} ${t} L ${.6*e} ${.8*t} L 0 ${.8*t} Z`},parallelogram:{name:"平行四边形",type:zn.POLYGON,style:"polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)",createPath:(e,t)=>`M ${.3*e} 0 L ${e} 0 L ${.7*e} ${t} L 0 ${t} Z`},parallelogram2:{name:"平行四边形2",type:zn.POLYGON,style:"polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)",createPath:(e,t)=>`M ${.3*e} ${t} L ${e} ${t} L ${.7*e} 0 L 0 0 Z`},trapezoid:{name:"梯形",type:zn.POLYGON,style:"polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)",createPath:(e,t)=>`M ${.25*e} 0 L ${.75*e} 0 L ${e} ${t} L 0 ${t} Z`},trapezoid2:{name:"梯形2",type:zn.POLYGON,style:"polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)",createPath:(e,t)=>`M 0 0 L ${e} 0 L ${.75*e} ${t} L ${.25*e} ${t} Z`}};var Qn=e=>{const t=(0,i.Fl)((()=>{if(!e.value)return Kn.rect;const t=e.value.shape||zn.RECT;return Kn[t]})),l=(0,i.Fl)((()=>{if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};const[t,l]=e.value.range,a=(l[0]-t[0])/100,n=(l[1]-t[1])/100,o=t[0]/a,i=t[1]/n;return{left:-o+"%",top:-i+"%",width:100/a+"%",height:100/n+"%"}}));return{clipShape:t,imgPosition:l}},eo=e=>{const t=(0,i.Fl)((()=>{if(!e.value)return"";let t="";const l=Object.keys(e.value);for(const a of l)t+=`${a}(${e.value[a]}) `;return t}));return{filter:t}},to=e=>{const t=(0,i.Fl)((()=>e.value?.width??0)),l=(0,i.Fl)((()=>e.value?.style||"solid")),a=(0,i.Fl)((()=>e.value?.color||"#d14424")),n=(0,i.Fl)((()=>{if("dashed"!==l.value)return"0 0";const e=t.value;return e<=6?`${4.5*e} ${2*e}`:`${4*e} ${1.5*e}`}));return{outlineWidth:t,outlineStyle:l,outlineColor:a,strokeDashArray:n}};const lo=["width","height"],ao=["rx","ry","width","height","stroke","stroke-width","stroke-dasharray"];var no=(0,i.aZ)({__name:"ImageRectOutline",props:{width:{},height:{},outline:{},radius:{default:"0"}},setup(e){const t=e,{outlineWidth:l,outlineColor:a,strokeDashArray:n}=to((0,s.Vh)(t,"outline"));return(e,t)=>e.outline?((0,i.wg)(),(0,i.iD)("svg",{key:0,class:"image-rect-outline",overflow:"visible",width:e.width,height:e.height},[(0,i._)("rect",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",rx:e.radius,ry:e.radius,width:e.width,height:e.height,stroke:(0,s.SU)(a),"stroke-width":(0,s.SU)(l),"stroke-dasharray":(0,s.SU)(n)},null,8,ao)],8,lo)):(0,i.kq)("",!0)}});const oo=(0,Vl.Z)(no,[["__scopeId","data-v-35e36256"]]);var io=oo;const so=["width","height"],ro=["cx","cy","rx","ry","stroke","stroke-width","stroke-dasharray"];var uo=(0,i.aZ)({__name:"ImageEllipseOutline",props:{width:{},height:{},outline:{}},setup(e){const t=e,{outlineWidth:l,outlineColor:a,strokeDashArray:n}=to((0,s.Vh)(t,"outline"));return(e,t)=>e.outline?((0,i.wg)(),(0,i.iD)("svg",{key:0,class:"image-ellipse-outline",overflow:"visible",width:e.width,height:e.height},[(0,i._)("ellipse",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",cx:e.width/2,cy:e.height/2,rx:e.width/2,ry:e.height/2,stroke:(0,s.SU)(a),"stroke-width":(0,s.SU)(l),"stroke-dasharray":(0,s.SU)(n)},null,8,ro)],8,so)):(0,i.kq)("",!0)}});const co=(0,Vl.Z)(uo,[["__scopeId","data-v-11836cf8"]]);var po=co;const vo=["width","height"],mo=["d","stroke","stroke-width","stroke-dasharray"];var ho=(0,i.aZ)({__name:"ImagePolygonOutline",props:{width:{},height:{},createPath:{type:Function},outline:{}},setup(e){const t=e,{outlineWidth:l,outlineColor:a,strokeDashArray:n}=to((0,s.Vh)(t,"outline"));return(e,t)=>e.outline?((0,i.wg)(),(0,i.iD)("svg",{key:0,class:"image-polygon-outline",overflow:"visible",width:e.width,height:e.height},[(0,i._)("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",d:e.createPath(e.width,e.height),stroke:(0,s.SU)(a),"stroke-width":(0,s.SU)(l),"stroke-dasharray":(0,s.SU)(n)},null,8,mo)],8,vo)):(0,i.kq)("",!0)}});const fo=(0,Vl.Z)(ho,[["__scopeId","data-v-6e021ee2"]]);var go=fo;const yo={class:"image-outline"};var wo=(0,i.aZ)({__name:"index",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.elementInfo.clip)),{clipShape:a}=Qn(l);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",yo,["rect"===(0,s.SU)(a).type?((0,i.wg)(),(0,i.j4)(io,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,radius:(0,s.SU)(a).radius,outline:e.elementInfo.outline},null,8,["width","height","radius","outline"])):"ellipse"===(0,s.SU)(a).type?((0,i.wg)(),(0,i.j4)(po,{key:1,width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"])):"polygon"===(0,s.SU)(a).type?((0,i.wg)(),(0,i.j4)(go,{key:2,width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline,createPath:(0,s.SU)(a).createPath},null,8,["width","height","outline","createPath"])):(0,i.kq)("",!0)]))}});const xo=wo;var ko=xo;const bo=e=>((0,i.dD)("data-v-5984406b"),e=e(),(0,i.Cn)(),e),_o=["src"],Io=["src"],So=["onMousedown"],Co=bo((()=>(0,i._)("svg",{width:"16",height:"16",fill:"#fff",stroke:"#333"},[(0,i._)("path",{"stroke-width":"0.3","shape-rendering":"crispEdges",d:"M 16 0 L 0 0 L 0 16 L 4 16 L 4 4 L 16 4 L 16 0 Z"})],-1))),Lo=[Co],To=["onMousedown"],Eo=bo((()=>(0,i._)("svg",{width:"16",height:"16",fill:"#fff",stroke:"#333"},[(0,i._)("path",{"stroke-width":"0.3","shape-rendering":"crispEdges",d:"M 16 0 L 0 0 L 0 4 L 16 4 Z"})],-1))),Mo=[Eo];var Uo=(0,i.aZ)({__name:"ImageClipHandler",props:{src:{},clipPath:{},width:{},height:{},top:{},left:{},rotate:{},clipData:{}},emits:["clip"],setup(e,{emit:t}){const l=e,a=t,{canvasScale:r}=(0,o.Jk)(R()),{ctrlOrShiftKeyActive:u}=(0,o.Jk)(q()),c=(0,s.iH)({top:"0",left:"0"}),d=(0,s.iH)(!1),p=(0,s.iH)(null),v=()=>{const[e,t]=l.clipData?l.clipData.range:[[0,0],[100,100]],a=(t[0]-e[0])/100,n=(t[1]-e[1])/100,o=e[0]/a,i=e[1]/n;return{widthScale:a,heightScale:n,left:o,top:i}},m=(0,i.Fl)((()=>{const{widthScale:e,heightScale:t,left:l,top:a}=v();return{left:-l,top:-a,width:100/e,height:100/t}})),h=(0,i.Fl)((()=>({top:m.value.top+"%",left:m.value.left+"%",width:m.value.width+"%",height:m.value.height+"%"}))),f=(0,s.iH)({top:0,left:0,width:0,height:0}),g=(0,i.Fl)((()=>{const{top:e,left:t,width:l,height:a}=f.value;return{top:e+"%",left:t+"%",width:l+"%",height:a+"%"}})),y=(0,i.Fl)((()=>{const e=m.value.width,t=m.value.height,{top:l,left:a,width:n,height:o}=f.value;return{left:100/n*-a+"%",top:100/o*-l+"%",width:e/n*100+"%",height:t/o*100+"%"}})),w=()=>{const{left:e,top:t}=v();f.value={left:e,top:t,width:100,height:100},c.value={top:-t+"%",left:-e+"%"}},x=()=>{if(d.value)return;if(!p.value)return void a("clip",null);const{left:e,top:t}=v(),n={left:(f.value.left-e)/100*l.width,top:(f.value.top-t)/100*l.height,width:(f.value.width-100)/100*l.width,height:(f.value.height-100)/100*l.height},o={range:p.value,position:n};a("clip",o)},k=e=>{const t=e.key.toUpperCase();t===ne.ENTER&&x()};(0,i.bv)((()=>{w(),document.addEventListener("keydown",k)})),(0,i.Ah)((()=>{document.removeEventListener("keydown",k)}));const b=()=>{const e={left:parseInt(y.value.left),top:parseInt(y.value.top),width:parseInt(y.value.width),height:parseInt(y.value.height)},t=100/e.width,l=100/e.height,a=[-e.left*t,-e.top*l],n=[100*t+a[0],100*l+a[1]];p.value=[a,n]},_=e=>{d.value=!0;let t=!0;const a=e.pageX,n=e.pageY,o=m.value,i={...f.value};document.onmousemove=e=>{if(!t)return;const s=e.pageX,u=e.pageY;let c=(s-a)/r.value/l.width*100,d=(u-n)/r.value/l.height*100;l.rotate>45&&l.rotate<135&&(c=(u-n)/r.value/l.width*100,d=-(s-a)/r.value/l.height*100),(l.rotate>=135&&l.rotate<=180||l.rotate>=-180&&l.rotate<=-135)&&(c=-c,d=-d),l.rotate>-135&&l.rotate<-45&&(c=-(u-n)/r.value/l.width*100,d=(s-a)/r.value/l.height*100);let p=i.left+c,v=i.top+d;p<0?p=0:p+i.width>o.width&&(p=o.width-i.width),v<0?v=0:v+i.height>o.height&&(v=o.height-i.height),f.value={...f.value,left:p,top:v}},document.onmouseup=()=>{t=!1,document.onmousemove=null,document.onmouseup=null,b(),setTimeout((()=>{d.value=!1}),0)}},I=(e,t)=>{d.value=!0;let a=!0;const n=50/l.width*100,o=50/l.height*100,i=e.pageX,s=e.pageY,c=m.value,p={...f.value},v=f.value.width/f.value.height;document.onmousemove=e=>{if(!a)return;const d=e.pageX,m=e.pageY;let h,g,y,w,x=(d-i)/r.value/l.width*100,k=(m-s)/r.value/l.height*100;l.rotate>45&&l.rotate<135&&(x=(m-s)/r.value/l.width*100,k=-(d-i)/r.value/l.height*100),(l.rotate>=135&&l.rotate<=180||l.rotate>=-180&&l.rotate<=-135)&&(x=-x,k=-k),l.rotate>-135&&l.rotate<-45&&(x=-(m-s)/r.value/l.width*100,k=(d-i)/r.value/l.height*100),u.value&&(t!==le.RIGHT_BOTTOM&&t!==le.LEFT_TOP||(k=x/v),t!==le.LEFT_BOTTOM&&t!==le.RIGHT_TOP||(k=-x/v)),t===le.LEFT_TOP?(p.left+x<0&&(x=-p.left),p.top+k<0&&(k=-p.top),p.width-xc.width&&(x=c.width-(p.left+p.width)),p.top+k<0&&(k=-p.top),p.width+xc.height&&(k=c.height-(p.top+p.height)),p.width-xc.width&&(x=c.width-(p.left+p.width)),p.top+p.height+k>c.height&&(k=c.height-(p.top+p.height)),p.width+xc.height&&(k=c.height-(p.top+p.height)),p.height+kc.width&&(x=c.width-(p.left+p.width)),p.width+x{a=!1,document.onmousemove=null,document.onmouseup=null,b(),setTimeout((()=>d.value=!1),0)}},S=(0,i.Fl)((()=>{const e="rotate-",t=l.rotate;return t>-22.5&&t<=22.5?e+0:t>22.5&&t<=67.5?e+45:t>67.5&&t<=112.5?e+90:t>112.5&&t<=157.5?e+135:t>157.5||t<=-157.5?e+0:t>-157.5&&t<=-112.5?e+45:t>-112.5&&t<=-67.5?e+90:t>-67.5&&t<=-22.5?e+135:e+0})),C=[le.LEFT_TOP,le.RIGHT_TOP,le.LEFT_BOTTOM,le.RIGHT_BOTTOM],L=[le.TOP,le.BOTTOM,le.LEFT,le.RIGHT];return(e,t)=>{const l=(0,i.Q2)("click-outside");return(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"image-clip-handler",style:(0,oe.j5)(c.value)},[(0,i._)("img",{class:"bottom-img",src:e.src,draggable:!1,alt:"",style:(0,oe.j5)(h.value)},null,12,_o),(0,i._)("div",{class:"top-image-content",style:(0,oe.j5)({...g.value,clipPath:e.clipPath})},[(0,i._)("img",{class:"top-img",src:e.src,draggable:!1,alt:"",style:(0,oe.j5)(y.value)},null,12,Io)],4),(0,i._)("div",{class:"operate",style:(0,oe.j5)(g.value),onMousedown:t[0]||(t[0]=(0,n.iM)((e=>_(e)),["stop"]))},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(C,(e=>(0,i._)("div",{class:(0,oe.C_)(["clip-point",e,S.value]),key:e,onMousedown:(0,n.iM)((t=>I(t,e)),["stop"])},Lo,42,So))),64)),((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(L,(e=>(0,i._)("div",{class:(0,oe.C_)(["clip-point",e,S.value]),key:e,onMousedown:(0,n.iM)((t=>I(t,e)),["stop"])},Mo,42,To))),64))],36)],4)),[[l,x]])}}});const Wo=(0,Vl.Z)(Uo,[["__scopeId","data-v-5984406b"]]);var Do=Wo;const Ho=["src"];var Fo=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=R(),a=$(),{clipingImageElementId:r}=(0,o.Jk)(l),u=(0,i.Fl)((()=>r.value===t.elementInfo.id)),{addHistorySnapshot:c}=da(),d=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:p}=Xn(d),v=(0,i.Fl)((()=>t.elementInfo.flipH)),m=(0,i.Fl)((()=>t.elementInfo.flipV)),{flipStyle:h}=Gn(v,m),f=(0,i.Fl)((()=>t.elementInfo.clip)),{clipShape:g,imgPosition:y}=Qn(f),w=(0,i.Fl)((()=>t.elementInfo.filters)),{filter:x}=eo(w),k=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},b=e=>{if(l.setClipingImageElementId(""),!e)return;const{range:n,position:o}=e,i=t.elementInfo.clip||{shape:"rect",range:[[0,0],[100,100]]},s=t.elementInfo.left+o.left,r=t.elementInfo.top+o.top,u=t.elementInfo.width+o.width,d=t.elementInfo.height+o.height;let p=0,v=0;if(t.elementInfo.rotate){const e=s+u/2-(t.elementInfo.left+t.elementInfo.width/2),l=-(r+d/2-(t.elementInfo.top+t.elementInfo.height/2)),a=-t.elementInfo.rotate*Math.PI/180,n=e*Math.cos(a)-l*Math.sin(a),o=e*Math.sin(a)+l*Math.cos(a);p=n-e,v=-(o-l)}const m={clip:{...i,range:n},left:s+p,top:r+v,width:u,height:d};a.updateElement({id:t.elementInfo.id,props:m}),c()};return(e,t)=>{const l=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-image",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[u.value?((0,i.wg)(),(0,i.j4)(Do,{key:0,src:e.elementInfo.src,clipData:e.elementInfo.clip,width:e.elementInfo.width,height:e.elementInfo.height,top:e.elementInfo.top,left:e.elementInfo.left,rotate:e.elementInfo.rotate,clipPath:(0,s.SU)(g).style,onClip:t[0]||(t[0]=e=>b(e))},null,8,["src","clipData","width","height","top","left","rotate","clipPath"])):(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{key:1,class:"element-content",style:(0,oe.j5)({filter:(0,s.SU)(p)?`drop-shadow(${(0,s.SU)(p)})`:"",transform:(0,s.SU)(h)}),onMousedown:t[2]||(t[2]=e=>k(e)),onTouchstart:t[3]||(t[3]=e=>k(e))},[(0,i.Wm)(ko,{elementInfo:e.elementInfo},null,8,["elementInfo"]),(0,i._)("div",{class:"image-content",style:(0,oe.j5)({clipPath:(0,s.SU)(g).style})},[(0,i._)("img",{src:e.elementInfo.src,draggable:!1,style:(0,oe.j5)({top:(0,s.SU)(y).top,left:(0,s.SU)(y).left,width:(0,s.SU)(y).width,height:(0,s.SU)(y).height,filter:(0,s.SU)(x)}),onDragstart:t[1]||(t[1]=(0,n.iM)((()=>{}),["prevent"])),alt:""},null,44,Ho),e.elementInfo.colorMask?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"color-mask",style:(0,oe.j5)({backgroundColor:e.elementInfo.colorMask})},null,4)):(0,i.kq)("",!0)],4)],36)),[[l,e.contextmenus]])],4)],6)}}});const Ao=(0,Vl.Z)(Fo,[["__scopeId","data-v-1156b3e1"]]);var $o=Ao;const Zo=["width","height"],Oo=["d","stroke","stroke-width","stroke-dasharray"];var Ro=(0,i.aZ)({__name:"ElementOutline",props:{width:{},height:{},outline:{}},setup(e){const t=e,{outlineWidth:l,outlineColor:a,strokeDashArray:n}=to((0,s.Vh)(t,"outline"));return(e,t)=>e.outline?((0,i.wg)(),(0,i.iD)("svg",{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},[(0,i._)("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:"transparent",d:`M0,0 L${e.width},0 L${e.width},${e.height} L0,${e.height} Z`,stroke:(0,s.SU)(a),"stroke-width":(0,s.SU)(l),"stroke-dasharray":(0,s.SU)(n)},null,8,Oo)],8,Zo)):(0,i.kq)("",!0)}});const zo=(0,Vl.Z)(Ro,[["__scopeId","data-v-efb76626"]]);var Po=zo,Bo=l(2376),No=l(4348),jo=l(2806),Yo=l(728),Vo=l(8463),Jo=l(4251),qo=l(915),Xo=l(3833),Go=l(6912);const Ko=e=>{const t={},l=(e,l)=>t[e]=l;return l("Alt-ArrowUp",u.MI),l("Alt-ArrowDown",u.Ig),l("Mod-z",Vo.Yw),l("Mod-y",Vo.KX),l("Backspace",Go.dU),l("Escape",u.N0),l("Mod-b",(0,u.w9)(e.marks.strong)),l("Mod-i",(0,u.w9)(e.marks.em)),l("Mod-u",(0,u.w9)(e.marks.underline)),l("Mod-d",(0,u.w9)(e.marks.strikethrough)),l("Mod-e",(0,u.w9)(e.marks.code)),l("Mod-;",(0,u.w9)(e.marks.superscript)),l("Mod-'",(0,u.w9)(e.marks.subscript)),l("Enter",(0,u.QF)((0,Xo.s6)(e.nodes.list_item),u.QK,u.mD,u.X0,u.$j)),l("Mod-[",(0,Xo.IB)(e.nodes.list_item)),l("Mod-]",(0,Xo.bw)(e.nodes.list_item)),l("Tab",(0,Xo.bw)(e.nodes.list_item)),t},Qo=e=>(0,Go.S0)(/^\s*>\s$/,e),ei=e=>(0,Go.S0)(/^(\d+)\.\s$/,e,(e=>({order:+e[1]})),((e,t)=>t.childCount+t.attrs.order===+e[1])),ti=e=>(0,Go.S0)(/^\s*([-+*])\s$/,e),li=()=>{const e=/(?:^|\s)((?:`)((?:[^`]+))(?:`))$/;return new Go.VK(e,((e,t,l,a)=>{const{schema:n}=e,o=e.tr.insertText(`${t[2]} `,l,a),i=n.marks.code.create();return o.addMark(l,l+t[2].length,i)}))},ai=()=>{const e=/(?:https?:\/\/)?[\w-]+(?:\.[\w-]+)+\.?(?:\d+)?(?:\/\S*)?$/;return new Go.VK(e,((e,t,l,a)=>{const{schema:n}=e,o=e.tr.insertText(t[0],l,a),i=n.marks.link.create({href:t[0],title:t[0]});return o.addMark(l,l+t[0].length,i)}))},ni=e=>{const t=[...Go.yR,Go.LH,Go.pR];return t.push(Qo(e.nodes.blockquote)),t.push(ei(e.nodes.ordered_list)),t.push(ti(e.nodes.bullet_list)),t.push(li()),t.push(ai()),(0,Go.Hw)({rules:t})},oi=e=>"paragraph"===e.type.name&&2===e.nodeSize,ii=e=>new Bo.Sy({props:{decorations(t){const{$from:l}=t.selection;if(oi(l.parent)){const a=No.p.node(l.before(),l.after(),{"data-placeholder":e});return No.EH.create(t.doc,[a])}}}}),si=(e,t)=>{const l=t?.placeholder,a=[ni(e),(0,Yo.h)(Ko(e)),(0,Yo.h)(u.YR),(0,Jo.q)(),(0,qo.d)(),(0,Vo.m8)()];return l&&a.push(ii(l)),a};var ri=l(4073);const ui={attrs:{order:{default:1},listStyleType:{default:""},fontsize:{default:""},color:{default:""}},content:"list_item+",group:"block",parseDOM:[{tag:"ol",getAttrs:e=>{const t=(e.hasAttribute("start")?e.getAttribute("start"):1)||1,l={order:+t},{listStyleType:a,fontSize:n,color:o}=e.style;return a&&(l["listStyleType"]=a),n&&(l["fontsize"]=n),o&&(l["color"]=o),l}}],toDOM:e=>{const{order:t,listStyleType:l,fontsize:a,color:n}=e.attrs;let o="";l&&(o+=`list-style-type: ${l};`),a&&(o+=`font-size: ${a};`),n&&(o+=`color: ${n};`);const i={style:o};return 1!==t&&(i["start"]=t),["ol",i,0]}},ci={attrs:{listStyleType:{default:""},fontsize:{default:""},color:{default:""}},content:"list_item+",group:"block",parseDOM:[{tag:"ul",getAttrs:e=>{const t={},{listStyleType:l,fontSize:a,color:n}=e.style;return l&&(t["listStyleType"]=l),a&&(t["fontsize"]=a),n&&(t["color"]=n),t}}],toDOM:e=>{const{listStyleType:t,fontsize:l,color:a}=e.attrs;let n="";return t&&(n+=`list-style-type: ${t};`),l&&(n+=`font-size: ${l};`),a&&(n+=`color: ${a};`),["ul",{style:n},0]}},di={...Xo.qb,content:"paragraph block*",group:"block"},pi={attrs:{align:{default:""},indent:{default:0},textIndent:{default:0}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:e=>{const{textAlign:t,textIndent:l}=e.style;let a=e.getAttribute("align")||t||"";a=/(left|right|center|justify)/.test(a)?a:"";let n=0;l&&(/em/.test(l)?n=parseInt(l):/px/.test(l)&&(n=Math.floor(parseInt(l)/20),n||(n=1)));const o=+(e.getAttribute("data-indent")||0);return{align:a,indent:o,textIndent:n}}},{tag:"img",ignore:!0},{tag:"pre",skip:!0}],toDOM:e=>{const{align:t,indent:l,textIndent:a}=e.attrs;let n="";t&&"left"!==t&&(n+=`text-align: ${t};`),a&&(n+=`text-indent: ${20*a}px;`);const o={style:n};return l&&(o["data-indent"]=l),["p",o,0]}},{doc:vi,blockquote:mi,text:hi}=ri.nodes;var fi={doc:vi,paragraph:pi,blockquote:mi,text:hi,ordered_list:ui,bullet_list:ci,list_item:di};const gi={excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:e=>"sub"===e&&null}],toDOM:()=>["sub",0]},yi={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:e=>"super"===e&&null}],toDOM:()=>["sup",0]},wi={parseDOM:[{tag:"strike"},{style:"text-decoration",getAttrs:e=>"line-through"===e&&null},{style:"text-decoration-line",getAttrs:e=>"line-through"===e&&null}],toDOM:()=>["span",{style:"text-decoration-line: line-through;"},0]},xi={parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:e=>"underline"===e&&null},{style:"text-decoration-line",getAttrs:e=>"underline"===e&&null}],toDOM:()=>["span",{style:"text-decoration: underline;"},0]},ki={attrs:{color:{}},inline:!0,group:"inline",parseDOM:[{style:"color",getAttrs:e=>e?{color:e}:{}}],toDOM:e=>{const{color:t}=e.attrs;let l="";return t&&(l+=`color: ${t};`),["span",{style:l},0]}},bi={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{style:"background-color",getAttrs:e=>e?{backcolor:e}:{}}],toDOM:e=>{const{backcolor:t}=e.attrs;let l="";return t&&(l+=`background-color: ${t};`),["span",{style:l},0]}},_i={attrs:{fontsize:{}},inline:!0,group:"inline",parseDOM:[{style:"font-size",getAttrs:e=>e?{fontsize:e}:{}}],toDOM:e=>{const{fontsize:t}=e.attrs;let l="";return t&&(l+=`font-size: ${t};`),["span",{style:l},0]}},Ii={attrs:{fontname:{}},inline:!0,group:"inline",parseDOM:[{style:"font-family",getAttrs:e=>({fontname:e&&"string"===typeof e?e.replace(/[\"\']/g,""):""})}],toDOM:e=>{const{fontname:t}=e.attrs;let l="";return t&&(l+=`font-family: ${t};`),["span",{style:l},0]}},Si={attrs:{href:{},title:{default:null},target:{default:"_blank"}},inclusive:!1,parseDOM:[{tag:"a[href]",getAttrs:e=>{const t=e.getAttribute("href"),l=e.getAttribute("title");return{href:t,title:l}}}],toDOM:e=>["a",e.attrs,0]},Ci={attrs:{index:{default:null}},parseDOM:[{tag:"mark",getAttrs:e=>{const t=e.dataset.index;return{index:t}}}],toDOM:e=>["mark",{"data-index":e.attrs.index},0]},{em:Li,strong:Ti,code:Ei}=ri.marks;var Mi={em:Li,strong:Ti,fontsize:_i,fontname:Ii,code:Ei,forecolor:ki,backcolor:bi,subscript:gi,superscript:yi,strikethrough:wi,underline:xi,link:Si,mark:Ci};const Ui=fi,Wi=Mi,Di=new jo.V_({nodes:Ui,marks:Wi}),Hi=e=>{const t=`
${e}
`,l=new window.DOMParser,a=l.parseFromString(t,"text/html").body.firstElementChild;return jo.aw.fromSchema(Di).parse(a)},Fi=(e,t,l,a)=>new No.tk(e,{state:Bo.yy.create({doc:Hi(t),plugins:si(Di,a)}),...l});var Ai,$i=l(9391);(function(e){e["RICH_TEXT_COMMAND"]="RICH_TEXT_COMMAND",e["SYNC_RICH_TEXT_ATTRS_TO_STORE"]="SYNC_RICH_TEXT_ATTRS_TO_STORE",e["OPEN_CHART_DATA_EDITOR"]="OPEN_CHART_DATA_EDITOR",e["OPEN_LATEX_EDITOR"]="OPEN_LATEX_EDITOR"})(Ai||(Ai={}));const Zi=(0,$i.Z)();var Oi=Zi;const Ri=(e,t,l)=>{const{selection:a,doc:n}=e;if(!a||!n)return e;const{from:o,to:i}=a,{nodes:s}=t,r=s.blockquote,u=s.list_item,c=s.paragraph,d=[];l=l||"";const p=new Set([r,u,c]);return n.nodesBetween(o,i,((e,t)=>{const a=e.type,n=e.attrs.align||"";return n!==l&&p.has(a)&&d.push({node:e,pos:t,nodeType:a}),!0})),d.length?(d.forEach((t=>{const{node:a,pos:n,nodeType:o}=t;let{attrs:i}=a;i=l?{...i,align:l}:{...i,align:null},e=e.setNodeMarkup(n,o,i,a.marks)})),e):e},zi=(e,t)=>{const{state:l}=e,{schema:a,selection:n}=l,o=Ri(l.tr.setSelection(n),a,t);e.dispatch(o)};function Pi(e,t,l,a){if(!e.doc)return e;const n=e.doc.nodeAt(t);if(!n)return e;const o=0,i=8;let s=(n.attrs[a]||0)+l;if(si&&(s=i),s===n.attrs[a])return e;const r={...n.attrs,[a]:s};return e.setNodeMarkup(t,n.type,r,n.marks)}const Bi=(e,t,l,a)=>{const{selection:n,doc:o}=e;if(!n||!o)return e;if(!(n instanceof Bo.Bs||n instanceof Bo.C1))return e;const{from:i,to:s}=n;return o.nodesBetween(i,s,((n,o)=>{const i=n.type;return"paragraph"===i.name||"blockquote"===i.name?(e=Pi(e,o,l,a),!1):!c(n,t)})),e},Ni=(e,t)=>{const{state:l}=e,{schema:a,selection:n}=l,o=Bi(l.tr.setSelection(n),a,t,"indent");return!!o.docChanged&&(e.dispatch(o),!0)},ji=(e,t)=>{const{state:l}=e,{schema:a,selection:n}=l,o=Bi(l.tr.setSelection(n),a,t,"textIndent");return!!o.docChanged&&(e.dispatch(o),!0)},Yi=(e,t,l,a={})=>(n,o)=>{const{schema:i,selection:s}=n,{$from:r,$to:u}=s,d=r.blockRange(u);if(!d)return!1;const p=f((e=>c(e,i)))(s);if(d.depth>=1&&p&&d.depth-p.depth<=1){if(p.node.type===e&&!l)return(0,Xo.IB)(t)(n,o);if(c(p.node,i)&&e.validContent(p.node.content)){const{tr:t}=n,i={...p.node.attrs,...a};return l&&(i.listStyleType=l),t.setNodeMarkup(p.pos,e,i),o&&o(t),!1}}const v={...a};return l&&(v.listStyleType=l),(0,Xo.KI)(e,v)(n,o)},Vi=(e,t)=>{const{state:l}=e,{schema:a,selection:n}=l,o=l.tr.setSelection(n),{doc:i}=o;if(!i)return o;const{from:s,to:r}=n;i.nodesBetween(s,r,((e,l)=>{if(c(e,a)&&s-3<=l&&r+3>=l+e.nodeSize){const e=Array.isArray(t)?t:[t];for(const t of e)o.setNodeAttribute(l,t.key,t.value)}return!1})),e.dispatch(o)};var Ji=(0,i.aZ)({__name:"ProsemirrorEditor",props:{elementId:{},defaultColor:{},defaultFontName:{},value:{},editable:{type:Boolean,default:!1},autoFocus:{type:Boolean,default:!1}},emits:["update","focus","blur","mousedown"],setup(e,{expose:t,emit:l}){const a=e,n=l,r=R(),{handleElementId:c,textFormatPainter:m,richTextAttrs:h}=(0,o.Jk)(r),f=(0,s.iH)();let g;const w=(0,D.debounce)((function(){n("update",g.dom.innerHTML)}),300,{trailing:!0}),x=()=>{r.setDisableHotkeysState(!0),n("focus")},k=()=>{r.setDisableHotkeysState(!1),n("blur")},b=(0,D.debounce)((function(){const e=C(g,{color:a.defaultColor,fontname:a.defaultFontName});r.setRichtextAttrs(e)}),30,{trailing:!0}),I=()=>{w(),b()},S=(0,i.Fl)((()=>a.value));(0,i.YP)(S,(()=>{if(!g)return;if(g.hasFocus())return;const{doc:e,tr:t}=g.state;g.dispatch(t.replaceRangeWith(0,e.content.size,Hi(S.value)))})),(0,i.YP)((()=>a.editable),(()=>{g.setProps({editable:()=>a.editable})}));const T=()=>g.focus();t({focus:T});const E=({target:e,action:t})=>{if(!e&&c.value!==a.elementId)return;if(e&&e!==a.elementId)return;const l="command"in t?[t]:t;for(const a of l)if("fontname"===a.command&&a.value){const e=g.state.schema.marks.fontname.create({fontname:a.value});d(g),p(g,e)}else if("fontsize"===a.command&&a.value){const e=g.state.schema.marks.fontsize.create({fontsize:a.value});d(g),p(g,e),Vi(g,{key:"fontsize",value:a.value})}else if("fontsize-add"===a.command){const e=a.value?+a.value:2;d(g);const t=L(g)+e+"px",l=g.state.schema.marks.fontsize.create({fontsize:t});p(g,l),Vi(g,{key:"fontsize",value:t})}else if("fontsize-reduce"===a.command){const e=a.value?+a.value:2;d(g);let t=L(g)-e;t<12&&(t=12);const l=g.state.schema.marks.fontsize.create({fontsize:t+"px"});p(g,l),Vi(g,{key:"fontsize",value:t+"px"})}else if("color"===a.command&&a.value){const e=g.state.schema.marks.forecolor.create({color:a.value});d(g),p(g,e),Vi(g,{key:"color",value:a.value})}else if("backcolor"===a.command&&a.value){const e=g.state.schema.marks.backcolor.create({backcolor:a.value});d(g),p(g,e)}else if("bold"===a.command)d(g),(0,u.w9)(g.state.schema.marks.strong)(g.state,g.dispatch);else if("em"===a.command)d(g),(0,u.w9)(g.state.schema.marks.em)(g.state,g.dispatch);else if("underline"===a.command)d(g),(0,u.w9)(g.state.schema.marks.underline)(g.state,g.dispatch);else if("strikethrough"===a.command)d(g),(0,u.w9)(g.state.schema.marks.strikethrough)(g.state,g.dispatch);else if("subscript"===a.command)(0,u.w9)(g.state.schema.marks.subscript)(g.state,g.dispatch);else if("superscript"===a.command)(0,u.w9)(g.state.schema.marks.superscript)(g.state,g.dispatch);else if("blockquote"===a.command){const e=y("blockquote",g.state);e?(0,u.xb)(g.state,g.dispatch):(0,u.ym)(g.state.schema.nodes.blockquote)(g.state,g.dispatch)}else if("code"===a.command)(0,u.w9)(g.state.schema.marks.code)(g.state,g.dispatch);else if("align"===a.command&&a.value)zi(g,a.value);else if("indent"===a.command&&a.value)Ni(g,+a.value);else if("textIndent"===a.command&&a.value)ji(g,+a.value);else if("bulletList"===a.command){const e=a.value||"",{bullet_list:t,list_item:l}=g.state.schema.nodes,n={color:h.value.color,fontsize:h.value.fontsize};Yi(t,l,e,n)(g.state,g.dispatch)}else if("orderedList"===a.command){const e=a.value||"",{ordered_list:t,list_item:l}=g.state.schema.nodes,n={color:h.value.color,fontsize:h.value.fontsize};Yi(t,l,e,n)(g.state,g.dispatch)}else if("clear"===a.command){d(g);const{$from:e,$to:t}=g.state.selection;g.dispatch(g.state.tr.removeMark(e.pos,t.pos)),Vi(g,[{key:"fontsize",value:""},{key:"color",value:""}])}else if("link"===a.command){const e=g.state.schema.marks.link,{from:t,to:l}=g.state.selection,n=v(g.state.doc,t,l,e);if(n)if(a.value){const e=g.state.schema.marks.link.create({href:a.value,title:a.value});p(g,e,{from:n.from.pos,to:n.to.pos+1})}else g.dispatch(g.state.tr.removeMark(n.from.pos,n.to.pos+1,e));else if(_(g.state,e))if(a.value){const e=g.state.schema.marks.link.create({href:a.value,title:a.value});p(g,e)}else(0,u.w9)(e)(g.state,g.dispatch);else a.value&&(d(g),(0,u.w9)(e,{href:a.value,title:a.value})(g.state,g.dispatch))}else"insert"===a.command&&a.value&&g.dispatch(g.state.tr.insertText(a.value));g.focus(),w(),b()},M=()=>{if(!m.value)return;const{keep:e,...t}=m.value,l=[{command:"clear"}];for(const a of Object.keys(t)){const e=a,t=m.value[a];!0===t?l.push({command:e}):t&&l.push({command:e,value:t})}E({action:l}),e||r.setTextFormatPainter(null)};(0,i.bv)((()=>{g=Fi(f.value,S.value,{handleDOMEvents:{focus:x,blur:k,keydown:I,click:b,mouseup:M},editable:()=>a.editable}),a.autoFocus&&g.focus()})),(0,i.Ah)((()=>{g&&g.destroy()}));const U=()=>{c.value===a.elementId&&b()};return Oi.on(Ai.RICH_TEXT_COMMAND,E),Oi.on(Ai.SYNC_RICH_TEXT_ATTRS_TO_STORE,U),(0,i.Ah)((()=>{Oi.off(Ai.RICH_TEXT_COMMAND,E),Oi.off(Ai.SYNC_RICH_TEXT_ATTRS_TO_STORE,U)})),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["prosemirror-editor",{"format-painter":(0,s.SU)(m)}]),ref_key:"editorViewRef",ref:f,onMousedown:t[0]||(t[0]=e=>n("mousedown",e))},null,34))}});const qi=(0,Vl.Z)(Ji,[["__scopeId","data-v-653f533c"]]);var Xi=qi;const Gi=e=>((0,i.dD)("data-v-2a1e49ba"),e=e(),(0,i.Cn)(),e),Ki=Gi((()=>(0,i._)("div",{class:"drag-handler top"},null,-1))),Qi=Gi((()=>(0,i._)("div",{class:"drag-handler bottom"},null,-1)));var es=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=R(),a=$(),{handleElementId:n,isScaling:r}=(0,o.Jk)(l),{addHistorySnapshot:u}=da(),c=(0,s.iH)(),d=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:p}=Xn(d),v=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))},m=(0,s.iH)(-1),h=(0,s.iH)(-1);(0,i.YP)(r,(()=>{n.value===t.elementInfo.id&&(r.value||(t.elementInfo.vertical||-1===m.value||(a.updateElement({id:t.elementInfo.id,props:{height:m.value}}),m.value=-1),t.elementInfo.vertical&&-1!==h.value&&(a.updateElement({id:t.elementInfo.id,props:{width:h.value}}),h.value=-1)))}));const f=e=>{const l=e[0].contentRect;if(!c.value)return;const n=l.height+20,o=l.width+20;t.elementInfo.vertical||t.elementInfo.height===n||(r.value?m.value=n:a.updateElement({id:t.elementInfo.id,props:{height:n}})),t.elementInfo.vertical&&t.elementInfo.width!==o&&(r.value?h.value=o:a.updateElement({id:t.elementInfo.id,props:{width:o}}))},g=new ResizeObserver(f);(0,i.bv)((()=>{c.value&&g.observe(c.value)})),(0,i.Ah)((()=>{c.value&&g.unobserve(c.value)}));const y=e=>{a.updateElement({id:t.elementInfo.id,props:{content:e}}),u()},w=(0,D.debounce)((function(){const e=t.elementInfo.content.replaceAll(/<[^>]+>/g,"");e||a.deleteElement(t.elementInfo.id)}),300,{trailing:!0}),x=(0,i.Fl)((()=>n.value===t.elementInfo.id));return(0,i.YP)(x,(()=>{x.value||w()})),(e,t)=>{const l=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-text",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",ref_key:"elementRef",ref:c,style:(0,oe.j5)({width:e.elementInfo.vertical?"auto":e.elementInfo.width+"px",height:e.elementInfo.vertical?e.elementInfo.height+"px":"auto",backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:(0,s.SU)(p),lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName,writingMode:e.elementInfo.vertical?"vertical-rl":"horizontal-tb"}),onMousedown:t[2]||(t[2]=e=>v(e)),onTouchstart:t[3]||(t[3]=e=>v(e))},[(0,i.Wm)(Po,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),(0,i.Wm)(Xi,{class:"text",elementId:e.elementInfo.id,defaultColor:e.elementInfo.defaultColor,defaultFontName:e.elementInfo.defaultFontName,editable:!e.elementInfo.lock,value:e.elementInfo.content,style:(0,oe.j5)({"--paragraphSpace":`${void 0===e.elementInfo.paragraphSpace?5:e.elementInfo.paragraphSpace}px`}),onUpdate:t[0]||(t[0]=e=>y(e)),onMousedown:t[1]||(t[1]=e=>v(e,!1))},null,8,["elementId","defaultColor","defaultFontName","editable","value","style"]),Ki,Qi],36)),[[l,e.contextmenus]])],4)],6)}}});const ts=(0,Vl.Z)(es,[["__scopeId","data-v-2a1e49ba"]]);var ls=ts;const as=["id","gradientTransform"],ns=["stop-color"],os=["stop-color"],is=["id"],ss=["stop-color"],rs=["stop-color"];var us=(0,i.aZ)({__name:"GradientDefs",props:{id:{},type:{},color1:{},color2:{},rotate:{default:0}},setup(e){return(e,t)=>"linear"===e.type?((0,i.wg)(),(0,i.iD)("linearGradient",{key:0,id:e.id,x1:"0%",y1:"0%",x2:"100%",y2:"0%",gradientTransform:`rotate(${e.rotate},0.5,0.5)`},[(0,i._)("stop",{offset:"0%","stop-color":e.color1},null,8,ns),(0,i._)("stop",{offset:"100%","stop-color":e.color2},null,8,os)],8,as)):((0,i.wg)(),(0,i.iD)("radialGradient",{key:1,id:e.id},[(0,i._)("stop",{offset:"0%","stop-color":e.color1},null,8,ss),(0,i._)("stop",{offset:"100%","stop-color":e.color2},null,8,rs)],8,is))}});const cs=us;var ds=cs;const ps=["width","height"],vs={key:0},ms=["transform"],hs=["d","fill","stroke","stroke-width","stroke-dasharray"];var fs=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=R(),a=$(),{handleElementId:n,shapeFormatPainter:r}=(0,o.Jk)(l),{addHistorySnapshot:u}=da(),c=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))},d=()=>{if(!r.value)return;const{keep:e,...n}=r.value;a.updateElement({id:t.elementInfo.id,props:n}),u(),e||l.setShapeFormatPainter(null)},p=(0,i.Fl)((()=>t.elementInfo.outline)),{outlineWidth:v,outlineColor:m,strokeDashArray:h}=to(p),f=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:g}=Xn(f),y=(0,i.Fl)((()=>t.elementInfo.flipH)),w=(0,i.Fl)((()=>t.elementInfo.flipV)),{flipStyle:x}=Gn(y,w),k=(0,s.iH)(!1);(0,i.YP)(n,(()=>{n.value!==t.elementInfo.id&&k.value&&(k.value=!1)}));const b=(0,i.Fl)((()=>{const e={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return t.elementInfo.text?t.elementInfo.text:e})),_=e=>{const l={...b.value,content:e};a.updateElement({id:t.elementInfo.id,props:{text:l}}),u()},I=()=>{if(!t.elementInfo.text)return;const e=t.elementInfo.text.content.replaceAll(/<[^>]+>/g,"");e||(a.removeElementProps({id:t.elementInfo.id,propName:"text"}),u())},S=(0,s.iH)(),C=()=>{k.value=!0,(0,i.Y3)((()=>S.value&&S.value.focus()))};return(e,t)=>{const l=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-shape",{lock:e.elementInfo.lock,"format-painter":(0,s.SU)(r)}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",style:(0,oe.j5)({opacity:e.elementInfo.opacity,filter:(0,s.SU)(g)?`drop-shadow(${(0,s.SU)(g)})`:"",transform:(0,s.SU)(x),color:b.value.defaultColor,fontFamily:b.value.defaultFontName}),onMousedown:t[3]||(t[3]=e=>c(e)),onMouseup:t[4]||(t[4]=e=>d()),onTouchstart:t[5]||(t[5]=e=>c(e)),onDblclick:t[6]||(t[6]=e=>C())},[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?((0,i.wg)(),(0,i.iD)("defs",vs,[(0,i.Wm)(ds,{id:`editabel-gradient-${e.elementInfo.id}`,type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):(0,i.kq)("",!0),(0,i._)("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[(0,i._)("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",d:e.elementInfo.path,fill:e.elementInfo.gradient?`url(#editabel-gradient-${e.elementInfo.id})`:e.elementInfo.fill,stroke:(0,s.SU)(m),"stroke-width":(0,s.SU)(v),"stroke-dasharray":(0,s.SU)(h)},null,8,hs)],8,ms)],8,ps)),(0,i._)("div",{class:(0,oe.C_)(["shape-text",[b.value.align,{editable:k.value||b.value.content}]])},[k.value||b.value.content?((0,i.wg)(),(0,i.j4)(Xi,{key:0,ref_key:"prosemirrorEditorRef",ref:S,elementId:e.elementInfo.id,defaultColor:b.value.defaultColor,defaultFontName:b.value.defaultFontName,editable:!e.elementInfo.lock,value:b.value.content,onUpdate:t[0]||(t[0]=e=>_(e)),onBlur:t[1]||(t[1]=e=>I()),onMousedown:t[2]||(t[2]=e=>c(e,!1))},null,8,["elementId","defaultColor","defaultFontName","editable","value"])):(0,i.kq)("",!0)],2)],36)),[[l,e.contextmenus]])],4)],6)}}});const gs=(0,Vl.Z)(fs,[["__scopeId","data-v-5d988de2"]]);var ys=gs;const ws=["id","markerWidth","markerHeight","refX","refY"],xs=["d","fill","transform"];var ks=(0,i.aZ)({__name:"LinePointMarker",props:{id:{},position:{},type:{},baseSize:{},color:{}},setup(e){const t=e,l={dot:"m0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z",arrow:"M0,0 L10,5 0,10 Z"},a={"arrow-start":180,"arrow-end":0},n=(0,i.Fl)((()=>l[t.type])),o=(0,i.Fl)((()=>a[`${t.type}-${t.position}`]||0)),s=(0,i.Fl)((()=>t.baseSize<2?2:t.baseSize));return(e,t)=>((0,i.wg)(),(0,i.iD)("marker",{id:`${e.id}-${e.type}-${e.position}`,markerUnits:"userSpaceOnUse",orient:"auto",markerWidth:3*s.value,markerHeight:3*s.value,refX:1.5*s.value,refY:1.5*s.value},[(0,i._)("path",{d:n.value,fill:e.color,transform:`scale(${.3*s.value}, ${.3*s.value}) rotate(${o.value}, 5, 5)`},null,8,xs)],8,ws))}});const bs=ks;var _s=bs;const Is=["width","height"],Ss=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"],Cs=["d"];var Ls=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},a=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:n}=Xn(a),o=(0,i.Fl)((()=>{const e=Math.abs(t.elementInfo.start[0]-t.elementInfo.end[0]);return e<24?24:e})),r=(0,i.Fl)((()=>{const e=Math.abs(t.elementInfo.start[1]-t.elementInfo.end[1]);return e<24?24:e})),u=(0,i.Fl)((()=>{if("dashed"!==t.elementInfo.style)return"0 0";const e=t.elementInfo.width;return e<=8?`${5*e} ${2.5*e}`:`${5*e} ${1.5*e}`})),c=(0,i.Fl)((()=>Ce(t.elementInfo)));return(e,t)=>{const a=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-shape",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({filter:(0,s.SU)(n)?`drop-shadow(${(0,s.SU)(n)})`:""}),onMousedown:t[0]||(t[0]=e=>l(e)),onTouchstart:t[1]||(t[1]=e=>l(e))},[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:o.value,height:r.value},[(0,i._)("defs",null,[e.elementInfo.points[0]?((0,i.wg)(),(0,i.j4)(_s,{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"])):(0,i.kq)("",!0),e.elementInfo.points[1]?((0,i.wg)(),(0,i.j4)(_s,{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"])):(0,i.kq)("",!0)]),(0,i._)("path",{class:"line-point",d:c.value,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":u.value,fill:"none","marker-start":e.elementInfo.points[0]?`url(#${e.elementInfo.id}-${e.elementInfo.points[0]}-start)`:"","marker-end":e.elementInfo.points[1]?`url(#${e.elementInfo.id}-${e.elementInfo.points[1]}-end)`:""},null,8,Ss),(0,i.wy)((0,i._)("path",{class:"line-path",d:c.value,stroke:"transparent","stroke-width":"20",fill:"none"},null,8,Cs),[[a,e.contextmenus]])],8,Is))],36)],6)}}});const Ts=(0,Vl.Z)(Ls,[["__scopeId","data-v-16512454"]]);var Es=Ts,Ms=l(7678),Us=(l(4991),(0,i.aZ)({__name:"Chart",props:{width:{},height:{},type:{},data:{},themeColor:{},legends:{},options:{},gridColor:{},legend:{}},setup(e){const t=e,l=(0,s.iH)(),a=(0,i.f3)(Tn)||(0,s.iH)(1);let n;const o=(0,i.Fl)((()=>t.legend?t.height-20:t.height)),r=()=>({...t.data,series:t.data.series[0]}),u=()=>{const e=t.options||{};return{...e,width:t.width*a.value,height:o.value*a.value}},c=()=>{if(!l.value)return;const e=u();"bar"===t.type&&(n=new Ms.vz(l.value,t.data,e)),"line"===t.type&&(n=new Ms.wW(l.value,t.data,e)),"pie"===t.type&&(n=new Ms.uc(l.value,r(),e))},d=()=>{if(!n)return void c();const e=u(),l="pie"===t.type?r():t.data;n.update(l,e)};(0,i.YP)([()=>t.width,()=>t.height,()=>t.data,()=>t.options,a],d),(0,i.bv)(c);const p=(0,i.Fl)((()=>{let e=[];if(t.themeColor.length>=10)e=t.themeColor;else if(1===t.themeColor.length)e=(0,W.Z)(t.themeColor[0]).analogous(10).map((e=>e.toRgbString()));else{const l=t.themeColor.length,a=(0,W.Z)(t.themeColor[l-1]).analogous(11-l).map((e=>e.toRgbString()));e=[...t.themeColor.slice(0,l-1),...a]}return e})),v=()=>{if(l.value)for(let e=0;e<10;e++)l.value.style.setProperty(`--theme-color-${e+1}`,p.value[e])};(0,i.YP)(p,v),(0,i.bv)(v);const m=()=>{l.value&&t.gridColor&&l.value.style.setProperty("--grid-color",t.gridColor)};return(0,i.YP)((()=>t.gridColor),m),(0,i.bv)(m),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"chart",style:(0,oe.j5)({flexDirection:"top"===e.legend?"column-reverse":"column"})},[(0,i._)("div",{class:"chart-content",ref_key:"chartRef",ref:l,style:(0,oe.j5)({width:e.width+"px",height:o.value+"px",transform:`scale(${1/(0,s.SU)(a)})`})},null,4),e.legend?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"legends",style:(0,oe.j5)({transform:`scale(${1/(0,s.SU)(a)})`})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.legends,((t,l)=>((0,i.wg)(),(0,i.iD)("div",{class:"legend",key:l,style:(0,oe.j5)({color:e.gridColor})},[(0,i._)("div",{class:"block",style:(0,oe.j5)({backgroundColor:p.value[l]})},null,4),(0,i.Uk)(" "+(0,oe.zw)(t),1)],4)))),128))],4)):(0,i.kq)("",!0)],4))}}));const Ws=(0,Vl.Z)(Us,[["__scopeId","data-v-ae2a96a6"]]);var Ds=Ws,Hs=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},a=()=>{Oi.emit(Ai.OPEN_CHART_DATA_EDITOR)};return(e,t)=>{const n=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-chart",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",style:(0,oe.j5)({backgroundColor:e.elementInfo.fill}),onMousedown:t[0]||(t[0]=e=>l(e)),onTouchstart:t[1]||(t[1]=e=>l(e)),onDblclick:t[2]||(t[2]=e=>a())},[(0,i.Wm)(Po,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),(0,i.Wm)(Ds,{width:e.elementInfo.width,height:e.elementInfo.height,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor,legends:e.elementInfo.data.legends,legend:e.elementInfo.legend||""},null,8,["width","height","type","data","options","themeColor","gridColor","legends","legend"])],36)),[[n,e.contextmenus]])],4)],6)}}});const Fs=(0,Vl.Z)(Hs,[["__scopeId","data-v-6fc3de39"]]);var As=Fs;const $s=e=>{if(!e)return{};const{bold:t,em:l,underline:a,strikethrough:n,color:o,backcolor:i,fontsize:s,fontname:r,align:u}=e;let c=`${a?"underline":""} ${n?"line-through":""}`;return" "===c&&(c="none"),{fontWeight:t?"bold":"normal",fontStyle:l?"italic":"normal",textDecoration:c,color:o||"#000",backgroundColor:i||"",fontSize:s||"14px",fontFamily:r||"微软雅黑",textAlign:u||"left"}},Zs=e=>e.replace(/\n/g,"
").replace(/ /g," ");var Os=e=>{const t=(0,i.Fl)((()=>{const t=[];for(let l=0;l1||n.rowspan>1)for(let a=l;a{const t=(0,s.iH)(["",""]);return(0,i.YP)((()=>e.value),(()=>{e.value&&(t.value=Se(e.value.color))}),{immediate:!0}),{subThemeColor:t}};const zs=["innerHTML"];var Ps=(0,i.aZ)({__name:"CustomTextarea",props:{value:{default:""}},emits:["updateValue","insertExcelData"],setup(e,{emit:t}){const l=e,a=t,n=(0,s.iH)(),o=(0,s.iH)(""),r=(0,s.iH)(!1);(0,i.YP)((()=>l.value),(()=>{r.value||(o.value=l.value,n.value&&(n.value.innerHTML=l.value))}),{immediate:!0});const u=()=>{if(!n.value)return;const e=n.value.innerHTML;a("updateValue",e)},c=()=>{r.value=!0,n.value&&(n.value.onpaste=e=>{if(e.preventDefault(),!e.clipboardData)return;const t=e.clipboardData.items[0];t&&"string"===t.kind&&"text/plain"===t.type&&t.getAsString((e=>{const t=fe(e);if("object"===typeof t)return;const l=ge(e);if(l)return a("insertExcelData",l),void(n.value&&(n.value.innerHTML=l[0][0]));document.execCommand("insertText",!1,e)}))})},d=()=>{r.value=!1,n.value&&(n.value.onpaste=null)};return(0,i.Jd)((()=>{n.value&&(n.value.onpaste=null)})),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"custom-textarea",ref_key:"textareaRef",ref:n,contenteditable:!0,onFocus:t[0]||(t[0]=e=>c()),onBlur:t[1]||(t[1]=e=>d()),onInput:t[2]||(t[2]=e=>u()),innerHTML:o.value},null,40,zs))}});const Bs=(0,Vl.Z)(Ps,[["__scopeId","data-v-7a7222ac"]]);var Ns=Bs;const js={key:0,class:"handler"},Ys=["onMousedown"],Vs=["width"],Js=["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"],qs=["innerHTML"];var Xs=(0,i.aZ)({__name:"EditableTable",props:{data:{},width:{},cellMinHeight:{},colWidths:{},outline:{},theme:{},editable:{type:Boolean,default:!0}},emits:["change","changeColWidths","changeSelectedCells"],setup(e,{emit:t}){const l=e,a=t,{canvasScale:u}=(0,o.Jk)(R()),c=(0,s.iH)(!1),d=(0,s.iH)([]),p=(0,s.iH)([]),v=(0,i.Fl)({get(){return l.data},set(e){a("change",e)}}),m=(0,i.Fl)((()=>l.theme)),{subThemeColor:h}=Rs(m),f=(0,s.iH)([]),g=(0,i.Fl)((()=>f.value.reduce(((e,t)=>e+t))));(0,i.YP)([()=>l.colWidths,()=>l.width],(()=>{f.value=l.colWidths.map((e=>e*l.width))}),{immediate:!0});const y=()=>{d.value=[],p.value=[]};(0,i.YP)((()=>l.editable),(()=>{l.editable||y()}));const w=(0,i.Fl)((()=>{const e=[];for(let t=1;te+t));e.push(l)}return e})),x=(0,i.Fl)((()=>l.data)),{hideCells:k}=Os(x),b=(0,i.Fl)((()=>{if(!d.value.length)return[];const[e,t]=d.value;if(!p.value.length)return[`${e}_${t}`];const[l,a]=p.value;if(e===l&&t===a)return[`${e}_${t}`];const n=[],o=Math.min(e,l),i=Math.min(t,a),s=Math.max(e,l),r=Math.max(t,a);for(let u=0;u=o&&u<=s&&t>=i&&t<=r&&n.push(`${u}_${t}`)}return n}));(0,i.YP)(b,((e,t)=>{(0,D.isEqual)(e,t)||a("changeSelectedCells",b.value)}));const _=(0,i.Fl)((()=>b.value.length>1?null:b.value[0])),I=()=>c.value=!1,S=(e,t,l)=>{0===e.button&&(p.value=[],c.value=!0,d.value=[t,l])},C=(e,t)=>{c.value&&(p.value=[e,t])};(0,i.bv)((()=>{document.addEventListener("mouseup",I)})),(0,i.Ah)((()=>{document.removeEventListener("mouseup",I)}));const L=(e,t)=>k.value.includes(`${e}_${t}`),T=e=>{const t=v.value.length-1;d.value=[0,e],p.value=[t,e]},E=e=>{const t=v.value[e].length-1;d.value=[e,0],p.value=[e,t]},M=()=>{const e=v.value.length-1,t=v.value[e].length-1;d.value=[0,0],p.value=[e,t]},U=e=>{const t=JSON.parse(JSON.stringify(v.value)),l=v.value[e],a=[];for(let n=0;n=0;l--)if(!L(l,n)){t[l][n].rowspan=t[l][n].rowspan-1;break}t.splice(e,1),v.value=t},W=e=>{const t=JSON.parse(JSON.stringify(v.value)),l=[];for(let a=0;a=0;l--)if(!L(a,l)){t[a][l].colspan=t[a][l].colspan-1;break}v.value=t.map((t=>(t.splice(e,1),t))),f.value.splice(e,1),a("changeColWidths",f.value)},H=e=>{const t=JSON.parse(JSON.stringify(v.value)),l=[];for(let a=0;a{v.value=v.value.map((t=>{const l={colspan:1,rowspan:1,text:"",id:(0,r.x0)(10)};return t.splice(e,0,l),t})),f.value.splice(e,0,100),a("changeColWidths",f.value)},A=(e,t)=>{let l=JSON.parse(JSON.stringify(v.value));const n={colspan:1,rowspan:1,text:""};if(e){const t=[];for(let a=0;a{const l=[];for(let a=0;a{const[e,t]=d.value,[l,a]=p.value,n=Math.min(e,l),o=Math.min(t,a),i=Math.max(e,l),s=Math.max(t,a),r=JSON.parse(JSON.stringify(v.value));r[n][o].rowspan=i-n+1,r[n][o].colspan=s-o+1,v.value=r,y()},Z=(e,t)=>{const l=JSON.parse(JSON.stringify(v.value));l[e][t].rowspan=1,l[e][t].colspan=1,v.value=l,y()},O=(e,t)=>{y();let l=!0;const n=f.value[t],o=e.pageX,i=50;document.onmousemove=e=>{if(!l)return;const a=(e.pageX-o)/u.value,s=n+a{l=!1,document.onmousemove=null,document.onmouseup=null,a("changeColWidths",f.value)}},z=()=>{const e=JSON.parse(JSON.stringify(v.value));for(let t=0;t{const e=(t,l)=>v.value[t]?v.value[t][l]?L(t,l)?e(t,l+1):[t,l]:e(t+1,0):null;p.value=[];const t=d.value[0],l=d.value[1]+1,a=e(t,l);a?d.value=a:(H(t+1),d.value=[t+1,0]),(0,i.Y3)((()=>{const e=document.querySelector(".cell-text.active");e&&e.focus()}))},B=e=>{if(!l.editable||!b.value.length)return;const t=e.key.toUpperCase();if(b.value.length<2){if(t===ne.TAB&&(e.preventDefault(),P()),e.ctrlKey&&t===ne.UP){e.preventDefault();const t=+b.value[0].split("_")[0];H(t)}if(e.ctrlKey&&t===ne.DOWN){e.preventDefault();const t=+b.value[0].split("_")[0];H(t+1)}if(e.ctrlKey&&t===ne.LEFT){e.preventDefault();const t=+b.value[0].split("_")[1];F(t)}if(e.ctrlKey&&t===ne.RIGHT){e.preventDefault();const t=+b.value[0].split("_")[1];F(t+1)}}else t===ne.DELETE&&z()};(0,i.bv)((()=>{document.addEventListener("keydown",B)})),(0,i.Ah)((()=>{document.removeEventListener("keydown",B)}));const N=(0,D.debounce)((function(e,t,l){v.value[t][l].text=e,a("change",v.value)}),300,{trailing:!0}),j=(e,t,l)=>{const n=e.length,o=e[0].length;let s=0,r=0;t+n>v.value.length&&(s=t+n-v.value.length),l+o>v.value[0].length&&(r=l+o-v.value[0].length),(s||r)&&A(s,r),(0,i.Y3)((()=>{for(let a=0;a{const e=[];for(let t=0;t{const e=Y(),t=e.length>1,l=e[0].length>1;return{canDeleteRow:t,canDeleteCol:l}},J=(e,t)=>{const l=b.value.length>1,a=v.value[e][t],n=l,o=!l&&(a.rowspan>1||a.colspan>1);return{canMerge:n,canSplit:o}},q=e=>{const t=e.dataset.cellIndex,l=+t.split("_")[0],a=+t.split("_")[1];b.value.includes(`${l}_${a}`)||(d.value=[l,a],p.value=[]);const{canMerge:n,canSplit:o}=J(l,a),{canDeleteRow:i,canDeleteCol:s}=V();return[{text:"插入列",children:[{text:"到左侧",handler:()=>F(a)},{text:"到右侧",handler:()=>F(a+1)}]},{text:"插入行",children:[{text:"到上方",handler:()=>H(l)},{text:"到下方",handler:()=>H(l+1)}]},{text:"删除列",disable:!s,handler:()=>W(a)},{text:"删除行",disable:!i,handler:()=>U(l)},{divider:!0},{text:"合并单元格",disable:!n,handler:$},{text:"取消合并单元格",disable:!o,handler:()=>Z(l,a)},{divider:!0},{text:"选中当前列",handler:()=>T(a)},{text:"选中当前行",handler:()=>E(l)},{text:"选中全部单元格",handler:M}]};return(e,t)=>{const l=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:"editable-table",style:(0,oe.j5)({width:g.value+"px"})},[e.editable?((0,i.wg)(),(0,i.iD)("div",js,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(w.value,((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"drag-line",key:t,style:(0,oe.j5)({left:e+"px"}),onMousedown:e=>O(e,t)},null,44,Ys)))),128))])):(0,i.kq)("",!0),(0,i._)("table",{class:(0,oe.C_)({theme:m.value,"row-header":m.value?.rowHeader,"row-footer":m.value?.rowFooter,"col-header":m.value?.colHeader,"col-footer":m.value?.colFooter}),style:(0,oe.j5)(`--themeColor: ${m.value?.color}; --subThemeColor1: ${(0,s.SU)(h)[0]}; --subThemeColor2: ${(0,s.SU)(h)[1]}`)},[(0,i._)("colgroup",null,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(f.value,((e,t)=>((0,i.wg)(),(0,i.iD)("col",{span:"1",key:t,width:e},null,8,Vs)))),128))]),(0,i._)("tbody",null,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(v.value,((t,a)=>((0,i.wg)(),(0,i.iD)("tr",{key:a,style:(0,oe.j5)({height:e.cellMinHeight+"px"})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t,((t,o)=>(0,i.wy)(((0,i.wg)(),(0,i.iD)("td",{class:(0,oe.C_)(["cell",{selected:b.value.includes(`${a}_${o}`)&&b.value.length>1,active:_.value===`${a}_${o}`}]),style:(0,oe.j5)({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px",...(0,s.SU)($s)(t.style)}),key:t.id,rowspan:t.rowspan,colspan:t.colspan,"data-cell-index":`${a}_${o}`,onMousedown:e=>S(e,a,o),onMouseenter:e=>C(a,o)},[_.value===`${a}_${o}`?((0,i.wg)(),(0,i.j4)(Ns,{key:0,class:(0,oe.C_)(["cell-text",{active:_.value===`${a}_${o}`}]),style:(0,oe.j5)({minHeight:e.cellMinHeight-4+"px"}),value:t.text,onUpdateValue:e=>(0,s.SU)(N)(e,a,o),onInsertExcelData:e=>j(e,a,o)},null,8,["class","style","value","onUpdateValue","onInsertExcelData"])):((0,i.wg)(),(0,i.iD)("div",{key:1,class:"cell-text",style:(0,oe.j5)({minHeight:e.cellMinHeight-4+"px"}),innerHTML:(0,s.SU)(Zs)(t.text)},null,12,qs))],46,Js)),[[n.F8,!(0,s.SU)(k).includes(`${a}_${o}`)],[l,e=>q(e)]]))),128))],4)))),128))])],6)],4)}}});const Gs=(0,Vl.Z)(Xs,[["__scopeId","data-v-0236a619"]]);var Ks=Gs;const Qs={class:"element-content"};var er=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=R(),a=$(),{canvasScale:r,handleElementId:u,isScaling:c}=(0,o.Jk)(l),d=(0,s.iH)(),{addHistorySnapshot:p}=da(),v=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},m=(0,s.iH)(!1);(0,i.YP)(u,(()=>{u.value!==t.elementInfo.id&&(m.value=!1)})),(0,i.YP)(m,(()=>{l.setDisableHotkeysState(m.value)}));const h=()=>{t.elementInfo.lock||(m.value=!0)},f=(0,s.iH)(-1);(0,i.YP)(c,(()=>{u.value===t.elementInfo.id&&(c.value&&(m.value=!1),c.value||-1===f.value||(a.updateElement({id:t.elementInfo.id,props:{height:f.value}}),f.value=-1))}));const g=e=>{const l=e[0].contentRect;if(!d.value)return;const n=l.height;t.elementInfo.height!==n&&(c.value?f.value=n:a.updateElement({id:t.elementInfo.id,props:{height:n}}))},y=new ResizeObserver(g);(0,i.bv)((()=>{d.value&&y.observe(d.value)})),(0,i.Ah)((()=>{d.value&&y.unobserve(d.value)}));const w=e=>{a.updateElement({id:t.elementInfo.id,props:{data:e}}),p()},x=e=>{const l=e.reduce(((e,t)=>e+t)),n=e.map((e=>e/l));a.updateElement({id:t.elementInfo.id,props:{width:l,colWidths:n}}),p()},k=e=>{(0,i.Y3)((()=>l.setSelectedTableCells(e)))};return(e,t)=>{const l=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-table",{lock:e.elementInfo.lock}]),ref_key:"elementRef",ref:d,style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",Qs,[(0,i.Wm)(Ks,{onMousedown:t[0]||(t[0]=(0,n.iM)((()=>{}),["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,cellMinHeight:e.elementInfo.cellMinHeight,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:m.value,onChange:t[1]||(t[1]=e=>w(e)),onChangeColWidths:t[2]||(t[2]=e=>x(e)),onChangeSelectedCells:t[3]||(t[3]=e=>k(e))},null,8,["data","width","cellMinHeight","colWidths","outline","theme","editable"]),!m.value||e.elementInfo.lock?((0,i.wg)(),(0,i.iD)("div",{key:0,class:(0,oe.C_)(["table-mask",{lock:e.elementInfo.lock}]),onDblclick:t[4]||(t[4]=e=>h()),onMousedown:t[5]||(t[5]=e=>v(e)),onTouchstart:t[6]||(t[6]=e=>v(e))},[(0,s.SU)(u)===e.elementInfo.id?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"mask-tip",style:(0,oe.j5)({transform:`scale(${1/(0,s.SU)(r)})`})},"双击编辑",4)):(0,i.kq)("",!0)],34)):(0,i.kq)("",!0)])),[[l,e.contextmenus]])],4)],6)}}});const tr=(0,Vl.Z)(er,[["__scopeId","data-v-742a731e"]]);var lr=tr;const ar=["width","height","stroke","stroke-width"],nr=["transform"],or=["d"];var ir=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,l=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))},a=()=>{Oi.emit(Ai.OPEN_LATEX_EDITOR)};return(e,t)=>{const n=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-latex",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",onMousedown:t[0]||(t[0]=e=>l(e)),onTouchstart:t[1]||(t[1]=e=>l(e)),onDblclick:t[2]||(t[2]=e=>a())},[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.strokeWidth,fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[(0,i._)("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[(0,i._)("path",{d:e.elementInfo.path},null,8,or)],8,nr)],8,ar))],32)),[[n,e.contextmenus]])],4)],6)}}});const sr=(0,Vl.Z)(ir,[["__scopeId","data-v-35c33b80"]]);var rr=sr,ur=(e,t)=>{(0,i.bv)((()=>{if(!t.value)return;let l="normal";if(/m3u8(#|\?|$)/i.exec(e)?l="hls":/.flv(#|\?|$)/i.exec(e)&&(l="flv"),t.value&&"hls"===l&&(t.value.canPlayType("application/x-mpegURL")||t.value.canPlayType("application/vnd.apple.mpegURL"))&&(l="normal"),"hls"===l){const l=window.Hls;if(l&&l.isSupported()){const a=new l;a.loadSource(e),a.attachMedia(t.value)}}else if("flv"===l){const l=window.flvjs;if(l&&l.isSupported()){const a=l.createPlayer({type:"flv",url:e});a.attachMediaElement(t.value),a.load()}}}))};const cr=e=>((0,i.dD)("data-v-e55352ca"),e=e(),(0,i.Cn)(),e),dr={key:0,class:"load-error"},pr=["src","autoplay","poster"],vr={class:"bezel"},mr=cr((()=>(0,i._)("div",{class:"controller-mask"},null,-1))),hr={class:"controller"},fr={class:"icons icons-left"},gr={class:"icon-content"},yr={class:"volume"},wr={class:"icon-content"},xr=cr((()=>(0,i._)("span",{class:"thumb"},null,-1))),kr=[xr],br={class:"time"},_r={class:"ptime"},Ir={class:"dtime"},Sr={class:"icons icons-right"},Cr={class:"speed"},Lr={class:"icon speed-icon"},Tr=["onClick"],Er={class:"icon-content"},Mr={class:"bar"},Ur=cr((()=>(0,i._)("span",{class:"thumb"},null,-1))),Wr=[Ur];var Dr=(0,i.aZ)({__name:"index",props:{width:{},height:{},src:{},poster:{default:""},autoplay:{type:Boolean,default:!1},scale:{default:1}},setup(e){const t=e,l=(e=0)=>{if(0===e||isNaN(e))return"00:00";const t=e=>e<10?"0"+e:""+e,l=Math.floor(e/3600),a=Math.floor((e-3600*l)/60),n=Math.floor(e-3600*l-60*a);return(l>0?[l,a,n]:[a,n]).map(t).join(":")},a=e=>e.getBoundingClientRect().left,n=(0,s.iH)(),o=(0,s.iH)(),r=(0,s.iH)(),u=(0,s.iH)(.5),c=(0,s.iH)(!0),d=(0,s.iH)(0),p=(0,s.iH)(0),v=(0,s.iH)(0),m=(0,s.iH)(!1),h=(0,s.iH)(!1),f=(0,s.iH)(1),g=(0,s.iH)(!1),y=(0,s.iH)("00:00"),w=(0,s.iH)("0"),x=(0,i.Fl)((()=>l(d.value))),k=(0,i.Fl)((()=>l(p.value))),b=(0,i.Fl)((()=>d.value/p.value*100+"%")),_=(0,i.Fl)((()=>v.value/p.value*100+"%")),I=(0,i.Fl)((()=>100*u.value+"%")),S=(0,s.iH)(!1),C=[{label:"2x",value:2},{label:"1.5x",value:1.5},{label:"1.25x",value:1.25},{label:"1x",value:1},{label:"0.75x",value:.75},{label:"0.5x",value:.5}],L=e=>{n.value&&(e=Math.max(e,0),e=Math.min(e,p.value),n.value.currentTime=e,d.value=e)},T=()=>{n.value&&(c.value=!1,n.value.play(),h.value=!0)},E=()=>{n.value&&(c.value=!0,n.value.pause(),h.value=!0)},M=()=>{c.value?T():E()},U=e=>{n.value&&(e=Math.max(e,0),e=Math.min(e,1),n.value.volume=e,u.value=e,n.value.muted&&0!==e&&(n.value.muted=!1))},W=e=>{n.value&&(n.value.playbackRate=e),f.value=e},D=()=>{p.value=n.value?.duration||0},H=()=>{d.value=n.value?.currentTime||0},F=()=>{m.value?(L(0),T()):E()},A=()=>{v.value=n.value?.buffered.length?n.value.buffered.end(n.value.buffered.length-1):0},$=(0,s.iH)(!1),Z=()=>$.value=!0,O=e=>{if(!n.value||!o.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-a(o.value))/o.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const i=l*p.value;n.value.currentTime=i,d.value=i},R=e=>{if(!n.value||!o.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-a(o.value))/o.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const i=l*p.value;n.value.currentTime=i,d.value=i,document.removeEventListener("mousemove",O),document.removeEventListener("touchmove",O),document.removeEventListener("mouseup",R),document.removeEventListener("touchend",R)},z=()=>{document.addEventListener("mousemove",O),document.addEventListener("touchmove",O),document.addEventListener("mouseup",R),document.addEventListener("touchend",R)},P=e=>{if(!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(t-a(r.value))/45;U(l)},B=()=>{document.removeEventListener("mousemove",P),document.removeEventListener("touchmove",P),document.removeEventListener("mouseup",B),document.removeEventListener("touchend",B)},N=()=>{document.addEventListener("mousemove",P),document.addEventListener("touchmove",P),document.addEventListener("mouseup",B),document.addEventListener("touchend",B)},j=e=>{if(!r.value)return;const t=(e.clientX-a(r.value))/45;U(t)},Y=e=>{if(p.value&&o.value){const t=o.value.getBoundingClientRect().left,a=e.clientX-t;if(a<0||a>o.value.offsetWidth)return;const n=p.value*(a/o.value.offsetWidth);w.value=a-(n>=3600?25:20)+"px",y.value=l(n),g.value=!0}},V=()=>{n.value&&(n.value.muted?(n.value.muted=!1,U(.5)):(n.value.muted=!0,U(0)))},J=()=>{m.value=!m.value},q=(0,s.iH)(-1),X=(0,s.iH)(!1),G=()=>{X.value=!1,clearTimeout(q.value),q.value=setTimeout((()=>{n.value?.played.length&&(X.value=!0)}),3e3)};return ur(t.src,n),(e,t)=>{const l=(0,i.up)("IconPause"),a=(0,i.up)("IconPlayOne"),s=(0,i.up)("IconVolumeMute"),d=(0,i.up)("IconVolumeNotice"),p=(0,i.up)("IconVolumeSmall");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["video-player",{"hide-controller":X.value}]),style:(0,oe.j5)({width:e.width*e.scale+"px",height:e.height*e.scale+"px",transform:`scale(${1/e.scale})`}),onMousemove:t[22]||(t[22]=e=>G()),onClick:t[23]||(t[23]=e=>G())},[(0,i._)("div",{class:"video-wrap",onClick:t[8]||(t[8]=e=>M())},[$.value?((0,i.wg)(),(0,i.iD)("div",dr,"视频加载失败")):(0,i.kq)("",!0),(0,i._)("video",{class:"video",ref_key:"videoRef",ref:n,src:e.src,autoplay:e.autoplay,poster:e.poster,"webkit-playsinline":"",playsinline:"",onDurationchange:t[0]||(t[0]=e=>D()),onTimeupdate:t[1]||(t[1]=e=>H()),onEnded:t[2]||(t[2]=e=>F()),onProgress:t[3]||(t[3]=e=>A()),onPlay:t[4]||(t[4]=e=>{G(),c.value=!1}),onPause:t[5]||(t[5]=e=>G()),onError:t[6]||(t[6]=e=>Z())},null,40,pr),(0,i._)("div",vr,[(0,i._)("span",{class:(0,oe.C_)(["bezel-icon",{"bezel-transition":h.value}]),onAnimationend:t[7]||(t[7]=e=>h.value=!1)},[c.value?((0,i.wg)(),(0,i.j4)(l,{key:0})):((0,i.wg)(),(0,i.j4)(a,{key:1}))],34)])]),mr,(0,i._)("div",hr,[(0,i._)("div",fr,[(0,i._)("div",{class:"icon play-icon",onClick:t[9]||(t[9]=e=>M())},[(0,i._)("span",gr,[c.value?((0,i.wg)(),(0,i.j4)(a,{key:0})):((0,i.wg)(),(0,i.j4)(l,{key:1}))])]),(0,i._)("div",yr,[(0,i._)("div",{class:"icon volume-icon",onClick:t[10]||(t[10]=e=>V())},[(0,i._)("span",wr,[0===u.value?((0,i.wg)(),(0,i.j4)(s,{key:0})):1===u.value?((0,i.wg)(),(0,i.j4)(d,{key:1})):((0,i.wg)(),(0,i.j4)(p,{key:2}))])]),(0,i._)("div",{class:"volume-bar-wrap",onMousedown:t[11]||(t[11]=e=>N()),onTouchstart:t[12]||(t[12]=e=>N()),onClick:t[13]||(t[13]=e=>j(e))},[(0,i._)("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:r},[(0,i._)("div",{class:"volume-bar-inner",style:(0,oe.j5)({width:I.value})},kr,4)],512)],32)]),(0,i._)("span",br,[(0,i._)("span",_r,(0,oe.zw)(x.value),1),(0,i.Uk)(" / "),(0,i._)("span",Ir,(0,oe.zw)(k.value),1)])]),(0,i._)("div",Sr,[(0,i._)("div",Cr,[(0,i._)("div",Lr,[(0,i._)("span",{class:"icon-content",onClick:t[14]||(t[14]=e=>S.value=!S.value)},(0,oe.zw)(1===f.value?"倍速":f.value+"x"),1),S.value?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"speed-menu",onMouseleave:t[15]||(t[15]=e=>S.value=!1)},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(C,(e=>(0,i._)("div",{class:(0,oe.C_)(["speed-menu-item",{active:e.value===f.value}]),key:e.label,onClick:t=>W(e.value)},(0,oe.zw)(e.label),11,Tr))),64))],32)):(0,i.kq)("",!0)])]),(0,i._)("div",{class:"loop",onClick:t[16]||(t[16]=e=>J())},[(0,i._)("div",{class:(0,oe.C_)(["icon loop-icon",{active:m.value}])},[(0,i._)("span",Er,"循环"+(0,oe.zw)(m.value?"开":"关"),1)],2)])]),(0,i._)("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:o,onMousedown:t[17]||(t[17]=e=>z()),onTouchstart:t[18]||(t[18]=e=>z()),onMousemove:t[19]||(t[19]=e=>Y(e)),onMouseenter:t[20]||(t[20]=e=>g.value=!0),onMouseleave:t[21]||(t[21]=e=>g.value=!1)},[(0,i._)("div",{class:(0,oe.C_)(["bar-time",{hidden:!g.value}]),style:(0,oe.j5)({left:w.value})},(0,oe.zw)(y.value),7),(0,i._)("div",Mr,[(0,i._)("div",{class:"loaded",style:(0,oe.j5)({width:_.value})},null,4),(0,i._)("div",{class:"played",style:(0,oe.j5)({width:b.value})},Wr,4)])],544)])],38)}}});const Hr=(0,Vl.Z)(Dr,[["__scopeId","data-v-e55352ca"]]);var Fr=Hr,Ar=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(e,l=!0)=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo,l))};return(e,t)=>{const n=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-video",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",onMousedown:t[2]||(t[2]=e=>a(e,!1)),onTouchstart:t[3]||(t[3]=e=>a(e,!1))},[(0,i.Wm)(Fr,{width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,scale:(0,s.SU)(l)},null,8,["width","height","src","poster","scale"]),((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(["t","b","l","r"],(e=>(0,i._)("div",{class:(0,oe.C_)(["handler-border",e]),key:e,onMousedown:t[0]||(t[0]=e=>a(e)),onTouchstart:t[1]||(t[1]=e=>a(e))},null,34))),64))],32)),[[n,e.contextmenus]])],4)],6)}}});const $r=(0,Vl.Z)(Ar,[["__scopeId","data-v-5dc89f2a"]]);var Zr=$r;const Or=e=>((0,i.dD)("data-v-44037f56"),e=e(),(0,i.Cn)(),e),Rr=["src","autoplay"],zr={class:"controller"},Pr={class:"icons"},Br={class:"icon-content"},Nr={class:"volume"},jr={class:"icon-content"},Yr=Or((()=>(0,i._)("span",{class:"thumb"},null,-1))),Vr=[Yr],Jr={class:"time"},qr={class:"ptime"},Xr={class:"dtime"},Gr={class:"bar"},Kr=Or((()=>(0,i._)("span",{class:"thumb"},null,-1))),Qr=[Kr];var eu=(0,i.aZ)({__name:"AudioPlayer",props:{src:{},loop:{type:Boolean},autoplay:{type:Boolean,default:!1},scale:{default:1}},setup(e,{expose:t}){const l=e,a=(e=0)=>{if(0===e||isNaN(e))return"00:00";const t=e=>e<10?"0"+e:""+e,l=Math.floor(e/3600),a=Math.floor((e-3600*l)/60),n=Math.floor(e-3600*l-60*a);return(l>0?[l,a,n]:[a,n]).map(t).join(":")},n=e=>e.getBoundingClientRect().left,o=(0,s.iH)(),r=(0,s.iH)(),u=(0,s.iH)(),c=(0,s.iH)(.5),d=(0,s.iH)(!0),p=(0,s.iH)(0),v=(0,s.iH)(0),m=(0,s.iH)(0),h=(0,s.iH)(!1),f=(0,s.iH)("00:00"),g=(0,s.iH)("0"),y=(0,i.Fl)((()=>a(p.value))),w=(0,i.Fl)((()=>a(v.value))),x=(0,i.Fl)((()=>p.value/v.value*100+"%")),k=(0,i.Fl)((()=>m.value/v.value*100+"%")),b=(0,i.Fl)((()=>100*c.value+"%")),_=e=>{o.value&&(e=Math.max(e,0),e=Math.min(e,v.value),o.value.currentTime=e,p.value=e)},I=()=>{o.value&&(d.value=!1,o.value.play())},S=()=>{o.value&&(d.value=!0,o.value.pause())},C=()=>{d.value?I():S()},L=e=>{o.value&&(e=Math.max(e,0),e=Math.min(e,1),o.value.volume=e,c.value=e,o.value.muted&&0!==e&&(o.value.muted=!1))},T=()=>{v.value=o.value?.duration||0},E=()=>{p.value=o.value?.currentTime||0},M=()=>{d.value=!1},U=()=>{l.loop?(_(0),I()):S()},W=()=>{m.value=o.value?.buffered.length?o.value.buffered.end(o.value.buffered.length-1):0},D=()=>ta.error("视频加载失败"),H=e=>{if(!o.value||!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-n(r.value))/r.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const a=l*v.value;o.value.currentTime=a,p.value=a},F=e=>{if(!o.value||!r.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let l=(t-n(r.value))/r.value.clientWidth;l=Math.max(l,0),l=Math.min(l,1);const a=l*v.value;o.value.currentTime=a,p.value=a,document.removeEventListener("mousemove",H),document.removeEventListener("touchmove",H),document.removeEventListener("mouseup",F),document.removeEventListener("touchend",F)},A=()=>{document.addEventListener("mousemove",H),document.addEventListener("touchmove",H),document.addEventListener("mouseup",F),document.addEventListener("touchend",F)},$=e=>{if(!u.value)return;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX,l=(t-n(u.value))/45;L(l)},Z=()=>{document.removeEventListener("mousemove",$),document.removeEventListener("touchmove",$),document.removeEventListener("mouseup",Z),document.removeEventListener("touchend",Z)},O=()=>{document.addEventListener("mousemove",$),document.addEventListener("touchmove",$),document.addEventListener("mouseup",Z),document.addEventListener("touchend",Z)},R=e=>{if(!u.value)return;const t=(e.clientX-n(u.value))/45;L(t)},z=e=>{if(v.value&&r.value){const t=r.value.getBoundingClientRect().left,l=e.clientX-t;if(l<0||l>r.value.offsetWidth)return;const n=v.value*(l/r.value.offsetWidth);g.value=l-(n>=3600?25:20)+"px",f.value=a(n),h.value=!0}},P=()=>{o.value&&(o.value.muted?(o.value.muted=!1,L(.5)):(o.value.muted=!0,L(0)))};return t({toggle:C}),(e,t)=>{const l=(0,i.up)("IconPlayOne"),a=(0,i.up)("IconPause"),n=(0,i.up)("IconVolumeMute"),s=(0,i.up)("IconVolumeNotice"),p=(0,i.up)("IconVolumeSmall");return(0,i.wg)(),(0,i.iD)("div",{class:"audio-player",style:(0,oe.j5)({transform:`scale(${1/e.scale})`})},[(0,i._)("audio",{class:"audio",ref_key:"audioRef",ref:o,src:e.src,autoplay:e.autoplay,onDurationchange:t[0]||(t[0]=e=>T()),onTimeupdate:t[1]||(t[1]=e=>E()),onPlay:t[2]||(t[2]=e=>M()),onEnded:t[3]||(t[3]=e=>U()),onProgress:t[4]||(t[4]=e=>W()),onError:t[5]||(t[5]=e=>D())},null,40,Rr),(0,i._)("div",zr,[(0,i._)("div",Pr,[(0,i._)("div",{class:"icon play-icon",onClick:t[6]||(t[6]=e=>C())},[(0,i._)("span",Br,[d.value?((0,i.wg)(),(0,i.j4)(l,{key:0})):((0,i.wg)(),(0,i.j4)(a,{key:1}))])]),(0,i._)("div",Nr,[(0,i._)("div",{class:"icon volume-icon",onClick:t[7]||(t[7]=e=>P())},[(0,i._)("span",jr,[0===c.value?((0,i.wg)(),(0,i.j4)(n,{key:0})):1===c.value?((0,i.wg)(),(0,i.j4)(s,{key:1})):((0,i.wg)(),(0,i.j4)(p,{key:2}))])]),(0,i._)("div",{class:"volume-bar-wrap",onMousedown:t[8]||(t[8]=e=>O()),onTouchstart:t[9]||(t[9]=e=>O()),onClick:t[10]||(t[10]=e=>R(e))},[(0,i._)("div",{class:"volume-bar",ref_key:"volumeBarRef",ref:u},[(0,i._)("div",{class:"volume-bar-inner",style:(0,oe.j5)({width:b.value})},Vr,4)],512)],32)])]),(0,i._)("span",Jr,[(0,i._)("span",qr,(0,oe.zw)(y.value),1),(0,i.Uk)(" / "),(0,i._)("span",Xr,(0,oe.zw)(w.value),1)]),(0,i._)("div",{class:"bar-wrap",ref_key:"playBarWrap",ref:r,onMousedown:t[11]||(t[11]=e=>A()),onTouchstart:t[12]||(t[12]=e=>A()),onMousemove:t[13]||(t[13]=e=>z(e)),onMouseenter:t[14]||(t[14]=e=>h.value=!0),onMouseleave:t[15]||(t[15]=e=>h.value=!1)},[(0,i._)("div",{class:(0,oe.C_)(["bar-time",{hidden:!h.value}]),style:(0,oe.j5)({left:g.value})},(0,oe.zw)(f.value),7),(0,i._)("div",Gr,[(0,i._)("div",{class:"loaded",style:(0,oe.j5)({width:k.value})},null,4),(0,i._)("div",{class:"played",style:(0,oe.j5)({width:x.value})},Qr,4)])],544)])],4)}}});const tu=(0,Vl.Z)(eu,[["__scopeId","data-v-44037f56"]]);var lu=tu,au=(0,i.aZ)({__name:"index",props:{elementInfo:{},selectElement:{type:Function},contextmenus:{type:Function}},setup(e){const t=e,{canvasScale:l,handleElementId:a}=(0,o.Jk)(R()),{viewportRatio:r}=(0,o.Jk)($()),u=(0,i.Fl)((()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px")),c=(0,i.Fl)((()=>{const e=oa,a=oa*r.value,n=280/l.value,o=50/l.value,i=t.elementInfo.width,s=t.elementInfo.height,u=t.elementInfo.left,c=t.elementInfo.top;let d=0,p=s;return u+n>=e&&(d=i-n),c+s+o>=a&&(p=-o),{left:d+"px",top:p+"px"}})),d=e=>{t.elementInfo.lock||(e.stopPropagation(),t.selectElement(e,t.elementInfo))};return(e,t)=>{const o=(0,i.up)("IconVolumeNotice"),r=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["editable-element-audio",{lock:e.elementInfo.lock}]),style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"element-content",onMousedown:t[1]||(t[1]=e=>d(e)),onTouchstart:t[2]||(t[2]=e=>d(e))},[(0,i.Wm)(o,{class:"audio-icon",style:(0,oe.j5)({fontSize:u.value,color:e.elementInfo.color})},null,8,["style"]),(0,s.SU)(a)===e.elementInfo.id?((0,i.wg)(),(0,i.j4)(lu,{key:0,class:"audio-player",style:(0,oe.j5)({...c.value}),src:e.elementInfo.src,loop:e.elementInfo.loop,scale:(0,s.SU)(l),onMousedown:t[0]||(t[0]=(0,n.iM)((()=>{}),["stop"]))},null,8,["style","src","loop","scale"])):(0,i.kq)("",!0)],32)),[[r,e.contextmenus]])],4)],6)}}});const nu=(0,Vl.Z)(au,[["__scopeId","data-v-53bdc956"]]);var ou=nu;const iu=["id"];var su=(0,i.aZ)({__name:"EditableElement",props:{elementInfo:{},elementIndex:{},isMultiSelect:{type:Boolean},selectElement:{type:Function},openLinkDialog:{type:Function}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e={[sa.IMAGE]:$o,[sa.TEXT]:ls,[sa.SHAPE]:ys,[sa.LINE]:Es,[sa.CHART]:As,[sa.TABLE]:lr,[sa.LATEX]:rr,[sa.VIDEO]:Zr,[sa.AUDIO]:ou};return e[t.elementInfo.type]||null})),{orderElement:a}=ba(),{alignElementToCanvas:n}=qn(),{combineElements:o,uncombineElements:s}=ya(),{deleteElement:r}=ga(),{lockElement:u,unlockElement:c}=fa(),{copyElement:d,pasteElement:p,cutElement:v}=wa(),{selectAllElement:m}=xa(),h=()=>t.elementInfo.lock?[{text:"解锁",handler:()=>c(t.elementInfo)}]:[{text:"剪切",subText:"Ctrl + X",handler:v},{text:"复制",subText:"Ctrl + C",handler:d},{text:"粘贴",subText:"Ctrl + V",handler:p},{divider:!0},{text:"水平居中",handler:()=>n(ee.HORIZONTAL),children:[{text:"水平垂直居中",handler:()=>n(ee.CENTER)},{text:"水平居中",handler:()=>n(ee.HORIZONTAL)},{text:"左对齐",handler:()=>n(ee.LEFT)},{text:"右对齐",handler:()=>n(ee.RIGHT)}]},{text:"垂直居中",handler:()=>n(ee.VERTICAL),children:[{text:"水平垂直居中",handler:()=>n(ee.CENTER)},{text:"垂直居中",handler:()=>n(ee.VERTICAL)},{text:"顶部对齐",handler:()=>n(ee.TOP)},{text:"底部对齐",handler:()=>n(ee.BOTTOM)}]},{divider:!0},{text:"置于顶层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:()=>a(t.elementInfo,Q.TOP),children:[{text:"置于顶层",handler:()=>a(t.elementInfo,Q.TOP)},{text:"上移一层",handler:()=>a(t.elementInfo,Q.UP)}]},{text:"置于底层",disable:t.isMultiSelect&&!t.elementInfo.groupId,handler:()=>a(t.elementInfo,Q.BOTTOM),children:[{text:"置于底层",handler:()=>a(t.elementInfo,Q.BOTTOM)},{text:"下移一层",handler:()=>a(t.elementInfo,Q.DOWN)}]},{divider:!0},{text:"设置链接",handler:t.openLinkDialog},{text:t.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:t.elementInfo.groupId?s:o,hide:!t.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:m},{text:"锁定",subText:"Ctrl + L",handler:u},{text:"删除",subText:"Delete",handler:r}];return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"editable-element",ref:"elementRef",id:`editable-element-${e.elementInfo.id}`,style:(0,oe.j5)({zIndex:e.elementIndex})},[((0,i.wg)(),(0,i.j4)((0,i.LL)(l.value),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:h},null,8,["elementInfo","selectElement"]))],12,iu))}});const ru=su;var uu=ru,cu=(0,i.aZ)({__name:"MouseSelection",props:{top:{},left:{},width:{},height:{},quadrant:{}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(`mouse-selection quadrant-${e.quadrant}`),style:(0,oe.j5)({top:e.top+"px",left:e.left+"px",width:e.width+"px",height:e.height+"px"})},null,6))}});const du=(0,Vl.Z)(cu,[["__scopeId","data-v-2c5e1d42"]]);var pu=du;const vu={class:"grid-lines"},mu=["d","stroke"];var hu=(0,i.aZ)({__name:"GridLines",setup(e){const{canvasScale:t,gridLineSize:l}=(0,o.Jk)(R()),{currentSlide:a,viewportRatio:n}=(0,o.Jk)($()),r=(0,i.Fl)((()=>a.value?.background)),u=(0,i.Fl)((()=>{const e=r.value?.color||"#fff",t=["#000","#fff"];return W.Z.mostReadable(e,t,{includeFallbackColors:!0}).setAlpha(.5).toRgbString()})),c=(0,i.Fl)((()=>{const e=oa,t=oa*n.value;let a="";for(let n=0;n<=Math.floor(t/l.value);n++)a+=`M0 ${n*l.value} L${e} ${n*l.value} `;for(let n=0;n<=Math.floor(e/l.value);n++)a+=`M${n*l.value} 0 L${n*l.value} ${t} `;return a}));return(e,l)=>((0,i.wg)(),(0,i.iD)("svg",vu,[(0,i._)("path",{style:(0,oe.j5)({transform:`scale(${(0,s.SU)(t)})`}),d:c.value,fill:"none",stroke:u.value,"stroke-width":"0.3","stroke-dasharray":"5"},null,12,mu)]))}});const fu=(0,Vl.Z)(hu,[["__scopeId","data-v-05484a24"]]);var gu=fu,yu=e=>{const t=(0,i.Fl)((()=>{if(!e.value)return{backgroundColor:"#fff"};const{type:t,color:l,image:a,imageSize:n,gradientColor:o,gradientRotate:i,gradientType:s}=e.value;if("solid"===t)return{backgroundColor:l};if("image"===t)return a?"repeat"===n?{backgroundImage:`url(${a}`,backgroundRepeat:"repeat",backgroundSize:"contain"}:{backgroundImage:`url(${a}`,backgroundRepeat:"no-repeat",backgroundSize:n||"cover"}:{backgroundColor:"#fff"};if("gradient"===t){const e=i||0,t=o?o[0]:"#fff",l=o?o[1]:"#fff";return"radial"===s?{backgroundImage:`radial-gradient(${t}, ${l}`}:{backgroundImage:`linear-gradient(${e}deg, ${t}, ${l}`}}return{backgroundColor:"#fff"}}));return{backgroundStyle:t}},wu=(0,i.aZ)({__name:"ViewportBackground",setup(e){const{gridLineSize:t}=(0,o.Jk)(R()),{currentSlide:l}=(0,o.Jk)($()),a=(0,i.Fl)((()=>l.value?.background)),{backgroundStyle:n}=yu(a);return(e,l)=>((0,i.wg)(),(0,i.iD)("div",{class:"viewport-background",style:(0,oe.j5)((0,s.SU)(n))},[(0,s.SU)(t)?((0,i.wg)(),(0,i.j4)(gu,{key:0})):(0,i.kq)("",!0)],4))}});const xu=(0,Vl.Z)(wu,[["__scopeId","data-v-b6b18502"]]);var ku=xu,bu=(0,i.aZ)({__name:"AlignmentLine",props:{type:{},axis:{},length:{},canvasScale:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.axis.x*t.canvasScale+"px")),a=(0,i.Fl)((()=>t.axis.y*t.canvasScale+"px")),n=(0,i.Fl)((()=>"vertical"===t.type?{height:t.length*t.canvasScale+"px"}:{width:t.length*t.canvasScale+"px"}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"alignment-line",style:(0,oe.j5)({left:l.value,top:a.value})},[(0,i._)("div",{class:(0,oe.C_)(["line",e.type]),style:(0,oe.j5)(n.value)},null,6)],4))}});const _u=(0,Vl.Z)(bu,[["__scopeId","data-v-ed6fc00a"]]);var Iu=_u;const Su={class:"ruler"};var Cu=(0,i.aZ)({__name:"Ruler",props:{viewportStyles:{}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>t.viewportStyles.width*l.value/10));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Su,[(0,i._)("div",{class:"h",style:(0,oe.j5)({width:e.viewportStyles.width*(0,s.SU)(l)+"px",left:e.viewportStyles.left+"px"})},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(20,(e=>(0,i._)("div",{class:(0,oe.C_)(["ruler-marker-100",{hide:a.value<36,omit:a.value<72}]),key:`marker-100-${e}`},[(0,i._)("span",null,(0,oe.zw)(e),1)],2))),64))],4),(0,i._)("div",{class:"v",style:(0,oe.j5)({height:e.viewportStyles.height*(0,s.SU)(l)+"px",top:e.viewportStyles.top+"px"})},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(20,(e=>(0,i._)("div",{class:(0,oe.C_)(["ruler-marker-100",{hide:a.value<36,omit:a.value<72}]),key:e,style:(0,oe.j5)({height:a.value+"px"})},[(0,i._)("span",null,(0,oe.zw)(e),1)],6))),64))],4)]))}});const Lu=(0,Vl.Z)(Cu,[["__scopeId","data-v-2963c74c"]]);var Tu=Lu;const Eu=["width","height"],Mu=["d"];var Uu=(0,i.aZ)({__name:"ElementCreateSelection",emits:["created"],setup(e,{emit:t}){const l=t,a=R(),{creatingElement:r}=(0,o.Jk)(a),{ctrlOrShiftKeyActive:u}=(0,o.Jk)(q()),c=(0,s.iH)(),d=(0,s.iH)(),p=(0,s.iH)(),v=(0,s.iH)({x:0,y:0});(0,i.bv)((()=>{if(!p.value)return;const{x:e,y:t}=p.value.getBoundingClientRect();v.value={x:e,y:t}}));const m=e=>{let t=!0;const n=e.pageX,o=e.pageY;c.value=[n,o],document.onmousemove=e=>{if(!r.value||!t)return;let l=e.pageX,a=e.pageY;if(u.value){const e=l-n,t=a-o,i=Math.abs(e),s=Math.abs(t);if("shape"===r.value.type){const r=t>0&&e<0||t<0&&e>0;i>s?a=r?o-e:o+e:l=r?n-t:n+t}else"line"===r.value.type&&(i>s?a=o:l=n)}d.value=[l,a]},document.onmouseup=e=>{if(document.onmousemove=null,document.onmouseup=null,2===e.button)return void setTimeout((()=>a.setCreatingElement(null)),0);t=!1;const i=e.pageX,s=e.pageY,u=30;if("line"===r.value?.type&&(Math.abs(i-n)>=u||Math.abs(s-o)>=u))l("created",{start:c.value,end:d.value});else if("line"!==r.value?.type&&Math.abs(i-n)>=u&&Math.abs(s-o)>=u)l("created",{start:c.value,end:d.value});else{const e=200,t=Math.min(i,n),a=Math.min(s,o),r=Math.max(i,n),c=Math.max(s,o),d=r-t>=u?r-t:e,p=c-a>=u?c-a:e;l("created",{start:[t,a],end:[t+d,a+p]})}}},h=(0,i.Fl)((()=>{if(!c.value||!d.value)return null;if(!r.value||"line"!==r.value.type)return null;const[e,t]=c.value,[l,a]=d.value,n=Math.min(e,l),o=Math.max(e,l),i=Math.min(t,a),s=Math.max(t,a),u=o-n>=24?o-n:24,p=s-i>=24?s-i:24,v=e===n?0:o-n,m=t===i?0:s-i,h=l===n?0:o-n,f=a===i?0:s-i,g=`M${v}, ${m} L${h}, ${f}`;return{svgWidth:u,svgHeight:p,startX:v,startY:m,endX:h,endY:f,path:g}})),f=(0,i.Fl)((()=>{if(!c.value||!d.value)return{};const[e,t]=c.value,[l,a]=d.value,n=Math.min(e,l),o=Math.max(e,l),i=Math.min(t,a),s=Math.max(t,a),r=o-n,u=s-i;return{left:n-v.value.x+"px",top:i-v.value.y+"px",width:r+"px",height:u+"px"}}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"element-create-selection",ref_key:"selectionRef",ref:p,onMousedown:t[0]||(t[0]=(0,n.iM)((e=>m(e)),["stop"])),onContextmenu:t[1]||(t[1]=(0,n.iM)((()=>{}),["stop","prevent"]))},[c.value&&d.value?((0,i.wg)(),(0,i.iD)("div",{key:0,class:(0,oe.C_)(["selection",(0,s.SU)(r)?.type]),style:(0,oe.j5)(f.value)},["line"===(0,s.SU)(r)?.type&&h.value?((0,i.wg)(),(0,i.iD)("svg",{key:0,overflow:"visible",width:h.value.svgWidth,height:h.value.svgHeight},[(0,i._)("path",{d:h.value.path,stroke:"#d14424",fill:"none","stroke-width":"2"},null,8,Mu)],8,Eu)):(0,i.kq)("",!0)],6)):(0,i.kq)("",!0)],544))}});const Wu=(0,Vl.Z)(Uu,[["__scopeId","data-v-85b0bbaa"]]);var Du=Wu;const Hu={overflow:"visible"},Fu=["d","fill"];var Au=(0,i.aZ)({__name:"ShapeCreateCanvas",emits:["created"],setup(e,{emit:t}){const l=t,a=R(),{ctrlOrShiftKeyActive:r}=(0,o.Jk)(q()),{theme:u}=(0,o.Jk)($()),c=(0,s.iH)(),d=(0,s.iH)(!1),p=(0,s.iH)({x:0,y:0});(0,i.bv)((()=>{if(!c.value)return;const{x:e,y:t}=c.value.getBoundingClientRect();p.value={x:e,y:t}}));const v=(0,s.iH)(null),m=(0,s.iH)([]),h=(0,s.iH)(!1),f=(e,t=!1)=>{let l=e.pageX-p.value.x,a=e.pageY-p.value.y;if(t)return{pageX:l,pageY:a};if(r.value&&m.value.length){const[e,t]=m.value[m.value.length-1];Math.abs(e-l)-Math.abs(t-a)>0?a=t:l=e}return{pageX:l,pageY:a}},g=e=>{if(d.value){const{pageX:t,pageY:l}=f(e,!0);return m.value.push([t,l]),void(v.value=null)}const{pageX:t,pageY:l}=f(e);if(v.value=[t,l],m.value.length>=2){const[e,a]=m.value[0];Math.abs(e-t)<5&&Math.abs(a-l)<5?h.value=!0:h.value=!1}else h.value=!1},y=(0,i.Fl)((()=>{let e="";for(let t=0;t{const t=m.value.map((e=>e[0])),l=m.value.map((e=>e[1])),a=Math.min(...t),n=Math.min(...l),o=Math.max(...t),i=Math.max(...l),s=m.value.map((e=>[e[0]-a,e[1]-n]));let r="";for(let p=0;p{const{pageX:t,pageY:a}=f(e);d.value=!0,h.value?l("created",w()):m.value.push([t,a]),document.onmouseup=()=>{d.value=!1}},k=()=>{a.setCreatingCustomShapeState(!1)},b=()=>{l("created",{...w(!1),fill:"rgba(0, 0, 0, 0)",outline:{width:2,color:u.value.themeColor,style:"solid"}}),k()},_=e=>{const t=e.key.toUpperCase();t===ne.ESC&&k(),t===ne.ENTER&&b()};return(0,i.bv)((()=>{ta.success("点击绘制任意形状,首尾闭合完成绘制,按 ESC 键或鼠标右键取消,按 ENTER 键提前完成",{duration:5e3}),document.addEventListener("keydown",_)})),(0,i.Ah)((()=>document.removeEventListener("keydown",_))),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"shape-create-canvas",ref_key:"shapeCanvasRef",ref:c,onMousedown:t[0]||(t[0]=(0,n.iM)((e=>x(e)),["stop"])),onMousemove:t[1]||(t[1]=e=>g(e)),onContextmenu:t[2]||(t[2]=(0,n.iM)((e=>k()),["stop","prevent"]))},[((0,i.wg)(),(0,i.iD)("svg",Hu,[(0,i._)("path",{d:y.value,stroke:"#d14424",fill:h.value?"rgba(226, 83, 77, 0.15)":"none","stroke-width":"2"},null,8,Fu)]))],544))}});const $u=(0,Vl.Z)(Au,[["__scopeId","data-v-6dc9876e"]]);var Zu=$u,Ou=(e,t)=>{const l=(0,i.Fl)((()=>[{direction:le.LEFT_TOP,style:{}},{direction:le.TOP,style:{left:e.value/2+"px"}},{direction:le.RIGHT_TOP,style:{left:e.value+"px"}},{direction:le.LEFT,style:{top:t.value/2+"px"}},{direction:le.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:le.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:le.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:le.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}])),a=(0,i.Fl)((()=>[{direction:le.LEFT,style:{top:t.value/2+"px"}},{direction:le.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}])),n=(0,i.Fl)((()=>[{direction:le.TOP,style:{left:e.value/2+"px"}},{direction:le.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}}])),o=(0,i.Fl)((()=>[{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:l,textElementResizeHandlers:a,verticalTextElementResizeHandlers:n,borderLines:o}},Ru=(0,i.aZ)({__name:"ResizeHandler",props:{type:{},rotate:{default:0}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e="rotate-",l=t.rotate;return l>-22.5&&l<=22.5?e+0:l>22.5&&l<=67.5?e+45:l>67.5&&l<=112.5?e+90:l>112.5&&l<=157.5?e+135:l>157.5||l<=-157.5?e+0:l>-157.5&&l<=-112.5?e+45:l>-112.5&&l<=-67.5?e+90:l>-67.5&&l<=-22.5?e+135:e+0}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["resize-handler",l.value,e.type])},null,2))}});const zu=(0,Vl.Z)(Ru,[["__scopeId","data-v-1e66197f"]]);var Pu=zu,Bu=(0,i.aZ)({__name:"BorderLine",props:{type:{},isWide:{type:Boolean,default:!1}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["border-line",e.type,{wide:e.isWide}])},null,2))}});const Nu=(0,Vl.Z)(Bu,[["__scopeId","data-v-8346cf6c"]]);var ju=Nu,Yu=(0,i.aZ)({__name:"MultiSelectOperate",props:{elementList:{},scaleMultiElement:{type:Function}},setup(e){const t=e,{activeElementIdList:l,canvasScale:a}=(0,o.Jk)(R()),r=(0,i.Fl)((()=>t.elementList.filter((e=>l.value.includes(e.id))))),u=(0,s.iH)({minX:0,maxX:0,minY:0,maxY:0}),c=(0,i.Fl)((()=>(u.value.maxX-u.value.minX)*a.value)),d=(0,i.Fl)((()=>(u.value.maxY-u.value.minY)*a.value)),{resizeHandlers:p,borderLines:v}=Ou(c,d),m=()=>{const{minX:e,maxX:t,minY:l,maxY:a}=ke(r.value);u.value={minX:e,maxX:t,minY:l,maxY:a}};(0,i.m0)(m);const h=(0,i.Fl)((()=>r.value.some((e=>!!("image"!==e.type&&"shape"!==e.type||e.rotate)))));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"multi-select-operate",style:(0,oe.j5)({left:u.value.minX*(0,s.SU)(a)+"px",top:u.value.minY*(0,s.SU)(a)+"px"})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(v),(e=>((0,i.wg)(),(0,i.j4)(ju,{key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),h.value?(0,i.kq)("",!0):((0,i.wg)(!0),(0,i.iD)(i.HY,{key:0},(0,i.Ko)((0,s.SU)(p),(t=>((0,i.wg)(),(0,i.j4)(Pu,{key:t.direction,type:t.direction,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleMultiElement(l,u.value,t.direction)),["stop"])},null,8,["type","style","onMousedown"])))),128))],4))}});const Vu=(0,Vl.Z)(Yu,[["__scopeId","data-v-97dc9b9a"]]);var Ju=Vu;const qu={class:"rotate-handler"};function Xu(e,t){return(0,i.wg)(),(0,i.iD)("div",qu)}const Gu={},Ku=(0,Vl.Z)(Gu,[["render",Xu],["__scopeId","data-v-b99d8dae"]]);var Qu=Ku;const ec={inheritAttrs:!1};var tc=(0,i.aZ)({...ec,__name:"ImageElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function}},setup(e){const t=e,{canvasScale:l,clipingImageElementId:a}=(0,o.Jk)(R()),r=(0,i.Fl)((()=>a.value===t.elementInfo.id)),u=(0,i.Fl)((()=>t.elementInfo.width*l.value)),c=(0,i.Fl)((()=>t.elementInfo.height*l.value)),{resizeHandlers:d,borderLines:p}=Ou(u,c);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["image-element-operate",{cliping:r.value}])},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(p),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(d),(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onMousedown"])))),128)),(0,i.Wm)(Qu,{class:"operate-rotate-handler",style:(0,oe.j5)({left:u.value/2+"px"}),onMousedown:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"])],64)):(0,i.kq)("",!0)],2))}});const lc=(0,Vl.Z)(tc,[["__scopeId","data-v-7bcad5a9"]]);var ac=lc;const nc={class:"text-element-operate"},oc={inheritAttrs:!1};var ic=(0,i.aZ)({...oc,__name:"TextElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>t.elementInfo.width*l.value)),r=(0,i.Fl)((()=>t.elementInfo.height*l.value)),{textElementResizeHandlers:u,verticalTextElementResizeHandlers:c,borderLines:d}=Ou(a,r),p=(0,i.Fl)((()=>t.elementInfo.vertical?c.value:u.value));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",nc,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(d),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(p.value,(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onMousedown"])))),128)),(0,i.Wm)(Qu,{class:"operate-rotate-handler",style:(0,oe.j5)({left:a.value/2+"px"}),onMousedown:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"])],64)):(0,i.kq)("",!0)]))}});const sc=ic;var rc=sc;const uc={class:"shape-element-operate"},cc={inheritAttrs:!1};var dc=(0,i.aZ)({...cc,__name:"ShapeElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function},moveShapeKeypoint:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>t.elementInfo.width*l.value)),r=(0,i.Fl)((()=>t.elementInfo.height*l.value)),{resizeHandlers:u,borderLines:c}=Ou(a,r),d=(0,i.Fl)((()=>{if(!t.elementInfo.pathFormula||void 0===t.elementInfo.keypoint)return{};const e=ra[t.elementInfo.pathFormula];if("editable"in e){const a=e.getBaseSize(t.elementInfo.width,t.elementInfo.height)*t.elementInfo.keypoint;if("left"===e.relative)return{left:a*l.value+"px"};if("right"===e.relative)return{left:(t.elementInfo.width-a)*l.value+"px"};if("center"===e.relative)return{left:(t.elementInfo.width-a)/2*l.value+"px"};if("top"===e.relative)return{top:a*l.value+"px"};if("bottom"===e.relative)return{top:(t.elementInfo.height-a)*l.value+"px"}}return{}}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",uc,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(c),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(u),(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onMousedown"])))),128)),(0,i.Wm)(Qu,{class:"operate-rotate-handler",style:(0,oe.j5)({left:a.value/2+"px"}),onMousedown:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"]),void 0!==e.elementInfo.keypoint?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"operate-keypoint-handler",style:(0,oe.j5)(d.value),onMousedown:t[1]||(t[1]=(0,n.iM)((t=>e.moveShapeKeypoint(t,e.elementInfo)),["stop"]))},null,36)):(0,i.kq)("",!0)],64)):(0,i.kq)("",!0)]))}});const pc=(0,Vl.Z)(dc,[["__scopeId","data-v-52dcdbf8"]]);var vc=pc;const mc={class:"line-element-operate"},hc=["width","height","stroke"],fc={key:0},gc=["x1","y1","x2","y2"],yc=["x1","y1","x2","y2"],wc=["x1","y1","x2","y2"],xc=["x1","y1","x2","y2"],kc={inheritAttrs:!1};var bc=(0,i.aZ)({...kc,__name:"LineElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},dragLineElement:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>Math.max(t.elementInfo.start[0],t.elementInfo.end[0]))),r=(0,i.Fl)((()=>Math.max(t.elementInfo.start[1],t.elementInfo.end[1]))),u=(0,i.Fl)((()=>{const e=[{handler:ae.START,style:{left:t.elementInfo.start[0]*l.value+"px",top:t.elementInfo.start[1]*l.value+"px"}},{handler:ae.END,style:{left:t.elementInfo.end[0]*l.value+"px",top:t.elementInfo.end[1]*l.value+"px"}}];if(t.elementInfo.curve||t.elementInfo.broken){const a=t.elementInfo.curve||t.elementInfo.broken;e.push({handler:ae.C,style:{left:a[0]*l.value+"px",top:a[1]*l.value+"px"}})}else if(t.elementInfo.cubic){const[a,n]=t.elementInfo.cubic;e.push({handler:ae.C1,style:{left:a[0]*l.value+"px",top:a[1]*l.value+"px"}}),e.push({handler:ae.C2,style:{left:n[0]*l.value+"px",top:n[1]*l.value+"px"}})}return e}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",mc,[e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(u.value,(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.handler,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.dragLineElement(l,e.elementInfo,t.handler)),["stop"])},null,8,["style","onMousedown"])))),128)),((0,i.wg)(),(0,i.iD)("svg",{width:a.value||1,height:r.value||1,stroke:e.elementInfo.color,overflow:"visible",style:(0,oe.j5)({transform:`scale(${(0,s.SU)(l)})`})},[e.elementInfo.curve?((0,i.wg)(),(0,i.iD)("g",fc,[(0,i._)("line",{class:"anchor-line",x1:e.elementInfo.start[0],y1:e.elementInfo.start[1],x2:e.elementInfo.curve[0],y2:e.elementInfo.curve[1]},null,8,gc),(0,i._)("line",{class:"anchor-line",x1:e.elementInfo.end[0],y1:e.elementInfo.end[1],x2:e.elementInfo.curve[0],y2:e.elementInfo.curve[1]},null,8,yc)])):(0,i.kq)("",!0),e.elementInfo.cubic?((0,i.wg)(!0),(0,i.iD)(i.HY,{key:1},(0,i.Ko)(e.elementInfo.cubic,((t,l)=>((0,i.wg)(),(0,i.iD)("g",{key:l},[0===l?((0,i.wg)(),(0,i.iD)("line",{key:0,class:"anchor-line",x1:e.elementInfo.start[0],y1:e.elementInfo.start[1],x2:t[0],y2:t[1]},null,8,wc)):(0,i.kq)("",!0),1===l?((0,i.wg)(),(0,i.iD)("line",{key:1,class:"anchor-line",x1:e.elementInfo.end[0],y1:e.elementInfo.end[1],x2:t[0],y2:t[1]},null,8,xc)):(0,i.kq)("",!0)])))),128)):(0,i.kq)("",!0)],12,hc))],64)):(0,i.kq)("",!0)]))}});const _c=(0,Vl.Z)(bc,[["__scopeId","data-v-3aa5cc44"]]);var Ic=_c;const Sc={class:"table-element-operate"},Cc={inheritAttrs:!1};var Lc=(0,i.aZ)({...Cc,__name:"TableElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>t.elementInfo.outline.width||1)),r=(0,i.Fl)((()=>(t.elementInfo.width+a.value)*l.value)),u=(0,i.Fl)((()=>t.elementInfo.height*l.value)),{resizeHandlers:c,borderLines:d}=Ou(r,u);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Sc,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(d),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(c),(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onMousedown"])))),128)),(0,i.Wm)(Qu,{class:"operate-rotate-handler",style:(0,oe.j5)({left:r.value/2+"px"}),onMousedown:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"])],64)):(0,i.kq)("",!0)]))}});const Tc=Lc;var Ec=Tc;const Mc={class:"common-element-operate"},Uc={inheritAttrs:!1};var Wc=(0,i.aZ)({...Uc,__name:"CommonElementOperate",props:{elementInfo:{},handlerVisible:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function}},setup(e){const t=e,{canvasScale:l}=(0,o.Jk)(R()),a=(0,i.Fl)((()=>t.elementInfo.width*l.value)),r=(0,i.Fl)((()=>t.elementInfo.height*l.value)),{resizeHandlers:u,borderLines:c}=Ou(a,r),d=(0,i.Fl)((()=>["chart","video","audio"].includes(t.elementInfo.type)));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Mc,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(c),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),e.handlerVisible?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(u),(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onMousedown:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onMousedown"])))),128)),d.value?(0,i.kq)("",!0):((0,i.wg)(),(0,i.j4)(Qu,{key:0,class:"operate-rotate-handler",style:(0,oe.j5)({left:a.value/2+"px"}),onMousedown:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"]))],64)):(0,i.kq)("",!0)]))}});const Dc=Wc;var Hc=Dc,Fc=()=>{const e=$(),{addHistorySnapshot:t}=da(),l=(l,a)=>{const n=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if("web"===a.type&&!n.test(a.target))return ta.error("不是正确的网页链接地址"),!1;if("slide"===a.type&&!a.target)return ta.error("请先选择链接目标"),!1;const o={link:a};return e.updateElement({id:l.id,props:o}),t(),!0},a=l=>{e.removeElementProps({id:l.id,propName:"link"}),t()};return{setLink:l,removeLink:a}},Ac=(0,i.aZ)({__name:"Divider",props:{type:{default:"horizontal"},margin:{default:0}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["divider",e.type]),style:(0,oe.j5)({margin:"horizontal"===e.type?`${e.margin||24}px 0`:`0 ${e.margin||8}px`})},null,6))}});const $c=(0,Vl.Z)(Ac,[["__scopeId","data-v-6b66cde8"]]);var Zc=$c;const Oc=["href"],Rc={class:"btns"};var zc=(0,i.aZ)({__name:"LinkHandler",props:{elementInfo:{},link:{},openLinkDialog:{type:Function}},setup(e){const t=e,l=R(),a=$(),{canvasScale:n}=(0,o.Jk)(l),{slides:r}=(0,o.Jk)(a),{removeLink:u}=Fc(),c=(0,i.Fl)((()=>"line"===t.elementInfo.type?0:t.elementInfo.height)),d=e=>{const t=r.value.findIndex((t=>t.id===e));-1!==t&&(l.setActiveElementIdList([]),a.updateSlideIndex(t))};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"link-handler",style:(0,oe.j5)({top:c.value*(0,s.SU)(n)+10+"px"})},["web"===e.link.type?((0,i.wg)(),(0,i.iD)("a",{key:0,class:"link",href:e.link.target,target:"_blank"},(0,oe.zw)(e.link.target),9,Oc)):((0,i.wg)(),(0,i.iD)("a",{key:1,class:"link",onClick:t[0]||(t[0]=t=>d(e.link.target))},"幻灯片页面 "+(0,oe.zw)(e.link.target),1)),(0,i._)("div",Rc,[(0,i._)("div",{class:"btn",onClick:t[1]||(t[1]=t=>e.openLinkDialog())},"更换"),(0,i.Wm)(Zc,{type:"vertical"}),(0,i._)("div",{class:"btn",onClick:t[2]||(t[2]=t=>(0,s.SU)(u)(e.elementInfo))},"移除")])],4))}});const Pc=(0,Vl.Z)(zc,[["__scopeId","data-v-316c4664"]]);var Bc=Pc;const Nc={key:1,class:"animation-index"};var jc=(0,i.aZ)({__name:"index",props:{elementInfo:{},isSelected:{type:Boolean},isActive:{type:Boolean},isActiveGroupElement:{type:Boolean},isMultiSelect:{type:Boolean},rotateElement:{type:Function},scaleElement:{type:Function},dragLineElement:{type:Function},moveShapeKeypoint:{type:Function},openLinkDialog:{type:Function}},setup(e){const t=e,{canvasScale:l,toolbarState:a}=(0,o.Jk)(R()),{formatedAnimations:r}=(0,o.Jk)($()),u=(0,i.Fl)((()=>{const e={[sa.IMAGE]:ac,[sa.TEXT]:rc,[sa.SHAPE]:vc,[sa.LINE]:Ic,[sa.TABLE]:Ec,[sa.CHART]:Hc,[sa.LATEX]:Hc,[sa.VIDEO]:Hc,[sa.AUDIO]:Hc};return e[t.elementInfo.type]||null})),c=(0,i.Fl)((()=>{const e=[];for(let l=0;le.elId));a.includes(t.elementInfo.id)&&e.push(l)}return e})),d=(0,i.Fl)((()=>"rotate"in t.elementInfo?t.elementInfo.rotate:0)),p=(0,i.Fl)((()=>"height"in t.elementInfo?t.elementInfo.height:0));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["operate",{"multi-select":e.isMultiSelect&&!e.isActive}]),style:(0,oe.j5)({top:e.elementInfo.top*(0,s.SU)(l)+"px",left:e.elementInfo.left*(0,s.SU)(l)+"px",transform:`rotate(${d.value}deg)`,transformOrigin:`${e.elementInfo.width*(0,s.SU)(l)/2}px ${p.value*(0,s.SU)(l)/2}px`})},[e.isSelected?((0,i.wg)(),(0,i.j4)((0,i.LL)(u.value),{key:0,elementInfo:e.elementInfo,handlerVisible:!e.elementInfo.lock&&(e.isActiveGroupElement||!e.isMultiSelect),rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement,moveShapeKeypoint:e.moveShapeKeypoint},null,8,["elementInfo","handlerVisible","rotateElement","scaleElement","dragLineElement","moveShapeKeypoint"])):(0,i.kq)("",!0),"elAnimation"===(0,s.SU)(a)&&c.value.length?((0,i.wg)(),(0,i.iD)("div",Nc,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(c.value,(e=>((0,i.wg)(),(0,i.iD)("div",{class:"index-item",key:e},(0,oe.zw)(e+1),1)))),128))])):(0,i.kq)("",!0),e.isActive&&e.elementInfo.link?((0,i.wg)(),(0,i.j4)(Bc,{key:2,elementInfo:e.elementInfo,link:e.elementInfo.link,openLinkDialog:e.openLinkDialog,onMousedown:t[0]||(t[0]=(0,n.iM)((()=>{}),["stop"]))},null,8,["elementInfo","link","openLinkDialog"])):(0,i.kq)("",!0)],6))}});const Yc=(0,Vl.Z)(jc,[["__scopeId","data-v-5ec1ff35"]]);var Vc=Yc;const Jc=["src"];var qc=(0,i.aZ)({__name:"BaseImageElement",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:a}=Xn(l),n=(0,i.Fl)((()=>t.elementInfo.flipH)),o=(0,i.Fl)((()=>t.elementInfo.flipV)),{flipStyle:r}=Gn(n,o),u=(0,i.Fl)((()=>t.elementInfo.clip)),{clipShape:c,imgPosition:d}=Qn(u),p=(0,i.Fl)((()=>t.elementInfo.filters)),{filter:v}=eo(p);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-image",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({filter:(0,s.SU)(a)?`drop-shadow(${(0,s.SU)(a)})`:"",transform:(0,s.SU)(r)})},[(0,i.Wm)(ko,{elementInfo:e.elementInfo},null,8,["elementInfo"]),(0,i._)("div",{class:"image-content",style:(0,oe.j5)({clipPath:(0,s.SU)(c).style})},[(0,i._)("img",{src:e.elementInfo.src,draggable:!1,style:(0,oe.j5)({top:(0,s.SU)(d).top,left:(0,s.SU)(d).left,width:(0,s.SU)(d).width,height:(0,s.SU)(d).height,filter:(0,s.SU)(v)}),alt:""},null,12,Jc),e.elementInfo.colorMask?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"color-mask",style:(0,oe.j5)({backgroundColor:e.elementInfo.colorMask})},null,4)):(0,i.kq)("",!0)],4)],4)],4)],4))}});const Xc=(0,Vl.Z)(qc,[["__scopeId","data-v-24fef706"]]);var Gc=Xc;const Kc=["innerHTML"];var Qc=(0,i.aZ)({__name:"BaseTextElement",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:a}=Xn(l);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-text",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({width:e.elementInfo.vertical?"auto":e.elementInfo.width+"px",height:e.elementInfo.vertical?e.elementInfo.height+"px":"auto",backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:(0,s.SU)(a),lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px",color:e.elementInfo.defaultColor,fontFamily:e.elementInfo.defaultFontName,writingMode:e.elementInfo.vertical?"vertical-rl":"horizontal-tb"})},[(0,i.Wm)(Po,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),(0,i._)("div",{class:"text ProseMirror-static",style:(0,oe.j5)({"--paragraphSpace":`${void 0===e.elementInfo.paragraphSpace?5:e.elementInfo.paragraphSpace}px`}),innerHTML:e.elementInfo.content},null,12,Kc)],4)],4)],4))}});const ed=(0,Vl.Z)(Qc,[["__scopeId","data-v-52a206f2"]]);var td=ed;const ld=["width","height"],ad={key:0},nd=["transform"],od=["d","fill","stroke","stroke-width","stroke-dasharray"],id=["innerHTML"];var sd=(0,i.aZ)({__name:"BaseShapeElement",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.elementInfo.outline)),{outlineWidth:a,outlineColor:n,strokeDashArray:o}=to(l),r=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:u}=Xn(r),c=(0,i.Fl)((()=>t.elementInfo.flipH)),d=(0,i.Fl)((()=>t.elementInfo.flipV)),{flipStyle:p}=Gn(c,d),v=(0,i.Fl)((()=>{const e={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"};return t.elementInfo.text?t.elementInfo.text:e}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-shape",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({opacity:e.elementInfo.opacity,filter:(0,s.SU)(u)?`drop-shadow(${(0,s.SU)(u)})`:"",transform:(0,s.SU)(p),color:v.value.defaultColor,fontFamily:v.value.defaultFontName})},[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},[e.elementInfo.gradient?((0,i.wg)(),(0,i.iD)("defs",ad,[(0,i.Wm)(ds,{id:`base-gradient-${e.elementInfo.id}`,type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):(0,i.kq)("",!0),(0,i._)("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[(0,i._)("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",d:e.elementInfo.path,fill:e.elementInfo.gradient?`url(#base-gradient-${e.elementInfo.id})`:e.elementInfo.fill,stroke:(0,s.SU)(n),"stroke-width":(0,s.SU)(a),"stroke-dasharray":(0,s.SU)(o)},null,8,od)],8,nd)],8,ld)),(0,i._)("div",{class:(0,oe.C_)(["shape-text",v.value.align])},[(0,i._)("div",{class:"ProseMirror-static",innerHTML:v.value.content},null,8,id)],2)],4)],4)],4))}});const rd=(0,Vl.Z)(sd,[["__scopeId","data-v-b13f8fa8"]]);var ud=rd;const cd=["width","height"],dd=["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"];var pd=(0,i.aZ)({__name:"BaseLineElement",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>t.elementInfo.shadow)),{shadowStyle:a}=Xn(l),n=(0,i.Fl)((()=>{const e=Math.abs(t.elementInfo.start[0]-t.elementInfo.end[0]);return e<24?24:e})),o=(0,i.Fl)((()=>{const e=Math.abs(t.elementInfo.start[1]-t.elementInfo.end[1]);return e<24?24:e})),r=(0,i.Fl)((()=>{if("dashed"!==t.elementInfo.style)return"0 0";const e=t.elementInfo.width;return e<=8?`${5*e} ${2.5*e}`:`${5*e} ${1.5*e}`})),u=(0,i.Fl)((()=>Ce(t.elementInfo)));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-line",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({filter:(0,s.SU)(a)?`drop-shadow(${(0,s.SU)(a)})`:""})},[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:n.value,height:o.value},[(0,i._)("defs",null,[e.elementInfo.points[0]?((0,i.wg)(),(0,i.j4)(_s,{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"])):(0,i.kq)("",!0),e.elementInfo.points[1]?((0,i.wg)(),(0,i.j4)(_s,{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"])):(0,i.kq)("",!0)]),(0,i._)("path",{d:u.value,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":r.value,fill:"none","marker-start":e.elementInfo.points[0]?`url(#${e.elementInfo.id}-${e.elementInfo.points[0]}-start)`:"","marker-end":e.elementInfo.points[1]?`url(#${e.elementInfo.id}-${e.elementInfo.points[1]}-end)`:""},null,8,dd)],8,cd))],4)],4))}});const vd=(0,Vl.Z)(pd,[["__scopeId","data-v-443e2f82"]]);var md=vd,hd=(0,i.aZ)({__name:"BaseChartElement",props:{elementInfo:{}},setup(e){const t=(0,i.f3)(Tn)||(0,s.iH)(1),l=(0,i.Fl)((()=>t.value<1)),a=(0,i.Fl)((()=>l.value?1/t.value:1));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-chart",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({backgroundColor:e.elementInfo.fill})},[(0,i.Wm)(Po,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),(0,i.Wm)(Ds,{width:e.elementInfo.width*a.value,height:e.elementInfo.height*a.value,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor,legends:e.elementInfo.data.legends,legend:e.elementInfo.legend||"",style:(0,oe.j5)({zoom:1/a.value})},null,8,["width","height","type","data","options","themeColor","gridColor","legends","legend","style"])],4)],4)],4))}});const fd=(0,Vl.Z)(hd,[["__scopeId","data-v-7c03d68d"]]);var gd=fd;const yd=["width"],wd=["rowspan","colspan"],xd=["innerHTML"];var kd=(0,i.aZ)({__name:"StaticTable",props:{data:{},width:{},cellMinHeight:{},colWidths:{},outline:{},theme:{},editable:{type:Boolean,default:!0}},setup(e){const t=e,l=(0,s.iH)([]),a=(0,i.Fl)((()=>l.value.reduce(((e,t)=>e+t))));(0,i.YP)([()=>t.colWidths,()=>t.width],(()=>{l.value=t.colWidths.map((e=>e*t.width))}),{immediate:!0});const o=(0,i.Fl)((()=>t.data)),{hideCells:r}=Os(o),u=(0,i.Fl)((()=>t.theme)),{subThemeColor:c}=Rs(u);return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"static-table",style:(0,oe.j5)({width:a.value+"px"})},[(0,i._)("table",{class:(0,oe.C_)({theme:u.value,"row-header":u.value?.rowHeader,"row-footer":u.value?.rowFooter,"col-header":u.value?.colHeader,"col-footer":u.value?.colFooter}),style:(0,oe.j5)(`--themeColor: ${u.value?.color}; --subThemeColor1: ${(0,s.SU)(c)[0]}; --subThemeColor2: ${(0,s.SU)(c)[1]}`)},[(0,i._)("colgroup",null,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(l.value,((e,t)=>((0,i.wg)(),(0,i.iD)("col",{span:"1",key:t,width:e},null,8,yd)))),128))]),(0,i._)("tbody",null,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.data,((t,l)=>((0,i.wg)(),(0,i.iD)("tr",{key:l,style:(0,oe.j5)({height:e.cellMinHeight+"px"})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t,((t,a)=>(0,i.wy)(((0,i.wg)(),(0,i.iD)("td",{class:"cell",style:(0,oe.j5)({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px",...(0,s.SU)($s)(t.style)}),key:t.id,rowspan:t.rowspan,colspan:t.colspan},[(0,i._)("div",{class:"cell-text",style:(0,oe.j5)({minHeight:e.cellMinHeight-4+"px"}),innerHTML:(0,s.SU)(Zs)(t.text)},null,12,xd)],12,wd)),[[n.F8,!(0,s.SU)(r).includes(`${l}_${a}`)]]))),128))],4)))),128))])],6)],4))}});const bd=(0,Vl.Z)(kd,[["__scopeId","data-v-5d949d4d"]]);var _d=bd;const Id={class:"element-content"};var Sd=(0,i.aZ)({__name:"BaseTableElement",props:{elementInfo:{}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-table",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",Id,[(0,i.Wm)(_d,{data:e.elementInfo.data,width:e.elementInfo.width,cellMinHeight:e.elementInfo.cellMinHeight,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme},null,8,["data","width","cellMinHeight","colWidths","outline","theme"])])],4)],4))}});const Cd=(0,Vl.Z)(Sd,[["__scopeId","data-v-3eff7eba"]]);var Ld=Cd;const Td={class:"element-content"},Ed=["width","height","stroke","stroke-width"],Md=["transform"],Ud=["d"];var Wd=(0,i.aZ)({__name:"BaseLatexElement",props:{elementInfo:{}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-latex",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",Td,[((0,i.wg)(),(0,i.iD)("svg",{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.strokeWidth,fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[(0,i._)("g",{transform:`scale(${e.elementInfo.width/e.elementInfo.viewBox[0]}, ${e.elementInfo.height/e.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[(0,i._)("path",{d:e.elementInfo.path},null,8,Ud)],8,Md)],8,Ed))])],4)],4))}});const Dd=(0,Vl.Z)(Wd,[["__scopeId","data-v-1587280d"]]);var Hd=Dd,Fd=(0,i.aZ)({__name:"BaseVideoElement",props:{elementInfo:{}},setup(e){return(e,t)=>{const l=(0,i.up)("IconPlayOne");return(0,i.wg)(),(0,i.iD)("div",{class:"base-element-video",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",{class:"element-content",style:(0,oe.j5)({backgroundImage:e.elementInfo.poster?`url(${e.elementInfo.poster})`:""})},[(0,i.Wm)(l,{class:"icon"})],4)],4)],4)}}});const Ad=(0,Vl.Z)(Fd,[["__scopeId","data-v-09436dde"]]);var $d=Ad;const Zd={class:"element-content"};var Od=(0,i.aZ)({__name:"BaseAudioElement",props:{elementInfo:{}},setup(e){const t=e,l=(0,i.Fl)((()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px"));return(e,t)=>{const a=(0,i.up)("IconVolumeNotice");return(0,i.wg)(),(0,i.iD)("div",{class:"base-element-audio",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",Zd,[(0,i.Wm)(a,{class:"audio-icon",style:(0,oe.j5)({fontSize:l.value,color:e.elementInfo.color})},null,8,["style"])])],4)],4)}}});const Rd=(0,Vl.Z)(Od,[["__scopeId","data-v-5da834d7"]]);var zd=Rd,Pd=(0,i.aZ)({__name:"ThumbnailElement",props:{elementInfo:{},elementIndex:{}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e={[sa.IMAGE]:Gc,[sa.TEXT]:td,[sa.SHAPE]:ud,[sa.LINE]:md,[sa.CHART]:gd,[sa.TABLE]:Ld,[sa.LATEX]:Hd,[sa.VIDEO]:$d,[sa.AUDIO]:zd};return e[t.elementInfo.type]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["base-element",`base-element-${e.elementInfo.id}`]),style:(0,oe.j5)({zIndex:e.elementIndex})},[((0,i.wg)(),(0,i.j4)((0,i.LL)(l.value),{elementInfo:e.elementInfo,target:"thumbnail"},null,8,["elementInfo"]))],6))}});const Bd=Pd;var Nd=Bd;const jd={key:1,class:"placeholder"};var Yd=(0,i.aZ)({__name:"index",props:{slide:{},size:{},visible:{type:Boolean,default:!0}},setup(e){const t=e,{viewportRatio:l}=(0,o.Jk)($()),a=(0,i.Fl)((()=>t.slide.background)),{backgroundStyle:n}=yu(a),r=(0,i.Fl)((()=>t.size/oa));return(0,i.JJ)(Tn,r),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"thumbnail-slide",style:(0,oe.j5)({width:e.size+"px",height:e.size*(0,s.SU)(l)+"px"})},[e.visible?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"elements",style:(0,oe.j5)({width:(0,s.SU)(oa)+"px",height:(0,s.SU)(oa)*(0,s.SU)(l)+"px",transform:`scale(${r.value})`})},[(0,i._)("div",{class:"background",style:(0,oe.j5)((0,s.SU)(n))},null,4),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.slide.elements,((e,t)=>((0,i.wg)(),(0,i.j4)(Nd,{key:e.id,elementInfo:e,elementIndex:t+1},null,8,["elementInfo","elementIndex"])))),128))],4)):((0,i.wg)(),(0,i.iD)("div",jd,"加载中 ..."))],4))}});const Vd=(0,Vl.Z)(Yd,[["__scopeId","data-v-43dcaa52"]]);var Jd=Vd;const qd=["onClick"];var Xd=(0,i.aZ)({__name:"Tabs",props:{value:{},tabs:{},card:{type:Boolean,default:!1},tabsStyle:{},tabStyle:{},spaceAround:{type:Boolean,default:!1},spaceBetween:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=t;return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["tabs",{card:e.card,"space-around":e.spaceAround,"space-between":e.spaceBetween}]),style:(0,oe.j5)(e.tabsStyle||{})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.tabs,(t=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["tab",{active:t.key===e.value}]),key:t.key,style:(0,oe.j5)({...e.tabStyle||{},"--color":t.color}),onClick:e=>l("update:value",t.key)},(0,oe.zw)(t.label),15,qd)))),128))],6))}});const Gd=(0,Vl.Z)(Xd,[["__scopeId","data-v-5e3d7626"]]);var Kd=Gd,Qd=(0,i.aZ)({__name:"Button",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},type:{default:"default"},size:{default:"normal"},first:{type:Boolean,default:!1},last:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:t}){const l=e,a=t,n=()=>{l.disabled||a("click")};return(e,t)=>((0,i.wg)(),(0,i.iD)("button",{class:(0,oe.C_)(["button",{disabled:e.disabled,checked:!e.disabled&&e.checked,default:!e.disabled&&"default"===e.type,primary:!e.disabled&&"primary"===e.type,checkbox:!e.disabled&&"checkbox"===e.type,radio:!e.disabled&&"radio"===e.type,small:"small"===e.size,first:e.first,last:e.last}]),onClick:t[0]||(t[0]=e=>n())},[(0,i.WI)(e.$slots,"default")],2))}});const ep=(0,Vl.Z)(Qd,[["__scopeId","data-v-52c90330"]]);var tp=ep;const lp={key:0,class:"select-wrap"},ap={class:"selector"},np={class:"icon"},op=["onClick"],ip={class:"selector"},sp={class:"icon"};var rp=(0,i.aZ)({__name:"Select",props:{value:{},options:{},disabled:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e,a=(0,i.Fl)((()=>l.options.find((e=>e.value===l.value))?.label||l.value)),n=t,o=(0,s.iH)(!1),r=(0,s.iH)(),u=(0,s.iH)(0),c=()=>{r.value&&(u.value=r.value.clientWidth)},d=new ResizeObserver(c);(0,i.bv)((()=>{r.value&&d.observe(r.value)})),(0,i.Ah)((()=>{r.value&&d.unobserve(r.value)}));const p=e=>{e.disabled||(n("update:value",e.value),o.value=!1)};return(e,t)=>{const l=(0,i.up)("IconDown");return e.disabled?((0,i.wg)(),(0,i.iD)("div",lp,[(0,i._)("div",{class:"select disabled",ref_key:"selectRef",ref:r},[(0,i._)("div",ap,(0,oe.zw)(e.value),1),(0,i._)("div",np,[(0,i.WI)(e.$slots,"icon",{},(()=>[(0,i.Wm)(l,{size:14})]))])],512)])):((0,i.wg)(),(0,i.j4)(dn,{key:1,class:"select-wrap",trigger:"click",value:o.value,"onUpdate:value":t[0]||(t[0]=e=>o.value=e),placement:"bottom",contentStyle:{padding:0,boxShadow:"0 6px 16px 0 rgba(0, 0, 0, 0.08)"}},{content:(0,i.w5)((()=>[(0,i._)("div",{class:"options",style:(0,oe.j5)({width:u.value+2+"px"})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.options,(t=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["option",{disabled:t.disabled,selected:t.value===e.value}]),key:t.value,onClick:e=>p(t)},(0,oe.zw)(t.label),11,op)))),128))],4)])),default:(0,i.w5)((()=>[(0,i._)("div",{class:"select",ref_key:"selectRef",ref:r},[(0,i._)("div",ip,(0,oe.zw)(a.value),1),(0,i._)("div",sp,[(0,i.WI)(e.$slots,"icon",{},(()=>[(0,i.Wm)(l,{size:14})]))])],512)])),_:3},8,["value","contentStyle"]))}}});const up=(0,Vl.Z)(rp,[["__scopeId","data-v-5bf3b141"]]);var cp=up;const dp=e=>((0,i.dD)("data-v-cc39ee16"),e=e(),(0,i.Cn)(),e),pp={class:"link-dialog"},vp={key:2,class:"preview"},mp=dp((()=>(0,i._)("div",null,"预览:",-1))),hp={class:"btns"};var fp=(0,i.aZ)({__name:"LinkDialog",emits:["close"],setup(e,{emit:t}){const l=t,{handleElement:a}=(0,o.Jk)(R()),{slides:n,currentSlide:r}=(0,o.Jk)($()),u=(0,s.iH)("web"),c=(0,s.iH)(""),d=(0,s.iH)(""),p=(0,i.Fl)((()=>n.value.map(((e,t)=>({label:`幻灯片 ${t+1}`,value:e.id,disabled:r.value.id===e.id})))));d.value=n.value.find((e=>e.id!==r.value.id))?.id||"";const v=(0,i.Fl)((()=>d.value&&n.value.find((e=>e.id===d.value))||null)),m=[{key:"web",label:"网页链接"},{key:"slide",label:"幻灯片页面"}],{setLink:h}=Fc();(0,i.bv)((()=>{a.value?.link&&("web"===a.value.link.type?c.value=a.value.link.target:"slide"===a.value.link.type&&(d.value=a.value.link.target),u.value=a.value.link.type)}));const f=()=>{const e={type:u.value,target:"web"===u.value?c.value:d.value};if(a.value){const t=h(a.value,e);t?l("close"):c.value=""}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",pp,[(0,i.Wm)(Kd,{tabs:m,value:u.value,"onUpdate:value":t[0]||(t[0]=e=>u.value=e),tabsStyle:{marginBottom:"20px"}},null,8,["value"]),"web"===u.value?((0,i.wg)(),(0,i.j4)(sn,{key:0,class:"input",value:c.value,"onUpdate:value":t[1]||(t[1]=e=>c.value=e),placeholder:"请输入网页链接地址"},null,8,["value"])):(0,i.kq)("",!0),"slide"===u.value?((0,i.wg)(),(0,i.j4)(cp,{key:1,class:"input",value:d.value,"onUpdate:value":t[2]||(t[2]=e=>d.value=e),options:p.value},null,8,["value","options"])):(0,i.kq)("",!0),"slide"===u.value&&v.value?((0,i.wg)(),(0,i.iD)("div",vp,[mp,(0,i.Wm)(Jd,{class:"thumbnail",slide:v.value,size:500},null,8,["slide"])])):(0,i.kq)("",!0),(0,i._)("div",hp,[(0,i.Wm)(tp,{onClick:t[3]||(t[3]=e=>l("close")),style:{"margin-right":"10px"}},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{type:"primary",onClick:t[4]||(t[4]=e=>f())},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])]))}});const gp=(0,Vl.Z)(fp,[["__scopeId","data-v-cc39ee16"]]);var yp=gp,wp=(0,i.aZ)({__name:"Modal",props:{visible:{type:Boolean},width:{default:480},closeButton:{type:Boolean,default:!1},closeOnClickMask:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},contentStyle:{}},emits:["update:visible","closed"],setup(e,{emit:t}){const{IconClose:l}=Zl,a=e,o=(0,s.iH)(),r=t,u=(0,s.iH)(!1),c=(0,i.Fl)((()=>({width:a.width+"px",...a.contentStyle||{}})));(0,i.YP)((()=>a.visible),(()=>{a.visible&&(0,i.Y3)((()=>o.value.focus()))}));const d=()=>{r("update:visible",!1),r("closed")},p=()=>{a.visible&&a.closeOnEsc&&d()},v=()=>{a.closeOnClickMask&&d()};return(e,t)=>((0,i.wg)(),(0,i.j4)(i.lR,{to:"body"},[(0,i.Wm)(n.uT,{name:"modal-fade"},{default:(0,i.w5)((()=>[(0,i.wy)((0,i._)("div",{class:"modal",ref_key:"modalRef",ref:o,tabindex:"-1",onKeyup:t[4]||(t[4]=(0,n.D2)((e=>p()),["esc"]))},[(0,i._)("div",{class:"mask",onClick:t[0]||(t[0]=e=>v())}),(0,i.Wm)(n.uT,{name:"modal-zoom",onAfterLeave:t[2]||(t[2]=e=>u.value=!1),onBeforeEnter:t[3]||(t[3]=e=>u.value=!0)},{default:(0,i.w5)((()=>[(0,i.wy)((0,i._)("div",{class:"modal-content",style:(0,oe.j5)(c.value)},[e.closeButton?((0,i.wg)(),(0,i.iD)("span",{key:0,class:"close-btn",onClick:t[1]||(t[1]=e=>d())},[(0,i.Wm)((0,s.SU)(l))])):(0,i.kq)("",!0),u.value?(0,i.WI)(e.$slots,"default",{key:1}):(0,i.kq)("",!0)],4),[[n.F8,e.visible]])])),_:3})],544),[[n.F8,e.visible]])])),_:3})]))}});const xp=(0,Vl.Z)(wp,[["__scopeId","data-v-fea8edcc"]]);var kp=xp;const bp={class:"operates"},_p={key:2,class:"drag-mask"};var Ip=(0,i.aZ)({__name:"index",setup(e){const t=R(),{activeElementIdList:l,activeGroupElementId:a,handleElementId:r,hiddenElementIdList:u,editorAreaFocus:c,gridLineSize:d,showRuler:p,creatingElement:v,creatingCustomShape:m,canvasScale:h,textFormatPainter:f}=(0,o.Jk)(t),{currentSlide:g}=(0,o.Jk)($()),{ctrlKeyState:y,spaceKeyState:w}=(0,o.Jk)(q()),x=(0,s.iH)(),k=(0,s.iH)([]),b=(0,s.iH)(!1),_=()=>b.value=!0;(0,i.YP)(r,(()=>{t.setActiveGroupElementId("")}));const I=(0,s.iH)([]),S=()=>{I.value=g.value?JSON.parse(JSON.stringify(g.value.elements)):[]};(0,i.m0)(S);const C=(0,s.iH)(),{dragViewport:L,viewportStyles:T}=Wn(C);Hn(C);const{mouseSelection:E,mouseSelectionVisible:M,mouseSelectionQuadrant:U,updateMouseSelection:W}=Dn(I,x),{dragElement:H}=jn(I,k,h),{dragLineElement:F}=Yn(I),{selectElement:A}=Nn(I,H),{scaleElement:Z,scaleMultiElement:O}=Bn(I,k,h),{rotateElement:z}=An(I,x,h),{moveShapeKeypoint:P}=Vn(I,h),{selectAllElement:B}=xa(),{deleteAllElements:N}=ga(),{pasteElement:j}=wa(),{enterScreeningFromStart:Y}=Ca(),{updateSlideIndex:V}=ha(),{createTextElement:J,createShapeElement:X}=pa();(0,i.bv)((()=>{l.value.length&&(0,i.Y3)((()=>t.setActiveElementIdList([])))}));const G=e=>{l.value.length&&t.setActiveElementIdList([]),w.value?L(e):W(e),c.value||t.setEditorareaFocus(!0),f.value&&t.setTextFormatPainter(null),Un()},K=e=>{if(l.value.length||v.value||m.value)return;if(!x.value)return;const t=x.value.getBoundingClientRect(),a=(e.pageX-t.x)/h.value,n=(e.pageY-t.y)/h.value;J({left:a,top:n,width:200/h.value,height:0})};(0,i.Ah)((()=>{f.value&&t.setTextFormatPainter(null)}));const Q=()=>{c.value&&t.setEditorareaFocus(!1)},{scaleCanvas:ee}=La(),te=(0,D.throttle)(ee,100,{leading:!0,trailing:!1}),le=(0,D.throttle)(V,300,{leading:!0,trailing:!1}),ae=e=>{e.preventDefault(),y.value?e.deltaY>0?te("-"):e.deltaY<0&&te("+"):e.deltaY>0?le(ne.DOWN):e.deltaY<0&&le(ne.UP)},ie=()=>{t.setRulerState(!p.value)},{insertElementFromCreateSelection:se,formatCreateSelection:re}=Jn(x),ue=e=>{const{start:l,end:a,path:n,viewBox:o}=e,i=re({start:l,end:a});if(i){const t={};e.fill&&(t.fill=e.fill),e.outline&&(t.outline=e.outline),X(i,{path:n,viewBox:o},t)}t.setCreatingCustomShapeState(!1)},ce=()=>[{text:"粘贴",subText:"Ctrl + V",handler:j},{text:"全选",subText:"Ctrl + A",handler:B},{text:"标尺",subText:p.value?"√":"",handler:ie},{text:"网格线",handler:()=>t.setGridLineSize(d.value?0:50),children:[{text:"无",subText:0===d.value?"√":"",handler:()=>t.setGridLineSize(0)},{text:"小",subText:25===d.value?"√":"",handler:()=>t.setGridLineSize(25)},{text:"中",subText:50===d.value?"√":"",handler:()=>t.setGridLineSize(50)},{text:"大",subText:100===d.value?"√":"",handler:()=>t.setGridLineSize(100)}]},{text:"重置当前页",handler:N},{divider:!0},{text:"幻灯片放映",subText:"F5",handler:Y}];return(0,i.JJ)(Tn,h),(e,t)=>{const o=(0,i.Q2)("contextmenu"),c=(0,i.Q2)("click-outside");return(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"canvas",ref_key:"canvasRef",ref:C,onWheel:t[4]||(t[4]=e=>ae(e)),onMousedown:t[5]||(t[5]=e=>G(e)),onDblclick:t[6]||(t[6]=e=>K(e))},[(0,s.SU)(v)?((0,i.wg)(),(0,i.j4)(Du,{key:0,onCreated:t[0]||(t[0]=e=>(0,s.SU)(se)(e))})):(0,i.kq)("",!0),(0,s.SU)(m)?((0,i.wg)(),(0,i.j4)(Zu,{key:1,onCreated:t[1]||(t[1]=e=>ue(e))})):(0,i.kq)("",!0),(0,i._)("div",{class:"viewport-wrapper",style:(0,oe.j5)({width:(0,s.SU)(T).width*(0,s.SU)(h)+"px",height:(0,s.SU)(T).height*(0,s.SU)(h)+"px",left:(0,s.SU)(T).left+"px",top:(0,s.SU)(T).top+"px"})},[(0,i._)("div",bp,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(k.value,((e,t)=>((0,i.wg)(),(0,i.j4)(Iu,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:(0,s.SU)(h)},null,8,["type","axis","length","canvasScale"])))),128)),(0,s.SU)(l).length>1?((0,i.wg)(),(0,i.j4)(Ju,{key:0,elementList:I.value,scaleMultiElement:(0,s.SU)(O)},null,8,["elementList","scaleMultiElement"])):(0,i.kq)("",!0),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(I.value,(e=>(0,i.wy)(((0,i.wg)(),(0,i.j4)(Vc,{key:e.id,elementInfo:e,isSelected:(0,s.SU)(l).includes(e.id),isActive:(0,s.SU)(r)===e.id,isActiveGroupElement:(0,s.SU)(a)===e.id,isMultiSelect:(0,s.SU)(l).length>1,rotateElement:(0,s.SU)(z),scaleElement:(0,s.SU)(Z),openLinkDialog:_,dragLineElement:(0,s.SU)(F),moveShapeKeypoint:(0,s.SU)(P)},null,8,["elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement","moveShapeKeypoint"])),[[n.F8,!(0,s.SU)(u).includes(e.id)]]))),128)),(0,i.Wm)(ku)]),(0,i._)("div",{class:"viewport",ref_key:"viewportRef",ref:x,style:(0,oe.j5)({transform:`scale(${(0,s.SU)(h)})`})},[(0,s.SU)(M)?((0,i.wg)(),(0,i.j4)(pu,{key:0,top:(0,s.SU)(E).top,left:(0,s.SU)(E).left,width:(0,s.SU)(E).width,height:(0,s.SU)(E).height,quadrant:(0,s.SU)(U)},null,8,["top","left","width","height","quadrant"])):(0,i.kq)("",!0),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(I.value,((e,t)=>(0,i.wy)(((0,i.wg)(),(0,i.j4)(uu,{key:e.id,elementInfo:e,elementIndex:t+1,isMultiSelect:(0,s.SU)(l).length>1,selectElement:(0,s.SU)(A),openLinkDialog:_},null,8,["elementInfo","elementIndex","isMultiSelect","selectElement"])),[[n.F8,!(0,s.SU)(u).includes(e.id)]]))),128))],4)],4),(0,s.SU)(w)?((0,i.wg)(),(0,i.iD)("div",_p)):(0,i.kq)("",!0),(0,s.SU)(p)?((0,i.wg)(),(0,i.j4)(Tu,{key:3,viewportStyles:(0,s.SU)(T)},null,8,["viewportStyles"])):(0,i.kq)("",!0),(0,i.Wm)(kp,{visible:b.value,"onUpdate:visible":t[3]||(t[3]=e=>b.value=e),width:540},{default:(0,i.w5)((()=>[(0,i.Wm)(yp,{onClose:t[2]||(t[2]=e=>b.value=!1)})])),_:1},8,["visible"])],32)),[[o,ce],[c,Q]])}}});const Sp=(0,Vl.Z)(Ip,[["__scopeId","data-v-5294a048"]]);var Cp=Sp;const Lp={class:"shape-item-thumbnail"},Tp={class:"shape-content"},Ep={overflow:"visible",width:"18",height:"18"},Mp=["transform"],Up=["fill","stroke","d"];var Wp=(0,i.aZ)({__name:"ShapeItemThumbnail",props:{shape:{}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Lp,[(0,i._)("div",Tp,[((0,i.wg)(),(0,i.iD)("svg",Ep,[(0,i._)("g",{transform:`scale(${18/e.shape.viewBox[0]}, ${18/e.shape.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`},[(0,i._)("path",{class:(0,oe.C_)(["shape-path",{outlined:e.shape.outlined}]),"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8",fill:e.shape.outlined?"#999":"transparent",stroke:e.shape.outlined?"transparent":"#999","stroke-width":"2",d:e.shape.path},null,10,Up)],8,Mp)]))])]))}});const Dp=(0,Vl.Z)(Wp,[["__scopeId","data-v-8603ad34"]]);var Hp=Dp;const Fp={class:"shape-pool"},Ap={class:"category-name"},$p={class:"shape-list"};var Zp=(0,i.aZ)({__name:"ShapePool",emits:["select"],setup(e,{emit:t}){const l=t,a=e=>{l("select",e)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Fp,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(ua),(e=>((0,i.wg)(),(0,i.iD)("div",{class:"category",key:e.type},[(0,i._)("div",Ap,(0,oe.zw)(e.type),1),(0,i._)("div",$p,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.children,((e,t)=>((0,i.wg)(),(0,i.j4)(Hp,{class:"shape-item",key:t,shape:e,onClick:t=>a(e)},null,8,["shape","onClick"])))),128))])])))),128))]))}});const Op=(0,Vl.Z)(Zp,[["__scopeId","data-v-8b994b42"]]);var Rp=Op;const zp=[{type:"直线",children:[{path:"M 0 0 L 20 20",style:"solid",points:["",""]},{path:"M 0 0 L 20 20",style:"dashed",points:["",""]},{path:"M 0 0 L 20 20",style:"solid",points:["","arrow"]},{path:"M 0 0 L 20 20",style:"dashed",points:["","arrow"]},{path:"M 0 0 L 20 20",style:"solid",points:["","dot"]}]},{type:"折线、曲线",children:[{path:"M 0 0 L 0 20 L 20 20",style:"solid",points:["","arrow"],isBroken:!0},{path:"M 0 0 Q 0 20 20 20",style:"solid",points:["","arrow"],isCurve:!0},{path:"M 0 0 C 20 0 0 20 20 20",style:"solid",points:["","arrow"],isCubic:!0}]}],Pp={class:"line-pool"},Bp={class:"category-name"},Np={class:"line-list"},jp=["onClick"],Yp={overflow:"visible",width:"20",height:"20"},Vp=["d","stroke-dasharray","marker-start","marker-end"];var Jp=(0,i.aZ)({__name:"LinePool",emits:["select"],setup(e,{emit:t}){const l=t,a=e=>{l("select",e)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Pp,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(zp),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"category",key:e.type},[(0,i._)("div",Bp,(0,oe.zw)(e.type),1),(0,i._)("div",Np,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.children,((e,l)=>((0,i.wg)(),(0,i.iD)("div",{class:"line-item",key:l},[(0,i._)("div",{class:"line-content",onClick:t=>a(e)},[((0,i.wg)(),(0,i.iD)("svg",Yp,[(0,i._)("defs",null,[e.points[0]?((0,i.wg)(),(0,i.j4)(_s,{key:0,class:"line-marker",id:`preset-line-${t}-${l}`,position:"start",type:e.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):(0,i.kq)("",!0),e.points[1]?((0,i.wg)(),(0,i.j4)(_s,{key:1,class:"line-marker",id:`preset-line-${t}-${l}`,position:"end",type:e.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):(0,i.kq)("",!0)]),(0,i._)("path",{class:"line-path",d:e.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===e.style?"0, 0":"4, 1","marker-start":e.points[0]?`url(#preset-line-${t}-${l}-${e.points[0]}-start)`:"","marker-end":e.points[1]?`url(#preset-line-${t}-${l}-${e.points[1]}-end)`:""},null,8,Vp)]))],8,jp)])))),128))])])))),128))]))}});const qp=(0,Vl.Z)(Jp,[["__scopeId","data-v-554824b6"]]);var Xp=qp;const Gp={class:"chart-pool"},Kp=["onClick"];var Qp=(0,i.aZ)({__name:"ChartPool",emits:["select"],setup(e,{emit:t}){const l=t,a=["bar","horizontalBar","line","area","scatter","pie","ring"],n=e=>{l("select",e)};return(e,t)=>{const l=(0,i.up)("IconChartLine"),o=(0,i.up)("IconChartHistogram"),s=(0,i.up)("IconChartPie"),r=(0,i.up)("IconChartHistogramOne"),u=(0,i.up)("IconChartLineArea"),c=(0,i.up)("IconChartRing"),d=(0,i.up)("IconChartScatter");return(0,i.wg)(),(0,i.iD)("ul",Gp,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(a,((e,t)=>(0,i._)("li",{class:"chart-item",key:t},[(0,i._)("div",{class:"chart-content",onClick:t=>n(e)},["line"===e?((0,i.wg)(),(0,i.j4)(l,{key:0,size:"24"})):"bar"===e?((0,i.wg)(),(0,i.j4)(o,{key:1,size:"24"})):"pie"===e?((0,i.wg)(),(0,i.j4)(s,{key:2,size:"24"})):"horizontalBar"===e?((0,i.wg)(),(0,i.j4)(r,{key:3,size:"24"})):"area"===e?((0,i.wg)(),(0,i.j4)(u,{key:4,size:"24"})):"ring"===e?((0,i.wg)(),(0,i.j4)(c,{key:5,size:"24"})):"scatter"===e?((0,i.wg)(),(0,i.j4)(d,{key:6,size:"24"})):(0,i.kq)("",!0)],8,Kp)]))),64))])}}});const ev=(0,Vl.Z)(Qp,[["__scopeId","data-v-398f5699"]]);var tv=ev;const lv=e=>((0,i.dD)("data-v-268948c2"),e=e(),(0,i.Cn)(),e),av={class:"prefix"},nv={class:"input-wrap"},ov=["disabled","placeholder"],iv={class:"handlers"},sv=lv((()=>(0,i._)("svg",{fill:"currentColor",width:"1em",height:"1em",viewBox:"64 64 896 896"},[(0,i._)("path",{d:"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z"})],-1))),rv=[sv],uv=lv((()=>(0,i._)("svg",{fill:"currentColor",width:"1em",height:"1em",viewBox:"64 64 896 896"},[(0,i._)("path",{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"})],-1))),cv=[uv],dv={class:"suffix"};var pv=(0,i.aZ)({__name:"NumberInput",props:{value:{},disabled:{type:Boolean,default:!1},placeholder:{default:""},min:{default:0},max:{default:1/0},step:{default:1}},emits:["update:value","input","change","blur","focus","enter"],setup(e,{emit:t}){const l=e,a=t,o=(0,s.iH)(0),r=(0,s.iH)(!1);(0,i.YP)((()=>l.value),(()=>{l.value!==o.value&&(o.value=l.value)}),{immediate:!0}),(0,i.YP)(o,(()=>{let e=+o.value;isNaN(e)?e=l.min:e>l.max?e=l.max:e{r.value=!1,a("blur",e)},c=e=>{r.value=!0,a("focus",e)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["number-input",{disabled:e.disabled,focused:r.value}])},[(0,i._)("span",av,[(0,i.WI)(e.$slots,"prefix")]),(0,i._)("div",nv,[(0,i.wy)((0,i._)("input",{type:"text",disabled:e.disabled,"onUpdate:modelValue":t[0]||(t[0]=e=>o.value=e),placeholder:e.placeholder,onInput:t[1]||(t[1]=e=>a("input",e)),onFocus:t[2]||(t[2]=e=>c(e)),onBlur:t[3]||(t[3]=e=>u(e)),onChange:t[4]||(t[4]=e=>a("change",e)),onKeydown:t[5]||(t[5]=(0,n.D2)((e=>a("enter",e)),["enter"]))},null,40,ov),[[n.nr,o.value]]),(0,i._)("div",iv,[(0,i._)("span",{class:"handler",onClick:t[6]||(t[6]=t=>o.value+=e.step)},rv),(0,i._)("span",{class:"handler",onClick:t[7]||(t[7]=t=>o.value-=e.step)},cv)])]),(0,i._)("span",dv,[(0,i.WI)(e.$slots,"suffix")])],2))}});const vv=(0,Vl.Z)(pv,[["__scopeId","data-v-268948c2"]]);var mv=vv;const hv=e=>((0,i.dD)("data-v-372c6730"),e=e(),(0,i.Cn)(),e),fv={class:"table-generator"},gv={class:"title"},yv={class:"lef"},wv=["onMouseenter"],xv={key:1,class:"custom"},kv={class:"row"},bv=hv((()=>(0,i._)("div",{class:"label",style:{width:"25%"}},"行数:",-1))),_v={class:"row"},Iv=hv((()=>(0,i._)("div",{class:"label",style:{width:"25%"}},"列数:",-1))),Sv={class:"btns"};var Cv=(0,i.aZ)({__name:"TableGenerator",emits:["insert","close"],setup(e,{emit:t}){const l=t,a=(0,s.iH)([]),n=(0,s.iH)(3),o=(0,s.iH)(3),r=(0,s.iH)(!1),u=()=>{if(!a.value.length)return;const[e,t]=a.value;l("insert",{row:e,col:t})},c=()=>n.value<1||n.value>20||o.value<1||o.value>20?ta.warning("行数/列数必须在0~20之间!"):(l("insert",{row:n.value,col:o.value}),void(r.value=!1)),d=()=>{l("close"),r.value=!1};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",fv,[(0,i._)("div",gv,[(0,i._)("div",yv,"表格 "+(0,oe.zw)(a.value.length?`${a.value[0]} x ${a.value[1]}`:""),1),(0,i._)("div",{class:"right",onClick:t[0]||(t[0]=e=>r.value=!r.value)},(0,oe.zw)(r.value?"返回":"自定义"),1)]),r.value?((0,i.wg)(),(0,i.iD)("div",xv,[(0,i._)("div",kv,[bv,(0,i.Wm)(mv,{min:1,max:20,value:n.value,"onUpdate:value":t[3]||(t[3]=e=>n.value=e),style:{width:"75%"}},null,8,["value"])]),(0,i._)("div",_v,[Iv,(0,i.Wm)(mv,{min:1,max:20,value:o.value,"onUpdate:value":t[4]||(t[4]=e=>o.value=e),style:{width:"75%"}},null,8,["value"])]),(0,i._)("div",Sv,[(0,i.Wm)(tp,{class:"btn",onClick:t[5]||(t[5]=e=>d())},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{class:"btn",type:"primary",onClick:t[6]||(t[6]=e=>c())},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])])):((0,i.wg)(),(0,i.iD)("table",{key:0,onMouseleave:t[1]||(t[1]=e=>a.value=[]),onClick:t[2]||(t[2]=e=>u())},[(0,i._)("tbody",null,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(10,(e=>(0,i._)("tr",{key:e},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(10,(t=>(0,i._)("td",{onMouseenter:l=>a.value=[e,t],key:t},[(0,i._)("div",{class:(0,oe.C_)(["cell",{active:a.value.length&&e<=a.value[0]&&t<=a.value[1]}])},null,2)],40,wv))),64))]))),64))])],32))]))}});const Lv=(0,Vl.Z)(Cv,[["__scopeId","data-v-372c6730"]]);var Tv=Lv;const Ev={class:"media-input"},Mv={class:"btns"},Uv={class:"btns"};var Wv=(0,i.aZ)({__name:"MediaInput",emits:["insertVideo","insertAudio","close"],setup(e,{emit:t}){const l=t,a=(0,s.iH)("video"),n=(0,s.iH)("https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm"),o=(0,s.iH)("https://freesound.org/data/previews/614/614107_11861866-lq.mp3"),r=[{key:"video",label:"视频"},{key:"audio",label:"音频"}],u=()=>{if(!n.value)return ta.error("请先输入正确的视频地址");l("insertVideo",n.value)},c=()=>{if(!o.value)return ta.error("请先输入正确的音频地址");l("insertAudio",o.value)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Ev,[(0,i.Wm)(Kd,{tabs:r,value:a.value,"onUpdate:value":t[0]||(t[0]=e=>a.value=e),tabsStyle:{marginBottom:"15px"}},null,8,["value"]),"video"===a.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i.Wm)(sn,{value:n.value,"onUpdate:value":t[1]||(t[1]=e=>n.value=e),placeholder:"请输入视频地址,e.g. https://xxx.mp4"},null,8,["value"]),(0,i._)("div",Mv,[(0,i.Wm)(tp,{onClick:t[2]||(t[2]=e=>l("close")),style:{"margin-right":"10px"}},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{type:"primary",onClick:t[3]||(t[3]=e=>u())},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])],64)):(0,i.kq)("",!0),"audio"===a.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i.Wm)(sn,{value:o.value,"onUpdate:value":t[4]||(t[4]=e=>o.value=e),placeholder:"请输入音频地址,e.g. https://xxx.mp3"},null,8,["value"]),(0,i._)("div",Uv,[(0,i.Wm)(tp,{onClick:t[5]||(t[5]=e=>l("close")),style:{"margin-right":"10px"}},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{type:"primary",onClick:t[6]||(t[6]=e=>c())},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])],64)):(0,i.kq)("",!0)]))}});const Dv=(0,Vl.Z)(Wv,[["__scopeId","data-v-35a1214c"]]);var Hv=Dv,Fv=l(3576);Fv.kh.SUB_SUP_SCALE=.5;const Av=[{label:"高斯公式",latex:"\\int\\int\\int _ { \\Omega } \\left( \\frac { \\partial {P} } { \\partial {x} } + \\frac { \\partial {Q} } { \\partial {y} } + \\frac { \\partial {R} }{ \\partial {z} } \\right) \\mathrm { d } V = \\oint _ { \\partial \\Omega } ( P \\cos \\alpha + Q \\cos \\beta + R \\cos \\gamma ) \\mathrm{ d} S"},{label:"傅里叶级数",latex:"f(x) = \\frac {a_0} 2 + \\sum_{n = 1}^\\infty {({a_n}\\cos {nx} + {b_n}\\sin {nx})}"},{label:"泰勒展开式",latex:"e ^ { x } = 1 + \\frac { x } { 1 ! } + \\frac { x ^ { 2 } } { 2 ! } + \\frac { x ^ { 3 } } { 3 ! } + ... , \\quad - \\infty < x < \\infty"},{label:"定积分",latex:"\\lim_ { n \\rightarrow + \\infty } \\sum _ { i = 1 } ^ { n } f \\left[ a + \\frac { i } { n } ( b - a ) \\right] \\frac { b - a } { n } = \\int _ { a } ^ { b } f ( x ) dx"},{label:"三角恒等式1",latex:"\\sin \\alpha \\pm \\sin \\beta = 2 \\sin \\frac { 1 } { 2 } ( \\alpha \\pm \\beta ) \\cos \\frac { 1 } { 2 } ( \\alpha \\mp \\beta )"},{label:"三角恒等式2",latex:"\\cos \\alpha + \\cos \\beta = 2 \\cos \\frac { 1 } { 2 } ( \\alpha + \\beta ) \\cos \\frac { 1 } { 2 } ( \\alpha - \\beta )"},{label:"和的展开式",latex:"( 1 + x ) ^ { n } = 1 + \\frac { n x } { 1 ! } + \\frac { n ( n - 1 ) x ^ { 2 } } { 2 ! } + ..."},{label:"欧拉公式",latex:" e^{ix} = \\cos {x} + i\\sin {x}"},{label:"贝努利方程",latex:"\\frac {dy} {dx} + P(x)y = Q(x) y^n ({n} \\not= {0,1})"},{label:"全微分方程",latex:"du(x,y) = P(x,y)dx + Q(x,y)dy = 0"},{label:"非齐次方程",latex:"y = (\\int Q(x) e^{\\int {P(x)dx}}dx + C)e^{-\\int {P(x)dx}}"},{label:"柯西中值定理",latex:"\\frac{{f(b) - f(a)}}{{F(b) - F(a)}} = \\frac{{f'(\\xi )}}{{F'(\\xi )}}"},{label:"拉格朗日中值定理",latex:"f(b) - f(a) = f'(\\xi )(b - a)"},{label:"导数公式",latex:"(\\arcsin x)' = \\frac{1}{{\\sqrt {1 - x^2} }}"},{label:"三角函数积分",latex:"\\int {tgxdx = - \\ln \\left| {\\cos x} \\right| + C}"},{label:"二次曲面",latex:"\\frac{{{x^2}}}{{{a^2}}} + \\frac{{{y^2}}}{{{b^2}}} - \\frac{{{z^2}}}{{{c^2}}} = 1"},{label:"二阶微分",latex:"\\frac {{d^2}y} {dx^2} + P(x) \\frac {dy} {dx} + Q(x)y = f(x)"},{label:"方向导数",latex:"\\frac{{\\partial f}}{{\\partial l}} = \\frac{{\\partial f}}{{\\partial x}}\\cos \\phi + \\frac{{\\partial f}}{{\\partial y}}\\sin \\phi"}],$v=[{type:"operators",label:"数学",children:[{latex:"\\cdot"},{latex:"\\pm"},{latex:"\\mp"},{latex:"+"},{latex:"-"},{latex:"\\times"},{latex:"\\div"},{latex:"<"},{latex:">"},{latex:"="},{latex:"\\neq\\ne"},{latex:"\\leqq"},{latex:"\\geqq"},{latex:"\\leq"},{latex:"\\geq"},{latex:"\\propto"},{latex:"\\sim"},{latex:"\\equiv"},{latex:"\\dagger"},{latex:"\\ddagger"},{latex:"\\ell"},{latex:"\\#"},{latex:"\\$"},{latex:"\\&"},{latex:"\\%"},{latex:"\\langle\\rangle"},{latex:"()"},{latex:"[]"},{latex:"\\{\\}"},{latex:"||"},{latex:"\\|"},{latex:"\\exists"},{latex:"\\in"},{latex:"\\subset"},{latex:"\\supset"},{latex:"\\cup"},{latex:"\\cap"},{latex:"\\infty"},{latex:"\\partial"},{latex:"\\nabla"},{latex:"\\aleph"},{latex:"\\wp"},{latex:"\\therefore"},{latex:"\\mid"},{latex:"\\sum"},{latex:"\\prod"},{latex:"\\bigoplus"},{latex:"\\bigodot"},{latex:"\\int"},{latex:"\\oint"},{latex:"\\oplus"},{latex:"\\odot"},{latex:"\\perp"},{latex:"\\angle"},{latex:"\\triangle"},{latex:"\\Box"},{latex:"\\rightarrow"},{latex:"\\to"},{latex:"\\leftarrow"},{latex:"\\gets"},{latex:"\\circ"},{latex:"\\bigcirc"},{latex:"\\bullet"},{latex:"\\star"},{latex:"\\diamond"},{latex:"\\ast"},{latex:","},{latex:"."},{latex:";"},{latex:"!"}]},{type:"group",label:"组合",children:[{latex:"\\frac{a}{b}"},{latex:"\\frac{dx}{dx}"},{latex:"\\frac{\\partial a}{\\partial b}"},{latex:"\\sqrt{x}"},{latex:"\\sqrt[n]{x}"},{latex:"x^{n}"},{latex:"x_{n}"},{latex:"x_a^b"},{latex:"\\int_{a}^{b}"},{latex:"\\oint_a^b"},{latex:"\\lim_{a \\rightarrow b}"},{latex:"\\prod_a^b"},{latex:"\\sum_a^b"},{latex:"\\left(\\begin{array}a \\\\ b\\end{array}\\right)"},{latex:"\\begin{bmatrix}a & b \\\\ c & d \\end{bmatrix}"},{latex:"\\begin{cases}a & x = 0 \\\\ b & x > 0\\end{cases}"},{latex:"\\hat{a}"},{latex:"\\breve{a}"},{latex:"\\acute{a}"},{latex:"\\grave{a}"},{latex:"\\tilde{a}"},{latex:"\\bar{a}"},{latex:"\\vec{a}"},{latex:"\\underline{a}"},{latex:"\\overline{a}"},{latex:"\\widehat{ab}"},{latex:"\\overleftarrow{ab}"},{latex:"\\overrightarrow{ab}"}]},{type:"verbatim",label:"函数",children:[{latex:"\\log"},{latex:"\\ln"},{latex:"\\exp"},{latex:"\\mod"},{latex:"\\lim"},{latex:"\\sin"},{latex:"\\cos"},{latex:"\\tan"},{latex:"\\csc"},{latex:"\\sec"},{latex:"\\cot"},{latex:"\\sinh"},{latex:"\\cosh"},{latex:"\\tanh"},{latex:"\\csch"},{latex:"\\sech"},{latex:"\\coth"},{latex:"\\arcsin"},{latex:"\\arccos"},{latex:"\\arctan"},{latex:"\\arccsc"},{latex:"\\arcsec"},{latex:"\\arccot"}]},{type:"greek",label:"希腊字母",children:[{latex:"\\alpha"},{latex:"\\beta"},{latex:"\\gamma"},{latex:"\\delta"},{latex:"\\varepsilon"},{latex:"\\zeta"},{latex:"\\eta"},{latex:"\\vartheta"},{latex:"\\iota"},{latex:"\\kappa"},{latex:"\\lambda"},{latex:"\\mu"},{latex:"\\nu"},{latex:"\\xi"},{latex:"\\omicron"},{latex:"\\pi"},{latex:"\\rho"},{latex:"\\sigma"},{latex:"\\tau"},{latex:"\\upsilon"},{latex:"\\varphi"},{latex:"\\chi"},{latex:"\\psi"},{latex:"\\omega"},{latex:"\\epsilon"},{latex:"\\theta"},{latex:"\\phi"},{latex:"\\varsigma"},{latex:"\\Alpha"},{latex:"\\Beta"},{latex:"\\Gamma"},{latex:"\\Delta"},{latex:"\\Epsilon"},{latex:"\\Zeta"},{latex:"\\Eta"},{latex:"\\Theta"},{latex:"\\Iota"},{latex:"\\Kappa"},{latex:"\\Lambda"},{latex:"\\Mu"},{latex:"\\Nu"},{latex:"\\Xi"},{latex:"\\Omicron"},{latex:"\\Pi"},{latex:"\\Rho"},{latex:"\\Sigma"},{latex:"\\Tau"},{latex:"\\Upsilon"},{latex:"\\Phi"},{latex:"\\Chi"},{latex:"\\Psi"},{latex:"\\Omega"}]}],Zv=["width","height"],Ov=["transform"],Rv=["d"];var zv=(0,i.aZ)({__name:"FormulaContent",props:{latex:{},width:{},height:{}},setup(e){const t=e,l=(0,s.iH)({x:0,y:0,w:0,h:0}),a=(0,s.iH)("");(0,i.YP)((()=>t.latex),(()=>{const e=new Fv._q(t.latex);a.value=e.pathd({}),l.value=e.box({})}),{immediate:!0});const n=(0,i.Fl)((()=>{const e=l.value.w+32,a=l.value.h+32;return e>t.width||a>t.height?e/a>t.width/t.height?t.width/e:t.height/a:1}));return(e,t)=>((0,i.wg)(),(0,i.iD)("svg",{class:"formula-content",overflow:"visible",width:l.value.w+32,height:l.value.h+32,stroke:"#000","stroke-width":"1",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"},[(0,i._)("g",{transform:`scale(${n.value}, ${n.value}) translate(0,0) matrix(1,0,0,1,0,0)`,"transform-origin":"0 50%"},[(0,i._)("path",{d:a.value},null,8,Rv)],8,Ov)],8,Zv))}});const Pv=(0,Vl.Z)(zv,[["__scopeId","data-v-567417d3"]]);var Bv=Pv;const Nv=["innerHTML"];var jv=(0,i.aZ)({__name:"SymbolContent",props:{latex:{}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e=new Fv._q(t.latex);return e.svg({SCALE_X:10,SCALE_Y:10})}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"symbol-content",innerHTML:l.value},null,8,Nv))}});const Yv=jv;var Vv=Yv;const Jv=["disabled","value","rows","placeholder"];var qv=(0,i.aZ)({__name:"TextArea",props:{value:{},rows:{default:4},disabled:{type:Boolean,default:!1},resizable:{type:Boolean,default:!1},placeholder:{default:""}},emits:["update:value"],setup(e,{expose:t,emit:l}){const a=l,n=e=>{a("update:value",e.target.value)},o=(0,s.iH)(),r=()=>{o.value&&o.value.focus()};return t({focus:r}),(e,t)=>((0,i.wg)(),(0,i.iD)("textarea",{class:(0,oe.C_)(["textarea",{disabled:e.disabled,resizable:e.resizable}]),ref_key:"textareaRef",ref:o,disabled:e.disabled,value:e.value,rows:e.rows,placeholder:e.placeholder,onInput:t[0]||(t[0]=e=>n(e))},null,42,Jv))}});const Xv=(0,Vl.Z)(qv,[["__scopeId","data-v-65d72404"]]);var Gv=Xv;const Kv={class:"latex-editor"},Qv={class:"container"},em={class:"left"},tm={class:"input-area"},lm={class:"preview"},am={key:0,class:"placeholder"},nm={key:1,class:"preview-content"},om={class:"right"},im={class:"content"},sm={key:0,class:"symbol"},rm={class:"symbol-pool"},um=["onClick"],cm={key:1,class:"formula"},dm={class:"formula-title"},pm=["onClick"],vm={class:"footer"};var mm=(0,i.aZ)({__name:"index",props:{value:{default:""}},emits:["update","close"],setup(e,{emit:t}){const l=[{label:"常用符号",key:"symbol"},{label:"预置公式",key:"formula"}],a=e,n=t,o=Av,r=$v.map((e=>({label:e.label,key:e.type}))),u=(0,s.iH)(""),c=(0,s.iH)("symbol"),d=(0,s.iH)(),p=(0,s.iH)($v[0].type),v=(0,i.Fl)((()=>{const e=$v.find((e=>e.type===p.value));return e?.children||[]}));(0,i.bv)((()=>{a.value&&(u.value=a.value)}));const m=()=>{if(!u.value)return ta.error("公式不能为空");const e=new Fv._q(u.value),t=e.pathd({}),l=e.box({});n("update",{latex:u.value,path:t,w:l.w+32,h:l.h+32})},h=e=>{d.value&&(d.value.focus(),document.execCommand("insertText",!1,e))};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Kv,[(0,i._)("div",Qv,[(0,i._)("div",em,[(0,i._)("div",tm,[(0,i.Wm)(Gv,{value:u.value,"onUpdate:value":t[0]||(t[0]=e=>u.value=e),placeholder:"输入 LaTeX 公式",ref_key:"textAreaRef",ref:d},null,8,["value"])]),(0,i._)("div",lm,[u.value?((0,i.wg)(),(0,i.iD)("div",nm,[(0,i.Wm)(Bv,{width:518,height:138,latex:u.value},null,8,["latex"])])):((0,i.wg)(),(0,i.iD)("div",am,"公式预览"))])]),(0,i._)("div",om,[(0,i.Wm)(Kd,{tabs:l,value:c.value,"onUpdate:value":t[1]||(t[1]=e=>c.value=e),card:""},null,8,["value"]),(0,i._)("div",im,["symbol"===c.value?((0,i.wg)(),(0,i.iD)("div",sm,[(0,i.Wm)(Kd,{tabs:(0,s.SU)(r),value:p.value,"onUpdate:value":t[2]||(t[2]=e=>p.value=e),spaceBetween:"",tabsStyle:{margin:"10px 10px 0"}},null,8,["tabs","value"]),(0,i._)("div",rm,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(v.value,(e=>((0,i.wg)(),(0,i.iD)("div",{class:"symbol-item",key:e.latex,onClick:t=>h(e.latex)},[(0,i.Wm)(Vv,{latex:e.latex},null,8,["latex"])],8,um)))),128))])])):((0,i.wg)(),(0,i.iD)("div",cm,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(o),(e=>((0,i.wg)(),(0,i.iD)("div",{class:"formula-item",key:e.label},[(0,i._)("div",dm,(0,oe.zw)(e.label),1),(0,i._)("div",{class:"formula-item-content",onClick:t=>u.value=e.latex},[(0,i.Wm)(Bv,{width:236,height:60,latex:e.latex},null,8,["latex"])],8,pm)])))),128))]))])])]),(0,i._)("div",vm,[(0,i.Wm)(tp,{class:"btn",onClick:t[3]||(t[3]=e=>n("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{class:"btn",type:"primary",onClick:t[4]||(t[4]=e=>m())},{default:(0,i.w5)((()=>[(0,i.Uk)("确定")])),_:1})])]))}});const hm=(0,Vl.Z)(mm,[["__scopeId","data-v-49a14edf"]]);var fm=hm;const gm={class:"canvas-tool"},ym={class:"left-handler"},wm={class:"add-element-handler"},xm={class:"handler-item group-btn"},km={class:"right-handler"},bm={class:"text"};var _m=(0,i.aZ)({__name:"index",setup(e){const t=R(),{creatingElement:l,creatingCustomShape:a,showSelectPanel:n,showSearchPanel:r}=(0,o.Jk)(t),{canUndo:u,canRedo:c}=(0,o.Jk)(J()),{redo:d,undo:p}=da(),{scaleCanvas:v,setCanvasScalePercentage:m,resetCanvas:h,canvasScalePercentage:f}=La(),g=[200,150,100,80,50],y=(0,s.iH)(!1),w=e=>{m(e),y.value=!1},{createImageElement:x,createChartElement:k,createTableElement:b,createLatexElement:_,createVideoElement:I,createAudioElement:S}=pa(),C=e=>{const t=e[0];t&&na(t).then((e=>x(e)))},L=(0,s.iH)(!1),T=(0,s.iH)(!1),E=(0,s.iH)(!1),M=(0,s.iH)(!1),U=(0,s.iH)(!1),W=(0,s.iH)(!1),D=(0,s.iH)(!1),H=(e=!1)=>{t.setCreatingElement({type:"text",vertical:e})},F=e=>{"任意多边形"===e.title?t.setCreatingCustomShapeState(!0):t.setCreatingElement({type:"shape",data:e}),L.value=!1},A=e=>{t.setCreatingElement({type:"line",data:e}),T.value=!1},$=()=>{t.setSelectPanelState(!n.value)},Z=()=>{t.setSearchPanelState(!r.value)};return(e,t)=>{const o=(0,i.up)("IconBack"),m=(0,i.up)("IconNext"),x=(0,i.up)("IconMoveOne"),O=(0,i.up)("IconSearch"),R=(0,i.up)("IconFontSize"),z=(0,i.up)("IconTextRotationNone"),P=(0,i.up)("IconTextRotationDown"),B=(0,i.up)("IconDown"),N=(0,i.up)("IconPicture"),j=(0,i.up)("IconGraphicDesign"),Y=(0,i.up)("IconConnection"),V=(0,i.up)("IconChartProportion"),J=(0,i.up)("IconInsertTable"),q=(0,i.up)("IconFormula"),X=(0,i.up)("IconVideoTwo"),G=(0,i.up)("IconMinus"),K=(0,i.up)("IconPlus"),Q=(0,i.up)("IconFullScreen"),ee=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",gm,[(0,i._)("div",ym,[(0,i.wy)((0,i.Wm)(o,{class:(0,oe.C_)(["handler-item",{disable:!(0,s.SU)(u)}]),onClick:t[0]||(t[0]=e=>(0,s.SU)(p)())},null,8,["class"]),[[ee,"撤销"]]),(0,i.wy)((0,i.Wm)(m,{class:(0,oe.C_)(["handler-item",{disable:!(0,s.SU)(c)}]),onClick:t[1]||(t[1]=e=>(0,s.SU)(d)())},null,8,["class"]),[[ee,"重做"]]),(0,i.Wm)(Zc,{type:"vertical",style:{height:"20px"}}),(0,i.wy)((0,i.Wm)(x,{class:(0,oe.C_)(["handler-item",{active:(0,s.SU)(n)}]),onClick:t[2]||(t[2]=e=>$())},null,8,["class"]),[[ee,"选择窗格"]]),(0,i.wy)((0,i.Wm)(O,{class:(0,oe.C_)(["handler-item",{active:(0,s.SU)(r)}]),onClick:t[3]||(t[3]=e=>Z())},null,8,["class"]),[[ee,"查找/替换"]])]),(0,i._)("div",wm,[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",xm,[(0,i.Wm)(R,{class:(0,oe.C_)(["icon",{active:"text"===(0,s.SU)(l)?.type}]),onClick:t[4]||(t[4]=e=>H())},null,8,["class"]),(0,i.Wm)(dn,{trigger:"click",value:D.value,"onUpdate:value":t[7]||(t[7]=e=>D.value=e),style:{height:"100%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(mn,{center:"",onClick:t[5]||(t[5]=()=>{H(),D.value=!1})},{default:(0,i.w5)((()=>[(0,i.Wm)(z),(0,i.Uk)(" 横向文本框")])),_:1}),(0,i.Wm)(mn,{center:"",onClick:t[6]||(t[6]=()=>{H(!0),D.value=!1})},{default:(0,i.w5)((()=>[(0,i.Wm)(P),(0,i.Uk)(" 竖向文本框")])),_:1})])),default:(0,i.w5)((()=>[(0,i.Wm)(B,{class:"arrow"})])),_:1},8,["value"])])),[[ee,"插入文字"]]),(0,i.Wm)(Pa,{onChange:t[8]||(t[8]=e=>C(e))},{default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(N,{class:"handler-item"},null,512),[[ee,"插入图片"]])])),_:1}),(0,i.Wm)(dn,{trigger:"click",value:L.value,"onUpdate:value":t[10]||(t[10]=e=>L.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(Rp,{onSelect:t[9]||(t[9]=e=>F(e))})])),default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(j,{class:(0,oe.C_)(["handler-item",{active:(0,s.SU)(a)||"shape"===(0,s.SU)(l)?.type}])},null,8,["class"]),[[ee,"插入形状"]])])),_:1},8,["value"]),(0,i.Wm)(dn,{trigger:"click",value:T.value,"onUpdate:value":t[12]||(t[12]=e=>T.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(Xp,{onSelect:t[11]||(t[11]=e=>A(e))})])),default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(Y,{class:(0,oe.C_)(["handler-item",{active:"line"===(0,s.SU)(l)?.type}])},null,8,["class"]),[[ee,"插入线条"]])])),_:1},8,["value"]),(0,i.Wm)(dn,{trigger:"click",value:E.value,"onUpdate:value":t[14]||(t[14]=e=>E.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(tv,{onSelect:t[13]||(t[13]=e=>{(0,s.SU)(k)(e),E.value=!1})})])),default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(V,{class:"handler-item"},null,512),[[ee,"插入图表"]])])),_:1},8,["value"]),(0,i.Wm)(dn,{trigger:"click",value:M.value,"onUpdate:value":t[17]||(t[17]=e=>M.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(Tv,{onClose:t[15]||(t[15]=e=>M.value=!1),onInsert:t[16]||(t[16]=({row:e,col:t})=>{(0,s.SU)(b)(e,t),M.value=!1})})])),default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(J,{class:"handler-item"},null,512),[[ee,"插入表格"]])])),_:1},8,["value"]),(0,i.wy)((0,i.Wm)(q,{class:"handler-item",onClick:t[18]||(t[18]=e=>W.value=!0)},null,512),[[ee,"插入公式"]]),(0,i.Wm)(dn,{trigger:"click",value:U.value,"onUpdate:value":t[22]||(t[22]=e=>U.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(Hv,{onClose:t[19]||(t[19]=e=>U.value=!1),onInsertVideo:t[20]||(t[20]=e=>{(0,s.SU)(I)(e),U.value=!1}),onInsertAudio:t[21]||(t[21]=e=>{(0,s.SU)(S)(e),U.value=!1})})])),default:(0,i.w5)((()=>[(0,i.wy)((0,i.Wm)(X,{class:"handler-item"},null,512),[[ee,"插入音视频"]])])),_:1},8,["value"])]),(0,i._)("div",km,[(0,i.Wm)(G,{class:"handler-item viewport-size",onClick:t[23]||(t[23]=e=>(0,s.SU)(v)("-"))}),(0,i.Wm)(dn,{trigger:"click",value:y.value,"onUpdate:value":t[24]||(t[24]=e=>y.value=e)},{content:(0,i.w5)((()=>[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(g,(e=>(0,i.Wm)(mn,{center:"",key:e,onClick:t=>w(e)},{default:(0,i.w5)((()=>[(0,i.Uk)((0,oe.zw)(e)+"%",1)])),_:2},1032,["onClick"]))),64))])),default:(0,i.w5)((()=>[(0,i._)("span",bm,(0,oe.zw)((0,s.SU)(f)),1)])),_:1},8,["value"]),(0,i.Wm)(K,{class:"handler-item viewport-size",onClick:t[25]||(t[25]=e=>(0,s.SU)(v)("+"))}),(0,i.wy)((0,i.Wm)(Q,{class:"handler-item viewport-size-adaptation",onClick:t[26]||(t[26]=e=>(0,s.SU)(h)())},null,512),[[ee,"适应屏幕"]])]),(0,i.Wm)(kp,{visible:W.value,"onUpdate:visible":t[29]||(t[29]=e=>W.value=e),width:880},{default:(0,i.w5)((()=>[(0,i.Wm)(fm,{onClose:t[27]||(t[27]=e=>W.value=!1),onUpdate:t[28]||(t[28]=e=>{(0,s.SU)(_)(e),W.value=!1})})])),_:1},8,["visible"])])}}});const Im=(0,Vl.Z)(_m,[["__scopeId","data-v-7e81f183"]]);var Sm=Im,Cm=()=>{const{slides:e}=(0,o.Jk)($()),t=(0,s.iH)(null),l=(0,s.iH)(50),a=()=>{e.value.length>l.value?t.value=setTimeout((()=>{l.value=l.value+20,a()}),600):l.value=9999};return(0,i.bv)(a),(0,i.Ah)((()=>{t.value&&clearTimeout(t.value)})),{slidesLoadLimit:l}};const Lm={class:"layout-pool"},Tm=["onClick"];var Em=(0,i.aZ)({__name:"LayoutPool",emits:["select"],setup(e,{emit:t}){const l=t,{layouts:a}=(0,o.Jk)($()),n=e=>{l("select",e)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Lm,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(a),(e=>((0,i.wg)(),(0,i.iD)("div",{class:"layout-item",key:e.id,onClick:t=>n(e)},[(0,i.Wm)(Jd,{class:"thumbnail",slide:e,size:180},null,8,["slide"])],8,Tm)))),128))]))}});const Mm=(0,Vl.Z)(Em,[["__scopeId","data-v-8ee3e590"]]);var Um=Mm,Wm=l(9980),Dm=l.n(Wm);const Hm={class:"add-slide"},Fm={class:"select-btn"},Am=["onMousedown"],$m={class:"page-number"};var Zm=(0,i.aZ)({__name:"index",setup(e){const t=R(),l=$(),a=q(),{selectedSlidesIndex:n,thumbnailsFocus:r}=(0,o.Jk)(t),{slides:u,slideIndex:c}=(0,o.Jk)(l),{ctrlKeyState:d,shiftKeyState:p}=(0,o.Jk)(a),{slidesLoadLimit:v}=Cm(),m=(0,i.Fl)((()=>[...n.value,c.value])),h=(0,s.iH)(!1),{copySlide:f,pasteSlide:g,createSlide:y,createSlideByTemplate:w,copyAndPasteSlide:x,deleteSlide:k,cutSlide:b,selectAllSlide:_,sortSlides:I}=ha(),S=(0,s.iH)();(0,i.YP)((()=>c.value),(()=>{m.value.length&&t.updateSelectedSlidesIndex([]),(0,i.Y3)((()=>{const e=S.value?.$el?.querySelector(".thumbnail-item.active");S.value&&e&&!Le(e,S.value.$el)&&setTimeout((()=>{e.scrollIntoView({behavior:"smooth"})}),100)}))}));const C=e=>{t.setActiveElementIdList([]),c.value!==e&&l.updateSlideIndex(e)},L=(e,l)=>{const a=m.value.length>1;if(!a||!m.value.includes(l)||0===e.button)if(d.value)if(c.value===l){if(!a)return;const e=m.value.filter((e=>e!==l));t.updateSelectedSlidesIndex(e),C(m.value[0])}else if(m.value.includes(l)){const e=m.value.filter((e=>e!==l));t.updateSelectedSlidesIndex(e)}else{const e=[...m.value,l];t.updateSelectedSlidesIndex(e)}else if(p.value){if(c.value===l&&!a)return;let e=Math.min(...m.value),n=l;l{r.value!==e&&(t.setThumbnailsFocus(e),e||t.updateSelectedSlidesIndex([]))},E=e=>{const{newIndex:t,oldIndex:l}=e;void 0!==t&&void 0!==l&&t!==l&&I(t,l)},{enterScreening:M,enterScreeningFromStart:U}=Ca(),W=()=>[{text:"粘贴",subText:"Ctrl + V",handler:g},{text:"全选",subText:"Ctrl + A",handler:_},{text:"新建页面",subText:"Enter",handler:y},{text:"幻灯片放映",subText:"F5",handler:U}],D=()=>[{text:"剪切",subText:"Ctrl + X",handler:b},{text:"复制",subText:"Ctrl + C",handler:f},{text:"粘贴",subText:"Ctrl + V",handler:g},{text:"全选",subText:"Ctrl + A",handler:_},{divider:!0},{text:"新建页面",subText:"Enter",handler:y},{text:"复制页面",subText:"Ctrl + D",handler:x},{text:"删除页面",subText:"Delete",handler:()=>k()},{divider:!0},{text:"从当前放映",subText:"Shift + F5",handler:M}];return(e,t)=>{const l=(0,i.up)("IconPlus"),a=(0,i.up)("IconDown"),n=(0,i.Q2)("contextmenu"),o=(0,i.Q2)("click-outside");return(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"thumbnails",onMousedown:t[4]||(t[4]=()=>T(!0))},[(0,i._)("div",Hm,[(0,i._)("div",{class:"btn",onClick:t[0]||(t[0]=e=>(0,s.SU)(y)())},[(0,i.Wm)(l,{class:"icon"}),(0,i.Uk)("添加幻灯片")]),(0,i.Wm)(dn,{trigger:"click",placement:"bottom-start",value:h.value,"onUpdate:value":t[2]||(t[2]=e=>h.value=e),center:""},{content:(0,i.w5)((()=>[(0,i.Wm)(Um,{onSelect:t[1]||(t[1]=e=>{(0,s.SU)(w)(e),h.value=!1})})])),default:(0,i.w5)((()=>[(0,i._)("div",Fm,[(0,i.Wm)(a)])])),_:1},8,["value"])]),(0,i.Wm)((0,s.SU)(Dm()),{class:"thumbnail-list",ref_key:"thumbnailsRef",ref:S,modelValue:(0,s.SU)(u),animation:200,scroll:!0,scrollSensitivity:50,onEnd:E,itemKey:"id"},{item:(0,i.w5)((({element:e,index:l})=>[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["thumbnail-item",{active:(0,s.SU)(c)===l,selected:m.value.includes(l)}]),onMousedown:e=>L(e,l),onDblclick:t[3]||(t[3]=e=>(0,s.SU)(M)())},[(0,i._)("div",{class:(0,oe.C_)(["label",{"offset-left":l>=99}])},(0,oe.zw)((0,s.SU)(G)(l+1,2)),3),(0,i.Wm)(Jd,{class:"thumbnail",slide:e,size:120,visible:l<(0,s.SU)(v)},null,8,["slide","visible"])],42,Am)),[[n,D]])])),_:1},8,["modelValue"]),(0,i._)("div",$m,"幻灯片 "+(0,oe.zw)((0,s.SU)(c)+1)+" / "+(0,oe.zw)((0,s.SU)(u).length),1)],32)),[[o,()=>T(!1)],[n,W]])}}});const Om=(0,Vl.Z)(Zm,[["__scopeId","data-v-0dbead61"]]);var Rm=Om,zm=()=>{const e=R(),{richTextAttrs:t,textFormatPainter:l}=(0,o.Jk)(e),a=(a=!1)=>{l.value?e.setTextFormatPainter(null):e.setTextFormatPainter({keep:a,bold:t.value.bold,em:t.value.em,underline:t.value.underline,strikethrough:t.value.strikethrough,color:t.value.color,backcolor:t.value.backcolor,fontname:t.value.fontname,fontsize:t.value.fontsize,align:t.value.align})};return{toggleTextFormatPainter:a}},Pm=l(8374);const Bm={class:"bar"},Nm=["data-tooltip"],jm=["data-tooltip"],Ym=["data-tooltip"];var Vm=(0,i.aZ)({__name:"Slider",props:{value:{},disabled:{type:Boolean,default:!1},min:{default:0},max:{default:100},step:{default:1},range:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e=>e.getBoundingClientRect().left,a=e,n=t,o=(0,s.iH)(),r=(0,s.iH)(0),u=(0,s.iH)(0),c=(0,s.iH)(0),d=(0,s.iH)("end"),p=e=>{let t=e/100*(a.max-a.min);if(a.step>=1)t=Math.fround(t);else{const e=a.step.toString(),l=e.match(/^[0.]*([1-9])/);if(l){const a=l[1],n=e.indexOf(a)-1;if(n>0){const e=Math.pow(10,n);t=Math.fround(t*e)/e}}}return Pm.ZP.plus(t,a.min)},v=(0,i.Fl)((()=>p(r.value))),m=(0,i.Fl)((()=>p(u.value))),h=(0,i.Fl)((()=>p(c.value)));(0,i.YP)((()=>a.value),(()=>{a.max!==a.min&&("number"===typeof a.value?r.value=(a.value-a.min)/(a.max-a.min)*100:(u.value=(a.value[0]-a.min)/(a.max-a.min)*100,c.value=(a.value[1]-a.min)/(a.max-a.min)*100))}),{immediate:!0});const f=e=>{if(!o.value)return 0;const t="clientX"in e?e.clientX:e.changedTouches[0].clientX;let n=(t-l(o.value))/o.value.clientWidth;n=Math.max(n,0),n=Math.min(n,1);let i=100*n;const s=a.step/(a.max-a.min)*100,r=i%s;return r>0&&(r<=s/2?i-=r:i=i-r+s),i},g=e=>{const t=f(e);"start"===d.value?u.value=t:c.value=t},y=e=>{w(e);const t=p(r.value),l=a.value,o="start"===d.value?[t,l[1]]:[l[0],t];o[0]>o[1]&&([o[0],o[1]]=[o[1],o[0]]),n("update:value",o),document.removeEventListener("mousemove",g),document.removeEventListener("touchmove",g),document.removeEventListener("mouseup",y),document.removeEventListener("touchend",y)},w=e=>{r.value=f(e)},x=e=>{w(e);const t=p(r.value);n("update:value",t),document.removeEventListener("mousemove",w),document.removeEventListener("touchmove",w),document.removeEventListener("mouseup",x),document.removeEventListener("touchend",x)},k=e=>{if(!a.disabled)if(a.range){const t=f(e);Math.abs(t-u.value)((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["slider",{disabled:e.disabled}]),ref_key:"sliderRef",ref:o,onMousedown:t[0]||(t[0]=e=>k(e))},[(0,i._)("div",Bm,[e.range?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i._)("div",{class:"track",style:(0,oe.j5)({width:c.value-u.value+"%",left:`${u.value}%`})},null,4),(0,i._)("div",{class:"thumb",style:(0,oe.j5)({left:`${u.value}%`}),"data-tooltip":m.value},null,12,jm),(0,i._)("div",{class:"thumb",style:(0,oe.j5)({left:`${c.value}%`}),"data-tooltip":h.value},null,12,Ym)],64)):((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",{class:"track",style:(0,oe.j5)({width:`${r.value}%`})},null,4),(0,i._)("div",{class:"thumb",style:(0,oe.j5)({left:`${r.value}%`}),"data-tooltip":v.value},null,12,Nm)],64))])],34))}});const Jm=(0,Vl.Z)(Vm,[["__scopeId","data-v-563bd2a0"]]);var qm=Jm;const Xm=e=>((0,i.dD)("data-v-03715c20"),e=e(),(0,i.Cn)(),e),Gm={class:"element-opacity"},Km={class:"row"},Qm=Xm((()=>(0,i._)("div",{style:{width:"40%"}},"不透明度:",-1)));var eh=(0,i.aZ)({__name:"ElementOpacity",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=(0,s.iH)(1);(0,i.YP)(l,(()=>{l.value&&(a.value="opacity"in l.value&&void 0!==l.value.opacity?l.value.opacity:1)}),{deep:!0,immediate:!0});const{addHistorySnapshot:n}=da(),r=e=>{if(!l.value)return;const a={opacity:e};t.updateElement({id:l.value.id,props:a}),n()};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Gm,[(0,i._)("div",Km,[Qm,(0,i.Wm)(qm,{min:0,max:1,step:.1,value:a.value,"onUpdate:value":t[0]||(t[0]=e=>r(e)),style:{width:"60%"}},null,8,["value"])])]))}});const th=(0,Vl.Z)(eh,[["__scopeId","data-v-03715c20"]]);var lh=th;const ah={class:"color-block"};var nh=(0,i.aZ)({__name:"ColorButton",props:{color:{}},setup(e){return(e,t)=>{const l=(0,i.up)("IconPlatte");return(0,i.wg)(),(0,i.j4)(tp,{class:"color-btn"},{default:(0,i.w5)((()=>[(0,i._)("div",ah,[(0,i._)("div",{class:"content",style:(0,oe.j5)({backgroundColor:e.color})},null,4)]),(0,i.Wm)(l,{class:"color-btn-icon"})])),_:1})}}});const oh=(0,Vl.Z)(nh,[["__scopeId","data-v-7fa73bdc"]]);var ih=oh,sh=l(6459),rh=(0,i.aZ)({__name:"Checkboard",props:{size:{default:8},white:{default:"#fff"},grey:{default:"#e6e6e6"}},setup(e){const t=e,l={},a=(e,t,l)=>{const a=document.createElement("canvas");a.width=a.height=2*l;const n=a.getContext("2d");return n?(n.fillStyle=e,n.fillRect(0,0,a.width,a.height),n.fillStyle=t,n.fillRect(0,0,l,l),n.translate(l,l),n.fillRect(0,0,l,l),a.toDataURL()):null},n=(e,t,n)=>{const o=e+","+t+","+n;if(l[o])return l[o];const i=a(e,t,n);return l[o]=i,i},o=(0,i.Fl)((()=>{const e=n(t.white,t.grey,t.size);return{backgroundImage:`url(${e})`}}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"checkerboard",style:(0,oe.j5)(o.value)},null,4))}});const uh=(0,Vl.Z)(rh,[["__scopeId","data-v-fa191ace"]]);var ch=uh;const dh=e=>((0,i.dD)("data-v-84628bc8"),e=e(),(0,i.Cn)(),e),ph={class:"alpha"},vh={class:"alpha-checkboard-wrap"},mh=dh((()=>(0,i._)("div",{class:"alpha-picker"},null,-1))),hh=[mh];var fh=(0,i.aZ)({__name:"Alpha",props:{value:{}},emits:["colorChange"],setup(e,{emit:t}){const l=e,a=t,n=(0,i.Fl)((()=>l.value)),o=(0,i.Fl)((()=>{const e=[n.value.r,n.value.g,n.value.b].join(",");return`linear-gradient(to right, rgba(${e}, 0) 0%, rgba(${e}, 1) 100%)`})),r=(0,s.iH)(),u=e=>{if(e.preventDefault(),!r.value)return;const t=r.value.clientWidth,l=r.value.getBoundingClientRect().left+window.pageXOffset,o=e.pageX-l;let i;i=o<0?0:o>t?1:Math.round(100*o/t)/100,n.value.a!==i&&a("colorChange",{r:n.value.r,g:n.value.g,b:n.value.b,a:i})},c=()=>{window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",c)},d=e=>{u(e),window.addEventListener("mousemove",u),window.addEventListener("mouseup",c)};return(0,i.Ah)(c),(e,t)=>((0,i.wg)(),(0,i.iD)("div",ph,[(0,i._)("div",vh,[(0,i.Wm)(ch)]),(0,i._)("div",{class:"alpha-gradient",style:(0,oe.j5)({background:o.value})},null,4),(0,i._)("div",{class:"alpha-container",ref_key:"alphaRef",ref:r,onMousedown:t[0]||(t[0]=e=>d(e))},[(0,i._)("div",{class:"alpha-pointer",style:(0,oe.j5)({left:100*n.value.a+"%"})},hh,4)],544)]))}});const gh=(0,Vl.Z)(fh,[["__scopeId","data-v-84628bc8"]]);var yh=gh;const wh=e=>((0,i.dD)("data-v-5711e710"),e=e(),(0,i.Cn)(),e),xh={class:"hue"},kh=wh((()=>(0,i._)("div",{class:"hue-picker"},null,-1))),bh=[kh];var _h=(0,i.aZ)({__name:"Hue",props:{value:{},hue:{}},emits:["colorChange"],setup(e,{emit:t}){const l=e,a=t,n=(0,s.iH)(0),o=(0,s.iH)(""),r=(0,i.Fl)((()=>{const e=(0,W.Z)(l.value).toHsl();return-1!==l.hue&&(e.h=l.hue),e})),u=(0,i.Fl)((()=>0===r.value.h&&"right"===o.value?"100%":100*r.value.h/360+"%"));(0,i.YP)((()=>l.value),(()=>{const e=(0,W.Z)(l.value).toHsl(),t=0===e.s?l.hue:e.h;0!==t&&t-n.value>0&&(o.value="right"),0!==t&&t-n.value<0&&(o.value="left"),n.value=t}));const c=(0,s.iH)(),d=e=>{if(e.preventDefault(),!c.value)return;const t=c.value.clientWidth,n=c.value.getBoundingClientRect().left+window.pageXOffset,o=e.pageX-n;let i,s;o<0?i=0:o>t?i=360:(s=100*o/t,i=360*s/100),-1!==l.hue&&r.value.h===i||a("colorChange",{h:i,l:r.value.l,s:r.value.s,a:r.value.a})},p=()=>{window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",p)},v=e=>{d(e),window.addEventListener("mousemove",d),window.addEventListener("mouseup",p)};return(0,i.Ah)(p),(e,t)=>((0,i.wg)(),(0,i.iD)("div",xh,[(0,i._)("div",{class:"hue-container",ref_key:"hueRef",ref:c,onMousedown:t[0]||(t[0]=e=>v(e))},[(0,i._)("div",{class:"hue-pointer",style:(0,oe.j5)({left:u.value})},bh,4)],544)]))}});const Ih=(0,Vl.Z)(_h,[["__scopeId","data-v-5711e710"]]);var Sh=Ih;const Ch=e=>((0,i.dD)("data-v-c79c0446"),e=e(),(0,i.Cn)(),e),Lh=Ch((()=>(0,i._)("div",{class:"saturation-white"},null,-1))),Th=Ch((()=>(0,i._)("div",{class:"saturation-black"},null,-1))),Eh=Ch((()=>(0,i._)("div",{class:"saturation-circle"},null,-1))),Mh=[Eh];var Uh=(0,i.aZ)({__name:"Saturation",props:{value:{},hue:{}},emits:["colorChange"],setup(e,{emit:t}){const l=e,a=t,n=(0,i.Fl)((()=>{const e=(0,W.Z)(l.value).toHsv();return-1!==l.hue&&(e.h=l.hue),e})),o=(0,i.Fl)((()=>`hsl(${n.value.h}, 100%, 50%)`)),r=(0,i.Fl)((()=>-100*n.value.v+1+100+"%")),u=(0,i.Fl)((()=>100*n.value.s+"%")),c=(0,D.throttle)((function(e){a("colorChange",e)}),20,{leading:!0,trailing:!1}),d=(0,s.iH)(),p=e=>{if(e.preventDefault(),!d.value)return;const t=d.value.clientWidth,l=d.value.clientHeight,a=d.value.getBoundingClientRect().left+window.pageXOffset,o=d.value.getBoundingClientRect().top+window.pageYOffset,i=(0,D.clamp)(e.pageX-a,0,t),s=(0,D.clamp)(e.pageY-o,0,l),r=i/t,u=(0,D.clamp)(-s/l+1,0,1);c({h:n.value.h,s:r,v:u,a:n.value.a})},v=()=>{window.removeEventListener("mousemove",p),window.removeEventListener("mouseup",v)},m=e=>{p(e),window.addEventListener("mousemove",p),window.addEventListener("mouseup",v)};return(0,i.Ah)(v),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"saturation",ref_key:"saturationRef",ref:d,style:(0,oe.j5)({background:o.value}),onMousedown:t[0]||(t[0]=e=>m(e))},[Lh,Th,(0,i._)("div",{class:"saturation-pointer",style:(0,oe.j5)({top:r.value,left:u.value})},Mh,4)],36))}});const Wh=(0,Vl.Z)(Uh,[["__scopeId","data-v-c79c0446"]]);var Dh=Wh;const Hh={class:"editable-input"},Fh=["value"];var Ah=(0,i.aZ)({__name:"EditableInput",props:{value:{}},emits:["colorChange"],setup(e,{emit:t}){const l=e,a=t,n=(0,i.Fl)((()=>{let e="";return e=l.value.a<1?(0,W.Z)(l.value).toHex8String().toUpperCase():(0,W.Z)(l.value).toHexString().toUpperCase(),e.replace("#","")})),o=e=>{const t=e.target.value;if(t.length>=6){const e=(0,W.Z)(t);e.isValid()&&a("colorChange",e.toRgb())}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Hh,[(0,i._)("input",{class:"input-content",value:n.value,onInput:t[0]||(t[0]=e=>o(e))},null,40,Fh)]))}});const $h=(0,Vl.Z)(Ah,[["__scopeId","data-v-65e2913c"]]);var Zh=$h;const Oh={class:"color-picker"},Rh={class:"picker-saturation-wrap"},zh={class:"picker-controls"},Ph={class:"picker-color-wrap"},Bh={class:"picker-sliders"},Nh={class:"picker-hue-wrap"},jh={class:"picker-alpha-wrap"},Yh={class:"picker-field"},Vh={class:"picker-presets"},Jh=["onClick"],qh={class:"picker-gradient-presets"},Xh=["onClick"],Gh={class:"picker-presets"},Kh=["onClick"],Qh={key:0,class:"recent-colors-title"},ef={class:"picker-presets"},tf=["onClick"],lf="RECENT_COLORS";var af=(0,i.aZ)({__name:"index",props:{modelValue:{default:"#e86b99"}},emits:["update:modelValue"],setup(e,{emit:t}){const l=e,a=t,n=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],o=(e,t,l)=>{const a=(0,W.Z)(e).toRgb(),n=(0,W.Z)(t).toRgb(),o=(n.r-a.r)/l,i=(n.g-a.g)/l,s=(n.b-a.b)/l,r=[];for(let u=0;u{const e=[];for(const t of n)e.push(o(t[1],t[0],5));return e},u=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c"],c=["#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57","#00afee","#0071be","#00215f","#72349d"],d=(0,s.iH)(-1),p=(0,s.iH)([]),v=(0,i.Fl)({get(){return(0,W.Z)(l.modelValue).toRgb()},set(e){const t=`rgba(${[e.r,e.g,e.b,e.a].join(",")})`;a("update:modelValue",t)}}),m=r(),h=(0,i.Fl)((()=>`rgba(${[v.value.r,v.value.g,v.value.b,v.value.a].join(",")})`)),f=e=>{d.value=(0,W.Z)(e).toHsl().h,a("update:modelValue",e)},g=(0,D.debounce)((function(){const e=(0,W.Z)(v.value).toRgbString();if(!p.value.includes(e)){p.value=[e,...p.value];const t=10;p.value.length>t&&(p.value=p.value.slice(0,t))}}),300,{trailing:!0});(0,i.bv)((()=>{const e=localStorage.getItem(lf);e&&(p.value=JSON.parse(e))})),(0,i.YP)(p,(()=>{const e=JSON.stringify(p.value);localStorage.setItem(lf,e)}));const y=e=>{"h"in e?(d.value=e.h,v.value=(0,W.Z)(e).toRgb()):(d.value=(0,W.Z)(e).toHsl().h,v.value=e),g()},w=()=>{const e="EyeDropper"in window;e?x():k()},x=()=>{ta.success("按 ESC 键关闭取色吸管");const e=new window.EyeDropper;e.open().then((e=>{const t=(0,W.Z)(e.sRGBHex);d.value=t.toHsl().h,v.value=t.toRgb(),g()})).catch((()=>{ta.success("关闭取色吸管")}))},k=()=>{const e=document.querySelector(".canvas");if(!e)return;const t=document.createElement("div");t.style.cssText="position: fixed; top: 0; left: 0; bottom: 0; right: 0; z-index: 9999; cursor: wait;",document.body.appendChild(t);const l=document.createElement("div");l.style.cssText="position: absolute; top: -100px; left: -100px; width: 16px; height: 16px; border: 1px solid #000; z-index: 999",t.appendChild(l);const{left:a,top:n,width:o,height:i}=e.getBoundingClientRect(),s=e=>(!e.tagName||"FOREIGNOBJECT"!==e.tagName.toUpperCase())&&(!e.classList||!e.classList.contains("operate"));(0,sh.rT)(e,{filter:s,fontEmbedCSS:"",width:o,height:i,canvasWidth:o,canvasHeight:i,pixelRatio:1}).then((e=>{e.style.cssText=`position: absolute; top: ${n}px; left: ${a}px; cursor: crosshair;`,t.style.cursor="default",t.appendChild(e);const o=e.getContext("2d");if(!o)return;let i="";const s=e=>{const t=e.x,s=e.y,r=t-a,u=s-n,[c,d,p,v]=o.getImageData(r,u,1,1).data;i=`rgba(${c}, ${d}, ${p}, ${(v/255).toFixed(2)})`,l.style.left=t+10+"px",l.style.top=s+10+"px",l.style.backgroundColor=i},r=()=>{i="",l.style.left="-100px",l.style.top="-100px",l.style.backgroundColor=""},u=l=>{if(i&&0===l.button){const e=(0,W.Z)(i);d.value=e.toHsl().h,v.value=e.toRgb(),g()}document.body.removeChild(t),e.removeEventListener("mousemove",s),e.removeEventListener("mouseleave",r),window.removeEventListener("mousedown",u)};e.addEventListener("mousemove",s),e.addEventListener("mouseleave",r),window.addEventListener("mousedown",u)})).catch((()=>{ta.error("取色吸管初始化失败"),document.body.removeChild(t)}))};return(e,t)=>{const l=(0,i.up)("IconNeedle");return(0,i.wg)(),(0,i.iD)("div",Oh,[(0,i._)("div",Rh,[(0,i.Wm)(Dh,{value:v.value,hue:d.value,onColorChange:t[0]||(t[0]=e=>y(e))},null,8,["value","hue"])]),(0,i._)("div",zh,[(0,i._)("div",Ph,[(0,i._)("div",{class:"picker-current-color",style:(0,oe.j5)({background:h.value})},null,4),(0,i.Wm)(ch)]),(0,i._)("div",Bh,[(0,i._)("div",Nh,[(0,i.Wm)(Sh,{value:v.value,hue:d.value,onColorChange:t[1]||(t[1]=e=>y(e))},null,8,["value","hue"])]),(0,i._)("div",jh,[(0,i.Wm)(yh,{value:v.value,onColorChange:t[2]||(t[2]=e=>y(e))},null,8,["value"])])])]),(0,i._)("div",Yh,[(0,i.Wm)(Zh,{class:"input",value:v.value,onColorChange:t[3]||(t[3]=e=>y(e))},null,8,["value"]),(0,i._)("div",{class:"straw",onClick:t[4]||(t[4]=e=>w())},[(0,i.Wm)(l)]),(0,i._)("div",{class:"transparent",onClick:t[5]||(t[5]=e=>f("#00000000"))},[(0,i.Wm)(ch)])]),(0,i._)("div",Vh,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(u,(e=>(0,i._)("div",{class:"picker-presets-color",key:e,style:(0,oe.j5)({background:e}),onClick:t=>f(e)},null,12,Jh))),64))]),(0,i._)("div",qh,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(m),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"picker-gradient-col",key:t},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e,(e=>((0,i.wg)(),(0,i.iD)("div",{class:"picker-gradient-color",key:e,style:(0,oe.j5)({background:e}),onClick:t=>f(e)},null,12,Xh)))),128))])))),128))]),(0,i._)("div",Gh,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(c,(e=>(0,i._)("div",{key:e,class:"picker-presets-color",style:(0,oe.j5)({background:e}),onClick:t=>f(e)},null,12,Kh))),64))]),p.value.length?((0,i.wg)(),(0,i.iD)("div",Qh,"最近使用:")):(0,i.kq)("",!0),(0,i._)("div",ef,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(p.value,(e=>((0,i.wg)(),(0,i.iD)("div",{key:e,class:"picker-presets-color alpha",onClick:t=>f(e)},[(0,i._)("div",{class:"picker-presets-color-content",style:(0,oe.j5)({background:e})},null,4)],8,tf)))),128))])])}}});const nf=(0,Vl.Z)(af,[["__scopeId","data-v-fec0b01a"]]);var of=nf;const sf=e=>((0,i.dD)("data-v-0566b060"),e=e(),(0,i.Cn)(),e),rf=sf((()=>(0,i._)("span",{class:"switch-core"},null,-1))),uf=[rf];var cf=(0,i.aZ)({__name:"Switch",props:{value:{type:Boolean},disabled:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e,a=t,n=()=>{l.disabled||a("update:value",!l.value)};return(e,t)=>((0,i.wg)(),(0,i.iD)("span",{class:(0,oe.C_)(["switch",{active:e.value,disabled:e.disabled}]),onClick:t[0]||(t[0]=e=>n())},uf,2))}});const df=(0,Vl.Z)(cf,[["__scopeId","data-v-0566b060"]]);var pf=df;const vf=e=>((0,i.dD)("data-v-18fbbd33"),e=e(),(0,i.Cn)(),e),mf={class:"element-outline"},hf={key:0,class:"row"},ff=vf((()=>(0,i._)("div",{style:{width:"40%"}},"启用边框:",-1))),gf={class:"switch-wrapper",style:{width:"60%"}},yf={class:"row"},wf=vf((()=>(0,i._)("div",{style:{width:"40%"}},"边框样式:",-1))),xf={class:"row"},kf=vf((()=>(0,i._)("div",{style:{width:"40%"}},"边框颜色:",-1))),bf={class:"row"},_f=vf((()=>(0,i._)("div",{style:{width:"40%"}},"边框粗细:",-1)));var If=(0,i.aZ)({__name:"ElementOutline",props:{fixed:{type:Boolean,default:!1}},setup(e){const t=$(),{theme:l}=(0,o.Jk)(t),{handleElement:a}=(0,o.Jk)(R()),n=(0,s.iH)(),r=(0,s.iH)(!1);(0,i.YP)(a,(()=>{a.value&&(n.value="outline"in a.value?a.value.outline:void 0,r.value=!!n.value)}),{deep:!0,immediate:!0});const{addHistorySnapshot:u}=da(),c=e=>{if(!a.value)return;const l={outline:{...n.value,...e}};t.updateElement({id:a.value.id,props:l}),u()},d=e=>{if(a.value){if(e){const e=l.value.outline;t.updateElement({id:a.value.id,props:{outline:e}})}else t.removeElementProps({id:a.value.id,propName:"outline"});u()}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",mf,[e.fixed?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("div",hf,[ff,(0,i._)("div",gf,[(0,i.Wm)(pf,{value:r.value,"onUpdate:value":t[0]||(t[0]=e=>d(e))},null,8,["value"])])])),r.value&&n.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i._)("div",yf,[wf,(0,i.Wm)(cp,{style:{width:"60%"},value:n.value.style||"","onUpdate:value":t[1]||(t[1]=e=>c({style:e})),options:[{label:"实线边框",value:"solid"},{label:"虚线边框",value:"dashed"}]},null,8,["value"])]),(0,i._)("div",xf,[kf,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:n.value.color,"onUpdate:modelValue":t[2]||(t[2]=e=>c({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:n.value.color||"#000"},null,8,["color"])])),_:1})]),(0,i._)("div",bf,[_f,(0,i.Wm)(mv,{value:n.value.width||0,"onUpdate:value":t[3]||(t[3]=e=>c({width:e})),style:{width:"60%"}},null,8,["value"])])],64)):(0,i.kq)("",!0)]))}});const Sf=(0,Vl.Z)(If,[["__scopeId","data-v-18fbbd33"]]);var Cf=Sf;const Lf=e=>((0,i.dD)("data-v-3a267bbc"),e=e(),(0,i.Cn)(),e),Tf={class:"element-shadow"},Ef={class:"row"},Mf=Lf((()=>(0,i._)("div",{style:{width:"40%"}},"启用阴影:",-1))),Uf={class:"switch-wrapper",style:{width:"60%"}},Wf={class:"row"},Df=Lf((()=>(0,i._)("div",{style:{width:"40%"}},"水平阴影:",-1))),Hf={class:"row"},Ff=Lf((()=>(0,i._)("div",{style:{width:"40%"}},"垂直阴影:",-1))),Af={class:"row"},$f=Lf((()=>(0,i._)("div",{style:{width:"40%"}},"模糊距离:",-1))),Zf={class:"row"},Of=Lf((()=>(0,i._)("div",{style:{width:"40%"}},"阴影颜色:",-1)));var Rf=(0,i.aZ)({__name:"ElementShadow",setup(e){const t=$(),{theme:l}=(0,o.Jk)(t),{handleElement:a}=(0,o.Jk)(R()),n=(0,s.iH)(),r=(0,s.iH)(!1);(0,i.YP)(a,(()=>{a.value&&(n.value="shadow"in a.value?a.value.shadow:void 0,r.value=!!n.value)}),{deep:!0,immediate:!0});const{addHistorySnapshot:u}=da(),c=e=>{if(!a.value||!n.value)return;const l={...n.value,...e};t.updateElement({id:a.value.id,props:{shadow:l}}),u()},d=e=>{if(a.value){if(e){const e=l.value.shadow;t.updateElement({id:a.value.id,props:{shadow:e}})}else t.removeElementProps({id:a.value.id,propName:"shadow"});u()}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Tf,[(0,i._)("div",Ef,[Mf,(0,i._)("div",Uf,[(0,i.Wm)(pf,{value:r.value,"onUpdate:value":t[0]||(t[0]=e=>d(e))},null,8,["value"])])]),r.value&&n.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",Wf,[Df,(0,i.Wm)(qm,{style:{width:"60%"},min:-10,max:10,step:1,value:n.value.h,"onUpdate:value":t[1]||(t[1]=e=>c({h:e}))},null,8,["value"])]),(0,i._)("div",Hf,[Ff,(0,i.Wm)(qm,{style:{width:"60%"},min:-10,max:10,step:1,value:n.value.v,"onUpdate:value":t[2]||(t[2]=e=>c({v:e}))},null,8,["value"])]),(0,i._)("div",Af,[$f,(0,i.Wm)(qm,{style:{width:"60%"},min:1,max:20,step:1,value:n.value.blur,"onUpdate:value":t[3]||(t[3]=e=>c({blur:e}))},null,8,["value"])]),(0,i._)("div",Zf,[Of,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:n.value.color,"onUpdate:modelValue":t[4]||(t[4]=e=>c({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:n.value.color},null,8,["color"])])),_:1})])],64)):(0,i.kq)("",!0)]))}});const zf=(0,Vl.Z)(Rf,[["__scopeId","data-v-3a267bbc"]]);var Pf=zf;const Bf={class:"text-color-block"};var Nf=(0,i.aZ)({__name:"TextColorButton",props:{color:{}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.j4)(tp,{class:"text-color-btn"},{default:(0,i.w5)((()=>[(0,i.WI)(e.$slots,"default"),(0,i._)("div",Bf,[(0,i._)("div",{class:"text-color-block-content",style:(0,oe.j5)({backgroundColor:e.color})},null,4)])])),_:3}))}});const jf=(0,Vl.Z)(Nf,[["__scopeId","data-v-37449800"]]);var Yf=jf,Vf=(0,i.aZ)({__name:"CheckboxButton",props:{checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.j4)(tp,{checked:e.checked,disabled:e.disabled,type:"checkbox"},{default:(0,i.w5)((()=>[(0,i.WI)(e.$slots,"default")])),_:3},8,["checked","disabled"]))}});const Jf=Vf;var qf=Jf,Xf=(0,i.aZ)({__name:"ButtonGroup",props:{passive:{type:Boolean,default:!1}},setup(e){return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["button-group",{passive:e.passive}]),ref:"groupRef"},[(0,i.WI)(e.$slots,"default")],2))}});const Gf=(0,Vl.Z)(Xf,[["__scopeId","data-v-4db942e2"]]);var Kf=Gf,Qf=(0,i.aZ)({__name:"RadioButton",props:{value:{},disabled:{type:Boolean,default:!1}},setup(e){const{value:t,updateValue:l}=(0,i.f3)(Mn);return(e,a)=>((0,i.wg)(),(0,i.j4)(tp,{checked:!e.disabled&&(0,s.SU)(t)===e.value,disabled:e.disabled,type:"radio",onClick:a[0]||(a[0]=t=>!e.disabled&&(0,s.SU)(l)(e.value))},{default:(0,i.w5)((()=>[(0,i.WI)(e.$slots,"default")])),_:3},8,["checked","disabled"]))}});const eg=Qf;var tg=eg,lg=(0,i.aZ)({__name:"RadioGroup",props:{value:{},disabled:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e,a=t,n=e=>{l.disabled||a("update:value",e)},o=(0,i.Fl)((()=>l.value));return(0,i.JJ)(Mn,{value:o,updateValue:n}),(e,t)=>((0,i.wg)(),(0,i.j4)(Kf,{class:"radio-group"},{default:(0,i.w5)((()=>[(0,i.WI)(e.$slots,"default")])),_:3}))}});const ag=lg;var ng=ag;const og={class:"select-group"};function ig(e,t){return(0,i.wg)(),(0,i.iD)("div",og,[(0,i.WI)(e.$slots,"default",{},void 0,!0)])}const sg={},rg=(0,Vl.Z)(sg,[["render",ig],["__scopeId","data-v-d2acb09c"]]);var ug=rg;const cg=e=>((0,i.dD)("data-v-4cf37a85"),e=e(),(0,i.Cn)(),e),dg={class:"text-style-panel"},pg={class:"preset-style"},vg=["onClick"],mg={class:"link-popover"},hg={class:"btns"},fg={class:"row",passive:""},gg={class:"list-wrap"},yg=["onClick"],wg=cg((()=>(0,i._)("span",null,null,-1))),xg=[wg],kg=cg((()=>(0,i._)("div",{style:{width:"10px"}},null,-1))),bg={class:"list-wrap"},_g=["onClick"],Ig=cg((()=>(0,i._)("span",null,null,-1))),Sg=[Ig],Cg={class:"row"},Lg=cg((()=>(0,i._)("div",{style:{width:"10px"}},null,-1))),Tg={class:"row"},Eg=cg((()=>(0,i._)("div",{style:{width:"40%"}},"行间距:",-1))),Mg={class:"row"},Ug=cg((()=>(0,i._)("div",{style:{width:"40%"}},"段间距:",-1))),Wg={class:"row"},Dg=cg((()=>(0,i._)("div",{style:{width:"40%"}},"字间距:",-1))),Hg={class:"row"},Fg=cg((()=>(0,i._)("div",{style:{width:"40%"}},"文本框填充:",-1)));var Ag=(0,i.aZ)({__name:"TextStylePanel",setup(e){const t=[{label:"大标题",style:{fontSize:"26px",fontWeight:700},cmd:[{command:"clear"},{command:"bold"},{command:"fontsize",value:"66px"},{command:"align",value:"center"}]},{label:"小标题",style:{fontSize:"22px",fontWeight:700},cmd:[{command:"clear"},{command:"bold"},{command:"fontsize",value:"40px"},{command:"align",value:"center"}]},{label:"正文",style:{fontSize:"20px"},cmd:[{command:"clear"},{command:"fontsize",value:"20px"}]},{label:"正文[小]",style:{fontSize:"18px"},cmd:[{command:"clear"},{command:"fontsize",value:"18px"}]},{label:"注释 1",style:{fontSize:"16px",fontStyle:"italic"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"em"}]},{label:"注释 2",style:{fontSize:"16px",textDecoration:"underline"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"underline"}]}],l=R(),a=$(),{handleElement:n,handleElementId:r,richTextAttrs:u,availableFonts:c,textFormatPainter:d}=(0,o.Jk)(l),{addHistorySnapshot:p}=da(),{toggleTextFormatPainter:v}=zm(),m=e=>{a.updateElement({id:r.value,props:e}),p()},h=(0,s.iH)(!1),f=(0,s.iH)(!1),g=(0,s.iH)(!1),y=(0,s.iH)(!1),w=(0,s.iH)(["disc","circle","square"]),x=(0,s.iH)(["decimal","lower-roman","upper-roman","lower-alpha","upper-alpha","lower-greek"]),k=(0,s.iH)("#000"),b=(0,s.iH)(),_=(0,s.iH)(),I=(0,s.iH)();(0,i.YP)(n,(()=>{n.value&&"text"===n.value.type&&(k.value=n.value.fill||"#fff",b.value=n.value.lineHeight||1.5,_.value=n.value.wordSpace||0,I.value=void 0===n.value.paragraphSpace?5:n.value.paragraphSpace,Oi.emit(Ai.SYNC_RICH_TEXT_ATTRS_TO_STORE))}),{deep:!0,immediate:!0});const S=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],C=[.9,1,1.15,1.2,1.4,1.5,1.8,2,2.5,3],L=[0,1,2,3,4,5,6,8,10],T=[0,5,10,15,20,25,30,40,50,80],E=e=>{m({lineHeight:e})},U=e=>{m({paragraphSpace:e})},W=e=>{m({wordSpace:e})},D=e=>{m({fill:e})},H=(e,t)=>{Oi.emit(Ai.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},F=e=>{Oi.emit(Ai.RICH_TEXT_COMMAND,{action:e})},A=(0,s.iH)(""),Z=(0,s.iH)(!1);(0,i.YP)(u,(()=>Z.value=!1));const O=()=>{A.value=u.value.link},z=e=>{const t=/^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/;if(!e||!t.test(e))return ta.error("不是正确的网页链接地址");H("link",e),Z.value=!1};return(e,l)=>{const a=(0,i.up)("IconFontSize"),n=(0,i.up)("IconAddText"),o=(0,i.up)("IconText"),r=(0,i.up)("IconHighLight"),p=(0,i.up)("IconTextBold"),m=(0,i.up)("IconTextItalic"),$=(0,i.up)("IconTextUnderline"),R=(0,i.up)("IconStrikethrough"),P=(0,i.up)("IconCode"),B=(0,i.up)("IconQuote"),N=(0,i.up)("IconFormat"),j=(0,i.up)("IconFormatBrush"),Y=(0,i.up)("IconLinkOne"),V=(0,i.up)("IconAlignTextLeft"),J=(0,i.up)("IconAlignTextCenter"),q=(0,i.up)("IconAlignTextRight"),X=(0,i.up)("IconAlignTextBoth"),G=(0,i.up)("IconList"),K=(0,i.up)("IconDown"),Q=(0,i.up)("IconOrderedList"),ee=(0,i.up)("IconIndentLeft"),te=(0,i.up)("IconIndentRight"),le=(0,i.up)("IconRowHeight"),ae=(0,i.up)("IconVerticalSpacingBetweenItems"),ne=(0,i.up)("IconFullwidth"),ie=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",dg,[(0,i._)("div",pg,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(t,(e=>(0,i._)("div",{class:"preset-style-item",key:e.label,style:(0,oe.j5)(e.style),onClick:t=>F(e.cmd)},(0,oe.zw)(e.label),13,vg))),64))]),(0,i.Wm)(Zc),(0,i.Wm)(ug,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(cp,{class:"font-select",style:{width:"60%"},value:(0,s.SU)(u).fontname,"onUpdate:value":l[0]||(l[0]=e=>H("fontname",e)),options:[...(0,s.SU)(c),...(0,s.SU)(M)]},{icon:(0,i.w5)((()=>[(0,i.Wm)(a)])),_:1},8,["value","options"]),(0,i.Wm)(cp,{style:{width:"40%"},value:(0,s.SU)(u).fontsize,"onUpdate:value":l[1]||(l[1]=e=>H("fontsize",e)),options:S.map((e=>({label:e,value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(n)])),_:1},8,["value","options"])])),_:1}),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).color,"onUpdate:modelValue":l[2]||(l[2]=e=>H("color",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{first:"",color:(0,s.SU)(u).color},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1},8,["color"])),[[ie,"文字颜色"]])])),_:1}),(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).backcolor,"onUpdate:modelValue":l[3]||(l[3]=e=>H("backcolor",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{color:(0,s.SU)(u).backcolor},{default:(0,i.w5)((()=>[(0,i.Wm)(r)])),_:1},8,["color"])),[[ie,"文字高亮"]])])),_:1}),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{class:"font-size-btn",style:{width:"20%"},onClick:l[4]||(l[4]=e=>H("fontsize-add"))},{default:(0,i.w5)((()=>[(0,i.Wm)(a),(0,i.Uk)("+")])),_:1})),[[ie,"增大字号"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{last:"",class:"font-size-btn",style:{width:"20%"},onClick:l[5]||(l[5]=e=>H("fontsize-reduce"))},{default:(0,i.w5)((()=>[(0,i.Wm)(a),(0,i.Uk)("-")])),_:1})),[[ie,"减小字号"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).bold,onClick:l[6]||(l[6]=e=>H("bold"))},{default:(0,i.w5)((()=>[(0,i.Wm)(p)])),_:1},8,["checked"])),[[ie,"加粗"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).em,onClick:l[7]||(l[7]=e=>H("em"))},{default:(0,i.w5)((()=>[(0,i.Wm)(m)])),_:1},8,["checked"])),[[ie,"斜体"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).underline,onClick:l[8]||(l[8]=e=>H("underline"))},{default:(0,i.w5)((()=>[(0,i.Wm)($)])),_:1},8,["checked"])),[[ie,"下划线"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).strikethrough,onClick:l[9]||(l[9]=e=>H("strikethrough"))},{default:(0,i.w5)((()=>[(0,i.Wm)(R)])),_:1},8,["checked"])),[[ie,"删除线"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).superscript,onClick:l[10]||(l[10]=e=>H("superscript"))},{default:(0,i.w5)((()=>[(0,i.Uk)("A²")])),_:1},8,["checked"])),[[ie,"上标"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).subscript,onClick:l[11]||(l[11]=e=>H("subscript"))},{default:(0,i.w5)((()=>[(0,i.Uk)("A₂")])),_:1},8,["checked"])),[[ie,"下标"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).code,onClick:l[12]||(l[12]=e=>H("code"))},{default:(0,i.w5)((()=>[(0,i.Wm)(P)])),_:1},8,["checked"])),[[ie,"行内代码"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).blockquote,onClick:l[13]||(l[13]=e=>H("blockquote"))},{default:(0,i.w5)((()=>[(0,i.Wm)(B)])),_:1},8,["checked"])),[[ie,"引用"]])])),_:1}),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{first:"",style:{flex:"1"},onClick:l[14]||(l[14]=e=>H("clear"))},{default:(0,i.w5)((()=>[(0,i.Wm)(N)])),_:1})),[[ie,"清除格式"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:!!(0,s.SU)(d),onClick:l[15]||(l[15]=e=>(0,s.SU)(v)()),onDblclick:l[16]||(l[16]=e=>(0,s.SU)(v)(!0))},{default:(0,i.w5)((()=>[(0,i.Wm)(j)])),_:1},8,["checked"])),[[ie,"格式刷(双击连续使用)"]]),(0,i.Wm)(dn,{placement:"bottom-end",trigger:"click",value:Z.value,"onUpdate:value":l[21]||(l[21]=e=>Z.value=e),style:{width:"33.33%"}},{content:(0,i.w5)((()=>[(0,i._)("div",mg,[(0,i.Wm)(sn,{value:A.value,"onUpdate:value":l[17]||(l[17]=e=>A.value=e),placeholder:"请输入超链接"},null,8,["value"]),(0,i._)("div",hg,[(0,i.Wm)(tp,{size:"small",disabled:!(0,s.SU)(u).link,onClick:l[18]||(l[18]=e=>z()),style:{"margin-right":"5px"}},{default:(0,i.w5)((()=>[(0,i.Uk)("移除")])),_:1},8,["disabled"]),(0,i.Wm)(tp,{size:"small",type:"primary",onClick:l[19]||(l[19]=e=>z(A.value))},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{last:"",style:{width:"100%"},checked:!!(0,s.SU)(u).link,onClick:l[20]||(l[20]=e=>O())},{default:(0,i.w5)((()=>[(0,i.Wm)(Y)])),_:1},8,["checked"])),[[ie,"超链接"]])])),_:1},8,["value"])])),_:1}),(0,i.Wm)(Zc),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:(0,s.SU)(u).align,"onUpdate:value":l[22]||(l[22]=e=>H("align",e))},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"left",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(V)])),_:1})),[[ie,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"center",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(J)])),_:1})),[[ie,"居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"right",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(q)])),_:1})),[[ie,"右对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"justify",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(X)])),_:1})),[[ie,"两端对齐"]])])),_:1},8,["value"]),(0,i._)("div",fg,[(0,i.Wm)(Kf,{style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{first:"",type:(0,s.SU)(u).bulletList?"primary":"default",style:{flex:"1"},onClick:l[23]||(l[23]=e=>H("bulletList"))},{default:(0,i.w5)((()=>[(0,i.Wm)(G)])),_:1},8,["type"])),[[ie,"项目符号"]]),(0,i.Wm)(dn,{trigger:"click",value:h.value,"onUpdate:value":l[24]||(l[24]=e=>h.value=e)},{content:(0,i.w5)((()=>[(0,i._)("div",gg,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(w.value,(e=>((0,i.wg)(),(0,i.iD)("ul",{class:"list",key:e,style:(0,oe.j5)({listStyleType:e}),onClick:t=>H("bulletList",e)},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(3,(e=>(0,i._)("li",{class:"list-item",key:e},xg))),64))],12,yg)))),128))])])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{last:"",class:"popover-btn"},{default:(0,i.w5)((()=>[(0,i.Wm)(K)])),_:1})])),_:1},8,["value"])])),_:1}),kg,(0,i.Wm)(Kf,{style:{flex:"1"},passive:""},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{first:"",type:(0,s.SU)(u).orderedList?"primary":"default",style:{flex:"1"},onClick:l[25]||(l[25]=e=>H("orderedList"))},{default:(0,i.w5)((()=>[(0,i.Wm)(Q)])),_:1},8,["type"])),[[ie,"编号"]]),(0,i.Wm)(dn,{trigger:"click",value:f.value,"onUpdate:value":l[26]||(l[26]=e=>f.value=e)},{content:(0,i.w5)((()=>[(0,i._)("div",bg,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(x.value,(e=>((0,i.wg)(),(0,i.iD)("ul",{class:"list",key:e,style:(0,oe.j5)({listStyleType:e}),onClick:t=>H("orderedList",e)},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(3,(e=>(0,i._)("li",{class:"list-item",key:e},Sg))),64))],12,_g)))),128))])])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{last:"",class:"popover-btn"},{default:(0,i.w5)((()=>[(0,i.Wm)(K)])),_:1})])),_:1},8,["value"])])),_:1})]),(0,i._)("div",Cg,[(0,i.Wm)(Kf,{style:{flex:"1"},passive:""},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{first:"",style:{flex:"1"},onClick:l[27]||(l[27]=e=>H("indent","-1"))},{default:(0,i.w5)((()=>[(0,i.Wm)(ee)])),_:1})),[[ie,"减小段落缩进"]]),(0,i.Wm)(dn,{trigger:"click",value:g.value,"onUpdate:value":l[29]||(l[29]=e=>g.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(mn,{onClick:l[28]||(l[28]=e=>H("textIndent","-1"))},{default:(0,i.w5)((()=>[(0,i.Uk)("减小首行缩进")])),_:1})])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{last:"",class:"popover-btn"},{default:(0,i.w5)((()=>[(0,i.Wm)(K)])),_:1})])),_:1},8,["value"])])),_:1}),Lg,(0,i.Wm)(Kf,{style:{flex:"1"},passive:""},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{first:"",style:{flex:"1"},onClick:l[30]||(l[30]=e=>H("indent","+1"))},{default:(0,i.w5)((()=>[(0,i.Wm)(te)])),_:1})),[[ie,"增大段落缩进"]]),(0,i.Wm)(dn,{trigger:"click",value:y.value,"onUpdate:value":l[32]||(l[32]=e=>y.value=e)},{content:(0,i.w5)((()=>[(0,i.Wm)(mn,{onClick:l[31]||(l[31]=e=>H("textIndent","+1"))},{default:(0,i.w5)((()=>[(0,i.Uk)("增大首行缩进")])),_:1})])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{last:"",class:"popover-btn"},{default:(0,i.w5)((()=>[(0,i.Wm)(K)])),_:1})])),_:1},8,["value"])])),_:1})]),(0,i.Wm)(Zc),(0,i._)("div",Tg,[Eg,(0,i.Wm)(cp,{style:{width:"60%"},value:b.value||1,"onUpdate:value":l[33]||(l[33]=e=>E(e)),options:C.map((e=>({label:e+"倍",value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(le)])),_:1},8,["value","options"])]),(0,i._)("div",Mg,[Ug,(0,i.Wm)(cp,{style:{width:"60%"},value:I.value||0,"onUpdate:value":l[34]||(l[34]=e=>U(e)),options:T.map((e=>({label:e+"px",value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(ae)])),_:1},8,["value","options"])]),(0,i._)("div",Wg,[Dg,(0,i.Wm)(cp,{style:{width:"60%"},value:_.value||0,"onUpdate:value":l[35]||(l[35]=e=>W(e)),options:L.map((e=>({label:e+"px",value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(ne)])),_:1},8,["value","options"])]),(0,i._)("div",Hg,[Fg,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:k.value,"onUpdate:modelValue":l[36]||(l[36]=e=>D(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:k.value},null,8,["color"])])),_:1})]),(0,i.Wm)(Zc),(0,i.Wm)(Cf),(0,i.Wm)(Zc),(0,i.Wm)(Pf),(0,i.Wm)(Zc),(0,i.Wm)(lh)])}}});const $g=(0,Vl.Z)(Ag,[["__scopeId","data-v-4cf37a85"]]);var Zg=$g;const Og={class:"element-flip"};var Rg=(0,i.aZ)({__name:"ElementFlip",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=(0,s.iH)(!1),n=(0,s.iH)(!1);(0,i.YP)(l,(()=>{!l.value||"image"!==l.value.type&&"shape"!==l.value.type||(a.value=!!l.value.flipH,n.value=!!l.value.flipV)}),{deep:!0,immediate:!0});const{addHistorySnapshot:r}=da(),u=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),r())};return(e,t)=>{const l=(0,i.up)("IconFlipVertically"),o=(0,i.up)("IconFlipHorizontally");return(0,i.wg)(),(0,i.iD)("div",Og,[(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(qf,{style:{flex:"1"},checked:n.value,onClick:t[0]||(t[0]=e=>u({flipV:!n.value}))},{default:(0,i.w5)((()=>[(0,i.Wm)(l),(0,i.Uk)(" 垂直翻转")])),_:1},8,["checked"]),(0,i.Wm)(qf,{style:{flex:"1"},checked:a.value,onClick:t[1]||(t[1]=e=>u({flipH:!a.value}))},{default:(0,i.w5)((()=>[(0,i.Wm)(o),(0,i.Uk)(" 水平翻转")])),_:1},8,["checked"])])),_:1})])}}});const zg=(0,Vl.Z)(Rg,[["__scopeId","data-v-7571b056"]]);var Pg=zg;const Bg=e=>((0,i.dD)("data-v-2c8acf3c"),e=e(),(0,i.Cn)(),e),Ng={class:"element-filter"},jg={class:"row"},Yg=Bg((()=>(0,i._)("div",{style:{flex:"2"}},"启用滤镜:",-1))),Vg={class:"switch-wrapper",style:{flex:"3"}},Jg={key:0,class:"filter"},qg={class:"name"};var Xg=(0,i.aZ)({__name:"ElementFilter",setup(e){const t=[{label:"模糊",key:"blur",default:0,value:0,unit:"px",max:10,step:1},{label:"亮度",key:"brightness",default:100,value:100,unit:"%",max:200,step:5},{label:"对比度",key:"contrast",default:100,value:100,unit:"%",max:200,step:5},{label:"灰度",key:"grayscale",default:0,value:0,unit:"%",max:100,step:5},{label:"饱和度",key:"saturate",default:100,value:100,unit:"%",max:200,step:5},{label:"色相",key:"hue-rotate",default:0,value:0,unit:"deg",max:360,step:10},{label:"不透明度",key:"opacity",default:100,value:100,unit:"%",max:100,step:5}],l=$(),{handleElement:a,handleElementId:n}=(0,o.Jk)(R()),r=(0,s.iH)(JSON.parse(JSON.stringify(t))),u=(0,s.iH)(!1),{addHistorySnapshot:c}=da();(0,i.YP)(a,(()=>{if(!a.value||"image"!==a.value.type)return;const e=a.value.filters;e?(r.value=t.map((t=>{const l=e[t.key];return l?{...t,value:parseInt(l)}:t})),u.value=!0):(r.value=JSON.parse(JSON.stringify(t)),u.value=!1)}),{deep:!0,immediate:!0});const d=(e,t)=>{const o=a.value,i=o.filters||{},s={...i,[e.key]:`${t}${e.unit}`};l.updateElement({id:n.value,props:{filters:s}}),c()},p=e=>{a.value&&(e?l.updateElement({id:a.value.id,props:{filters:{}}}):l.removeElementProps({id:a.value.id,propName:"filters"}),c())};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Ng,[(0,i._)("div",jg,[Yg,(0,i._)("div",Vg,[(0,i.Wm)(pf,{value:u.value,"onUpdate:value":t[0]||(t[0]=e=>p(e))},null,8,["value"])])]),u.value?((0,i.wg)(),(0,i.iD)("div",Jg,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(r.value,(e=>((0,i.wg)(),(0,i.iD)("div",{class:"filter-item",key:e.key},[(0,i._)("div",qg,(0,oe.zw)(e.label),1),(0,i.Wm)(qm,{class:"filter-slider",max:e.max,min:0,step:e.step,value:e.value,"onUpdate:value":t=>d(e,t)},null,8,["max","step","value","onUpdate:value"])])))),128))])):(0,i.kq)("",!0)]))}});const Gg=(0,Vl.Z)(Xg,[["__scopeId","data-v-2c8acf3c"]]);var Kg=Gg;const Qg=e=>((0,i.dD)("data-v-0ae0ff99"),e=e(),(0,i.Cn)(),e),ey={class:"element-color-mask"},ty={class:"row"},ly=Qg((()=>(0,i._)("div",{style:{width:"40%"}},"着色(蒙版):",-1))),ay={class:"switch-wrapper",style:{width:"60%"}},ny={key:0,class:"row",style:{"margin-top":"15px"}},oy=Qg((()=>(0,i._)("div",{style:{width:"40%"}},"蒙版颜色:",-1))),iy="rgba(226, 83, 77, 0.5)";var sy=(0,i.aZ)({__name:"ElementColorMask",setup(e){const t=$(),{handleElement:l,handleElementId:a}=(0,o.Jk)(R()),n=(0,s.iH)(iy),r=(0,s.iH)(!1),{addHistorySnapshot:u}=da();(0,i.YP)(l,(()=>{l.value&&"image"===l.value.type&&(l.value.colorMask?(n.value=l.value.colorMask,r.value=!0):r.value=!1)}),{deep:!0,immediate:!0});const c=e=>{l.value&&(e?t.updateElement({id:l.value.id,props:{colorMask:iy}}):t.removeElementProps({id:l.value.id,propName:"colorMask"}),u())},d=e=>{t.updateElement({id:a.value,props:{colorMask:e}}),u()};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",ey,[(0,i._)("div",ty,[ly,(0,i._)("div",ay,[(0,i.Wm)(pf,{value:r.value,"onUpdate:value":t[0]||(t[0]=e=>c(e))},null,8,["value"])])]),r.value?((0,i.wg)(),(0,i.iD)("div",ny,[oy,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:n.value,"onUpdate:modelValue":t[1]||(t[1]=e=>d(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:n.value},null,8,["color"])])),_:1})])):(0,i.kq)("",!0)]))}});const ry=(0,Vl.Z)(sy,[["__scopeId","data-v-0ae0ff99"]]);var uy=ry;const cy=e=>((0,i.dD)("data-v-080b6de7"),e=e(),(0,i.Cn)(),e),dy={class:"image-style-panel"},py={class:"clip"},vy=cy((()=>(0,i._)("div",{class:"title"},"按形状:",-1))),my={class:"shape-clip"},hy=["onClick"],fy={key:0,class:"title"};var gy=(0,i.aZ)({__name:"ImageStylePanel",setup(e){const t=Kn,l=[{label:"纵横比(正方形)",children:[{key:"1:1",ratio:1}]},{label:"纵横比(纵向)",children:[{key:"2:3",ratio:1.5},{key:"3:4",ratio:4/3},{key:"3:5",ratio:5/3},{key:"4:5",ratio:5/4}]},{label:"纵横比(横向)",children:[{key:"3:2",ratio:2/3},{key:"4:3",ratio:3/4},{key:"5:3",ratio:.6},{key:"5:4",ratio:.8}]},{children:[{key:"16:9",ratio:9/16},{key:"16:10",ratio:.625}]}],a=R(),n=$(),{handleElement:r,handleElementId:u}=(0,o.Jk)(a),{currentSlide:c}=(0,o.Jk)(n),d=r,p=(0,s.iH)(!1),{addHistorySnapshot:v}=da(),m=()=>{a.setClipingImageElementId(u.value),p.value=!1},h=()=>{const e=r.value,t=e.width,l=e.height,a=e.left,n=e.top,o=e.clip?e.clip.range:[[0,0],[100,100]],i=t/((o[1][0]-o[0][0])/100),s=l/((o[1][1]-o[0][1])/100),u=a-i*(o[0][0]/100),c=n-s*(o[0][1]/100);return{originClipRange:o,originWidth:i,originHeight:s,originLeft:u,originTop:c}},f=(e,t=0)=>{const l=r.value,{originClipRange:a,originWidth:o,originHeight:i,originLeft:s,originTop:c}=h();if(t){const a=i/o,r=0,d=100;let p;if(a>t){const e=(1-t/a)/2*100;p=[[r,e],[d,d-e]]}else{const e=(1-a/t)/2*100;p=[[e,r],[d-e,d]]}n.updateElement({id:u.value,props:{clip:{...l.clip,shape:e,range:p},left:s+o*(p[0][0]/100),top:c+i*(p[0][1]/100),width:o*(p[1][0]-p[0][0])/100,height:i*(p[1][1]-p[0][1])/100}})}else n.updateElement({id:u.value,props:{clip:{...l.clip,shape:e,range:a}}});m(),v()},g=e=>{const t=e[0];t&&(na(t).then((e=>{const t={src:e};n.updateElement({id:u.value,props:t})})),v())},y=()=>{const e=r.value;if(e.clip){const{originWidth:e,originHeight:t,originLeft:l,originTop:a}=h();n.updateElement({id:u.value,props:{left:l,top:a,width:e,height:t}})}n.removeElementProps({id:u.value,propName:["clip","outline","flip","shadow","filters","colorMask"]}),v()},w=()=>{const e=r.value,t={...c.value.background,type:"image",image:e.src,imageSize:"cover"};n.updateSlide({background:t}),v()};return(e,a)=>{const n=(0,i.up)("IconTailoring"),o=(0,i.up)("IconDown"),r=(0,i.up)("IconTransform"),u=(0,i.up)("IconUndo"),c=(0,i.up)("IconTheme");return(0,i.wg)(),(0,i.iD)("div",dy,[(0,i._)("div",{class:"origin-image",style:(0,oe.j5)({backgroundImage:`url(${(0,s.SU)(d).src})`})},null,4),(0,i.Wm)(Pg),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{first:"",style:{width:"calc(100% / 6 * 5)"},onClick:a[0]||(a[0]=e=>m())},{default:(0,i.w5)((()=>[(0,i.Wm)(n,{class:"btn-icon"}),(0,i.Uk)(" 裁剪图片")])),_:1}),(0,i.Wm)(dn,{trigger:"click",value:p.value,"onUpdate:value":a[1]||(a[1]=e=>p.value=e),style:{width:"calc(100% / 6)"}},{content:(0,i.w5)((()=>[(0,i._)("div",py,[vy,(0,i._)("div",my,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(t),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"shape-clip-item",key:t,onClick:e=>f(t)},[(0,i._)("div",{class:"shape",style:(0,oe.j5)({clipPath:e.style})},null,4)],8,hy)))),128))]),((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(l,(e=>((0,i.wg)(),(0,i.iD)(i.HY,{key:e.label},[e.label?((0,i.wg)(),(0,i.iD)("div",fy,"按"+(0,oe.zw)(e.label)+":",1)):(0,i.kq)("",!0),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.children,(e=>((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},key:e.key,onClick:t=>f("rect",e.ratio)},{default:(0,i.w5)((()=>[(0,i.Uk)((0,oe.zw)(e.key),1)])),_:2},1032,["onClick"])))),128))])),_:2},1024)],64)))),64))])])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{last:"",class:"popover-btn",style:{width:"100%"}},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1})])),_:1},8,["value"])])),_:1}),(0,i.Wm)(Zc),(0,i.Wm)(uy),(0,i.Wm)(Zc),(0,i.Wm)(Kg),(0,i.Wm)(Zc),(0,i.Wm)(Cf),(0,i.Wm)(Zc),(0,i.Wm)(Pf),(0,i.Wm)(Zc),(0,i.Wm)(Pa,{onChange:a[2]||(a[2]=e=>g(e))},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{class:"full-width-btn"},{default:(0,i.w5)((()=>[(0,i.Wm)(r,{class:"btn-icon"}),(0,i.Uk)(" 替换图片")])),_:1})])),_:1}),(0,i.Wm)(tp,{class:"full-width-btn",onClick:a[3]||(a[3]=e=>y())},{default:(0,i.w5)((()=>[(0,i.Wm)(u,{class:"btn-icon"}),(0,i.Uk)(" 重置样式")])),_:1}),(0,i.Wm)(tp,{class:"full-width-btn",onClick:a[4]||(a[4]=e=>w())},{default:(0,i.w5)((()=>[(0,i.Wm)(c,{class:"btn-icon"}),(0,i.Uk)(" 设为背景")])),_:1})])}}});const yy=(0,Vl.Z)(gy,[["__scopeId","data-v-080b6de7"]]);var wy=yy,xy=()=>{const e=R(),{shapeFormatPainter:t,handleElement:l}=(0,o.Jk)(e),a=(a=!1)=>{const n=l.value;t.value?e.setShapeFormatPainter(null):e.setShapeFormatPainter({keep:a,fill:n.fill,gradient:n.gradient,outline:n.outline,opacity:n.opacity,shadow:n.shadow})};return{toggleShapeFormatPainter:a}};const ky=e=>((0,i.dD)("data-v-0674f2cf"),e=e(),(0,i.Cn)(),e),by={class:"shape-style-panel"},_y={class:"title"},Iy=ky((()=>(0,i._)("span",null,"点击替换形状",-1))),Sy={class:"shape-pool"},Cy={class:"shape-list"},Ly={class:"row"},Ty=ky((()=>(0,i._)("div",{style:{width:"10px"}},null,-1))),Ey={class:"row"},My=ky((()=>(0,i._)("div",{style:{width:"40%"}},"起点颜色:",-1))),Uy={class:"row"},Wy=ky((()=>(0,i._)("div",{style:{width:"40%"}},"终点颜色:",-1))),Dy={key:0,class:"row"},Hy=ky((()=>(0,i._)("div",{style:{width:"40%"}},"渐变角度:",-1))),Fy={class:"row"};var Ay=(0,i.aZ)({__name:"ShapeStylePanel",setup(e){const t=R(),l=$(),{handleElement:a,handleElementId:n,richTextAttrs:r,availableFonts:u,textFormatPainter:c,shapeFormatPainter:d}=(0,o.Jk)(t),p=a,v=(0,s.iH)("#000"),m=(0,s.iH)({type:"linear",rotate:0,color:["#fff","#fff"]}),h=(0,s.iH)("fill"),f=(0,s.iH)("middle");(0,i.YP)(a,(()=>{a.value&&"shape"===a.value.type&&(v.value=a.value.fill||"#fff",m.value=a.value.gradient||{type:"linear",rotate:0,color:[v.value,"#fff"]},h.value=a.value.gradient?"gradient":"fill",f.value=a.value?.text?.align||"middle")}),{deep:!0,immediate:!0});const{addHistorySnapshot:g}=da(),{toggleTextFormatPainter:y}=zm(),{toggleShapeFormatPainter:w}=xy(),x=e=>{l.updateElement({id:n.value,props:e}),g()},k=e=>{"fill"===e?(l.removeElementProps({id:n.value,propName:"gradient"}),g()):x({gradient:m.value})},b=e=>{if(!m.value)return;const t={...m.value,...e};x({gradient:t})},_=e=>{x({fill:e})},I=e=>{const{width:t,height:l}=a.value,n={viewBox:e.viewBox,path:e.path,special:e.special};if(e.pathFormula){n.pathFormula=e.pathFormula,n.viewBox=[t,l];const a=ra[e.pathFormula];"editable"in a?(n.path=a.formula(t,l,a.defaultValue),n.keypoint=a.defaultValue):n.path=a.formula(t,l)}else n.pathFormula=void 0,n.keypoint=void 0;x(n)},S=e=>{const t=a.value,l={content:"",defaultFontName:"微软雅黑",defaultColor:"#000",align:"middle"},n=t.text||l;x({text:{...n,align:e}})},C=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],L=(e,t)=>{Oi.emit(Ai.RICH_TEXT_COMMAND,{action:{command:e,value:t}})};return(e,t)=>{const l=(0,i.up)("IconDown"),a=(0,i.up)("IconFontSize"),n=(0,i.up)("IconAddText"),o=(0,i.up)("IconText"),g=(0,i.up)("IconHighLight"),x=(0,i.up)("IconTextBold"),T=(0,i.up)("IconTextItalic"),E=(0,i.up)("IconTextUnderline"),U=(0,i.up)("IconStrikethrough"),W=(0,i.up)("IconFormat"),D=(0,i.up)("IconFormatBrush"),H=(0,i.up)("IconAlignTextLeft"),F=(0,i.up)("IconAlignTextCenter"),A=(0,i.up)("IconAlignTextRight"),$=(0,i.up)("IconAlignTextTopOne"),Z=(0,i.up)("IconAlignTextMiddleOne"),O=(0,i.up)("IconAlignTextBottomOne"),R=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",by,[(0,i._)("div",_y,[Iy,(0,i.Wm)(l)]),(0,i._)("div",Sy,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(ua),(e=>((0,i.wg)(),(0,i.iD)("div",{class:"category",key:e.type},[(0,i._)("div",Cy,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.children,((e,t)=>((0,i.wg)(),(0,i.iD)(i.HY,null,["任意多边形"!==e.title?((0,i.wg)(),(0,i.j4)(Hp,{class:"shape-item",key:t,shape:e,onClick:t=>I(e)},null,8,["shape","onClick"])):(0,i.kq)("",!0)],64)))),256))])])))),128))]),(0,i._)("div",Ly,[(0,i.Wm)(cp,{style:{flex:"1"},value:h.value,"onUpdate:value":t[0]||(t[0]=e=>k(e)),options:[{label:"纯色填充",value:"fill"},{label:"渐变填充",value:"gradient"}]},null,8,["value"]),Ty,"fill"===h.value?((0,i.wg)(),(0,i.j4)(dn,{key:0,trigger:"click",style:{flex:"1"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:v.value,"onUpdate:modelValue":t[1]||(t[1]=e=>_(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:v.value},null,8,["color"])])),_:1})):((0,i.wg)(),(0,i.j4)(cp,{key:1,style:{flex:"1"},value:m.value.type,"onUpdate:value":t[2]||(t[2]=e=>b({type:e})),options:[{label:"线性渐变",value:"linear"},{label:"径向渐变",value:"radial"}]},null,8,["value"]))]),"gradient"===h.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",Ey,[My,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:m.value.color[0],"onUpdate:modelValue":t[3]||(t[3]=e=>b({color:[e,m.value.color[1]]}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:m.value.color[0]},null,8,["color"])])),_:1})]),(0,i._)("div",Uy,[Wy,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:m.value.color[1],"onUpdate:modelValue":t[4]||(t[4]=e=>b({color:[m.value.color[0],e]}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:m.value.color[1]},null,8,["color"])])),_:1})]),"linear"===m.value.type?((0,i.wg)(),(0,i.iD)("div",Dy,[Hy,(0,i.Wm)(qm,{style:{width:"60%"},min:0,max:360,step:15,value:m.value.rotate,"onUpdate:value":t[5]||(t[5]=e=>b({rotate:e}))},null,8,["value"])])):(0,i.kq)("",!0)],64)):(0,i.kq)("",!0),(0,i.Wm)(Pg),(0,i.Wm)(Zc),(0,s.SU)(p).text?.content?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i.Wm)(ug,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(cp,{class:"font-select",style:{width:"60%"},value:(0,s.SU)(r).fontname,"onUpdate:value":t[6]||(t[6]=e=>L("fontname",e)),options:[...(0,s.SU)(u),...(0,s.SU)(M)]},{icon:(0,i.w5)((()=>[(0,i.Wm)(a)])),_:1},8,["value","options"]),(0,i.Wm)(cp,{style:{width:"40%"},value:(0,s.SU)(r).fontsize,"onUpdate:value":t[7]||(t[7]=e=>L("fontsize",e)),options:C.map((e=>({label:e,value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(n)])),_:1},8,["value","options"])])),_:1}),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(r).color,"onUpdate:modelValue":t[8]||(t[8]=e=>L("color",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{first:"",color:(0,s.SU)(r).color},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1},8,["color"])),[[R,"文字颜色"]])])),_:1}),(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(r).backcolor,"onUpdate:modelValue":t[9]||(t[9]=e=>L("backcolor",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{color:(0,s.SU)(r).backcolor},{default:(0,i.w5)((()=>[(0,i.Wm)(g)])),_:1},8,["color"])),[[R,"文字高亮"]])])),_:1}),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{class:"font-size-btn",style:{width:"20%"},onClick:t[10]||(t[10]=e=>L("fontsize-add"))},{default:(0,i.w5)((()=>[(0,i.Wm)(a),(0,i.Uk)("+")])),_:1})),[[R,"增大字号"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{last:"",class:"font-size-btn",style:{width:"20%"},onClick:t[11]||(t[11]=e=>L("fontsize-reduce"))},{default:(0,i.w5)((()=>[(0,i.Wm)(a),(0,i.Uk)("-")])),_:1})),[[R,"减小字号"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(r).bold,onClick:t[12]||(t[12]=e=>L("bold"))},{default:(0,i.w5)((()=>[(0,i.Wm)(x)])),_:1},8,["checked"])),[[R,"加粗"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(r).em,onClick:t[13]||(t[13]=e=>L("em"))},{default:(0,i.w5)((()=>[(0,i.Wm)(T)])),_:1},8,["checked"])),[[R,"斜体"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(r).underline,onClick:t[14]||(t[14]=e=>L("underline"))},{default:(0,i.w5)((()=>[(0,i.Wm)(E)])),_:1},8,["checked"])),[[R,"下划线"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:(0,s.SU)(r).strikethrough,onClick:t[15]||(t[15]=e=>L("strikethrough"))},{default:(0,i.w5)((()=>[(0,i.Wm)(U)])),_:1},8,["checked"])),[[R,"删除线"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},onClick:t[16]||(t[16]=e=>L("clear"))},{default:(0,i.w5)((()=>[(0,i.Wm)(W)])),_:1})),[[R,"清除格式"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:!!(0,s.SU)(c),onClick:t[17]||(t[17]=e=>(0,s.SU)(y)()),onDblclick:t[18]||(t[18]=e=>(0,s.SU)(y)(!0))},{default:(0,i.w5)((()=>[(0,i.Wm)(D)])),_:1},8,["checked"])),[[R,"格式刷(双击连续使用)"]])])),_:1}),(0,i.Wm)(Zc),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:(0,s.SU)(r).align,"onUpdate:value":t[19]||(t[19]=e=>L("align",e))},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"left",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(H)])),_:1})),[[R,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"center",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(F)])),_:1})),[[R,"居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"right",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(A)])),_:1})),[[R,"右对齐"]])])),_:1},8,["value"]),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:f.value,"onUpdate:value":t[20]||(t[20]=e=>S(e))},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"top",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)($)])),_:1})),[[R,"顶对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"middle",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(Z)])),_:1})),[[R,"居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"bottom",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(O)])),_:1})),[[R,"底对齐"]])])),_:1},8,["value"]),(0,i.Wm)(Zc)],64)):(0,i.kq)("",!0),(0,i.Wm)(Cf),(0,i.Wm)(Zc),(0,i.Wm)(Pf),(0,i.Wm)(Zc),(0,i.Wm)(lh),(0,i.Wm)(Zc),(0,i._)("div",Fy,[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:!!(0,s.SU)(d),onClick:t[21]||(t[21]=e=>(0,s.SU)(w)()),onDblclick:t[22]||(t[22]=e=>(0,s.SU)(w)(!0))},{default:(0,i.w5)((()=>[(0,i.Wm)(D),(0,i.Uk)(" 形状格式刷")])),_:1},8,["checked"])),[[R,"双击连续使用"]])])])}}});const $y=(0,Vl.Z)(Ay,[["__scopeId","data-v-0674f2cf"]]);var Zy=$y;const Oy=e=>((0,i.dD)("data-v-ae80032c"),e=e(),(0,i.Cn)(),e),Ry={class:"line-style-panel"},zy={class:"row"},Py=Oy((()=>(0,i._)("div",{style:{width:"40%"}},"线条样式:",-1))),By={class:"row"},Ny=Oy((()=>(0,i._)("div",{style:{width:"40%"}},"线条颜色:",-1))),jy={class:"row"},Yy=Oy((()=>(0,i._)("div",{style:{width:"40%"}},"线条宽度:",-1))),Vy={class:"row"},Jy=Oy((()=>(0,i._)("div",{style:{width:"40%"}},"起点样式:",-1))),qy={class:"row"},Xy=Oy((()=>(0,i._)("div",{style:{width:"40%"}},"终点样式:",-1)));var Gy=(0,i.aZ)({__name:"LineStylePanel",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=l,{addHistorySnapshot:n}=da(),r=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),n())};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Ry,[(0,i._)("div",zy,[Py,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(a).style,"onUpdate:value":t[0]||(t[0]=e=>r({style:e})),options:[{label:"实线",value:"solid"},{label:"虚线",value:"dashed"}]},null,8,["value"])]),(0,i._)("div",By,[Ny,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(a).color,"onUpdate:modelValue":t[1]||(t[1]=e=>r({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(a).color},null,8,["color"])])),_:1})]),(0,i._)("div",jy,[Yy,(0,i.Wm)(mv,{value:(0,s.SU)(a).width,"onUpdate:value":t[2]||(t[2]=e=>r({width:e})),style:{width:"60%"}},null,8,["value"])]),(0,i._)("div",Vy,[Jy,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(a).points[0],"onUpdate:value":t[3]||(t[3]=e=>r({points:[e,(0,s.SU)(a).points[1]]})),options:[{label:"无",value:""},{label:"箭头",value:"arrow"},{label:"圆点",value:"dot"}]},null,8,["value"])]),(0,i._)("div",qy,[Xy,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(a).points[1],"onUpdate:value":t[4]||(t[4]=e=>r({points:[(0,s.SU)(a).points[0],e]})),options:[{label:"无",value:""},{label:"箭头",value:"arrow"},{label:"圆点",value:"dot"}]},null,8,["value"])]),(0,i.Wm)(Zc),(0,i.Wm)(Pf)]))}});const Ky=(0,Vl.Z)(Gy,[["__scopeId","data-v-ae80032c"]]);var Qy=Ky;const ew={class:"chart-data-editor"},tw={class:"editor-content"},lw={class:"range-box"},aw=["id","onFocus","onPaste"],nw={class:"btns"},ow={class:"left"},iw={class:"right"},sw=100,rw=32;var uw=(0,i.aZ)({__name:"ChartDataEditor",props:{data:{}},emits:["save","close"],setup(e,{emit:t}){const l=e,a=t,o=(0,s.iH)([0,0]),r=(0,s.iH)({width:0,height:0}),u=(0,s.iH)(null),c=(0,i.Fl)((()=>{const e=o.value[0]*sw,t=o.value[1]*rw;return[{type:"t",style:{width:e+"px"}},{type:"b",style:{top:t+"px",width:e+"px"}},{type:"l",style:{height:t+"px"}},{type:"r",style:{left:e+"px",height:t+"px"}}]})),d=(0,i.Fl)((()=>{const e=o.value[0]*sw,t=o.value[1]*rw;return{left:e+"px",top:t+"px"}})),p=()=>{const e=[],{labels:t,legends:a,series:n}=l.data,i=t.length,s=n.length;e.push(["",...a]);for(let l=0;l{if(!u.value)return;const[e,t]=u.value,l=document.querySelector(`#cell-${e+1}-${t}`);l&&l.focus()},m=e=>{const t=e.key.toUpperCase();t===ne.ENTER&&v()};(0,i.bv)((()=>{document.addEventListener("keydown",m)})),(0,i.Ah)((()=>{document.removeEventListener("keydown",m)}));const h=()=>{const[e,t]=o.value,l=[],n=[],i=[];for(let a=1;a{for(let e=1;e<31;e++)for(let t=1;t<7;t++){const l=document.querySelector(`#cell-${e}-${t}`);l&&(l.value="")}},g=(e,t,l)=>{if(e.preventDefault(),!e.clipboardData)return;const a=e.clipboardData.items[0];a&&"string"===a.kind&&"text/plain"===a.type&&a.getAsString((e=>{const a=fe(e);if("object"===typeof a)return;const n=ge(e);if(n){const e=t+n.length,a=l+n[0].length;for(let o=t;oa("close"),w=e=>{let t=!0;const l=e.pageX,a=e.pageY,n=o.value[0]*sw,i=o.value[1]*rw;document.onmousemove=e=>{if(!t)return;const o=e.pageX,s=e.pageY,u=o-l,c=s-a,d=n+u,p=i+c;r.value={width:d,height:p}},document.onmouseup=e=>{t=!1,document.onmousemove=null,document.onmouseup=null;const n=e.pageX,i=e.pageY;if(l===n&&a===i)return;let s=r.value.width,u=r.value.height;s%sw>.5*sw&&(s+=sw-s%sw),u%rw>.5*rw&&(u+=rw-u%rw);let c=Math.round(u/rw),d=Math.round(s/sw);c<3&&(c=3),d<2&&(d=2),o.value=[d,c],r.value={width:0,height:0}}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",ew,[(0,i._)("div",tw,[(0,i._)("div",lw,[(0,i._)("div",{class:"temp-range",style:(0,oe.j5)({width:r.value.width+"px",height:r.value.height+"px"})},null,4),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(c.value,(e=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["range-line",e.type]),key:e.type,style:(0,oe.j5)(e.style)},null,6)))),128)),(0,i._)("div",{class:"resizable",style:(0,oe.j5)(d.value),onMousedown:t[0]||(t[0]=(0,n.iM)((e=>w(e)),["stop"]))},null,36)]),(0,i._)("table",null,[(0,i._)("tbody",null,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(31,(e=>(0,i._)("tr",{key:e},[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(7,(t=>(0,i._)("td",{key:t,class:(0,oe.C_)({head:1===t&&e<=o.value[1]||1===e&&t<=o.value[0]})},[(0,i._)("input",{class:(0,oe.C_)(["item",{selected:e<=o.value[1]&&t<=o.value[0]}]),id:`cell-${e-1}-${t-1}`,autocomplete:"off",onFocus:l=>u.value=[e-1,t-1],onPaste:l=>g(l,e-1,t-1)},null,42,aw)],2))),64))]))),64))])])]),(0,i._)("div",nw,[(0,i._)("div",ow,[(0,i.Wm)(tp,{class:"btn",onClick:t[1]||(t[1]=e=>f())},{default:(0,i.w5)((()=>[(0,i.Uk)("清空")])),_:1})]),(0,i._)("div",iw,[(0,i.Wm)(tp,{class:"btn",onClick:t[2]||(t[2]=e=>y())},{default:(0,i.w5)((()=>[(0,i.Uk)("取消")])),_:1}),(0,i.Wm)(tp,{type:"primary",class:"btn",onClick:t[3]||(t[3]=e=>h()),style:{"margin-left":"10px"}},{default:(0,i.w5)((()=>[(0,i.Uk)("确认")])),_:1})])])]))}});const cw=(0,Vl.Z)(uw,[["__scopeId","data-v-f7b59928"]]);var dw=cw;const pw=e=>((0,i.dD)("data-v-26bf4835"),e=e(),(0,i.Cn)(),e),vw=pw((()=>(0,i._)("span",{class:"checkbox-input"},null,-1))),mw=pw((()=>(0,i._)("input",{class:"checkbox-original",type:"checkbox"},null,-1))),hw={class:"checkbox-label"};var fw=(0,i.aZ)({__name:"Checkbox",props:{value:{type:Boolean},disabled:{type:Boolean,default:!1}},emits:["update:value"],setup(e,{emit:t}){const l=e,a=t,n=e=>{l.disabled||a("update:value",e.target.checked)};return(e,t)=>((0,i.wg)(),(0,i.iD)("label",{class:(0,oe.C_)(["checkbox",{checked:e.value,disabled:e.disabled}]),onChange:t[0]||(t[0]=e=>n(e))},[vw,mw,(0,i._)("span",hw,[(0,i.WI)(e.$slots,"default")])],34))}});const gw=(0,Vl.Z)(fw,[["__scopeId","data-v-26bf4835"]]);var yw=gw;const ww=e=>((0,i.dD)("data-v-45827db6"),e=e(),(0,i.Cn)(),e),xw={class:"chart-style-panel"},kw={class:"row"},bw={class:"row"},_w={key:1,class:"row"},Iw={key:2,class:"row"},Sw={class:"row"},Cw=ww((()=>(0,i._)("div",{style:{width:"40%"}},"图例:",-1))),Lw={class:"row"},Tw=ww((()=>(0,i._)("div",{style:{width:"40%"}},"背景填充:",-1))),Ew={class:"row"},Mw=ww((()=>(0,i._)("div",{style:{width:"40%"}},"网格颜色:",-1))),Uw={style:{width:"40%"}},Ww={class:"color-btn-wrap",style:{width:"100%"}},Dw=["onClick"],Hw={class:"preset-themes"},Fw=["onClick","onMouseenter"];var Aw=(0,i.aZ)({__name:"index",setup(e){const t=[["#d87c7c","#919e8b","#d7ab82","#6e7074","#61a0a8","#efa18d"],["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78"],["#516b91","#59c4e6","#edafda","#93b7e3","#a5e7f0","#cbb0e3"],["#893448","#d95850","#eb8146","#ffb248","#f2d643","#ebdba4"],["#4ea397","#22c3aa","#7bd9a5","#d0648a","#f58db2","#f2b3c9"],["#3fb1e3","#6be6c1","#626c91","#a0a7e6","#c4ebad","#96dee8"],["#fc97af","#87f7cf","#f7f494","#72ccff","#f7c5a0","#d4a4eb"],["#c1232b","#27727b","#fcce10","#e87c25","#b5c334","#fe8463"],["#2ec7c9","#b6a2de","#5ab1ef","#ffb980","#d87a80","#8d98b3"],["#e01f54","#001852","#f5e8c8","#b8d2c7","#c6b38e","#a4d8c2"],["#c12e34","#e6b600","#0098d9","#2b821d","#005eaa","#339ca8"],["#8a7ca8","#e098c7","#8fd3e8","#71669e","#cc70af","#7cb4cc"]],l=R(),a=$(),{handleElement:r,handleElementId:u}=(0,o.Jk)(l),{theme:c}=(0,o.Jk)(a),d=r,p=(0,s.iH)(!1),v=(0,s.iH)(!1),m=(0,s.iH)([-1,-1]),{addHistorySnapshot:h}=da(),f=(0,s.iH)("#000"),g=(0,s.iH)([]),y=(0,s.iH)(""),w=(0,s.iH)(""),x=(0,s.iH)(!0),k=(0,s.iH)(!0),b=(0,s.iH)(!1),_=(0,s.iH)(!1),I=(0,s.iH)(!1),S=(0,s.iH)(!1);(0,i.YP)(r,(()=>{if(r.value&&"chart"===r.value.type){if(f.value=r.value.fill||"#fff",r.value.options){const{lineSmooth:e,showLine:t,showArea:l,horizontalBars:a,donut:n,stackBars:o}=r.value.options;x.value=!!e,k.value=!!t,b.value=!!l,_.value=!!a,I.value=!!n,S.value=!!o}g.value=r.value.themeColor,y.value=r.value.gridColor||"#333",w.value=r.value.legend||""}}),{deep:!0,immediate:!0});const C=e=>{a.updateElement({id:u.value,props:e}),h()},L=e=>{p.value=!1,C({data:e})},T=e=>{C({fill:e})},E=e=>{const t=r.value,l={...t.options,...e};C({options:l})},M=(e,t)=>{const l={themeColor:g.value.map(((l,a)=>a===t?e:l))};C(l)},U=()=>{const e={themeColor:[...g.value,c.value.themeColor]};C(e)},W=(e,t)=>{const l=e.slice(0,t+1);C({themeColor:l}),v.value=!1},D=e=>{const t={themeColor:g.value.filter(((t,l)=>l!==e))};C(t)},H=e=>{C({gridColor:e})},F=e=>{C({legend:e})},A=()=>p.value=!0;return Oi.on(Ai.OPEN_CHART_DATA_EDITOR,A),(0,i.Ah)((()=>{Oi.off(Ai.OPEN_CHART_DATA_EDITOR,A)})),(e,l)=>{const a=(0,i.up)("IconEdit"),o=(0,i.up)("IconCloseSmall"),r=(0,i.up)("IconPlus"),u=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",xw,[(0,i.Wm)(tp,{class:"full-width-btn",onClick:l[0]||(l[0]=e=>p.value=!0)},{default:(0,i.w5)((()=>[(0,i.Wm)(a,{class:"btn-icon"}),(0,i.Uk)(" 编辑图表数据 ")])),_:1}),(0,i.Wm)(Zc),"line"===(0,s.SU)(d).chartType?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",kw,[(0,i.Wm)(yw,{"onUpdate:value":l[1]||(l[1]=e=>E({showArea:e})),value:b.value,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("面积图样式")])),_:1},8,["value"]),(0,i.Wm)(yw,{"onUpdate:value":l[2]||(l[2]=e=>E({showLine:e})),value:!k.value,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("散点图样式")])),_:1},8,["value"])]),(0,i._)("div",bw,[(0,i.Wm)(yw,{"onUpdate:value":l[3]||(l[3]=e=>E({lineSmooth:e})),value:x.value},{default:(0,i.w5)((()=>[(0,i.Uk)("使用平滑曲线")])),_:1},8,["value"])])],64)):(0,i.kq)("",!0),"bar"===(0,s.SU)(d).chartType?((0,i.wg)(),(0,i.iD)("div",_w,[(0,i.Wm)(yw,{"onUpdate:value":l[4]||(l[4]=e=>E({horizontalBars:e})),value:_.value,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("条形图样式")])),_:1},8,["value"]),(0,i.Wm)(yw,{"onUpdate:value":l[5]||(l[5]=e=>E({stackBars:e})),value:S.value,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("堆叠样式")])),_:1},8,["value"])])):(0,i.kq)("",!0),"pie"===(0,s.SU)(d).chartType?((0,i.wg)(),(0,i.iD)("div",Iw,[(0,i.Wm)(yw,{"onUpdate:value":l[6]||(l[6]=e=>E({donut:e})),value:I.value},{default:(0,i.w5)((()=>[(0,i.Uk)("环形图样式")])),_:1},8,["value"])])):(0,i.kq)("",!0),(0,i.Wm)(Zc),(0,i._)("div",Sw,[Cw,(0,i.Wm)(cp,{style:{width:"60%"},value:w.value,"onUpdate:value":l[7]||(l[7]=e=>F(e)),options:[{label:"不显示",value:""},{label:"显示在上方",value:"top"},{label:"显示在下方",value:"bottom"}]},null,8,["value"])]),(0,i.Wm)(Zc),(0,i._)("div",Lw,[Tw,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:f.value,"onUpdate:modelValue":l[8]||(l[8]=e=>T(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:f.value},null,8,["color"])])),_:1})]),(0,i._)("div",Ew,[Mw,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:y.value,"onUpdate:modelValue":l[9]||(l[9]=e=>H(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:y.value},null,8,["color"])])),_:1})]),(0,i.Wm)(Zc),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(g.value,((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"row",key:t},[(0,i._)("div",Uw,(0,oe.zw)(0===t?"主题配色:":""),1),(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:e,"onUpdate:modelValue":e=>M(e,t)},null,8,["modelValue","onUpdate:modelValue"])])),default:(0,i.w5)((()=>[(0,i._)("div",Ww,[(0,i.Wm)(ih,{color:e},null,8,["color"]),0!==t?(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{key:0,class:"delete-color-btn",onClick:(0,n.iM)((e=>D(t)),["stop"])},[(0,i.Wm)(o)],8,Dw)),[[u,"删除"]]):(0,i.kq)("",!0)])])),_:2},1024)])))),128)),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(dn,{trigger:"click",open:v.value,"onUpdate:open":l[11]||(l[11]=e=>v.value=e),style:{width:"40%"}},{content:(0,i.w5)((()=>[(0,i._)("div",Hw,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(t,((e,t)=>(0,i._)("div",{class:"preset-theme",key:t},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e,((a,n)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["preset-theme-color",{select:m.value[0]===t&&n<=m.value[1]}]),key:a,style:(0,oe.j5)({backgroundColor:a}),onClick:t=>W(e,n),onMouseenter:e=>m.value=[t,n],onMouseleave:l[10]||(l[10]=e=>m.value=[-1,-1])},null,46,Fw)))),128))]))),64))])])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{first:"",style:{width:"100%"}},{default:(0,i.w5)((()=>[(0,i.Uk)("推荐主题")])),_:1})])),_:1},8,["open"]),(0,i.Wm)(tp,{last:"",disabled:g.value.length>=10,style:{width:"60%"},onClick:l[12]||(l[12]=e=>U())},{default:(0,i.w5)((()=>[(0,i.Wm)(r,{class:"btn-icon"}),(0,i.Uk)(" 添加主题色 ")])),_:1},8,["disabled"])])),_:1}),(0,i.Wm)(Zc),(0,i.Wm)(Cf),(0,i.Wm)(kp,{visible:p.value,"onUpdate:visible":l[15]||(l[15]=e=>p.value=e),width:640},{default:(0,i.w5)((()=>[(0,i.Wm)(dw,{data:(0,s.SU)(d).data,onClose:l[13]||(l[13]=e=>p.value=!1),onSave:l[14]||(l[14]=e=>L(e))},null,8,["data"])])),_:1},8,["visible"])])}}});const $w=(0,Vl.Z)(Aw,[["__scopeId","data-v-45827db6"]]);var Zw=$w;const Ow=e=>((0,i.dD)("data-v-e5523cbc"),e=e(),(0,i.Cn)(),e),Rw={class:"table-style-panel"},zw={class:"row"},Pw=Ow((()=>(0,i._)("div",{style:{width:"40%"}},"行数:",-1))),Bw={class:"set-count",style:{width:"60%"}},Nw={class:"count-text"},jw={class:"row"},Yw=Ow((()=>(0,i._)("div",{style:{width:"40%"}},"列数:",-1))),Vw={class:"set-count",style:{width:"60%"}},Jw={class:"count-text"},qw={class:"row theme-switch"},Xw=Ow((()=>(0,i._)("div",{style:{width:"40%"}},"启用主题表格:",-1))),Gw={class:"switch-wrapper",style:{width:"60%"}},Kw={class:"row"},Qw={class:"row"},ex={class:"row"},tx=Ow((()=>(0,i._)("div",{style:{width:"40%"}},"主题颜色:",-1)));var lx=(0,i.aZ)({__name:"TableStylePanel",setup(e){const t=$(),{handleElement:l,handleElementId:a,selectedTableCells:n,availableFonts:u}=(0,o.Jk)(R()),c=(0,i.Fl)((()=>t.theme.themeColor)),d=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],p=(0,s.iH)({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"",fontsize:"12px",fontname:"微软雅黑",align:"left"}),v=(0,s.iH)(),m=(0,s.iH)(!1),h=(0,s.iH)(0),f=(0,s.iH)(0),g=(0,s.iH)(0),y=(0,s.iH)(0);(0,i.YP)(l,(()=>{l.value&&"table"===l.value.type&&(v.value=l.value.theme,m.value=!!v.value,h.value=l.value.data.length,f.value=l.value.data[0].length,g.value=l.value.data.length,y.value=l.value.data[0].length)}),{deep:!0,immediate:!0});const{addHistorySnapshot:w}=da(),x=()=>{if(!l.value||"table"!==l.value.type)return;let e=0,t=0;if(n.value.length){const l=n.value[0];e=+l.split("_")[0],t=+l.split("_")[1]}const a=l.value.data[e][t].style;p.value=a?{bold:!!a.bold,em:!!a.em,underline:!!a.underline,strikethrough:!!a.strikethrough,color:a.color||"#000",backcolor:a.backcolor||"",fontsize:a.fontsize||"12px",fontname:a.fontname||"微软雅黑",align:a.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"",fontsize:"12px",fontname:"微软雅黑",align:"left"}};(0,i.bv)((()=>{n.value.length&&x()})),(0,i.YP)(n,x);const k=e=>{t.updateElement({id:a.value,props:e}),w()},b=e=>{const t=l.value,a=JSON.parse(JSON.stringify(t.data));for(let l=0;l{if(!v.value)return;const t={...v.value,...e};k({theme:t})},I=e=>{if(e){const e={theme:{color:c.value,rowHeader:!0,rowFooter:!1,colHeader:!1,colFooter:!1}};k(e)}else t.removeElementProps({id:a.value,propName:"theme"}),w()},S=e=>{const t=l.value,a=t.data.length;if(e>a){const l=new Array(f.value).fill({id:(0,r.x0)(10),colspan:1,rowspan:1,text:""}),n=new Array(e-a).fill(l),o=JSON.parse(JSON.stringify(t.data));o.push(...n),k({data:o})}else{const l=t.data.slice(0,e);k({data:l})}},C=e=>{const t=l.value,a=t.data[0].length;let n=t.data,o=t.colWidths.map((e=>e*t.width));if(e>a){n=n.map((t=>{const l=new Array(e-a).fill({id:(0,r.x0)(10),colspan:1,rowspan:1,text:""});return t.push(...l),t}));const t=new Array(e-a).fill(100);o.push(...t)}else n=n.map((t=>t.slice(0,e))),o=o.slice(0,e);const i=o.reduce(((e,t)=>e+t)),s=o.map((e=>e/i)),u={width:i,data:n,colWidths:s};k(u)};return(e,t)=>{const l=(0,i.up)("IconFontSize"),a=(0,i.up)("IconAddText"),n=(0,i.up)("IconText"),o=(0,i.up)("IconFill"),r=(0,i.up)("IconTextBold"),c=(0,i.up)("IconTextItalic"),g=(0,i.up)("IconTextUnderline"),y=(0,i.up)("IconStrikethrough"),w=(0,i.up)("IconAlignTextLeft"),x=(0,i.up)("IconAlignTextCenter"),k=(0,i.up)("IconAlignTextRight"),L=(0,i.up)("IconMinus"),T=(0,i.up)("IconPlus"),E=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",Rw,[(0,i.Wm)(ug,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(cp,{style:{width:"50%"},value:p.value.fontname,"onUpdate:value":t[0]||(t[0]=e=>b({fontname:e})),options:[...(0,s.SU)(u),...(0,s.SU)(M)]},{icon:(0,i.w5)((()=>[(0,i.Wm)(l)])),_:1},8,["value","options"]),(0,i.Wm)(cp,{style:{width:"50%"},value:p.value.fontsize,"onUpdate:value":t[1]||(t[1]=e=>b({fontsize:e})),options:d.map((e=>({label:e,value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(a)])),_:1},8,["value","options"])])),_:1}),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(dn,{trigger:"click",style:{width:"50%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:p.value.color,"onUpdate:modelValue":t[2]||(t[2]=e=>b({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{first:"",color:p.value.color},{default:(0,i.w5)((()=>[(0,i.Wm)(n)])),_:1},8,["color"])),[[E,"文字颜色"]])])),_:1}),(0,i.Wm)(dn,{trigger:"click",style:{width:"50%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:p.value.backcolor,"onUpdate:modelValue":t[3]||(t[3]=e=>b({backcolor:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{last:"",color:p.value.backcolor},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1},8,["color"])),[[E,"单元格填充"]])])),_:1})])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:p.value.bold,onClick:t[4]||(t[4]=e=>b({bold:!p.value.bold}))},{default:(0,i.w5)((()=>[(0,i.Wm)(r)])),_:1},8,["checked"])),[[E,"加粗"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:p.value.em,onClick:t[5]||(t[5]=e=>b({em:!p.value.em}))},{default:(0,i.w5)((()=>[(0,i.Wm)(c)])),_:1},8,["checked"])),[[E,"斜体"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:p.value.underline,onClick:t[6]||(t[6]=e=>b({underline:!p.value.underline}))},{default:(0,i.w5)((()=>[(0,i.Wm)(g)])),_:1},8,["checked"])),[[E,"下划线"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(qf,{style:{flex:"1"},checked:p.value.strikethrough,onClick:t[7]||(t[7]=e=>b({strikethrough:!p.value.strikethrough}))},{default:(0,i.w5)((()=>[(0,i.Wm)(y)])),_:1},8,["checked"])),[[E,"删除线"]])])),_:1}),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:p.value.align,"onUpdate:value":t[8]||(t[8]=e=>b({align:e}))},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"left",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(w)])),_:1})),[[E,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"center",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(x)])),_:1})),[[E,"居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"right",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(k)])),_:1})),[[E,"右对齐"]])])),_:1},8,["value"]),(0,i.Wm)(Zc),(0,i.Wm)(Cf,{fixed:!0}),(0,i.Wm)(Zc),(0,i._)("div",zw,[Pw,(0,i._)("div",Bw,[(0,i.Wm)(tp,{class:"btn",disabled:h.value<=1,onClick:t[9]||(t[9]=e=>S(h.value-1))},{default:(0,i.w5)((()=>[(0,i.Wm)(L)])),_:1},8,["disabled"]),(0,i._)("div",Nw,(0,oe.zw)(h.value),1),(0,i.Wm)(tp,{class:"btn",disabled:h.value>=30,onClick:t[10]||(t[10]=e=>S(h.value+1))},{default:(0,i.w5)((()=>[(0,i.Wm)(T)])),_:1},8,["disabled"])])]),(0,i._)("div",jw,[Yw,(0,i._)("div",Vw,[(0,i.Wm)(tp,{class:"btn",disabled:f.value<=1,onClick:t[11]||(t[11]=e=>C(f.value-1))},{default:(0,i.w5)((()=>[(0,i.Wm)(L)])),_:1},8,["disabled"]),(0,i._)("div",Jw,(0,oe.zw)(f.value),1),(0,i.Wm)(tp,{class:"btn",disabled:f.value>=30,onClick:t[12]||(t[12]=e=>C(f.value+1))},{default:(0,i.w5)((()=>[(0,i.Wm)(T)])),_:1},8,["disabled"])])]),(0,i.Wm)(Zc),(0,i._)("div",qw,[Xw,(0,i._)("div",Gw,[(0,i.Wm)(pf,{value:m.value,"onUpdate:value":t[13]||(t[13]=e=>I(e))},null,8,["value"])])]),v.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",Kw,[(0,i.Wm)(yw,{"onUpdate:value":t[14]||(t[14]=e=>_({rowHeader:e})),value:v.value.rowHeader,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("标题行")])),_:1},8,["value"]),(0,i.Wm)(yw,{"onUpdate:value":t[15]||(t[15]=e=>_({rowFooter:e})),value:v.value.rowFooter,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("汇总行")])),_:1},8,["value"])]),(0,i._)("div",Qw,[(0,i.Wm)(yw,{"onUpdate:value":t[16]||(t[16]=e=>_({colHeader:e})),value:v.value.colHeader,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("第一列")])),_:1},8,["value"]),(0,i.Wm)(yw,{"onUpdate:value":t[17]||(t[17]=e=>_({colFooter:e})),value:v.value.colFooter,style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Uk)("最后一列")])),_:1},8,["value"])]),(0,i._)("div",ex,[tx,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:v.value.color,"onUpdate:modelValue":t[18]||(t[18]=e=>_({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:v.value.color},null,8,["color"])])),_:1})])],64)):(0,i.kq)("",!0)])}}});const ax=(0,Vl.Z)(lx,[["__scopeId","data-v-e5523cbc"]]);var nx=ax;const ox=e=>((0,i.dD)("data-v-3a5ca316"),e=e(),(0,i.Cn)(),e),ix={class:"latex-style-panel"},sx={class:"row"},rx={class:"row"},ux=ox((()=>(0,i._)("div",{style:{width:"40%"}},"颜色:",-1))),cx={class:"row"},dx=ox((()=>(0,i._)("div",{style:{width:"40%"}},"粗细:",-1)));var px=(0,i.aZ)({__name:"LatexStylePanel",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=l,n=(0,s.iH)(!1),{addHistorySnapshot:r}=da(),u=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),r())},c=e=>{u({path:e.path,latex:e.latex,width:e.w,height:e.h,viewBox:[e.w,e.h]})},d=()=>n.value=!0;return Oi.on(Ai.OPEN_LATEX_EDITOR,d),(0,i.Ah)((()=>{Oi.off(Ai.OPEN_LATEX_EDITOR,d)})),(e,t)=>((0,i.wg)(),(0,i.iD)("div",ix,[(0,i._)("div",sx,[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[0]||(t[0]=e=>n.value=!0)},{default:(0,i.w5)((()=>[(0,i.Uk)("编辑 LaTeX")])),_:1})]),(0,i.Wm)(Zc),(0,i._)("div",rx,[ux,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(a).color,"onUpdate:modelValue":t[1]||(t[1]=e=>u({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(a).color},null,8,["color"])])),_:1})]),(0,i._)("div",cx,[dx,(0,i.Wm)(mv,{min:1,max:3,value:(0,s.SU)(a).strokeWidth,"onUpdate:value":t[2]||(t[2]=e=>u({strokeWidth:e})),style:{width:"60%"}},null,8,["value"])]),(0,i.Wm)(kp,{visible:n.value,"onUpdate:visible":t[5]||(t[5]=e=>n.value=e),width:880},{default:(0,i.w5)((()=>[(0,i.Wm)(fm,{value:(0,s.SU)(a).latex,onClose:t[3]||(t[3]=e=>n.value=!1),onUpdate:t[4]||(t[4]=e=>{c(e),n.value=!1})},null,8,["value"])])),_:1},8,["visible"])]))}});const vx=(0,Vl.Z)(px,[["__scopeId","data-v-3a5ca316"]]);var mx=vx;const hx=e=>((0,i.dD)("data-v-b3551c8c"),e=e(),(0,i.Cn)(),e),fx={class:"video-style-panel"},gx=hx((()=>(0,i._)("div",{class:"title"},"视频预览封面",-1))),yx={class:"background-image-wrapper"},wx={class:"background-image"},xx={class:"row"},kx={class:"row switch-row"},bx=hx((()=>(0,i._)("div",{style:{width:"40%"}},"自动播放:",-1))),_x={class:"switch-wrapper",style:{width:"60%"}};var Ix=(0,i.aZ)({__name:"VideoStylePanel",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=l,{addHistorySnapshot:n}=da(),r=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),n())},u=e=>{const t=e[0];t&&na(t).then((e=>r({poster:e})))};return(e,t)=>{const l=(0,i.up)("IconPlus");return(0,i.wg)(),(0,i.iD)("div",fx,[gx,(0,i._)("div",yx,[(0,i.Wm)(Pa,{onChange:t[0]||(t[0]=e=>u(e))},{default:(0,i.w5)((()=>[(0,i._)("div",wx,[(0,i._)("div",{class:"content",style:(0,oe.j5)({backgroundImage:(0,s.SU)(a).poster?`url(${(0,s.SU)(a).poster})`:""})},[(0,i.Wm)(l)],4)])])),_:1})]),(0,i._)("div",xx,[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[1]||(t[1]=e=>r({poster:""}))},{default:(0,i.w5)((()=>[(0,i.Uk)("重置封面")])),_:1})]),(0,i._)("div",kx,[bx,(0,i._)("div",_x,[(0,i.Wm)(pf,{value:(0,s.SU)(a).autoplay,"onUpdate:value":t[2]||(t[2]=e=>r({autoplay:e}))},null,8,["value"])])])])}}});const Sx=(0,Vl.Z)(Ix,[["__scopeId","data-v-b3551c8c"]]);var Cx=Sx;const Lx=e=>((0,i.dD)("data-v-32517bcf"),e=e(),(0,i.Cn)(),e),Tx={class:"audio-style-panel"},Ex={class:"row"},Mx=Lx((()=>(0,i._)("div",{style:{width:"40%"}},"图标颜色:",-1))),Ux={class:"row switch-row"},Wx=Lx((()=>(0,i._)("div",{style:{width:"40%"}},"自动播放:",-1))),Dx={class:"switch-wrapper",style:{width:"60%"}},Hx={class:"row switch-row"},Fx=Lx((()=>(0,i._)("div",{style:{width:"40%"}},"循环播放:",-1))),Ax={class:"switch-wrapper",style:{width:"60%"}};var $x=(0,i.aZ)({__name:"AudioStylePanel",setup(e){const t=$(),{handleElement:l}=(0,o.Jk)(R()),a=l,{addHistorySnapshot:n}=da(),r=e=>{l.value&&(t.updateElement({id:l.value.id,props:e}),n())};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Tx,[(0,i._)("div",Ex,[Mx,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(a).color,"onUpdate:modelValue":t[0]||(t[0]=e=>r({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(a).color},null,8,["color"])])),_:1})]),(0,i._)("div",Ux,[Wx,(0,i._)("div",Dx,[(0,i.Wm)(pf,{value:(0,s.SU)(a).autoplay,"onUpdate:value":t[1]||(t[1]=e=>r({autoplay:e}))},null,8,["value"])])]),(0,i._)("div",Hx,[Fx,(0,i._)("div",Ax,[(0,i.Wm)(pf,{value:(0,s.SU)(a).loop,"onUpdate:value":t[2]||(t[2]=e=>r({loop:e}))},null,8,["value"])])])]))}});const Zx=(0,Vl.Z)($x,[["__scopeId","data-v-32517bcf"]]);var Ox=Zx;const Rx=e=>((0,i.dD)("data-v-80f1bc4e"),e=e(),(0,i.Cn)(),e),zx={class:"multi-style-panel"},Px={class:"row"},Bx=Rx((()=>(0,i._)("div",{style:{width:"40%"}},"填充颜色:",-1))),Nx={class:"row"},jx=Rx((()=>(0,i._)("div",{style:{width:"40%"}},"边框样式:",-1))),Yx={class:"row"},Vx=Rx((()=>(0,i._)("div",{style:{width:"40%"}},"边框颜色:",-1))),Jx={class:"row"},qx=Rx((()=>(0,i._)("div",{style:{width:"40%"}},"边框粗细:",-1)));var Xx=(0,i.aZ)({__name:"MultiStylePanel",setup(e){const t=$(),{richTextAttrs:l,availableFonts:a,activeElementList:n}=(0,o.Jk)(R()),{addHistorySnapshot:r}=da(),u=(e,l)=>{t.updateElement({id:e,props:l}),r()},c=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],d=(0,s.iH)("#fff"),p=(0,s.iH)({width:0,color:"#fff",style:"solid"}),v=e=>{for(const t of n.value){if("text"!==t.type&&"shape"!==t.type&&"chart"!==t.type||u(t.id,{fill:e}),"table"===t.type){const l=JSON.parse(JSON.stringify(t.data));for(let t=0;t{for(const t of n.value){if("text"===t.type||"image"===t.type||"shape"===t.type||"table"===t.type||"chart"===t.type){const l=t.outline||{width:2,color:"#000",style:"solid"},a={outline:{...l,...e}};u(t.id,a)}"line"===t.type&&u(t.id,e)}p.value={...p.value,...e}},h=(e,t)=>{for(const l of n.value){if(("text"===l.type||"shape"===l.type&&l.text?.content)&&Oi.emit(Ai.RICH_TEXT_COMMAND,{target:l.id,action:{command:e,value:t}}),"table"===l.type){const a=JSON.parse(JSON.stringify(l.data));for(let l=0;l{const n=(0,i.up)("IconFontSize"),o=(0,i.up)("IconAddText"),r=(0,i.up)("IconText"),u=(0,i.up)("IconHighLight"),f=(0,i.up)("IconAlignTextLeft"),g=(0,i.up)("IconAlignTextCenter"),y=(0,i.up)("IconAlignTextRight"),w=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",zx,[(0,i._)("div",Px,[Bx,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:d.value,"onUpdate:modelValue":t[0]||(t[0]=e=>v(e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:d.value},null,8,["color"])])),_:1})]),(0,i.Wm)(Zc),(0,i._)("div",Nx,[jx,(0,i.Wm)(cp,{style:{width:"60%"},value:p.value.style||"","onUpdate:value":t[1]||(t[1]=e=>m({style:e})),options:[{label:"实线边框",value:"solid"},{label:"虚线边框",value:"dashed"}]},null,8,["value"])]),(0,i._)("div",Yx,[Vx,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:p.value.color,"onUpdate:modelValue":t[2]||(t[2]=e=>m({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:p.value.color||"#000"},null,8,["color"])])),_:1})]),(0,i._)("div",Jx,[qx,(0,i.Wm)(mv,{value:p.value.width||0,"onUpdate:value":t[3]||(t[3]=e=>m({width:e})),style:{width:"60%"}},null,8,["value"])]),(0,i.Wm)(Zc),(0,i.Wm)(ug,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(l).fontname,"onUpdate:value":t[4]||(t[4]=e=>h("fontname",e)),options:[...(0,s.SU)(a),...(0,s.SU)(M)]},{icon:(0,i.w5)((()=>[(0,i.Wm)(n)])),_:1},8,["value","options"]),(0,i.Wm)(cp,{style:{width:"40%"},value:(0,s.SU)(l).fontsize,"onUpdate:value":t[5]||(t[5]=e=>h("fontsize",e)),options:c.map((e=>({label:e,value:e})))},{icon:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1},8,["value","options"])])),_:1}),(0,i.Wm)(Kf,{class:"row",passive:""},{default:(0,i.w5)((()=>[(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(l).color,"onUpdate:modelValue":t[6]||(t[6]=e=>h("color",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{first:"",color:(0,s.SU)(l).color},{default:(0,i.w5)((()=>[(0,i.Wm)(r)])),_:1},8,["color"])),[[w,"文字颜色"]])])),_:1}),(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(l).backcolor,"onUpdate:modelValue":t[7]||(t[7]=e=>h("backcolor",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(Yf,{color:(0,s.SU)(l).backcolor},{default:(0,i.w5)((()=>[(0,i.Wm)(u)])),_:1},8,["color"])),[[w,"文字高亮"]])])),_:1}),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{class:"font-size-btn",style:{width:"20%"},onClick:t[8]||(t[8]=e=>h("fontsize-add","2"))},{default:(0,i.w5)((()=>[(0,i.Wm)(n),(0,i.Uk)("+")])),_:1})),[[w,"增大字号"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{last:"",class:"font-size-btn",style:{width:"20%"},onClick:t[9]||(t[9]=e=>h("fontsize-reduce","2"))},{default:(0,i.w5)((()=>[(0,i.Wm)(n),(0,i.Uk)("-")])),_:1})),[[w,"减小字号"]])])),_:1}),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:(0,s.SU)(l).align,"onUpdate:value":t[10]||(t[10]=e=>h("align",e))},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"left",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(f)])),_:1})),[[w,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"center",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(g)])),_:1})),[[w,"居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tg,{value:"right",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(y)])),_:1})),[[w,"右对齐"]])])),_:1},8,["value"])])}}});const Gx=(0,Vl.Z)(Xx,[["__scopeId","data-v-80f1bc4e"]]);var Kx=Gx;const Qx={class:"element-style-panel"};var ek=(0,i.aZ)({__name:"index",setup(e){const t={[sa.TEXT]:Zg,[sa.IMAGE]:wy,[sa.SHAPE]:Zy,[sa.LINE]:Qy,[sa.CHART]:Zw,[sa.TABLE]:nx,[sa.LATEX]:mx,[sa.VIDEO]:Cx,[sa.AUDIO]:Ox},{activeElementIdList:l,activeElementList:a,handleElement:n,activeGroupElementId:s}=(0,o.Jk)(R()),r=(0,i.Fl)((()=>{if(l.value.length>1){if(!s.value)return Kx;const e=a.value.find((e=>e.id===s.value));return e&&t[e.type]||null}return n.value&&t[n.value.type]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",Qx,[((0,i.wg)(),(0,i.j4)((0,i.LL)(r.value)))]))}});const tk=ek;var lk=tk;const ak=e=>((0,i.dD)("data-v-a2bcea28"),e=e(),(0,i.Cn)(),e),nk={class:"element-positopn-panel"},ok=ak((()=>(0,i._)("div",{class:"title"},"层级:",-1))),ik=ak((()=>(0,i._)("div",{class:"title"},"对齐:",-1))),sk={class:"row"},rk=ak((()=>(0,i._)("div",{style:{width:"10%"}},null,-1))),uk={key:0,class:"row"},ck={key:1,style:{width:"10%"}},dk={class:"row"},pk=ak((()=>(0,i._)("div",{style:{width:"7%"}},null,-1)));var vk=(0,i.aZ)({__name:"ElementPositionPanel",setup(e){const t=$(),{handleElement:l,handleElementId:a}=(0,o.Jk)(R()),n=(0,s.iH)(0),r=(0,s.iH)(0),u=(0,s.iH)(0),c=(0,s.iH)(0),d=(0,s.iH)(0),p=(0,s.iH)(!1),v=(0,i.Fl)((()=>l.value&&Zn[l.value.type]||20)),m=(0,i.Fl)((()=>"text"===l.value?.type&&!l.value.vertical)),h=(0,i.Fl)((()=>"text"===l.value?.type&&l.value.vertical));(0,i.YP)(l,(()=>{l.value&&(n.value=(0,D.round)(l.value.left,1),r.value=(0,D.round)(l.value.top,1),p.value="fixedRatio"in l.value&&!!l.value.fixedRatio,"line"!==l.value.type&&(u.value=(0,D.round)(l.value.width,1),c.value=(0,D.round)(l.value.height,1),d.value="rotate"in l.value&&void 0!==l.value.rotate?(0,D.round)(l.value.rotate,1):0))}),{deep:!0,immediate:!0});const{orderElement:f}=ba(),{alignElementToCanvas:g}=qn(),{addHistorySnapshot:y}=da(),w=e=>{const l={left:e};t.updateElement({id:a.value,props:l}),y()},x=e=>{const l={top:e};t.updateElement({id:a.value,props:l}),y()},k=(e,t)=>{if(l.value&&"shape"===l.value.type&&"pathFormula"in l.value&&l.value.pathFormula){const a=ra[l.value.pathFormula];let n="";return n="editable"in a?a.formula(e,t,l.value.keypoint):a.formula(e,t),{viewBox:[e,t],path:n}}return null},b=e=>{let l={width:e};const n=k(e,c.value);n&&(l={...l,...n}),t.updateElement({id:a.value,props:l}),y()},_=e=>{let l={height:e};const n=k(u.value,e);n&&(l={...l,...n}),t.updateElement({id:a.value,props:l}),y()},I=e=>{const l={rotate:e};t.updateElement({id:a.value,props:l}),y()},S=e=>{const l={fixedRatio:e};t.updateElement({id:a.value,props:l}),y()},C=e=>{let l=45*Math.floor(d.value/45);"+"===e?l+=45:"-"===e&&(l-=45),l<-180&&(l=-180),l>180&&(l=180);const n={rotate:l};t.updateElement({id:a.value,props:n}),y()};return(e,t)=>{const a=(0,i.up)("IconSendToBack"),o=(0,i.up)("IconBringToFrontOne"),y=(0,i.up)("IconBringToFront"),k=(0,i.up)("IconSentToBack"),L=(0,i.up)("IconAlignLeft"),T=(0,i.up)("IconAlignVertically"),E=(0,i.up)("IconAlignRight"),M=(0,i.up)("IconAlignTop"),U=(0,i.up)("IconAlignHorizontally"),W=(0,i.up)("IconAlignBottom"),D=(0,i.up)("IconLock"),H=(0,i.up)("IconUnlock"),F=(0,i.up)("IconRotate"),A=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",nk,[ok,(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[0]||(t[0]=e=>(0,s.SU)(f)((0,s.SU)(l),(0,s.SU)(Q).TOP))},{default:(0,i.w5)((()=>[(0,i.Wm)(a,{class:"btn-icon"}),(0,i.Uk)(" 置顶")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[1]||(t[1]=e=>(0,s.SU)(f)((0,s.SU)(l),(0,s.SU)(Q).BOTTOM))},{default:(0,i.w5)((()=>[(0,i.Wm)(o,{class:"btn-icon"}),(0,i.Uk)(" 置底")])),_:1})])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[2]||(t[2]=e=>(0,s.SU)(f)((0,s.SU)(l),(0,s.SU)(Q).UP))},{default:(0,i.w5)((()=>[(0,i.Wm)(y,{class:"btn-icon"}),(0,i.Uk)(" 上移")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[3]||(t[3]=e=>(0,s.SU)(f)((0,s.SU)(l),(0,s.SU)(Q).DOWN))},{default:(0,i.w5)((()=>[(0,i.Wm)(k,{class:"btn-icon"}),(0,i.Uk)(" 下移")])),_:1})])),_:1}),(0,i.Wm)(Zc),ik,(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[4]||(t[4]=e=>(0,s.SU)(g)((0,s.SU)(ee).LEFT))},{default:(0,i.w5)((()=>[(0,i.Wm)(L)])),_:1})),[[A,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[5]||(t[5]=e=>(0,s.SU)(g)((0,s.SU)(ee).HORIZONTAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(T)])),_:1})),[[A,"水平居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[6]||(t[6]=e=>(0,s.SU)(g)((0,s.SU)(ee).RIGHT))},{default:(0,i.w5)((()=>[(0,i.Wm)(E)])),_:1})),[[A,"右对齐"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[7]||(t[7]=e=>(0,s.SU)(g)((0,s.SU)(ee).TOP))},{default:(0,i.w5)((()=>[(0,i.Wm)(M)])),_:1})),[[A,"上对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[8]||(t[8]=e=>(0,s.SU)(g)((0,s.SU)(ee).VERTICAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(U)])),_:1})),[[A,"垂直居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:t[9]||(t[9]=e=>(0,s.SU)(g)((0,s.SU)(ee).BOTTOM))},{default:(0,i.w5)((()=>[(0,i.Wm)(W)])),_:1})),[[A,"下对齐"]])])),_:1}),(0,i.Wm)(Zc),(0,i._)("div",sk,[(0,i.Wm)(mv,{step:5,value:n.value,"onUpdate:value":t[10]||(t[10]=e=>w(e)),style:{width:"45%"}},{prefix:(0,i.w5)((()=>[(0,i.Uk)(" 水平: ")])),_:1},8,["value"]),rk,(0,i.Wm)(mv,{step:5,value:r.value,"onUpdate:value":t[11]||(t[11]=e=>x(e)),style:{width:"45%"}},{prefix:(0,i.w5)((()=>[(0,i.Uk)(" 垂直: ")])),_:1},8,["value"])]),"line"!==(0,s.SU)(l).type?((0,i.wg)(),(0,i.iD)("div",uk,[(0,i.Wm)(mv,{min:v.value,max:1500,step:5,disabled:h.value,value:u.value,"onUpdate:value":t[12]||(t[12]=e=>b(e)),style:{width:"45%"}},{prefix:(0,i.w5)((()=>[(0,i.Uk)(" 宽度: ")])),_:1},8,["min","disabled","value"]),["image","shape","audio"].includes((0,s.SU)(l).type)?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[p.value?(0,i.wy)(((0,i.wg)(),(0,i.j4)(D,{key:0,style:{width:"10%"},class:"icon-btn",onClick:t[13]||(t[13]=e=>S(!1))},null,512)),[[A,"解除宽高比锁定"]]):(0,i.wy)(((0,i.wg)(),(0,i.j4)(H,{key:1,style:{width:"10%"},class:"icon-btn",onClick:t[14]||(t[14]=e=>S(!0))},null,512)),[[A,"宽高比锁定"]])],64)):((0,i.wg)(),(0,i.iD)("div",ck)),(0,i.Wm)(mv,{min:v.value,max:800,step:5,disabled:m.value||"table"===(0,s.SU)(l).type,value:c.value,"onUpdate:value":t[15]||(t[15]=e=>_(e)),style:{width:"45%"}},{prefix:(0,i.w5)((()=>[(0,i.Uk)(" 高度: ")])),_:1},8,["min","disabled","value"])])):(0,i.kq)("",!0),["line","video","audio"].includes((0,s.SU)(l).type)?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)(i.HY,{key:1},[(0,i.Wm)(Zc),(0,i._)("div",dk,[(0,i.Wm)(mv,{min:-180,max:180,step:5,value:d.value,"onUpdate:value":t[16]||(t[16]=e=>I(e)),style:{width:"45%"}},{prefix:(0,i.w5)((()=>[(0,i.Uk)(" 旋转: ")])),_:1},8,["value"]),pk,(0,i._)("div",{class:"text-btn",onClick:t[17]||(t[17]=e=>C("-")),style:{width:"24%"}},[(0,i.Wm)(F),(0,i.Uk)(" -45°")]),(0,i._)("div",{class:"text-btn",onClick:t[18]||(t[18]=e=>C("+")),style:{width:"24%"}},[(0,i.Wm)(F,{style:(0,oe.j5)({transform:"rotateY(180deg)"})},null,8,["style"]),(0,i.Uk)(" +45°")])])],64))])}}});const mk=(0,Vl.Z)(vk,[["__scopeId","data-v-a2bcea28"]]);var hk=mk;const fk=1e3,gk="click",yk="animate__",wk=[{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"}]}],xk=[{type:"bounce",name:"弹跳",children:[{name:"弹出",value:"bounceOut"},{name:"向左弹出",value:"bounceOutLeft"},{name:"向右弹出",value:"bounceOutRight"},{name:"向上弹出",value:"bounceOutUp"},{name:"向下弹出",value:"bounceOutDown"}]},{type:"fade",name:"浮现",children:[{name:"浮出",value:"fadeOut"},{name:"向下浮出",value:"fadeOutDown"},{name:"向下长距浮出",value:"fadeOutDownBig"},{name:"向左浮出",value:"fadeOutLeft"},{name:"向左长距浮出",value:"fadeOutLeftBig"},{name:"向右浮出",value:"fadeOutRight"},{name:"向右长距浮出",value:"fadeOutRightBig"},{name:"向上浮出",value:"fadeOutUp"},{name:"向上长距浮出",value:"fadeOutUpBig"},{name:"从左上浮出",value:"fadeOutTopLeft"},{name:"从右上浮出",value:"fadeOutTopRight"},{name:"从左下浮出",value:"fadeOutBottomLeft"},{name:"从右下浮出",value:"fadeOutBottomRight"}]},{type:"rotate",name:"旋转",children:[{name:"旋转退出",value:"rotateOut"},{name:"绕左下退出",value:"rotateOutDownLeft"},{name:"绕右下退出",value:"rotateOutDownRight"},{name:"绕左上退出",value:"rotateOutUpLeft"},{name:"绕右上退出",value:"rotateOutUpRight"}]},{type:"zoom",name:"缩放",children:[{name:"缩小退出",value:"zoomOut"},{name:"向下缩小退出",value:"zoomOutDown"},{name:"从左缩小退出",value:"zoomOutLeft"},{name:"从右缩小退出",value:"zoomOutRight"},{name:"向上缩小退出",value:"zoomOutUp"}]},{type:"slide",name:"滑出",children:[{name:"向下滑出",value:"slideOutDown"},{name:"从左滑出",value:"slideOutLeft"},{name:"从右滑出",value:"slideOutRight"},{name:"向上滑出",value:"slideOutUp"}]},{type:"flip",name:"翻转",children:[{name:"X轴翻转退出",value:"flipOutX"},{name:"Y轴翻转退出",value:"flipOutY"}]},{type:"back",name:"缩小滑出",children:[{name:"向下缩小滑出",value:"backOutDown"},{name:"从左缩小滑出",value:"backOutLeft"},{name:"从右缩小滑出",value:"backOutRight"},{name:"向上缩小滑出",value:"backOutUp"}]},{type:"lightSpeed",name:"飞出",children:[{name:"从右飞出",value:"lightSpeedOutRight"},{name:"从左飞出",value:"lightSpeedOutLeft"}]}],kk=[{type:"shake",name:"晃动",children:[{name:"左右摇晃",value:"shakeX"},{name:"上下摇晃",value:"shakeY"},{name:"摇头",value:"headShake"},{name:"摆动",value:"swing"},{name:"晃动",value:"wobble"},{name:"惊恐",value:"tada"},{name:"果冻",value:"jello"}]},{type:"other",name:"其他",children:[{name:"弹跳",value:"bounce"},{name:"闪烁",value:"flash"},{name:"脉搏",value:"pulse"},{name:"橡皮筋",value:"rubberBand"},{name:"心跳(快)",value:"heartBeat"}]}],bk=[{label:"无",value:"no"},{label:"随机",value:"random"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"},{label:"左右推移(3D)",value:"slideX3D"},{label:"上下推移(3D)",value:"slideY3D"},{label:"淡入淡出",value:"fade"},{label:"旋转",value:"rotate"},{label:"上下展开",value:"scaleY"},{label:"左右展开",value:"scaleX"},{label:"放大",value:"scale"},{label:"缩小",value:"scaleReverse"}],_k=e=>((0,i.dD)("data-v-5abd2ee4"),e=e(),(0,i.Cn)(),e),Ik={class:"element-animation-panel"},Sk={key:0,class:"element-animation"},Ck={class:"type-title"},Lk={class:"pool-item-wrapper"},Tk=["onMouseenter","onClick"],Ek={key:0,class:"mask"},Mk={key:1,class:"tip"},Uk={class:"sequence-content"},Wk={class:"index"},Dk={class:"text"},Hk={class:"handler"},Fk={key:0,class:"configs"},Ak={class:"config-item"},$k=_k((()=>(0,i._)("div",{style:{width:"35%"}},"持续时长:",-1))),Zk={class:"config-item"},Ok=_k((()=>(0,i._)("div",{style:{width:"35%"}},"触发方式:",-1))),Rk={class:"config-item"};var zk=(0,i.aZ)({__name:"ElementAnimationPanel",setup(e){const t={};for(const o of wk)for(const e of o.children)t[e.value]=e.name;for(const o of xk)for(const e of o.children)t[e.value]=e.name;for(const o of kk)for(const e of o.children)t[e.value]=e.name;const l=["in","out","attention"],a=$(),{handleElement:n,handleElementId:u}=(0,o.Jk)(R()),{currentSlide:c,formatedAnimations:d,currentSlideAnimations:p}=(0,o.Jk)(a),v=[{key:"in",label:"入场",color:"#68a490"},{key:"out",label:"退场",color:"#d86344"},{key:"attention",label:"强调",color:"#e8b76a"}],m=(0,s.iH)("in"),h=(0,s.iH)(!1);(0,i.YP)((()=>u.value),(()=>{g.value=!1}));const f=(0,s.iH)(""),g=(0,s.iH)(!1),{addHistorySnapshot:y}=da(),w=(0,i.Fl)((()=>{const e=[];for(let l=0;le.id===o.elId));if(!i)continue;const s=$n[i.type],r=t[o.effect];e.push({...o,index:0===n?l+1:"",elType:s,animationEffect:r})}}return e})),x=(0,i.Fl)((()=>{const e=p.value,t=e.filter((e=>e.elId===u.value));return t||[]})),k=e=>{const t=p.value.filter((t=>t.id!==e));a.updateSlide({animations:t}),y()},b=e=>{const{newIndex:t,oldIndex:l}=e;if(void 0===t||void 0===l||t===l)return;const n=JSON.parse(JSON.stringify(p.value)),o=n[l];n.splice(l,1),n.splice(t,0,o),a.updateSlide({animations:n}),y()},_=(e,t,l)=>{const a=document.querySelector(`#editable-element-${e} [class^=editable-element-]`);if(a){const e=`${yk}${t}`;document.documentElement.style.setProperty("--animate-duration",`${l}ms`),a.classList.add(`${yk}animated`,e);const n=()=>{document.documentElement.style.removeProperty("--animate-duration"),a.classList.remove(`${yk}animated`,e)};a.addEventListener("animationend",n,{once:!0})}},I=async()=>{h.value=!h.value;for(let e=0;esetTimeout(e,t.duration+100))),_(t.elId,t.effect,t.duration),e>=w.value.length-1&&(h.value=!1)}},S=(e,t)=>{if(t<100||t>5e3)return;const l=p.value.map((l=>l.id===e?{...l,duration:t}:l));a.updateSlide({animations:l}),y()},C=(e,t)=>{const l=p.value.map((l=>l.id===e?{...l,trigger:t}:l));a.updateSlide({animations:l}),y()},L=(e,t)=>{const l=p.value.map((l=>l.id===T.value?{...l,type:e,effect:t}:l));a.updateSlide({animations:l}),g.value=!1,y();const n=p.value.find((e=>e.elId===u.value)),o=n?.duration||fk;setTimeout((()=>{_(u.value,t,o)}),0)},T=(0,s.iH)(""),E=(e,t)=>{if(T.value)return void L(e,t);const l=JSON.parse(JSON.stringify(p.value));l.push({id:(0,r.x0)(10),elId:u.value,type:e,effect:t,duration:fk,trigger:gk}),a.updateSlide({animations:l}),g.value=!1,y(),setTimeout((()=>{_(u.value,t,fk)}),0)},M=(0,s.iH)(!1),U=e=>{e?setTimeout((()=>M.value=!0),600):M.value=!1},W=e=>{g.value=!0,T.value=e,U(!0)},D={in:wk,out:xk,attention:kk};return(e,t)=>{const a=(0,i.up)("IconEffects"),o=(0,i.up)("IconClick"),r=(0,i.up)("IconPlayOne"),u=(0,i.up)("IconCloseSmall"),c=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",Ik,[(0,s.SU)(n)?((0,i.wg)(),(0,i.iD)("div",Sk,[(0,i.Wm)(dn,{trigger:"click",value:g.value,"onUpdate:value":[t[3]||(t[3]=e=>g.value=e),t[4]||(t[4]=e=>U(e))],style:{width:"100%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(Kd,{tabs:v,value:m.value,"onUpdate:value":t[0]||(t[0]=e=>m.value=e),tabsStyle:{marginBottom:"20px"},tabStyle:{width:"33.333%"},spaceAround:""},null,8,["value"]),((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(l,(e=>((0,i.wg)(),(0,i.iD)(i.HY,null,[m.value===e?((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["animation-pool",e]),key:e},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(D[e],(l=>((0,i.wg)(),(0,i.iD)("div",{class:"pool-type",key:l.name},[(0,i._)("div",Ck,(0,oe.zw)(l.name)+":",1),(0,i._)("div",Lk,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(l.children,(l=>((0,i.wg)(),(0,i.iD)("div",{class:"pool-item",key:l.name,onMouseenter:e=>f.value=l.value,onMouseleave:t[1]||(t[1]=e=>f.value=""),onClick:t=>E(e,l.value)},[(0,i._)("div",{class:(0,oe.C_)(["animation-box",[`${(0,s.SU)(yk)}animated`,`${(0,s.SU)(yk)}fast`,f.value===l.value&&`${(0,s.SU)(yk)}${l.value}`]])},(0,oe.zw)(l.name),3)],40,Tk)))),128))])])))),128)),M.value?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("div",Ek))],2)):(0,i.kq)("",!0)],64)))),64))])),default:(0,i.w5)((()=>[(0,i.Wm)(tp,{class:"element-animation-btn",onClick:t[2]||(t[2]=e=>T.value="")},{default:(0,i.w5)((()=>[(0,i.Wm)(a,{style:{"margin-right":"5px"}}),(0,i.Uk)(" 添加动画 ")])),_:1})])),_:1},8,["value"])])):((0,i.wg)(),(0,i.iD)("div",Mk,[(0,i.Wm)(o,{style:{"margin-right":"5px"}}),(0,i.Uk)(" 选中画布中的元素添加动画")])),(0,i.Wm)(Zc),(0,i.Wm)((0,s.SU)(Dm()),{class:"animation-sequence",modelValue:w.value,animation:200,scroll:!0,scrollSensitivity:50,handle:".sequence-content",itemKey:"id",onEnd:b},{item:(0,i.w5)((({element:e})=>[(0,i._)("div",{class:(0,oe.C_)(["sequence-item",[e.type,{active:(0,s.SU)(n)?.id===e.elId}]])},[(0,i._)("div",Uk,[(0,i._)("div",Wk,(0,oe.zw)(e.index),1),(0,i._)("div",Dk,"【"+(0,oe.zw)(e.elType)+"】"+(0,oe.zw)(e.animationEffect),1),(0,i._)("div",Hk,[(0,i.wy)((0,i.Wm)(r,{class:"handler-btn",onClick:t=>_(e.elId,e.effect,e.duration)},null,8,["onClick"]),[[c,"预览"]]),(0,i.wy)((0,i.Wm)(u,{class:"handler-btn",onClick:t=>k(e.id)},null,8,["onClick"]),[[c,"删除"]])])]),x.value[0]?.elId===e.elId?((0,i.wg)(),(0,i.iD)("div",Fk,[(0,i.Wm)(Zc,{style:{margin:"16px 0"}}),(0,i._)("div",Ak,[$k,(0,i.Wm)(mv,{min:500,max:3e3,step:500,value:e.duration,"onUpdate:value":t=>S(e.id,t),style:{width:"65%"}},null,8,["value","onUpdate:value"])]),(0,i._)("div",Zk,[Ok,(0,i.Wm)(cp,{value:e.trigger,"onUpdate:value":t=>C(e.id,t),style:{width:"65%"},options:[{label:"主动触发",value:"click"},{label:"与上一动画同时",value:"meantime"},{label:"上一动画之后",value:"auto"}]},null,8,["value","onUpdate:value"])]),(0,i._)("div",Rk,[(0,i.Wm)(tp,{style:{width:"100%"},onClick:t=>W(e.id)},{default:(0,i.w5)((()=>[(0,i.Uk)("更换动画")])),_:2},1032,["onClick"])])])):(0,i.kq)("",!0)],2)])),_:1},8,["modelValue"]),w.value.length>=2?((0,i.wg)(),(0,i.iD)(i.HY,{key:2},[(0,i.Wm)(Zc),(0,i.Wm)(tp,{onClick:t[5]||(t[5]=e=>I())},{default:(0,i.w5)((()=>[(0,i.Uk)((0,oe.zw)(h.value?"停止预览":"预览全部"),1)])),_:1})],64)):(0,i.kq)("",!0)])}}});const Pk=(0,Vl.Z)(zk,[["__scopeId","data-v-5abd2ee4"]]);var Bk=Pk;const Nk=[{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#5b9bd5","#ed7d31","#a5a5a5","#ffc000","#4472c4","#70ad47"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#83992a","#3c9670","#44709d","#a23b32","#d87728","#deb340"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#e48312","#bd582c","#865640","#9b8357","#c2bc80","#94a088"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#bdc8df","#003fa9","#f5ba00","#ff7567","#7676d9","#923ffc"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#90c225","#54a121","#e6b91e","#e86618","#c42f19","#918756"]},{background:"#ffffff",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#1cade4","#2683c6","#27ced7","#42ba97","#3e8853","#62a39f"]},{background:"#e9efd6",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#a5300f","#de7e18","#9f8351","#728653","#92aa4c","#6aac91"]},{background:"#17444e",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#b01513","#ea6312","#e6b729","#6bab90","#55839a","#9e5d9d"]},{background:"#36234d",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#b31166","#e33d6f","#e45f3c","#e9943a","#9b6bf2","#d63cd0"]},{background:"#247fad",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#052f61","#a50e82","#14967c","#6a9e1f","#e87d37","#c62324"]},{background:"#103f55",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#40aebd","#97e8d5","#a1cf49","#628f3e","#f2df3a","#fcb01c"]},{background:"#242367",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#ac3ec1","#477bd1","#46b298","#90ba4c","#dd9d31","#e25345"]},{background:"#e4b75e",fontColor:"#333333",fontname:"Microsoft Yahei",colors:["#f0a22e","#a5644e","#b58b80","#c3986d","#a19574","#c17529"]},{background:"#333333",fontColor:"#ffffff",fontname:"Microsoft Yahei",colors:["#bdc8df","#003fa9","#f5ba00","#ff7567","#7676d9","#923ffc"]}];var jk=()=>{const e=$(),{slides:t,currentSlide:l,theme:a}=(0,o.Jk)(e),{addHistorySnapshot:n}=da(),i=e=>{const t=[];for(const l of e.elements){if("shape"===l.type&&0!==(0,W.Z)(l.fill).getAlpha()){const e=(0,W.Z)(l.fill).toRgbString();t.includes(e)||t.push(e)}if("text"===l.type&&l.fill&&0!==(0,W.Z)(l.fill).getAlpha()){const e=(0,W.Z)(l.fill).toRgbString();t.includes(e)||t.push(e)}if("table"===l.type&&l.theme&&0!==(0,W.Z)(l.theme.color).getAlpha()){const e=(0,W.Z)(l.theme.color).toRgbString();t.includes(e)||t.push(e)}if("chart"===l.type&&l.fill&&0!==(0,W.Z)(l.fill).getAlpha()){const e=(0,W.Z)(l.fill).toRgbString();t.includes(e)||t.push(e)}if("line"===l.type&&0!==(0,W.Z)(l.color).getAlpha()){const e=(0,W.Z)(l.color).toRgbString();t.includes(e)||t.push(e)}if("audio"===l.type&&0!==(0,W.Z)(l.color).getAlpha()){const e=(0,W.Z)(l.color).toRgbString();t.includes(e)||t.push(e)}}return t},s=(e,t)=>{const l=i(e),a={};if(l.length>t.length){const e=(0,W.Z)(t[0]).analogous(l.length-t.length+10),a=e.map((e=>e.toHexString())).slice(1);t.push(...a)}for(let n=0;n{const l=s(e,t.colors);e.background&&"image"===e.background.type||(e.background={type:"solid",color:t.background});for(const a of e.elements){if("shape"===a.type&&(a.fill=l[(0,W.Z)(a.fill).toRgbString()]||a.fill,a.gradient&&delete a.gradient),"text"===a.type&&(a.fill&&(a.fill=l[(0,W.Z)(a.fill).toRgbString()]||a.fill),a.defaultColor=t.fontColor,a.defaultFontName=t.fontname),"table"===a.type){a.theme&&(a.theme.color=l[(0,W.Z)(a.theme.color).toRgbString()]||a.theme.color);for(const e of a.data)for(const l of e)l.style&&(l.style.color=t.fontColor,l.style.fontname=t.fontname)}"chart"===a.type&&(a.themeColor=[l[(0,W.Z)(a.themeColor[0]).toRgbString()]]||0,a.gridColor=t.fontColor),"line"===a.type&&(a.color=l[(0,W.Z)(a.color).toRgbString()]||a.color),"audio"===a.type&&(a.color=l[(0,W.Z)(a.color).toRgbString()]||a.color),"latex"===a.type&&(a.color=t.fontColor)}},u=t=>{const a=JSON.parse(JSON.stringify(l.value));r(a,t),e.updateSlide({background:a.background,elements:a.elements}),n()},c=l=>{const a=JSON.parse(JSON.stringify(t.value));for(const e of a)r(e,l);e.setTheme({backgroundColor:l.background,themeColor:l.colors[0],fontColor:l.fontColor,fontName:l.fontname}),e.setSlides(a),n()},d=(l=!1)=>{const o=JSON.parse(JSON.stringify(t.value)),{themeColor:i,backgroundColor:s,fontColor:r,fontName:u,outline:c,shadow:d}=a.value;for(const e of o){e.background&&"image"===e.background.type||(e.background={type:"solid",color:s});for(const t of e.elements)if(l&&("outline"in t&&t.outline&&(t.outline=c),"shadow"in t&&t.shadow&&(t.shadow=d)),"shape"===t.type)t.fill=i;else if("line"===t.type)t.color=i;else if("text"===t.type)t.defaultColor=r,t.defaultFontName=u,t.fill&&(t.fill=i);else if("table"===t.type){t.theme&&(t.theme.color=i);for(const e of t.data)for(const t of e)t.style&&(t.style.color=r,t.style.fontname=u)}else"chart"===t.type?(t.themeColor=[i],t.gridColor=r):"latex"===t.type?t.color=r:"audio"===t.type&&(t.color=i)}e.setSlides(o),n()};return{applyPresetThemeToSingleSlide:u,applyPresetThemeToAllSlides:c,applyThemeToAllSlides:d}};const Yk=e=>((0,i.dD)("data-v-ea674bd8"),e=e(),(0,i.Cn)(),e),Vk={class:"slide-design-panel"},Jk=Yk((()=>(0,i._)("div",{class:"title"},"背景填充",-1))),qk={class:"row"},Xk=Yk((()=>(0,i._)("div",{style:{width:"10px"}},null,-1))),Gk={key:0,class:"background-image-wrapper"},Kk={class:"background-image"},Qk={key:1,class:"background-gradient-wrapper"},eb={class:"row"},tb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"起点颜色:",-1))),lb={class:"row"},ab=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"终点颜色:",-1))),nb={key:0,class:"row"},ob=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"渐变角度:",-1))),ib={class:"row"},sb={class:"row"},rb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"画布尺寸:",-1))),ub={class:"title"},cb=Yk((()=>(0,i._)("span",null,"全局主题",-1))),db=Yk((()=>(0,i._)("span",{class:"text"},"更多",-1))),pb={class:"row"},vb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"字体:",-1))),mb={class:"row"},hb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"字体颜色:",-1))),fb={class:"row"},gb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"背景颜色:",-1))),yb={class:"row"},wb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"主题色:",-1))),xb={class:"row"},kb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"边框样式:",-1))),bb={class:"row"},_b=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"边框颜色:",-1))),Ib={class:"row"},Sb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"边框粗细:",-1))),Cb={class:"row",style:{height:"30px"}},Lb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"水平阴影:",-1))),Tb={class:"row",style:{height:"30px"}},Eb=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"垂直阴影:",-1))),Mb={class:"row",style:{height:"30px"}},Ub=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"模糊距离:",-1))),Wb={class:"row"},Db=Yk((()=>(0,i._)("div",{style:{width:"40%"}},"阴影颜色:",-1))),Hb={class:"row"},Fb=Yk((()=>(0,i._)("div",{class:"title"},"预置主题",-1))),Ab={class:"theme-list"},$b={class:"theme-item-content"},Zb={class:"colors"},Ob={class:"btns"},Rb=["onClick"],zb=["onClick"];var Pb=(0,i.aZ)({__name:"SlideDesignPanel",setup(e){const t=$(),{availableFonts:l}=(0,o.Jk)(R()),{slides:a,currentSlide:n,viewportRatio:r,theme:u}=(0,o.Jk)(t),c=(0,s.iH)(!1),d=(0,i.Fl)((()=>n.value.background?n.value.background:{type:"solid",value:"#fff"})),{addHistorySnapshot:p}=da(),{applyPresetThemeToSingleSlide:v,applyPresetThemeToAllSlides:m,applyThemeToAllSlides:h}=jk(),f=e=>{if("solid"===e){const e={...d.value,type:"solid",color:d.value.color||"#fff"};t.updateSlide({background:e})}else if("image"===e){const e={...d.value,type:"image",image:d.value.image||"",imageSize:d.value.imageSize||"cover"};t.updateSlide({background:e})}else{const e={...d.value,type:"gradient",gradientType:d.value.gradientType||"linear",gradientColor:d.value.gradientColor||["#fff","#fff"],gradientRotate:d.value.gradientRotate||0};t.updateSlide({background:e})}p()},g=e=>{t.updateSlide({background:{...d.value,...e}}),p()},y=e=>{const t=e[0];t&&na(t).then((e=>g({image:e})))},w=()=>{const e=a.value.map((e=>({...e,background:n.value.background})));t.setSlides(e),p()},x=e=>{t.setTheme(e)},k=e=>{t.setViewportRatio(e)};return(e,t)=>{const a=(0,i.up)("IconPlus"),n=(0,i.up)("IconDown"),o=(0,i.up)("IconRight");return(0,i.wg)(),(0,i.iD)("div",Vk,[Jk,(0,i._)("div",qk,[(0,i.Wm)(cp,{style:{flex:"1"},value:d.value.type,"onUpdate:value":t[0]||(t[0]=e=>f(e)),options:[{label:"纯色填充",value:"solid"},{label:"图片填充",value:"image"},{label:"渐变填充",value:"gradient"}]},null,8,["value"]),Xk,"solid"===d.value.type?((0,i.wg)(),(0,i.j4)(dn,{key:0,trigger:"click",style:{flex:"1"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:d.value.color,"onUpdate:modelValue":t[1]||(t[1]=e=>g({color:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:d.value.color||"#fff"},null,8,["color"])])),_:1})):"image"===d.value.type?((0,i.wg)(),(0,i.j4)(cp,{key:1,style:{flex:"1"},value:d.value.imageSize||"cover","onUpdate:value":t[2]||(t[2]=e=>g({imageSize:e})),options:[{label:"缩放",value:"contain"},{label:"拼贴",value:"repeat"},{label:"缩放铺满",value:"cover"}]},null,8,["value"])):((0,i.wg)(),(0,i.j4)(cp,{key:2,style:{flex:"1"},value:d.value.gradientType||"","onUpdate:value":t[3]||(t[3]=e=>g({gradientType:e})),options:[{label:"线性渐变",value:"linear"},{label:"径向渐变",value:"radial"}]},null,8,["value"]))]),"image"===d.value.type?((0,i.wg)(),(0,i.iD)("div",Gk,[(0,i.Wm)(Pa,{onChange:t[4]||(t[4]=e=>y(e))},{default:(0,i.w5)((()=>[(0,i._)("div",Kk,[(0,i._)("div",{class:"content",style:(0,oe.j5)({backgroundImage:`url(${d.value.image})`})},[(0,i.Wm)(a)],4)])])),_:1})])):(0,i.kq)("",!0),"gradient"===d.value.type?((0,i.wg)(),(0,i.iD)("div",Qk,[(0,i._)("div",eb,[tb,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:d.value.gradientColor[0],"onUpdate:modelValue":t[5]||(t[5]=e=>g({gradientColor:[e,d.value.gradientColor[1]]}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:d.value.gradientColor[0]},null,8,["color"])])),_:1})]),(0,i._)("div",lb,[ab,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:d.value.gradientColor[1],"onUpdate:modelValue":t[6]||(t[6]=e=>g({gradientColor:[d.value.gradientColor[0],e]}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:d.value.gradientColor[1]},null,8,["color"])])),_:1})]),"linear"===d.value.gradientType?((0,i.wg)(),(0,i.iD)("div",nb,[ob,(0,i.Wm)(qm,{min:0,max:360,step:15,value:d.value.gradientRotate||0,"onUpdate:value":t[7]||(t[7]=e=>g({gradientRotate:e})),style:{width:"60%"}},null,8,["value"])])):(0,i.kq)("",!0)])):(0,i.kq)("",!0),(0,i._)("div",ib,[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[8]||(t[8]=e=>w())},{default:(0,i.w5)((()=>[(0,i.Uk)("应用背景到全部")])),_:1})]),(0,i.Wm)(Zc),(0,i._)("div",sb,[rb,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(r),"onUpdate:value":t[9]||(t[9]=e=>k(e)),options:[{label:"宽屏 16 : 9",value:.5625},{label:"宽屏 16 : 10",value:.625},{label:"标准 4 : 3",value:.75},{label:"纸张 A3 / A4",value:.70710678},{label:"竖向 A3 / A4",value:1.41421356}]},null,8,["value"])]),(0,i.Wm)(Zc),(0,i._)("div",ub,[cb,(0,i._)("span",{class:"more",onClick:t[10]||(t[10]=e=>c.value=!c.value)},[db,c.value?((0,i.wg)(),(0,i.j4)(n,{key:0})):((0,i.wg)(),(0,i.j4)(o,{key:1}))])]),(0,i._)("div",pb,[vb,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(u).fontName,"onUpdate:value":t[11]||(t[11]=e=>x({fontName:e})),options:[...(0,s.SU)(l),...(0,s.SU)(M)]},null,8,["value","options"])]),(0,i._)("div",mb,[hb,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).fontColor,"onUpdate:modelValue":t[12]||(t[12]=e=>x({fontColor:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(u).fontColor},null,8,["color"])])),_:1})]),(0,i._)("div",fb,[gb,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).backgroundColor,"onUpdate:modelValue":t[13]||(t[13]=e=>x({backgroundColor:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(u).backgroundColor},null,8,["color"])])),_:1})]),(0,i._)("div",yb,[wb,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).themeColor,"onUpdate:modelValue":t[14]||(t[14]=e=>x({themeColor:e}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(u).themeColor},null,8,["color"])])),_:1})]),c.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:2},[(0,i._)("div",xb,[kb,(0,i.Wm)(cp,{style:{width:"60%"},value:(0,s.SU)(u).outline.style||"","onUpdate:value":t[15]||(t[15]=e=>x({outline:{...(0,s.SU)(u).outline,style:e}})),options:[{label:"实线边框",value:"solid"},{label:"虚线边框",value:"dashed"}]},null,8,["value"])]),(0,i._)("div",bb,[_b,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).outline.color,"onUpdate:modelValue":t[16]||(t[16]=e=>x({outline:{...(0,s.SU)(u).outline,color:e}}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(u).outline.color||"#000"},null,8,["color"])])),_:1})]),(0,i._)("div",Ib,[Sb,(0,i.Wm)(mv,{value:(0,s.SU)(u).outline.width||0,"onUpdate:value":t[17]||(t[17]=e=>x({outline:{...(0,s.SU)(u).outline,width:e}})),style:{width:"60%"}},null,8,["value"])]),(0,i._)("div",Cb,[Lb,(0,i.Wm)(qm,{style:{width:"60%"},min:-10,max:10,step:1,value:(0,s.SU)(u).shadow.h,"onUpdate:value":t[18]||(t[18]=e=>x({shadow:{...(0,s.SU)(u).shadow,h:e}}))},null,8,["value"])]),(0,i._)("div",Tb,[Eb,(0,i.Wm)(qm,{style:{width:"60%"},min:-10,max:10,step:1,value:(0,s.SU)(u).shadow.v,"onUpdate:value":t[19]||(t[19]=e=>x({shadow:{...(0,s.SU)(u).shadow,v:e}}))},null,8,["value"])]),(0,i._)("div",Mb,[Ub,(0,i.Wm)(qm,{style:{width:"60%"},min:1,max:20,step:1,value:(0,s.SU)(u).shadow.blur,"onUpdate:value":t[20]||(t[20]=e=>x({shadow:{...(0,s.SU)(u).shadow,blur:e}}))},null,8,["value"])]),(0,i._)("div",Wb,[Db,(0,i.Wm)(dn,{trigger:"click",style:{width:"60%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:(0,s.SU)(u).shadow.color,"onUpdate:modelValue":t[21]||(t[21]=e=>x({shadow:{...(0,s.SU)(u).shadow,color:e}}))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i.Wm)(ih,{color:(0,s.SU)(u).shadow.color},null,8,["color"])])),_:1})])],64)):(0,i.kq)("",!0),(0,i._)("div",Hb,[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[22]||(t[22]=e=>(0,s.SU)(h)(c.value))},{default:(0,i.w5)((()=>[(0,i.Uk)("应用主题到全部")])),_:1})]),(0,i.Wm)(Zc),Fb,(0,i._)("div",Ab,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(Nk),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"theme-item",key:t,style:(0,oe.j5)({backgroundColor:e.background,fontFamily:e.fontname})},[(0,i._)("div",$b,[(0,i._)("div",{class:"text",style:(0,oe.j5)({color:e.fontColor})},"文字 Aa",4),(0,i._)("div",Zb,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.colors,((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"color-block",key:t,style:(0,oe.j5)({backgroundColor:e})},null,4)))),128))]),(0,i._)("div",Ob,[(0,i._)("div",{class:"btn",onClick:t=>(0,s.SU)(v)(e)},"应用",8,Rb),(0,i._)("div",{class:"btn",onClick:t=>(0,s.SU)(m)(e)},"应用全局",8,zb)])])],4)))),128))])])}}});const Bb=(0,Vl.Z)(Pb,[["__scopeId","data-v-ea674bd8"]]);var Nb=Bb;const jb={class:"slide-animation-panel"},Yb={class:"animation-pool"},Vb=["onClick"],Jb={class:"animation-text"};var qb=(0,i.aZ)({__name:"SlideAnimationPanel",setup(e){const t=$(),{slides:l,currentSlide:a}=(0,o.Jk)(t),n=(0,i.Fl)((()=>a.value.turningMode||"slideY")),r=bk,{addHistorySnapshot:u}=da(),c=e=>{e!==n.value&&(t.updateSlide({turningMode:e}),u())},d=()=>{const e=l.value.map((e=>({...e,turningMode:a.value.turningMode})));t.setSlides(e),ta.success("已应用到全部"),u()};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",jb,[(0,i._)("div",Yb,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(r),(e=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["animation-item",{active:n.value===e.value}]),key:e.label,onClick:t=>c(e.value)},[(0,i._)("div",{class:(0,oe.C_)(["animation-block",e.value])},null,2),(0,i._)("div",Jb,(0,oe.zw)(e.label),1)],10,Vb)))),128))]),(0,i.Wm)(tp,{style:{width:"100%"},onClick:t[0]||(t[0]=e=>d())},{default:(0,i.w5)((()=>[(0,i.Uk)("应用到全部")])),_:1})]))}});const Xb=(0,Vl.Z)(qb,[["__scopeId","data-v-0562c530"]]);var Gb=Xb,Kb=()=>{const e=$(),{activeElementIdList:t,activeElementList:l}=(0,o.Jk)(R()),{currentSlide:a}=(0,o.Jk)(e),{addHistorySnapshot:n}=da(),i=o=>{const{minX:i,maxX:s,minY:r,maxY:u}=ke(l.value),c=JSON.parse(JSON.stringify(a.value.elements)),d={};for(const e of l.value)if(e.groupId&&!d[e.groupId]){const t=l.value.filter((t=>t.groupId===e.groupId));d[e.groupId]=ke(t)}if(o===ee.LEFT)c.forEach((e=>{if(t.value.includes(e.id))if(e.groupId){const t=d[e.groupId],l=t.minX-i;e.left=e.left-l}else if("rotate"in e&&e.rotate){const{offsetX:t}=we({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.left=i-t}else e.left=i}));else if(o===ee.RIGHT)c.forEach((e=>{if(t.value.includes(e.id))if(e.groupId){const t=d[e.groupId],l=t.maxX-s;e.left=e.left-l}else{const t="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;if("rotate"in e&&e.rotate){const{offsetX:l}=we({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.left=s-t+l}else e.left=s-t}}));else if(o===ee.TOP)c.forEach((e=>{if(t.value.includes(e.id))if(e.groupId){const t=d[e.groupId],l=t.minY-r;e.top=e.top-l}else if("rotate"in e&&e.rotate){const{offsetY:t}=we({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.top=r-t}else e.top=r}));else if(o===ee.BOTTOM)c.forEach((e=>{if(t.value.includes(e.id))if(e.groupId){const t=d[e.groupId],l=t.maxY-u;e.top=e.top-l}else{const t="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;if("rotate"in e&&e.rotate){const{offsetY:l}=we({left:e.left,top:e.top,width:e.width,height:e.height,rotate:e.rotate});e.top=u-t+l}else e.top=u-t}}));else if(o===ee.HORIZONTAL){const e=(i+s)/2;c.forEach((l=>{if(t.value.includes(l.id))if(l.groupId){const t=d[l.groupId],a=(t.maxX+t.minX)/2,n=a-e;l.left=l.left-n}else{const t="line"===l.type?Math.max(l.start[0],l.end[0]):l.width;l.left=e-t/2}}))}else if(o===ee.VERTICAL){const e=(r+u)/2;c.forEach((l=>{if(t.value.includes(l.id))if(l.groupId){const t=d[l.groupId],a=(t.maxY+t.minY)/2,n=a-e;l.top=l.top-n}else{const t="line"===l.type?Math.max(l.start[1],l.end[1]):l.height;l.top=e-t/2}}))}e.updateSlide({elements:c}),n()};return{alignActiveElement:i}},Qb=()=>{const e=$(),{activeElementIdList:t,activeElementList:l}=(0,o.Jk)(R()),{currentSlide:a}=(0,o.Jk)(e),{addHistorySnapshot:n}=da(),s=(0,i.Fl)((()=>{let e=0;const t=[];for(const a of l.value)a.groupId?t.includes(a.groupId)||(t.push(a.groupId),e+=1):e+=1;return e})),r=()=>{const{minX:o,maxX:i}=ke(l.value),s=JSON.parse(JSON.stringify(l.value)),r=JSON.parse(JSON.stringify(a.value.elements)),u=[];let c=[];for(const e of s)if(e.groupId){const t=c.find((t=>t.groupId===e.groupId));t?c=c.map((t=>t.groupId===e.groupId?{...t,els:[...t.els,e]}:t)):c.push({groupId:e.groupId,els:[e]})}else{const{minX:t,maxX:l}=xe(e);u.push({min:t,max:l,el:e})}const d=[];for(const e of c){const{minX:t,maxX:l}=ke(e.els);d.push({min:t,max:l,els:e.els})}const p=[...u,...d];p.sort(((e,t)=>e.min-t.min));let v=0;for(const e of p){const t=e.max-e.min;v+=t}const m=(i-o-v)/(p.length-1),h=[],f=p[0];let g={min:f.min,max:f.max};if("el"in f)h.push({pos:f.min,el:f.el});else for(const e of f.els){const{minX:t}=xe(e);h.push({pos:t,el:e})}for(let e=1;e{const{minY:o,maxY:i}=ke(l.value),s=JSON.parse(JSON.stringify(l.value)),r=JSON.parse(JSON.stringify(a.value.elements)),u=[];let c=[];for(const e of s)if(e.groupId){const t=c.find((t=>t.groupId===e.groupId));t?c=c.map((t=>t.groupId===e.groupId?{...t,els:[...t.els,e]}:t)):c.push({groupId:e.groupId,els:[e]})}else{const{minY:t,maxY:l}=xe(e);u.push({min:t,max:l,el:e})}const d=[];for(const e of c){const{minY:t,maxY:l}=ke(e.els);d.push({min:t,max:l,els:e.els})}const p=[...u,...d];p.sort(((e,t)=>e.min-t.min));let v=0;for(const e of p){const t=e.max-e.min;v+=t}const m=(i-o-v)/(p.length-1),h=[],f=p[0];let g={min:f.min,max:f.max};if("el"in f)h.push({pos:f.min,el:f.el});else for(const e of f.els){const{minY:t}=xe(e);h.push({pos:t,el:e})}for(let e=1;e{t.value?n(e):o(e)};return(e,n)=>{const o=(0,i.up)("IconAlignLeft"),p=(0,i.up)("IconAlignHorizontally"),v=(0,i.up)("IconAlignRight"),m=(0,i.up)("IconAlignTop"),h=(0,i.up)("IconAlignVertically"),f=(0,i.up)("IconAlignBottom"),g=(0,i.up)("IconGroup"),y=(0,i.up)("IconUngroup"),w=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",e_,[(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[0]||(n[0]=e=>d((0,s.SU)(ee).LEFT))},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1})),[[w,"左对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[1]||(n[1]=e=>d((0,s.SU)(ee).HORIZONTAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(p)])),_:1})),[[w,"水平居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[2]||(n[2]=e=>d((0,s.SU)(ee).RIGHT))},{default:(0,i.w5)((()=>[(0,i.Wm)(v)])),_:1})),[[w,"右对齐"]])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[3]||(n[3]=e=>d((0,s.SU)(ee).TOP))},{default:(0,i.w5)((()=>[(0,i.Wm)(m)])),_:1})),[[w,"上对齐"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[4]||(n[4]=e=>d((0,s.SU)(ee).VERTICAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(h)])),_:1})),[[w,"垂直居中"]]),(0,i.wy)(((0,i.wg)(),(0,i.j4)(tp,{style:{flex:"1"},onClick:n[5]||(n[5]=e=>d((0,s.SU)(ee).BOTTOM))},{default:(0,i.w5)((()=>[(0,i.Wm)(f)])),_:1})),[[w,"下对齐"]])])),_:1}),(0,s.SU)(r)>2?((0,i.wg)(),(0,i.j4)(Kf,{key:0,class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:n[6]||(n[6]=e=>(0,s.SU)(u)())},{default:(0,i.w5)((()=>[(0,i.Uk)("水平均匀分布")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:n[7]||(n[7]=e=>(0,s.SU)(c)())},{default:(0,i.w5)((()=>[(0,i.Uk)("垂直均匀分布")])),_:1})])),_:1})):(0,i.kq)("",!0),(0,i.Wm)(Zc),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{disabled:!(0,s.SU)(t),onClick:n[8]||(n[8]=e=>(0,s.SU)(l)()),style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(g,{style:{"margin-right":"3px"}}),(0,i.Uk)("组合")])),_:1},8,["disabled"]),(0,i.Wm)(tp,{disabled:(0,s.SU)(t),onClick:n[9]||(n[9]=e=>(0,s.SU)(a)()),style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(y,{style:{"margin-right":"3px"}}),(0,i.Uk)("取消组合")])),_:1},8,["disabled"])])),_:1})])}}});const l_=(0,Vl.Z)(t_,[["__scopeId","data-v-e95a4c6c"]]);var a_=l_;const n_=[{key:"letter",label:"字母",children:["α","β","γ","δ","ϵ","ε","ζ","η","θ","ϑ","ι","κ","λ","μ","ν","ξ","π","ϖ","ρ","ϱ","σ","ς","τ","υ","ϕ","φ","χ","ψ","ω","Γ","Δ","Θ","Λ","Ξ","Π","Σ","Υ","Φ","Ψ","Ω","𝐀","𝐁","𝐂","𝐃","𝐄","𝐅","𝐆","𝐇","𝐈","𝐉","𝐊","𝐋","𝐌","𝐍","𝐎","𝐏","𝐐","𝐑","𝐒","𝐓","𝐔","𝐕","𝐖","𝐗","𝐘","𝐙","𝐚","𝐛","𝐜","𝐝","𝐞","𝐟","𝐠","𝐡","𝐢","𝐣","𝐤","𝐥","𝐦","𝐧","𝐨","𝐩","𝐪","𝐫","𝐬","𝐭","𝐮","𝐯","𝐰","𝐱","𝐲","𝐳","𝓐","𝓑","𝓒","𝓓","𝓔","𝓕","𝓖","𝓗","𝓘","𝓙","𝓚","𝓛","𝓜","𝓝","𝓞","𝓟","𝓠","𝓡","𝓢","𝓣","𝓤","𝓥","𝓦","𝓧","𝓨","𝓩","𝓪","𝓫","𝓬","𝓭","𝓮","𝓯","𝓰","𝓱","𝓲","𝓳","𝓴","𝓵","𝓶","𝓷","𝓸","𝓹","𝓺","𝓻","𝓼","𝓽","𝓾","𝓿","𝔀","𝔁","𝔂","𝔃"]},{key:"number",label:"序号",children:["①","②","③","④","⑤","⑥","⑦","⑧","⑨","⑩","⑪","⑫","⑬","⑭","⑮","⑯","⑰","⑱","⑲","⑳","⑴","⑵","⑶","⑷","⑸","⑹","⑺","⑻","⑼","⑽","⑾","⑿","⒀","⒁","⒂","⒃","⒄","⒅","⒆","⒇","º","¹","²","³","⁴","⁵","⁶","⁷","⁸","⁹","₀","₁","₂","₃","₄","₅","₆","₇","₈","₉","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ","Ⅹ","Ⅺ","Ⅻ","Ⅼ","Ⅽ","Ⅾ","Ⅿ","ⅰ","ⅱ","ⅲ","ⅳ","ⅴ","ⅵ","ⅶ","ⅷ","ⅸ","ⅹ","ⅺ","ⅻ","ⅼ","ⅽ","ⅾ","ⅿ","ↀ","ↁ","ↂ","㊀","㊁","㊂","㊃","㊄","㊅","㊆","㊇","㊈","㊉","㈠","㈡","㈢","㈣","㈤","㈥","㈦","㈧","㈨","㈩","𝟘","𝟙","𝟚","𝟛","𝟜","𝟝","𝟞","𝟟","𝟠","𝟡"]},{key:"math",label:"数学",children:["+","-","×","÷","=","~","¬","±","%","°","ǃ","‰","‱","½","⅓","⅔","¼","¾","<",">","l","o","g","l","g","l","n","⨂","⨁","⨄","⨃","⨅","⨆","√","∛","∜","∝","∞","∟","∠","∡","∢","∧","∨","∩","∪","∫","∬","∭","∮","∯","∰","∱","∲","∳","∴","∵","∼","∽","∾","∿","≃","≄","≅","≆","≇","≈","≊","≋","≌","≍","≎","≏","≐","≑","≒","≓","≔","≕","≤","≥","≦","≧","≨","≩","≪","≫","≺","≻","≼","≽","≾","≿","⊀","⊁","⊂","⊃","⊄","⊅","⊆","⊇","⊈","⊉","⊊","⊋","⊏","⊐","⊑","⊒","⊓","⊔","⊢","⊣","⊤","⊥","⊦","⊧","⊨","⊩","⊪","⊫","⊬","⊭","⊮","⊯","⊲","⊳","⊴","⊵","⋀","⋁","⋂","⋃","⋉","⋊","⋋","⋌","⟨","⟩","⟪","⟫","⟮","⟯","⧼","⧽","⦰"]},{key:"arrow",label:"箭头",children:["←","↑","→","↓","↔","↕","↖","↗","↘","↙","↚","↛","↜","↝","↞","↟","↠","↡","↢","↣","↤","↥","↦","↧","↨","↫","↬","↭","↮","↯","↰","↱","↲","↳","↴","↵","↶","↷","↸","↹","↺","↻","↼","↽","↾","↿","⇀","⇁","⇂","⇃","⇄","⇅","⇆","⇇","⇈","⇉","⇊","⇋","⇌","⇍","⇎","⇏","⇐","⇑","⇒","⇓","⇔","⇕","⇖","⇗","⇘","⇙","⇚","⇛","⇜","⇝","⇞","⇟","⇠","⇡","⇢","⇣","⇤","⇥","⇦","⇧","⇨","⇩","⇪","⇫","⇬","⇭","⇮","⇯","⇰","⇱","⇲","⇳","⇴","⇵","⇶","⇷","⇸","⇹","⇺","⇻","⇼","⇽","⇾","⇿"]},{key:"graph",label:"图形",children:["▢","▣","▤","▥","▦","▧","▨","▩","▭","▮","▯","▰","▱","▲","▷","▼","◁","◈","◉","◍","◐","◑","◒","◓","◔","◕","◧","◨","◩","◪","◫","◬","◭","◮"]}],o_={class:"symbol-panel"},i_={class:"pool"},s_=["onClick"],r_={class:"symbol"};var u_=(0,i.aZ)({__name:"SymbolPanel",setup(e){const t=(0,s.iH)(n_[0].key),l=(0,i.Fl)((()=>{const e=n_.find((e=>e.key===t.value));return e?.children||[]})),a=n_.map((e=>({key:e.key,label:e.label}))),n=e=>{Oi.emit(Ai.RICH_TEXT_COMMAND,{action:{command:"insert",value:e}})};return(e,o)=>((0,i.wg)(),(0,i.iD)("div",o_,[(0,i.Wm)(Kd,{tabs:(0,s.SU)(a),value:t.value,"onUpdate:value":o[0]||(o[0]=e=>t.value=e),tabsStyle:{marginBottom:"8px"},spaceBetween:""},null,8,["tabs","value"]),(0,i._)("div",i_,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(l.value,((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"symbol-item",key:t,onClick:t=>n(e)},[(0,i._)("div",r_,(0,oe.zw)(e),1)],8,s_)))),128))])]))}});const c_=(0,Vl.Z)(u_,[["__scopeId","data-v-2bb5f257"]]);var d_=c_;const p_={class:"toolbar"},v_={class:"content"};var m_=(0,i.aZ)({__name:"index",setup(e){const t=R(),{activeElementIdList:l,handleElement:n,toolbarState:r}=(0,o.Jk)(t),u=(0,i.Fl)((()=>"text"===n.value?.type?[{label:"样式",key:a.EL_STYLE},{label:"符号",key:a.SYMBOL},{label:"位置",key:a.EL_POSITION},{label:"动画",key:a.EL_ANIMATION}]:[{label:"样式",key:a.EL_STYLE},{label:"位置",key:a.EL_POSITION},{label:"动画",key:a.EL_ANIMATION}])),c=[{label:"设计",key:a.SLIDE_DESIGN},{label:"切换",key:a.SLIDE_ANIMATION},{label:"动画",key:a.EL_ANIMATION}],d=[{label:"样式",key:a.EL_STYLE},{label:"位置",key:a.MULTI_POSITION}],p=e=>{t.setToolbarState(e)},v=(0,i.Fl)((()=>l.value.length?l.value.length>1?d:u.value:c));(0,i.YP)(v,(()=>{const e=v.value.map((e=>e.key));e.includes(r.value)||t.setToolbarState(e[0])}));const m=(0,i.Fl)((()=>{const e={[a.EL_STYLE]:lk,[a.EL_POSITION]:hk,[a.EL_ANIMATION]:Bk,[a.SLIDE_DESIGN]:Nb,[a.SLIDE_ANIMATION]:Gb,[a.MULTI_POSITION]:a_,[a.SYMBOL]:d_};return e[r.value]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",p_,[(0,i.Wm)(Kd,{tabs:v.value,value:(0,s.SU)(r),card:"","onUpdate:value":t[0]||(t[0]=e=>p(e))},null,8,["tabs","value"]),(0,i._)("div",v_,[((0,i.wg)(),(0,i.j4)((0,i.LL)(m.value)))])]))}});const h_=(0,Vl.Z)(m_,[["__scopeId","data-v-6c9ece83"]]);var f_=h_;const g_={class:"editor"};var y_=(0,i.aZ)({__name:"Editor",props:{value:{}},emits:["update"],setup(e,{expose:t,emit:l}){const a=e,n=l,o=R(),r=(0,s.iH)();let c;const v=(0,s.iH)(),m=(0,s.iH)(),h=(0,s.iH)(),f=()=>{m.value&&m.value.hide()},g=(0,D.debounce)((function(){n("update",c.dom.innerHTML)}),300,{trailing:!0}),y=()=>{o.setDisableHotkeysState(!0)},w=()=>{o.setDisableHotkeysState(!1)},x=()=>{if(!c)return;const{doc:e,tr:t}=c.state;c.dispatch(t.replaceRangeWith(0,e.content.size,Hi(a.value)))};t({updateTextContent:x});const k=()=>{const e=window.getSelection();if(!e||!e.anchorNode||!e.focusNode||e.isCollapsed||"Caret"===e.type||"None"===e.type)return;const t=e.getRangeAt(0);if(m.value){v.value=C(c);const{x:e,y:l,left:a,top:n}=t.getBoundingClientRect();m.value.setProps({getReferenceClientRect:()=>({x:e,y:l,left:a,top:n,height:0,width:0,right:a,bottom:n})}),m.value.show()}},b=(e,t)=>{if("color"===e&&t){const e=c.state.schema.marks.forecolor.create({color:t});d(c),p(c,e)}else if("backcolor"===e&&t){const e=c.state.schema.marks.backcolor.create({backcolor:t});d(c),p(c,e)}else if("bold"===e)d(c),(0,u.w9)(c.state.schema.marks.strong)(c.state,c.dispatch);else if("em"===e)d(c),(0,u.w9)(c.state.schema.marks.em)(c.state,c.dispatch);else if("underline"===e)d(c),(0,u.w9)(c.state.schema.marks.underline)(c.state,c.dispatch);else if("strikethrough"===e)d(c),(0,u.w9)(c.state.schema.marks.strikethrough)(c.state,c.dispatch);else if("bulletList"===e){const{bullet_list:e,list_item:t}=c.state.schema.nodes;Yi(e,t,"")(c.state,c.dispatch)}else if("orderedList"===e){const{ordered_list:e,list_item:t}=c.state.schema.nodes;Yi(e,t,"")(c.state,c.dispatch)}else if("clear"===e){d(c);const{$from:e,$to:t}=c.state.selection;c.dispatch(c.state.tr.removeMark(e.pos,t.pos))}c.focus(),g(),v.value=C(c)};return(0,i.bv)((()=>{c=Fi(r.value,a.value,{handleDOMEvents:{focus:y,blur:w,mouseup:k,mousedown:()=>{window.getSelection()?.removeAllRanges(),f()},keydown:f,input:g}},{placeholder:"点击输入演讲者备注"}),m.value=(0,rn.ZP)(r.value,{duration:0,content:h.value,interactive:!0,trigger:"manual",placement:"top-start",hideOnClick:"toggle",offset:[0,6]})})),(0,i.Ah)((()=>{c&&c.destroy()})),(e,t)=>{const l=(0,i.up)("IconTextBold"),a=(0,i.up)("IconTextItalic"),n=(0,i.up)("IconTextUnderline"),o=(0,i.up)("IconStrikethrough"),s=(0,i.up)("IconText"),u=(0,i.up)("IconHighLight"),c=(0,i.up)("IconList"),d=(0,i.up)("IconOrderedList"),p=(0,i.up)("IconFormat"),m=(0,i.Q2)("click-outside");return(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",g_,[(0,i._)("div",{class:"prosemirror-editor",ref_key:"editorViewRef",ref:r},null,512),(0,i._)("div",{class:"menu",ref_key:"menuRef",ref:h},[(0,i._)("button",{class:(0,oe.C_)({active:v.value?.bold}),onClick:t[0]||(t[0]=e=>b("bold"))},[(0,i.Wm)(l)],2),(0,i._)("button",{class:(0,oe.C_)({active:v.value?.em}),onClick:t[1]||(t[1]=e=>b("em"))},[(0,i.Wm)(a)],2),(0,i._)("button",{class:(0,oe.C_)({active:v.value?.underline}),onClick:t[2]||(t[2]=e=>b("underline"))},[(0,i.Wm)(n)],2),(0,i._)("button",{class:(0,oe.C_)({active:v.value?.strikethrough}),onClick:t[3]||(t[3]=e=>b("strikethrough"))},[(0,i.Wm)(o)],2),(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:v.value?.color,"onUpdate:modelValue":t[4]||(t[4]=e=>b("color",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i._)("button",null,[(0,i.Wm)(s)])])),_:1}),(0,i.Wm)(dn,{trigger:"click",style:{width:"30%"}},{content:(0,i.w5)((()=>[(0,i.Wm)(of,{modelValue:v.value?.backcolor,"onUpdate:modelValue":t[5]||(t[5]=e=>b("backcolor",e))},null,8,["modelValue"])])),default:(0,i.w5)((()=>[(0,i._)("button",null,[(0,i.Wm)(u)])])),_:1}),(0,i._)("button",{class:(0,oe.C_)({active:v.value?.bulletList}),onClick:t[6]||(t[6]=e=>b("bulletList"))},[(0,i.Wm)(c)],2),(0,i._)("button",{class:(0,oe.C_)({active:v.value?.orderedList}),onClick:t[7]||(t[7]=e=>b("orderedList"))},[(0,i.Wm)(d)],2),(0,i._)("button",{onClick:t[8]||(t[8]=e=>b("clear"))},[(0,i.Wm)(p)])],512)])),[[m,f]])}}});const w_=(0,Vl.Z)(y_,[["__scopeId","data-v-31d96c24"]]);var x_=w_;const k_={class:"remark"};var b_=(0,i.aZ)({__name:"index",props:{height:{}},emits:["update:height"],setup(e,{emit:t}){const l=e,a=t,n=$(),{currentSlide:r}=(0,o.Jk)(n),u=(0,s.iH)();(0,i.YP)((()=>r.value.id),(()=>{(0,i.Y3)((()=>{u.value.updateTextContent()}))}),{immediate:!0});const c=(0,i.Fl)((()=>r.value?.remark||"")),d=e=>{n.updateSlide({remark:e})},p=e=>{let t=!0;const n=e.pageY,o=l.height;document.onmousemove=e=>{if(!t)return;const l=e.pageY,i=l-n;let s=-i+o;s<40&&(s=40),s>360&&(s=360),a("update:height",s)},document.onmouseup=()=>{t=!1,document.onmousemove=null,document.onmouseup=null}};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",k_,[(0,i._)("div",{class:"resize-handler",onMousedown:t[0]||(t[0]=e=>p(e))},null,32),(0,i.Wm)(x_,{value:c.value,ref_key:"editorRef",ref:u,onUpdate:t[1]||(t[1]=e=>d(e))},null,8,["value"])]))}});const __=(0,Vl.Z)(b_,[["__scopeId","data-v-458a41b9"]]);var I_=__,S_=l(3162),C_=l(3907);const L_=["style","script","template"],T_=["html","head","body","p","dt","dd","li","option","thead","th","tbody","tr","td","tfoot","colgroup"],E_={li:["ul","ol","menu"],dt:["dl"],dd:["dl"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table"],td:["table"]},M_=["!doctype","area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],U_=(e,t)=>{const l=t-e.position;W_(e,l)},W_=(e,t)=>{e.position=e.position+t},D_=(e,t)=>{const l=!1;while(!l){const l=e.indexOf("<",t);if(-1===l)return l;const a=e.charAt(l+1);if("/"===a||"!"===a||/[A-Za-z0-9]/.test(a))return l;t=l+1}return-1},H_=e=>{const{str:t}=e;let l=D_(t,e.position);if(l===e.position)return;-1===l&&(l=t.length);const a=t.slice(e.position,l);U_(e,l),e.tokens.push({type:"text",content:a})},F_=e=>{const{str:t}=e;W_(e,4);let l=t.indexOf("--\x3e",e.position),a=l+3;-1===l&&(l=a=t.length);const n=t.slice(e.position,l);U_(e,a),e.tokens.push({type:"comment",content:n})},A_=e=>{const{str:t}=e,l=t.length;let a=e.position;while(a"===e);if(l)break;a++}let n=a+1;while(n"===e);if(!l)break;n++}U_(e,n);const o=t.slice(a,n);return e.tokens.push({type:"tag",content:o}),o},$_=e=>{const{str:t,tokens:l}=e;let a=e.position,n=null,o=a;const i=[],s=t.length;while(a"===e;if(l){a!==o&&i.push(t.slice(o,a));break}const s=/\s/.test(e);if(s){a!==o&&i.push(t.slice(o,a)),o=a+1,a++;continue}const r="'"===e||'"'===e;r?(n=e,a++):a++}U_(e,a);const r="attribute";for(let u=0;u1){const a=e+t;l.push({type:r,content:a}),u+=1;continue}const a=i[u+2];if(u+=1,a){const t=e+"="+a;l.push({type:r,content:t}),u+=1;continue}}}if((0,D.endsWith)(e,"=")){const t=i[u+1];if(t&&-1===t.indexOf("=")){const a=e+t;l.push({type:r,content:a}),u+=1;continue}const a=e.slice(0,-1);l.push({type:r,content:a})}else l.push({type:r,content:e})}},Z_=(e,t)=>{const{str:l,tokens:a}=t,n=e.toLowerCase(),o=l.length;let i=t.position;while(i{const{str:t}=e,l=t.charAt(e.position+1),a="/"===l;W_(e,a?2:1),e.tokens.push({type:"tag-start",close:a});const n=A_(e);$_(e);const o=t.charAt(e.position),i="/"===o;return W_(e,i?2:1),e.tokens.push({type:"tag-end",close:i}),n},R_=e=>{const t=e.str,l=t.length;while(e.position{const t={str:e,position:0,tokens:[]};return R_(t),t.tokens},P_=e=>{const t={tagName:null,children:[]},l={tokens:e,cursor:0,stack:[t]};return j_(l),t.children},B_=(e,t)=>{const l=E_[e];if(l){let a=t.length-1;while(a>=0){const n=t[a].tagName;if(n===e)break;if(n&&l.includes(n))return!0;a--}}return!1},N_=(e,t)=>{e.splice(t)},j_=e=>{const{stack:t,tokens:l}=e;let{cursor:a}=e,n=t[t.length-1].children;const o=l.length;while(a-1)if(t[e].tagName===s){n=!0;break}while(a0){if(s===t[e].tagName){N_(t,e);const l=e-1;n=t[l].children;break}e-=1}}const c=[];let d;while(a{const l=e.indexOf(t);return-1===l?[e]:[e.slice(0,l),e.slice(l+t.length)]},V_=e=>{const t=e.charAt(0),l=e.length-1,a='"'===t||"'"===t;return a&&t===e.charAt(l)?e.slice(1,l):e},J_=e=>e.map((e=>{const t=Y_(e.trim(),"="),l=t[0],a="string"===typeof t[1]?V_(t[1]):null;return{key:l,value:a}})),q_=e=>e.map((e=>{if("element"===e.type){const t=q_(e.children),l={type:"element",tagName:e.tagName.toLowerCase(),attributes:J_(e.attributes),children:t};return l}const t={type:e.type,content:e.content};return t})),X_=e=>{const t=z_(e),l=P_(t);return q_(l)};var G_=l(5851),K_=l(7943);const Q_={1:"Z",2:"M",4:"H",8:"V",16:"L",32:"C",64:"S",128:"Q",256:"T",512:"A"},eI=e=>{const t=new G_.OU(e),l=[];for(const a of t.commands){const e=Q_[a.type];if(2!==a.type&&16!==a.type||l.push({x:a.x,y:a.y,relative:a.relative,type:e}),32===a.type)l.push({x:a.x,y:a.y,curve:{type:"cubic",x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2},relative:a.relative,type:e});else if(128===a.type)l.push({x:a.x,y:a.y,curve:{type:"quadratic",x1:a.x1,y1:a.y1},relative:a.relative,type:e});else if(512===a.type){const e=l[l.length-1];if(!["M","L","Q","C"].includes(e.type))continue;const t=(0,K_.Z)({px:e.x,py:e.y,cx:a.x,cy:a.y,rx:a.rX,ry:a.rY,xAxisRotation:a.xRot,largeArcFlag:a.lArcFlag,sweepFlag:a.sweepFlag});for(const a of t)l.push({x:a.x,y:a.y,curve:{type:"cubic",x1:a.x1,y1:a.y1,x2:a.x2,y2:a.y2},relative:!1,type:"C"})}else{if(1!==a.type)continue;l.push({close:!0,type:e})}}return l},tI="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",lI="data:image/svg+xml;base64,",aI=e=>{e=e.replace(/\r\n/g,"\n");let t="";for(let l=0;l127&&a<2048?(t+=String.fromCharCode(a>>6|192),t+=String.fromCharCode(63&a|128)):(t+=String.fromCharCode(a>>12|224),t+=String.fromCharCode(a>>6&63|128),t+=String.fromCharCode(63&a|128))}return t},nI=e=>{let t,l,a,n,o,i,s,r="",u=0;e=aI(e);while(u>2,o=(3&t)<<4|l>>4,i=(15&l)<<2|a>>6,s=63&a,isNaN(l)?i=s=64:isNaN(a)&&(s=64),r=r+tI.charAt(n)+tI.charAt(o)+tI.charAt(i)+tI.charAt(s);return r},oI=e=>{const t=new XMLSerializer,l=t.serializeToString(e);return lI+nI(l)},iI=100,sI=.75;var rI=()=>{const e=$(),{slides:t,theme:l,viewportRatio:a,title:n}=(0,o.Jk)(e),i=(0,s.iH)(!1),r=(e,t,l,a=!0)=>{i.value=!0;const o="png"===t?sh.YM:sh.hi,s=e.querySelectorAll("foreignObject [xmlns]");s.forEach((e=>e.removeAttribute("xmlns"))),setTimeout((()=>{const s={quality:l,width:1600};a&&(s.fontEmbedCSS=""),o(e,s).then((e=>{i.value=!1,(0,S_.saveAs)(e,`${n.value}.${t}`)})).catch((()=>{i.value=!1,ta.error("导出图片失败")}))}),200)},u=e=>{const t=new Blob([pe(JSON.stringify(e))],{type:""});(0,S_.saveAs)(t,`${n.value}.pptist`)},c=()=>{const e=new Blob([JSON.stringify(t.value)],{type:""});(0,S_.saveAs)(e,`${n.value}.json`)},d=e=>{const t=(0,W.Z)(e),l=t.getAlpha(),a=0===l?"#ffffff":t.setAlpha(1).toHexString();return{alpha:l,color:a}},p=e=>{const t=X_(e);let l=!1,a=0;const n=[],o=(e,t={})=>{for(const i of e){const e="tagName"in i&&["div","li","p"].includes(i.tagName);if(e&&n.length){const e=n[n.length-1];e.options||(e.options={}),e.options.breakLine=!0}const s={...t},r="attributes"in i?i.attributes.find((e=>"style"===e.key)):null;if(r&&r.value){const e=r.value.split(";");for(const t of e){const[e,l]=t.split(": "),[a,n]=[(0,D.trim)(e),(0,D.trim)(l)];a&&n&&(s[a]=n)}}if("tagName"in i){if("em"===i.tagName&&(s["font-style"]="italic"),"strong"===i.tagName&&(s["font-weight"]="bold"),"sup"===i.tagName&&(s["vertical-align"]="super"),"sub"===i.tagName&&(s["vertical-align"]="sub"),"a"===i.tagName){const e=i.attributes.find((e=>"href"===e.key));s["href"]=e?.value||""}if("ul"===i.tagName&&(s["list-type"]="ul"),"ol"===i.tagName&&(s["list-type"]="ol"),"li"===i.tagName&&(l=!0),"p"===i.tagName&&"attributes"in i){const e=i.attributes.find((e=>"data-indent"===e.key));e&&e.value&&(a=+e.value)}}if("tagName"in i&&"br"===i.tagName)n.push({text:"",options:{breakLine:!0}});else if("content"in i){const e=i.content.replace(/ /g," ").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&").replace(/\n/g,""),t={};s["font-size"]&&(t.fontSize=parseInt(s["font-size"])*sI),s["color"]&&(t.color=d(s["color"]).color),s["background-color"]&&(t.highlight=d(s["background-color"]).color),s["text-decoration-line"]&&(-1!==s["text-decoration-line"].indexOf("underline")&&(t.underline={color:t.color||"#000000",style:"sng"}),-1!==s["text-decoration-line"].indexOf("line-through")&&(t.strike="sngStrike")),s["text-decoration"]&&(-1!==s["text-decoration"].indexOf("underline")&&(t.underline={color:t.color||"#000000",style:"sng"}),-1!==s["text-decoration"].indexOf("line-through")&&(t.strike="sngStrike")),s["vertical-align"]&&("super"===s["vertical-align"]&&(t.superscript=!0),"sub"===s["vertical-align"]&&(t.subscript=!0)),s["text-align"]&&(t.align=s["text-align"]),s["font-weight"]&&(t.bold="bold"===s["font-weight"]),s["font-style"]&&(t.italic="italic"===s["font-style"]),s["font-family"]&&(t.fontFace=s["font-family"]),s["href"]&&(t.hyperlink={url:s["href"]}),l&&"ol"===s["list-type"]&&(t.bullet={type:"number",indent:1.25*(t.fontSize||20)},t.paraSpaceBefore=.1,l=!1),l&&"ul"===s["list-type"]&&(t.bullet={indent:1.25*(t.fontSize||20)},t.paraSpaceBefore=.1,l=!1),a&&(t.indentLevel=a,a=0),n.push({text:e,options:t})}else"children"in i&&o(i.children,s)}};return o(t),n},v=(e,t={x:1,y:1})=>e.map((e=>{if(void 0!==e.close)return{close:!0};if("M"===e.type)return{x:e.x/iI*t.x,y:e.y/iI*t.y,moveTo:!0};if(e.curve){if("cubic"===e.curve.type)return{x:e.x/iI*t.x,y:e.y/iI*t.y,curve:{type:"cubic",x1:e.curve.x1/iI*t.x,y1:e.curve.y1/iI*t.y,x2:e.curve.x2/iI*t.x,y2:e.curve.y2/iI*t.y}};if("quadratic"===e.curve.type)return{x:e.x/iI*t.x,y:e.y/iI*t.y,curve:{type:"quadratic",x1:e.curve.x1/iI*t.x,y1:e.curve.y1/iI*t.y}}}return{x:e.x/iI*t.x,y:e.y/iI*t.y}})),m=e=>{const t=d(e.color),{h:l,v:a}=e;let n=4,o=45;return 0===l&&0===a?(n=4,o=45):0===l?a>0?(n=a,o=90):(n=-a,o=270):0===a?l>0?(n=l,o=1):(n=-l,o=180):l>0&&a>0?(n=Math.max(l,a),o=45):l>0&&a<0?(n=Math.max(l,-a),o=315):l<0&&a>0?(n=Math.max(-l,a),o=135):l<0&&a<0&&(n=Math.max(-l,-a),o=225),{type:"outer",color:t.color.replace("#",""),opacity:t.alpha,blur:e.blur*sI,offset:n,angle:o}},h=e=>{const t=d(e?.color||"#000000");return{color:t.color,transparency:100*(1-t.alpha),width:(e.width||1)*sI,dashType:"solid"===e.style?"solid":"dash"}},f=e=>{const{type:l,target:a}=e;if("web"===l)return{url:a};if("slide"===l){const e=t.value.findIndex((e=>e.id===a));if(-1!==e)return{slide:e+1}}return null},g=(e,t,o)=>{i.value=!0;const s=new C_.Z;if(.625===a.value?s.layout="LAYOUT_16x10":.75===a.value?s.layout="LAYOUT_4x3":.70710678===a.value?(s.defineLayout({name:"A3",width:10,height:7.0710678}),s.layout="A3"):1.41421356===a.value?(s.defineLayout({name:"A3_V",width:10,height:14.1421356}),s.layout="A3_V"):s.layout="LAYOUT_16x9",t){const{color:e,alpha:t}=d(l.value.backgroundColor);s.defineSlideMaster({title:"PPTIST_MASTER",background:{color:e,transparency:100*(1-t)}})}for(const l of e){const e=s.addSlide();if(l.background){const t=l.background;if("image"===t.type&&t.image)e.background={data:t.image};else if("solid"===t.type&&t.color){const l=d(t.color);e.background={color:l.color,transparency:100*(1-l.alpha)}}else if("gradient"===t.type&&t.gradientColor){const[l,a]=t.gradientColor,n=W.Z.mix(l,a).toHexString(),o=d(n);e.background={color:o.color,transparency:100*(1-o.alpha)}}}if(l.remark&&e.addNotes(l.remark),l.elements)for(const t of l.elements)if("text"===t.type){const l=p(t.content),a={x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI,fontSize:20*sI,fontFace:"微软雅黑",color:"#000000",valign:"top",margin:10*sI,paraSpaceBefore:5*sI,lineSpacingMultiple:1.2,autoFit:!0};if(t.rotate&&(a.rotate=t.rotate),t.wordSpace&&(a.charSpacing=t.wordSpace*sI),t.lineHeight&&(a.lineSpacingMultiple=t.lineHeight/1.25),t.fill){const e=d(t.fill),l=void 0===t.opacity?1:t.opacity;a.fill={color:e.color,transparency:100*(1-e.alpha*l)}}t.defaultColor&&(a.color=d(t.defaultColor).color),t.defaultFontName&&(a.fontFace=t.defaultFontName),t.shadow&&(a.shadow=m(t.shadow)),t.outline?.width&&(a.line=h(t.outline)),void 0!==t.opacity&&(a.transparency=100*(1-t.opacity)),void 0!==t.paragraphSpace&&(a.paraSpaceBefore=t.paragraphSpace*sI),t.vertical&&(a.vert="eaVert"),e.addText(l,a)}else if("image"===t.type){const l={path:t.src,x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI};if(t.flipH&&(l.flipH=t.flipH),t.flipV&&(l.flipV=t.flipV),t.rotate&&(l.rotate=t.rotate),t.link){const e=f(t.link);e&&(l.hyperlink=e)}if(t.filters?.opacity&&(l.transparency=100-parseInt(t.filters?.opacity)),t.clip){"ellipse"===t.clip.shape&&(l.rounding=!0);const[e,a]=t.clip.range,[n,o]=e,[i,s]=a,r=t.width/((i-n)/iI),u=t.height/((s-o)/iI);l.w=r/iI,l.h=u/iI,l.sizing={type:"crop",x:n/iI*r/iI,y:o/iI*u/iI,w:(i-n)/iI*r/iI,h:(s-o)/iI*u/iI}}e.addImage(l)}else if("shape"===t.type){if(t.special){const l=document.querySelector(`.thumbnail-list .base-element-${t.id} svg`),a=oI(l),n={data:a,x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI};if(t.rotate&&(n.rotate=t.rotate),t.link){const e=f(t.link);e&&(n.hyperlink=e)}e.addImage(n)}else{const l={x:t.width/t.viewBox[0],y:t.height/t.viewBox[1]},a=v(eI(t.path),l),n=d(t.fill),o=void 0===t.opacity?1:t.opacity,i={x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI,fill:{color:n.color,transparency:100*(1-n.alpha*o)},points:a};if(t.flipH&&(i.flipH=t.flipH),t.flipV&&(i.flipV=t.flipV),t.shadow&&(i.shadow=m(t.shadow)),t.outline?.width&&(i.line=h(t.outline)),t.rotate&&(i.rotate=t.rotate),t.link){const e=f(t.link);e&&(i.hyperlink=e)}e.addShape("custGeom",i)}if(t.text){const l=p(t.text.content),a={x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI,fontSize:20*sI,fontFace:"微软雅黑",color:"#000000",paraSpaceBefore:5*sI,valign:t.text.align};t.rotate&&(a.rotate=t.rotate),t.text.defaultColor&&(a.color=d(t.text.defaultColor).color),t.text.defaultFontName&&(a.fontFace=t.text.defaultFontName),e.addText(l,a)}}else if("line"===t.type){const l=Ce(t),a=v(eI(l)),{minX:n,maxX:o,minY:i,maxY:s}=xe(t),r=d(t.color),u={x:t.left/iI,y:t.top/iI,w:(o-n)/iI,h:(s-i)/iI,line:{color:r.color,transparency:100*(1-r.alpha),width:t.width*sI,dashType:"solid"===t.style?"solid":"dash",beginArrowType:t.points[0]?"arrow":"none",endArrowType:t.points[1]?"arrow":"none"},points:a};t.shadow&&(u.shadow=m(t.shadow)),e.addShape("custGeom",u)}else if("chart"===t.type){const l=[];for(let e=0;ed(e).color));else if(1===t.themeColor.length)a=(0,W.Z)(t.themeColor[0]).analogous(10).map((e=>d(e.toHexString()).color));else{const e=t.themeColor.length,l=(0,W.Z)(t.themeColor[e-1]).analogous(11-e).map((e=>e.toHexString()));a=[...t.themeColor.slice(0,e-1),...l].map((e=>d(e).color))}const n={x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI,chartColors:"pie"===t.chartType?a:a.slice(0,t.data.series.length)};t.fill&&(n.plotArea={fill:{color:d(t.fill).color}}),t.legend&&(n.showLegend=!0,n.legendPos="top"===t.legend?"t":"b",n.legendColor=d(t.gridColor||"#000000").color,n.legendFontSize=14*sI);let o=s.ChartType.bar;"bar"===t.chartType?(o=s.ChartType.bar,n.barDir=t.options?.horizontalBars?"bar":"col"):"line"===t.chartType?(t.options?.showArea?o=s.ChartType.area:!1===t.options?.showLine?(o=s.ChartType.scatter,l.unshift({name:"X-Axis",values:Array(t.data.series[0].length).fill(0).map(((e,t)=>t))}),n.lineSize=0):o=s.ChartType.line,t.options?.lineSmooth&&(n.lineSmooth=!0)):"pie"===t.chartType&&(t.options?.donut?(o=s.ChartType.doughnut,n.holeSize=75):o=s.ChartType.pie),e.addChart(o,l,n)}else if("table"===t.type){const l=[];for(let e=0;e1||n.rowspan>1)for(let a=e;ad(e))));for(let e=0;et.width*e/iI))};t.theme&&(s.fill={color:"#ffffff"}),t.outline.width&&t.outline.color&&(s.border={type:"solid"===t.outline.style?"solid":"dash",pt:t.outline.width*sI,color:d(t.outline.color).color}),e.addTable(a,s)}else if("latex"===t.type){const l=document.querySelector(`.thumbnail-list .base-element-${t.id} svg`),a=oI(l),n={data:a,x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI};if(t.link){const e=f(t.link);e&&(n.hyperlink=e)}e.addImage(n)}else if(!o&&("video"===t.type||"audio"===t.type)){const l={x:t.left/iI,y:t.top/iI,w:t.width/iI,h:t.height/iI,path:t.src,type:t.type};"video"===t.type&&t.poster&&(l.cover=t.poster);const a=t.src.match(/\.([a-zA-Z0-9]+)(?:[\?#]|$)/);a&&a[1]?l.extn=a[1]:t.ext&&(l.extn=t.ext);const n=["avi","mp4","m4v","mov","wmv"],o=["mp3","m4a","mp4","wav","wma"];l.extn&&[...n,...o].includes(l.extn)&&e.addMedia(l)}}setTimeout((()=>{s.writeFile({fileName:`${n.value}.pptx`}).then((()=>i.value=!1)).catch((()=>{i.value=!1,ta.error("导出失败")}))}),200)};return{exporting:i,exportImage:r,exportJSON:c,exportSpecificFile:u,exportPPTX:g}};const uI=e=>((0,i.dD)("data-v-1df3f398"),e=e(),(0,i.Cn)(),e),cI={class:"export-img-dialog"},dI={class:"thumbnails-view"},pI={class:"configs"},vI={class:"row"},mI=uI((()=>(0,i._)("div",{class:"title"},"导出格式:",-1))),hI={class:"row"},fI=uI((()=>(0,i._)("div",{class:"title"},"导出范围:",-1))),gI={key:0,class:"row"},yI=["data-range"],wI={class:"row"},xI=uI((()=>(0,i._)("div",{class:"title"},"图片质量:",-1))),kI={class:"row"},bI=uI((()=>(0,i._)("div",{class:"title"},"忽略在线字体:",-1))),_I={class:"config-item"},II={class:"btns"};var SI=(0,i.aZ)({__name:"ExportImage",emits:["close"],setup(e,{emit:t}){const l=t,{slides:a,currentSlide:n}=(0,o.Jk)($()),r=(0,s.iH)(),u=(0,s.iH)("all"),c=(0,s.iH)([1,a.value.length]),d=(0,s.iH)("jpeg"),p=(0,s.iH)(1),v=(0,s.iH)(!0),m=(0,i.Fl)((()=>"all"===u.value?a.value:"current"===u.value?[n.value]:a.value.filter(((e,t)=>{const[l,a]=c.value;return t>=l-1&&t<=a-1})))),{exportImage:h,exporting:f}=rI(),g=()=>{r.value&&h(r.value,d.value,p.value,v.value)};return(e,t)=>{const n=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",cI,[(0,i._)("div",dI,[(0,i._)("div",{class:"thumbnails",ref_key:"imageThumbnailsRef",ref:r},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(m.value,(e=>((0,i.wg)(),(0,i.j4)(Jd,{class:"thumbnail",key:e.id,slide:e,size:1600},null,8,["slide"])))),128))],512)]),(0,i._)("div",pI,[(0,i._)("div",vI,[mI,(0,i.Wm)(ng,{class:"config-item",value:d.value,"onUpdate:value":t[0]||(t[0]=e=>d.value=e)},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{style:{width:"50%"},value:"jpeg"},{default:(0,i.w5)((()=>[(0,i.Uk)("JPEG")])),_:1}),(0,i.Wm)(tg,{style:{width:"50%"},value:"png"},{default:(0,i.w5)((()=>[(0,i.Uk)("PNG")])),_:1})])),_:1},8,["value"])]),(0,i._)("div",hI,[fI,(0,i.Wm)(ng,{class:"config-item",value:u.value,"onUpdate:value":t[1]||(t[1]=e=>u.value=e)},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{style:{width:"33.33%"},value:"all"},{default:(0,i.w5)((()=>[(0,i.Uk)("全部")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"current"},{default:(0,i.w5)((()=>[(0,i.Uk)("当前页")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"custom"},{default:(0,i.w5)((()=>[(0,i.Uk)("自定义")])),_:1})])),_:1},8,["value"])]),"custom"===u.value?((0,i.wg)(),(0,i.iD)("div",gI,[(0,i._)("div",{class:"title","data-range":`(${c.value[0]} ~ ${c.value[1]})`},"自定义范围:",8,yI),(0,i.Wm)(qm,{class:"config-item",range:"",min:1,max:(0,s.SU)(a).length,step:1,value:c.value,"onUpdate:value":t[2]||(t[2]=e=>c.value=e)},null,8,["max","value"])])):(0,i.kq)("",!0),(0,i._)("div",wI,[xI,(0,i.Wm)(qm,{class:"config-item",min:0,max:1,step:.1,value:p.value,"onUpdate:value":t[3]||(t[3]=e=>p.value=e)},null,8,["value"])]),(0,i._)("div",kI,[bI,(0,i._)("div",_I,[(0,i.wy)((0,i.Wm)(pf,{value:v.value,"onUpdate:value":t[4]||(t[4]=e=>v.value=e)},null,8,["value"]),[[n,"导出时默认忽略在线字体,若您在幻灯片中使用了在线字体,且希望导出后保留相关样式,可选择关闭【忽略在线字体】选项,但要注意这将会增加导出用时。"]])])])]),(0,i._)("div",II,[(0,i.Wm)(tp,{class:"btn export",type:"primary",onClick:t[5]||(t[5]=e=>g())},{default:(0,i.w5)((()=>[(0,i.Uk)("导出图片")])),_:1}),(0,i.Wm)(tp,{class:"btn close",onClick:t[6]||(t[6]=e=>l("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("关闭")])),_:1})]),(0,i.Wm)(Xa,{loading:(0,s.SU)(f),tip:"正在导出..."},null,8,["loading"])])}}});const CI=(0,Vl.Z)(SI,[["__scopeId","data-v-1df3f398"]]);var LI=CI;const TI={class:"export-json-dialog"},EI={class:"preview"},MI={class:"btns"};var UI=(0,i.aZ)({__name:"ExportJSON",emits:["close"],setup(e,{emit:t}){const l=t,{slides:a}=(0,o.Jk)($()),{exportJSON:n}=rI();return(e,t)=>((0,i.wg)(),(0,i.iD)("div",TI,[(0,i._)("div",EI,[(0,i._)("pre",null,(0,oe.zw)((0,s.SU)(a)),1)]),(0,i._)("div",MI,[(0,i.Wm)(tp,{class:"btn export",type:"primary",onClick:t[0]||(t[0]=e=>(0,s.SU)(n)())},{default:(0,i.w5)((()=>[(0,i.Uk)("导出 JSON")])),_:1}),(0,i.Wm)(tp,{class:"btn close",onClick:t[1]||(t[1]=e=>l("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("关闭")])),_:1})])]))}});const WI=(0,Vl.Z)(UI,[["__scopeId","data-v-6a7223ca"]]);var DI=WI;const HI=()=>{const e=document.createElement("iframe");return e.style.width="0",e.style.height="0",e.style.position="absolute",e.style.right="0",e.style.top="0",e.style.border="0",document.body.appendChild(e),e},FI=(e,t,l)=>{const a="";let n="";const o=document.styleSheets;if(o)for(const d of o)if(d.cssRules)for(const e of d.cssRules)n+=e.cssText;const{width:i,height:s,margin:r}=l,u=`\n \n \n \n `,c=""+t.innerHTML+"";e.open(),e.write(`\n ${a}\n \n ${u}\n ${c}\n \n `),e.close()},AI=(e,t)=>{const l=HI(),a=l.contentWindow;if(!l.contentDocument||!a)return;FI(l.contentDocument,e,t);const n=()=>{a.focus(),a.print()},o=()=>{l.removeEventListener("load",n),a.removeEventListener("afterprint",o),document.body.removeChild(l)};l.addEventListener("load",n),a.addEventListener("afterprint",o)},$I=e=>((0,i.dD)("data-v-1668f898"),e=e(),(0,i.Cn)(),e),ZI={class:"export-pdf-dialog"},OI={class:"thumbnails-view"},RI={class:"configs"},zI={class:"row"},PI=$I((()=>(0,i._)("div",{class:"title"},"导出范围:",-1))),BI={class:"row"},NI=$I((()=>(0,i._)("div",{class:"title"},"每页数量:",-1))),jI={class:"row"},YI=$I((()=>(0,i._)("div",{class:"title"},"边缘留白:",-1))),VI={class:"config-item"},JI=$I((()=>(0,i._)("div",{class:"tip"}," 提示:若打印预览与实际样式不一致,请在弹出的打印窗口中勾选【背景图形】选项。 ",-1))),qI={class:"btns"};var XI=(0,i.aZ)({__name:"ExportPDF",emits:["close"],setup(e,{emit:t}){const l=t,{slides:a,currentSlide:n,viewportRatio:r}=(0,o.Jk)($()),u=(0,s.iH)(),c=(0,s.iH)("all"),d=(0,s.iH)(1),p=(0,s.iH)(!0),v=()=>{if(!u.value)return;const e={width:1600,height:"all"===c.value?1600*r.value*d.value:1600*r.value,margin:p.value?50:0};AI(u.value,e)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",ZI,[(0,i._)("div",OI,[(0,i._)("div",{class:"thumbnails",ref_key:"pdfThumbnailsRef",ref:u},["current"===c.value?((0,i.wg)(),(0,i.j4)(Jd,{key:0,class:"thumbnail",slide:(0,s.SU)(n),size:1600},null,8,["slide"])):((0,i.wg)(!0),(0,i.iD)(i.HY,{key:1},(0,i.Ko)((0,s.SU)(a),((e,t)=>((0,i.wg)(),(0,i.j4)(Jd,{class:(0,oe.C_)(["thumbnail",{"break-page":(t+1)%d.value===0}]),key:e.id,slide:e,size:1600},null,8,["class","slide"])))),128))],512)]),(0,i._)("div",RI,[(0,i._)("div",zI,[PI,(0,i.Wm)(ng,{class:"config-item",value:c.value,"onUpdate:value":t[0]||(t[0]=e=>c.value=e)},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{style:{width:"50%"},value:"all"},{default:(0,i.w5)((()=>[(0,i.Uk)("全部")])),_:1}),(0,i.Wm)(tg,{style:{width:"50%"},value:"current"},{default:(0,i.w5)((()=>[(0,i.Uk)("当前页")])),_:1})])),_:1},8,["value"])]),(0,i._)("div",BI,[NI,(0,i.Wm)(cp,{class:"config-item",value:d.value,"onUpdate:value":t[1]||(t[1]=e=>d.value=e),options:[{label:"1",value:1},{label:"2",value:2},{label:"3",value:3}]},null,8,["value"])]),(0,i._)("div",jI,[YI,(0,i._)("div",VI,[(0,i.Wm)(pf,{value:p.value,"onUpdate:value":t[2]||(t[2]=e=>p.value=e)},null,8,["value"])])]),JI]),(0,i._)("div",qI,[(0,i.Wm)(tp,{class:"btn export",type:"primary",onClick:t[3]||(t[3]=e=>v())},{default:(0,i.w5)((()=>[(0,i.Uk)("打印 / 导出 PDF")])),_:1}),(0,i.Wm)(tp,{class:"btn close",onClick:t[4]||(t[4]=e=>l("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("关闭")])),_:1})])]))}});const GI=(0,Vl.Z)(XI,[["__scopeId","data-v-1668f898"]]);var KI=GI;const QI=e=>((0,i.dD)("data-v-265d4b60"),e=e(),(0,i.Cn)(),e),eS={class:"export-pptx-dialog"},tS={class:"configs"},lS={class:"row"},aS=QI((()=>(0,i._)("div",{class:"title"},"导出范围:",-1))),nS={key:0,class:"row"},oS=["data-range"],iS={class:"row"},sS=QI((()=>(0,i._)("div",{class:"title"},"忽略音频/视频:",-1))),rS={class:"config-item"},uS={class:"row"},cS=QI((()=>(0,i._)("div",{class:"title"},"覆盖默认母版:",-1))),dS={class:"config-item"},pS={key:1,class:"tip"},vS={class:"btns"};var mS=(0,i.aZ)({__name:"ExportPPTX",emits:["close"],setup(e,{emit:t}){const l=t,{slides:a,currentSlide:n}=(0,o.Jk)($()),{exportPPTX:r,exporting:u}=rI(),c=(0,s.iH)("all"),d=(0,s.iH)([1,a.value.length]),p=(0,s.iH)(!0),v=(0,s.iH)(!0),m=(0,i.Fl)((()=>"all"===c.value?a.value:"current"===c.value?[n.value]:a.value.filter(((e,t)=>{const[l,a]=d.value;return t>=l-1&&t<=a-1}))));return(e,t)=>{const n=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",eS,[(0,i._)("div",tS,[(0,i._)("div",lS,[aS,(0,i.Wm)(ng,{class:"config-item",value:c.value,"onUpdate:value":t[0]||(t[0]=e=>c.value=e)},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{style:{width:"33.33%"},value:"all"},{default:(0,i.w5)((()=>[(0,i.Uk)("全部")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"current"},{default:(0,i.w5)((()=>[(0,i.Uk)("当前页")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"custom"},{default:(0,i.w5)((()=>[(0,i.Uk)("自定义")])),_:1})])),_:1},8,["value"])]),"custom"===c.value?((0,i.wg)(),(0,i.iD)("div",nS,[(0,i._)("div",{class:"title","data-range":`(${d.value[0]} ~ ${d.value[1]})`},"自定义范围:",8,oS),(0,i.Wm)(qm,{class:"config-item",range:"",min:1,max:(0,s.SU)(a).length,step:1,value:d.value,"onUpdate:value":t[1]||(t[1]=e=>d.value=e)},null,8,["max","value"])])):(0,i.kq)("",!0),(0,i._)("div",iS,[sS,(0,i._)("div",rS,[(0,i.wy)((0,i.Wm)(pf,{value:v.value,"onUpdate:value":t[2]||(t[2]=e=>v.value=e)},null,8,["value"]),[[n,"导出时默认忽略音视频,若您的幻灯片中存在音视频元素,且希望将其导出到PPTX文件中,可选择关闭【忽略音视频】选项,但要注意这将会大幅增加导出用时。"]])])]),(0,i._)("div",uS,[cS,(0,i._)("div",dS,[(0,i.Wm)(pf,{value:p.value,"onUpdate:value":t[3]||(t[3]=e=>p.value=e)},null,8,["value"])])]),v.value?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("div",pS," 提示:1. 支持导出格式:avi、mp4、mov、wmv、mp3、wav;2. 跨域资源无法导出。 "))]),(0,i._)("div",vS,[(0,i.Wm)(tp,{class:"btn export",type:"primary",onClick:t[4]||(t[4]=e=>(0,s.SU)(r)(m.value,p.value,v.value))},{default:(0,i.w5)((()=>[(0,i.Uk)("导出 PPTX")])),_:1}),(0,i.Wm)(tp,{class:"btn close",onClick:t[5]||(t[5]=e=>l("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("关闭")])),_:1})]),(0,i.Wm)(Xa,{loading:(0,s.SU)(u),tip:"正在导出..."},null,8,["loading"])])}}});const hS=(0,Vl.Z)(mS,[["__scopeId","data-v-265d4b60"]]);var fS=hS;const gS=e=>((0,i.dD)("data-v-26422ed7"),e=e(),(0,i.Cn)(),e),yS={class:"export-pptist-dialog"},wS={class:"configs"},xS={class:"row"},kS=gS((()=>(0,i._)("div",{class:"title"},"导出范围:",-1))),bS={key:0,class:"row"},_S=["data-range"],IS=gS((()=>(0,i._)("div",{class:"tip"}," 提示:.pptist 是本应用的特有文件后缀,支持将该类型的文件导入回应用中。 ",-1))),SS={class:"btns"};var CS=(0,i.aZ)({__name:"ExportSpecificFile",emits:["close"],setup(e,{emit:t}){const l=t,{slides:a,currentSlide:n}=(0,o.Jk)($()),{exportSpecificFile:r}=rI(),u=(0,s.iH)("all"),c=(0,s.iH)([1,a.value.length]),d=(0,i.Fl)((()=>"all"===u.value?a.value:"current"===u.value?[n.value]:a.value.filter(((e,t)=>{const[l,a]=c.value;return t>=l-1&&t<=a-1}))));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",yS,[(0,i._)("div",wS,[(0,i._)("div",xS,[kS,(0,i.Wm)(ng,{class:"config-item",value:u.value,"onUpdate:value":t[0]||(t[0]=e=>u.value=e)},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{style:{width:"33.33%"},value:"all"},{default:(0,i.w5)((()=>[(0,i.Uk)("全部")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"current"},{default:(0,i.w5)((()=>[(0,i.Uk)("当前页")])),_:1}),(0,i.Wm)(tg,{style:{width:"33.33%"},value:"custom"},{default:(0,i.w5)((()=>[(0,i.Uk)("自定义")])),_:1})])),_:1},8,["value"])]),"custom"===u.value?((0,i.wg)(),(0,i.iD)("div",bS,[(0,i._)("div",{class:"title","data-range":`(${c.value[0]} ~ ${c.value[1]})`},"自定义范围:",8,_S),(0,i.Wm)(qm,{class:"config-item",range:"",min:1,max:(0,s.SU)(a).length,step:1,value:c.value,"onUpdate:value":t[1]||(t[1]=e=>c.value=e)},null,8,["max","value"])])):(0,i.kq)("",!0),IS]),(0,i._)("div",SS,[(0,i.Wm)(tp,{class:"btn export",type:"primary",onClick:t[2]||(t[2]=e=>(0,s.SU)(r)(d.value))},{default:(0,i.w5)((()=>[(0,i.Uk)("导出 .pptist 文件")])),_:1}),(0,i.Wm)(tp,{class:"btn close",onClick:t[3]||(t[3]=e=>l("close"))},{default:(0,i.w5)((()=>[(0,i.Uk)("关闭")])),_:1})])]))}});const LS=(0,Vl.Z)(CS,[["__scopeId","data-v-26422ed7"]]);var TS=LS;const ES={class:"export-dialog"},MS={class:"content"};var US=(0,i.aZ)({__name:"index",setup(e){const t=R(),{dialogForExport:l}=(0,o.Jk)(t),a=t.setDialogForExport,n=[{key:"pptist",label:"导出 pptist 文件"},{key:"pptx",label:"导出 PPTX"},{key:"image",label:"导出图片"},{key:"json",label:"导出 JSON"},{key:"pdf",label:"打印 / 导出 PDF"}],r=(0,i.Fl)((()=>{const e={image:LI,json:DI,pdf:KI,pptx:fS,pptist:TS};return l.value&&e[l.value]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",ES,[(0,i.Wm)(Kd,{tabs:n,value:(0,s.SU)(l),card:"","onUpdate:value":t[0]||(t[0]=e=>(0,s.SU)(a)(e))},null,8,["value"]),(0,i._)("div",MS,[((0,i.wg)(),(0,i.j4)((0,i.LL)(r.value),{onClose:t[1]||(t[1]=e=>(0,s.SU)(a)(""))},null,32))])]))}});const WS=(0,Vl.Z)(US,[["__scopeId","data-v-b20137f0"]]);var DS=WS;const HS={class:"title"},FS={class:"content"};var AS=(0,i.aZ)({__name:"MoveablePanel",props:{width:{},height:{},left:{default:10},top:{default:10},title:{default:""},moveable:{type:Boolean,default:!0}},emits:["close"],setup(e,{emit:t}){const l=e,a=t,n=(0,s.iH)(0),o=(0,s.iH)(0),r=(0,s.iH)(),u=(0,i.Fl)((()=>l.height?l.height:r.value?.clientHeight||0));(0,i.bv)((()=>{l.left>=0?n.value=l.left:n.value=document.body.clientWidth+l.left-l.width,l.top>=0?o.value=l.top:o.value=document.body.clientHeight+l.top-u.value}));const c=e=>{if(!l.moveable)return;let t=!0;const a=document.body.clientWidth,i=document.body.clientHeight,s=e.pageX,r=e.pageY,c=n.value,d=o.value;document.onmousemove=e=>{if(!t)return;const p=e.pageX-s,v=e.pageY-r;let m=c+p,h=d+v;m<0&&(m=0),h<0&&(h=0),m+l.width>a&&(m=a-l.width),h+u.value>i&&(h=i-u.value),n.value=m,o.value=h},document.onmouseup=()=>{t=!1,document.onmousemove=null,document.onmouseup=null}};return(e,t)=>{const l=(0,i.up)("IconClose");return(0,i.wg)(),(0,i.iD)("div",{class:"moveable-panel",ref_key:"moveablePanelRef",ref:r,style:(0,oe.j5)({width:e.width+"px",height:e.height?e.height+"px":"auto",left:n.value+"px",top:o.value+"px"})},[e.title?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",{class:"header",onMousedown:t[1]||(t[1]=e=>c(e))},[(0,i._)("div",HS,(0,oe.zw)(e.title),1),(0,i._)("div",{class:"close-btn",onClick:t[0]||(t[0]=e=>a("close"))},[(0,i.Wm)(l)])],32),(0,i._)("div",FS,[(0,i.WI)(e.$slots,"default")])],64)):((0,i.wg)(),(0,i.iD)("div",{key:1,class:"content",onMousedown:t[2]||(t[2]=e=>c(e))},[(0,i.WI)(e.$slots,"default")],32))],4)}}});const $S=(0,Vl.Z)(AS,[["__scopeId","data-v-fc791e00"]]);var ZS=$S;const OS=e=>((0,i.dD)("data-v-15470598"),e=e(),(0,i.Cn)(),e),RS={key:0,class:"handler"},zS={class:"btns"},PS={key:0,class:"icon-btns"},BS={class:"element-list"},NS={key:0,class:"group-els"},jS=OS((()=>(0,i._)("div",{class:"group-title"},"组合",-1))),YS=["onClick","onDblclick"],VS=["id","value","onBlur","onKeydown"],JS={key:1,class:"name"},qS={class:"icons"},XS=["onClick","onDblclick"],GS=["id","value","onBlur","onKeydown"],KS={key:1,class:"name"},QS={class:"icons"};var eC=(0,i.aZ)({__name:"SelectPanel",setup(e){const t=$(),l=R(),{currentSlide:a}=(0,o.Jk)(t),{handleElement:r,handleElementId:u,activeElementIdList:c,activeGroupElementId:d,hiddenElementIdList:p}=(0,o.Jk)(l),{orderElement:v}=ba(),m=(0,i.Fl)((()=>{const e=[];for(const t of a.value.elements)if(t.groupId){const l=e[e.length-1];l&&"group"===l.type&&l.id&&l.id===t.groupId?l.elements.push(t):e.push({type:"group",id:t.groupId,elements:[t]})}else e.push(t);return e})),h=(e,t)=>{if(u.value===t)return;if(p.value.includes(t))return;const a=e.elements.map((e=>e.id));l.setActiveElementIdList(a),l.setHandleElementId(t),(0,i.Y3)((()=>l.setActiveGroupElementId(t)))},f=e=>{u.value!==e&&(p.value.includes(e)||l.setActiveElementIdList([e]))},g=e=>{p.value.includes(e)?l.setHiddenElementIdList(p.value.filter((t=>t!==e))):l.setHiddenElementIdList([...p.value,e]),c.value.includes(e)&&l.setActiveElementIdList([])},y=()=>{const e=a.value.elements.map((e=>e.id)),t=p.value.filter((t=>!e.includes(t)));l.setHiddenElementIdList(t)},w=()=>{const e=a.value.elements.map((e=>e.id));l.setHiddenElementIdList([...p.value,...e]),c.value.length&&l.setActiveElementIdList([])},x=(0,s.iH)(""),k=(e,l)=>{const a=e.target.value;t.updateElement({id:l,props:{name:a}}),x.value=""},b=e=>{x.value=e,(0,i.Y3)((()=>{const t=document.querySelector(`#input-${e}`);t.focus()}))},_=()=>{l.setSelectPanelState(!1)};return(e,t)=>{const l=(0,i.up)("IconDown"),o=(0,i.up)("IconUp"),u=(0,i.up)("IconPreviewClose"),I=(0,i.up)("IconPreviewOpen");return(0,i.wg)(),(0,i.j4)(ZS,{class:"select-panel",width:200,height:360,title:`选择(${(0,s.SU)(c).length}/${(0,s.SU)(a).elements.length})`,left:-270,top:90,onClose:t[4]||(t[4]=e=>_())},{default:(0,i.w5)((()=>[m.value.length?((0,i.wg)(),(0,i.iD)("div",RS,[(0,i._)("div",zS,[(0,i.Wm)(tp,{size:"small",style:{"margin-right":"5px"},onClick:t[0]||(t[0]=e=>y())},{default:(0,i.w5)((()=>[(0,i.Uk)("全部显示")])),_:1}),(0,i.Wm)(tp,{size:"small",onClick:t[1]||(t[1]=e=>w())},{default:(0,i.w5)((()=>[(0,i.Uk)("全部隐藏")])),_:1})]),(0,s.SU)(r)?((0,i.wg)(),(0,i.iD)("div",PS,[(0,i.Wm)(l,{class:"icon-btn",onClick:t[2]||(t[2]=e=>(0,s.SU)(v)((0,s.SU)(r),(0,s.SU)(Q).UP))}),(0,i.Wm)(o,{class:"icon-btn",onClick:t[3]||(t[3]=e=>(0,s.SU)(v)((0,s.SU)(r),(0,s.SU)(Q).DOWN))})])):(0,i.kq)("",!0)])):(0,i.kq)("",!0),(0,i._)("div",BS,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(m.value,(e=>((0,i.wg)(),(0,i.iD)(i.HY,{key:e.id},["group"===e.type?((0,i.wg)(),(0,i.iD)("div",NS,[jS,((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.elements,(t=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["item",{active:(0,s.SU)(c).includes(t.id),"group-active":(0,s.SU)(d).includes(t.id)}]),key:t.id,onClick:l=>h(e,t.id),onDblclick:e=>b(t.id)},[x.value===t.id?((0,i.wg)(),(0,i.iD)("input",{key:0,id:`input-${t.id}`,value:t.name||(0,s.SU)($n)[t.type],class:"input",type:"text",onBlur:e=>k(e,t.id),onKeydown:(0,n.D2)((e=>k(e,t.id)),["enter"])},null,40,VS)):((0,i.wg)(),(0,i.iD)("div",JS,(0,oe.zw)(t.name||(0,s.SU)($n)[t.type]),1)),(0,i._)("div",qS,[(0,s.SU)(p).includes(t.id)?((0,i.wg)(),(0,i.j4)(u,{key:0,style:{"font-size":"17px"},onClick:(0,n.iM)((e=>g(t.id)),["stop"])},null,8,["onClick"])):((0,i.wg)(),(0,i.j4)(I,{key:1,style:{"font-size":"17px"},onClick:(0,n.iM)((e=>g(t.id)),["stop"])},null,8,["onClick"]))])],42,YS)))),128))])):((0,i.wg)(),(0,i.iD)("div",{key:1,class:(0,oe.C_)(["item",{active:(0,s.SU)(c).includes(e.id)}]),onClick:t=>f(e.id),onDblclick:t=>b(e.id)},[x.value===e.id?((0,i.wg)(),(0,i.iD)("input",{key:0,id:`input-${e.id}`,value:e.name||(0,s.SU)($n)[e.type],class:"input",type:"text",onBlur:t=>k(t,e.id),onKeydown:(0,n.D2)((t=>k(t,e.id)),["enter"])},null,40,GS)):((0,i.wg)(),(0,i.iD)("div",KS,(0,oe.zw)(e.name||(0,s.SU)($n)[e.type]),1)),(0,i._)("div",QS,[(0,s.SU)(p).includes(e.id)?((0,i.wg)(),(0,i.j4)(u,{key:0,style:{"font-size":"17px"},onClick:(0,n.iM)((t=>g(e.id)),["stop"])},null,8,["onClick"])):((0,i.wg)(),(0,i.j4)(I,{key:1,style:{"font-size":"17px"},onClick:(0,n.iM)((t=>g(e.id)),["stop"])},null,8,["onClick"]))])],42,XS))],64)))),128))])])),_:1},8,["title"])}}});const tC=(0,Vl.Z)(eC,[["__scopeId","data-v-15470598"]]);var lC=tC,aC=()=>{const e=R(),t=$(),{handleElement:l}=(0,o.Jk)(e),{slides:a,slideIndex:n,currentSlide:r}=(0,o.Jk)(t),u=(0,s.iH)(""),c=(0,s.iH)(""),d=(0,s.iH)([]),p=(0,s.iH)(-1),v=(0,s.iH)("g"),m=()=>{const e=[],t=new RegExp(u.value,v.value),l=/(<([^>]+)>)/g;for(const n of a.value)for(const a of n.elements)if("text"===a.type){const o=a.content.replace(l,""),i=o.match(t);i&&e.push(...new Array(i.length).fill({slideId:n.id,elId:a.id,elType:a.type}))}else if("shape"===a.type&&a.text&&a.text.content){const o=a.text.content.replace(l,""),i=o.match(t);i&&e.push(...new Array(i.length).fill({slideId:n.id,elId:a.id,elType:a.type}))}else if("table"===a.type)for(let o=0;o{const t=[...e.childNodes],l=[];while(t.length){const e=t.shift();e.nodeType===e.TEXT_NODE?e.wholeText&&l.push(e):t.unshift(...e.childNodes)}return l},f=e=>{let t=0;const l=e.map((e=>{const l=t,a=t+e.wholeText.length;return t=a,{text:e.wholeText,startIdx:l,endIdx:a}}));return l},g=(e,t)=>{const l=new RegExp(t,v.value),a=[];let n=l.exec(e);while(n)a.push(n),n=l.exec(e);return a},y=(e,t,l,a)=>{for(let n=l.length-1;n>=0;n--){const o=l[n],i=o.index,s=i+o[0].length;for(let l=0;l=s)break;let c=e[l];const d=Math.max(0,i-r),p=Math.min(u,s)-r-d;d>0&&(c=c.splitText(d)),p{for(const l of e)l.innerHTML=l.innerHTML.replace(new RegExp(u.value,v.value),(()=>`${u.value}`))},x=()=>{const e=document.querySelectorAll(".editable-element mark");for(const t of e)setTimeout((()=>{const e=t.parentNode,l=t.textContent;e.replaceChild(document.createTextNode(l),t)}),0)},k=()=>{x(),setTimeout((()=>{for(let e=0;ee)).join(""),o=g(n,u.value);y(t,l,o,e)}}}),0)},b=()=>{const e=document.querySelectorAll("mark[data-index]");for(const t of e)setTimeout((()=>{const e=t.dataset.index;void 0!==e&&+e===p.value?t.classList.add("active"):t.classList.remove("active")}),0)},_=()=>{if(-1===p.value)return;const e=d.value[p.value];if(e.slideId===r.value.id)setTimeout(b,0);else{const l=a.value.findIndex((t=>t.id===e.slideId));-1!==l&&t.updateSlideIndex(l)}},I=()=>{if(!u.value)return ta.warning("请先输入查找内容");e.setActiveElementIdList([]),-1===p.value?m():p.value{if(!u.value)return ta.warning("请先输入查找内容");e.setActiveElementIdList([]),-1===p.value?m():p.value>0?p.value-=1:p.value=d.value.length-1,_()},C=()=>{if(!u.value)return;if(-1===p.value)return void I();const e=d.value[p.value];let l=null;if("table"===e.elType){const[t,a]=e.cellIndex;l=document.querySelector(`#editable-element-${e.elId} .cell[data-cell-index="${t}_${a}"] .cell-text`)}else l=document.querySelector(`#editable-element-${e.elId} .ProseMirror`);if(!l)return;const a=document.createElement("div");a.innerHTML=l.innerHTML;let n=!1;const o=a.querySelectorAll("mark[data-index]");for(const t of o){const e=t.parentNode;if(t.classList.contains("active"))n?e.removeChild(t):(e.replaceChild(document.createTextNode(c.value),t),n=!0);else{const l=t.textContent;e.replaceChild(document.createTextNode(l),t)}}if("text"===e.elType){const l={content:a.innerHTML};t.updateElement({id:e.elId,props:l})}else if("shape"===e.elType){const l=r.value.elements.find((t=>t.id===e.elId));if(l&&"shape"===l.type&&l.text){const n={text:{...l.text,content:a.innerHTML}};t.updateElement({id:e.elId,props:n})}}else if("table"===e.elType){const l=r.value.elements.find((t=>t.id===e.elId));if(l&&"table"===l.type){const n=l.data.map(((t,l)=>l===e.cellIndex[0]?t.map(((t,l)=>l===e.cellIndex[1]?{...t,text:a.innerHTML}:t)):t)),o={data:n};t.updateElement({id:e.elId,props:o})}}d.value.splice(p.value,1),d.value.length?(p.value>d.value.length-1&&(p.value=0),(0,i.Y3)((()=>{k(),_()}))):p.value=-1},L=()=>{if(u.value)if(-1!==p.value){for(let e=0;ee.id===n.slideId));if(!o)continue;const i=o.elements.find((e=>e.id===n.elId));if(!i)continue;const s=document.createElement("div");if("text"===i.type?s.innerHTML=i.content:"shape"===i.type&&(s.innerHTML=i.text?.content||""),"table"===n.elType){const e=i.data.map((e=>e.map((e=>e.text?{...e,text:e.text.replaceAll(u.value,c.value)}:e)))),l={data:e};t.updateElement({id:n.elId,slideId:n.slideId,props:l})}else{const l=h(s),a=f(l),o=a.map((({text:e})=>e)).join(""),i=g(o,u.value);y(l,a,i,e);const d=s.querySelectorAll("mark[data-index]");let p=-1;for(const e of d){const t=+e.dataset.index,l=e.parentNode;t===p?l.removeChild(e):(l.replaceChild(document.createTextNode(c.value),e),p=t)}if("text"===n.elType){const e={content:s.innerHTML};t.updateElement({id:n.elId,slideId:n.slideId,props:e})}else if("shape"===n.elType){const e=r.value.elements.find((e=>e.id===n.elId));if(e&&"shape"===e.type&&e.text){const l={text:{...e.text,content:s.innerHTML}};t.updateElement({id:n.elId,slideId:n.slideId,props:l})}}}}d.value=[],p.value=-1}else I()},T=()=>{p.value=-1,d.value=[],u.value||x()};(0,i.YP)(u,T),(0,i.YP)(n,(()=>{(0,i.Y3)((()=>{k(),setTimeout(b,0)}))})),(0,i.YP)(l,(()=>{l.value&&(p.value=-1,d.value=[],x())})),(0,i.Jd)(x);const E=()=>{v.value="g"===v.value?"gi":"g",T()};return{searchWord:u,replaceWord:c,searchResults:d,searchIndex:p,modifiers:v,searchNext:I,searchPrev:S,replace:C,replaceAll:L,toggleModifiers:E}};const nC={class:"count"},oC={key:1,class:"footer"};var iC=(0,i.aZ)({__name:"SearchPanel",setup(e){const t=R(),{searchWord:l,replaceWord:a,searchResults:o,searchIndex:r,modifiers:u,searchNext:c,searchPrev:d,replace:p,replaceAll:v,toggleModifiers:m}=aC(),h=(0,s.iH)("search"),f=[{key:"search",label:"查找"},{key:"replace",label:"替换"}],g=()=>{t.setSearchPanelState(!1)},y=(0,s.iH)();return(0,i.bv)((()=>{y.value.focus()})),(0,i.YP)(h,(()=>{(0,i.Y3)((()=>{y.value.focus()}))})),(e,t)=>{const w=(0,i.up)("IconClose"),x=(0,i.up)("IconLeft"),k=(0,i.up)("IconRight"),b=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.j4)(ZS,{class:"search-panel",width:330,height:0,left:-270,top:90},{default:(0,i.w5)((()=>[(0,i._)("div",{class:"close-btn",onClick:t[0]||(t[0]=e=>g()),onMousedown:t[1]||(t[1]=(0,n.iM)((()=>{}),["stop"]))},[(0,i.Wm)(w)],32),(0,i.Wm)(Kd,{tabs:f,value:h.value,"onUpdate:value":t[2]||(t[2]=e=>h.value=e)},null,8,["value"]),(0,i._)("div",{class:(0,oe.C_)(["content",h.value]),onMousedown:t[12]||(t[12]=(0,n.iM)((()=>{}),["stop"]))},[(0,i.Wm)(sn,{class:"input",value:(0,s.SU)(l),"onUpdate:value":t[6]||(t[6]=e=>(0,s.dq)(l)?l.value=e:null),placeholder:"输入查找内容",onEnter:t[7]||(t[7]=e=>(0,s.SU)(c)()),ref_key:"searchInpRef",ref:y},{suffix:(0,i.w5)((()=>[(0,i._)("span",nC,(0,oe.zw)((0,s.SU)(r)+1)+"/"+(0,oe.zw)((0,s.SU)(o).length),1),(0,i.Wm)(Zc,{type:"vertical"}),(0,i.wy)(((0,i.wg)(),(0,i.iD)("span",{class:(0,oe.C_)(["ignore-case",{active:"g"===(0,s.SU)(u)}]),onClick:t[3]||(t[3]=e=>(0,s.SU)(m)())},[(0,i.Uk)("Aa")],2)),[[b,"忽略大小写"]]),(0,i.Wm)(Zc,{type:"vertical"}),(0,i.wy)((0,i.Wm)(x,{class:"next-btn left",onClick:t[4]||(t[4]=e=>(0,s.SU)(d)())},null,512),[[b,"上一个"]]),(0,i.wy)((0,i.Wm)(k,{class:"next-btn right",onClick:t[5]||(t[5]=e=>(0,s.SU)(c)())},null,512),[[b,"下一个"]])])),_:1},8,["value"]),"replace"===h.value?((0,i.wg)(),(0,i.j4)(sn,{key:0,class:"input",value:(0,s.SU)(a),"onUpdate:value":t[8]||(t[8]=e=>(0,s.dq)(a)?a.value=e:null),placeholder:"输入替换内容",onEnter:t[9]||(t[9]=e=>(0,s.SU)(p)())},null,8,["value"])):(0,i.kq)("",!0),"replace"===h.value?((0,i.wg)(),(0,i.iD)("div",oC,[(0,i.Wm)(tp,{disabled:!(0,s.SU)(l),style:{"margin-left":"5px"},onClick:t[10]||(t[10]=e=>(0,s.SU)(p)())},{default:(0,i.w5)((()=>[(0,i.Uk)("替换")])),_:1},8,["disabled"]),(0,i.Wm)(tp,{disabled:!(0,s.SU)(l),type:"primary",style:{"margin-left":"5px"},onClick:t[11]||(t[11]=e=>(0,s.SU)(v)())},{default:(0,i.w5)((()=>[(0,i.Uk)("全部替换")])),_:1},8,["disabled"])])):(0,i.kq)("",!0)],34)])),_:1})}}});const sC=(0,Vl.Z)(iC,[["__scopeId","data-v-fb93ddde"]]);var rC=sC;const uC={class:"pptist-editor"},cC={class:"layout-content"},dC={class:"layout-content-center"};var pC=(0,i.aZ)({__name:"index",setup(e){const t=R(),{dialogForExport:l,showSelectPanel:a,showSearchPanel:n}=(0,o.Jk)(t),r=()=>t.setDialogForExport(""),u=(0,s.iH)(40);return Ta(),Ea(),(e,t)=>((0,i.wg)(),(0,i.iD)(i.HY,null,[(0,i._)("div",uC,[(0,i.Wm)(Ln,{class:"layout-header"}),(0,i._)("div",cC,[(0,i.Wm)(Rm,{class:"layout-content-left"}),(0,i._)("div",dC,[(0,i.Wm)(Sm,{class:"center-top"}),(0,i.Wm)(Cp,{class:"center-body",style:(0,oe.j5)({height:`calc(100% - ${u.value+40}px)`})},null,8,["style"]),(0,i.Wm)(I_,{class:"center-bottom",height:u.value,"onUpdate:height":t[0]||(t[0]=e=>u.value=e),style:(0,oe.j5)({height:`${u.value}px`})},null,8,["height","style"])]),(0,i.Wm)(f_,{class:"layout-content-right"})])]),(0,s.SU)(a)?((0,i.wg)(),(0,i.j4)(lC,{key:0})):(0,i.kq)("",!0),(0,s.SU)(n)?((0,i.wg)(),(0,i.j4)(rC,{key:1})):(0,i.kq)("",!0),(0,i.Wm)(kp,{visible:!!(0,s.SU)(l),width:680,onClosed:t[1]||(t[1]=e=>r())},{default:(0,i.w5)((()=>[(0,i.Wm)(DS)])),_:1},8,["visible"])],64))}});const vC=(0,Vl.Z)(pC,[["__scopeId","data-v-1e00f97b"]]);var mC=vC,hC=()=>{const e=$(),{slides:t,slideIndex:l,formatedAnimations:a}=(0,o.Jk)(e),n=(0,s.iH)(0),r=(0,s.iH)(!1),u=(0,s.iH)(l.value),c=()=>{if(r.value)return;const{animations:e,autoNext:t}=a.value[n.value];n.value+=1,r.value=!0;let l=0;for(const a of e){const n=document.querySelector(`#screen-element-${a.elId} [class^=base-element-]`);if(!n){l+=1;continue}const o=`${yk}${a.effect}`;n.style.removeProperty("--animate-duration");for(const e of n.classList)-1!==e.indexOf(yk)&&n.classList.remove(e,`${yk}animated`);n.style.setProperty("--animate-duration",`${a.duration}ms`),n.classList.add(o,`${yk}animated`);const i=()=>{"out"!==a.type&&(n.style.removeProperty("--animate-duration"),n.classList.remove(o,`${yk}animated`)),l+=1,l===e.length&&(r.value=!1,t&&c())};n.addEventListener("animationend",i,{once:!0})}},d=()=>{n.value-=1;const{animations:e}=a.value[n.value];for(const t of e){const e=document.querySelector(`#screen-element-${t.elId} [class^=base-element-]`);if(e){e.style.removeProperty("--animate-duration");for(const t of e.classList)-1!==t.indexOf(yk)&&e.classList.remove(t,`${yk}animated`)}}e.every((e=>"attention"===e.type))&&g()},p=(0,s.iH)(0),v=()=>{p.value&&(clearInterval(p.value),p.value=0)};(0,i.Ah)(v);const m=(0,s.iH)(!1),h=e=>{m.value=e},f=(0,D.throttle)((function(e){ta.success(e)}),1e3,{leading:!0,trailing:!1}),g=()=>{a.value.length&&n.value>0?d():l.value>0?(e.updateSlideIndex(l.value-1),l.value{a.value.length&&n.value{v(),ta.success("开始自动放映"),p.value=setInterval(y,w.value)},k=e=>{v(),w.value=e,x()},b=(0,D.throttle)((function(e){e.deltaY<0?g():e.deltaY>0&&y()}),500,{leading:!0,trailing:!1}),_=(0,s.iH)(null),I=e=>{_.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},S=e=>{if(!_.value)return;const t=Math.abs(_.value.x-e.changedTouches[0].pageX),l=e.changedTouches[0].pageY-_.value.y;Math.abs(l)>t&&Math.abs(l)>50&&(_.value=null,l>0?g():y())},C=e=>{const t=e.key.toUpperCase();t===ne.UP||t===ne.LEFT||t===ne.PAGEUP?g():t!==ne.DOWN&&t!==ne.RIGHT&&t!==ne.SPACE&&t!==ne.ENTER&&t!==ne.PAGEDOWN||y()};(0,i.bv)((()=>document.addEventListener("keydown",C))),(0,i.Ah)((()=>document.removeEventListener("keydown",C)));const L=()=>{e.updateSlideIndex(l.value-1),n.value=0},T=()=>{e.updateSlideIndex(l.value+1),n.value=0},E=t=>{e.updateSlideIndex(t),n.value=0},M=l=>{const a=t.value.findIndex((e=>e.id===l));-1!==a&&(e.updateSlideIndex(a),n.value=0)};return{autoPlayTimer:p,autoPlayInterval:w,setAutoPlayInterval:k,autoPlay:x,closeAutoPlay:v,loopPlay:m,setLoopPlay:h,mousewheelListener:b,touchStartListener:I,touchEndListener:S,turnPrevSlide:L,turnNextSlide:T,turnSlideToIndex:E,turnSlideToId:M,execPrev:g,execNext:y,animationIndex:n}},fC=e=>{const t=$(),{viewportRatio:l}=(0,o.Jk)(t),a=(0,s.iH)(0),n=(0,s.iH)(0),r=()=>{const t=e?.value||document.body,o=t.clientWidth,i=t.clientHeight;let s,r;i/o===l.value?(s=o,r=i):i/o>l.value?(s=o,r=o*l.value):(s=i/l.value,r=i),a.value=s,n.value=r};return(0,i.bv)((()=>{r(),window.addEventListener("resize",r)})),(0,i.Ah)((()=>{window.removeEventListener("resize",r)})),{slideWidth:a,slideHeight:n}},gC=()=>{const e=(0,s.iH)(!0),t=(0,s.iH)(!0),{exitScreening:l}=Ca(),a=()=>{e.value=Sa(),!e.value&&t.value&&l(),t.value=!0};(0,i.bv)((()=>{e.value=Sa(),document.addEventListener("fullscreenchange",a),document.addEventListener("webkitfullscreenchange",a)})),(0,i.Ah)((()=>{document.removeEventListener("fullscreenchange",a),document.removeEventListener("webkitfullscreenchange",a)}));const n=()=>{e.value&&(t.value=!1,Ia())};return{fullscreenState:e,manualExitFullscreen:n}};const yC={class:"element-content"};var wC=(0,i.aZ)({__name:"ScreenVideoElement",props:{elementInfo:{}},setup(e){const{currentSlide:t}=(0,o.Jk)($()),l=(0,i.f3)(Tn)||(0,s.iH)(1),a=(0,i.f3)(En)||(0,s.iH)(""),n=(0,i.Fl)((()=>t.value.id===a.value));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"base-element-video screen-element-video",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",yC,[n.value?((0,i.wg)(),(0,i.j4)(Fr,{key:0,width:e.elementInfo.width,height:e.elementInfo.height,src:e.elementInfo.src,poster:e.elementInfo.poster,autoplay:e.elementInfo.autoplay,scale:(0,s.SU)(l)},null,8,["width","height","src","poster","autoplay","scale"])):(0,i.kq)("",!0)])],4)],4))}});const xC=(0,Vl.Z)(wC,[["__scopeId","data-v-76bf5b3f"]]);var kC=xC;const bC={class:"element-content"};var _C=(0,i.aZ)({__name:"ScreenAudioElement",props:{elementInfo:{}},setup(e){const t=e,{viewportRatio:l,currentSlide:a}=(0,o.Jk)($()),n=(0,i.f3)(Tn)||(0,s.iH)(1),r=(0,i.f3)(En)||(0,s.iH)(""),u=(0,i.Fl)((()=>a.value.id===r.value)),c=(0,i.Fl)((()=>Math.min(t.elementInfo.width,t.elementInfo.height)+"px")),d=(0,i.Fl)((()=>{const e=oa,a=oa*l.value,o=280/n.value,i=50/n.value,s=t.elementInfo.width,r=t.elementInfo.height,u=t.elementInfo.left,c=t.elementInfo.top;let d=0,p=r;return u+o>=e&&(d=s-o),c+r+i>=a&&(p=-i),{left:d+"px",top:p+"px"}})),p=(0,s.iH)(),v=()=>{p.value&&p.value.toggle()};return(e,t)=>{const l=(0,i.up)("IconVolumeNotice");return(0,i.wg)(),(0,i.iD)("div",{class:"base-element-audio screen-element-audio",style:(0,oe.j5)({top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"})},[(0,i._)("div",{class:"rotate-wrapper",style:(0,oe.j5)({transform:`rotate(${e.elementInfo.rotate}deg)`})},[(0,i._)("div",bC,[(0,i.Wm)(l,{class:"audio-icon",style:(0,oe.j5)({fontSize:c.value,color:e.elementInfo.color}),onClick:t[0]||(t[0]=e=>v())},null,8,["style"]),u.value?((0,i.wg)(),(0,i.j4)(lu,{key:0,class:"audio-player",ref_key:"audioPlayerRef",ref:p,style:(0,oe.j5)({...d.value}),src:e.elementInfo.src,loop:e.elementInfo.loop,autoplay:e.elementInfo.autoplay,scale:(0,s.SU)(n)},null,8,["style","src","loop","autoplay","scale"])):(0,i.kq)("",!0)])],4)],4)}}});const IC=(0,Vl.Z)(_C,[["__scopeId","data-v-adf39436"]]);var SC=IC;const CC=["id","title"];var LC=(0,i.aZ)({__name:"ScreenElement",props:{elementInfo:{},elementIndex:{},animationIndex:{},turnSlideToId:{type:Function},manualExitFullscreen:{type:Function}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e={[sa.IMAGE]:Gc,[sa.TEXT]:td,[sa.SHAPE]:ud,[sa.LINE]:md,[sa.CHART]:gd,[sa.TABLE]:Ld,[sa.LATEX]:Hd,[sa.VIDEO]:kC,[sa.AUDIO]:SC};return e[t.elementInfo.type]||null})),{formatedAnimations:a,theme:n}=(0,o.Jk)($()),r=(0,i.Fl)((()=>{const e=a.value.findIndex((e=>{const l=e.animations.map((e=>e.elId));return l.includes(t.elementInfo.id)}));if(-1===e)return!1;if(ee.elId===t.elementInfo.id));return"in"===l?.type})),u=()=>{const e=t.elementInfo.link;e&&("web"===e.type?(t.manualExitFullscreen(),window.open(e.target)):"slide"===e.type&&t.turnSlideToId(e.target))};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["screen-element",{link:e.elementInfo.link}]),id:`screen-element-${e.elementInfo.id}`,style:(0,oe.j5)({zIndex:e.elementIndex,color:(0,s.SU)(n).fontColor,fontFamily:(0,s.SU)(n).fontName,visibility:r.value?"hidden":"visible"}),title:e.elementInfo.link?.target||"",onClick:t[0]||(t[0]=e=>u())},[((0,i.wg)(),(0,i.j4)((0,i.LL)(l.value),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],14,CC))}});const TC=(0,Vl.Z)(LC,[["__scopeId","data-v-2139723a"]]);var EC=TC,MC=(0,i.aZ)({__name:"ScreenSlide",props:{slide:{},scale:{},animationIndex:{},turnSlideToId:{type:Function},manualExitFullscreen:{type:Function}},setup(e){const t=e,{viewportRatio:l}=(0,o.Jk)($()),a=(0,i.Fl)((()=>t.slide.background)),{backgroundStyle:n}=yu(a),r=(0,i.Fl)((()=>t.slide.id));return(0,i.JJ)(En,r),(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"screen-slide",style:(0,oe.j5)({width:(0,s.SU)(oa)+"px",height:(0,s.SU)(oa)*(0,s.SU)(l)+"px",transform:`scale(${e.scale})`})},[(0,i._)("div",{class:"background",style:(0,oe.j5)({...(0,s.SU)(n)})},null,4),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.slide.elements,((t,l)=>((0,i.wg)(),(0,i.j4)(EC,{key:t.id,elementInfo:t,elementIndex:l+1,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["elementInfo","elementIndex","animationIndex","turnSlideToId","manualExitFullscreen"])))),128))],4))}});const UC=(0,Vl.Z)(MC,[["__scopeId","data-v-016af5da"]]);var WC=UC;const DC={class:"screen-slide-list"};var HC=(0,i.aZ)({__name:"ScreenSlideList",props:{slideWidth:{},slideHeight:{},animationIndex:{},turnSlideToId:{type:Function},manualExitFullscreen:{type:Function}},setup(e){const t=e,{slides:l,slideIndex:a}=(0,o.Jk)($()),n=(0,i.Fl)((()=>l.value.map((e=>{let t=e.turningMode;if(t||(t="slideY"),"random"===t){const e=bk.filter((e=>!["random","no"].includes(e.value))).map((e=>e.value));t=e[Math.floor(Math.random()*e.length)]}return{...e,turningMode:t}})))),r=(0,i.Fl)((()=>t.slideWidth/oa));return(0,i.JJ)(Tn,r),(e,t)=>((0,i.wg)(),(0,i.iD)("div",DC,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(n.value,((t,l)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["slide-item",`turning-mode-${t.turningMode}`,{current:l===(0,s.SU)(a),before:l<(0,s.SU)(a),after:l>(0,s.SU)(a),hide:(l===(0,s.SU)(a)-1||l===(0,s.SU)(a)+1)&&t.turningMode!==n.value[(0,s.SU)(a)].turningMode}]),key:t.id},[Math.abs((0,s.SU)(a)-l)<2||t.animations?.length?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"slide-content",style:(0,oe.j5)({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[(0,i.Wm)(WC,{slide:t,scale:r.value,animationIndex:e.animationIndex,turnSlideToId:e.turnSlideToId,manualExitFullscreen:e.manualExitFullscreen},null,8,["slide","scale","animationIndex","turnSlideToId","manualExitFullscreen"])],4)):(0,i.kq)("",!0)],2)))),128))]))}});const FC=(0,Vl.Z)(HC,[["__scopeId","data-v-552b63d2"]]);var AC=FC;const $C={class:"slide-thumbnails"},ZC={class:"return-button"},OC={class:"slide-thumbnails-content"},RC=["onClick"];var zC=(0,i.aZ)({__name:"SlideThumbnails",props:{turnSlideToIndex:{type:Function}},emits:["close"],setup(e,{emit:t}){const l=e,a=t,{slides:n,slideIndex:r}=(0,o.Jk)($()),{slidesLoadLimit:u}=Cm(),c=e=>{l.turnSlideToIndex(e),a("close")};return(e,t)=>{const l=(0,i.up)("IconArrowCircleLeft");return(0,i.wg)(),(0,i.iD)("div",$C,[(0,i._)("div",ZC,[(0,i.Wm)(l,{class:"icon",onClick:t[0]||(t[0]=e=>a("close"))})]),(0,i._)("div",OC,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(n),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["thumbnail",{active:t===(0,s.SU)(r)}]),key:e.id,onClick:e=>c(t)},[(0,i.Wm)(Jd,{slide:e,size:150,visible:t<(0,s.SU)(u)},null,8,["slide","visible"])],10,RC)))),128))])])}}});const PC=(0,Vl.Z)(zC,[["__scopeId","data-v-15912b32"]]);var BC=PC;const NC={key:0,class:"blackboard"};var jC=(0,i.aZ)({__name:"WritingBoard",props:{color:{default:"#ffcc00"},model:{default:"pen"},blackboard:{type:Boolean,default:!1},penSize:{default:6},markSize:{default:24},rubberSize:{default:80}},emits:["end"],setup(e,{expose:t,emit:l}){const a=e,n=l;let o=null;const r=(0,s.iH)(),u=(0,s.iH)();let c={x:0,y:0},d=!1,p=0,v=-1;const m=(0,s.iH)({x:0,y:0}),h=(0,s.iH)(!1),f=(0,s.iH)(0),g=(0,s.iH)(0),y=(0,i.Fl)((()=>u.value?f.value/u.value.width:1)),w=(0,i.Fl)((()=>u.value?g.value/u.value.height:1)),x=()=>{r.value&&(f.value=r.value.clientWidth,g.value=r.value.clientHeight)},k=new ResizeObserver(x);(0,i.bv)((()=>{r.value&&k.observe(r.value)})),(0,i.Ah)((()=>{r.value&&k.unobserve(r.value)}));const b=()=>{u.value&&r.value&&(o=u.value.getContext("2d"),o&&(u.value.width=r.value.clientWidth,u.value.height=r.value.clientHeight,o.lineCap="round",o.lineJoin="round"))};(0,i.bv)(b);const _=()=>{o&&("mark"===a.model?(o.globalCompositeOperation="xor",o.globalAlpha=.5):"pen"===a.model&&(o.globalCompositeOperation="source-over",o.globalAlpha=1))};(0,i.YP)((()=>a.model),_);const I=(e,t,l)=>{if(!o)return;const n=c.x,i=c.y;o.lineWidth=l,o.strokeStyle=a.color,o.beginPath(),o.moveTo(n,i),o.lineTo(e,t),o.stroke(),o.closePath()},S=(e,t)=>{if(!o||!u.value)return;const l=c.x,n=c.y,i=a.rubberSize/2,s=i*Math.sin(Math.atan((t-n)/(e-l))),r=i*Math.cos(Math.atan((t-n)/(e-l))),d=[l+s,n-r],p=[l-s,n+r],v=[e+s,t-r],m=[e-s,t+r];o.save(),o.beginPath(),o.arc(e,t,i,0,2*Math.PI),o.clip(),o.clearRect(0,0,u.value.width,u.value.height),o.restore(),o.save(),o.beginPath(),o.moveTo(...d),o.lineTo(...v),o.lineTo(...m),o.lineTo(...p),o.closePath(),o.clip(),o.clearRect(0,0,u.value.width,u.value.height),o.restore()},C=(e,t)=>{const l=c.x,a=c.y;return Math.sqrt((e-l)*(e-l)+(t-a)*(t-a))},L=(e,t)=>{const l=10,n=.1,o=a.penSize,i=3,s=e/t;let r;return r=s<=n?o:s>=l?i:o-s/l*o,-1===v?r:1*r/3+2*v/3},T=(e,t)=>{const l=(new Date).getTime();if("pen"===a.model){const a=C(e,t),n=l-p,o=L(a,n);I(e,t,o),v=o}else"mark"===a.model?I(e,t,a.markSize):S(e,t);c={x:e,y:t},p=(new Date).getTime()},E=e=>{if(!u.value)return[0,0];const t=e instanceof MouseEvent?e:e.changedTouches[0],l=u.value.getBoundingClientRect(),a=t.pageX-l.x,n=t.pageY-l.y;return[a,n]},M=e=>{const[t,l]=E(e),a=t/y.value,n=l/w.value;d=!0,c={x:a,y:n},p=(new Date).getTime(),e instanceof MouseEvent||(m.value={x:t,y:l},h.value=!0)},U=e=>{const[t,l]=E(e),a=t/y.value,n=l/w.value;m.value={x:t,y:l},d&&T(a,n)},W=()=>{d&&(d=!1,n("end"))},D=()=>{o&&u.value&&(o.clearRect(0,0,u.value.width,u.value.height),n("end"))},H=()=>u.value?.toDataURL(),F=e=>{if(o&&u.value&&(o.clearRect(0,0,u.value.width,u.value.height),e)){o.globalCompositeOperation="source-over",o.globalAlpha=1;const t=new Image;t.src=e,t.onload=()=>{o.drawImage(t,0,0),_()}}};return t({clearCanvas:D,getImageDataURL:H,setImageDataURL:F}),(e,t)=>{const l=(0,i.up)("IconWrite"),a=(0,i.up)("IconHighLight");return(0,i.wg)(),(0,i.iD)("div",{class:"writing-board",ref_key:"writingBoardRef",ref:r},[e.blackboard?((0,i.wg)(),(0,i.iD)("div",NC)):(0,i.kq)("",!0),(0,i._)("canvas",{class:"canvas",ref_key:"canvasRef",ref:u,style:(0,oe.j5)({width:f.value+"px",height:g.value+"px"}),onMousedown:t[0]||(t[0]=e=>M(e)),onMousemove:t[1]||(t[1]=e=>U(e)),onMouseup:t[2]||(t[2]=e=>W()),onTouchstart:t[3]||(t[3]=e=>M(e)),onTouchmove:t[4]||(t[4]=e=>U(e)),onTouchend:t[5]||(t[5]=e=>{W(),h.value=!1}),onMouseleave:t[6]||(t[6]=e=>{W(),h.value=!1}),onMouseenter:t[7]||(t[7]=e=>h.value=!0)},null,36),h.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:1},["eraser"===e.model?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"eraser",style:(0,oe.j5)({left:m.value.x-e.rubberSize/2+"px",top:m.value.y-e.rubberSize/2+"px",width:e.rubberSize+"px",height:e.rubberSize+"px"})},null,4)):(0,i.kq)("",!0),"pen"===e.model?((0,i.wg)(),(0,i.iD)("div",{key:1,class:"pen",style:(0,oe.j5)({left:m.value.x-e.penSize/2+"px",top:m.value.y-6*e.penSize+e.penSize/2+"px",color:e.color})},["pen"===e.model?((0,i.wg)(),(0,i.j4)(l,{key:0,class:"icon",size:6*e.penSize},null,8,["size"])):(0,i.kq)("",!0)],4)):(0,i.kq)("",!0),"mark"===e.model?((0,i.wg)(),(0,i.iD)("div",{key:2,class:"pen",style:(0,oe.j5)({left:m.value.x-e.markSize/2+"px",top:m.value.y+"px",color:e.color})},["mark"===e.model?((0,i.wg)(),(0,i.j4)(a,{key:0,class:"icon",size:1.5*e.markSize},null,8,["size"])):(0,i.kq)("",!0)],4)):(0,i.kq)("",!0)],64)):(0,i.kq)("",!0)],512)}}});const YC=(0,Vl.Z)(jC,[["__scopeId","data-v-d8027742"]]);var VC=YC;const JC=e=>((0,i.dD)("data-v-92cd0b5a"),e=e(),(0,i.Cn)(),e),qC={class:"writing-board-tool"},XC={class:"tool-content"},GC={class:"size"},KC=JC((()=>(0,i._)("div",{class:"label"},"墨迹粗细:",-1))),QC={class:"size"},eL=JC((()=>(0,i._)("div",{class:"label"},"墨迹粗细:",-1))),tL={class:"size"},lL=JC((()=>(0,i._)("div",{class:"label"},"橡皮大小:",-1))),aL={class:"colors"},nL=["onClick"];var oL=(0,i.aZ)({__name:"WritingBoardTool",props:{slideWidth:{},slideHeight:{},left:{default:-5},top:{default:-5}},emits:["close"],setup(e,{emit:t}){const l=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#ffff3a"],a=t,{currentSlide:r}=(0,o.Jk)($()),u=(0,s.iH)(),c=(0,s.iH)("#e2534d"),d=(0,s.iH)("pen"),p=(0,s.iH)(!1),v=(0,s.iH)(""),m=(0,s.iH)(6),h=(0,s.iH)(24),f=(0,s.iH)(80),g=e=>{d.value===e?v.value=v.value===e?"":e:(v.value&&(v.value=""),d.value=e)},y=()=>{u.value.clearCanvas()},w=e=>{"eraser"===d.value&&(d.value="pen"),c.value=e},x=()=>{a("close")};(0,i.YP)(r,(()=>{V.writingBoardImgs.where("id").equals(r.value.id).toArray().then((e=>{const t=e[0];u.value.setImageDataURL(t?.dataURL||"")}))}),{immediate:!0});const k=()=>{const e=u.value.getImageDataURL();e&&V.writingBoardImgs.where("id").equals(r.value.id).toArray().then((t=>{const l=t[0];l?V.writingBoardImgs.update(l,{dataURL:e}):V.writingBoardImgs.add({id:r.value.id,dataURL:e})}))};return(e,t)=>{const a=(0,i.up)("IconWrite"),o=(0,i.up)("IconHighLight"),s=(0,i.up)("IconErase"),r=(0,i.up)("IconClear"),b=(0,i.up)("IconFill"),_=(0,i.up)("IconClose"),I=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",qC,[(0,i._)("div",{class:"writing-board-wrap",style:(0,oe.j5)({width:e.slideWidth+"px",height:e.slideHeight+"px"})},[(0,i.Wm)(VC,{ref_key:"writingBoardRef",ref:u,color:c.value,blackboard:p.value,model:d.value,penSize:m.value,markSize:h.value,rubberSize:f.value,onEnd:t[0]||(t[0]=e=>k())},null,8,["color","blackboard","model","penSize","markSize","rubberSize"])],4),(0,i.Wm)(ZS,{class:"tools-panel",width:520,height:50,left:e.left,top:e.top,moveable:""===v.value},{default:(0,i.w5)((()=>[(0,i._)("div",{class:"tools",onMousedown:t[10]||(t[10]=(0,n.iM)((()=>{}),["stop"]))},[(0,i._)("div",XC,[(0,i.Wm)(dn,{trigger:"manual",value:"pen"===v.value},{content:(0,i.w5)((()=>[(0,i._)("div",GC,[KC,(0,i.Wm)(qm,{class:"size-slider",min:4,max:10,step:2,value:m.value,"onUpdate:value":t[1]||(t[1]=e=>m.value=e)},null,8,["value"])])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["btn",{active:"pen"===d.value}]),onClick:t[2]||(t[2]=e=>g("pen"))},[(0,i.Wm)(a,{class:"icon"})],2)),[[I,"画笔"]])])),_:1},8,["value"]),(0,i.Wm)(dn,{trigger:"manual",value:"mark"===v.value},{content:(0,i.w5)((()=>[(0,i._)("div",QC,[eL,(0,i.Wm)(qm,{class:"size-slider",min:16,max:40,step:4,value:h.value,"onUpdate:value":t[3]||(t[3]=e=>h.value=e)},null,8,["value"])])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["btn",{active:"mark"===d.value}]),onClick:t[4]||(t[4]=e=>g("mark"))},[(0,i.Wm)(o,{class:"icon"})],2)),[[I,"荧光笔"]])])),_:1},8,["value"]),(0,i.Wm)(dn,{trigger:"manual",value:"eraser"===v.value},{content:(0,i.w5)((()=>[(0,i._)("div",tL,[lL,(0,i.Wm)(qm,{class:"size-slider",min:20,max:200,step:20,value:f.value,"onUpdate:value":t[5]||(t[5]=e=>f.value=e)},null,8,["value"])])])),default:(0,i.w5)((()=>[(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["btn",{active:"eraser"===d.value}]),onClick:t[6]||(t[6]=e=>g("eraser"))},[(0,i.Wm)(s,{class:"icon"})],2)),[[I,"橡皮擦"]])])),_:1},8,["value"]),(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"btn",onClick:t[7]||(t[7]=e=>y())},[(0,i.Wm)(r,{class:"icon"})])),[[I,"清除墨迹"]]),(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["btn",{active:p.value}]),onClick:t[8]||(t[8]=e=>p.value=!p.value)},[(0,i.Wm)(b,{class:"icon"})],2)),[[I,"黑板"]]),(0,i._)("div",aL,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(l,(e=>(0,i._)("div",{class:(0,oe.C_)(["color",{active:e===c.value}]),key:e,style:(0,oe.j5)({backgroundColor:e}),onClick:t=>w(e)},null,14,nL))),64))])]),(0,i.wy)(((0,i.wg)(),(0,i.iD)("div",{class:"btn",onClick:t[9]||(t[9]=e=>x())},[(0,i.Wm)(_,{class:"icon"})])),[[I,"关闭画笔"]])],32)])),_:1},8,["left","top","moveable"])])}}});const iL=(0,Vl.Z)(oL,[["__scopeId","data-v-92cd0b5a"]]);var sL=iL;const rL=e=>((0,i.dD)("data-v-83a589f0"),e=e(),(0,i.Cn)(),e),uL={class:"header"},cL={class:"content"},dL={class:"timer"},pL=["value","disabled"],vL=rL((()=>(0,i._)("div",{class:"colon"},":",-1))),mL={class:"timer"},hL=["value","disabled"];var fL=(0,i.aZ)({__name:"CountdownTimer",props:{left:{default:5},top:{default:5}},emits:["close"],setup(e,{emit:t}){const l=t,a=(0,s.iH)(null),o=(0,s.iH)(!1),r=(0,s.iH)(!1),u=(0,s.iH)(0),c=(0,i.Fl)((()=>Math.floor(u.value/60))),d=(0,i.Fl)((()=>u.value%60)),p=(0,i.Fl)((()=>!r.value||o.value)),v=()=>{a.value&&clearInterval(a.value)};(0,i.Ah)(v);const m=()=>{v(),o.value=!1},h=()=>{v(),o.value=!1,r.value?u.value=600:u.value=0},f=()=>{v(),r.value?a.value=setInterval((()=>{u.value=u.value-1,u.value<=0&&h()}),1e3):a.value=setInterval((()=>{u.value=u.value+1,u.value>36e3&&m()}),1e3),o.value=!0},g=()=>{o.value?m():f()},y=()=>{r.value=!r.value,h()},w=(e,t)=>{const l=e.target;let a=l.value;const n=/^(\d)+$/.test(a);n?("second"===t&&+a>=60&&(a="59"),u.value="minute"===t?60*+a+d.value:+a+60*c.value):l.value=G("minute"===t?c.value:d.value,2)};return(e,t)=>{const a=(0,i.up)("IconClose");return(0,i.wg)(),(0,i.j4)(ZS,{class:"countdown-timer",width:180,height:110,left:e.left,top:e.top},{default:(0,i.w5)((()=>[(0,i._)("div",uL,[(0,i._)("span",{class:"text-btn",onClick:t[0]||(t[0]=e=>g())},(0,oe.zw)(o.value?"暂停":"开始"),1),(0,i._)("span",{class:"text-btn",onClick:t[1]||(t[1]=e=>h())},"重置"),(0,i._)("span",{class:(0,oe.C_)(["text-btn",{active:r.value}]),onClick:t[2]||(t[2]=e=>y())},"倒计时",2)]),(0,i._)("div",cL,[(0,i._)("div",dL,[(0,i._)("input",{type:"text",value:(0,s.SU)(G)(c.value,2),maxlength:3,disabled:p.value,onMousedown:t[3]||(t[3]=(0,n.iM)((()=>{}),["stop"])),onBlur:t[4]||(t[4]=e=>w(e,"minute")),onKeydown:[t[5]||(t[5]=(0,n.iM)((()=>{}),["stop"])),t[6]||(t[6]=(0,n.D2)((0,n.iM)((e=>w(e,"minute")),["stop"]),["enter"]))]},null,40,pL)]),vL,(0,i._)("div",mL,[(0,i._)("input",{type:"text",value:(0,s.SU)(G)(d.value,2),maxlength:3,disabled:p.value,onMousedown:t[7]||(t[7]=(0,n.iM)((()=>{}),["stop"])),onBlur:t[8]||(t[8]=e=>w(e,"second")),onKeydown:[t[9]||(t[9]=(0,n.iM)((()=>{}),["stop"])),t[10]||(t[10]=(0,n.D2)((0,n.iM)((e=>w(e,"second")),["stop"]),["enter"]))]},null,40,hL)])]),(0,i._)("div",{class:"close-btn",onClick:t[11]||(t[11]=e=>l("close"))},[(0,i.Wm)(a,{class:"icon"})])])),_:1},8,["left","top"])}}});const gL=(0,Vl.Z)(fL,[["__scopeId","data-v-83a589f0"]]);var yL=gL;const wL={class:"tools-left"},xL={class:"content"};var kL=(0,i.aZ)({__name:"BaseView",props:{changeViewMode:{type:Function}},setup(e){const t=e,{slides:l,slideIndex:a}=(0,o.Jk)($()),{autoPlayTimer:n,autoPlay:r,closeAutoPlay:u,autoPlayInterval:c,setAutoPlayInterval:d,loopPlay:p,setLoopPlay:v,mousewheelListener:m,touchStartListener:h,touchEndListener:f,turnPrevSlide:g,turnNextSlide:y,turnSlideToIndex:w,turnSlideToId:x,execPrev:k,execNext:b,animationIndex:_}=hC(),{slideWidth:I,slideHeight:S}=fC(),{exitScreening:C}=Ca(),{fullscreenState:L,manualExitFullscreen:T}=gC(),E=(0,s.iH)(!1),M=(0,s.iH)(!1),U=(0,s.iH)(!1),W=(0,s.iH)(!1),D=(0,s.iH)(!1),H=()=>[{text:"上一页",subText:"↑ ←",disable:a.value<=0,handler:()=>g()},{text:"下一页",subText:"↓ →",disable:a.value>=l.value.length-1,handler:()=>y()},{text:"第一页",disable:0===a.value,handler:()=>w(0)},{text:"最后一页",disable:a.value===l.value.length-1,handler:()=>w(l.value.length-1)},{divider:!0},{text:n.value?"取消自动放映":"自动放映",handler:n.value?u:r,children:[{text:"2.5秒",subText:2500===c.value?"√":"",handler:()=>d(2500)},{text:"5秒",subText:5e3===c.value?"√":"",handler:()=>d(5e3)},{text:"7.5秒",subText:7500===c.value?"√":"",handler:()=>d(7500)},{text:"10秒",subText:1e4===c.value?"√":"",handler:()=>d(1e4)}]},{text:"循环放映",subText:p.value?"√":"",handler:()=>v(!p.value)},{divider:!0},{text:"显示工具栏",handler:()=>E.value=!0},{text:"查看所有幻灯片",handler:()=>W.value=!0},{text:"画笔工具",handler:()=>M.value=!0},{text:"演讲者视图",handler:()=>t.changeViewMode("presenter")},{divider:!0},{text:"结束放映",subText:"ESC",handler:C}];return(e,t)=>{const n=(0,i.up)("IconLeftTwo"),o=(0,i.up)("IconRightTwo"),r=(0,i.up)("IconWrite"),u=(0,i.up)("IconMagic"),c=(0,i.up)("IconStopwatchStart"),d=(0,i.up)("IconListView"),p=(0,i.up)("IconOffScreenOne"),v=(0,i.up)("IconFullScreenOne"),g=(0,i.up)("IconPower"),y=(0,i.Q2)("contextmenu"),F=(0,i.Q2)("tooltip");return(0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["base-view",{"laser-pen":D.value}])},[(0,i.wy)((0,i.Wm)(AC,{slideWidth:(0,s.SU)(I),slideHeight:(0,s.SU)(S),animationIndex:(0,s.SU)(_),turnSlideToId:(0,s.SU)(x),manualExitFullscreen:(0,s.SU)(T),onWheel:t[0]||(t[0]=e=>(0,s.SU)(m)(e)),onTouchstart:t[1]||(t[1]=e=>(0,s.SU)(h)(e)),onTouchend:t[2]||(t[2]=e=>(0,s.SU)(f)(e))},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[y,H]]),W.value?((0,i.wg)(),(0,i.j4)(BC,{key:0,turnSlideToIndex:(0,s.SU)(w),onClose:t[3]||(t[3]=e=>W.value=!1)},null,8,["turnSlideToIndex"])):(0,i.kq)("",!0),M.value?((0,i.wg)(),(0,i.j4)(sL,{key:1,slideWidth:(0,s.SU)(I),slideHeight:(0,s.SU)(S),onClose:t[4]||(t[4]=e=>M.value=!1)},null,8,["slideWidth","slideHeight"])):(0,i.kq)("",!0),U.value?((0,i.wg)(),(0,i.j4)(yL,{key:2,onClose:t[5]||(t[5]=e=>U.value=!1)})):(0,i.kq)("",!0),(0,i._)("div",wL,[(0,i.Wm)(n,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[6]||(t[6]=e=>(0,s.SU)(k)())}),(0,i.Wm)(o,{class:"tool-btn",theme:"two-tone",fill:["#111","#fff"],onClick:t[7]||(t[7]=e=>(0,s.SU)(b)())})]),(0,i._)("div",{class:(0,oe.C_)(["tools-right",{visible:E.value}]),onMouseleave:t[16]||(t[16]=e=>E.value=!1),onMouseenter:t[17]||(t[17]=e=>E.value=!0)},[(0,i._)("div",xL,[(0,i._)("div",{class:"tool-btn page-number",onClick:t[8]||(t[8]=e=>W.value=!0)},"幻灯片 "+(0,oe.zw)((0,s.SU)(a)+1)+" / "+(0,oe.zw)((0,s.SU)(l).length),1),(0,i.wy)((0,i.Wm)(r,{class:"tool-btn",onClick:t[9]||(t[9]=e=>M.value=!0)},null,512),[[F,"画笔工具"]]),(0,i.wy)((0,i.Wm)(u,{class:(0,oe.C_)(["tool-btn",{active:D.value}]),onClick:t[10]||(t[10]=e=>D.value=!D.value)},null,8,["class"]),[[F,"激光笔"]]),(0,i.wy)((0,i.Wm)(c,{class:(0,oe.C_)(["tool-btn",{active:U.value}]),onClick:t[11]||(t[11]=e=>U.value=!U.value)},null,8,["class"]),[[F,"计时器"]]),(0,i.wy)((0,i.Wm)(d,{class:"tool-btn",onClick:t[12]||(t[12]=t=>e.changeViewMode("presenter"))},null,512),[[F,"演讲者视图"]]),(0,s.SU)(L)?(0,i.wy)(((0,i.wg)(),(0,i.j4)(p,{key:0,class:"tool-btn",onClick:t[13]||(t[13]=e=>(0,s.SU)(T)())},null,512)),[[F,"退出全屏"]]):(0,i.wy)(((0,i.wg)(),(0,i.j4)(v,{key:1,class:"tool-btn",onClick:t[14]||(t[14]=e=>(0,s.SU)(_a)())},null,512)),[[F,"进入全屏"]]),(0,i.wy)((0,i.Wm)(g,{class:"tool-btn",onClick:t[15]||(t[15]=e=>(0,s.SU)(C)())},null,512),[[F,"结束放映"]])])],34)],2)}}});const bL=(0,Vl.Z)(kL,[["__scopeId","data-v-e9c1efea"]]);var _L=bL;const IL=e=>((0,i.dD)("data-v-77a65275"),e=e(),(0,i.Cn)(),e),SL={class:"presenter-view"},CL={class:"toolbar"},LL=IL((()=>(0,i._)("span",null,"普通视图",-1))),TL=IL((()=>(0,i._)("span",null,"画笔",-1))),EL=IL((()=>(0,i._)("span",null,"激光笔",-1))),ML=IL((()=>(0,i._)("span",null,"计时器",-1))),UL=IL((()=>(0,i._)("span",null,"结束放映",-1))),WL={class:"content"},DL=["onClick"],HL={class:"remark"},FL={class:"header"},AL=IL((()=>(0,i._)("span",null,"演讲者备注",-1))),$L=["innerHTML"],ZL={class:"remark-scale"};var OL=(0,i.aZ)({__name:"PresenterView",props:{changeViewMode:{type:Function}},setup(e){const t=e,{slides:l,slideIndex:a,viewportRatio:r,currentSlide:u}=(0,o.Jk)($()),c=(0,s.iH)(),d=(0,s.iH)(),p=(0,s.iH)(!1),v=(0,s.iH)(!1),m=(0,s.iH)(!1),{mousewheelListener:h,touchStartListener:f,touchEndListener:g,turnPrevSlide:y,turnNextSlide:w,turnSlideToIndex:x,turnSlideToId:k,animationIndex:b}=hC(),{slideWidth:_,slideHeight:I}=fC(c),{exitScreening:S}=Ca(),{slidesLoadLimit:C}=Cm(),{fullscreenState:L,manualExitFullscreen:T}=gC(),E=(0,s.iH)(16),M=(0,i.Fl)((()=>la(u.value.remark||"无备注"))),U=e=>{d.value&&d.value.scrollBy(e.deltaY,0)},W=e=>{e<12||e>40||(E.value=e)};(0,i.YP)(a,(()=>{(0,i.Y3)((()=>{if(!d.value)return;const e=d.value.querySelector(".thumbnail.active");if(!e)return;const t=d.value.offsetWidth,l=e.offsetLeft;d.value.scrollTo({left:l-t/2,behavior:"smooth"})}))}));const D=()=>[{text:"上一页",subText:"↑ ←",disable:a.value<=0,handler:()=>y()},{text:"下一页",subText:"↓ →",disable:a.value>=l.value.length-1,handler:()=>w()},{text:"第一页",disable:0===a.value,handler:()=>x(0)},{text:"最后一页",disable:a.value===l.value.length-1,handler:()=>x(l.value.length-1)},{divider:!0},{text:"画笔工具",handler:()=>p.value=!0},{text:"普通视图",handler:()=>t.changeViewMode("base")},{divider:!0},{text:"结束放映",subText:"ESC",handler:S}];return(e,t)=>{const o=(0,i.up)("IconListView"),u=(0,i.up)("IconWrite"),y=(0,i.up)("IconMagic"),w=(0,i.up)("IconStopwatchStart"),H=(0,i.up)("IconOffScreenOne"),F=(0,i.up)("IconPower"),A=(0,i.up)("IconMinus"),$=(0,i.up)("IconPlus"),Z=(0,i.Q2)("contextmenu");return(0,i.wg)(),(0,i.iD)("div",SL,[(0,i._)("div",CL,[(0,i._)("div",{class:"tool-btn",onClick:t[0]||(t[0]=t=>e.changeViewMode("base"))},[(0,i.Wm)(o,{class:"tool-icon"}),LL]),(0,i._)("div",{class:(0,oe.C_)(["tool-btn",{active:p.value}]),onClick:t[1]||(t[1]=e=>p.value=!p.value)},[(0,i.Wm)(u,{class:"tool-icon"}),TL],2),(0,i._)("div",{class:(0,oe.C_)(["tool-btn",{active:m.value}]),onClick:t[2]||(t[2]=e=>m.value=!m.value)},[(0,i.Wm)(y,{class:"tool-icon"}),EL],2),(0,i._)("div",{class:(0,oe.C_)(["tool-btn",{active:v.value}]),onClick:t[3]||(t[3]=e=>v.value=!v.value)},[(0,i.Wm)(w,{class:"tool-icon"}),ML],2),(0,i._)("div",{class:"tool-btn",onClick:t[4]||(t[4]=()=>(0,s.SU)(L)?(0,s.SU)(T)():(0,s.SU)(_a)())},[(0,s.SU)(L)?((0,i.wg)(),(0,i.j4)(H,{key:0,class:"tool-icon"})):((0,i.wg)(),(0,i.j4)(H,{key:1,class:"tool-icon"})),(0,i._)("span",null,(0,oe.zw)((0,s.SU)(L)?"退出全屏":"全屏"),1)]),(0,i.Wm)(Zc,{class:"divider"}),(0,i._)("div",{class:"tool-btn",onClick:t[5]||(t[5]=e=>(0,s.SU)(S)())},[(0,i.Wm)(F,{class:"tool-icon"}),UL])]),(0,i._)("div",WL,[(0,i._)("div",{class:(0,oe.C_)(["slide-list-wrap",{"laser-pen":m.value}]),ref_key:"slideListWrapRef",ref:c},[(0,i.wy)((0,i.Wm)(AC,{slideWidth:(0,s.SU)(_),slideHeight:(0,s.SU)(I),animationIndex:(0,s.SU)(b),turnSlideToId:(0,s.SU)(k),manualExitFullscreen:(0,s.SU)(T),onWheel:t[6]||(t[6]=e=>(0,s.SU)(h)(e)),onTouchstart:t[7]||(t[7]=e=>(0,s.SU)(f)(e)),onTouchend:t[8]||(t[8]=e=>(0,s.SU)(g)(e))},null,8,["slideWidth","slideHeight","animationIndex","turnSlideToId","manualExitFullscreen"]),[[Z,D]]),p.value?((0,i.wg)(),(0,i.j4)(sL,{key:0,slideWidth:(0,s.SU)(_),slideHeight:(0,s.SU)(I),left:-365,top:-155,onClose:t[9]||(t[9]=e=>p.value=!1)},null,8,["slideWidth","slideHeight"])):(0,i.kq)("",!0),v.value?((0,i.wg)(),(0,i.j4)(yL,{key:1,left:75,onClose:t[10]||(t[10]=e=>v.value=!1)})):(0,i.kq)("",!0)],2),(0,i._)("div",{class:"thumbnails",ref_key:"thumbnailsRef",ref:d,onWheel:t[11]||(t[11]=(0,n.iM)((e=>U(e)),["prevent"]))},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(l),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["thumbnail",{active:t===(0,s.SU)(a)}]),key:e.id,onClick:e=>(0,s.SU)(x)(t)},[(0,i.Wm)(Jd,{slide:e,size:120/(0,s.SU)(r),visible:t<(0,s.SU)(C)},null,8,["slide","size","visible"])],10,DL)))),128))],544)]),(0,i._)("div",HL,[(0,i._)("div",FL,[AL,(0,i._)("span",null,"P "+(0,oe.zw)((0,s.SU)(a)+1)+" / "+(0,oe.zw)((0,s.SU)(l).length),1)]),(0,i._)("div",{class:"remark-content ProseMirror-static",style:(0,oe.j5)({fontSize:E.value+"px"}),innerHTML:M.value},null,12,$L),(0,i._)("div",ZL,[(0,i._)("div",{class:(0,oe.C_)(["scale-btn",{disable:12===E.value}]),onClick:t[12]||(t[12]=e=>W(E.value-2))},[(0,i.Wm)(A)],2),(0,i._)("div",{class:(0,oe.C_)(["scale-btn",{disable:40===E.value}]),onClick:t[13]||(t[13]=e=>W(E.value+2))},[(0,i.Wm)($)],2)])])])}}});const RL=(0,Vl.Z)(OL,[["__scopeId","data-v-77a65275"]]);var zL=RL;const PL={class:"pptist-screen"};var BL=(0,i.aZ)({__name:"index",setup(e){const t=(0,s.iH)("base"),l=e=>{t.value=e},{exitScreening:a}=Ca(),n=e=>{const t=e.key.toUpperCase();t===ne.ESC&&a()};return(0,i.bv)((()=>document.addEventListener("keydown",n))),(0,i.Ah)((()=>document.removeEventListener("keydown",n))),(e,a)=>((0,i.wg)(),(0,i.iD)("div",PL,["base"===t.value?((0,i.wg)(),(0,i.j4)(_L,{key:0,changeViewMode:l})):"presenter"===t.value?((0,i.wg)(),(0,i.j4)(zL,{key:1,changeViewMode:l})):(0,i.kq)("",!0)]))}});const NL=(0,Vl.Z)(BL,[["__scopeId","data-v-6bf3d190"]]);var jL=NL,YL=(0,i.aZ)({__name:"MobileEditableElement",props:{elementInfo:{},elementIndex:{},selectElement:{type:Function}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e={[sa.IMAGE]:$o,[sa.TEXT]:ls,[sa.SHAPE]:ys,[sa.LINE]:Es,[sa.CHART]:As,[sa.TABLE]:lr,[sa.LATEX]:rr,[sa.VIDEO]:Zr,[sa.AUDIO]:ou};return e[t.elementInfo.type]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"mobile-editable-element",style:(0,oe.j5)({zIndex:e.elementIndex})},[((0,i.wg)(),(0,i.j4)((0,i.LL)(l.value),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:()=>null},null,8,["elementInfo","selectElement"]))],4))}});const VL=YL;var JL=VL,qL=(0,i.aZ)({__name:"MobileOperate",props:{elementInfo:{},isSelected:{type:Boolean},canvasScale:{},scaleElement:{type:Function},rotateElement:{type:Function}},setup(e){const t=e,l=(0,i.Fl)((()=>"rotate"in t.elementInfo?t.elementInfo.rotate:0)),a=(0,i.Fl)((()=>t.elementInfo.width*t.canvasScale)),o=(0,i.Fl)((()=>t.elementInfo.height*t.canvasScale)),{borderLines:r,resizeHandlers:u,textElementResizeHandlers:c}=Ou(a,o),d="text"===t.elementInfo.type||"table"===t.elementInfo.type?c:u,p=(0,i.Fl)((()=>["chart","video","audio"].includes(t.elementInfo.type)));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"mobile-operate",style:(0,oe.j5)({top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:`rotate(${l.value}deg)`,transformOrigin:`${e.elementInfo.width*e.canvasScale/2}px ${e.elementInfo.height*e.canvasScale/2}px`})},[e.isSelected?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(r),(e=>((0,i.wg)(),(0,i.j4)(ju,{class:"operate-border-line",key:e.type,type:e.type,style:(0,oe.j5)(e.style)},null,8,["type","style"])))),128)),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(d),(t=>((0,i.wg)(),(0,i.j4)(Pu,{class:"operate-resize-handler",key:t.direction,type:t.direction,rotate:e.elementInfo.rotate,style:(0,oe.j5)(t.style),onTouchstart:(0,n.iM)((l=>e.scaleElement(l,e.elementInfo,t.direction)),["stop"])},null,8,["type","rotate","style","onTouchstart"])))),128)),p.value?(0,i.kq)("",!0):((0,i.wg)(),(0,i.j4)(Qu,{key:0,class:"operate-rotate-handler",style:(0,oe.j5)({left:a.value/2+"px"}),onTouchstart:t[0]||(t[0]=(0,n.iM)((t=>e.rotateElement(t,e.elementInfo)),["stop"]))},null,8,["style"]))],64)):(0,i.kq)("",!0)],4))}});const XL=(0,Vl.Z)(qL,[["__scopeId","data-v-fd451ff6"]]);var GL=XL;const KL={class:"mobile-thumbnails"},QL=["onClick"],eT={class:"label"};var tT=(0,i.aZ)({__name:"MobileThumbnails",setup(e){const t=$(),{slides:l,slideIndex:a}=(0,o.Jk)(t),{sortSlides:n}=ha(),{slidesLoadLimit:r}=Cm(),u=e=>{t.updateSlideIndex(e)},c=e=>{const{newIndex:t,oldIndex:l}=e;void 0!==t&&void 0!==l&&t!==l&&n(t,l)};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",KL,[(0,i.Wm)((0,s.SU)(Dm()),{class:"thumbnail-list",modelValue:(0,s.SU)(l),animation:200,scroll:!0,scrollSensitivity:50,delayOnTouchOnly:!0,delay:800,itemKey:"id",onEnd:c},{item:(0,i.w5)((({element:e,index:t})=>[(0,i._)("div",{class:(0,oe.C_)(["thumbnail-item",{active:(0,s.SU)(a)===t}]),onClick:e=>u(t)},[(0,i._)("div",eT,(0,oe.zw)(t+1),1),(0,i.Wm)(Jd,{class:"thumbnail",slide:e,size:120,visible:t<(0,s.SU)(r)},null,8,["slide","visible"])],10,QL)])),_:1},8,["modelValue"])]))}});const lT=(0,Vl.Z)(tT,[["__scopeId","data-v-2c80920e"]]);var aT=lT;const nT={class:"slide-toolbar"},oT={class:"remark"},iT=["value"],sT={class:"toolbar"};var rT=(0,i.aZ)({__name:"SlideToolbar",setup(e){const t=$(),{viewportRatio:l,currentSlide:a}=(0,o.Jk)(t),{createSlide:n,copyAndPasteSlide:r,deleteSlide:u}=ha(),{createTextElement:c,createImageElement:d,createShapeElement:p}=pa(),v=()=>{const e=400,t=56;c({left:(oa-e)/2,top:(oa*l.value-t)/2,width:e,height:t},{content:"

新添加文本

"})},m=e=>{e&&e[0]&&na(e[0]).then((e=>d(e)))},h=e=>{const t={viewBox:[200,200],path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},a={viewBox:[200,200],path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},n={square:t,round:a},o=200;p({left:(oa-o)/2,top:(oa*l.value-o)/2,width:o,height:o},n[e])},f=(0,i.Fl)((()=>a.value?.remark||"")),g=e=>{const l=e.target.value;t.updateSlide({remark:l})};return(e,t)=>{const l=(0,i.up)("IconPlus"),a=(0,i.up)("IconCopy"),o=(0,i.up)("IconDelete"),c=(0,i.up)("IconFontSize"),d=(0,i.up)("IconPicture"),p=(0,i.up)("IconSquare"),y=(0,i.up)("IconRound");return(0,i.wg)(),(0,i.iD)("div",nT,[(0,i._)("div",oT,[(0,i._)("textarea",{value:f.value,placeholder:"点击输入演讲者备注",onInput:t[0]||(t[0]=e=>g(e))},null,40,iT)]),(0,i._)("div",sT,[(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[1]||(t[1]=e=>(0,s.SU)(n)())},{default:(0,i.w5)((()=>[(0,i.Wm)(l,{class:"icon"}),(0,i.Uk)(" 新幻灯片")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[2]||(t[2]=e=>(0,s.SU)(r)())},{default:(0,i.w5)((()=>[(0,i.Wm)(a,{class:"icon"}),(0,i.Uk)(" 复制")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[3]||(t[3]=e=>(0,s.SU)(u)())},{default:(0,i.w5)((()=>[(0,i.Wm)(o,{class:"icon"}),(0,i.Uk)(" 删除")])),_:1})])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[4]||(t[4]=e=>v())},{default:(0,i.w5)((()=>[(0,i.Wm)(c,{class:"icon"}),(0,i.Uk)(" 文字")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(Pa,{onChange:t[5]||(t[5]=e=>m(e))},{default:(0,i.w5)((()=>[(0,i.Wm)(d,{class:"icon"}),(0,i.Uk)("图片 ")])),_:1})])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[6]||(t[6]=e=>h("square"))},{default:(0,i.w5)((()=>[(0,i.Wm)(p,{class:"icon"}),(0,i.Uk)(" 矩形")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:t[7]||(t[7]=e=>h("round"))},{default:(0,i.w5)((()=>[(0,i.Wm)(y,{class:"icon"}),(0,i.Uk)(" 圆形")])),_:1})])),_:1})]),(0,i.Wm)(aT)])}}});const uT=(0,Vl.Z)(rT,[["__scopeId","data-v-24150aba"]]);var cT=uT;const dT=e=>((0,i.dD)("data-v-f3d1ac70"),e=e(),(0,i.Cn)(),e),pT={class:"element-toolbar"},vT={class:"content"},mT={key:0,class:"style"},hT={class:"row-block"},fT=dT((()=>(0,i._)("div",{class:"label"},"文字颜色:",-1))),gT={class:"colors"},yT=["onClick"],wT={class:"row-block"},xT=dT((()=>(0,i._)("div",{class:"label"},"填充色:",-1))),kT={class:"colors"},bT=["onClick"],_T={key:1,class:"common"};var IT=(0,i.aZ)({__name:"ElementToolbar",setup(e){const t=["#000000","#ffffff","#eeece1","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c","#c21401","#ff1e02","#ffc12a","#ffff3a","#90cf5b","#00af57"],l=R(),a=$(),{handleElement:n,handleElementId:r,richTextAttrs:u}=(0,o.Jk)(l),{addHistorySnapshot:c}=da(),d=(e,t)=>{a.updateElement({id:e,props:t}),c()},p=[{key:"style",label:"样式"},{key:"common",label:"布局"}],v=(0,s.iH)("common"),{orderElement:m}=ba(),{alignElementToCanvas:h}=qn(),{addElementsFromData:f}=va(),{deleteElement:g}=ga(),y=()=>{const e=JSON.parse(JSON.stringify(n.value));f([e])},w=(e,t)=>{Oi.emit(Ai.RICH_TEXT_COMMAND,{action:{command:e,value:t}})},x=e=>{if(n.value){if(("text"===n.value.type||"shape"===n.value.type&&n.value.text?.content)&&Oi.emit(Ai.RICH_TEXT_COMMAND,{action:{command:"color",value:e}}),"table"===n.value.type){const t=JSON.parse(JSON.stringify(n.value.data));for(let l=0;l{if(n.value){if("text"!==n.value.type&&"shape"!==n.value.type&&"chart"!==n.value.type||d(r.value,{fill:e}),"table"===n.value.type){const t=JSON.parse(JSON.stringify(n.value.data));for(let l=0;l{const a=(0,i.up)("IconTextBold"),o=(0,i.up)("IconTextItalic"),r=(0,i.up)("IconTextUnderline"),c=(0,i.up)("IconStrikethrough"),d=(0,i.up)("IconFontSize"),f=(0,i.up)("IconAlignTextLeft"),b=(0,i.up)("IconAlignTextCenter"),_=(0,i.up)("IconAlignTextRight"),I=(0,i.up)("IconCopy"),S=(0,i.up)("IconDelete"),C=(0,i.up)("IconSendToBack"),L=(0,i.up)("IconBringToFrontOne"),T=(0,i.up)("IconBringToFront"),E=(0,i.up)("IconSentToBack"),M=(0,i.up)("IconAlignLeft"),U=(0,i.up)("IconAlignVertically"),W=(0,i.up)("IconAlignRight"),D=(0,i.up)("IconAlignTop"),H=(0,i.up)("IconAlignHorizontally"),F=(0,i.up)("IconAlignBottom");return(0,i.wg)(),(0,i.iD)("div",pT,[(0,i.Wm)(Kd,{tabs:p,value:v.value,"onUpdate:value":l[0]||(l[0]=e=>v.value=e),tabsStyle:{marginBottom:"8px"},tabStyle:{width:"30%",margin:"0 10%"}},null,8,["value"]),(0,i._)("div",vT,["style"===v.value?((0,i.wg)(),(0,i.iD)("div",mT,[(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).bold,onClick:l[1]||(l[1]=e=>w("bold"))},{default:(0,i.w5)((()=>[(0,i.Wm)(a)])),_:1},8,["checked"]),(0,i.Wm)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).em,onClick:l[2]||(l[2]=e=>w("em"))},{default:(0,i.w5)((()=>[(0,i.Wm)(o)])),_:1},8,["checked"]),(0,i.Wm)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).underline,onClick:l[3]||(l[3]=e=>w("underline"))},{default:(0,i.w5)((()=>[(0,i.Wm)(r)])),_:1},8,["checked"]),(0,i.Wm)(qf,{style:{flex:"1"},checked:(0,s.SU)(u).strikethrough,onClick:l[4]||(l[4]=e=>w("strikethrough"))},{default:(0,i.w5)((()=>[(0,i.Wm)(c)])),_:1},8,["checked"])])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[5]||(l[5]=e=>w("fontsize-add"))},{default:(0,i.w5)((()=>[(0,i.Wm)(d),(0,i.Uk)("+")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[6]||(l[6]=e=>w("fontsize-reduce"))},{default:(0,i.w5)((()=>[(0,i.Wm)(d),(0,i.Uk)("-")])),_:1})])),_:1}),(0,i.Wm)(Zc,{style:{margin:"20px 0"}}),(0,i.Wm)(ng,{class:"row","button-style":"solid",value:(0,s.SU)(u).align,"onUpdate:value":l[7]||(l[7]=e=>w("align",e))},{default:(0,i.w5)((()=>[(0,i.Wm)(tg,{value:"left",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(f)])),_:1}),(0,i.Wm)(tg,{value:"center",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(b)])),_:1}),(0,i.Wm)(tg,{value:"right",style:{flex:"1"}},{default:(0,i.w5)((()=>[(0,i.Wm)(_)])),_:1})])),_:1},8,["value"]),(0,i.Wm)(Zc,{style:{margin:"20px 0"}}),(0,i._)("div",hT,[fT,(0,i._)("div",gT,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(t,(e=>(0,i._)("div",{class:"color",key:e,onClick:t=>x(e)},[(0,i._)("div",{class:"color-block",style:(0,oe.j5)({backgroundColor:e})},null,4)],8,yT))),64))])]),(0,i._)("div",wT,[xT,(0,i._)("div",kT,[((0,i.wg)(),(0,i.iD)(i.HY,null,(0,i.Ko)(t,(e=>(0,i._)("div",{class:"color",key:e,onClick:t=>k(e)},[(0,i._)("div",{class:"color-block",style:(0,oe.j5)({backgroundColor:e})},null,4)],8,bT))),64))])])])):(0,i.kq)("",!0),"common"===v.value?((0,i.wg)(),(0,i.iD)("div",_T,[(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[8]||(l[8]=e=>y())},{default:(0,i.w5)((()=>[(0,i.Wm)(I,{class:"icon"}),(0,i.Uk)(" 复制")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[9]||(l[9]=e=>(0,s.SU)(g)())},{default:(0,i.w5)((()=>[(0,i.Wm)(S,{class:"icon"}),(0,i.Uk)(" 删除")])),_:1})])),_:1}),(0,i.Wm)(Zc,{style:{margin:"20px 0"}}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[10]||(l[10]=e=>(0,s.SU)(m)((0,s.SU)(n),(0,s.SU)(Q).TOP))},{default:(0,i.w5)((()=>[(0,i.Wm)(C,{class:"icon"}),(0,i.Uk)(" 置顶")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[11]||(l[11]=e=>(0,s.SU)(m)((0,s.SU)(n),(0,s.SU)(Q).BOTTOM))},{default:(0,i.w5)((()=>[(0,i.Wm)(L,{class:"icon"}),(0,i.Uk)(" 置底")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[12]||(l[12]=e=>(0,s.SU)(m)((0,s.SU)(n),(0,s.SU)(Q).UP))},{default:(0,i.w5)((()=>[(0,i.Wm)(T,{class:"icon"}),(0,i.Uk)(" 上移")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[13]||(l[13]=e=>(0,s.SU)(m)((0,s.SU)(n),(0,s.SU)(Q).DOWN))},{default:(0,i.w5)((()=>[(0,i.Wm)(E,{class:"icon"}),(0,i.Uk)(" 下移")])),_:1})])),_:1}),(0,i.Wm)(Zc,{style:{margin:"20px 0"}}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[14]||(l[14]=e=>(0,s.SU)(h)((0,s.SU)(ee).LEFT))},{default:(0,i.w5)((()=>[(0,i.Wm)(M,{class:"icon"}),(0,i.Uk)(" 左对齐")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[15]||(l[15]=e=>(0,s.SU)(h)((0,s.SU)(ee).HORIZONTAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(U,{class:"icon"}),(0,i.Uk)(" 水平居中")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[16]||(l[16]=e=>(0,s.SU)(h)((0,s.SU)(ee).RIGHT))},{default:(0,i.w5)((()=>[(0,i.Wm)(W,{class:"icon"}),(0,i.Uk)(" 右对齐")])),_:1})])),_:1}),(0,i.Wm)(Kf,{class:"row"},{default:(0,i.w5)((()=>[(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[17]||(l[17]=e=>(0,s.SU)(h)((0,s.SU)(ee).TOP))},{default:(0,i.w5)((()=>[(0,i.Wm)(D,{class:"icon"}),(0,i.Uk)(" 上对齐")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[18]||(l[18]=e=>(0,s.SU)(h)((0,s.SU)(ee).VERTICAL))},{default:(0,i.w5)((()=>[(0,i.Wm)(H,{class:"icon"}),(0,i.Uk)(" 垂直居中")])),_:1}),(0,i.Wm)(tp,{style:{flex:"1"},onClick:l[19]||(l[19]=e=>(0,s.SU)(h)((0,s.SU)(ee).BOTTOM))},{default:(0,i.w5)((()=>[(0,i.Wm)(F,{class:"icon"}),(0,i.Uk)(" 下对齐")])),_:1})])),_:1})])):(0,i.kq)("",!0)])])}}});const ST=(0,Vl.Z)(IT,[["__scopeId","data-v-f3d1ac70"]]);var CT=ST;const LT={class:"mobile-editor-header"},TT={class:"history"};var ET=(0,i.aZ)({__name:"Header",props:{changeMode:{type:Function}},setup(e){const{canUndo:t,canRedo:l}=(0,o.Jk)(J()),{redo:a,undo:r}=da();return(e,o)=>{const u=(0,i.up)("IconBack"),c=(0,i.up)("IconNext"),d=(0,i.up)("IconLogout");return(0,i.wg)(),(0,i.iD)("div",LT,[(0,i._)("div",TT,[(0,i._)("div",{class:(0,oe.C_)(["history-item",{disable:!(0,s.SU)(t)}]),onClick:o[0]||(o[0]=(0,n.iM)((e=>(0,s.SU)(r)()),["stop"]))},[(0,i.Wm)(u),(0,i.Uk)(" 撤销")],2),(0,i._)("div",{class:(0,oe.C_)(["history-item",{disable:!(0,s.SU)(l)}]),onClick:o[1]||(o[1]=(0,n.iM)((e=>(0,s.SU)(a)()),["stop"]))},[(0,i.Wm)(c),(0,i.Uk)(" 重做")],2)]),(0,i._)("div",{class:"back",onClick:o[2]||(o[2]=t=>e.changeMode("preview"))},[(0,i.Wm)(d),(0,i.Uk)(" 退出编辑")])])}}});const MT=(0,Vl.Z)(ET,[["__scopeId","data-v-5c34ab81"]]);var UT=MT;const WT={class:"mobile-editor"};var DT=(0,i.aZ)({__name:"index",props:{changeMode:{type:Function}},setup(e){const t=$(),l=R(),{slideIndex:a,currentSlide:n,viewportRatio:r}=(0,o.Jk)(t),{activeElementIdList:u,handleElement:c}=(0,o.Jk)(l),d=(0,s.iH)(),p=(0,s.iH)(),v=(0,s.iH)([]),m=(0,i.Fl)((()=>n.value.background)),{backgroundStyle:h}=yu(m),f=(0,i.Fl)((()=>{if(!d.value)return 1;const e=d.value.clientWidth,t=d.value.clientHeight,l=t/e;return l>=r.value?(e-20)/oa:(t-20)/r.value/oa}));(0,i.bv)((()=>{u.value.length&&l.setActiveElementIdList([]),0!==a.value&&t.updateSlideIndex(0)}));const g=(0,i.Fl)((()=>({width:oa*f.value+"px",height:oa*r.value*f.value+"px"}))),y=(0,s.iH)([]),w=()=>{y.value=n.value?JSON.parse(JSON.stringify(n.value.elements)):[]};(0,i.m0)(w);const{dragElement:x}=jn(y,v,f),{scaleElement:k}=Bn(y,v,f),{rotateElement:b}=An(y,p,f),_=(e,t,a=!0)=>{u.value.includes(t.id)||(l.setActiveElementIdList([t.id]),l.setHandleElementId(t.id)),a&&x(e,t)},I=()=>{l.setActiveElementIdList([])};return(e,t)=>((0,i.wg)(),(0,i.iD)("div",WT,[(0,i.Wm)(UT,{changeMode:e.changeMode},null,8,["changeMode"]),(0,i._)("div",{class:"content",ref_key:"contentRef",ref:d,onTouchstart:t[0]||(t[0]=e=>I())},[(0,i._)("div",{class:"viewport-wrapper",style:(0,oe.j5)(g.value)},[(0,i._)("div",{class:"background",style:(0,oe.j5)((0,s.SU)(h))},null,4),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(v.value,((e,t)=>((0,i.wg)(),(0,i.j4)(Iu,{key:t,type:e.type,axis:e.axis,length:e.length,canvasScale:f.value},null,8,["type","axis","length","canvasScale"])))),128)),((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(y.value,(e=>((0,i.wg)(),(0,i.iD)(i.HY,{key:e.id},["line"!==e.type?((0,i.wg)(),(0,i.j4)(GL,{key:0,elementInfo:e,isSelected:(0,s.SU)(u).includes(e.id),canvasScale:f.value,scaleElement:(0,s.SU)(k),rotateElement:(0,s.SU)(b)},null,8,["elementInfo","isSelected","canvasScale","scaleElement","rotateElement"])):(0,i.kq)("",!0)],64)))),128)),(0,i._)("div",{class:"viewport",ref_key:"viewportRef",ref:p,style:(0,oe.j5)({transform:`scale(${f.value})`})},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(y.value,((e,t)=>((0,i.wg)(),(0,i.j4)(JL,{key:e.id,elementInfo:e,elementIndex:t+1,selectElement:_},null,8,["elementInfo","elementIndex"])))),128))],4)],4)],544),(0,i.Wm)(cT),(0,s.SU)(c)?((0,i.wg)(),(0,i.j4)(CT,{key:0})):(0,i.kq)("",!0)]))}});const HT=(0,Vl.Z)(DT,[["__scopeId","data-v-3756d058"]]);var FT=HT;const AT={class:"header"};var $T=(0,i.aZ)({__name:"MobilePlayer",props:{changeMode:{type:Function}},setup(e){const t=$(),{slides:l,slideIndex:a,currentSlide:n,viewportRatio:r}=(0,o.Jk)(t),u=(0,s.iH)(!1),c=(0,s.iH)({width:0,height:0});(0,i.bv)((()=>{0!==a.value&&t.updateSlideIndex(0),c.value={width:document.body.clientHeight,height:document.body.clientWidth}}));const d=(0,i.Fl)((()=>{const e=c.value.height/c.value.width;let t=0,l=0;return e>=r.value?(t=c.value.width,l=t*r.value):(l=c.value.height,t=l/r.value),{width:t,height:l}})),p=(0,s.iH)(null),v=e=>{p.value={x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}},m=e=>{if(!p.value)return;const n=Math.abs(p.value.y-e.changedTouches[0].pageY),o=e.changedTouches[0].pageX-p.value.x;Math.abs(o)>n&&Math.abs(o)>50&&(p.value=null,o<0&&a.value>0&&t.updateSlideIndex(a.value-1),o>0&&a.value{const o=(0,i.up)("IconLogout");return(0,i.wg)(),(0,i.iD)("div",{class:"mobile-player",style:(0,oe.j5)({width:c.value.width+"px",height:c.value.height+"px",transform:`rotate(90deg) translateY(-${c.value.height}px)`})},[(0,i._)("div",{class:"screen-slide-list",onClick:t[0]||(t[0]=e=>u.value=!u.value),onTouchstart:t[1]||(t[1]=e=>v(e)),onTouchend:t[2]||(t[2]=e=>m(e))},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(l),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:(0,oe.C_)(["slide-item",`turning-mode-${e.turningMode||"slideY"}`,{current:t===(0,s.SU)(a),before:t<(0,s.SU)(a),after:t>(0,s.SU)(a),hide:(t===(0,s.SU)(a)-1||t===(0,s.SU)(a)+1)&&e.turningMode!==(0,s.SU)(n).turningMode}]),key:e.id},[Math.abs((0,s.SU)(a)-t)<2?((0,i.wg)(),(0,i.iD)("div",{key:0,class:"slide-content",style:(0,oe.j5)({width:d.value.width+"px",height:d.value.height+"px"})},[(0,i.Wm)(Jd,{slide:e,size:d.value.width},null,8,["slide","size"])],4)):(0,i.kq)("",!0)],2)))),128))],32),u.value?((0,i.wg)(),(0,i.iD)(i.HY,{key:0},[(0,i._)("div",AT,[(0,i._)("div",{class:"back",onClick:t[3]||(t[3]=t=>e.changeMode("preview"))},[(0,i.Wm)(o),(0,i.Uk)(" 退出播放")])]),(0,i.Wm)(aT,{class:"thumbnails"})],64)):(0,i.kq)("",!0)],4)}}});const ZT=(0,Vl.Z)($T,[["__scopeId","data-v-62f26eba"]]);var OT=ZT;const RT={class:"thumbnail-list"},zT={class:"menu"};var PT=(0,i.aZ)({__name:"MobilePreview",props:{changeMode:{type:Function}},setup(e){const{slides:t}=(0,o.Jk)($()),{slidesLoadLimit:l}=Cm(),a=(0,s.iH)(),n=(0,s.iH)(0);return(0,i.bv)((()=>{a.value&&(n.value=a.value.clientWidth)})),(e,o)=>{const r=(0,i.up)("IconEdit"),u=(0,i.up)("IconFullScreenPlay");return(0,i.wg)(),(0,i.iD)("div",{class:"mobile-preview",ref_key:"mobileRef",ref:a},[(0,i._)("div",RT,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)((0,s.SU)(t),((e,t)=>((0,i.wg)(),(0,i.iD)("div",{class:"thumbnail-item",key:e.id},[(0,i.Wm)(Jd,{slide:e,size:n.value-20,visible:t<(0,s.SU)(l)},null,8,["slide","size","visible"])])))),128))]),(0,i._)("div",zT,[(0,i._)("div",{class:"menu-item",onClick:o[0]||(o[0]=t=>e.changeMode("editor"))},[(0,i.Wm)(r,{class:"icon"}),(0,i.Uk)(" 编辑")]),(0,i.Wm)(Zc,{type:"vertical",style:{height:"30px"}}),(0,i._)("div",{class:"menu-item",onClick:o[1]||(o[1]=t=>e.changeMode("player"))},[(0,i.Wm)(u,{class:"icon"}),(0,i.Uk)(" 播放")])])],512)}}});const BT=(0,Vl.Z)(PT,[["__scopeId","data-v-53dd42dc"]]);var NT=BT;const jT={class:"mobile"};var YT=(0,i.aZ)({__name:"index",setup(e){const t=(0,s.iH)("preview"),l=e=>t.value=e,a=(0,i.Fl)((()=>{const e={editor:FT,player:OT,preview:NT};return e[t.value]||null}));return(e,t)=>((0,i.wg)(),(0,i.iD)("div",jT,[((0,i.wg)(),(0,i.j4)((0,i.LL)(a.value),{changeMode:l}))]))}});const VT=(0,Vl.Z)(YT,[["__scopeId","data-v-9826ff08"]]);var JT=VT,qT=(0,i.aZ)({__name:"App",setup(e){const t=K(),l=R(),a=J(),{databaseId:n}=(0,o.Jk)(l),{screening:r}=(0,o.Jk)(X());return window.onbeforeunload=()=>!1,(0,i.bv)((async()=>{await j(),a.initSnapshotDatabase(),l.setAvailableFonts()})),window.addEventListener("unload",(()=>{const e=localStorage.getItem(B),t=e?JSON.parse(e):[];t.push(n.value);const l=JSON.stringify(t);localStorage.setItem(B,l)})),(e,l)=>(0,s.SU)(r)?((0,i.wg)(),(0,i.j4)(jL,{key:0})):(0,s.SU)(t)?((0,i.wg)(),(0,i.j4)(mC,{key:1})):((0,i.wg)(),(0,i.j4)(JT,{key:2}))}});const XT=qT;var GT=XT,KT=l(5205);(0,KT.z)("service-worker.js",{ready(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered(){console.log("Service worker has been registered.")},cached(){console.log("Content has been cached for offline use.")},updatefound(){console.log("New content is downloading.")},updated(){console.log("New content is available; please refresh.")},offline(){console.log("No internet connection found. App is running in offline mode.")},error(e){console.error("Error during service worker registration:",e)}});l(9744),l(9091);const QT={class:"menu-content"},eE=["onClick"],tE={class:"text"},lE={key:0,class:"sub-text"};var aE=(0,i.aZ)({__name:"MenuContent",props:{menus:{},handleClickMenuItem:{type:Function}},setup(e){return(e,t)=>{const l=(0,i.up)("menu-content",!0);return(0,i.wg)(),(0,i.iD)("ul",QT,[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.menus,((t,a)=>((0,i.wg)(),(0,i.iD)(i.HY,{key:t.text||a},[t.hide?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("li",{key:0,class:(0,oe.C_)(["menu-item",{divider:t.divider,disable:t.disable}]),onClick:(0,n.iM)((l=>e.handleClickMenuItem(t)),["stop"])},[t.divider?(0,i.kq)("",!0):((0,i.wg)(),(0,i.iD)("div",{key:0,class:(0,oe.C_)(["menu-item-content",{"has-children":t.children,"has-handler":t.handler}])},[(0,i._)("span",tE,(0,oe.zw)(t.text),1),t.subText&&!t.children?((0,i.wg)(),(0,i.iD)("span",lE,(0,oe.zw)(t.subText),1)):(0,i.kq)("",!0),t.children&&t.children.length?((0,i.wg)(),(0,i.j4)(l,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):(0,i.kq)("",!0)],2))],10,eE))],64)))),128))])}}});const nE=(0,Vl.Z)(aE,[["__scopeId","data-v-77e74b43"]]);var oE=nE,iE=(0,i.aZ)({__name:"index",props:{axis:{},el:{},menus:{},removeContextmenu:{type:Function}},setup(e){const t=e,l=(0,i.Fl)((()=>{const e=170,l=30,a=11,n=5,{x:o,y:i}=t.axis,s=t.menus.filter((e=>!(e.divider||e.hide))).length,r=t.menus.filter((e=>e.divider)).length,u=e,c=s*l+r*a+2*n,d=document.body.clientWidth,p=document.body.clientHeight;return{left:d<=o+u?o-u:o,top:p<=i+c?i-c:i}})),a=e=>{e.disable||e.children&&!e.handler||(e.handler&&e.handler(t.el),t.removeContextmenu())};return(e,t)=>((0,i.wg)(),(0,i.iD)(i.HY,null,[(0,i._)("div",{class:"mask",onContextmenu:t[0]||(t[0]=(0,n.iM)((t=>e.removeContextmenu()),["prevent"])),onMousedown:t[1]||(t[1]=t=>e.removeContextmenu())},null,32),(0,i._)("div",{class:"contextmenu",style:(0,oe.j5)({left:l.value.left+"px",top:l.value.top+"px"}),onContextmenu:t[2]||(t[2]=(0,n.iM)((()=>{}),["prevent"]))},[(0,i.Wm)(oE,{menus:e.menus,handleClickMenuItem:a},null,8,["menus"])],36)],64))}});const sE=iE;var rE=sE;const uE="CTX_CONTEXTMENU_HANDLER",cE=(e,t,l)=>{t.stopPropagation(),t.preventDefault();const a=l.value(e);if(!a)return;let o=null;const s=()=>{o&&(document.body.removeChild(o),o=null),e.classList.remove("contextmenu-active"),document.body.removeEventListener("scroll",s),window.removeEventListener("resize",s)},r={axis:{x:t.x,y:t.y},el:e,menus:a,removeContextmenu:s};o=document.createElement("div");const u=(0,i.Wm)(rE,r,null);(0,n.sY)(u,o),document.body.appendChild(o),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",s),window.addEventListener("resize",s)},dE={mounted(e,t){e[uE]=l=>cE(e,l,t),e.addEventListener("contextmenu",e[uE])},unmounted(e){e&&e[uE]&&(e.removeEventListener("contextmenu",e[uE]),delete e[uE])}};var pE=dE;const vE="CTX_CLICK_OUTSIDE_HANDLER",mE=(e,t,l)=>{const a=l.value,n=t.composedPath(),o=n?n.indexOf(e)<0:!e.contains(t.target);o&&a(t)},hE={mounted(e,t){e[vE]=l=>mE(e,l,t),setTimeout((()=>{document.addEventListener("click",e[vE])}),0)},unmounted(e){e[vE]&&(document.removeEventListener("click",e[vE]),delete e[vE])}};var fE=hE;const gE="TOOLTIP_INSTANCE",yE={mounted(e,t){let l="",a="top",n=[300,0];"string"===typeof t.value?l=t.value:(l=t.value.content,void 0!==t.value.placement&&(a=t.value.placement),void 0!==t.value.delay&&(n=t.value.delay)),e[gE]=(0,rn.ZP)(e,{content:l,theme:"tooltip",duration:100,animation:"scale",allowHTML:!0,placement:a,delay:n})},updated(e,t){let l="";l="string"===typeof t.value?t.value:t.value.content,e[gE]&&e[gE].setContent(l)},unmounted(e){e[gE]&&e[gE].destroy()}};var wE=yE,xE={install(e){e.directive("contextmenu",pE),e.directive("click-outside",fE),e.directive("tooltip",wE)}};const kE=(0,n.ri)(GT);kE.use(Ol),kE.use(xE),kE.use((0,o.WB)()),kE.mount("#app")},2480:function(){},3180:function(){},7687:function(){}},t={};function l(a){var n=t[a];if(void 0!==n)return n.exports;var o=t[a]={id:a,loaded:!1,exports:{}};return e[a].call(o.exports,o,o.exports,l),o.loaded=!0,o.exports}l.m=e,function(){var e=[];l.O=function(t,a,n,o){if(!a){var i=1/0;for(c=0;c=o)&&Object.keys(l.O).every((function(e){return l.O[e](a[r])}))?a.splice(r--,1):(s=!1,o0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[a,n,o]}}(),function(){l.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(t,{a:t}),t}}(),function(){l.d=function(e,t){for(var a in t)l.o(t,a)&&!l.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}}(),function(){l.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){l.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e}}(),function(){var e={143:0};l.O.j=function(t){return 0===e[t]};var t=function(t,a){var n,o,i=a[0],s=a[1],r=a[2],u=0;if(i.some((function(t){return 0!==e[t]}))){for(n in s)l.o(s,n)&&(l.m[n]=s[n]);if(r)var c=r(l)}for(t&&t(a);u {\n return (\n node.type === schema.nodes.bullet_list ||\n node.type === schema.nodes.ordered_list\n )\n}\n\nexport const autoSelectAll = (view: EditorView) => {\n const { empty } = view.state.selection\n if (empty) selectAll(view.state, view.dispatch)\n}\n\nexport const addMark = (editorView: EditorView, mark: Mark, selection?: { from: number; to: number; }) => {\n if (selection) {\n editorView.dispatch(editorView.state.tr.addMark(selection.from, selection.to, mark))\n }\n else {\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n}\n\nexport const findNodesWithSameMark = (doc: Node, from: number, to: number, markType: MarkType) => {\n let ii = from\n const finder = (mark: Mark) => mark.type === markType\n let firstMark = null\n let fromNode = null\n let toNode = null\n\n while (ii <= to) {\n const node = doc.nodeAt(ii)\n if (!node || !node.marks) return null\n\n const mark = node.marks.find(finder)\n if (!mark) return null\n\n if (firstMark && mark !== firstMark) return null\n\n fromNode = fromNode || node\n firstMark = firstMark || mark\n toNode = node\n ii++\n }\n\n let fromPos = from\n let toPos = to\n\n let jj = 0\n ii = from - 1\n while (ii > jj) {\n const node = doc.nodeAt(ii)\n const mark = node && node.marks.find(finder)\n if (!mark || mark !== firstMark) break\n fromPos = ii\n fromNode = node\n ii--\n }\n\n ii = to + 1\n jj = doc.nodeSize - 2\n while (ii < jj) {\n const node = doc.nodeAt(ii)\n const mark = node && node.marks.find(finder)\n if (!mark || mark !== firstMark) break\n toPos = ii\n toNode = node\n ii++\n }\n\n return {\n mark: firstMark,\n from: {\n node: fromNode,\n pos: fromPos,\n },\n to: {\n node: toNode,\n pos: toPos,\n },\n }\n}\n\nconst equalNodeType = (nodeType: NodeType, node: Node) => {\n return Array.isArray(nodeType) && nodeType.indexOf(node.type) > -1 || node.type === nodeType\n}\n\nconst findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\n for (let i = $pos.depth; i > 0; i--) {\n const node = $pos.node(i)\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n}\n\nexport const findParentNode = (predicate: (node: Node) => boolean) => {\n return (_ref: Selection) => findParentNodeClosestToPos(_ref.$from, predicate)\n}\n\nexport const findParentNodeOfType = (nodeType: NodeType) => {\n return (selection: Selection) => {\n return findParentNode((node: Node) => {\n return equalNodeType(nodeType, node)\n })(selection)\n }\n}\n\nexport const isActiveOfParentNodeType = (nodeType: string, state: EditorState) => {\n const node = state.schema.nodes[nodeType]\n return !!findParentNodeOfType(node)(state.selection)\n}\n\nexport const getLastTextNode = (node: Node | null): Node | null => {\n if (!node) return null\n if (node.type.name === 'text') return node\n if (!node.lastChild) return null\n\n return getLastTextNode(node.lastChild)\n}\n\nexport const getMarkAttrs = (view: EditorView) => {\n const { selection, doc } = view.state\n const { from } = selection\n\n let node = doc.nodeAt(from) || doc.nodeAt(from - 1)\n node = getLastTextNode(node)\n\n return node?.marks || []\n}\n\nexport const getAttrValue = (marks: readonly Mark[], markType: string, attr: string): string | null => {\n for (const mark of marks) {\n if (mark.type.name === markType && mark.attrs[attr]) return mark.attrs[attr]\n }\n return null\n}\n\nexport const isActiveMark = (marks: readonly Mark[], markType: string) => {\n for (const mark of marks) {\n if (mark.type.name === markType) return true\n }\n return false\n}\n\nexport const markActive = (state: EditorState, type: MarkType) => {\n const { from, $from, to, empty } = state.selection\n if (empty) return type.isInSet(state.storedMarks || $from.marks())\n return state.doc.rangeHasMark(from, to, type)\n}\n\nexport const getAttrValueInSelection = (view: EditorView, attr: string) => {\n const { selection, doc } = view.state\n const { from, to } = selection\n\n let keepChecking = true\n let value = ''\n doc.nodesBetween(from, to, node => {\n if (keepChecking && node.attrs[attr]) {\n keepChecking = false\n value = node.attrs[attr]\n }\n return keepChecking\n })\n return value\n}\n\ntype Align = 'left' | 'right' | 'center'\n\ninterface DefaultAttrs {\n color: string\n backcolor: string\n fontsize: string\n fontname: string\n align: Align\n}\nconst _defaultAttrs: DefaultAttrs = {\n color: '#000',\n backcolor: '',\n fontsize: '20px',\n fontname: '微软雅黑',\n align: 'left',\n}\nexport const getTextAttrs = (view: EditorView, attrs: Partial = {}) => {\n const defaultAttrs: DefaultAttrs = { ..._defaultAttrs, ...attrs }\n\n const marks = getMarkAttrs(view)\n\n const isBold = isActiveMark(marks, 'strong')\n const isEm = isActiveMark(marks, 'em')\n const isUnderline = isActiveMark(marks, 'underline')\n const isStrikethrough = isActiveMark(marks, 'strikethrough')\n const isSuperscript = isActiveMark(marks, 'superscript')\n const isSubscript = isActiveMark(marks, 'subscript')\n const isCode = isActiveMark(marks, 'code')\n const color = getAttrValue(marks, 'forecolor', 'color') || defaultAttrs.color\n const backcolor = getAttrValue(marks, 'backcolor', 'backcolor') || defaultAttrs.backcolor\n const fontsize = getAttrValue(marks, 'fontsize', 'fontsize') || defaultAttrs.fontsize\n const fontname = getAttrValue(marks, 'fontname', 'fontname') || defaultAttrs.fontname\n const link = getAttrValue(marks, 'link', 'href') || ''\n const align = (getAttrValueInSelection(view, 'align') || defaultAttrs.align) as Align\n const isBulletList = isActiveOfParentNodeType('bullet_list', view.state)\n const isOrderedList = isActiveOfParentNodeType('ordered_list', view.state)\n const isBlockquote = isActiveOfParentNodeType('blockquote', view.state)\n\n return {\n bold: isBold,\n em: isEm,\n underline: isUnderline,\n strikethrough: isStrikethrough,\n superscript: isSuperscript,\n subscript: isSubscript,\n code: isCode,\n color: color,\n backcolor: backcolor,\n fontsize: fontsize,\n fontname: fontname,\n link: link,\n align: align,\n bulletList: isBulletList,\n orderedList: isOrderedList,\n blockquote: isBlockquote,\n }\n}\n\nexport type TextAttrs = ReturnType\n\nexport const getFontsize = (view: EditorView) => {\n const marks = getMarkAttrs(view)\n const fontsize = getAttrValue(marks, 'fontsize', 'fontsize') || _defaultAttrs.fontsize\n return parseInt(fontsize)\n}\n\nexport const defaultRichTextAttrs: TextAttrs = {\n bold: false,\n em: false,\n underline: false,\n strikethrough: false,\n superscript: false,\n subscript: false,\n code: false,\n color: '#000',\n backcolor: '',\n fontsize: '20px',\n fontname: '微软雅黑',\n link: '',\n align: 'left',\n bulletList: false,\n orderedList: false,\n blockquote: false,\n}","export const SYS_FONTS = [\n { label: 'Arial', value: 'Arial' },\n { label: '微软雅黑', value: 'Microsoft Yahei' },\n { label: '宋体', value: 'SimSun' },\n { label: '黑体', value: 'SimHei' },\n { label: '楷体', value: 'KaiTi' },\n { label: '新宋体', value: 'NSimSun' },\n { label: '仿宋', value: 'FangSong' },\n { label: '苹方', value: 'PingFang SC' },\n { label: '华文黑体', value: 'STHeiti' },\n { label: '华文楷体', value: 'STKaiti' },\n { label: '华文宋体', value: 'STSong' },\n { label: '华文仿宋', value: 'STFangSong' },\n { label: '华文中宋', value: 'STZhongSong' },\n { label: '华文琥珀', value: 'STHupo' },\n { label: '华文新魏', value: 'STXinwei' },\n { label: '华文隶书', value: 'STLiti' },\n { label: '华文行楷', value: 'STXingkai' },\n { label: '冬青黑体', value: 'Hiragino Sans GB' },\n { label: '兰亭黑', value: 'Lantinghei SC' },\n { label: '偏偏体', value: 'Hanzipen SC' },\n { label: '手札体', value: 'Hannotate SC' },\n { label: '宋体', value: 'Songti SC' },\n { label: '娃娃体', value: 'Wawati SC' },\n { label: '行楷', value: 'Xingkai SC' },\n { label: '圆体', value: 'Yuanti SC' },\n { label: '华文细黑', value: 'STXihei' },\n { label: '幼圆', value: 'YouYuan' },\n { label: '隶书', value: 'LiSu' },\n]\n\nexport const WEB_FONTS = [\n { label: '得意黑', value: '得意黑' },\n { label: '仓耳小丸子', value: '仓耳小丸子' },\n { label: '优设标题黑', value: '优设标题黑' },\n { label: '峰广明锐体', value: '峰广明锐体' },\n { label: '摄图摩登小方体', value: '摄图摩登小方体' },\n { label: '站酷快乐体', value: '站酷快乐体' },\n { label: '字制区喜脉体', value: '字制区喜脉体' },\n { label: '素材集市康康体', value: '素材集市康康体' },\n { label: '素材集市酷方体', value: '素材集市酷方体' },\n { label: '途牛类圆体', value: '途牛类圆体' },\n { label: '锐字真言体', value: '锐字真言体' },\n]","/**\n * 判断操作系统是否存在某字体\n * @param fontName 字体名\n */\nexport const isSupportFont = (fontName: string) => {\n if (typeof fontName !== 'string') return false\n\n const arial = 'Arial'\n if (fontName.toLowerCase() === arial.toLowerCase()) return true\n\n const size = 100\n const width = 100\n const height = 100\n const str = 'a'\n\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d', { willReadFrequently: true })\n\n if (!ctx) return false\n\n canvas.width = width\n canvas.height = height\n ctx.textAlign = 'center'\n ctx.fillStyle = 'black'\n ctx.textBaseline = 'middle'\n\n const getDotArray = (_fontFamily: string) => {\n ctx.clearRect(0, 0, width, height)\n ctx.font = `${size}px ${_fontFamily}, ${arial}`\n ctx.fillText(str, width / 2, height / 2)\n const imageData = ctx.getImageData(0, 0, width, height).data\n return [].slice.call(imageData).filter(item => item !== 0)\n }\n\n return getDotArray(arial).join('') !== getDotArray(fontName).join('')\n}","import type { Slide } from '@/types/slides'\n\nexport const slides: Slide[] = [\n {\n id: 'test-slide-1',\n elements: [\n {\n type: 'shape',\n id: '4cbRxp',\n left: 0,\n top: 200,\n width: 546,\n height: 362.5,\n viewBox: [200, 200],\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '#5b9bd5',\n fixedRatio: false,\n opacity: 0.7,\n rotate: 0\n },\n {\n type: 'shape',\n id: 'ookHrf',\n left: 0,\n top: 0,\n width: 300,\n height: 320,\n viewBox: [200, 200],\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '#5b9bd5',\n fixedRatio: false,\n flipV: true,\n rotate: 0\n },\n {\n type: 'text',\n id: 'idn7Mx',\n left: 355,\n top: 65.25,\n width: 585,\n height: 188,\n lineHeight: 1.2,\n content: '

PPTIST

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

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

',\n rotate: 0,\n defaultFontName: 'Microsoft Yahei',\n defaultColor: '#333'\n },\n {\n type: 'line',\n id: 'FnpZs4',\n left: 361,\n top: 238,\n start: [0, 0],\n end: [549, 0],\n points: ['', ''],\n color: '#5b9bd5',\n style: 'solid',\n width: 2,\n },\n ],\n background: {\n type: 'solid',\n color: '#ffffff',\n },\n },\n {\n id: 'test-slide-2',\n elements: [\n {\n type: 'text',\n id: 'ptNnUJ',\n left: 145,\n top: 148,\n width: 711,\n height: 77,\n lineHeight: 1.2,\n content: '

在此处添加标题

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

在此处添加副标题

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

感谢观看

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

输入标题

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

请在此处输入副标题

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

在此处添加标题

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

在此处添加副标题

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

感谢观看

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

01

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

在此处输入标题

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

  2. 在此处输入内容

  3. 在此处输入内容

  4. 在此处输入内容

  5. 在此处输入内容

  6. 在此处输入内容

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

1

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

4

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

3

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

2

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

在此输入内容

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

在此输入内容

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

在此输入内容

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

在此输入内容

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

01

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

在此处添加标题

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

1.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

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

2.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

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

1.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

2.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

3.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

4.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

请在此处输入标题

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

请在此处输入内容1

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

请在此处输入内容2

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

请在此处输入内容3

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

请在此处输入内容4

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

1

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

在此输入内容

在此输入内容

在此输入内容

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

2

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

在此输入内容

在此输入内容

在此输入内容

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

3

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

在此输入内容

在此输入内容

在此输入内容

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

4

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

在此输入内容

在此输入内容

在此输入内容

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

5

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

在此输入内容

在此输入内容

在此输入内容

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

6

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

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n]","import { defineStore } from 'pinia'\nimport tinycolor from 'tinycolor2'\nimport { omit } from 'lodash'\nimport type { Slide, SlideTheme, PPTElement, PPTAnimation } from '@/types/slides'\nimport { slides } from '@/mocks/slides'\nimport { theme } from '@/mocks/theme'\nimport { layouts } from '@/mocks/layout'\n\ninterface RemoveElementPropData {\n id: string\n propName: string | string[]\n}\n\ninterface UpdateElementData {\n id: string | string[]\n props: Partial\n slideId?: string\n}\n\ninterface FormatedAnimation {\n animations: PPTAnimation[]\n autoNext: boolean\n}\n\nexport interface SlidesState {\n title: string\n theme: SlideTheme\n slides: Slide[]\n slideIndex: number\n viewportRatio: number\n}\n\nexport const useSlidesStore = defineStore('slides', {\n state: (): SlidesState => ({\n title: '未命名演示文稿', // 幻灯片标题\n theme: theme, // 主题样式\n slides: slides, // 幻灯片页面数据\n slideIndex: 0, // 当前页面索引\n viewportRatio: 0.5625, // 可视区域比例,默认16:9\n }),\n\n getters: {\n currentSlide(state) {\n return state.slides[state.slideIndex]\n },\n \n currentSlideAnimations(state) {\n const currentSlide = state.slides[state.slideIndex]\n if (!currentSlide?.animations) return []\n\n const els = currentSlide.elements\n const elIds = els.map(el => el.id)\n return currentSlide.animations.filter(animation => elIds.includes(animation.elId))\n },\n\n // 格式化的当前页动画\n // 将触发条件为“与上一动画同时”的项目向上合并到序列中的同一位置\n // 为触发条件为“上一动画之后”项目的上一项添加自动向下执行标记\n formatedAnimations(state) {\n const currentSlide = state.slides[state.slideIndex]\n if (!currentSlide?.animations) return []\n\n const els = currentSlide.elements\n const elIds = els.map(el => el.id)\n const animations = currentSlide.animations.filter(animation => elIds.includes(animation.elId))\n\n const formatedAnimations: FormatedAnimation[] = []\n for (const animation of animations) {\n if (animation.trigger === 'click' || !formatedAnimations.length) {\n formatedAnimations.push({ animations: [animation], autoNext: false })\n }\n else if (animation.trigger === 'meantime') {\n const last = formatedAnimations[formatedAnimations.length - 1]\n last.animations = last.animations.filter(item => item.elId !== animation.elId)\n last.animations.push(animation)\n formatedAnimations[formatedAnimations.length - 1] = last\n }\n else if (animation.trigger === 'auto') {\n const last = formatedAnimations[formatedAnimations.length - 1]\n last.autoNext = true\n formatedAnimations[formatedAnimations.length - 1] = last\n formatedAnimations.push({ animations: [animation], autoNext: false })\n }\n }\n return formatedAnimations\n },\n \n layouts(state) {\n const {\n themeColor,\n fontColor,\n fontName,\n backgroundColor,\n } = state.theme\n \n const subColor = tinycolor(fontColor).isDark() ? 'rgba(230, 230, 230, 0.5)' : 'rgba(180, 180, 180, 0.5)'\n \n const layoutsString = JSON.stringify(layouts)\n .replaceAll('{{themeColor}}', themeColor)\n .replaceAll('{{fontColor}}', fontColor)\n .replaceAll('{{fontName}}', fontName)\n .replaceAll('{{backgroundColor}}', backgroundColor)\n .replaceAll('{{subColor}}', subColor)\n \n return JSON.parse(layoutsString)\n },\n },\n\n actions: {\n setTitle(title: string) {\n if (!title) this.title = '未命名演示文稿'\n else this.title = title\n },\n\n setTheme(themeProps: Partial) {\n this.theme = { ...this.theme, ...themeProps }\n },\n \n setViewportRatio(viewportRatio: number) {\n this.viewportRatio = viewportRatio\n },\n \n setSlides(slides: Slide[]) {\n this.slides = slides\n },\n \n addSlide(slide: Slide | Slide[]) {\n const slides = Array.isArray(slide) ? slide : [slide]\n const addIndex = this.slideIndex + 1\n this.slides.splice(addIndex, 0, ...slides)\n this.slideIndex = addIndex\n },\n \n updateSlide(props: Partial) {\n const slideIndex = this.slideIndex\n this.slides[slideIndex] = { ...this.slides[slideIndex], ...props }\n },\n \n deleteSlide(slideId: string | string[]) {\n const slidesId = Array.isArray(slideId) ? slideId : [slideId]\n \n const deleteSlidesIndex = []\n for (let i = 0; i < slidesId.length; i++) {\n const index = this.slides.findIndex(item => item.id === slidesId[i])\n deleteSlidesIndex.push(index)\n }\n let newIndex = Math.min(...deleteSlidesIndex)\n \n const maxIndex = this.slides.length - slidesId.length - 1\n if (newIndex > maxIndex) newIndex = maxIndex\n \n this.slideIndex = newIndex\n this.slides = this.slides.filter(item => !slidesId.includes(item.id))\n },\n \n updateSlideIndex(index: number) {\n this.slideIndex = index\n },\n \n addElement(element: PPTElement | PPTElement[]) {\n const elements = Array.isArray(element) ? element : [element]\n const currentSlideEls = this.slides[this.slideIndex].elements\n const newEls = [...currentSlideEls, ...elements]\n this.slides[this.slideIndex].elements = newEls\n },\n\n deleteElement(elementId: string | string[]) {\n const elementIdList = Array.isArray(elementId) ? elementId : [elementId]\n const currentSlideEls = this.slides[this.slideIndex].elements\n const newEls = currentSlideEls.filter(item => !elementIdList.includes(item.id))\n this.slides[this.slideIndex].elements = newEls\n },\n \n updateElement(data: UpdateElementData) {\n const { id, props, slideId } = data\n const elIdList = typeof id === 'string' ? [id] : id\n\n const slideIndex = slideId ? this.slides.findIndex(item => item.id === slideId) : this.slideIndex\n const slide = this.slides[slideIndex]\n const elements = slide.elements.map(el => {\n return elIdList.includes(el.id) ? { ...el, ...props } : el\n })\n this.slides[slideIndex].elements = (elements as PPTElement[])\n },\n \n removeElementProps(data: RemoveElementPropData) {\n const { id, propName } = data\n const propsNames = typeof propName === 'string' ? [propName] : propName\n \n const slideIndex = this.slideIndex\n const slide = this.slides[slideIndex]\n const elements = slide.elements.map(el => {\n return el.id === id ? omit(el, propsNames) : el\n })\n this.slides[slideIndex].elements = (elements as PPTElement[])\n },\n },\n})","import { customAlphabet } from 'nanoid'\nimport { defineStore } from 'pinia'\nimport { ToolbarStates } from '@/types/toolbar'\nimport type { CreatingElement, ShapeFormatPainter, TextFormatPainter } from '@/types/edit'\nimport type { DialogForExportTypes } from '@/types/export'\nimport { type TextAttrs, defaultRichTextAttrs } from '@/utils/prosemirror/utils'\nimport { SYS_FONTS } from '@/configs/font'\nimport { isSupportFont } from '@/utils/font'\n\nimport { useSlidesStore } from './slides'\n\nexport interface MainState {\n activeElementIdList: string[]\n handleElementId: string\n activeGroupElementId: string\n hiddenElementIdList: string[]\n canvasPercentage: number\n canvasScale: number\n canvasDragged: boolean\n thumbnailsFocus: boolean\n editorAreaFocus: boolean\n disableHotkeys: boolean\n gridLineSize: number\n showRuler: boolean\n creatingElement: CreatingElement | null\n creatingCustomShape: boolean\n availableFonts: typeof SYS_FONTS\n toolbarState: ToolbarStates\n clipingImageElementId: string\n isScaling: boolean\n richTextAttrs: TextAttrs\n selectedTableCells: string[]\n selectedSlidesIndex: number[]\n dialogForExport: DialogForExportTypes\n databaseId: string\n textFormatPainter: TextFormatPainter | null\n shapeFormatPainter: ShapeFormatPainter | null\n showSelectPanel: boolean\n showSearchPanel: boolean\n}\n\nconst nanoid = customAlphabet('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')\nexport const databaseId = nanoid(10)\n\nexport const useMainStore = defineStore('main', {\n state: (): MainState => ({\n activeElementIdList: [], // 被选中的元素ID集合,包含 handleElementId\n handleElementId: '', // 正在操作的元素ID\n activeGroupElementId: '', // 组合元素成员中,被选中可独立操作的元素ID\n hiddenElementIdList: [], // 被隐藏的元素ID集合\n canvasPercentage: 90, // 画布可视区域百分比\n canvasScale: 1, // 画布缩放比例(基于宽度1000px)\n canvasDragged: false, // 画布被拖拽移动\n thumbnailsFocus: false, // 左侧导航缩略图区域聚焦\n editorAreaFocus: false, // 编辑区域聚焦\n disableHotkeys: false, // 禁用快捷键\n gridLineSize: 0, // 网格线尺寸(0表示不显示网格线)\n showRuler: false, // 显示标尺\n creatingElement: null, // 正在插入的元素信息,需要通过绘制插入的元素(文字、形状、线条)\n creatingCustomShape: false, // 正在绘制任意多边形\n availableFonts: SYS_FONTS, // 当前环境可用字体\n toolbarState: ToolbarStates.SLIDE_DESIGN, // 右侧工具栏状态\n clipingImageElementId: '', // 当前正在裁剪的图片ID \n richTextAttrs: defaultRichTextAttrs, // 富文本状态\n selectedTableCells: [], // 选中的表格单元格\n isScaling: false, // 正在进行元素缩放\n selectedSlidesIndex: [], // 当前被选中的页面索引集合\n dialogForExport: '', // 导出面板\n databaseId, // 标识当前应用的indexedDB数据库ID\n textFormatPainter: null, // 文字格式刷\n shapeFormatPainter: null, // 形状格式刷\n showSelectPanel: false, // 打开选择面板\n showSearchPanel: false, // 打开查找替换面板\n }),\n\n getters: {\n activeElementList(state) {\n const slidesStore = useSlidesStore()\n const currentSlide = slidesStore.currentSlide\n if (!currentSlide || !currentSlide.elements) return []\n return currentSlide.elements.filter(element => state.activeElementIdList.includes(element.id))\n },\n \n handleElement(state) {\n const slidesStore = useSlidesStore()\n const currentSlide = slidesStore.currentSlide\n if (!currentSlide || !currentSlide.elements) return null\n return currentSlide.elements.find(element => state.handleElementId === element.id) || null\n },\n },\n\n actions: {\n setActiveElementIdList(activeElementIdList: string[]) {\n if (activeElementIdList.length === 1) this.handleElementId = activeElementIdList[0]\n else this.handleElementId = ''\n \n this.activeElementIdList = activeElementIdList\n },\n \n setHandleElementId(handleElementId: string) {\n this.handleElementId = handleElementId\n },\n \n setActiveGroupElementId(activeGroupElementId: string) {\n this.activeGroupElementId = activeGroupElementId\n },\n \n setHiddenElementIdList(hiddenElementIdList: string[]) {\n this.hiddenElementIdList = hiddenElementIdList\n },\n \n setCanvasPercentage(percentage: number) {\n this.canvasPercentage = percentage\n },\n \n setCanvasScale(scale: number) {\n this.canvasScale = scale\n },\n \n setCanvasDragged(isDragged: boolean) {\n this.canvasDragged = isDragged\n },\n \n setThumbnailsFocus(isFocus: boolean) {\n this.thumbnailsFocus = isFocus\n },\n \n setEditorareaFocus(isFocus: boolean) {\n this.editorAreaFocus = isFocus\n },\n \n setDisableHotkeysState(disable: boolean) {\n this.disableHotkeys = disable\n },\n \n setGridLineSize(size: number) {\n this.gridLineSize = size\n },\n \n setRulerState(show: boolean) {\n this.showRuler = show\n },\n \n setCreatingElement(element: CreatingElement | null) {\n this.creatingElement = element\n },\n \n setCreatingCustomShapeState(state: boolean) {\n this.creatingCustomShape = state\n },\n \n setAvailableFonts() {\n this.availableFonts = SYS_FONTS.filter(font => isSupportFont(font.value))\n },\n \n setToolbarState(toolbarState: ToolbarStates) {\n this.toolbarState = toolbarState\n },\n \n setClipingImageElementId(elId: string) {\n this.clipingImageElementId = elId\n },\n \n setRichtextAttrs(attrs: TextAttrs) {\n this.richTextAttrs = attrs\n },\n \n setSelectedTableCells(cells: string[]) {\n this.selectedTableCells = cells\n },\n \n setScalingState(isScaling: boolean) {\n this.isScaling = isScaling\n },\n \n updateSelectedSlidesIndex(selectedSlidesIndex: number[]) {\n this.selectedSlidesIndex = selectedSlidesIndex\n },\n\n setDialogForExport(type: DialogForExportTypes) {\n this.dialogForExport = type\n },\n\n setTextFormatPainter(textFormatPainter: TextFormatPainter | null) {\n this.textFormatPainter = textFormatPainter\n },\n\n setShapeFormatPainter(shapeFormatPainter: ShapeFormatPainter | null) {\n this.shapeFormatPainter = shapeFormatPainter\n },\n\n setSelectPanelState(show: boolean) {\n this.showSelectPanel = show\n },\n\n setSearchPanelState(show: boolean) {\n this.showSearchPanel = show\n },\n },\n})","export const LOCALSTORAGE_KEY_DISCARDED_DB = 'PPTIST_DISCARDED_DB'","import Dexie from 'dexie'\nimport { databaseId } from '@/store/main'\nimport type { Slide } from '@/types/slides'\nimport { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage'\n\nexport interface writingBoardImg {\n id: string\n dataURL: string\n}\n\nexport interface Snapshot {\n index: number\n slides: Slide[]\n}\n\nconst databaseNamePrefix = 'PPTist'\n\n// 删除失效/过期的数据库\n// 应用关闭时(关闭或刷新浏览器),会将其数据库ID记录在 localStorage 中,表示该ID指向的数据库已失效\n// 当应用初始化时,检查当前所有数据库,将被记录失效的数据库删除\n// 另外,距离初始化时间超过12小时的数据库也将被删除(这是为了防止出现因意外未被正确删除的库)\nexport const deleteDiscardedDB = async () => {\n const now = new Date().getTime()\n\n const localStorageDiscardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n const localStorageDiscardedDBList: string[] = localStorageDiscardedDB ? JSON.parse(localStorageDiscardedDB) : []\n\n const databaseNames = await Dexie.getDatabaseNames()\n const discardedDBNames = databaseNames.filter(name => {\n if (name.indexOf(databaseNamePrefix) === -1) return false\n \n const [prefix, id, time] = name.split('_')\n if (prefix !== databaseNamePrefix || !id || !time) return true\n if (localStorageDiscardedDBList.includes(id)) return true\n if (now - (+time) >= 1000 * 60 * 60 * 12) return true\n\n return false\n })\n\n for (const name of discardedDBNames) Dexie.delete(name)\n localStorage.removeItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n}\n\nclass PPTistDB extends Dexie {\n public snapshots: Dexie.Table\n public writingBoardImgs: Dexie.Table\n\n public constructor() {\n super(`${databaseNamePrefix}_${databaseId}_${new Date().getTime()}`)\n this.version(1).stores({\n snapshots: '++id',\n writingBoardImgs: '++id',\n })\n this.snapshots = this.table('snapshots')\n this.writingBoardImgs = this.table('writingBoardImgs')\n }\n}\n\nexport const db = new PPTistDB()","import { defineStore } from 'pinia'\nimport type { IndexableTypeArray } from 'dexie'\nimport { db, type Snapshot } from '@/utils/database'\n\nimport { useSlidesStore } from './slides'\nimport { useMainStore } from './main'\n\nexport interface ScreenState {\n snapshotCursor: number\n snapshotLength: number\n}\n\nexport const useSnapshotStore = defineStore('snapshot', {\n state: (): ScreenState => ({\n snapshotCursor: -1, // 历史快照指针\n snapshotLength: 0, // 历史快照长度\n }),\n\n getters: {\n canUndo(state) {\n return state.snapshotCursor > 0\n },\n canRedo(state) {\n return state.snapshotCursor < state.snapshotLength - 1\n },\n },\n\n actions: {\n setSnapshotCursor(cursor: number) {\n this.snapshotCursor = cursor\n },\n setSnapshotLength(length: number) {\n this.snapshotLength = length\n },\n\n async initSnapshotDatabase() {\n const slidesStore = useSlidesStore()\n \n const newFirstSnapshot = {\n index: slidesStore.slideIndex,\n slides: slidesStore.slides,\n }\n await db.snapshots.add(newFirstSnapshot)\n this.setSnapshotCursor(0)\n this.setSnapshotLength(1)\n },\n \n async addSnapshot() {\n const slidesStore = useSlidesStore()\n\n // 获取当前indexeddb中全部快照的ID\n const allKeys = await db.snapshots.orderBy('id').keys()\n \n let needDeleteKeys: IndexableTypeArray = []\n \n // 记录需要删除的快照ID\n // 若当前快照指针不处在最后一位,那么再添加快照时,应该将当前指针位置后面的快照全部删除,对应的实际情况是:\n // 用户撤回多次后,再进行操作(添加快照),此时原先被撤销的快照都应该被删除\n if (this.snapshotCursor >= 0 && this.snapshotCursor < allKeys.length - 1) {\n needDeleteKeys = allKeys.slice(this.snapshotCursor + 1)\n }\n \n // 添加新快照\n const snapshot = {\n index: slidesStore.slideIndex,\n slides: slidesStore.slides,\n }\n await db.snapshots.add(snapshot)\n \n // 计算当前快照长度,用于设置快照指针的位置(此时指针应该处在最后一位,即:快照长度 - 1)\n let snapshotLength = allKeys.length - needDeleteKeys.length + 1\n \n // 快照数量超过长度限制时,应该将头部多余的快照删除\n const snapshotLengthLimit = 20\n if (snapshotLength > snapshotLengthLimit) {\n needDeleteKeys.push(allKeys[0])\n snapshotLength--\n }\n \n // 快照数大于1时,需要保证撤回操作后维持页面焦点不变:也就是将倒数第二个快照对应的索引设置为当前页的索引\n // https://github.com/pipipi-pikachu/PPTist/issues/27\n if (snapshotLength >= 2) {\n db.snapshots.update(allKeys[snapshotLength - 2] as number, { index: slidesStore.slideIndex })\n }\n \n await db.snapshots.bulkDelete(needDeleteKeys)\n \n this.setSnapshotCursor(snapshotLength - 1)\n this.setSnapshotLength(snapshotLength)\n },\n \n async unDo() {\n if (this.snapshotCursor <= 0) return\n\n const slidesStore = useSlidesStore()\n const mainStore = useMainStore()\n \n const snapshotCursor = this.snapshotCursor - 1\n const snapshots: Snapshot[] = await db.snapshots.orderBy('id').toArray()\n const snapshot = snapshots[snapshotCursor]\n const { index, slides } = snapshot\n \n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\n \n slidesStore.setSlides(slides)\n slidesStore.updateSlideIndex(slideIndex)\n this.setSnapshotCursor(snapshotCursor)\n mainStore.setActiveElementIdList([])\n },\n \n async reDo() {\n if (this.snapshotCursor >= this.snapshotLength - 1) return\n\n const slidesStore = useSlidesStore()\n const mainStore = useMainStore()\n \n const snapshotCursor = this.snapshotCursor + 1\n const snapshots: Snapshot[] = await db.snapshots.orderBy('id').toArray()\n const snapshot = snapshots[snapshotCursor]\n const { index, slides } = snapshot\n \n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\n \n slidesStore.setSlides(slides)\n slidesStore.updateSlideIndex(slideIndex)\n this.setSnapshotCursor(snapshotCursor)\n mainStore.setActiveElementIdList([])\n },\n },\n})","import { defineStore } from 'pinia'\n\nexport interface KeyboardState {\n ctrlKeyState: boolean\n shiftKeyState: boolean\n spaceKeyState: boolean\n}\n\nexport const useKeyboardStore = defineStore('keyboard', {\n state: (): KeyboardState => ({\n ctrlKeyState: false, // ctrl键按下状态\n shiftKeyState: false, // shift键按下状态\n spaceKeyState: false, // space键按下状态\n }),\n\n getters: {\n ctrlOrShiftKeyActive(state) {\n return state.ctrlKeyState || state.shiftKeyState\n },\n },\n\n actions: {\n setCtrlKeyState(active: boolean) {\n this.ctrlKeyState = active\n },\n setShiftKeyState(active: boolean) {\n this.shiftKeyState = active\n },\n setSpaceKeyState(active: boolean) {\n this.spaceKeyState = active\n },\n },\n})","import { defineStore } from 'pinia'\n\nexport interface ScreenState {\n screening: boolean\n}\n\nexport const useScreenStore = defineStore('screen', {\n state: (): ScreenState => ({\n screening: false, // 是否进入放映状态\n }),\n\n actions: {\n setScreening(screening: boolean) {\n this.screening = screening\n },\n },\n})","import { padStart } from 'lodash'\n\n/**\n * 补足数字位数\n * @param digit 数字\n * @param len 位数\n */\nexport const fillDigit = (digit: number, len: number) => {\n return padStart('' + digit, len, '0')\n}\n\n/**\n * 判断设备\n */\nexport const isPC = () => {\n return !navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i)\n}","import type { ShapePoolItem } from '@/configs/shapes'\r\nimport type { LinePoolItem } from '@/configs/lines'\r\nimport type { ImageClipDataRange, PPTElementOutline, PPTElementShadow, ShapeGradient } from './slides'\r\n\r\nexport enum ElementOrderCommands {\r\n UP = 'up',\r\n DOWN = 'down',\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n}\r\n\r\nexport enum ElementAlignCommands {\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n VERTICAL = 'vertical',\r\n HORIZONTAL = 'horizontal',\r\n CENTER = 'center',\r\n}\r\n\r\nexport const enum OperateBorderLines {\r\n T = 'top',\r\n B = 'bottom',\r\n L = 'left',\r\n R = 'right',\r\n}\r\n\r\nexport const enum OperateResizeHandlers {\r\n LEFT_TOP = 'left-top',\r\n TOP = 'top',\r\n RIGHT_TOP = 'right-top',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n LEFT_BOTTOM = 'left-bottom',\r\n BOTTOM = 'bottom',\r\n RIGHT_BOTTOM = 'right-bottom',\r\n}\r\n\r\nexport const enum OperateLineHandlers {\r\n START = 'start',\r\n END = 'end',\r\n C = 'ctrl',\r\n C1 = 'ctrl1',\r\n C2 = 'ctrl2',\r\n}\r\n\r\nexport interface AlignmentLineAxis {\r\n x: number\r\n y: number\r\n}\r\n\r\nexport interface AlignmentLineProps {\r\n type: 'vertical' | 'horizontal'\r\n axis: AlignmentLineAxis\r\n length: number\r\n}\r\n\r\nexport interface MultiSelectRange {\r\n minX: number\r\n maxX: number\r\n minY: number\r\n maxY: number\r\n}\r\n\r\nexport interface ImageClipedEmitData {\r\n range: ImageClipDataRange\r\n position: {\r\n left: number\r\n top: number\r\n width: number\r\n height: number\r\n }\r\n}\r\n\r\nexport interface CreateElementSelectionData {\r\n start: [number, number]\r\n end: [number, number]\r\n}\r\n\r\nexport interface CreateCustomShapeData {\r\n start: [number, number]\r\n end: [number, number]\r\n path: string\r\n viewBox: [number, number]\r\n fill?: string\r\n outline?: PPTElementOutline\r\n}\r\n\r\nexport interface CreatingTextElement {\r\n type: 'text'\r\n vertical?: boolean\r\n}\r\nexport interface CreatingShapeElement {\r\n type: 'shape'\r\n data: ShapePoolItem\r\n}\r\nexport interface CreatingLineElement {\r\n type: 'line'\r\n data: LinePoolItem\r\n}\r\nexport type CreatingElement = CreatingTextElement | CreatingShapeElement | CreatingLineElement\r\n\r\nexport type TextFormatPainterKeys = 'bold' | 'em' | 'underline' | 'strikethrough' | 'color' | 'backcolor' | 'fontsize' | 'fontname' | 'align'\r\n\r\nexport interface TextFormatPainter {\r\n keep: boolean\r\n bold?: boolean\r\n em?: boolean\r\n underline?: boolean\r\n strikethrough?: boolean\r\n color?: string\r\n backcolor?: string\r\n fontsize?: string\r\n fontname?: string\r\n align?: 'left' | 'right' | 'center'\r\n}\r\n\r\nexport interface ShapeFormatPainter {\r\n keep: boolean\r\n fill?: string\r\n gradient?: ShapeGradient\r\n outline?: PPTElementOutline\r\n opacity?: number\r\n shadow?: PPTElementShadow\r\n}","export const enum KEYS {\n C = 'C',\n X = 'X',\n Z = 'Z',\n Y = 'Y',\n A = 'A',\n G = 'G',\n L = 'L',\n F = 'F',\n D = 'D',\n B = 'B',\n P = 'P',\n MINUS = '-',\n EQUAL = '=',\n DIGIT_0 = '0',\n DELETE = 'DELETE',\n UP = 'ARROWUP',\n DOWN = 'ARROWDOWN',\n LEFT = 'ARROWLEFT',\n RIGHT = 'ARROWRIGHT',\n ENTER = 'ENTER',\n SPACE = ' ',\n TAB = 'TAB',\n BACKSPACE = 'BACKSPACE',\n ESC = 'ESCAPE',\n PAGEUP = 'PAGEUP',\n PAGEDOWN = 'PAGEDOWN',\n F5 = 'F5',\n}\n\nexport const HOTKEY_DOC = [\n {\n type: '通用',\n children: [\n { label: '剪切', value: 'Ctrl + X' },\n { label: '复制', value: 'Ctrl + C' },\n { label: '粘贴', value: 'Ctrl + V' },\n { label: '粘贴为纯文本', value: 'Ctrl + Shift + V' },\n { label: '快速复制粘贴', value: 'Ctrl + D' },\n { label: '全选', value: 'Ctrl + A' },\n { label: '撤销', value: 'Ctrl + Z' },\n { label: '恢复', value: 'Ctrl + Y' },\n { label: '删除', value: 'Delete / Backspace' },\n { label: '多选', value: '按住 Ctrl 或 Shift' },\n { label: '打开搜索替换', value: 'Ctrl + F' },\n { label: '打印', value: 'Ctrl + P' },\n { label: '关闭弹窗', value: 'ESC' },\n ],\n },\n {\n type: '幻灯片放映',\n children: [\n { label: '从头开始放映幻灯片', value: 'F5' },\n { label: '从当前开始放映幻灯片', value: 'Shift + F5' },\n { label: '切换上一页', value: '↑ / ← / PgUp' },\n { label: '切换下一页', value: '↓ / → / PgDown' },\n { label: '切换下一页', value: 'Enter / Space' },\n { label: '退出放映', value: 'ESC' },\n ],\n },\n {\n type: '幻灯片编辑',\n children: [\n { label: '新建幻灯片', value: 'Enter' },\n { label: '移动画布', value: 'Space + 鼠标拖拽' },\n { label: '缩放画布', value: 'Ctrl + 鼠标滚轮' },\n { label: '放大画布', value: 'Ctrl + =' },\n { label: '缩小画布', value: 'Ctrl + -' },\n { label: '使画布适应当前屏幕', value: 'Ctrl + 0' },\n { label: '上一页(未选中元素)', value: '↑ / ←' },\n { label: '下一页(未选中元素)', value: '↓ / →' },\n { label: '上一页', value: '鼠标上滚 / PgUp' },\n { label: '下一页', value: '鼠标下滚 / PgDown' },\n ],\n },\n {\n type: '元素操作',\n children: [\n { label: '移动', value: '↑ / ← / ↓ / →' },\n { label: '锁定', value: 'Ctrl + L' },\n { label: '组合', value: 'Ctrl + G' },\n { label: '取消组合', value: 'Ctrl + Shift + G' },\n { label: '置顶层', value: 'Alt + F' },\n { label: '置底层', value: 'Alt + B' },\n { label: '锁定宽高比例', value: '按住 Ctrl 或 Shift' },\n { label: '创建水平 / 垂直线条', value: '按住 Ctrl 或 Shift' },\n { label: '切换焦点元素', value: 'Tab' },\n { label: '确认图片裁剪', value: 'Enter' },\n { label: '完成自定义形状绘制', value: 'Enter' },\n ],\n },\n {\n type: '表格编辑',\n children: [\n { label: '聚焦到下一个单元格', value: 'Tab' },\n { label: '在上方插入一行', value: 'Ctrl + ↑' },\n { label: '在下方插入一行', value: 'Ctrl + ↓' },\n { label: '在左侧插入一列', value: 'Ctrl + ←' },\n { label: '在右侧插入一列', value: 'Ctrl + →' },\n ],\n },\n {\n type: '图表数据编辑',\n children: [\n { label: '聚焦到下一行', value: 'Enter' },\n ],\n },\n {\n type: '文本编辑',\n children: [\n { label: '加粗', value: 'Ctrl + B' },\n { label: '斜体', value: 'Ctrl + I' },\n { label: '下划线', value: 'Ctrl + U' },\n { label: '行内代码', value: 'Ctrl + E' },\n { label: '上角标', value: 'Ctrl + ;' },\n { label: '下角标', value: `Ctrl + '` },\n { label: '选中段落', value: `ESC` },\n ],\n },\n]","import CryptoJS from 'crypto-js'\n\nconst CRYPTO_KEY = 'pptist'\n\n/**\n * 加密\n * @param msg 待加密字符串\n */\nexport const encrypt = (msg: string) => {\n return CryptoJS.AES.encrypt(msg, CRYPTO_KEY).toString()\n}\n\n/**\n * 解密\n * @param ciphertext 待解密字符串\n */\nexport const decrypt = (ciphertext: string) => {\n const bytes = CryptoJS.AES.decrypt(ciphertext, CRYPTO_KEY)\n return bytes.toString(CryptoJS.enc.Utf8)\n}","import Clipboard from 'clipboard'\nimport { decrypt } from '@/utils/crypto'\n\n/**\n * 复制文本到剪贴板\n * @param text 文本内容\n */\nexport const copyText = (text: string) => {\n return new Promise((resolve, reject) => {\n const fakeElement = document.createElement('button')\n const clipboard = new Clipboard(fakeElement, {\n text: () => text,\n action: () => 'copy',\n container: document.body,\n })\n clipboard.on('success', e => {\n clipboard.destroy()\n resolve(e)\n })\n clipboard.on('error', e => {\n clipboard.destroy()\n reject(e)\n })\n document.body.appendChild(fakeElement)\n fakeElement.click()\n document.body.removeChild(fakeElement)\n })\n}\n\n// 读取剪贴板\nexport const readClipboard = (): Promise => {\n return new Promise((resolve, reject) => {\n if (navigator.clipboard?.readText) {\n navigator.clipboard.readText().then(text => {\n if (!text) reject('剪贴板为空或者不包含文本')\n return resolve(text)\n })\n }\n else reject('浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V')\n })\n}\n\n// 解析加密后的剪贴板内容\nexport const pasteCustomClipboardString = (text: string) => {\n let clipboardData\n try {\n clipboardData = JSON.parse(decrypt(text))\n }\n catch {\n clipboardData = text\n }\n\n return clipboardData\n}\n\n// 尝试解析剪贴板内容是否为Excel表格(或类似的)数据格式\nexport const pasteExcelClipboardString = (text: string): string[][] | null => {\n const lines: string[] = text.split('\\r\\n')\n\n if (lines[lines.length - 1] === '') lines.pop()\n\n let colCount = -1\n const data: string[][] = []\n for (const index in lines) {\n data[index] = lines[index].split('\\t')\n\n if (data[index].length === 1) return null\n if (colCount === -1) colCount = data[index].length\n else if (colCount !== data[index].length) return null\n }\n return data\n}","import tinycolor from 'tinycolor2'\r\nimport { nanoid } from 'nanoid'\r\nimport type { PPTElement, PPTLineElement, Slide } from '@/types/slides'\r\n\r\ninterface RotatedElementData {\r\n left: number\r\n top: number\r\n width: number\r\n height: number\r\n rotate: number\r\n}\r\n\r\ninterface IdMap {\r\n [id: string]: string\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的矩形范围旋转后的新位置范围\r\n * @param element 元素的位置大小和旋转角度信息\r\n */\r\nexport const getRectRotatedRange = (element: RotatedElementData) => {\r\n const { left, top, width, height, rotate = 0 } = element\r\n\r\n const radius = Math.sqrt( Math.pow(width, 2) + Math.pow(height, 2) ) / 2\r\n const auxiliaryAngle = Math.atan(height / width) * 180 / Math.PI\r\n\r\n const tlbraRadian = (180 - rotate - auxiliaryAngle) * Math.PI / 180\r\n const trblaRadian = (auxiliaryAngle - rotate) * Math.PI / 180\r\n\r\n const middleLeft = left + width / 2\r\n const middleTop = top + height / 2\r\n\r\n const xAxis = [\r\n middleLeft + radius * Math.cos(tlbraRadian),\r\n middleLeft + radius * Math.cos(trblaRadian),\r\n middleLeft - radius * Math.cos(tlbraRadian),\r\n middleLeft - radius * Math.cos(trblaRadian),\r\n ]\r\n const yAxis = [\r\n middleTop - radius * Math.sin(tlbraRadian),\r\n middleTop - radius * Math.sin(trblaRadian),\r\n middleTop + radius * Math.sin(tlbraRadian),\r\n middleTop + radius * Math.sin(trblaRadian),\r\n ]\r\n\r\n return {\r\n xRange: [Math.min(...xAxis), Math.max(...xAxis)],\r\n yRange: [Math.min(...yAxis), Math.max(...yAxis)],\r\n }\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的矩形范围旋转后的新位置与旋转之前位置的偏离距离\r\n * @param element 元素的位置大小和旋转角度信息\r\n */\r\nexport const getRectRotatedOffset = (element: RotatedElementData) => {\r\n const { xRange: originXRange, yRange: originYRange } = getRectRotatedRange({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: 0,\r\n })\r\n const { xRange: rotatedXRange, yRange: rotatedYRange } = getRectRotatedRange({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n return {\r\n offsetX: rotatedXRange[0] - originXRange[0],\r\n offsetY: rotatedYRange[0] - originYRange[0],\r\n }\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的位置范围\r\n * @param element 元素信息\r\n */\r\nexport const getElementRange = (element: PPTElement) => {\r\n let minX, maxX, minY, maxY\r\n\r\n if (element.type === 'line') {\r\n minX = element.left\r\n maxX = element.left + Math.max(element.start[0], element.end[0])\r\n minY = element.top\r\n maxY = element.top + Math.max(element.start[1], element.end[1])\r\n }\r\n else if ('rotate' in element && element.rotate) {\r\n const { left, top, width, height, rotate } = element\r\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\r\n minX = xRange[0]\r\n maxX = xRange[1]\r\n minY = yRange[0]\r\n maxY = yRange[1]\r\n }\r\n else {\r\n minX = element.left\r\n maxX = element.left + element.width\r\n minY = element.top\r\n maxY = element.top + element.height\r\n }\r\n return { minX, maxX, minY, maxY }\r\n}\r\n\r\n/**\r\n * 计算一组元素在画布中的位置范围\r\n * @param elementList 一组元素信息\r\n */\r\nexport const getElementListRange = (elementList: PPTElement[]) => {\r\n const leftValues: number[] = []\r\n const topValues: number[] = []\r\n const rightValues: number[] = []\r\n const bottomValues: number[] = []\r\n\r\n elementList.forEach(element => {\r\n const { minX, maxX, minY, maxY } = getElementRange(element)\r\n leftValues.push(minX)\r\n topValues.push(minY)\r\n rightValues.push(maxX)\r\n bottomValues.push(maxY)\r\n })\r\n\r\n const minX = Math.min(...leftValues)\r\n const maxX = Math.max(...rightValues)\r\n const minY = Math.min(...topValues)\r\n const maxY = Math.max(...bottomValues)\r\n\r\n return { minX, maxX, minY, maxY }\r\n}\r\n\r\nexport interface AlignLine {\r\n value: number\r\n range: [number, number]\r\n}\r\n\r\n/**\r\n * 将一组对齐吸附线进行去重:同位置的的多条对齐吸附线仅留下一条,取该位置所有对齐吸附线的最大值和最小值为新的范围\r\n * @param lines 一组对齐吸附线信息\r\n */\r\nexport const uniqAlignLines = (lines: AlignLine[]) => {\r\n const uniqLines: AlignLine[] = []\r\n lines.forEach(line => {\r\n const index = uniqLines.findIndex(_line => _line.value === line.value)\r\n if (index === -1) uniqLines.push(line)\r\n else {\r\n const uniqLine = uniqLines[index]\r\n const rangeMin = Math.min(uniqLine.range[0], line.range[0])\r\n const rangeMax = Math.max(uniqLine.range[1], line.range[1])\r\n const range: [number, number] = [rangeMin, rangeMax]\r\n const _line = { value: line.value, range }\r\n uniqLines[index] = _line\r\n }\r\n })\r\n return uniqLines\r\n}\r\n\r\n/**\r\n * 以页面列表为基础,为每一个页面生成新的ID,并关联到旧ID形成一个字典\r\n * 主要用于页面元素时,维持数据中各处页面ID原有的关系\r\n * @param slides 页面列表\r\n */\r\nexport const createSlideIdMap = (slides: Slide[]) => {\r\n const slideIdMap: IdMap = {}\r\n for (const slide of slides) {\r\n slideIdMap[slide.id] = nanoid(10)\r\n }\r\n return slideIdMap\r\n}\r\n\r\n/**\r\n * 以元素列表为基础,为每一个元素生成新的ID,并关联到旧ID形成一个字典\r\n * 主要用于复制元素时,维持数据中各处元素ID原有的关系\r\n * 例如:原本两个组合的元素拥有相同的groupId,复制后依然会拥有另一个相同的groupId\r\n * @param elements 元素列表数据\r\n */\r\nexport const createElementIdMap = (elements: PPTElement[]) => {\r\n const groupIdMap: IdMap = {}\r\n const elIdMap: IdMap = {}\r\n for (const element of elements) {\r\n const groupId = element.groupId\r\n if (groupId && !groupIdMap[groupId]) {\r\n groupIdMap[groupId] = nanoid(10)\r\n }\r\n elIdMap[element.id] = nanoid(10)\r\n }\r\n return {\r\n groupIdMap,\r\n elIdMap,\r\n }\r\n}\r\n\r\n/**\r\n * 根据表格的主题色,获取对应用于配色的子颜色\r\n * @param themeColor 主题色\r\n */\r\nexport const getTableSubThemeColor = (themeColor: string) => {\r\n const rgba = tinycolor(themeColor)\r\n return [\r\n rgba.setAlpha(0.3).toRgbString(),\r\n rgba.setAlpha(0.1).toRgbString(),\r\n ]\r\n}\r\n\r\n/**\r\n * 获取线条元素路径字符串\r\n * @param element 线条元素\r\n */\r\nexport const getLineElementPath = (element: PPTLineElement) => {\r\n const start = element.start.join(',')\r\n const end = element.end.join(',')\r\n if (element.broken) {\r\n const mid = element.broken.join(',')\r\n return `M${start} L${mid} L${end}`\r\n }\r\n else if (element.curve) {\r\n const mid = element.curve.join(',')\r\n return `M${start} Q${mid} ${end}`\r\n }\r\n else if (element.cubic) {\r\n const [c1, c2] = element.cubic\r\n const p1 = c1.join(',')\r\n const p2 = c2.join(',')\r\n return `M${start} C${p1} ${p2} ${end}`\r\n }\r\n return `M${start} L${end}`\r\n}\r\n\r\n/**\r\n * 判断一个元素是否在可视范围内\r\n * @param element 元素\r\n * @param parent 父元素\r\n */\r\nexport const isElementInViewport = (element: HTMLElement, parent: HTMLElement): boolean => {\r\n const elementRect = element.getBoundingClientRect()\r\n const parentRect = parent.getBoundingClientRect()\r\n\r\n return (\r\n elementRect.top >= parentRect.top &&\r\n elementRect.bottom <= parentRect.bottom\r\n )\r\n}","// https://iconpark.bytedance.com/official\n\nimport type { App } from 'vue'\nimport {\n PlayOne,\n FullScreenPlay,\n Lock,\n Unlock,\n Ppt,\n Format,\n Picture,\n FullScreen,\n List,\n OrderedList,\n FlipVertically,\n FlipHorizontally,\n FontSize,\n Code,\n TextBold,\n TextItalic,\n TextUnderline,\n Strikethrough,\n Edit,\n Quote,\n BackgroundColor,\n Group,\n Ungroup,\n Back,\n Next,\n Fullwidth,\n AlignTop,\n AlignLeft,\n AlignRight,\n AlignBottom,\n AlignVertically,\n AlignHorizontally,\n BringToFront,\n SendToBack,\n AlignTextLeft,\n AlignTextRight,\n AlignTextCenter,\n AlignTextBoth,\n RowHeight,\n Write,\n InsertTable,\n AddText,\n Fill,\n Tailoring,\n Effects,\n ColorFilter,\n Up,\n Down,\n Plus,\n Minus,\n Connection,\n BringToFrontOne,\n SentToBack,\n Github,\n ChartProportion,\n ChartHistogram,\n ChartHistogramOne,\n ChartLineArea,\n ChartRing,\n ChartScatter,\n ChartLine,\n ChartPie,\n Text,\n Rotate,\n LeftTwo,\n RightTwo,\n Platte,\n Close,\n CloseSmall,\n Undo,\n Transform,\n Click,\n Theme,\n ArrowCircleLeft,\n GraphicDesign,\n Logout,\n Erase,\n Clear,\n AlignTextTopOne,\n AlignTextBottomOne,\n AlignTextMiddleOne,\n Pause,\n VolumeMute,\n VolumeNotice,\n VolumeSmall,\n VideoTwo,\n Formula,\n LinkOne,\n FullScreenOne,\n OffScreenOne,\n Power,\n ListView,\n Magic,\n HighLight,\n Download,\n IndentLeft,\n IndentRight,\n VerticalSpacingBetweenItems,\n Copy,\n Delete,\n Square,\n Round,\n Needle,\n TextRotationNone,\n TextRotationDown,\n FormatBrush,\n PreviewOpen,\n PreviewClose,\n StopwatchStart,\n Search,\n Left,\n Right,\n MoveOne,\n HamburgerButton,\n Attention,\n CheckOne,\n CloseOne,\n Info,\n} from '@icon-park/vue-next'\n\nexport interface Icons {\n [key: string]: typeof PlayOne\n}\n\nexport const icons: Icons = {\n IconPlayOne: PlayOne,\n IconFullScreenPlay: FullScreenPlay,\n IconLock: Lock,\n IconUnlock: Unlock,\n IconPpt: Ppt,\n IconFormat: Format,\n IconPicture: Picture,\n IconFullScreen: FullScreen,\n IconList: List,\n IconOrderedList: OrderedList,\n IconFlipVertically: FlipVertically,\n IconFlipHorizontally: FlipHorizontally,\n IconFontSize: FontSize,\n IconCode: Code,\n IconTextBold: TextBold,\n IconTextItalic: TextItalic,\n IconTextUnderline: TextUnderline,\n IconStrikethrough: Strikethrough,\n IconEdit: Edit,\n IconQuote: Quote,\n IconBackgroundColor: BackgroundColor,\n IconGroup: Group,\n IconUngroup: Ungroup,\n IconBack: Back,\n IconNext: Next,\n IconFullwidth: Fullwidth,\n IconAlignTop: AlignTop,\n IconAlignLeft: AlignLeft,\n IconAlignRight: AlignRight,\n IconAlignBottom: AlignBottom,\n IconAlignVertically: AlignVertically,\n IconAlignHorizontally: AlignHorizontally,\n IconBringToFront: BringToFront,\n IconSendToBack: SendToBack,\n IconAlignTextLeft: AlignTextLeft,\n IconAlignTextRight: AlignTextRight,\n IconAlignTextCenter: AlignTextCenter,\n IconAlignTextBoth: AlignTextBoth,\n IconRowHeight: RowHeight,\n IconWrite: Write,\n IconInsertTable: InsertTable,\n IconAddText: AddText,\n IconFill: Fill,\n IconTailoring: Tailoring,\n IconEffects: Effects,\n IconColorFilter: ColorFilter,\n IconUp: Up,\n IconDown: Down,\n IconPlus: Plus,\n IconMinus: Minus,\n IconConnection: Connection,\n IconBringToFrontOne: BringToFrontOne,\n IconSentToBack: SentToBack,\n IconGithub: Github,\n IconChartProportion: ChartProportion,\n IconChartHistogram: ChartHistogram,\n IconChartHistogramOne: ChartHistogramOne,\n IconChartLineArea: ChartLineArea,\n IconChartRing: ChartRing,\n IconChartScatter: ChartScatter,\n IconChartLine: ChartLine,\n IconChartPie: ChartPie,\n IconText: Text,\n IconRotate: Rotate,\n IconLeftTwo: LeftTwo,\n IconRightTwo: RightTwo,\n IconPlatte: Platte,\n IconClose: Close,\n IconCloseSmall: CloseSmall,\n IconUndo: Undo,\n IconTransform: Transform,\n IconClick: Click,\n IconTheme: Theme,\n IconArrowCircleLeft: ArrowCircleLeft,\n IconGraphicDesign: GraphicDesign,\n IconLogout: Logout,\n IconErase: Erase,\n IconClear: Clear,\n IconAlignTextTopOne: AlignTextTopOne,\n IconAlignTextBottomOne: AlignTextBottomOne,\n IconAlignTextMiddleOne: AlignTextMiddleOne,\n IconPause: Pause,\n IconVolumeMute: VolumeMute,\n IconVolumeNotice: VolumeNotice,\n IconVolumeSmall: VolumeSmall,\n IconVideoTwo: VideoTwo,\n IconFormula: Formula,\n IconLinkOne: LinkOne,\n IconFullScreenOne: FullScreenOne,\n IconOffScreenOne: OffScreenOne,\n IconPower: Power,\n IconListView: ListView,\n IconMagic: Magic,\n IconHighLight: HighLight,\n IconDownload: Download,\n IconIndentLeft: IndentLeft,\n IconIndentRight: IndentRight,\n IconVerticalSpacingBetweenItems: VerticalSpacingBetweenItems,\n IconCopy: Copy,\n IconDelete: Delete,\n IconSquare: Square,\n IconRound: Round,\n IconNeedle: Needle,\n IconTextRotationNone: TextRotationNone,\n IconTextRotationDown: TextRotationDown,\n IconFormatBrush: FormatBrush,\n IconPreviewOpen: PreviewOpen,\n IconPreviewClose: PreviewClose,\n IconStopwatchStart: StopwatchStart,\n IconSearch: Search,\n IconLeft: Left,\n IconRight: Right,\n IconMoveOne: MoveOne,\n IconHamburgerButton: HamburgerButton,\n IconAttention: Attention,\n IconCheckOne: CheckOne,\n IconCloseOne: CloseOne,\n IconInfo: Info,\n}\n\nexport default {\n install(app: App) {\n for (const key of Object.keys(icons)) {\n app.component(key, icons[key])\n }\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createVNode as _createVNode, Transition as _Transition, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-03d14766\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"id\"]\nconst _hoisted_2 = { class: \"icons\" }\nconst _hoisted_3 = { class: \"content\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"title\"\n}\nconst _hoisted_5 = { class: \"description\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"control\"\n}\n\nimport { onMounted, ref, onBeforeMount } from 'vue'\nimport { icons } from '@/plugins/icon'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Message',\n props: {\n id: {},\n message: {},\n type: { default: 'success' },\n title: { default: '' },\n duration: { default: 3000 },\n closable: { type: Boolean, default: false }\n },\n emits: [\"close\", \"destroy\"],\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\nconst {\n IconAttention,\n IconCheckOne,\n IconCloseOne,\n IconInfo,\n IconCloseSmall,\n} = icons\n\nconst props = __props\n\nconst emit = __emit\n\nconst visible = ref(true)\nconst timer = ref(null)\n\nconst startTimer = () => {\n if (props.duration <= 0) return\n timer.value = setTimeout(close, props.duration)\n}\nconst clearTimer = () => {\n if (timer.value) clearTimeout(timer.value)\n}\n\nconst close = () => visible.value = false\n\nonBeforeMount(() => {\n clearTimer()\n})\nonMounted(() => {\n startTimer()\n})\n\n__expose({\n close,\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Transition, {\n name: \"message-fade\",\n appear: \"\",\n mode: \"in-out\",\n onBeforeLeave: _cache[3] || (_cache[3] = ($event: any) => (emit('close'))),\n onAfterLeave: _cache[4] || (_cache[4] = ($event: any) => (emit('destroy')))\n }, {\n default: _withCtx(() => [\n (visible.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"message\",\n id: _ctx.id\n }, [\n _createElementVNode(\"div\", {\n class: \"message-container\",\n onMouseenter: _cache[1] || (_cache[1] = ($event: any) => (clearTimer())),\n onMouseleave: _cache[2] || (_cache[2] = ($event: any) => (startTimer()))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.type === 'warning')\n ? (_openBlock(), _createBlock(_unref(IconAttention), {\n key: 0,\n theme: \"filled\",\n size: \"18\",\n fill: \"#faad14\"\n }))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'success')\n ? (_openBlock(), _createBlock(_unref(IconCheckOne), {\n key: 1,\n theme: \"filled\",\n size: \"18\",\n fill: \"#52c41a\"\n }))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'error')\n ? (_openBlock(), _createBlock(_unref(IconCloseOne), {\n key: 2,\n theme: \"filled\",\n size: \"18\",\n fill: \"#ff4d4f\"\n }))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'info')\n ? (_openBlock(), _createBlock(_unref(IconInfo), {\n key: 3,\n theme: \"filled\",\n size: \"18\",\n fill: \"#1677ff\"\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.title)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_ctx.title), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_ctx.message), 1)\n ]),\n (_ctx.closable)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createElementVNode(\"span\", {\n class: \"close-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (close()))\n }, [\n _createVNode(_unref(IconCloseSmall))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 32)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n}\n}\n\n})","\n\n\n\n","import script from \"./Message.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Message.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Message.vue?vue&type=style&index=0&id=03d14766&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-03d14766\"]])\n\nexport default __exports__","import { createVNode, render, type AppContext } from 'vue'\nimport MessageComponent from '@/components/Message.vue'\n\nexport interface MessageOptions {\n type?: 'info' | 'success' | 'warning' | 'error'\n title?: string\n message?: string\n duration?: number\n closable?: boolean\n ctx?: AppContext\n onClose?: () => void\n}\n\nexport type MessageTypeOptions = Omit\nexport interface MessageIntance {\n id: string\n close: () => void\n}\n\nexport type MessageFn = (message: string, options?: MessageTypeOptions) => MessageIntance\nexport interface Message {\n (options: MessageOptions): MessageIntance\n info: MessageFn\n success: MessageFn\n error: MessageFn\n warning: MessageFn\n closeAll: () => void\n _context?: AppContext | null\n}\n\nconst instances: MessageIntance[] = []\nlet wrap: HTMLDivElement | null = null\nlet seed = 0\nconst defaultOptions: MessageOptions = {\n duration: 3000,\n}\n\nconst message: Message = (options: MessageOptions) => {\n const id = 'message-' + seed++\n const props = {\n ...defaultOptions,\n ...options,\n id,\n }\n\n if (!wrap) {\n wrap = document.createElement('div')\n wrap.className = 'message-wrap'\n wrap.style.cssText = `\n width: 100%;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 6000;\n pointer-events: none;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: 15px;\n background-color: rgba(255, 255, 255, 0);\n transition: all 1s ease-in-out;\n align-items: center;\n `\n document.body.appendChild(wrap)\n }\n\n const vm = createVNode(MessageComponent, props, null)\n const div = document.createElement('div')\n\n vm.appContext = options.ctx || message._context || null\n vm.props!.onClose = options.onClose\n vm.props!.onDestroy = () => {\n if (wrap && wrap.childNodes.length <= 1) {\n wrap.remove()\n wrap = null\n }\n render(null, div)\n }\n\n render(vm, div)\n wrap.appendChild(div.firstElementChild!)\n\n const instance = {\n id,\n close: () => vm?.component?.exposed?.close(),\n }\n\n instances.push(instance)\n return instance\n}\n\nmessage.success = (msg: string, options?: MessageTypeOptions) => message({ ...options, type: 'success', message: msg })\nmessage.info = (msg: string, options?: MessageTypeOptions) => message({ ...options, type: 'info', message: msg })\nmessage.warning = (msg: string, options?: MessageTypeOptions) => message({ ...options, type: 'warning', message: msg })\nmessage.error = (msg: string, options?: MessageTypeOptions) => message({ ...options, type: 'error', message: msg })\n\nmessage.closeAll = function() {\n for (let i = instances.length - 1; i >= 0; i--) {\n instances[i].close()\n }\n}\n\nexport default message","/**\r\n * 将普通文本转为带段落信息的HTML字符串\r\n * @param text 文本\r\n */\r\nexport const parseText2Paragraphs = (text: string) => {\r\n const htmlText = text.replace(/[\\n\\r]+/g, '
')\r\n const paragraphs = htmlText.split('
')\r\n let string = ''\r\n for (const paragraph of paragraphs) {\r\n if (paragraph) string += `
${paragraph}
`\r\n }\r\n return string\r\n}","interface ImageSize {\n width: number\n height: number\n}\n\n/**\n * 获取图片的原始宽高\n * @param src 图片地址\n */\nexport const getImageSize = (src: string): Promise => {\n return new Promise(resolve => {\n const img = document.createElement('img')\n img.src = src\n img.style.opacity = '0'\n document.body.appendChild(img)\n\n img.onload = () => {\n const imgWidth = img.clientWidth\n const imgHeight = img.clientHeight\n \n img.onload = null\n img.onerror = null\n\n document.body.removeChild(img)\n\n resolve({ width: imgWidth, height: imgHeight })\n }\n\n img.onerror = () => {\n img.onload = null\n img.onerror = null\n }\n })\n}\n\n/**\n * 读取图片文件的dataURL\n * @param file 图片文件\n */\nexport const getImageDataURL = (file: File): Promise => {\n return new Promise(resolve => {\n const reader = new FileReader()\n reader.addEventListener('load', () => {\n resolve(reader.result as string)\n })\n reader.readAsDataURL(file)\n })\n}","export const VIEWPORT_SIZE = 1000","import type { BarChartOptions, LineChartOptions, PieChartOptions } from 'chartist'\n\nexport const enum ShapePathFormulasKeys {\n ROUND_RECT = 'roundRect',\n ROUND_RECT_DIAGONAL = 'roundRectDiagonal',\n ROUND_RECT_SINGLE = 'roundRectSingle',\n ROUND_RECT_SAMESIDE = 'roundRectSameSide',\n CUT_RECT_DIAGONAL = 'cutRectDiagonal',\n CUT_RECT_SINGLE = 'cutRectSingle',\n CUT_RECT_SAMESIDE = 'cutRectSameSide',\n CUT_ROUND_RECT = 'cutRoundRect',\n MESSAGE = 'message',\n ROUND_MESSAGE = 'roundMessage',\n L = 'L',\n RING_RECT = 'ringRect',\n PLUS = 'plus',\n TRIANGLE = 'triangle',\n PARALLELOGRAM_LEFT = 'parallelogramLeft',\n PARALLELOGRAM_RIGHT = 'parallelogramRight',\n TRAPEZOID = 'trapezoid',\n BULLET = 'bullet',\n INDICATOR = 'indicator',\n}\n\nexport const enum ElementTypes {\n TEXT = 'text',\n IMAGE = 'image',\n SHAPE = 'shape',\n LINE = 'line',\n CHART = 'chart',\n TABLE = 'table',\n LATEX = 'latex',\n VIDEO = 'video',\n AUDIO = 'audio',\n}\n\n/**\n * 元素阴影\n * \n * h: 水平偏移量\n * \n * v: 垂直偏移量\n * \n * blur: 模糊程度\n * \n * color: 阴影颜色\n */\nexport interface PPTElementShadow {\n h: number\n v: number\n blur: number\n color: string\n}\n\n/**\n * 元素边框\n * \n * style?: 边框样式(实线或虚线)\n * \n * width?: 边框宽度\n * \n * color?: 边框颜色\n */\nexport interface PPTElementOutline {\n style?: 'dashed' | 'solid'\n width?: number\n color?: string\n}\n\n/**\n * 元素超链接\n * \n * type: 链接类型(网页、幻灯片页面)\n * \n * target: 目标地址(网页链接、幻灯片页面ID)\n */\nexport interface PPTElementLink {\n type: 'web' | 'slide'\n target: string\n}\n\n\n/**\n * 元素通用属性\n * \n * id: 元素ID\n * \n * left: 元素水平方向位置(距离画布左侧)\n * \n * top: 元素垂直方向位置(距离画布顶部)\n * \n * lock?: 锁定元素\n * \n * groupId?: 组合ID(拥有相同组合ID的元素即为同一组合元素成员)\n * \n * width: 元素宽度\n * \n * height: 元素高度\n * \n * rotate: 旋转角度\n * \n * link?: 超链接\n * \n * name?: 元素名\n */\ninterface PPTBaseElement {\n id: string\n left: number\n top: number\n lock?: boolean\n groupId?: string\n width: number\n height: number\n rotate: number\n link?: PPTElementLink\n name?: string\n}\n\n\n/**\n * 文本元素\n * \n * type: 元素类型(text)\n * \n * content: 文本内容(HTML字符串)\n * \n * defaultFontName: 默认字体(会被文本内容中的HTML内联样式覆盖)\n * \n * defaultColor: 默认颜色(会被文本内容中的HTML内联样式覆盖)\n * \n * outline?: 边框\n * \n * fill?: 填充色\n * \n * lineHeight?: 行高(倍),默认1.5\n * \n * wordSpace?: 字间距,默认0\n * \n * opacity?: 不透明度,默认1\n * \n * shadow?: 阴影\n * \n * paragraphSpace?: 段间距,默认 5px\n * \n * vertical?: 竖向文本\n */\nexport interface PPTTextElement extends PPTBaseElement {\n type: 'text'\n content: string\n defaultFontName: string\n defaultColor: string\n outline?: PPTElementOutline\n fill?: string\n lineHeight?: number\n wordSpace?: number\n opacity?: number\n shadow?: PPTElementShadow\n paragraphSpace?: number\n vertical?: boolean\n}\n\n\n/**\n * 图片翻转、形状翻转\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n */\nexport interface ImageOrShapeFlip {\n flipH?: boolean\n flipV?: boolean\n}\n\n/**\n * 图片滤镜\n * \n * https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter\n * \n * 'blur'?: 模糊,默认0(px)\n * \n * 'brightness'?: 亮度,默认100(%)\n * \n * 'contrast'?: 对比度,默认100(%)\n * \n * 'grayscale'?: 灰度,默认0(%)\n * \n * 'saturate'?: 饱和度,默认100(%)\n * \n * 'hue-rotate'?: 色相旋转,默认0(deg)\n * \n * 'opacity'?: 不透明度,默认100(%)\n */\nexport type ImageElementFilterKeys = 'blur' | 'brightness' | 'contrast' | 'grayscale' | 'saturate' | 'hue-rotate' | 'opacity'\nexport interface ImageElementFilters {\n 'blur'?: string\n 'brightness'?: string\n 'contrast'?: string\n 'grayscale'?: string\n 'saturate'?: string\n 'hue-rotate'?: string\n 'opacity'?: string\n}\n\nexport type ImageClipDataRange = [[number, number], [number, number]]\n\n/**\n * 图片裁剪\n * \n * range: 裁剪范围,例如:[[10, 10], [90, 90]] 表示裁取原图从左上角 10%, 10% 到 90%, 90% 的范围\n * \n * shape: 裁剪形状,见 configs/imageClip.ts CLIPPATHS \n */\nexport interface ImageElementClip {\n range: ImageClipDataRange\n shape: string\n}\n\n/**\n * 图片元素\n * \n * type: 元素类型(image)\n * \n * fixedRatio: 固定图片宽高比例\n * \n * src: 图片地址\n * \n * outline?: 边框\n * \n * filters?: 图片滤镜\n * \n * clip?: 裁剪信息\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n * \n * shadow?: 阴影\n */\nexport interface PPTImageElement extends PPTBaseElement {\n type: 'image'\n fixedRatio: boolean\n src: string\n outline?: PPTElementOutline\n filters?: ImageElementFilters\n clip?: ImageElementClip\n flipH?: boolean\n flipV?: boolean\n shadow?: PPTElementShadow\n colorMask?: string\n}\n\n\n/**\n * 形状渐变\n * \n * type: 渐变类型(径向、线性)\n * \n * color: 渐变颜色\n * \n * rotate: 渐变角度(线性渐变)\n */\nexport interface ShapeGradient {\n type: 'linear' | 'radial'\n color: [string, string]\n rotate: number\n}\n\nexport type ShapeTextAlign = 'top' | 'middle' | 'bottom' \n\n/**\n * 形状内文本\n * \n * content: 文本内容(HTML字符串)\n * \n * defaultFontName: 默认字体(会被文本内容中的HTML内联样式覆盖)\n * \n * defaultColor: 默认颜色(会被文本内容中的HTML内联样式覆盖)\n * \n * align: 文本对齐方向(垂直方向)\n */\nexport interface ShapeText {\n content: string\n defaultFontName: string\n defaultColor: string\n align: ShapeTextAlign\n}\n\n/**\n * 形状元素\n * \n * type: 元素类型(shape)\n * \n * viewBox: SVG的viewBox属性,例如 [1000, 1000] 表示 '0 0 1000 1000'\n * \n * path: 形状路径,SVG path 的 d 属性\n * \n * fixedRatio: 固定形状宽高比例\n * \n * fill: 填充,不存在渐变时生效\n * \n * gradient?: 渐变,该属性存在时将优先作为填充\n * \n * outline?: 边框\n * \n * opacity?: 不透明度\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n * \n * shadow?: 阴影\n * \n * special?: 特殊形状(标记一些难以解析的形状,例如路径使用了 L Q C A 以外的类型,该类形状在导出后将变为图片的形式)\n * \n * text?: 形状内文本\n * \n * pathFormula?: 形状路径计算公式\n * 一般情况下,形状的大小变化时仅由宽高基于 viewBox 的缩放比例来调整形状,而 viewBox 本身和 path 不会变化,\n * 但也有一些形状希望能更精确的控制一些关键点的位置,此时就需要提供路径计算公式,通过在缩放时更新 viewBox 并重新计算 path 来重新绘制形状\n * \n * keypoint?: 关键点位置百分比\n */\nexport interface PPTShapeElement extends PPTBaseElement {\n type: 'shape'\n viewBox: [number, number]\n path: string\n fixedRatio: boolean\n fill: string\n gradient?: ShapeGradient\n outline?: PPTElementOutline\n opacity?: number\n flipH?: boolean\n flipV?: boolean\n shadow?: PPTElementShadow\n special?: boolean\n text?: ShapeText\n pathFormula?: ShapePathFormulasKeys\n keypoint?: number\n}\n\n\nexport type LinePoint = '' | 'arrow' | 'dot' \n\n/**\n * 线条元素\n * \n * type: 元素类型(line)\n * \n * start: 起点位置([x, y])\n * \n * end: 终点位置([x, y])\n * \n * style: 线条样式(实线、虚线)\n * \n * color: 线条颜色\n * \n * points: 端点样式([起点样式, 终点样式],可选:无、箭头、圆点)\n * \n * shadow?: 阴影\n * \n * broken?: 折线控制点位置([x, y])\n * \n * curve?: 二次曲线控制点位置([x, y])\n * \n * cubic?: 三次曲线控制点位置([[x1, y1], [x2, y2]])\n */\nexport interface PPTLineElement extends Omit {\n type: 'line'\n start: [number, number]\n end: [number, number]\n style: 'solid' | 'dashed'\n color: string\n points: [LinePoint, LinePoint]\n shadow?: PPTElementShadow\n broken?: [number, number]\n curve?: [number, number]\n cubic?: [[number, number], [number, number]]\n}\n\n\nexport type PresetChartType = 'bar' | 'horizontalBar' | 'line' | 'area' | 'scatter' | 'pie' | 'ring'\nexport type ChartType = 'bar' | 'line' | 'pie'\nexport type ChartOptions = LineChartOptions & BarChartOptions & PieChartOptions\nexport interface ChartData {\n labels: string[]\n legends: string[]\n series: number[][]\n}\n\n/**\n * 图表元素\n * \n * type: 元素类型(chart)\n * \n * fill?: 填充色\n * \n * chartType: 图表基础类型(bar/line/pie),所有图表类型都是由这三种基本类型衍生而来\n * \n * data: 图表数据\n * \n * options?: 图表配置项\n * \n * outline?: 边框\n * \n * themeColor: 主题色\n * \n * gridColor?: 网格&坐标颜色\n * \n * legend?: 图例/位置\n */\nexport interface PPTChartElement extends PPTBaseElement {\n type: 'chart'\n fill?: string\n chartType: ChartType\n data: ChartData\n options?: ChartOptions\n outline?: PPTElementOutline\n themeColor: string[]\n gridColor?: string\n legend?: '' | 'top' | 'bottom'\n}\n\n\n/**\n * 表格单元格样式\n * \n * bold?: 加粗\n * \n * em?: 斜体\n * \n * underline?: 下划线\n * \n * strikethrough?: 删除线\n * \n * color?: 字体颜色\n * \n * backcolor?: 填充色\n * \n * fontsize?: 字体大小\n * \n * fontname?: 字体\n * \n * align?: 对齐方式\n */\nexport interface TableCellStyle {\n bold?: boolean\n em?: boolean\n underline?: boolean\n strikethrough?: boolean\n color?: string\n backcolor?: string\n fontsize?: string\n fontname?: string\n align?: 'left' | 'center' | 'right'\n}\n\n\n/**\n * 表格单元格\n * \n * id: 单元格ID\n * \n * colspan: 合并列数\n * \n * rowspan: 合并行数\n * \n * text: 文字内容\n * \n * style?: 单元格样式\n */\nexport interface TableCell {\n id: string\n colspan: number\n rowspan: number\n text: string\n style?: TableCellStyle\n}\n\n/**\n * 表格主题\n * \n * color: 主题色\n * \n * rowHeader: 标题行\n * \n * rowFooter: 汇总行\n * \n * colHeader: 第一列\n * \n * colFooter: 最后一列\n */\nexport interface TableTheme {\n color: string\n rowHeader: boolean\n rowFooter: boolean\n colHeader: boolean\n colFooter: boolean\n}\n\n/**\n * 表格元素\n * \n * type: 元素类型(table)\n * \n * outline: 边框\n * \n * theme?: 主题\n * \n * colWidths: 列宽数组,如[30, 50, 20]表示三列宽度分别为30%, 50%, 20%\n * \n * cellMinHeight: 单元格最小高度\n * \n * data: 表格数据\n */\nexport interface PPTTableElement extends PPTBaseElement {\n type: 'table'\n outline: PPTElementOutline\n theme?: TableTheme\n colWidths: number[]\n cellMinHeight: number\n data: TableCell[][]\n}\n\n\n/**\n * LaTeX元素(公式)\n * \n * type: 元素类型(latex)\n * \n * latex: latex代码\n * \n * path: svg path\n * \n * color: 颜色\n * \n * strokeWidth: 路径宽度\n * \n * viewBox: SVG的viewBox属性\n * \n * fixedRatio: 固定形状宽高比例\n */\nexport interface PPTLatexElement extends PPTBaseElement {\n type: 'latex'\n latex: string\n path: string\n color: string\n strokeWidth: number\n viewBox: [number, number]\n fixedRatio: boolean\n}\n\n/**\n * 视频元素\n * \n * type: 元素类型(video)\n * \n * src: 视频地址\n * \n * autoplay: 自动播放\n * \n * poster: 预览封面\n * \n * ext: 视频后缀,当资源链接缺少后缀时用该字段确认资源类型\n */\nexport interface PPTVideoElement extends PPTBaseElement {\n type: 'video'\n src: string\n autoplay: boolean\n poster?: string\n ext?: string\n}\n\n/**\n * 音频元素\n * \n * type: 元素类型(audio)\n * \n * fixedRatio: 固定图标宽高比例\n * \n * color: 图标颜色\n * \n * loop: 循环播放\n * \n * autoplay: 自动播放\n * \n * src: 音频地址\n * \n * ext: 音频后缀,当资源链接缺少后缀时用该字段确认资源类型\n */\nexport interface PPTAudioElement extends PPTBaseElement {\n type: 'audio'\n fixedRatio: boolean\n color: string\n loop: boolean\n autoplay: boolean\n src: string\n ext?: string\n}\n\n\nexport type PPTElement = PPTTextElement | PPTImageElement | PPTShapeElement | PPTLineElement | PPTChartElement | PPTTableElement | PPTLatexElement | PPTVideoElement | PPTAudioElement\n\n\n/**\n * 元素动画\n * \n * id: 动画id\n * \n * elId: 元素ID\n * \n * effect: 动画效果\n * \n * type: 动画类型(入场、退场、强调)\n * \n * duration: 动画持续时间\n * \n * trigger: 动画触发方式(click - 单击时、meantime - 与上一动画同时、auto - 上一动画之后)\n */\nexport interface PPTAnimation {\n id: string\n elId: string\n effect: string\n type: 'in' | 'out' | 'attention'\n duration: number\n trigger: 'click' | 'meantime' | 'auto'\n}\n\n/**\n * 幻灯片背景\n * \n * type: 背景类型(纯色、图片、渐变)\n * \n * color?: 背景颜色(纯色)\n * \n * image?: 图片地址(图片)\n * \n * imageSize?: 图片填充方式\n * \n * gradientType?: 渐变类型(线性、径向)\n * \n * gradientColor?: 渐变颜色\n * \n * gradientRotate?: 渐变角度(线性)\n */\nexport interface SlideBackground {\n type: 'solid' | 'image' | 'gradient'\n color?: string\n image?: string\n imageSize?: 'cover' | 'contain' | 'repeat'\n gradientType?: 'linear' | 'radial'\n gradientColor?: [string, string]\n gradientRotate?: number\n}\n\n\nexport type TurningMode = 'no' | 'fade' | 'slideX' | 'slideY' | 'random' | 'slideX3D' | 'slideY3D' | 'rotate' | 'scaleY' | 'scaleX' | 'scale' | 'scaleReverse'\n\n/**\n * 幻灯片页面\n * \n * id: 页面ID\n * \n * elements: 元素集合\n * \n * remark?: 备注\n * \n * background?: 页面背景\n * \n * animations?: 元素动画集合\n * \n * turningMode?: 翻页方式\n */\nexport interface Slide {\n id: string\n elements: PPTElement[]\n remark?: string\n background?: SlideBackground\n animations?: PPTAnimation[]\n turningMode?: TurningMode\n}\n\n/**\n * 幻灯片主题\n * \n * backgroundColor: 页面背景颜色\n * \n * themeColor: 主题色,用于默认创建的形状颜色等\n * \n * fontColor: 字体颜色\n * \n * fontName: 字体\n */\nexport interface SlideTheme {\n backgroundColor: string\n themeColor: string\n fontColor: string\n fontName: string\n outline: PPTElementOutline\n shadow: PPTElementShadow\n}\n","/* eslint-disable max-lines */\n\n// 非专业设计人士可以用该应用绘制基本形状:https://github.com/pipipi-pikachu/svgPathCreator\n\nimport { ShapePathFormulasKeys } from '@/types/slides'\n\nexport interface ShapePoolItem {\n viewBox: [number, number]\n path: string\n special?: boolean\n pathFormula?: ShapePathFormulasKeys\n outlined?: boolean\n pptxShapeType?: string\n title?: string\n}\n\ninterface ShapeListItem {\n type: string\n children: ShapePoolItem[]\n}\n\nexport const SHAPE_PATH_FORMULAS = {\n [ShapePathFormulasKeys.ROUND_RECT]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height - radius} Q ${width} ${height} ${width - radius} ${height} L ${radius} ${height} Q 0 ${height} 0 ${height - radius} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n }\n },\n [ShapePathFormulasKeys.CUT_RECT_DIAGONAL]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${height - radius} L 0 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L ${radius} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.CUT_RECT_SINGLE]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${height} L 0 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.CUT_RECT_SAMESIDE]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${radius} L ${radius} 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_RECT_DIAGONAL]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 1],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M ${radius} 0 L ${width} 0 L ${width} ${height - radius} Q ${width} ${height} ${width - radius} ${height} L 0 ${height} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_RECT_SINGLE]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 1],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height} L 0 ${height} L 0 0 Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_RECT_SAMESIDE]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${radius} Q 0 0 ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.CUT_ROUND_RECT]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M ${radius} 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L 0 ${height} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n }\n },\n [ShapePathFormulasKeys.MESSAGE]: {\n formula: (width: number, height: number) => {\n const arrowWidth = width * 0.2\n const arrowheight = height * 0.2\n return `M 0 0 L ${width} 0 L ${width} ${height - arrowheight} L ${width / 2} ${height - arrowheight} L ${width / 2 - arrowWidth} ${height} L ${width / 2 - arrowWidth} ${height - arrowheight} L 0 ${height - arrowheight} Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_MESSAGE]: {\n formula: (width: number, height: number) => {\n const radius = Math.min(width, height) * 0.125\n const arrowWidth = width * 0.2\n const arrowheight = height * 0.2\n return `M 0 ${radius} Q 0 0 ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height - radius - arrowheight} Q ${width} ${height - arrowheight} ${width - radius} ${height - arrowheight} L ${width / 2} ${height - arrowheight} L ${width / 2 - arrowWidth} ${height} L ${width / 2 - arrowWidth} ${height - arrowheight} L ${radius} ${height - arrowheight} Q 0 ${height - arrowheight} 0 ${height - radius - arrowheight} L 0 ${radius} Z`\n }\n },\n [ShapePathFormulasKeys.L]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.9],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\n return `M 0 0 L 0 ${height} L ${width} ${height} L ${width} ${height - lineWidth} L ${lineWidth} ${height - lineWidth} L ${lineWidth} 0 Z`\n }\n },\n [ShapePathFormulasKeys.RING_RECT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.45],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\n return `M 0 0 ${width} 0 ${width} ${height} L 0 ${height} L 0 0 Z M ${lineWidth} ${lineWidth} L ${lineWidth} ${height - lineWidth} L ${width - lineWidth} ${height - lineWidth} L ${width - lineWidth} ${lineWidth} Z`\n }\n },\n [ShapePathFormulasKeys.PLUS]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.9],\n relative: 'center',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\n return `M ${width / 2 - lineWidth / 2} 0 L ${width / 2 - lineWidth / 2} ${height / 2 - lineWidth / 2} L 0 ${height / 2 - lineWidth / 2} L 0 ${height / 2 + lineWidth / 2} L ${width / 2 - lineWidth / 2} ${height / 2 + lineWidth / 2} L ${width / 2 - lineWidth / 2} ${height} L ${width / 2 + lineWidth / 2} ${height} L ${width / 2 + lineWidth / 2} ${height / 2 + lineWidth / 2} L ${width} ${height / 2 + lineWidth / 2} L ${width} ${height / 2 - lineWidth / 2} L ${width / 2 + lineWidth / 2} ${height / 2 - lineWidth / 2} L ${width / 2 + lineWidth / 2} 0 Z`\n }\n },\n [ShapePathFormulasKeys.TRIANGLE]: {\n editable: true,\n defaultValue: 0.5,\n range: [0, 1],\n relative: 'left',\n getBaseSize: (width: number) => width,\n formula: (width: number, height: number, value: number) => {\n const vertex = width * value\n return `M ${vertex} 0 L 0 ${height} L ${width} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.PARALLELOGRAM_LEFT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.9],\n relative: 'left',\n getBaseSize: (width: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${point} 0 L ${width} 0 L ${width - point} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.PARALLELOGRAM_RIGHT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M 0 0 L ${width - point} 0 L ${width} ${height} L ${point} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.TRAPEZOID]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${point} 0 L ${width - point} 0 L ${width} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.BULLET]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 1],\n relative: 'top',\n getBaseSize: (width: number, height: number) => height,\n formula: (width: number, height: number, value: number) => {\n const point = height * value\n return `M ${width / 2} 0 L 0 ${point} L 0 ${height} L ${width} ${height} L ${width} ${point} Z`\n }\n },\n [ShapePathFormulasKeys.INDICATOR]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${width} ${height / 2} L ${width - point} 0 L 0 0 L ${point} ${height / 2} L 0 ${height} L ${width - point} ${height} Z`\n }\n },\n}\n\nexport const SHAPE_LIST: ShapeListItem[] = [\n {\n type: '矩形',\n children: [\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n pptxShapeType: 'rect',\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 Q 200 0 200 50 L 200 150 Q 200 200 150 200 L 50 200 Q 0 200 0 150 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT,\n pptxShapeType: 'roundRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_SINGLE,\n pptxShapeType: 'snip1Rect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_SAMESIDE,\n pptxShapeType: 'snip2SameRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_DIAGONAL,\n pptxShapeType: 'snip2DiagRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.CUT_ROUND_RECT,\n pptxShapeType: 'snipRoundRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_SINGLE,\n pptxShapeType: 'round1Rect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_SAMESIDE,\n pptxShapeType: 'round2SameRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 200 0 L 200 150 Q 200 200 150 200 L 0 200 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_DIAGONAL,\n pptxShapeType: 'round2DiagRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 80 L 60 0 L 100 40 L 180 20 L 200 120 L 160 200 L 0 200 L 60 140 Z',\n title: '任意多边形',\n },\n ]\n },\n\n {\n type: '常用形状',\n children: [\n {\n viewBox: [200, 200],\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n pptxShapeType: 'ellipse',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 200 L 200 200 L 100 0 Z',\n pathFormula: ShapePathFormulasKeys.TRIANGLE,\n pptxShapeType: 'triangle',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 0 200 L 200 200 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 70 20 L 0 160 Q 0 200 40 200 L 160 200 Q 200 200 200 160 L 130 20 Q 100 -20 70 20 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z',\n pathFormula: ShapePathFormulasKeys.PARALLELOGRAM_LEFT,\n pptxShapeType: 'parallelogram',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z',\n pathFormula: ShapePathFormulasKeys.PARALLELOGRAM_RIGHT,\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z',\n pathFormula: ShapePathFormulasKeys.TRAPEZOID,\n pptxShapeType: 'trapezoid',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z',\n pptxShapeType: 'diamond',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z',\n pathFormula: ShapePathFormulasKeys.BULLET,\n },\n {\n viewBox: [200, 200],\n path: 'M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z',\n pathFormula: ShapePathFormulasKeys.INDICATOR,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 C 80 20 120 20 200 0 C 180 80 180 120 200 200 C 80 180 120 180 0 200 C 20 120 20 80 0 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 10 10 C 60 0 140 0 190 10 C 200 60 200 140 190 190 C 140 200 60 200 10 190 C 0 140 0 60 10 10 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 40 20 A 100 100 0 1 0 200 100 L 100 100 L 40 20 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z',\n pptxShapeType: 'pie',\n },\n {\n viewBox: [200, 200],\n path: 'M 160 20 A 100 100 0 1 0 200 100 L 100 100 L 160 20 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z',\n pptxShapeType: 'chord',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z',\n pptxShapeType: 'teardrop',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z',\n pptxShapeType: 'pentagon',\n },\n {\n viewBox: [200, 200],\n path: 'M 40 0 L 160 0 L 200 100 L 160 200 L 40 200 L 0 100 Z',\n pptxShapeType: 'hexagon',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z',\n pptxShapeType: 'octagon',\n },\n {\n viewBox: [200, 200],\n path: 'M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 A 25 50 0 1 0 50 200 L 150 200 A 25 50 0 1 0 150 0 L 50 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z',\n pathFormula: ShapePathFormulasKeys.L\n },\n {\n viewBox: [200, 200],\n path: 'M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z',\n pathFormula: ShapePathFormulasKeys.RING_RECT,\n },\n {\n viewBox: [200, 200],\n path: 'M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z',\n pathFormula: ShapePathFormulasKeys.PLUS,\n },\n {\n viewBox: [200, 200],\n path: 'M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 Z',\n pathFormula: ShapePathFormulasKeys.MESSAGE,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_MESSAGE,\n },\n {\n viewBox: [200, 200],\n path: 'M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 20 C 60 60 140 -40 200 20 L 200 180 C 140 140 60 240 0 180 L 0 20 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 Q 0 50 0 175 Q 100 225 200 175 Q 200 50 100 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 A 50 50 0 1 1 200 100 L 100 200 L 0 100 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 120 80 L 200 100 L 120 120 L 100 200 L 80 120 L 0 100 L 80 80 L 100 0 Z',\n pptxShapeType: 'star4',\n },\n {\n viewBox: [1024, 1024],\n path: 'M1018.67652554 400.05983681l-382.95318779-5.89158658L512 34.78141155 388.27666225 394.16825023l-382.95318779 5.89158658L311.68602415 629.83174977l-117.83174978 365.27842665 312.25413766-223.88032637 312.25413904 223.88032637-117.83175116-365.27842665 318.14572563-229.77191296z',\n pptxShapeType: 'star5',\n special: true,\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 60 60 L 0 100 L 60 140 L 100 200 L 140 140 L 200 100 L 140 60 L 100 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 140 60 L 200 60 L 160 100 L 200 140 L 140 140 L 100 200 L 60 140 L 0 140 L 40 100 L 0 60 L 60 60 L 100 0 Z',\n pptxShapeType: 'star6',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 80 40 L 20 20 L 40 80 L 0 100 L 40 120 L 20 180 L 80 160 L 100 200 L 120 160 L 180 180 L 160 120 L 200 100 L 160 80 L 180 20 L 120 40 L 100 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 C 80 40 80 160 200 200 C -60 200 -60 0 200 0 Z',\n },\n ],\n },\n \n {\n type: '箭头',\n children: [\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z',\n pptxShapeType: 'upArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z',\n pptxShapeType: 'downArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z',\n pptxShapeType: 'leftArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z',\n pptxShapeType: 'rightArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z',\n pptxShapeType: 'upDownArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z',\n pptxShapeType: 'leftRightArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z',\n pptxShapeType: 'notchedRightArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z',\n pptxShapeType: 'chevron',\n },\n {\n viewBox: [200, 200],\n path: 'M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z',\n pptxShapeType: 'homePlate',\n },\n {\n viewBox: [200, 200],\n path: 'M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z'\n },\n {\n viewBox: [1024, 1024],\n path: 'M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z',\n special: true,\n },\n ],\n },\n\n {\n type: '其他形状',\n children: [\n {\n viewBox: [1024, 1024],\n path: 'M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M997.8886764 504.17210418L537.2729208 43.89182982c-13.97838539-13.97838539-36.56745619-13.97838539-50.5458416 0L26.1113236 504.17210418c-13.41924998 13.41924998-21.02349164 31.64706454-21.02349163 50.65766867 0 39.47496036 32.09437288 71.56933323 71.56933324 71.56933323h48.53295408V954.83524937c0 19.79339373 15.99127289 35.78466661 35.78466663 35.78466662H440.43066677V740.12724968h125.24633315v250.49266631h297.34821416c19.79339373 0 35.78466661-15.99127289 35.78466663-35.78466662V626.39910608h48.53295408c19.01060414 0 37.23841869-7.49241457 50.65766869-21.02349163 27.84494371-27.95677079 27.84494371-73.24673948-0.11182708-101.20351027z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1009.13013121 349.27572283L674.72427717 14.86986879c-8.82158299-8.82158299-20.35749924-13.16451618-31.89341544-13.16451618s-23.07183245 4.34293316-31.89341547 13.16451618L392.29790453 233.6451272c-16.5574327-1.90003326-33.25058207-2.71433322-49.94373146-2.71433324-99.34459624 0-198.68919249 32.70771543-280.25490606 98.12314628-20.90036589 16.69314938-22.52896582 48.04369819-3.66434987 67.04403081l246.59717401 246.59717401-292.33368895 292.06225564c-3.52863319 3.52863319-5.83581644 8.27871636-6.24296642 13.30023282l-4.61436649 50.48659809c-1.22144996 12.75736619 8.95729967 23.6146991 21.57894918 23.6146991 0.6785833 0 1.35716662 0 2.03574992-0.13571666l50.48659809-4.61436649c5.02151649-0.40714999 9.77159962-2.71433322 13.30023282-6.24296643l292.33368896-292.33368896 246.59717402 246.59717401c8.82158299 8.82158299 20.35749924 13.16451618 31.89341544 13.16451618 13.16451618 0 26.19331567-5.70009979 35.15061536-16.82886604 76.40848044-95.40881307 108.16617924-214.83947521 95.27309638-330.33435417l218.63954175-218.63954173c17.50744934-17.37173267 17.50744934-45.8722316 0-63.51539759z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M976.62005979 160.47737905c-0.39452595-0.39452595-80.35178503 78.64217259-239.47725131 237.50462156l-111.6508437-111.65084369 237.89914752-237.89914752c-125.19623464-75.35445635-286.03131335-56.02268482-390.31767264 48.26367449-81.92988882 81.92988882-112.57140424 200.15616502-83.37648398 310.09739626l2.36715569 8.81107954-372.82702222 372.69551356c-8.15353628 8.15353628-8.15353628 21.56741857 0 29.72095487l185.95323084 185.95323084c8.15353628 8.15353628 21.56741857 8.15353628 29.72095485 0l372.56400493-372.56400493 8.81107953 2.3671557c110.07273989 29.32642892 228.29901608-1.18357785 310.36041356-83.24497533 104.41786795-104.2863593 123.74963948-265.12143802 49.97328693-390.05465535z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m220.16 343.26755556l-239.616 332.23111111c-14.44977778 20.13866667-44.37333333 20.13866667-58.82311111 0L291.84 481.16622222c-4.32355555-6.03022222 0-14.44977778 7.39555555-14.44977777h53.36177778c11.60533333 0 22.64177778 5.57511111 29.46844445 15.13244444l81.00977777 112.41244444 178.85866667-248.03555555c6.82666667-9.44355555 17.74933333-15.13244445 29.46844445-15.13244445H724.76444445c7.39555555 0 11.71911111 8.41955555 7.39555555 14.44977778z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m218.45333333 537.03111112c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222H302.64888889c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222v-54.61333334c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h418.70222222c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v54.61333334z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m188.18844445 703.37422223l-75.09333334-0.34133333L512 570.48177778l-112.98133333 134.71288889-75.20711112 0.34133333c-5.00622222 0-9.10222222-3.98222222-9.10222222-9.10222222 0-2.16177778 0.79644445-4.20977778 2.16177778-5.91644445l148.02488889-176.35555555L316.87111111 337.92c-1.36533333-1.70666667-2.16177778-3.75466667-2.16177778-5.91644445 0-5.00622222 4.096-9.10222222 9.10222222-9.10222222l75.20711112 0.34133334L512 458.06933333l112.98133333-134.71288888 75.09333334-0.34133334c5.00622222 0 9.10222222 3.98222222 9.10222222 9.10222222 0 2.16177778-0.79644445 4.20977778-2.16177778 5.91644445L559.21777778 514.27555555l147.91111111 176.35555556c1.36533333 1.70666667 2.16177778 3.75466667 2.16177778 5.91644444 0 5.00622222-4.096 9.10222222-9.10222222 9.10222223z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m218.45333333 537.03111112c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222H548.40888889v172.94222222c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222h-54.61333334c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222V548.40888889H302.64888889c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222v-54.61333334c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h172.94222222V302.64888889c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h54.61333334c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v172.94222222h172.94222222c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v54.61333334z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m163.95377778 517.57511112L427.46311111 700.64355555c-1.59288889 1.13777778-3.41333333 1.70666667-5.34755556 1.70666667-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222V331.88977778c0-1.93422222 0.56888889-3.75466667 1.70666667-5.34755556 2.95822222-4.096 8.64711111-5.00622222 12.74311111-2.048L675.95377778 505.17333333c0.79644445 0.56888889 1.47911111 1.25155555 2.048 2.048 2.95822222 3.98222222 2.048 9.67111111-2.048 12.62933334z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m200.81777778 666.39644445l-32.54044445 44.37333333c-2.95822222 4.096-8.64711111 4.89244445-12.74311111 1.93422222L479.34577778 577.76355555c-2.38933333-1.70666667-3.75466667-4.43733333-3.75466667-7.39555555V257.13777778c0-5.00622222 4.096-9.10222222 9.10222222-9.10222223h54.72711112c5.00622222 0 9.10222222 4.096 9.10222222 9.10222223v281.6l162.24711111 117.30488889c4.096 2.84444445 5.00622222 8.53333333 2.048 12.62933333z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M981.10577778 314.48177778c-25.6-61.09866667-62.464-115.93955555-109.34044445-163.04355556-46.87644445-46.99022222-101.60355555-83.968-162.70222222-109.568C646.59911111 15.58755555 580.38044445 2.27555555 512 2.27555555h-2.27555555c-68.83555555 0.34133333-135.39555555 13.99466667-198.08711112 40.84622223-60.52977778 25.94133333-114.80177778 62.80533333-161.22311111 109.79555555-46.42133333 46.99022222-82.83022222 101.60355555-108.08888889 162.47466667C16.27022222 378.42488889 3.072 445.44 3.41333333 514.38933333c0.34133333 78.96177778 19.22844445 157.35466667 54.49955556 227.44177778v172.94222222c0 28.89955555 23.43822222 52.33777778 52.224 52.33777778h172.71466666c69.97333333 35.38488889 148.13866667 54.272 226.98666667 54.61333334h2.38933333c68.03911111 0 133.91644445-13.19822222 196.03911112-39.02577778 60.75733333-25.37244445 115.37066667-61.78133333 162.13333333-108.31644445 46.87644445-46.53511111 83.74044445-100.92088889 109.568-161.56444444 26.73777778-62.80533333 40.39111111-129.59288889 40.73244445-198.54222223 0.22755555-69.29066667-13.19822222-136.53333333-39.59466667-199.79377777zM284.89955555 566.61333333c-30.03733333 0-54.49955555-24.46222222-54.49955555-54.61333333s24.46222222-54.61333333 54.49955555-54.61333333 54.49955555 24.46222222 54.49955556 54.61333333-24.34844445 54.61333333-54.49955556 54.61333333z m227.10044445 0c-30.03733333 0-54.49955555-24.46222222-54.49955555-54.61333333s24.46222222-54.61333333 54.49955555-54.61333333 54.49955555 24.46222222 54.49955555 54.61333333-24.46222222 54.61333333-54.49955555 54.61333333z m227.10044445 0c-30.03733333 0-54.49955555-24.46222222-54.49955556-54.61333333s24.46222222-54.61333333 54.49955556-54.61333333 54.49955555 24.46222222 54.49955555 54.61333333-24.46222222 54.61333333-54.49955555 54.61333333z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM745.4750693 325.8561164l-267.95558363 371.52436096c-16.15876501 22.52048353-49.62140436 22.52048353-65.78016939 0L253.07805667 477.51948567c-4.83490607-6.74342161 0-16.15876501 8.27023406-16.15876499h59.67291961c12.97790576 0 25.31963967 6.23448413 32.95370188 16.92217123l90.59087157 125.70755774 200.01242995-277.37092701c7.63406221-10.56045272 19.84856175-16.92217125 32.95370189-16.92217124H737.20483524c8.27023407 0 13.10514012 9.41534338 8.27023406 16.158765z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM756.28999077 542.53624885c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962H277.88875885c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962v-61.0724977c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h468.2224823c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v61.0724977z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM720.79160148 697.63494611c5.59831228 6.61618726 0.8906406 16.6677025-7.76129658 16.66770249h-74.94104404c-5.98001539 0-11.70556205-2.67192177-15.64982754-7.25235911L512 575.36271635l-110.43943332 131.68757314c-3.81703111 4.58043732-9.54257777 7.25235911-15.64982754 7.25235911H310.9696951c-8.65193717 0-13.35960887-10.05151525-7.76129658-16.66770249L458.81603326 512 303.20839852 326.36505389c-5.59831228-6.61618726-0.8906406-16.6677025 7.76129658-16.66770249h74.94104404c5.98001539 0 11.70556205 2.67192177 15.64982754 7.25235911L512 448.63728365l110.43943332-131.68757314c3.81703111-4.58043732 9.54257777-7.25235911 15.64982754-7.25235911H713.0303049c8.65193717 0 13.35960887 10.05151525 7.76129658 16.66770249L565.18396674 512l155.60763474 185.63494611z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM677.02297814 523.19662459L423.31764398 722.70011704c-9.41534338 7.37959347-23.28388974 0.76340622-23.28388975-11.19662459V312.62374191c0-11.9600308 13.86854636-18.70345241 23.28388975-11.19662457l253.70533416 199.37625807c7.25235911 5.72554666 7.25235911 16.6677025 0 22.39324918z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM756.28999077 542.53624885c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962H552.71499847v193.39624268c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962h-61.0724977c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962V552.71499847H277.88875885c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962v-61.0724977c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h193.39624268V277.88875885c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h61.0724977c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v193.39624268h193.39624268c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v61.0724977z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M902.67315697 135.41705551L528.62204754 7.94466448C524.10877635 6.40354749 518.05438818 5.63298899 512 5.63298899s-12.10877635 0.7705585-16.62204754 2.31167549L121.32684303 135.41705551c-9.13662215 3.08223399-16.62204754 13.64989334-16.62204753 23.33691443v531.02488283c0 9.68702108 6.27454775 22.45627614 13.87005291 28.51066431L498.0198673 1013.9638196c3.85279247 2.9721542 8.8063828 4.51327118 13.87005291 4.51327118s10.12734022-1.54111698 13.87005291-4.51327118l379.4450189-295.67430252c7.59550517-5.94430839 13.87005291-18.71356345 13.87005291-28.51066431V158.75396994c0.22015956-9.68702108-7.26526581-20.14460066-16.40188796-23.33691443zM712.89560763 323.43332829L478.86598471 645.63685899c-7.04510625 9.68702108-21.57563786 9.68702108-28.6207441 0l-139.14084824-191.5388259c-4.18303182-5.8342286 0-13.9801327 7.15518603-13.9801327h60.76404132c5.61406904 0 11.0079785 2.75199463 14.31037204 7.26526582l71.22162091 97.97100864 166.11039557-228.74579323c3.30239355-4.51327118 8.58622323-7.26526581 14.31037204-7.26526581H705.7404216c7.15518602 0.11007979 11.33821785 8.25598388 7.15518603 14.09021248z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M959.86498307 186.28001231H797.00498922v-101.78749614c0-44.91373267-36.51626425-81.42999692-81.42999691-81.42999693H308.42500769c-44.91373267 0-81.42999692 36.51626425-81.42999691 81.42999693v101.78749614H64.13501693c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499847v40.71499845c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874962h76.8495596l31.42688945 665.43575611c2.03574992 43.38692024 37.91584233 77.61296581 81.30276254 77.6129658h577.64404066c43.5141546 0 79.26701262-34.09881122 81.30276254-77.6129658l31.42688945-665.43575611H990.40123192c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874962v-40.71499845c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499847z m-254.46874039 0H318.60375732v-91.60874653h386.79248536v91.60874653z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 248.62485371H654.50249462V104.85001539c0-22.52048353-18.19451494-40.71499847-40.71499847-40.71499846H94.67126578v-50.89374808c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961h-71.25124732c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v997.5174623c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h71.25124732c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961V674.85999383h315.54123807v143.77483833c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h529.29497999c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V289.33985217c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M804.63905145 265.16532183V94.67126578h109.42155836c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-71.25124732c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961H109.93939019c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v71.25124732c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h109.42155836v170.49405605c0 103.6960117 53.94737296 194.92305513 135.3773699 246.83467817-81.42999692 51.91162303-135.37736988 143.13866646-135.3773699 246.83467817v170.49405605h-109.42155836c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v71.25124732c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h804.12121962c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-71.25124732c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961h-109.42155836V758.83467817c0-103.6960117-53.94737296-194.92305513-135.3773699-246.83467817 81.42999692-51.91162303 135.37736988-143.13866646 135.3773699-246.83467817z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1020.928 448.44373333l-35.36213334-373.4528c-1.79200001-19.3536-17.2032-34.64533332-36.55679999-36.55679999L575.55626667 3.072h-0.47786666c-3.82293334 0-6.8096 1.19466667-9.07946669 3.46453333L6.53653333 565.99893332c-4.65919999 4.65919999-4.65919999 12.1856 0 16.84480001l434.61973334 434.61973334c2.26986667 2.26986667 5.25653333 3.46453333 8.48213333 3.46453333s6.21226667-1.19466667 8.48213333-3.46453333l559.46239999-559.46239999c2.38933332-2.5088 3.584-5.97333334 3.34506668-9.55733335zM735.40266668 362.66666667c-42.17173333 0-76.45866667-34.28693333-76.45866667-76.45866667s34.28693333-76.45866667 76.45866667-76.45866667 76.45866667 34.28693333 76.45866665 76.45866667-34.28693333 76.45866667-76.45866665 76.45866667z',\n special: true,\n },\n ],\n },\n\n {\n type: '线性',\n children: [\n {\n viewBox: [1024, 1024],\n path: 'M1009.55537674 75.96950982l-61.38012212-61.38012214c-4.48769762-4.48769762-11.870684-4.48769762-16.3583816 0L14.44462326 931.67210859c-4.48769762 4.48769762-4.48769762 11.870684 0 16.35838159l61.38012212 61.38012214c4.48769762 4.48769762 11.870684 4.48769762 16.3583816 0L1009.41061232 92.18312698c4.63246205-4.34293316 4.63246205-11.72591956 0.14476442-16.21361716zM210.88996692 419.35075905c114.94296453 0 208.46079213-93.51782759 208.46079213-208.46079213s-93.51782759-208.46079213-208.46079213-208.4607921-208.46079213 93.51782759-208.4607921 208.4607921 93.51782759 208.46079213 208.4607921 208.46079213z m0-312.69118816c57.47148228 0 104.23039605 46.75891379 104.23039607 104.23039603s-46.75891379 104.23039605-104.23039607 104.23039607-104.23039605-46.75891379-104.23039603-104.23039607 46.75891379-104.23039605 104.23039603-104.23039603zM813.11003308 604.64924095c-114.94296453 0-208.46079213 93.51782759-208.46079213 208.46079213s93.51782759 208.46079213 208.46079213 208.4607921 208.46079213-93.51782759 208.4607921-208.4607921-93.51782759-208.46079213-208.4607921-208.46079213z m0 312.69118816c-57.47148228 0-104.23039605-46.75891379-104.23039607-104.23039603s46.75891379-104.23039605 104.23039607-104.23039607 104.23039605 46.75891379 104.23039603 104.23039607-46.75891379 104.23039605-104.23039603 104.23039603z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1004.96017383 478.58365209L483.27851088 25.80594621c-4.00443838-3.45210207-9.11354943-5.3852792-14.49882864-5.38527921h-122.20441284c-10.21822208 0-14.91308089 12.70373557-7.18037228 19.33177152l483.57045622 419.77561022H14.8973037c-6.07569962 0-11.04672658 4.97102697-11.04672658 11.04672657v82.85044938c0 6.07569962 4.97102697 11.04672658 11.04672658 11.04672657h807.92996557L339.25681303 984.24756148c-7.7327086 6.76612003-3.0378498 19.33177153 7.18037229 19.33177152h126.34693531c2.62359757 0 5.24719513-0.96658859 7.18037228-2.76168164L1004.96017383 545.41634791c20.2983601-17.67476253 20.2983601-49.1579333 0-66.83269582z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1011.38217956 558.9924242L545.80649025 22.43713295c-17.81503843-20.62055629-49.79794206-20.62055629-67.75325638 0L12.61782044 558.9924242c-6.31241519 7.29434645-1.12220714 18.51641789 8.41655359 18.51641789h113.62347344c6.45269109 0 12.62483038-2.80551785 16.97338308-7.71517411L458.69516062 215.87758959V1005.77114384c0 6.1721393 5.04993216 11.22207145 11.22207144 11.22207145h84.16553588c6.1721393 0 11.22207145-5.04993216 11.22207144-11.22207145V215.87758959l307.06393007 353.91607839c4.20827679 4.90965626 10.38041608 7.71517413 16.97338308 7.71517411h113.62347344c9.53876074 0 14.72896878-11.22207145 8.41655359-18.51641789z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1009.1026963 459.52804874H201.17273073l483.57045624-419.77561022c7.7327086-6.76612003 3.0378498-19.33177153-7.18037229-19.33177152h-122.20441283c-5.3852792 0-10.49439025 1.93317715-14.49882866 5.38527921L19.03982617 478.58365209c-20.2983601 17.67476253-20.2983601 49.1579333 0 66.69461175L543.89742302 1000.81765136c2.07126124 1.79509307 4.55677472 2.76168163 7.18037228 2.76168164h126.3469353c10.21822208 0 14.91308089-12.70373557 7.18037228-19.33177152L201.17273073 564.47195126H1009.1026963c6.07569962 0 11.04672658-4.97102697 11.04672658-11.04672657v-82.85044938c0-6.07569962-4.97102697-11.04672658-11.04672658-11.04672657z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1002.96562597 446.49115791h-113.62347344c-6.45269109 0-12.62483038 2.80551785-16.97338308 7.71517411L565.30483938 808.12241041V18.22885616c0-6.1721393-5.04993216-11.22207145-11.22207144-11.22207145h-84.16553588c-6.1721393 0-11.22207145 5.04993216-11.22207144 11.22207145v789.89355425L151.63123055 454.20633202c-4.20827679-4.90965626-10.38041608-7.71517413-16.97338308-7.71517411h-113.62347344c-9.53876074 0-14.72896878 11.36234735-8.41655359 18.51641789L478.19350975 1001.56286705c17.81503843 20.62055629 49.79794206 20.62055629 67.75325638 0L1011.38217956 465.0075758c6.31241519-7.29434645 1.12220714-18.51641789-8.41655359-18.51641789z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M975.82443246 622.46726585H14.8973037c-6.07569962 0-11.04672658 4.97102697-11.04672658 11.04672658v82.85044937c0 6.07569962 4.97102697 11.04672658 11.04672658 11.04672659h835.6848661L651.32683905 980.10503902c-5.66144737 7.18037229-0.55233633 17.9509307 8.69929718 17.9509307h100.11095967c6.76612003 0 13.11798782-3.0378498 17.39859437-8.42312903l233.08593092-295.63802022c22.78387358-28.99765728 2.20934532-71.52755463-34.79718873-71.52755462zM1009.1026963 296.58883161H173.4178302l199.25533075-252.69387063c5.66144737-7.18037229 0.55233633-17.9509307-8.69929718-17.9509307h-100.11095967c-6.76612003 0-13.11798782 3.0378498-17.39859437 8.42312903L13.37837881 330.00517953c-22.78387358 28.99765728-2.20934532 71.52755463 34.65910466 71.52755462h961.06521283c6.07569962 0 11.04672658-4.97102697 11.04672658-11.04672658v-82.85044937c0-6.07569962-4.97102697-11.04672658-11.04672658-11.04672659z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1010.75873115 64.13501693H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v81.42999691c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874964h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874964v-81.42999691c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961zM1010.75873115 858.07748691H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874964v81.42999691c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-81.42999691c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874964zM1010.75873115 461.10625194H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874959v81.42999694c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874959h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874959v-81.42999694c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874959z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M591.98717801 512l405.34042913-483.16579151c6.79427767-8.02960089 1.08090782-20.22841761-9.41933951-20.2284176h-123.22349044c-7.25752386 0-14.20621693 3.24272343-18.99309439 8.80167789L511.38233839 415.95362022 177.07299399 17.40746878c-4.63246205-5.55895447-11.58115512-8.80167789-18.99309439-8.80167789H34.85640916c-10.50024731 0-16.21361717 12.19881672-9.41933952 20.2284176L430.77749876 512 25.43706964 995.16579151c-6.79427767 8.02960089-1.08090782 20.22841761 9.41933952 20.2284176h123.22349044c7.25752386 0 14.20621693-3.24272343 18.99309439-8.80167789l334.3093444-398.54615144 334.30934441 398.54615144c4.63246205 5.55895447 11.58115512 8.80167789 18.99309439 8.80167789h123.22349044c10.50024731 0 16.21361717-12.19881672 9.41933951-20.2284176L591.98717801 512z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M953.5488 832.61667556c-24.08448-57.08913778-58.74574221-108.31644445-102.70947556-152.28017777-43.96373333-43.96373333-95.19104-78.49756444-152.28017777-102.70947558-0.50972445-0.25486222-1.01944888-0.38229333-1.52917334-0.63715555C776.41955556 519.64586667 828.02915556 426.23886221 828.02915556 320.85333332c0-174.58062221-141.44853334-316.02915556-316.02915556-316.02915554S195.97084444 146.27271111 195.97084444 320.85333332c0 105.38552889 51.6096 198.79253333 130.99918223 256.26396447-0.50972445 0.25486222-1.01944888 0.38229333-1.52917334 0.63715555-57.08913778 24.08448-108.31644445 58.61831112-152.28017777 102.70947554-43.96373333 43.96373333-78.49756444 95.19104-102.70947556 152.28017779C46.74901333 888.55893332 34.13333334 947.8144 32.85902222 1008.72647111c-0.12743111 5.7344 4.46008889 10.44935111 10.19448889 10.44935111h76.45866667c5.60696888 0 10.06705778-4.46008889 10.19448889-9.93962666 2.54862221-98.37681778 42.05226667-190.50951112 111.88451555-260.34176001 72.25344-72.25344 168.20906666-112.01194667 270.40881778-112.01194667s198.15537778 39.75850667 270.40881778 112.01194667C852.24106667 818.72668444 891.74471111 910.85937779 894.29333333 1009.23619556c0.12743111 5.60696888 4.58752 9.93962667 10.19448889 9.93962666h76.45866667c5.7344 0 10.32192-4.71495112 10.19448889-10.44935111-1.27431111-60.91207112-13.88999112-120.16753779-37.59217778-176.10979555zM512 540.03484444c-58.49088 0-113.54112-22.81016889-154.95623111-64.22527999S292.81848888 379.34421333 292.81848888 320.85333332c0-58.49088 22.81016889-113.54112 64.22528001-154.9562311S453.50912 101.67182221 512 101.67182221s113.54112 22.81016889 154.95623111 64.22528001S731.18151112 262.36245333 731.18151112 320.85333332c0 58.49088-22.81016889 113.54112-64.22528001 154.95623113S570.49088 540.03484444 512 540.03484444z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M985.31555555 111.50222222H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888889v728.17777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h946.6311111c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V147.91111111c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888889z m-45.5111111 126.06577778V830.57777778H84.19555555V237.568l-31.40266666-24.46222222 44.71466666-57.45777778 48.6968889 37.888h731.70488888l48.69688889-37.888 44.71466667 57.45777778-31.51644444 24.46222222z M877.90933333 193.42222222L512 477.86666667 146.09066667 193.42222222l-48.69688889-37.888-44.71466667 57.45777778 31.40266667 24.46222222 388.66488889 302.19377778c22.98311111 17.86311111 55.18222222 17.86311111 78.16533333 0L939.80444445 237.568l31.40266666-24.46222222-44.71466666-57.45777778-48.58311112 37.77422222z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M985.31555555 88.74666667H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888888v564.33777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h432.35555555v127.43111111H275.34222222c-10.01244445 0-18.20444445 8.192-18.20444444 18.20444445v54.61333333c0 5.00622222 4.096 9.10222222 9.10222222 9.10222222h491.52c5.00622222 0 9.10222222-4.096 9.10222222-9.10222222v-54.61333333c0-10.01244445-8.192-18.20444445-18.20444444-18.20444445H552.96V725.90222222h432.35555555c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V125.15555555c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888888z m-45.5111111 555.23555555H84.19555555V170.66666667h855.6088889v473.31555555z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m0 932.97777778c-233.69955555 0-423.25333333-189.55377778-423.25333333-423.25333333 0-101.26222222 35.61244445-194.33244445 95.00444444-267.15022222l595.39911111 595.39911111C706.33244445 899.64088889 613.26222222 935.25333333 512 935.25333333z m328.24888889-156.10311111L244.84977778 183.75111111C317.66755555 124.35911111 410.73777778 88.74666667 512 88.74666667c233.69955555 0 423.25333333 189.55377778 423.25333333 423.25333333 0 101.26222222-35.61244445 194.33244445-95.00444444 267.15022222z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M901.80266667 257.82044445L656.95288889 12.97066667c-6.82666667-6.82666667-16.04266667-10.69511111-25.71377778-10.69511112H147.91111111c-20.13866667 0-36.40888889 16.27022222-36.40888889 36.4088889v946.6311111c0 20.13866667 16.27022222 36.40888889 36.40888889 36.4088889h728.17777778c20.13866667 0 36.40888889-16.27022222 36.40888889-36.4088889V283.648c0-9.67111111-3.86844445-19.00088889-10.69511111-25.82755555zM828.52977778 300.37333333H614.4V86.24355555L828.52977778 300.37333333z m2.048 639.43111112H193.42222222V84.19555555h343.60888889v245.76c0 26.39644445 21.39022222 47.78666667 47.78666667 47.78666667h245.76v562.06222223z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M981.07392 55.79662222H42.92608c-31.22062222 0-50.71758221 34.02410666-35.04355556 61.16693334L304.28728889 620.82616888V927.42542221c0 22.55530667 18.09521779 40.77795555 40.52309333 40.77795557h334.37923556c22.42787556 0 40.52309333-18.22264888 40.52309333-40.77795557V620.82616888L1016.24490667 116.96355556c15.54659555-27.14282666-3.95036444-61.16693333-35.17098667-61.16693334zM628.47203556 876.45297779H395.52796444V677.66044445h233.07150222v198.79253334z m12.23338666-301.50200891l-12.10595556 21.15356445h-233.19893332l-12.10595556-21.15356445L130.59868445 147.54702221h762.8026311L640.70542222 574.95096888z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.62285431 4.54099753H654.39920987c-4.2719763 0-7.76722963 3.49525333-7.76722962 7.76722964v72.4941432c0 4.2719763 3.49525333 7.76722963 7.76722962 7.76722963h207.64393877L604.04167111 350.57107753c-64.72691358-49.83972347-143.69374815-76.7661195-226.67365136-76.7661195-99.54999309 0-193.27456395 38.83614815-263.5679921 109.25903012S4.54099753 547.08198717 4.54099753 646.63198025s38.83614815 193.27456395 109.25903012 263.5679921C184.09345581 980.62285431 277.81802667 1019.45900247 377.36801975 1019.45900247s193.27456395-38.83614815 263.5679921-109.25903012C711.35889383 839.90654419 750.19504197 746.18197333 750.19504197 646.63198025c0-82.9799032-26.92639605-161.68783013-76.63666567-226.41474372L931.4304 162.34521283V369.60079013c0 4.2719763 3.49525333 7.76722963 7.76722963 7.76722962h72.4941432c4.2719763 0 7.76722963-3.49525333 7.76722964-7.76722962V43.37714569c0-21.35988148-17.47626667-38.83614815-38.83614816-38.83614816zM377.36801975 921.07409383c-151.33152395 0-274.44211358-123.11058963-274.44211358-274.44211358s123.11058963-274.44211358 274.44211358-274.44211358 274.44211358 123.11058963 274.44211358 274.44211358-123.11058963 274.44211358-274.44211358 274.44211358z',\n special: true,\n outlined: true,\n },\n ],\n }\n]","import type { ChartType } from '@/types/slides'\n\ninterface ChartTypes {\n [propName: string]: ChartType\n}\n\nexport const CHART_TYPES: ChartTypes = {\n bar: 'bar',\n horizontalBar: 'bar',\n line: 'line',\n area: 'line',\n scatter: 'line',\n pie: 'pie',\n ring: 'pie',\n}","import { debounce, throttle} from 'lodash'\nimport { useSnapshotStore } from '@/store'\n\nexport default () => {\n const snapshotStore = useSnapshotStore()\n\n // 添加历史快照(历史记录)\n const addHistorySnapshot = debounce(function() {\n snapshotStore.addSnapshot()\n }, 300, { trailing: true })\n\n // 重做\n const redo = throttle(function() {\n snapshotStore.reDo()\n }, 100, { leading: true, trailing: false })\n\n // 撤销\n const undo = throttle(function() {\n snapshotStore.unDo()\n }, 100, { leading: true, trailing: false })\n\n return {\n addHistorySnapshot,\n redo,\n undo,\n }\n}","import { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { getImageSize } from '@/utils/image'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport type { PPTLineElement, PPTElement, TableCell, TableCellStyle, PPTShapeElement, PPTChartElement, ChartOptions, PresetChartType } from '@/types/slides'\nimport { type ShapePoolItem, SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport type { LinePoolItem } from '@/configs/lines'\nimport { CHART_TYPES } from '@/configs/chartTypes'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface CommonElementPosition {\n top: number\n left: number\n width: number\n height: number\n}\n\ninterface LineElementPosition {\n top: number\n left: number\n start: [number, number]\n end: [number, number]\n}\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { creatingElement } = storeToRefs(mainStore)\n const { theme, viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 创建(插入)一个元素并将其设置为被选中元素\n const createElement = (element: PPTElement, callback?: () => void) => {\n slidesStore.addElement(element)\n mainStore.setActiveElementIdList([element.id])\n\n if (creatingElement.value) mainStore.setCreatingElement(null)\n\n setTimeout(() => {\n mainStore.setEditorareaFocus(true)\n }, 0)\n\n if (callback) callback()\n\n addHistorySnapshot()\n }\n\n /**\n * 创建图片元素\n * @param src 图片地址\n */\n const createImageElement = (src: string) => {\n getImageSize(src).then(({ width, height }) => {\n const scale = height / width\n \n if (scale < viewportRatio.value && width > VIEWPORT_SIZE) {\n width = VIEWPORT_SIZE\n height = width * scale\n }\n else if (height > VIEWPORT_SIZE * viewportRatio.value) {\n height = VIEWPORT_SIZE * viewportRatio.value\n width = height / scale\n }\n\n createElement({\n type: 'image',\n id: nanoid(10),\n src,\n width,\n height,\n left: (VIEWPORT_SIZE - width) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\n fixedRatio: true,\n rotate: 0,\n })\n })\n }\n \n /**\n * 创建图表元素\n * @param chartType 图表类型\n */\n const createChartElement = (type: PresetChartType) => {\n const newElement: PPTChartElement = {\n type: 'chart',\n id: nanoid(10),\n chartType: CHART_TYPES[type],\n left: 300,\n top: 81.25,\n width: 400,\n height: 400,\n rotate: 0,\n themeColor: [theme.value.themeColor],\n gridColor: theme.value.fontColor,\n data: {\n labels: ['类别1', '类别2', '类别3', '类别4', '类别5'],\n legends: ['系列1'],\n series: [\n [12, 19, 5, 2, 18],\n ],\n },\n }\n\n const options: ChartOptions = {\n ...(type === 'bar' ? { horizontalBars: false, stackBars: false } : {}),\n ...(type === 'horizontalBar' ? { horizontalBars: true, stackBars: false } : {}),\n ...(type === 'line' ? { showLine: true, lineSmooth: true, showArea: false } : {}),\n ...(type === 'area' ? { showLine: true, lineSmooth: true, showArea: true } : {}),\n ...(type === 'scatter' ? { showLine: false, lineSmooth: true, showArea: false } : {}),\n ...(type === 'pie' ? { donut: false } : {}),\n ...(type === 'ring' ? { donut: true } : {}),\n }\n\n createElement({\n ...newElement,\n options,\n })\n }\n \n /**\n * 创建表格元素\n * @param row 行数\n * @param col 列数\n */\n const createTableElement = (row: number, col: number) => {\n const style: TableCellStyle = {\n fontname: theme.value.fontName,\n color: theme.value.fontColor,\n }\n const data: TableCell[][] = []\n for (let i = 0; i < row; i++) {\n const rowCells: TableCell[] = []\n for (let j = 0; j < col; j++) {\n rowCells.push({ id: nanoid(10), colspan: 1, rowspan: 1, text: '', style })\n }\n data.push(rowCells)\n }\n\n const DEFAULT_CELL_WIDTH = 100\n const DEFAULT_CELL_HEIGHT = 36\n\n const colWidths: number[] = new Array(col).fill(1 / col)\n\n const width = col * DEFAULT_CELL_WIDTH\n const height = row * DEFAULT_CELL_HEIGHT\n\n createElement({\n type: 'table',\n id: nanoid(10),\n width,\n height,\n colWidths,\n rotate: 0,\n data,\n left: (VIEWPORT_SIZE - width) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\n outline: {\n width: 2,\n style: 'solid',\n color: '#eeece1',\n },\n theme: {\n color: theme.value.themeColor,\n rowHeader: true,\n rowFooter: false,\n colHeader: false,\n colFooter: false,\n },\n cellMinHeight: 36,\n })\n }\n \n /**\n * 创建文本元素\n * @param position 位置大小信息\n * @param content 文本内容\n */\n \n interface CreateTextData {\n content?: string\n vertical?: boolean\n }\n const createTextElement = (position: CommonElementPosition, data?: CreateTextData) => {\n const { left, top, width, height } = position\n const content = data?.content || ''\n const vertical = data?.vertical || false\n\n const id = nanoid(10)\n createElement({\n type: 'text',\n id,\n left, \n top, \n width, \n height,\n content,\n rotate: 0,\n defaultFontName: theme.value.fontName,\n defaultColor: theme.value.fontColor,\n vertical,\n }, () => {\n setTimeout(() => {\n const editorRef: HTMLElement | null = document.querySelector(`#editable-element-${id} .ProseMirror`)\n if (editorRef) editorRef.focus()\n }, 0)\n })\n }\n \n /**\n * 创建形状元素\n * @param position 位置大小信息\n * @param data 形状路径信息\n */\n const createShapeElement = (position: CommonElementPosition, data: ShapePoolItem, supplement: Partial = {}) => {\n const { left, top, width, height } = position\n const newElement: PPTShapeElement = {\n type: 'shape',\n id: nanoid(10),\n left, \n top, \n width, \n height,\n viewBox: data.viewBox,\n path: data.path,\n fill: theme.value.themeColor,\n fixedRatio: false,\n rotate: 0,\n ...supplement,\n }\n if (data.special) newElement.special = true\n if (data.pathFormula) {\n newElement.pathFormula = data.pathFormula\n newElement.viewBox = [width, height]\n\n const pathFormula = SHAPE_PATH_FORMULAS[data.pathFormula]\n if ('editable' in pathFormula) {\n newElement.path = pathFormula.formula(width, height, pathFormula.defaultValue)\n newElement.keypoint = pathFormula.defaultValue\n }\n else newElement.path = pathFormula.formula(width, height)\n }\n createElement(newElement)\n }\n \n /**\n * 创建线条元素\n * @param position 位置大小信息\n * @param data 线条的路径和样式\n */\n const createLineElement = (position: LineElementPosition, data: LinePoolItem) => {\n const { left, top, start, end } = position\n\n const newElement: PPTLineElement = {\n type: 'line',\n id: nanoid(10),\n left, \n top, \n start,\n end,\n points: data.points,\n color: theme.value.themeColor,\n style: data.style,\n width: 2,\n }\n if (data.isBroken) newElement.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (data.isCurve) newElement.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (data.isCubic) newElement.cubic = [[(start[0] + end[0]) / 2, (start[1] + end[1]) / 2], [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]]\n createElement(newElement)\n }\n \n /**\n * 创建LaTeX元素\n * @param svg SVG代码\n */\n const createLatexElement = (data: { path: string; latex: string; w: number; h: number; }) => {\n createElement({\n type: 'latex',\n id: nanoid(10),\n width: data.w,\n height: data.h,\n rotate: 0,\n left: (VIEWPORT_SIZE - data.w) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - data.h) / 2,\n path: data.path,\n latex: data.latex,\n color: theme.value.fontColor,\n strokeWidth: 2,\n viewBox: [data.w, data.h],\n fixedRatio: true,\n })\n }\n \n /**\n * 创建视频元素\n * @param src 视频地址\n */\n const createVideoElement = (src: string) => {\n createElement({\n type: 'video',\n id: nanoid(10),\n width: 500,\n height: 300,\n rotate: 0,\n left: (VIEWPORT_SIZE - 500) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - 300) / 2,\n src,\n autoplay: false,\n })\n }\n \n /**\n * 创建音频元素\n * @param src 音频地址\n */\n const createAudioElement = (src: string) => {\n createElement({\n type: 'audio',\n id: nanoid(10),\n width: 50,\n height: 50,\n rotate: 0,\n left: (VIEWPORT_SIZE - 50) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - 50) / 2,\n loop: false,\n autoplay: false,\n fixedRatio: true,\n color: theme.value.themeColor,\n src,\n })\n }\n\n return {\n createImageElement,\n createChartElement,\n createTableElement,\n createTextElement,\n createShapeElement,\n createLineElement,\n createLatexElement,\n createVideoElement,\n createAudioElement,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useSlidesStore, useMainStore } from '@/store'\nimport type { PPTElement, Slide } from '@/types/slides'\nimport { createSlideIdMap, createElementIdMap, getElementRange } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { currentSlide, slides } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 添加指定的元素数据(一组)\n * @param elements 元素列表数据\n */\n const addElementsFromData = (elements: PPTElement[]) => {\n const { groupIdMap, elIdMap } = createElementIdMap(elements)\n\n const firstElement = elements[0]\n let offset = 0\n let lastSameElement: PPTElement | undefined\n \n do {\n lastSameElement = currentSlide.value.elements.find(el => {\n if (el.type !== firstElement.type) return false\n \n const { minX: oMinX, maxX: oMaxX, minY: oMinY, maxY: oMaxY } = getElementRange(el)\n const { minX: nMinX, maxX: nMaxX, minY: nMinY, maxY: nMaxY } = getElementRange({\n ...firstElement,\n left: firstElement.left + offset,\n top: firstElement.top + offset\n })\n if (\n oMinX === nMinX &&\n oMaxX === nMaxX &&\n oMinY === nMinY &&\n oMaxY === nMaxY\n ) return true\n \n return false\n })\n if (lastSameElement) offset += 10\n\n } while (lastSameElement)\n \n for (const element of elements) {\n element.id = elIdMap[element.id]\n\n element.left = element.left + offset\n element.top = element.top + offset\n\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n }\n slidesStore.addElement(elements)\n mainStore.setActiveElementIdList(Object.values(elIdMap))\n addHistorySnapshot()\n }\n\n /**\n * 添加指定的页面数据\n * @param slide 页面数据\n */\n const addSlidesFromData = (slides: Slide[]) => {\n const slideIdMap = createSlideIdMap(slides)\n const newSlides = slides.map(slide => {\n const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)\n\n for (const element of slide.elements) {\n element.id = elIdMap[element.id]\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n\t\t\n // 若元素绑定了页面跳转链接\n if (element.link && element.link.type === 'slide') {\n\n // 待添加页面中包含该页面,则替换相关绑定关系\n if (slideIdMap[element.link.target]) {\n element.link.target = slideIdMap[element.link.target]\n }\n // 待添加页面中不包含该页面,则删除该元素绑定的页面跳转\n else delete element.link\n }\n }\n // 动画id替换\n if (slide.animations) {\n for (const animation of slide.animations) {\n animation.id = nanoid(10)\n animation.elId = elIdMap[animation.elId]\n }\n }\n return {\n ...slide,\n id: slideIdMap[slide.id],\n }\n })\n slidesStore.addSlide(newSlides)\n addHistorySnapshot()\n }\n\n const isEmptySlide = computed(() => {\n if (slides.value.length > 1) return false\n if (slides.value[0].elements.length > 0) return false\n return true\n })\n\n return {\n addElementsFromData,\n addSlidesFromData,\n isEmptySlide,\n }\n}","import { pasteCustomClipboardString } from '@/utils/clipboard'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useCreateElement from '@/hooks/useCreateElement'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\n\ninterface PasteTextClipboardDataOptions {\n onlySlide?: boolean\n onlyElements?: boolean\n}\n\nexport default () => {\n const { createTextElement } = useCreateElement()\n const { addElementsFromData, addSlidesFromData } = useAddSlidesOrElements()\n\n /**\n * 粘贴普通文本:创建为新的文本元素\n * @param text 文本\n */\n const createTextElementFromClipboard = (text: string) => {\n createTextElement({\n left: 0,\n top: 0,\n width: 600,\n height: 50,\n }, { content: text })\n }\n\n /**\n * 解析剪贴板内容,根据解析结果选择合适的粘贴方式\n * @param text 剪贴板内容\n * @param options 配置项:onlySlide -- 仅处理页面粘贴;onlyElements -- 仅处理元素粘贴;\n */\n const pasteTextClipboardData = (text: string, options?: PasteTextClipboardDataOptions) => {\n const onlySlide = options?.onlySlide || false\n const onlyElements = options?.onlyElements || false\n\n const clipboardData = pasteCustomClipboardString(text)\n\n // 元素或页面\n if (typeof clipboardData === 'object') {\n const { type, data } = clipboardData\n\n if (type === 'elements' && !onlySlide) addElementsFromData(data)\n else if (type === 'slides' && !onlyElements) addSlidesFromData(data)\n }\n\n // 普通文本\n else if (!onlyElements && !onlySlide) {\n const string = parseText2Paragraphs(clipboardData)\n createTextElementFromClipboard(string)\n }\n }\n\n return {\n pasteTextClipboardData,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { Slide } from '@/types/slides'\nimport { copyText, readClipboard } from '@/utils/clipboard'\nimport { encrypt } from '@/utils/crypto'\nimport { createElementIdMap } from '@/utils/element'\nimport { KEYS } from '@/configs/hotkey'\nimport message from '@/utils/message'\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useAddSlidesOrElements from '@/hooks//useAddSlidesOrElements'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { selectedSlidesIndex: _selectedSlidesIndex, activeElementIdList } = storeToRefs(mainStore)\n const { currentSlide, slides, theme, slideIndex } = storeToRefs(slidesStore)\n\n const selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value])\n const selectedSlides = computed(() => slides.value.filter((item, index) => selectedSlidesIndex.value.includes(index)))\n const selectedSlidesId = computed(() => selectedSlides.value.map(item => item.id))\n\n const { pasteTextClipboardData } = usePasteTextClipboardData()\n const { addSlidesFromData } = useAddSlidesOrElements()\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 重置幻灯片\n const resetSlides = () => {\n const emptySlide: Slide = {\n id: nanoid(10),\n elements: [],\n background: {\n type: 'solid',\n color: theme.value.backgroundColor,\n },\n }\n slidesStore.updateSlideIndex(0)\n mainStore.setActiveElementIdList([])\n slidesStore.setSlides([emptySlide])\n }\n\n /**\n * 移动页面焦点\n * @param command 移动页面焦点命令:上移、下移\n */\n const updateSlideIndex = (command: string) => {\n if (command === KEYS.UP && slideIndex.value > 0) {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n }\n else if (command === KEYS.DOWN && slideIndex.value < slides.value.length - 1) {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n slidesStore.updateSlideIndex(slideIndex.value + 1)\n }\n }\n\n // 将当前页面数据加密后复制到剪贴板\n const copySlide = () => {\n const text = encrypt(JSON.stringify({\n type: 'slides',\n data: selectedSlides.value,\n }))\n\n copyText(text).then(() => {\n mainStore.setThumbnailsFocus(true)\n })\n }\n\n // 尝试将剪贴板页面数据解密后添加到下一页(粘贴)\n const pasteSlide = () => {\n readClipboard().then(text => {\n pasteTextClipboardData(text, { onlySlide: true })\n }).catch(err => message.warning(err))\n }\n\n // 创建一页空白页并添加到下一页\n const createSlide = () => {\n const emptySlide: Slide = {\n id: nanoid(10),\n elements: [],\n background: {\n type: 'solid',\n color: theme.value.backgroundColor,\n },\n }\n mainStore.setActiveElementIdList([])\n slidesStore.addSlide(emptySlide)\n addHistorySnapshot()\n }\n\n // 根据模板创建新页面\n const createSlideByTemplate = (slide: Slide) => {\n const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)\n\n for (const element of slide.elements) {\n element.id = elIdMap[element.id]\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n }\n const newSlide = {\n ...slide,\n id: nanoid(10),\n }\n mainStore.setActiveElementIdList([])\n slidesStore.addSlide(newSlide)\n addHistorySnapshot()\n }\n\n // 将当前页复制一份到下一页\n const copyAndPasteSlide = () => {\n const slide = JSON.parse(JSON.stringify(currentSlide.value))\n addSlidesFromData([slide])\n }\n\n // 删除当前页,若将删除全部页面,则执行重置幻灯片操作\n const deleteSlide = (targetSlidesId = selectedSlidesId.value) => {\n if (slides.value.length === targetSlidesId.length) resetSlides()\n else slidesStore.deleteSlide(targetSlidesId)\n\n mainStore.updateSelectedSlidesIndex([])\n\n addHistorySnapshot()\n }\n\n // 将当前页复制后删除(剪切)\n // 由于复制操作会导致多选状态消失,所以需要提前将需要删除的页面ID进行缓存\n const cutSlide = () => {\n const targetSlidesId = [...selectedSlidesId.value]\n copySlide()\n deleteSlide(targetSlidesId)\n }\n\n // 选中全部幻灯片\n const selectAllSlide = () => {\n const newSelectedSlidesIndex = Array.from(Array(slides.value.length), (item, index) => index)\n mainStore.setActiveElementIdList([])\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n }\n\n // 拖拽调整幻灯片顺序同步数据\n const sortSlides = (newIndex: number, oldIndex: number) => {\n if (oldIndex === newIndex) return\n \n const _slides = JSON.parse(JSON.stringify(slides.value))\n const _slide = _slides[oldIndex]\n _slides.splice(oldIndex, 1)\n _slides.splice(newIndex, 0, _slide)\n slidesStore.setSlides(_slides)\n slidesStore.updateSlideIndex(newIndex)\n }\n\n return {\n resetSlides,\n updateSlideIndex,\n copySlide,\n pasteSlide,\n createSlide,\n createSlideByTemplate,\n copyAndPasteSlide,\n deleteSlide,\n cutSlide,\n selectAllSlide,\n sortSlides,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 锁定选中的元素,并清空选中元素状态\n const lockElement = () => {\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n \n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id)) element.lock = true\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList([])\n addHistorySnapshot()\n }\n\n /**\n * 解除元素的锁定状态,并将其设置为当前选择元素\n * @param handleElement 需要解锁的元素\n */\n const unlockElement = (handleElement: PPTElement) => {\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n\n if (handleElement.groupId) {\n const groupElementIdList = []\n for (const element of newElementList) {\n if (element.groupId === handleElement.groupId) {\n element.lock = false\n groupElementIdList.push(element.id)\n }\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList(groupElementIdList)\n }\n else {\n for (const element of newElementList) {\n if (element.id === handleElement.id) {\n element.lock = false\n break\n }\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList([handleElement.id])\n }\n addHistorySnapshot()\n }\n\n return {\n lockElement,\n unlockElement,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 删除全部选中元素\n // 组合元素成员中,存在被选中可独立操作的元素时,优先删除该元素。否则默认删除所有被选中的元素\n const deleteElement = () => {\n if (!activeElementIdList.value.length) return\n\n let newElementList: PPTElement[] = []\n if (activeGroupElementId.value) {\n newElementList = currentSlide.value.elements.filter(el => el.id !== activeGroupElementId.value)\n }\n else {\n newElementList = currentSlide.value.elements.filter(el => !activeElementIdList.value.includes(el.id))\n }\n\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n // 删除内面内全部元素(无论是否选中)\n const deleteAllElements = () => {\n if (!currentSlide.value.elements.length) return\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlide({ elements: [] })\n addHistorySnapshot()\n }\n\n return {\n deleteElement,\n deleteAllElements,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeElementList, handleElementId } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 判断当前选中的元素是否可以组合\n */\n const canCombine = computed(() => {\n if (activeElementList.value.length < 2) return false\n\n const firstGroupId = activeElementList.value[0].groupId\n if (!firstGroupId) return true\n\n const inSameGroup = activeElementList.value.every(el => (el.groupId && el.groupId) === firstGroupId)\n return !inSameGroup\n })\n\n /**\n * 组合当前选中的元素:给当前选中的元素赋予一个相同的分组ID\n */\n const combineElements = () => {\n if (!activeElementList.value.length) return\n\n // 生成一个新元素列表进行后续操作\n let newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n\n // 生成分组ID\n const groupId = nanoid(10)\n\n // 收集需要组合的元素列表,并赋上唯一分组ID\n const combineElementList: PPTElement[] = []\n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id)) {\n element.groupId = groupId\n combineElementList.push(element)\n }\n }\n\n // 确保该组合内所有元素成员的层级是连续的,具体操作方法为:\n // 先获取到该组合内最上层元素的层级,将本次需要组合的元素从新元素列表中移除,\n // 再根据最上层元素的层级位置,将上面收集到的需要组合的元素列表一起插入到新元素列表中合适的位置\n const combineElementMaxLevel = newElementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id)\n const combineElementIdList = combineElementList.map(_element => _element.id)\n newElementList = newElementList.filter(_element => !combineElementIdList.includes(_element.id))\n\n const insertLevel = combineElementMaxLevel - combineElementList.length + 1\n newElementList.splice(insertLevel, 0, ...combineElementList)\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n /**\n * 取消组合元素:移除选中元素的分组ID\n */\n const uncombineElements = () => {\n if (!activeElementList.value.length) return\n const hasElementInGroup = activeElementList.value.some(item => item.groupId)\n if (!hasElementInGroup) return\n \n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id) && element.groupId) delete element.groupId\n }\n slidesStore.updateSlide({ elements: newElementList })\n\n // 取消组合后,需要重置激活元素状态\n // 默认重置为当前正在操作的元素,如果不存在则重置为空\n const handleElementIdList = handleElementId.value ? [handleElementId.value] : []\n mainStore.setActiveElementIdList(handleElementIdList)\n\n addHistorySnapshot()\n }\n\n return {\n canCombine,\n combineElements,\n uncombineElements,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { copyText, readClipboard } from '@/utils/clipboard'\nimport { encrypt } from '@/utils/crypto'\nimport message from '@/utils/message'\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\nimport useDeleteElement from './useDeleteElement'\n\nexport default () => {\n const mainStore = useMainStore()\n const { activeElementIdList, activeElementList } = storeToRefs(mainStore)\n\n const { pasteTextClipboardData } = usePasteTextClipboardData()\n const { deleteElement } = useDeleteElement()\n\n // 将选中元素数据加密后复制到剪贴板\n const copyElement = () => {\n if (!activeElementIdList.value.length) return\n\n const text = encrypt(JSON.stringify({\n type: 'elements',\n data: activeElementList.value,\n }))\n\n copyText(text).then(() => {\n mainStore.setEditorareaFocus(true)\n })\n }\n\n // 将选中元素复制后删除(剪切)\n const cutElement = () => {\n copyElement()\n deleteElement()\n }\n\n // 尝试将剪贴板元素数据解密后进行粘贴\n const pasteElement = () => {\n readClipboard().then(text => {\n pasteTextClipboardData(text)\n }).catch(err => message.warning(err))\n }\n\n // 将选中元素复制后立刻粘贴\n const quickCopyElement = () => {\n copyElement()\n pasteElement()\n }\n\n return {\n copyElement,\n cutElement,\n pasteElement,\n quickCopyElement,\n }\n}","import { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\n\r\nexport default () => {\r\n const mainStore = useMainStore()\r\n const { currentSlide } = storeToRefs(useSlidesStore())\r\n const { hiddenElementIdList } = storeToRefs(mainStore)\r\n\r\n // 将当前页面全部元素设置为被选择状态\r\n const selectAllElement = () => {\r\n const unlockedElements = currentSlide.value.elements.filter(el => !el.lock && !hiddenElementIdList.value.includes(el.id))\r\n const newActiveElementIdList = unlockedElements.map(el => el.id)\r\n mainStore.setActiveElementIdList(newActiveElementIdList)\r\n }\r\n\r\n return {\r\n selectAllElement,\r\n }\r\n}","import { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport type { PPTElement } from '@/types/slides'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const slidesStore = useSlidesStore()\r\n const { activeElementIdList, activeGroupElementId } = storeToRefs(useMainStore())\r\n const { currentSlide } = storeToRefs(slidesStore)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 将元素向指定方向移动指定的距离\r\n * 组合元素成员中,存在被选中可独立操作的元素时,优先移动该元素。否则默认移动所有被选中的元素\r\n * @param command 移动方向\r\n * @param step 移动距离\r\n */\r\n const moveElement = (command: string, step = 1) => {\r\n let newElementList: PPTElement[] = []\r\n\r\n const move = (el: PPTElement) => {\r\n let { left, top } = el\r\n switch (command) {\r\n case KEYS.LEFT: \r\n left = left - step\r\n break\r\n case KEYS.RIGHT: \r\n left = left + step\r\n break\r\n case KEYS.UP: \r\n top = top - step\r\n break\r\n case KEYS.DOWN: \r\n top = top + step\r\n break\r\n default: break\r\n }\r\n return { ...el, left, top }\r\n }\r\n\r\n if (activeGroupElementId.value) {\r\n newElementList = currentSlide.value.elements.map(el => {\r\n return activeGroupElementId.value === el.id ? move(el) : el\r\n })\r\n }\r\n else {\r\n newElementList = currentSlide.value.elements.map(el => {\r\n return activeElementIdList.value.includes(el.id) ? move(el) : el\r\n })\r\n }\r\n\r\n slidesStore.updateSlide({ elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n moveElement,\r\n }\r\n}","import { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport { ElementOrderCommands } from '@/types/edit'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 获取组合元素层级范围\n * @param elementList 本页所有元素列表\n * @param combineElementList 组合元素列表\n */\n const getCombineElementLevelRange = (elementList: PPTElement[], combineElementList: PPTElement[]) => {\n return {\n minLevel: elementList.findIndex(_element => _element.id === combineElementList[0].id),\n maxLevel: elementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id),\n }\n }\n\n /**\n * 上移一层\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveUpElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\n if (element.groupId) {\n\n // 获取到该组合全部成员,以及所有成员的层级范围\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\n\n // 已经处在顶层,无法继续移动\n if (maxLevel === elementList.length - 1) return\n\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\n const nextElement = copyOfElementList[maxLevel + 1]\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n\n if (nextElement.groupId) {\n const nextCombineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\n copyOfElementList.splice(minLevel + nextCombineElementList.length, 0, ...movedElementList)\n }\n else copyOfElementList.splice(minLevel + 1, 0, ...movedElementList)\n }\n\n // 如果被操作的元素不是组合元素成员\n else {\n\n // 获取该元素在列表中的层级\n const level = elementList.findIndex(item => item.id === element.id)\n\n // 已经处在顶层,无法继续移动\n if (level === elementList.length - 1) return\n\n // 获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n const nextElement = copyOfElementList[level + 1]\n const movedElement = copyOfElementList.splice(level, 1)[0]\n\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\n if (nextElement.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\n copyOfElementList.splice(level + combineElementList.length, 0, movedElement)\n }\n else copyOfElementList.splice(level + 1, 0, movedElement)\n }\n\n return copyOfElementList\n }\n\n /**\n * 下移一层,操作方式同上移\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveDownElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n if (element.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\n if (minLevel === 0) return\n\n const prevElement = copyOfElementList[minLevel - 1]\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n\n if (prevElement.groupId) {\n const prevCombineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\n copyOfElementList.splice(minLevel - prevCombineElementList.length, 0, ...movedElementList)\n }\n else copyOfElementList.splice(minLevel - 1, 0, ...movedElementList)\n }\n\n else {\n const level = elementList.findIndex(item => item.id === element.id)\n if (level === 0) return\n\n const prevElement = copyOfElementList[level - 1]\n const movedElement = copyOfElementList.splice(level, 1)[0]\n\n if (prevElement.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\n copyOfElementList.splice(level - combineElementList.length, 0, movedElement)\n }\n else copyOfElementList.splice(level - 1, 0, movedElement)\n }\n\n return copyOfElementList\n }\n\n /**\n * 置顶层\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveTopElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\n if (element.groupId) {\n\n // 获取到该组合全部成员,以及所有成员的层级范围\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\n\n // 已经处在顶层,无法继续移动\n if (maxLevel === elementList.length - 1) return null\n\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表顶部\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n copyOfElementList.push(...movedElementList)\n }\n\n // 如果被操作的元素不是组合元素成员\n else {\n\n // 获取该元素在列表中的层级\n const level = elementList.findIndex(item => item.id === element.id)\n\n // 已经处在顶层,无法继续移动\n if (level === elementList.length - 1) return null\n\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表底部\n copyOfElementList.splice(level, 1)\n copyOfElementList.push(element)\n }\n\n return copyOfElementList\n }\n\n /**\n * 置底层,操作方式同置顶\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveBottomElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n if (element.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\n if (minLevel === 0) return\n\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n copyOfElementList.unshift(...movedElementList)\n }\n\n else {\n const level = elementList.findIndex(item => item.id === element.id)\n if (level === 0) return\n\n copyOfElementList.splice(level, 1)\n copyOfElementList.unshift(element)\n }\n\n return copyOfElementList\n }\n\n /**\n * 调整元素层级\n * @param element 需要调整层级的元素\n * @param command 调整命令:上移、下移、置顶、置底\n */\n const orderElement = (element: PPTElement, command: ElementOrderCommands) => {\n let newElementList\n \n if (command === ElementOrderCommands.UP) newElementList = moveUpElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.DOWN) newElementList = moveDownElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.TOP) newElementList = moveTopElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.BOTTOM) newElementList = moveBottomElement(currentSlide.value.elements, element)\n\n if (!newElementList) return\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n return {\n orderElement,\n }\n}","// 进入全屏\nexport const enterFullscreen = () => {\n const docElm = document.documentElement\n if (docElm.requestFullscreen) docElm.requestFullscreen() \n else if (docElm.mozRequestFullScreen) docElm.mozRequestFullScreen() \n else if (docElm.webkitRequestFullScreen) docElm.webkitRequestFullScreen()\n else if (docElm.msRequestFullscreen) docElm.msRequestFullscreen()\n}\n\n// 退出全屏\nexport const exitFullscreen = () => {\n if (document.exitFullscreen) document.exitFullscreen()\n else if (document.mozCancelFullScreen) document.mozCancelFullScreen()\n else if (document.webkitExitFullscreen) document.webkitExitFullscreen()\n else if (document.msExitFullscreen) document.msExitFullscreen()\n}\n\n// 判断是否全屏\nexport const isFullscreen = () => {\n const fullscreenElement = \n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement ||\n document.webkitCurrentFullScreenElement\n return !!fullscreenElement\n}","import { useScreenStore, useSlidesStore } from '@/store'\nimport { enterFullscreen, exitFullscreen, isFullscreen } from '@/utils/fullscreen'\n\nexport default () => {\n const screenStore = useScreenStore()\n const slidesStore = useSlidesStore()\n\n // 进入放映状态(从当前页开始)\n const enterScreening = () => {\n enterFullscreen()\n screenStore.setScreening(true)\n }\n\n // 进入放映状态(从第一页开始)\n const enterScreeningFromStart = () => {\n slidesStore.updateSlideIndex(0)\n enterScreening()\n }\n\n // 退出放映状态\n const exitScreening = () => {\n screenStore.setScreening(false)\n if (isFullscreen()) exitFullscreen()\n }\n\n return {\n enterScreening,\n enterScreeningFromStart,\n exitScreening,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\nexport default () => {\n const mainStore = useMainStore()\n const { canvasPercentage, canvasScale, canvasDragged } = storeToRefs(mainStore)\n\n const canvasScalePercentage = computed(() => Math.round(canvasScale.value * 100) + '%')\n\n /**\n * 缩放画布百分比\n * @param command 缩放命令:放大、缩小\n */\n const scaleCanvas = (command: '+' | '-') => {\n let percentage = canvasPercentage.value\n const step = 5\n const max = 200\n const min = 30\n if (command === '+' && percentage <= max) percentage += step\n if (command === '-' && percentage >= min) percentage -= step\n\n mainStore.setCanvasPercentage(percentage)\n }\n\n /**\n * 设置画布缩放比例\n * 但不是直接设置该值,而是通过设置画布可视区域百分比来动态计算\n * @param value 目标画布缩放比例\n */\n const setCanvasScalePercentage = (value: number) => {\n const percentage = Math.round(value / canvasScale.value * canvasPercentage.value) / 100\n mainStore.setCanvasPercentage(percentage)\n }\n\n /**\n * 重置画布尺寸和位置\n */\n const resetCanvas = () => {\n mainStore.setCanvasPercentage(90)\n if (canvasDragged) mainStore.setCanvasDragged(false)\n }\n\n return {\n canvasScalePercentage,\n setCanvasScalePercentage,\n scaleCanvas,\n resetCanvas,\n }\n}","import { onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { ElementOrderCommands } from '@/types/edit'\nimport { KEYS } from '@/configs/hotkey'\n\nimport useSlideHandler from './useSlideHandler'\nimport useLockElement from './useLockElement'\nimport useDeleteElement from './useDeleteElement'\nimport useCombineElement from './useCombineElement'\nimport useCopyAndPasteElement from './useCopyAndPasteElement'\nimport useSelectAllElement from './useSelectAllElement'\nimport useMoveElement from './useMoveElement'\nimport useOrderElement from './useOrderElement'\nimport useHistorySnapshot from './useHistorySnapshot'\nimport useScreening from './useScreening'\nimport useScaleCanvas from './useScaleCanvas'\n\nexport default () => {\n const mainStore = useMainStore()\n const keyboardStore = useKeyboardStore()\n const {\n activeElementIdList,\n disableHotkeys,\n handleElement,\n handleElementId,\n editorAreaFocus,\n thumbnailsFocus,\n showSearchPanel,\n } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(useSlidesStore())\n const { ctrlKeyState, shiftKeyState, spaceKeyState } = storeToRefs(keyboardStore)\n\n const {\n updateSlideIndex,\n copySlide,\n createSlide,\n deleteSlide,\n cutSlide,\n copyAndPasteSlide,\n selectAllSlide,\n } = useSlideHandler()\n\n const { combineElements, uncombineElements } = useCombineElement()\n const { deleteElement } = useDeleteElement()\n const { lockElement } = useLockElement()\n const { copyElement, cutElement, quickCopyElement } = useCopyAndPasteElement()\n const { selectAllElement } = useSelectAllElement()\n const { moveElement } = useMoveElement()\n const { orderElement } = useOrderElement()\n const { redo, undo } = useHistorySnapshot()\n const { enterScreening, enterScreeningFromStart } = useScreening()\n const { scaleCanvas, resetCanvas } = useScaleCanvas()\n\n const copy = () => {\n if (activeElementIdList.value.length) copyElement()\n else if (thumbnailsFocus.value) copySlide()\n }\n\n const cut = () => {\n if (activeElementIdList.value.length) cutElement()\n else if (thumbnailsFocus.value) cutSlide()\n }\n\n const quickCopy = () => {\n if (activeElementIdList.value.length) quickCopyElement()\n else if (thumbnailsFocus.value) copyAndPasteSlide()\n }\n\n const selectAll = () => {\n if (editorAreaFocus.value) selectAllElement()\n if (thumbnailsFocus.value) selectAllSlide()\n }\n\n const lock = () => {\n if (!editorAreaFocus.value) return\n lockElement()\n }\n const combine = () => {\n if (!editorAreaFocus.value) return\n combineElements()\n }\n\n const uncombine = () => {\n if (!editorAreaFocus.value) return\n uncombineElements()\n }\n\n const remove = () => {\n if (activeElementIdList.value.length) deleteElement()\n else if (thumbnailsFocus.value) deleteSlide()\n }\n\n const move = (key: string) => {\n if (activeElementIdList.value.length) moveElement(key)\n else if (key === KEYS.UP || key === KEYS.DOWN) updateSlideIndex(key)\n }\n\n const moveSlide = (key: string) => {\n if (key === KEYS.PAGEUP) updateSlideIndex(KEYS.UP)\n else if (key === KEYS.PAGEDOWN) updateSlideIndex(KEYS.DOWN)\n }\n\n const order = (command: ElementOrderCommands) => {\n if (!handleElement.value) return\n orderElement(handleElement.value, command)\n }\n\n const create = () => {\n if (!thumbnailsFocus.value) return\n createSlide()\n }\n\n const tabActiveElement = () => {\n if (!currentSlide.value.elements.length) return\n if (!handleElementId.value) {\n const firstElement = currentSlide.value.elements[0]\n mainStore.setActiveElementIdList([firstElement.id])\n return\n }\n const currentIndex = currentSlide.value.elements.findIndex(el => el.id === handleElementId.value)\n const nextIndex = currentIndex >= currentSlide.value.elements.length - 1 ? 0 : currentIndex + 1\n const nextElementId = currentSlide.value.elements[nextIndex].id\n\n mainStore.setActiveElementIdList([nextElementId])\n }\n\n const keydownListener = (e: KeyboardEvent) => {\n const { ctrlKey, shiftKey, altKey, metaKey } = e\n const ctrlOrMetaKeyActive = ctrlKey || metaKey\n \n const key = e.key.toUpperCase()\n\n if (ctrlOrMetaKeyActive && !ctrlKeyState.value) keyboardStore.setCtrlKeyState(true)\n if (shiftKey && !shiftKeyState.value) keyboardStore.setShiftKeyState(true)\n if (!disableHotkeys.value && key === KEYS.SPACE) keyboardStore.setSpaceKeyState(true)\n\n \n if (ctrlOrMetaKeyActive && key === KEYS.P) {\n e.preventDefault()\n mainStore.setDialogForExport('pdf')\n return\n }\n if (shiftKey && key === KEYS.F5) {\n e.preventDefault()\n enterScreening()\n keyboardStore.setShiftKeyState(false)\n return\n }\n if (key === KEYS.F5) {\n e.preventDefault()\n enterScreeningFromStart()\n return\n }\n if (ctrlKey && key === KEYS.F) {\n e.preventDefault()\n mainStore.setSearchPanelState(!showSearchPanel.value)\n return\n }\n \n if (!editorAreaFocus.value && !thumbnailsFocus.value) return \n\n if (ctrlOrMetaKeyActive && key === KEYS.C) {\n if (disableHotkeys.value) return\n e.preventDefault()\n copy()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.X) {\n if (disableHotkeys.value) return\n e.preventDefault()\n cut()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.D) {\n if (disableHotkeys.value) return\n e.preventDefault()\n quickCopy()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.Z) {\n if (disableHotkeys.value) return\n e.preventDefault()\n undo()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.Y) {\n if (disableHotkeys.value) return\n e.preventDefault()\n redo()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.A) {\n if (disableHotkeys.value) return\n e.preventDefault()\n selectAll()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.L) {\n if (disableHotkeys.value) return\n e.preventDefault()\n lock()\n }\n if (!shiftKey && ctrlOrMetaKeyActive && key === KEYS.G) {\n if (disableHotkeys.value) return\n e.preventDefault()\n combine()\n }\n if (shiftKey && ctrlOrMetaKeyActive && key === KEYS.G) {\n if (disableHotkeys.value) return\n e.preventDefault()\n uncombine()\n }\n if (altKey && key === KEYS.F) {\n if (disableHotkeys.value) return\n e.preventDefault()\n order(ElementOrderCommands.TOP)\n }\n if (altKey && key === KEYS.B) {\n if (disableHotkeys.value) return\n e.preventDefault()\n order(ElementOrderCommands.BOTTOM)\n }\n if (key === KEYS.DELETE || key === KEYS.BACKSPACE) {\n if (disableHotkeys.value) return\n e.preventDefault()\n remove()\n }\n if (key === KEYS.UP) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.UP)\n }\n if (key === KEYS.DOWN) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.DOWN)\n }\n if (key === KEYS.LEFT) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.LEFT)\n }\n if (key === KEYS.RIGHT) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.RIGHT)\n }\n if (key === KEYS.PAGEUP) {\n if (disableHotkeys.value) return\n e.preventDefault()\n moveSlide(KEYS.PAGEUP)\n }\n if (key === KEYS.PAGEDOWN) {\n if (disableHotkeys.value) return\n e.preventDefault()\n moveSlide(KEYS.PAGEDOWN)\n }\n if (key === KEYS.ENTER) {\n if (disableHotkeys.value) return\n e.preventDefault()\n create()\n }\n if (key === KEYS.MINUS) {\n if (disableHotkeys.value) return\n e.preventDefault()\n scaleCanvas('-')\n }\n if (key === KEYS.EQUAL) {\n if (disableHotkeys.value) return\n e.preventDefault()\n scaleCanvas('+')\n }\n if (key === KEYS.DIGIT_0) {\n if (disableHotkeys.value) return\n e.preventDefault()\n resetCanvas()\n }\n if (key === KEYS.TAB) {\n if (disableHotkeys.value) return\n e.preventDefault()\n tabActiveElement()\n }\n }\n \n const keyupListener = () => {\n if (ctrlKeyState.value) keyboardStore.setCtrlKeyState(false)\n if (shiftKeyState.value) keyboardStore.setShiftKeyState(false)\n if (spaceKeyState.value) keyboardStore.setSpaceKeyState(false)\n }\n\n onMounted(() => {\n document.addEventListener('keydown', keydownListener)\n document.addEventListener('keyup', keyupListener)\n window.addEventListener('blur', keyupListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n document.removeEventListener('keyup', keyupListener)\n window.removeEventListener('blur', keyupListener)\n })\n}","import { onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { getImageDataURL } from '@/utils/image'\nimport usePasteTextClipboardData from './usePasteTextClipboardData'\nimport useCreateElement from './useCreateElement'\n\nexport default () => {\n const { editorAreaFocus, thumbnailsFocus, disableHotkeys } = storeToRefs(useMainStore())\n\n const { pasteTextClipboardData } = usePasteTextClipboardData()\n const { createImageElement } = useCreateElement()\n\n // 粘贴图片到幻灯片元素\n const pasteImageFile = (imageFile: File) => {\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n }\n\n /**\n * 粘贴事件监听\n * @param e ClipboardEvent\n */\n const pasteListener = (e: ClipboardEvent) => {\n if (!editorAreaFocus.value && !thumbnailsFocus.value) return\n if (disableHotkeys.value) return\n\n if (!e.clipboardData) return\n\n const clipboardDataItems = e.clipboardData.items\n const clipboardDataFirstItem = clipboardDataItems[0]\n\n if (!clipboardDataFirstItem) return\n\n // 如果剪贴板内有图片,优先尝试读取图片\n for (const item of clipboardDataItems) {\n if (item.kind === 'file' && item.type.indexOf('image') !== -1) {\n const imageFile = item.getAsFile()\n if (imageFile) pasteImageFile(imageFile)\n return\n }\n }\n \n // 如果剪贴板内没有图片,但有文字内容,尝试解析文字内容\n if (clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\n clipboardDataFirstItem.getAsString(text => pasteTextClipboardData(text))\n }\n }\n\n onMounted(() => {\n document.addEventListener('paste', pasteListener)\n })\n onUnmounted(() => {\n document.removeEventListener('paste', pasteListener)\n })\n}","import { ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { parse, type Shape, type Element, type ChartItem } from 'pptxtojson'\nimport { nanoid } from 'nanoid'\nimport { useSlidesStore } from '@/store'\nimport { decrypt } from '@/utils/crypto'\nimport { type ShapePoolItem, SHAPE_LIST, SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\nimport message from '@/utils/message'\nimport type {\n Slide,\n TableCellStyle,\n TableCell,\n ChartType,\n ChartOptions,\n SlideBackground,\n PPTShapeElement,\n PPTLineElement,\n ShapeTextAlign,\n PPTTextElement,\n} from '@/types/slides'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { theme } = storeToRefs(useSlidesStore())\n\n const { addSlidesFromData, isEmptySlide } = useAddSlidesOrElements()\n\n const exporting = ref(false)\n\n // 导入pptist文件\n const importSpecificFile = (files: FileList, cover = false) => {\n const file = files[0]\n\n const reader = new FileReader()\n reader.addEventListener('load', () => {\n try {\n const slides = JSON.parse(decrypt(reader.result as string))\n if (cover) slidesStore.setSlides(slides)\n else if (isEmptySlide.value) slidesStore.setSlides(slides)\n else addSlidesFromData(slides)\n }\n catch {\n message.error('无法正确读取 / 解析该文件')\n }\n })\n reader.readAsText(file)\n }\n\n const parseLineElement = (el: Shape): PPTLineElement => {\n let start: [number, number] = [0, 0]\n let end: [number, number] = [0, 0]\n\n if (!el.isFlipV && !el.isFlipH) { // 右下\n start = [0, 0]\n end = [el.width, el.height]\n }\n else if (el.isFlipV && el.isFlipH) { // 左上\n start = [el.width, el.height]\n end = [0, 0]\n }\n else if (el.isFlipV && !el.isFlipH) { // 右上\n start = [0, el.height]\n end = [el.width, 0]\n }\n else { // 左下\n start = [el.width, 0]\n end = [0, el.height]\n }\n return {\n type: 'line',\n id: nanoid(10),\n width: el.borderWidth || 1,\n left: el.left,\n top: el.top,\n start,\n end,\n style: el.borderType === 'solid' ? 'solid' : 'dashed',\n color: el.borderColor,\n points: ['', el.shapType === 'straightConnector1' ? 'arrow' : '']\n }\n }\n\n // 导入PPTX文件\n const importPPTXFile = (files: FileList) => {\n const file = files[0]\n if (!file) return\n\n exporting.value = true\n\n const shapeList: ShapePoolItem[] = []\n for (const item of SHAPE_LIST) {\n shapeList.push(...item.children)\n }\n \n const reader = new FileReader()\n reader.onload = async e => {\n const json = await parse(e.target!.result as ArrayBuffer, {\n slideFactor: 75 / 914400,\n fontsizeFactor: 100 / 98,\n })\n\n const width = json.size.width\n const scale = VIEWPORT_SIZE / width\n\n const slides: Slide[] = []\n for (const item of json.slides) {\n const { type, value } = item.fill\n let background: SlideBackground\n if (type === 'image') {\n background = {\n type: 'image',\n image: value.picBase64,\n imageSize: 'cover',\n }\n }\n else if (type === 'gradient') {\n background = {\n type: 'gradient',\n gradientType: 'linear',\n gradientColor: [value.colors[0].color, value.colors[value.colors.length - 1].color],\n gradientRotate: value.rot,\n }\n }\n else {\n background = {\n type: 'solid',\n color: value,\n }\n }\n\n const slide: Slide = {\n id: nanoid(10),\n elements: [],\n background,\n }\n\n const parseElements = (elements: Element[]) => {\n for (const el of elements) {\n el.width = el.width * scale\n el.height = el.height * scale\n el.left = el.left * scale\n el.top = el.top * scale\n \n if (el.type === 'text') {\n const textEl: PPTTextElement = {\n type: 'text',\n id: nanoid(10),\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n rotate: el.rotate,\n defaultFontName: theme.value.fontName,\n defaultColor: theme.value.fontColor,\n content: el.content,\n lineHeight: 1,\n outline: {\n color: el.borderColor,\n width: el.borderWidth,\n style: el.borderType === 'solid' ? 'solid' : 'dashed',\n },\n fill: el.fillColor,\n vertical: el.isVertical,\n }\n if (el.shadow) textEl.shadow = el.shadow\n slide.elements.push(textEl)\n }\n else if (el.type === 'image') {\n slide.elements.push({\n type: 'image',\n id: nanoid(10),\n src: el.src,\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n fixedRatio: true,\n rotate: el.rotate,\n })\n }\n else if (el.type === 'audio') {\n slide.elements.push({\n type: 'audio',\n id: nanoid(10),\n src: el.blob,\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n rotate: 0,\n fixedRatio: false,\n color: theme.value.themeColor,\n loop: false,\n autoplay: false,\n })\n }\n else if (el.type === 'video') {\n slide.elements.push({\n type: 'video',\n id: nanoid(10),\n src: (el.blob || el.src)!,\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n rotate: 0,\n autoplay: false,\n })\n }\n else if (el.type === 'shape') {\n if (el.shapType === 'line' || /Connector/.test(el.shapType)) {\n const lineElement = parseLineElement(el)\n slide.elements.push(lineElement)\n }\n else {\n const shape = shapeList.find(item => item.pptxShapeType === el.shapType)\n\n const vAlignMap: { [key: string]: ShapeTextAlign } = {\n 'mid': 'middle',\n 'down': 'bottom',\n 'up': 'top',\n }\n \n const element: PPTShapeElement = {\n type: 'shape',\n id: nanoid(10),\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: el.fillColor || 'none',\n fixedRatio: false,\n rotate: el.rotate,\n outline: {\n color: el.borderColor,\n width: el.borderWidth,\n style: el.borderType === 'solid' ? 'solid' : 'dashed',\n },\n text: {\n content: el.content,\n defaultFontName: theme.value.fontName,\n defaultColor: theme.value.fontColor,\n align: vAlignMap[el.vAlign] || 'middle',\n },\n flipH: el.isFlipH,\n flipV: el.isFlipV,\n }\n if (el.shadow) element.shadow = el.shadow\n \n if (shape) {\n element.path = shape.path\n element.viewBox = shape.viewBox\n \n if (shape.pathFormula) {\n element.pathFormula = shape.pathFormula\n element.viewBox = [el.width, el.height]\n \n const pathFormula = SHAPE_PATH_FORMULAS[shape.pathFormula]\n if ('editable' in pathFormula) {\n element.path = pathFormula.formula(el.width, el.height, pathFormula.defaultValue)\n element.keypoint = pathFormula.defaultValue\n }\n else element.path = pathFormula.formula(el.width, el.height)\n }\n }\n if (el.shapType === 'custom') {\n element.special = true\n element.path = el.path!\n element.viewBox = [el.width, el.height]\n }\n \n slide.elements.push(element)\n }\n }\n else if (el.type === 'table') {\n const row = el.data.length\n const col = el.data[0].length\n \n const style: TableCellStyle = {\n fontname: theme.value.fontName,\n color: theme.value.fontColor,\n }\n const data: TableCell[][] = []\n for (let i = 0; i < row; i++) {\n const rowCells: TableCell[] = []\n for (let j = 0; j < col; j++) {\n const cellData = el.data[i][j]\n rowCells.push({\n id: nanoid(10),\n colspan: cellData.colSpan || 1,\n rowspan: cellData.rowSpan || 1,\n text: cellData.text,\n style,\n })\n }\n data.push(rowCells)\n }\n \n const colWidths: number[] = new Array(col).fill(1 / col)\n \n slide.elements.push({\n type: 'table',\n id: nanoid(10),\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n colWidths,\n rotate: 0,\n data,\n outline: {\n width: 2,\n style: 'solid',\n color: '#eeece1',\n },\n theme: {\n color: el.themeColor,\n rowHeader: true,\n rowFooter: false,\n colHeader: false,\n colFooter: false,\n },\n cellMinHeight: 36,\n })\n }\n else if (el.type === 'chart') {\n let labels: string[]\n let legends: string[]\n let series: number[][]\n \n if (el.chartType === 'scatterChart' || el.chartType === 'bubbleChart') {\n const data = el.data\n labels = data[0].map(item => item + '')\n legends = ['系列1']\n series = [data[1]]\n }\n else {\n const data = el.data as ChartItem[]\n labels = Object.values(data[0].xlabels)\n legends = data.map(item => item.key)\n series = data.map(item => item.values.map(v => v.y))\n }\n \n const options: ChartOptions = {}\n \n let chartType: ChartType = 'bar'\n\n switch (el.chartType) {\n case 'barChart':\n case 'bar3DChart':\n chartType = 'bar'\n if (el.barDir === 'bar') options.horizontalBars = true\n if (el.grouping === 'stacked' || el.grouping === 'percentStacked') options.stackBars = true\n break\n case 'lineChart':\n case 'line3DChart':\n case 'areaChart':\n case 'area3DChart':\n case 'scatterChart':\n case 'bubbleChart':\n chartType = 'line'\n if (el.chartType === 'areaChart' || el.chartType === 'area3DChart') options.showArea = true\n if (el.chartType === 'scatterChart' || el.chartType === 'bubbleChart') options.showLine = false\n break\n case 'pieChart':\n case 'pie3DChart':\n case 'doughnutChart':\n chartType = 'pie'\n if (el.chartType === 'doughnutChart') options.donut = true\n break\n default:\n }\n \n slide.elements.push({\n type: 'chart',\n id: nanoid(10),\n chartType: chartType,\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n rotate: 0,\n themeColor: [theme.value.themeColor],\n gridColor: theme.value.fontColor,\n data: {\n labels,\n legends,\n series,\n },\n options,\n })\n }\n else if (el.type === 'group' || el.type === 'diagram') {\n const elements = el.elements.map(_el => ({\n ..._el,\n left: _el.left + el.left,\n top: _el.top + el.top,\n }))\n parseElements(elements)\n }\n }\n }\n parseElements(item.elements)\n slides.push(slide)\n }\n if (isEmptySlide.value) slidesStore.setSlides(slides)\n else addSlidesFromData(slides)\n exporting.value = false\n }\n reader.readAsArrayBuffer(file)\n }\n\n return {\n importSpecificFile,\n importPPTXFile,\n exporting,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a0322054\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"hotkey-doc\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = { class: \"label\" }\nconst _hoisted_4 = { class: \"value\" }\n\nimport { HOTKEY_DOC } from '@/configs/hotkey' \n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'HotkeyDoc',\n setup(__props) {\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(HOTKEY_DOC), (item) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (hotkey) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"hotkey-item\",\n key: hotkey.label\n }, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(hotkey.label), 1),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(hotkey.value), 1)\n ]))\n }), 128))\n ], 64))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./HotkeyDoc.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./HotkeyDoc.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./HotkeyDoc.vue?vue&type=style&index=0&id=a0322054&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a0322054\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64bedb34\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"accept\"]\n\nimport { ref } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FileInput',\n props: {\n accept: { default: 'image/*' }\n },\n emits: [\"change\"],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst emit = __emit\n\nconst inputRef = ref()\n\nconst handleClick = () => {\n if (!inputRef.value) return\n inputRef.value.value = ''\n inputRef.value.click()\n}\nconst handleChange = (e: Event) => {\n const files = (e.target as HTMLInputElement).files\n if (files) emit('change', files)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"file-input\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (handleClick()))\n }, [\n _renderSlot(_ctx.$slots, \"default\"),\n _createElementVNode(\"input\", {\n class: \"input\",\n type: \"file\",\n name: \"upload\",\n ref_key: \"inputRef\",\n ref: inputRef,\n accept: _ctx.accept,\n onChange: _cache[0] || (_cache[0] = $event => handleChange($event))\n }, null, 40, _hoisted_1)\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./FileInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FileInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FileInput.vue?vue&type=style&index=0&id=64bedb34&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-64bedb34\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a5c6b41c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"fullscreen-spin\"\n}\nconst _hoisted_2 = { class: \"spin\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"spinner\" }, null, -1))\nconst _hoisted_4 = { class: \"text\" }\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FullscreenSpin',\n props: {\n loading: { type: Boolean, default: false },\n tip: { default: '' }\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.tip), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./FullscreenSpin.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FullscreenSpin.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FullscreenSpin.vue?vue&type=style&index=0&id=a5c6b41c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a5c6b41c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, vShow as _vShow, normalizeClass as _normalizeClass, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-749dadac\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\n\nimport { computed, ref, type CSSProperties } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Drawer',\n props: {\n visible: { type: Boolean },\n width: { default: 320 },\n contentStyle: {},\n placement: { default: 'right' }\n },\n emits: [\"update:visible\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst contentVisible = ref(false)\n\nconst contentStyle = computed(() => {\n return {\n width: props.width + 'px',\n ...(props.contentStyle || {})\n }\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconClose = _resolveComponent(\"IconClose\")!\n\n return (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n _createVNode(_Transition, {\n name: `drawer-slide-${_ctx.placement}`,\n onAfterLeave: _cache[1] || (_cache[1] = ($event: any) => (contentVisible.value = false)),\n onBeforeEnter: _cache[2] || (_cache[2] = ($event: any) => (contentVisible.value = true))\n }, {\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"div\", {\n class: _normalizeClass(['drawer', _ctx.placement]),\n style: _normalizeStyle({ width: props.width + 'px' })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"title\"),\n _createElementVNode(\"span\", {\n class: \"close-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('update:visible', false)))\n }, [\n _createVNode(_component_IconClose)\n ])\n ]),\n (contentVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"content\",\n style: _normalizeStyle(contentStyle.value)\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 6), [\n [_vShow, _ctx.visible]\n ])\n ]),\n _: 3\n }, 8, [\"name\"])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./Drawer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Drawer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Drawer.vue?vue&type=style&index=0&id=749dadac&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-749dadac\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, withKeys as _withKeys, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a97ba0dc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"prefix\" }\nconst _hoisted_2 = [\"disabled\", \"value\", \"placeholder\"]\nconst _hoisted_3 = { class: \"suffix\" }\n\nimport { ref } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Input',\n props: {\n value: {},\n disabled: { type: Boolean, default: false },\n placeholder: { default: '' }\n },\n emits: [\"update:value\", \"input\", \"change\", \"blur\", \"focus\", \"enter\"],\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\n\n\nconst emit = __emit\n\nconst focused = ref(false)\n\nconst handleInput = (e: Event) => {\n emit('update:value', (e.target as HTMLInputElement).value)\n}\nconst handleBlur = (e: Event) => {\n focused.value = false\n emit('blur', e)\n}\nconst handleFocus = (e: Event) => {\n focused.value = true\n emit('focus', e)\n}\n\nconst inputRef = ref()\nconst focus = () => {\n if (inputRef.value) inputRef.value.focus()\n}\n\n__expose({\n focus,\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"input\", {\n 'disabled': _ctx.disabled,\n 'focused': focused.value,\n }])\n }, [\n _createElementVNode(\"span\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"prefix\")\n ]),\n _createElementVNode(\"input\", {\n type: \"text\",\n ref_key: \"inputRef\",\n ref: inputRef,\n disabled: _ctx.disabled,\n value: _ctx.value,\n placeholder: _ctx.placeholder,\n onInput: _cache[0] || (_cache[0] = $event => handleInput($event)),\n onFocus: _cache[1] || (_cache[1] = $event => handleFocus($event)),\n onBlur: _cache[2] || (_cache[2] = $event => handleBlur($event)),\n onChange: _cache[3] || (_cache[3] = $event => emit('change', $event)),\n onKeydown: _cache[4] || (_cache[4] = _withKeys($event => emit('enter', $event), [\"enter\"]))\n }, null, 40, _hoisted_2),\n _createElementVNode(\"span\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"suffix\")\n ])\n ], 2))\n}\n}\n\n})","\n\n\n\n","import script from \"./Input.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Input.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Input.vue?vue&type=style&index=0&id=a97ba0dc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a97ba0dc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { type CSSProperties, onMounted, ref, watch, computed } from 'vue'\nimport tippy, { type Instance, type Placement } from 'tippy.js'\n\nimport 'tippy.js/animations/scale.css'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Popover',\n props: {\n value: { type: Boolean, default: false },\n trigger: { default: 'click' },\n placement: { default: 'bottom' },\n appendTo: {},\n contentStyle: {},\n center: { type: Boolean, default: false }\n },\n emits: [\"update:value\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst instance = ref()\nconst triggerRef = ref()\nconst contentRef = ref()\nconst contentVisible = ref(false)\n\nconst contentStyle = computed(() => {\n return props.contentStyle || {}\n})\n\nwatch(() => props.value, () => {\n if (!instance.value) return\n if (props.value) instance.value.show()\n else instance.value.hide()\n})\n\nonMounted(() => {\n instance.value = tippy(triggerRef.value!, {\n content: contentRef.value!,\n allowHTML: true,\n trigger: props.trigger,\n placement: props.placement,\n interactive: true,\n appendTo: props.appendTo || document.body,\n maxWidth: 'none',\n offset: [0, 8],\n duration: 200,\n animation: 'scale',\n theme: 'popover',\n onShow() {\n contentVisible.value = true\n },\n onShown() {\n if (!props.value) emit('update:value', true)\n },\n onHidden() {\n if (props.value) emit('update:value', false)\n contentVisible.value = false\n },\n })\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"popover\", { 'center': _ctx.center }]),\n ref_key: \"triggerRef\",\n ref: triggerRef\n }, [\n _createElementVNode(\"div\", {\n class: \"popover-content\",\n style: _normalizeStyle(contentStyle.value),\n ref_key: \"contentRef\",\n ref: contentRef\n }, [\n (contentVisible.value)\n ? _renderSlot(_ctx.$slots, \"content\", { key: 0 })\n : _createCommentVNode(\"\", true)\n ], 4),\n _renderSlot(_ctx.$slots, \"default\")\n ], 2))\n}\n}\n\n})","\n\n\n\n\n\n","import script from \"./Popover.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Popover.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Popover.vue?vue&type=style&index=0&id=70fabe9a&lang=scss&scoped=true\"\nimport \"./Popover.vue?vue&type=style&index=1&id=70fabe9a&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-70fabe9a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PopoverMenuItem',\n props: {\n center: { type: Boolean, default: false }\n },\n emits: [\"click\"],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst emit = __emit\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"popover-menu-item\", { 'center': _ctx.center }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('click')))\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2))\n}\n}\n\n})","\n\n\n\n","import script from \"./PopoverMenuItem.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PopoverMenuItem.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./PopoverMenuItem.vue?vue&type=style&index=0&id=2f137c4f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2f137c4f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0b9f8c7b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"editor-header\" }\nconst _hoisted_2 = { class: \"left\" }\nconst _hoisted_3 = { class: \"menu-item\" }\nconst _hoisted_4 = { class: \"title\" }\nconst _hoisted_5 = [\"title\"]\nconst _hoisted_6 = { class: \"right\" }\nconst _hoisted_7 = { class: \"group-menu-item\" }\nconst _hoisted_8 = { class: \"arrow-btn\" }\nconst _hoisted_9 = {\n class: \"github-link\",\n href: \"https://github.com/pipipi-pikachu/PPTist\",\n target: \"_blank\"\n}\nconst _hoisted_10 = { class: \"menu-item\" }\n\nimport { nextTick, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport useScreening from '@/hooks/useScreening'\nimport useImport from '@/hooks/useImport'\nimport useSlideHandler from '@/hooks/useSlideHandler'\nimport type { DialogForExportTypes } from '@/types/export'\n\nimport HotkeyDoc from './HotkeyDoc.vue'\nimport FileInput from '@/components/FileInput.vue'\nimport FullscreenSpin from '@/components/FullscreenSpin.vue'\nimport Drawer from '@/components/Drawer.vue'\nimport Input from '@/components/Input.vue'\nimport Popover from '@/components/Popover.vue'\nimport PopoverMenuItem from '@/components/PopoverMenuItem.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { title } = storeToRefs(slidesStore)\nconst { enterScreening, enterScreeningFromStart } = useScreening()\nconst { importSpecificFile, importPPTXFile, exporting } = useImport()\nconst { resetSlides } = useSlideHandler()\n\nconst mainMenuVisible = ref(false)\nconst hotkeyDrawerVisible = ref(false)\nconst editingTitle = ref(false)\nconst titleInputRef = ref>()\nconst titleValue = ref('')\n\nconst startEditTitle = () => {\n titleValue.value = title.value\n editingTitle.value = true\n nextTick(() => titleInputRef.value?.focus())\n}\n\nconst handleUpdateTitle = () => {\n slidesStore.setTitle(titleValue.value)\n editingTitle.value = false\n}\n\nconst goLink = (url: string) => {\n window.open(url)\n mainMenuVisible.value = false\n}\n\nconst setDialogForExport = (type: DialogForExportTypes) => {\n mainStore.setDialogForExport(type)\n mainMenuVisible.value = false\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconHamburgerButton = _resolveComponent(\"IconHamburgerButton\")!\n const _component_IconPpt = _resolveComponent(\"IconPpt\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_IconDownload = _resolveComponent(\"IconDownload\")!\n const _component_IconGithub = _resolveComponent(\"IconGithub\")!\n const _directive_tooltip = _resolveDirective(\"tooltip\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(Popover, {\n trigger: \"click\",\n placement: \"bottom-start\",\n value: mainMenuVisible.value,\n \"onUpdate:value\": _cache[7] || (_cache[7] = ($event: any) => ((mainMenuVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(FileInput, {\n accept: \".pptist\",\n onChange: _cache[0] || (_cache[0] = files => {\n _unref(importSpecificFile)(files)\n mainMenuVisible.value = false\n })\n }, {\n default: _withCtx(() => [\n _createVNode(PopoverMenuItem, null, {\n default: _withCtx(() => [\n _createTextVNode(\"导入 pptist 文件\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(FileInput, {\n accept: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n onChange: _cache[1] || (_cache[1] = files => {\n _unref(importPPTXFile)(files)\n mainMenuVisible.value = false\n })\n }, {\n default: _withCtx(() => [\n _createVNode(PopoverMenuItem, null, {\n default: _withCtx(() => [\n _createTextVNode(\"导入 pptx 文件(测试版)\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (setDialogForExport('pptx')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"导出文件\")\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[3] || (_cache[3] = ($event: any) => {_unref(resetSlides)(); mainMenuVisible.value = false})\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"重置幻灯片\")\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (goLink('https://github.com/pipipi-pikachu/PPTist/issues')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"意见反馈\")\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (goLink('https://github.com/pipipi-pikachu/PPTist/blob/master/doc/Q&A.md')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"常见问题\")\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[6] || (_cache[6] = ($event: any) => {mainMenuVisible.value = false; hotkeyDrawerVisible.value = true})\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"快捷键\")\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_IconHamburgerButton, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_4, [\n (editingTitle.value)\n ? (_openBlock(), _createBlock(Input, {\n key: 0,\n class: \"title-input\",\n ref_key: \"titleInputRef\",\n ref: titleInputRef,\n value: titleValue.value,\n \"onUpdate:value\": _cache[8] || (_cache[8] = ($event: any) => ((titleValue).value = $event)),\n onBlur: _cache[9] || (_cache[9] = ($event: any) => (handleUpdateTitle()))\n }, null, 8, [\"value\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"title-text\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (startEditTitle())),\n title: _unref(title)\n }, _toDisplayString(_unref(title)), 9, _hoisted_5))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"menu-item\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_unref(enterScreening)()))\n }, [\n _createVNode(_component_IconPpt, { class: \"icon\" })\n ])), [\n [_directive_tooltip, '幻灯片放映']\n ]),\n _createVNode(Popover, {\n trigger: \"click\",\n center: \"\"\n }, {\n content: _withCtx(() => [\n _createVNode(PopoverMenuItem, {\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_unref(enterScreeningFromStart)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"从头开始\")\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_unref(enterScreening)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"从当前页开始\")\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_IconDown, { class: \"arrow\" })\n ])\n ]),\n _: 1\n })\n ]),\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"menu-item\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (setDialogForExport('pptx')))\n }, [\n _createVNode(_component_IconDownload, { class: \"icon\" })\n ])), [\n [_directive_tooltip, '导出']\n ]),\n _createElementVNode(\"a\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_component_IconGithub, { class: \"icon\" })\n ])\n ])\n ]),\n _createVNode(Drawer, {\n width: 320,\n visible: hotkeyDrawerVisible.value,\n \"onUpdate:visible\": _cache[15] || (_cache[15] = ($event: any) => ((hotkeyDrawerVisible).value = $event)),\n placement: \"right\"\n }, {\n default: _withCtx(() => [\n _createVNode(HotkeyDoc)\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(FullscreenSpin, {\n loading: _unref(exporting),\n tip: \"正在导入...\"\n }, null, 8, [\"loading\"])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0b9f8c7b&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0b9f8c7b\"]])\n\nexport default __exports__","import type { InjectionKey, Ref } from 'vue'\n\nexport type SlideScale = Ref\nexport type SlideId = Ref\nexport type RadioGroupValue = {\n value: Ref\n updateValue: (value: string) => void\n}\n\nexport const injectKeySlideScale: InjectionKey = Symbol()\nexport const injectKeySlideId: InjectionKey = Symbol()\nexport const injectKeyRadioGroupValue: InjectionKey = Symbol()","// 清除文字选区\nexport const removeAllRanges = () => {\n const selection = window.getSelection()\n selection && selection.removeAllRanges()\n}","import { ref, computed, onMounted, onUnmounted, watch, type Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nexport default (canvasRef: Ref) => {\n const viewportLeft = ref(0)\n const viewportTop = ref(0)\n\n const mainStore = useMainStore()\n const { canvasPercentage, canvasDragged } = storeToRefs(mainStore)\n const { viewportRatio } = storeToRefs(useSlidesStore())\n\n // 初始化画布可视区域的位置\n const initViewportPosition = () => {\n if (!canvasRef.value) return\n const canvasWidth = canvasRef.value.clientWidth\n const canvasHeight = canvasRef.value.clientHeight\n\n if (canvasHeight / canvasWidth > viewportRatio.value) {\n const viewportActualWidth = canvasWidth * (canvasPercentage.value / 100)\n mainStore.setCanvasScale(viewportActualWidth / VIEWPORT_SIZE)\n viewportLeft.value = (canvasWidth - viewportActualWidth) / 2\n viewportTop.value = (canvasHeight - viewportActualWidth * viewportRatio.value) / 2\n }\n else {\n const viewportActualHeight = canvasHeight * (canvasPercentage.value / 100)\n mainStore.setCanvasScale(viewportActualHeight / (VIEWPORT_SIZE * viewportRatio.value))\n viewportLeft.value = (canvasWidth - viewportActualHeight / viewportRatio.value) / 2\n viewportTop.value = (canvasHeight - viewportActualHeight) / 2\n }\n }\n\n // 更新画布可视区域的位置\n const setViewportPosition = (newValue: number, oldValue: number) => {\n if (!canvasRef.value) return\n const canvasWidth = canvasRef.value.clientWidth\n const canvasHeight = canvasRef.value.clientHeight\n\n const newViewportActualWidth = canvasWidth * (newValue / 100)\n const oldViewportActualWidth = canvasWidth * (oldValue / 100)\n const newViewportActualHeight = canvasHeight * (newValue / 100)\n const oldViewportActualHeight = canvasHeight * (oldValue / 100)\n\n if (canvasHeight / canvasWidth > viewportRatio.value) {\n mainStore.setCanvasScale(newViewportActualWidth / VIEWPORT_SIZE)\n }\n else {\n mainStore.setCanvasScale(newViewportActualHeight / (VIEWPORT_SIZE * viewportRatio.value))\n }\n viewportLeft.value = viewportLeft.value - (newViewportActualWidth - oldViewportActualWidth) / 2\n viewportTop.value = viewportTop.value - (newViewportActualHeight - oldViewportActualHeight) / 2\n }\n\n // 可视区域缩放或比例变化时,重置/更新可视区域的位置\n watch(canvasPercentage, setViewportPosition)\n watch(viewportRatio, initViewportPosition)\n\n // 画布拖拽状态改变(复原)时,重置可视区域的位置\n watch(canvasDragged, () => {\n if (!canvasDragged.value) initViewportPosition()\n })\n\n // 画布可视区域位置和大小的样式\n const viewportStyles = computed(() => ({\n width: VIEWPORT_SIZE,\n height: VIEWPORT_SIZE * viewportRatio.value,\n left: viewportLeft.value,\n top: viewportTop.value,\n }))\n\n // 监听画布尺寸发生变化时,重置可视区域的位置\n const resizeObserver = new ResizeObserver(initViewportPosition)\n\n onMounted(() => {\n if (canvasRef.value) resizeObserver.observe(canvasRef.value)\n })\n onUnmounted(() => {\n if (canvasRef.value) resizeObserver.unobserve(canvasRef.value)\n })\n\n // 拖拽画布\n const dragViewport = (e: MouseEvent) => {\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originLeft = viewportLeft.value\n const originTop = viewportTop.value\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n viewportLeft.value = originLeft + (currentPageX - startPageX)\n viewportTop.value = originTop + (currentPageY - startPageY)\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n mainStore.setCanvasDragged(true)\n }\n }\n\n return {\n viewportStyles,\n dragViewport,\n }\n}","import { type Ref, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport { getElementRange } from '@/utils/element'\n\nexport default (elementList: Ref, viewportRef: Ref) => {\n const mainStore = useMainStore()\n const { canvasScale, hiddenElementIdList } = storeToRefs(mainStore)\n\n const mouseSelectionVisible = ref(false)\n const mouseSelectionQuadrant = ref(1)\n const mouseSelection = ref({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n })\n\n // 更新鼠标框选范围\n const updateMouseSelection = (e: MouseEvent) => {\n if (!viewportRef.value) return\n\n let isMouseDown = true\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const minSelectionRange = 5\n \n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const left = (startPageX - viewportRect.x) / canvasScale.value\n const top = (startPageY - viewportRect.y) / canvasScale.value\n\n // 确定框选的起始位置和其他默认值初始化\n mouseSelection.value = {\n top: top,\n left: left,\n width: 0,\n height: 0,\n }\n mouseSelectionVisible.value = false\n mouseSelectionQuadrant.value = 4\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const offsetWidth = (currentPageX - startPageX) / canvasScale.value\n const offsetHeight = (currentPageY - startPageY) / canvasScale.value\n\n const width = Math.abs(offsetWidth)\n const height = Math.abs(offsetHeight)\n\n if ( width < minSelectionRange || height < minSelectionRange ) return\n \n // 计算鼠标框选(移动)的方向\n // 按四个象限的位置区分,如右下角为第四象限\n let quadrant = 0\n if ( offsetWidth > 0 && offsetHeight > 0 ) quadrant = 4\n else if ( offsetWidth < 0 && offsetHeight < 0 ) quadrant = 2\n else if ( offsetWidth > 0 && offsetHeight < 0 ) quadrant = 1\n else if ( offsetWidth < 0 && offsetHeight > 0 ) quadrant = 3\n\n // 更新框选范围\n mouseSelection.value = {\n ...mouseSelection.value,\n width: width,\n height: height,\n }\n mouseSelectionVisible.value = true\n mouseSelectionQuadrant.value = quadrant\n }\n\n document.onmouseup = () => {\n document.onmousemove = null\n document.onmouseup = null\n isMouseDown = false\n\n // 计算画布中的元素是否处在鼠标选择范围中,处在范围中的元素设置为被选中状态\n let inRangeElementList: PPTElement[] = []\n for (let i = 0; i < elementList.value.length; i++) {\n const element = elementList.value[i]\n const mouseSelectionLeft = mouseSelection.value.left\n const mouseSelectionTop = mouseSelection.value.top\n const mouseSelectionWidth = mouseSelection.value.width\n const mouseSelectionHeight = mouseSelection.value.height\n\n const { minX, maxX, minY, maxY } = getElementRange(element)\n\n // 计算元素是否处在框选范围内时,四个框选方向的计算方式有差异\n let isInclude = false\n if (mouseSelectionQuadrant.value === 4) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > mouseSelectionTop && \n maxY < mouseSelectionTop + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 2) {\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 1) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 3) {\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \n minY > mouseSelectionTop && \n maxY < mouseSelectionTop + mouseSelectionHeight\n }\n\n // 被锁定或被隐藏的元素即使在范围内,也不需要设置为选中状态\n if (isInclude && !element.lock && !hiddenElementIdList.value.includes(element.id)) inRangeElementList.push(element)\n }\n\n // 如果范围内有组合元素的成员,需要该组全部成员都处在范围内,才会被设置为选中状态\n inRangeElementList = inRangeElementList.filter(inRangeElement => {\n if (inRangeElement.groupId) {\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\n const groupElementList = elementList.value.filter(element => element.groupId === inRangeElement.groupId)\n return groupElementList.every(groupElement => inRangeElementIdList.includes(groupElement.id))\n }\n return true\n })\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\n mainStore.setActiveElementIdList(inRangeElementIdList)\n\n mouseSelectionVisible.value = false\n }\n }\n\n return {\n mouseSelection,\n mouseSelectionVisible,\n mouseSelectionQuadrant,\n updateMouseSelection,\n }\n}","import { onMounted, onUnmounted, type Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { getImageDataURL } from '@/utils/image'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nexport default (elementRef: Ref) => {\n const { disableHotkeys } = storeToRefs(useMainStore())\n\n const { createImageElement, createTextElement } = useCreateElement()\n\n // 拖拽元素到画布中\n const handleDrop = (e: DragEvent) => {\n if (!e.dataTransfer || e.dataTransfer.items.length === 0) return\n const dataTransferItem = e.dataTransfer.items[0]\n\n // 检查事件对象中是否存在图片,存在则插入图片,否则继续检查是否存在文字,存在则插入文字\n if (dataTransferItem.kind === 'file' && dataTransferItem.type.indexOf('image') !== -1) {\n const imageFile = dataTransferItem.getAsFile()\n if (imageFile) {\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n }\n }\n else if (dataTransferItem.kind === 'string' && dataTransferItem.type === 'text/plain') {\n dataTransferItem.getAsString(text => {\n if (disableHotkeys.value) return\n const string = parseText2Paragraphs(text)\n createTextElement({\n left: 0,\n top: 0,\n width: 600,\n height: 50,\n }, { content: string })\n })\n }\n }\n\n onMounted(() => {\n elementRef.value && elementRef.value.addEventListener('drop', handleDrop)\n\n document.ondragleave = e => e.preventDefault()\n document.ondrop = e => e.preventDefault()\n document.ondragenter = e => e.preventDefault()\n document.ondragover = e => e.preventDefault()\n })\n onUnmounted(() => {\n elementRef.value && elementRef.value.removeEventListener('drop', handleDrop)\n\n document.ondragleave = null\n document.ondrop = null\n document.ondragenter = null\n document.ondragover = null\n })\n}","import type { Ref } from 'vue'\nimport { useSlidesStore } from '@/store'\nimport type { PPTElement, PPTLineElement, PPTVideoElement, PPTAudioElement, PPTChartElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n/**\n * 计算给定坐标到原点连线的弧度\n * @param x 坐标x\n * @param y 坐标y\n */\nconst getAngleFromCoordinate = (x: number, y: number) => {\n const radian = Math.atan2(x, y)\n const angle = 180 / Math.PI * radian\n return angle\n}\n\nexport default (\n elementList: Ref,\n viewportRef: Ref,\n canvasScale: Ref,\n) => {\n const slidesStore = useSlidesStore()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 旋转元素\n const rotateElement = (e: MouseEvent | TouchEvent, element: Exclude) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n \n let isMouseDown = true\n let angle = 0\n const elOriginRotate = element.rotate || 0\n\n const elLeft = element.left\n const elTop = element.top\n const elWidth = element.width\n const elHeight = element.height\n\n // 元素中心点(旋转中心点)\n const centerX = elLeft + elWidth / 2\n const centerY = elTop + elHeight / 2\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n if (!isMouseDown) return\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n \n // 计算当前鼠标位置相对元素中心点连线的角度(弧度)\n const mouseX = (currentPageX - viewportRect.left) / canvasScale.value\n const mouseY = (currentPageY - viewportRect.top) / canvasScale.value\n const x = mouseX - centerX\n const y = centerY - mouseY\n\n angle = getAngleFromCoordinate(x, y)\n\n // 靠近45倍数的角度时有吸附效果\n const sorptionRange = 5\n if ( Math.abs(angle) <= sorptionRange ) angle = 0\n else if ( angle > 0 && Math.abs(angle - 45) <= sorptionRange ) angle -= (angle - 45)\n else if ( angle < 0 && Math.abs(angle + 45) <= sorptionRange ) angle -= (angle + 45)\n else if ( angle > 0 && Math.abs(angle - 90) <= sorptionRange ) angle -= (angle - 90)\n else if ( angle < 0 && Math.abs(angle + 90) <= sorptionRange ) angle -= (angle + 90)\n else if ( angle > 0 && Math.abs(angle - 135) <= sorptionRange ) angle -= (angle - 135)\n else if ( angle < 0 && Math.abs(angle + 135) <= sorptionRange ) angle -= (angle + 135)\n else if ( angle > 0 && Math.abs(angle - 180) <= sorptionRange ) angle -= (angle - 180)\n else if ( angle < 0 && Math.abs(angle + 180) <= sorptionRange ) angle -= (angle + 180)\n\n elementList.value = elementList.value.map(el => element.id === el.id ? { ...el, rotate: angle } : el)\n }\n\n const handleMouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n if (elOriginRotate === angle) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\n }\n }\n\n return {\n rotateElement,\n }\n}","export const ELEMENT_TYPE_ZH: { [key: string]: string } = {\n text: '文本',\n image: '图片',\n shape: '形状',\n line: '线条',\n chart: '图表',\n table: '表格',\n video: '视频',\n audio: '音频',\n latex: '公式',\n}\n\nexport const MIN_SIZE: { [key: string]: number } = {\n text: 20,\n image: 20,\n shape: 15,\n chart: 200,\n table: 20,\n video: 250,\n audio: 20,\n latex: 20,\n}","import type { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport type { PPTElement, PPTImageElement, PPTLineElement, PPTShapeElement } from '@/types/slides'\nimport { OperateResizeHandlers, type AlignmentLineProps, type MultiSelectRange } from '@/types/edit'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { MIN_SIZE } from '@/configs/element'\nimport { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport { type AlignLine, uniqAlignLines } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface RotateElementData {\n left: number\n top: number\n width: number\n height: number\n}\n\n/**\n * 计算旋转后的元素八个缩放点的位置\n * @param element 元素原始位置大小信息\n * @param angle 旋转角度\n */\nconst getRotateElementPoints = (element: RotateElementData, angle: number) => {\n const { left, top, width, height } = element\n\n const radius = Math.sqrt( Math.pow(width, 2) + Math.pow(height, 2) ) / 2\n const auxiliaryAngle = Math.atan(height / width) * 180 / Math.PI\n\n const tlbraRadian = (180 - angle - auxiliaryAngle) * Math.PI / 180\n const trblaRadian = (auxiliaryAngle - angle) * Math.PI / 180\n const taRadian = (90 - angle) * Math.PI / 180\n const raRadian = angle * Math.PI / 180\n\n const halfWidth = width / 2\n const halfHeight = height / 2\n\n const middleLeft = left + halfWidth\n const middleTop = top + halfHeight\n\n const leftTopPoint = {\n left: middleLeft + radius * Math.cos(tlbraRadian),\n top: middleTop - radius * Math.sin(tlbraRadian),\n }\n const topPoint = {\n left: middleLeft + halfHeight * Math.cos(taRadian),\n top: middleTop - halfHeight * Math.sin(taRadian),\n }\n const rightTopPoint = {\n left: middleLeft + radius * Math.cos(trblaRadian),\n top: middleTop - radius * Math.sin(trblaRadian),\n }\n const rightPoint = {\n left: middleLeft + halfWidth * Math.cos(raRadian),\n top: middleTop + halfWidth * Math.sin(raRadian),\n }\n const rightBottomPoint = {\n left: middleLeft - radius * Math.cos(tlbraRadian),\n top: middleTop + radius * Math.sin(tlbraRadian),\n }\n const bottomPoint = {\n left: middleLeft - halfHeight * Math.sin(raRadian),\n top: middleTop + halfHeight * Math.cos(raRadian),\n }\n const leftBottomPoint = {\n left: middleLeft - radius * Math.cos(trblaRadian),\n top: middleTop + radius * Math.sin(trblaRadian),\n }\n const leftPoint = {\n left: middleLeft - halfWidth * Math.cos(raRadian),\n top: middleTop - halfWidth * Math.sin(raRadian),\n }\n\n return { leftTopPoint, topPoint, rightTopPoint, rightPoint, rightBottomPoint, bottomPoint, leftBottomPoint, leftPoint }\n}\n\n/**\n * 获取元素某缩放点相对的另一个点的位置,如:【上】对应【下】、【左上】对应【右下】\n * @param direction 当前操作的缩放点\n * @param points 旋转后的元素八个缩放点的位置\n */\nconst getOppositePoint = (direction: OperateResizeHandlers, points: ReturnType): { left: number; top: number } => {\n const oppositeMap = {\n [OperateResizeHandlers.RIGHT_BOTTOM]: points.leftTopPoint,\n [OperateResizeHandlers.LEFT_BOTTOM]: points.rightTopPoint,\n [OperateResizeHandlers.LEFT_TOP]: points.rightBottomPoint,\n [OperateResizeHandlers.RIGHT_TOP]: points.leftBottomPoint,\n [OperateResizeHandlers.TOP]: points.bottomPoint,\n [OperateResizeHandlers.BOTTOM]: points.topPoint,\n [OperateResizeHandlers.LEFT]: points.rightPoint,\n [OperateResizeHandlers.RIGHT]: points.leftPoint,\n }\n return oppositeMap[direction]\n}\n\nexport default (\n elementList: Ref,\n alignmentLines: Ref,\n canvasScale: Ref,\n) => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(mainStore)\n const { viewportRatio } = storeToRefs(slidesStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 缩放元素\n const scaleElement = (e: MouseEvent | TouchEvent, element: Exclude, command: OperateResizeHandlers) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\n let isMouseDown = true\n mainStore.setScalingState(true)\n\n const elOriginLeft = element.left\n const elOriginTop = element.top\n const elOriginWidth = element.width\n const elOriginHeight = element.height\n\n const originTableCellMinHeight = element.type === 'table' ? element.cellMinHeight : 0\n \n const elRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n const rotateRadian = Math.PI * elRotate / 180\n\n const fixedRatio = ctrlOrShiftKeyActive.value || ('fixedRatio' in element && element.fixedRatio)\n const aspectRatio = elOriginWidth / elOriginHeight\n\n const startPageX = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : e.pageY\n\n // 元素最小缩放限制\n const minSize = MIN_SIZE[element.type] || 20\n const getSizeWithinRange = (size: number) => size < minSize ? minSize : size\n const getHeightWithinRange = (height: number) => {\n const minHeight = minSize / aspectRatio\n return height < minHeight ? minHeight : height\n }\n\n let points: ReturnType\n let baseLeft = 0\n let baseTop = 0\n let horizontalLines: AlignLine[] = []\n let verticalLines: AlignLine[] = []\n\n // 旋转后的元素进行缩放时,引入基点的概念,以当前操作的缩放点相对的点为基点\n // 例如拖动右下角缩放时,左上角为基点,需要保持左上角不变然后修改其他的点的位置来达到所放的效果\n if ('rotate' in element && element.rotate) {\n const { left, top, width, height } = element\n points = getRotateElementPoints({ left, top, width, height }, elRotate)\n const oppositePoint = getOppositePoint(command, points)\n\n baseLeft = oppositePoint.left\n baseTop = oppositePoint.top\n }\n\n // 未旋转的元素具有缩放时的对齐吸附功能,在此处收集对齐对齐吸附线\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边\n // 其中线条和被旋转过的元素不参与吸附对齐\n else {\n const edgeWidth = VIEWPORT_SIZE\n const edgeHeight = VIEWPORT_SIZE * viewportRatio.value\n const isActiveGroupElement = element.id === activeGroupElementId.value\n \n for (const el of elementList.value) {\n if ('rotate' in el && el.rotate) continue\n if (el.type === 'line') continue\n if (isActiveGroupElement && el.id === element.id) continue\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\n\n const left = el.left\n const top = el.top\n const width = el.width\n const height = el.height\n const right = left + width\n const bottom = top + height\n\n const topLine: AlignLine = { value: top, range: [left, right] }\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\n\n horizontalLines.push(topLine, bottomLine)\n verticalLines.push(leftLine, rightLine)\n }\n\n // 画布可视区域的四个边界、水平中心、垂直中心\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\n\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\n \n horizontalLines = uniqAlignLines(horizontalLines)\n verticalLines = uniqAlignLines(verticalLines)\n }\n \n // 对齐吸附方法\n // 将收集到的对齐吸附线与计算的目标元素当前的位置大小相关数据做对比,差值小于设定的值时执行自动缩放校正\n // 水平和垂直两个方向需要分开计算\n const alignedAdsorption = (currentX: number | null, currentY: number | null) => {\n const sorptionRange = 5\n\n const _alignmentLines: AlignmentLineProps[] = []\n let isVerticalAdsorbed = false\n let isHorizontalAdsorbed = false\n const correctionVal = { offsetX: 0, offsetY: 0 }\n \n if (currentY || currentY === 0) {\n for (let i = 0; i < horizontalLines.length; i++) {\n const { value, range } = horizontalLines[i]\n const min = Math.min(...range, currentX || 0)\n const max = Math.max(...range, currentX || 0)\n \n if (Math.abs(currentY - value) < sorptionRange && !isHorizontalAdsorbed) {\n correctionVal.offsetY = currentY - value\n isHorizontalAdsorbed = true\n _alignmentLines.push({ type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100 })\n }\n }\n }\n if (currentX || currentX === 0) {\n for (let i = 0; i < verticalLines.length; i++) {\n const { value, range } = verticalLines[i]\n const min = Math.min(...range, (currentY || 0))\n const max = Math.max(...range, (currentY || 0))\n\n if (Math.abs(currentX - value) < sorptionRange && !isVerticalAdsorbed) {\n correctionVal.offsetX = currentX - value\n isVerticalAdsorbed = true\n _alignmentLines.push({ type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100 })\n }\n }\n }\n alignmentLines.value = _alignmentLines\n return correctionVal\n }\n\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n if (!isMouseDown) return\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n const x = currentPageX - startPageX\n const y = currentPageY - startPageY\n\n let width = elOriginWidth\n let height = elOriginHeight\n let left = elOriginLeft\n let top = elOriginTop\n \n // 元素被旋转的情况下,需要根据元素旋转的角度,重新计算需要缩放的距离(鼠标按下后移动的距离)\n if (elRotate) {\n const revisedX = (Math.cos(rotateRadian) * x + Math.sin(rotateRadian) * y) / canvasScale.value\n let revisedY = (Math.cos(rotateRadian) * y - Math.sin(rotateRadian) * x) / canvasScale.value\n\n // 锁定宽高比例(仅四个角可能触发,四条边不会触发)\n // 以水平方向上缩放的距离为基础,计算垂直方向上的缩放距离,保持二者具有相同的缩放比例\n if (fixedRatio) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) revisedY = revisedX / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) revisedY = -revisedX / aspectRatio\n }\n\n // 根据不同的操作点分别计算元素缩放后的大小和位置\n // 需要注意:\n // 此处计算的位置需要在后面重新进行校正,因为旋转后再缩放事实上会改变元素基点的位置(虽然视觉上基点保持不动,但这是【旋转】+【移动】共同作用的结果)\n // 但此处计算的大小不需要重新校正,因为前面已经重新计算需要缩放的距离,相当于大小已经经过了校正\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n height = getHeightWithinRange(elOriginHeight + revisedY)\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n height = getHeightWithinRange(elOriginHeight + revisedY)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n height = getHeightWithinRange(elOriginHeight - revisedY)\n left = elOriginLeft - (width - elOriginWidth)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n height = getHeightWithinRange(elOriginHeight - revisedY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.TOP) {\n height = getSizeWithinRange(elOriginHeight - revisedY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n height = getSizeWithinRange(elOriginHeight + revisedY)\n }\n else if (command === OperateResizeHandlers.LEFT) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n }\n\n // 获取当前元素的基点坐标,与初始状态时的基点坐标进行对比,并计算差值进行元素位置的校正\n const currentPoints = getRotateElementPoints({ width, height, left, top }, elRotate)\n const currentOppositePoint = getOppositePoint(command, currentPoints)\n const currentBaseLeft = currentOppositePoint.left\n const currentBaseTop = currentOppositePoint.top\n\n const offsetX = currentBaseLeft - baseLeft\n const offsetY = currentBaseTop - baseTop\n\n left = left - offsetX\n top = top - offsetY\n }\n\n // 元素未被旋转的情况下,正常计算新的位置大小即可,无需复杂的校正等工作\n // 额外需要处理对齐吸附相关的操作\n // 锁定宽高比例相关的操作同上,不再赘述\n else {\n let moveX = x / canvasScale.value\n let moveY = y / canvasScale.value\n\n if (fixedRatio) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) moveY = moveX / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) moveY = -moveX / aspectRatio\n }\n\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + elOriginHeight + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = moveY * aspectRatio\n else moveY = moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth + moveX)\n height = getHeightWithinRange(elOriginHeight + moveY)\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + elOriginHeight + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = -moveY * aspectRatio\n else moveY = -moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth - moveX)\n height = getHeightWithinRange(elOriginHeight + moveY)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = moveY * aspectRatio\n else moveY = moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth - moveX)\n height = getHeightWithinRange(elOriginHeight - moveY)\n left = elOriginLeft - (width - elOriginWidth)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = -moveY * aspectRatio\n else moveY = -moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth + moveX)\n height = getHeightWithinRange(elOriginHeight - moveY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.LEFT) {\n const { offsetX } = alignedAdsorption(elOriginLeft + moveX, null)\n moveX = moveX - offsetX\n width = getSizeWithinRange(elOriginWidth - moveX)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n const { offsetX } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, null)\n moveX = moveX - offsetX\n width = getSizeWithinRange(elOriginWidth + moveX)\n }\n else if (command === OperateResizeHandlers.TOP) {\n const { offsetY } = alignedAdsorption(null, elOriginTop + moveY)\n moveY = moveY - offsetY\n height = getSizeWithinRange(elOriginHeight - moveY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n const { offsetY } = alignedAdsorption(null, elOriginTop + elOriginHeight + moveY)\n moveY = moveY - offsetY\n height = getSizeWithinRange(elOriginHeight + moveY)\n }\n }\n \n elementList.value = elementList.value.map(el => {\n if (element.id !== el.id) return el\n if (el.type === 'shape' && 'pathFormula' in el && el.pathFormula) {\n const pathFormula = SHAPE_PATH_FORMULAS[el.pathFormula]\n\n let path = ''\n if ('editable' in pathFormula) path = pathFormula.formula(width, height, el.keypoint!)\n else path = pathFormula.formula(width, height)\n\n return {\n ...el, left, top, width, height,\n viewBox: [width, height],\n path,\n }\n }\n if (el.type === 'table') {\n let cellMinHeight = originTableCellMinHeight + (height - elOriginHeight) / el.data.length\n cellMinHeight = cellMinHeight < 36 ? 36 : cellMinHeight\n\n if (cellMinHeight === originTableCellMinHeight) return { ...el, left, width }\n return {\n ...el, left, top, width, height,\n cellMinHeight: cellMinHeight < 36 ? 36 : cellMinHeight,\n }\n }\n return { ...el, left, top, width, height }\n })\n }\n\n const handleMouseup = (e: MouseEvent | TouchEvent) => {\n isMouseDown = false\n \n document.ontouchmove = null\n document.ontouchend = null\n document.onmousemove = null\n document.onmouseup = null\n\n alignmentLines.value = []\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n \n if (startPageX === currentPageX && startPageY === currentPageY) return\n \n slidesStore.updateSlide({ elements: elementList.value })\n mainStore.setScalingState(false)\n \n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\n }\n }\n\n // 多选元素缩放\n const scaleMultiElement = (e: MouseEvent, range: MultiSelectRange, command: OperateResizeHandlers) => {\n let isMouseDown = true\n \n const { minX, maxX, minY, maxY } = range\n const operateWidth = maxX - minX\n const operateHeight = maxY - minY\n const aspectRatio = operateWidth / operateHeight\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n \n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const x = (currentPageX - startPageX) / canvasScale.value\n let y = (currentPageY - startPageY) / canvasScale.value\n\n // 锁定宽高比例,逻辑同上\n if (ctrlOrShiftKeyActive.value) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) y = x / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) y = -x / aspectRatio\n }\n\n // 所有选中元素的整体范围\n let currentMinX = minX\n let currentMaxX = maxX\n let currentMinY = minY\n let currentMaxY = maxY\n\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n currentMaxX = maxX + x\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n currentMinX = minX + x\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n currentMinX = minX + x\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n currentMaxX = maxX + x\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.TOP) {\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT) {\n currentMinX = minX + x\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n currentMaxX = maxX + x\n }\n\n // 所有选中元素的整体宽高\n const currentOppositeWidth = currentMaxX - currentMinX\n const currentOppositeHeight = currentMaxY - currentMinY\n\n // 当前正在操作元素宽高占所有选中元素的整体宽高的比例\n let widthScale = currentOppositeWidth / operateWidth\n let heightScale = currentOppositeHeight / operateHeight\n\n if (widthScale <= 0) widthScale = 0\n if (heightScale <= 0) heightScale = 0\n \n // 根据前面计算的比例,计算并修改所有选中元素的位置大小\n elementList.value = elementList.value.map(el => {\n if ((el.type === 'image' || el.type === 'shape') && activeElementIdList.value.includes(el.id)) {\n const originElement = originElementList.find(originEl => originEl.id === el.id) as PPTImageElement | PPTShapeElement\n return {\n ...el,\n width: originElement.width * widthScale,\n height: originElement.height * heightScale,\n left: currentMinX + (originElement.left - minX) * widthScale,\n top: currentMinY + (originElement.top - minY) * heightScale,\n }\n }\n return el\n })\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n if (startPageX === e.pageX && startPageY === e.pageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n scaleElement,\n scaleMultiElement,\n }\n}","export const enum ClipPathTypes {\n RECT = 'rect',\n ELLIPSE = 'ellipse',\n POLYGON = 'polygon',\n}\n\nexport const enum ClipPaths {\n RECT = 'rect',\n ROUNDRECT = 'roundRect',\n ELLIPSE = 'ellipse',\n TRIANGLE = 'triangle',\n PENTAGON = 'pentagon',\n RHOMBUS = 'rhombus',\n STAR = 'star',\n}\n\ninterface ClipPath {\n [key: string]: {\n name: string\n type: ClipPathTypes\n style: string\n radius?: string\n createPath?: (width: number, height: number) => string\n }\n}\n\nexport const CLIPPATHS: ClipPath = {\n rect: {\n name: '矩形',\n type: ClipPathTypes.RECT,\n radius: '0',\n style: '',\n },\n rect2: {\n name: '矩形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L 0 ${height} Z`\n },\n },\n rect3: {\n name: '矩形3',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L ${width * 0.2} ${height} L 0 ${height * 0.8} Z`\n },\n },\n roundRect: {\n name: '圆角矩形',\n type: ClipPathTypes.RECT,\n radius: '10px',\n style: 'inset(0 0 0 0 round 10px 10px 10px 10px)',\n },\n ellipse: {\n name: '圆形',\n type: ClipPathTypes.ELLIPSE,\n style: 'ellipse(50% 50% at 50% 50%)',\n },\n triangle: {\n name: '三角形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 0% 100%, 100% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L 0 ${height} L ${width} ${height} Z`\n },\n },\n triangle2: {\n name: '三角形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 100%, 0% 0%, 100% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} ${height} L 0 0 L ${width} 0 Z`\n },\n },\n triangle3: {\n name: '三角形3',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 0% 100%, 100% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L 0 ${height} L ${width} ${height} Z`\n },\n },\n rhombus: {\n name: '菱形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width} ${height * 0.5} L ${width * 0.5} ${height} L 0 ${height * 0.5} Z`\n },\n },\n pentagon: {\n name: '五边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width} ${0.38 * height} L ${0.82 * width} ${height} L ${0.18 * width} ${height} L 0 ${0.38 * height} Z`\n },\n },\n hexagon: {\n name: '六边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.2} 0 L ${width * 0.8} 0 L ${width} ${height * 0.5} L ${width * 0.8} ${height} L ${width * 0.2} ${height} L 0 ${height * 0.5} Z`\n },\n },\n heptagon: {\n name: '七边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 90% 20%, 100% 60%, 75% 100%, 25% 100%, 0% 60%, 10% 20%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width * 0.9} ${height * 0.2} L ${width} ${height * 0.6} L ${width * 0.75} ${height} L ${width * 0.25} ${height} L 0 ${height * 0.6} L ${width * 0.1} ${height * 0.2} Z`\n },\n },\n octagon: {\n name: '八边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} 0 L ${width * 0.7} 0 L ${width} ${height * 0.3} L ${width} ${height * 0.7} L ${width * 0.7} ${height} L ${width * 0.3} ${height} L 0 ${height * 0.7} L 0 ${height * 0.3} Z`\n },\n },\n chevron: {\n name: 'V形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.75} 0 L ${width} ${height * 0.5} L ${width * 0.75} ${height} L 0 ${height} L ${width * 0.25} ${height * 0.5} L 0 0 Z`\n },\n },\n point: {\n name: '点',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.75} 0 L ${width} ${height * 0.5} L ${width * 0.75} ${height} L 0 ${height} Z`\n },\n },\n arrow: {\n name: '箭头',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 20%, 60% 20%, 60% 0%, 100% 50%, 60% 100%, 60% 80%, 0% 80%)',\n createPath: (width: number, height: number) => {\n return `M 0 ${height * 0.2} L ${width * 0.6} ${height * 0.2} L ${width * 0.6} 0 L ${width} ${height * 0.5} L ${width * 0.6} ${height} L ${width * 0.6} ${height * 0.8} L 0 ${height * 0.8} Z`\n },\n },\n parallelogram: {\n name: '平行四边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} 0 L ${width} 0 L ${width * 0.7} ${height} L 0 ${height} Z`\n },\n },\n parallelogram2: {\n name: '平行四边形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} ${height} L ${width} ${height} L ${width * 0.7} 0 L 0 0 Z`\n },\n },\n trapezoid: {\n name: '梯形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.25} 0 L ${width * 0.75} 0 L ${width} ${height} L 0 ${height} Z`\n },\n },\n trapezoid2: {\n name: '梯形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width} 0 L ${width * 0.75} ${height} L ${width * 0.25} ${height} Z`\n },\n },\n}","import type { Ref } from 'vue'\nimport { uniq } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\n\nexport default (\n elementList: Ref,\n moveElement: (e: MouseEvent | TouchEvent, element: PPTElement) => void,\n) => {\n const mainStore = useMainStore()\n const { activeElementIdList, activeGroupElementId, handleElementId, editorAreaFocus } = storeToRefs(mainStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n // 选中元素\n // startMove 表示是否需要再选中操作后进入到开始移动的状态\n const selectElement = (e: MouseEvent | TouchEvent, element: PPTElement, startMove = true) => {\n if (!editorAreaFocus.value) mainStore.setEditorareaFocus(true)\n\n // 如果目标元素当前未被选中,则将他设为选中状态\n // 此时如果按下Ctrl键或Shift键,则进入多选状态,将当前已选中的元素和目标元素一起设置为选中状态,否则仅将目标元素设置为选中状态\n // 如果目标元素是分组成员,需要将该组合的其他元素一起设置为选中状态\n if (!activeElementIdList.value.includes(element.id)) {\n let newActiveIdList: string[] = []\n\n if (ctrlOrShiftKeyActive.value) {\n newActiveIdList = [...activeElementIdList.value, element.id]\n }\n else newActiveIdList = [element.id]\n \n if (element.groupId) {\n const groupMembersId: string[] = []\n elementList.value.forEach((el: PPTElement) => {\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\n })\n newActiveIdList = [...newActiveIdList, ...groupMembersId]\n }\n\n mainStore.setActiveElementIdList(uniq(newActiveIdList))\n mainStore.setHandleElementId(element.id)\n }\n\n // 如果目标元素已被选中,且按下了Ctrl键或Shift键,则取消其被选中状态\n // 除非目标元素是最后的一个被选中元素,或者目标元素所在的组合是最后一组选中组合\n // 如果目标元素是分组成员,需要将该组合的其他元素一起取消选中状态\n else if (ctrlOrShiftKeyActive.value) {\n let newActiveIdList: string[] = []\n\n if (element.groupId) {\n const groupMembersId: string[] = []\n elementList.value.forEach((el: PPTElement) => {\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\n })\n newActiveIdList = activeElementIdList.value.filter(id => !groupMembersId.includes(id))\n }\n else {\n newActiveIdList = activeElementIdList.value.filter(id => id !== element.id)\n }\n\n if (newActiveIdList.length > 0) {\n mainStore.setActiveElementIdList(newActiveIdList)\n }\n }\n\n // 如果目标元素已被选中,同时目标元素不是当前操作元素,则将其设置为当前操作元素\n else if (handleElementId.value !== element.id) {\n mainStore.setHandleElementId(element.id)\n }\n\n // 如果目标元素已被选中,同时也是当前操作元素,那么当目标元素在该状态下再次被点击时,将被设置为多选元素中的激活成员\n else if (activeGroupElementId.value !== element.id) {\n const startPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const startPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n ;(e.target as HTMLElement).onmouseup = (e: MouseEvent) => {\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) {\n mainStore.setActiveGroupElementId(element.id)\n ;(e.target as HTMLElement).onmouseup = null\n }\n }\n }\n\n if (startMove) moveElement(e, element)\n }\n\n return {\n selectElement,\n }\n}\n","import type { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport type { AlignmentLineProps } from '@/types/edit'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { getRectRotatedRange, uniqAlignLines, type AlignLine } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default (\n elementList: Ref,\n alignmentLines: Ref,\n canvasScale: Ref,\n) => {\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(useMainStore())\n const { shiftKeyState } = storeToRefs(useKeyboardStore())\n const { viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const dragElement = (e: MouseEvent | TouchEvent, element: PPTElement) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\n if (!activeElementIdList.value.includes(element.id)) return\n let isMouseDown = true\n\n const edgeWidth = VIEWPORT_SIZE\n const edgeHeight = VIEWPORT_SIZE * viewportRatio.value\n \n const sorptionRange = 5\n\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\n const originActiveElementList = originElementList.filter(el => activeElementIdList.value.includes(el.id))\n \n const elOriginLeft = element.left\n const elOriginTop = element.top\n const elOriginWidth = element.width\n const elOriginHeight = ('height' in element && element.height) ? element.height : 0\n const elOriginRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n \n const startPageX = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : e.pageY\n\n let isMisoperation: boolean | null = null\n\n const isActiveGroupElement = element.id === activeGroupElementId.value\n\n // 收集对齐对齐吸附线\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边,水平中心、垂直中心\n // 其中线条和被旋转过的元素需要重新计算他们在画布中的中心点位置的范围\n let horizontalLines: AlignLine[] = []\n let verticalLines: AlignLine[] = []\n\n for (const el of elementList.value) {\n if (el.type === 'line') continue\n if (isActiveGroupElement && el.id === element.id) continue\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\n\n let left, top, width, height\n if ('rotate' in el && el.rotate) {\n const { xRange, yRange } = getRectRotatedRange({\n left: el.left,\n top: el.top,\n width: el.width,\n height: el.height,\n rotate: el.rotate,\n })\n left = xRange[0]\n top = yRange[0]\n width = xRange[1] - xRange[0]\n height = yRange[1] - yRange[0]\n }\n else {\n left = el.left\n top = el.top\n width = el.width\n height = el.height\n }\n \n const right = left + width\n const bottom = top + height\n const centerX = top + height / 2\n const centerY = left + width / 2\n\n const topLine: AlignLine = { value: top, range: [left, right] }\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\n const horizontalCenterLine: AlignLine = { value: centerX, range: [left, right] }\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\n const verticalCenterLine: AlignLine = { value: centerY, range: [top, bottom] }\n\n horizontalLines.push(topLine, bottomLine, horizontalCenterLine)\n verticalLines.push(leftLine, rightLine, verticalCenterLine)\n }\n\n // 画布可视区域的四个边界、水平中心、垂直中心\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\n\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\n \n // 对齐吸附线去重\n horizontalLines = uniqAlignLines(horizontalLines)\n verticalLines = uniqAlignLines(verticalLines)\n\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n // 如果鼠标滑动距离过小,则将操作判定为误操作:\n // 如果误操作标记为null,表示是第一次触发移动,需要计算当前是否是误操作\n // 如果误操作标记为true,表示当前还处在误操作范围内,但仍然需要继续计算检查后续操作是否还处于误操作\n // 如果误操作标记为false,表示已经脱离了误操作范围,不需要再次计算\n if (isMisoperation !== false) {\n isMisoperation = Math.abs(startPageX - currentPageX) < sorptionRange && \n Math.abs(startPageY - currentPageY) < sorptionRange\n }\n if (!isMouseDown || isMisoperation) return\n \n let moveX = (currentPageX - startPageX) / canvasScale.value\n let moveY = (currentPageY - startPageY) / canvasScale.value\n\n if (shiftKeyState.value) {\n if (Math.abs(moveX) > Math.abs(moveY)) moveY = 0\n if (Math.abs(moveX) < Math.abs(moveY)) moveX = 0\n }\n\n // 基础目标位置\n let targetLeft = elOriginLeft + moveX\n let targetTop = elOriginTop + moveY\n\n // 计算目标元素在画布中的位置范围,用于吸附对齐\n // 需要区分单选和多选两种情况,其中多选状态下需要计算多选元素的整体范围;单选状态下需要继续区分线条、普通元素、旋转后的普通元素三种情况\n let targetMinX: number, targetMaxX: number, targetMinY: number, targetMaxY: number\n\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\n if (elOriginRotate) {\n const { xRange, yRange } = getRectRotatedRange({\n left: targetLeft,\n top: targetTop,\n width: elOriginWidth,\n height: elOriginHeight,\n rotate: elOriginRotate,\n })\n targetMinX = xRange[0]\n targetMaxX = xRange[1]\n targetMinY = yRange[0]\n targetMaxY = yRange[1]\n }\n else if (element.type === 'line') {\n targetMinX = targetLeft\n targetMaxX = targetLeft + Math.max(element.start[0], element.end[0])\n targetMinY = targetTop\n targetMaxY = targetTop + Math.max(element.start[1], element.end[1])\n }\n else {\n targetMinX = targetLeft\n targetMaxX = targetLeft + elOriginWidth\n targetMinY = targetTop\n targetMaxY = targetTop + elOriginHeight\n }\n }\n else {\n const leftValues = []\n const topValues = []\n const rightValues = []\n const bottomValues = []\n \n for (let i = 0; i < originActiveElementList.length; i++) {\n const element = originActiveElementList[i]\n const left = element.left + moveX\n const top = element.top + moveY\n const width = element.width\n const height = ('height' in element && element.height) ? element.height : 0\n const rotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n\n if ('rotate' in element && element.rotate) {\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\n leftValues.push(xRange[0])\n topValues.push(yRange[0])\n rightValues.push(xRange[1])\n bottomValues.push(yRange[1])\n }\n else if (element.type === 'line') {\n leftValues.push(left)\n topValues.push(top)\n rightValues.push(left + Math.max(element.start[0], element.end[0]))\n bottomValues.push(top + Math.max(element.start[1], element.end[1]))\n }\n else {\n leftValues.push(left)\n topValues.push(top)\n rightValues.push(left + width)\n bottomValues.push(top + height)\n }\n }\n\n targetMinX = Math.min(...leftValues)\n targetMaxX = Math.max(...rightValues)\n targetMinY = Math.min(...topValues)\n targetMaxY = Math.max(...bottomValues)\n }\n \n const targetCenterX = targetMinX + (targetMaxX - targetMinX) / 2\n const targetCenterY = targetMinY + (targetMaxY - targetMinY) / 2\n\n // 将收集到的对齐吸附线与计算的目标元素位置范围做对比,二者的差小于设定的值时执行自动对齐校正\n // 水平和垂直两个方向需要分开计算\n const _alignmentLines: AlignmentLineProps[] = []\n let isVerticalAdsorbed = false\n let isHorizontalAdsorbed = false\n for (let i = 0; i < horizontalLines.length; i++) {\n const { value, range } = horizontalLines[i]\n const min = Math.min(...range, targetMinX, targetMaxX)\n const max = Math.max(...range, targetMinX, targetMaxX)\n \n if (Math.abs(targetMinY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetMinY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n if (Math.abs(targetMaxY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetMaxY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n if (Math.abs(targetCenterY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetCenterY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n }\n for (let i = 0; i < verticalLines.length; i++) {\n const { value, range } = verticalLines[i]\n const min = Math.min(...range, targetMinY, targetMaxY)\n const max = Math.max(...range, targetMinY, targetMaxY)\n\n if (Math.abs(targetMinX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetMinX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n if (Math.abs(targetMaxX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetMaxX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n if (Math.abs(targetCenterX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetCenterX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n }\n alignmentLines.value = _alignmentLines\n \n // 单选状态下,或者当前选中的多个元素中存在正在操作的元素时,仅修改正在操作的元素的位置\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\n elementList.value = elementList.value.map(el => {\n return el.id === element.id ? { ...el, left: targetLeft, top: targetTop } : el\n })\n }\n\n // 多选状态下,除了修改正在操作的元素的位置,其他被选中的元素也需要修改位置信息\n // 其他被选中的元素的位置信息通过正在操作的元素的移动偏移量来进行计算\n else {\n const handleElement = elementList.value.find(el => el.id === element.id)\n if (!handleElement) return\n\n elementList.value = elementList.value.map(el => {\n if (activeElementIdList.value.includes(el.id)) {\n if (el.id === element.id) {\n return {\n ...el,\n left: targetLeft,\n top: targetTop,\n }\n }\n return {\n ...el,\n left: el.left + (targetLeft - handleElement.left),\n top: el.top + (targetTop - handleElement.top),\n }\n }\n return el\n })\n }\n }\n\n const handleMouseup = (e: MouseEvent | TouchEvent) => {\n isMouseDown = false\n \n document.ontouchmove = null\n document.ontouchend = null\n document.onmousemove = null\n document.onmouseup = null\n\n alignmentLines.value = []\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\n }\n }\n\n return {\n dragElement,\n }\n}","import type { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useKeyboardStore, useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement, PPTLineElement } from '@/types/slides'\nimport { OperateLineHandlers } from '@/types/edit'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface AdsorptionPoint {\n x: number\n y: number\n}\n\nexport default (elementList: Ref) => {\n const slidesStore = useSlidesStore()\n const { canvasScale } = storeToRefs(useMainStore())\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 拖拽线条端点\n const dragLineElement = (e: MouseEvent, element: PPTLineElement, command: OperateLineHandlers) => {\n let isMouseDown = true\n\n const sorptionRange = 8\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const adsorptionPoints: AdsorptionPoint[] = []\n\n // 获取所有线条以外的未旋转的元素的8个缩放点作为吸附位置\n for (let i = 0; i < elementList.value.length; i++) {\n const _element = elementList.value[i]\n if (_element.type === 'line' || _element.rotate) continue\n\n const left = _element.left\n const top = _element.top\n const width = _element.width\n const height = _element.height\n \n const right = left + width\n const bottom = top + height\n const centerX = top + height / 2\n const centerY = left + width / 2\n\n const topPoint = { x: centerY, y: top }\n const bottomPoint = { x: centerY, y: bottom }\n const leftPoint = { x: left, y: centerX }\n const rightPoint = { x: right, y: centerX }\n\n const leftTopPoint = { x: left, y: top }\n const rightTopPoint = { x: right, y: top }\n const leftBottomPoint = { x: left, y: bottom }\n const rightBottomPoint = { x: right, y: bottom }\n\n adsorptionPoints.push(\n topPoint,\n bottomPoint,\n leftPoint,\n rightPoint,\n leftTopPoint,\n rightTopPoint,\n leftBottomPoint,\n rightBottomPoint,\n )\n }\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const moveX = (currentPageX - startPageX) / canvasScale.value\n const moveY = (currentPageY - startPageY) / canvasScale.value\n \n // 线条起点和终点在编辑区域中的位置\n let startX = element.left + element.start[0]\n let startY = element.top + element.start[1]\n let endX = element.left + element.end[0]\n let endY = element.top + element.end[1]\n\n const mid = element.broken || element.curve || [0, 0]\n let midX = element.left + mid[0]\n let midY = element.top + mid[1]\n\n const [c1, c2] = element.cubic || [[0, 0], [0, 0]]\n let c1X = element.left + c1[0]\n let c1Y = element.top + c1[1]\n let c2X = element.left + c2[0]\n let c2Y = element.top + c2[1]\n\n // 拖拽起点或终点的位置\n // 水平和垂直方向上有吸附\n if (command === OperateLineHandlers.START) {\n startX = startX + moveX\n startY = startY + moveY\n\n if (Math.abs(startX - endX) < sorptionRange) startX = endX\n if (Math.abs(startY - endY) < sorptionRange) startY = endY\n\n for (const adsorptionPoint of adsorptionPoints) {\n const { x, y } = adsorptionPoint\n if (Math.abs(x - startX) < sorptionRange && Math.abs(y - startY) < sorptionRange) {\n startX = x\n startY = y\n break\n }\n }\n }\n else if (command === OperateLineHandlers.END) {\n endX = endX + moveX\n endY = endY + moveY\n\n if (Math.abs(startX - endX) < sorptionRange) endX = startX\n if (Math.abs(startY - endY) < sorptionRange) endY = startY\n\n for (const adsorptionPoint of adsorptionPoints) {\n const { x, y } = adsorptionPoint\n if (Math.abs(x - endX) < sorptionRange && Math.abs(y - endY) < sorptionRange) {\n endX = x\n endY = y\n break\n }\n }\n }\n else if (command === OperateLineHandlers.C) {\n midX = midX + moveX\n midY = midY + moveY\n\n if (Math.abs(midX - startX) < sorptionRange) midX = startX\n if (Math.abs(midY - startY) < sorptionRange) midY = startY\n if (Math.abs(midX - endX) < sorptionRange) midX = endX\n if (Math.abs(midY - endY) < sorptionRange) midY = endY\n if (Math.abs(midX - (startX + endX) / 2) < sorptionRange && Math.abs(midY - (startY + endY) / 2) < sorptionRange) {\n midX = (startX + endX) / 2\n midY = (startY + endY) / 2\n }\n }\n else if (command === OperateLineHandlers.C1) {\n c1X = c1X + moveX\n c1Y = c1Y + moveY\n\n if (Math.abs(c1X - startX) < sorptionRange) c1X = startX\n if (Math.abs(c1Y - startY) < sorptionRange) c1Y = startY\n if (Math.abs(c1X - endX) < sorptionRange) c1X = endX\n if (Math.abs(c1Y - endY) < sorptionRange) c1Y = endY\n }\n else if (command === OperateLineHandlers.C2) {\n c2X = c2X + moveX\n c2Y = c2Y + moveY\n\n if (Math.abs(c2X - startX) < sorptionRange) c2X = startX\n if (Math.abs(c2Y - startY) < sorptionRange) c2Y = startY\n if (Math.abs(c2X - endX) < sorptionRange) c2X = endX\n if (Math.abs(c2Y - endY) < sorptionRange) c2Y = endY\n }\n\n // 计算更新起点和终点基于自身元素位置的坐标\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n const start: [number, number] = [0, 0]\n const end: [number, number] = [maxX - minX, maxY - minY]\n if (startX > endX) {\n start[0] = maxX - minX\n end[0] = 0\n }\n if (startY > endY) {\n start[1] = maxY - minY\n end[1] = 0\n }\n\n elementList.value = elementList.value.map(el => {\n if (el.id === element.id) {\n const newEl: PPTLineElement = {\n ...(el as PPTLineElement),\n left: minX,\n top: minY,\n start: start,\n end: end,\n }\n if (command === OperateLineHandlers.START || command === OperateLineHandlers.END) {\n if (ctrlOrShiftKeyActive.value) {\n if (element.broken) newEl.broken = [midX - minX, midY - minY]\n if (element.curve) newEl.curve = [midX - minX, midY - minY]\n if (element.cubic) newEl.cubic = [[c1X - minX, c1Y - minY], [c2X - minX, c2Y - minY]]\n }\n else {\n if (element.broken) newEl.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (element.curve) newEl.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (element.cubic) newEl.cubic = [[(start[0] + end[0]) / 2, (start[1] + end[1]) / 2], [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]]\n }\n }\n else if (command === OperateLineHandlers.C) {\n if (element.broken) newEl.broken = [midX - minX, midY - minY]\n if (element.curve) newEl.curve = [midX - minX, midY - minY]\n }\n else {\n if (element.cubic) newEl.cubic = [[c1X - minX, c1Y - minY], [c2X - minX, c2Y - minY]]\n }\n return newEl\n }\n return el\n })\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n dragLineElement,\n }\n}","import type { Ref } from 'vue'\nimport { useSlidesStore } from '@/store'\nimport type { PPTElement, PPTShapeElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\n\ninterface ShapePathData {\n baseSize: number,\n originPos: number,\n min: number,\n max: number,\n relative: string,\n}\n\nexport default (\n elementList: Ref,\n canvasScale: Ref,\n) => {\n const slidesStore = useSlidesStore()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const moveShapeKeypoint = (e: MouseEvent | TouchEvent, element: PPTShapeElement) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\n let isMouseDown = true\n \n const startPageX = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : e.pageY\n\n const pathFormula = SHAPE_PATH_FORMULAS[element.pathFormula!]\n let shapePathData: ShapePathData | null = null\n if ('editable' in pathFormula) {\n const baseSize = pathFormula.getBaseSize(element.width, element.height)\n const originPos = baseSize * element.keypoint!\n const [min, max] = pathFormula.range\n const relative = pathFormula.relative\n\n shapePathData = { baseSize, originPos, min, max, relative }\n }\n\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n if (!isMouseDown) return\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n const moveX = (currentPageX - startPageX) / canvasScale.value\n const moveY = (currentPageY - startPageY) / canvasScale.value\n\n elementList.value = elementList.value.map(el => {\n if (el.id === element.id && shapePathData) {\n const { baseSize, originPos, min, max, relative } = shapePathData\n const shapeElement = el as PPTShapeElement\n\n let keypoint = 0\n\n if (relative === 'left') keypoint = (originPos + moveX) / baseSize\n if (relative === 'right') keypoint = (originPos - moveX) / baseSize\n if (relative === 'center') keypoint = (originPos - moveX * 2) / baseSize\n if (relative === 'top') keypoint = (originPos + moveY) / baseSize\n if (relative === 'bottom') keypoint = (originPos - moveY) / baseSize\n\n if (keypoint < min) keypoint = min\n if (keypoint > max) keypoint = max\n\n return {\n ...el,\n keypoint,\n path: pathFormula.formula(shapeElement.width, shapeElement.height, keypoint),\n }\n }\n return el\n })\n }\n\n const handleMouseup = (e: MouseEvent | TouchEvent) => {\n isMouseDown = false\n \n document.ontouchmove = null\n document.ontouchend = null\n document.onmousemove = null\n document.onmouseup = null\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\n }\n }\n\n return {\n moveShapeKeypoint,\n }\n}","import type { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { CreateElementSelectionData } from '@/types/edit'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nexport default (viewportRef: Ref) => {\n const mainStore = useMainStore()\n const { canvasScale, creatingElement } = storeToRefs(mainStore)\n\n // 通过鼠标框选时的起点和终点,计算选区的位置大小\n const formatCreateSelection = (selectionData: CreateElementSelectionData) => {\n const { start, end } = selectionData\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const [startX, startY] = start\n const [endX, endY] = end\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const left = (minX - viewportRect.x) / canvasScale.value\n const top = (minY - viewportRect.y) / canvasScale.value\n const width = (maxX - minX) / canvasScale.value\n const height = (maxY - minY) / canvasScale.value\n\n return { left, top, width, height }\n }\n\n // 通过鼠标框选时的起点和终点,计算线条在画布中的位置和起点终点\n const formatCreateSelectionForLine = (selectionData: CreateElementSelectionData) => {\n const { start, end } = selectionData\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const [startX, startY] = start\n const [endX, endY] = end\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const left = (minX - viewportRect.x) / canvasScale.value\n const top = (minY - viewportRect.y) / canvasScale.value\n const width = (maxX - minX) / canvasScale.value\n const height = (maxY - minY) / canvasScale.value\n\n const _start: [number, number] = [\n startX === minX ? 0 : width,\n startY === minY ? 0 : height,\n ]\n const _end: [number, number] = [\n endX === minX ? 0 : width,\n endY === minY ? 0 : height,\n ]\n\n return {\n left,\n top,\n start: _start,\n end: _end,\n }\n }\n\n const { createTextElement, createShapeElement, createLineElement } = useCreateElement()\n\n // 根据鼠标选区的位置大小插入元素\n const insertElementFromCreateSelection = (selectionData: CreateElementSelectionData) => {\n if (!creatingElement.value) return\n\n const type = creatingElement.value.type\n if (type === 'text') {\n const position = formatCreateSelection(selectionData)\n position && createTextElement(position, { vertical: creatingElement.value.vertical })\n }\n else if (type === 'shape') {\n const position = formatCreateSelection(selectionData)\n position && createShapeElement(position, creatingElement.value.data)\n }\n else if (type === 'line') {\n const position = formatCreateSelectionForLine(selectionData)\n position && createLineElement(position, creatingElement.value.data)\n }\n mainStore.setCreatingElement(null)\n }\n\n return {\n formatCreateSelection,\n insertElementFromCreateSelection,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport { ElementAlignCommands } from '@/types/edit'\nimport { getElementListRange } from '@/utils/element'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useHistorySnapshot from './useHistorySnapshot'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeElementList } = storeToRefs(useMainStore())\n const { currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 将所有选中的元素对齐到画布\n * @param command 对齐方向\n */\n const alignElementToCanvas = (command: ElementAlignCommands) => {\n const viewportWidth = VIEWPORT_SIZE\n const viewportHeight = VIEWPORT_SIZE * viewportRatio.value\n const { minX, maxX, minY, maxY } = getElementListRange(activeElementList.value)\n \n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n for (const element of newElementList) {\n if (!activeElementIdList.value.includes(element.id)) continue\n \n // 水平垂直居中\n if (command === ElementAlignCommands.CENTER) {\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\n element.top = element.top - offsetY \n element.left = element.left - offsetX \n }\n\n // 顶部对齐\n if (command === ElementAlignCommands.TOP) {\n const offsetY = minY - 0\n element.top = element.top - offsetY \n }\n\n // 垂直居中\n else if (command === ElementAlignCommands.VERTICAL) {\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\n element.top = element.top - offsetY \n }\n\n // 底部对齐\n else if (command === ElementAlignCommands.BOTTOM) {\n const offsetY = maxY - viewportHeight\n element.top = element.top - offsetY \n }\n \n // 左侧对齐\n else if (command === ElementAlignCommands.LEFT) {\n const offsetX = minX - 0\n element.left = element.left - offsetX \n }\n\n // 水平居中\n else if (command === ElementAlignCommands.HORIZONTAL) {\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\n element.left = element.left - offsetX \n }\n\n // 右侧对齐\n else if (command === ElementAlignCommands.RIGHT) {\n const offsetX = maxX - viewportWidth\n element.left = element.left - offsetX \n }\n }\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n return {\n alignElementToCanvas,\n }\n}","import { computed, type Ref } from 'vue'\nimport type { PPTElementShadow } from '@/types/slides'\n\n// 计算元素的阴影样式\nexport default (shadow: Ref) => {\n const shadowStyle = computed(() => {\n if (shadow.value) {\n const { h, v, blur, color } = shadow.value\n return `${h}px ${v}px ${blur}px ${color}`\n }\n return ''\n })\n\n return {\n shadowStyle,\n }\n}","import { computed, type Ref } from 'vue'\n\n// 计算元素的翻转样式\nexport default (flipH: Ref, flipV: Ref) => {\n const flipStyle = computed(() => {\n let style = ''\n \n if (flipH.value && flipV.value) style = 'rotateX(180deg) rotateY(180deg)'\n else if (flipV.value) style = 'rotateX(180deg)'\n else if (flipH.value) style = 'rotateY(180deg)'\n\n return style\n })\n\n return {\n flipStyle,\n }\n}","import { computed, type Ref } from 'vue'\nimport { CLIPPATHS, ClipPathTypes } from '@/configs/imageClip'\nimport type { ImageElementClip } from '@/types/slides'\n\nexport default (clip: Ref) => {\n const clipShape = computed(() => {\n if (!clip.value) return CLIPPATHS.rect\n const shape = clip.value.shape || ClipPathTypes.RECT\n\n return CLIPPATHS[shape]\n })\n\n const imgPosition = computed(() => {\n if (!clip.value) {\n return {\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n }\n }\n\n const [start, end] = clip.value.range\n\n const widthScale = (end[0] - start[0]) / 100\n const heightScale = (end[1] - start[1]) / 100\n const left = start[0] / widthScale\n const top = start[1] / heightScale\n\n return {\n left: -left + '%',\n top: -top + '%',\n width: 100 / widthScale + '%',\n height: 100 / heightScale + '%',\n }\n })\n\n return {\n clipShape,\n imgPosition,\n }\n}","import { computed, type Ref } from 'vue'\nimport type { ImageElementFilters, ImageElementFilterKeys } from '@/types/slides'\n\nexport default (filters: Ref) => {\n const filter = computed(() => {\n if (!filters.value) return ''\n let filter = ''\n const keys = Object.keys(filters.value) as ImageElementFilterKeys[]\n for (const key of keys) {\n filter += `${key}(${filters.value[key]}) `\n }\n return filter\n })\n\n return {\n filter,\n }\n}","import { computed, type Ref } from 'vue'\nimport type { PPTElementOutline } from '@/types/slides'\n\n// 计算边框相关属性值,主要是对默认值的处理\nexport default (outline: Ref) => {\n const outlineWidth = computed(() => outline.value?.width ?? 0)\n const outlineStyle = computed(() => outline.value?.style || 'solid')\n const outlineColor = computed(() => outline.value?.color || '#d14424')\n\n const strokeDashArray = computed(() => {\n if (outlineStyle.value !== 'dashed') return '0 0'\n const size = outlineWidth.value\n return size <= 6 ? `${size * 4.5} ${size * 2}` : `${size * 4} ${size * 1.5}`\n })\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n strokeDashArray,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35e36256\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"rx\", \"ry\", \"width\", \"height\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { toRef } from 'vue'\nimport type { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageRectOutline',\n props: {\n width: {},\n height: {},\n outline: {},\n radius: { default: '0' }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst {\n outlineWidth,\n outlineColor,\n strokeDashArray,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-rect-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"rect\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n rx: _ctx.radius,\n ry: _ctx.radius,\n width: _ctx.width,\n height: _ctx.height,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n\n","import script from \"./ImageRectOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageRectOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageRectOutline.vue?vue&type=style&index=0&id=35e36256&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35e36256\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-11836cf8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"cx\", \"cy\", \"rx\", \"ry\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { toRef } from 'vue'\nimport type { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageEllipseOutline',\n props: {\n width: {},\n height: {},\n outline: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst {\n outlineWidth,\n outlineColor,\n strokeDashArray,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-ellipse-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"ellipse\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n cx: _ctx.width / 2,\n cy: _ctx.height / 2,\n rx: _ctx.width / 2,\n ry: _ctx.height / 2,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n\n","import script from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageEllipseOutline.vue?vue&type=style&index=0&id=11836cf8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-11836cf8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6e021ee2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { toRef } from 'vue'\nimport type { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImagePolygonOutline',\n props: {\n width: {},\n height: {},\n createPath: { type: Function },\n outline: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst {\n outlineWidth,\n outlineColor,\n strokeDashArray,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-polygon-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n d: _ctx.createPath(_ctx.width, _ctx.height),\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n\n","import script from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImagePolygonOutline.vue?vue&type=style&index=0&id=6e021ee2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6e021ee2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"image-outline\" }\n\nimport { computed } from 'vue'\nimport type { PPTImageElement } from '@/types/slides'\nimport useClipImage from '../useClipImage'\n\nimport ImageRectOutline from './ImageRectOutline.vue'\nimport ImageEllipseOutline from './ImageEllipseOutline.vue'\nimport ImagePolygonOutline from './ImagePolygonOutline.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape } = useClipImage(clip)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(clipShape).type === 'rect')\n ? (_openBlock(), _createBlock(ImageRectOutline, {\n key: 0,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n radius: _unref(clipShape).radius,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"radius\", \"outline\"]))\n : (_unref(clipShape).type === 'ellipse')\n ? (_openBlock(), _createBlock(ImageEllipseOutline, {\n key: 1,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]))\n : (_unref(clipShape).type === 'polygon')\n ? (_openBlock(), _createBlock(ImagePolygonOutline, {\n key: 2,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline,\n createPath: _unref(clipShape).createPath!\n }, null, 8, [\"width\", \"height\", \"outline\", \"createPath\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5984406b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\nconst _hoisted_2 = [\"src\"]\nconst _hoisted_3 = [\"onMousedown\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n width: \"16\",\n height: \"16\",\n fill: \"#fff\",\n stroke: \"#333\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n \"stroke-width\": \"0.3\",\n \"shape-rendering\": \"crispEdges\",\n d: \"M 16 0 L 0 0 L 0 16 L 4 16 L 4 4 L 16 4 L 16 0 Z\"\n })\n], -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = [\"onMousedown\"]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n width: \"16\",\n height: \"16\",\n fill: \"#fff\",\n stroke: \"#333\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n \"stroke-width\": \"0.3\",\n \"shape-rendering\": \"crispEdges\",\n d: \"M 16 0 L 0 0 L 0 4 L 16 4 Z\"\n })\n], -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\n\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport { KEYS } from '@/configs/hotkey'\nimport { type ImageClipedEmitData, OperateResizeHandlers } from '@/types/edit'\nimport type { ImageClipDataRange, ImageElementClip } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageClipHandler',\n props: {\n src: {},\n clipPath: {},\n width: {},\n height: {},\n top: {},\n left: {},\n rotate: {},\n clipData: {}\n },\n emits: [\"clip\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst { canvasScale } = storeToRefs(useMainStore())\nconst { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\nconst clipWrapperPositionStyle = ref({\n top: '0',\n left: '0',\n})\nconst isSettingClipRange = ref(false)\nconst currentRange = ref(null)\n\n// 获取裁剪区域信息(裁剪区域占原图的宽高比例,处在原图中的位置)\nconst getClipDataTransformInfo = () => {\n const [start, end] = props.clipData ? props.clipData.range : [[0, 0], [100, 100]]\n\n const widthScale = (end[0] - start[0]) / 100\n const heightScale = (end[1] - start[1]) / 100\n const left = start[0] / widthScale\n const top = start[1] / heightScale\n\n return { widthScale, heightScale, left, top }\n}\n\n// 底层图片位置大小(遮罩区域图片)\nconst imgPosition = computed(() => {\n const { widthScale, heightScale, left, top } = getClipDataTransformInfo()\n return {\n left: -left,\n top: -top,\n width: 100 / widthScale,\n height: 100 / heightScale,\n }\n})\n\n// 底层图片位置大小样式(遮罩区域图片)\nconst bottomImgPositionStyle = computed(() => {\n return {\n top: imgPosition.value.top + '%',\n left: imgPosition.value.left + '%',\n width: imgPosition.value.width + '%',\n height: imgPosition.value.height + '%',\n }\n})\n\n// 顶层图片容器位置大小(裁剪高亮区域)\nconst topImgWrapperPosition = ref({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n})\n\n// 顶层图片容器位置大小样式(裁剪高亮区域)\nconst topImgWrapperPositionStyle = computed(() => {\n const { top, left, width, height } = topImgWrapperPosition.value\n return {\n top: top + '%',\n left: left + '%',\n width: width + '%',\n height: height + '%',\n }\n})\n\n// 顶层图片位置大小样式(裁剪区域图片)\nconst topImgPositionStyle = computed(() => {\n const bottomWidth = imgPosition.value.width\n const bottomHeight = imgPosition.value.height\n \n const { top, left, width, height } = topImgWrapperPosition.value\n \n return {\n left: -left * (100 / width) + '%',\n top: -top * (100 / height) + '%',\n width: bottomWidth / width * 100 + '%',\n height: bottomHeight / height * 100 + '%',\n }\n})\n\n// 初始化裁剪位置信息\nconst initClipPosition = () => {\n const { left, top } = getClipDataTransformInfo()\n topImgWrapperPosition.value = {\n left: left,\n top: top,\n width: 100,\n height: 100,\n }\n \n clipWrapperPositionStyle.value = {\n top: -top + '%',\n left: -left + '%',\n }\n}\n\n// 执行裁剪:计算裁剪后的图片位置大小和裁剪信息,并将数据同步出去\nconst handleClip = () => {\n if (isSettingClipRange.value) return\n\n if (!currentRange.value) {\n emit('clip', null)\n return\n }\n\n const { left, top } = getClipDataTransformInfo()\n\n const position = {\n left: (topImgWrapperPosition.value.left - left) / 100 * props.width,\n top: (topImgWrapperPosition.value.top - top) / 100 * props.height,\n width: (topImgWrapperPosition.value.width - 100) / 100 * props.width,\n height: (topImgWrapperPosition.value.height - 100) / 100 * props.height,\n }\n\n const clipedEmitData: ImageClipedEmitData = {\n range: currentRange.value,\n position,\n }\n emit('clip', clipedEmitData)\n}\n\n// 快捷键监听:回车确认裁剪\nconst keyboardListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ENTER) handleClip()\n}\n\nonMounted(() => {\n initClipPosition()\n document.addEventListener('keydown', keyboardListener)\n})\nonUnmounted(() => {\n document.removeEventListener('keydown', keyboardListener)\n})\n\n// 计算并更新裁剪区域范围数据\nconst updateRange = () => {\n const retPosition = {\n left: parseInt(topImgPositionStyle.value.left),\n top: parseInt(topImgPositionStyle.value.top),\n width: parseInt(topImgPositionStyle.value.width),\n height: parseInt(topImgPositionStyle.value.height),\n }\n\n const widthScale = 100 / retPosition.width\n const heightScale = 100 / retPosition.height\n\n const start: [number, number] = [\n -retPosition.left * widthScale,\n -retPosition.top * heightScale,\n ]\n const end: [number, number] = [\n widthScale * 100 + start[0],\n heightScale * 100 + start[1],\n ]\n\n currentRange.value = [start, end]\n}\n\n// 移动裁剪区域\nconst moveClipRange = (e: MouseEvent) => {\n isSettingClipRange.value = true\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n const bottomPosition = imgPosition.value\n const originPositopn = { ...topImgWrapperPosition.value }\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n let moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\n let moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\n\n if (props.rotate > 45 && props.rotate < 135) {\n moveX = (currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = -(currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n if ((props.rotate >= 135 && props.rotate <= 180) || (props.rotate >= -180 && props.rotate <= -135)) {\n moveX = -moveX\n moveY = -moveY\n }\n if (props.rotate > -135 && props.rotate < -45) {\n moveX = -(currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = (currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n\n let targetLeft = originPositopn.left + moveX\n let targetTop = originPositopn.top + moveY\n\n if (targetLeft < 0) targetLeft = 0\n else if (targetLeft + originPositopn.width > bottomPosition.width) {\n targetLeft = bottomPosition.width - originPositopn.width\n }\n if (targetTop < 0) targetTop = 0\n else if (targetTop + originPositopn.height > bottomPosition.height) {\n targetTop = bottomPosition.height - originPositopn.height\n }\n \n topImgWrapperPosition.value = {\n ...topImgWrapperPosition.value,\n left: targetLeft,\n top: targetTop,\n }\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n updateRange()\n\n setTimeout(() => {\n isSettingClipRange.value = false\n }, 0)\n }\n}\n\n// 缩放裁剪区域\nconst scaleClipRange = (e: MouseEvent, type: OperateResizeHandlers) => {\n isSettingClipRange.value = true\n let isMouseDown = true\n\n const minWidth = 50 / props.width * 100\n const minHeight = 50 / props.height * 100\n \n const startPageX = e.pageX\n const startPageY = e.pageY\n const bottomPosition = imgPosition.value\n const originPositopn = { ...topImgWrapperPosition.value }\n\n const aspectRatio = topImgWrapperPosition.value.width / topImgWrapperPosition.value.height\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n let moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\n let moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\n\n if (props.rotate > 45 && props.rotate < 135) {\n moveX = (currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = -(currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n if ((props.rotate >= 135 && props.rotate <= 180) || (props.rotate >= -180 && props.rotate <= -135)) {\n moveX = -moveX\n moveY = -moveY\n }\n if (props.rotate > -135 && props.rotate < -45) {\n moveX = -(currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = (currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n\n if (ctrlOrShiftKeyActive.value) {\n if (type === OperateResizeHandlers.RIGHT_BOTTOM || type === OperateResizeHandlers.LEFT_TOP) moveY = moveX / aspectRatio\n if (type === OperateResizeHandlers.LEFT_BOTTOM || type === OperateResizeHandlers.RIGHT_TOP) moveY = -moveX / aspectRatio\n }\n\n let targetLeft, targetTop, targetWidth, targetHeight\n\n if (type === OperateResizeHandlers.LEFT_TOP) {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top + moveY\n }\n else if (type === OperateResizeHandlers.RIGHT_TOP) {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width + moveX\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top + moveY\n }\n else if (type === OperateResizeHandlers.LEFT_BOTTOM) {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top\n }\n else if (type === OperateResizeHandlers.RIGHT_BOTTOM) {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width + moveX\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n else if (type === OperateResizeHandlers.TOP) {\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top + moveY\n }\n else if (type === OperateResizeHandlers.BOTTOM) {\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n else if (type === OperateResizeHandlers.LEFT) {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top\n }\n else {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n targetHeight = originPositopn.height\n targetWidth = originPositopn.width + moveX\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n\n topImgWrapperPosition.value = {\n left: targetLeft,\n top: targetTop,\n width: targetWidth,\n height: targetHeight,\n }\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n updateRange()\n\n setTimeout(() => isSettingClipRange.value = false, 0)\n }\n}\n\nconst rotateClassName = computed(() => {\n const prefix = 'rotate-'\n const rotate = props.rotate\n if (rotate > -22.5 && rotate <= 22.5) return prefix + 0\n else if (rotate > 22.5 && rotate <= 67.5) return prefix + 45\n else if (rotate > 67.5 && rotate <= 112.5) return prefix + 90\n else if (rotate > 112.5 && rotate <= 157.5) return prefix + 135\n else if (rotate > 157.5 || rotate <= -157.5) return prefix + 0\n else if (rotate > -157.5 && rotate <= -112.5) return prefix + 45\n else if (rotate > -112.5 && rotate <= -67.5) return prefix + 90\n else if (rotate > -67.5 && rotate <= -22.5) return prefix + 135\n return prefix + 0\n})\n\nconst cornerPoint = [\n OperateResizeHandlers.LEFT_TOP,\n OperateResizeHandlers.RIGHT_TOP,\n OperateResizeHandlers.LEFT_BOTTOM,\n OperateResizeHandlers.RIGHT_BOTTOM,\n]\nconst edgePoints = [\n OperateResizeHandlers.TOP,\n OperateResizeHandlers.BOTTOM,\n OperateResizeHandlers.LEFT,\n OperateResizeHandlers.RIGHT,\n]\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"image-clip-handler\",\n style: _normalizeStyle(clipWrapperPositionStyle.value)\n }, [\n _createElementVNode(\"img\", {\n class: \"bottom-img\",\n src: _ctx.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(bottomImgPositionStyle.value)\n }, null, 12, _hoisted_1),\n _createElementVNode(\"div\", {\n class: \"top-image-content\",\n style: _normalizeStyle({\n ...topImgWrapperPositionStyle.value,\n clipPath: _ctx.clipPath,\n })\n }, [\n _createElementVNode(\"img\", {\n class: \"top-img\",\n src: _ctx.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(topImgPositionStyle.value)\n }, null, 12, _hoisted_2)\n ], 4),\n _createElementVNode(\"div\", {\n class: \"operate\",\n style: _normalizeStyle(topImgWrapperPositionStyle.value),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => moveClipRange($event), [\"stop\"]))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(cornerPoint, (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point, rotateClassName.value]),\n key: point,\n onMousedown: _withModifiers($event => scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_5, 42, _hoisted_3)\n }), 64)),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(edgePoints, (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point, rotateClassName.value]),\n key: point,\n onMousedown: _withModifiers($event => scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_8, 42, _hoisted_6)\n }), 64))\n ], 36)\n ], 4)), [\n [_directive_click_outside, handleClip]\n ])\n}\n}\n\n})","\n\n\n\n","import script from \"./ImageClipHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageClipHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageClipHandler.vue?vue&type=style&index=0&id=5984406b&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5984406b\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1156b3e1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { ImageElementClip, PPTImageElement } from '@/types/slides'\nimport type { ImageClipedEmitData } from '@/types/edit'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useClipImage from './useClipImage'\nimport useFilter from './useFilter'\n\nimport ImageOutline from './ImageOutline/index.vue'\nimport ImageClipHandler from './ImageClipHandler.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { clipingImageElementId } = storeToRefs(mainStore)\n\nconst isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape, imgPosition } = useClipImage(clip)\n\nconst filters = computed(() => props.elementInfo.filters)\nconst { filter } = useFilter(filters)\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n props.selectElement(e, props.elementInfo)\n}\n\nconst handleClip = (data: ImageClipedEmitData | null) => {\n mainStore.setClipingImageElementId('')\n \n if (!data) return\n\n const { range, position } = data\n const originClip: ImageElementClip = props.elementInfo.clip || { shape: 'rect', range: [[0, 0], [100, 100]] }\n\n const left = props.elementInfo.left + position.left\n const top = props.elementInfo.top + position.top\n const width = props.elementInfo.width + position.width\n const height = props.elementInfo.height + position.height\n\n let centerOffsetX = 0\n let centerOffsetY = 0\n\n if (props.elementInfo.rotate) {\n const centerX = (left + width / 2) - (props.elementInfo.left + props.elementInfo.width / 2)\n const centerY = -((top + height / 2) - (props.elementInfo.top + props.elementInfo.height / 2))\n\n const radian = -props.elementInfo.rotate * Math.PI / 180\n\n const rotatedCenterX = centerX * Math.cos(radian) - centerY * Math.sin(radian)\n const rotatedCenterY = centerX * Math.sin(radian) + centerY * Math.cos(radian)\n\n centerOffsetX = rotatedCenterX - centerX\n centerOffsetY = -(rotatedCenterY - centerY)\n }\n\n const _props = {\n clip: { ...originClip, range },\n left: left + centerOffsetX,\n top: top + centerOffsetY,\n width,\n height,\n }\n slidesStore.updateElement({ id: props.elementInfo.id, props: _props })\n \n addHistorySnapshot()\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-image\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n (isCliping.value)\n ? (_openBlock(), _createBlock(ImageClipHandler, {\n key: 0,\n src: _ctx.elementInfo.src,\n clipData: _ctx.elementInfo.clip,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n top: _ctx.elementInfo.top,\n left: _ctx.elementInfo.left,\n rotate: _ctx.elementInfo.rotate,\n clipPath: _unref(clipShape).style,\n onClip: _cache[0] || (_cache[0] = range => handleClip(range))\n }, null, 8, [\"src\", \"clipData\", \"width\", \"height\", \"top\", \"left\", \"rotate\", \"clipPath\"]))\n : _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"element-content\",\n style: _normalizeStyle({\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event))\n }, [\n _createVNode(ImageOutline, { elementInfo: _ctx.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _unref(clipShape).style })\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _unref(imgPosition).top,\n left: _unref(imgPosition).left,\n width: _unref(imgPosition).width,\n height: _unref(imgPosition).height,\n filter: _unref(filter),\n }),\n onDragstart: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"prevent\"])),\n alt: \"\"\n }, null, 44, _hoisted_1),\n (_ctx.elementInfo.colorMask)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"color-mask\",\n style: _normalizeStyle({\n backgroundColor: _ctx.elementInfo.colorMask,\n })\n }, null, 4))\n : _createCommentVNode(\"\", true)\n ], 4)\n ], 36)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1156b3e1&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1156b3e1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-efb76626\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { toRef } from 'vue'\nimport type { PPTElementOutline } from '@/types/slides'\n\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementOutline',\n props: {\n width: {},\n height: {},\n outline: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst {\n outlineWidth,\n outlineColor,\n strokeDashArray,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"element-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n d: `M0,0 L${_ctx.width},0 L${_ctx.width},${_ctx.height} L0,${_ctx.height} Z`,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n\n","import script from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=efb76626&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-efb76626\"]])\n\nexport default __exports__","import { splitListItem, liftListItem, sinkListItem } from 'prosemirror-schema-list'\nimport type { Schema } from 'prosemirror-model'\nimport { undo, redo } from 'prosemirror-history'\nimport { undoInputRule } from 'prosemirror-inputrules'\nimport type { Command } from 'prosemirror-state'\nimport {\n toggleMark,\n selectParentNode,\n joinUp,\n joinDown,\n chainCommands,\n newlineInCode,\n createParagraphNear,\n liftEmptyBlock,\n splitBlockKeepMarks,\n} from 'prosemirror-commands'\n\ninterface Keys {\n [key: string]: Command\n}\n\nexport const buildKeymap = (schema: Schema) => {\n const keys: Keys = {}\n const bind = (key: string, cmd: Command) => keys[key] = cmd\n\n bind('Alt-ArrowUp', joinUp)\n bind('Alt-ArrowDown', joinDown)\n bind('Mod-z', undo)\n bind('Mod-y', redo)\n bind('Backspace', undoInputRule)\n bind('Escape', selectParentNode)\n bind('Mod-b', toggleMark(schema.marks.strong))\n bind('Mod-i', toggleMark(schema.marks.em))\n bind('Mod-u', toggleMark(schema.marks.underline))\n bind('Mod-d', toggleMark(schema.marks.strikethrough))\n bind('Mod-e', toggleMark(schema.marks.code))\n bind('Mod-;', toggleMark(schema.marks.superscript))\n bind(`Mod-'`, toggleMark(schema.marks.subscript))\n bind('Enter', chainCommands(\n splitListItem(schema.nodes.list_item),\n newlineInCode,\n createParagraphNear,\n liftEmptyBlock,\n splitBlockKeepMarks,\n ))\n bind('Mod-[', liftListItem(schema.nodes.list_item))\n bind('Mod-]', sinkListItem(schema.nodes.list_item))\n bind('Tab', sinkListItem(schema.nodes.list_item))\n\n return keys\n}","import type { NodeType, Schema } from 'prosemirror-model'\nimport {\n inputRules,\n wrappingInputRule,\n smartQuotes,\n emDash,\n ellipsis,\n InputRule,\n} from 'prosemirror-inputrules'\n\nconst blockQuoteRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*>\\s$/, nodeType)\n\nconst orderedListRule = (nodeType: NodeType) => (\n wrappingInputRule(\n /^(\\d+)\\.\\s$/, \n nodeType, \n match => ({order: +match[1]}),\n (match, node) => node.childCount + node.attrs.order === +match[1],\n )\n)\n\nconst bulletListRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*([-+*])\\s$/, nodeType)\n\nconst codeRule = () => {\n const inputRegex = /(?:^|\\s)((?:`)((?:[^`]+))(?:`))$/\n \n return new InputRule(inputRegex, (state, match, start, end) => {\n const { schema } = state\n\n const tr = state.tr.insertText(`${match[2]} `, start, end)\n const mark = schema.marks.code.create()\n\n return tr.addMark(start, start + match[2].length, mark)\n })\n}\n\nconst linkRule = () => {\n const urlRegEx = /(?:https?:\\/\\/)?[\\w-]+(?:\\.[\\w-]+)+\\.?(?:\\d+)?(?:\\/\\S*)?$/\n \n return new InputRule(urlRegEx, (state, match, start, end) => {\n const { schema } = state\n\n const tr = state.tr.insertText(match[0], start, end)\n const mark = schema.marks.link.create({ href: match[0], title: match[0] })\n\n return tr.addMark(start, start + match[0].length, mark)\n })\n}\n\nexport const buildInputRules = (schema: Schema) => {\n const rules = [\n ...smartQuotes,\n ellipsis,\n emDash,\n ]\n rules.push(blockQuoteRule(schema.nodes.blockquote))\n rules.push(orderedListRule(schema.nodes.ordered_list))\n rules.push(bulletListRule(schema.nodes.bullet_list))\n rules.push(codeRule())\n rules.push(linkRule())\n\n return inputRules({ rules })\n}","import { Plugin } from 'prosemirror-state'\nimport { Decoration, DecorationSet } from 'prosemirror-view'\nimport type { Node } from 'prosemirror-model'\n\nconst isEmptyParagraph = (node: Node) => {\n return node.type.name === 'paragraph' && node.nodeSize === 2\n}\n\nexport const placeholderPlugin = (placeholder: string) => {\n return new Plugin({\n props: {\n decorations(state) {\n const { $from } = state.selection\n if (isEmptyParagraph($from.parent)) {\n const decoration = Decoration.node($from.before(), $from.after(), {\n 'data-placeholder': placeholder,\n })\n return DecorationSet.create(state.doc, [decoration])\n }\n },\n },\n })\n}","import { keymap } from 'prosemirror-keymap'\nimport type { Schema } from 'prosemirror-model'\nimport { history } from 'prosemirror-history'\nimport { baseKeymap } from 'prosemirror-commands'\nimport { dropCursor } from 'prosemirror-dropcursor'\nimport { gapCursor } from 'prosemirror-gapcursor'\n\nimport { buildKeymap } from './keymap'\nimport { buildInputRules } from './inputrules'\nimport { placeholderPlugin } from './placeholder'\n\nexport interface PluginOptions {\n placeholder?: string\n}\n\nexport const buildPlugins = (schema: Schema, options?: PluginOptions) => {\n const placeholder = options?.placeholder\n\n const plugins = [\n buildInputRules(schema),\n keymap(buildKeymap(schema)),\n keymap(baseKeymap),\n dropCursor(),\n gapCursor(),\n history(),\n ]\n\n if (placeholder) plugins.push(placeholderPlugin(placeholder))\n\n return plugins\n}","import { nodes } from 'prosemirror-schema-basic'\nimport type { Node, NodeSpec } from 'prosemirror-model'\nimport { listItem as _listItem } from 'prosemirror-schema-list'\n\ninterface Attr {\n [key: string]: number | string\n}\n\nconst orderedList: NodeSpec = {\n attrs: {\n order: {\n default: 1,\n },\n listStyleType: {\n default: '',\n },\n fontsize: {\n default: '',\n },\n color: {\n default: '',\n },\n },\n content: 'list_item+',\n group: 'block',\n parseDOM: [\n { \n tag: 'ol', \n getAttrs: dom => {\n const order = ((dom as HTMLElement).hasAttribute('start') ? (dom as HTMLElement).getAttribute('start') : 1) || 1\n const attr: Attr = { order: +order }\n\n const { listStyleType, fontSize, color } = (dom as HTMLElement).style\n if (listStyleType) attr['listStyleType'] = listStyleType\n if (fontSize) attr['fontsize'] = fontSize\n if (color) attr['color'] = color\n\n return attr\n }\n }\n ],\n toDOM: (node: Node) => {\n const { order, listStyleType, fontsize, color } = node.attrs\n let style = ''\n if (listStyleType) style += `list-style-type: ${listStyleType};`\n if (fontsize) style += `font-size: ${fontsize};`\n if (color) style += `color: ${color};`\n\n const attr: Attr = { style }\n if (order !== 1) attr['start'] = order\n\n\n return ['ol', attr, 0]\n },\n}\n\nconst bulletList: NodeSpec = {\n attrs: {\n listStyleType: {\n default: '',\n },\n fontsize: {\n default: '',\n },\n color: {\n default: '',\n },\n },\n content: 'list_item+',\n group: 'block',\n parseDOM: [\n {\n tag: 'ul',\n getAttrs: dom => {\n const attr: Attr = {}\n\n const { listStyleType, fontSize, color } = (dom as HTMLElement).style\n if (listStyleType) attr['listStyleType'] = listStyleType\n if (fontSize) attr['fontsize'] = fontSize\n if (color) attr['color'] = color\n\n return attr\n }\n }\n ],\n toDOM: (node: Node) => {\n const { listStyleType, fontsize, color } = node.attrs\n let style = ''\n if (listStyleType) style += `list-style-type: ${listStyleType};`\n if (fontsize) style += `font-size: ${fontsize};`\n if (color) style += `color: ${color};`\n\n return ['ul', { style }, 0]\n },\n}\n\nconst listItem: NodeSpec = {\n ..._listItem,\n content: 'paragraph block*',\n group: 'block',\n}\n\nconst paragraph: NodeSpec = {\n attrs: {\n align: {\n default: '',\n },\n indent: {\n default: 0,\n },\n textIndent: {\n default: 0,\n },\n },\n content: 'inline*',\n group: 'block',\n parseDOM: [\n {\n tag: 'p',\n getAttrs: dom => {\n const { textAlign, textIndent } = (dom as HTMLElement).style\n\n let align = (dom as HTMLElement).getAttribute('align') || textAlign || ''\n align = /(left|right|center|justify)/.test(align) ? align : ''\n\n let textIndentLevel = 0\n if (textIndent) {\n if (/em/.test(textIndent)) {\n textIndentLevel = parseInt(textIndent)\n }\n else if (/px/.test(textIndent)) {\n textIndentLevel = Math.floor(parseInt(textIndent) / 20)\n if (!textIndentLevel) textIndentLevel = 1\n }\n }\n\n const indent = +((dom as HTMLElement).getAttribute('data-indent') || 0)\n \n return { align, indent, textIndent: textIndentLevel }\n }\n },\n {\n tag: 'img',\n ignore: true,\n },\n {\n tag: 'pre',\n skip: true,\n },\n ],\n toDOM: (node: Node) => {\n const { align, indent, textIndent } = node.attrs\n let style = ''\n if (align && align !== 'left') style += `text-align: ${align};`\n if (textIndent) style += `text-indent: ${textIndent * 20}px;`\n\n const attr: Attr = { style }\n if (indent) attr['data-indent'] = indent\n\n return ['p', attr, 0]\n },\n}\n\nconst {\n doc,\n blockquote,\n text,\n} = nodes\n\nexport default {\n doc,\n paragraph,\n blockquote,\n text,\n 'ordered_list': orderedList,\n 'bullet_list': bulletList,\n 'list_item': listItem,\n}\n","import { marks } from 'prosemirror-schema-basic'\nimport type { MarkSpec } from 'prosemirror-model'\n\nconst subscript: MarkSpec = {\n excludes: 'subscript',\n parseDOM: [\n { tag: 'sub' },\n {\n style: 'vertical-align',\n getAttrs: value => value === 'sub' && null\n },\n ],\n toDOM: () => ['sub', 0],\n}\n\nconst superscript: MarkSpec = {\n excludes: 'superscript',\n parseDOM: [\n { tag: 'sup' },\n {\n style: 'vertical-align',\n getAttrs: value => value === 'super' && null\n },\n ],\n toDOM: () => ['sup', 0],\n}\n\nconst strikethrough: MarkSpec = {\n parseDOM: [\n { tag: 'strike' },\n {\n style: 'text-decoration',\n getAttrs: value => value === 'line-through' && null\n },\n {\n style: 'text-decoration-line',\n getAttrs: value => value === 'line-through' && null\n },\n ],\n toDOM: () => ['span', { style: 'text-decoration-line: line-through;' }, 0],\n}\n\nconst underline: MarkSpec = {\n parseDOM: [\n { tag: 'u' },\n {\n style: 'text-decoration',\n getAttrs: value => value === 'underline' && null\n },\n {\n style: 'text-decoration-line',\n getAttrs: value => value === 'underline' && null\n },\n ],\n toDOM: () => ['span', { style: 'text-decoration: underline;' }, 0],\n}\n\nconst forecolor: MarkSpec = {\n attrs: {\n color: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'color',\n getAttrs: color => color ? { color } : {}\n },\n ],\n toDOM: mark => {\n const { color } = mark.attrs\n let style = ''\n if (color) style += `color: ${color};`\n return ['span', { style }, 0]\n },\n}\n\nconst backcolor: MarkSpec = {\n attrs: {\n backcolor: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'background-color',\n getAttrs: backcolor => backcolor ? { backcolor } : {}\n },\n ],\n toDOM: mark => {\n const { backcolor } = mark.attrs\n let style = ''\n if (backcolor) style += `background-color: ${backcolor};`\n return ['span', { style }, 0]\n },\n}\n\nconst fontsize: MarkSpec = {\n attrs: {\n fontsize: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'font-size',\n getAttrs: fontsize => fontsize ? { fontsize } : {}\n },\n ],\n toDOM: mark => {\n const { fontsize } = mark.attrs\n let style = ''\n if (fontsize) style += `font-size: ${fontsize};`\n return ['span', { style }, 0]\n },\n}\n\nconst fontname: MarkSpec = {\n attrs: {\n fontname: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'font-family',\n getAttrs: fontname => {\n return { fontname: fontname && typeof fontname === 'string' ? fontname.replace(/[\\\"\\']/g, '') : '' }\n }\n },\n ],\n toDOM: mark => {\n const { fontname } = mark.attrs\n let style = ''\n if (fontname) style += `font-family: ${fontname};`\n return ['span', { style }, 0]\n },\n}\n\nconst link: MarkSpec = {\n attrs: {\n href: {},\n title: { default: null },\n target: { default: '_blank' },\n },\n inclusive: false,\n parseDOM: [\n {\n tag: 'a[href]',\n getAttrs: dom => {\n const href = (dom as HTMLElement).getAttribute('href')\n const title = (dom as HTMLElement).getAttribute('title')\n return { href, title }\n }\n },\n ],\n toDOM: node => ['a', node.attrs, 0],\n}\n\nconst mark: MarkSpec = {\n attrs: {\n index: { default: null },\n },\n parseDOM: [\n {\n tag: 'mark',\n getAttrs: dom => {\n const index = (dom as HTMLElement).dataset.index\n return { index }\n }\n },\n ],\n toDOM: node => ['mark', { 'data-index': node.attrs.index }, 0],\n}\n\nconst { em, strong, code } = marks\n\nexport default {\n em,\n strong,\n fontsize,\n fontname,\n code,\n forecolor,\n backcolor,\n subscript,\n superscript,\n strikethrough,\n underline,\n link,\n mark,\n}","import nodes from './nodes'\nimport marks from './marks'\n\nexport const schemaNodes = nodes\nexport const schemaMarks = marks\n","import { EditorState } from 'prosemirror-state'\nimport { type DirectEditorProps, EditorView } from 'prosemirror-view'\nimport { Schema, DOMParser } from 'prosemirror-model'\nimport { buildPlugins, type PluginOptions } from './plugins/index'\nimport { schemaNodes, schemaMarks } from './schema/index'\n\nconst schema = new Schema({\n nodes: schemaNodes,\n marks: schemaMarks,\n})\n\nexport const createDocument = (content: string) => {\n const htmlString = `
${content}
`\n const parser = new window.DOMParser()\n const element = parser.parseFromString(htmlString, 'text/html').body.firstElementChild\n return DOMParser.fromSchema(schema).parse(element as Element)\n}\n\nexport const initProsemirrorEditor = (\n dom: Element,\n content: string,\n props: Omit,\n pluginOptions?: PluginOptions,\n) => {\n return new EditorView(dom, {\n state: EditorState.create({\n doc: createDocument(content),\n plugins: buildPlugins(schema, pluginOptions),\n }),\n ...props,\n })\n}","import mitt, { type Emitter } from 'mitt'\n\nexport const enum EmitterEvents {\n RICH_TEXT_COMMAND = 'RICH_TEXT_COMMAND',\n SYNC_RICH_TEXT_ATTRS_TO_STORE = 'SYNC_RICH_TEXT_ATTRS_TO_STORE',\n OPEN_CHART_DATA_EDITOR = 'OPEN_CHART_DATA_EDITOR',\n OPEN_LATEX_EDITOR = 'OPEN_LATEX_EDITOR',\n}\n\nexport interface RichTextAction {\n command: string\n value?: string\n}\n\nexport interface RichTextCommand {\n target?: string\n action: RichTextAction | RichTextAction[]\n}\n\ntype Events = {\n [EmitterEvents.RICH_TEXT_COMMAND]: RichTextCommand\n [EmitterEvents.SYNC_RICH_TEXT_ATTRS_TO_STORE]: void\n [EmitterEvents.OPEN_CHART_DATA_EDITOR]: void\n [EmitterEvents.OPEN_LATEX_EDITOR]: void\n} \n\nconst emitter: Emitter = mitt()\n\nexport default emitter","import type { Schema, Node, NodeType } from 'prosemirror-model'\nimport type { Transaction } from 'prosemirror-state'\nimport type { EditorView } from 'prosemirror-view'\n\nexport const setTextAlign = (tr: Transaction, schema: Schema, alignment: string) => {\n const { selection, doc } = tr\n if (!selection || !doc) return tr\n\n const { from, to } = selection\n const { nodes } = schema\n\n const blockquote = nodes.blockquote\n const listItem = nodes.list_item\n const paragraph = nodes.paragraph\n\n interface Task {\n node: Node\n pos: number\n nodeType: NodeType\n }\n\n const tasks: Task[] = []\n alignment = alignment || ''\n\n const allowedNodeTypes = new Set([blockquote, listItem, paragraph])\n\n doc.nodesBetween(from, to, (node, pos) => {\n const nodeType = node.type\n const align = node.attrs.align || ''\n if (align !== alignment && allowedNodeTypes.has(nodeType)) {\n tasks.push({\n node,\n pos,\n nodeType,\n })\n }\n return true\n })\n\n if (!tasks.length) return tr\n\n tasks.forEach(task => {\n const { node, pos, nodeType } = task\n let { attrs } = node\n if (alignment) attrs = { ...attrs, align: alignment }\n else attrs = { ...attrs, align: null }\n tr = tr.setNodeMarkup(pos, nodeType, attrs, node.marks)\n })\n\n return tr\n}\n\nexport const alignmentCommand = (view: EditorView, alignment: string) => {\n const { state } = view\n const { schema, selection } = state\n const tr = setTextAlign(\n state.tr.setSelection(selection),\n schema,\n alignment,\n )\n view.dispatch(tr)\n}","import type { Schema } from 'prosemirror-model'\nimport { type Transaction, TextSelection, AllSelection } from 'prosemirror-state'\nimport type { EditorView } from 'prosemirror-view'\nimport { isList } from '../utils'\n\ntype IndentKey = 'indent' | 'textIndent'\n\nfunction setNodeIndentMarkup(tr: Transaction, pos: number, delta: number, indentKey: IndentKey): Transaction {\n if (!tr.doc) return tr\n\n const node = tr.doc.nodeAt(pos)\n if (!node) return tr\n\n const minIndent = 0\n const maxIndent = 8\n\n let indent = (node.attrs[indentKey] || 0) + delta\n if (indent < minIndent) indent = minIndent\n if (indent > maxIndent) indent = maxIndent\n\n if (indent === node.attrs[indentKey]) return tr\n\n const nodeAttrs = {\n ...node.attrs,\n [indentKey]: indent,\n }\n\n return tr.setNodeMarkup(pos, node.type, nodeAttrs, node.marks)\n}\n\nconst setIndent = (tr: Transaction, schema: Schema, delta: number, indentKey: IndentKey): Transaction => {\n const { selection, doc } = tr\n if (!selection || !doc) return tr\n\n if (!(selection instanceof TextSelection || selection instanceof AllSelection)) return tr\n\n const { from, to } = selection\n\n doc.nodesBetween(from, to, (node, pos) => {\n const nodeType = node.type\n\n if (nodeType.name === 'paragraph' || nodeType.name === 'blockquote') {\n tr = setNodeIndentMarkup(tr, pos, delta, indentKey)\n return false\n } \n else if (isList(node, schema)) return false\n return true\n })\n\n return tr\n}\n\nexport const indentCommand = (view: EditorView, delta: number) => {\n const { state } = view\n const { schema, selection } = state\n\n const tr = setIndent(\n state.tr.setSelection(selection),\n schema,\n delta,\n 'indent',\n )\n if (tr.docChanged) {\n view.dispatch(tr)\n return true\n }\n\n return false\n}\n\nexport const textIndentCommand = (view: EditorView, delta: number) => {\n const { state } = view\n const { schema, selection } = state\n\n const tr = setIndent(\n state.tr.setSelection(selection),\n schema,\n delta,\n 'textIndent',\n )\n if (tr.docChanged) {\n view.dispatch(tr)\n return true\n }\n\n return false\n}","import { wrapInList, liftListItem } from 'prosemirror-schema-list'\nimport type { Node, NodeType } from 'prosemirror-model'\nimport type { Transaction, EditorState } from 'prosemirror-state'\nimport { findParentNode, isList } from '../utils'\n\ninterface Attr {\n [key: string]: number | string\n}\n\ninterface TextStyleAttr {\n color?: string\n fontsize?: string\n}\n\nexport const toggleList = (listType: NodeType, itemType: NodeType, listStyleType: string, textStyleAttr: TextStyleAttr = {}) => {\n return (state: EditorState, dispatch: (tr: Transaction) => void) => {\n const { schema, selection } = state\n const { $from, $to } = selection\n const range = $from.blockRange($to)\n\n if (!range) return false\n\n const parentList = findParentNode((node: Node) => isList(node, schema))(selection)\n\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\n if (parentList.node.type === listType && !listStyleType) {\n return liftListItem(itemType)(state, dispatch)\n }\n\n if (isList(parentList.node, schema) && listType.validContent(parentList.node.content)) {\n const { tr } = state\n\n const nodeAttrs: Attr = {\n ...parentList.node.attrs,\n ...textStyleAttr,\n }\n if (listStyleType) nodeAttrs.listStyleType = listStyleType\n\n tr.setNodeMarkup(parentList.pos, listType, nodeAttrs)\n\n if (dispatch) dispatch(tr)\n\n return false\n }\n }\n\n const nodeAttrs: Attr = {\n ...textStyleAttr,\n }\n if (listStyleType) nodeAttrs.listStyleType = listStyleType\n\n return wrapInList(listType, nodeAttrs)(state, dispatch)\n }\n}","import type { EditorView } from 'prosemirror-view'\nimport { isList } from '../utils'\n\ninterface Style {\n [key: string]: string\n}\n\nexport const setListStyle = (view: EditorView, style: Style | Style[]) => {\n const { state } = view\n const { schema, selection } = state\n const tr = state.tr.setSelection(selection)\n \n const { doc } = tr\n if (!doc) return tr\n\n const { from, to } = selection\n doc.nodesBetween(from, to, (node, pos) => {\n if (isList(node, schema)) {\n if (from - 3 <= pos && to + 3 >= pos + node.nodeSize) {\n const styles = Array.isArray(style) ? style : [style]\n\n for (const style of styles) {\n tr.setNodeAttribute(pos, style.key, style.value)\n }\n }\n }\n return false\n })\n\n view.dispatch(tr)\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { debounce } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { EditorView } from 'prosemirror-view'\nimport { toggleMark, wrapIn, lift } from 'prosemirror-commands'\nimport { initProsemirrorEditor, createDocument } from '@/utils/prosemirror'\nimport { isActiveOfParentNodeType, findNodesWithSameMark, getTextAttrs, autoSelectAll, addMark, markActive, getFontsize } from '@/utils/prosemirror/utils'\nimport emitter, { EmitterEvents, type RichTextAction, type RichTextCommand } from '@/utils/emitter'\nimport { alignmentCommand } from '@/utils/prosemirror/commands/setTextAlign'\nimport { indentCommand, textIndentCommand } from '@/utils/prosemirror/commands/setTextIndent'\nimport { toggleList } from '@/utils/prosemirror/commands/toggleList'\nimport { setListStyle } from '@/utils/prosemirror/commands/setListStyle'\nimport type { TextFormatPainterKeys } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ProsemirrorEditor',\n props: {\n elementId: {},\n defaultColor: {},\n defaultFontName: {},\n value: {},\n editable: { type: Boolean, default: false },\n autoFocus: { type: Boolean, default: false }\n },\n emits: [\"update\", \"focus\", \"blur\", \"mousedown\"],\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst mainStore = useMainStore()\nconst { handleElementId, textFormatPainter, richTextAttrs } = storeToRefs(mainStore)\n\nconst editorViewRef = ref()\nlet editorView: EditorView\n\n// 富文本的各种交互事件监听:\n// 聚焦时取消全局快捷键事件\n// 输入文字时同步数据到vuex\n// 点击鼠标和键盘时同步富文本状态到工具栏\nconst handleInput = debounce(function() {\n emit('update', editorView.dom.innerHTML)\n}, 300, { trailing: true })\n\nconst handleFocus = () => {\n mainStore.setDisableHotkeysState(true)\n emit('focus')\n}\n\nconst handleBlur = () => {\n mainStore.setDisableHotkeysState(false)\n emit('blur')\n}\n\nconst handleClick = debounce(function() {\n const attrs = getTextAttrs(editorView, {\n color: props.defaultColor,\n fontname: props.defaultFontName,\n })\n mainStore.setRichtextAttrs(attrs)\n}, 30, { trailing: true })\n\nconst handleKeydown = () => {\n handleInput()\n handleClick()\n}\n\n// 将富文本内容同步到DOM\nconst textContent = computed(() => props.value)\nwatch(textContent, () => {\n if (!editorView) return\n if (editorView.hasFocus()) return\n\n const { doc, tr } = editorView.state\n editorView.dispatch(tr.replaceRangeWith(0, doc.content.size, createDocument(textContent.value)))\n})\n\n// 打开/关闭编辑器的编辑模式\nwatch(() => props.editable, () => {\n editorView.setProps({ editable: () => props.editable })\n})\n\n// 暴露 focus 方法\nconst focus = () => editorView.focus()\n__expose({ focus })\n\n// 执行富文本命令(可以是一个或多个)\n// 部分命令在执行前先判断当前选区是否为空,如果选区为空先进行全选操作\nconst execCommand = ({ target, action }: RichTextCommand) => {\n if (!target && handleElementId.value !== props.elementId) return\n if (target && target !== props.elementId) return\n\n const actions = ('command' in action) ? [action] : action\n\n for (const item of actions) {\n if (item.command === 'fontname' && item.value) {\n const mark = editorView.state.schema.marks.fontname.create({ fontname: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'fontsize' && item.value) {\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n setListStyle(editorView, { key: 'fontsize', value: item.value })\n }\n else if (item.command === 'fontsize-add') {\n const step = item.value ? +item.value : 2\n autoSelectAll(editorView)\n const fontsize = getFontsize(editorView) + step + 'px'\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize })\n addMark(editorView, mark)\n setListStyle(editorView, { key: 'fontsize', value: fontsize })\n }\n else if (item.command === 'fontsize-reduce') {\n const step = item.value ? +item.value : 2\n autoSelectAll(editorView)\n let fontsize = getFontsize(editorView) - step\n if (fontsize < 12) fontsize = 12\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: fontsize + 'px' })\n addMark(editorView, mark)\n setListStyle(editorView, { key: 'fontsize', value: fontsize + 'px' })\n }\n else if (item.command === 'color' && item.value) {\n const mark = editorView.state.schema.marks.forecolor.create({ color: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n setListStyle(editorView, { key: 'color', value: item.value })\n }\n else if (item.command === 'backcolor' && item.value) {\n const mark = editorView.state.schema.marks.backcolor.create({ backcolor: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'bold') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.strong)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'em') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.em)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'underline') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.underline)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'strikethrough') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.strikethrough)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'subscript') {\n toggleMark(editorView.state.schema.marks.subscript)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'superscript') {\n toggleMark(editorView.state.schema.marks.superscript)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'blockquote') {\n const isBlockquote = isActiveOfParentNodeType('blockquote', editorView.state)\n if (isBlockquote) lift(editorView.state, editorView.dispatch)\n else wrapIn(editorView.state.schema.nodes.blockquote)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'code') {\n toggleMark(editorView.state.schema.marks.code)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'align' && item.value) {\n alignmentCommand(editorView, item.value)\n }\n else if (item.command === 'indent' && item.value) {\n indentCommand(editorView, +item.value)\n }\n else if (item.command === 'textIndent' && item.value) {\n textIndentCommand(editorView, +item.value)\n }\n else if (item.command === 'bulletList') {\n const listStyleType = item.value || ''\n const { bullet_list: bulletList, list_item: listItem } = editorView.state.schema.nodes\n const textStyle = {\n color: richTextAttrs.value.color,\n fontsize: richTextAttrs.value.fontsize\n }\n toggleList(bulletList, listItem, listStyleType, textStyle)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'orderedList') {\n const listStyleType = item.value || ''\n const { ordered_list: orderedList, list_item: listItem } = editorView.state.schema.nodes\n const textStyle = {\n color: richTextAttrs.value.color,\n fontsize: richTextAttrs.value.fontsize\n }\n toggleList(orderedList, listItem, listStyleType, textStyle)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'clear') {\n autoSelectAll(editorView)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.removeMark($from.pos, $to.pos))\n setListStyle(editorView, [\n { key: 'fontsize', value: '' },\n { key: 'color', value: '' },\n ])\n }\n else if (item.command === 'link') {\n const markType = editorView.state.schema.marks.link\n const { from, to } = editorView.state.selection\n const result = findNodesWithSameMark(editorView.state.doc, from, to, markType)\n if (result) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark, { from: result.from.pos, to: result.to.pos + 1 })\n }\n else editorView.dispatch(editorView.state.tr.removeMark(result.from.pos, result.to.pos + 1, markType))\n }\n else if (markActive(editorView.state, markType)) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark)\n }\n else toggleMark(markType)(editorView.state, editorView.dispatch)\n }\n else if (item.value) {\n autoSelectAll(editorView)\n toggleMark(markType, { href: item.value, title: item.value })(editorView.state, editorView.dispatch)\n }\n }\n else if (item.command === 'insert' && item.value) {\n editorView.dispatch(editorView.state.tr.insertText(item.value))\n }\n }\n\n editorView.focus()\n handleInput()\n handleClick()\n}\n\n// 鼠标抬起时,执行格式刷命令\nconst handleMouseup = () => {\n if (!textFormatPainter.value) return\n const { keep, ...newProps } = textFormatPainter.value\n\n const actions: RichTextAction[] = [{ command: 'clear' }]\n for (const key of Object.keys(newProps) as TextFormatPainterKeys[]) {\n const command = key\n const value = textFormatPainter.value[key]\n if (value === true) actions.push({ command })\n else if (value) actions.push({ command, value })\n }\n execCommand({ action: actions })\n if (!keep) mainStore.setTextFormatPainter(null)\n}\n\n// Prosemirror编辑器的初始化和卸载\nonMounted(() => {\n editorView = initProsemirrorEditor((editorViewRef.value as Element), textContent.value, {\n handleDOMEvents: {\n focus: handleFocus,\n blur: handleBlur,\n keydown: handleKeydown,\n click: handleClick,\n mouseup: handleMouseup,\n },\n editable: () => props.editable,\n })\n if (props.autoFocus) editorView.focus()\n})\nonUnmounted(() => {\n editorView && editorView.destroy()\n})\n\nconst syncAttrsToStore = () => {\n if (handleElementId.value !== props.elementId) return\n handleClick()\n}\n\nemitter.on(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\nemitter.on(EmitterEvents.SYNC_RICH_TEXT_ATTRS_TO_STORE, syncAttrsToStore)\nonUnmounted(() => {\n emitter.off(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\n emitter.off(EmitterEvents.SYNC_RICH_TEXT_ATTRS_TO_STORE, syncAttrsToStore)\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"prosemirror-editor\", { 'format-painter': _unref(textFormatPainter) }]),\n ref_key: \"editorViewRef\",\n ref: editorViewRef,\n onMousedown: _cache[0] || (_cache[0] = $event => emit('mousedown', $event))\n }, null, 34))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ProsemirrorEditor.vue?vue&type=style&index=0&id=653f533c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-653f533c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, openBlock as _openBlock, createElementBlock as _createElementBlock, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2a1e49ba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"drag-handler top\" }, null, -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"drag-handler bottom\" }, null, -1))\n\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { debounce } from 'lodash'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTTextElement } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\nimport ProsemirrorEditor from '@/views/components/element/ProsemirrorEditor.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElementId, isScaling } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst elementRef = ref()\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\n}\n\n// 监听文本元素的尺寸变化,当高度变化时,更新高度到vuex\n// 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\nconst realHeightCache = ref(-1)\nconst realWidthCache = ref(-1)\n\nwatch(isScaling, () => {\n if (handleElementId.value !== props.elementInfo.id) return\n\n if (!isScaling.value) {\n if (!props.elementInfo.vertical && realHeightCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeightCache.value },\n })\n realHeightCache.value = -1\n }\n if (props.elementInfo.vertical && realWidthCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { width: realWidthCache.value },\n })\n realWidthCache.value = -1\n }\n }\n})\n\nconst updateTextElementHeight = (entries: ResizeObserverEntry[]) => {\n const contentRect = entries[0].contentRect\n if (!elementRef.value) return\n\n const realHeight = contentRect.height + 20\n const realWidth = contentRect.width + 20\n\n if (!props.elementInfo.vertical && props.elementInfo.height !== realHeight) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeight },\n })\n }\n else realHeightCache.value = realHeight\n }\n if (props.elementInfo.vertical && props.elementInfo.width !== realWidth) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { width: realWidth },\n })\n }\n else realWidthCache.value = realWidth\n }\n}\nconst resizeObserver = new ResizeObserver(updateTextElementHeight)\n\nonMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n})\nonUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n})\n\nconst updateContent = (content: string) => {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { content },\n })\n \n addHistorySnapshot()\n}\n\nconst checkEmptyText = debounce(function() {\n const pureText = props.elementInfo.content.replaceAll(/<[^>]+>/g, '')\n if (!pureText) slidesStore.deleteElement(props.elementInfo.id)\n}, 300, { trailing: true })\n\nconst isHandleElement = computed(() => handleElementId.value === props.elementInfo.id)\nwatch(isHandleElement, () => {\n if (!isHandleElement.value) checkEmptyText()\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-text\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n ref_key: \"elementRef\",\n ref: elementRef,\n style: _normalizeStyle({\n width: _ctx.elementInfo.vertical ? 'auto' : _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.vertical ? _ctx.elementInfo.height + 'px' : 'auto',\n backgroundColor: _ctx.elementInfo.fill,\n opacity: _ctx.elementInfo.opacity,\n textShadow: _unref(shadowStyle),\n lineHeight: _ctx.elementInfo.lineHeight,\n letterSpacing: (_ctx.elementInfo.wordSpace || 0) + 'px',\n color: _ctx.elementInfo.defaultColor,\n fontFamily: _ctx.elementInfo.defaultFontName,\n writingMode: _ctx.elementInfo.vertical ? 'vertical-rl' : 'horizontal-tb',\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event))\n }, [\n _createVNode(ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(ProsemirrorEditor, {\n class: \"text\",\n elementId: _ctx.elementInfo.id,\n defaultColor: _ctx.elementInfo.defaultColor,\n defaultFontName: _ctx.elementInfo.defaultFontName,\n editable: !_ctx.elementInfo.lock,\n value: _ctx.elementInfo.content,\n style: _normalizeStyle({\n '--paragraphSpace': `${_ctx.elementInfo.paragraphSpace === undefined ? 5 : _ctx.elementInfo.paragraphSpace}px`,\n }),\n onUpdate: _cache[0] || (_cache[0] = value => updateContent(value)),\n onMousedown: _cache[1] || (_cache[1] = $event => handleSelectElement($event, false))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\", \"style\"]),\n _hoisted_1,\n _hoisted_2\n ], 36)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2a1e49ba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2a1e49ba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"gradientTransform\"]\nconst _hoisted_2 = [\"stop-color\"]\nconst _hoisted_3 = [\"stop-color\"]\nconst _hoisted_4 = [\"id\"]\nconst _hoisted_5 = [\"stop-color\"]\nconst _hoisted_6 = [\"stop-color\"]\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'GradientDefs',\n props: {\n id: {},\n type: {},\n color1: {},\n color2: {},\n rotate: { default: 0 }\n },\n setup(__props: any) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.type === 'linear')\n ? (_openBlock(), _createElementBlock(\"linearGradient\", {\n key: 0,\n id: _ctx.id,\n x1: \"0%\",\n y1: \"0%\",\n x2: \"100%\",\n y2: \"0%\",\n gradientTransform: `rotate(${_ctx.rotate},0.5,0.5)`\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": _ctx.color1\n }, null, 8, _hoisted_2),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": _ctx.color2\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"radialGradient\", {\n key: 1,\n id: _ctx.id\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": _ctx.color1\n }, null, 8, _hoisted_5),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": _ctx.color2\n }, null, 8, _hoisted_6)\n ], 8, _hoisted_4))\n}\n}\n\n})","import script from \"./GradientDefs.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./GradientDefs.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5d988de2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\", \"fill\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTShapeElement, ShapeText } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport GradientDefs from './GradientDefs.vue'\nimport ProsemirrorEditor from '@/views/components/element/ProsemirrorEditor.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElementId, shapeFormatPainter } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\n}\n\nconst execFormatPainter = () => {\n if (!shapeFormatPainter.value) return\n const { keep, ...newProps } = shapeFormatPainter.value\n\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: newProps,\n })\n \n addHistorySnapshot()\n if (!keep) mainStore.setShapeFormatPainter(null)\n}\n\nconst outline = computed(() => props.elementInfo.outline)\nconst { outlineWidth, outlineColor, strokeDashArray } = useElementOutline(outline)\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst editable = ref(false)\n\nwatch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) {\n if (editable.value) editable.value = false\n }\n})\n\nconst text = computed(() => {\n const defaultText: ShapeText = {\n content: '',\n defaultFontName: '微软雅黑',\n defaultColor: '#000',\n align: 'middle',\n }\n if (!props.elementInfo.text) return defaultText\n\n return props.elementInfo.text\n})\n\nconst updateText = (content: string) => {\n const _text = { ...text.value, content }\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { text: _text },\n })\n \n addHistorySnapshot()\n}\n\nconst checkEmptyText = () => {\n if (!props.elementInfo.text) return\n\n const pureText = props.elementInfo.text.content.replaceAll(/<[^>]+>/g, '')\n if (!pureText) {\n slidesStore.removeElementProps({ id: props.elementInfo.id, propName: 'text' })\n addHistorySnapshot()\n }\n}\n\nconst prosemirrorEditorRef = ref>()\nconst startEdit = () => {\n editable.value = true\n nextTick(() => prosemirrorEditorRef.value && prosemirrorEditorRef.value.focus())\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", {\n 'lock': _ctx.elementInfo.lock,\n 'format-painter': _unref(shapeFormatPainter),\n }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: _ctx.elementInfo.opacity,\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n color: text.value.defaultColor,\n fontFamily: text.value.defaultFontName,\n }),\n onMousedown: _cache[3] || (_cache[3] = $event => handleSelectElement($event)),\n onMouseup: _cache[4] || (_cache[4] = ($event: any) => (execFormatPainter())),\n onTouchstart: _cache[5] || (_cache[5] = $event => handleSelectElement($event)),\n onDblclick: _cache[6] || (_cache[6] = ($event: any) => (startEdit()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height\n }, [\n (_ctx.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(GradientDefs, {\n id: `editabel-gradient-${_ctx.elementInfo.id}`,\n type: _ctx.elementInfo.gradient.type,\n color1: _ctx.elementInfo.gradient.color[0],\n color2: _ctx.elementInfo.gradient.color[1],\n rotate: _ctx.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: \"shape-path\",\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n d: _ctx.elementInfo.path,\n fill: _ctx.elementInfo.gradient ? `url(#editabel-gradient-${_ctx.elementInfo.id})` : _ctx.elementInfo.fill,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_1)),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape-text\", [text.value.align, { 'editable': editable.value || text.value.content }]])\n }, [\n (editable.value || text.value.content)\n ? (_openBlock(), _createBlock(ProsemirrorEditor, {\n key: 0,\n ref_key: \"prosemirrorEditorRef\",\n ref: prosemirrorEditorRef,\n elementId: _ctx.elementInfo.id,\n defaultColor: text.value.defaultColor,\n defaultFontName: text.value.defaultFontName,\n editable: !_ctx.elementInfo.lock,\n value: text.value.content,\n onUpdate: _cache[0] || (_cache[0] = value => updateText(value)),\n onBlur: _cache[1] || (_cache[1] = ($event: any) => (checkEmptyText())),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event, false))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ], 36)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5d988de2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5d988de2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"markerWidth\", \"markerHeight\", \"refX\", \"refY\"]\nconst _hoisted_2 = [\"d\", \"fill\", \"transform\"]\n\nimport { computed } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinePointMarker',\n props: {\n id: {},\n position: {},\n type: {},\n baseSize: {},\n color: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst pathMap = {\n dot: 'm0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z',\n arrow: 'M0,0 L10,5 0,10 Z',\n}\nconst rotateMap: { [key: string]: number } = {\n 'arrow-start': 180,\n 'arrow-end': 0,\n}\n\nconst path = computed(() => pathMap[props.type])\nconst rotate = computed(() => rotateMap[`${props.type}-${props.position}`] || 0)\nconst size = computed(() => props.baseSize < 2 ? 2 : props.baseSize)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"marker\", {\n id: `${_ctx.id}-${_ctx.type}-${_ctx.position}`,\n markerUnits: \"userSpaceOnUse\",\n orient: \"auto\",\n markerWidth: size.value * 3,\n markerHeight: size.value * 3,\n refX: size.value * 1.5,\n refY: size.value * 1.5\n }, [\n _createElementVNode(\"path\", {\n d: path.value,\n fill: _ctx.color,\n transform: `scale(${size.value * 0.3}, ${size.value * 0.3}) rotate(${rotate.value}, 5, 5)`\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n}\n}\n\n})","\n\n","import script from \"./LinePointMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinePointMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-16512454\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\nconst _hoisted_3 = [\"d\"]\n\nimport { computed } from 'vue'\nimport type { PPTLineElement } from '@/types/slides'\nimport { getLineElementPath } from '@/utils/element'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\nimport LinePointMarker from './LinePointMarker.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n})\nconst svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n})\n\nconst lineDashArray = computed(() => {\n if (props.elementInfo.style !== 'dashed') return '0 0'\n const size = props.elementInfo.width\n return size <= 8 ? `${size * 5} ${size * 2.5}` : `${size * 5} ${size * 1.5}`\n})\n\nconst path = computed(() => {\n return getLineElementPath(props.elementInfo)\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '' }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: svgWidth.value,\n height: svgHeight.value\n }, [\n _createElementVNode(\"defs\", null, [\n (_ctx.elementInfo.points[0])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 0,\n id: _ctx.elementInfo.id,\n position: \"start\",\n type: _ctx.elementInfo.points[0],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.points[1])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 1,\n id: _ctx.elementInfo.id,\n position: \"end\",\n type: _ctx.elementInfo.points[1],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n class: \"line-point\",\n d: path.value,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.width,\n \"stroke-dasharray\": lineDashArray.value,\n fill: \"none\",\n \"marker-start\": _ctx.elementInfo.points[0] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[0]}-start)` : '',\n \"marker-end\": _ctx.elementInfo.points[1] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2),\n _withDirectives(_createElementVNode(\"path\", {\n class: \"line-path\",\n d: path.value,\n stroke: \"transparent\",\n \"stroke-width\": \"20\",\n fill: \"none\"\n }, null, 8, _hoisted_3), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 8, _hoisted_1))\n ], 36)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=16512454&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-16512454\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { computed, inject, onMounted, ref, watch } from 'vue'\nimport tinycolor from 'tinycolor2'\nimport { BarChart, LineChart, PieChart } from 'chartist'\nimport type { ChartData, ChartOptions, ChartType } from '@/types/slides'\nimport { injectKeySlideScale } from '@/types/injectKey'\n\nimport 'chartist/dist/index.css'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Chart',\n props: {\n width: {},\n height: {},\n type: {},\n data: {},\n themeColor: {},\n legends: {},\n options: {},\n gridColor: {},\n legend: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst chartRef = ref()\nconst slideScale = inject(injectKeySlideScale) || ref(1)\n\nlet chart: LineChart | BarChart | PieChart | undefined\n\nconst chartHeight = computed(() => {\n if (props.legend) return props.height - 20\n return props.height\n})\n\nconst getPieChartData = () => ({ ...props.data, series: props.data.series[0] })\n\nconst getOptions = () => {\n const propsOptopns = props.options || {}\n return {\n ...propsOptopns,\n width: props.width * slideScale.value,\n height: chartHeight.value * slideScale.value,\n }\n}\n\nconst renderChart = () => {\n if (!chartRef.value) return\n\n const options = getOptions()\n if (props.type === 'bar') chart = new BarChart(chartRef.value, props.data, options)\n if (props.type === 'line') chart = new LineChart(chartRef.value, props.data, options)\n if (props.type === 'pie') chart = new PieChart(chartRef.value, getPieChartData(), options)\n}\n\nconst updateChart = () => {\n if (!chart) {\n renderChart()\n return\n }\n const options = getOptions()\n const data = props.type === 'pie' ? getPieChartData() : props.data\n chart.update(data, options)\n}\n\nwatch([\n () => props.width,\n () => props.height,\n () => props.data,\n () => props.options,\n slideScale,\n], updateChart)\n\nonMounted(renderChart)\n\nconst themeColors = computed(() => {\n let colors: string[] = []\n if (props.themeColor.length >= 10) colors = props.themeColor\n else if (props.themeColor.length === 1) colors = tinycolor(props.themeColor[0]).analogous(10).map(color => color.toRgbString())\n else {\n const len = props.themeColor.length\n const supplement = tinycolor(props.themeColor[len - 1]).analogous(10 + 1 - len).map(color => color.toRgbString())\n colors = [...props.themeColor.slice(0, len - 1), ...supplement]\n }\n return colors\n})\n\n// 更新主题配色:\n// 如果当前所设置的主题色数小于10,剩余部分获取最后一个主题色的相近颜色作为配色\nconst updateTheme = () => {\n if (!chartRef.value) return\n\n for (let i = 0; i < 10; i++) {\n chartRef.value.style.setProperty(`--theme-color-${i + 1}`, themeColors.value[i])\n }\n}\n\nwatch(themeColors, updateTheme)\nonMounted(updateTheme)\n\n// 更新网格颜色,包括坐标的文字部分\nconst updateGridColor = () => {\n if (!chartRef.value) return\n if (props.gridColor) chartRef.value.style.setProperty(`--grid-color`, props.gridColor)\n}\n\nwatch(() => props.gridColor, updateGridColor)\nonMounted(updateGridColor)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"chart\",\n style: _normalizeStyle({ flexDirection: _ctx.legend === 'top' ? 'column-reverse' : 'column' })\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n ref_key: \"chartRef\",\n ref: chartRef,\n style: _normalizeStyle({\n width: _ctx.width + 'px',\n height: chartHeight.value + 'px',\n transform: `scale(${1 / _unref(slideScale)})`,\n })\n }, null, 4),\n (_ctx.legend)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"legends\",\n style: _normalizeStyle({ transform: `scale(${1 / _unref(slideScale)})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.legends, (legend, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"legend\",\n key: index,\n style: _normalizeStyle({ color: _ctx.gridColor })\n }, [\n _createElementVNode(\"div\", {\n class: \"block\",\n style: _normalizeStyle({ backgroundColor: themeColors.value[index] })\n }, null, 4),\n _createTextVNode(\" \" + _toDisplayString(legend), 1)\n ], 4))\n }), 128))\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n\n","import script from \"./Chart.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Chart.vue?vue&type=style&index=0&id=ae2a96a6&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=ae2a96a6&lang=scss\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ae2a96a6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, openBlock as _openBlock, createElementBlock as _createElementBlock, withDirectives as _withDirectives, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nimport type { PPTChartElement } from '@/types/slides'\r\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\r\nconst props = __props\r\n\r\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n}\r\n\r\nconst openDataEditor = () => {\r\n emitter.emit(EmitterEvents.OPEN_CHART_DATA_EDITOR)\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-chart\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top + 'px',\r\n left: _ctx.elementInfo.left + 'px',\r\n width: _ctx.elementInfo.width + 'px',\r\n height: _ctx.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: _ctx.elementInfo.fill,\r\n }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($event: any) => (openDataEditor()))\n }, [\n _createVNode(ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(Chart, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n type: _ctx.elementInfo.chartType,\n data: _ctx.elementInfo.data,\n options: _ctx.elementInfo.options,\n themeColor: _ctx.elementInfo.themeColor,\n gridColor: _ctx.elementInfo.gridColor,\n legends: _ctx.elementInfo.data.legends,\n legend: _ctx.elementInfo.legend || ''\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\"])\n ], 36)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\r\n\r\n\r\n\r\n\r\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6fc3de39&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6fc3de39\"]])\n\nexport default __exports__","import type { CSSProperties } from 'vue'\nimport type { TableCellStyle } from '@/types/slides'\n\n/**\n * 计算单元格文本样式\n * @param style 单元格文本样式原数据\n */\nexport const getTextStyle = (style?: TableCellStyle): CSSProperties => {\n if (!style) return {}\n const {\n bold,\n em,\n underline,\n strikethrough,\n color,\n backcolor,\n fontsize,\n fontname,\n align,\n } = style\n\n let textDecoration = `${underline ? 'underline' : ''} ${strikethrough ? 'line-through' : ''}`\n if (textDecoration === ' ') textDecoration = 'none'\n \n return {\n fontWeight: bold ? 'bold' : 'normal',\n fontStyle: em ? 'italic' : 'normal',\n textDecoration,\n color: color || '#000',\n backgroundColor: backcolor || '',\n fontSize: fontsize || '14px',\n fontFamily: fontname || '微软雅黑',\n textAlign: align || 'left',\n }\n}\n\nexport const formatText = (text: string) => {\n return text.replace(/\\n/g, '
').replace(/ /g, ' ')\n}","import { computed, type Ref } from 'vue'\nimport type { TableCell } from '@/types/slides'\n\n// 计算无效的单元格位置(被合并的单元格位置)集合\n\nexport default (cells: Ref) => {\n const hideCells = computed(() => {\n const hideCells = []\n \n for (let i = 0; i < cells.value.length; i++) {\n const rowCells = cells.value[i]\n\n for (let j = 0; j < rowCells.length; j++) {\n const cell = rowCells[j]\n \n if (cell.colspan > 1 || cell.rowspan > 1) {\n for (let row = i; row < i + cell.rowspan; row++) {\n for (let col = row === i ? j + 1 : j; col < j + cell.colspan; col++) {\n hideCells.push(`${row}_${col}`)\n }\n }\n }\n }\n }\n return hideCells\n })\n\n return {\n hideCells,\n }\n}","import { ref, watch, type Ref } from 'vue'\nimport type { TableTheme } from '@/types/slides'\nimport { getTableSubThemeColor } from '@/utils/element'\n\n// 通过表格的主题色计算辅助颜色\n\nexport default (theme: Ref) => {\n const subThemeColor = ref(['', ''])\n watch(() => theme.value, () => {\n if (theme.value) {\n subThemeColor.value = getTableSubThemeColor(theme.value.color)\n }\n }, { immediate: true })\n\n return {\n subThemeColor,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7a7222ac\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { onBeforeUnmount, ref, watch } from 'vue'\nimport { pasteCustomClipboardString, pasteExcelClipboardString } from '@/utils/clipboard'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomTextarea',\n props: {\n value: { default: '' }\n },\n emits: [\"updateValue\", \"insertExcelData\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst textareaRef = ref()\nconst text = ref('')\nconst isFocus = ref(false)\n\n// 自定义v-modal,同步数据\n// 当文本框聚焦时,不执行数据同步\nwatch(() => props.value, () => {\n if (isFocus.value) return\n text.value = props.value\n if (textareaRef.value) textareaRef.value.innerHTML = props.value\n}, { immediate: true })\n\nconst handleInput = () => {\n if (!textareaRef.value) return\n const text = textareaRef.value.innerHTML\n emit('updateValue', text)\n}\n\n// 聚焦时更新焦点标记,并监听粘贴事件\nconst handleFocus = () => {\n isFocus.value = true\n\n if (!textareaRef.value) return\n textareaRef.value.onpaste = (e: ClipboardEvent) => {\n e.preventDefault()\n if (!e.clipboardData) return\n\n const clipboardDataFirstItem = e.clipboardData.items[0]\n\n if (clipboardDataFirstItem && clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\n clipboardDataFirstItem.getAsString(text => {\n const clipboardData = pasteCustomClipboardString(text)\n if (typeof clipboardData === 'object') return\n \n const excelData = pasteExcelClipboardString(text)\n if (excelData) {\n emit('insertExcelData', excelData)\n if (textareaRef.value) textareaRef.value.innerHTML = excelData[0][0]\n return\n }\n\n document.execCommand('insertText', false, text)\n })\n }\n }\n}\n\n// 失焦时更新焦点标记,清除粘贴事件监听\nconst handleBlur = () => {\n isFocus.value = false\n if (textareaRef.value) textareaRef.value.onpaste = null\n}\n\n// 清除粘贴事件监听\nonBeforeUnmount(() => {\n if (textareaRef.value) textareaRef.value.onpaste = null\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"custom-textarea\",\n ref_key: \"textareaRef\",\n ref: textareaRef,\n contenteditable: true,\n onFocus: _cache[0] || (_cache[0] = ($event: any) => (handleFocus())),\n onBlur: _cache[1] || (_cache[1] = ($event: any) => (handleBlur())),\n onInput: _cache[2] || (_cache[2] = ($event: any) => (handleInput())),\n innerHTML: text.value\n }, null, 40, _hoisted_1))\n}\n}\n\n})","\n\n\n\n","import script from \"./CustomTextarea.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomTextarea.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./CustomTextarea.vue?vue&type=style&index=0&id=7a7222ac&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7a7222ac\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, vShow as _vShow, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0236a619\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"handler\"\n}\nconst _hoisted_2 = [\"onMousedown\"]\nconst _hoisted_3 = [\"width\"]\nconst _hoisted_4 = [\"rowspan\", \"colspan\", \"data-cell-index\", \"onMousedown\", \"onMouseenter\"]\nconst _hoisted_5 = [\"innerHTML\"]\n\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { debounce, isEqual } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore } from '@/store'\nimport type { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { KEYS } from '@/configs/hotkey'\nimport { getTextStyle, formatText } from './utils'\nimport useHideCells from './useHideCells'\nimport useSubThemeColor from './useSubThemeColor'\n\nimport CustomTextarea from './CustomTextarea.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditableTable',\n props: {\n data: {},\n width: {},\n cellMinHeight: {},\n colWidths: {},\n outline: {},\n theme: {},\n editable: { type: Boolean, default: true }\n },\n emits: [\"change\", \"changeColWidths\", \"changeSelectedCells\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst { canvasScale } = storeToRefs(useMainStore())\n \nconst isStartSelect = ref(false)\nconst startCell = ref([])\nconst endCell = ref([])\n\nconst tableCells = computed({\n get() {\n return props.data\n },\n set(newData) {\n emit('change', newData)\n },\n})\n\n// 主题辅助色\nconst theme = computed(() => props.theme)\nconst { subThemeColor } = useSubThemeColor(theme)\n\n// 计算表格每一列的列宽和总宽度\nconst colSizeList = ref([])\nconst totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\nwatch([\n () => props.colWidths,\n () => props.width,\n], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n}, { immediate: true })\n\n// 清除全部单元格的选中状态\n// 表格处于不可编辑状态时也需要清除\nconst removeSelectedCells = () => {\n startCell.value = []\n endCell.value = []\n}\n\nwatch(() => props.editable, () => {\n if (!props.editable) removeSelectedCells()\n})\n\n// 用于拖拽列宽的操作节点位置\nconst dragLinePosition = computed(() => {\n const dragLinePosition: number[] = []\n for (let i = 1; i < colSizeList.value.length + 1; i++) {\n const pos = colSizeList.value.slice(0, i).reduce((a, b) => (a + b))\n dragLinePosition.push(pos)\n }\n return dragLinePosition\n})\n\n// 无效的单元格位置(被合并的单元格位置)集合\nconst cells = computed(() => props.data)\nconst { hideCells } = useHideCells(cells)\n\n// 当前选中的单元格集合\nconst selectedCells = computed(() => {\n if (!startCell.value.length) return []\n const [startX, startY] = startCell.value\n\n if (!endCell.value.length) return [`${startX}_${startY}`]\n const [endX, endY] = endCell.value\n\n if (startX === endX && startY === endY) return [`${startX}_${startY}`]\n\n const selectedCells = []\n\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n for (let i = 0; i < tableCells.value.length; i++) {\n const rowCells = tableCells.value[i]\n for (let j = 0; j < rowCells.length; j++) {\n if (i >= minX && i <= maxX && j >= minY && j <= maxY) selectedCells.push(`${i}_${j}`)\n }\n }\n return selectedCells\n})\n\nwatch(selectedCells, (value, oldValue) => {\n if (isEqual(value, oldValue)) return\n emit('changeSelectedCells', selectedCells.value)\n})\n\n// 当前激活的单元格:当且仅当只有一个选中单元格时,该单元格为激活的单元格\nconst activedCell = computed(() => {\n if (selectedCells.value.length > 1) return null\n return selectedCells.value[0]\n})\n\n// 设置选中单元格状态(鼠标点击或拖选)\nconst handleMouseup = () => isStartSelect.value = false\n\nconst handleCellMousedown = (e: MouseEvent, rowIndex: number, colIndex: number) => {\n if (e.button === 0) {\n endCell.value = []\n isStartSelect.value = true\n startCell.value = [rowIndex, colIndex]\n }\n}\n\nconst handleCellMouseenter = (rowIndex: number, colIndex: number) => {\n if (!isStartSelect.value) return\n endCell.value = [rowIndex, colIndex]\n}\n\nonMounted(() => {\n document.addEventListener('mouseup', handleMouseup)\n})\nonUnmounted(() => {\n document.removeEventListener('mouseup', handleMouseup)\n})\n\n// 判断某位置是否为无效单元格(被合并掉的位置)\nconst isHideCell = (rowIndex: number, colIndex: number) => hideCells.value.includes(`${rowIndex}_${colIndex}`)\n\n// 选中指定的列\nconst selectCol = (index: number) => {\n const maxRow = tableCells.value.length - 1\n startCell.value = [0, index]\n endCell.value = [maxRow, index]\n}\n\n// 选中指定的行\nconst selectRow = (index: number) => {\n const maxCol = tableCells.value[index].length - 1\n startCell.value = [index, 0]\n endCell.value = [index, maxCol]\n}\n\n// 选中全部单元格\nconst selectAll = () => {\n const maxRow = tableCells.value.length - 1\n const maxCol = tableCells.value[maxRow].length - 1\n startCell.value = [0, 0]\n endCell.value = [maxRow, maxCol]\n}\n\n// 删除一行\nconst deleteRow = (rowIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const targetCells = tableCells.value[rowIndex]\n const hideCellsPos = []\n for (let i = 0; i < targetCells.length; i++) {\n if (isHideCell(rowIndex, i)) hideCellsPos.push(i)\n }\n \n for (const pos of hideCellsPos) {\n for (let i = rowIndex; i >= 0; i--) {\n if (!isHideCell(i, pos)) {\n _tableCells[i][pos].rowspan = _tableCells[i][pos].rowspan - 1\n break\n }\n }\n }\n\n _tableCells.splice(rowIndex, 1)\n tableCells.value = _tableCells\n}\n\n// 删除一列\nconst deleteCol = (colIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const hideCellsPos = []\n for (let i = 0; i < tableCells.value.length; i++) {\n if (isHideCell(i, colIndex)) hideCellsPos.push(i)\n }\n\n for (const pos of hideCellsPos) {\n for (let i = colIndex; i >= 0; i--) {\n if (!isHideCell(pos, i)) {\n _tableCells[pos][i].colspan = _tableCells[pos][i].colspan - 1\n break\n }\n }\n }\n\n tableCells.value = _tableCells.map(item => {\n item.splice(colIndex, 1)\n return item\n })\n colSizeList.value.splice(colIndex, 1)\n emit('changeColWidths', colSizeList.value)\n}\n\n// 插入一行\nconst insertRow = (rowIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const rowCells: TableCell[] = []\n for (let i = 0; i < _tableCells[0].length; i++) {\n rowCells.push({\n colspan: 1,\n rowspan: 1,\n text: '',\n id: nanoid(10),\n })\n }\n\n _tableCells.splice(rowIndex, 0, rowCells)\n tableCells.value = _tableCells\n}\n\n// 插入一列\nconst insertCol = (colIndex: number) => {\n tableCells.value = tableCells.value.map(item => {\n const cell = {\n colspan: 1,\n rowspan: 1,\n text: '',\n id: nanoid(10),\n }\n item.splice(colIndex, 0, cell)\n return item\n })\n colSizeList.value.splice(colIndex, 0, 100)\n emit('changeColWidths', colSizeList.value)\n}\n\n// 填充指定的行/列数\nconst fillTable = (rowCount: number, colCount: number) => {\n let _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n const defaultCell = { colspan: 1, rowspan: 1, text: '' }\n \n if (rowCount) {\n const newRows = []\n for (let i = 0; i < rowCount; i++) {\n const rowCells: TableCell[] = []\n for (let j = 0; j < _tableCells[0].length; j++) {\n rowCells.push({\n ...defaultCell,\n id: nanoid(10),\n })\n }\n newRows.push(rowCells)\n }\n _tableCells = [..._tableCells, ...newRows]\n }\n if (colCount) {\n _tableCells = _tableCells.map(item => {\n const cells: TableCell[] = []\n for (let i = 0; i < colCount; i++) {\n const cell = {\n ...defaultCell,\n id: nanoid(10),\n }\n cells.push(cell)\n }\n return [...item, ...cells]\n })\n colSizeList.value = [...colSizeList.value, ...new Array(colCount).fill(100)]\n emit('changeColWidths', colSizeList.value)\n }\n\n tableCells.value = _tableCells\n}\n\n// 合并单元格\nconst mergeCells = () => {\n const [startX, startY] = startCell.value\n const [endX, endY] = endCell.value\n\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n \n _tableCells[minX][minY].rowspan = maxX - minX + 1\n _tableCells[minX][minY].colspan = maxY - minY + 1\n\n tableCells.value = _tableCells\n removeSelectedCells()\n}\n\n// 拆分单元格\nconst splitCells = (rowIndex: number, colIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n _tableCells[rowIndex][colIndex].rowspan = 1\n _tableCells[rowIndex][colIndex].colspan = 1\n\n tableCells.value = _tableCells\n removeSelectedCells()\n}\n\n// 鼠标拖拽调整列宽\nconst handleMousedownColHandler = (e: MouseEvent, colIndex: number) => {\n removeSelectedCells()\n let isMouseDown = true\n\n const originWidth = colSizeList.value[colIndex]\n const startPageX = e.pageX\n\n const minWidth = 50\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n \n const moveX = (e.pageX - startPageX) / canvasScale.value\n const width = originWidth + moveX < minWidth ? minWidth : Math.round(originWidth + moveX)\n\n colSizeList.value[colIndex] = width\n }\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n emit('changeColWidths', colSizeList.value)\n }\n}\n\n// 清空选中单元格内的文字\nconst clearSelectedCellText = () => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n for (let i = 0; i < _tableCells.length; i++) {\n for (let j = 0; j < _tableCells[i].length; j++) {\n if (selectedCells.value.includes(`${i}_${j}`)) {\n _tableCells[i][j].text = ''\n }\n }\n }\n tableCells.value = _tableCells\n}\n\n// 将焦点移动到下一个单元格\n// 当前行右边有单元格时,焦点右移\n// 当前行右边无单元格(已处在行末),且存在下一行时,焦点移动至下一行行首\n// 当前行右边无单元格(已处在行末),且不存在下一行(已处在最后一行)时,新建一行并将焦点移动至下一行行首\nconst tabActiveCell = () => {\n const getNextCell = (i: number, j: number): [number, number] | null => {\n if (!tableCells.value[i]) return null\n if (!tableCells.value[i][j]) return getNextCell(i + 1, 0)\n if (isHideCell(i, j)) return getNextCell(i, j + 1)\n return [i, j]\n }\n\n endCell.value = []\n\n const nextRow = startCell.value[0]\n const nextCol = startCell.value[1] + 1\n\n const nextCell = getNextCell(nextRow, nextCol)\n if (!nextCell) {\n insertRow(nextRow + 1)\n startCell.value = [nextRow + 1, 0]\n }\n else startCell.value = nextCell\n\n // 移动焦点后自动聚焦文本\n nextTick(() => {\n const textRef = document.querySelector('.cell-text.active') as HTMLInputElement\n if (textRef) textRef.focus()\n })\n}\n\n// 表格快捷键监听\nconst keydownListener = (e: KeyboardEvent) => {\n if (!props.editable || !selectedCells.value.length) return\n\n const key = e.key.toUpperCase()\n if (selectedCells.value.length < 2) {\n if (key === KEYS.TAB) {\n e.preventDefault()\n tabActiveCell()\n }\n if (e.ctrlKey && key === KEYS.UP) {\n e.preventDefault()\n const rowIndex = +selectedCells.value[0].split('_')[0]\n insertRow(rowIndex)\n }\n if (e.ctrlKey && key === KEYS.DOWN) {\n e.preventDefault()\n const rowIndex = +selectedCells.value[0].split('_')[0]\n insertRow(rowIndex + 1)\n }\n if (e.ctrlKey && key === KEYS.LEFT) {\n e.preventDefault()\n const colIndex = +selectedCells.value[0].split('_')[1]\n insertCol(colIndex)\n }\n if (e.ctrlKey && key === KEYS.RIGHT) {\n e.preventDefault()\n const colIndex = +selectedCells.value[0].split('_')[1]\n insertCol(colIndex + 1)\n }\n }\n else if (key === KEYS.DELETE) {\n clearSelectedCellText()\n }\n}\n\nonMounted(() => {\n document.addEventListener('keydown', keydownListener)\n})\nonUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n})\n\n// 单元格文字输入时更新表格数据\nconst handleInput = debounce(function(value, rowIndex, colIndex) {\n tableCells.value[rowIndex][colIndex].text = value\n emit('change', tableCells.value)\n}, 300, { trailing: true })\n\n// 插入来自Excel的数据,表格的行/列数不够时自动补足\nconst insertExcelData = (data: string[][], rowIndex: number, colIndex: number) => {\n const maxRow = data.length\n const maxCol = data[0].length\n\n let fillRowCount = 0\n let fillColCount = 0\n if (rowIndex + maxRow > tableCells.value.length) fillRowCount = rowIndex + maxRow - tableCells.value.length\n if (colIndex + maxCol > tableCells.value[0].length) fillColCount = colIndex + maxCol - tableCells.value[0].length\n if (fillRowCount || fillColCount) fillTable(fillRowCount, fillColCount)\n\n nextTick(() => {\n for (let i = 0; i < maxRow; i++) {\n for (let j = 0; j < maxCol; j++) {\n if (tableCells.value[rowIndex + i][colIndex + j]) {\n tableCells.value[rowIndex + i][colIndex + j].text = data[i][j]\n }\n }\n }\n emit('change', tableCells.value)\n })\n}\n\n// 获取有效的单元格(排除掉被合并的单元格)\nconst getEffectiveTableCells = () => {\n const effectiveTableCells = []\n\n for (let i = 0; i < tableCells.value.length; i++) {\n const rowCells = tableCells.value[i]\n const _rowCells = []\n for (let j = 0; j < rowCells.length; j++) {\n if (!isHideCell(i, j)) _rowCells.push(rowCells[j])\n }\n if (_rowCells.length) effectiveTableCells.push(_rowCells)\n }\n\n return effectiveTableCells\n}\n\n// 检查是否可以删除行和列:有效的行/列数大于1\nconst checkCanDeleteRowOrCol = () => {\n const effectiveTableCells = getEffectiveTableCells()\n const canDeleteRow = effectiveTableCells.length > 1\n const canDeleteCol = effectiveTableCells[0].length > 1\n\n return { canDeleteRow, canDeleteCol }\n}\n\n// 检查是否可以合并或拆分\n// 必须多选才可以合并\n// 必须单选且所选单元格为合并单元格才可以拆分\nconst checkCanMergeOrSplit = (rowIndex: number, colIndex: number) => {\n const isMultiSelected = selectedCells.value.length > 1\n const targetCell = tableCells.value[rowIndex][colIndex]\n\n const canMerge = isMultiSelected\n const canSplit = !isMultiSelected && (targetCell.rowspan > 1 || targetCell.colspan > 1)\n\n return { canMerge, canSplit }\n}\n\nconst contextmenus = (el: HTMLElement): ContextmenuItem[] => {\n const cellIndex = el.dataset.cellIndex as string\n const rowIndex = +cellIndex.split('_')[0]\n const colIndex = +cellIndex.split('_')[1]\n\n if (!selectedCells.value.includes(`${rowIndex}_${colIndex}`)) {\n startCell.value = [rowIndex, colIndex]\n endCell.value = []\n }\n\n const { canMerge, canSplit } = checkCanMergeOrSplit(rowIndex, colIndex)\n const { canDeleteRow, canDeleteCol } = checkCanDeleteRowOrCol()\n\n return [\n {\n text: '插入列',\n children: [\n { text: '到左侧', handler: () => insertCol(colIndex) },\n { text: '到右侧', handler: () => insertCol(colIndex + 1) },\n ],\n },\n {\n text: '插入行',\n children: [\n { text: '到上方', handler: () => insertRow(rowIndex) },\n { text: '到下方', handler: () => insertRow(rowIndex + 1) },\n ],\n },\n {\n text: '删除列',\n disable: !canDeleteCol,\n handler: () => deleteCol(colIndex),\n },\n {\n text: '删除行',\n disable: !canDeleteRow,\n handler: () => deleteRow(rowIndex),\n },\n { divider: true },\n {\n text: '合并单元格',\n disable: !canMerge,\n handler: mergeCells,\n },\n {\n text: '取消合并单元格',\n disable: !canSplit,\n handler: () => splitCells(rowIndex, colIndex),\n },\n { divider: true },\n {\n text: '选中当前列',\n handler: () => selectCol(colIndex),\n },\n {\n text: '选中当前行',\n handler: () => selectRow(rowIndex),\n },\n {\n text: '选中全部单元格',\n handler: selectAll,\n },\n ]\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-table\",\n style: _normalizeStyle({ width: totalWidth.value + 'px' })\n }, [\n (_ctx.editable)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(dragLinePosition.value, (pos, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"drag-line\",\n key: index,\n style: _normalizeStyle({ left: pos + 'px' }),\n onMousedown: $event => handleMousedownColHandler($event, index)\n }, null, 44, _hoisted_2))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': theme.value,\n 'row-header': theme.value?.rowHeader,\n 'row-footer': theme.value?.rowFooter,\n 'col-header': theme.value?.colHeader,\n 'col-footer': theme.value?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${theme.value?.color}; --subThemeColor1: ${_unref(subThemeColor)[0]}; --subThemeColor2: ${_unref(subThemeColor)[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(colSizeList.value, (width, index) => {\n return (_openBlock(), _createElementBlock(\"col\", {\n span: \"1\",\n key: index,\n width: width\n }, null, 8, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(tableCells.value, (rowCells, rowIndex) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: rowIndex,\n style: _normalizeStyle({ height: _ctx.cellMinHeight + 'px' })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rowCells, (cell, colIndex) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"td\", {\n class: _normalizeClass([\"cell\", {\n 'selected': selectedCells.value.includes(`${rowIndex}_${colIndex}`) && selectedCells.value.length > 1,\n 'active': activedCell.value === `${rowIndex}_${colIndex}`,\n }]),\n style: _normalizeStyle({\n borderStyle: _ctx.outline.style,\n borderColor: _ctx.outline.color,\n borderWidth: _ctx.outline.width + 'px',\n ..._unref(getTextStyle)(cell.style),\n }),\n key: cell.id,\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n \"data-cell-index\": `${rowIndex}_${colIndex}`,\n onMousedown: $event => handleCellMousedown($event, rowIndex, colIndex),\n onMouseenter: ($event: any) => (handleCellMouseenter(rowIndex, colIndex))\n }, [\n (activedCell.value === `${rowIndex}_${colIndex}`)\n ? (_openBlock(), _createBlock(CustomTextarea, {\n key: 0,\n class: _normalizeClass([\"cell-text\", { 'active': activedCell.value === `${rowIndex}_${colIndex}` }]),\n style: _normalizeStyle({ minHeight: (_ctx.cellMinHeight - 4) + 'px' }),\n value: cell.text,\n onUpdateValue: value => _unref(handleInput)(value, rowIndex, colIndex),\n onInsertExcelData: value => insertExcelData(value, rowIndex, colIndex)\n }, null, 8, [\"class\", \"style\", \"value\", \"onUpdateValue\", \"onInsertExcelData\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"cell-text\",\n style: _normalizeStyle({ minHeight: (_ctx.cellMinHeight - 4) + 'px' }),\n innerHTML: _unref(formatText)(cell.text)\n }, null, 12, _hoisted_5))\n ], 46, _hoisted_4)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)],\n [_directive_contextmenu, (el) => contextmenus(el)]\n ])\n }), 128))\n ], 4))\n }), 128))\n ])\n ], 6)\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./EditableTable.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./EditableTable.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./EditableTable.vue?vue&type=style&index=0&id=0236a619&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0236a619\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { withModifiers as _withModifiers, createVNode as _createVNode, unref as _unref, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-742a731e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTTableElement, TableCell } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport EditableTable from './EditableTable.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { canvasScale, handleElementId, isScaling } = storeToRefs(mainStore)\n\nconst elementRef = ref()\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\n// 更新表格的可编辑状态,表格处于编辑状态时需要禁用全局快捷键\nconst editable = ref(false)\n\nwatch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) editable.value = false\n})\n\nwatch(editable, () => {\n mainStore.setDisableHotkeysState(editable.value)\n})\n\nconst startEdit = () => {\n if (!props.elementInfo.lock) editable.value = true\n}\n\n// 监听表格元素的尺寸变化,当高度变化时,更新高度到vuex\n// 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\nconst realHeightCache = ref(-1)\n\nwatch(isScaling, () => {\n if (handleElementId.value !== props.elementInfo.id) return\n\n if (isScaling.value) editable.value = false\n\n if (!isScaling.value && realHeightCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeightCache.value },\n })\n realHeightCache.value = -1\n }\n})\n\nconst updateTableElementHeight = (entries: ResizeObserverEntry[]) => {\n const contentRect = entries[0].contentRect\n if (!elementRef.value) return\n\n const realHeight = contentRect.height\n\n if (props.elementInfo.height !== realHeight) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeight },\n })\n }\n else realHeightCache.value = realHeight\n }\n}\n\nconst resizeObserver = new ResizeObserver(updateTableElementHeight)\n\nonMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n})\nonUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n})\n\n// 更新表格内容数据\nconst updateTableCells = (data: TableCell[][]) => {\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { data },\n })\n addHistorySnapshot()\n}\n\n// 更新表格的列宽数据\nconst updateColWidths = (widths: number[]) => {\n const width = widths.reduce((a, b) => a + b)\n const colWidths = widths.map(item => item / width)\n\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { width, colWidths },\n })\n addHistorySnapshot()\n}\n\n// 更新表格当前选中的单元格\nconst updateSelectedCells = (cells: string[]) => {\n nextTick(() => mainStore.setSelectedTableCells(cells))\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-table\", { 'lock': _ctx.elementInfo.lock }]),\n ref_key: \"elementRef\",\n ref: elementRef,\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(EditableTable, {\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"])),\n data: _ctx.elementInfo.data,\n width: _ctx.elementInfo.width,\n cellMinHeight: _ctx.elementInfo.cellMinHeight,\n colWidths: _ctx.elementInfo.colWidths,\n outline: _ctx.elementInfo.outline,\n theme: _ctx.elementInfo.theme,\n editable: editable.value,\n onChange: _cache[1] || (_cache[1] = data => updateTableCells(data)),\n onChangeColWidths: _cache[2] || (_cache[2] = widths => updateColWidths(widths)),\n onChangeSelectedCells: _cache[3] || (_cache[3] = cells => updateSelectedCells(cells))\n }, null, 8, [\"data\", \"width\", \"cellMinHeight\", \"colWidths\", \"outline\", \"theme\", \"editable\"]),\n (!editable.value || _ctx.elementInfo.lock)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"table-mask\", { 'lock': _ctx.elementInfo.lock }]),\n onDblclick: _cache[4] || (_cache[4] = ($event: any) => (startEdit())),\n onMousedown: _cache[5] || (_cache[5] = $event => handleSelectElement($event)),\n onTouchstart: _cache[6] || (_cache[6] = $event => handleSelectElement($event))\n }, [\n (_unref(handleElementId) === _ctx.elementInfo.id)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mask-tip\",\n style: _normalizeStyle({ transform: `scale(${ 1 / _unref(canvasScale) })` })\n }, \"双击编辑\", 4))\n : _createCommentVNode(\"\", true)\n ], 34))\n : _createCommentVNode(\"\", true)\n ])), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=742a731e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-742a731e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35c33b80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\", \"stroke\", \"stroke-width\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nimport type { PPTLatexElement } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nconst openLatexEditor = () => {\n emitter.emit(EmitterEvents.OPEN_LATEX_EDITOR)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-latex\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($event: any) => (openLatexEditor()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.elementInfo.path\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 32)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=35c33b80&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35c33b80\"]])\n\nexport default __exports__","import { onMounted, type Ref } from 'vue'\n\nexport default (\n src: string,\n videoRef: Ref,\n) => {\n onMounted(() => {\n if (!videoRef.value) return\n\n let type = 'normal'\n if (/m3u8(#|\\?|$)/i.exec(src)) type = 'hls'\n else if (/.flv(#|\\?|$)/i.exec(src)) type = 'flv'\n\n if (videoRef.value && type === 'hls' && (videoRef.value.canPlayType('application/x-mpegURL') || videoRef.value.canPlayType('application/vnd.apple.mpegURL'))) {\n type = 'normal'\n }\n\n if (type === 'hls') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Hls = (window as any).Hls\n \n if (Hls && Hls.isSupported()) {\n const hls = new Hls()\n hls.loadSource(src)\n hls.attachMedia(videoRef.value)\n }\n }\n else if (type === 'flv') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const flvjs = (window as any).flvjs\n if (flvjs && flvjs.isSupported()) {\n const flvPlayer = flvjs.createPlayer({\n type: 'flv',\n url: src,\n })\n flvPlayer.attachMediaElement(videoRef.value)\n flvPlayer.load()\n }\n }\n })\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e55352ca\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"load-error\"\n}\nconst _hoisted_2 = [\"src\", \"autoplay\", \"poster\"]\nconst _hoisted_3 = { class: \"bezel\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"controller-mask\" }, null, -1))\nconst _hoisted_5 = { class: \"controller\" }\nconst _hoisted_6 = { class: \"icons icons-left\" }\nconst _hoisted_7 = { class: \"icon-content\" }\nconst _hoisted_8 = { class: \"volume\" }\nconst _hoisted_9 = { class: \"icon-content\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = { class: \"time\" }\nconst _hoisted_13 = { class: \"ptime\" }\nconst _hoisted_14 = { class: \"dtime\" }\nconst _hoisted_15 = { class: \"icons icons-right\" }\nconst _hoisted_16 = { class: \"speed\" }\nconst _hoisted_17 = { class: \"icon speed-icon\" }\nconst _hoisted_18 = [\"onClick\"]\nconst _hoisted_19 = { class: \"icon-content\" }\nconst _hoisted_20 = { class: \"bar\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_22 = [\n _hoisted_21\n]\n\nimport { computed, ref } from 'vue'\nimport useMSE from './useMSE'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n width: {},\n height: {},\n src: {},\n poster: { default: '' },\n autoplay: { type: Boolean, default: false },\n scale: { default: 1 }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst secondToTime = (second = 0) => {\n if (second === 0 || isNaN(second)) return '00:00'\n\n const add0 = (num: number) => (num < 10 ? '0' + num : '' + num)\n const hour = Math.floor(second / 3600)\n const min = Math.floor((second - hour * 3600) / 60)\n const sec = Math.floor(second - hour * 3600 - min * 60)\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':')\n}\n\nconst getBoundingClientRectViewLeft = (element: HTMLElement) => {\n return element.getBoundingClientRect().left\n}\n\nconst videoRef = ref()\nconst playBarWrap = ref()\nconst volumeBarRef = ref()\n\nconst volume = ref(0.5)\nconst paused = ref(true)\nconst currentTime = ref(0)\nconst duration = ref(0)\nconst loaded = ref(0)\nconst loop = ref(false)\nconst bezelTransition = ref(false)\nconst playbackRate = ref(1)\n\nconst playBarTimeVisible = ref(false)\nconst playBarTime = ref('00:00')\nconst playBarTimeLeft = ref('0')\n\nconst ptime = computed(() => secondToTime(currentTime.value))\nconst dtime = computed(() => secondToTime(duration.value))\nconst playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\nconst loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\nconst volumeBarWidth = computed(() => volume.value * 100 + '%')\n\nconst speedMenuVisible = ref(false)\nconst speedOptions = [\n { label: '2x', value: 2 },\n { label: '1.5x', value: 1.5 },\n { label: '1.25x', value: 1.25 },\n { label: '1x', value: 1 },\n { label: '0.75x', value: 0.75 },\n { label: '0.5x', value: 0.5 },\n]\n\nconst seek = (time: number) => {\n if (!videoRef.value) return\n\n time = Math.max(time, 0)\n time = Math.min(time, duration.value)\n\n videoRef.value.currentTime = time\n currentTime.value = time\n}\n\nconst play = () => {\n if (!videoRef.value) return\n\n paused.value = false\n videoRef.value.play()\n bezelTransition.value = true\n}\n\nconst pause = () => {\n if (!videoRef.value) return\n\n paused.value = true\n videoRef.value.pause()\n bezelTransition.value = true\n}\n\nconst toggle = () => {\n if (paused.value) play() \n else pause()\n}\n\nconst setVolume = (percentage: number) => {\n if (!videoRef.value) return\n\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n\n videoRef.value.volume = percentage\n volume.value = percentage\n if (videoRef.value.muted && percentage !== 0) videoRef.value.muted = false\n}\n\nconst speed = (rate: number) => {\n if (videoRef.value) videoRef.value.playbackRate = rate\n playbackRate.value = rate\n}\n\nconst handleDurationchange = () => {\n duration.value = videoRef.value?.duration || 0\n}\n\nconst handleTimeupdate = () => {\n currentTime.value = videoRef.value?.currentTime || 0\n}\n\nconst handleEnded = () => {\n if (!loop.value) pause()\n else {\n seek(0)\n play()\n }\n}\n\nconst handleProgress = () => {\n loaded.value = videoRef.value?.buffered.length ? videoRef.value.buffered.end(videoRef.value.buffered.length - 1) : 0\n}\n\nconst loadError = ref(false)\nconst handleError = () => loadError.value = true\n\nconst thumbMove = (e: MouseEvent | TouchEvent) => {\n if (!videoRef.value || !playBarWrap.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n videoRef.value.currentTime = time\n currentTime.value = time\n}\n\nconst thumbUp = (e: MouseEvent | TouchEvent) => {\n if (!videoRef.value || !playBarWrap.value) return\n\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n videoRef.value.currentTime = time\n currentTime.value = time\n\n document.removeEventListener('mousemove', thumbMove)\n document.removeEventListener('touchmove', thumbMove)\n document.removeEventListener('mouseup', thumbUp)\n document.removeEventListener('touchend', thumbUp)\n}\n\nconst handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n}\n\nconst volumeMove = (e: MouseEvent | TouchEvent) => {\n if (!volumeBarRef.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n const percentage = (clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n}\n\nconst handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n}\n\nconst handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst handleMousemovePlayBar = (e: MouseEvent) => {\n if (duration.value && playBarWrap.value) {\n const px = playBarWrap.value.getBoundingClientRect().left\n const tx = e.clientX - px\n if (tx < 0 || tx > playBarWrap.value.offsetWidth) return\n\n const time = duration.value * (tx / playBarWrap.value.offsetWidth)\n playBarTimeLeft.value = `${tx - (time >= 3600 ? 25 : 20)}px`\n playBarTime.value = secondToTime(time)\n playBarTimeVisible.value = true\n }\n}\n\nconst toggleVolume = () => {\n if (!videoRef.value) return\n\n if (videoRef.value.muted) {\n videoRef.value.muted = false\n setVolume(0.5)\n }\n else {\n videoRef.value.muted = true\n setVolume(0)\n }\n}\n\nconst toggleLoop = () => {\n loop.value = !loop.value\n}\n\nconst autoHideControllerTimer = ref(-1)\nconst hideController = ref(false)\nconst autoHideController = () => {\n hideController.value = false\n clearTimeout(autoHideControllerTimer.value)\n autoHideControllerTimer.value = setTimeout(() => {\n if (videoRef.value?.played.length) hideController.value = true\n }, 3000)\n}\n\nuseMSE(props.src, videoRef)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPause = _resolveComponent(\"IconPause\")!\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_IconVolumeMute = _resolveComponent(\"IconVolumeMute\")!\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_IconVolumeSmall = _resolveComponent(\"IconVolumeSmall\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"video-player\", { 'hide-controller': hideController.value }]),\n style: _normalizeStyle({\n width: _ctx.width * _ctx.scale + 'px',\n height: _ctx.height * _ctx.scale + 'px',\n transform: `scale(${1 / _ctx.scale})`,\n }),\n onMousemove: _cache[22] || (_cache[22] = ($event: any) => (autoHideController())),\n onClick: _cache[23] || (_cache[23] = ($event: any) => (autoHideController()))\n }, [\n _createElementVNode(\"div\", {\n class: \"video-wrap\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (toggle()))\n }, [\n (loadError.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"视频加载失败\"))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"video\", {\n class: \"video\",\n ref_key: \"videoRef\",\n ref: videoRef,\n src: _ctx.src,\n autoplay: _ctx.autoplay,\n poster: _ctx.poster,\n \"webkit-playsinline\": \"\",\n playsinline: \"\",\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (handleTimeupdate())),\n onEnded: _cache[2] || (_cache[2] = ($event: any) => (handleEnded())),\n onProgress: _cache[3] || (_cache[3] = ($event: any) => (handleProgress())),\n onPlay: _cache[4] || (_cache[4] = ($event: any) => {autoHideController(); paused.value = false}),\n onPause: _cache[5] || (_cache[5] = ($event: any) => (autoHideController())),\n onError: _cache[6] || (_cache[6] = ($event: any) => (handleError()))\n }, null, 40, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"bezel-icon\", { 'bezel-transition': bezelTransition.value }]),\n onAnimationend: _cache[7] || (_cache[7] = ($event: any) => (bezelTransition.value = false))\n }, [\n (paused.value)\n ? (_openBlock(), _createBlock(_component_IconPause, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPlayOne, { key: 1 }))\n ], 34)\n ])\n ]),\n _hoisted_4,\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", {\n class: \"icon play-icon\",\n onClick: _cache[9] || (_cache[9] = ($event: any) => (toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_7, [\n (paused.value)\n ? (_openBlock(), _createBlock(_component_IconPlayOne, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPause, { key: 1 }))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"icon volume-icon\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_9, [\n (volume.value === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (volume.value === 1)\n ? (_openBlock(), _createBlock(_component_IconVolumeNotice, { key: 1 }))\n : (_openBlock(), _createBlock(_component_IconVolumeSmall, { key: 2 }))\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"volume-bar-wrap\",\n onMousedown: _cache[11] || (_cache[11] = ($event: any) => (handleMousedownVolumeBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (handleMousedownVolumeBar())),\n onClick: _cache[13] || (_cache[13] = $event => handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar\",\n ref_key: \"volumeBarRef\",\n ref: volumeBarRef\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: volumeBarWidth.value })\n }, _hoisted_11, 4)\n ], 512)\n ], 32)\n ]),\n _createElementVNode(\"span\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(ptime.value), 1),\n _createTextVNode(\" / \"),\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(dtime.value), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"span\", {\n class: \"icon-content\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (speedMenuVisible.value = !speedMenuVisible.value))\n }, _toDisplayString(playbackRate.value === 1 ? '倍速' : (playbackRate.value + 'x')), 1),\n (speedMenuVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"speed-menu\",\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (speedMenuVisible.value = false))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(speedOptions, (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"speed-menu-item\", { 'active': item.value === playbackRate.value }]),\n key: item.label,\n onClick: ($event: any) => (speed(item.value))\n }, _toDisplayString(item.label), 11, _hoisted_18)\n }), 64))\n ], 32))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"loop\",\n onClick: _cache[16] || (_cache[16] = ($event: any) => (toggleLoop()))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"icon loop-icon\", { 'active': loop.value }])\n }, [\n _createElementVNode(\"span\", _hoisted_19, \"循环\" + _toDisplayString(loop.value ? '开' : '关'), 1)\n ], 2)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref_key: \"playBarWrap\",\n ref: playBarWrap,\n onMousedown: _cache[17] || (_cache[17] = ($event: any) => (handleMousedownPlayBar())),\n onTouchstart: _cache[18] || (_cache[18] = ($event: any) => (handleMousedownPlayBar())),\n onMousemove: _cache[19] || (_cache[19] = $event => handleMousemovePlayBar($event)),\n onMouseenter: _cache[20] || (_cache[20] = ($event: any) => (playBarTimeVisible.value = true)),\n onMouseleave: _cache[21] || (_cache[21] = ($event: any) => (playBarTimeVisible.value = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !playBarTimeVisible.value }]),\n style: _normalizeStyle({ left: playBarTimeLeft.value })\n }, _toDisplayString(playBarTime.value), 7),\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: loadedBarWidth.value })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: playedBarWidth.value })\n }, _hoisted_22, 4)\n ])\n ], 544)\n ])\n ], 38))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=e55352ca&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e55352ca\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle } from \"vue\"\n\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTVideoElement } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\n\nimport VideoPlayer from './VideoPlayer/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-video\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event, false))\n }, [\n _createVNode(VideoPlayer, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n src: _ctx.elementInfo.src,\n poster: _ctx.elementInfo.poster,\n scale: _unref(canvasScale)\n }, null, 8, [\"width\", \"height\", \"src\", \"poster\", \"scale\"]),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(['t', 'b', 'l', 'r'], (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['handler-border', item]),\n key: item,\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event))\n }, null, 34)\n }), 64))\n ], 32)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5dc89f2a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5dc89f2a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-44037f56\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\", \"autoplay\"]\nconst _hoisted_2 = { class: \"controller\" }\nconst _hoisted_3 = { class: \"icons\" }\nconst _hoisted_4 = { class: \"icon-content\" }\nconst _hoisted_5 = { class: \"volume\" }\nconst _hoisted_6 = { class: \"icon-content\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = { class: \"time\" }\nconst _hoisted_10 = { class: \"ptime\" }\nconst _hoisted_11 = { class: \"dtime\" }\nconst _hoisted_12 = { class: \"bar\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_14 = [\n _hoisted_13\n]\n\nimport { computed, ref } from 'vue'\nimport message from '@/utils/message'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AudioPlayer',\n props: {\n src: {},\n loop: { type: Boolean },\n autoplay: { type: Boolean, default: false },\n scale: { default: 1 }\n },\n setup(__props: any, { expose: __expose }) {\n\nconst props = __props\n\nconst secondToTime = (second = 0) => {\n if (second === 0 || isNaN(second)) return '00:00'\n\n const add0 = (num: number) => (num < 10 ? '0' + num : '' + num)\n const hour = Math.floor(second / 3600)\n const min = Math.floor((second - hour * 3600) / 60)\n const sec = Math.floor(second - hour * 3600 - min * 60)\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':')\n}\n\nconst getBoundingClientRectViewLeft = (element: HTMLElement) => {\n return element.getBoundingClientRect().left\n}\n\nconst audioRef = ref()\nconst playBarWrap = ref()\nconst volumeBarRef = ref()\n\nconst volume = ref(0.5)\nconst paused = ref(true)\nconst currentTime = ref(0)\nconst duration = ref(0)\nconst loaded = ref(0)\n\nconst playBarTimeVisible = ref(false)\nconst playBarTime = ref('00:00')\nconst playBarTimeLeft = ref('0')\n\nconst ptime = computed(() => secondToTime(currentTime.value))\nconst dtime = computed(() => secondToTime(duration.value))\nconst playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\nconst loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\nconst volumeBarWidth = computed(() => volume.value * 100 + '%')\n\nconst seek = (time: number) => {\n if (!audioRef.value) return\n\n time = Math.max(time, 0)\n time = Math.min(time, duration.value)\n\n audioRef.value.currentTime = time\n currentTime.value = time\n}\n\nconst play = () => {\n if (!audioRef.value) return\n\n paused.value = false\n audioRef.value.play()\n}\n\nconst pause = () => {\n if (!audioRef.value) return\n\n paused.value = true\n audioRef.value.pause()\n}\n\nconst toggle = () => {\n if (paused.value) play() \n else pause()\n}\n\nconst setVolume = (percentage: number) => {\n if (!audioRef.value) return\n\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n\n audioRef.value.volume = percentage\n volume.value = percentage\n if (audioRef.value.muted && percentage !== 0) audioRef.value.muted = false\n}\n\nconst handleDurationchange = () => {\n duration.value = audioRef.value?.duration || 0\n}\n\nconst handleTimeupdate = () => {\n currentTime.value = audioRef.value?.currentTime || 0\n}\n\nconst handlePlayed = () => {\n paused.value = false\n}\n\nconst handleEnded = () => {\n if (!props.loop) pause()\n else {\n seek(0)\n play()\n }\n}\n\nconst handleProgress = () => {\n loaded.value = audioRef.value?.buffered.length ? audioRef.value.buffered.end(audioRef.value.buffered.length - 1) : 0\n}\n\nconst handleError = () => message.error('视频加载失败')\n\nconst thumbMove = (e: MouseEvent | TouchEvent) => {\n if (!audioRef.value || !playBarWrap.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n audioRef.value.currentTime = time\n currentTime.value = time\n}\n\nconst thumbUp = (e: MouseEvent | TouchEvent) => {\n if (!audioRef.value || !playBarWrap.value) return\n\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n audioRef.value.currentTime = time\n currentTime.value = time\n\n document.removeEventListener('mousemove', thumbMove)\n document.removeEventListener('touchmove', thumbMove)\n document.removeEventListener('mouseup', thumbUp)\n document.removeEventListener('touchend', thumbUp)\n}\n\nconst handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n}\n\nconst volumeMove = (e: MouseEvent | TouchEvent) => {\n if (!volumeBarRef.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n const percentage = (clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n}\n\nconst handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n}\n\nconst handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst handleMousemovePlayBar = (e: MouseEvent) => {\n if (duration.value && playBarWrap.value) {\n const px = playBarWrap.value.getBoundingClientRect().left\n const tx = e.clientX - px\n if (tx < 0 || tx > playBarWrap.value.offsetWidth) return\n\n const time = duration.value * (tx / playBarWrap.value.offsetWidth)\n playBarTimeLeft.value = `${tx - (time >= 3600 ? 25 : 20)}px`\n playBarTime.value = secondToTime(time)\n playBarTimeVisible.value = true\n }\n}\n\nconst toggleVolume = () => {\n if (!audioRef.value) return\n\n if (audioRef.value.muted) {\n audioRef.value.muted = false\n setVolume(0.5)\n }\n else {\n audioRef.value.muted = true\n setVolume(0)\n }\n}\n\n__expose({\n toggle,\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_IconPause = _resolveComponent(\"IconPause\")!\n const _component_IconVolumeMute = _resolveComponent(\"IconVolumeMute\")!\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_IconVolumeSmall = _resolveComponent(\"IconVolumeSmall\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"audio-player\",\n style: _normalizeStyle({ transform: `scale(${1 / _ctx.scale})` })\n }, [\n _createElementVNode(\"audio\", {\n class: \"audio\",\n ref_key: \"audioRef\",\n ref: audioRef,\n src: _ctx.src,\n autoplay: _ctx.autoplay,\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (handleTimeupdate())),\n onPlay: _cache[2] || (_cache[2] = ($event: any) => (handlePlayed())),\n onEnded: _cache[3] || (_cache[3] = ($event: any) => (handleEnded())),\n onProgress: _cache[4] || (_cache[4] = ($event: any) => (handleProgress())),\n onError: _cache[5] || (_cache[5] = ($event: any) => (handleError()))\n }, null, 40, _hoisted_1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"icon play-icon\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_4, [\n (paused.value)\n ? (_openBlock(), _createBlock(_component_IconPlayOne, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPause, { key: 1 }))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: \"icon volume-icon\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_6, [\n (volume.value === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (volume.value === 1)\n ? (_openBlock(), _createBlock(_component_IconVolumeNotice, { key: 1 }))\n : (_openBlock(), _createBlock(_component_IconVolumeSmall, { key: 2 }))\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"volume-bar-wrap\",\n onMousedown: _cache[8] || (_cache[8] = ($event: any) => (handleMousedownVolumeBar())),\n onTouchstart: _cache[9] || (_cache[9] = ($event: any) => (handleMousedownVolumeBar())),\n onClick: _cache[10] || (_cache[10] = $event => handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar\",\n ref_key: \"volumeBarRef\",\n ref: volumeBarRef\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: volumeBarWidth.value })\n }, _hoisted_8, 4)\n ], 512)\n ], 32)\n ])\n ]),\n _createElementVNode(\"span\", _hoisted_9, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(ptime.value), 1),\n _createTextVNode(\" / \"),\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(dtime.value), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref_key: \"playBarWrap\",\n ref: playBarWrap,\n onMousedown: _cache[11] || (_cache[11] = ($event: any) => (handleMousedownPlayBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (handleMousedownPlayBar())),\n onMousemove: _cache[13] || (_cache[13] = $event => handleMousemovePlayBar($event)),\n onMouseenter: _cache[14] || (_cache[14] = ($event: any) => (playBarTimeVisible.value = true)),\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (playBarTimeVisible.value = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !playBarTimeVisible.value }]),\n style: _normalizeStyle({ left: playBarTimeLeft.value })\n }, _toDisplayString(playBarTime.value), 7),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: loadedBarWidth.value })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: playedBarWidth.value })\n }, _hoisted_14, 4)\n ])\n ], 544)\n ])\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./AudioPlayer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AudioPlayer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AudioPlayer.vue?vue&type=style&index=0&id=44037f56&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-44037f56\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, unref as _unref, withModifiers as _withModifiers, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, createElementBlock as _createElementBlock, withDirectives as _withDirectives, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTAudioElement } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nimport AudioPlayer from './AudioPlayer.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale, handleElementId } = storeToRefs(useMainStore())\nconst { viewportRatio } = storeToRefs(useSlidesStore())\n\nconst audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n})\nconst audioPlayerPosition = computed(() => {\n const canvasWidth = VIEWPORT_SIZE\n const canvasHeight = VIEWPORT_SIZE * viewportRatio.value\n\n const audioWidth = 280 / canvasScale.value\n const audioHeight = 50 / canvasScale.value\n\n const elWidth = props.elementInfo.width\n const elHeight = props.elementInfo.height\n const elLeft = props.elementInfo.left\n const elTop = props.elementInfo.top\n\n let left = 0\n let top = elHeight\n \n if (elLeft + audioWidth >= canvasWidth) left = elWidth - audioWidth\n if (elTop + elHeight + audioHeight >= canvasHeight) top = -audioHeight\n\n return {\n left: left + 'px',\n top: top + 'px',\n }\n})\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-audio\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onTouchstart: _cache[2] || (_cache[2] = $event => handleSelectElement($event))\n }, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: audioIconSize.value,\n color: _ctx.elementInfo.color,\n })\n }, null, 8, [\"style\"]),\n (_unref(handleElementId) === _ctx.elementInfo.id)\n ? (_openBlock(), _createBlock(AudioPlayer, {\n key: 0,\n class: \"audio-player\",\n style: _normalizeStyle({ ...audioPlayerPosition.value }),\n src: _ctx.elementInfo.src,\n loop: _ctx.elementInfo.loop,\n scale: _unref(canvasScale),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"style\", \"src\", \"loop\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ], 32)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=53bdc956&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53bdc956\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\"]\n\nimport { computed } from 'vue'\nimport { ElementTypes, type PPTElement } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\n\nimport useLockElement from '@/hooks/useLockElement'\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useCombineElement from '@/hooks/useCombineElement'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\n\nimport { ElementOrderCommands, ElementAlignCommands } from '@/types/edit'\n\nimport ImageElement from '@/views/components/element/ImageElement/index.vue'\nimport TextElement from '@/views/components/element/TextElement/index.vue'\nimport ShapeElement from '@/views/components/element/ShapeElement/index.vue'\nimport LineElement from '@/views/components/element/LineElement/index.vue'\nimport ChartElement from '@/views/components/element/ChartElement/index.vue'\nimport TableElement from '@/views/components/element/TableElement/index.vue'\nimport LatexElement from '@/views/components/element/LatexElement/index.vue'\nimport VideoElement from '@/views/components/element/VideoElement/index.vue'\nimport AudioElement from '@/views/components/element/AudioElement/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditableElement',\n props: {\n elementInfo: {},\n elementIndex: {},\n isMultiSelect: { type: Boolean },\n selectElement: { type: Function },\n openLinkDialog: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst currentElementComponent = computed(() => {\n const elementTypeMap = {\n [ElementTypes.IMAGE]: ImageElement,\n [ElementTypes.TEXT]: TextElement,\n [ElementTypes.SHAPE]: ShapeElement,\n [ElementTypes.LINE]: LineElement,\n [ElementTypes.CHART]: ChartElement,\n [ElementTypes.TABLE]: TableElement,\n [ElementTypes.LATEX]: LatexElement,\n [ElementTypes.VIDEO]: VideoElement,\n [ElementTypes.AUDIO]: AudioElement,\n }\n return elementTypeMap[props.elementInfo.type] || null\n})\n\nconst { orderElement } = useOrderElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\nconst { combineElements, uncombineElements } = useCombineElement()\nconst { deleteElement } = useDeleteElement()\nconst { lockElement, unlockElement } = useLockElement()\nconst { copyElement, pasteElement, cutElement } = useCopyAndPasteElement()\nconst { selectAllElement } = useSelectAllElement()\n\nconst contextmenus = (): ContextmenuItem[] => {\n if (props.elementInfo.lock) {\n return [{\n text: '解锁', \n handler: () => unlockElement(props.elementInfo),\n }]\n }\n\n return [\n {\n text: '剪切',\n subText: 'Ctrl + X',\n handler: cutElement,\n },\n {\n text: '复制',\n subText: 'Ctrl + C',\n handler: copyElement,\n },\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteElement,\n },\n { divider: true },\n {\n text: '水平居中',\n handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL),\n children: [\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER), },\n { text: '水平居中', handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL) },\n { text: '左对齐', handler: () => alignElementToCanvas(ElementAlignCommands.LEFT) },\n { text: '右对齐', handler: () => alignElementToCanvas(ElementAlignCommands.RIGHT) },\n ],\n },\n {\n text: '垂直居中',\n handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL),\n children: [\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER) },\n { text: '垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL) },\n { text: '顶部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.TOP) },\n { text: '底部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.BOTTOM) },\n ],\n },\n { divider: true },\n {\n text: '置于顶层',\n disable: props.isMultiSelect && !props.elementInfo.groupId,\n handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP),\n children: [\n { text: '置于顶层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP) },\n { text: '上移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.UP) },\n ],\n },\n {\n text: '置于底层',\n disable: props.isMultiSelect && !props.elementInfo.groupId,\n handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM),\n children: [\n { text: '置于底层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM) },\n { text: '下移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.DOWN) },\n ],\n },\n { divider: true },\n {\n text: '设置链接',\n handler: props.openLinkDialog,\n },\n {\n text: props.elementInfo.groupId ? '取消组合' : '组合',\n subText: 'Ctrl + G',\n handler: props.elementInfo.groupId ? uncombineElements : combineElements,\n hide: !props.isMultiSelect,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllElement,\n },\n {\n text: '锁定',\n subText: 'Ctrl + L',\n handler: lockElement,\n },\n {\n text: '删除',\n subText: 'Delete',\n handler: deleteElement,\n },\n ]\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-element\",\n ref: \"elementRef\",\n id: `editable-element-${_ctx.elementInfo.id}`,\n style: _normalizeStyle({\n zIndex: _ctx.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(currentElementComponent.value), {\n elementInfo: _ctx.elementInfo,\n selectElement: _ctx.selectElement,\n contextmenus: contextmenus\n }, null, 8, [\"elementInfo\", \"selectElement\"]))\n ], 12, _hoisted_1))\n}\n}\n\n})","\n\n","import script from \"./EditableElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./EditableElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MouseSelection',\n props: {\n top: {},\n left: {},\n width: {},\n height: {},\n quadrant: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(`mouse-selection quadrant-${_ctx.quadrant}`),\n style: _normalizeStyle({\n top: _ctx.top + 'px',\n left: _ctx.left + 'px',\n width: _ctx.width + 'px',\n height: _ctx.height + 'px',\n })\n }, null, 6))\n}\n}\n\n})","import script from \"./MouseSelection.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MouseSelection.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MouseSelection.vue?vue&type=style&index=0&id=2c5e1d42&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2c5e1d42\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-05484a24\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"grid-lines\" }\nconst _hoisted_2 = [\"d\", \"stroke\"]\n\nimport { computed } from 'vue'\nimport tinycolor from 'tinycolor2'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport type { SlideBackground } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'GridLines',\n setup(__props) {\n\nconst { canvasScale, gridLineSize } = storeToRefs(useMainStore())\nconst { currentSlide, viewportRatio } = storeToRefs(useSlidesStore())\n\nconst background = computed(() => currentSlide.value?.background)\n\n// 计算网格线的颜色,避免与背景的颜色太接近\nconst gridColor = computed(() => {\n const bgColor = background.value?.color || '#fff'\n const colorList = ['#000', '#fff']\n return tinycolor.mostReadable(bgColor, colorList, { includeFallbackColors: true }).setAlpha(.5).toRgbString()\n})\n\n// 网格路径\nconst path = computed(() => {\n const maxX = VIEWPORT_SIZE\n const maxY = VIEWPORT_SIZE * viewportRatio.value\n\n let p = ''\n for (let i = 0; i <= Math.floor(maxY / gridLineSize.value); i++) {\n p += `M0 ${i * gridLineSize.value} L${maxX} ${i * gridLineSize.value} `\n }\n for (let i = 0; i <= Math.floor(maxX / gridLineSize.value); i++) {\n p += `M${i * gridLineSize.value} 0 L${i * gridLineSize.value} ${maxY} `\n }\n return p\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [\n _createElementVNode(\"path\", {\n style: _normalizeStyle({\n transform: `scale(${_unref(canvasScale)})`,\n }),\n d: path.value,\n fill: \"none\",\n stroke: gridColor.value,\n \"stroke-width\": \"0.3\",\n \"stroke-dasharray\": \"5\"\n }, null, 12, _hoisted_2)\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./GridLines.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./GridLines.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./GridLines.vue?vue&type=style&index=0&id=05484a24&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-05484a24\"]])\n\nexport default __exports__","import { type Ref, computed } from 'vue'\nimport type { SlideBackground } from '@/types/slides'\n\n// 将页面背景数据转换为css样式\nexport default (background: Ref) => {\n const backgroundStyle = computed(() => {\n if (!background.value) return { backgroundColor: '#fff' }\n\n const {\n type,\n color,\n image,\n imageSize,\n gradientColor,\n gradientRotate,\n gradientType,\n } = background.value\n\n // 纯色背景\n if (type === 'solid') return { backgroundColor: color }\n\n // 背景图模式\n // 包括:背景图、背景大小,是否重复\n else if (type === 'image') {\n if (!image) return { backgroundColor: '#fff' }\n if (imageSize === 'repeat') {\n return {\n backgroundImage: `url(${image}`,\n backgroundRepeat: 'repeat',\n backgroundSize: 'contain',\n }\n }\n return {\n backgroundImage: `url(${image}`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: imageSize || 'cover',\n }\n }\n\n // 渐变色背景\n else if (type === 'gradient') {\n const rotate = gradientRotate || 0\n const color1 = gradientColor ? gradientColor[0] : '#fff'\n const color2 = gradientColor ? gradientColor[1] : '#fff'\n \n if (gradientType === 'radial') return { backgroundImage: `radial-gradient(${color1}, ${color2}` }\n return { backgroundImage: `linear-gradient(${rotate}deg, ${color1}, ${color2}` }\n }\n\n return { backgroundColor: '#fff' }\n })\n\n return {\n backgroundStyle,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { SlideBackground } from '@/types/slides'\nimport GridLines from './GridLines.vue'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ViewportBackground',\n setup(__props) {\n\nconst { gridLineSize } = storeToRefs(useMainStore())\nconst { currentSlide } = storeToRefs(useSlidesStore())\nconst background = computed(() => currentSlide.value?.background)\n\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"viewport-background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, [\n (_unref(gridLineSize))\n ? (_openBlock(), _createBlock(GridLines, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./ViewportBackground.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ViewportBackground.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ViewportBackground.vue?vue&type=style&index=0&id=b6b18502&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b6b18502\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\nimport type { AlignmentLineAxis } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AlignmentLine',\n props: {\n type: {},\n axis: {},\n length: {},\n canvasScale: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\n// 吸附对齐线的位置\nconst left = computed(() => props.axis.x * props.canvasScale + 'px')\nconst top = computed(() => props.axis.y * props.canvasScale + 'px')\n\n// 吸附对齐线的长度\nconst sizeStyle = computed(() => {\n if (props.type === 'vertical') return { height: props.length * props.canvasScale + 'px' }\n return { width: props.length * props.canvasScale + 'px' }\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"alignment-line\",\n style: _normalizeStyle({ left: left.value, top: top.value })\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['line', _ctx.type]),\n style: _normalizeStyle(sizeStyle.value)\n }, null, 6)\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./AlignmentLine.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AlignmentLine.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AlignmentLine.vue?vue&type=style&index=0&id=ed6fc00a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ed6fc00a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2963c74c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"ruler\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\ninterface ViewportStyles {\n top: number\n left: number\n width: number\n height: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Ruler',\n props: {\n viewportStyles: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst markerSize = computed(() => {\n return props.viewportStyles.width * canvasScale.value / 10\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"h\",\n style: _normalizeStyle({\n width: _ctx.viewportStyles.width * _unref(canvasScale) + 'px',\n left: _ctx.viewportStyles.left + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(20, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': markerSize.value < 36, 'omit': markerSize.value < 72 }]),\n key: `marker-100-${marker}`\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(marker), 1)\n ], 2)\n }), 64))\n ], 4),\n _createElementVNode(\"div\", {\n class: \"v\",\n style: _normalizeStyle({\n height: _ctx.viewportStyles.height * _unref(canvasScale) + 'px',\n top: _ctx.viewportStyles.top + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(20, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': markerSize.value < 36, 'omit': markerSize.value < 72 }]),\n key: marker,\n style: _normalizeStyle({ height: markerSize.value + 'px' })\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(marker), 1)\n ], 6)\n }), 64))\n ], 4)\n ]))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./Ruler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Ruler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Ruler.vue?vue&type=style&index=0&id=2963c74c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2963c74c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-85b0bbaa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\"]\n\nimport { computed, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport type { CreateElementSelectionData } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementCreateSelection',\n emits: [\"created\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst mainStore = useMainStore()\nconst { creatingElement } = storeToRefs(mainStore)\nconst { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\nconst start = ref<[number, number]>()\nconst end = ref<[number, number]>()\n\nconst selectionRef = ref()\nconst offset = ref({\n x: 0,\n y: 0,\n})\nonMounted(() => {\n if (!selectionRef.value) return\n const { x, y } = selectionRef.value.getBoundingClientRect()\n offset.value = { x, y }\n})\n\n// 鼠标拖动创建元素生成位置大小\n// 获取范围的起始位置和终点位置\nconst createSelection = (e: MouseEvent) => {\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n start.value = [startPageX, startPageY]\n\n document.onmousemove = e => {\n if (!creatingElement.value || !isMouseDown) return\n\n let currentPageX = e.pageX\n let currentPageY = e.pageY\n\n // 按住Ctrl键或者Shift键时:\n // 对于非线条元素需要锁定宽高比例,对于线条元素需要锁定水平或垂直方向\n if (ctrlOrShiftKeyActive.value) {\n const moveX = currentPageX - startPageX\n const moveY = currentPageY - startPageY\n\n // 水平和垂直方向的拖动距离,后面以拖动距离较大的方向为基础计算另一方向的数据\n const absX = Math.abs(moveX)\n const absY = Math.abs(moveY)\n\n if (creatingElement.value.type === 'shape') {\n\n // 判断是否为反向拖动:从左上到右下为正向操作,此外所有情况都是反向操作\n const isOpposite = (moveY > 0 && moveX < 0) || (moveY < 0 && moveX > 0)\n\n if (absX > absY) {\n currentPageY = isOpposite ? startPageY - moveX : startPageY + moveX\n }\n else {\n currentPageX = isOpposite ? startPageX - moveY : startPageX + moveY\n }\n }\n\n else if (creatingElement.value.type === 'line') {\n if (absX > absY) currentPageY = startPageY\n else currentPageX = startPageX\n }\n }\n\n end.value = [currentPageX, currentPageY]\n }\n\n document.onmouseup = e => {\n document.onmousemove = null\n document.onmouseup = null\n\n if (e.button === 2) {\n setTimeout(() => mainStore.setCreatingElement(null), 0)\n return\n }\n\n isMouseDown = false\n\n const endPageX = e.pageX\n const endPageY = e.pageY\n\n const minSize = 30\n\n if (\n creatingElement.value?.type === 'line' &&\n (Math.abs(endPageX - startPageX) >= minSize || Math.abs(endPageY - startPageY) >= minSize)\n ) {\n emit('created', {\n start: start.value!,\n end: end.value!,\n })\n }\n else if (\n creatingElement.value?.type !== 'line' &&\n (Math.abs(endPageX - startPageX) >= minSize && Math.abs(endPageY - startPageY) >= minSize)\n ) {\n emit('created', {\n start: start.value!,\n end: end.value!,\n })\n }\n else {\n const defaultSize = 200\n const minX = Math.min(endPageX, startPageX)\n const minY = Math.min(endPageY, startPageY)\n const maxX = Math.max(endPageX, startPageX)\n const maxY = Math.max(endPageY, startPageY)\n const offsetX = maxX - minX >= minSize ? maxX - minX : defaultSize\n const offsetY = maxY - minY >= minSize ? maxY - minY : defaultSize\n emit('created', {\n start: [minX, minY],\n end: [minX + offsetX, minY + offsetY],\n })\n }\n }\n}\n\n// 绘制线条的路径相关数据(仅当绘制元素类型为线条时使用)\nconst lineData = computed(() => {\n if (!start.value || !end.value) return null\n if (!creatingElement.value || creatingElement.value.type !== 'line') return null\n\n const [_startX, _startY] = start.value\n const [_endX, _endY] = end.value\n const minX = Math.min(_startX, _endX)\n const maxX = Math.max(_startX, _endX)\n const minY = Math.min(_startY, _endY)\n const maxY = Math.max(_startY, _endY)\n\n const svgWidth = maxX - minX >= 24 ? maxX - minX : 24\n const svgHeight = maxY - minY >= 24 ? maxY - minY : 24\n\n const startX = _startX === minX ? 0 : maxX - minX\n const startY = _startY === minY ? 0 : maxY - minY\n const endX = _endX === minX ? 0 : maxX - minX\n const endY = _endY === minY ? 0 : maxY - minY\n\n const path = `M${startX}, ${startY} L${endX}, ${endY}`\n\n return {\n svgWidth,\n svgHeight,\n startX,\n startY,\n endX,\n endY,\n path,\n }\n})\n\n// 根据生成范围的起始位置和终点位置,计算元素创建时的位置和大小\nconst position = computed(() => {\n if (!start.value || !end.value) return {}\n\n const [startX, startY] = start.value\n const [endX, endY] = end.value\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const width = maxX - minX\n const height = maxY - minY\n\n return {\n left: minX - offset.value.x + 'px',\n top: minY - offset.value.y + 'px',\n width: width + 'px',\n height: height + 'px',\n }\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"element-create-selection\",\n ref_key: \"selectionRef\",\n ref: selectionRef,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => createSelection($event), [\"stop\"])),\n onContextmenu: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\",\"prevent\"]))\n }, [\n (start.value && end.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(['selection', _unref(creatingElement)?.type]),\n style: _normalizeStyle(position.value)\n }, [\n (_unref(creatingElement)?.type === 'line' && lineData.value)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n overflow: \"visible\",\n width: lineData.value.svgWidth,\n height: lineData.value.svgHeight\n }, [\n _createElementVNode(\"path\", {\n d: lineData.value.path,\n stroke: \"#d14424\",\n fill: \"none\",\n \"stroke-width\": \"2\"\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ], 6))\n : _createCommentVNode(\"\", true)\n ], 544))\n}\n}\n\n})","\n\n\n\n","import script from \"./ElementCreateSelection.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementCreateSelection.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementCreateSelection.vue?vue&type=style&index=0&id=85b0bbaa&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-85b0bbaa\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6dc9876e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { overflow: \"visible\" }\nconst _hoisted_2 = [\"d\", \"fill\"]\n\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useKeyboardStore, useMainStore, useSlidesStore } from '@/store'\nimport type { CreateCustomShapeData } from '@/types/edit'\nimport { KEYS } from '@/configs/hotkey'\nimport message from '@/utils/message'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapeCreateCanvas',\n emits: [\"created\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\nconst mainStore = useMainStore()\nconst { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\nconst { theme } = storeToRefs(useSlidesStore())\n\nconst shapeCanvasRef = ref()\nconst isMouseDown = ref(false)\nconst offset = ref({\n x: 0,\n y: 0,\n})\nonMounted(() => {\n if (!shapeCanvasRef.value) return\n const { x, y } = shapeCanvasRef.value.getBoundingClientRect()\n offset.value = { x, y }\n})\n\nconst mousePosition = ref<[number, number] | null>(null)\nconst points = ref<[number, number][]>([])\nconst closed = ref(false)\n\nconst getPoint = (e: MouseEvent, custom = false) => {\n let pageX = e.pageX - offset.value.x\n let pageY = e.pageY - offset.value.y\n\n if (custom) return { pageX, pageY }\n\n if (ctrlOrShiftKeyActive.value && points.value.length) {\n const [lastPointX, lastPointY] = points.value[points.value.length - 1]\n if (Math.abs(lastPointX - pageX) - Math.abs(lastPointY - pageY) > 0) {\n pageY = lastPointY\n }\n else pageX = lastPointX\n }\n return { pageX, pageY }\n}\n\nconst updateMousePosition = (e: MouseEvent) => {\n if (isMouseDown.value) {\n const { pageX, pageY } = getPoint(e, true)\n points.value.push([pageX, pageY])\n mousePosition.value = null\n return\n }\n\n const { pageX, pageY } = getPoint(e)\n mousePosition.value = [pageX, pageY]\n\n if (points.value.length >= 2) {\n const [firstPointX, firstPointY] = points.value[0]\n if (Math.abs(firstPointX - pageX) < 5 && Math.abs(firstPointY - pageY) < 5) {\n closed.value = true\n }\n else closed.value = false\n }\n else closed.value = false\n}\n\nconst path = computed(() => {\n let d = ''\n for (let i = 0; i < points.value.length; i++) {\n const point = points.value[i]\n if (i === 0) d += `M ${point[0]} ${point[1]} `\n else d += `L ${point[0]} ${point[1]} `\n }\n if (points.value.length && mousePosition.value) {\n d += `L ${mousePosition.value[0]} ${mousePosition.value[1]}`\n }\n return d\n})\n\nconst getCreateData = (close = true) => {\n const xList = points.value.map(item => item[0])\n const yList = points.value.map(item => item[1])\n const minX = Math.min(...xList)\n const minY = Math.min(...yList)\n const maxX = Math.max(...xList)\n const maxY = Math.max(...yList)\n\n const formatedPoints = points.value.map(point => {\n return [point[0] - minX, point[1] - minY]\n })\n\n let path = ''\n for (let i = 0; i < formatedPoints.length; i++) {\n const point = formatedPoints[i]\n if (i === 0) path += `M ${point[0]} ${point[1]} `\n else path += `L ${point[0]} ${point[1]} `\n }\n if (close) path += 'Z'\n\n const start: [number, number] = [minX + offset.value.x, minY + offset.value.y]\n const end: [number, number] = [maxX + offset.value.x, maxY + offset.value.y]\n const viewBox: [number, number] = [maxX - minX, maxY - minY]\n\n return {\n start,\n end,\n path,\n viewBox,\n }\n}\n\nconst addPoint = (e: MouseEvent) => {\n const { pageX, pageY } = getPoint(e)\n isMouseDown.value = true\n\n if (closed.value) emit('created', getCreateData())\n else points.value.push([pageX, pageY])\n\n document.onmouseup = () => {\n isMouseDown.value = false\n }\n}\n\nconst close = () => {\n mainStore.setCreatingCustomShapeState(false)\n}\n\nconst create = () => {\n emit('created', {\n ...getCreateData(false),\n fill: 'rgba(0, 0, 0, 0)',\n outline: {\n width: 2,\n color: theme.value.themeColor,\n style: 'solid',\n },\n })\n close()\n}\n\nconst keydownListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ESC) close()\n if (key === KEYS.ENTER) create()\n}\nonMounted(() => {\n message.success('点击绘制任意形状,首尾闭合完成绘制,按 ESC 键或鼠标右键取消,按 ENTER 键提前完成', {\n duration: 5000,\n })\n document.addEventListener('keydown', keydownListener)\n})\nonUnmounted(() => document.removeEventListener('keydown', keydownListener))\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"shape-create-canvas\",\n ref_key: \"shapeCanvasRef\",\n ref: shapeCanvasRef,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => addPoint($event), [\"stop\"])),\n onMousemove: _cache[1] || (_cache[1] = $event => updateMousePosition($event)),\n onContextmenu: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (close()), [\"stop\",\"prevent\"]))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [\n _createElementVNode(\"path\", {\n d: path.value,\n stroke: \"#d14424\",\n fill: closed.value ? 'rgba(226, 83, 77, 0.15)' : 'none',\n \"stroke-width\": \"2\"\n }, null, 8, _hoisted_2)\n ]))\n ], 544))\n}\n}\n\n})","\n\n\n\n","import script from \"./ShapeCreateCanvas.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeCreateCanvas.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapeCreateCanvas.vue?vue&type=style&index=0&id=6dc9876e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6dc9876e\"]])\n\nexport default __exports__","import { computed, type Ref } from 'vue'\nimport { OperateResizeHandlers, OperateBorderLines } from '@/types/edit'\n\nexport default (width: Ref, height: Ref) => {\n // 元素缩放点\n const resizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.LEFT_TOP, style: {} },\n { direction: OperateResizeHandlers.TOP, style: {left: width.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT_TOP, style: {left: width.value + 'px'} },\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.LEFT_BOTTOM, style: {top: height.value + 'px'} },\n { direction: OperateResizeHandlers.BOTTOM, style: {left: width.value / 2 + 'px', top: height.value + 'px'} },\n { direction: OperateResizeHandlers.RIGHT_BOTTOM, style: {left: width.value + 'px', top: height.value + 'px'} },\n ]\n })\n\n // 文本元素缩放点\n const textElementResizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\n ]\n })\n const verticalTextElementResizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.TOP, style: {left: width.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.BOTTOM, style: {left: width.value / 2 + 'px', top: height.value + 'px'} },\n ]\n })\n\n // 元素选中边框线\n const borderLines = computed(() => {\n return [\n { type: OperateBorderLines.T, style: {width: width.value + 'px'} },\n { type: OperateBorderLines.B, style: {top: height.value + 'px', width: width.value + 'px'} },\n { type: OperateBorderLines.L, style: {height: height.value + 'px'} },\n { type: OperateBorderLines.R, style: {left: width.value + 'px', height: height.value + 'px'} },\n ]\n })\n\n return {\n resizeHandlers,\n textElementResizeHandlers,\n verticalTextElementResizeHandlers,\n borderLines,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\nimport type { OperateResizeHandlers } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ResizeHandler',\n props: {\n type: {},\n rotate: { default: 0 }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst rotateClassName = computed(() => {\n const prefix = 'rotate-'\n const rotate = props.rotate\n if (rotate > -22.5 && rotate <= 22.5) return prefix + 0\n else if (rotate > 22.5 && rotate <= 67.5) return prefix + 45\n else if (rotate > 67.5 && rotate <= 112.5) return prefix + 90\n else if (rotate > 112.5 && rotate <= 157.5) return prefix + 135\n else if (rotate > 157.5 || rotate <= -157.5) return prefix + 0\n else if (rotate > -157.5 && rotate <= -112.5) return prefix + 45\n else if (rotate > -112.5 && rotate <= -67.5) return prefix + 90\n else if (rotate > -67.5 && rotate <= -22.5) return prefix + 135\n return prefix + 0\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['resize-handler', rotateClassName.value, _ctx.type])\n }, null, 2))\n}\n}\n\n})","\n\n\n\n","import script from \"./ResizeHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ResizeHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ResizeHandler.vue?vue&type=style&index=0&id=1e66197f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1e66197f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport type { OperateBorderLines } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BorderLine',\n props: {\n type: {},\n isWide: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['border-line', _ctx.type, { 'wide': _ctx.isWide }])\n }, null, 2))\n}\n}\n\n})","import script from \"./BorderLine.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BorderLine.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BorderLine.vue?vue&type=style&index=0&id=8346cf6c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8346cf6c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { computed, ref, watchEffect } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport { getElementListRange } from '@/utils/element'\nimport type { OperateResizeHandlers, MultiSelectRange } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiSelectOperate',\n props: {\n elementList: {},\n scaleMultiElement: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { activeElementIdList, canvasScale } = storeToRefs(useMainStore())\n\nconst localActiveElementList = computed(() => props.elementList.filter(el => activeElementIdList.value.includes(el.id)))\n\nconst range = ref({\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n})\n\n// 根据多选元素整体在画布中的范围,计算边框线和缩放点的位置信息\nconst width = computed(() => (range.value.maxX - range.value.minX) * canvasScale.value)\nconst height = computed(() => (range.value.maxY - range.value.minY) * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(width, height)\n\n// 计算多选元素整体在画布中的范围\nconst setRange = () => {\n const { minX, maxX, minY, maxY } = getElementListRange(localActiveElementList.value)\n range.value = { minX, maxX, minY, maxY }\n}\nwatchEffect(setRange)\n\n// 禁用多选状态下缩放:仅未旋转的图片和形状可以在多选状态下缩放\nconst disableResize = computed(() => {\n return localActiveElementList.value.some(item => {\n if (\n (item.type === 'image' || item.type === 'shape') && \n !item.rotate\n ) return false\n return true\n })\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"multi-select-operate\",\n style: _normalizeStyle({\n left: range.value.minX * _unref(canvasScale) + 'px',\n top: range.value.minY * _unref(canvasScale) + 'px',\n })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (!disableResize.value)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n key: point.direction,\n type: point.direction,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers(($event: any) => (_ctx.scaleMultiElement($event, range.value, point.direction)), [\"stop\"])\n }, null, 8, [\"type\", \"style\", \"onMousedown\"]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./MultiSelectOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MultiSelectOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MultiSelectOperate.vue?vue&type=style&index=0&id=97dc9b9a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-97dc9b9a\"]])\n\nexport default __exports__","\n\n\n\n","import { render } from \"./RotateHandler.vue?vue&type=template&id=b99d8dae&scoped=true\"\nconst script = {}\n\nimport \"./RotateHandler.vue?vue&type=style&index=0&id=b99d8dae&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b99d8dae\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nimport { computed } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore } from '@/store'\r\nimport type { PPTImageElement } from '@/types/slides'\r\nimport type { OperateResizeHandlers } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\n\r\nconst __default__ = {\r\n inheritAttrs: false,\r\n}\r\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'ImageElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function }\n },\n setup(__props: any) {\n\r\nconst props = __props\r\n\r\nconst { canvasScale, clipingImageElementId } = storeToRefs(useMainStore())\r\n\r\nconst isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\r\n\r\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"image-element-operate\", { 'cliping': isCliping.value }])\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: scaleWidth.value / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.rotateElement($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 2))\n}\n}\n\n})","import script from \"./ImageElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageElementOperate.vue?vue&type=style&index=0&id=7bcad5a9&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7bcad5a9\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-element-operate\" }\n\nimport { computed } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore } from '@/store'\r\nimport type { PPTTextElement } from '@/types/slides'\r\nimport type { OperateResizeHandlers } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\n\r\nconst __default__ = {\r\n inheritAttrs: false,\r\n}\r\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'TextElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function }\n },\n setup(__props: any) {\n\r\nconst props = __props\r\n\r\nconst { canvasScale } = storeToRefs(useMainStore())\r\n\r\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n\r\nconst { textElementResizeHandlers, verticalTextElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\nconst resizeHandlers = computed(() => props.elementInfo.vertical ? verticalTextElementResizeHandlers.value : textElementResizeHandlers.value)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(resizeHandlers.value, (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: scaleWidth.value / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.rotateElement($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n\r\n\r\n","import script from \"./TextElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TextElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52dcdbf8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-element-operate\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTShapeElement } from '@/types/slides'\nimport type { OperateResizeHandlers } from '@/types/edit'\nimport { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'ShapeElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function },\n moveShapeKeypoint: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nconst keypointStyle = computed(() => {\n if (!props.elementInfo.pathFormula || props.elementInfo.keypoint === undefined) return {}\n\n const pathFormula = SHAPE_PATH_FORMULAS[props.elementInfo.pathFormula]\n if ('editable' in pathFormula) {\n const keypointPos = pathFormula.getBaseSize(props.elementInfo.width, props.elementInfo.height) * props.elementInfo.keypoint\n if (pathFormula.relative === 'left') return { left: keypointPos * canvasScale.value + 'px' }\n if (pathFormula.relative === 'right') return { left: (props.elementInfo.width - keypointPos) * canvasScale.value + 'px' }\n if (pathFormula.relative === 'center') return { left: (props.elementInfo.width - keypointPos) / 2 * canvasScale.value + 'px' }\n if (pathFormula.relative === 'top') return { top: keypointPos * canvasScale.value + 'px' }\n if (pathFormula.relative === 'bottom') return { top: (props.elementInfo.height - keypointPos) * canvasScale.value + 'px' }\n }\n return {}\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: scaleWidth.value / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.rotateElement($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 8, [\"style\"]),\n (_ctx.elementInfo.keypoint !== undefined)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"operate-keypoint-handler\",\n style: _normalizeStyle(keypointStyle.value),\n onMousedown: _cache[1] || (_cache[1] = _withModifiers($event => _ctx.moveShapeKeypoint($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 36))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n\n\n","import script from \"./ShapeElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapeElementOperate.vue?vue&type=style&index=0&id=52dcdbf8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52dcdbf8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, createBlock as _createBlock, unref as _unref, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3aa5cc44\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"line-element-operate\" }\nconst _hoisted_2 = [\"width\", \"height\", \"stroke\"]\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_5 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_6 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_7 = [\"x1\", \"y1\", \"x2\", \"y2\"]\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTLineElement } from '@/types/slides'\nimport { OperateLineHandlers } from '@/types/edit'\n\nimport ResizeHandler from './ResizeHandler.vue'\n\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'LineElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n dragLineElement: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst svgWidth = computed(() => Math.max(props.elementInfo.start[0], props.elementInfo.end[0]))\nconst svgHeight = computed(() => Math.max(props.elementInfo.start[1], props.elementInfo.end[1]))\n\nconst resizeHandlers = computed(() => {\n const handlers = [\n {\n handler: OperateLineHandlers.START,\n style: {\n left: props.elementInfo.start[0] * canvasScale.value + 'px',\n top: props.elementInfo.start[1] * canvasScale.value + 'px',\n }\n },\n {\n handler: OperateLineHandlers.END,\n style: {\n left: props.elementInfo.end[0] * canvasScale.value + 'px',\n top: props.elementInfo.end[1] * canvasScale.value + 'px',\n }\n },\n ]\n\n if (props.elementInfo.curve || props.elementInfo.broken) {\n const ctrlHandler = (props.elementInfo.curve || props.elementInfo.broken) as [number, number]\n\n handlers.push({\n handler: OperateLineHandlers.C,\n style: {\n left: ctrlHandler[0] * canvasScale.value + 'px',\n top: ctrlHandler[1] * canvasScale.value + 'px',\n }\n })\n }\n else if (props.elementInfo.cubic) {\n const [ctrlHandler1, ctrlHandler2] = props.elementInfo.cubic\n handlers.push({\n handler: OperateLineHandlers.C1,\n style: {\n left: ctrlHandler1[0] * canvasScale.value + 'px',\n top: ctrlHandler1[1] * canvasScale.value + 'px',\n }\n })\n handlers.push({\n handler: OperateLineHandlers.C2,\n style: {\n left: ctrlHandler2[0] * canvasScale.value + 'px',\n top: ctrlHandler2[1] * canvasScale.value + 'px',\n }\n })\n }\n\n return handlers\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(resizeHandlers.value, (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.handler,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.dragLineElement($event, _ctx.elementInfo, point.handler), [\"stop\"])\n }, null, 8, [\"style\", \"onMousedown\"]))\n }), 128)),\n (_openBlock(), _createElementBlock(\"svg\", {\n width: svgWidth.value || 1,\n height: svgHeight.value || 1,\n stroke: _ctx.elementInfo.color,\n overflow: \"visible\",\n style: _normalizeStyle({ transform: `scale(${_unref(canvasScale)})` })\n }, [\n (_ctx.elementInfo.curve)\n ? (_openBlock(), _createElementBlock(\"g\", _hoisted_3, [\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: _ctx.elementInfo.start[0],\n y1: _ctx.elementInfo.start[1],\n x2: _ctx.elementInfo.curve[0],\n y2: _ctx.elementInfo.curve[1]\n }, null, 8, _hoisted_4),\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: _ctx.elementInfo.end[0],\n y1: _ctx.elementInfo.end[1],\n x2: _ctx.elementInfo.curve[0],\n y2: _ctx.elementInfo.curve[1]\n }, null, 8, _hoisted_5)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.cubic)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(_ctx.elementInfo.cubic, (item, index) => {\n return (_openBlock(), _createElementBlock(\"g\", { key: index }, [\n (index === 0)\n ? (_openBlock(), _createElementBlock(\"line\", {\n key: 0,\n class: \"anchor-line\",\n x1: _ctx.elementInfo.start[0],\n y1: _ctx.elementInfo.start[1],\n x2: item[0],\n y2: item[1]\n }, null, 8, _hoisted_6))\n : _createCommentVNode(\"\", true),\n (index === 1)\n ? (_openBlock(), _createElementBlock(\"line\", {\n key: 1,\n class: \"anchor-line\",\n x1: _ctx.elementInfo.end[0],\n y1: _ctx.elementInfo.end[1],\n x2: item[0],\n y2: item[1]\n }, null, 8, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_2))\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n\n\n","import script from \"./LineElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LineElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LineElementOperate.vue?vue&type=style&index=0&id=3aa5cc44&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3aa5cc44\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"table-element-operate\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTTableElement } from '@/types/slides'\nimport type { OperateResizeHandlers } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'TableElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst outlineWidth = computed(() => props.elementInfo.outline.width || 1)\n\nconst scaleWidth = computed(() => (props.elementInfo.width + outlineWidth.value) * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\n\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: scaleWidth.value / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.rotateElement($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./TableElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TableElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"common-element-operate\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTVideoElement, PPTLatexElement, PPTAudioElement, PPTChartElement } from '@/types/slides'\nimport type { OperateResizeHandlers } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\ntype PPTElement = PPTVideoElement | PPTLatexElement | PPTAudioElement | PPTChartElement\n\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'CommonElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nconst cannotRotate = computed(() => ['chart', 'video', 'audio'].includes(props.elementInfo.type))\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n (!cannotRotate.value)\n ? (_openBlock(), _createBlock(RotateHandler, {\n key: 0,\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: scaleWidth.value / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.rotateElement($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 8, [\"style\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./CommonElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CommonElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useSlidesStore } from '@/store'\nimport type { PPTElement, PPTElementLink } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport message from '@/utils/message'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const setLink = (handleElement: PPTElement, link: PPTElementLink) => {\n const linkRegExp = /^(https?):\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+([\\w\\-.,@?^=%&:\\/~+#]*[\\w\\-@?^=%&\\/~+#])?$/\n if (link.type === 'web' && !linkRegExp.test(link.target)) {\n message.error('不是正确的网页链接地址')\n return false\n }\n if (link.type === 'slide' && !link.target) {\n message.error('请先选择链接目标')\n return false\n }\n const props = { link }\n slidesStore.updateElement({ id: handleElement.id, props })\n addHistorySnapshot()\n\n return true\n }\n\n const removeLink = (handleElement: PPTElement) => {\n slidesStore.removeElementProps({ id: handleElement.id, propName: 'link' })\n addHistorySnapshot()\n }\n\n return {\n setLink,\n removeLink,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Divider',\n props: {\n type: { default: 'horizontal' },\n margin: { default: 0 }\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['divider', _ctx.type]),\n style: _normalizeStyle({\n margin: _ctx.type === 'horizontal' ? `${_ctx.margin || 24}px 0` : `0 ${_ctx.margin || 8}px`\n })\n }, null, 6))\n}\n}\n\n})","import script from \"./Divider.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Divider.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Divider.vue?vue&type=style&index=0&id=6b66cde8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6b66cde8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-316c4664\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"href\"]\nconst _hoisted_2 = { class: \"btns\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement, PPTElementLink } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\nimport Divider from '@/components/Divider.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinkHandler',\n props: {\n elementInfo: {},\n link: {},\n openLinkDialog: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { canvasScale } = storeToRefs(mainStore)\nconst { slides } = storeToRefs(slidesStore)\nconst { removeLink } = useLink()\nconst height = computed(() => props.elementInfo.type === 'line' ? 0 : props.elementInfo.height)\n\nconst turnTarget = (slideId: string) => {\n const targetIndex = slides.value.findIndex(item => item.id === slideId)\n if (targetIndex !== -1) {\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlideIndex(targetIndex)\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"link-handler\",\n style: _normalizeStyle({ top: height.value * _unref(canvasScale) + 10 + 'px' })\n }, [\n (_ctx.link.type === 'web')\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n class: \"link\",\n href: _ctx.link.target,\n target: \"_blank\"\n }, _toDisplayString(_ctx.link.target), 9, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"a\", {\n key: 1,\n class: \"link\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (turnTarget(_ctx.link.target)))\n }, \"幻灯片页面 \" + _toDisplayString(_ctx.link.target), 1)),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.openLinkDialog()))\n }, \"更换\"),\n _createVNode(Divider, { type: \"vertical\" }),\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_unref(removeLink)(_ctx.elementInfo)))\n }, \"移除\")\n ])\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./LinkHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinkHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinkHandler.vue?vue&type=style&index=0&id=316c4664&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-316c4664\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ec1ff35\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"animation-index\"\n}\n\nimport { computed } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport {\r\n ElementTypes,\r\n type PPTElement,\r\n type PPTLineElement,\r\n type PPTVideoElement,\r\n type PPTAudioElement,\r\n type PPTShapeElement,\r\n type PPTChartElement,\r\n} from '@/types/slides'\r\nimport type { OperateLineHandlers, OperateResizeHandlers } from '@/types/edit'\r\n\r\nimport ImageElementOperate from './ImageElementOperate.vue'\r\nimport TextElementOperate from './TextElementOperate.vue'\r\nimport ShapeElementOperate from './ShapeElementOperate.vue'\r\nimport LineElementOperate from './LineElementOperate.vue'\r\nimport TableElementOperate from './TableElementOperate.vue'\r\nimport CommonElementOperate from './CommonElementOperate.vue'\r\nimport LinkHandler from './LinkHandler.vue'\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n isSelected: { type: Boolean },\n isActive: { type: Boolean },\n isActiveGroupElement: { type: Boolean },\n isMultiSelect: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function },\n dragLineElement: { type: Function },\n moveShapeKeypoint: { type: Function },\n openLinkDialog: { type: Function }\n },\n setup(__props: any) {\n\r\nconst props = __props\r\n\r\nconst { canvasScale, toolbarState } = storeToRefs(useMainStore())\r\nconst { formatedAnimations } = storeToRefs(useSlidesStore())\r\n\r\nconst currentOperateComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: ImageElementOperate,\r\n [ElementTypes.TEXT]: TextElementOperate,\r\n [ElementTypes.SHAPE]: ShapeElementOperate,\r\n [ElementTypes.LINE]: LineElementOperate,\r\n [ElementTypes.TABLE]: TableElementOperate,\r\n [ElementTypes.CHART]: CommonElementOperate,\r\n [ElementTypes.LATEX]: CommonElementOperate,\r\n [ElementTypes.VIDEO]: CommonElementOperate,\r\n [ElementTypes.AUDIO]: CommonElementOperate,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n})\r\n\r\nconst elementIndexListInAnimation = computed(() => {\r\n const indexList = []\r\n for (let i = 0; i < formatedAnimations.value.length; i++) {\r\n const elIds = formatedAnimations.value[i].animations.map(item => item.elId)\r\n if (elIds.includes(props.elementInfo.id)) indexList.push(i)\r\n }\r\n return indexList\r\n})\r\n\r\nconst rotate = computed(() => 'rotate' in props.elementInfo ? props.elementInfo.rotate : 0)\r\nconst height = computed(() => 'height' in props.elementInfo ? props.elementInfo.height : 0)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"operate\", { 'multi-select': _ctx.isMultiSelect && !_ctx.isActive }]),\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top * _unref(canvasScale) + 'px',\r\n left: _ctx.elementInfo.left * _unref(canvasScale) + 'px',\r\n transform: `rotate(${rotate.value}deg)`,\r\n transformOrigin: `${_ctx.elementInfo.width * _unref(canvasScale) / 2}px ${height.value * _unref(canvasScale) / 2}px`,\r\n })\n }, [\n (_ctx.isSelected)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(currentOperateComponent.value), {\n key: 0,\n elementInfo: _ctx.elementInfo,\n handlerVisible: !_ctx.elementInfo.lock && (_ctx.isActiveGroupElement || !_ctx.isMultiSelect),\n rotateElement: _ctx.rotateElement,\n scaleElement: _ctx.scaleElement,\n dragLineElement: _ctx.dragLineElement,\n moveShapeKeypoint: _ctx.moveShapeKeypoint\n }, null, 8, [\"elementInfo\", \"handlerVisible\", \"rotateElement\", \"scaleElement\", \"dragLineElement\", \"moveShapeKeypoint\"]))\n : _createCommentVNode(\"\", true),\n (_unref(toolbarState) === 'elAnimation' && elementIndexListInAnimation.value.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementIndexListInAnimation.value, (index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"index-item\",\n key: index\n }, _toDisplayString(index + 1), 1))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isActive && _ctx.elementInfo.link)\n ? (_openBlock(), _createBlock(LinkHandler, {\n key: 2,\n elementInfo: _ctx.elementInfo,\n link: _ctx.elementInfo.link,\n openLinkDialog: _ctx.openLinkDialog,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"elementInfo\", \"link\", \"openLinkDialog\"]))\n : _createCommentVNode(\"\", true)\n ], 6))\n}\n}\n\n})","\r\n\r\n\r\n\r\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5ec1ff35&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5ec1ff35\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-24fef706\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nimport { computed } from 'vue'\nimport type { PPTImageElement } from '@/types/slides'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useClipImage from './useClipImage'\nimport useFilter from './useFilter'\n\nimport ImageOutline from './ImageOutline/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseImageElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape, imgPosition } = useClipImage(clip)\n\nconst filters = computed(() => props.elementInfo.filters)\nconst { filter } = useFilter(filters)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-image\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n })\n }, [\n _createVNode(ImageOutline, { elementInfo: _ctx.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _unref(clipShape).style })\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _unref(imgPosition).top,\n left: _unref(imgPosition).left,\n width: _unref(imgPosition).width,\n height: _unref(imgPosition).height,\n filter: _unref(filter),\n }),\n alt: \"\"\n }, null, 12, _hoisted_1),\n (_ctx.elementInfo.colorMask)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"color-mask\",\n style: _normalizeStyle({\n backgroundColor: _ctx.elementInfo.colorMask,\n })\n }, null, 4))\n : _createCommentVNode(\"\", true)\n ], 4)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./BaseImageElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseImageElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseImageElement.vue?vue&type=style&index=0&id=24fef706&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24fef706\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52a206f2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { computed } from 'vue'\nimport type { PPTTextElement } from '@/types/slides'\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\n\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseTextElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-text\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n width: _ctx.elementInfo.vertical ? 'auto' : _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.vertical ? _ctx.elementInfo.height + 'px' : 'auto',\n backgroundColor: _ctx.elementInfo.fill,\n opacity: _ctx.elementInfo.opacity,\n textShadow: _unref(shadowStyle),\n lineHeight: _ctx.elementInfo.lineHeight,\n letterSpacing: (_ctx.elementInfo.wordSpace || 0) + 'px',\n color: _ctx.elementInfo.defaultColor,\n fontFamily: _ctx.elementInfo.defaultFontName,\n writingMode: _ctx.elementInfo.vertical ? 'vertical-rl' : 'horizontal-tb',\n })\n }, [\n _createVNode(ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createElementVNode(\"div\", {\n class: \"text ProseMirror-static\",\n style: _normalizeStyle({\n '--paragraphSpace': `${_ctx.elementInfo.paragraphSpace === undefined ? 5 : _ctx.elementInfo.paragraphSpace}px`,\n }),\n innerHTML: _ctx.elementInfo.content\n }, null, 12, _hoisted_1)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./BaseTextElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseTextElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseTextElement.vue?vue&type=style&index=0&id=52a206f2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52a206f2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b13f8fa8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\", \"fill\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\nconst _hoisted_5 = [\"innerHTML\"]\n\nimport { computed } from 'vue'\nimport type { PPTShapeElement, ShapeText } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\n\nimport GradientDefs from './GradientDefs.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseShapeElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst outline = computed(() => props.elementInfo.outline)\nconst { outlineWidth, outlineColor, strokeDashArray } = useElementOutline(outline)\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst text = computed(() => {\n const defaultText: ShapeText = {\n content: '',\n defaultFontName: '微软雅黑',\n defaultColor: '#000',\n align: 'middle',\n }\n if (!props.elementInfo.text) return defaultText\n\n return props.elementInfo.text\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-shape\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: _ctx.elementInfo.opacity,\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n color: text.value.defaultColor,\n fontFamily: text.value.defaultFontName,\n })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height\n }, [\n (_ctx.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(GradientDefs, {\n id: `base-gradient-${_ctx.elementInfo.id}`,\n type: _ctx.elementInfo.gradient.type,\n color1: _ctx.elementInfo.gradient.color[0],\n color2: _ctx.elementInfo.gradient.color[1],\n rotate: _ctx.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n d: _ctx.elementInfo.path,\n fill: _ctx.elementInfo.gradient ? `url(#base-gradient-${_ctx.elementInfo.id})` : _ctx.elementInfo.fill,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_1)),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape-text\", text.value.align])\n }, [\n _createElementVNode(\"div\", {\n class: \"ProseMirror-static\",\n innerHTML: text.value.content\n }, null, 8, _hoisted_5)\n ], 2)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./BaseShapeElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseShapeElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseShapeElement.vue?vue&type=style&index=0&id=b13f8fa8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b13f8fa8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-443e2f82\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\n\nimport { computed } from 'vue'\nimport type { PPTLineElement } from '@/types/slides'\nimport { getLineElementPath } from '@/utils/element'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\nimport LinePointMarker from './LinePointMarker.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseLineElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n})\nconst svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n})\n\nconst lineDashArray = computed(() => {\n if (props.elementInfo.style !== 'dashed') return '0 0'\n const size = props.elementInfo.width\n return size <= 8 ? `${size * 5} ${size * 2.5}` : `${size * 5} ${size * 1.5}`\n})\n\nconst path = computed(() => {\n return getLineElementPath(props.elementInfo)\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-line\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '' })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: svgWidth.value,\n height: svgHeight.value\n }, [\n _createElementVNode(\"defs\", null, [\n (_ctx.elementInfo.points[0])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 0,\n id: _ctx.elementInfo.id,\n position: \"start\",\n type: _ctx.elementInfo.points[0],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.points[1])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 1,\n id: _ctx.elementInfo.id,\n position: \"end\",\n type: _ctx.elementInfo.points[1],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n d: path.value,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.width,\n \"stroke-dasharray\": lineDashArray.value,\n fill: \"none\",\n \"marker-start\": _ctx.elementInfo.points[0] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[0]}-start)` : '',\n \"marker-end\": _ctx.elementInfo.points[1] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 4)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./BaseLineElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseLineElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseLineElement.vue?vue&type=style&index=0&id=443e2f82&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-443e2f82\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, inject, ref } from 'vue'\r\nimport type { PPTChartElement } from '@/types/slides'\r\nimport { injectKeySlideScale } from '@/types/injectKey'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseChartElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\r\n\r\n\r\nconst slideScale = inject(injectKeySlideScale) || ref(1)\r\n\r\nconst needScaleSize = computed(() => slideScale.value < 1)\r\nconst zoom = computed(() => needScaleSize.value ? 1 / slideScale.value : 1)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-chart\",\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top + 'px',\r\n left: _ctx.elementInfo.left + 'px',\r\n width: _ctx.elementInfo.width + 'px',\r\n height: _ctx.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: _ctx.elementInfo.fill,\r\n })\n }, [\n _createVNode(ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(Chart, {\n width: _ctx.elementInfo.width * zoom.value,\n height: _ctx.elementInfo.height * zoom.value,\n type: _ctx.elementInfo.chartType,\n data: _ctx.elementInfo.data,\n options: _ctx.elementInfo.options,\n themeColor: _ctx.elementInfo.themeColor,\n gridColor: _ctx.elementInfo.gridColor,\n legends: _ctx.elementInfo.data.legends,\n legend: _ctx.elementInfo.legend || '',\n style: _normalizeStyle({ zoom: 1 / zoom.value })\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\", \"style\"])\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","\r\n\r\n\r\n\r\n","import script from \"./BaseChartElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseChartElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseChartElement.vue?vue&type=style&index=0&id=7c03d68d&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7c03d68d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, vShow as _vShow, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5d949d4d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\"]\nconst _hoisted_2 = [\"rowspan\", \"colspan\"]\nconst _hoisted_3 = [\"innerHTML\"]\n\nimport { computed, ref, watch } from 'vue'\nimport type { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\nimport { getTextStyle, formatText } from './utils'\nimport useHideCells from './useHideCells'\nimport useSubThemeColor from './useSubThemeColor'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'StaticTable',\n props: {\n data: {},\n width: {},\n cellMinHeight: {},\n colWidths: {},\n outline: {},\n theme: {},\n editable: { type: Boolean, default: true }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst colSizeList = ref([])\nconst totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\n\nwatch([\n () => props.colWidths,\n () => props.width,\n], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n}, { immediate: true })\n\nconst cells = computed(() => props.data)\nconst { hideCells } = useHideCells(cells)\n\nconst theme = computed(() => props.theme)\nconst { subThemeColor } = useSubThemeColor(theme)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"static-table\",\n style: _normalizeStyle({ width: totalWidth.value + 'px' })\n }, [\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': theme.value,\n 'row-header': theme.value?.rowHeader,\n 'row-footer': theme.value?.rowFooter,\n 'col-header': theme.value?.colHeader,\n 'col-footer': theme.value?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${theme.value?.color}; --subThemeColor1: ${_unref(subThemeColor)[0]}; --subThemeColor2: ${_unref(subThemeColor)[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(colSizeList.value, (width, index) => {\n return (_openBlock(), _createElementBlock(\"col\", {\n span: \"1\",\n key: index,\n width: width\n }, null, 8, _hoisted_1))\n }), 128))\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.data, (rowCells, rowIndex) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: rowIndex,\n style: _normalizeStyle({ height: _ctx.cellMinHeight + 'px' })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rowCells, (cell, colIndex) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"td\", {\n class: \"cell\",\n style: _normalizeStyle({\n borderStyle: _ctx.outline.style,\n borderColor: _ctx.outline.color,\n borderWidth: _ctx.outline.width + 'px',\n ..._unref(getTextStyle)(cell.style),\n }),\n key: cell.id,\n rowspan: cell.rowspan,\n colspan: cell.colspan\n }, [\n _createElementVNode(\"div\", {\n class: \"cell-text\",\n style: _normalizeStyle({ minHeight: (_ctx.cellMinHeight - 4) + 'px' }),\n innerHTML: _unref(formatText)(cell.text)\n }, null, 12, _hoisted_3)\n ], 12, _hoisted_2)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)]\n ])\n }), 128))\n ], 4))\n }), 128))\n ])\n ], 6)\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./StaticTable.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./StaticTable.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./StaticTable.vue?vue&type=style&index=0&id=5d949d4d&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5d949d4d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3eff7eba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport type { PPTTableElement } from '@/types/slides'\n\nimport StaticTable from './StaticTable.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseTableElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-table\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(StaticTable, {\n data: _ctx.elementInfo.data,\n width: _ctx.elementInfo.width,\n cellMinHeight: _ctx.elementInfo.cellMinHeight,\n colWidths: _ctx.elementInfo.colWidths,\n outline: _ctx.elementInfo.outline,\n theme: _ctx.elementInfo.theme\n }, null, 8, [\"data\", \"width\", \"cellMinHeight\", \"colWidths\", \"outline\", \"theme\"])\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseTableElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseTableElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseTableElement.vue?vue&type=style&index=0&id=3eff7eba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3eff7eba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1587280d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\nconst _hoisted_2 = [\"width\", \"height\", \"stroke\", \"stroke-width\"]\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\"]\n\nimport type { PPTLatexElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseLatexElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-latex\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.elementInfo.path\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_2))\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseLatexElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseLatexElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseLatexElement.vue?vue&type=style&index=0&id=1587280d&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1587280d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport type { PPTVideoElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseVideoElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-video\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ backgroundImage: _ctx.elementInfo.poster ? `url(${_ctx.elementInfo.poster})` : '' })\n }, [\n _createVNode(_component_IconPlayOne, { class: \"icon\" })\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseVideoElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseVideoElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseVideoElement.vue?vue&type=style&index=0&id=09436dde&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-09436dde\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5da834d7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { computed } from 'vue'\nimport type { PPTAudioElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseAudioElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-audio\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: audioIconSize.value,\n color: _ctx.elementInfo.color,\n })\n }, null, 8, [\"style\"])\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./BaseAudioElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseAudioElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseAudioElement.vue?vue&type=style&index=0&id=5da834d7&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5da834d7\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\nimport { ElementTypes, type PPTElement } from '@/types/slides'\n\nimport BaseImageElement from '@/views/components/element/ImageElement/BaseImageElement.vue'\nimport BaseTextElement from '@/views/components/element/TextElement/BaseTextElement.vue'\nimport BaseShapeElement from '@/views/components/element/ShapeElement/BaseShapeElement.vue'\nimport BaseLineElement from '@/views/components/element/LineElement/BaseLineElement.vue'\nimport BaseChartElement from '@/views/components/element/ChartElement/BaseChartElement.vue'\nimport BaseTableElement from '@/views/components/element/TableElement/BaseTableElement.vue'\nimport BaseLatexElement from '@/views/components/element/LatexElement/BaseLatexElement.vue'\nimport BaseVideoElement from '@/views/components/element/VideoElement/BaseVideoElement.vue'\nimport BaseAudioElement from '@/views/components/element/AudioElement/BaseAudioElement.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ThumbnailElement',\n props: {\n elementInfo: {},\n elementIndex: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst currentElementComponent = computed(() => {\n const elementTypeMap = {\n [ElementTypes.IMAGE]: BaseImageElement,\n [ElementTypes.TEXT]: BaseTextElement,\n [ElementTypes.SHAPE]: BaseShapeElement,\n [ElementTypes.LINE]: BaseLineElement,\n [ElementTypes.CHART]: BaseChartElement,\n [ElementTypes.TABLE]: BaseTableElement,\n [ElementTypes.LATEX]: BaseLatexElement,\n [ElementTypes.VIDEO]: BaseVideoElement,\n [ElementTypes.AUDIO]: BaseAudioElement,\n }\n return elementTypeMap[props.elementInfo.type] || null\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"base-element\", `base-element-${_ctx.elementInfo.id}`]),\n style: _normalizeStyle({\n zIndex: _ctx.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(currentElementComponent.value), {\n elementInfo: _ctx.elementInfo,\n target: \"thumbnail\"\n }, null, 8, [\"elementInfo\"]))\n ], 6))\n}\n}\n\n})","\n\n","import script from \"./ThumbnailElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ThumbnailElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-43dcaa52\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"placeholder\"\n}\n\nimport { computed, provide } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport type { Slide } from '@/types/slides'\nimport { injectKeySlideScale } from '@/types/injectKey'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\n\nimport ThumbnailElement from './ThumbnailElement.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n slide: {},\n size: {},\n visible: { type: Boolean, default: true }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { viewportRatio } = storeToRefs(useSlidesStore())\n\nconst background = computed(() => props.slide.background)\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nconst scale = computed(() => props.size / VIEWPORT_SIZE)\nprovide(injectKeySlideScale, scale)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-slide\",\n style: _normalizeStyle({\n width: _ctx.size + 'px',\n height: _ctx.size * _unref(viewportRatio) + 'px',\n })\n }, [\n (_ctx.visible)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"elements\",\n style: _normalizeStyle({\n width: _unref(VIEWPORT_SIZE) + 'px',\n height: _unref(VIEWPORT_SIZE) * _unref(viewportRatio) + 'px',\n transform: `scale(${scale.value})`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slide.elements, (element, index) => {\n return (_openBlock(), _createBlock(ThumbnailElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1\n }, null, 8, [\"elementInfo\", \"elementIndex\"]))\n }), 128))\n ], 4))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"加载中 ...\"))\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=43dcaa52&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-43dcaa52\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5e3d7626\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"onClick\"]\n\nimport { type CSSProperties } from 'vue'\n\ninterface TabItem {\n key: string\n label: string\n color?: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Tabs',\n props: {\n value: {},\n tabs: {},\n card: { type: Boolean, default: false },\n tabsStyle: {},\n tabStyle: {},\n spaceAround: { type: Boolean, default: false },\n spaceBetween: { type: Boolean, default: false }\n },\n emits: [\"update:value\"],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst emit = __emit\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tabs\", {\n 'card': _ctx.card,\n 'space-around': _ctx.spaceAround,\n 'space-between': _ctx.spaceBetween,\n }]),\n style: _normalizeStyle(_ctx.tabsStyle || {})\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.key === _ctx.value }]),\n key: tab.key,\n style: _normalizeStyle({\n ...(_ctx.tabStyle || {}),\n '--color': tab.color,\n }),\n onClick: ($event: any) => (emit('update:value', tab.key))\n }, _toDisplayString(tab.label), 15, _hoisted_1))\n }), 128))\n ], 6))\n}\n}\n\n})","\n\n\n\n","import script from \"./Tabs.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Tabs.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Tabs.vue?vue&type=style&index=0&id=5e3d7626&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5e3d7626\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Button',\n props: {\n checked: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n type: { default: 'default' },\n size: { default: 'normal' },\n first: { type: Boolean, default: false },\n last: { type: Boolean, default: false }\n },\n emits: [\"click\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst handleClick = () => {\n if (props.disabled) return\n emit('click')\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n class: _normalizeClass([\"button\", {\n 'disabled': _ctx.disabled,\n 'checked': !_ctx.disabled && _ctx.checked,\n 'default': !_ctx.disabled && _ctx.type === 'default',\n 'primary': !_ctx.disabled && _ctx.type === 'primary',\n 'checkbox': !_ctx.disabled && _ctx.type === 'checkbox',\n 'radio': !_ctx.disabled && _ctx.type === 'radio',\n 'small': _ctx.size === 'small',\n 'first': _ctx.first,\n 'last': _ctx.last,\n }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (handleClick()))\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2))\n}\n}\n\n})","\n\n\n\n","import script from \"./Button.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Button.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Button.vue?vue&type=style&index=0&id=52c90330&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52c90330\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderSlot as _renderSlot, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5bf3b141\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"select-wrap\"\n}\nconst _hoisted_2 = { class: \"selector\" }\nconst _hoisted_3 = { class: \"icon\" }\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = { class: \"selector\" }\nconst _hoisted_6 = { class: \"icon\" }\n\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\nimport Popover from './Popover.vue'\n\ninterface SelectOption {\n label: string\n value: string | number\n disabled?: boolean\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Select',\n props: {\n value: {},\n options: {},\n disabled: { type: Boolean, default: false }\n },\n emits: [\"update:value\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst showLabel = computed(() => {\n return props.options.find(item => item.value === props.value)?.label || props.value\n})\n\nconst emit = __emit\n\nconst popoverVisible = ref(false)\nconst selectRef = ref()\nconst width = ref(0)\n\nconst updateWidth = () => {\n if (!selectRef.value) return\n width.value = selectRef.value.clientWidth\n}\nconst resizeObserver = new ResizeObserver(updateWidth)\nonMounted(() => {\n if (!selectRef.value) return\n resizeObserver.observe(selectRef.value)\n})\nonUnmounted(() => {\n if (!selectRef.value) return\n resizeObserver.unobserve(selectRef.value)\n})\n\nconst handleSelect = (option: SelectOption) => {\n if (option.disabled) return\n\n emit('update:value', option.value)\n popoverVisible.value = false\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n\n return (_ctx.disabled)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"select disabled\",\n ref_key: \"selectRef\",\n ref: selectRef\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.value), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"icon\", {}, () => [\n _createVNode(_component_IconDown, { size: 14 })\n ])\n ])\n ], 512)\n ]))\n : (_openBlock(), _createBlock(Popover, {\n key: 1,\n class: \"select-wrap\",\n trigger: \"click\",\n value: popoverVisible.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((popoverVisible).value = $event)),\n placement: \"bottom\",\n contentStyle: {\n padding: 0,\n boxShadow: '0 6px 16px 0 rgba(0, 0, 0, 0.08)',\n }\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"options\",\n style: _normalizeStyle({ width: width.value + 2 + 'px' })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (option) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"option\", {\n 'disabled': option.disabled,\n 'selected': option.value === _ctx.value,\n }]),\n key: option.value,\n onClick: ($event: any) => (handleSelect(option))\n }, _toDisplayString(option.label), 11, _hoisted_4))\n }), 128))\n ], 4)\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"select\",\n ref_key: \"selectRef\",\n ref: selectRef\n }, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(showLabel.value), 1),\n _createElementVNode(\"div\", _hoisted_6, [\n _renderSlot(_ctx.$slots, \"icon\", {}, () => [\n _createVNode(_component_IconDown, { size: 14 })\n ])\n ])\n ], 512)\n ]),\n _: 3\n }, 8, [\"value\", \"contentStyle\"]))\n}\n}\n\n})","\n\n\n\n","import script from \"./Select.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Select.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Select.vue?vue&type=style&index=0&id=5bf3b141&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5bf3b141\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cc39ee16\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"link-dialog\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"preview\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", null, \"预览:\", -1))\nconst _hoisted_4 = { class: \"btns\" }\n\nimport { computed, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElementLink } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport Tabs from '@/components/Tabs.vue'\nimport Input from '@/components/Input.vue'\nimport Button from '@/components/Button.vue'\nimport Select from '@/components/Select.vue'\n\ntype TypeKey = 'web' | 'slide'\ninterface TabItem {\n key: TypeKey\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinkDialog',\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst { handleElement } = storeToRefs(useMainStore())\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst type = ref('web')\nconst address = ref('')\nconst slideId = ref('')\n\nconst slideOptions = computed(() => {\n return slides.value.map((item, index) => ({\n label: `幻灯片 ${index + 1}`,\n value: item.id,\n disabled: currentSlide.value.id === item.id,\n }))\n})\n\nslideId.value = slides.value.find(item => item.id !== currentSlide.value.id)?.id || ''\n\nconst selectedSlide = computed(() => {\n if (!slideId.value) return null\n\n return slides.value.find(item => item.id === slideId.value) || null\n})\n\nconst tabs: TabItem[] = [\n { key: 'web', label: '网页链接' },\n { key: 'slide', label: '幻灯片页面' },\n]\n\nconst { setLink } = useLink()\n\nonMounted(() => {\n if (handleElement.value?.link) {\n if (handleElement.value.link.type === 'web') address.value = handleElement.value.link.target\n else if (handleElement.value.link.type === 'slide') slideId.value = handleElement.value.link.target\n\n type.value = handleElement.value.link.type\n }\n})\n\nconst save = () => {\n const link: PPTElementLink = {\n type: type.value,\n target: type.value === 'web' ? address.value : slideId.value,\n }\n if (handleElement.value) {\n const success = setLink(handleElement.value, link)\n if (success) emit('close')\n else address.value = ''\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Tabs, {\n tabs: tabs,\n value: type.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((type).value = $event)),\n tabsStyle: { marginBottom: '20px' }\n }, null, 8, [\"value\"]),\n (type.value === 'web')\n ? (_openBlock(), _createBlock(Input, {\n key: 0,\n class: \"input\",\n value: address.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((address).value = $event)),\n placeholder: \"请输入网页链接地址\"\n }, null, 8, [\"value\"]))\n : _createCommentVNode(\"\", true),\n (type.value === 'slide')\n ? (_openBlock(), _createBlock(Select, {\n key: 1,\n class: \"input\",\n value: slideId.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((slideId).value = $event)),\n options: slideOptions.value\n }, null, 8, [\"value\", \"options\"]))\n : _createCommentVNode(\"\", true),\n (type.value === 'slide' && selectedSlide.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: selectedSlide.value,\n size: 500\n }, null, 8, [\"slide\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(Button, {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n type: \"primary\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (save()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./LinkDialog.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinkDialog.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinkDialog.vue?vue&type=style&index=0&id=cc39ee16&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-cc39ee16\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, vShow as _vShow, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, withKeys as _withKeys, Teleport as _Teleport, createBlock as _createBlock } from \"vue\"\n\nimport { computed, nextTick, ref, watch, type CSSProperties } from 'vue'\nimport { icons } from '@/plugins/icon'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Modal',\n props: {\n visible: { type: Boolean },\n width: { default: 480 },\n closeButton: { type: Boolean, default: false },\n closeOnClickMask: { type: Boolean, default: true },\n closeOnEsc: { type: Boolean, default: true },\n contentStyle: {}\n },\n emits: [\"update:visible\", \"closed\"],\n setup(__props: any, { emit: __emit }) {\n\nconst { IconClose } = icons\n\nconst props = __props\n\nconst modalRef = ref()\n\nconst emit = __emit\n\nconst contentVisible = ref(false)\n\nconst contentStyle = computed(() => {\n return {\n width: props.width + 'px',\n ...(props.contentStyle || {})\n }\n})\n\nwatch(() => props.visible, () => {\n if (props.visible) {\n nextTick(() => modalRef.value!.focus())\n }\n})\n\nconst close = () => {\n emit('update:visible', false)\n emit('closed')\n}\n\nconst onEsc = () => {\n if (props.visible && props.closeOnEsc) close()\n}\n\nconst onClickMask = () => {\n if (props.closeOnClickMask) close()\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n _createVNode(_Transition, { name: \"modal-fade\" }, {\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"modal\",\n ref_key: \"modalRef\",\n ref: modalRef,\n tabindex: \"-1\",\n onKeyup: _cache[4] || (_cache[4] = _withKeys(($event: any) => (onEsc()), [\"esc\"]))\n }, [\n _createElementVNode(\"div\", {\n class: \"mask\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (onClickMask()))\n }),\n _createVNode(_Transition, {\n name: \"modal-zoom\",\n onAfterLeave: _cache[2] || (_cache[2] = ($event: any) => (contentVisible.value = false)),\n onBeforeEnter: _cache[3] || (_cache[3] = ($event: any) => (contentVisible.value = true))\n }, {\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"modal-content\",\n style: _normalizeStyle(contentStyle.value)\n }, [\n (_ctx.closeButton)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"close-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (close()))\n }, [\n _createVNode(_unref(IconClose))\n ]))\n : _createCommentVNode(\"\", true),\n (contentVisible.value)\n ? _renderSlot(_ctx.$slots, \"default\", { key: 1 })\n : _createCommentVNode(\"\", true)\n ], 4), [\n [_vShow, _ctx.visible]\n ])\n ]),\n _: 3\n })\n ], 544), [\n [_vShow, _ctx.visible]\n ])\n ]),\n _: 3\n })\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./Modal.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Modal.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=fea8edcc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-fea8edcc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, vShow as _vShow, withDirectives as _withDirectives, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, withCtx as _withCtx, resolveDirective as _resolveDirective, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5294a048\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"operates\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"drag-mask\"\n}\n\nimport { nextTick, onMounted, onUnmounted, provide, ref, watch, watchEffect } from 'vue'\nimport { throttle } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport type { PPTElement, PPTShapeElement } from '@/types/slides'\nimport type { AlignmentLineProps, CreateCustomShapeData } from '@/types/edit'\nimport { injectKeySlideScale } from '@/types/injectKey'\nimport { removeAllRanges } from '@/utils/selection'\nimport { KEYS } from '@/configs/hotkey'\n\nimport useViewportSize from './hooks/useViewportSize'\nimport useMouseSelection from './hooks/useMouseSelection'\nimport useDropImageOrText from './hooks/useDropImageOrText'\nimport useRotateElement from './hooks/useRotateElement'\nimport useScaleElement from './hooks/useScaleElement'\nimport useSelectElement from './hooks/useSelectElement'\nimport useDragElement from './hooks/useDragElement'\nimport useDragLineElement from './hooks/useDragLineElement'\nimport useMoveShapeKeypoint from './hooks/useMoveShapeKeypoint'\nimport useInsertFromCreateSelection from './hooks/useInsertFromCreateSelection'\n\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\nimport useScaleCanvas from '@/hooks/useScaleCanvas'\nimport useScreening from '@/hooks/useScreening'\nimport useSlideHandler from '@/hooks/useSlideHandler'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nimport EditableElement from './EditableElement.vue'\nimport MouseSelection from './MouseSelection.vue'\nimport ViewportBackground from './ViewportBackground.vue'\nimport AlignmentLine from './AlignmentLine.vue'\nimport Ruler from './Ruler.vue'\nimport ElementCreateSelection from './ElementCreateSelection.vue'\nimport ShapeCreateCanvas from './ShapeCreateCanvas.vue'\nimport MultiSelectOperate from './Operate/MultiSelectOperate.vue'\nimport Operate from './Operate/index.vue'\nimport LinkDialog from './LinkDialog.vue'\nimport Modal from '@/components/Modal.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst {\n activeElementIdList,\n activeGroupElementId,\n handleElementId,\n hiddenElementIdList,\n editorAreaFocus,\n gridLineSize,\n showRuler,\n creatingElement,\n creatingCustomShape,\n canvasScale,\n textFormatPainter,\n} = storeToRefs(mainStore)\nconst { currentSlide } = storeToRefs(useSlidesStore())\nconst { ctrlKeyState, spaceKeyState } = storeToRefs(useKeyboardStore())\n\nconst viewportRef = ref()\nconst alignmentLines = ref([])\n\nconst linkDialogVisible = ref(false)\nconst openLinkDialog = () => linkDialogVisible.value = true\n\nwatch(handleElementId, () => {\n mainStore.setActiveGroupElementId('')\n})\n\nconst elementList = ref([])\nconst setLocalElementList = () => {\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\n}\nwatchEffect(setLocalElementList)\n\nconst canvasRef = ref()\nconst { dragViewport, viewportStyles } = useViewportSize(canvasRef)\n\nuseDropImageOrText(canvasRef)\n\nconst { mouseSelection, mouseSelectionVisible, mouseSelectionQuadrant, updateMouseSelection } = useMouseSelection(elementList, viewportRef)\n\nconst { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\nconst { dragLineElement } = useDragLineElement(elementList)\nconst { selectElement } = useSelectElement(elementList, dragElement)\nconst { scaleElement, scaleMultiElement } = useScaleElement(elementList, alignmentLines, canvasScale)\nconst { rotateElement } = useRotateElement(elementList, viewportRef, canvasScale)\nconst { moveShapeKeypoint } = useMoveShapeKeypoint(elementList, canvasScale)\n\nconst { selectAllElement } = useSelectAllElement()\nconst { deleteAllElements } = useDeleteElement()\nconst { pasteElement } = useCopyAndPasteElement()\nconst { enterScreeningFromStart } = useScreening()\nconst { updateSlideIndex } = useSlideHandler()\nconst { createTextElement, createShapeElement } = useCreateElement()\n\n// 组件渲染时,如果存在元素焦点,需要清除\n// 这种情况存在于:有焦点元素的情况下进入了放映模式,再退出时,需要清除原先的焦点(因为可能已经切换了页面)\nonMounted(() => {\n if (activeElementIdList.value.length) {\n nextTick(() => mainStore.setActiveElementIdList([]))\n }\n})\n\n// 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区、清空格式刷状态\nconst handleClickBlankArea = (e: MouseEvent) => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n\n if (!spaceKeyState.value) updateMouseSelection(e)\n else dragViewport(e)\n\n if (!editorAreaFocus.value) mainStore.setEditorareaFocus(true)\n if (textFormatPainter.value) mainStore.setTextFormatPainter(null)\n removeAllRanges()\n}\n\n// 双击空白处插入文本\nconst handleDblClick = (e: MouseEvent) => {\n if (activeElementIdList.value.length || creatingElement.value || creatingCustomShape.value) return\n if (!viewportRef.value) return\n\n const viewportRect = viewportRef.value.getBoundingClientRect()\n const left = (e.pageX - viewportRect.x) / canvasScale.value\n const top = (e.pageY - viewportRect.y) / canvasScale.value\n\n createTextElement({\n left,\n top,\n width: 200 / canvasScale.value, // 除以 canvasScale 是为了与点击选区创建的形式保持相同的宽度\n height: 0,\n })\n}\n\n// 画布注销时清空格式刷状态\nonUnmounted(() => {\n if (textFormatPainter.value) mainStore.setTextFormatPainter(null)\n})\n\n// 移除画布编辑区域焦点\nconst removeEditorAreaFocus = () => {\n if (editorAreaFocus.value) mainStore.setEditorareaFocus(false)\n}\n\n// 滚动鼠标\nconst { scaleCanvas } = useScaleCanvas()\nconst throttleScaleCanvas = throttle(scaleCanvas, 100, { leading: true, trailing: false })\nconst throttleUpdateSlideIndex = throttle(updateSlideIndex, 300, { leading: true, trailing: false })\n\nconst handleMousewheelCanvas = (e: WheelEvent) => {\n e.preventDefault()\n\n // 按住Ctrl键时:缩放画布\n if (ctrlKeyState.value) {\n if (e.deltaY > 0) throttleScaleCanvas('-')\n else if (e.deltaY < 0) throttleScaleCanvas('+')\n }\n // 上下翻页\n else {\n if (e.deltaY > 0) throttleUpdateSlideIndex(KEYS.DOWN)\n else if (e.deltaY < 0) throttleUpdateSlideIndex(KEYS.UP)\n }\n}\n\n// 开关标尺\nconst toggleRuler = () => {\n mainStore.setRulerState(!showRuler.value)\n}\n\n// 在鼠标绘制的范围插入元素\nconst { insertElementFromCreateSelection, formatCreateSelection } = useInsertFromCreateSelection(viewportRef)\n\n// 插入自定义任意多边形\nconst insertCustomShape = (data: CreateCustomShapeData) => {\n const {\n start,\n end,\n path,\n viewBox,\n } = data\n const position = formatCreateSelection({ start, end })\n if (position) {\n const supplement: Partial = {}\n if (data.fill) supplement.fill = data.fill\n if (data.outline) supplement.outline = data.outline\n createShapeElement(position, { path, viewBox }, supplement)\n }\n\n mainStore.setCreatingCustomShapeState(false)\n}\n\nconst contextmenus = (): ContextmenuItem[] => {\n return [\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteElement,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllElement,\n },\n {\n text: '标尺',\n subText: showRuler.value ? '√' : '',\n handler: toggleRuler,\n },\n {\n text: '网格线',\n handler: () => mainStore.setGridLineSize(gridLineSize.value ? 0 : 50),\n children: [\n {\n text: '无',\n subText: gridLineSize.value === 0 ? '√' : '',\n handler: () => mainStore.setGridLineSize(0),\n },\n {\n text: '小',\n subText: gridLineSize.value === 25 ? '√' : '',\n handler: () => mainStore.setGridLineSize(25),\n },\n {\n text: '中',\n subText: gridLineSize.value === 50 ? '√' : '',\n handler: () => mainStore.setGridLineSize(50),\n },\n {\n text: '大',\n subText: gridLineSize.value === 100 ? '√' : '',\n handler: () => mainStore.setGridLineSize(100),\n },\n ],\n },\n {\n text: '重置当前页',\n handler: deleteAllElements,\n },\n { divider: true },\n {\n text: '幻灯片放映',\n subText: 'F5',\n handler: enterScreeningFromStart,\n },\n ]\n}\n\nprovide(injectKeySlideScale, canvasScale)\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"canvas\",\n ref_key: \"canvasRef\",\n ref: canvasRef,\n onWheel: _cache[4] || (_cache[4] = $event => handleMousewheelCanvas($event)),\n onMousedown: _cache[5] || (_cache[5] = $event => handleClickBlankArea($event)),\n onDblclick: _cache[6] || (_cache[6] = $event => handleDblClick($event))\n }, [\n (_unref(creatingElement))\n ? (_openBlock(), _createBlock(ElementCreateSelection, {\n key: 0,\n onCreated: _cache[0] || (_cache[0] = data => _unref(insertElementFromCreateSelection)(data))\n }))\n : _createCommentVNode(\"\", true),\n (_unref(creatingCustomShape))\n ? (_openBlock(), _createBlock(ShapeCreateCanvas, {\n key: 1,\n onCreated: _cache[1] || (_cache[1] = data => insertCustomShape(data))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle({\n width: _unref(viewportStyles).width * _unref(canvasScale) + 'px',\n height: _unref(viewportStyles).height * _unref(canvasScale) + 'px',\n left: _unref(viewportStyles).left + 'px',\n top: _unref(viewportStyles).top + 'px',\n })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(alignmentLines.value, (line, index) => {\n return (_openBlock(), _createBlock(AlignmentLine, {\n key: index,\n type: line.type,\n axis: line.axis,\n length: line.length,\n canvasScale: _unref(canvasScale)\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\n }), 128)),\n (_unref(activeElementIdList).length > 1)\n ? (_openBlock(), _createBlock(MultiSelectOperate, {\n key: 0,\n elementList: elementList.value,\n scaleMultiElement: _unref(scaleMultiElement)\n }, null, 8, [\"elementList\", \"scaleMultiElement\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element) => {\n return _withDirectives((_openBlock(), _createBlock(Operate, {\n key: element.id,\n elementInfo: element,\n isSelected: _unref(activeElementIdList).includes(element.id),\n isActive: _unref(handleElementId) === element.id,\n isActiveGroupElement: _unref(activeGroupElementId) === element.id,\n isMultiSelect: _unref(activeElementIdList).length > 1,\n rotateElement: _unref(rotateElement),\n scaleElement: _unref(scaleElement),\n openLinkDialog: openLinkDialog,\n dragLineElement: _unref(dragLineElement),\n moveShapeKeypoint: _unref(moveShapeKeypoint)\n }, null, 8, [\"elementInfo\", \"isSelected\", \"isActive\", \"isActiveGroupElement\", \"isMultiSelect\", \"rotateElement\", \"scaleElement\", \"dragLineElement\", \"moveShapeKeypoint\"])), [\n [_vShow, !_unref(hiddenElementIdList).includes(element.id)]\n ])\n }), 128)),\n _createVNode(ViewportBackground)\n ]),\n _createElementVNode(\"div\", {\n class: \"viewport\",\n ref_key: \"viewportRef\",\n ref: viewportRef,\n style: _normalizeStyle({ transform: `scale(${_unref(canvasScale)})` })\n }, [\n (_unref(mouseSelectionVisible))\n ? (_openBlock(), _createBlock(MouseSelection, {\n key: 0,\n top: _unref(mouseSelection).top,\n left: _unref(mouseSelection).left,\n width: _unref(mouseSelection).width,\n height: _unref(mouseSelection).height,\n quadrant: _unref(mouseSelectionQuadrant)\n }, null, 8, [\"top\", \"left\", \"width\", \"height\", \"quadrant\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element, index) => {\n return _withDirectives((_openBlock(), _createBlock(EditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n isMultiSelect: _unref(activeElementIdList).length > 1,\n selectElement: _unref(selectElement),\n openLinkDialog: openLinkDialog\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"isMultiSelect\", \"selectElement\"])), [\n [_vShow, !_unref(hiddenElementIdList).includes(element.id)]\n ])\n }), 128))\n ], 4)\n ], 4),\n (_unref(spaceKeyState))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n (_unref(showRuler))\n ? (_openBlock(), _createBlock(Ruler, {\n key: 3,\n viewportStyles: _unref(viewportStyles)\n }, null, 8, [\"viewportStyles\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(Modal, {\n visible: linkDialogVisible.value,\n \"onUpdate:visible\": _cache[3] || (_cache[3] = ($event: any) => ((linkDialogVisible).value = $event)),\n width: 540\n }, {\n default: _withCtx(() => [\n _createVNode(LinkDialog, {\n onClose: _cache[2] || (_cache[2] = ($event: any) => (linkDialogVisible.value = false))\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ], 32)), [\n [_directive_contextmenu, contextmenus],\n [_directive_click_outside, removeEditorAreaFocus]\n ])\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5294a048&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5294a048\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8603ad34\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-item-thumbnail\" }\nconst _hoisted_2 = { class: \"shape-content\" }\nconst _hoisted_3 = {\n overflow: \"visible\",\n width: \"18\",\n height: \"18\"\n}\nconst _hoisted_4 = [\"transform\"]\nconst _hoisted_5 = [\"fill\", \"stroke\", \"d\"]\n\nimport type { ShapePoolItem } from '@/configs/shapes'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapeItemThumbnail',\n props: {\n shape: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [\n _createElementVNode(\"g\", {\n transform: `scale(${18 / _ctx.shape.viewBox[0]}, ${18 / _ctx.shape.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: _normalizeClass([\"shape-path\", { 'outlined': _ctx.shape.outlined }]),\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: _ctx.shape.outlined ? '#999' : 'transparent',\n stroke: _ctx.shape.outlined ? 'transparent' : '#999',\n \"stroke-width\": \"2\",\n d: _ctx.shape.path\n }, null, 10, _hoisted_5)\n ], 8, _hoisted_4)\n ]))\n ])\n ]))\n}\n}\n\n})","import script from \"./ShapeItemThumbnail.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeItemThumbnail.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapeItemThumbnail.vue?vue&type=style&index=0&id=8603ad34&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8603ad34\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8b994b42\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-pool\" }\nconst _hoisted_2 = { class: \"category-name\" }\nconst _hoisted_3 = { class: \"shape-list\" }\n\nimport { SHAPE_LIST, type ShapePoolItem } from '@/configs/shapes'\nimport ShapeItemThumbnail from './ShapeItemThumbnail.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapePool',\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst selectShape = (shape: ShapePoolItem) => {\n emit('select', shape)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(SHAPE_LIST), (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"category\",\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (shape, index) => {\n return (_openBlock(), _createBlock(ShapeItemThumbnail, {\n class: \"shape-item\",\n key: index,\n shape: shape,\n onClick: ($event: any) => (selectShape(shape))\n }, null, 8, [\"shape\", \"onClick\"]))\n }), 128))\n ])\n ]))\n }), 128))\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./ShapePool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapePool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapePool.vue?vue&type=style&index=0&id=8b994b42&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8b994b42\"]])\n\nexport default __exports__","import type { LinePoint } from '@/types/slides'\n\n\nexport interface LinePoolItem {\n path: string\n style: 'solid' | 'dashed'\n points: [LinePoint, LinePoint]\n isBroken?: boolean\n isCurve?: boolean\n isCubic?: boolean\n}\n\ninterface PresetLine {\n type: string\n children: LinePoolItem[]\n}\n\nexport const LINE_LIST: PresetLine[] = [\n {\n type: '直线',\n children: [\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', ''] },\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', ''] },\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'arrow'] },\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', 'arrow'] },\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'dot'] },\n ],\n },\n {\n type: '折线、曲线',\n children: [\n { path: 'M 0 0 L 0 20 L 20 20', style: 'solid', points: ['', 'arrow'], isBroken: true },\n { path: 'M 0 0 Q 0 20 20 20', style: 'solid', points: ['', 'arrow'], isCurve: true },\n { path: 'M 0 0 C 20 0 0 20 20 20', style: 'solid', points: ['', 'arrow'], isCubic: true },\n ],\n },\n]","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-554824b6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"line-pool\" }\nconst _hoisted_2 = { class: \"category-name\" }\nconst _hoisted_3 = { class: \"line-list\" }\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = {\n overflow: \"visible\",\n width: \"20\",\n height: \"20\"\n}\nconst _hoisted_6 = [\"d\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\n\nimport { LINE_LIST, type LinePoolItem } from '@/configs/lines'\n\nimport LinePointMarker from '@/views/components/element/LineElement/LinePointMarker.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinePool',\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst selectLine = (line: LinePoolItem) => {\n emit('select', line)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(LINE_LIST), (item, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"category\",\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (line, j) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"line-item\",\n key: j\n }, [\n _createElementVNode(\"div\", {\n class: \"line-content\",\n onClick: ($event: any) => (selectLine(line))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_5, [\n _createElementVNode(\"defs\", null, [\n (line.points[0])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 0,\n class: \"line-marker\",\n id: `preset-line-${i}-${j}`,\n position: \"start\",\n type: line.points[0],\n color: \"currentColor\",\n baseSize: 2\n }, null, 8, [\"id\", \"type\"]))\n : _createCommentVNode(\"\", true),\n (line.points[1])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 1,\n class: \"line-marker\",\n id: `preset-line-${i}-${j}`,\n position: \"end\",\n type: line.points[1],\n color: \"currentColor\",\n baseSize: 2\n }, null, 8, [\"id\", \"type\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n class: \"line-path\",\n d: line.path,\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-dasharray\": line.style === 'solid' ? '0, 0' : '4, 1',\n \"marker-start\": line.points[0] ? `url(#${`preset-line-${i}-${j}`}-${line.points[0]}-start)` : '',\n \"marker-end\": line.points[1] ? `url(#${`preset-line-${i}-${j}`}-${line.points[1]}-end)` : ''\n }, null, 8, _hoisted_6)\n ]))\n ], 8, _hoisted_4)\n ]))\n }), 128))\n ])\n ]))\n }), 128))\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./LinePool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinePool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinePool.vue?vue&type=style&index=0&id=554824b6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-554824b6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-398f5699\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-pool\" }\nconst _hoisted_2 = [\"onClick\"]\n\nimport type { PresetChartType } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ChartPool',\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst chartList: PresetChartType[] = ['bar', 'horizontalBar', 'line', 'area', 'scatter', 'pie', 'ring']\n\nconst selectChart = (chart: PresetChartType) => {\n emit('select', chart)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconChartLine = _resolveComponent(\"IconChartLine\")!\n const _component_IconChartHistogram = _resolveComponent(\"IconChartHistogram\")!\n const _component_IconChartPie = _resolveComponent(\"IconChartPie\")!\n const _component_IconChartHistogramOne = _resolveComponent(\"IconChartHistogramOne\")!\n const _component_IconChartLineArea = _resolveComponent(\"IconChartLineArea\")!\n const _component_IconChartRing = _resolveComponent(\"IconChartRing\")!\n const _component_IconChartScatter = _resolveComponent(\"IconChartScatter\")!\n\n return (_openBlock(), _createElementBlock(\"ul\", _hoisted_1, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(chartList, (chart, index) => {\n return _createElementVNode(\"li\", {\n class: \"chart-item\",\n key: index\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n onClick: ($event: any) => (selectChart(chart))\n }, [\n (chart === 'line')\n ? (_openBlock(), _createBlock(_component_IconChartLine, {\n key: 0,\n size: \"24\"\n }))\n : (chart === 'bar')\n ? (_openBlock(), _createBlock(_component_IconChartHistogram, {\n key: 1,\n size: \"24\"\n }))\n : (chart === 'pie')\n ? (_openBlock(), _createBlock(_component_IconChartPie, {\n key: 2,\n size: \"24\"\n }))\n : (chart === 'horizontalBar')\n ? (_openBlock(), _createBlock(_component_IconChartHistogramOne, {\n key: 3,\n size: \"24\"\n }))\n : (chart === 'area')\n ? (_openBlock(), _createBlock(_component_IconChartLineArea, {\n key: 4,\n size: \"24\"\n }))\n : (chart === 'ring')\n ? (_openBlock(), _createBlock(_component_IconChartRing, {\n key: 5,\n size: \"24\"\n }))\n : (chart === 'scatter')\n ? (_openBlock(), _createBlock(_component_IconChartScatter, {\n key: 6,\n size: \"24\"\n }))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_2)\n ])\n }), 64))\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./ChartPool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ChartPool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ChartPool.vue?vue&type=style&index=0&id=398f5699&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-398f5699\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, vModelText as _vModelText, withKeys as _withKeys, withDirectives as _withDirectives, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-268948c2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"prefix\" }\nconst _hoisted_2 = { class: \"input-wrap\" }\nconst _hoisted_3 = [\"disabled\", \"placeholder\"]\nconst _hoisted_4 = { class: \"handlers\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n fill: \"currentColor\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"64 64 896 896\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\" })\n], -1))\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n fill: \"currentColor\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"64 64 896 896\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" })\n], -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = { class: \"suffix\" }\n\nimport { ref, watch } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NumberInput',\n props: {\n value: {},\n disabled: { type: Boolean, default: false },\n placeholder: { default: '' },\n min: { default: 0 },\n max: { default: Infinity },\n step: { default: 1 }\n },\n emits: [\"update:value\", \"input\", \"change\", \"blur\", \"focus\", \"enter\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst number = ref(0)\nconst focused = ref(false)\n\nwatch(() => props.value, () => {\n if (props.value !== number.value) {\n number.value = props.value\n }\n}, {\n immediate: true,\n})\n\nwatch(number, () => {\n let value = +number.value\n if (isNaN(value)) value = props.min\n else if (value > props.max) value = props.max\n else if (value < props.min) value = props.min\n\n number.value = value\n emit('update:value', number.value)\n})\n\nconst handleBlur = (e: Event) => {\n focused.value = false\n emit('blur', e)\n}\nconst handleFocus = (e: Event) => {\n focused.value = true\n emit('focus', e)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"number-input\", {\n 'disabled': _ctx.disabled,\n 'focused': focused.value,\n }])\n }, [\n _createElementVNode(\"span\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"prefix\")\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n disabled: _ctx.disabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((number).value = $event)),\n placeholder: _ctx.placeholder,\n onInput: _cache[1] || (_cache[1] = $event => emit('input', $event)),\n onFocus: _cache[2] || (_cache[2] = $event => handleFocus($event)),\n onBlur: _cache[3] || (_cache[3] = $event => handleBlur($event)),\n onChange: _cache[4] || (_cache[4] = $event => emit('change', $event)),\n onKeydown: _cache[5] || (_cache[5] = _withKeys($event => emit('enter', $event), [\"enter\"]))\n }, null, 40, _hoisted_3), [\n [_vModelText, number.value]\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", {\n class: \"handler\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (number.value += _ctx.step))\n }, _hoisted_6),\n _createElementVNode(\"span\", {\n class: \"handler\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (number.value -= _ctx.step))\n }, _hoisted_8)\n ])\n ]),\n _createElementVNode(\"span\", _hoisted_9, [\n _renderSlot(_ctx.$slots, \"suffix\")\n ])\n ], 2))\n}\n}\n\n})","\n\n\n\n","import script from \"./NumberInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./NumberInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./NumberInput.vue?vue&type=style&index=0&id=268948c2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-268948c2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-372c6730\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-generator\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = { class: \"lef\" }\nconst _hoisted_4 = [\"onMouseenter\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"custom\"\n}\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"label\",\n style: {\"width\":\"25%\"}\n}, \"行数:\", -1))\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"label\",\n style: {\"width\":\"25%\"}\n}, \"列数:\", -1))\nconst _hoisted_10 = { class: \"btns\" }\n\nimport { ref } from 'vue'\nimport message from '@/utils/message'\nimport Button from '@/components/Button.vue'\nimport NumberInput from '@/components/NumberInput.vue'\n\ninterface InsertData {\n row: number\n col: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TableGenerator',\n emits: [\"insert\", \"close\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst endCell = ref([])\nconst customRow = ref(3)\nconst customCol = ref(3)\nconst isCustom = ref(false)\n\nconst handleClickTable = () => {\n if (!endCell.value.length) return\n const [row, col] = endCell.value\n emit('insert', { row, col })\n}\n\nconst insertCustomTable = () => {\n if (customRow.value < 1 || customRow.value > 20) return message.warning('行数/列数必须在0~20之间!')\n if (customCol.value < 1 || customCol.value > 20) return message.warning('行数/列数必须在0~20之间!')\n emit('insert', { row: customRow.value, col: customCol.value })\n isCustom.value = false\n}\n\nconst close = () => {\n emit('close')\n isCustom.value = false\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, \"表格 \" + _toDisplayString(endCell.value.length ? `${endCell.value[0]} x ${endCell.value[1]}` : ''), 1),\n _createElementVNode(\"div\", {\n class: \"right\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (isCustom.value = !isCustom.value))\n }, _toDisplayString(isCustom.value ? '返回' : '自定义'), 1)\n ]),\n (!isCustom.value)\n ? (_openBlock(), _createElementBlock(\"table\", {\n key: 0,\n onMouseleave: _cache[1] || (_cache[1] = ($event: any) => (endCell.value = [])),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (handleClickTable()))\n }, [\n _createElementVNode(\"tbody\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (row) => {\n return _createElementVNode(\"tr\", { key: row }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (col) => {\n return _createElementVNode(\"td\", {\n onMouseenter: ($event: any) => (endCell.value = [row, col]),\n key: col\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"cell\", { 'active': endCell.value.length && row <= endCell.value[0] && col <= endCell.value[1] }])\n }, null, 2)\n ], 40, _hoisted_4)\n }), 64))\n ])\n }), 64))\n ])\n ], 32))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(NumberInput, {\n min: 1,\n max: 20,\n value: customRow.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((customRow).value = $event)),\n style: {\"width\":\"75%\"}\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(NumberInput, {\n min: 1,\n max: 20,\n value: customCol.value,\n \"onUpdate:value\": _cache[4] || (_cache[4] = ($event: any) => ((customCol).value = $event)),\n style: {\"width\":\"75%\"}\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(Button, {\n class: \"btn\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (close()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (insertCustomTable()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ]))\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./TableGenerator.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TableGenerator.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TableGenerator.vue?vue&type=style&index=0&id=372c6730&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-372c6730\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35a1214c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"media-input\" }\nconst _hoisted_2 = { class: \"btns\" }\nconst _hoisted_3 = { class: \"btns\" }\n\nimport { ref } from 'vue'\nimport message from '@/utils/message'\nimport Tabs from '@/components/Tabs.vue'\nimport Input from '@/components/Input.vue'\nimport Button from '@/components/Button.vue'\n\ntype TypeKey = 'video' | 'audio'\ninterface TabItem {\n key: TypeKey\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MediaInput',\n emits: [\"insertVideo\", \"insertAudio\", \"close\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst type = ref('video')\n\nconst videoSrc = ref('https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm')\nconst audioSrc = ref('https://freesound.org/data/previews/614/614107_11861866-lq.mp3')\n\nconst tabs: TabItem[] = [\n { key: 'video', label: '视频' },\n { key: 'audio', label: '音频' },\n]\n\nconst insertVideo = () => {\n if (!videoSrc.value) return message.error('请先输入正确的视频地址')\n emit('insertVideo', videoSrc.value)\n}\n\nconst insertAudio = () => {\n if (!audioSrc.value) return message.error('请先输入正确的音频地址')\n emit('insertAudio', audioSrc.value)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Tabs, {\n tabs: tabs,\n value: type.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((type).value = $event)),\n tabsStyle: { marginBottom: '15px' }\n }, null, 8, [\"value\"]),\n (type.value === 'video')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(Input, {\n value: videoSrc.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((videoSrc).value = $event)),\n placeholder: \"请输入视频地址,e.g. https://xxx.mp4\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(Button, {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (insertVideo()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (type.value === 'audio')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(Input, {\n value: audioSrc.value,\n \"onUpdate:value\": _cache[4] || (_cache[4] = ($event: any) => ((audioSrc).value = $event)),\n placeholder: \"请输入音频地址,e.g. https://xxx.mp3\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(Button, {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n type: \"primary\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (insertAudio()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./MediaInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MediaInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MediaInput.vue?vue&type=style&index=0&id=35a1214c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35a1214c\"]])\n\nexport default __exports__","import { hfmath, CONFIG as hfmathConfig } from 'hfmath'\n\nhfmathConfig.SUB_SUP_SCALE = 0.5\n\nexport { hfmath }","export const FORMULA_LIST = [\n {\n label: '高斯公式',\n latex: `\\\\int\\\\int\\\\int _ { \\\\Omega } \\\\left( \\\\frac { \\\\partial {P} } { \\\\partial {x} } + \\\\frac { \\\\partial {Q} } { \\\\partial {y} } + \\\\frac { \\\\partial {R} }{ \\\\partial {z} } \\\\right) \\\\mathrm { d } V = \\\\oint _ { \\\\partial \\\\Omega } ( P \\\\cos \\\\alpha + Q \\\\cos \\\\beta + R \\\\cos \\\\gamma ) \\\\mathrm{ d} S`\n },\n {\n label: '傅里叶级数',\n latex: `f(x) = \\\\frac {a_0} 2 + \\\\sum_{n = 1}^\\\\infty {({a_n}\\\\cos {nx} + {b_n}\\\\sin {nx})}`,\n },\n {\n label: '泰勒展开式',\n latex: `e ^ { x } = 1 + \\\\frac { x } { 1 ! } + \\\\frac { x ^ { 2 } } { 2 ! } + \\\\frac { x ^ { 3 } } { 3 ! } + ... , \\\\quad - \\\\infty < x < \\\\infty`,\n },\n {\n label: '定积分',\n latex: `\\\\lim_ { n \\\\rightarrow + \\\\infty } \\\\sum _ { i = 1 } ^ { n } f \\\\left[ a + \\\\frac { i } { n } ( b - a ) \\\\right] \\\\frac { b - a } { n } = \\\\int _ { a } ^ { b } f ( x ) dx`,\n },\n {\n label: '三角恒等式1',\n latex: `\\\\sin \\\\alpha \\\\pm \\\\sin \\\\beta = 2 \\\\sin \\\\frac { 1 } { 2 } ( \\\\alpha \\\\pm \\\\beta ) \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha \\\\mp \\\\beta )`,\n },\n {\n label: '三角恒等式2',\n latex: `\\\\cos \\\\alpha + \\\\cos \\\\beta = 2 \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha + \\\\beta ) \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha - \\\\beta )`,\n },\n {\n label: '和的展开式',\n latex: `( 1 + x ) ^ { n } = 1 + \\\\frac { n x } { 1 ! } + \\\\frac { n ( n - 1 ) x ^ { 2 } } { 2 ! } + ...`,\n },\n {\n label: '欧拉公式',\n latex: ` e^{ix} = \\\\cos {x} + i\\\\sin {x}`,\n },\n {\n label: '贝努利方程',\n latex: `\\\\frac {dy} {dx} + P(x)y = Q(x) y^n ({n} \\\\not= {0,1})`,\n },\n {\n label: '全微分方程',\n latex: `du(x,y) = P(x,y)dx + Q(x,y)dy = 0`,\n },\n {\n label: '非齐次方程',\n latex: `y = (\\\\int Q(x) e^{\\\\int {P(x)dx}}dx + C)e^{-\\\\int {P(x)dx}}`,\n },\n {\n label: '柯西中值定理',\n latex: `\\\\frac{{f(b) - f(a)}}{{F(b) - F(a)}} = \\\\frac{{f'(\\\\xi )}}{{F'(\\\\xi )}}`,\n },\n {\n label: '拉格朗日中值定理',\n latex: `f(b) - f(a) = f'(\\\\xi )(b - a)`,\n },\n {\n label: '导数公式',\n latex: `(\\\\arcsin x)' = \\\\frac{1}{{\\\\sqrt {1 - x^2} }}`,\n },\n {\n label: '三角函数积分',\n latex: `\\\\int {tgxdx = - \\\\ln \\\\left| {\\\\cos x} \\\\right| + C}`,\n },\n {\n label: '二次曲面',\n latex: `\\\\frac{{{x^2}}}{{{a^2}}} + \\\\frac{{{y^2}}}{{{b^2}}} - \\\\frac{{{z^2}}}{{{c^2}}} = 1`,\n },\n {\n label: '二阶微分',\n latex: `\\\\frac {{d^2}y} {dx^2} + P(x) \\\\frac {dy} {dx} + Q(x)y = f(x)`,\n },\n {\n label: '方向导数',\n latex: `\\\\frac{{\\\\partial f}}{{\\\\partial l}} = \\\\frac{{\\\\partial f}}{{\\\\partial x}}\\\\cos \\\\phi + \\\\frac{{\\\\partial f}}{{\\\\partial y}}\\\\sin \\\\phi`,\n },\n]\n\nexport const SYMBOL_LIST = [\n {\n type: 'operators',\n label: '数学',\n children: [\n { latex: '\\\\cdot' },\n { latex: '\\\\pm' },\n { latex: '\\\\mp' },\n { latex: '+' },\n { latex: '-' },\n { latex: '\\\\times' },\n { latex: '\\\\div' },\n { latex: '<' },\n { latex: '>' },\n { latex: '=' },\n { latex: '\\\\neq\\\\ne' },\n { latex: '\\\\leqq' },\n { latex: '\\\\geqq' },\n { latex: '\\\\leq' },\n { latex: '\\\\geq' },\n { latex: '\\\\propto' },\n { latex: '\\\\sim' },\n { latex: '\\\\equiv' },\n { latex: '\\\\dagger' },\n { latex: '\\\\ddagger' },\n { latex: '\\\\ell' },\n { latex: '\\\\#' },\n { latex: '\\\\$' },\n { latex: '\\\\&' },\n { latex: '\\\\%' },\n { latex: '\\\\langle\\\\rangle' },\n { latex: '()' },\n { latex: '[]' },\n { latex: '\\\\{\\\\}' },\n { latex: '||' },\n { latex: '\\\\|' },\n { latex: '\\\\exists' },\n { latex: '\\\\in' },\n { latex: '\\\\subset' },\n { latex: '\\\\supset' },\n { latex: '\\\\cup' },\n { latex: '\\\\cap' },\n { latex: '\\\\infty' },\n { latex: '\\\\partial' },\n { latex: '\\\\nabla' },\n { latex: '\\\\aleph' },\n { latex: '\\\\wp' },\n { latex: '\\\\therefore' },\n { latex: '\\\\mid' },\n { latex: '\\\\sum' },\n { latex: '\\\\prod' },\n { latex: '\\\\bigoplus' },\n { latex: '\\\\bigodot' },\n { latex: '\\\\int' },\n { latex: '\\\\oint' },\n { latex: '\\\\oplus' },\n { latex: '\\\\odot' },\n { latex: '\\\\perp' },\n { latex: '\\\\angle' },\n { latex: '\\\\triangle' },\n { latex: '\\\\Box' },\n { latex: '\\\\rightarrow' },\n { latex: '\\\\to' },\n { latex: '\\\\leftarrow' },\n { latex: '\\\\gets' },\n { latex: '\\\\circ' },\n { latex: '\\\\bigcirc' },\n { latex: '\\\\bullet' },\n { latex: '\\\\star' },\n { latex: '\\\\diamond' },\n { latex: '\\\\ast' },\n { latex: ',' },\n { latex: '.' },\n { latex: ';' },\n { latex: '!' },\n ],\n },\n {\n type: 'group',\n label: '组合',\n children: [\n { latex: '\\\\frac{a}{b}' },\n { latex: '\\\\frac{dx}{dx}' },\n { latex: '\\\\frac{\\\\partial a}{\\\\partial b}' },\n { latex: '\\\\sqrt{x}' },\n { latex: '\\\\sqrt[n]{x}' },\n { latex: 'x^{n}' },\n { latex: 'x_{n}' },\n { latex: 'x_a^b' },\n { latex: '\\\\int_{a}^{b}' },\n { latex: '\\\\oint_a^b' },\n { latex: '\\\\lim_{a \\\\rightarrow b}' },\n { latex: '\\\\prod_a^b' },\n { latex: '\\\\sum_a^b' },\n { latex: '\\\\left(\\\\begin{array}a \\\\\\\\ b\\\\end{array}\\\\right)' },\n { latex: '\\\\begin{bmatrix}a & b \\\\\\\\ c & d \\\\end{bmatrix}' },\n { latex: '\\\\begin{cases}a & x = 0 \\\\\\\\ b & x > 0\\\\end{cases}' },\n { latex: '\\\\hat{a}' },\n { latex: '\\\\breve{a}' },\n { latex: '\\\\acute{a}' },\n { latex: '\\\\grave{a}' },\n { latex: '\\\\tilde{a}' },\n { latex: '\\\\bar{a}' },\n { latex: '\\\\vec{a}' },\n { latex: '\\\\underline{a}' },\n { latex: '\\\\overline{a}' },\n { latex: '\\\\widehat{ab}' },\n { latex: '\\\\overleftarrow{ab}' },\n { latex: '\\\\overrightarrow{ab}' },\n ],\n },\n {\n type: 'verbatim',\n label: '函数',\n children: [\n { latex: '\\\\log' },\n { latex: '\\\\ln' },\n { latex: '\\\\exp' },\n { latex: '\\\\mod' },\n { latex: '\\\\lim' },\n { latex: '\\\\sin' },\n { latex: '\\\\cos' },\n { latex: '\\\\tan' },\n { latex: '\\\\csc' },\n { latex: '\\\\sec' },\n { latex: '\\\\cot' },\n { latex: '\\\\sinh' },\n { latex: '\\\\cosh' },\n { latex: '\\\\tanh' },\n { latex: '\\\\csch' },\n { latex: '\\\\sech' },\n { latex: '\\\\coth' },\n { latex: '\\\\arcsin' },\n { latex: '\\\\arccos' },\n { latex: '\\\\arctan' },\n { latex: '\\\\arccsc' },\n { latex: '\\\\arcsec' },\n { latex: '\\\\arccot' },\n ],\n },\n {\n type: 'greek',\n label: '希腊字母',\n children: [\n { latex: '\\\\alpha' },\n { latex: '\\\\beta' },\n { latex: '\\\\gamma' },\n { latex: '\\\\delta' },\n { latex: '\\\\varepsilon' },\n { latex: '\\\\zeta' },\n { latex: '\\\\eta' },\n { latex: '\\\\vartheta' },\n { latex: '\\\\iota' },\n { latex: '\\\\kappa' },\n { latex: '\\\\lambda' },\n { latex: '\\\\mu' },\n { latex: '\\\\nu' },\n { latex: '\\\\xi' },\n { latex: '\\\\omicron' },\n { latex: '\\\\pi' },\n { latex: '\\\\rho' },\n { latex: '\\\\sigma' },\n { latex: '\\\\tau' },\n { latex: '\\\\upsilon' },\n { latex: '\\\\varphi' },\n { latex: '\\\\chi' },\n { latex: '\\\\psi' },\n { latex: '\\\\omega' },\n { latex: '\\\\epsilon' },\n { latex: '\\\\theta' },\n { latex: '\\\\phi' },\n { latex: '\\\\varsigma' },\n { latex: '\\\\Alpha' },\n { latex: '\\\\Beta' },\n { latex: '\\\\Gamma' },\n { latex: '\\\\Delta' },\n { latex: '\\\\Epsilon' },\n { latex: '\\\\Zeta' },\n { latex: '\\\\Eta' },\n { latex: '\\\\Theta' },\n { latex: '\\\\Iota' },\n { latex: '\\\\Kappa' },\n { latex: '\\\\Lambda' },\n { latex: '\\\\Mu' },\n { latex: '\\\\Nu' },\n { latex: '\\\\Xi' },\n { latex: '\\\\Omicron' },\n { latex: '\\\\Pi' },\n { latex: '\\\\Rho' },\n { latex: '\\\\Sigma' },\n { latex: '\\\\Tau' },\n { latex: '\\\\Upsilon' },\n { latex: '\\\\Phi' },\n { latex: '\\\\Chi' },\n { latex: '\\\\Psi' },\n { latex: '\\\\Omega' },\n ],\n },\n]","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-567417d3\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nimport { computed, ref, watch } from 'vue'\nimport { hfmath } from './hfmath'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FormulaContent',\n props: {\n latex: {},\n width: {},\n height: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst box = ref({ x: 0, y: 0, w: 0, h: 0 })\nconst pathd = ref('')\n\nwatch(() => props.latex, () => {\n const eq = new hfmath(props.latex)\n pathd.value = eq.pathd({})\n box.value = eq.box({})\n}, { immediate: true })\n\nconst scale = computed(() => {\n const boxW = box.value.w + 32\n const boxH = box.value.h + 32\n\n if (boxW > props.width || boxH > props.height) {\n if (boxW / boxH > props.width / props.height) return props.width / boxW\n return props.height / boxH\n }\n return 1\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"svg\", {\n class: \"formula-content\",\n overflow: \"visible\",\n width: box.value.w + 32,\n height: box.value.h + 32,\n stroke: \"#000\",\n \"stroke-width\": \"1\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${scale.value}, ${scale.value}) translate(0,0) matrix(1,0,0,1,0,0)`,\n \"transform-origin\": \"0 50%\"\n }, [\n _createElementVNode(\"path\", { d: pathd.value }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n}\n}\n\n})","\n\n\n\n","import script from \"./FormulaContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FormulaContent.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FormulaContent.vue?vue&type=style&index=0&id=567417d3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-567417d3\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { computed } from 'vue'\nimport { hfmath } from './hfmath'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SymbolContent',\n props: {\n latex: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst svg = computed(() => {\n const eq = new hfmath(props.latex)\n return eq.svg({\n SCALE_X: 10,\n SCALE_Y: 10,\n })\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-content\",\n innerHTML: svg.value\n }, null, 8, _hoisted_1))\n}\n}\n\n})","\n\n\n","import script from \"./SymbolContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SymbolContent.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-65d72404\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"disabled\", \"value\", \"rows\", \"placeholder\"]\n\nimport { ref } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TextArea',\n props: {\n value: {},\n rows: { default: 4 },\n disabled: { type: Boolean, default: false },\n resizable: { type: Boolean, default: false },\n placeholder: { default: '' }\n },\n emits: [\"update:value\"],\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\n\n\nconst emit = __emit\n\nconst handleInput = (e: Event) => {\n emit('update:value', (e.target as HTMLInputElement).value)\n}\n\nconst textareaRef = ref()\nconst focus = () => {\n if (textareaRef.value) textareaRef.value.focus()\n}\n\n__expose({\n focus,\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"textarea\", {\n class: _normalizeClass([\"textarea\", {\n 'disabled': _ctx.disabled,\n 'resizable': _ctx.resizable,\n }]),\n ref_key: \"textareaRef\",\n ref: textareaRef,\n disabled: _ctx.disabled,\n value: _ctx.value,\n rows: _ctx.rows,\n placeholder: _ctx.placeholder,\n onInput: _cache[0] || (_cache[0] = $event => handleInput($event))\n }, null, 42, _hoisted_1))\n}\n}\n\n})","\n\n\n\n","import script from \"./TextArea.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TextArea.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TextArea.vue?vue&type=style&index=0&id=65d72404&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-65d72404\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-49a14edf\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"latex-editor\" }\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"left\" }\nconst _hoisted_4 = { class: \"input-area\" }\nconst _hoisted_5 = { class: \"preview\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"placeholder\"\n}\nconst _hoisted_7 = {\n key: 1,\n class: \"preview-content\"\n}\nconst _hoisted_8 = { class: \"right\" }\nconst _hoisted_9 = { class: \"content\" }\nconst _hoisted_10 = {\n key: 0,\n class: \"symbol\"\n}\nconst _hoisted_11 = { class: \"symbol-pool\" }\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"formula\"\n}\nconst _hoisted_14 = { class: \"formula-title\" }\nconst _hoisted_15 = [\"onClick\"]\nconst _hoisted_16 = { class: \"footer\" }\n\nimport { computed, onMounted, ref } from 'vue'\nimport { hfmath } from './hfmath'\nimport { FORMULA_LIST, SYMBOL_LIST } from '@/configs/latex'\nimport message from '@/utils/message'\n\nimport FormulaContent from './FormulaContent.vue'\nimport SymbolContent from './SymbolContent.vue'\nimport Button from '../Button.vue'\nimport TextArea from '../TextArea.vue'\nimport Tabs from '../Tabs.vue'\n\ninterface TabItem {\n key: 'symbol' | 'formula'\n label: string\n}\n\ninterface LatexResult {\n latex: string\n path: string\n w: number\n h: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n value: { default: '' }\n },\n emits: [\"update\", \"close\"],\n setup(__props: any, { emit: __emit }) {\n\nconst tabs: TabItem[] = [\n { label: '常用符号', key: 'symbol' },\n { label: '预置公式', key: 'formula' },\n]\n\nconst props = __props\n\nconst emit = __emit\n\nconst formulaList = FORMULA_LIST\n\nconst symbolTabs = SYMBOL_LIST.map(item => ({\n label: item.label,\n key: item.type,\n}))\n\nconst latex = ref('')\nconst toolbarState = ref<'symbol' | 'formula'>('symbol')\nconst textAreaRef = ref>()\n\nconst selectedSymbolKey = ref(SYMBOL_LIST[0].type)\nconst symbolPool = computed(() => {\n const selectedSymbol = SYMBOL_LIST.find(item => item.type === selectedSymbolKey.value)\n return selectedSymbol?.children || []\n})\n\nonMounted(() => {\n if (props.value) latex.value = props.value\n})\n\nconst update = () => {\n if (!latex.value) return message.error('公式不能为空')\n\n const eq = new hfmath(latex.value)\n const pathd = eq.pathd({})\n const box = eq.box({})\n \n emit('update', {\n latex: latex.value,\n path: pathd,\n w: box.w + 32,\n h: box.h + 32,\n })\n}\n\nconst insertSymbol = (latex: string) => {\n if (!textAreaRef.value) return\n textAreaRef.value.focus()\n document.execCommand('insertText', false, latex)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(TextArea, {\n value: latex.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((latex).value = $event)),\n placeholder: \"输入 LaTeX 公式\",\n ref_key: \"textAreaRef\",\n ref: textAreaRef\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (!latex.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, \"公式预览\"))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createVNode(FormulaContent, {\n width: 518,\n height: 138,\n latex: latex.value\n }, null, 8, [\"latex\"])\n ]))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(Tabs, {\n tabs: tabs,\n value: toolbarState.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((toolbarState).value = $event)),\n card: \"\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_9, [\n (toolbarState.value === 'symbol')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(Tabs, {\n tabs: _unref(symbolTabs),\n value: selectedSymbolKey.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((selectedSymbolKey).value = $event)),\n spaceBetween: \"\",\n tabsStyle: { margin: '10px 10px 0' }\n }, null, 8, [\"tabs\", \"value\"]),\n _createElementVNode(\"div\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(symbolPool.value, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-item\",\n key: item.latex,\n onClick: ($event: any) => (insertSymbol(item.latex))\n }, [\n _createVNode(SymbolContent, {\n latex: item.latex\n }, null, 8, [\"latex\"])\n ], 8, _hoisted_12))\n }), 128))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(formulaList), (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"formula-item\",\n key: item.label\n }, [\n _createElementVNode(\"div\", _hoisted_14, _toDisplayString(item.label), 1),\n _createElementVNode(\"div\", {\n class: \"formula-item-content\",\n onClick: ($event: any) => (latex.value = item.latex)\n }, [\n _createVNode(FormulaContent, {\n width: 236,\n height: 60,\n latex: item.latex\n }, null, 8, [\"latex\"])\n ], 8, _hoisted_15)\n ]))\n }), 128))\n ]))\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(Button, {\n class: \"btn\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (update()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确定\")\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./SlideToolbar.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SlideToolbar.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SlideToolbar.vue?vue&type=style&index=0&id=24150aba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24150aba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, resolveComponent as _resolveComponent, withCtx as _withCtx, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f3d1ac70\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-toolbar\" }\nconst _hoisted_2 = { class: \"content\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"style\"\n}\nconst _hoisted_4 = { class: \"row-block\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"文字颜色:\", -1))\nconst _hoisted_6 = { class: \"colors\" }\nconst _hoisted_7 = [\"onClick\"]\nconst _hoisted_8 = { class: \"row-block\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"填充色:\", -1))\nconst _hoisted_10 = { class: \"colors\" }\nconst _hoisted_11 = [\"onClick\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"common\"\n}\n\nimport { ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement, TableCell } from '@/types/slides'\nimport { ElementAlignCommands, ElementOrderCommands } from '@/types/edit'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport Tabs from '@/components/Tabs.vue'\nimport Divider from '@/components/Divider.vue'\nimport Button from '@/components/Button.vue'\nimport ButtonGroup from '@/components/ButtonGroup.vue'\nimport RadioButton from '@/components/RadioButton.vue'\nimport RadioGroup from '@/components/RadioGroup.vue'\n\ninterface TabItem {\n key: 'style' | 'common'\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementToolbar',\n setup(__props) {\n\nconst colors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c', '#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57']\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateElement = (id: string, props: Partial) => {\n slidesStore.updateElement({ id, props })\n addHistorySnapshot()\n}\n\nconst tabs: TabItem[] = [\n { key: 'style', label: '样式' },\n { key: 'common', label: '布局' },\n]\nconst activeTab = ref('common')\n\nconst { orderElement } = useOrderElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\nconst { addElementsFromData } = useAddSlidesOrElements()\nconst { deleteElement } = useDeleteElement()\n\nconst copyElement = () => {\n const element: PPTElement = JSON.parse(JSON.stringify(handleElement.value))\n addElementsFromData([element])\n}\n\nconst emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n}\n\nconst updateFontColor = (color: string) => {\n if (!handleElement.value) return\n if (handleElement.value.type === 'text' || (handleElement.value.type === 'shape' && handleElement.value.text?.content)) {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command: 'color', value: color } })\n }\n if (handleElement.value.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, color }\n }\n }\n updateElement(handleElementId.value, { data })\n }\n if (handleElement.value.type === 'latex') {\n updateElement(handleElementId.value, { color })\n }\n}\n\nconst updateFill = (color: string) => {\n if (!handleElement.value) return\n if (\n handleElement.value.type === 'text' ||\n handleElement.value.type === 'shape' ||\n handleElement.value.type === 'chart'\n ) updateElement(handleElementId.value, { fill: color })\n\n if (handleElement.value.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, backcolor: color }\n }\n }\n updateElement(handleElementId.value, { data })\n }\n\n if (handleElement.value.type === 'audio') updateElement(handleElementId.value, { color })\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_IconCopy = _resolveComponent(\"IconCopy\")!\n const _component_IconDelete = _resolveComponent(\"IconDelete\")!\n const _component_IconSendToBack = _resolveComponent(\"IconSendToBack\")!\n const _component_IconBringToFrontOne = _resolveComponent(\"IconBringToFrontOne\")!\n const _component_IconBringToFront = _resolveComponent(\"IconBringToFront\")!\n const _component_IconSentToBack = _resolveComponent(\"IconSentToBack\")!\n const _component_IconAlignLeft = _resolveComponent(\"IconAlignLeft\")!\n const _component_IconAlignVertically = _resolveComponent(\"IconAlignVertically\")!\n const _component_IconAlignRight = _resolveComponent(\"IconAlignRight\")!\n const _component_IconAlignTop = _resolveComponent(\"IconAlignTop\")!\n const _component_IconAlignHorizontally = _resolveComponent(\"IconAlignHorizontally\")!\n const _component_IconAlignBottom = _resolveComponent(\"IconAlignBottom\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Tabs, {\n tabs: tabs,\n value: activeTab.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((activeTab).value = $event)),\n tabsStyle: { marginBottom: '8px' },\n tabStyle: {\n width: '30%',\n margin: '0 10%',\n }\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n (activeTab.value === 'style')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).bold,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emitRichTextCommand('bold')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextBold)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).em,\n onClick: _cache[2] || (_cache[2] = ($event: any) => (emitRichTextCommand('em')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextItalic)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).underline,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emitRichTextCommand('underline')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextUnderline)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).strikethrough,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (emitRichTextCommand('strikethrough')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconStrikethrough)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }),\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[5] || (_cache[5] = ($event: any) => (emitRichTextCommand('fontsize-add')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _createTextVNode(\"+\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[6] || (_cache[6] = ($event: any) => (emitRichTextCommand('fontsize-reduce')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _createTextVNode(\"-\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _unref(richTextAttrs).align,\n \"onUpdate:value\": _cache[7] || (_cache[7] = value => emitRichTextCommand('align', value))\n }, {\n default: _withCtx(() => [\n _createVNode(RadioButton, {\n value: \"left\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextLeft)\n ]),\n _: 1\n }),\n _createVNode(RadioButton, {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n }),\n _createVNode(RadioButton, {\n value: \"right\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(Divider, { style: {\"margin\":\"20px 0\"} }),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(colors, (color) => {\n return _createElementVNode(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (updateFontColor(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_7)\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createElementVNode(\"div\", _hoisted_10, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(colors, (color) => {\n return _createElementVNode(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (updateFill(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_11)\n }), 64))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (activeTab.value === 'common')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (copyElement()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconCopy, { class: \"icon\" }),\n _createTextVNode(\" 复制\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_unref(deleteElement)()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDelete, { class: \"icon\" }),\n _createTextVNode(\" 删除\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).TOP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSendToBack, { class: \"icon\" }),\n _createTextVNode(\" 置顶\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).BOTTOM)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFrontOne, { class: \"icon\" }),\n _createTextVNode(\" 置底\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).UP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFront, { class: \"icon\" }),\n _createTextVNode(\" 上移\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).DOWN)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSentToBack, { class: \"icon\" }),\n _createTextVNode(\" 下移\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).LEFT)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignLeft, { class: \"icon\" }),\n _createTextVNode(\" 左对齐\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).HORIZONTAL)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignVertically, { class: \"icon\" }),\n _createTextVNode(\" 水平居中\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).RIGHT)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignRight, { class: \"icon\" }),\n _createTextVNode(\" 右对齐\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).TOP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTop, { class: \"icon\" }),\n _createTextVNode(\" 上对齐\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).VERTICAL)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignHorizontally, { class: \"icon\" }),\n _createTextVNode(\" 垂直居中\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[19] || (_cache[19] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).BOTTOM)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignBottom, { class: \"icon\" }),\n _createTextVNode(\" 下对齐\")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./ElementToolbar.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementToolbar.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementToolbar.vue?vue&type=style&index=0&id=f3d1ac70&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f3d1ac70\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5c34ab81\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor-header\" }\nconst _hoisted_2 = { class: \"history\" }\n\nimport { storeToRefs } from 'pinia'\nimport { useSnapshotStore } from '@/store'\nimport type { Mode } from '@/types/mobile'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Header',\n props: {\n changeMode: { type: Function }\n },\n setup(__props: any) {\n\n\n\nconst { canUndo, canRedo } = storeToRefs(useSnapshotStore())\nconst { redo, undo } = useHistorySnapshot()\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconBack = _resolveComponent(\"IconBack\")!\n const _component_IconNext = _resolveComponent(\"IconNext\")!\n const _component_IconLogout = _resolveComponent(\"IconLogout\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"history-item\", { 'disable': !_unref(canUndo) }]),\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_unref(undo)()), [\"stop\"]))\n }, [\n _createVNode(_component_IconBack),\n _createTextVNode(\" 撤销\")\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"history-item\", { 'disable': !_unref(canRedo) }]),\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_unref(redo)()), [\"stop\"]))\n }, [\n _createVNode(_component_IconNext),\n _createTextVNode(\" 重做\")\n ], 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"back\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _createTextVNode(\" 退出编辑\")\n ])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./Header.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Header.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Header.vue?vue&type=style&index=0&id=5c34ab81&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5c34ab81\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3756d058\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor\" }\n\nimport { computed, onMounted, ref, watchEffect } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport type { AlignmentLineProps } from '@/types/edit'\nimport type { Mode } from '@/types/mobile'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\nimport useDragElement from '@/views/Editor/Canvas/hooks/useDragElement'\nimport useScaleElement from '@/views/Editor/Canvas/hooks/useScaleElement'\nimport useRotateElement from '@/views/Editor/Canvas/hooks/useRotateElement'\n\nimport AlignmentLine from '@/views/Editor/Canvas/AlignmentLine.vue'\nimport MobileEditableElement from './MobileEditableElement.vue'\nimport MobileOperate from './MobileOperate.vue'\nimport SlideToolbar from './SlideToolbar.vue'\nimport ElementToolbar from './ElementToolbar.vue'\nimport Header from './Header.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n changeMode: { type: Function }\n },\n setup(__props: any) {\n\n\n\nconst slidesStore = useSlidesStore()\nconst mainStore = useMainStore()\nconst { slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\nconst { activeElementIdList, handleElement } = storeToRefs(mainStore)\n\nconst contentRef = ref()\nconst viewportRef = ref()\n\nconst alignmentLines = ref([])\n\nconst background = computed(() => currentSlide.value.background)\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nconst canvasScale = computed(() => {\n if (!contentRef.value) return 1\n const contentWidth = contentRef.value.clientWidth\n const contentheight = contentRef.value.clientHeight\n\n const contentRatio = contentheight / contentWidth\n if (contentRatio >= viewportRatio.value) return (contentWidth - 20) / VIEWPORT_SIZE\n return (contentheight - 20) / viewportRatio.value / VIEWPORT_SIZE\n})\n\nonMounted(() => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n if (slideIndex.value !== 0) slidesStore.updateSlideIndex(0)\n})\n\nconst viewportStyles = computed(() => ({\n width: VIEWPORT_SIZE * canvasScale.value + 'px',\n height: VIEWPORT_SIZE * viewportRatio.value * canvasScale.value + 'px',\n}))\n\nconst elementList = ref([])\nconst setLocalElementList = () => {\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\n}\nwatchEffect(setLocalElementList)\n\nconst { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\nconst { scaleElement } = useScaleElement(elementList, alignmentLines, canvasScale)\nconst { rotateElement } = useRotateElement(elementList, viewportRef, canvasScale)\n\nconst selectElement = (e: TouchEvent, element: PPTElement, startMove = true) => {\n if (!activeElementIdList.value.includes(element.id)) {\n mainStore.setActiveElementIdList([element.id])\n mainStore.setHandleElementId(element.id)\n }\n if (startMove) dragElement(e, element)\n}\n\nconst handleClickBlankArea = () => {\n mainStore.setActiveElementIdList([])\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Header, { changeMode: _ctx.changeMode }, null, 8, [\"changeMode\"]),\n _createElementVNode(\"div\", {\n class: \"content\",\n ref_key: \"contentRef\",\n ref: contentRef,\n onTouchstart: _cache[0] || (_cache[0] = ($event: any) => (handleClickBlankArea()))\n }, [\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle(viewportStyles.value)\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(alignmentLines.value, (line, index) => {\n return (_openBlock(), _createBlock(AlignmentLine, {\n key: index,\n type: line.type,\n axis: line.axis,\n length: line.length,\n canvasScale: canvasScale.value\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: element.id\n }, [\n (element.type !== 'line')\n ? (_openBlock(), _createBlock(MobileOperate, {\n key: 0,\n elementInfo: element,\n isSelected: _unref(activeElementIdList).includes(element.id),\n canvasScale: canvasScale.value,\n scaleElement: _unref(scaleElement),\n rotateElement: _unref(rotateElement)\n }, null, 8, [\"elementInfo\", \"isSelected\", \"canvasScale\", \"scaleElement\", \"rotateElement\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128)),\n _createElementVNode(\"div\", {\n class: \"viewport\",\n ref_key: \"viewportRef\",\n ref: viewportRef,\n style: _normalizeStyle({ transform: `scale(${canvasScale.value})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element, index) => {\n return (_openBlock(), _createBlock(MobileEditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n selectElement: selectElement\n }, null, 8, [\"elementInfo\", \"elementIndex\"]))\n }), 128))\n ], 4)\n ], 4)\n ], 544),\n _createVNode(SlideToolbar),\n (_unref(handleElement))\n ? (_openBlock(), _createBlock(ElementToolbar, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3756d058&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3756d058\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-62f26eba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\n\nimport { computed, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport type { Mode } from '@/types/mobile'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport MobileThumbnails from './MobileThumbnails.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobilePlayer',\n props: {\n changeMode: { type: Function }\n },\n setup(__props: any) {\n\n\n\nconst slidesStore = useSlidesStore()\nconst { slides, slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\nconst toolVisible = ref(false)\n\nconst playerSize = ref({ width: 0, height: 0 })\n\nonMounted(() => {\n if (slideIndex.value !== 0) slidesStore.updateSlideIndex(0)\n\n playerSize.value = {\n width: document.body.clientHeight,\n height: document.body.clientWidth,\n }\n})\n\nconst slideSize = computed(() => {\n const playerRatio = playerSize.value.height / playerSize.value.width\n\n let slideWidth = 0\n let slideHeight = 0\n\n if (playerRatio >= viewportRatio.value) {\n slideWidth = playerSize.value.width\n slideHeight = slideWidth * viewportRatio.value\n }\n else {\n slideHeight = playerSize.value.height\n slideWidth = slideHeight / viewportRatio.value\n }\n\n return {\n width: slideWidth,\n height: slideHeight,\n }\n})\n\nconst touchInfo = ref<{ x: number; y: number; } | null>(null)\nconst touchStartListener = (e: TouchEvent) => {\n touchInfo.value = {\n x: e.changedTouches[0].pageX,\n y: e.changedTouches[0].pageY,\n }\n}\nconst touchEndListener = (e: TouchEvent) => {\n if (!touchInfo.value) return\n\n const offsetY = Math.abs(touchInfo.value.y - e.changedTouches[0].pageY)\n const offsetX = e.changedTouches[0].pageX - touchInfo.value.x\n\n if ( Math.abs(offsetX) > offsetY && Math.abs(offsetX) > 50 ) {\n touchInfo.value = null\n\n if (offsetX < 0 && slideIndex.value > 0) slidesStore.updateSlideIndex(slideIndex.value - 1)\n if (offsetX > 0 && slideIndex.value < slides.value.length - 1) slidesStore.updateSlideIndex(slideIndex.value + 1)\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconLogout = _resolveComponent(\"IconLogout\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-player\",\n style: _normalizeStyle({\n width: playerSize.value.width + 'px',\n height: playerSize.value.height + 'px',\n transform: `rotate(90deg) translateY(-${playerSize.value.height}px)`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"screen-slide-list\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (toolVisible.value = !toolVisible.value)),\n onTouchstart: _cache[1] || (_cache[1] = $event => touchStartListener($event)),\n onTouchend: _cache[2] || (_cache[2] = $event => touchEndListener($event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\n 'slide-item', \n `turning-mode-${slide.turningMode || 'slideY'}`,\n {\n 'current': index === _unref(slideIndex),\n 'before': index < _unref(slideIndex),\n 'after': index > _unref(slideIndex),\n 'hide': (index === _unref(slideIndex) - 1 || index === _unref(slideIndex) + 1) && slide.turningMode !== _unref(currentSlide).turningMode,\n }\n ]),\n key: slide.id\n }, [\n (Math.abs(_unref(slideIndex) - index) < 2)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"slide-content\",\n style: _normalizeStyle({\n width: slideSize.value.width + 'px',\n height: slideSize.value.height + 'px',\n })\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: slideSize.value.width\n }, null, 8, [\"slide\", \"size\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ], 32),\n (toolVisible.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"back\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _createTextVNode(\" 退出播放\")\n ])\n ]),\n _createVNode(MobileThumbnails, { class: \"thumbnails\" })\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./MobilePlayer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobilePlayer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobilePlayer.vue?vue&type=style&index=0&id=62f26eba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-62f26eba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-53dd42dc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"thumbnail-list\" }\nconst _hoisted_2 = { class: \"menu\" }\n\nimport { onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useLoadSlides from '@/hooks/useLoadSlides'\nimport type { Mode } from '@/types/mobile'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport Divider from '@/components/Divider.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobilePreview',\n props: {\n changeMode: { type: Function }\n },\n setup(__props: any) {\n\n\n\nconst { slides } = storeToRefs(useSlidesStore())\nconst { slidesLoadLimit } = useLoadSlides()\n\nconst mobileRef = ref()\nconst screenWidth = ref(0)\n\nonMounted(() => {\n if (!mobileRef.value) return\n screenWidth.value = mobileRef.value.clientWidth\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_IconFullScreenPlay = _resolveComponent(\"IconFullScreenPlay\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-preview\",\n ref_key: \"mobileRef\",\n ref: mobileRef\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-item\",\n key: slide.id\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: screenWidth.value - 20,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"size\", \"visible\"])\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.changeMode('editor')))\n }, [\n _createVNode(_component_IconEdit, { class: \"icon\" }),\n _createTextVNode(\" 编辑\")\n ]),\n _createVNode(Divider, {\n type: \"vertical\",\n style: {\"height\":\"30px\"}\n }),\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.changeMode('player')))\n }, [\n _createVNode(_component_IconFullScreenPlay, { class: \"icon\" }),\n _createTextVNode(\" 播放\")\n ])\n ])\n ], 512))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./MobilePreview.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobilePreview.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobilePreview.vue?vue&type=style&index=0&id=53dd42dc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53dd42dc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9826ff08\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile\" }\n\nimport { computed, ref } from 'vue'\nimport type { Mode } from '@/types/mobile'\n\nimport MobileEditor from './MobileEditor/index.vue'\nimport MobilePlayer from './MobilePlayer.vue'\nimport MobilePreview from './MobilePreview.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mode = ref('preview')\n \nconst changeMode = (_mode: Mode) => mode.value = _mode\n\nconst currentComponent = computed(() => {\n const componentMap = {\n 'editor': MobileEditor,\n 'player': MobilePlayer,\n 'preview': MobilePreview,\n }\n return componentMap[mode.value] || null\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(currentComponent.value), { changeMode: changeMode }))\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9826ff08&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9826ff08\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { onMounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useScreenStore, useMainStore, useSnapshotStore } from '@/store'\nimport { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage'\nimport { deleteDiscardedDB } from '@/utils/database'\nimport { isPC } from './utils/common'\n\nimport Editor from './views/Editor/index.vue'\nimport Screen from './views/Screen/index.vue'\nimport Mobile from './views/Mobile/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\nconst _isPC = isPC()\n\nconst mainStore = useMainStore()\nconst snapshotStore = useSnapshotStore()\nconst { databaseId } = storeToRefs(mainStore)\nconst { screening } = storeToRefs(useScreenStore())\n\nif (process.env.NODE_ENV === 'production') {\n window.onbeforeunload = () => false\n}\n\nonMounted(async () => {\n await deleteDiscardedDB()\n snapshotStore.initSnapshotDatabase()\n mainStore.setAvailableFonts()\n})\n\n// 应用注销时向 localStorage 中记录下本次 indexedDB 的数据库ID,用于之后清除数据库\nwindow.addEventListener('unload', () => {\n const discardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n const discardedDBList: string[] = discardedDB ? JSON.parse(discardedDB) : []\n\n discardedDBList.push(databaseId.value)\n\n const newDiscardedDB = JSON.stringify(discardedDBList)\n localStorage.setItem(LOCALSTORAGE_KEY_DISCARDED_DB, newDiscardedDB)\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(screening))\n ? (_openBlock(), _createBlock(Screen, { key: 0 }))\n : (_unref(_isPC))\n ? (_openBlock(), _createBlock(Editor, { key: 1 }))\n : (_openBlock(), _createBlock(Mobile, { key: 2 }))\n}\n}\n\n})","\n\n\n\n","import script from \"./App.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./App.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./App.vue?vue&type=style&index=0&id=685e8c72&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log('No internet connection found. App is running in offline mode.')\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n }\n })\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, normalizeClass as _normalizeClass, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-77e74b43\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"menu-content\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = { class: \"text\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"sub-text\"\n}\n\nimport type { ContextmenuItem } from './types'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MenuContent',\n props: {\n menus: {},\n handleClickMenuItem: { type: Function }\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n const _component_menu_content = _resolveComponent(\"menu-content\", true)!\n\n return (_openBlock(), _createElementBlock(\"ul\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.menus, (menu, index) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: menu.text || index\n }, [\n (!menu.hide)\n ? (_openBlock(), _createElementBlock(\"li\", {\n key: 0,\n class: _normalizeClass([\"menu-item\", {'divider': menu.divider, 'disable': menu.disable}]),\n onClick: _withModifiers(($event: any) => (_ctx.handleClickMenuItem(menu)), [\"stop\"])\n }, [\n (!menu.divider)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"menu-item-content\", {\n 'has-children': menu.children,\n 'has-handler': menu.handler,\n }])\n }, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(menu.text), 1),\n (menu.subText && !menu.children)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(menu.subText), 1))\n : _createCommentVNode(\"\", true),\n (menu.children && menu.children.length)\n ? (_openBlock(), _createBlock(_component_menu_content, {\n key: 1,\n class: \"sub-menu\",\n menus: menu.children,\n handleClickMenuItem: _ctx.handleClickMenuItem\n }, null, 8, [\"menus\", \"handleClickMenuItem\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_2))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./MenuContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MenuContent.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MenuContent.vue?vue&type=style&index=0&id=77e74b43&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-77e74b43\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { withModifiers as _withModifiers, createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeStyle as _normalizeStyle, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\nimport type { ContextmenuItem, Axis } from './types'\n\nimport MenuContent from './MenuContent.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n axis: {},\n el: {},\n menus: {},\n removeContextmenu: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst style = computed(() => {\n const MENU_WIDTH = 170\n const MENU_HEIGHT = 30\n const DIVIDER_HEIGHT = 11\n const PADDING = 5\n\n const { x, y } = props.axis\n const menuCount = props.menus.filter(menu => !(menu.divider || menu.hide)).length\n const dividerCount = props.menus.filter(menu => menu.divider).length\n\n const menuWidth = MENU_WIDTH\n const menuHeight = menuCount * MENU_HEIGHT + dividerCount * DIVIDER_HEIGHT + PADDING * 2\n\n const screenWidth = document.body.clientWidth\n const screenHeight = document.body.clientHeight\n\n return {\n left: screenWidth <= x + menuWidth ? x - menuWidth : x,\n top: screenHeight <= y + menuHeight ? y - menuHeight : y,\n }\n})\n\nconst handleClickMenuItem = (item: ContextmenuItem) => {\n if (item.disable) return\n if (item.children && !item.handler) return\n if (item.handler) item.handler(props.el)\n props.removeContextmenu()\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", {\n class: \"mask\",\n onContextmenu: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.removeContextmenu()), [\"prevent\"])),\n onMousedown: _cache[1] || (_cache[1] = ($event: any) => (_ctx.removeContextmenu()))\n }, null, 32),\n _createElementVNode(\"div\", {\n class: \"contextmenu\",\n style: _normalizeStyle({\n left: style.value.left + 'px',\n top: style.value.top + 'px',\n }),\n onContextmenu: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"prevent\"]))\n }, [\n _createVNode(MenuContent, {\n menus: _ctx.menus,\n handleClickMenuItem: handleClickMenuItem\n }, null, 8, [\"menus\"])\n ], 36)\n ], 64))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1abfab1d&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { type Directive, type DirectiveBinding, createVNode, render } from 'vue'\nimport ContextmenuComponent from '@/components/Contextmenu/index.vue'\n\nconst CTX_CONTEXTMENU_HANDLER = 'CTX_CONTEXTMENU_HANDLER'\n\ninterface CustomHTMLElement extends HTMLElement {\n [CTX_CONTEXTMENU_HANDLER]?: (event: MouseEvent) => void\n} \n\nconst contextmenuListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\n event.stopPropagation()\n event.preventDefault()\n\n const menus = binding.value(el)\n if (!menus) return\n\n let container: HTMLDivElement | null = null\n\n // 移除右键菜单并取消相关的事件监听\n const removeContextmenu = () => {\n if (container) {\n document.body.removeChild(container)\n container = null\n }\n el.classList.remove('contextmenu-active')\n document.body.removeEventListener('scroll', removeContextmenu) \n window.removeEventListener('resize', removeContextmenu)\n }\n\n // 创建自定义菜单\n const options = {\n axis: { x: event.x, y: event.y },\n el,\n menus,\n removeContextmenu,\n }\n container = document.createElement('div')\n const vm = createVNode(ContextmenuComponent, options, null)\n render(vm, container)\n document.body.appendChild(container)\n\n // 为目标节点添加菜单激活状态的className\n el.classList.add('contextmenu-active')\n\n // 页面变化时移除菜单\n document.body.addEventListener('scroll', removeContextmenu)\n window.addEventListener('resize', removeContextmenu)\n}\n\nconst ContextmenuDirective: Directive = {\n mounted(el: CustomHTMLElement, binding) {\n el[CTX_CONTEXTMENU_HANDLER] = (event: MouseEvent) => contextmenuListener(el, event, binding)\n el.addEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\n },\n\n unmounted(el: CustomHTMLElement) {\n if (el && el[CTX_CONTEXTMENU_HANDLER]) {\n el.removeEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\n delete el[CTX_CONTEXTMENU_HANDLER]\n }\n },\n}\n\nexport default ContextmenuDirective","import type { Directive, DirectiveBinding } from 'vue'\n\nconst CTX_CLICK_OUTSIDE_HANDLER = 'CTX_CLICK_OUTSIDE_HANDLER'\n\ninterface CustomHTMLElement extends HTMLElement {\n [CTX_CLICK_OUTSIDE_HANDLER]?: (event: MouseEvent) => void\n} \n\nconst clickListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\n const handler = binding.value\n\n const path = event.composedPath()\n const isClickOutside = path ? path.indexOf(el) < 0 : !el.contains(event.target as HTMLElement)\n\n if (!isClickOutside) return\n handler(event)\n}\n\nconst ClickOutsideDirective: Directive = {\n mounted(el: CustomHTMLElement, binding) {\n el[CTX_CLICK_OUTSIDE_HANDLER] = (event: MouseEvent) => clickListener(el, event, binding)\n setTimeout(() => {\n document.addEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER]!)\n }, 0)\n },\n \n unmounted(el: CustomHTMLElement) {\n if (el[CTX_CLICK_OUTSIDE_HANDLER]) {\n document.removeEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER])\n delete el[CTX_CLICK_OUTSIDE_HANDLER]\n }\n },\n}\n\nexport default ClickOutsideDirective","import type { Directive, DirectiveBinding } from 'vue'\nimport tippy, { type Instance, type Placement } from 'tippy.js'\n\nimport './tooltip.scss'\n\nconst TOOLTIP_INSTANCE = 'TOOLTIP_INSTANCE'\n\ninterface CustomHTMLElement extends HTMLElement {\n [TOOLTIP_INSTANCE]?: Instance\n}\n\ntype Delay = number | [number | null, number | null]\n\ninterface BindingValue {\n content: string\n placement?: Placement\n delay?: Delay\n}\n\nconst TooltipDirective: Directive = {\n mounted(el: CustomHTMLElement, binding: DirectiveBinding) {\n let content = ''\n let placement: Placement = 'top'\n let delay: Delay = [300, 0]\n\n if (typeof binding.value === 'string') {\n content = binding.value\n }\n else {\n content = binding.value.content\n if (binding.value.placement !== undefined) placement = binding.value.placement\n if (binding.value.delay !== undefined) delay = binding.value.delay\n }\n\n el[TOOLTIP_INSTANCE] = tippy(el, {\n content,\n theme: 'tooltip',\n duration: 100,\n animation: 'scale',\n allowHTML: true,\n placement,\n delay,\n })\n },\n\n updated(el: CustomHTMLElement, binding: DirectiveBinding) {\n let content = ''\n if (typeof binding.value === 'string') {\n content = binding.value\n }\n else {\n content = binding.value.content\n }\n if (el[TOOLTIP_INSTANCE]) el[TOOLTIP_INSTANCE].setContent(content)\n },\n \n unmounted(el: CustomHTMLElement) {\n if (el[TOOLTIP_INSTANCE]) el[TOOLTIP_INSTANCE].destroy()\n },\n}\n\nexport default TooltipDirective","import type { App } from 'vue'\n\nimport Contextmenu from './contextmenu'\nimport ClickOutside from './clickOutside'\nimport Tooltip from './tooltip'\n\nexport default {\n install(app: App) {\n app.directive('contextmenu', Contextmenu)\n app.directive('click-outside', ClickOutside)\n app.directive('tooltip', Tooltip)\n }\n}\n","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './registerServiceWorker'\n\nimport '@icon-park/vue-next/styles/index.css'\nimport 'prosemirror-view/style/prosemirror.css'\nimport 'animate.css'\n\nimport '@/assets/styles/prosemirror.scss'\nimport '@/assets/styles/global.scss'\nimport '@/assets/styles/font.scss'\n\nimport Icon from '@/plugins/icon'\nimport Directive from '@/plugins/directive'\n\nconst app = createApp(App)\n\napp.use(Icon)\napp.use(Directive)\n\napp.use(createPinia())\napp.mount('#app')\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpptist\"] = self[\"webpackChunkpptist\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(2078); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["ToolbarStates","isList","node","schema","type","nodes","bullet_list","ordered_list","autoSelectAll","view","empty","state","selection","selectAll","dispatch","addMark","editorView","mark","tr","from","to","$from","$to","pos","findNodesWithSameMark","doc","markType","ii","finder","firstMark","fromNode","toNode","nodeAt","marks","find","fromPos","toPos","jj","nodeSize","equalNodeType","nodeType","Array","isArray","indexOf","findParentNodeClosestToPos","$pos","predicate","i","depth","before","start","findParentNode","_ref","findParentNodeOfType","isActiveOfParentNodeType","getLastTextNode","name","lastChild","getMarkAttrs","getAttrValue","attr","attrs","isActiveMark","markActive","isInSet","storedMarks","rangeHasMark","getAttrValueInSelection","keepChecking","value","nodesBetween","_defaultAttrs","color","backcolor","fontsize","fontname","align","getTextAttrs","defaultAttrs","isBold","isEm","isUnderline","isStrikethrough","isSuperscript","isSubscript","isCode","link","isBulletList","isOrderedList","isBlockquote","bold","em","underline","strikethrough","superscript","subscript","code","bulletList","orderedList","blockquote","getFontsize","parseInt","defaultRichTextAttrs","SYS_FONTS","label","WEB_FONTS","isSupportFont","fontName","arial","toLowerCase","size","width","height","str","canvas","document","createElement","ctx","getContext","willReadFrequently","textAlign","fillStyle","textBaseline","getDotArray","_fontFamily","clearRect","font","fillText","imageData","getImageData","data","slice","call","filter","item","join","slides","id","elements","left","top","viewBox","path","fill","fixedRatio","opacity","rotate","flipV","lineHeight","content","defaultFontName","defaultColor","end","points","style","background","wordSpace","theme","themeColor","fontColor","backgroundColor","shadow","h","v","blur","outline","layouts","text","useSlidesStore","defineStore","title","slideIndex","viewportRatio","getters","currentSlide","currentSlideAnimations","animations","els","elIds","map","el","animation","includes","elId","formatedAnimations","trigger","length","last","push","autoNext","subColor","tinycolor","isDark","layoutsString","JSON","stringify","replaceAll","parse","actions","setTitle","this","setTheme","themeProps","setViewportRatio","setSlides","addSlide","slide","addIndex","splice","updateSlide","props","deleteSlide","slideId","slidesId","deleteSlidesIndex","index","findIndex","newIndex","Math","min","maxIndex","updateSlideIndex","addElement","element","currentSlideEls","newEls","deleteElement","elementId","elementIdList","updateElement","elIdList","removeElementProps","propName","propsNames","omit","nanoid","customAlphabet","databaseId","useMainStore","activeElementIdList","handleElementId","activeGroupElementId","hiddenElementIdList","canvasPercentage","canvasScale","canvasDragged","thumbnailsFocus","editorAreaFocus","disableHotkeys","gridLineSize","showRuler","creatingElement","creatingCustomShape","availableFonts","toolbarState","SLIDE_DESIGN","clipingImageElementId","richTextAttrs","selectedTableCells","isScaling","selectedSlidesIndex","dialogForExport","textFormatPainter","shapeFormatPainter","showSelectPanel","showSearchPanel","activeElementList","slidesStore","handleElement","setActiveElementIdList","setHandleElementId","setActiveGroupElementId","setHiddenElementIdList","setCanvasPercentage","percentage","setCanvasScale","scale","setCanvasDragged","isDragged","setThumbnailsFocus","isFocus","setEditorareaFocus","setDisableHotkeysState","disable","setGridLineSize","setRulerState","show","setCreatingElement","setCreatingCustomShapeState","setAvailableFonts","setToolbarState","setClipingImageElementId","setRichtextAttrs","setSelectedTableCells","cells","setScalingState","updateSelectedSlidesIndex","setDialogForExport","setTextFormatPainter","setShapeFormatPainter","setSelectPanelState","setSearchPanelState","LOCALSTORAGE_KEY_DISCARDED_DB","databaseNamePrefix","deleteDiscardedDB","async","now","Date","getTime","localStorageDiscardedDB","localStorage","getItem","localStorageDiscardedDBList","databaseNames","Dexie","getDatabaseNames","discardedDBNames","prefix","time","split","delete","removeItem","PPTistDB","constructor","super","_defineProperty","version","stores","snapshots","writingBoardImgs","table","db","useSnapshotStore","snapshotCursor","snapshotLength","canUndo","canRedo","setSnapshotCursor","cursor","setSnapshotLength","initSnapshotDatabase","newFirstSnapshot","add","addSnapshot","allKeys","orderBy","keys","needDeleteKeys","snapshot","snapshotLengthLimit","update","bulkDelete","unDo","mainStore","toArray","reDo","useKeyboardStore","ctrlKeyState","shiftKeyState","spaceKeyState","ctrlOrShiftKeyActive","setCtrlKeyState","active","setShiftKeyState","setSpaceKeyState","useScreenStore","screening","setScreening","fillDigit","digit","len","padStart","isPC","navigator","userAgent","match","ElementOrderCommands","ElementAlignCommands","OperateBorderLines","OperateResizeHandlers","OperateLineHandlers","KEYS","HOTKEY_DOC","children","CRYPTO_KEY","encrypt","msg","CryptoJS","toString","decrypt","ciphertext","bytes","Utf8","copyText","Promise","resolve","reject","fakeElement","clipboard","Clipboard","action","container","body","on","e","destroy","appendChild","click","removeChild","readClipboard","readText","then","pasteCustomClipboardString","clipboardData","pasteExcelClipboardString","lines","pop","colCount","getRectRotatedRange","radius","sqrt","pow","auxiliaryAngle","atan","PI","tlbraRadian","trblaRadian","middleLeft","middleTop","xAxis","cos","yAxis","sin","xRange","max","yRange","getRectRotatedOffset","originXRange","originYRange","rotatedXRange","rotatedYRange","offsetX","offsetY","getElementRange","minX","maxX","minY","maxY","getElementListRange","elementList","leftValues","topValues","rightValues","bottomValues","forEach","uniqAlignLines","uniqLines","line","_line","uniqLine","rangeMin","range","rangeMax","createSlideIdMap","slideIdMap","createElementIdMap","groupIdMap","elIdMap","groupId","getTableSubThemeColor","rgba","setAlpha","toRgbString","getLineElementPath","broken","mid","curve","cubic","c1","c2","p1","p2","isElementInViewport","parent","elementRect","getBoundingClientRect","parentRect","bottom","icons","IconPlayOne","_PlayOne","IconFullScreenPlay","_FullScreenPlay","IconLock","_Lock","IconUnlock","_Unlock","IconPpt","_Ppt","IconFormat","_Format","IconPicture","_Picture","IconFullScreen","_FullScreen","IconList","_List","IconOrderedList","_OrderedList","IconFlipVertically","_FlipVertically","IconFlipHorizontally","_FlipHorizontally","IconFontSize","_FontSize","IconCode","_Code","IconTextBold","_TextBold","IconTextItalic","_TextItalic","IconTextUnderline","_TextUnderline","IconStrikethrough","_Strikethrough","IconEdit","_Edit","IconQuote","_Quote","IconBackgroundColor","_BackgroundColor","IconGroup","_Group","IconUngroup","_Ungroup","IconBack","_Back","IconNext","_Next","IconFullwidth","_Fullwidth","IconAlignTop","_AlignTop","IconAlignLeft","_AlignLeft","IconAlignRight","_AlignRight","IconAlignBottom","_AlignBottom","IconAlignVertically","_AlignVertically","IconAlignHorizontally","_AlignHorizontally","IconBringToFront","_BringToFront","IconSendToBack","_SendToBack","IconAlignTextLeft","_AlignTextLeft","IconAlignTextRight","_AlignTextRight","IconAlignTextCenter","_AlignTextCenter","IconAlignTextBoth","_AlignTextBoth","IconRowHeight","_RowHeight","IconWrite","_Write","IconInsertTable","_InsertTable","IconAddText","_AddText","IconFill","_Fill","IconTailoring","_Tailoring","IconEffects","_Effects","IconColorFilter","_ColorFilter","IconUp","_Up","IconDown","_Down","IconPlus","_Plus","IconMinus","_Minus","IconConnection","_Connection","IconBringToFrontOne","_BringToFrontOne","IconSentToBack","_SentToBack","IconGithub","_Github","IconChartProportion","_ChartProportion","IconChartHistogram","_ChartHistogram","IconChartHistogramOne","_ChartHistogramOne","IconChartLineArea","_ChartLineArea","IconChartRing","_ChartRing","IconChartScatter","_ChartScatter","IconChartLine","_ChartLine","IconChartPie","_ChartPie","IconText","_Text","IconRotate","_Rotate","IconLeftTwo","_LeftTwo","IconRightTwo","_RightTwo","IconPlatte","_Platte","IconClose","_Close","IconCloseSmall","_CloseSmall","IconUndo","_Undo","IconTransform","_Transform","IconClick","_Click","IconTheme","_Theme","IconArrowCircleLeft","_ArrowCircleLeft","IconGraphicDesign","_GraphicDesign","IconLogout","_Logout","IconErase","_Erase","IconClear","_Clear","IconAlignTextTopOne","_AlignTextTopOne","IconAlignTextBottomOne","_AlignTextBottomOne","IconAlignTextMiddleOne","_AlignTextMiddleOne","IconPause","_Pause","IconVolumeMute","_VolumeMute","IconVolumeNotice","_VolumeNotice","IconVolumeSmall","_VolumeSmall","IconVideoTwo","_VideoTwo","IconFormula","_Formula","IconLinkOne","_LinkOne","IconFullScreenOne","_FullScreenOne","IconOffScreenOne","_OffScreenOne","IconPower","_Power","IconListView","_ListView","IconMagic","_Magic","IconHighLight","_HighLight","IconDownload","_Download","IconIndentLeft","_IndentLeft","IconIndentRight","_IndentRight","IconVerticalSpacingBetweenItems","_VerticalSpacingBetweenItems","IconCopy","_Copy","IconDelete","_Delete","IconSquare","_Square","IconRound","_Round","IconNeedle","_Needle","IconTextRotationNone","_TextRotationNone","IconTextRotationDown","_TextRotationDown","IconFormatBrush","_FormatBrush","IconPreviewOpen","_PreviewOpen","IconPreviewClose","_PreviewClose","IconStopwatchStart","_StopwatchStart","IconSearch","_Search","IconLeft","_Left","IconRight","_Right","IconMoveOne","_MoveOne","IconHamburgerButton","_HamburgerButton","IconAttention","_Attention","IconCheckOne","_CheckOne","IconCloseOne","_CloseOne","IconInfo","_Info","install","app","key","Object","component","_hoisted_1","_hoisted_2","class","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_defineComponent","__name","message","default","duration","closable","Boolean","emits","setup","__props","expose","__expose","emit","__emit","visible","ref","timer","startTimer","setTimeout","close","clearTimer","clearTimeout","onBeforeMount","onMounted","_ctx","_cache","_openBlock","_createBlock","_Transition","appear","mode","onBeforeLeave","$event","onAfterLeave","_withCtx","_createElementBlock","_createElementVNode","onMouseenter","onMouseleave","_unref","_createCommentVNode","_toDisplayString","onClick","_createVNode","_","__exports__","instances","wrap","seed","defaultOptions","options","className","cssText","vm","createVNode","MessageComponent","div","appContext","_context","onClose","onDestroy","childNodes","remove","render","firstElementChild","instance","exposed","success","info","warning","error","closeAll","parseText2Paragraphs","htmlText","replace","paragraphs","string","paragraph","getImageSize","src","img","onload","imgWidth","clientWidth","imgHeight","clientHeight","onerror","getImageDataURL","file","reader","FileReader","addEventListener","result","readAsDataURL","VIEWPORT_SIZE","ShapePathFormulasKeys","ElementTypes","SHAPE_PATH_FORMULAS","ROUND_RECT","editable","defaultValue","relative","getBaseSize","formula","CUT_RECT_DIAGONAL","CUT_RECT_SINGLE","CUT_RECT_SAMESIDE","ROUND_RECT_DIAGONAL","ROUND_RECT_SINGLE","ROUND_RECT_SAMESIDE","CUT_ROUND_RECT","MESSAGE","arrowWidth","arrowheight","ROUND_MESSAGE","L","lineWidth","RING_RECT","PLUS","TRIANGLE","vertex","PARALLELOGRAM_LEFT","point","PARALLELOGRAM_RIGHT","TRAPEZOID","BULLET","INDICATOR","SHAPE_LIST","pptxShapeType","pathFormula","special","outlined","CHART_TYPES","bar","horizontalBar","area","scatter","pie","ring","snapshotStore","addHistorySnapshot","debounce","trailing","redo","throttle","leading","undo","storeToRefs","useHistorySnapshot","callback","createImageElement","createChartElement","newElement","chartType","gridColor","labels","legends","series","horizontalBars","stackBars","showLine","lineSmooth","showArea","donut","createTableElement","row","col","rowCells","j","colspan","rowspan","DEFAULT_CELL_WIDTH","DEFAULT_CELL_HEIGHT","colWidths","rowHeader","rowFooter","colHeader","colFooter","cellMinHeight","createTextElement","position","vertical","editorRef","querySelector","focus","createShapeElement","supplement","keypoint","createLineElement","isBroken","isCurve","isCubic","createLatexElement","w","latex","strokeWidth","createVideoElement","autoplay","createAudioElement","loop","addElementsFromData","firstElement","lastSameElement","offset","oMinX","oMaxX","oMinY","oMaxY","nMinX","nMaxX","nMinY","nMaxY","values","addSlidesFromData","newSlides","target","isEmptySlide","computed","useCreateElement","useAddSlidesOrElements","createTextElementFromClipboard","pasteTextClipboardData","onlySlide","onlyElements","_selectedSlidesIndex","selectedSlides","selectedSlidesId","usePasteTextClipboardData","resetSlides","emptySlide","command","UP","DOWN","copySlide","pasteSlide","catch","err","createSlide","createSlideByTemplate","newSlide","copyAndPasteSlide","targetSlidesId","cutSlide","selectAllSlide","newSelectedSlidesIndex","sortSlides","oldIndex","_slides","_slide","lockElement","newElementList","lock","unlockElement","groupElementIdList","deleteAllElements","canCombine","firstGroupId","inSameGroup","every","combineElements","combineElementList","combineElementMaxLevel","_element","combineElementIdList","insertLevel","uncombineElements","hasElementInGroup","some","handleElementIdList","useDeleteElement","copyElement","cutElement","pasteElement","quickCopyElement","selectAllElement","unlockedElements","newActiveElementIdList","moveElement","step","move","LEFT","RIGHT","getCombineElementLevelRange","minLevel","maxLevel","moveUpElement","copyOfElementList","nextElement","movedElementList","nextCombineElementList","level","movedElement","moveDownElement","prevElement","prevCombineElementList","moveTopElement","moveBottomElement","unshift","orderElement","TOP","BOTTOM","enterFullscreen","docElm","documentElement","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","msRequestFullscreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","isFullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","webkitCurrentFullScreenElement","screenStore","enterScreening","enterScreeningFromStart","exitScreening","canvasScalePercentage","round","scaleCanvas","setCanvasScalePercentage","resetCanvas","keyboardStore","useSlideHandler","useCombineElement","useLockElement","useCopyAndPasteElement","useSelectAllElement","useMoveElement","useOrderElement","useScreening","useScaleCanvas","copy","cut","quickCopy","combine","uncombine","moveSlide","PAGEUP","PAGEDOWN","order","create","tabActiveElement","currentIndex","nextIndex","nextElementId","keydownListener","ctrlKey","shiftKey","altKey","metaKey","ctrlOrMetaKeyActive","toUpperCase","SPACE","P","preventDefault","F5","F","C","X","D","Z","Y","A","G","B","DELETE","BACKSPACE","ENTER","MINUS","EQUAL","DIGIT_0","TAB","keyupListener","window","onUnmounted","removeEventListener","pasteImageFile","imageFile","dataURL","pasteListener","clipboardDataItems","items","clipboardDataFirstItem","kind","getAsFile","getAsString","exporting","importSpecificFile","files","cover","readAsText","parseLineElement","isFlipV","isFlipH","borderWidth","borderType","borderColor","shapType","importPPTXFile","shapeList","json","slideFactor","fontsizeFactor","image","picBase64","imageSize","gradientType","gradientColor","colors","gradientRotate","rot","parseElements","textEl","fillColor","isVertical","blob","test","lineElement","shape","vAlignMap","vAlign","flipH","cellData","colSpan","rowSpan","xlabels","y","barDir","grouping","_el","readAsArrayBuffer","_Fragment","_renderList","hotkey","accept","inputRef","handleClick","handleChange","_renderSlot","$slots","ref_key","onChange","_withScopeId","n","_pushScopeId","_popScopeId","loading","tip","contentStyle","placement","contentVisible","_component_IconClose","_resolveComponent","_Teleport","onBeforeEnter","_withDirectives","_normalizeClass","_normalizeStyle","_vShow","disabled","placeholder","focused","handleInput","handleBlur","handleFocus","onInput","onFocus","onBlur","onKeydown","_withKeys","appendTo","center","triggerRef","contentRef","watch","hide","tippy","allowHTML","interactive","maxWidth","onShow","onShown","onHidden","_hoisted_7","_hoisted_8","_hoisted_9","href","_hoisted_10","useImport","mainMenuVisible","hotkeyDrawerVisible","editingTitle","titleInputRef","titleValue","startEditTitle","nextTick","handleUpdateTitle","goLink","url","open","_component_IconHamburgerButton","_component_IconPpt","_component_IconDown","_component_IconDownload","_component_IconGithub","_directive_tooltip","_resolveDirective","Popover","FileInput","PopoverMenuItem","_createTextVNode","Input","Drawer","HotkeyDoc","FullscreenSpin","injectKeySlideScale","Symbol","injectKeySlideId","injectKeyRadioGroupValue","removeAllRanges","getSelection","canvasRef","viewportLeft","viewportTop","initViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","setViewportPosition","newValue","oldValue","newViewportActualWidth","oldViewportActualWidth","newViewportActualHeight","oldViewportActualHeight","viewportStyles","resizeObserver","ResizeObserver","observe","unobserve","dragViewport","isMouseDown","startPageX","pageX","startPageY","pageY","originLeft","originTop","onmousemove","currentPageX","currentPageY","onmouseup","viewportRef","mouseSelectionVisible","mouseSelectionQuadrant","mouseSelection","updateMouseSelection","viewportRect","minSelectionRange","x","offsetWidth","offsetHeight","abs","quadrant","inRangeElementList","mouseSelectionLeft","mouseSelectionTop","mouseSelectionWidth","mouseSelectionHeight","isInclude","inRangeElement","inRangeElementIdList","groupElementList","groupElement","elementRef","handleDrop","dataTransfer","dataTransferItem","ondragleave","ondrop","ondragenter","ondragover","getAngleFromCoordinate","radian","atan2","angle","rotateElement","isTouchEvent","MouseEvent","changedTouches","elOriginRotate","elLeft","elTop","elWidth","elHeight","centerX","centerY","handleMousemove","mouseX","mouseY","sorptionRange","handleMouseup","ontouchmove","ontouchend","ELEMENT_TYPE_ZH","chart","video","audio","MIN_SIZE","getRotateElementPoints","taRadian","raRadian","halfWidth","halfHeight","leftTopPoint","topPoint","rightTopPoint","rightPoint","rightBottomPoint","bottomPoint","leftBottomPoint","leftPoint","getOppositePoint","direction","oppositeMap","RIGHT_BOTTOM","LEFT_BOTTOM","LEFT_TOP","RIGHT_TOP","ClipPathTypes","ClipPaths","alignmentLines","scaleElement","elOriginLeft","elOriginTop","elOriginWidth","elOriginHeight","originTableCellMinHeight","elRotate","rotateRadian","aspectRatio","minSize","getSizeWithinRange","getHeightWithinRange","minHeight","baseLeft","baseTop","horizontalLines","verticalLines","oppositePoint","edgeWidth","edgeHeight","isActiveGroupElement","right","topLine","bottomLine","leftLine","rightLine","edgeTopLine","edgeBottomLine","edgeHorizontalCenterLine","edgeLeftLine","edgeRightLine","edgeVerticalCenterLine","alignedAdsorption","currentX","currentY","_alignmentLines","isVerticalAdsorbed","isHorizontalAdsorbed","correctionVal","axis","revisedX","revisedY","currentPoints","currentOppositePoint","currentBaseLeft","currentBaseTop","moveX","moveY","scaleMultiElement","operateWidth","operateHeight","originElementList","currentMinX","currentMaxX","currentMinY","currentMaxY","currentOppositeWidth","currentOppositeHeight","widthScale","heightScale","originElement","originEl","selectElement","startMove","newActiveIdList","groupMembersId","uniq","dragElement","originActiveElementList","isMisoperation","horizontalCenterLine","verticalCenterLine","targetMinX","targetMaxX","targetMinY","targetMaxY","targetLeft","targetTop","targetCenterX","targetCenterY","dragLineElement","adsorptionPoints","startX","startY","endX","endY","midX","midY","c1X","c1Y","c2X","c2Y","START","adsorptionPoint","END","C1","C2","newEl","moveShapeKeypoint","shapePathData","baseSize","originPos","shapeElement","formatCreateSelection","selectionData","formatCreateSelectionForLine","_start","_end","insertElementFromCreateSelection","alignElementToCanvas","viewportWidth","viewportHeight","CENTER","VERTICAL","HORIZONTAL","shadowStyle","flipStyle","CLIPPATHS","rect","RECT","rect2","POLYGON","createPath","rect3","roundRect","ellipse","ELLIPSE","triangle","triangle2","triangle3","rhombus","pentagon","hexagon","heptagon","octagon","chevron","arrow","parallelogram","parallelogram2","trapezoid","trapezoid2","clip","clipShape","imgPosition","filters","outlineWidth","outlineStyle","outlineColor","strokeDashArray","useElementOutline","toRef","overflow","rx","ry","stroke","cx","cy","Function","d","elementInfo","useClipImage","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","clipPath","clipData","clipWrapperPositionStyle","isSettingClipRange","currentRange","getClipDataTransformInfo","bottomImgPositionStyle","topImgWrapperPosition","topImgWrapperPositionStyle","topImgPositionStyle","bottomWidth","bottomHeight","initClipPosition","handleClip","clipedEmitData","keyboardListener","updateRange","retPosition","moveClipRange","bottomPosition","originPositopn","scaleClipRange","minWidth","targetWidth","targetHeight","rotateClassName","cornerPoint","edgePoints","_directive_click_outside","draggable","alt","onMousedown","_withModifiers","contextmenus","isCliping","useElementShadow","useElementFlip","useFilter","handleSelectElement","stopPropagation","originClip","centerOffsetX","centerOffsetY","rotatedCenterX","rotatedCenterY","_props","_directive_contextmenu","transform","ImageClipHandler","onClip","onTouchstart","ImageOutline","onDragstart","colorMask","buildKeymap","bind","cmd","joinUp","joinDown","undoInputRule","selectParentNode","toggleMark","strong","chainCommands","splitListItem","list_item","newlineInCode","createParagraphNear","liftEmptyBlock","splitBlockKeepMarks","liftListItem","sinkListItem","blockQuoteRule","wrappingInputRule","orderedListRule","childCount","bulletListRule","codeRule","inputRegex","InputRule","insertText","linkRule","urlRegEx","buildInputRules","rules","smartQuotes","ellipsis","emDash","inputRules","isEmptyParagraph","placeholderPlugin","Plugin","decorations","decoration","Decoration","after","DecorationSet","buildPlugins","plugins","keymap","baseKeymap","dropCursor","gapCursor","history","listStyleType","group","parseDOM","tag","getAttrs","dom","hasAttribute","getAttribute","fontSize","toDOM","listItem","_listItem","indent","textIndent","textIndentLevel","floor","ignore","skip","excludes","forecolor","inline","inclusive","dataset","schemaNodes","schemaMarks","Schema","createDocument","htmlString","parser","DOMParser","parseFromString","fromSchema","initProsemirrorEditor","pluginOptions","EditorView","EditorState","EmitterEvents","emitter","mitt","setTextAlign","alignment","tasks","allowedNodeTypes","Set","has","task","setNodeMarkup","alignmentCommand","setSelection","setNodeIndentMarkup","delta","indentKey","minIndent","maxIndent","nodeAttrs","setIndent","TextSelection","AllSelection","indentCommand","docChanged","textIndentCommand","toggleList","listType","itemType","textStyleAttr","blockRange","parentList","validContent","wrapInList","setListStyle","styles","setNodeAttribute","autoFocus","editorViewRef","innerHTML","handleKeydown","textContent","hasFocus","replaceRangeWith","setProps","execCommand","lift","wrapIn","textStyle","removeMark","keep","newProps","handleDOMEvents","keydown","mouseup","syncAttrsToStore","RICH_TEXT_COMMAND","SYNC_RICH_TEXT_ATTRS_TO_STORE","off","canMove","realHeightCache","realWidthCache","updateTextElementHeight","entries","contentRect","realHeight","realWidth","updateContent","checkEmptyText","pureText","isHandleElement","textShadow","letterSpacing","fontFamily","writingMode","ElementOutline","ProsemirrorEditor","undefined","paragraphSpace","onUpdate","color1","color2","x1","y1","x2","y2","gradientTransform","execFormatPainter","defaultText","updateText","_text","prosemirrorEditorRef","startEdit","onMouseup","onDblclick","gradient","GradientDefs","pathMap","dot","rotateMap","markerUnits","orient","markerWidth","markerHeight","refX","refY","svgWidth","svgHeight","lineDashArray","LinePointMarker","legend","chartRef","slideScale","inject","chartHeight","getPieChartData","getOptions","propsOptopns","renderChart","BarChart","LineChart","PieChart","updateChart","themeColors","analogous","updateTheme","setProperty","updateGridColor","flexDirection","openDataEditor","OPEN_CHART_DATA_EDITOR","Chart","getTextStyle","textDecoration","fontWeight","fontStyle","formatText","hideCells","cell","subThemeColor","immediate","textareaRef","onpaste","excelData","onBeforeUnmount","contenteditable","isStartSelect","startCell","endCell","tableCells","get","set","newData","useSubThemeColor","colSizeList","totalWidth","reduce","a","b","removeSelectedCells","dragLinePosition","useHideCells","selectedCells","isEqual","activedCell","handleCellMousedown","rowIndex","colIndex","button","handleCellMouseenter","isHideCell","selectCol","maxRow","selectRow","maxCol","deleteRow","_tableCells","targetCells","hideCellsPos","deleteCol","insertRow","insertCol","fillTable","rowCount","defaultCell","newRows","mergeCells","splitCells","handleMousedownColHandler","originWidth","clearSelectedCellText","tabActiveCell","getNextCell","nextRow","nextCol","nextCell","textRef","insertExcelData","fillRowCount","fillColCount","getEffectiveTableCells","effectiveTableCells","_rowCells","checkCanDeleteRowOrCol","canDeleteRow","canDeleteCol","checkCanMergeOrSplit","isMultiSelected","targetCell","canMerge","canSplit","cellIndex","handler","divider","span","borderStyle","CustomTextarea","onUpdateValue","onInsertExcelData","updateTableElementHeight","updateTableCells","updateColWidths","widths","updateSelectedCells","EditableTable","onChangeColWidths","onChangeSelectedCells","openLatexEditor","OPEN_LATEX_EDITOR","videoRef","exec","canPlayType","Hls","isSupported","hls","loadSource","attachMedia","flvjs","flvPlayer","createPlayer","attachMediaElement","load","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","poster","secondToTime","second","isNaN","add0","num","hour","sec","getBoundingClientRectViewLeft","playBarWrap","volumeBarRef","volume","paused","currentTime","loaded","bezelTransition","playbackRate","playBarTimeVisible","playBarTime","playBarTimeLeft","ptime","dtime","playedBarWidth","loadedBarWidth","volumeBarWidth","speedMenuVisible","speedOptions","seek","play","pause","toggle","setVolume","muted","speed","rate","handleDurationchange","handleTimeupdate","handleEnded","handleProgress","buffered","loadError","handleError","thumbMove","clientX","thumbUp","handleMousedownPlayBar","volumeMove","volumeUp","handleMousedownVolumeBar","handleClickVolumeBar","handleMousemovePlayBar","px","tx","toggleVolume","toggleLoop","autoHideControllerTimer","hideController","autoHideController","played","useMSE","_component_IconPause","_component_IconPlayOne","_component_IconVolumeMute","_component_IconVolumeNotice","_component_IconVolumeSmall","onMousemove","playsinline","onDurationchange","onTimeupdate","onEnded","onProgress","onPlay","onPause","onError","onAnimationend","VideoPlayer","audioRef","handlePlayed","audioIconSize","audioPlayerPosition","audioWidth","audioHeight","AudioPlayer","elementIndex","isMultiSelect","openLinkDialog","currentElementComponent","elementTypeMap","IMAGE","ImageElement","TEXT","TextElement","SHAPE","ShapeElement","LINE","LineElement","CHART","ChartElement","TABLE","TableElement","LATEX","LatexElement","VIDEO","VideoElement","AUDIO","AudioElement","useAlignElementToCanvas","subText","zIndex","_resolveDynamicComponent","bgColor","colorList","mostReadable","includeFallbackColors","p","backgroundStyle","backgroundImage","backgroundRepeat","backgroundSize","useSlideBackgroundStyle","GridLines","sizeStyle","markerSize","marker","selectionRef","createSelection","absX","absY","isOpposite","endPageX","endPageY","defaultSize","lineData","_startX","_startY","_endX","_endY","onContextmenu","shapeCanvasRef","mousePosition","closed","getPoint","custom","lastPointX","lastPointY","updateMousePosition","firstPointX","firstPointY","getCreateData","xList","yList","formatedPoints","addPoint","ESC","resizeHandlers","textElementResizeHandlers","verticalTextElementResizeHandlers","borderLines","T","R","isWide","localActiveElementList","useCommonOperate","setRange","watchEffect","disableResize","BorderLine","ResizeHandler","script","__default__","inheritAttrs","handlerVisible","scaleWidth","scaleHeight","RotateHandler","keypointStyle","keypointPos","handlers","ctrlHandler","ctrlHandler1","ctrlHandler2","cannotRotate","setLink","linkRegExp","removeLink","margin","useLink","turnTarget","targetIndex","Divider","isSelected","isActive","currentOperateComponent","ImageElementOperate","TextElementOperate","ShapeElementOperate","LineElementOperate","TableElementOperate","CommonElementOperate","elementIndexListInAnimation","indexList","transformOrigin","LinkHandler","needScaleSize","zoom","StaticTable","BaseImageElement","BaseTextElement","BaseShapeElement","BaseLineElement","BaseChartElement","BaseTableElement","BaseLatexElement","BaseVideoElement","BaseAudioElement","provide","ThumbnailElement","tabs","card","tabsStyle","tabStyle","spaceAround","spaceBetween","tab","checked","first","showLabel","popoverVisible","selectRef","updateWidth","handleSelect","option","padding","boxShadow","address","slideOptions","selectedSlide","save","Tabs","marginBottom","Select","ThumbnailSlide","Button","closeButton","closeOnClickMask","closeOnEsc","modalRef","onEsc","onClickMask","tabindex","onKeyup","linkDialogVisible","setLocalElementList","useViewportSize","useDropImageOrText","useMouseSelection","useDragElement","useDragLineElement","useSelectElement","useScaleElement","useRotateElement","useMoveShapeKeypoint","handleClickBlankArea","handleDblClick","removeEditorAreaFocus","throttleScaleCanvas","throttleUpdateSlideIndex","handleMousewheelCanvas","deltaY","toggleRuler","useInsertFromCreateSelection","insertCustomShape","onWheel","ElementCreateSelection","onCreated","ShapeCreateCanvas","AlignmentLine","MultiSelectOperate","Operate","ViewportBackground","MouseSelection","EditableElement","Ruler","Modal","LinkDialog","selectShape","ShapeItemThumbnail","LINE_LIST","selectLine","chartList","selectChart","_component_IconChartLine","_component_IconChartHistogram","_component_IconChartPie","_component_IconChartHistogramOne","_component_IconChartLineArea","_component_IconChartRing","_component_IconChartScatter","Infinity","number","_vModelText","customRow","customCol","isCustom","handleClickTable","insertCustomTable","NumberInput","videoSrc","audioSrc","insertVideo","insertAudio","hfmathConfig","SUB_SUP_SCALE","FORMULA_LIST","SYMBOL_LIST","box","pathd","eq","hfmath","boxW","boxH","svg","SCALE_X","SCALE_Y","rows","resizable","formulaList","symbolTabs","textAreaRef","selectedSymbolKey","symbolPool","selectedSymbol","insertSymbol","TextArea","FormulaContent","SymbolContent","canvasScalePresetList","canvasScaleVisible","applyCanvasPresetScale","insertImageElement","shapePoolVisible","linePoolVisible","chartPoolVisible","tableGeneratorVisible","mediaInputVisible","latexEditorVisible","textTypeSelectVisible","drawText","drawShape","drawLine","toggleSelectPanel","toggleSraechPanel","_component_IconBack","_component_IconNext","_component_IconMoveOne","_component_IconSearch","_component_IconFontSize","_component_IconTextRotationNone","_component_IconTextRotationDown","_component_IconPicture","_component_IconGraphicDesign","_component_IconConnection","_component_IconChartProportion","_component_IconInsertTable","_component_IconFormula","_component_IconVideoTwo","_component_IconMinus","_component_IconPlus","_component_IconFullScreen","ShapePool","onSelect","LinePool","ChartPool","TableGenerator","onInsert","MediaInput","onInsertVideo","onInsertAudio","LaTeXEditor","slidesLoadLimit","loadSlide","selectSlideTemplate","useLoadSlides","presetLayoutPopoverVisible","thumbnailsRef","activeThumbnailRef","$el","scrollIntoView","behavior","changeSlideIndex","handleClickSlideThumbnail","minIndex","handleDragEnd","eventData","contextmenusThumbnails","contextmenusThumbnailItem","LayoutPool","Draggable","modelValue","scroll","scrollSensitivity","onEnd","itemKey","toggleTextFormatPainter","sliderRef","getNewValue","diff","fround","targetNumber","accuracy","NP","tooltipValue","tooltipRangeStartValue","tooltipRangeEndValue","getPercentage","progress","_percentage","remainder","updateRangeEnd","updatePercentage","oldValueArr","newValueArr","updatePercentageEnd","handleMousedown","deep","updateOpacity","Slider","_component_IconPlatte","white","grey","checkboardCache","renderCheckboard","fillRect","translate","toDataURL","getCheckboard","checkboard","bgStyle","rgbaStr","r","g","alphaRef","containerWidth","xOffset","pageXOffset","unbindEventListeners","handleMouseDown","Checkboard","hue","oldHue","pullDirection","hsla","toHsl","pointerLeft","s","hueRef","percent","l","hsva","toHsv","pointerTop","emitChangeEvent","param","saturationRef","containerHeight","yOffset","pageYOffset","clamp","saturation","bright","val","_hex","toHex8String","toHexString","isValid","toRgb","RECENT_COLORS","presetColorConfig","startColor","endColor","_startColor","_endColor","rStep","gStep","bStep","gradientColorArr","getPresetColors","presetColors","standardColors","recentColors","rgbaString","currentColor","selectPresetColor","colorString","updateRecentColorsCache","_color","maxLength","recentColorsCache","setItem","changeColor","openEyeDropper","isSupportedEyeDropper","browserEyeDropper","customEyeDropper","eyeDropper","EyeDropper","tColor","sRGBHex","targetRef","maskRef","colorBlockRef","tagName","classList","contains","toCanvas","fontEmbedCSS","pixelRatio","toFixed","handleMouseleave","_component_IconNeedle","Saturation","onColorChange","Hue","Alpha","EditableInput","c","fixed","hasOutline","updateOutline","outlineProps","toggleOutline","_outline","Switch","ColorPicker","ColorButton","hasShadow","updateShadow","shadowProps","_shadow","toggleShadow","passive","_value","updateValue","ButtonGroup","_hoisted_23","_hoisted_24","_hoisted_25","presetStyles","useTextFormatPainter","bulletListPanelVisible","orderedListPanelVisible","indentLeftPanelVisible","indentRightPanelVisible","bulletListStyleTypeOption","orderedListStyleTypeOption","fontSizeOptions","lineHeightOptions","wordSpaceOptions","paragraphSpaceOptions","updateLineHeight","updateParagraphSpace","updateWordSpace","updateFill","emitRichTextCommand","emitBatchRichTextCommand","linkPopoverVisible","openLinkPopover","updateLink","_component_IconAddText","_component_IconText","_component_IconHighLight","_component_IconTextBold","_component_IconTextItalic","_component_IconTextUnderline","_component_IconStrikethrough","_component_IconCode","_component_IconQuote","_component_IconFormat","_component_IconFormatBrush","_component_IconLinkOne","_component_IconAlignTextLeft","_component_IconAlignTextCenter","_component_IconAlignTextRight","_component_IconAlignTextBoth","_component_IconList","_component_IconOrderedList","_component_IconIndentLeft","_component_IconIndentRight","_component_IconRowHeight","_component_IconVerticalSpacingBetweenItems","_component_IconFullwidth","SelectGroup","icon","TextColorButton","CheckboxButton","RadioGroup","RadioButton","ElementShadow","ElementOpacity","updateFlip","flipProps","_component_IconFlipVertically","_component_IconFlipHorizontally","defaultFilters","unit","filterOptions","hasFilters","filterItem","updateFilter","_handleElement","originFilters","toggleFilters","defaultColorMask","hasColorMask","toggleColorMask","updateColorMask","shapeClipPathOptions","ratioClipOptions","ratio","handleImageElement","clipPanelVisible","clipImage","getImageElementDataBeforeClip","imgLeft","imgTop","originClipRange","originHeight","presetImageClip","imageRatio","distance","replaceImage","resetImage","setBackgroundImage","_component_IconTailoring","_component_IconTransform","_component_IconUndo","_component_IconTheme","ElementFlip","typeItem","ElementColorMask","ElementFilter","toggleShapeFormatPainter","handleShapeElement","fillType","useShapeFormatPainter","updateFillType","updateGradient","gradientProps","_gradient","changeShape","updateTextAlign","_component_IconAlignTextTopOne","_component_IconAlignTextMiddleOne","_component_IconAlignTextBottomOne","handleLineElement","updateLine","CELL_WIDTH","CELL_HEIGHT","selectedRange","tempRangeSize","focusCell","rangeLines","resizablePointStyle","initData","_data","moveNextRow","getTableData","labelsItem","labelInputRef","legendsItem","seriesItem","valueInputRef","clear","handlePaste","closeEditor","changeSelectRange","autocomplete","onPaste","presetChartThemes","handleChartElement","chartDataEditorVisible","presetThemesVisible","presetThemeColorHoverIndex","_lineSmooth","_showLine","_showArea","_horizontalBars","_donut","_stackBars","updateData","updateOptions","optionProps","newOptions","addThemeColor","applyPresetTheme","deleteThemeColor","updateLegend","_component_IconEdit","_component_IconCloseSmall","Checkbox","itemIndex","ChartDataEditor","onSave","textAttrs","hasTheme","minRowCount","minColCount","updateTextAttrState","selectedCell","updateTextAttrs","textAttrProp","themeProp","_theme","toggleTheme","setTableRow","newTableCells","setTableCol","newColSizeList","_component_IconFill","handleLatexElement","updateLatex","updateLatexData","handleVideoElement","updateVideo","setVideoPoster","handleAudioElement","updateAudio","updateFontStyle","panelMap","TextStylePanel","ImageStylePanel","ShapeStylePanel","LineStylePanel","ChartStylePanel","TableStylePanel","LatexStylePanel","VideoStylePanel","AudioStylePanel","currentPanelComponent","MultiStylePanel","activeGroupElement","isHorizontalText","isVerticalText","updateLeft","updateTop","updateShapePathData","updateHeight","updateRotate","updateFixedRatio","updateRotate45","_rotate","_component_IconSendToBack","_component_IconBringToFrontOne","_component_IconBringToFront","_component_IconSentToBack","_component_IconAlignLeft","_component_IconAlignVertically","_component_IconAlignRight","_component_IconAlignTop","_component_IconAlignHorizontally","_component_IconAlignBottom","_component_IconLock","_component_IconUnlock","_component_IconRotate","ANIMATION_DEFAULT_DURATION","ANIMATION_DEFAULT_TRIGGER","ANIMATION_CLASS_PREFIX","ENTER_ANIMATIONS","EXIT_ANIMATIONS","ATTENTION_ANIMATIONS","SLIDE_ANIMATIONS","animationEffects","effect","animationTypes","activeTab","animateIn","animationPoolVisible","hoverPreviewAnimation","animationSequence","elType","animationEffect","handleElementAnimation","deleteAnimation","runAnimation","elRef","animationName","handleAnimationEnd","removeProperty","once","runAllAnimation","updateElementAnimationDuration","updateElementAnimationTrigger","updateElementAnimation","handleAnimationId","animationItem","addAnimation","popoverMaskHide","handlePopoverVisibleChange","openAnimationPool","in","out","attention","_component_IconEffects","_component_IconClick","handle","PRESET_THEMES","getSlideAllColors","getAlpha","createSlideThemeColorMap","newColors","oldColors","themeColorMap","otherColors","setSlideTheme","colorMap","applyPresetThemeToSingleSlide","applyPresetThemeToAllSlides","applyThemeToAllSlides","applyAll","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","moreThemeConfigsVisible","useSlideTheme","updateBackgroundType","newBackground","updateBackground","uploadBackgroundImage","applyBackgroundAllSlide","updateViewportRatio","_component_IconRight","currentTurningMode","turningMode","updateTurningMode","applyAllSlide","alignActiveElement","groupElementRangeMap","activeElement","groupElements","horizontalCenter","verticalCenter","displayItemCount","count","groupIdList","uniformHorizontalDisplay","copyOfActiveElementList","singleElemetList","groupList","groupEl","formatedGroupList","groupItem","list","sort","itemA","itemB","sortedElementData","firstItem","lastPos","lastWidth","currentPos","currentWidth","sortedItem","uniformVerticalDisplay","totalHeight","lastHeight","currentHeight","useAlignActiveElement","useUniformDisplayElement","alignElement","_component_IconGroup","_component_IconUngroup","selectSymbol","elementTabs","EL_STYLE","SYMBOL","EL_POSITION","EL_ANIMATION","slideTabs","SLIDE_ANIMATION","multiSelectTabs","MULTI_POSITION","currentTabs","currentTabsValue","ElementStylePanel","ElementPositionPanel","ElementAnimationPanel","SlideDesignPanel","SlideAnimationPanel","MultiPositionPanel","SymbolPanel","menuInstance","menuRef","hideMenuInstance","updateTextContent","anchorNode","focusNode","isCollapsed","getRangeAt","getReferenceClientRect","mousedown","input","hideOnClick","remark","resize","newHeight","Editor","childlessTags","closingTags","closingTagAncestorBreakers","li","dt","dd","tbody","thead","tfoot","td","voidTags","jumpPosition","movePositopn","findTextEnd","isEnd","textEnd","char","charAt","lexText","tokens","lexComment","contentEnd","commentEnd","lexTagName","isTagChar","lexTagAttributes","quote","wordBegin","words","isQuoteEnd","isTagEnd","isWordEnd","isQuoteStart","word","isNotPair","secondWord","startsWith","newWord","thirdWord","endsWith","lexSkipTag","safeTagName","nextTag","tagState","lexTag","textStart","secondChar","tagStartClose","firstChar","tagEndClose","lex","isComment","safeTag","lexer","root","stack","hasTerminalParent","tagParents","parentTagName","rewindStack","newLength","token","tagToken","shouldRewind","isClosingTag","shouldRewindToAutoClose","previousIndex","attributes","tagEndToken","_token","elementNode","hasChildren","innerState","splitHead","sep","idx","unquote","car","formatAttributes","attribute","parts","trim","format","toAST","typeMap","toPoints","pathData","SVGPathData","commands","lastPoint","cubicBezierPoints","arcToBezier","py","rX","rY","xAxisRotation","xRot","largeArcFlag","lArcFlag","sweepFlag","cbPoint","characters","PREFIX","utf8Encode","utftext","charCodeAt","String","fromCharCode","encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","svg2Base64","XMLS","XMLSerializer","serializeToString","INCH_PX_RATIO","PT_PX_RATIO","exportImage","domRef","quality","ignoreWebfont","toImage","toPng","toJpeg","foreignObjectSpans","querySelectorAll","spanRef","removeAttribute","config","dataUrl","saveAs","exportSpecificFile","Blob","exportJSON","formatColor","alpha","formatHTML","html","ast","bulletFlag","slices","obj","baseStyleObj","isBlockTag","lastSlice","breakLine","styleObj","styleAttr","styleArr","styleItem","_key","dataIndentAttr","highlight","strike","italic","fontFace","hyperlink","bullet","paraSpaceBefore","indentLevel","formatPoints","moveTo","getShadowOption","getOutlineOption","transparency","dashType","getLinkOption","exportPPTX","masterOverwrite","ignoreMedia","pptx","pptxgen","layout","defineLayout","bgAlpha","defineSlideMaster","pptxSlide","mix","addNotes","textProps","valign","lineSpacingMultiple","autoFit","charSpacing","vert","addText","linkOption","rounding","originW","originH","sizing","addImage","svgRef","base64SVG","addShape","beginArrowType","endArrowType","chartData","chartColors","plotArea","showLegend","legendPos","legendColor","legendFontSize","ChartType","lineSize","doughnut","holeSize","addChart","hiddenCells","rowData","tableData","subThemeColors","_row","cellOptions","colW","border","pt","addTable","extMatch","extn","ext","videoExts","audioExts","addMedia","writeFile","fileName","imageThumbnailsRef","rangeType","renderSlides","useExport","expImage","createIframe","iframe","writeContent","printNode","docType","styleSheets","styleSheet","cssRules","rule","head","write","print","iframeContentWindow","contentWindow","contentDocument","handleLoadIframe","handleAfterprint","pdfThumbnailsRef","expPDF","pageSize","currentDialogComponent","dialogMap","ExportImage","ExportJSON","ExportPDF","ExportPPTX","ExportSpecificFile","moveable","moveablePanelRef","windowWidth","_elements","lastItem","selectGroupEl","idList","selectEl","hideElement","showAll","currentSlideElIdList","needHiddenElementIdList","hideAll","editingElId","saveElementName","enterEdit","_component_IconUp","_component_IconPreviewClose","_component_IconPreviewOpen","MoveablePanel","searchWord","replaceWord","searchResults","searchIndex","modifiers","search","textList","matchRegex","RegExp","textRegex","rets","highlightCurrentSlide","clearMarks","getTextNodeList","nodeList","textNodes","shift","TEXT_NODE","wholeText","getTextInfoList","startIdx","endIdx","getMatchList","keyword","reg","matchList","matchStart","matchEnd","textIdx","textNode","nodeMatchStartIdx","nodeMatchLength","splitText","innerText","substring","parentNode","replaceChild","highlightTableText","markNodes","createTextNode","lastTarget","setActiveMark","searchNext","searchPrev","targetElement","replaced","targetSlide","lastMarkIndex","markIndex","reset","toggleModifiers","useSearch","searchInpRef","_component_IconLeft","_isRef","onEnter","suffix","closeExportDialog","remarkHeight","useGlobalHotkey","usePasteEvent","EditorHeader","Thumbnails","CanvasTool","Canvas","Remark","Toolbar","SelectPanel","SearchPanel","onClosed","ExportDialog","animationIndex","inAnimation","playedSlidesMinIndex","endAnimationCount","classname","revokeAnimation","execPrev","autoPlayTimer","closeAutoPlay","clearInterval","loopPlay","setLoopPlay","throttleMassage","turnSlideToIndex","execNext","autoPlayInterval","autoPlay","setInterval","setAutoPlayInterval","interval","mousewheelListener","touchInfo","touchStartListener","touchEndListener","turnPrevSlide","turnNextSlide","turnSlideToId","wrapRef","slideWidth","slideHeight","setSlideContentSize","slideWrapRef","winWidth","winHeight","fullscreenState","escExit","handleFullscreenChange","manualExitFullscreen","inCurrentSlide","audioPlayerRef","ScreenVideoElement","ScreenAudioElement","needWaitAnimation","elementIndexInAnimation","firstAnimation","openLink","visibility","ScreenElement","slidesWithTurningMode","turningModeKeys","random","ScreenSlide","turnSlide","_component_IconArrowCircleLeft","model","blackboard","penSize","markSize","rubberSize","writingBoardRef","lastTime","lastLineWidth","mouse","mouseInCanvas","updateCanvasSize","initCanvas","lineCap","lineJoin","updateCtx","globalCompositeOperation","globalAlpha","draw","posX","posY","lastPosX","lastPosY","strokeStyle","beginPath","lineTo","closePath","erase","sinRadius","cosRadius","rectPoint1","rectPoint2","rectPoint3","rectPoint4","arc","restore","getDistance","getLineWidth","t","maxV","minV","handleMove","getMouseOffsetPosition","event","canvasRect","clearCanvas","setImageDataURL","imageDataURL","Image","drawImage","_component_IconWrite","onTouchmove","onTouchend","writingBoardColors","writingBoardColor","writingBoardModel","sizePopoverType","changeModel","closeWritingBoard","where","equals","ret","currentImg","hanldeWritingEnd","_component_IconErase","_component_IconClear","WritingBoard","inTiming","isCountdown","minute","inputEditable","toggleCountdown","changeTime","isNumber","maxlength","changeViewMode","useExecPlay","useSlideSize","useFullscreen","rightToolsVisible","writingBoardToolVisible","timerlVisible","slideThumbnailModelVisible","laserPen","_component_IconLeftTwo","_component_IconRightTwo","_component_IconMagic","_component_IconStopwatchStart","_component_IconListView","_component_IconOffScreenOne","_component_IconFullScreenOne","_component_IconPower","ScreenSlideList","SlideThumbnails","WritingBoardTool","CountdownTimer","slideListWrapRef","remarkFontSize","currentSlideRemark","handleMousewheelThumbnails","scrollBy","setRemarkFontSize","offsetLeft","scrollTo","viewMode","BaseView","PresenterView","_resizeHandlers","delayOnTouchOnly","delay","insertTextElement","insertShapeElement","square","handleInputMark","_component_IconCopy","_component_IconDelete","_component_IconSquare","_component_IconRound","MobileThumbnails","updateFontColor","changeMode","_component_IconLogout","contentWidth","contentheight","contentRatio","Header","MobileOperate","MobileEditableElement","SlideToolbar","ElementToolbar","toolVisible","playerSize","slideSize","playerRatio","mobileRef","screenWidth","_component_IconFullScreenPlay","_mode","currentComponent","componentMap","MobileEditor","MobilePlayer","MobilePreview","_isPC","onbeforeunload","discardedDB","discardedDBList","newDiscardedDB","Screen","Mobile","register","ready","console","log","registered","cached","updatefound","updated","offline","menus","handleClickMenuItem","_component_menu_content","menu","removeContextmenu","MENU_WIDTH","MENU_HEIGHT","DIVIDER_HEIGHT","PADDING","menuCount","dividerCount","menuWidth","menuHeight","screenHeight","MenuContent","CTX_CONTEXTMENU_HANDLER","contextmenuListener","binding","ContextmenuComponent","ContextmenuDirective","mounted","unmounted","CTX_CLICK_OUTSIDE_HANDLER","clickListener","composedPath","isClickOutside","ClickOutsideDirective","TOOLTIP_INSTANCE","TooltipDirective","setContent","directive","Contextmenu","ClickOutside","Tooltip","createApp","App","use","Icon","Directive","createPinia","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","deferred","O","chunkIds","fn","priority","notFulfilled","fulfilled","getter","__esModule","definition","o","defineProperty","enumerable","globalThis","prop","prototype","hasOwnProperty","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/app.9b709042.js","mappings":"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AAK,KACfC,KAAM,qGAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,wDACNmtB,cAAe,OAEjB,CACEptB,QAAS,CAAC,IAAK,KACfC,KAAM,yDAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,8CACNmtB,cAAe,SAEjB,CACEptB,QAAS,CAAC,IAAK,KACfC,KAAM,sDACNmtB,cAAe,YAEjB,CACEptB,QAAS,CAAC,IAAK,KACfC,KAAM,yCAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uDACNmtB,cAAe,YAEjB,CACEptB,QAAS,CAAC,IAAK,KACfC,KAAM,wDACNmtB,cAAe,WAEjB,CACEptB,QAAS,CAAC,IAAK,KACfC,KAAM,iEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,+EACNmtB,cAAe,WAEjB,CACEptB,QAAS,CAAC,IAAK,KACfC,KAAM,oHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,0DAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,sEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,uEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,+CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,6CAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,oHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,4DACNotB,YAAalC,GAAsBoB,GAErC,CACEvsB,QAAS,CAAC,IAAK,KACfC,KAAM,uEACNotB,YAAalC,GAAsBsB,WAErC,CACEzsB,QAAS,CAAC,IAAK,KACfC,KAAM,iEAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,mHACNotB,YAAalC,GAAsBuB,MAErC,CACE1sB,QAAS,CAAC,IAAK,KACfC,KAAM,sHAER,CACED,QAAS,CAAC,IAAK,KACfC,KAAM,gEACNotB,YAAalC,GAAsBgB,SAErC,CACEnsB,QAAS,CAAC,IAAK,KACfC,KA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","sources":["webpack://pptist/./src/types/toolbar.ts","webpack://pptist/./src/utils/prosemirror/utils.ts","webpack://pptist/./src/configs/font.ts","webpack://pptist/./src/utils/font.ts","webpack://pptist/./src/mocks/slides.ts","webpack://pptist/./src/mocks/theme.ts","webpack://pptist/./src/mocks/layout.ts","webpack://pptist/./src/store/slides.ts","webpack://pptist/./src/store/main.ts","webpack://pptist/./src/configs/storage.ts","webpack://pptist/./src/utils/database.ts","webpack://pptist/./src/store/snapshot.ts","webpack://pptist/./src/store/keyboard.ts","webpack://pptist/./src/store/screen.ts","webpack://pptist/./src/utils/common.ts","webpack://pptist/./src/types/edit.ts","webpack://pptist/./src/configs/hotkey.ts","webpack://pptist/./src/utils/crypto.ts","webpack://pptist/./src/utils/clipboard.ts","webpack://pptist/./src/utils/element.ts","webpack://pptist/./src/plugins/icon.ts","webpack://pptist/./src/components/Message.vue?ef62","webpack://pptist/./src/components/Message.vue","webpack://pptist/./src/components/Message.vue?ede3","webpack://pptist/./src/utils/message.ts","webpack://pptist/./src/utils/textParser.ts","webpack://pptist/./src/utils/image.ts","webpack://pptist/./src/configs/canvas.ts","webpack://pptist/./src/types/slides.ts","webpack://pptist/./src/configs/shapes.ts","webpack://pptist/./src/configs/chartTypes.ts","webpack://pptist/./src/hooks/useHistorySnapshot.ts","webpack://pptist/./src/hooks/useCreateElement.ts","webpack://pptist/./src/hooks/useAddSlidesOrElements.ts","webpack://pptist/./src/hooks/usePasteTextClipboardData.ts","webpack://pptist/./src/hooks/useSlideHandler.ts","webpack://pptist/./src/hooks/useLockElement.ts","webpack://pptist/./src/hooks/useDeleteElement.ts","webpack://pptist/./src/hooks/useCombineElement.ts","webpack://pptist/./src/hooks/useCopyAndPasteElement.ts","webpack://pptist/./src/hooks/useSelectAllElement.ts","webpack://pptist/./src/hooks/useMoveElement.ts","webpack://pptist/./src/hooks/useOrderElement.ts","webpack://pptist/./src/utils/fullscreen.ts","webpack://pptist/./src/hooks/useScreening.ts","webpack://pptist/./src/hooks/useScaleCanvas.ts","webpack://pptist/./src/hooks/useGlobalHotkey.ts","webpack://pptist/./src/hooks/usePasteEvent.ts","webpack://pptist/./src/hooks/useImport.ts","webpack://pptist/./src/views/Editor/EditorHeader/HotkeyDoc.vue?9352","webpack://pptist/./src/views/Editor/EditorHeader/HotkeyDoc.vue","webpack://pptist/./src/components/FileInput.vue?44c6","webpack://pptist/./src/components/FileInput.vue","webpack://pptist/./src/components/FileInput.vue?ecf8","webpack://pptist/./src/components/FullscreenSpin.vue?a88e","webpack://pptist/./src/components/FullscreenSpin.vue","webpack://pptist/./src/components/Drawer.vue?3e76","webpack://pptist/./src/components/Drawer.vue","webpack://pptist/./src/components/Drawer.vue?b302","webpack://pptist/./src/components/Input.vue?1d7c","webpack://pptist/./src/components/Input.vue","webpack://pptist/./src/components/Input.vue?f3d7","webpack://pptist/./src/components/Popover.vue?e08c","webpack://pptist/./src/components/Popover.vue","webpack://pptist/./src/components/Popover.vue?db5c","webpack://pptist/./src/components/PopoverMenuItem.vue?506c","webpack://pptist/./src/components/PopoverMenuItem.vue","webpack://pptist/./src/components/PopoverMenuItem.vue?6571","webpack://pptist/./src/views/Editor/EditorHeader/index.vue?e4c2","webpack://pptist/./src/views/Editor/EditorHeader/index.vue","webpack://pptist/./src/views/Editor/EditorHeader/index.vue?fa74","webpack://pptist/./src/types/injectKey.ts","webpack://pptist/./src/utils/selection.ts","webpack://pptist/./src/views/Editor/Canvas/hooks/useViewportSize.ts","webpack://pptist/./src/views/Editor/Canvas/hooks/useMouseSelection.ts","webpack://pptist/./src/views/Editor/Canvas/hooks/useDropImageOrText.ts","webpack://pptist/./src/views/Editor/Canvas/hooks/useRotateElement.ts","webpack://pptist/./src/configs/element.ts","webpack://pptist/./src/views/Editor/Canvas/hooks/useScaleElement.ts","webpack://pptist/./src/configs/imageClip.ts","webpack://pptist/./src/views/Editor/Canvas/hooks/useSelectElement.ts","webpack://pptist/./src/views/Editor/Canvas/hooks/useDragElement.ts","webpack://pptist/./src/views/Editor/Canvas/hooks/useDragLineElement.ts","webpack://pptist/./src/views/Editor/Canvas/hooks/useMoveShapeKeypoint.ts","webpack://pptist/./src/views/Editor/Canvas/hooks/useInsertFromCreateSelection.ts","webpack://pptist/./src/hooks/useAlignElementToCanvas.ts","webpack://pptist/./src/views/components/element/hooks/useElementShadow.ts","webpack://pptist/./src/views/components/element/hooks/useElementFlip.ts","webpack://pptist/./src/views/components/element/ImageElement/useClipImage.ts","webpack://pptist/./src/views/components/element/ImageElement/useFilter.ts","webpack://pptist/./src/views/components/element/hooks/useElementOutline.ts","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?9316","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?898e","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?8e85","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?b228","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?ae32","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?73ec","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/index.vue?944b","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/index.vue","webpack://pptist/./src/views/components/element/ImageElement/ImageOutline/index.vue?cf37","webpack://pptist/./src/views/components/element/ImageElement/ImageClipHandler.vue?93a9","webpack://pptist/./src/views/components/element/ImageElement/ImageClipHandler.vue","webpack://pptist/./src/views/components/element/ImageElement/ImageClipHandler.vue?7bf9","webpack://pptist/./src/views/components/element/ImageElement/index.vue?0fe8","webpack://pptist/./src/views/components/element/ImageElement/index.vue","webpack://pptist/./src/views/components/element/ImageElement/index.vue?8245","webpack://pptist/./src/views/components/element/ElementOutline.vue?2353","webpack://pptist/./src/views/components/element/ElementOutline.vue","webpack://pptist/./src/views/components/element/ElementOutline.vue?06a1","webpack://pptist/./src/utils/prosemirror/plugins/keymap.ts","webpack://pptist/./src/utils/prosemirror/plugins/inputrules.ts","webpack://pptist/./src/utils/prosemirror/plugins/placeholder.ts","webpack://pptist/./src/utils/prosemirror/plugins/index.ts","webpack://pptist/./src/utils/prosemirror/schema/nodes.ts","webpack://pptist/./src/utils/prosemirror/schema/marks.ts","webpack://pptist/./src/utils/prosemirror/schema/index.ts","webpack://pptist/./src/utils/prosemirror/index.ts","webpack://pptist/./src/utils/emitter.ts","webpack://pptist/./src/utils/prosemirror/commands/setTextAlign.ts","webpack://pptist/./src/utils/prosemirror/commands/setTextIndent.ts","webpack://pptist/./src/utils/prosemirror/commands/toggleList.ts","webpack://pptist/./src/utils/prosemirror/commands/setListStyle.ts","webpack://pptist/./src/views/components/element/ProsemirrorEditor.vue?29d9","webpack://pptist/./src/views/components/element/ProsemirrorEditor.vue","webpack://pptist/./src/views/components/element/ProsemirrorEditor.vue?6a7a","webpack://pptist/./src/views/components/element/TextElement/index.vue?caca","webpack://pptist/./src/views/components/element/TextElement/index.vue","webpack://pptist/./src/views/components/element/TextElement/index.vue?3c37","webpack://pptist/./src/views/components/element/ShapeElement/GradientDefs.vue?8b18","webpack://pptist/./src/views/components/element/ShapeElement/GradientDefs.vue","webpack://pptist/./src/views/components/element/ShapeElement/index.vue?a610","webpack://pptist/./src/views/components/element/ShapeElement/index.vue","webpack://pptist/./src/views/components/element/ShapeElement/index.vue?2a5f","webpack://pptist/./src/views/components/element/LineElement/LinePointMarker.vue?0b38","webpack://pptist/./src/views/components/element/LineElement/LinePointMarker.vue","webpack://pptist/./src/views/components/element/LineElement/LinePointMarker.vue?9a43","webpack://pptist/./src/views/components/element/LineElement/index.vue?fc53","webpack://pptist/./src/views/components/element/LineElement/index.vue","webpack://pptist/./src/views/components/element/LineElement/index.vue?1b65","webpack://pptist/./src/views/components/element/ChartElement/Chart.vue?57b8","webpack://pptist/./src/views/components/element/ChartElement/Chart.vue","webpack://pptist/./src/views/components/element/ChartElement/Chart.vue?889a","webpack://pptist/./src/views/components/element/ChartElement/index.vue?1b58","webpack://pptist/./src/views/components/element/ChartElement/index.vue","webpack://pptist/./src/views/components/element/ChartElement/index.vue?eaa8","webpack://pptist/./src/views/components/element/TableElement/utils.ts","webpack://pptist/./src/views/components/element/TableElement/useHideCells.ts","webpack://pptist/./src/views/components/element/TableElement/useSubThemeColor.ts","webpack://pptist/./src/views/components/element/TableElement/CustomTextarea.vue?b9f5","webpack://pptist/./src/views/components/element/TableElement/CustomTextarea.vue","webpack://pptist/./src/views/components/element/TableElement/CustomTextarea.vue?7fe8","webpack://pptist/./src/views/components/element/TableElement/EditableTable.vue?9b61","webpack://pptist/./src/views/components/element/TableElement/EditableTable.vue","webpack://pptist/./src/views/components/element/TableElement/EditableTable.vue?e829","webpack://pptist/./src/views/components/element/TableElement/index.vue?cc5f","webpack://pptist/./src/views/components/element/TableElement/index.vue","webpack://pptist/./src/views/components/element/TableElement/index.vue?57c9","webpack://pptist/./src/views/components/element/LatexElement/index.vue?d3dd","webpack://pptist/./src/views/components/element/LatexElement/index.vue","webpack://pptist/./src/views/components/element/LatexElement/index.vue?3ad1","webpack://pptist/./src/views/components/element/VideoElement/VideoPlayer/useMSE.ts","webpack://pptist/./src/views/components/element/VideoElement/VideoPlayer/index.vue?eeaa","webpack://pptist/./src/views/components/element/VideoElement/VideoPlayer/index.vue","webpack://pptist/./src/views/components/element/VideoElement/VideoPlayer/index.vue?e447","webpack://pptist/./src/views/components/element/VideoElement/index.vue?fc73","webpack://pptist/./src/views/components/element/VideoElement/index.vue","webpack://pptist/./src/views/components/element/VideoElement/index.vue?f4d8","webpack://pptist/./src/views/components/element/AudioElement/AudioPlayer.vue?ea2d","webpack://pptist/./src/views/components/element/AudioElement/AudioPlayer.vue","webpack://pptist/./src/views/components/element/AudioElement/AudioPlayer.vue?db06","webpack://pptist/./src/views/components/element/AudioElement/index.vue?91e9","webpack://pptist/./src/views/components/element/AudioElement/index.vue","webpack://pptist/./src/views/components/element/AudioElement/index.vue?847e","webpack://pptist/./src/views/Editor/Canvas/EditableElement.vue?8f8a","webpack://pptist/./src/views/Editor/Canvas/EditableElement.vue","webpack://pptist/./src/views/Editor/Canvas/EditableElement.vue?9913","webpack://pptist/./src/views/Editor/Canvas/MouseSelection.vue?95c7","webpack://pptist/./src/views/Editor/Canvas/MouseSelection.vue","webpack://pptist/./src/views/Editor/Canvas/GridLines.vue?ffd3","webpack://pptist/./src/views/Editor/Canvas/GridLines.vue","webpack://pptist/./src/views/Editor/Canvas/GridLines.vue?7161","webpack://pptist/./src/hooks/useSlideBackgroundStyle.ts","webpack://pptist/./src/views/Editor/Canvas/ViewportBackground.vue?a892","webpack://pptist/./src/views/Editor/Canvas/ViewportBackground.vue","webpack://pptist/./src/views/Editor/Canvas/ViewportBackground.vue?7128","webpack://pptist/./src/views/Editor/Canvas/AlignmentLine.vue?0b9a","webpack://pptist/./src/views/Editor/Canvas/AlignmentLine.vue","webpack://pptist/./src/views/Editor/Canvas/AlignmentLine.vue?70ae","webpack://pptist/./src/views/Editor/Canvas/Ruler.vue?93e8","webpack://pptist/./src/views/Editor/Canvas/Ruler.vue","webpack://pptist/./src/views/Editor/Canvas/Ruler.vue?af3f","webpack://pptist/./src/views/Editor/Canvas/ElementCreateSelection.vue?4156","webpack://pptist/./src/views/Editor/Canvas/ElementCreateSelection.vue","webpack://pptist/./src/views/Editor/Canvas/ElementCreateSelection.vue?95df","webpack://pptist/./src/views/Editor/Canvas/ShapeCreateCanvas.vue?6aaf","webpack://pptist/./src/views/Editor/Canvas/ShapeCreateCanvas.vue","webpack://pptist/./src/views/Editor/Canvas/ShapeCreateCanvas.vue?c076","webpack://pptist/./src/views/Editor/Canvas/hooks/useCommonOperate.ts","webpack://pptist/./src/views/Editor/Canvas/Operate/ResizeHandler.vue?edb6","webpack://pptist/./src/views/Editor/Canvas/Operate/ResizeHandler.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/ResizeHandler.vue?d4ec","webpack://pptist/./src/views/Editor/Canvas/Operate/BorderLine.vue?8cd4","webpack://pptist/./src/views/Editor/Canvas/Operate/BorderLine.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?edb0","webpack://pptist/./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?2a51","webpack://pptist/./src/views/Editor/Canvas/Operate/RotateHandler.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/RotateHandler.vue?642f","webpack://pptist/./src/views/Editor/Canvas/Operate/ImageElementOperate.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?753f","webpack://pptist/./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?ed82","webpack://pptist/./src/views/Editor/Canvas/Operate/TextElementOperate.vue?b8da","webpack://pptist/./src/views/Editor/Canvas/Operate/TextElementOperate.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/TextElementOperate.vue?422d","webpack://pptist/./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?013d","webpack://pptist/./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?7fbf","webpack://pptist/./src/views/Editor/Canvas/Operate/LineElementOperate.vue?6121","webpack://pptist/./src/views/Editor/Canvas/Operate/LineElementOperate.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/LineElementOperate.vue?8994","webpack://pptist/./src/views/Editor/Canvas/Operate/TableElementOperate.vue?a0dd","webpack://pptist/./src/views/Editor/Canvas/Operate/TableElementOperate.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/TableElementOperate.vue?eb69","webpack://pptist/./src/views/Editor/Canvas/Operate/CommonElementOperate.vue?457a","webpack://pptist/./src/views/Editor/Canvas/Operate/CommonElementOperate.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/CommonElementOperate.vue?c668","webpack://pptist/./src/hooks/useLink.ts","webpack://pptist/./src/components/Divider.vue?0a36","webpack://pptist/./src/components/Divider.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/LinkHandler.vue?06fd","webpack://pptist/./src/views/Editor/Canvas/Operate/LinkHandler.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/LinkHandler.vue?f915","webpack://pptist/./src/views/Editor/Canvas/Operate/index.vue?b0ed","webpack://pptist/./src/views/Editor/Canvas/Operate/index.vue","webpack://pptist/./src/views/Editor/Canvas/Operate/index.vue?d283","webpack://pptist/./src/views/components/element/ImageElement/BaseImageElement.vue?6783","webpack://pptist/./src/views/components/element/ImageElement/BaseImageElement.vue","webpack://pptist/./src/views/components/element/ImageElement/BaseImageElement.vue?fbfe","webpack://pptist/./src/views/components/element/TextElement/BaseTextElement.vue?177a","webpack://pptist/./src/views/components/element/TextElement/BaseTextElement.vue","webpack://pptist/./src/views/components/element/TextElement/BaseTextElement.vue?409c","webpack://pptist/./src/views/components/element/ShapeElement/BaseShapeElement.vue?4450","webpack://pptist/./src/views/components/element/ShapeElement/BaseShapeElement.vue","webpack://pptist/./src/views/components/element/ShapeElement/BaseShapeElement.vue?c146","webpack://pptist/./src/views/components/element/LineElement/BaseLineElement.vue?3f0d","webpack://pptist/./src/views/components/element/LineElement/BaseLineElement.vue","webpack://pptist/./src/views/components/element/LineElement/BaseLineElement.vue?d862","webpack://pptist/./src/views/components/element/ChartElement/BaseChartElement.vue?5194","webpack://pptist/./src/views/components/element/ChartElement/BaseChartElement.vue","webpack://pptist/./src/views/components/element/ChartElement/BaseChartElement.vue?673c","webpack://pptist/./src/views/components/element/TableElement/StaticTable.vue?3a90","webpack://pptist/./src/views/components/element/TableElement/StaticTable.vue","webpack://pptist/./src/views/components/element/TableElement/StaticTable.vue?3607","webpack://pptist/./src/views/components/element/TableElement/BaseTableElement.vue?6086","webpack://pptist/./src/views/components/element/TableElement/BaseTableElement.vue","webpack://pptist/./src/views/components/element/LatexElement/BaseLatexElement.vue?3c46","webpack://pptist/./src/views/components/element/LatexElement/BaseLatexElement.vue","webpack://pptist/./src/views/components/element/VideoElement/BaseVideoElement.vue?7444","webpack://pptist/./src/views/components/element/VideoElement/BaseVideoElement.vue","webpack://pptist/./src/views/components/element/AudioElement/BaseAudioElement.vue?5c9b","webpack://pptist/./src/views/components/element/AudioElement/BaseAudioElement.vue","webpack://pptist/./src/views/components/element/AudioElement/BaseAudioElement.vue?5d6b","webpack://pptist/./src/views/components/ThumbnailSlide/ThumbnailElement.vue?d15f","webpack://pptist/./src/views/components/ThumbnailSlide/ThumbnailElement.vue","webpack://pptist/./src/views/components/ThumbnailSlide/ThumbnailElement.vue?a759","webpack://pptist/./src/views/components/ThumbnailSlide/index.vue?f86a","webpack://pptist/./src/views/components/ThumbnailSlide/index.vue","webpack://pptist/./src/views/components/ThumbnailSlide/index.vue?3bdb","webpack://pptist/./src/components/Tabs.vue?6954","webpack://pptist/./src/components/Tabs.vue","webpack://pptist/./src/components/Tabs.vue?82b4","webpack://pptist/./src/components/Button.vue?6a97","webpack://pptist/./src/components/Button.vue","webpack://pptist/./src/components/Button.vue?4e0d","webpack://pptist/./src/components/Select.vue?4aa5","webpack://pptist/./src/components/Select.vue","webpack://pptist/./src/components/Select.vue?ee7b","webpack://pptist/./src/views/Editor/Canvas/LinkDialog.vue?3b6e","webpack://pptist/./src/views/Editor/Canvas/LinkDialog.vue","webpack://pptist/./src/views/Editor/Canvas/LinkDialog.vue?bc85","webpack://pptist/./src/components/Modal.vue?5d06","webpack://pptist/./src/components/Modal.vue","webpack://pptist/./src/components/Modal.vue?db1b","webpack://pptist/./src/views/Editor/Canvas/index.vue?8af9","webpack://pptist/./src/views/Editor/Canvas/index.vue","webpack://pptist/./src/views/Editor/Canvas/index.vue?a329","webpack://pptist/./src/views/Editor/CanvasTool/ShapeItemThumbnail.vue?fb11","webpack://pptist/./src/views/Editor/CanvasTool/ShapeItemThumbnail.vue","webpack://pptist/./src/views/Editor/CanvasTool/ShapePool.vue?585b","webpack://pptist/./src/views/Editor/CanvasTool/ShapePool.vue","webpack://pptist/./src/views/Editor/CanvasTool/ShapePool.vue?4063","webpack://pptist/./src/configs/lines.ts","webpack://pptist/./src/views/Editor/CanvasTool/LinePool.vue?c3f1","webpack://pptist/./src/views/Editor/CanvasTool/LinePool.vue","webpack://pptist/./src/views/Editor/CanvasTool/LinePool.vue?aad1","webpack://pptist/./src/views/Editor/CanvasTool/ChartPool.vue?16bf","webpack://pptist/./src/views/Editor/CanvasTool/ChartPool.vue","webpack://pptist/./src/views/Editor/CanvasTool/ChartPool.vue?63a2","webpack://pptist/./src/components/NumberInput.vue?10af","webpack://pptist/./src/components/NumberInput.vue","webpack://pptist/./src/components/NumberInput.vue?6529","webpack://pptist/./src/views/Editor/CanvasTool/TableGenerator.vue?4a38","webpack://pptist/./src/views/Editor/CanvasTool/TableGenerator.vue","webpack://pptist/./src/views/Editor/CanvasTool/TableGenerator.vue?0361","webpack://pptist/./src/views/Editor/CanvasTool/MediaInput.vue?72ba","webpack://pptist/./src/views/Editor/CanvasTool/MediaInput.vue","webpack://pptist/./src/views/Editor/CanvasTool/MediaInput.vue?2ee8","webpack://pptist/./src/components/LaTeXEditor/hfmath.ts","webpack://pptist/./src/configs/latex.ts","webpack://pptist/./src/components/LaTeXEditor/FormulaContent.vue?4804","webpack://pptist/./src/components/LaTeXEditor/FormulaContent.vue","webpack://pptist/./src/components/LaTeXEditor/FormulaContent.vue?7994","webpack://pptist/./src/components/LaTeXEditor/SymbolContent.vue?2b07","webpack://pptist/./src/components/LaTeXEditor/SymbolContent.vue","webpack://pptist/./src/components/LaTeXEditor/SymbolContent.vue?ccc6","webpack://pptist/./src/components/TextArea.vue?1df2","webpack://pptist/./src/components/TextArea.vue","webpack://pptist/./src/components/TextArea.vue?0a65","webpack://pptist/./src/components/LaTeXEditor/index.vue?6390","webpack://pptist/./src/components/LaTeXEditor/index.vue","webpack://pptist/./src/components/LaTeXEditor/index.vue?a1bd","webpack://pptist/./src/views/Editor/CanvasTool/index.vue?f46b","webpack://pptist/./src/views/Editor/CanvasTool/index.vue","webpack://pptist/./src/views/Editor/CanvasTool/index.vue?76f1","webpack://pptist/./src/hooks/useLoadSlides.ts","webpack://pptist/./src/views/Editor/Thumbnails/LayoutPool.vue?1248","webpack://pptist/./src/views/Editor/Thumbnails/LayoutPool.vue","webpack://pptist/./src/views/Editor/Thumbnails/LayoutPool.vue?5dd4","webpack://pptist/./src/views/Editor/Thumbnails/index.vue?bc35","webpack://pptist/./src/views/Editor/Thumbnails/index.vue","webpack://pptist/./src/views/Editor/Thumbnails/index.vue?7bfc","webpack://pptist/./src/hooks/useTextFormatPainter.ts","webpack://pptist/./src/components/Slider.vue?9191","webpack://pptist/./src/components/Slider.vue","webpack://pptist/./src/components/Slider.vue?37e5","webpack://pptist/./src/views/Editor/Toolbar/common/ElementOpacity.vue?19fb","webpack://pptist/./src/views/Editor/Toolbar/common/ElementOpacity.vue","webpack://pptist/./src/views/Editor/Toolbar/common/ElementOpacity.vue?f264","webpack://pptist/./src/views/Editor/Toolbar/common/ColorButton.vue?08e6","webpack://pptist/./src/views/Editor/Toolbar/common/ColorButton.vue","webpack://pptist/./src/components/ColorPicker/Checkboard.vue?9d92","webpack://pptist/./src/components/ColorPicker/Checkboard.vue","webpack://pptist/./src/components/ColorPicker/Checkboard.vue?39de","webpack://pptist/./src/components/ColorPicker/Alpha.vue?dc3c","webpack://pptist/./src/components/ColorPicker/Alpha.vue","webpack://pptist/./src/components/ColorPicker/Alpha.vue?7c9b","webpack://pptist/./src/components/ColorPicker/Hue.vue?5f7f","webpack://pptist/./src/components/ColorPicker/Hue.vue","webpack://pptist/./src/components/ColorPicker/Hue.vue?4132","webpack://pptist/./src/components/ColorPicker/Saturation.vue?a984","webpack://pptist/./src/components/ColorPicker/Saturation.vue","webpack://pptist/./src/components/ColorPicker/Saturation.vue?86fc","webpack://pptist/./src/components/ColorPicker/EditableInput.vue?27f4","webpack://pptist/./src/components/ColorPicker/EditableInput.vue","webpack://pptist/./src/components/ColorPicker/EditableInput.vue?b30d","webpack://pptist/./src/components/ColorPicker/index.vue?1ed9","webpack://pptist/./src/components/ColorPicker/index.vue","webpack://pptist/./src/components/ColorPicker/index.vue?b879","webpack://pptist/./src/components/Switch.vue?6839","webpack://pptist/./src/components/Switch.vue","webpack://pptist/./src/components/Switch.vue?daf4","webpack://pptist/./src/views/Editor/Toolbar/common/ElementOutline.vue?c970","webpack://pptist/./src/views/Editor/Toolbar/common/ElementOutline.vue","webpack://pptist/./src/views/Editor/Toolbar/common/ElementOutline.vue?5b70","webpack://pptist/./src/views/Editor/Toolbar/common/ElementShadow.vue?b877","webpack://pptist/./src/views/Editor/Toolbar/common/ElementShadow.vue","webpack://pptist/./src/views/Editor/Toolbar/common/ElementShadow.vue?2b21","webpack://pptist/./src/views/Editor/Toolbar/common/TextColorButton.vue?ab36","webpack://pptist/./src/views/Editor/Toolbar/common/TextColorButton.vue","webpack://pptist/./src/components/CheckboxButton.vue?775d","webpack://pptist/./src/components/CheckboxButton.vue","webpack://pptist/./src/components/ButtonGroup.vue?744e","webpack://pptist/./src/components/ButtonGroup.vue","webpack://pptist/./src/components/RadioButton.vue?d09b","webpack://pptist/./src/components/RadioButton.vue","webpack://pptist/./src/components/RadioButton.vue?f1ee","webpack://pptist/./src/components/RadioGroup.vue?5f9f","webpack://pptist/./src/components/RadioGroup.vue","webpack://pptist/./src/components/RadioGroup.vue?16be","webpack://pptist/./src/components/SelectGroup.vue","webpack://pptist/./src/components/SelectGroup.vue?d605","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?f316","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?c106","webpack://pptist/./src/views/Editor/Toolbar/common/ElementFlip.vue?379d","webpack://pptist/./src/views/Editor/Toolbar/common/ElementFlip.vue","webpack://pptist/./src/views/Editor/Toolbar/common/ElementFlip.vue?bbcf","webpack://pptist/./src/views/Editor/Toolbar/common/ElementFilter.vue?ab98","webpack://pptist/./src/views/Editor/Toolbar/common/ElementFilter.vue","webpack://pptist/./src/views/Editor/Toolbar/common/ElementFilter.vue?338f","webpack://pptist/./src/views/Editor/Toolbar/common/ElementColorMask.vue?9e95","webpack://pptist/./src/views/Editor/Toolbar/common/ElementColorMask.vue","webpack://pptist/./src/views/Editor/Toolbar/common/ElementColorMask.vue?2b38","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?7230","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?2833","webpack://pptist/./src/hooks/useShapeFormatPainter.ts","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?2911","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?cb0c","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?0cee","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?f794","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?e1c4","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?b05a","webpack://pptist/./src/components/Checkbox.vue?0ec3","webpack://pptist/./src/components/Checkbox.vue","webpack://pptist/./src/components/Checkbox.vue?2e6e","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?82fb","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?e8d3","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?542f","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?d759","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?71d1","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/LatexStylePanel.vue?96af","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?f561","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/VideoStylePanel.vue?abfb","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?9595","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/AudioStylePanel.vue?17b2","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?3a1d","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/MultiStylePanel.vue?a5cd","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/index.vue?a6e3","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/index.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementStylePanel/index.vue?05f6","webpack://pptist/./src/views/Editor/Toolbar/ElementPositionPanel.vue?69a7","webpack://pptist/./src/views/Editor/Toolbar/ElementPositionPanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementPositionPanel.vue?a368","webpack://pptist/./src/configs/animation.ts","webpack://pptist/./src/views/Editor/Toolbar/ElementAnimationPanel.vue?cde6","webpack://pptist/./src/views/Editor/Toolbar/ElementAnimationPanel.vue","webpack://pptist/./src/views/Editor/Toolbar/ElementAnimationPanel.vue?1808","webpack://pptist/./src/configs/theme.ts","webpack://pptist/./src/hooks/useSlideTheme.ts","webpack://pptist/./src/views/Editor/Toolbar/SlideDesignPanel.vue?bfed","webpack://pptist/./src/views/Editor/Toolbar/SlideDesignPanel.vue","webpack://pptist/./src/views/Editor/Toolbar/SlideDesignPanel.vue?5b71","webpack://pptist/./src/views/Editor/Toolbar/SlideAnimationPanel.vue?0558","webpack://pptist/./src/views/Editor/Toolbar/SlideAnimationPanel.vue","webpack://pptist/./src/views/Editor/Toolbar/SlideAnimationPanel.vue?6e6b","webpack://pptist/./src/hooks/useAlignActiveElement.ts","webpack://pptist/./src/hooks/useUniformDisplayElement.ts","webpack://pptist/./src/views/Editor/Toolbar/MultiPositionPanel.vue?d4f0","webpack://pptist/./src/views/Editor/Toolbar/MultiPositionPanel.vue","webpack://pptist/./src/views/Editor/Toolbar/MultiPositionPanel.vue?a635","webpack://pptist/./src/configs/symbol.ts","webpack://pptist/./src/views/Editor/Toolbar/SymbolPanel.vue?8aa1","webpack://pptist/./src/views/Editor/Toolbar/SymbolPanel.vue","webpack://pptist/./src/views/Editor/Toolbar/SymbolPanel.vue?808d","webpack://pptist/./src/views/Editor/Toolbar/index.vue?103d","webpack://pptist/./src/views/Editor/Toolbar/index.vue","webpack://pptist/./src/views/Editor/Toolbar/index.vue?68cb","webpack://pptist/./src/views/Editor/Remark/Editor.vue?e686","webpack://pptist/./src/views/Editor/Remark/Editor.vue","webpack://pptist/./src/views/Editor/Remark/Editor.vue?38fb","webpack://pptist/./src/views/Editor/Remark/index.vue?6e10","webpack://pptist/./src/views/Editor/Remark/index.vue","webpack://pptist/./src/views/Editor/Remark/index.vue?877a","webpack://pptist/./src/utils/htmlParser/tags.ts","webpack://pptist/./src/utils/htmlParser/lexer.ts","webpack://pptist/./src/utils/htmlParser/parser.ts","webpack://pptist/./src/utils/htmlParser/format.ts","webpack://pptist/./src/utils/htmlParser/index.ts","webpack://pptist/./src/utils/svgPathParser.ts","webpack://pptist/./src/utils/svg2Base64.ts","webpack://pptist/./src/hooks/useExport.ts","webpack://pptist/./src/views/Editor/ExportDialog/ExportImage.vue?f7cf","webpack://pptist/./src/views/Editor/ExportDialog/ExportImage.vue","webpack://pptist/./src/views/Editor/ExportDialog/ExportImage.vue?6568","webpack://pptist/./src/views/Editor/ExportDialog/ExportJSON.vue?2ff5","webpack://pptist/./src/views/Editor/ExportDialog/ExportJSON.vue","webpack://pptist/./src/views/Editor/ExportDialog/ExportJSON.vue?56d8","webpack://pptist/./src/utils/print.ts","webpack://pptist/./src/views/Editor/ExportDialog/ExportPDF.vue?1e0b","webpack://pptist/./src/views/Editor/ExportDialog/ExportPDF.vue","webpack://pptist/./src/views/Editor/ExportDialog/ExportPDF.vue?006d","webpack://pptist/./src/views/Editor/ExportDialog/ExportPPTX.vue?33ee","webpack://pptist/./src/views/Editor/ExportDialog/ExportPPTX.vue","webpack://pptist/./src/views/Editor/ExportDialog/ExportPPTX.vue?dd43","webpack://pptist/./src/views/Editor/ExportDialog/ExportSpecificFile.vue?7ac1","webpack://pptist/./src/views/Editor/ExportDialog/ExportSpecificFile.vue","webpack://pptist/./src/views/Editor/ExportDialog/ExportSpecificFile.vue?5f6e","webpack://pptist/./src/views/Editor/ExportDialog/index.vue?41f3","webpack://pptist/./src/views/Editor/ExportDialog/index.vue","webpack://pptist/./src/views/Editor/ExportDialog/index.vue?e747","webpack://pptist/./src/components/MoveablePanel.vue?f0f1","webpack://pptist/./src/components/MoveablePanel.vue","webpack://pptist/./src/components/MoveablePanel.vue?2b54","webpack://pptist/./src/views/Editor/SelectPanel.vue?60d1","webpack://pptist/./src/views/Editor/SelectPanel.vue","webpack://pptist/./src/views/Editor/SelectPanel.vue?fc65","webpack://pptist/./src/hooks/useSearch.ts","webpack://pptist/./src/views/Editor/SearchPanel.vue?6b7f","webpack://pptist/./src/views/Editor/SearchPanel.vue","webpack://pptist/./src/views/Editor/SearchPanel.vue?bb54","webpack://pptist/./src/views/Editor/index.vue?3b37","webpack://pptist/./src/views/Editor/index.vue","webpack://pptist/./src/views/Editor/index.vue?9e10","webpack://pptist/./src/views/Screen/hooks/useExecPlay.ts","webpack://pptist/./src/views/Screen/hooks/useSlideSize.ts","webpack://pptist/./src/views/Screen/hooks/useFullscreen.ts","webpack://pptist/./src/views/components/element/VideoElement/ScreenVideoElement.vue?202f","webpack://pptist/./src/views/components/element/VideoElement/ScreenVideoElement.vue","webpack://pptist/./src/views/components/element/VideoElement/ScreenVideoElement.vue?952d","webpack://pptist/./src/views/components/element/AudioElement/ScreenAudioElement.vue?dd4b","webpack://pptist/./src/views/components/element/AudioElement/ScreenAudioElement.vue","webpack://pptist/./src/views/components/element/AudioElement/ScreenAudioElement.vue?7c85","webpack://pptist/./src/views/Screen/ScreenElement.vue?d21e","webpack://pptist/./src/views/Screen/ScreenElement.vue","webpack://pptist/./src/views/Screen/ScreenElement.vue?e84d","webpack://pptist/./src/views/Screen/ScreenSlide.vue?08bc","webpack://pptist/./src/views/Screen/ScreenSlide.vue","webpack://pptist/./src/views/Screen/ScreenSlide.vue?fda0","webpack://pptist/./src/views/Screen/ScreenSlideList.vue?bd33","webpack://pptist/./src/views/Screen/ScreenSlideList.vue","webpack://pptist/./src/views/Screen/ScreenSlideList.vue?7a66","webpack://pptist/./src/views/Screen/SlideThumbnails.vue?110e","webpack://pptist/./src/views/Screen/SlideThumbnails.vue","webpack://pptist/./src/views/Screen/SlideThumbnails.vue?efc8","webpack://pptist/./src/components/WritingBoard.vue?95f9","webpack://pptist/./src/components/WritingBoard.vue","webpack://pptist/./src/components/WritingBoard.vue?0157","webpack://pptist/./src/views/Screen/WritingBoardTool.vue?ed64","webpack://pptist/./src/views/Screen/WritingBoardTool.vue","webpack://pptist/./src/views/Screen/WritingBoardTool.vue?c695","webpack://pptist/./src/views/Screen/CountdownTimer.vue?873b","webpack://pptist/./src/views/Screen/CountdownTimer.vue","webpack://pptist/./src/views/Screen/CountdownTimer.vue?eef9","webpack://pptist/./src/views/Screen/BaseView.vue?0966","webpack://pptist/./src/views/Screen/BaseView.vue","webpack://pptist/./src/views/Screen/BaseView.vue?f1e6","webpack://pptist/./src/views/Screen/PresenterView.vue?63c0","webpack://pptist/./src/views/Screen/PresenterView.vue","webpack://pptist/./src/views/Screen/PresenterView.vue?cb03","webpack://pptist/./src/views/Screen/index.vue?65fb","webpack://pptist/./src/views/Screen/index.vue","webpack://pptist/./src/views/Screen/index.vue?6df8","webpack://pptist/./src/views/Mobile/MobileEditor/MobileEditableElement.vue?7f1e","webpack://pptist/./src/views/Mobile/MobileEditor/MobileEditableElement.vue","webpack://pptist/./src/views/Mobile/MobileEditor/MobileEditableElement.vue?fda1","webpack://pptist/./src/views/Mobile/MobileEditor/MobileOperate.vue?1aa2","webpack://pptist/./src/views/Mobile/MobileEditor/MobileOperate.vue","webpack://pptist/./src/views/Mobile/MobileEditor/MobileOperate.vue?1bdc","webpack://pptist/./src/views/Mobile/MobileThumbnails.vue?ff50","webpack://pptist/./src/views/Mobile/MobileThumbnails.vue","webpack://pptist/./src/views/Mobile/MobileThumbnails.vue?bc00","webpack://pptist/./src/views/Mobile/MobileEditor/SlideToolbar.vue?8822","webpack://pptist/./src/views/Mobile/MobileEditor/SlideToolbar.vue","webpack://pptist/./src/views/Mobile/MobileEditor/SlideToolbar.vue?ba3a","webpack://pptist/./src/views/Mobile/MobileEditor/ElementToolbar.vue?684a","webpack://pptist/./src/views/Mobile/MobileEditor/ElementToolbar.vue","webpack://pptist/./src/views/Mobile/MobileEditor/ElementToolbar.vue?aa5e","webpack://pptist/./src/views/Mobile/MobileEditor/Header.vue?2b85","webpack://pptist/./src/views/Mobile/MobileEditor/Header.vue","webpack://pptist/./src/views/Mobile/MobileEditor/Header.vue?3507","webpack://pptist/./src/views/Mobile/MobileEditor/index.vue?3bbe","webpack://pptist/./src/views/Mobile/MobileEditor/index.vue","webpack://pptist/./src/views/Mobile/MobileEditor/index.vue?f00e","webpack://pptist/./src/views/Mobile/MobilePlayer.vue?04c9","webpack://pptist/./src/views/Mobile/MobilePlayer.vue","webpack://pptist/./src/views/Mobile/MobilePlayer.vue?cebb","webpack://pptist/./src/views/Mobile/MobilePreview.vue?dd38","webpack://pptist/./src/views/Mobile/MobilePreview.vue","webpack://pptist/./src/views/Mobile/MobilePreview.vue?aaad","webpack://pptist/./src/views/Mobile/index.vue?1a0e","webpack://pptist/./src/views/Mobile/index.vue","webpack://pptist/./src/views/Mobile/index.vue?4988","webpack://pptist/./src/App.vue?cb76","webpack://pptist/./src/App.vue","webpack://pptist/./src/App.vue?7ccd","webpack://pptist/./src/registerServiceWorker.ts","webpack://pptist/./src/components/Contextmenu/MenuContent.vue?7d27","webpack://pptist/./src/components/Contextmenu/MenuContent.vue","webpack://pptist/./src/components/Contextmenu/index.vue?cd06","webpack://pptist/./src/components/Contextmenu/index.vue","webpack://pptist/./src/components/Contextmenu/index.vue?98e2","webpack://pptist/./src/plugins/directive/contextmenu.ts","webpack://pptist/./src/plugins/directive/clickOutside.ts","webpack://pptist/./src/plugins/directive/tooltip.ts","webpack://pptist/./src/plugins/directive/index.ts","webpack://pptist/./src/main.ts","webpack://pptist/webpack/bootstrap","webpack://pptist/webpack/runtime/chunk loaded","webpack://pptist/webpack/runtime/compat get default export","webpack://pptist/webpack/runtime/define property getters","webpack://pptist/webpack/runtime/global","webpack://pptist/webpack/runtime/hasOwnProperty shorthand","webpack://pptist/webpack/runtime/make namespace object","webpack://pptist/webpack/runtime/node module decorator","webpack://pptist/webpack/runtime/jsonp chunk loading","webpack://pptist/webpack/startup"],"sourcesContent":["export const enum ToolbarStates {\n SYMBOL = 'symbol',\n EL_ANIMATION = 'elAnimation',\n EL_STYLE = 'elStyle',\n EL_POSITION = 'elPosition',\n SLIDE_DESIGN = 'slideDesign',\n SLIDE_ANIMATION = 'slideAnimation',\n MULTI_POSITION = 'multiPosition',\n}","import type { Node, NodeType, ResolvedPos, Mark, MarkType, Schema } from 'prosemirror-model'\nimport type { EditorState, Selection } from 'prosemirror-state'\nimport type { EditorView } from 'prosemirror-view'\nimport { selectAll } from 'prosemirror-commands'\n\nexport const isList = (node: Node, schema: Schema) => {\n return (\n node.type === schema.nodes.bullet_list ||\n node.type === schema.nodes.ordered_list\n )\n}\n\nexport const autoSelectAll = (view: EditorView) => {\n const { empty } = view.state.selection\n if (empty) selectAll(view.state, view.dispatch)\n}\n\nexport const addMark = (editorView: EditorView, mark: Mark, selection?: { from: number; to: number; }) => {\n if (selection) {\n editorView.dispatch(editorView.state.tr.addMark(selection.from, selection.to, mark))\n }\n else {\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\n }\n}\n\nexport const findNodesWithSameMark = (doc: Node, from: number, to: number, markType: MarkType) => {\n let ii = from\n const finder = (mark: Mark) => mark.type === markType\n let firstMark = null\n let fromNode = null\n let toNode = null\n\n while (ii <= to) {\n const node = doc.nodeAt(ii)\n if (!node || !node.marks) return null\n\n const mark = node.marks.find(finder)\n if (!mark) return null\n\n if (firstMark && mark !== firstMark) return null\n\n fromNode = fromNode || node\n firstMark = firstMark || mark\n toNode = node\n ii++\n }\n\n let fromPos = from\n let toPos = to\n\n let jj = 0\n ii = from - 1\n while (ii > jj) {\n const node = doc.nodeAt(ii)\n const mark = node && node.marks.find(finder)\n if (!mark || mark !== firstMark) break\n fromPos = ii\n fromNode = node\n ii--\n }\n\n ii = to + 1\n jj = doc.nodeSize - 2\n while (ii < jj) {\n const node = doc.nodeAt(ii)\n const mark = node && node.marks.find(finder)\n if (!mark || mark !== firstMark) break\n toPos = ii\n toNode = node\n ii++\n }\n\n return {\n mark: firstMark,\n from: {\n node: fromNode,\n pos: fromPos,\n },\n to: {\n node: toNode,\n pos: toPos,\n },\n }\n}\n\nconst equalNodeType = (nodeType: NodeType, node: Node) => {\n return Array.isArray(nodeType) && nodeType.indexOf(node.type) > -1 || node.type === nodeType\n}\n\nconst findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\n for (let i = $pos.depth; i > 0; i--) {\n const node = $pos.node(i)\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n}\n\nexport const findParentNode = (predicate: (node: Node) => boolean) => {\n return (_ref: Selection) => findParentNodeClosestToPos(_ref.$from, predicate)\n}\n\nexport const findParentNodeOfType = (nodeType: NodeType) => {\n return (selection: Selection) => {\n return findParentNode((node: Node) => {\n return equalNodeType(nodeType, node)\n })(selection)\n }\n}\n\nexport const isActiveOfParentNodeType = (nodeType: string, state: EditorState) => {\n const node = state.schema.nodes[nodeType]\n return !!findParentNodeOfType(node)(state.selection)\n}\n\nexport const getLastTextNode = (node: Node | null): Node | null => {\n if (!node) return null\n if (node.type.name === 'text') return node\n if (!node.lastChild) return null\n\n return getLastTextNode(node.lastChild)\n}\n\nexport const getMarkAttrs = (view: EditorView) => {\n const { selection, doc } = view.state\n const { from } = selection\n\n let node = doc.nodeAt(from) || doc.nodeAt(from - 1)\n node = getLastTextNode(node)\n\n return node?.marks || []\n}\n\nexport const getAttrValue = (marks: readonly Mark[], markType: string, attr: string): string | null => {\n for (const mark of marks) {\n if (mark.type.name === markType && mark.attrs[attr]) return mark.attrs[attr]\n }\n return null\n}\n\nexport const isActiveMark = (marks: readonly Mark[], markType: string) => {\n for (const mark of marks) {\n if (mark.type.name === markType) return true\n }\n return false\n}\n\nexport const markActive = (state: EditorState, type: MarkType) => {\n const { from, $from, to, empty } = state.selection\n if (empty) return type.isInSet(state.storedMarks || $from.marks())\n return state.doc.rangeHasMark(from, to, type)\n}\n\nexport const getAttrValueInSelection = (view: EditorView, attr: string) => {\n const { selection, doc } = view.state\n const { from, to } = selection\n\n let keepChecking = true\n let value = ''\n doc.nodesBetween(from, to, node => {\n if (keepChecking && node.attrs[attr]) {\n keepChecking = false\n value = node.attrs[attr]\n }\n return keepChecking\n })\n return value\n}\n\ntype Align = 'left' | 'right' | 'center'\n\ninterface DefaultAttrs {\n color: string\n backcolor: string\n fontsize: string\n fontname: string\n align: Align\n}\nconst _defaultAttrs: DefaultAttrs = {\n color: '#000',\n backcolor: '',\n fontsize: '20px',\n fontname: '微软雅黑',\n align: 'left',\n}\nexport const getTextAttrs = (view: EditorView, attrs: Partial = {}) => {\n const defaultAttrs: DefaultAttrs = { ..._defaultAttrs, ...attrs }\n\n const marks = getMarkAttrs(view)\n\n const isBold = isActiveMark(marks, 'strong')\n const isEm = isActiveMark(marks, 'em')\n const isUnderline = isActiveMark(marks, 'underline')\n const isStrikethrough = isActiveMark(marks, 'strikethrough')\n const isSuperscript = isActiveMark(marks, 'superscript')\n const isSubscript = isActiveMark(marks, 'subscript')\n const isCode = isActiveMark(marks, 'code')\n const color = getAttrValue(marks, 'forecolor', 'color') || defaultAttrs.color\n const backcolor = getAttrValue(marks, 'backcolor', 'backcolor') || defaultAttrs.backcolor\n const fontsize = getAttrValue(marks, 'fontsize', 'fontsize') || defaultAttrs.fontsize\n const fontname = getAttrValue(marks, 'fontname', 'fontname') || defaultAttrs.fontname\n const link = getAttrValue(marks, 'link', 'href') || ''\n const align = (getAttrValueInSelection(view, 'align') || defaultAttrs.align) as Align\n const isBulletList = isActiveOfParentNodeType('bullet_list', view.state)\n const isOrderedList = isActiveOfParentNodeType('ordered_list', view.state)\n const isBlockquote = isActiveOfParentNodeType('blockquote', view.state)\n\n return {\n bold: isBold,\n em: isEm,\n underline: isUnderline,\n strikethrough: isStrikethrough,\n superscript: isSuperscript,\n subscript: isSubscript,\n code: isCode,\n color: color,\n backcolor: backcolor,\n fontsize: fontsize,\n fontname: fontname,\n link: link,\n align: align,\n bulletList: isBulletList,\n orderedList: isOrderedList,\n blockquote: isBlockquote,\n }\n}\n\nexport type TextAttrs = ReturnType\n\nexport const getFontsize = (view: EditorView) => {\n const marks = getMarkAttrs(view)\n const fontsize = getAttrValue(marks, 'fontsize', 'fontsize') || _defaultAttrs.fontsize\n return parseInt(fontsize)\n}\n\nexport const defaultRichTextAttrs: TextAttrs = {\n bold: false,\n em: false,\n underline: false,\n strikethrough: false,\n superscript: false,\n subscript: false,\n code: false,\n color: '#000',\n backcolor: '',\n fontsize: '20px',\n fontname: '微软雅黑',\n link: '',\n align: 'left',\n bulletList: false,\n orderedList: false,\n blockquote: false,\n}","export const SYS_FONTS = [\n { label: 'Arial', value: 'Arial' },\n { label: '微软雅黑', value: 'Microsoft Yahei' },\n { label: '宋体', value: 'SimSun' },\n { label: '黑体', value: 'SimHei' },\n { label: '楷体', value: 'KaiTi' },\n { label: '新宋体', value: 'NSimSun' },\n { label: '仿宋', value: 'FangSong' },\n { label: '苹方', value: 'PingFang SC' },\n { label: '华文黑体', value: 'STHeiti' },\n { label: '华文楷体', value: 'STKaiti' },\n { label: '华文宋体', value: 'STSong' },\n { label: '华文仿宋', value: 'STFangSong' },\n { label: '华文中宋', value: 'STZhongSong' },\n { label: '华文琥珀', value: 'STHupo' },\n { label: '华文新魏', value: 'STXinwei' },\n { label: '华文隶书', value: 'STLiti' },\n { label: '华文行楷', value: 'STXingkai' },\n { label: '冬青黑体', value: 'Hiragino Sans GB' },\n { label: '兰亭黑', value: 'Lantinghei SC' },\n { label: '偏偏体', value: 'Hanzipen SC' },\n { label: '手札体', value: 'Hannotate SC' },\n { label: '宋体', value: 'Songti SC' },\n { label: '娃娃体', value: 'Wawati SC' },\n { label: '行楷', value: 'Xingkai SC' },\n { label: '圆体', value: 'Yuanti SC' },\n { label: '华文细黑', value: 'STXihei' },\n { label: '幼圆', value: 'YouYuan' },\n { label: '隶书', value: 'LiSu' },\n]\n\nexport const WEB_FONTS = [\n { label: '得意黑', value: '得意黑' },\n { label: '仓耳小丸子', value: '仓耳小丸子' },\n { label: '优设标题黑', value: '优设标题黑' },\n { label: '峰广明锐体', value: '峰广明锐体' },\n { label: '摄图摩登小方体', value: '摄图摩登小方体' },\n { label: '站酷快乐体', value: '站酷快乐体' },\n { label: '字制区喜脉体', value: '字制区喜脉体' },\n { label: '素材集市康康体', value: '素材集市康康体' },\n { label: '素材集市酷方体', value: '素材集市酷方体' },\n { label: '途牛类圆体', value: '途牛类圆体' },\n { label: '锐字真言体', value: '锐字真言体' },\n]","/**\n * 判断操作系统是否存在某字体\n * @param fontName 字体名\n */\nexport const isSupportFont = (fontName: string) => {\n if (typeof fontName !== 'string') return false\n\n const arial = 'Arial'\n if (fontName.toLowerCase() === arial.toLowerCase()) return true\n\n const size = 100\n const width = 100\n const height = 100\n const str = 'a'\n\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d', { willReadFrequently: true })\n\n if (!ctx) return false\n\n canvas.width = width\n canvas.height = height\n ctx.textAlign = 'center'\n ctx.fillStyle = 'black'\n ctx.textBaseline = 'middle'\n\n const getDotArray = (_fontFamily: string) => {\n ctx.clearRect(0, 0, width, height)\n ctx.font = `${size}px ${_fontFamily}, ${arial}`\n ctx.fillText(str, width / 2, height / 2)\n const imageData = ctx.getImageData(0, 0, width, height).data\n return [].slice.call(imageData).filter(item => item !== 0)\n }\n\n return getDotArray(arial).join('') !== getDotArray(fontName).join('')\n}","import type { Slide } from '@/types/slides'\n\nexport const slides: Slide[] = [\n {\n id: 'test-slide-1',\n elements: [\n {\n type: 'shape',\n id: '4cbRxp',\n left: 0,\n top: 200,\n width: 546,\n height: 362.5,\n viewBox: [200, 200],\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '#5b9bd5',\n fixedRatio: false,\n opacity: 0.7,\n rotate: 0\n },\n {\n type: 'shape',\n id: 'ookHrf',\n left: 0,\n top: 0,\n width: 300,\n height: 320,\n viewBox: [200, 200],\n path: 'M 0 0 L 0 200 L 200 200 Z',\n fill: '#5b9bd5',\n fixedRatio: false,\n flipV: true,\n rotate: 0\n },\n {\n type: 'text',\n id: 'idn7Mx',\n left: 355,\n top: 65.25,\n width: 585,\n height: 188,\n lineHeight: 1.2,\n content: '

PPTIST

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

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

',\n rotate: 0,\n defaultFontName: 'Microsoft Yahei',\n defaultColor: '#333'\n },\n {\n type: 'line',\n id: 'FnpZs4',\n left: 361,\n top: 238,\n start: [0, 0],\n end: [549, 0],\n points: ['', ''],\n color: '#5b9bd5',\n style: 'solid',\n width: 2,\n },\n ],\n background: {\n type: 'solid',\n color: '#ffffff',\n },\n },\n {\n id: 'test-slide-2',\n elements: [\n {\n type: 'text',\n id: 'ptNnUJ',\n left: 145,\n top: 148,\n width: 711,\n height: 77,\n lineHeight: 1.2,\n content: '

在此处添加标题

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

在此处添加副标题

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

感谢观看

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

输入标题

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

请在此处输入副标题

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

在此处添加标题

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

在此处添加副标题

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

感谢观看

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

01

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

在此处输入标题

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

  2. 在此处输入内容

  3. 在此处输入内容

  4. 在此处输入内容

  5. 在此处输入内容

  6. 在此处输入内容

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

1

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

4

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

3

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

2

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

在此输入内容

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

在此输入内容

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

在此输入内容

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

在此输入内容

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

01

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

在此处添加标题

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

1.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

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

2.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

在此处输入内容

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

1.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

2.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

3.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

4.请输入标题

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

在此处输入内容

在此处输入内容

在此处输入内容

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

请在此处输入标题

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

请在此处输入内容1

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

请在此处输入内容2

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

请在此处输入内容3

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

请在此处输入内容4

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

1

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

在此输入内容

在此输入内容

在此输入内容

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

2

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

在此输入内容

在此输入内容

在此输入内容

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

3

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

在此输入内容

在此输入内容

在此输入内容

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

4

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

在此输入内容

在此输入内容

在此输入内容

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

5

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

在此输入内容

在此输入内容

在此输入内容

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

6

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

在此输入内容

在此输入内容

在此输入内容

',\n rotate: 0,\n defaultFontName: '{{fontName}}',\n defaultColor: '{{fontColor}}',\n fill: '{{subColor}}'\n }\n ],\n background: {\n type: 'solid',\n color: '{{backgroundColor}}',\n },\n },\n]","import { defineStore } from 'pinia'\nimport tinycolor from 'tinycolor2'\nimport { omit } from 'lodash'\nimport type { Slide, SlideTheme, PPTElement, PPTAnimation } from '@/types/slides'\nimport { slides } from '@/mocks/slides'\nimport { theme } from '@/mocks/theme'\nimport { layouts } from '@/mocks/layout'\n\ninterface RemoveElementPropData {\n id: string\n propName: string | string[]\n}\n\ninterface UpdateElementData {\n id: string | string[]\n props: Partial\n slideId?: string\n}\n\ninterface FormatedAnimation {\n animations: PPTAnimation[]\n autoNext: boolean\n}\n\nexport interface SlidesState {\n title: string\n theme: SlideTheme\n slides: Slide[]\n slideIndex: number\n viewportRatio: number\n}\n\nexport const useSlidesStore = defineStore('slides', {\n state: (): SlidesState => ({\n title: '未命名演示文稿', // 幻灯片标题\n theme: theme, // 主题样式\n slides: slides, // 幻灯片页面数据\n slideIndex: 0, // 当前页面索引\n viewportRatio: 0.5625, // 可视区域比例,默认16:9\n }),\n\n getters: {\n currentSlide(state) {\n return state.slides[state.slideIndex]\n },\n \n currentSlideAnimations(state) {\n const currentSlide = state.slides[state.slideIndex]\n if (!currentSlide?.animations) return []\n\n const els = currentSlide.elements\n const elIds = els.map(el => el.id)\n return currentSlide.animations.filter(animation => elIds.includes(animation.elId))\n },\n\n // 格式化的当前页动画\n // 将触发条件为“与上一动画同时”的项目向上合并到序列中的同一位置\n // 为触发条件为“上一动画之后”项目的上一项添加自动向下执行标记\n formatedAnimations(state) {\n const currentSlide = state.slides[state.slideIndex]\n if (!currentSlide?.animations) return []\n\n const els = currentSlide.elements\n const elIds = els.map(el => el.id)\n const animations = currentSlide.animations.filter(animation => elIds.includes(animation.elId))\n\n const formatedAnimations: FormatedAnimation[] = []\n for (const animation of animations) {\n if (animation.trigger === 'click' || !formatedAnimations.length) {\n formatedAnimations.push({ animations: [animation], autoNext: false })\n }\n else if (animation.trigger === 'meantime') {\n const last = formatedAnimations[formatedAnimations.length - 1]\n last.animations = last.animations.filter(item => item.elId !== animation.elId)\n last.animations.push(animation)\n formatedAnimations[formatedAnimations.length - 1] = last\n }\n else if (animation.trigger === 'auto') {\n const last = formatedAnimations[formatedAnimations.length - 1]\n last.autoNext = true\n formatedAnimations[formatedAnimations.length - 1] = last\n formatedAnimations.push({ animations: [animation], autoNext: false })\n }\n }\n return formatedAnimations\n },\n \n layouts(state) {\n const {\n themeColor,\n fontColor,\n fontName,\n backgroundColor,\n } = state.theme\n \n const subColor = tinycolor(fontColor).isDark() ? 'rgba(230, 230, 230, 0.5)' : 'rgba(180, 180, 180, 0.5)'\n \n const layoutsString = JSON.stringify(layouts)\n .replaceAll('{{themeColor}}', themeColor)\n .replaceAll('{{fontColor}}', fontColor)\n .replaceAll('{{fontName}}', fontName)\n .replaceAll('{{backgroundColor}}', backgroundColor)\n .replaceAll('{{subColor}}', subColor)\n \n return JSON.parse(layoutsString)\n },\n },\n\n actions: {\n setTitle(title: string) {\n if (!title) this.title = '未命名演示文稿'\n else this.title = title\n },\n\n setTheme(themeProps: Partial) {\n this.theme = { ...this.theme, ...themeProps }\n },\n \n setViewportRatio(viewportRatio: number) {\n this.viewportRatio = viewportRatio\n },\n \n setSlides(slides: Slide[]) {\n this.slides = slides\n },\n \n addSlide(slide: Slide | Slide[]) {\n const slides = Array.isArray(slide) ? slide : [slide]\n const addIndex = this.slideIndex + 1\n this.slides.splice(addIndex, 0, ...slides)\n this.slideIndex = addIndex\n },\n \n updateSlide(props: Partial) {\n const slideIndex = this.slideIndex\n this.slides[slideIndex] = { ...this.slides[slideIndex], ...props }\n },\n \n deleteSlide(slideId: string | string[]) {\n const slidesId = Array.isArray(slideId) ? slideId : [slideId]\n \n const deleteSlidesIndex = []\n for (let i = 0; i < slidesId.length; i++) {\n const index = this.slides.findIndex(item => item.id === slidesId[i])\n deleteSlidesIndex.push(index)\n }\n let newIndex = Math.min(...deleteSlidesIndex)\n \n const maxIndex = this.slides.length - slidesId.length - 1\n if (newIndex > maxIndex) newIndex = maxIndex\n \n this.slideIndex = newIndex\n this.slides = this.slides.filter(item => !slidesId.includes(item.id))\n },\n \n updateSlideIndex(index: number) {\n this.slideIndex = index\n },\n \n addElement(element: PPTElement | PPTElement[]) {\n const elements = Array.isArray(element) ? element : [element]\n const currentSlideEls = this.slides[this.slideIndex].elements\n const newEls = [...currentSlideEls, ...elements]\n this.slides[this.slideIndex].elements = newEls\n },\n\n deleteElement(elementId: string | string[]) {\n const elementIdList = Array.isArray(elementId) ? elementId : [elementId]\n const currentSlideEls = this.slides[this.slideIndex].elements\n const newEls = currentSlideEls.filter(item => !elementIdList.includes(item.id))\n this.slides[this.slideIndex].elements = newEls\n },\n \n updateElement(data: UpdateElementData) {\n const { id, props, slideId } = data\n const elIdList = typeof id === 'string' ? [id] : id\n\n const slideIndex = slideId ? this.slides.findIndex(item => item.id === slideId) : this.slideIndex\n const slide = this.slides[slideIndex]\n const elements = slide.elements.map(el => {\n return elIdList.includes(el.id) ? { ...el, ...props } : el\n })\n this.slides[slideIndex].elements = (elements as PPTElement[])\n },\n \n removeElementProps(data: RemoveElementPropData) {\n const { id, propName } = data\n const propsNames = typeof propName === 'string' ? [propName] : propName\n \n const slideIndex = this.slideIndex\n const slide = this.slides[slideIndex]\n const elements = slide.elements.map(el => {\n return el.id === id ? omit(el, propsNames) : el\n })\n this.slides[slideIndex].elements = (elements as PPTElement[])\n },\n },\n})","import { customAlphabet } from 'nanoid'\nimport { defineStore } from 'pinia'\nimport { ToolbarStates } from '@/types/toolbar'\nimport type { CreatingElement, ShapeFormatPainter, TextFormatPainter } from '@/types/edit'\nimport type { DialogForExportTypes } from '@/types/export'\nimport { type TextAttrs, defaultRichTextAttrs } from '@/utils/prosemirror/utils'\nimport { SYS_FONTS } from '@/configs/font'\nimport { isSupportFont } from '@/utils/font'\n\nimport { useSlidesStore } from './slides'\n\nexport interface MainState {\n activeElementIdList: string[]\n handleElementId: string\n activeGroupElementId: string\n hiddenElementIdList: string[]\n canvasPercentage: number\n canvasScale: number\n canvasDragged: boolean\n thumbnailsFocus: boolean\n editorAreaFocus: boolean\n disableHotkeys: boolean\n gridLineSize: number\n showRuler: boolean\n creatingElement: CreatingElement | null\n creatingCustomShape: boolean\n availableFonts: typeof SYS_FONTS\n toolbarState: ToolbarStates\n clipingImageElementId: string\n isScaling: boolean\n richTextAttrs: TextAttrs\n selectedTableCells: string[]\n selectedSlidesIndex: number[]\n dialogForExport: DialogForExportTypes\n databaseId: string\n textFormatPainter: TextFormatPainter | null\n shapeFormatPainter: ShapeFormatPainter | null\n showSelectPanel: boolean\n showSearchPanel: boolean\n}\n\nconst nanoid = customAlphabet('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz')\nexport const databaseId = nanoid(10)\n\nexport const useMainStore = defineStore('main', {\n state: (): MainState => ({\n activeElementIdList: [], // 被选中的元素ID集合,包含 handleElementId\n handleElementId: '', // 正在操作的元素ID\n activeGroupElementId: '', // 组合元素成员中,被选中可独立操作的元素ID\n hiddenElementIdList: [], // 被隐藏的元素ID集合\n canvasPercentage: 90, // 画布可视区域百分比\n canvasScale: 1, // 画布缩放比例(基于宽度1000px)\n canvasDragged: false, // 画布被拖拽移动\n thumbnailsFocus: false, // 左侧导航缩略图区域聚焦\n editorAreaFocus: false, // 编辑区域聚焦\n disableHotkeys: false, // 禁用快捷键\n gridLineSize: 0, // 网格线尺寸(0表示不显示网格线)\n showRuler: false, // 显示标尺\n creatingElement: null, // 正在插入的元素信息,需要通过绘制插入的元素(文字、形状、线条)\n creatingCustomShape: false, // 正在绘制任意多边形\n availableFonts: SYS_FONTS, // 当前环境可用字体\n toolbarState: ToolbarStates.SLIDE_DESIGN, // 右侧工具栏状态\n clipingImageElementId: '', // 当前正在裁剪的图片ID \n richTextAttrs: defaultRichTextAttrs, // 富文本状态\n selectedTableCells: [], // 选中的表格单元格\n isScaling: false, // 正在进行元素缩放\n selectedSlidesIndex: [], // 当前被选中的页面索引集合\n dialogForExport: '', // 导出面板\n databaseId, // 标识当前应用的indexedDB数据库ID\n textFormatPainter: null, // 文字格式刷\n shapeFormatPainter: null, // 形状格式刷\n showSelectPanel: false, // 打开选择面板\n showSearchPanel: false, // 打开查找替换面板\n }),\n\n getters: {\n activeElementList(state) {\n const slidesStore = useSlidesStore()\n const currentSlide = slidesStore.currentSlide\n if (!currentSlide || !currentSlide.elements) return []\n return currentSlide.elements.filter(element => state.activeElementIdList.includes(element.id))\n },\n \n handleElement(state) {\n const slidesStore = useSlidesStore()\n const currentSlide = slidesStore.currentSlide\n if (!currentSlide || !currentSlide.elements) return null\n return currentSlide.elements.find(element => state.handleElementId === element.id) || null\n },\n },\n\n actions: {\n setActiveElementIdList(activeElementIdList: string[]) {\n if (activeElementIdList.length === 1) this.handleElementId = activeElementIdList[0]\n else this.handleElementId = ''\n \n this.activeElementIdList = activeElementIdList\n },\n \n setHandleElementId(handleElementId: string) {\n this.handleElementId = handleElementId\n },\n \n setActiveGroupElementId(activeGroupElementId: string) {\n this.activeGroupElementId = activeGroupElementId\n },\n \n setHiddenElementIdList(hiddenElementIdList: string[]) {\n this.hiddenElementIdList = hiddenElementIdList\n },\n \n setCanvasPercentage(percentage: number) {\n this.canvasPercentage = percentage\n },\n \n setCanvasScale(scale: number) {\n this.canvasScale = scale\n },\n \n setCanvasDragged(isDragged: boolean) {\n this.canvasDragged = isDragged\n },\n \n setThumbnailsFocus(isFocus: boolean) {\n this.thumbnailsFocus = isFocus\n },\n \n setEditorareaFocus(isFocus: boolean) {\n this.editorAreaFocus = isFocus\n },\n \n setDisableHotkeysState(disable: boolean) {\n this.disableHotkeys = disable\n },\n \n setGridLineSize(size: number) {\n this.gridLineSize = size\n },\n \n setRulerState(show: boolean) {\n this.showRuler = show\n },\n \n setCreatingElement(element: CreatingElement | null) {\n this.creatingElement = element\n },\n \n setCreatingCustomShapeState(state: boolean) {\n this.creatingCustomShape = state\n },\n \n setAvailableFonts() {\n this.availableFonts = SYS_FONTS.filter(font => isSupportFont(font.value))\n },\n \n setToolbarState(toolbarState: ToolbarStates) {\n this.toolbarState = toolbarState\n },\n \n setClipingImageElementId(elId: string) {\n this.clipingImageElementId = elId\n },\n \n setRichtextAttrs(attrs: TextAttrs) {\n this.richTextAttrs = attrs\n },\n \n setSelectedTableCells(cells: string[]) {\n this.selectedTableCells = cells\n },\n \n setScalingState(isScaling: boolean) {\n this.isScaling = isScaling\n },\n \n updateSelectedSlidesIndex(selectedSlidesIndex: number[]) {\n this.selectedSlidesIndex = selectedSlidesIndex\n },\n\n setDialogForExport(type: DialogForExportTypes) {\n this.dialogForExport = type\n },\n\n setTextFormatPainter(textFormatPainter: TextFormatPainter | null) {\n this.textFormatPainter = textFormatPainter\n },\n\n setShapeFormatPainter(shapeFormatPainter: ShapeFormatPainter | null) {\n this.shapeFormatPainter = shapeFormatPainter\n },\n\n setSelectPanelState(show: boolean) {\n this.showSelectPanel = show\n },\n\n setSearchPanelState(show: boolean) {\n this.showSearchPanel = show\n },\n },\n})","export const LOCALSTORAGE_KEY_DISCARDED_DB = 'PPTIST_DISCARDED_DB'","import Dexie from 'dexie'\nimport { databaseId } from '@/store/main'\nimport type { Slide } from '@/types/slides'\nimport { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage'\n\nexport interface writingBoardImg {\n id: string\n dataURL: string\n}\n\nexport interface Snapshot {\n index: number\n slides: Slide[]\n}\n\nconst databaseNamePrefix = 'PPTist'\n\n// 删除失效/过期的数据库\n// 应用关闭时(关闭或刷新浏览器),会将其数据库ID记录在 localStorage 中,表示该ID指向的数据库已失效\n// 当应用初始化时,检查当前所有数据库,将被记录失效的数据库删除\n// 另外,距离初始化时间超过12小时的数据库也将被删除(这是为了防止出现因意外未被正确删除的库)\nexport const deleteDiscardedDB = async () => {\n const now = new Date().getTime()\n\n const localStorageDiscardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n const localStorageDiscardedDBList: string[] = localStorageDiscardedDB ? JSON.parse(localStorageDiscardedDB) : []\n\n const databaseNames = await Dexie.getDatabaseNames()\n const discardedDBNames = databaseNames.filter(name => {\n if (name.indexOf(databaseNamePrefix) === -1) return false\n \n const [prefix, id, time] = name.split('_')\n if (prefix !== databaseNamePrefix || !id || !time) return true\n if (localStorageDiscardedDBList.includes(id)) return true\n if (now - (+time) >= 1000 * 60 * 60 * 12) return true\n\n return false\n })\n\n for (const name of discardedDBNames) Dexie.delete(name)\n localStorage.removeItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n}\n\nclass PPTistDB extends Dexie {\n public snapshots: Dexie.Table\n public writingBoardImgs: Dexie.Table\n\n public constructor() {\n super(`${databaseNamePrefix}_${databaseId}_${new Date().getTime()}`)\n this.version(1).stores({\n snapshots: '++id',\n writingBoardImgs: '++id',\n })\n this.snapshots = this.table('snapshots')\n this.writingBoardImgs = this.table('writingBoardImgs')\n }\n}\n\nexport const db = new PPTistDB()","import { defineStore } from 'pinia'\nimport type { IndexableTypeArray } from 'dexie'\nimport { db, type Snapshot } from '@/utils/database'\n\nimport { useSlidesStore } from './slides'\nimport { useMainStore } from './main'\n\nexport interface ScreenState {\n snapshotCursor: number\n snapshotLength: number\n}\n\nexport const useSnapshotStore = defineStore('snapshot', {\n state: (): ScreenState => ({\n snapshotCursor: -1, // 历史快照指针\n snapshotLength: 0, // 历史快照长度\n }),\n\n getters: {\n canUndo(state) {\n return state.snapshotCursor > 0\n },\n canRedo(state) {\n return state.snapshotCursor < state.snapshotLength - 1\n },\n },\n\n actions: {\n setSnapshotCursor(cursor: number) {\n this.snapshotCursor = cursor\n },\n setSnapshotLength(length: number) {\n this.snapshotLength = length\n },\n\n async initSnapshotDatabase() {\n const slidesStore = useSlidesStore()\n \n const newFirstSnapshot = {\n index: slidesStore.slideIndex,\n slides: slidesStore.slides,\n }\n await db.snapshots.add(newFirstSnapshot)\n this.setSnapshotCursor(0)\n this.setSnapshotLength(1)\n },\n \n async addSnapshot() {\n const slidesStore = useSlidesStore()\n\n // 获取当前indexeddb中全部快照的ID\n const allKeys = await db.snapshots.orderBy('id').keys()\n \n let needDeleteKeys: IndexableTypeArray = []\n \n // 记录需要删除的快照ID\n // 若当前快照指针不处在最后一位,那么再添加快照时,应该将当前指针位置后面的快照全部删除,对应的实际情况是:\n // 用户撤回多次后,再进行操作(添加快照),此时原先被撤销的快照都应该被删除\n if (this.snapshotCursor >= 0 && this.snapshotCursor < allKeys.length - 1) {\n needDeleteKeys = allKeys.slice(this.snapshotCursor + 1)\n }\n \n // 添加新快照\n const snapshot = {\n index: slidesStore.slideIndex,\n slides: slidesStore.slides,\n }\n await db.snapshots.add(snapshot)\n \n // 计算当前快照长度,用于设置快照指针的位置(此时指针应该处在最后一位,即:快照长度 - 1)\n let snapshotLength = allKeys.length - needDeleteKeys.length + 1\n \n // 快照数量超过长度限制时,应该将头部多余的快照删除\n const snapshotLengthLimit = 20\n if (snapshotLength > snapshotLengthLimit) {\n needDeleteKeys.push(allKeys[0])\n snapshotLength--\n }\n \n // 快照数大于1时,需要保证撤回操作后维持页面焦点不变:也就是将倒数第二个快照对应的索引设置为当前页的索引\n // https://github.com/pipipi-pikachu/PPTist/issues/27\n if (snapshotLength >= 2) {\n db.snapshots.update(allKeys[snapshotLength - 2] as number, { index: slidesStore.slideIndex })\n }\n \n await db.snapshots.bulkDelete(needDeleteKeys)\n \n this.setSnapshotCursor(snapshotLength - 1)\n this.setSnapshotLength(snapshotLength)\n },\n \n async unDo() {\n if (this.snapshotCursor <= 0) return\n\n const slidesStore = useSlidesStore()\n const mainStore = useMainStore()\n \n const snapshotCursor = this.snapshotCursor - 1\n const snapshots: Snapshot[] = await db.snapshots.orderBy('id').toArray()\n const snapshot = snapshots[snapshotCursor]\n const { index, slides } = snapshot\n \n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\n \n slidesStore.setSlides(slides)\n slidesStore.updateSlideIndex(slideIndex)\n this.setSnapshotCursor(snapshotCursor)\n mainStore.setActiveElementIdList([])\n },\n \n async reDo() {\n if (this.snapshotCursor >= this.snapshotLength - 1) return\n\n const slidesStore = useSlidesStore()\n const mainStore = useMainStore()\n \n const snapshotCursor = this.snapshotCursor + 1\n const snapshots: Snapshot[] = await db.snapshots.orderBy('id').toArray()\n const snapshot = snapshots[snapshotCursor]\n const { index, slides } = snapshot\n \n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\n \n slidesStore.setSlides(slides)\n slidesStore.updateSlideIndex(slideIndex)\n this.setSnapshotCursor(snapshotCursor)\n mainStore.setActiveElementIdList([])\n },\n },\n})","import { defineStore } from 'pinia'\n\nexport interface KeyboardState {\n ctrlKeyState: boolean\n shiftKeyState: boolean\n spaceKeyState: boolean\n}\n\nexport const useKeyboardStore = defineStore('keyboard', {\n state: (): KeyboardState => ({\n ctrlKeyState: false, // ctrl键按下状态\n shiftKeyState: false, // shift键按下状态\n spaceKeyState: false, // space键按下状态\n }),\n\n getters: {\n ctrlOrShiftKeyActive(state) {\n return state.ctrlKeyState || state.shiftKeyState\n },\n },\n\n actions: {\n setCtrlKeyState(active: boolean) {\n this.ctrlKeyState = active\n },\n setShiftKeyState(active: boolean) {\n this.shiftKeyState = active\n },\n setSpaceKeyState(active: boolean) {\n this.spaceKeyState = active\n },\n },\n})","import { defineStore } from 'pinia'\n\nexport interface ScreenState {\n screening: boolean\n}\n\nexport const useScreenStore = defineStore('screen', {\n state: (): ScreenState => ({\n screening: false, // 是否进入放映状态\n }),\n\n actions: {\n setScreening(screening: boolean) {\n this.screening = screening\n },\n },\n})","import { padStart } from 'lodash'\n\n/**\n * 补足数字位数\n * @param digit 数字\n * @param len 位数\n */\nexport const fillDigit = (digit: number, len: number) => {\n return padStart('' + digit, len, '0')\n}\n\n/**\n * 判断设备\n */\nexport const isPC = () => {\n return !navigator.userAgent.match(/(iPhone|iPod|iPad|Android|Mobile|BlackBerry|Symbian|Windows Phone)/i)\n}","import type { ShapePoolItem } from '@/configs/shapes'\r\nimport type { LinePoolItem } from '@/configs/lines'\r\nimport type { ImageClipDataRange, PPTElementOutline, PPTElementShadow, ShapeGradient } from './slides'\r\n\r\nexport enum ElementOrderCommands {\r\n UP = 'up',\r\n DOWN = 'down',\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n}\r\n\r\nexport enum ElementAlignCommands {\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n VERTICAL = 'vertical',\r\n HORIZONTAL = 'horizontal',\r\n CENTER = 'center',\r\n}\r\n\r\nexport const enum OperateBorderLines {\r\n T = 'top',\r\n B = 'bottom',\r\n L = 'left',\r\n R = 'right',\r\n}\r\n\r\nexport const enum OperateResizeHandlers {\r\n LEFT_TOP = 'left-top',\r\n TOP = 'top',\r\n RIGHT_TOP = 'right-top',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n LEFT_BOTTOM = 'left-bottom',\r\n BOTTOM = 'bottom',\r\n RIGHT_BOTTOM = 'right-bottom',\r\n}\r\n\r\nexport const enum OperateLineHandlers {\r\n START = 'start',\r\n END = 'end',\r\n C = 'ctrl',\r\n C1 = 'ctrl1',\r\n C2 = 'ctrl2',\r\n}\r\n\r\nexport interface AlignmentLineAxis {\r\n x: number\r\n y: number\r\n}\r\n\r\nexport interface AlignmentLineProps {\r\n type: 'vertical' | 'horizontal'\r\n axis: AlignmentLineAxis\r\n length: number\r\n}\r\n\r\nexport interface MultiSelectRange {\r\n minX: number\r\n maxX: number\r\n minY: number\r\n maxY: number\r\n}\r\n\r\nexport interface ImageClipedEmitData {\r\n range: ImageClipDataRange\r\n position: {\r\n left: number\r\n top: number\r\n width: number\r\n height: number\r\n }\r\n}\r\n\r\nexport interface CreateElementSelectionData {\r\n start: [number, number]\r\n end: [number, number]\r\n}\r\n\r\nexport interface CreateCustomShapeData {\r\n start: [number, number]\r\n end: [number, number]\r\n path: string\r\n viewBox: [number, number]\r\n fill?: string\r\n outline?: PPTElementOutline\r\n}\r\n\r\nexport interface CreatingTextElement {\r\n type: 'text'\r\n vertical?: boolean\r\n}\r\nexport interface CreatingShapeElement {\r\n type: 'shape'\r\n data: ShapePoolItem\r\n}\r\nexport interface CreatingLineElement {\r\n type: 'line'\r\n data: LinePoolItem\r\n}\r\nexport type CreatingElement = CreatingTextElement | CreatingShapeElement | CreatingLineElement\r\n\r\nexport type TextFormatPainterKeys = 'bold' | 'em' | 'underline' | 'strikethrough' | 'color' | 'backcolor' | 'fontsize' | 'fontname' | 'align'\r\n\r\nexport interface TextFormatPainter {\r\n keep: boolean\r\n bold?: boolean\r\n em?: boolean\r\n underline?: boolean\r\n strikethrough?: boolean\r\n color?: string\r\n backcolor?: string\r\n fontsize?: string\r\n fontname?: string\r\n align?: 'left' | 'right' | 'center'\r\n}\r\n\r\nexport interface ShapeFormatPainter {\r\n keep: boolean\r\n fill?: string\r\n gradient?: ShapeGradient\r\n outline?: PPTElementOutline\r\n opacity?: number\r\n shadow?: PPTElementShadow\r\n}","export const enum KEYS {\n C = 'C',\n X = 'X',\n Z = 'Z',\n Y = 'Y',\n A = 'A',\n G = 'G',\n L = 'L',\n F = 'F',\n D = 'D',\n B = 'B',\n P = 'P',\n MINUS = '-',\n EQUAL = '=',\n DIGIT_0 = '0',\n DELETE = 'DELETE',\n UP = 'ARROWUP',\n DOWN = 'ARROWDOWN',\n LEFT = 'ARROWLEFT',\n RIGHT = 'ARROWRIGHT',\n ENTER = 'ENTER',\n SPACE = ' ',\n TAB = 'TAB',\n BACKSPACE = 'BACKSPACE',\n ESC = 'ESCAPE',\n PAGEUP = 'PAGEUP',\n PAGEDOWN = 'PAGEDOWN',\n F5 = 'F5',\n}\n\nexport const HOTKEY_DOC = [\n {\n type: '通用',\n children: [\n { label: '剪切', value: 'Ctrl + X' },\n { label: '复制', value: 'Ctrl + C' },\n { label: '粘贴', value: 'Ctrl + V' },\n { label: '粘贴为纯文本', value: 'Ctrl + Shift + V' },\n { label: '快速复制粘贴', value: 'Ctrl + D' },\n { label: '全选', value: 'Ctrl + A' },\n { label: '撤销', value: 'Ctrl + Z' },\n { label: '恢复', value: 'Ctrl + Y' },\n { label: '删除', value: 'Delete / Backspace' },\n { label: '多选', value: '按住 Ctrl 或 Shift' },\n { label: '打开搜索替换', value: 'Ctrl + F' },\n { label: '打印', value: 'Ctrl + P' },\n { label: '关闭弹窗', value: 'ESC' },\n ],\n },\n {\n type: '幻灯片放映',\n children: [\n { label: '从头开始放映幻灯片', value: 'F5' },\n { label: '从当前开始放映幻灯片', value: 'Shift + F5' },\n { label: '切换上一页', value: '↑ / ← / PgUp' },\n { label: '切换下一页', value: '↓ / → / PgDown' },\n { label: '切换下一页', value: 'Enter / Space' },\n { label: '退出放映', value: 'ESC' },\n ],\n },\n {\n type: '幻灯片编辑',\n children: [\n { label: '新建幻灯片', value: 'Enter' },\n { label: '移动画布', value: 'Space + 鼠标拖拽' },\n { label: '缩放画布', value: 'Ctrl + 鼠标滚轮' },\n { label: '放大画布', value: 'Ctrl + =' },\n { label: '缩小画布', value: 'Ctrl + -' },\n { label: '使画布适应当前屏幕', value: 'Ctrl + 0' },\n { label: '上一页(未选中元素)', value: '↑ / ←' },\n { label: '下一页(未选中元素)', value: '↓ / →' },\n { label: '上一页', value: '鼠标上滚 / PgUp' },\n { label: '下一页', value: '鼠标下滚 / PgDown' },\n ],\n },\n {\n type: '元素操作',\n children: [\n { label: '移动', value: '↑ / ← / ↓ / →' },\n { label: '锁定', value: 'Ctrl + L' },\n { label: '组合', value: 'Ctrl + G' },\n { label: '取消组合', value: 'Ctrl + Shift + G' },\n { label: '置顶层', value: 'Alt + F' },\n { label: '置底层', value: 'Alt + B' },\n { label: '锁定宽高比例', value: '按住 Ctrl 或 Shift' },\n { label: '创建水平 / 垂直线条', value: '按住 Ctrl 或 Shift' },\n { label: '切换焦点元素', value: 'Tab' },\n { label: '确认图片裁剪', value: 'Enter' },\n { label: '完成自定义形状绘制', value: 'Enter' },\n ],\n },\n {\n type: '表格编辑',\n children: [\n { label: '聚焦到下一个单元格', value: 'Tab' },\n { label: '在上方插入一行', value: 'Ctrl + ↑' },\n { label: '在下方插入一行', value: 'Ctrl + ↓' },\n { label: '在左侧插入一列', value: 'Ctrl + ←' },\n { label: '在右侧插入一列', value: 'Ctrl + →' },\n ],\n },\n {\n type: '图表数据编辑',\n children: [\n { label: '聚焦到下一行', value: 'Enter' },\n ],\n },\n {\n type: '文本编辑',\n children: [\n { label: '加粗', value: 'Ctrl + B' },\n { label: '斜体', value: 'Ctrl + I' },\n { label: '下划线', value: 'Ctrl + U' },\n { label: '行内代码', value: 'Ctrl + E' },\n { label: '上角标', value: 'Ctrl + ;' },\n { label: '下角标', value: `Ctrl + '` },\n { label: '选中段落', value: `ESC` },\n ],\n },\n]","import CryptoJS from 'crypto-js'\n\nconst CRYPTO_KEY = 'pptist'\n\n/**\n * 加密\n * @param msg 待加密字符串\n */\nexport const encrypt = (msg: string) => {\n return CryptoJS.AES.encrypt(msg, CRYPTO_KEY).toString()\n}\n\n/**\n * 解密\n * @param ciphertext 待解密字符串\n */\nexport const decrypt = (ciphertext: string) => {\n const bytes = CryptoJS.AES.decrypt(ciphertext, CRYPTO_KEY)\n return bytes.toString(CryptoJS.enc.Utf8)\n}","import Clipboard from 'clipboard'\nimport { decrypt } from '@/utils/crypto'\n\n/**\n * 复制文本到剪贴板\n * @param text 文本内容\n */\nexport const copyText = (text: string) => {\n return new Promise((resolve, reject) => {\n const fakeElement = document.createElement('button')\n const clipboard = new Clipboard(fakeElement, {\n text: () => text,\n action: () => 'copy',\n container: document.body,\n })\n clipboard.on('success', e => {\n clipboard.destroy()\n resolve(e)\n })\n clipboard.on('error', e => {\n clipboard.destroy()\n reject(e)\n })\n document.body.appendChild(fakeElement)\n fakeElement.click()\n document.body.removeChild(fakeElement)\n })\n}\n\n// 读取剪贴板\nexport const readClipboard = (): Promise => {\n return new Promise((resolve, reject) => {\n if (navigator.clipboard?.readText) {\n navigator.clipboard.readText().then(text => {\n if (!text) reject('剪贴板为空或者不包含文本')\n return resolve(text)\n })\n }\n else reject('浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V')\n })\n}\n\n// 解析加密后的剪贴板内容\nexport const pasteCustomClipboardString = (text: string) => {\n let clipboardData\n try {\n clipboardData = JSON.parse(decrypt(text))\n }\n catch {\n clipboardData = text\n }\n\n return clipboardData\n}\n\n// 尝试解析剪贴板内容是否为Excel表格(或类似的)数据格式\nexport const pasteExcelClipboardString = (text: string): string[][] | null => {\n const lines: string[] = text.split('\\r\\n')\n\n if (lines[lines.length - 1] === '') lines.pop()\n\n let colCount = -1\n const data: string[][] = []\n for (const index in lines) {\n data[index] = lines[index].split('\\t')\n\n if (data[index].length === 1) return null\n if (colCount === -1) colCount = data[index].length\n else if (colCount !== data[index].length) return null\n }\n return data\n}","import tinycolor from 'tinycolor2'\r\nimport { nanoid } from 'nanoid'\r\nimport type { PPTElement, PPTLineElement, Slide } from '@/types/slides'\r\n\r\ninterface RotatedElementData {\r\n left: number\r\n top: number\r\n width: number\r\n height: number\r\n rotate: number\r\n}\r\n\r\ninterface IdMap {\r\n [id: string]: string\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的矩形范围旋转后的新位置范围\r\n * @param element 元素的位置大小和旋转角度信息\r\n */\r\nexport const getRectRotatedRange = (element: RotatedElementData) => {\r\n const { left, top, width, height, rotate = 0 } = element\r\n\r\n const radius = Math.sqrt( Math.pow(width, 2) + Math.pow(height, 2) ) / 2\r\n const auxiliaryAngle = Math.atan(height / width) * 180 / Math.PI\r\n\r\n const tlbraRadian = (180 - rotate - auxiliaryAngle) * Math.PI / 180\r\n const trblaRadian = (auxiliaryAngle - rotate) * Math.PI / 180\r\n\r\n const middleLeft = left + width / 2\r\n const middleTop = top + height / 2\r\n\r\n const xAxis = [\r\n middleLeft + radius * Math.cos(tlbraRadian),\r\n middleLeft + radius * Math.cos(trblaRadian),\r\n middleLeft - radius * Math.cos(tlbraRadian),\r\n middleLeft - radius * Math.cos(trblaRadian),\r\n ]\r\n const yAxis = [\r\n middleTop - radius * Math.sin(tlbraRadian),\r\n middleTop - radius * Math.sin(trblaRadian),\r\n middleTop + radius * Math.sin(tlbraRadian),\r\n middleTop + radius * Math.sin(trblaRadian),\r\n ]\r\n\r\n return {\r\n xRange: [Math.min(...xAxis), Math.max(...xAxis)],\r\n yRange: [Math.min(...yAxis), Math.max(...yAxis)],\r\n }\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的矩形范围旋转后的新位置与旋转之前位置的偏离距离\r\n * @param element 元素的位置大小和旋转角度信息\r\n */\r\nexport const getRectRotatedOffset = (element: RotatedElementData) => {\r\n const { xRange: originXRange, yRange: originYRange } = getRectRotatedRange({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: 0,\r\n })\r\n const { xRange: rotatedXRange, yRange: rotatedYRange } = getRectRotatedRange({\r\n left: element.left,\r\n top: element.top,\r\n width: element.width,\r\n height: element.height,\r\n rotate: element.rotate,\r\n })\r\n return {\r\n offsetX: rotatedXRange[0] - originXRange[0],\r\n offsetY: rotatedYRange[0] - originYRange[0],\r\n }\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的位置范围\r\n * @param element 元素信息\r\n */\r\nexport const getElementRange = (element: PPTElement) => {\r\n let minX, maxX, minY, maxY\r\n\r\n if (element.type === 'line') {\r\n minX = element.left\r\n maxX = element.left + Math.max(element.start[0], element.end[0])\r\n minY = element.top\r\n maxY = element.top + Math.max(element.start[1], element.end[1])\r\n }\r\n else if ('rotate' in element && element.rotate) {\r\n const { left, top, width, height, rotate } = element\r\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\r\n minX = xRange[0]\r\n maxX = xRange[1]\r\n minY = yRange[0]\r\n maxY = yRange[1]\r\n }\r\n else {\r\n minX = element.left\r\n maxX = element.left + element.width\r\n minY = element.top\r\n maxY = element.top + element.height\r\n }\r\n return { minX, maxX, minY, maxY }\r\n}\r\n\r\n/**\r\n * 计算一组元素在画布中的位置范围\r\n * @param elementList 一组元素信息\r\n */\r\nexport const getElementListRange = (elementList: PPTElement[]) => {\r\n const leftValues: number[] = []\r\n const topValues: number[] = []\r\n const rightValues: number[] = []\r\n const bottomValues: number[] = []\r\n\r\n elementList.forEach(element => {\r\n const { minX, maxX, minY, maxY } = getElementRange(element)\r\n leftValues.push(minX)\r\n topValues.push(minY)\r\n rightValues.push(maxX)\r\n bottomValues.push(maxY)\r\n })\r\n\r\n const minX = Math.min(...leftValues)\r\n const maxX = Math.max(...rightValues)\r\n const minY = Math.min(...topValues)\r\n const maxY = Math.max(...bottomValues)\r\n\r\n return { minX, maxX, minY, maxY }\r\n}\r\n\r\nexport interface AlignLine {\r\n value: number\r\n range: [number, number]\r\n}\r\n\r\n/**\r\n * 将一组对齐吸附线进行去重:同位置的的多条对齐吸附线仅留下一条,取该位置所有对齐吸附线的最大值和最小值为新的范围\r\n * @param lines 一组对齐吸附线信息\r\n */\r\nexport const uniqAlignLines = (lines: AlignLine[]) => {\r\n const uniqLines: AlignLine[] = []\r\n lines.forEach(line => {\r\n const index = uniqLines.findIndex(_line => _line.value === line.value)\r\n if (index === -1) uniqLines.push(line)\r\n else {\r\n const uniqLine = uniqLines[index]\r\n const rangeMin = Math.min(uniqLine.range[0], line.range[0])\r\n const rangeMax = Math.max(uniqLine.range[1], line.range[1])\r\n const range: [number, number] = [rangeMin, rangeMax]\r\n const _line = { value: line.value, range }\r\n uniqLines[index] = _line\r\n }\r\n })\r\n return uniqLines\r\n}\r\n\r\n/**\r\n * 以页面列表为基础,为每一个页面生成新的ID,并关联到旧ID形成一个字典\r\n * 主要用于页面元素时,维持数据中各处页面ID原有的关系\r\n * @param slides 页面列表\r\n */\r\nexport const createSlideIdMap = (slides: Slide[]) => {\r\n const slideIdMap: IdMap = {}\r\n for (const slide of slides) {\r\n slideIdMap[slide.id] = nanoid(10)\r\n }\r\n return slideIdMap\r\n}\r\n\r\n/**\r\n * 以元素列表为基础,为每一个元素生成新的ID,并关联到旧ID形成一个字典\r\n * 主要用于复制元素时,维持数据中各处元素ID原有的关系\r\n * 例如:原本两个组合的元素拥有相同的groupId,复制后依然会拥有另一个相同的groupId\r\n * @param elements 元素列表数据\r\n */\r\nexport const createElementIdMap = (elements: PPTElement[]) => {\r\n const groupIdMap: IdMap = {}\r\n const elIdMap: IdMap = {}\r\n for (const element of elements) {\r\n const groupId = element.groupId\r\n if (groupId && !groupIdMap[groupId]) {\r\n groupIdMap[groupId] = nanoid(10)\r\n }\r\n elIdMap[element.id] = nanoid(10)\r\n }\r\n return {\r\n groupIdMap,\r\n elIdMap,\r\n }\r\n}\r\n\r\n/**\r\n * 根据表格的主题色,获取对应用于配色的子颜色\r\n * @param themeColor 主题色\r\n */\r\nexport const getTableSubThemeColor = (themeColor: string) => {\r\n const rgba = tinycolor(themeColor)\r\n return [\r\n rgba.setAlpha(0.3).toRgbString(),\r\n rgba.setAlpha(0.1).toRgbString(),\r\n ]\r\n}\r\n\r\n/**\r\n * 获取线条元素路径字符串\r\n * @param element 线条元素\r\n */\r\nexport const getLineElementPath = (element: PPTLineElement) => {\r\n const start = element.start.join(',')\r\n const end = element.end.join(',')\r\n if (element.broken) {\r\n const mid = element.broken.join(',')\r\n return `M${start} L${mid} L${end}`\r\n }\r\n else if (element.curve) {\r\n const mid = element.curve.join(',')\r\n return `M${start} Q${mid} ${end}`\r\n }\r\n else if (element.cubic) {\r\n const [c1, c2] = element.cubic\r\n const p1 = c1.join(',')\r\n const p2 = c2.join(',')\r\n return `M${start} C${p1} ${p2} ${end}`\r\n }\r\n return `M${start} L${end}`\r\n}\r\n\r\n/**\r\n * 判断一个元素是否在可视范围内\r\n * @param element 元素\r\n * @param parent 父元素\r\n */\r\nexport const isElementInViewport = (element: HTMLElement, parent: HTMLElement): boolean => {\r\n const elementRect = element.getBoundingClientRect()\r\n const parentRect = parent.getBoundingClientRect()\r\n\r\n return (\r\n elementRect.top >= parentRect.top &&\r\n elementRect.bottom <= parentRect.bottom\r\n )\r\n}","// https://iconpark.bytedance.com/official\n\nimport type { App } from 'vue'\nimport {\n PlayOne,\n FullScreenPlay,\n Lock,\n Unlock,\n Ppt,\n Format,\n Picture,\n FullScreen,\n List,\n OrderedList,\n FlipVertically,\n FlipHorizontally,\n FontSize,\n Code,\n TextBold,\n TextItalic,\n TextUnderline,\n Strikethrough,\n Edit,\n Quote,\n BackgroundColor,\n Group,\n Ungroup,\n Back,\n Next,\n Fullwidth,\n AlignTop,\n AlignLeft,\n AlignRight,\n AlignBottom,\n AlignVertically,\n AlignHorizontally,\n BringToFront,\n SendToBack,\n AlignTextLeft,\n AlignTextRight,\n AlignTextCenter,\n AlignTextBoth,\n RowHeight,\n Write,\n InsertTable,\n AddText,\n Fill,\n Tailoring,\n Effects,\n ColorFilter,\n Up,\n Down,\n Plus,\n Minus,\n Connection,\n BringToFrontOne,\n SentToBack,\n Github,\n ChartProportion,\n ChartHistogram,\n ChartHistogramOne,\n ChartLineArea,\n ChartRing,\n ChartScatter,\n ChartLine,\n ChartPie,\n Text,\n Rotate,\n LeftTwo,\n RightTwo,\n Platte,\n Close,\n CloseSmall,\n Undo,\n Transform,\n Click,\n Theme,\n ArrowCircleLeft,\n GraphicDesign,\n Logout,\n Erase,\n Clear,\n AlignTextTopOne,\n AlignTextBottomOne,\n AlignTextMiddleOne,\n Pause,\n VolumeMute,\n VolumeNotice,\n VolumeSmall,\n VideoTwo,\n Formula,\n LinkOne,\n FullScreenOne,\n OffScreenOne,\n Power,\n ListView,\n Magic,\n HighLight,\n Download,\n IndentLeft,\n IndentRight,\n VerticalSpacingBetweenItems,\n Copy,\n Delete,\n Square,\n Round,\n Needle,\n TextRotationNone,\n TextRotationDown,\n FormatBrush,\n PreviewOpen,\n PreviewClose,\n StopwatchStart,\n Search,\n Left,\n Right,\n MoveOne,\n HamburgerButton,\n Attention,\n CheckOne,\n CloseOne,\n Info,\n} from '@icon-park/vue-next'\n\nexport interface Icons {\n [key: string]: typeof PlayOne\n}\n\nexport const icons: Icons = {\n IconPlayOne: PlayOne,\n IconFullScreenPlay: FullScreenPlay,\n IconLock: Lock,\n IconUnlock: Unlock,\n IconPpt: Ppt,\n IconFormat: Format,\n IconPicture: Picture,\n IconFullScreen: FullScreen,\n IconList: List,\n IconOrderedList: OrderedList,\n IconFlipVertically: FlipVertically,\n IconFlipHorizontally: FlipHorizontally,\n IconFontSize: FontSize,\n IconCode: Code,\n IconTextBold: TextBold,\n IconTextItalic: TextItalic,\n IconTextUnderline: TextUnderline,\n IconStrikethrough: Strikethrough,\n IconEdit: Edit,\n IconQuote: Quote,\n IconBackgroundColor: BackgroundColor,\n IconGroup: Group,\n IconUngroup: Ungroup,\n IconBack: Back,\n IconNext: Next,\n IconFullwidth: Fullwidth,\n IconAlignTop: AlignTop,\n IconAlignLeft: AlignLeft,\n IconAlignRight: AlignRight,\n IconAlignBottom: AlignBottom,\n IconAlignVertically: AlignVertically,\n IconAlignHorizontally: AlignHorizontally,\n IconBringToFront: BringToFront,\n IconSendToBack: SendToBack,\n IconAlignTextLeft: AlignTextLeft,\n IconAlignTextRight: AlignTextRight,\n IconAlignTextCenter: AlignTextCenter,\n IconAlignTextBoth: AlignTextBoth,\n IconRowHeight: RowHeight,\n IconWrite: Write,\n IconInsertTable: InsertTable,\n IconAddText: AddText,\n IconFill: Fill,\n IconTailoring: Tailoring,\n IconEffects: Effects,\n IconColorFilter: ColorFilter,\n IconUp: Up,\n IconDown: Down,\n IconPlus: Plus,\n IconMinus: Minus,\n IconConnection: Connection,\n IconBringToFrontOne: BringToFrontOne,\n IconSentToBack: SentToBack,\n IconGithub: Github,\n IconChartProportion: ChartProportion,\n IconChartHistogram: ChartHistogram,\n IconChartHistogramOne: ChartHistogramOne,\n IconChartLineArea: ChartLineArea,\n IconChartRing: ChartRing,\n IconChartScatter: ChartScatter,\n IconChartLine: ChartLine,\n IconChartPie: ChartPie,\n IconText: Text,\n IconRotate: Rotate,\n IconLeftTwo: LeftTwo,\n IconRightTwo: RightTwo,\n IconPlatte: Platte,\n IconClose: Close,\n IconCloseSmall: CloseSmall,\n IconUndo: Undo,\n IconTransform: Transform,\n IconClick: Click,\n IconTheme: Theme,\n IconArrowCircleLeft: ArrowCircleLeft,\n IconGraphicDesign: GraphicDesign,\n IconLogout: Logout,\n IconErase: Erase,\n IconClear: Clear,\n IconAlignTextTopOne: AlignTextTopOne,\n IconAlignTextBottomOne: AlignTextBottomOne,\n IconAlignTextMiddleOne: AlignTextMiddleOne,\n IconPause: Pause,\n IconVolumeMute: VolumeMute,\n IconVolumeNotice: VolumeNotice,\n IconVolumeSmall: VolumeSmall,\n IconVideoTwo: VideoTwo,\n IconFormula: Formula,\n IconLinkOne: LinkOne,\n IconFullScreenOne: FullScreenOne,\n IconOffScreenOne: OffScreenOne,\n IconPower: Power,\n IconListView: ListView,\n IconMagic: Magic,\n IconHighLight: HighLight,\n IconDownload: Download,\n IconIndentLeft: IndentLeft,\n IconIndentRight: IndentRight,\n IconVerticalSpacingBetweenItems: VerticalSpacingBetweenItems,\n IconCopy: Copy,\n IconDelete: Delete,\n IconSquare: Square,\n IconRound: Round,\n IconNeedle: Needle,\n IconTextRotationNone: TextRotationNone,\n IconTextRotationDown: TextRotationDown,\n IconFormatBrush: FormatBrush,\n IconPreviewOpen: PreviewOpen,\n IconPreviewClose: PreviewClose,\n IconStopwatchStart: StopwatchStart,\n IconSearch: Search,\n IconLeft: Left,\n IconRight: Right,\n IconMoveOne: MoveOne,\n IconHamburgerButton: HamburgerButton,\n IconAttention: Attention,\n IconCheckOne: CheckOne,\n IconCloseOne: CloseOne,\n IconInfo: Info,\n}\n\nexport default {\n install(app: App) {\n for (const key of Object.keys(icons)) {\n app.component(key, icons[key])\n }\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createVNode as _createVNode, Transition as _Transition, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-03d14766\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"id\"]\nconst _hoisted_2 = { class: \"icons\" }\nconst _hoisted_3 = { class: \"content\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"title\"\n}\nconst _hoisted_5 = { class: \"description\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"control\"\n}\n\nimport { onMounted, ref, onBeforeMount } from 'vue'\nimport { icons } from '@/plugins/icon'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Message',\n props: {\n id: {},\n message: {},\n type: { default: 'success' },\n title: { default: '' },\n duration: { default: 3000 },\n closable: { type: Boolean, default: false }\n },\n emits: [\"close\", \"destroy\"],\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\nconst {\n IconAttention,\n IconCheckOne,\n IconCloseOne,\n IconInfo,\n IconCloseSmall,\n} = icons\n\nconst props = __props\n\nconst emit = __emit\n\nconst visible = ref(true)\nconst timer = ref(null)\n\nconst startTimer = () => {\n if (props.duration <= 0) return\n timer.value = setTimeout(close, props.duration)\n}\nconst clearTimer = () => {\n if (timer.value) clearTimeout(timer.value)\n}\n\nconst close = () => visible.value = false\n\nonBeforeMount(() => {\n clearTimer()\n})\nonMounted(() => {\n startTimer()\n})\n\n__expose({\n close,\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Transition, {\n name: \"message-fade\",\n appear: \"\",\n mode: \"in-out\",\n onBeforeLeave: _cache[3] || (_cache[3] = ($event: any) => (emit('close'))),\n onAfterLeave: _cache[4] || (_cache[4] = ($event: any) => (emit('destroy')))\n }, {\n default: _withCtx(() => [\n (visible.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"message\",\n id: _ctx.id\n }, [\n _createElementVNode(\"div\", {\n class: \"message-container\",\n onMouseenter: _cache[1] || (_cache[1] = ($event: any) => (clearTimer())),\n onMouseleave: _cache[2] || (_cache[2] = ($event: any) => (startTimer()))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.type === 'warning')\n ? (_openBlock(), _createBlock(_unref(IconAttention), {\n key: 0,\n theme: \"filled\",\n size: \"18\",\n fill: \"#faad14\"\n }))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'success')\n ? (_openBlock(), _createBlock(_unref(IconCheckOne), {\n key: 1,\n theme: \"filled\",\n size: \"18\",\n fill: \"#52c41a\"\n }))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'error')\n ? (_openBlock(), _createBlock(_unref(IconCloseOne), {\n key: 2,\n theme: \"filled\",\n size: \"18\",\n fill: \"#ff4d4f\"\n }))\n : _createCommentVNode(\"\", true),\n (_ctx.type === 'info')\n ? (_openBlock(), _createBlock(_unref(IconInfo), {\n key: 3,\n theme: \"filled\",\n size: \"18\",\n fill: \"#1677ff\"\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.title)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_ctx.title), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_ctx.message), 1)\n ]),\n (_ctx.closable)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createElementVNode(\"span\", {\n class: \"close-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (close()))\n }, [\n _createVNode(_unref(IconCloseSmall))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 32)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n}\n}\n\n})","\n\n\n\n","import script from \"./Message.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Message.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Message.vue?vue&type=style&index=0&id=03d14766&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-03d14766\"]])\n\nexport default __exports__","import { createVNode, render, type AppContext } from 'vue'\nimport MessageComponent from '@/components/Message.vue'\n\nexport interface MessageOptions {\n type?: 'info' | 'success' | 'warning' | 'error'\n title?: string\n message?: string\n duration?: number\n closable?: boolean\n ctx?: AppContext\n onClose?: () => void\n}\n\nexport type MessageTypeOptions = Omit\nexport interface MessageIntance {\n id: string\n close: () => void\n}\n\nexport type MessageFn = (message: string, options?: MessageTypeOptions) => MessageIntance\nexport interface Message {\n (options: MessageOptions): MessageIntance\n info: MessageFn\n success: MessageFn\n error: MessageFn\n warning: MessageFn\n closeAll: () => void\n _context?: AppContext | null\n}\n\nconst instances: MessageIntance[] = []\nlet wrap: HTMLDivElement | null = null\nlet seed = 0\nconst defaultOptions: MessageOptions = {\n duration: 3000,\n}\n\nconst message: Message = (options: MessageOptions) => {\n const id = 'message-' + seed++\n const props = {\n ...defaultOptions,\n ...options,\n id,\n }\n\n if (!wrap) {\n wrap = document.createElement('div')\n wrap.className = 'message-wrap'\n wrap.style.cssText = `\n width: 100%;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 6000;\n pointer-events: none;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: 15px;\n background-color: rgba(255, 255, 255, 0);\n transition: all 1s ease-in-out;\n align-items: center;\n `\n document.body.appendChild(wrap)\n }\n\n const vm = createVNode(MessageComponent, props, null)\n const div = document.createElement('div')\n\n vm.appContext = options.ctx || message._context || null\n vm.props!.onClose = options.onClose\n vm.props!.onDestroy = () => {\n if (wrap && wrap.childNodes.length <= 1) {\n wrap.remove()\n wrap = null\n }\n render(null, div)\n }\n\n render(vm, div)\n wrap.appendChild(div.firstElementChild!)\n\n const instance = {\n id,\n close: () => vm?.component?.exposed?.close(),\n }\n\n instances.push(instance)\n return instance\n}\n\nmessage.success = (msg: string, options?: MessageTypeOptions) => message({ ...options, type: 'success', message: msg })\nmessage.info = (msg: string, options?: MessageTypeOptions) => message({ ...options, type: 'info', message: msg })\nmessage.warning = (msg: string, options?: MessageTypeOptions) => message({ ...options, type: 'warning', message: msg })\nmessage.error = (msg: string, options?: MessageTypeOptions) => message({ ...options, type: 'error', message: msg })\n\nmessage.closeAll = function() {\n for (let i = instances.length - 1; i >= 0; i--) {\n instances[i].close()\n }\n}\n\nexport default message","/**\r\n * 将普通文本转为带段落信息的HTML字符串\r\n * @param text 文本\r\n */\r\nexport const parseText2Paragraphs = (text: string) => {\r\n const htmlText = text.replace(/[\\n\\r]+/g, '
')\r\n const paragraphs = htmlText.split('
')\r\n let string = ''\r\n for (const paragraph of paragraphs) {\r\n if (paragraph) string += `
${paragraph}
`\r\n }\r\n return string\r\n}","interface ImageSize {\n width: number\n height: number\n}\n\n/**\n * 获取图片的原始宽高\n * @param src 图片地址\n */\nexport const getImageSize = (src: string): Promise => {\n return new Promise(resolve => {\n const img = document.createElement('img')\n img.src = src\n img.style.opacity = '0'\n document.body.appendChild(img)\n\n img.onload = () => {\n const imgWidth = img.clientWidth\n const imgHeight = img.clientHeight\n \n img.onload = null\n img.onerror = null\n\n document.body.removeChild(img)\n\n resolve({ width: imgWidth, height: imgHeight })\n }\n\n img.onerror = () => {\n img.onload = null\n img.onerror = null\n }\n })\n}\n\n/**\n * 读取图片文件的dataURL\n * @param file 图片文件\n */\nexport const getImageDataURL = (file: File): Promise => {\n return new Promise(resolve => {\n const reader = new FileReader()\n reader.addEventListener('load', () => {\n resolve(reader.result as string)\n })\n reader.readAsDataURL(file)\n })\n}","export const VIEWPORT_SIZE = 1000","import type { BarChartOptions, LineChartOptions, PieChartOptions } from 'chartist'\n\nexport const enum ShapePathFormulasKeys {\n ROUND_RECT = 'roundRect',\n ROUND_RECT_DIAGONAL = 'roundRectDiagonal',\n ROUND_RECT_SINGLE = 'roundRectSingle',\n ROUND_RECT_SAMESIDE = 'roundRectSameSide',\n CUT_RECT_DIAGONAL = 'cutRectDiagonal',\n CUT_RECT_SINGLE = 'cutRectSingle',\n CUT_RECT_SAMESIDE = 'cutRectSameSide',\n CUT_ROUND_RECT = 'cutRoundRect',\n MESSAGE = 'message',\n ROUND_MESSAGE = 'roundMessage',\n L = 'L',\n RING_RECT = 'ringRect',\n PLUS = 'plus',\n TRIANGLE = 'triangle',\n PARALLELOGRAM_LEFT = 'parallelogramLeft',\n PARALLELOGRAM_RIGHT = 'parallelogramRight',\n TRAPEZOID = 'trapezoid',\n BULLET = 'bullet',\n INDICATOR = 'indicator',\n}\n\nexport const enum ElementTypes {\n TEXT = 'text',\n IMAGE = 'image',\n SHAPE = 'shape',\n LINE = 'line',\n CHART = 'chart',\n TABLE = 'table',\n LATEX = 'latex',\n VIDEO = 'video',\n AUDIO = 'audio',\n}\n\n/**\n * 元素阴影\n * \n * h: 水平偏移量\n * \n * v: 垂直偏移量\n * \n * blur: 模糊程度\n * \n * color: 阴影颜色\n */\nexport interface PPTElementShadow {\n h: number\n v: number\n blur: number\n color: string\n}\n\n/**\n * 元素边框\n * \n * style?: 边框样式(实线或虚线)\n * \n * width?: 边框宽度\n * \n * color?: 边框颜色\n */\nexport interface PPTElementOutline {\n style?: 'dashed' | 'solid'\n width?: number\n color?: string\n}\n\n/**\n * 元素超链接\n * \n * type: 链接类型(网页、幻灯片页面)\n * \n * target: 目标地址(网页链接、幻灯片页面ID)\n */\nexport interface PPTElementLink {\n type: 'web' | 'slide'\n target: string\n}\n\n\n/**\n * 元素通用属性\n * \n * id: 元素ID\n * \n * left: 元素水平方向位置(距离画布左侧)\n * \n * top: 元素垂直方向位置(距离画布顶部)\n * \n * lock?: 锁定元素\n * \n * groupId?: 组合ID(拥有相同组合ID的元素即为同一组合元素成员)\n * \n * width: 元素宽度\n * \n * height: 元素高度\n * \n * rotate: 旋转角度\n * \n * link?: 超链接\n * \n * name?: 元素名\n */\ninterface PPTBaseElement {\n id: string\n left: number\n top: number\n lock?: boolean\n groupId?: string\n width: number\n height: number\n rotate: number\n link?: PPTElementLink\n name?: string\n}\n\n\n/**\n * 文本元素\n * \n * type: 元素类型(text)\n * \n * content: 文本内容(HTML字符串)\n * \n * defaultFontName: 默认字体(会被文本内容中的HTML内联样式覆盖)\n * \n * defaultColor: 默认颜色(会被文本内容中的HTML内联样式覆盖)\n * \n * outline?: 边框\n * \n * fill?: 填充色\n * \n * lineHeight?: 行高(倍),默认1.5\n * \n * wordSpace?: 字间距,默认0\n * \n * opacity?: 不透明度,默认1\n * \n * shadow?: 阴影\n * \n * paragraphSpace?: 段间距,默认 5px\n * \n * vertical?: 竖向文本\n */\nexport interface PPTTextElement extends PPTBaseElement {\n type: 'text'\n content: string\n defaultFontName: string\n defaultColor: string\n outline?: PPTElementOutline\n fill?: string\n lineHeight?: number\n wordSpace?: number\n opacity?: number\n shadow?: PPTElementShadow\n paragraphSpace?: number\n vertical?: boolean\n}\n\n\n/**\n * 图片翻转、形状翻转\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n */\nexport interface ImageOrShapeFlip {\n flipH?: boolean\n flipV?: boolean\n}\n\n/**\n * 图片滤镜\n * \n * https://developer.mozilla.org/zh-CN/docs/Web/CSS/filter\n * \n * 'blur'?: 模糊,默认0(px)\n * \n * 'brightness'?: 亮度,默认100(%)\n * \n * 'contrast'?: 对比度,默认100(%)\n * \n * 'grayscale'?: 灰度,默认0(%)\n * \n * 'saturate'?: 饱和度,默认100(%)\n * \n * 'hue-rotate'?: 色相旋转,默认0(deg)\n * \n * 'opacity'?: 不透明度,默认100(%)\n */\nexport type ImageElementFilterKeys = 'blur' | 'brightness' | 'contrast' | 'grayscale' | 'saturate' | 'hue-rotate' | 'opacity'\nexport interface ImageElementFilters {\n 'blur'?: string\n 'brightness'?: string\n 'contrast'?: string\n 'grayscale'?: string\n 'saturate'?: string\n 'hue-rotate'?: string\n 'opacity'?: string\n}\n\nexport type ImageClipDataRange = [[number, number], [number, number]]\n\n/**\n * 图片裁剪\n * \n * range: 裁剪范围,例如:[[10, 10], [90, 90]] 表示裁取原图从左上角 10%, 10% 到 90%, 90% 的范围\n * \n * shape: 裁剪形状,见 configs/imageClip.ts CLIPPATHS \n */\nexport interface ImageElementClip {\n range: ImageClipDataRange\n shape: string\n}\n\n/**\n * 图片元素\n * \n * type: 元素类型(image)\n * \n * fixedRatio: 固定图片宽高比例\n * \n * src: 图片地址\n * \n * outline?: 边框\n * \n * filters?: 图片滤镜\n * \n * clip?: 裁剪信息\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n * \n * shadow?: 阴影\n */\nexport interface PPTImageElement extends PPTBaseElement {\n type: 'image'\n fixedRatio: boolean\n src: string\n outline?: PPTElementOutline\n filters?: ImageElementFilters\n clip?: ImageElementClip\n flipH?: boolean\n flipV?: boolean\n shadow?: PPTElementShadow\n colorMask?: string\n}\n\n\n/**\n * 形状渐变\n * \n * type: 渐变类型(径向、线性)\n * \n * color: 渐变颜色\n * \n * rotate: 渐变角度(线性渐变)\n */\nexport interface ShapeGradient {\n type: 'linear' | 'radial'\n color: [string, string]\n rotate: number\n}\n\nexport type ShapeTextAlign = 'top' | 'middle' | 'bottom' \n\n/**\n * 形状内文本\n * \n * content: 文本内容(HTML字符串)\n * \n * defaultFontName: 默认字体(会被文本内容中的HTML内联样式覆盖)\n * \n * defaultColor: 默认颜色(会被文本内容中的HTML内联样式覆盖)\n * \n * align: 文本对齐方向(垂直方向)\n */\nexport interface ShapeText {\n content: string\n defaultFontName: string\n defaultColor: string\n align: ShapeTextAlign\n}\n\n/**\n * 形状元素\n * \n * type: 元素类型(shape)\n * \n * viewBox: SVG的viewBox属性,例如 [1000, 1000] 表示 '0 0 1000 1000'\n * \n * path: 形状路径,SVG path 的 d 属性\n * \n * fixedRatio: 固定形状宽高比例\n * \n * fill: 填充,不存在渐变时生效\n * \n * gradient?: 渐变,该属性存在时将优先作为填充\n * \n * outline?: 边框\n * \n * opacity?: 不透明度\n * \n * flipH?: 水平翻转\n * \n * flipV?: 垂直翻转\n * \n * shadow?: 阴影\n * \n * special?: 特殊形状(标记一些难以解析的形状,例如路径使用了 L Q C A 以外的类型,该类形状在导出后将变为图片的形式)\n * \n * text?: 形状内文本\n * \n * pathFormula?: 形状路径计算公式\n * 一般情况下,形状的大小变化时仅由宽高基于 viewBox 的缩放比例来调整形状,而 viewBox 本身和 path 不会变化,\n * 但也有一些形状希望能更精确的控制一些关键点的位置,此时就需要提供路径计算公式,通过在缩放时更新 viewBox 并重新计算 path 来重新绘制形状\n * \n * keypoint?: 关键点位置百分比\n */\nexport interface PPTShapeElement extends PPTBaseElement {\n type: 'shape'\n viewBox: [number, number]\n path: string\n fixedRatio: boolean\n fill: string\n gradient?: ShapeGradient\n outline?: PPTElementOutline\n opacity?: number\n flipH?: boolean\n flipV?: boolean\n shadow?: PPTElementShadow\n special?: boolean\n text?: ShapeText\n pathFormula?: ShapePathFormulasKeys\n keypoint?: number\n}\n\n\nexport type LinePoint = '' | 'arrow' | 'dot' \n\n/**\n * 线条元素\n * \n * type: 元素类型(line)\n * \n * start: 起点位置([x, y])\n * \n * end: 终点位置([x, y])\n * \n * style: 线条样式(实线、虚线)\n * \n * color: 线条颜色\n * \n * points: 端点样式([起点样式, 终点样式],可选:无、箭头、圆点)\n * \n * shadow?: 阴影\n * \n * broken?: 折线控制点位置([x, y])\n * \n * curve?: 二次曲线控制点位置([x, y])\n * \n * cubic?: 三次曲线控制点位置([[x1, y1], [x2, y2]])\n */\nexport interface PPTLineElement extends Omit {\n type: 'line'\n start: [number, number]\n end: [number, number]\n style: 'solid' | 'dashed'\n color: string\n points: [LinePoint, LinePoint]\n shadow?: PPTElementShadow\n broken?: [number, number]\n curve?: [number, number]\n cubic?: [[number, number], [number, number]]\n}\n\n\nexport type PresetChartType = 'bar' | 'horizontalBar' | 'line' | 'area' | 'scatter' | 'pie' | 'ring'\nexport type ChartType = 'bar' | 'line' | 'pie'\nexport type ChartOptions = LineChartOptions & BarChartOptions & PieChartOptions\nexport interface ChartData {\n labels: string[]\n legends: string[]\n series: number[][]\n}\n\n/**\n * 图表元素\n * \n * type: 元素类型(chart)\n * \n * fill?: 填充色\n * \n * chartType: 图表基础类型(bar/line/pie),所有图表类型都是由这三种基本类型衍生而来\n * \n * data: 图表数据\n * \n * options?: 图表配置项\n * \n * outline?: 边框\n * \n * themeColor: 主题色\n * \n * gridColor?: 网格&坐标颜色\n * \n * legend?: 图例/位置\n */\nexport interface PPTChartElement extends PPTBaseElement {\n type: 'chart'\n fill?: string\n chartType: ChartType\n data: ChartData\n options?: ChartOptions\n outline?: PPTElementOutline\n themeColor: string[]\n gridColor?: string\n legend?: '' | 'top' | 'bottom'\n}\n\n\n/**\n * 表格单元格样式\n * \n * bold?: 加粗\n * \n * em?: 斜体\n * \n * underline?: 下划线\n * \n * strikethrough?: 删除线\n * \n * color?: 字体颜色\n * \n * backcolor?: 填充色\n * \n * fontsize?: 字体大小\n * \n * fontname?: 字体\n * \n * align?: 对齐方式\n */\nexport interface TableCellStyle {\n bold?: boolean\n em?: boolean\n underline?: boolean\n strikethrough?: boolean\n color?: string\n backcolor?: string\n fontsize?: string\n fontname?: string\n align?: 'left' | 'center' | 'right'\n}\n\n\n/**\n * 表格单元格\n * \n * id: 单元格ID\n * \n * colspan: 合并列数\n * \n * rowspan: 合并行数\n * \n * text: 文字内容\n * \n * style?: 单元格样式\n */\nexport interface TableCell {\n id: string\n colspan: number\n rowspan: number\n text: string\n style?: TableCellStyle\n}\n\n/**\n * 表格主题\n * \n * color: 主题色\n * \n * rowHeader: 标题行\n * \n * rowFooter: 汇总行\n * \n * colHeader: 第一列\n * \n * colFooter: 最后一列\n */\nexport interface TableTheme {\n color: string\n rowHeader: boolean\n rowFooter: boolean\n colHeader: boolean\n colFooter: boolean\n}\n\n/**\n * 表格元素\n * \n * type: 元素类型(table)\n * \n * outline: 边框\n * \n * theme?: 主题\n * \n * colWidths: 列宽数组,如[30, 50, 20]表示三列宽度分别为30%, 50%, 20%\n * \n * cellMinHeight: 单元格最小高度\n * \n * data: 表格数据\n */\nexport interface PPTTableElement extends PPTBaseElement {\n type: 'table'\n outline: PPTElementOutline\n theme?: TableTheme\n colWidths: number[]\n cellMinHeight: number\n data: TableCell[][]\n}\n\n\n/**\n * LaTeX元素(公式)\n * \n * type: 元素类型(latex)\n * \n * latex: latex代码\n * \n * path: svg path\n * \n * color: 颜色\n * \n * strokeWidth: 路径宽度\n * \n * viewBox: SVG的viewBox属性\n * \n * fixedRatio: 固定形状宽高比例\n */\nexport interface PPTLatexElement extends PPTBaseElement {\n type: 'latex'\n latex: string\n path: string\n color: string\n strokeWidth: number\n viewBox: [number, number]\n fixedRatio: boolean\n}\n\n/**\n * 视频元素\n * \n * type: 元素类型(video)\n * \n * src: 视频地址\n * \n * autoplay: 自动播放\n * \n * poster: 预览封面\n * \n * ext: 视频后缀,当资源链接缺少后缀时用该字段确认资源类型\n */\nexport interface PPTVideoElement extends PPTBaseElement {\n type: 'video'\n src: string\n autoplay: boolean\n poster?: string\n ext?: string\n}\n\n/**\n * 音频元素\n * \n * type: 元素类型(audio)\n * \n * fixedRatio: 固定图标宽高比例\n * \n * color: 图标颜色\n * \n * loop: 循环播放\n * \n * autoplay: 自动播放\n * \n * src: 音频地址\n * \n * ext: 音频后缀,当资源链接缺少后缀时用该字段确认资源类型\n */\nexport interface PPTAudioElement extends PPTBaseElement {\n type: 'audio'\n fixedRatio: boolean\n color: string\n loop: boolean\n autoplay: boolean\n src: string\n ext?: string\n}\n\n\nexport type PPTElement = PPTTextElement | PPTImageElement | PPTShapeElement | PPTLineElement | PPTChartElement | PPTTableElement | PPTLatexElement | PPTVideoElement | PPTAudioElement\n\n\n/**\n * 元素动画\n * \n * id: 动画id\n * \n * elId: 元素ID\n * \n * effect: 动画效果\n * \n * type: 动画类型(入场、退场、强调)\n * \n * duration: 动画持续时间\n * \n * trigger: 动画触发方式(click - 单击时、meantime - 与上一动画同时、auto - 上一动画之后)\n */\nexport interface PPTAnimation {\n id: string\n elId: string\n effect: string\n type: 'in' | 'out' | 'attention'\n duration: number\n trigger: 'click' | 'meantime' | 'auto'\n}\n\n/**\n * 幻灯片背景\n * \n * type: 背景类型(纯色、图片、渐变)\n * \n * color?: 背景颜色(纯色)\n * \n * image?: 图片地址(图片)\n * \n * imageSize?: 图片填充方式\n * \n * gradientType?: 渐变类型(线性、径向)\n * \n * gradientColor?: 渐变颜色\n * \n * gradientRotate?: 渐变角度(线性)\n */\nexport interface SlideBackground {\n type: 'solid' | 'image' | 'gradient'\n color?: string\n image?: string\n imageSize?: 'cover' | 'contain' | 'repeat'\n gradientType?: 'linear' | 'radial'\n gradientColor?: [string, string]\n gradientRotate?: number\n}\n\n\nexport type TurningMode = 'no' | 'fade' | 'slideX' | 'slideY' | 'random' | 'slideX3D' | 'slideY3D' | 'rotate' | 'scaleY' | 'scaleX' | 'scale' | 'scaleReverse'\n\n/**\n * 幻灯片页面\n * \n * id: 页面ID\n * \n * elements: 元素集合\n * \n * remark?: 备注\n * \n * background?: 页面背景\n * \n * animations?: 元素动画集合\n * \n * turningMode?: 翻页方式\n */\nexport interface Slide {\n id: string\n elements: PPTElement[]\n remark?: string\n background?: SlideBackground\n animations?: PPTAnimation[]\n turningMode?: TurningMode\n}\n\n/**\n * 幻灯片主题\n * \n * backgroundColor: 页面背景颜色\n * \n * themeColor: 主题色,用于默认创建的形状颜色等\n * \n * fontColor: 字体颜色\n * \n * fontName: 字体\n */\nexport interface SlideTheme {\n backgroundColor: string\n themeColor: string\n fontColor: string\n fontName: string\n outline: PPTElementOutline\n shadow: PPTElementShadow\n}\n","/* eslint-disable max-lines */\n\n// 非专业设计人士可以用该应用绘制基本形状:https://github.com/pipipi-pikachu/svgPathCreator\n\nimport { ShapePathFormulasKeys } from '@/types/slides'\n\nexport interface ShapePoolItem {\n viewBox: [number, number]\n path: string\n special?: boolean\n pathFormula?: ShapePathFormulasKeys\n outlined?: boolean\n pptxShapeType?: string\n title?: string\n}\n\ninterface ShapeListItem {\n type: string\n children: ShapePoolItem[]\n}\n\nexport const SHAPE_PATH_FORMULAS = {\n [ShapePathFormulasKeys.ROUND_RECT]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height - radius} Q ${width} ${height} ${width - radius} ${height} L ${radius} ${height} Q 0 ${height} 0 ${height - radius} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n }\n },\n [ShapePathFormulasKeys.CUT_RECT_DIAGONAL]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${height - radius} L 0 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L ${radius} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.CUT_RECT_SINGLE]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${height} L 0 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.CUT_RECT_SAMESIDE]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${radius} L ${radius} 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_RECT_DIAGONAL]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 1],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M ${radius} 0 L ${width} 0 L ${width} ${height - radius} Q ${width} ${height} ${width - radius} ${height} L 0 ${height} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_RECT_SINGLE]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 1],\n relative: 'right',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height} L 0 ${height} L 0 0 Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_RECT_SAMESIDE]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M 0 ${radius} Q 0 0 ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.CUT_ROUND_RECT]: {\n editable: true,\n defaultValue: 0.125,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const radius = Math.min(width, height) * value\n return `M ${radius} 0 L ${width - radius} 0 L ${width} ${radius} L ${width} ${height} L 0 ${height} L 0 ${radius} Q 0 0 ${radius} 0 Z`\n }\n },\n [ShapePathFormulasKeys.MESSAGE]: {\n formula: (width: number, height: number) => {\n const arrowWidth = width * 0.2\n const arrowheight = height * 0.2\n return `M 0 0 L ${width} 0 L ${width} ${height - arrowheight} L ${width / 2} ${height - arrowheight} L ${width / 2 - arrowWidth} ${height} L ${width / 2 - arrowWidth} ${height - arrowheight} L 0 ${height - arrowheight} Z`\n }\n },\n [ShapePathFormulasKeys.ROUND_MESSAGE]: {\n formula: (width: number, height: number) => {\n const radius = Math.min(width, height) * 0.125\n const arrowWidth = width * 0.2\n const arrowheight = height * 0.2\n return `M 0 ${radius} Q 0 0 ${radius} 0 L ${width - radius} 0 Q ${width} 0 ${width} ${radius} L ${width} ${height - radius - arrowheight} Q ${width} ${height - arrowheight} ${width - radius} ${height - arrowheight} L ${width / 2} ${height - arrowheight} L ${width / 2 - arrowWidth} ${height} L ${width / 2 - arrowWidth} ${height - arrowheight} L ${radius} ${height - arrowheight} Q 0 ${height - arrowheight} 0 ${height - radius - arrowheight} L 0 ${radius} Z`\n }\n },\n [ShapePathFormulasKeys.L]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.9],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\n return `M 0 0 L 0 ${height} L ${width} ${height} L ${width} ${height - lineWidth} L ${lineWidth} ${height - lineWidth} L ${lineWidth} 0 Z`\n }\n },\n [ShapePathFormulasKeys.RING_RECT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.45],\n relative: 'left',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\n return `M 0 0 ${width} 0 ${width} ${height} L 0 ${height} L 0 0 Z M ${lineWidth} ${lineWidth} L ${lineWidth} ${height - lineWidth} L ${width - lineWidth} ${height - lineWidth} L ${width - lineWidth} ${lineWidth} Z`\n }\n },\n [ShapePathFormulasKeys.PLUS]: {\n editable: true,\n defaultValue: 0.25,\n range: [0.1, 0.9],\n relative: 'center',\n getBaseSize: (width: number, height: number) => Math.min(width, height),\n formula: (width: number, height: number, value: number) => {\n const lineWidth = Math.min(width, height) * value\n return `M ${width / 2 - lineWidth / 2} 0 L ${width / 2 - lineWidth / 2} ${height / 2 - lineWidth / 2} L 0 ${height / 2 - lineWidth / 2} L 0 ${height / 2 + lineWidth / 2} L ${width / 2 - lineWidth / 2} ${height / 2 + lineWidth / 2} L ${width / 2 - lineWidth / 2} ${height} L ${width / 2 + lineWidth / 2} ${height} L ${width / 2 + lineWidth / 2} ${height / 2 + lineWidth / 2} L ${width} ${height / 2 + lineWidth / 2} L ${width} ${height / 2 - lineWidth / 2} L ${width / 2 + lineWidth / 2} ${height / 2 - lineWidth / 2} L ${width / 2 + lineWidth / 2} 0 Z`\n }\n },\n [ShapePathFormulasKeys.TRIANGLE]: {\n editable: true,\n defaultValue: 0.5,\n range: [0, 1],\n relative: 'left',\n getBaseSize: (width: number) => width,\n formula: (width: number, height: number, value: number) => {\n const vertex = width * value\n return `M ${vertex} 0 L 0 ${height} L ${width} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.PARALLELOGRAM_LEFT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.9],\n relative: 'left',\n getBaseSize: (width: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${point} 0 L ${width} 0 L ${width - point} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.PARALLELOGRAM_RIGHT]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M 0 0 L ${width - point} 0 L ${width} ${height} L ${point} ${height} Z`\n }\n },\n [ShapePathFormulasKeys.TRAPEZOID]: {\n editable: true,\n defaultValue: 0.25,\n range: [0, 0.5],\n relative: 'left',\n getBaseSize: (width: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${point} 0 L ${width - point} 0 L ${width} ${height} L 0 ${height} Z`\n }\n },\n [ShapePathFormulasKeys.BULLET]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 1],\n relative: 'top',\n getBaseSize: (width: number, height: number) => height,\n formula: (width: number, height: number, value: number) => {\n const point = height * value\n return `M ${width / 2} 0 L 0 ${point} L 0 ${height} L ${width} ${height} L ${width} ${point} Z`\n }\n },\n [ShapePathFormulasKeys.INDICATOR]: {\n editable: true,\n defaultValue: 0.2,\n range: [0, 0.9],\n relative: 'right',\n getBaseSize: (width: number) => width,\n formula: (width: number, height: number, value: number) => {\n const point = width * value\n return `M ${width} ${height / 2} L ${width - point} 0 L 0 0 L ${point} ${height / 2} L 0 ${height} L ${width - point} ${height} Z`\n }\n },\n}\n\nexport const SHAPE_LIST: ShapeListItem[] = [\n {\n type: '矩形',\n children: [\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n pptxShapeType: 'rect',\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 Q 200 0 200 50 L 200 150 Q 200 200 150 200 L 50 200 Q 0 200 0 150 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT,\n pptxShapeType: 'roundRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_SINGLE,\n pptxShapeType: 'snip1Rect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_SAMESIDE,\n pptxShapeType: 'snip2SameRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 Z',\n pathFormula: ShapePathFormulasKeys.CUT_RECT_DIAGONAL,\n pptxShapeType: 'snip2DiagRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.CUT_ROUND_RECT,\n pptxShapeType: 'snipRoundRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_SINGLE,\n pptxShapeType: 'round1Rect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_SAMESIDE,\n pptxShapeType: 'round2SameRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 200 0 L 200 150 Q 200 200 150 200 L 0 200 L 0 50 Q 0 0 50 0 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_RECT_DIAGONAL,\n pptxShapeType: 'round2DiagRect',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 80 L 60 0 L 100 40 L 180 20 L 200 120 L 160 200 L 0 200 L 60 140 Z',\n title: '任意多边形',\n },\n ]\n },\n\n {\n type: '常用形状',\n children: [\n {\n viewBox: [200, 200],\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z',\n pptxShapeType: 'ellipse',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 200 L 200 200 L 100 0 Z',\n pathFormula: ShapePathFormulasKeys.TRIANGLE,\n pptxShapeType: 'triangle',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 0 200 L 200 200 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 70 20 L 0 160 Q 0 200 40 200 L 160 200 Q 200 200 200 160 L 130 20 Q 100 -20 70 20 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z',\n pathFormula: ShapePathFormulasKeys.PARALLELOGRAM_LEFT,\n pptxShapeType: 'parallelogram',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z',\n pathFormula: ShapePathFormulasKeys.PARALLELOGRAM_RIGHT,\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z',\n pathFormula: ShapePathFormulasKeys.TRAPEZOID,\n pptxShapeType: 'trapezoid',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z',\n pptxShapeType: 'diamond',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z',\n pathFormula: ShapePathFormulasKeys.BULLET,\n },\n {\n viewBox: [200, 200],\n path: 'M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z',\n pathFormula: ShapePathFormulasKeys.INDICATOR,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 C 80 20 120 20 200 0 C 180 80 180 120 200 200 C 80 180 120 180 0 200 C 20 120 20 80 0 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 10 10 C 60 0 140 0 190 10 C 200 60 200 140 190 190 C 140 200 60 200 10 190 C 0 140 0 60 10 10 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 200 A 50 100 0 1 1 200 200 L 0 200 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 40 20 A 100 100 0 1 0 200 100 L 100 100 L 40 20 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z',\n pptxShapeType: 'pie',\n },\n {\n viewBox: [200, 200],\n path: 'M 160 20 A 100 100 0 1 0 200 100 L 100 100 L 160 20 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z',\n pptxShapeType: 'chord',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z',\n pptxShapeType: 'teardrop',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z',\n pptxShapeType: 'pentagon',\n },\n {\n viewBox: [200, 200],\n path: 'M 40 0 L 160 0 L 200 100 L 160 200 L 40 200 L 0 100 Z',\n pptxShapeType: 'hexagon',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z',\n pptxShapeType: 'octagon',\n },\n {\n viewBox: [200, 200],\n path: 'M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 A 25 50 0 1 0 50 200 L 150 200 A 25 50 0 1 0 150 0 L 50 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z',\n pathFormula: ShapePathFormulasKeys.L\n },\n {\n viewBox: [200, 200],\n path: 'M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z',\n pathFormula: ShapePathFormulasKeys.RING_RECT,\n },\n {\n viewBox: [200, 200],\n path: 'M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z',\n pathFormula: ShapePathFormulasKeys.PLUS,\n },\n {\n viewBox: [200, 200],\n path: 'M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 Z',\n pathFormula: ShapePathFormulasKeys.MESSAGE,\n },\n {\n viewBox: [200, 200],\n path: 'M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z',\n pathFormula: ShapePathFormulasKeys.ROUND_MESSAGE,\n },\n {\n viewBox: [200, 200],\n path: 'M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 20 C 60 60 140 -40 200 20 L 200 180 C 140 140 60 240 0 180 L 0 20 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 20 C 40 -40 60 60 100 20 C 140 -40 160 60 200 20 L 200 180 C 140 240 160 140 100 180 C 40 240 60 140 0 180 L 0 20 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 Q 0 50 0 175 Q 100 225 200 175 Q 200 50 100 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 A 50 50 0 1 1 200 100 L 100 200 L 0 100 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 120 80 L 200 100 L 120 120 L 100 200 L 80 120 L 0 100 L 80 80 L 100 0 Z',\n pptxShapeType: 'star4',\n },\n {\n viewBox: [1024, 1024],\n path: 'M1018.67652554 400.05983681l-382.95318779-5.89158658L512 34.78141155 388.27666225 394.16825023l-382.95318779 5.89158658L311.68602415 629.83174977l-117.83174978 365.27842665 312.25413766-223.88032637 312.25413904 223.88032637-117.83175116-365.27842665 318.14572563-229.77191296z',\n pptxShapeType: 'star5',\n special: true,\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 60 60 L 0 100 L 60 140 L 100 200 L 140 140 L 200 100 L 140 60 L 100 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 140 60 L 200 60 L 160 100 L 200 140 L 140 140 L 100 200 L 60 140 L 0 140 L 40 100 L 0 60 L 60 60 L 100 0 Z',\n pptxShapeType: 'star6',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 80 40 L 20 20 L 40 80 L 0 100 L 40 120 L 20 180 L 80 160 L 100 200 L 120 160 L 180 180 L 160 120 L 200 100 L 160 80 L 180 20 L 120 40 L 100 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 C 80 40 80 160 200 200 C -60 200 -60 0 200 0 Z',\n },\n ],\n },\n \n {\n type: '箭头',\n children: [\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z',\n pptxShapeType: 'upArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z',\n pptxShapeType: 'downArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z',\n pptxShapeType: 'leftArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z',\n pptxShapeType: 'rightArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z',\n pptxShapeType: 'upDownArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z',\n pptxShapeType: 'leftRightArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z',\n pptxShapeType: 'notchedRightArrow',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z',\n pptxShapeType: 'chevron',\n },\n {\n viewBox: [200, 200],\n path: 'M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z',\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z',\n pptxShapeType: 'homePlate',\n },\n {\n viewBox: [200, 200],\n path: 'M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z'\n },\n {\n viewBox: [200, 200],\n path: 'M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z'\n },\n {\n viewBox: [1024, 1024],\n path: 'M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z',\n special: true,\n },\n ],\n },\n\n {\n type: '其他形状',\n children: [\n {\n viewBox: [1024, 1024],\n path: 'M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M997.8886764 504.17210418L537.2729208 43.89182982c-13.97838539-13.97838539-36.56745619-13.97838539-50.5458416 0L26.1113236 504.17210418c-13.41924998 13.41924998-21.02349164 31.64706454-21.02349163 50.65766867 0 39.47496036 32.09437288 71.56933323 71.56933324 71.56933323h48.53295408V954.83524937c0 19.79339373 15.99127289 35.78466661 35.78466663 35.78466662H440.43066677V740.12724968h125.24633315v250.49266631h297.34821416c19.79339373 0 35.78466661-15.99127289 35.78466663-35.78466662V626.39910608h48.53295408c19.01060414 0 37.23841869-7.49241457 50.65766869-21.02349163 27.84494371-27.95677079 27.84494371-73.24673948-0.11182708-101.20351027z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1009.13013121 349.27572283L674.72427717 14.86986879c-8.82158299-8.82158299-20.35749924-13.16451618-31.89341544-13.16451618s-23.07183245 4.34293316-31.89341547 13.16451618L392.29790453 233.6451272c-16.5574327-1.90003326-33.25058207-2.71433322-49.94373146-2.71433324-99.34459624 0-198.68919249 32.70771543-280.25490606 98.12314628-20.90036589 16.69314938-22.52896582 48.04369819-3.66434987 67.04403081l246.59717401 246.59717401-292.33368895 292.06225564c-3.52863319 3.52863319-5.83581644 8.27871636-6.24296642 13.30023282l-4.61436649 50.48659809c-1.22144996 12.75736619 8.95729967 23.6146991 21.57894918 23.6146991 0.6785833 0 1.35716662 0 2.03574992-0.13571666l50.48659809-4.61436649c5.02151649-0.40714999 9.77159962-2.71433322 13.30023282-6.24296643l292.33368896-292.33368896 246.59717402 246.59717401c8.82158299 8.82158299 20.35749924 13.16451618 31.89341544 13.16451618 13.16451618 0 26.19331567-5.70009979 35.15061536-16.82886604 76.40848044-95.40881307 108.16617924-214.83947521 95.27309638-330.33435417l218.63954175-218.63954173c17.50744934-17.37173267 17.50744934-45.8722316 0-63.51539759z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M976.62005979 160.47737905c-0.39452595-0.39452595-80.35178503 78.64217259-239.47725131 237.50462156l-111.6508437-111.65084369 237.89914752-237.89914752c-125.19623464-75.35445635-286.03131335-56.02268482-390.31767264 48.26367449-81.92988882 81.92988882-112.57140424 200.15616502-83.37648398 310.09739626l2.36715569 8.81107954-372.82702222 372.69551356c-8.15353628 8.15353628-8.15353628 21.56741857 0 29.72095487l185.95323084 185.95323084c8.15353628 8.15353628 21.56741857 8.15353628 29.72095485 0l372.56400493-372.56400493 8.81107953 2.3671557c110.07273989 29.32642892 228.29901608-1.18357785 310.36041356-83.24497533 104.41786795-104.2863593 123.74963948-265.12143802 49.97328693-390.05465535z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m220.16 343.26755556l-239.616 332.23111111c-14.44977778 20.13866667-44.37333333 20.13866667-58.82311111 0L291.84 481.16622222c-4.32355555-6.03022222 0-14.44977778 7.39555555-14.44977777h53.36177778c11.60533333 0 22.64177778 5.57511111 29.46844445 15.13244444l81.00977777 112.41244444 178.85866667-248.03555555c6.82666667-9.44355555 17.74933333-15.13244445 29.46844445-15.13244445H724.76444445c7.39555555 0 11.71911111 8.41955555 7.39555555 14.44977778z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m218.45333333 537.03111112c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222H302.64888889c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222v-54.61333334c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h418.70222222c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v54.61333334z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m188.18844445 703.37422223l-75.09333334-0.34133333L512 570.48177778l-112.98133333 134.71288889-75.20711112 0.34133333c-5.00622222 0-9.10222222-3.98222222-9.10222222-9.10222222 0-2.16177778 0.79644445-4.20977778 2.16177778-5.91644445l148.02488889-176.35555555L316.87111111 337.92c-1.36533333-1.70666667-2.16177778-3.75466667-2.16177778-5.91644445 0-5.00622222 4.096-9.10222222 9.10222222-9.10222222l75.20711112 0.34133334L512 458.06933333l112.98133333-134.71288888 75.09333334-0.34133334c5.00622222 0 9.10222222 3.98222222 9.10222222 9.10222222 0 2.16177778-0.79644445 4.20977778-2.16177778 5.91644445L559.21777778 514.27555555l147.91111111 176.35555556c1.36533333 1.70666667 2.16177778 3.75466667 2.16177778 5.91644444 0 5.00622222-4.096 9.10222222-9.10222222 9.10222223z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m218.45333333 537.03111112c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222H548.40888889v172.94222222c0 5.00622222-4.096 9.10222222-9.10222222 9.10222222h-54.61333334c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222V548.40888889H302.64888889c-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222v-54.61333334c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h172.94222222V302.64888889c0-5.00622222 4.096-9.10222222 9.10222222-9.10222222h54.61333334c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v172.94222222h172.94222222c5.00622222 0 9.10222222 4.096 9.10222222 9.10222222v54.61333334z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m163.95377778 517.57511112L427.46311111 700.64355555c-1.59288889 1.13777778-3.41333333 1.70666667-5.34755556 1.70666667-5.00622222 0-9.10222222-4.096-9.10222222-9.10222222V331.88977778c0-1.93422222 0.56888889-3.75466667 1.70666667-5.34755556 2.95822222-4.096 8.64711111-5.00622222 12.74311111-2.048L675.95377778 505.17333333c0.79644445 0.56888889 1.47911111 1.25155555 2.048 2.048 2.95822222 3.98222222 2.048 9.67111111-2.048 12.62933334z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m200.81777778 666.39644445l-32.54044445 44.37333333c-2.95822222 4.096-8.64711111 4.89244445-12.74311111 1.93422222L479.34577778 577.76355555c-2.38933333-1.70666667-3.75466667-4.43733333-3.75466667-7.39555555V257.13777778c0-5.00622222 4.096-9.10222222 9.10222222-9.10222223h54.72711112c5.00622222 0 9.10222222 4.096 9.10222222 9.10222223v281.6l162.24711111 117.30488889c4.096 2.84444445 5.00622222 8.53333333 2.048 12.62933333z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M981.10577778 314.48177778c-25.6-61.09866667-62.464-115.93955555-109.34044445-163.04355556-46.87644445-46.99022222-101.60355555-83.968-162.70222222-109.568C646.59911111 15.58755555 580.38044445 2.27555555 512 2.27555555h-2.27555555c-68.83555555 0.34133333-135.39555555 13.99466667-198.08711112 40.84622223-60.52977778 25.94133333-114.80177778 62.80533333-161.22311111 109.79555555-46.42133333 46.99022222-82.83022222 101.60355555-108.08888889 162.47466667C16.27022222 378.42488889 3.072 445.44 3.41333333 514.38933333c0.34133333 78.96177778 19.22844445 157.35466667 54.49955556 227.44177778v172.94222222c0 28.89955555 23.43822222 52.33777778 52.224 52.33777778h172.71466666c69.97333333 35.38488889 148.13866667 54.272 226.98666667 54.61333334h2.38933333c68.03911111 0 133.91644445-13.19822222 196.03911112-39.02577778 60.75733333-25.37244445 115.37066667-61.78133333 162.13333333-108.31644445 46.87644445-46.53511111 83.74044445-100.92088889 109.568-161.56444444 26.73777778-62.80533333 40.39111111-129.59288889 40.73244445-198.54222223 0.22755555-69.29066667-13.19822222-136.53333333-39.59466667-199.79377777zM284.89955555 566.61333333c-30.03733333 0-54.49955555-24.46222222-54.49955555-54.61333333s24.46222222-54.61333333 54.49955555-54.61333333 54.49955555 24.46222222 54.49955556 54.61333333-24.34844445 54.61333333-54.49955556 54.61333333z m227.10044445 0c-30.03733333 0-54.49955555-24.46222222-54.49955555-54.61333333s24.46222222-54.61333333 54.49955555-54.61333333 54.49955555 24.46222222 54.49955555 54.61333333-24.46222222 54.61333333-54.49955555 54.61333333z m227.10044445 0c-30.03733333 0-54.49955555-24.46222222-54.49955556-54.61333333s24.46222222-54.61333333 54.49955556-54.61333333 54.49955555 24.46222222 54.49955555 54.61333333-24.46222222 54.61333333-54.49955555 54.61333333z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM745.4750693 325.8561164l-267.95558363 371.52436096c-16.15876501 22.52048353-49.62140436 22.52048353-65.78016939 0L253.07805667 477.51948567c-4.83490607-6.74342161 0-16.15876501 8.27023406-16.15876499h59.67291961c12.97790576 0 25.31963967 6.23448413 32.95370188 16.92217123l90.59087157 125.70755774 200.01242995-277.37092701c7.63406221-10.56045272 19.84856175-16.92217125 32.95370189-16.92217124H737.20483524c8.27023407 0 13.10514012 9.41534338 8.27023406 16.158765z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM756.28999077 542.53624885c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962H277.88875885c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962v-61.0724977c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h468.2224823c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v61.0724977z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM720.79160148 697.63494611c5.59831228 6.61618726 0.8906406 16.6677025-7.76129658 16.66770249h-74.94104404c-5.98001539 0-11.70556205-2.67192177-15.64982754-7.25235911L512 575.36271635l-110.43943332 131.68757314c-3.81703111 4.58043732-9.54257777 7.25235911-15.64982754 7.25235911H310.9696951c-8.65193717 0-13.35960887-10.05151525-7.76129658-16.66770249L458.81603326 512 303.20839852 326.36505389c-5.59831228-6.61618726-0.8906406-16.6677025 7.76129658-16.66770249h74.94104404c5.98001539 0 11.70556205 2.67192177 15.64982754 7.25235911L512 448.63728365l110.43943332-131.68757314c3.81703111-4.58043732 9.54257777-7.25235911 15.64982754-7.25235911H713.0303049c8.65193717 0 13.35960887 10.05151525 7.76129658 16.66770249L565.18396674 512l155.60763474 185.63494611z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM677.02297814 523.19662459L423.31764398 722.70011704c-9.41534338 7.37959347-23.28388974 0.76340622-23.28388975-11.19662459V312.62374191c0-11.9600308 13.86854636-18.70345241 23.28388975-11.19662457l253.70533416 199.37625807c7.25235911 5.72554666 7.25235911 16.6677025 0 22.39324918z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 3.06251924H43.7775177c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499846v936.4449646c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h936.4449646c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V43.7775177c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846zM756.28999077 542.53624885c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962H552.71499847v193.39624268c0 5.59831228-4.58043732 10.17874961-10.17874962 10.17874962h-61.0724977c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962V552.71499847H277.88875885c-5.59831228 0-10.17874961-4.58043732-10.17874962-10.17874962v-61.0724977c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h193.39624268V277.88875885c0-5.59831228 4.58043732-10.17874961 10.17874962-10.17874962h61.0724977c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v193.39624268h193.39624268c5.59831228 0 10.17874961 4.58043732 10.17874962 10.17874962v61.0724977z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M902.67315697 135.41705551L528.62204754 7.94466448C524.10877635 6.40354749 518.05438818 5.63298899 512 5.63298899s-12.10877635 0.7705585-16.62204754 2.31167549L121.32684303 135.41705551c-9.13662215 3.08223399-16.62204754 13.64989334-16.62204753 23.33691443v531.02488283c0 9.68702108 6.27454775 22.45627614 13.87005291 28.51066431L498.0198673 1013.9638196c3.85279247 2.9721542 8.8063828 4.51327118 13.87005291 4.51327118s10.12734022-1.54111698 13.87005291-4.51327118l379.4450189-295.67430252c7.59550517-5.94430839 13.87005291-18.71356345 13.87005291-28.51066431V158.75396994c0.22015956-9.68702108-7.26526581-20.14460066-16.40188796-23.33691443zM712.89560763 323.43332829L478.86598471 645.63685899c-7.04510625 9.68702108-21.57563786 9.68702108-28.6207441 0l-139.14084824-191.5388259c-4.18303182-5.8342286 0-13.9801327 7.15518603-13.9801327h60.76404132c5.61406904 0 11.0079785 2.75199463 14.31037204 7.26526582l71.22162091 97.97100864 166.11039557-228.74579323c3.30239355-4.51327118 8.58622323-7.26526581 14.31037204-7.26526581H705.7404216c7.15518602 0.11007979 11.33821785 8.25598388 7.15518603 14.09021248z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M959.86498307 186.28001231H797.00498922v-101.78749614c0-44.91373267-36.51626425-81.42999692-81.42999691-81.42999693H308.42500769c-44.91373267 0-81.42999692 36.51626425-81.42999691 81.42999693v101.78749614H64.13501693c-22.52048353 0-40.71499847 18.19451494-40.71499846 40.71499847v40.71499845c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874962h76.8495596l31.42688945 665.43575611c2.03574992 43.38692024 37.91584233 77.61296581 81.30276254 77.6129658h577.64404066c43.5141546 0 79.26701262-34.09881122 81.30276254-77.6129658l31.42688945-665.43575611H990.40123192c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874962v-40.71499845c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499847z m-254.46874039 0H318.60375732v-91.60874653h386.79248536v91.60874653z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.2224823 248.62485371H654.50249462V104.85001539c0-22.52048353-18.19451494-40.71499847-40.71499847-40.71499846H94.67126578v-50.89374808c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961h-71.25124732c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v997.5174623c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h71.25124732c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961V674.85999383h315.54123807v143.77483833c0 22.52048353 18.19451494 40.71499847 40.71499846 40.71499846h529.29497999c22.52048353 0 40.71499847-18.19451494 40.71499846-40.71499846V289.33985217c0-22.52048353-18.19451494-40.71499847-40.71499846-40.71499846z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M804.63905145 265.16532183V94.67126578h109.42155836c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-71.25124732c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961H109.93939019c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v71.25124732c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h109.42155836v170.49405605c0 103.6960117 53.94737296 194.92305513 135.3773699 246.83467817-81.42999692 51.91162303-135.37736988 143.13866646-135.3773699 246.83467817v170.49405605h-109.42155836c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v71.25124732c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h804.12121962c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-71.25124732c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961h-109.42155836V758.83467817c0-103.6960117-53.94737296-194.92305513-135.3773699-246.83467817 81.42999692-51.91162303 135.37736988-143.13866646 135.3773699-246.83467817z',\n special: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1020.928 448.44373333l-35.36213334-373.4528c-1.79200001-19.3536-17.2032-34.64533332-36.55679999-36.55679999L575.55626667 3.072h-0.47786666c-3.82293334 0-6.8096 1.19466667-9.07946669 3.46453333L6.53653333 565.99893332c-4.65919999 4.65919999-4.65919999 12.1856 0 16.84480001l434.61973334 434.61973334c2.26986667 2.26986667 5.25653333 3.46453333 8.48213333 3.46453333s6.21226667-1.19466667 8.48213333-3.46453333l559.46239999-559.46239999c2.38933332-2.5088 3.584-5.97333334 3.34506668-9.55733335zM735.40266668 362.66666667c-42.17173333 0-76.45866667-34.28693333-76.45866667-76.45866667s34.28693333-76.45866667 76.45866667-76.45866667 76.45866667 34.28693333 76.45866665 76.45866667-34.28693333 76.45866667-76.45866665 76.45866667z',\n special: true,\n },\n ],\n },\n\n {\n type: '线性',\n children: [\n {\n viewBox: [1024, 1024],\n path: 'M1009.55537674 75.96950982l-61.38012212-61.38012214c-4.48769762-4.48769762-11.870684-4.48769762-16.3583816 0L14.44462326 931.67210859c-4.48769762 4.48769762-4.48769762 11.870684 0 16.35838159l61.38012212 61.38012214c4.48769762 4.48769762 11.870684 4.48769762 16.3583816 0L1009.41061232 92.18312698c4.63246205-4.34293316 4.63246205-11.72591956 0.14476442-16.21361716zM210.88996692 419.35075905c114.94296453 0 208.46079213-93.51782759 208.46079213-208.46079213s-93.51782759-208.46079213-208.46079213-208.4607921-208.46079213 93.51782759-208.4607921 208.4607921 93.51782759 208.46079213 208.4607921 208.46079213z m0-312.69118816c57.47148228 0 104.23039605 46.75891379 104.23039607 104.23039603s-46.75891379 104.23039605-104.23039607 104.23039607-104.23039605-46.75891379-104.23039603-104.23039607 46.75891379-104.23039605 104.23039603-104.23039603zM813.11003308 604.64924095c-114.94296453 0-208.46079213 93.51782759-208.46079213 208.46079213s93.51782759 208.46079213 208.46079213 208.4607921 208.46079213-93.51782759 208.4607921-208.4607921-93.51782759-208.46079213-208.4607921-208.46079213z m0 312.69118816c-57.47148228 0-104.23039605-46.75891379-104.23039607-104.23039603s46.75891379-104.23039605 104.23039607-104.23039607 104.23039605 46.75891379 104.23039603 104.23039607-46.75891379 104.23039605-104.23039603 104.23039603z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1004.96017383 478.58365209L483.27851088 25.80594621c-4.00443838-3.45210207-9.11354943-5.3852792-14.49882864-5.38527921h-122.20441284c-10.21822208 0-14.91308089 12.70373557-7.18037228 19.33177152l483.57045622 419.77561022H14.8973037c-6.07569962 0-11.04672658 4.97102697-11.04672658 11.04672657v82.85044938c0 6.07569962 4.97102697 11.04672658 11.04672658 11.04672657h807.92996557L339.25681303 984.24756148c-7.7327086 6.76612003-3.0378498 19.33177153 7.18037229 19.33177152h126.34693531c2.62359757 0 5.24719513-0.96658859 7.18037228-2.76168164L1004.96017383 545.41634791c20.2983601-17.67476253 20.2983601-49.1579333 0-66.83269582z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1011.38217956 558.9924242L545.80649025 22.43713295c-17.81503843-20.62055629-49.79794206-20.62055629-67.75325638 0L12.61782044 558.9924242c-6.31241519 7.29434645-1.12220714 18.51641789 8.41655359 18.51641789h113.62347344c6.45269109 0 12.62483038-2.80551785 16.97338308-7.71517411L458.69516062 215.87758959V1005.77114384c0 6.1721393 5.04993216 11.22207145 11.22207144 11.22207145h84.16553588c6.1721393 0 11.22207145-5.04993216 11.22207144-11.22207145V215.87758959l307.06393007 353.91607839c4.20827679 4.90965626 10.38041608 7.71517413 16.97338308 7.71517411h113.62347344c9.53876074 0 14.72896878-11.22207145 8.41655359-18.51641789z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1009.1026963 459.52804874H201.17273073l483.57045624-419.77561022c7.7327086-6.76612003 3.0378498-19.33177153-7.18037229-19.33177152h-122.20441283c-5.3852792 0-10.49439025 1.93317715-14.49882866 5.38527921L19.03982617 478.58365209c-20.2983601 17.67476253-20.2983601 49.1579333 0 66.69461175L543.89742302 1000.81765136c2.07126124 1.79509307 4.55677472 2.76168163 7.18037228 2.76168164h126.3469353c10.21822208 0 14.91308089-12.70373557 7.18037228-19.33177152L201.17273073 564.47195126H1009.1026963c6.07569962 0 11.04672658-4.97102697 11.04672658-11.04672657v-82.85044938c0-6.07569962-4.97102697-11.04672658-11.04672658-11.04672657z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1002.96562597 446.49115791h-113.62347344c-6.45269109 0-12.62483038 2.80551785-16.97338308 7.71517411L565.30483938 808.12241041V18.22885616c0-6.1721393-5.04993216-11.22207145-11.22207144-11.22207145h-84.16553588c-6.1721393 0-11.22207145 5.04993216-11.22207144 11.22207145v789.89355425L151.63123055 454.20633202c-4.20827679-4.90965626-10.38041608-7.71517413-16.97338308-7.71517411h-113.62347344c-9.53876074 0-14.72896878 11.36234735-8.41655359 18.51641789L478.19350975 1001.56286705c17.81503843 20.62055629 49.79794206 20.62055629 67.75325638 0L1011.38217956 465.0075758c6.31241519-7.29434645 1.12220714-18.51641789-8.41655359-18.51641789z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M975.82443246 622.46726585H14.8973037c-6.07569962 0-11.04672658 4.97102697-11.04672658 11.04672658v82.85044937c0 6.07569962 4.97102697 11.04672658 11.04672658 11.04672659h835.6848661L651.32683905 980.10503902c-5.66144737 7.18037229-0.55233633 17.9509307 8.69929718 17.9509307h100.11095967c6.76612003 0 13.11798782-3.0378498 17.39859437-8.42312903l233.08593092-295.63802022c22.78387358-28.99765728 2.20934532-71.52755463-34.79718873-71.52755462zM1009.1026963 296.58883161H173.4178302l199.25533075-252.69387063c5.66144737-7.18037229 0.55233633-17.9509307-8.69929718-17.9509307h-100.11095967c-6.76612003 0-13.11798782 3.0378498-17.39859437 8.42312903L13.37837881 330.00517953c-22.78387358 28.99765728-2.20934532 71.52755463 34.65910466 71.52755462h961.06521283c6.07569962 0 11.04672658-4.97102697 11.04672658-11.04672658v-82.85044937c0-6.07569962-4.97102697-11.04672658-11.04672658-11.04672659z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M1010.75873115 64.13501693H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874961v81.42999691c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874964h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874964v-81.42999691c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874961zM1010.75873115 858.07748691H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874964v81.42999691c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874961h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874961v-81.42999691c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874964zM1010.75873115 461.10625194H13.24126885c-5.59831228 0-10.17874961 4.58043732-10.17874961 10.17874959v81.42999694c0 5.59831228 4.58043732 10.17874961 10.17874961 10.17874959h997.5174623c5.59831228 0 10.17874961-4.58043732 10.17874961-10.17874959v-81.42999694c0-5.59831228-4.58043732-10.17874961-10.17874961-10.17874959z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M591.98717801 512l405.34042913-483.16579151c6.79427767-8.02960089 1.08090782-20.22841761-9.41933951-20.2284176h-123.22349044c-7.25752386 0-14.20621693 3.24272343-18.99309439 8.80167789L511.38233839 415.95362022 177.07299399 17.40746878c-4.63246205-5.55895447-11.58115512-8.80167789-18.99309439-8.80167789H34.85640916c-10.50024731 0-16.21361717 12.19881672-9.41933952 20.2284176L430.77749876 512 25.43706964 995.16579151c-6.79427767 8.02960089-1.08090782 20.22841761 9.41933952 20.2284176h123.22349044c7.25752386 0 14.20621693-3.24272343 18.99309439-8.80167789l334.3093444-398.54615144 334.30934441 398.54615144c4.63246205 5.55895447 11.58115512 8.80167789 18.99309439 8.80167789h123.22349044c10.50024731 0 16.21361717-12.19881672 9.41933951-20.2284176L591.98717801 512z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M953.5488 832.61667556c-24.08448-57.08913778-58.74574221-108.31644445-102.70947556-152.28017777-43.96373333-43.96373333-95.19104-78.49756444-152.28017777-102.70947558-0.50972445-0.25486222-1.01944888-0.38229333-1.52917334-0.63715555C776.41955556 519.64586667 828.02915556 426.23886221 828.02915556 320.85333332c0-174.58062221-141.44853334-316.02915556-316.02915556-316.02915554S195.97084444 146.27271111 195.97084444 320.85333332c0 105.38552889 51.6096 198.79253333 130.99918223 256.26396447-0.50972445 0.25486222-1.01944888 0.38229333-1.52917334 0.63715555-57.08913778 24.08448-108.31644445 58.61831112-152.28017777 102.70947554-43.96373333 43.96373333-78.49756444 95.19104-102.70947556 152.28017779C46.74901333 888.55893332 34.13333334 947.8144 32.85902222 1008.72647111c-0.12743111 5.7344 4.46008889 10.44935111 10.19448889 10.44935111h76.45866667c5.60696888 0 10.06705778-4.46008889 10.19448889-9.93962666 2.54862221-98.37681778 42.05226667-190.50951112 111.88451555-260.34176001 72.25344-72.25344 168.20906666-112.01194667 270.40881778-112.01194667s198.15537778 39.75850667 270.40881778 112.01194667C852.24106667 818.72668444 891.74471111 910.85937779 894.29333333 1009.23619556c0.12743111 5.60696888 4.58752 9.93962667 10.19448889 9.93962666h76.45866667c5.7344 0 10.32192-4.71495112 10.19448889-10.44935111-1.27431111-60.91207112-13.88999112-120.16753779-37.59217778-176.10979555zM512 540.03484444c-58.49088 0-113.54112-22.81016889-154.95623111-64.22527999S292.81848888 379.34421333 292.81848888 320.85333332c0-58.49088 22.81016889-113.54112 64.22528001-154.9562311S453.50912 101.67182221 512 101.67182221s113.54112 22.81016889 154.95623111 64.22528001S731.18151112 262.36245333 731.18151112 320.85333332c0 58.49088-22.81016889 113.54112-64.22528001 154.95623113S570.49088 540.03484444 512 540.03484444z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M985.31555555 111.50222222H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888889v728.17777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h946.6311111c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V147.91111111c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888889z m-45.5111111 126.06577778V830.57777778H84.19555555V237.568l-31.40266666-24.46222222 44.71466666-57.45777778 48.6968889 37.888h731.70488888l48.69688889-37.888 44.71466667 57.45777778-31.51644444 24.46222222z M877.90933333 193.42222222L512 477.86666667 146.09066667 193.42222222l-48.69688889-37.888-44.71466667 57.45777778 31.40266667 24.46222222 388.66488889 302.19377778c22.98311111 17.86311111 55.18222222 17.86311111 78.16533333 0L939.80444445 237.568l31.40266666-24.46222222-44.71466666-57.45777778-48.58311112 37.77422222z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M985.31555555 88.74666667H38.68444445c-20.13866667 0-36.40888889 16.27022222-36.4088889 36.40888888v564.33777778c0 20.13866667 16.27022222 36.40888889 36.4088889 36.40888889h432.35555555v127.43111111H275.34222222c-10.01244445 0-18.20444445 8.192-18.20444444 18.20444445v54.61333333c0 5.00622222 4.096 9.10222222 9.10222222 9.10222222h491.52c5.00622222 0 9.10222222-4.096 9.10222222-9.10222222v-54.61333333c0-10.01244445-8.192-18.20444445-18.20444444-18.20444445H552.96V725.90222222h432.35555555c20.13866667 0 36.40888889-16.27022222 36.4088889-36.40888889V125.15555555c0-20.13866667-16.27022222-36.40888889-36.4088889-36.40888888z m-45.5111111 555.23555555H84.19555555V170.66666667h855.6088889v473.31555555z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M512 2.27555555C230.51377778 2.27555555 2.27555555 230.51377778 2.27555555 512s228.23822222 509.72444445 509.72444445 509.72444445 509.72444445-228.23822222 509.72444445-509.72444445S793.48622222 2.27555555 512 2.27555555z m0 932.97777778c-233.69955555 0-423.25333333-189.55377778-423.25333333-423.25333333 0-101.26222222 35.61244445-194.33244445 95.00444444-267.15022222l595.39911111 595.39911111C706.33244445 899.64088889 613.26222222 935.25333333 512 935.25333333z m328.24888889-156.10311111L244.84977778 183.75111111C317.66755555 124.35911111 410.73777778 88.74666667 512 88.74666667c233.69955555 0 423.25333333 189.55377778 423.25333333 423.25333333 0 101.26222222-35.61244445 194.33244445-95.00444444 267.15022222z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M901.80266667 257.82044445L656.95288889 12.97066667c-6.82666667-6.82666667-16.04266667-10.69511111-25.71377778-10.69511112H147.91111111c-20.13866667 0-36.40888889 16.27022222-36.40888889 36.4088889v946.6311111c0 20.13866667 16.27022222 36.40888889 36.40888889 36.4088889h728.17777778c20.13866667 0 36.40888889-16.27022222 36.40888889-36.4088889V283.648c0-9.67111111-3.86844445-19.00088889-10.69511111-25.82755555zM828.52977778 300.37333333H614.4V86.24355555L828.52977778 300.37333333z m2.048 639.43111112H193.42222222V84.19555555h343.60888889v245.76c0 26.39644445 21.39022222 47.78666667 47.78666667 47.78666667h245.76v562.06222223z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M981.07392 55.79662222H42.92608c-31.22062222 0-50.71758221 34.02410666-35.04355556 61.16693334L304.28728889 620.82616888V927.42542221c0 22.55530667 18.09521779 40.77795555 40.52309333 40.77795557h334.37923556c22.42787556 0 40.52309333-18.22264888 40.52309333-40.77795557V620.82616888L1016.24490667 116.96355556c15.54659555-27.14282666-3.95036444-61.16693333-35.17098667-61.16693334zM628.47203556 876.45297779H395.52796444V677.66044445h233.07150222v198.79253334z m12.23338666-301.50200891l-12.10595556 21.15356445h-233.19893332l-12.10595556-21.15356445L130.59868445 147.54702221h762.8026311L640.70542222 574.95096888z',\n special: true,\n outlined: true,\n },\n {\n viewBox: [1024, 1024],\n path: 'M980.62285431 4.54099753H654.39920987c-4.2719763 0-7.76722963 3.49525333-7.76722962 7.76722964v72.4941432c0 4.2719763 3.49525333 7.76722963 7.76722962 7.76722963h207.64393877L604.04167111 350.57107753c-64.72691358-49.83972347-143.69374815-76.7661195-226.67365136-76.7661195-99.54999309 0-193.27456395 38.83614815-263.5679921 109.25903012S4.54099753 547.08198717 4.54099753 646.63198025s38.83614815 193.27456395 109.25903012 263.5679921C184.09345581 980.62285431 277.81802667 1019.45900247 377.36801975 1019.45900247s193.27456395-38.83614815 263.5679921-109.25903012C711.35889383 839.90654419 750.19504197 746.18197333 750.19504197 646.63198025c0-82.9799032-26.92639605-161.68783013-76.63666567-226.41474372L931.4304 162.34521283V369.60079013c0 4.2719763 3.49525333 7.76722963 7.76722963 7.76722962h72.4941432c4.2719763 0 7.76722963-3.49525333 7.76722964-7.76722962V43.37714569c0-21.35988148-17.47626667-38.83614815-38.83614816-38.83614816zM377.36801975 921.07409383c-151.33152395 0-274.44211358-123.11058963-274.44211358-274.44211358s123.11058963-274.44211358 274.44211358-274.44211358 274.44211358 123.11058963 274.44211358 274.44211358-123.11058963 274.44211358-274.44211358 274.44211358z',\n special: true,\n outlined: true,\n },\n ],\n }\n]","import type { ChartType } from '@/types/slides'\n\ninterface ChartTypes {\n [propName: string]: ChartType\n}\n\nexport const CHART_TYPES: ChartTypes = {\n bar: 'bar',\n horizontalBar: 'bar',\n line: 'line',\n area: 'line',\n scatter: 'line',\n pie: 'pie',\n ring: 'pie',\n}","import { debounce, throttle} from 'lodash'\nimport { useSnapshotStore } from '@/store'\n\nexport default () => {\n const snapshotStore = useSnapshotStore()\n\n // 添加历史快照(历史记录)\n const addHistorySnapshot = debounce(function() {\n snapshotStore.addSnapshot()\n }, 300, { trailing: true })\n\n // 重做\n const redo = throttle(function() {\n snapshotStore.reDo()\n }, 100, { leading: true, trailing: false })\n\n // 撤销\n const undo = throttle(function() {\n snapshotStore.unDo()\n }, 100, { leading: true, trailing: false })\n\n return {\n addHistorySnapshot,\n redo,\n undo,\n }\n}","import { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { getImageSize } from '@/utils/image'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport type { PPTLineElement, PPTElement, TableCell, TableCellStyle, PPTShapeElement, PPTChartElement, ChartOptions, PresetChartType } from '@/types/slides'\nimport { type ShapePoolItem, SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport type { LinePoolItem } from '@/configs/lines'\nimport { CHART_TYPES } from '@/configs/chartTypes'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface CommonElementPosition {\n top: number\n left: number\n width: number\n height: number\n}\n\ninterface LineElementPosition {\n top: number\n left: number\n start: [number, number]\n end: [number, number]\n}\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { creatingElement } = storeToRefs(mainStore)\n const { theme, viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 创建(插入)一个元素并将其设置为被选中元素\n const createElement = (element: PPTElement, callback?: () => void) => {\n slidesStore.addElement(element)\n mainStore.setActiveElementIdList([element.id])\n\n if (creatingElement.value) mainStore.setCreatingElement(null)\n\n setTimeout(() => {\n mainStore.setEditorareaFocus(true)\n }, 0)\n\n if (callback) callback()\n\n addHistorySnapshot()\n }\n\n /**\n * 创建图片元素\n * @param src 图片地址\n */\n const createImageElement = (src: string) => {\n getImageSize(src).then(({ width, height }) => {\n const scale = height / width\n \n if (scale < viewportRatio.value && width > VIEWPORT_SIZE) {\n width = VIEWPORT_SIZE\n height = width * scale\n }\n else if (height > VIEWPORT_SIZE * viewportRatio.value) {\n height = VIEWPORT_SIZE * viewportRatio.value\n width = height / scale\n }\n\n createElement({\n type: 'image',\n id: nanoid(10),\n src,\n width,\n height,\n left: (VIEWPORT_SIZE - width) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\n fixedRatio: true,\n rotate: 0,\n })\n })\n }\n \n /**\n * 创建图表元素\n * @param chartType 图表类型\n */\n const createChartElement = (type: PresetChartType) => {\n const newElement: PPTChartElement = {\n type: 'chart',\n id: nanoid(10),\n chartType: CHART_TYPES[type],\n left: 300,\n top: 81.25,\n width: 400,\n height: 400,\n rotate: 0,\n themeColor: [theme.value.themeColor],\n gridColor: theme.value.fontColor,\n data: {\n labels: ['类别1', '类别2', '类别3', '类别4', '类别5'],\n legends: ['系列1'],\n series: [\n [12, 19, 5, 2, 18],\n ],\n },\n }\n\n const options: ChartOptions = {\n ...(type === 'bar' ? { horizontalBars: false, stackBars: false } : {}),\n ...(type === 'horizontalBar' ? { horizontalBars: true, stackBars: false } : {}),\n ...(type === 'line' ? { showLine: true, lineSmooth: true, showArea: false } : {}),\n ...(type === 'area' ? { showLine: true, lineSmooth: true, showArea: true } : {}),\n ...(type === 'scatter' ? { showLine: false, lineSmooth: true, showArea: false } : {}),\n ...(type === 'pie' ? { donut: false } : {}),\n ...(type === 'ring' ? { donut: true } : {}),\n }\n\n createElement({\n ...newElement,\n options,\n })\n }\n \n /**\n * 创建表格元素\n * @param row 行数\n * @param col 列数\n */\n const createTableElement = (row: number, col: number) => {\n const style: TableCellStyle = {\n fontname: theme.value.fontName,\n color: theme.value.fontColor,\n }\n const data: TableCell[][] = []\n for (let i = 0; i < row; i++) {\n const rowCells: TableCell[] = []\n for (let j = 0; j < col; j++) {\n rowCells.push({ id: nanoid(10), colspan: 1, rowspan: 1, text: '', style })\n }\n data.push(rowCells)\n }\n\n const DEFAULT_CELL_WIDTH = 100\n const DEFAULT_CELL_HEIGHT = 36\n\n const colWidths: number[] = new Array(col).fill(1 / col)\n\n const width = col * DEFAULT_CELL_WIDTH\n const height = row * DEFAULT_CELL_HEIGHT\n\n createElement({\n type: 'table',\n id: nanoid(10),\n width,\n height,\n colWidths,\n rotate: 0,\n data,\n left: (VIEWPORT_SIZE - width) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - height) / 2,\n outline: {\n width: 2,\n style: 'solid',\n color: '#eeece1',\n },\n theme: {\n color: theme.value.themeColor,\n rowHeader: true,\n rowFooter: false,\n colHeader: false,\n colFooter: false,\n },\n cellMinHeight: 36,\n })\n }\n \n /**\n * 创建文本元素\n * @param position 位置大小信息\n * @param content 文本内容\n */\n \n interface CreateTextData {\n content?: string\n vertical?: boolean\n }\n const createTextElement = (position: CommonElementPosition, data?: CreateTextData) => {\n const { left, top, width, height } = position\n const content = data?.content || ''\n const vertical = data?.vertical || false\n\n const id = nanoid(10)\n createElement({\n type: 'text',\n id,\n left, \n top, \n width, \n height,\n content,\n rotate: 0,\n defaultFontName: theme.value.fontName,\n defaultColor: theme.value.fontColor,\n vertical,\n }, () => {\n setTimeout(() => {\n const editorRef: HTMLElement | null = document.querySelector(`#editable-element-${id} .ProseMirror`)\n if (editorRef) editorRef.focus()\n }, 0)\n })\n }\n \n /**\n * 创建形状元素\n * @param position 位置大小信息\n * @param data 形状路径信息\n */\n const createShapeElement = (position: CommonElementPosition, data: ShapePoolItem, supplement: Partial = {}) => {\n const { left, top, width, height } = position\n const newElement: PPTShapeElement = {\n type: 'shape',\n id: nanoid(10),\n left, \n top, \n width, \n height,\n viewBox: data.viewBox,\n path: data.path,\n fill: theme.value.themeColor,\n fixedRatio: false,\n rotate: 0,\n ...supplement,\n }\n if (data.special) newElement.special = true\n if (data.pathFormula) {\n newElement.pathFormula = data.pathFormula\n newElement.viewBox = [width, height]\n\n const pathFormula = SHAPE_PATH_FORMULAS[data.pathFormula]\n if ('editable' in pathFormula) {\n newElement.path = pathFormula.formula(width, height, pathFormula.defaultValue)\n newElement.keypoint = pathFormula.defaultValue\n }\n else newElement.path = pathFormula.formula(width, height)\n }\n createElement(newElement)\n }\n \n /**\n * 创建线条元素\n * @param position 位置大小信息\n * @param data 线条的路径和样式\n */\n const createLineElement = (position: LineElementPosition, data: LinePoolItem) => {\n const { left, top, start, end } = position\n\n const newElement: PPTLineElement = {\n type: 'line',\n id: nanoid(10),\n left, \n top, \n start,\n end,\n points: data.points,\n color: theme.value.themeColor,\n style: data.style,\n width: 2,\n }\n if (data.isBroken) newElement.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (data.isCurve) newElement.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (data.isCubic) newElement.cubic = [[(start[0] + end[0]) / 2, (start[1] + end[1]) / 2], [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]]\n createElement(newElement)\n }\n \n /**\n * 创建LaTeX元素\n * @param svg SVG代码\n */\n const createLatexElement = (data: { path: string; latex: string; w: number; h: number; }) => {\n createElement({\n type: 'latex',\n id: nanoid(10),\n width: data.w,\n height: data.h,\n rotate: 0,\n left: (VIEWPORT_SIZE - data.w) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - data.h) / 2,\n path: data.path,\n latex: data.latex,\n color: theme.value.fontColor,\n strokeWidth: 2,\n viewBox: [data.w, data.h],\n fixedRatio: true,\n })\n }\n \n /**\n * 创建视频元素\n * @param src 视频地址\n */\n const createVideoElement = (src: string) => {\n createElement({\n type: 'video',\n id: nanoid(10),\n width: 500,\n height: 300,\n rotate: 0,\n left: (VIEWPORT_SIZE - 500) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - 300) / 2,\n src,\n autoplay: false,\n })\n }\n \n /**\n * 创建音频元素\n * @param src 音频地址\n */\n const createAudioElement = (src: string) => {\n createElement({\n type: 'audio',\n id: nanoid(10),\n width: 50,\n height: 50,\n rotate: 0,\n left: (VIEWPORT_SIZE - 50) / 2,\n top: (VIEWPORT_SIZE * viewportRatio.value - 50) / 2,\n loop: false,\n autoplay: false,\n fixedRatio: true,\n color: theme.value.themeColor,\n src,\n })\n }\n\n return {\n createImageElement,\n createChartElement,\n createTableElement,\n createTextElement,\n createShapeElement,\n createLineElement,\n createLatexElement,\n createVideoElement,\n createAudioElement,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useSlidesStore, useMainStore } from '@/store'\nimport type { PPTElement, Slide } from '@/types/slides'\nimport { createSlideIdMap, createElementIdMap, getElementRange } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { currentSlide, slides } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 添加指定的元素数据(一组)\n * @param elements 元素列表数据\n */\n const addElementsFromData = (elements: PPTElement[]) => {\n const { groupIdMap, elIdMap } = createElementIdMap(elements)\n\n const firstElement = elements[0]\n let offset = 0\n let lastSameElement: PPTElement | undefined\n \n do {\n lastSameElement = currentSlide.value.elements.find(el => {\n if (el.type !== firstElement.type) return false\n \n const { minX: oMinX, maxX: oMaxX, minY: oMinY, maxY: oMaxY } = getElementRange(el)\n const { minX: nMinX, maxX: nMaxX, minY: nMinY, maxY: nMaxY } = getElementRange({\n ...firstElement,\n left: firstElement.left + offset,\n top: firstElement.top + offset\n })\n if (\n oMinX === nMinX &&\n oMaxX === nMaxX &&\n oMinY === nMinY &&\n oMaxY === nMaxY\n ) return true\n \n return false\n })\n if (lastSameElement) offset += 10\n\n } while (lastSameElement)\n \n for (const element of elements) {\n element.id = elIdMap[element.id]\n\n element.left = element.left + offset\n element.top = element.top + offset\n\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n }\n slidesStore.addElement(elements)\n mainStore.setActiveElementIdList(Object.values(elIdMap))\n addHistorySnapshot()\n }\n\n /**\n * 添加指定的页面数据\n * @param slide 页面数据\n */\n const addSlidesFromData = (slides: Slide[]) => {\n const slideIdMap = createSlideIdMap(slides)\n const newSlides = slides.map(slide => {\n const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)\n\n for (const element of slide.elements) {\n element.id = elIdMap[element.id]\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n\t\t\n // 若元素绑定了页面跳转链接\n if (element.link && element.link.type === 'slide') {\n\n // 待添加页面中包含该页面,则替换相关绑定关系\n if (slideIdMap[element.link.target]) {\n element.link.target = slideIdMap[element.link.target]\n }\n // 待添加页面中不包含该页面,则删除该元素绑定的页面跳转\n else delete element.link\n }\n }\n // 动画id替换\n if (slide.animations) {\n for (const animation of slide.animations) {\n animation.id = nanoid(10)\n animation.elId = elIdMap[animation.elId]\n }\n }\n return {\n ...slide,\n id: slideIdMap[slide.id],\n }\n })\n slidesStore.addSlide(newSlides)\n addHistorySnapshot()\n }\n\n const isEmptySlide = computed(() => {\n if (slides.value.length > 1) return false\n if (slides.value[0].elements.length > 0) return false\n return true\n })\n\n return {\n addElementsFromData,\n addSlidesFromData,\n isEmptySlide,\n }\n}","import { pasteCustomClipboardString } from '@/utils/clipboard'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useCreateElement from '@/hooks/useCreateElement'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\n\ninterface PasteTextClipboardDataOptions {\n onlySlide?: boolean\n onlyElements?: boolean\n}\n\nexport default () => {\n const { createTextElement } = useCreateElement()\n const { addElementsFromData, addSlidesFromData } = useAddSlidesOrElements()\n\n /**\n * 粘贴普通文本:创建为新的文本元素\n * @param text 文本\n */\n const createTextElementFromClipboard = (text: string) => {\n createTextElement({\n left: 0,\n top: 0,\n width: 600,\n height: 50,\n }, { content: text })\n }\n\n /**\n * 解析剪贴板内容,根据解析结果选择合适的粘贴方式\n * @param text 剪贴板内容\n * @param options 配置项:onlySlide -- 仅处理页面粘贴;onlyElements -- 仅处理元素粘贴;\n */\n const pasteTextClipboardData = (text: string, options?: PasteTextClipboardDataOptions) => {\n const onlySlide = options?.onlySlide || false\n const onlyElements = options?.onlyElements || false\n\n const clipboardData = pasteCustomClipboardString(text)\n\n // 元素或页面\n if (typeof clipboardData === 'object') {\n const { type, data } = clipboardData\n\n if (type === 'elements' && !onlySlide) addElementsFromData(data)\n else if (type === 'slides' && !onlyElements) addSlidesFromData(data)\n }\n\n // 普通文本\n else if (!onlyElements && !onlySlide) {\n const string = parseText2Paragraphs(clipboardData)\n createTextElementFromClipboard(string)\n }\n }\n\n return {\n pasteTextClipboardData,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { Slide } from '@/types/slides'\nimport { copyText, readClipboard } from '@/utils/clipboard'\nimport { encrypt } from '@/utils/crypto'\nimport { createElementIdMap } from '@/utils/element'\nimport { KEYS } from '@/configs/hotkey'\nimport message from '@/utils/message'\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useAddSlidesOrElements from '@/hooks//useAddSlidesOrElements'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { selectedSlidesIndex: _selectedSlidesIndex, activeElementIdList } = storeToRefs(mainStore)\n const { currentSlide, slides, theme, slideIndex } = storeToRefs(slidesStore)\n\n const selectedSlidesIndex = computed(() => [..._selectedSlidesIndex.value, slideIndex.value])\n const selectedSlides = computed(() => slides.value.filter((item, index) => selectedSlidesIndex.value.includes(index)))\n const selectedSlidesId = computed(() => selectedSlides.value.map(item => item.id))\n\n const { pasteTextClipboardData } = usePasteTextClipboardData()\n const { addSlidesFromData } = useAddSlidesOrElements()\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 重置幻灯片\n const resetSlides = () => {\n const emptySlide: Slide = {\n id: nanoid(10),\n elements: [],\n background: {\n type: 'solid',\n color: theme.value.backgroundColor,\n },\n }\n slidesStore.updateSlideIndex(0)\n mainStore.setActiveElementIdList([])\n slidesStore.setSlides([emptySlide])\n }\n\n /**\n * 移动页面焦点\n * @param command 移动页面焦点命令:上移、下移\n */\n const updateSlideIndex = (command: string) => {\n if (command === KEYS.UP && slideIndex.value > 0) {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n slidesStore.updateSlideIndex(slideIndex.value - 1)\n }\n else if (command === KEYS.DOWN && slideIndex.value < slides.value.length - 1) {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n slidesStore.updateSlideIndex(slideIndex.value + 1)\n }\n }\n\n // 将当前页面数据加密后复制到剪贴板\n const copySlide = () => {\n const text = encrypt(JSON.stringify({\n type: 'slides',\n data: selectedSlides.value,\n }))\n\n copyText(text).then(() => {\n mainStore.setThumbnailsFocus(true)\n })\n }\n\n // 尝试将剪贴板页面数据解密后添加到下一页(粘贴)\n const pasteSlide = () => {\n readClipboard().then(text => {\n pasteTextClipboardData(text, { onlySlide: true })\n }).catch(err => message.warning(err))\n }\n\n // 创建一页空白页并添加到下一页\n const createSlide = () => {\n const emptySlide: Slide = {\n id: nanoid(10),\n elements: [],\n background: {\n type: 'solid',\n color: theme.value.backgroundColor,\n },\n }\n mainStore.setActiveElementIdList([])\n slidesStore.addSlide(emptySlide)\n addHistorySnapshot()\n }\n\n // 根据模板创建新页面\n const createSlideByTemplate = (slide: Slide) => {\n const { groupIdMap, elIdMap } = createElementIdMap(slide.elements)\n\n for (const element of slide.elements) {\n element.id = elIdMap[element.id]\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\n }\n const newSlide = {\n ...slide,\n id: nanoid(10),\n }\n mainStore.setActiveElementIdList([])\n slidesStore.addSlide(newSlide)\n addHistorySnapshot()\n }\n\n // 将当前页复制一份到下一页\n const copyAndPasteSlide = () => {\n const slide = JSON.parse(JSON.stringify(currentSlide.value))\n addSlidesFromData([slide])\n }\n\n // 删除当前页,若将删除全部页面,则执行重置幻灯片操作\n const deleteSlide = (targetSlidesId = selectedSlidesId.value) => {\n if (slides.value.length === targetSlidesId.length) resetSlides()\n else slidesStore.deleteSlide(targetSlidesId)\n\n mainStore.updateSelectedSlidesIndex([])\n\n addHistorySnapshot()\n }\n\n // 将当前页复制后删除(剪切)\n // 由于复制操作会导致多选状态消失,所以需要提前将需要删除的页面ID进行缓存\n const cutSlide = () => {\n const targetSlidesId = [...selectedSlidesId.value]\n copySlide()\n deleteSlide(targetSlidesId)\n }\n\n // 选中全部幻灯片\n const selectAllSlide = () => {\n const newSelectedSlidesIndex = Array.from(Array(slides.value.length), (item, index) => index)\n mainStore.setActiveElementIdList([])\n mainStore.updateSelectedSlidesIndex(newSelectedSlidesIndex)\n }\n\n // 拖拽调整幻灯片顺序同步数据\n const sortSlides = (newIndex: number, oldIndex: number) => {\n if (oldIndex === newIndex) return\n \n const _slides = JSON.parse(JSON.stringify(slides.value))\n const _slide = _slides[oldIndex]\n _slides.splice(oldIndex, 1)\n _slides.splice(newIndex, 0, _slide)\n slidesStore.setSlides(_slides)\n slidesStore.updateSlideIndex(newIndex)\n }\n\n return {\n resetSlides,\n updateSlideIndex,\n copySlide,\n pasteSlide,\n createSlide,\n createSlideByTemplate,\n copyAndPasteSlide,\n deleteSlide,\n cutSlide,\n selectAllSlide,\n sortSlides,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 锁定选中的元素,并清空选中元素状态\n const lockElement = () => {\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n \n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id)) element.lock = true\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList([])\n addHistorySnapshot()\n }\n\n /**\n * 解除元素的锁定状态,并将其设置为当前选择元素\n * @param handleElement 需要解锁的元素\n */\n const unlockElement = (handleElement: PPTElement) => {\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n\n if (handleElement.groupId) {\n const groupElementIdList = []\n for (const element of newElementList) {\n if (element.groupId === handleElement.groupId) {\n element.lock = false\n groupElementIdList.push(element.id)\n }\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList(groupElementIdList)\n }\n else {\n for (const element of newElementList) {\n if (element.id === handleElement.id) {\n element.lock = false\n break\n }\n }\n slidesStore.updateSlide({ elements: newElementList })\n mainStore.setActiveElementIdList([handleElement.id])\n }\n addHistorySnapshot()\n }\n\n return {\n lockElement,\n unlockElement,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 删除全部选中元素\n // 组合元素成员中,存在被选中可独立操作的元素时,优先删除该元素。否则默认删除所有被选中的元素\n const deleteElement = () => {\n if (!activeElementIdList.value.length) return\n\n let newElementList: PPTElement[] = []\n if (activeGroupElementId.value) {\n newElementList = currentSlide.value.elements.filter(el => el.id !== activeGroupElementId.value)\n }\n else {\n newElementList = currentSlide.value.elements.filter(el => !activeElementIdList.value.includes(el.id))\n }\n\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n // 删除内面内全部元素(无论是否选中)\n const deleteAllElements = () => {\n if (!currentSlide.value.elements.length) return\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlide({ elements: [] })\n addHistorySnapshot()\n }\n\n return {\n deleteElement,\n deleteAllElements,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeElementList, handleElementId } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 判断当前选中的元素是否可以组合\n */\n const canCombine = computed(() => {\n if (activeElementList.value.length < 2) return false\n\n const firstGroupId = activeElementList.value[0].groupId\n if (!firstGroupId) return true\n\n const inSameGroup = activeElementList.value.every(el => (el.groupId && el.groupId) === firstGroupId)\n return !inSameGroup\n })\n\n /**\n * 组合当前选中的元素:给当前选中的元素赋予一个相同的分组ID\n */\n const combineElements = () => {\n if (!activeElementList.value.length) return\n\n // 生成一个新元素列表进行后续操作\n let newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n\n // 生成分组ID\n const groupId = nanoid(10)\n\n // 收集需要组合的元素列表,并赋上唯一分组ID\n const combineElementList: PPTElement[] = []\n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id)) {\n element.groupId = groupId\n combineElementList.push(element)\n }\n }\n\n // 确保该组合内所有元素成员的层级是连续的,具体操作方法为:\n // 先获取到该组合内最上层元素的层级,将本次需要组合的元素从新元素列表中移除,\n // 再根据最上层元素的层级位置,将上面收集到的需要组合的元素列表一起插入到新元素列表中合适的位置\n const combineElementMaxLevel = newElementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id)\n const combineElementIdList = combineElementList.map(_element => _element.id)\n newElementList = newElementList.filter(_element => !combineElementIdList.includes(_element.id))\n\n const insertLevel = combineElementMaxLevel - combineElementList.length + 1\n newElementList.splice(insertLevel, 0, ...combineElementList)\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n /**\n * 取消组合元素:移除选中元素的分组ID\n */\n const uncombineElements = () => {\n if (!activeElementList.value.length) return\n const hasElementInGroup = activeElementList.value.some(item => item.groupId)\n if (!hasElementInGroup) return\n \n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n for (const element of newElementList) {\n if (activeElementIdList.value.includes(element.id) && element.groupId) delete element.groupId\n }\n slidesStore.updateSlide({ elements: newElementList })\n\n // 取消组合后,需要重置激活元素状态\n // 默认重置为当前正在操作的元素,如果不存在则重置为空\n const handleElementIdList = handleElementId.value ? [handleElementId.value] : []\n mainStore.setActiveElementIdList(handleElementIdList)\n\n addHistorySnapshot()\n }\n\n return {\n canCombine,\n combineElements,\n uncombineElements,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { copyText, readClipboard } from '@/utils/clipboard'\nimport { encrypt } from '@/utils/crypto'\nimport message from '@/utils/message'\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\nimport useDeleteElement from './useDeleteElement'\n\nexport default () => {\n const mainStore = useMainStore()\n const { activeElementIdList, activeElementList } = storeToRefs(mainStore)\n\n const { pasteTextClipboardData } = usePasteTextClipboardData()\n const { deleteElement } = useDeleteElement()\n\n // 将选中元素数据加密后复制到剪贴板\n const copyElement = () => {\n if (!activeElementIdList.value.length) return\n\n const text = encrypt(JSON.stringify({\n type: 'elements',\n data: activeElementList.value,\n }))\n\n copyText(text).then(() => {\n mainStore.setEditorareaFocus(true)\n })\n }\n\n // 将选中元素复制后删除(剪切)\n const cutElement = () => {\n copyElement()\n deleteElement()\n }\n\n // 尝试将剪贴板元素数据解密后进行粘贴\n const pasteElement = () => {\n readClipboard().then(text => {\n pasteTextClipboardData(text)\n }).catch(err => message.warning(err))\n }\n\n // 将选中元素复制后立刻粘贴\n const quickCopyElement = () => {\n copyElement()\n pasteElement()\n }\n\n return {\n copyElement,\n cutElement,\n pasteElement,\n quickCopyElement,\n }\n}","import { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\n\r\nexport default () => {\r\n const mainStore = useMainStore()\r\n const { currentSlide } = storeToRefs(useSlidesStore())\r\n const { hiddenElementIdList } = storeToRefs(mainStore)\r\n\r\n // 将当前页面全部元素设置为被选择状态\r\n const selectAllElement = () => {\r\n const unlockedElements = currentSlide.value.elements.filter(el => !el.lock && !hiddenElementIdList.value.includes(el.id))\r\n const newActiveElementIdList = unlockedElements.map(el => el.id)\r\n mainStore.setActiveElementIdList(newActiveElementIdList)\r\n }\r\n\r\n return {\r\n selectAllElement,\r\n }\r\n}","import { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport type { PPTElement } from '@/types/slides'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const slidesStore = useSlidesStore()\r\n const { activeElementIdList, activeGroupElementId } = storeToRefs(useMainStore())\r\n const { currentSlide } = storeToRefs(slidesStore)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 将元素向指定方向移动指定的距离\r\n * 组合元素成员中,存在被选中可独立操作的元素时,优先移动该元素。否则默认移动所有被选中的元素\r\n * @param command 移动方向\r\n * @param step 移动距离\r\n */\r\n const moveElement = (command: string, step = 1) => {\r\n let newElementList: PPTElement[] = []\r\n\r\n const move = (el: PPTElement) => {\r\n let { left, top } = el\r\n switch (command) {\r\n case KEYS.LEFT: \r\n left = left - step\r\n break\r\n case KEYS.RIGHT: \r\n left = left + step\r\n break\r\n case KEYS.UP: \r\n top = top - step\r\n break\r\n case KEYS.DOWN: \r\n top = top + step\r\n break\r\n default: break\r\n }\r\n return { ...el, left, top }\r\n }\r\n\r\n if (activeGroupElementId.value) {\r\n newElementList = currentSlide.value.elements.map(el => {\r\n return activeGroupElementId.value === el.id ? move(el) : el\r\n })\r\n }\r\n else {\r\n newElementList = currentSlide.value.elements.map(el => {\r\n return activeElementIdList.value.includes(el.id) ? move(el) : el\r\n })\r\n }\r\n\r\n slidesStore.updateSlide({ elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n moveElement,\r\n }\r\n}","import { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport { ElementOrderCommands } from '@/types/edit'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { currentSlide } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 获取组合元素层级范围\n * @param elementList 本页所有元素列表\n * @param combineElementList 组合元素列表\n */\n const getCombineElementLevelRange = (elementList: PPTElement[], combineElementList: PPTElement[]) => {\n return {\n minLevel: elementList.findIndex(_element => _element.id === combineElementList[0].id),\n maxLevel: elementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id),\n }\n }\n\n /**\n * 上移一层\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveUpElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\n if (element.groupId) {\n\n // 获取到该组合全部成员,以及所有成员的层级范围\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\n\n // 已经处在顶层,无法继续移动\n if (maxLevel === elementList.length - 1) return\n\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\n const nextElement = copyOfElementList[maxLevel + 1]\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n\n if (nextElement.groupId) {\n const nextCombineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\n copyOfElementList.splice(minLevel + nextCombineElementList.length, 0, ...movedElementList)\n }\n else copyOfElementList.splice(minLevel + 1, 0, ...movedElementList)\n }\n\n // 如果被操作的元素不是组合元素成员\n else {\n\n // 获取该元素在列表中的层级\n const level = elementList.findIndex(item => item.id === element.id)\n\n // 已经处在顶层,无法继续移动\n if (level === elementList.length - 1) return\n\n // 获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n const nextElement = copyOfElementList[level + 1]\n const movedElement = copyOfElementList.splice(level, 1)[0]\n\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\n if (nextElement.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\n copyOfElementList.splice(level + combineElementList.length, 0, movedElement)\n }\n else copyOfElementList.splice(level + 1, 0, movedElement)\n }\n\n return copyOfElementList\n }\n\n /**\n * 下移一层,操作方式同上移\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveDownElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n if (element.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\n if (minLevel === 0) return\n\n const prevElement = copyOfElementList[minLevel - 1]\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n\n if (prevElement.groupId) {\n const prevCombineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\n copyOfElementList.splice(minLevel - prevCombineElementList.length, 0, ...movedElementList)\n }\n else copyOfElementList.splice(minLevel - 1, 0, ...movedElementList)\n }\n\n else {\n const level = elementList.findIndex(item => item.id === element.id)\n if (level === 0) return\n\n const prevElement = copyOfElementList[level - 1]\n const movedElement = copyOfElementList.splice(level, 1)[0]\n\n if (prevElement.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\n copyOfElementList.splice(level - combineElementList.length, 0, movedElement)\n }\n else copyOfElementList.splice(level - 1, 0, movedElement)\n }\n\n return copyOfElementList\n }\n\n /**\n * 置顶层\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveTopElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\n if (element.groupId) {\n\n // 获取到该组合全部成员,以及所有成员的层级范围\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\n\n // 已经处在顶层,无法继续移动\n if (maxLevel === elementList.length - 1) return null\n\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表顶部\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n copyOfElementList.push(...movedElementList)\n }\n\n // 如果被操作的元素不是组合元素成员\n else {\n\n // 获取该元素在列表中的层级\n const level = elementList.findIndex(item => item.id === element.id)\n\n // 已经处在顶层,无法继续移动\n if (level === elementList.length - 1) return null\n\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表底部\n copyOfElementList.splice(level, 1)\n copyOfElementList.push(element)\n }\n\n return copyOfElementList\n }\n\n /**\n * 置底层,操作方式同置顶\n * @param elementList 本页所有元素列表\n * @param element 当前操作的元素\n */\n const moveBottomElement = (elementList: PPTElement[], element: PPTElement) => {\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\n\n if (element.groupId) {\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\n if (minLevel === 0) return\n\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\n copyOfElementList.unshift(...movedElementList)\n }\n\n else {\n const level = elementList.findIndex(item => item.id === element.id)\n if (level === 0) return\n\n copyOfElementList.splice(level, 1)\n copyOfElementList.unshift(element)\n }\n\n return copyOfElementList\n }\n\n /**\n * 调整元素层级\n * @param element 需要调整层级的元素\n * @param command 调整命令:上移、下移、置顶、置底\n */\n const orderElement = (element: PPTElement, command: ElementOrderCommands) => {\n let newElementList\n \n if (command === ElementOrderCommands.UP) newElementList = moveUpElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.DOWN) newElementList = moveDownElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.TOP) newElementList = moveTopElement(currentSlide.value.elements, element)\n else if (command === ElementOrderCommands.BOTTOM) newElementList = moveBottomElement(currentSlide.value.elements, element)\n\n if (!newElementList) return\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n return {\n orderElement,\n }\n}","// 进入全屏\nexport const enterFullscreen = () => {\n const docElm = document.documentElement\n if (docElm.requestFullscreen) docElm.requestFullscreen() \n else if (docElm.mozRequestFullScreen) docElm.mozRequestFullScreen() \n else if (docElm.webkitRequestFullScreen) docElm.webkitRequestFullScreen()\n else if (docElm.msRequestFullscreen) docElm.msRequestFullscreen()\n}\n\n// 退出全屏\nexport const exitFullscreen = () => {\n if (document.exitFullscreen) document.exitFullscreen()\n else if (document.mozCancelFullScreen) document.mozCancelFullScreen()\n else if (document.webkitExitFullscreen) document.webkitExitFullscreen()\n else if (document.msExitFullscreen) document.msExitFullscreen()\n}\n\n// 判断是否全屏\nexport const isFullscreen = () => {\n const fullscreenElement = \n document.fullscreenElement ||\n document.mozFullScreenElement ||\n document.webkitFullscreenElement ||\n document.msFullscreenElement ||\n document.webkitCurrentFullScreenElement\n return !!fullscreenElement\n}","import { useScreenStore, useSlidesStore } from '@/store'\nimport { enterFullscreen, exitFullscreen, isFullscreen } from '@/utils/fullscreen'\n\nexport default () => {\n const screenStore = useScreenStore()\n const slidesStore = useSlidesStore()\n\n // 进入放映状态(从当前页开始)\n const enterScreening = () => {\n enterFullscreen()\n screenStore.setScreening(true)\n }\n\n // 进入放映状态(从第一页开始)\n const enterScreeningFromStart = () => {\n slidesStore.updateSlideIndex(0)\n enterScreening()\n }\n\n // 退出放映状态\n const exitScreening = () => {\n screenStore.setScreening(false)\n if (isFullscreen()) exitFullscreen()\n }\n\n return {\n enterScreening,\n enterScreeningFromStart,\n exitScreening,\n }\n}","import { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\nexport default () => {\n const mainStore = useMainStore()\n const { canvasPercentage, canvasScale, canvasDragged } = storeToRefs(mainStore)\n\n const canvasScalePercentage = computed(() => Math.round(canvasScale.value * 100) + '%')\n\n /**\n * 缩放画布百分比\n * @param command 缩放命令:放大、缩小\n */\n const scaleCanvas = (command: '+' | '-') => {\n let percentage = canvasPercentage.value\n const step = 5\n const max = 200\n const min = 30\n if (command === '+' && percentage <= max) percentage += step\n if (command === '-' && percentage >= min) percentage -= step\n\n mainStore.setCanvasPercentage(percentage)\n }\n\n /**\n * 设置画布缩放比例\n * 但不是直接设置该值,而是通过设置画布可视区域百分比来动态计算\n * @param value 目标画布缩放比例\n */\n const setCanvasScalePercentage = (value: number) => {\n const percentage = Math.round(value / canvasScale.value * canvasPercentage.value) / 100\n mainStore.setCanvasPercentage(percentage)\n }\n\n /**\n * 重置画布尺寸和位置\n */\n const resetCanvas = () => {\n mainStore.setCanvasPercentage(90)\n if (canvasDragged) mainStore.setCanvasDragged(false)\n }\n\n return {\n canvasScalePercentage,\n setCanvasScalePercentage,\n scaleCanvas,\n resetCanvas,\n }\n}","import { onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport { ElementOrderCommands } from '@/types/edit'\nimport { KEYS } from '@/configs/hotkey'\n\nimport useSlideHandler from './useSlideHandler'\nimport useLockElement from './useLockElement'\nimport useDeleteElement from './useDeleteElement'\nimport useCombineElement from './useCombineElement'\nimport useCopyAndPasteElement from './useCopyAndPasteElement'\nimport useSelectAllElement from './useSelectAllElement'\nimport useMoveElement from './useMoveElement'\nimport useOrderElement from './useOrderElement'\nimport useHistorySnapshot from './useHistorySnapshot'\nimport useScreening from './useScreening'\nimport useScaleCanvas from './useScaleCanvas'\n\nexport default () => {\n const mainStore = useMainStore()\n const keyboardStore = useKeyboardStore()\n const {\n activeElementIdList,\n disableHotkeys,\n handleElement,\n handleElementId,\n editorAreaFocus,\n thumbnailsFocus,\n showSearchPanel,\n } = storeToRefs(mainStore)\n const { currentSlide } = storeToRefs(useSlidesStore())\n const { ctrlKeyState, shiftKeyState, spaceKeyState } = storeToRefs(keyboardStore)\n\n const {\n updateSlideIndex,\n copySlide,\n createSlide,\n deleteSlide,\n cutSlide,\n copyAndPasteSlide,\n selectAllSlide,\n } = useSlideHandler()\n\n const { combineElements, uncombineElements } = useCombineElement()\n const { deleteElement } = useDeleteElement()\n const { lockElement } = useLockElement()\n const { copyElement, cutElement, quickCopyElement } = useCopyAndPasteElement()\n const { selectAllElement } = useSelectAllElement()\n const { moveElement } = useMoveElement()\n const { orderElement } = useOrderElement()\n const { redo, undo } = useHistorySnapshot()\n const { enterScreening, enterScreeningFromStart } = useScreening()\n const { scaleCanvas, resetCanvas } = useScaleCanvas()\n\n const copy = () => {\n if (activeElementIdList.value.length) copyElement()\n else if (thumbnailsFocus.value) copySlide()\n }\n\n const cut = () => {\n if (activeElementIdList.value.length) cutElement()\n else if (thumbnailsFocus.value) cutSlide()\n }\n\n const quickCopy = () => {\n if (activeElementIdList.value.length) quickCopyElement()\n else if (thumbnailsFocus.value) copyAndPasteSlide()\n }\n\n const selectAll = () => {\n if (editorAreaFocus.value) selectAllElement()\n if (thumbnailsFocus.value) selectAllSlide()\n }\n\n const lock = () => {\n if (!editorAreaFocus.value) return\n lockElement()\n }\n const combine = () => {\n if (!editorAreaFocus.value) return\n combineElements()\n }\n\n const uncombine = () => {\n if (!editorAreaFocus.value) return\n uncombineElements()\n }\n\n const remove = () => {\n if (activeElementIdList.value.length) deleteElement()\n else if (thumbnailsFocus.value) deleteSlide()\n }\n\n const move = (key: string) => {\n if (activeElementIdList.value.length) moveElement(key)\n else if (key === KEYS.UP || key === KEYS.DOWN) updateSlideIndex(key)\n }\n\n const moveSlide = (key: string) => {\n if (key === KEYS.PAGEUP) updateSlideIndex(KEYS.UP)\n else if (key === KEYS.PAGEDOWN) updateSlideIndex(KEYS.DOWN)\n }\n\n const order = (command: ElementOrderCommands) => {\n if (!handleElement.value) return\n orderElement(handleElement.value, command)\n }\n\n const create = () => {\n if (!thumbnailsFocus.value) return\n createSlide()\n }\n\n const tabActiveElement = () => {\n if (!currentSlide.value.elements.length) return\n if (!handleElementId.value) {\n const firstElement = currentSlide.value.elements[0]\n mainStore.setActiveElementIdList([firstElement.id])\n return\n }\n const currentIndex = currentSlide.value.elements.findIndex(el => el.id === handleElementId.value)\n const nextIndex = currentIndex >= currentSlide.value.elements.length - 1 ? 0 : currentIndex + 1\n const nextElementId = currentSlide.value.elements[nextIndex].id\n\n mainStore.setActiveElementIdList([nextElementId])\n }\n\n const keydownListener = (e: KeyboardEvent) => {\n const { ctrlKey, shiftKey, altKey, metaKey } = e\n const ctrlOrMetaKeyActive = ctrlKey || metaKey\n \n const key = e.key.toUpperCase()\n\n if (ctrlOrMetaKeyActive && !ctrlKeyState.value) keyboardStore.setCtrlKeyState(true)\n if (shiftKey && !shiftKeyState.value) keyboardStore.setShiftKeyState(true)\n if (!disableHotkeys.value && key === KEYS.SPACE) keyboardStore.setSpaceKeyState(true)\n\n \n if (ctrlOrMetaKeyActive && key === KEYS.P) {\n e.preventDefault()\n mainStore.setDialogForExport('pdf')\n return\n }\n if (shiftKey && key === KEYS.F5) {\n e.preventDefault()\n enterScreening()\n keyboardStore.setShiftKeyState(false)\n return\n }\n if (key === KEYS.F5) {\n e.preventDefault()\n enterScreeningFromStart()\n return\n }\n if (ctrlKey && key === KEYS.F) {\n e.preventDefault()\n mainStore.setSearchPanelState(!showSearchPanel.value)\n return\n }\n \n if (!editorAreaFocus.value && !thumbnailsFocus.value) return \n\n if (ctrlOrMetaKeyActive && key === KEYS.C) {\n if (disableHotkeys.value) return\n e.preventDefault()\n copy()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.X) {\n if (disableHotkeys.value) return\n e.preventDefault()\n cut()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.D) {\n if (disableHotkeys.value) return\n e.preventDefault()\n quickCopy()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.Z) {\n if (disableHotkeys.value) return\n e.preventDefault()\n undo()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.Y) {\n if (disableHotkeys.value) return\n e.preventDefault()\n redo()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.A) {\n if (disableHotkeys.value) return\n e.preventDefault()\n selectAll()\n }\n if (ctrlOrMetaKeyActive && key === KEYS.L) {\n if (disableHotkeys.value) return\n e.preventDefault()\n lock()\n }\n if (!shiftKey && ctrlOrMetaKeyActive && key === KEYS.G) {\n if (disableHotkeys.value) return\n e.preventDefault()\n combine()\n }\n if (shiftKey && ctrlOrMetaKeyActive && key === KEYS.G) {\n if (disableHotkeys.value) return\n e.preventDefault()\n uncombine()\n }\n if (altKey && key === KEYS.F) {\n if (disableHotkeys.value) return\n e.preventDefault()\n order(ElementOrderCommands.TOP)\n }\n if (altKey && key === KEYS.B) {\n if (disableHotkeys.value) return\n e.preventDefault()\n order(ElementOrderCommands.BOTTOM)\n }\n if (key === KEYS.DELETE || key === KEYS.BACKSPACE) {\n if (disableHotkeys.value) return\n e.preventDefault()\n remove()\n }\n if (key === KEYS.UP) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.UP)\n }\n if (key === KEYS.DOWN) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.DOWN)\n }\n if (key === KEYS.LEFT) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.LEFT)\n }\n if (key === KEYS.RIGHT) {\n if (disableHotkeys.value) return\n e.preventDefault()\n move(KEYS.RIGHT)\n }\n if (key === KEYS.PAGEUP) {\n if (disableHotkeys.value) return\n e.preventDefault()\n moveSlide(KEYS.PAGEUP)\n }\n if (key === KEYS.PAGEDOWN) {\n if (disableHotkeys.value) return\n e.preventDefault()\n moveSlide(KEYS.PAGEDOWN)\n }\n if (key === KEYS.ENTER) {\n if (disableHotkeys.value) return\n e.preventDefault()\n create()\n }\n if (key === KEYS.MINUS) {\n if (disableHotkeys.value) return\n e.preventDefault()\n scaleCanvas('-')\n }\n if (key === KEYS.EQUAL) {\n if (disableHotkeys.value) return\n e.preventDefault()\n scaleCanvas('+')\n }\n if (key === KEYS.DIGIT_0) {\n if (disableHotkeys.value) return\n e.preventDefault()\n resetCanvas()\n }\n if (key === KEYS.TAB) {\n if (disableHotkeys.value) return\n e.preventDefault()\n tabActiveElement()\n }\n }\n \n const keyupListener = () => {\n if (ctrlKeyState.value) keyboardStore.setCtrlKeyState(false)\n if (shiftKeyState.value) keyboardStore.setShiftKeyState(false)\n if (spaceKeyState.value) keyboardStore.setSpaceKeyState(false)\n }\n\n onMounted(() => {\n document.addEventListener('keydown', keydownListener)\n document.addEventListener('keyup', keyupListener)\n window.addEventListener('blur', keyupListener)\n })\n onUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n document.removeEventListener('keyup', keyupListener)\n window.removeEventListener('blur', keyupListener)\n })\n}","import { onMounted, onUnmounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { getImageDataURL } from '@/utils/image'\nimport usePasteTextClipboardData from './usePasteTextClipboardData'\nimport useCreateElement from './useCreateElement'\n\nexport default () => {\n const { editorAreaFocus, thumbnailsFocus, disableHotkeys } = storeToRefs(useMainStore())\n\n const { pasteTextClipboardData } = usePasteTextClipboardData()\n const { createImageElement } = useCreateElement()\n\n // 粘贴图片到幻灯片元素\n const pasteImageFile = (imageFile: File) => {\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n }\n\n /**\n * 粘贴事件监听\n * @param e ClipboardEvent\n */\n const pasteListener = (e: ClipboardEvent) => {\n if (!editorAreaFocus.value && !thumbnailsFocus.value) return\n if (disableHotkeys.value) return\n\n if (!e.clipboardData) return\n\n const clipboardDataItems = e.clipboardData.items\n const clipboardDataFirstItem = clipboardDataItems[0]\n\n if (!clipboardDataFirstItem) return\n\n // 如果剪贴板内有图片,优先尝试读取图片\n for (const item of clipboardDataItems) {\n if (item.kind === 'file' && item.type.indexOf('image') !== -1) {\n const imageFile = item.getAsFile()\n if (imageFile) pasteImageFile(imageFile)\n return\n }\n }\n \n // 如果剪贴板内没有图片,但有文字内容,尝试解析文字内容\n if (clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\n clipboardDataFirstItem.getAsString(text => pasteTextClipboardData(text))\n }\n }\n\n onMounted(() => {\n document.addEventListener('paste', pasteListener)\n })\n onUnmounted(() => {\n document.removeEventListener('paste', pasteListener)\n })\n}","import { ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { parse, type Shape, type Element, type ChartItem } from 'pptxtojson'\nimport { nanoid } from 'nanoid'\nimport { useSlidesStore } from '@/store'\nimport { decrypt } from '@/utils/crypto'\nimport { type ShapePoolItem, SHAPE_LIST, SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\nimport message from '@/utils/message'\nimport type {\n Slide,\n TableCellStyle,\n TableCell,\n ChartType,\n ChartOptions,\n SlideBackground,\n PPTShapeElement,\n PPTLineElement,\n ShapeTextAlign,\n PPTTextElement,\n} from '@/types/slides'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { theme } = storeToRefs(useSlidesStore())\n\n const { addSlidesFromData, isEmptySlide } = useAddSlidesOrElements()\n\n const exporting = ref(false)\n\n // 导入pptist文件\n const importSpecificFile = (files: FileList, cover = false) => {\n const file = files[0]\n\n const reader = new FileReader()\n reader.addEventListener('load', () => {\n try {\n const slides = JSON.parse(decrypt(reader.result as string))\n if (cover) slidesStore.setSlides(slides)\n else if (isEmptySlide.value) slidesStore.setSlides(slides)\n else addSlidesFromData(slides)\n }\n catch {\n message.error('无法正确读取 / 解析该文件')\n }\n })\n reader.readAsText(file)\n }\n\n const parseLineElement = (el: Shape): PPTLineElement => {\n let start: [number, number] = [0, 0]\n let end: [number, number] = [0, 0]\n\n if (!el.isFlipV && !el.isFlipH) { // 右下\n start = [0, 0]\n end = [el.width, el.height]\n }\n else if (el.isFlipV && el.isFlipH) { // 左上\n start = [el.width, el.height]\n end = [0, 0]\n }\n else if (el.isFlipV && !el.isFlipH) { // 右上\n start = [0, el.height]\n end = [el.width, 0]\n }\n else { // 左下\n start = [el.width, 0]\n end = [0, el.height]\n }\n return {\n type: 'line',\n id: nanoid(10),\n width: el.borderWidth || 1,\n left: el.left,\n top: el.top,\n start,\n end,\n style: el.borderType === 'solid' ? 'solid' : 'dashed',\n color: el.borderColor,\n points: ['', el.shapType === 'straightConnector1' ? 'arrow' : '']\n }\n }\n\n // 导入PPTX文件\n const importPPTXFile = (files: FileList) => {\n const file = files[0]\n if (!file) return\n\n exporting.value = true\n\n const shapeList: ShapePoolItem[] = []\n for (const item of SHAPE_LIST) {\n shapeList.push(...item.children)\n }\n \n const reader = new FileReader()\n reader.onload = async e => {\n const json = await parse(e.target!.result as ArrayBuffer, {\n slideFactor: 75 / 914400,\n fontsizeFactor: 100 / 98,\n })\n\n const width = json.size.width\n const scale = VIEWPORT_SIZE / width\n\n const slides: Slide[] = []\n for (const item of json.slides) {\n const { type, value } = item.fill\n let background: SlideBackground\n if (type === 'image') {\n background = {\n type: 'image',\n image: value.picBase64,\n imageSize: 'cover',\n }\n }\n else if (type === 'gradient') {\n background = {\n type: 'gradient',\n gradientType: 'linear',\n gradientColor: [value.colors[0].color, value.colors[value.colors.length - 1].color],\n gradientRotate: value.rot,\n }\n }\n else {\n background = {\n type: 'solid',\n color: value,\n }\n }\n\n const slide: Slide = {\n id: nanoid(10),\n elements: [],\n background,\n }\n\n const parseElements = (elements: Element[]) => {\n for (const el of elements) {\n el.width = el.width * scale\n el.height = el.height * scale\n el.left = el.left * scale\n el.top = el.top * scale\n \n if (el.type === 'text') {\n const textEl: PPTTextElement = {\n type: 'text',\n id: nanoid(10),\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n rotate: el.rotate,\n defaultFontName: theme.value.fontName,\n defaultColor: theme.value.fontColor,\n content: el.content,\n lineHeight: 1,\n outline: {\n color: el.borderColor,\n width: el.borderWidth,\n style: el.borderType === 'solid' ? 'solid' : 'dashed',\n },\n fill: el.fillColor,\n vertical: el.isVertical,\n }\n if (el.shadow) textEl.shadow = el.shadow\n slide.elements.push(textEl)\n }\n else if (el.type === 'image') {\n slide.elements.push({\n type: 'image',\n id: nanoid(10),\n src: el.src,\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n fixedRatio: true,\n rotate: el.rotate,\n })\n }\n else if (el.type === 'audio') {\n slide.elements.push({\n type: 'audio',\n id: nanoid(10),\n src: el.blob,\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n rotate: 0,\n fixedRatio: false,\n color: theme.value.themeColor,\n loop: false,\n autoplay: false,\n })\n }\n else if (el.type === 'video') {\n slide.elements.push({\n type: 'video',\n id: nanoid(10),\n src: (el.blob || el.src)!,\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n rotate: 0,\n autoplay: false,\n })\n }\n else if (el.type === 'shape') {\n if (el.shapType === 'line' || /Connector/.test(el.shapType)) {\n const lineElement = parseLineElement(el)\n slide.elements.push(lineElement)\n }\n else {\n const shape = shapeList.find(item => item.pptxShapeType === el.shapType)\n\n const vAlignMap: { [key: string]: ShapeTextAlign } = {\n 'mid': 'middle',\n 'down': 'bottom',\n 'up': 'top',\n }\n \n const element: PPTShapeElement = {\n type: 'shape',\n id: nanoid(10),\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n viewBox: [200, 200],\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z',\n fill: el.fillColor || 'none',\n fixedRatio: false,\n rotate: el.rotate,\n outline: {\n color: el.borderColor,\n width: el.borderWidth,\n style: el.borderType === 'solid' ? 'solid' : 'dashed',\n },\n text: {\n content: el.content,\n defaultFontName: theme.value.fontName,\n defaultColor: theme.value.fontColor,\n align: vAlignMap[el.vAlign] || 'middle',\n },\n flipH: el.isFlipH,\n flipV: el.isFlipV,\n }\n if (el.shadow) element.shadow = el.shadow\n \n if (shape) {\n element.path = shape.path\n element.viewBox = shape.viewBox\n \n if (shape.pathFormula) {\n element.pathFormula = shape.pathFormula\n element.viewBox = [el.width, el.height]\n \n const pathFormula = SHAPE_PATH_FORMULAS[shape.pathFormula]\n if ('editable' in pathFormula) {\n element.path = pathFormula.formula(el.width, el.height, pathFormula.defaultValue)\n element.keypoint = pathFormula.defaultValue\n }\n else element.path = pathFormula.formula(el.width, el.height)\n }\n }\n if (el.shapType === 'custom') {\n element.special = true\n element.path = el.path!\n element.viewBox = [el.width, el.height]\n }\n \n slide.elements.push(element)\n }\n }\n else if (el.type === 'table') {\n const row = el.data.length\n const col = el.data[0].length\n \n const style: TableCellStyle = {\n fontname: theme.value.fontName,\n color: theme.value.fontColor,\n }\n const data: TableCell[][] = []\n for (let i = 0; i < row; i++) {\n const rowCells: TableCell[] = []\n for (let j = 0; j < col; j++) {\n const cellData = el.data[i][j]\n rowCells.push({\n id: nanoid(10),\n colspan: cellData.colSpan || 1,\n rowspan: cellData.rowSpan || 1,\n text: cellData.text,\n style,\n })\n }\n data.push(rowCells)\n }\n \n const colWidths: number[] = new Array(col).fill(1 / col)\n \n slide.elements.push({\n type: 'table',\n id: nanoid(10),\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n colWidths,\n rotate: 0,\n data,\n outline: {\n width: 2,\n style: 'solid',\n color: '#eeece1',\n },\n theme: {\n color: el.themeColor,\n rowHeader: true,\n rowFooter: false,\n colHeader: false,\n colFooter: false,\n },\n cellMinHeight: 36,\n })\n }\n else if (el.type === 'chart') {\n let labels: string[]\n let legends: string[]\n let series: number[][]\n \n if (el.chartType === 'scatterChart' || el.chartType === 'bubbleChart') {\n const data = el.data\n labels = data[0].map(item => item + '')\n legends = ['系列1']\n series = [data[1]]\n }\n else {\n const data = el.data as ChartItem[]\n labels = Object.values(data[0].xlabels)\n legends = data.map(item => item.key)\n series = data.map(item => item.values.map(v => v.y))\n }\n \n const options: ChartOptions = {}\n \n let chartType: ChartType = 'bar'\n\n switch (el.chartType) {\n case 'barChart':\n case 'bar3DChart':\n chartType = 'bar'\n if (el.barDir === 'bar') options.horizontalBars = true\n if (el.grouping === 'stacked' || el.grouping === 'percentStacked') options.stackBars = true\n break\n case 'lineChart':\n case 'line3DChart':\n case 'areaChart':\n case 'area3DChart':\n case 'scatterChart':\n case 'bubbleChart':\n chartType = 'line'\n if (el.chartType === 'areaChart' || el.chartType === 'area3DChart') options.showArea = true\n if (el.chartType === 'scatterChart' || el.chartType === 'bubbleChart') options.showLine = false\n break\n case 'pieChart':\n case 'pie3DChart':\n case 'doughnutChart':\n chartType = 'pie'\n if (el.chartType === 'doughnutChart') options.donut = true\n break\n default:\n }\n \n slide.elements.push({\n type: 'chart',\n id: nanoid(10),\n chartType: chartType,\n width: el.width,\n height: el.height,\n left: el.left,\n top: el.top,\n rotate: 0,\n themeColor: [theme.value.themeColor],\n gridColor: theme.value.fontColor,\n data: {\n labels,\n legends,\n series,\n },\n options,\n })\n }\n else if (el.type === 'group' || el.type === 'diagram') {\n const elements = el.elements.map(_el => ({\n ..._el,\n left: _el.left + el.left,\n top: _el.top + el.top,\n }))\n parseElements(elements)\n }\n }\n }\n parseElements(item.elements)\n slides.push(slide)\n }\n if (isEmptySlide.value) slidesStore.setSlides(slides)\n else addSlidesFromData(slides)\n exporting.value = false\n }\n reader.readAsArrayBuffer(file)\n }\n\n return {\n importSpecificFile,\n importPPTXFile,\n exporting,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a0322054\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"hotkey-doc\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = { class: \"label\" }\nconst _hoisted_4 = { class: \"value\" }\n\nimport { HOTKEY_DOC } from '@/configs/hotkey' \n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'HotkeyDoc',\n setup(__props) {\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(HOTKEY_DOC), (item) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (hotkey) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"hotkey-item\",\n key: hotkey.label\n }, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(hotkey.label), 1),\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(hotkey.value), 1)\n ]))\n }), 128))\n ], 64))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./HotkeyDoc.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./HotkeyDoc.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./HotkeyDoc.vue?vue&type=style&index=0&id=a0322054&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a0322054\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-64bedb34\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"accept\"]\n\nimport { ref } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FileInput',\n props: {\n accept: { default: 'image/*' }\n },\n emits: [\"change\"],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst emit = __emit\n\nconst inputRef = ref()\n\nconst handleClick = () => {\n if (!inputRef.value) return\n inputRef.value.value = ''\n inputRef.value.click()\n}\nconst handleChange = (e: Event) => {\n const files = (e.target as HTMLInputElement).files\n if (files) emit('change', files)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"file-input\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (handleClick()))\n }, [\n _renderSlot(_ctx.$slots, \"default\"),\n _createElementVNode(\"input\", {\n class: \"input\",\n type: \"file\",\n name: \"upload\",\n ref_key: \"inputRef\",\n ref: inputRef,\n accept: _ctx.accept,\n onChange: _cache[0] || (_cache[0] = $event => handleChange($event))\n }, null, 40, _hoisted_1)\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./FileInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FileInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FileInput.vue?vue&type=style&index=0&id=64bedb34&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-64bedb34\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a5c6b41c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"fullscreen-spin\"\n}\nconst _hoisted_2 = { class: \"spin\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"spinner\" }, null, -1))\nconst _hoisted_4 = { class: \"text\" }\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FullscreenSpin',\n props: {\n loading: { type: Boolean, default: false },\n tip: { default: '' }\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.tip), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./FullscreenSpin.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FullscreenSpin.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FullscreenSpin.vue?vue&type=style&index=0&id=a5c6b41c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a5c6b41c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, vShow as _vShow, normalizeClass as _normalizeClass, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-749dadac\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\n\nimport { computed, ref, type CSSProperties } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Drawer',\n props: {\n visible: { type: Boolean },\n width: { default: 320 },\n contentStyle: {},\n placement: { default: 'right' }\n },\n emits: [\"update:visible\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst contentVisible = ref(false)\n\nconst contentStyle = computed(() => {\n return {\n width: props.width + 'px',\n ...(props.contentStyle || {})\n }\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconClose = _resolveComponent(\"IconClose\")!\n\n return (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n _createVNode(_Transition, {\n name: `drawer-slide-${_ctx.placement}`,\n onAfterLeave: _cache[1] || (_cache[1] = ($event: any) => (contentVisible.value = false)),\n onBeforeEnter: _cache[2] || (_cache[2] = ($event: any) => (contentVisible.value = true))\n }, {\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"div\", {\n class: _normalizeClass(['drawer', _ctx.placement]),\n style: _normalizeStyle({ width: props.width + 'px' })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"title\"),\n _createElementVNode(\"span\", {\n class: \"close-btn\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('update:visible', false)))\n }, [\n _createVNode(_component_IconClose)\n ])\n ]),\n (contentVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"content\",\n style: _normalizeStyle(contentStyle.value)\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 6), [\n [_vShow, _ctx.visible]\n ])\n ]),\n _: 3\n }, 8, [\"name\"])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./Drawer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Drawer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Drawer.vue?vue&type=style&index=0&id=749dadac&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-749dadac\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, withKeys as _withKeys, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a97ba0dc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"prefix\" }\nconst _hoisted_2 = [\"disabled\", \"value\", \"placeholder\"]\nconst _hoisted_3 = { class: \"suffix\" }\n\nimport { ref } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Input',\n props: {\n value: {},\n disabled: { type: Boolean, default: false },\n placeholder: { default: '' }\n },\n emits: [\"update:value\", \"input\", \"change\", \"blur\", \"focus\", \"enter\"],\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\n\n\nconst emit = __emit\n\nconst focused = ref(false)\n\nconst handleInput = (e: Event) => {\n emit('update:value', (e.target as HTMLInputElement).value)\n}\nconst handleBlur = (e: Event) => {\n focused.value = false\n emit('blur', e)\n}\nconst handleFocus = (e: Event) => {\n focused.value = true\n emit('focus', e)\n}\n\nconst inputRef = ref()\nconst focus = () => {\n if (inputRef.value) inputRef.value.focus()\n}\n\n__expose({\n focus,\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"input\", {\n 'disabled': _ctx.disabled,\n 'focused': focused.value,\n }])\n }, [\n _createElementVNode(\"span\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"prefix\")\n ]),\n _createElementVNode(\"input\", {\n type: \"text\",\n ref_key: \"inputRef\",\n ref: inputRef,\n disabled: _ctx.disabled,\n value: _ctx.value,\n placeholder: _ctx.placeholder,\n onInput: _cache[0] || (_cache[0] = $event => handleInput($event)),\n onFocus: _cache[1] || (_cache[1] = $event => handleFocus($event)),\n onBlur: _cache[2] || (_cache[2] = $event => handleBlur($event)),\n onChange: _cache[3] || (_cache[3] = $event => emit('change', $event)),\n onKeydown: _cache[4] || (_cache[4] = _withKeys($event => emit('enter', $event), [\"enter\"]))\n }, null, 40, _hoisted_2),\n _createElementVNode(\"span\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"suffix\")\n ])\n ], 2))\n}\n}\n\n})","\n\n\n\n","import script from \"./Input.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Input.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Input.vue?vue&type=style&index=0&id=a97ba0dc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-a97ba0dc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { type CSSProperties, onMounted, ref, watch, computed } from 'vue'\nimport tippy, { type Instance, type Placement } from 'tippy.js'\n\nimport 'tippy.js/animations/scale.css'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Popover',\n props: {\n value: { type: Boolean, default: false },\n trigger: { default: 'click' },\n placement: { default: 'bottom' },\n appendTo: {},\n contentStyle: {},\n center: { type: Boolean, default: false }\n },\n emits: [\"update:value\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst instance = ref()\nconst triggerRef = ref()\nconst contentRef = ref()\nconst contentVisible = ref(false)\n\nconst contentStyle = computed(() => {\n return props.contentStyle || {}\n})\n\nwatch(() => props.value, () => {\n if (!instance.value) return\n if (props.value) instance.value.show()\n else instance.value.hide()\n})\n\nonMounted(() => {\n instance.value = tippy(triggerRef.value!, {\n content: contentRef.value!,\n allowHTML: true,\n trigger: props.trigger,\n placement: props.placement,\n interactive: true,\n appendTo: props.appendTo || document.body,\n maxWidth: 'none',\n offset: [0, 8],\n duration: 200,\n animation: 'scale',\n theme: 'popover',\n onShow() {\n contentVisible.value = true\n },\n onShown() {\n if (!props.value) emit('update:value', true)\n },\n onHidden() {\n if (props.value) emit('update:value', false)\n contentVisible.value = false\n },\n })\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"popover\", { 'center': _ctx.center }]),\n ref_key: \"triggerRef\",\n ref: triggerRef\n }, [\n _createElementVNode(\"div\", {\n class: \"popover-content\",\n style: _normalizeStyle(contentStyle.value),\n ref_key: \"contentRef\",\n ref: contentRef\n }, [\n (contentVisible.value)\n ? _renderSlot(_ctx.$slots, \"content\", { key: 0 })\n : _createCommentVNode(\"\", true)\n ], 4),\n _renderSlot(_ctx.$slots, \"default\")\n ], 2))\n}\n}\n\n})","\n\n\n\n\n\n","import script from \"./Popover.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Popover.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Popover.vue?vue&type=style&index=0&id=70fabe9a&lang=scss&scoped=true\"\nimport \"./Popover.vue?vue&type=style&index=1&id=70fabe9a&lang=scss\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-70fabe9a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PopoverMenuItem',\n props: {\n center: { type: Boolean, default: false }\n },\n emits: [\"click\"],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst emit = __emit\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"popover-menu-item\", { 'center': _ctx.center }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (emit('click')))\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2))\n}\n}\n\n})","\n\n\n\n","import script from \"./PopoverMenuItem.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./PopoverMenuItem.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./PopoverMenuItem.vue?vue&type=style&index=0&id=2f137c4f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2f137c4f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, unref as _unref, resolveComponent as _resolveComponent, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0b9f8c7b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"editor-header\" }\nconst _hoisted_2 = { class: \"left\" }\nconst _hoisted_3 = { class: \"menu-item\" }\nconst _hoisted_4 = { class: \"title\" }\nconst _hoisted_5 = [\"title\"]\nconst _hoisted_6 = { class: \"right\" }\nconst _hoisted_7 = { class: \"group-menu-item\" }\nconst _hoisted_8 = { class: \"arrow-btn\" }\nconst _hoisted_9 = {\n class: \"github-link\",\n href: \"https://github.com/pipipi-pikachu/PPTist\",\n target: \"_blank\"\n}\nconst _hoisted_10 = { class: \"menu-item\" }\n\nimport { nextTick, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport useScreening from '@/hooks/useScreening'\nimport useImport from '@/hooks/useImport'\nimport useSlideHandler from '@/hooks/useSlideHandler'\nimport type { DialogForExportTypes } from '@/types/export'\n\nimport HotkeyDoc from './HotkeyDoc.vue'\nimport FileInput from '@/components/FileInput.vue'\nimport FullscreenSpin from '@/components/FullscreenSpin.vue'\nimport Drawer from '@/components/Drawer.vue'\nimport Input from '@/components/Input.vue'\nimport Popover from '@/components/Popover.vue'\nimport PopoverMenuItem from '@/components/PopoverMenuItem.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { title } = storeToRefs(slidesStore)\nconst { enterScreening, enterScreeningFromStart } = useScreening()\nconst { importSpecificFile, importPPTXFile, exporting } = useImport()\nconst { resetSlides } = useSlideHandler()\n\nconst mainMenuVisible = ref(false)\nconst hotkeyDrawerVisible = ref(false)\nconst editingTitle = ref(false)\nconst titleInputRef = ref>()\nconst titleValue = ref('')\n\nconst startEditTitle = () => {\n titleValue.value = title.value\n editingTitle.value = true\n nextTick(() => titleInputRef.value?.focus())\n}\n\nconst handleUpdateTitle = () => {\n slidesStore.setTitle(titleValue.value)\n editingTitle.value = false\n}\n\nconst goLink = (url: string) => {\n window.open(url)\n mainMenuVisible.value = false\n}\n\nconst setDialogForExport = (type: DialogForExportTypes) => {\n mainStore.setDialogForExport(type)\n mainMenuVisible.value = false\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconHamburgerButton = _resolveComponent(\"IconHamburgerButton\")!\n const _component_IconPpt = _resolveComponent(\"IconPpt\")!\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n const _component_IconDownload = _resolveComponent(\"IconDownload\")!\n const _component_IconGithub = _resolveComponent(\"IconGithub\")!\n const _directive_tooltip = _resolveDirective(\"tooltip\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(Popover, {\n trigger: \"click\",\n placement: \"bottom-start\",\n value: mainMenuVisible.value,\n \"onUpdate:value\": _cache[7] || (_cache[7] = ($event: any) => ((mainMenuVisible).value = $event))\n }, {\n content: _withCtx(() => [\n _createVNode(FileInput, {\n accept: \".pptist\",\n onChange: _cache[0] || (_cache[0] = files => {\n _unref(importSpecificFile)(files)\n mainMenuVisible.value = false\n })\n }, {\n default: _withCtx(() => [\n _createVNode(PopoverMenuItem, null, {\n default: _withCtx(() => [\n _createTextVNode(\"导入 pptist 文件\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(FileInput, {\n accept: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n onChange: _cache[1] || (_cache[1] = files => {\n _unref(importPPTXFile)(files)\n mainMenuVisible.value = false\n })\n }, {\n default: _withCtx(() => [\n _createVNode(PopoverMenuItem, null, {\n default: _withCtx(() => [\n _createTextVNode(\"导入 pptx 文件(测试版)\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (setDialogForExport('pptx')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"导出文件\")\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[3] || (_cache[3] = ($event: any) => {_unref(resetSlides)(); mainMenuVisible.value = false})\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"重置幻灯片\")\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (goLink('https://github.com/pipipi-pikachu/PPTist/issues')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"意见反馈\")\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (goLink('https://github.com/pipipi-pikachu/PPTist/blob/master/doc/Q&A.md')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"常见问题\")\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[6] || (_cache[6] = ($event: any) => {mainMenuVisible.value = false; hotkeyDrawerVisible.value = true})\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"快捷键\")\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_IconHamburgerButton, { class: \"icon\" })\n ])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_4, [\n (editingTitle.value)\n ? (_openBlock(), _createBlock(Input, {\n key: 0,\n class: \"title-input\",\n ref_key: \"titleInputRef\",\n ref: titleInputRef,\n value: titleValue.value,\n \"onUpdate:value\": _cache[8] || (_cache[8] = ($event: any) => ((titleValue).value = $event)),\n onBlur: _cache[9] || (_cache[9] = ($event: any) => (handleUpdateTitle()))\n }, null, 8, [\"value\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"title-text\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (startEditTitle())),\n title: _unref(title)\n }, _toDisplayString(_unref(title)), 9, _hoisted_5))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"menu-item\",\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_unref(enterScreening)()))\n }, [\n _createVNode(_component_IconPpt, { class: \"icon\" })\n ])), [\n [_directive_tooltip, '幻灯片放映']\n ]),\n _createVNode(Popover, {\n trigger: \"click\",\n center: \"\"\n }, {\n content: _withCtx(() => [\n _createVNode(PopoverMenuItem, {\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_unref(enterScreeningFromStart)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"从头开始\")\n ]),\n _: 1\n }),\n _createVNode(PopoverMenuItem, {\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_unref(enterScreening)()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"从当前页开始\")\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_IconDown, { class: \"arrow\" })\n ])\n ]),\n _: 1\n })\n ]),\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"menu-item\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (setDialogForExport('pptx')))\n }, [\n _createVNode(_component_IconDownload, { class: \"icon\" })\n ])), [\n [_directive_tooltip, '导出']\n ]),\n _createElementVNode(\"a\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_component_IconGithub, { class: \"icon\" })\n ])\n ])\n ]),\n _createVNode(Drawer, {\n width: 320,\n visible: hotkeyDrawerVisible.value,\n \"onUpdate:visible\": _cache[15] || (_cache[15] = ($event: any) => ((hotkeyDrawerVisible).value = $event)),\n placement: \"right\"\n }, {\n default: _withCtx(() => [\n _createVNode(HotkeyDoc)\n ]),\n _: 1\n }, 8, [\"visible\"]),\n _createVNode(FullscreenSpin, {\n loading: _unref(exporting),\n tip: \"正在导入...\"\n }, null, 8, [\"loading\"])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=0b9f8c7b&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0b9f8c7b\"]])\n\nexport default __exports__","import type { InjectionKey, Ref } from 'vue'\n\nexport type SlideScale = Ref\nexport type SlideId = Ref\nexport type RadioGroupValue = {\n value: Ref\n updateValue: (value: string) => void\n}\n\nexport const injectKeySlideScale: InjectionKey = Symbol()\nexport const injectKeySlideId: InjectionKey = Symbol()\nexport const injectKeyRadioGroupValue: InjectionKey = Symbol()","// 清除文字选区\nexport const removeAllRanges = () => {\n const selection = window.getSelection()\n selection && selection.removeAllRanges()\n}","import { ref, computed, onMounted, onUnmounted, watch, type Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nexport default (canvasRef: Ref) => {\n const viewportLeft = ref(0)\n const viewportTop = ref(0)\n\n const mainStore = useMainStore()\n const { canvasPercentage, canvasDragged } = storeToRefs(mainStore)\n const { viewportRatio } = storeToRefs(useSlidesStore())\n\n // 初始化画布可视区域的位置\n const initViewportPosition = () => {\n if (!canvasRef.value) return\n const canvasWidth = canvasRef.value.clientWidth\n const canvasHeight = canvasRef.value.clientHeight\n\n if (canvasHeight / canvasWidth > viewportRatio.value) {\n const viewportActualWidth = canvasWidth * (canvasPercentage.value / 100)\n mainStore.setCanvasScale(viewportActualWidth / VIEWPORT_SIZE)\n viewportLeft.value = (canvasWidth - viewportActualWidth) / 2\n viewportTop.value = (canvasHeight - viewportActualWidth * viewportRatio.value) / 2\n }\n else {\n const viewportActualHeight = canvasHeight * (canvasPercentage.value / 100)\n mainStore.setCanvasScale(viewportActualHeight / (VIEWPORT_SIZE * viewportRatio.value))\n viewportLeft.value = (canvasWidth - viewportActualHeight / viewportRatio.value) / 2\n viewportTop.value = (canvasHeight - viewportActualHeight) / 2\n }\n }\n\n // 更新画布可视区域的位置\n const setViewportPosition = (newValue: number, oldValue: number) => {\n if (!canvasRef.value) return\n const canvasWidth = canvasRef.value.clientWidth\n const canvasHeight = canvasRef.value.clientHeight\n\n const newViewportActualWidth = canvasWidth * (newValue / 100)\n const oldViewportActualWidth = canvasWidth * (oldValue / 100)\n const newViewportActualHeight = canvasHeight * (newValue / 100)\n const oldViewportActualHeight = canvasHeight * (oldValue / 100)\n\n if (canvasHeight / canvasWidth > viewportRatio.value) {\n mainStore.setCanvasScale(newViewportActualWidth / VIEWPORT_SIZE)\n }\n else {\n mainStore.setCanvasScale(newViewportActualHeight / (VIEWPORT_SIZE * viewportRatio.value))\n }\n viewportLeft.value = viewportLeft.value - (newViewportActualWidth - oldViewportActualWidth) / 2\n viewportTop.value = viewportTop.value - (newViewportActualHeight - oldViewportActualHeight) / 2\n }\n\n // 可视区域缩放或比例变化时,重置/更新可视区域的位置\n watch(canvasPercentage, setViewportPosition)\n watch(viewportRatio, initViewportPosition)\n\n // 画布拖拽状态改变(复原)时,重置可视区域的位置\n watch(canvasDragged, () => {\n if (!canvasDragged.value) initViewportPosition()\n })\n\n // 画布可视区域位置和大小的样式\n const viewportStyles = computed(() => ({\n width: VIEWPORT_SIZE,\n height: VIEWPORT_SIZE * viewportRatio.value,\n left: viewportLeft.value,\n top: viewportTop.value,\n }))\n\n // 监听画布尺寸发生变化时,重置可视区域的位置\n const resizeObserver = new ResizeObserver(initViewportPosition)\n\n onMounted(() => {\n if (canvasRef.value) resizeObserver.observe(canvasRef.value)\n })\n onUnmounted(() => {\n if (canvasRef.value) resizeObserver.unobserve(canvasRef.value)\n })\n\n // 拖拽画布\n const dragViewport = (e: MouseEvent) => {\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originLeft = viewportLeft.value\n const originTop = viewportTop.value\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n viewportLeft.value = originLeft + (currentPageX - startPageX)\n viewportTop.value = originTop + (currentPageY - startPageY)\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n mainStore.setCanvasDragged(true)\n }\n }\n\n return {\n viewportStyles,\n dragViewport,\n }\n}","import { type Ref, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport { getElementRange } from '@/utils/element'\n\nexport default (elementList: Ref, viewportRef: Ref) => {\n const mainStore = useMainStore()\n const { canvasScale, hiddenElementIdList } = storeToRefs(mainStore)\n\n const mouseSelectionVisible = ref(false)\n const mouseSelectionQuadrant = ref(1)\n const mouseSelection = ref({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n })\n\n // 更新鼠标框选范围\n const updateMouseSelection = (e: MouseEvent) => {\n if (!viewportRef.value) return\n\n let isMouseDown = true\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const minSelectionRange = 5\n \n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const left = (startPageX - viewportRect.x) / canvasScale.value\n const top = (startPageY - viewportRect.y) / canvasScale.value\n\n // 确定框选的起始位置和其他默认值初始化\n mouseSelection.value = {\n top: top,\n left: left,\n width: 0,\n height: 0,\n }\n mouseSelectionVisible.value = false\n mouseSelectionQuadrant.value = 4\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const offsetWidth = (currentPageX - startPageX) / canvasScale.value\n const offsetHeight = (currentPageY - startPageY) / canvasScale.value\n\n const width = Math.abs(offsetWidth)\n const height = Math.abs(offsetHeight)\n\n if ( width < minSelectionRange || height < minSelectionRange ) return\n \n // 计算鼠标框选(移动)的方向\n // 按四个象限的位置区分,如右下角为第四象限\n let quadrant = 0\n if ( offsetWidth > 0 && offsetHeight > 0 ) quadrant = 4\n else if ( offsetWidth < 0 && offsetHeight < 0 ) quadrant = 2\n else if ( offsetWidth > 0 && offsetHeight < 0 ) quadrant = 1\n else if ( offsetWidth < 0 && offsetHeight > 0 ) quadrant = 3\n\n // 更新框选范围\n mouseSelection.value = {\n ...mouseSelection.value,\n width: width,\n height: height,\n }\n mouseSelectionVisible.value = true\n mouseSelectionQuadrant.value = quadrant\n }\n\n document.onmouseup = () => {\n document.onmousemove = null\n document.onmouseup = null\n isMouseDown = false\n\n // 计算画布中的元素是否处在鼠标选择范围中,处在范围中的元素设置为被选中状态\n let inRangeElementList: PPTElement[] = []\n for (let i = 0; i < elementList.value.length; i++) {\n const element = elementList.value[i]\n const mouseSelectionLeft = mouseSelection.value.left\n const mouseSelectionTop = mouseSelection.value.top\n const mouseSelectionWidth = mouseSelection.value.width\n const mouseSelectionHeight = mouseSelection.value.height\n\n const { minX, maxX, minY, maxY } = getElementRange(element)\n\n // 计算元素是否处在框选范围内时,四个框选方向的计算方式有差异\n let isInclude = false\n if (mouseSelectionQuadrant.value === 4) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > mouseSelectionTop && \n maxY < mouseSelectionTop + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 2) {\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 1) {\n isInclude = minX > mouseSelectionLeft && \n maxX < mouseSelectionLeft + mouseSelectionWidth && \n minY > (mouseSelectionTop - mouseSelectionHeight) && \n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\n }\n else if (mouseSelectionQuadrant.value === 3) {\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \n minY > mouseSelectionTop && \n maxY < mouseSelectionTop + mouseSelectionHeight\n }\n\n // 被锁定或被隐藏的元素即使在范围内,也不需要设置为选中状态\n if (isInclude && !element.lock && !hiddenElementIdList.value.includes(element.id)) inRangeElementList.push(element)\n }\n\n // 如果范围内有组合元素的成员,需要该组全部成员都处在范围内,才会被设置为选中状态\n inRangeElementList = inRangeElementList.filter(inRangeElement => {\n if (inRangeElement.groupId) {\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\n const groupElementList = elementList.value.filter(element => element.groupId === inRangeElement.groupId)\n return groupElementList.every(groupElement => inRangeElementIdList.includes(groupElement.id))\n }\n return true\n })\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\n mainStore.setActiveElementIdList(inRangeElementIdList)\n\n mouseSelectionVisible.value = false\n }\n }\n\n return {\n mouseSelection,\n mouseSelectionVisible,\n mouseSelectionQuadrant,\n updateMouseSelection,\n }\n}","import { onMounted, onUnmounted, type Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport { getImageDataURL } from '@/utils/image'\nimport { parseText2Paragraphs } from '@/utils/textParser'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nexport default (elementRef: Ref) => {\n const { disableHotkeys } = storeToRefs(useMainStore())\n\n const { createImageElement, createTextElement } = useCreateElement()\n\n // 拖拽元素到画布中\n const handleDrop = (e: DragEvent) => {\n if (!e.dataTransfer || e.dataTransfer.items.length === 0) return\n const dataTransferItem = e.dataTransfer.items[0]\n\n // 检查事件对象中是否存在图片,存在则插入图片,否则继续检查是否存在文字,存在则插入文字\n if (dataTransferItem.kind === 'file' && dataTransferItem.type.indexOf('image') !== -1) {\n const imageFile = dataTransferItem.getAsFile()\n if (imageFile) {\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\n }\n }\n else if (dataTransferItem.kind === 'string' && dataTransferItem.type === 'text/plain') {\n dataTransferItem.getAsString(text => {\n if (disableHotkeys.value) return\n const string = parseText2Paragraphs(text)\n createTextElement({\n left: 0,\n top: 0,\n width: 600,\n height: 50,\n }, { content: string })\n })\n }\n }\n\n onMounted(() => {\n elementRef.value && elementRef.value.addEventListener('drop', handleDrop)\n\n document.ondragleave = e => e.preventDefault()\n document.ondrop = e => e.preventDefault()\n document.ondragenter = e => e.preventDefault()\n document.ondragover = e => e.preventDefault()\n })\n onUnmounted(() => {\n elementRef.value && elementRef.value.removeEventListener('drop', handleDrop)\n\n document.ondragleave = null\n document.ondrop = null\n document.ondragenter = null\n document.ondragover = null\n })\n}","import type { Ref } from 'vue'\nimport { useSlidesStore } from '@/store'\nimport type { PPTElement, PPTLineElement, PPTVideoElement, PPTAudioElement, PPTChartElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n/**\n * 计算给定坐标到原点连线的弧度\n * @param x 坐标x\n * @param y 坐标y\n */\nconst getAngleFromCoordinate = (x: number, y: number) => {\n const radian = Math.atan2(x, y)\n const angle = 180 / Math.PI * radian\n return angle\n}\n\nexport default (\n elementList: Ref,\n viewportRef: Ref,\n canvasScale: Ref,\n) => {\n const slidesStore = useSlidesStore()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 旋转元素\n const rotateElement = (e: MouseEvent | TouchEvent, element: Exclude) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n \n let isMouseDown = true\n let angle = 0\n const elOriginRotate = element.rotate || 0\n\n const elLeft = element.left\n const elTop = element.top\n const elWidth = element.width\n const elHeight = element.height\n\n // 元素中心点(旋转中心点)\n const centerX = elLeft + elWidth / 2\n const centerY = elTop + elHeight / 2\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n if (!isMouseDown) return\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n \n // 计算当前鼠标位置相对元素中心点连线的角度(弧度)\n const mouseX = (currentPageX - viewportRect.left) / canvasScale.value\n const mouseY = (currentPageY - viewportRect.top) / canvasScale.value\n const x = mouseX - centerX\n const y = centerY - mouseY\n\n angle = getAngleFromCoordinate(x, y)\n\n // 靠近45倍数的角度时有吸附效果\n const sorptionRange = 5\n if ( Math.abs(angle) <= sorptionRange ) angle = 0\n else if ( angle > 0 && Math.abs(angle - 45) <= sorptionRange ) angle -= (angle - 45)\n else if ( angle < 0 && Math.abs(angle + 45) <= sorptionRange ) angle -= (angle + 45)\n else if ( angle > 0 && Math.abs(angle - 90) <= sorptionRange ) angle -= (angle - 90)\n else if ( angle < 0 && Math.abs(angle + 90) <= sorptionRange ) angle -= (angle + 90)\n else if ( angle > 0 && Math.abs(angle - 135) <= sorptionRange ) angle -= (angle - 135)\n else if ( angle < 0 && Math.abs(angle + 135) <= sorptionRange ) angle -= (angle + 135)\n else if ( angle > 0 && Math.abs(angle - 180) <= sorptionRange ) angle -= (angle - 180)\n else if ( angle < 0 && Math.abs(angle + 180) <= sorptionRange ) angle -= (angle + 180)\n\n elementList.value = elementList.value.map(el => element.id === el.id ? { ...el, rotate: angle } : el)\n }\n\n const handleMouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n if (elOriginRotate === angle) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\n }\n }\n\n return {\n rotateElement,\n }\n}","export const ELEMENT_TYPE_ZH: { [key: string]: string } = {\n text: '文本',\n image: '图片',\n shape: '形状',\n line: '线条',\n chart: '图表',\n table: '表格',\n video: '视频',\n audio: '音频',\n latex: '公式',\n}\n\nexport const MIN_SIZE: { [key: string]: number } = {\n text: 20,\n image: 20,\n shape: 15,\n chart: 200,\n table: 20,\n video: 250,\n audio: 20,\n latex: 20,\n}","import type { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport type { PPTElement, PPTImageElement, PPTLineElement, PPTShapeElement } from '@/types/slides'\nimport { OperateResizeHandlers, type AlignmentLineProps, type MultiSelectRange } from '@/types/edit'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { MIN_SIZE } from '@/configs/element'\nimport { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport { type AlignLine, uniqAlignLines } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface RotateElementData {\n left: number\n top: number\n width: number\n height: number\n}\n\n/**\n * 计算旋转后的元素八个缩放点的位置\n * @param element 元素原始位置大小信息\n * @param angle 旋转角度\n */\nconst getRotateElementPoints = (element: RotateElementData, angle: number) => {\n const { left, top, width, height } = element\n\n const radius = Math.sqrt( Math.pow(width, 2) + Math.pow(height, 2) ) / 2\n const auxiliaryAngle = Math.atan(height / width) * 180 / Math.PI\n\n const tlbraRadian = (180 - angle - auxiliaryAngle) * Math.PI / 180\n const trblaRadian = (auxiliaryAngle - angle) * Math.PI / 180\n const taRadian = (90 - angle) * Math.PI / 180\n const raRadian = angle * Math.PI / 180\n\n const halfWidth = width / 2\n const halfHeight = height / 2\n\n const middleLeft = left + halfWidth\n const middleTop = top + halfHeight\n\n const leftTopPoint = {\n left: middleLeft + radius * Math.cos(tlbraRadian),\n top: middleTop - radius * Math.sin(tlbraRadian),\n }\n const topPoint = {\n left: middleLeft + halfHeight * Math.cos(taRadian),\n top: middleTop - halfHeight * Math.sin(taRadian),\n }\n const rightTopPoint = {\n left: middleLeft + radius * Math.cos(trblaRadian),\n top: middleTop - radius * Math.sin(trblaRadian),\n }\n const rightPoint = {\n left: middleLeft + halfWidth * Math.cos(raRadian),\n top: middleTop + halfWidth * Math.sin(raRadian),\n }\n const rightBottomPoint = {\n left: middleLeft - radius * Math.cos(tlbraRadian),\n top: middleTop + radius * Math.sin(tlbraRadian),\n }\n const bottomPoint = {\n left: middleLeft - halfHeight * Math.sin(raRadian),\n top: middleTop + halfHeight * Math.cos(raRadian),\n }\n const leftBottomPoint = {\n left: middleLeft - radius * Math.cos(trblaRadian),\n top: middleTop + radius * Math.sin(trblaRadian),\n }\n const leftPoint = {\n left: middleLeft - halfWidth * Math.cos(raRadian),\n top: middleTop - halfWidth * Math.sin(raRadian),\n }\n\n return { leftTopPoint, topPoint, rightTopPoint, rightPoint, rightBottomPoint, bottomPoint, leftBottomPoint, leftPoint }\n}\n\n/**\n * 获取元素某缩放点相对的另一个点的位置,如:【上】对应【下】、【左上】对应【右下】\n * @param direction 当前操作的缩放点\n * @param points 旋转后的元素八个缩放点的位置\n */\nconst getOppositePoint = (direction: OperateResizeHandlers, points: ReturnType): { left: number; top: number } => {\n const oppositeMap = {\n [OperateResizeHandlers.RIGHT_BOTTOM]: points.leftTopPoint,\n [OperateResizeHandlers.LEFT_BOTTOM]: points.rightTopPoint,\n [OperateResizeHandlers.LEFT_TOP]: points.rightBottomPoint,\n [OperateResizeHandlers.RIGHT_TOP]: points.leftBottomPoint,\n [OperateResizeHandlers.TOP]: points.bottomPoint,\n [OperateResizeHandlers.BOTTOM]: points.topPoint,\n [OperateResizeHandlers.LEFT]: points.rightPoint,\n [OperateResizeHandlers.RIGHT]: points.leftPoint,\n }\n return oppositeMap[direction]\n}\n\nexport default (\n elementList: Ref,\n alignmentLines: Ref,\n canvasScale: Ref,\n) => {\n const mainStore = useMainStore()\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(mainStore)\n const { viewportRatio } = storeToRefs(slidesStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 缩放元素\n const scaleElement = (e: MouseEvent | TouchEvent, element: Exclude, command: OperateResizeHandlers) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\n let isMouseDown = true\n mainStore.setScalingState(true)\n\n const elOriginLeft = element.left\n const elOriginTop = element.top\n const elOriginWidth = element.width\n const elOriginHeight = element.height\n\n const originTableCellMinHeight = element.type === 'table' ? element.cellMinHeight : 0\n \n const elRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n const rotateRadian = Math.PI * elRotate / 180\n\n const fixedRatio = ctrlOrShiftKeyActive.value || ('fixedRatio' in element && element.fixedRatio)\n const aspectRatio = elOriginWidth / elOriginHeight\n\n const startPageX = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : e.pageY\n\n // 元素最小缩放限制\n const minSize = MIN_SIZE[element.type] || 20\n const getSizeWithinRange = (size: number) => size < minSize ? minSize : size\n const getHeightWithinRange = (height: number) => {\n const minHeight = minSize / aspectRatio\n return height < minHeight ? minHeight : height\n }\n\n let points: ReturnType\n let baseLeft = 0\n let baseTop = 0\n let horizontalLines: AlignLine[] = []\n let verticalLines: AlignLine[] = []\n\n // 旋转后的元素进行缩放时,引入基点的概念,以当前操作的缩放点相对的点为基点\n // 例如拖动右下角缩放时,左上角为基点,需要保持左上角不变然后修改其他的点的位置来达到所放的效果\n if ('rotate' in element && element.rotate) {\n const { left, top, width, height } = element\n points = getRotateElementPoints({ left, top, width, height }, elRotate)\n const oppositePoint = getOppositePoint(command, points)\n\n baseLeft = oppositePoint.left\n baseTop = oppositePoint.top\n }\n\n // 未旋转的元素具有缩放时的对齐吸附功能,在此处收集对齐对齐吸附线\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边\n // 其中线条和被旋转过的元素不参与吸附对齐\n else {\n const edgeWidth = VIEWPORT_SIZE\n const edgeHeight = VIEWPORT_SIZE * viewportRatio.value\n const isActiveGroupElement = element.id === activeGroupElementId.value\n \n for (const el of elementList.value) {\n if ('rotate' in el && el.rotate) continue\n if (el.type === 'line') continue\n if (isActiveGroupElement && el.id === element.id) continue\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\n\n const left = el.left\n const top = el.top\n const width = el.width\n const height = el.height\n const right = left + width\n const bottom = top + height\n\n const topLine: AlignLine = { value: top, range: [left, right] }\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\n\n horizontalLines.push(topLine, bottomLine)\n verticalLines.push(leftLine, rightLine)\n }\n\n // 画布可视区域的四个边界、水平中心、垂直中心\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\n\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\n \n horizontalLines = uniqAlignLines(horizontalLines)\n verticalLines = uniqAlignLines(verticalLines)\n }\n \n // 对齐吸附方法\n // 将收集到的对齐吸附线与计算的目标元素当前的位置大小相关数据做对比,差值小于设定的值时执行自动缩放校正\n // 水平和垂直两个方向需要分开计算\n const alignedAdsorption = (currentX: number | null, currentY: number | null) => {\n const sorptionRange = 5\n\n const _alignmentLines: AlignmentLineProps[] = []\n let isVerticalAdsorbed = false\n let isHorizontalAdsorbed = false\n const correctionVal = { offsetX: 0, offsetY: 0 }\n \n if (currentY || currentY === 0) {\n for (let i = 0; i < horizontalLines.length; i++) {\n const { value, range } = horizontalLines[i]\n const min = Math.min(...range, currentX || 0)\n const max = Math.max(...range, currentX || 0)\n \n if (Math.abs(currentY - value) < sorptionRange && !isHorizontalAdsorbed) {\n correctionVal.offsetY = currentY - value\n isHorizontalAdsorbed = true\n _alignmentLines.push({ type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100 })\n }\n }\n }\n if (currentX || currentX === 0) {\n for (let i = 0; i < verticalLines.length; i++) {\n const { value, range } = verticalLines[i]\n const min = Math.min(...range, (currentY || 0))\n const max = Math.max(...range, (currentY || 0))\n\n if (Math.abs(currentX - value) < sorptionRange && !isVerticalAdsorbed) {\n correctionVal.offsetX = currentX - value\n isVerticalAdsorbed = true\n _alignmentLines.push({ type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100 })\n }\n }\n }\n alignmentLines.value = _alignmentLines\n return correctionVal\n }\n\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n if (!isMouseDown) return\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n const x = currentPageX - startPageX\n const y = currentPageY - startPageY\n\n let width = elOriginWidth\n let height = elOriginHeight\n let left = elOriginLeft\n let top = elOriginTop\n \n // 元素被旋转的情况下,需要根据元素旋转的角度,重新计算需要缩放的距离(鼠标按下后移动的距离)\n if (elRotate) {\n const revisedX = (Math.cos(rotateRadian) * x + Math.sin(rotateRadian) * y) / canvasScale.value\n let revisedY = (Math.cos(rotateRadian) * y - Math.sin(rotateRadian) * x) / canvasScale.value\n\n // 锁定宽高比例(仅四个角可能触发,四条边不会触发)\n // 以水平方向上缩放的距离为基础,计算垂直方向上的缩放距离,保持二者具有相同的缩放比例\n if (fixedRatio) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) revisedY = revisedX / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) revisedY = -revisedX / aspectRatio\n }\n\n // 根据不同的操作点分别计算元素缩放后的大小和位置\n // 需要注意:\n // 此处计算的位置需要在后面重新进行校正,因为旋转后再缩放事实上会改变元素基点的位置(虽然视觉上基点保持不动,但这是【旋转】+【移动】共同作用的结果)\n // 但此处计算的大小不需要重新校正,因为前面已经重新计算需要缩放的距离,相当于大小已经经过了校正\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n height = getHeightWithinRange(elOriginHeight + revisedY)\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n height = getHeightWithinRange(elOriginHeight + revisedY)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n height = getHeightWithinRange(elOriginHeight - revisedY)\n left = elOriginLeft - (width - elOriginWidth)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n height = getHeightWithinRange(elOriginHeight - revisedY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.TOP) {\n height = getSizeWithinRange(elOriginHeight - revisedY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n height = getSizeWithinRange(elOriginHeight + revisedY)\n }\n else if (command === OperateResizeHandlers.LEFT) {\n width = getSizeWithinRange(elOriginWidth - revisedX)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n width = getSizeWithinRange(elOriginWidth + revisedX)\n }\n\n // 获取当前元素的基点坐标,与初始状态时的基点坐标进行对比,并计算差值进行元素位置的校正\n const currentPoints = getRotateElementPoints({ width, height, left, top }, elRotate)\n const currentOppositePoint = getOppositePoint(command, currentPoints)\n const currentBaseLeft = currentOppositePoint.left\n const currentBaseTop = currentOppositePoint.top\n\n const offsetX = currentBaseLeft - baseLeft\n const offsetY = currentBaseTop - baseTop\n\n left = left - offsetX\n top = top - offsetY\n }\n\n // 元素未被旋转的情况下,正常计算新的位置大小即可,无需复杂的校正等工作\n // 额外需要处理对齐吸附相关的操作\n // 锁定宽高比例相关的操作同上,不再赘述\n else {\n let moveX = x / canvasScale.value\n let moveY = y / canvasScale.value\n\n if (fixedRatio) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) moveY = moveX / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) moveY = -moveX / aspectRatio\n }\n\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + elOriginHeight + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = moveY * aspectRatio\n else moveY = moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth + moveX)\n height = getHeightWithinRange(elOriginHeight + moveY)\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + elOriginHeight + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = -moveY * aspectRatio\n else moveY = -moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth - moveX)\n height = getHeightWithinRange(elOriginHeight + moveY)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = moveY * aspectRatio\n else moveY = moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth - moveX)\n height = getHeightWithinRange(elOriginHeight - moveY)\n left = elOriginLeft - (width - elOriginWidth)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + moveY)\n moveX = moveX - offsetX\n moveY = moveY - offsetY\n if (fixedRatio) {\n if (offsetY) moveX = -moveY * aspectRatio\n else moveY = -moveX / aspectRatio\n }\n width = getSizeWithinRange(elOriginWidth + moveX)\n height = getHeightWithinRange(elOriginHeight - moveY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.LEFT) {\n const { offsetX } = alignedAdsorption(elOriginLeft + moveX, null)\n moveX = moveX - offsetX\n width = getSizeWithinRange(elOriginWidth - moveX)\n left = elOriginLeft - (width - elOriginWidth)\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n const { offsetX } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, null)\n moveX = moveX - offsetX\n width = getSizeWithinRange(elOriginWidth + moveX)\n }\n else if (command === OperateResizeHandlers.TOP) {\n const { offsetY } = alignedAdsorption(null, elOriginTop + moveY)\n moveY = moveY - offsetY\n height = getSizeWithinRange(elOriginHeight - moveY)\n top = elOriginTop - (height - elOriginHeight)\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n const { offsetY } = alignedAdsorption(null, elOriginTop + elOriginHeight + moveY)\n moveY = moveY - offsetY\n height = getSizeWithinRange(elOriginHeight + moveY)\n }\n }\n \n elementList.value = elementList.value.map(el => {\n if (element.id !== el.id) return el\n if (el.type === 'shape' && 'pathFormula' in el && el.pathFormula) {\n const pathFormula = SHAPE_PATH_FORMULAS[el.pathFormula]\n\n let path = ''\n if ('editable' in pathFormula) path = pathFormula.formula(width, height, el.keypoint!)\n else path = pathFormula.formula(width, height)\n\n return {\n ...el, left, top, width, height,\n viewBox: [width, height],\n path,\n }\n }\n if (el.type === 'table') {\n let cellMinHeight = originTableCellMinHeight + (height - elOriginHeight) / el.data.length\n cellMinHeight = cellMinHeight < 36 ? 36 : cellMinHeight\n\n if (cellMinHeight === originTableCellMinHeight) return { ...el, left, width }\n return {\n ...el, left, top, width, height,\n cellMinHeight: cellMinHeight < 36 ? 36 : cellMinHeight,\n }\n }\n return { ...el, left, top, width, height }\n })\n }\n\n const handleMouseup = (e: MouseEvent | TouchEvent) => {\n isMouseDown = false\n \n document.ontouchmove = null\n document.ontouchend = null\n document.onmousemove = null\n document.onmouseup = null\n\n alignmentLines.value = []\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n \n if (startPageX === currentPageX && startPageY === currentPageY) return\n \n slidesStore.updateSlide({ elements: elementList.value })\n mainStore.setScalingState(false)\n \n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\n }\n }\n\n // 多选元素缩放\n const scaleMultiElement = (e: MouseEvent, range: MultiSelectRange, command: OperateResizeHandlers) => {\n let isMouseDown = true\n \n const { minX, maxX, minY, maxY } = range\n const operateWidth = maxX - minX\n const operateHeight = maxY - minY\n const aspectRatio = operateWidth / operateHeight\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n \n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const x = (currentPageX - startPageX) / canvasScale.value\n let y = (currentPageY - startPageY) / canvasScale.value\n\n // 锁定宽高比例,逻辑同上\n if (ctrlOrShiftKeyActive.value) {\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) y = x / aspectRatio\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) y = -x / aspectRatio\n }\n\n // 所有选中元素的整体范围\n let currentMinX = minX\n let currentMaxX = maxX\n let currentMinY = minY\n let currentMaxY = maxY\n\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\n currentMaxX = maxX + x\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\n currentMinX = minX + x\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT_TOP) {\n currentMinX = minX + x\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\n currentMaxX = maxX + x\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.TOP) {\n currentMinY = minY + y\n }\n else if (command === OperateResizeHandlers.BOTTOM) {\n currentMaxY = maxY + y\n }\n else if (command === OperateResizeHandlers.LEFT) {\n currentMinX = minX + x\n }\n else if (command === OperateResizeHandlers.RIGHT) {\n currentMaxX = maxX + x\n }\n\n // 所有选中元素的整体宽高\n const currentOppositeWidth = currentMaxX - currentMinX\n const currentOppositeHeight = currentMaxY - currentMinY\n\n // 当前正在操作元素宽高占所有选中元素的整体宽高的比例\n let widthScale = currentOppositeWidth / operateWidth\n let heightScale = currentOppositeHeight / operateHeight\n\n if (widthScale <= 0) widthScale = 0\n if (heightScale <= 0) heightScale = 0\n \n // 根据前面计算的比例,计算并修改所有选中元素的位置大小\n elementList.value = elementList.value.map(el => {\n if ((el.type === 'image' || el.type === 'shape') && activeElementIdList.value.includes(el.id)) {\n const originElement = originElementList.find(originEl => originEl.id === el.id) as PPTImageElement | PPTShapeElement\n return {\n ...el,\n width: originElement.width * widthScale,\n height: originElement.height * heightScale,\n left: currentMinX + (originElement.left - minX) * widthScale,\n top: currentMinY + (originElement.top - minY) * heightScale,\n }\n }\n return el\n })\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n if (startPageX === e.pageX && startPageY === e.pageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n scaleElement,\n scaleMultiElement,\n }\n}","export const enum ClipPathTypes {\n RECT = 'rect',\n ELLIPSE = 'ellipse',\n POLYGON = 'polygon',\n}\n\nexport const enum ClipPaths {\n RECT = 'rect',\n ROUNDRECT = 'roundRect',\n ELLIPSE = 'ellipse',\n TRIANGLE = 'triangle',\n PENTAGON = 'pentagon',\n RHOMBUS = 'rhombus',\n STAR = 'star',\n}\n\ninterface ClipPath {\n [key: string]: {\n name: string\n type: ClipPathTypes\n style: string\n radius?: string\n createPath?: (width: number, height: number) => string\n }\n}\n\nexport const CLIPPATHS: ClipPath = {\n rect: {\n name: '矩形',\n type: ClipPathTypes.RECT,\n radius: '0',\n style: '',\n },\n rect2: {\n name: '矩形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L 0 ${height} Z`\n },\n },\n rect3: {\n name: '矩形3',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L ${width * 0.2} ${height} L 0 ${height * 0.8} Z`\n },\n },\n roundRect: {\n name: '圆角矩形',\n type: ClipPathTypes.RECT,\n radius: '10px',\n style: 'inset(0 0 0 0 round 10px 10px 10px 10px)',\n },\n ellipse: {\n name: '圆形',\n type: ClipPathTypes.ELLIPSE,\n style: 'ellipse(50% 50% at 50% 50%)',\n },\n triangle: {\n name: '三角形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 0% 100%, 100% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L 0 ${height} L ${width} ${height} Z`\n },\n },\n triangle2: {\n name: '三角形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 100%, 0% 0%, 100% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} ${height} L 0 0 L ${width} 0 Z`\n },\n },\n triangle3: {\n name: '三角形3',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 0% 100%, 100% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L 0 ${height} L ${width} ${height} Z`\n },\n },\n rhombus: {\n name: '菱形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width} ${height * 0.5} L ${width * 0.5} ${height} L 0 ${height * 0.5} Z`\n },\n },\n pentagon: {\n name: '五边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width} ${0.38 * height} L ${0.82 * width} ${height} L ${0.18 * width} ${height} L 0 ${0.38 * height} Z`\n },\n },\n hexagon: {\n name: '六边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.2} 0 L ${width * 0.8} 0 L ${width} ${height * 0.5} L ${width * 0.8} ${height} L ${width * 0.2} ${height} L 0 ${height * 0.5} Z`\n },\n },\n heptagon: {\n name: '七边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(50% 0%, 90% 20%, 100% 60%, 75% 100%, 25% 100%, 0% 60%, 10% 20%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.5} 0 L ${width * 0.9} ${height * 0.2} L ${width} ${height * 0.6} L ${width * 0.75} ${height} L ${width * 0.25} ${height} L 0 ${height * 0.6} L ${width * 0.1} ${height * 0.2} Z`\n },\n },\n octagon: {\n name: '八边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} 0 L ${width * 0.7} 0 L ${width} ${height * 0.3} L ${width} ${height * 0.7} L ${width * 0.7} ${height} L ${width * 0.3} ${height} L 0 ${height * 0.7} L 0 ${height * 0.3} Z`\n },\n },\n chevron: {\n name: 'V形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(75% 0%, 100% 50%, 75% 100%, 0% 100%, 25% 50%, 0% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.75} 0 L ${width} ${height * 0.5} L ${width * 0.75} ${height} L 0 ${height} L ${width * 0.25} ${height * 0.5} L 0 0 Z`\n },\n },\n point: {\n name: '点',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 75% 0%, 100% 50%, 75% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width * 0.75} 0 L ${width} ${height * 0.5} L ${width * 0.75} ${height} L 0 ${height} Z`\n },\n },\n arrow: {\n name: '箭头',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 20%, 60% 20%, 60% 0%, 100% 50%, 60% 100%, 60% 80%, 0% 80%)',\n createPath: (width: number, height: number) => {\n return `M 0 ${height * 0.2} L ${width * 0.6} ${height * 0.2} L ${width * 0.6} 0 L ${width} ${height * 0.5} L ${width * 0.6} ${height} L ${width * 0.6} ${height * 0.8} L 0 ${height * 0.8} Z`\n },\n },\n parallelogram: {\n name: '平行四边形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} 0 L ${width} 0 L ${width * 0.7} ${height} L 0 ${height} Z`\n },\n },\n parallelogram2: {\n name: '平行四边形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.3} ${height} L ${width} ${height} L ${width * 0.7} 0 L 0 0 Z`\n },\n },\n trapezoid: {\n name: '梯形',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)',\n createPath: (width: number, height: number) => {\n return `M ${width * 0.25} 0 L ${width * 0.75} 0 L ${width} ${height} L 0 ${height} Z`\n },\n },\n trapezoid2: {\n name: '梯形2',\n type: ClipPathTypes.POLYGON,\n style: 'polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)',\n createPath: (width: number, height: number) => {\n return `M 0 0 L ${width} 0 L ${width * 0.75} ${height} L ${width * 0.25} ${height} Z`\n },\n },\n}","import type { Ref } from 'vue'\nimport { uniq } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\n\nexport default (\n elementList: Ref,\n moveElement: (e: MouseEvent | TouchEvent, element: PPTElement) => void,\n) => {\n const mainStore = useMainStore()\n const { activeElementIdList, activeGroupElementId, handleElementId, editorAreaFocus } = storeToRefs(mainStore)\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\n // 选中元素\n // startMove 表示是否需要再选中操作后进入到开始移动的状态\n const selectElement = (e: MouseEvent | TouchEvent, element: PPTElement, startMove = true) => {\n if (!editorAreaFocus.value) mainStore.setEditorareaFocus(true)\n\n // 如果目标元素当前未被选中,则将他设为选中状态\n // 此时如果按下Ctrl键或Shift键,则进入多选状态,将当前已选中的元素和目标元素一起设置为选中状态,否则仅将目标元素设置为选中状态\n // 如果目标元素是分组成员,需要将该组合的其他元素一起设置为选中状态\n if (!activeElementIdList.value.includes(element.id)) {\n let newActiveIdList: string[] = []\n\n if (ctrlOrShiftKeyActive.value) {\n newActiveIdList = [...activeElementIdList.value, element.id]\n }\n else newActiveIdList = [element.id]\n \n if (element.groupId) {\n const groupMembersId: string[] = []\n elementList.value.forEach((el: PPTElement) => {\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\n })\n newActiveIdList = [...newActiveIdList, ...groupMembersId]\n }\n\n mainStore.setActiveElementIdList(uniq(newActiveIdList))\n mainStore.setHandleElementId(element.id)\n }\n\n // 如果目标元素已被选中,且按下了Ctrl键或Shift键,则取消其被选中状态\n // 除非目标元素是最后的一个被选中元素,或者目标元素所在的组合是最后一组选中组合\n // 如果目标元素是分组成员,需要将该组合的其他元素一起取消选中状态\n else if (ctrlOrShiftKeyActive.value) {\n let newActiveIdList: string[] = []\n\n if (element.groupId) {\n const groupMembersId: string[] = []\n elementList.value.forEach((el: PPTElement) => {\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\n })\n newActiveIdList = activeElementIdList.value.filter(id => !groupMembersId.includes(id))\n }\n else {\n newActiveIdList = activeElementIdList.value.filter(id => id !== element.id)\n }\n\n if (newActiveIdList.length > 0) {\n mainStore.setActiveElementIdList(newActiveIdList)\n }\n }\n\n // 如果目标元素已被选中,同时目标元素不是当前操作元素,则将其设置为当前操作元素\n else if (handleElementId.value !== element.id) {\n mainStore.setHandleElementId(element.id)\n }\n\n // 如果目标元素已被选中,同时也是当前操作元素,那么当目标元素在该状态下再次被点击时,将被设置为多选元素中的激活成员\n else if (activeGroupElementId.value !== element.id) {\n const startPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const startPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n ;(e.target as HTMLElement).onmouseup = (e: MouseEvent) => {\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) {\n mainStore.setActiveGroupElementId(element.id)\n ;(e.target as HTMLElement).onmouseup = null\n }\n }\n }\n\n if (startMove) moveElement(e, element)\n }\n\n return {\n selectElement,\n }\n}\n","import type { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport type { AlignmentLineProps } from '@/types/edit'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport { getRectRotatedRange, uniqAlignLines, type AlignLine } from '@/utils/element'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nexport default (\n elementList: Ref,\n alignmentLines: Ref,\n canvasScale: Ref,\n) => {\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeGroupElementId } = storeToRefs(useMainStore())\n const { shiftKeyState } = storeToRefs(useKeyboardStore())\n const { viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const dragElement = (e: MouseEvent | TouchEvent, element: PPTElement) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\n if (!activeElementIdList.value.includes(element.id)) return\n let isMouseDown = true\n\n const edgeWidth = VIEWPORT_SIZE\n const edgeHeight = VIEWPORT_SIZE * viewportRatio.value\n \n const sorptionRange = 5\n\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\n const originActiveElementList = originElementList.filter(el => activeElementIdList.value.includes(el.id))\n \n const elOriginLeft = element.left\n const elOriginTop = element.top\n const elOriginWidth = element.width\n const elOriginHeight = ('height' in element && element.height) ? element.height : 0\n const elOriginRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n \n const startPageX = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : e.pageY\n\n let isMisoperation: boolean | null = null\n\n const isActiveGroupElement = element.id === activeGroupElementId.value\n\n // 收集对齐对齐吸附线\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边,水平中心、垂直中心\n // 其中线条和被旋转过的元素需要重新计算他们在画布中的中心点位置的范围\n let horizontalLines: AlignLine[] = []\n let verticalLines: AlignLine[] = []\n\n for (const el of elementList.value) {\n if (el.type === 'line') continue\n if (isActiveGroupElement && el.id === element.id) continue\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\n\n let left, top, width, height\n if ('rotate' in el && el.rotate) {\n const { xRange, yRange } = getRectRotatedRange({\n left: el.left,\n top: el.top,\n width: el.width,\n height: el.height,\n rotate: el.rotate,\n })\n left = xRange[0]\n top = yRange[0]\n width = xRange[1] - xRange[0]\n height = yRange[1] - yRange[0]\n }\n else {\n left = el.left\n top = el.top\n width = el.width\n height = el.height\n }\n \n const right = left + width\n const bottom = top + height\n const centerX = top + height / 2\n const centerY = left + width / 2\n\n const topLine: AlignLine = { value: top, range: [left, right] }\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\n const horizontalCenterLine: AlignLine = { value: centerX, range: [left, right] }\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\n const verticalCenterLine: AlignLine = { value: centerY, range: [top, bottom] }\n\n horizontalLines.push(topLine, bottomLine, horizontalCenterLine)\n verticalLines.push(leftLine, rightLine, verticalCenterLine)\n }\n\n // 画布可视区域的四个边界、水平中心、垂直中心\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\n\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\n \n // 对齐吸附线去重\n horizontalLines = uniqAlignLines(horizontalLines)\n verticalLines = uniqAlignLines(verticalLines)\n\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n // 如果鼠标滑动距离过小,则将操作判定为误操作:\n // 如果误操作标记为null,表示是第一次触发移动,需要计算当前是否是误操作\n // 如果误操作标记为true,表示当前还处在误操作范围内,但仍然需要继续计算检查后续操作是否还处于误操作\n // 如果误操作标记为false,表示已经脱离了误操作范围,不需要再次计算\n if (isMisoperation !== false) {\n isMisoperation = Math.abs(startPageX - currentPageX) < sorptionRange && \n Math.abs(startPageY - currentPageY) < sorptionRange\n }\n if (!isMouseDown || isMisoperation) return\n \n let moveX = (currentPageX - startPageX) / canvasScale.value\n let moveY = (currentPageY - startPageY) / canvasScale.value\n\n if (shiftKeyState.value) {\n if (Math.abs(moveX) > Math.abs(moveY)) moveY = 0\n if (Math.abs(moveX) < Math.abs(moveY)) moveX = 0\n }\n\n // 基础目标位置\n let targetLeft = elOriginLeft + moveX\n let targetTop = elOriginTop + moveY\n\n // 计算目标元素在画布中的位置范围,用于吸附对齐\n // 需要区分单选和多选两种情况,其中多选状态下需要计算多选元素的整体范围;单选状态下需要继续区分线条、普通元素、旋转后的普通元素三种情况\n let targetMinX: number, targetMaxX: number, targetMinY: number, targetMaxY: number\n\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\n if (elOriginRotate) {\n const { xRange, yRange } = getRectRotatedRange({\n left: targetLeft,\n top: targetTop,\n width: elOriginWidth,\n height: elOriginHeight,\n rotate: elOriginRotate,\n })\n targetMinX = xRange[0]\n targetMaxX = xRange[1]\n targetMinY = yRange[0]\n targetMaxY = yRange[1]\n }\n else if (element.type === 'line') {\n targetMinX = targetLeft\n targetMaxX = targetLeft + Math.max(element.start[0], element.end[0])\n targetMinY = targetTop\n targetMaxY = targetTop + Math.max(element.start[1], element.end[1])\n }\n else {\n targetMinX = targetLeft\n targetMaxX = targetLeft + elOriginWidth\n targetMinY = targetTop\n targetMaxY = targetTop + elOriginHeight\n }\n }\n else {\n const leftValues = []\n const topValues = []\n const rightValues = []\n const bottomValues = []\n \n for (let i = 0; i < originActiveElementList.length; i++) {\n const element = originActiveElementList[i]\n const left = element.left + moveX\n const top = element.top + moveY\n const width = element.width\n const height = ('height' in element && element.height) ? element.height : 0\n const rotate = ('rotate' in element && element.rotate) ? element.rotate : 0\n\n if ('rotate' in element && element.rotate) {\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\n leftValues.push(xRange[0])\n topValues.push(yRange[0])\n rightValues.push(xRange[1])\n bottomValues.push(yRange[1])\n }\n else if (element.type === 'line') {\n leftValues.push(left)\n topValues.push(top)\n rightValues.push(left + Math.max(element.start[0], element.end[0]))\n bottomValues.push(top + Math.max(element.start[1], element.end[1]))\n }\n else {\n leftValues.push(left)\n topValues.push(top)\n rightValues.push(left + width)\n bottomValues.push(top + height)\n }\n }\n\n targetMinX = Math.min(...leftValues)\n targetMaxX = Math.max(...rightValues)\n targetMinY = Math.min(...topValues)\n targetMaxY = Math.max(...bottomValues)\n }\n \n const targetCenterX = targetMinX + (targetMaxX - targetMinX) / 2\n const targetCenterY = targetMinY + (targetMaxY - targetMinY) / 2\n\n // 将收集到的对齐吸附线与计算的目标元素位置范围做对比,二者的差小于设定的值时执行自动对齐校正\n // 水平和垂直两个方向需要分开计算\n const _alignmentLines: AlignmentLineProps[] = []\n let isVerticalAdsorbed = false\n let isHorizontalAdsorbed = false\n for (let i = 0; i < horizontalLines.length; i++) {\n const { value, range } = horizontalLines[i]\n const min = Math.min(...range, targetMinX, targetMaxX)\n const max = Math.max(...range, targetMinX, targetMaxX)\n \n if (Math.abs(targetMinY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetMinY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n if (Math.abs(targetMaxY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetMaxY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n if (Math.abs(targetCenterY - value) < sorptionRange && !isHorizontalAdsorbed) {\n targetTop = targetTop - (targetCenterY - value)\n isHorizontalAdsorbed = true\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\n }\n }\n for (let i = 0; i < verticalLines.length; i++) {\n const { value, range } = verticalLines[i]\n const min = Math.min(...range, targetMinY, targetMaxY)\n const max = Math.max(...range, targetMinY, targetMaxY)\n\n if (Math.abs(targetMinX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetMinX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n if (Math.abs(targetMaxX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetMaxX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n if (Math.abs(targetCenterX - value) < sorptionRange && !isVerticalAdsorbed) {\n targetLeft = targetLeft - (targetCenterX - value)\n isVerticalAdsorbed = true\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\n }\n }\n alignmentLines.value = _alignmentLines\n \n // 单选状态下,或者当前选中的多个元素中存在正在操作的元素时,仅修改正在操作的元素的位置\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\n elementList.value = elementList.value.map(el => {\n return el.id === element.id ? { ...el, left: targetLeft, top: targetTop } : el\n })\n }\n\n // 多选状态下,除了修改正在操作的元素的位置,其他被选中的元素也需要修改位置信息\n // 其他被选中的元素的位置信息通过正在操作的元素的移动偏移量来进行计算\n else {\n const handleElement = elementList.value.find(el => el.id === element.id)\n if (!handleElement) return\n\n elementList.value = elementList.value.map(el => {\n if (activeElementIdList.value.includes(el.id)) {\n if (el.id === element.id) {\n return {\n ...el,\n left: targetLeft,\n top: targetTop,\n }\n }\n return {\n ...el,\n left: el.left + (targetLeft - handleElement.left),\n top: el.top + (targetTop - handleElement.top),\n }\n }\n return el\n })\n }\n }\n\n const handleMouseup = (e: MouseEvent | TouchEvent) => {\n isMouseDown = false\n \n document.ontouchmove = null\n document.ontouchend = null\n document.onmousemove = null\n document.onmouseup = null\n\n alignmentLines.value = []\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\n }\n }\n\n return {\n dragElement,\n }\n}","import type { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useKeyboardStore, useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement, PPTLineElement } from '@/types/slides'\nimport { OperateLineHandlers } from '@/types/edit'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\ninterface AdsorptionPoint {\n x: number\n y: number\n}\n\nexport default (elementList: Ref) => {\n const slidesStore = useSlidesStore()\n const { canvasScale } = storeToRefs(useMainStore())\n const { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n const { addHistorySnapshot } = useHistorySnapshot()\n\n // 拖拽线条端点\n const dragLineElement = (e: MouseEvent, element: PPTLineElement, command: OperateLineHandlers) => {\n let isMouseDown = true\n\n const sorptionRange = 8\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n\n const adsorptionPoints: AdsorptionPoint[] = []\n\n // 获取所有线条以外的未旋转的元素的8个缩放点作为吸附位置\n for (let i = 0; i < elementList.value.length; i++) {\n const _element = elementList.value[i]\n if (_element.type === 'line' || _element.rotate) continue\n\n const left = _element.left\n const top = _element.top\n const width = _element.width\n const height = _element.height\n \n const right = left + width\n const bottom = top + height\n const centerX = top + height / 2\n const centerY = left + width / 2\n\n const topPoint = { x: centerY, y: top }\n const bottomPoint = { x: centerY, y: bottom }\n const leftPoint = { x: left, y: centerX }\n const rightPoint = { x: right, y: centerX }\n\n const leftTopPoint = { x: left, y: top }\n const rightTopPoint = { x: right, y: top }\n const leftBottomPoint = { x: left, y: bottom }\n const rightBottomPoint = { x: right, y: bottom }\n\n adsorptionPoints.push(\n topPoint,\n bottomPoint,\n leftPoint,\n rightPoint,\n leftTopPoint,\n rightTopPoint,\n leftBottomPoint,\n rightBottomPoint,\n )\n }\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n const moveX = (currentPageX - startPageX) / canvasScale.value\n const moveY = (currentPageY - startPageY) / canvasScale.value\n \n // 线条起点和终点在编辑区域中的位置\n let startX = element.left + element.start[0]\n let startY = element.top + element.start[1]\n let endX = element.left + element.end[0]\n let endY = element.top + element.end[1]\n\n const mid = element.broken || element.curve || [0, 0]\n let midX = element.left + mid[0]\n let midY = element.top + mid[1]\n\n const [c1, c2] = element.cubic || [[0, 0], [0, 0]]\n let c1X = element.left + c1[0]\n let c1Y = element.top + c1[1]\n let c2X = element.left + c2[0]\n let c2Y = element.top + c2[1]\n\n // 拖拽起点或终点的位置\n // 水平和垂直方向上有吸附\n if (command === OperateLineHandlers.START) {\n startX = startX + moveX\n startY = startY + moveY\n\n if (Math.abs(startX - endX) < sorptionRange) startX = endX\n if (Math.abs(startY - endY) < sorptionRange) startY = endY\n\n for (const adsorptionPoint of adsorptionPoints) {\n const { x, y } = adsorptionPoint\n if (Math.abs(x - startX) < sorptionRange && Math.abs(y - startY) < sorptionRange) {\n startX = x\n startY = y\n break\n }\n }\n }\n else if (command === OperateLineHandlers.END) {\n endX = endX + moveX\n endY = endY + moveY\n\n if (Math.abs(startX - endX) < sorptionRange) endX = startX\n if (Math.abs(startY - endY) < sorptionRange) endY = startY\n\n for (const adsorptionPoint of adsorptionPoints) {\n const { x, y } = adsorptionPoint\n if (Math.abs(x - endX) < sorptionRange && Math.abs(y - endY) < sorptionRange) {\n endX = x\n endY = y\n break\n }\n }\n }\n else if (command === OperateLineHandlers.C) {\n midX = midX + moveX\n midY = midY + moveY\n\n if (Math.abs(midX - startX) < sorptionRange) midX = startX\n if (Math.abs(midY - startY) < sorptionRange) midY = startY\n if (Math.abs(midX - endX) < sorptionRange) midX = endX\n if (Math.abs(midY - endY) < sorptionRange) midY = endY\n if (Math.abs(midX - (startX + endX) / 2) < sorptionRange && Math.abs(midY - (startY + endY) / 2) < sorptionRange) {\n midX = (startX + endX) / 2\n midY = (startY + endY) / 2\n }\n }\n else if (command === OperateLineHandlers.C1) {\n c1X = c1X + moveX\n c1Y = c1Y + moveY\n\n if (Math.abs(c1X - startX) < sorptionRange) c1X = startX\n if (Math.abs(c1Y - startY) < sorptionRange) c1Y = startY\n if (Math.abs(c1X - endX) < sorptionRange) c1X = endX\n if (Math.abs(c1Y - endY) < sorptionRange) c1Y = endY\n }\n else if (command === OperateLineHandlers.C2) {\n c2X = c2X + moveX\n c2Y = c2Y + moveY\n\n if (Math.abs(c2X - startX) < sorptionRange) c2X = startX\n if (Math.abs(c2Y - startY) < sorptionRange) c2Y = startY\n if (Math.abs(c2X - endX) < sorptionRange) c2X = endX\n if (Math.abs(c2Y - endY) < sorptionRange) c2Y = endY\n }\n\n // 计算更新起点和终点基于自身元素位置的坐标\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n const start: [number, number] = [0, 0]\n const end: [number, number] = [maxX - minX, maxY - minY]\n if (startX > endX) {\n start[0] = maxX - minX\n end[0] = 0\n }\n if (startY > endY) {\n start[1] = maxY - minY\n end[1] = 0\n }\n\n elementList.value = elementList.value.map(el => {\n if (el.id === element.id) {\n const newEl: PPTLineElement = {\n ...(el as PPTLineElement),\n left: minX,\n top: minY,\n start: start,\n end: end,\n }\n if (command === OperateLineHandlers.START || command === OperateLineHandlers.END) {\n if (ctrlOrShiftKeyActive.value) {\n if (element.broken) newEl.broken = [midX - minX, midY - minY]\n if (element.curve) newEl.curve = [midX - minX, midY - minY]\n if (element.cubic) newEl.cubic = [[c1X - minX, c1Y - minY], [c2X - minX, c2Y - minY]]\n }\n else {\n if (element.broken) newEl.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (element.curve) newEl.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\n if (element.cubic) newEl.cubic = [[(start[0] + end[0]) / 2, (start[1] + end[1]) / 2], [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]]\n }\n }\n else if (command === OperateLineHandlers.C) {\n if (element.broken) newEl.broken = [midX - minX, midY - minY]\n if (element.curve) newEl.curve = [midX - minX, midY - minY]\n }\n else {\n if (element.cubic) newEl.cubic = [[c1X - minX, c1Y - minY], [c2X - minX, c2Y - minY]]\n }\n return newEl\n }\n return el\n })\n }\n\n document.onmouseup = e => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n }\n\n return {\n dragLineElement,\n }\n}","import type { Ref } from 'vue'\nimport { useSlidesStore } from '@/store'\nimport type { PPTElement, PPTShapeElement } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\n\ninterface ShapePathData {\n baseSize: number,\n originPos: number,\n min: number,\n max: number,\n relative: string,\n}\n\nexport default (\n elementList: Ref,\n canvasScale: Ref,\n) => {\n const slidesStore = useSlidesStore()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const moveShapeKeypoint = (e: MouseEvent | TouchEvent, element: PPTShapeElement) => {\n const isTouchEvent = !(e instanceof MouseEvent)\n if (isTouchEvent && (!e.changedTouches || !e.changedTouches[0])) return\n\n let isMouseDown = true\n \n const startPageX = isTouchEvent ? e.changedTouches[0].pageX : e.pageX\n const startPageY = isTouchEvent ? e.changedTouches[0].pageY : e.pageY\n\n const pathFormula = SHAPE_PATH_FORMULAS[element.pathFormula!]\n let shapePathData: ShapePathData | null = null\n if ('editable' in pathFormula) {\n const baseSize = pathFormula.getBaseSize(element.width, element.height)\n const originPos = baseSize * element.keypoint!\n const [min, max] = pathFormula.range\n const relative = pathFormula.relative\n\n shapePathData = { baseSize, originPos, min, max, relative }\n }\n\n const handleMousemove = (e: MouseEvent | TouchEvent) => {\n if (!isMouseDown) return\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n const moveX = (currentPageX - startPageX) / canvasScale.value\n const moveY = (currentPageY - startPageY) / canvasScale.value\n\n elementList.value = elementList.value.map(el => {\n if (el.id === element.id && shapePathData) {\n const { baseSize, originPos, min, max, relative } = shapePathData\n const shapeElement = el as PPTShapeElement\n\n let keypoint = 0\n\n if (relative === 'left') keypoint = (originPos + moveX) / baseSize\n if (relative === 'right') keypoint = (originPos - moveX) / baseSize\n if (relative === 'center') keypoint = (originPos - moveX * 2) / baseSize\n if (relative === 'top') keypoint = (originPos + moveY) / baseSize\n if (relative === 'bottom') keypoint = (originPos - moveY) / baseSize\n\n if (keypoint < min) keypoint = min\n if (keypoint > max) keypoint = max\n\n return {\n ...el,\n keypoint,\n path: pathFormula.formula(shapeElement.width, shapeElement.height, keypoint),\n }\n }\n return el\n })\n }\n\n const handleMouseup = (e: MouseEvent | TouchEvent) => {\n isMouseDown = false\n \n document.ontouchmove = null\n document.ontouchend = null\n document.onmousemove = null\n document.onmouseup = null\n\n const currentPageX = e instanceof MouseEvent ? e.pageX : e.changedTouches[0].pageX\n const currentPageY = e instanceof MouseEvent ? e.pageY : e.changedTouches[0].pageY\n\n if (startPageX === currentPageX && startPageY === currentPageY) return\n\n slidesStore.updateSlide({ elements: elementList.value })\n addHistorySnapshot()\n }\n\n if (isTouchEvent) {\n document.ontouchmove = handleMousemove\n document.ontouchend = handleMouseup\n }\n else {\n document.onmousemove = handleMousemove\n document.onmouseup = handleMouseup\n }\n }\n\n return {\n moveShapeKeypoint,\n }\n}","import type { Ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { CreateElementSelectionData } from '@/types/edit'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nexport default (viewportRef: Ref) => {\n const mainStore = useMainStore()\n const { canvasScale, creatingElement } = storeToRefs(mainStore)\n\n // 通过鼠标框选时的起点和终点,计算选区的位置大小\n const formatCreateSelection = (selectionData: CreateElementSelectionData) => {\n const { start, end } = selectionData\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const [startX, startY] = start\n const [endX, endY] = end\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const left = (minX - viewportRect.x) / canvasScale.value\n const top = (minY - viewportRect.y) / canvasScale.value\n const width = (maxX - minX) / canvasScale.value\n const height = (maxY - minY) / canvasScale.value\n\n return { left, top, width, height }\n }\n\n // 通过鼠标框选时的起点和终点,计算线条在画布中的位置和起点终点\n const formatCreateSelectionForLine = (selectionData: CreateElementSelectionData) => {\n const { start, end } = selectionData\n\n if (!viewportRef.value) return\n const viewportRect = viewportRef.value.getBoundingClientRect()\n\n const [startX, startY] = start\n const [endX, endY] = end\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const left = (minX - viewportRect.x) / canvasScale.value\n const top = (minY - viewportRect.y) / canvasScale.value\n const width = (maxX - minX) / canvasScale.value\n const height = (maxY - minY) / canvasScale.value\n\n const _start: [number, number] = [\n startX === minX ? 0 : width,\n startY === minY ? 0 : height,\n ]\n const _end: [number, number] = [\n endX === minX ? 0 : width,\n endY === minY ? 0 : height,\n ]\n\n return {\n left,\n top,\n start: _start,\n end: _end,\n }\n }\n\n const { createTextElement, createShapeElement, createLineElement } = useCreateElement()\n\n // 根据鼠标选区的位置大小插入元素\n const insertElementFromCreateSelection = (selectionData: CreateElementSelectionData) => {\n if (!creatingElement.value) return\n\n const type = creatingElement.value.type\n if (type === 'text') {\n const position = formatCreateSelection(selectionData)\n position && createTextElement(position, { vertical: creatingElement.value.vertical })\n }\n else if (type === 'shape') {\n const position = formatCreateSelection(selectionData)\n position && createShapeElement(position, creatingElement.value.data)\n }\n else if (type === 'line') {\n const position = formatCreateSelectionForLine(selectionData)\n position && createLineElement(position, creatingElement.value.data)\n }\n mainStore.setCreatingElement(null)\n }\n\n return {\n formatCreateSelection,\n insertElementFromCreateSelection,\n }\n}","import { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport { ElementAlignCommands } from '@/types/edit'\nimport { getElementListRange } from '@/utils/element'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useHistorySnapshot from './useHistorySnapshot'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n const { activeElementIdList, activeElementList } = storeToRefs(useMainStore())\n const { currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n /**\n * 将所有选中的元素对齐到画布\n * @param command 对齐方向\n */\n const alignElementToCanvas = (command: ElementAlignCommands) => {\n const viewportWidth = VIEWPORT_SIZE\n const viewportHeight = VIEWPORT_SIZE * viewportRatio.value\n const { minX, maxX, minY, maxY } = getElementListRange(activeElementList.value)\n \n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\n for (const element of newElementList) {\n if (!activeElementIdList.value.includes(element.id)) continue\n \n // 水平垂直居中\n if (command === ElementAlignCommands.CENTER) {\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\n element.top = element.top - offsetY \n element.left = element.left - offsetX \n }\n\n // 顶部对齐\n if (command === ElementAlignCommands.TOP) {\n const offsetY = minY - 0\n element.top = element.top - offsetY \n }\n\n // 垂直居中\n else if (command === ElementAlignCommands.VERTICAL) {\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\n element.top = element.top - offsetY \n }\n\n // 底部对齐\n else if (command === ElementAlignCommands.BOTTOM) {\n const offsetY = maxY - viewportHeight\n element.top = element.top - offsetY \n }\n \n // 左侧对齐\n else if (command === ElementAlignCommands.LEFT) {\n const offsetX = minX - 0\n element.left = element.left - offsetX \n }\n\n // 水平居中\n else if (command === ElementAlignCommands.HORIZONTAL) {\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\n element.left = element.left - offsetX \n }\n\n // 右侧对齐\n else if (command === ElementAlignCommands.RIGHT) {\n const offsetX = maxX - viewportWidth\n element.left = element.left - offsetX \n }\n }\n\n slidesStore.updateSlide({ elements: newElementList })\n addHistorySnapshot()\n }\n\n return {\n alignElementToCanvas,\n }\n}","import { computed, type Ref } from 'vue'\nimport type { PPTElementShadow } from '@/types/slides'\n\n// 计算元素的阴影样式\nexport default (shadow: Ref) => {\n const shadowStyle = computed(() => {\n if (shadow.value) {\n const { h, v, blur, color } = shadow.value\n return `${h}px ${v}px ${blur}px ${color}`\n }\n return ''\n })\n\n return {\n shadowStyle,\n }\n}","import { computed, type Ref } from 'vue'\n\n// 计算元素的翻转样式\nexport default (flipH: Ref, flipV: Ref) => {\n const flipStyle = computed(() => {\n let style = ''\n \n if (flipH.value && flipV.value) style = 'rotateX(180deg) rotateY(180deg)'\n else if (flipV.value) style = 'rotateX(180deg)'\n else if (flipH.value) style = 'rotateY(180deg)'\n\n return style\n })\n\n return {\n flipStyle,\n }\n}","import { computed, type Ref } from 'vue'\nimport { CLIPPATHS, ClipPathTypes } from '@/configs/imageClip'\nimport type { ImageElementClip } from '@/types/slides'\n\nexport default (clip: Ref) => {\n const clipShape = computed(() => {\n if (!clip.value) return CLIPPATHS.rect\n const shape = clip.value.shape || ClipPathTypes.RECT\n\n return CLIPPATHS[shape]\n })\n\n const imgPosition = computed(() => {\n if (!clip.value) {\n return {\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n }\n }\n\n const [start, end] = clip.value.range\n\n const widthScale = (end[0] - start[0]) / 100\n const heightScale = (end[1] - start[1]) / 100\n const left = start[0] / widthScale\n const top = start[1] / heightScale\n\n return {\n left: -left + '%',\n top: -top + '%',\n width: 100 / widthScale + '%',\n height: 100 / heightScale + '%',\n }\n })\n\n return {\n clipShape,\n imgPosition,\n }\n}","import { computed, type Ref } from 'vue'\nimport type { ImageElementFilters, ImageElementFilterKeys } from '@/types/slides'\n\nexport default (filters: Ref) => {\n const filter = computed(() => {\n if (!filters.value) return ''\n let filter = ''\n const keys = Object.keys(filters.value) as ImageElementFilterKeys[]\n for (const key of keys) {\n filter += `${key}(${filters.value[key]}) `\n }\n return filter\n })\n\n return {\n filter,\n }\n}","import { computed, type Ref } from 'vue'\nimport type { PPTElementOutline } from '@/types/slides'\n\n// 计算边框相关属性值,主要是对默认值的处理\nexport default (outline: Ref) => {\n const outlineWidth = computed(() => outline.value?.width ?? 0)\n const outlineStyle = computed(() => outline.value?.style || 'solid')\n const outlineColor = computed(() => outline.value?.color || '#d14424')\n\n const strokeDashArray = computed(() => {\n if (outlineStyle.value !== 'dashed') return '0 0'\n const size = outlineWidth.value\n return size <= 6 ? `${size * 4.5} ${size * 2}` : `${size * 4} ${size * 1.5}`\n })\n\n return {\n outlineWidth,\n outlineStyle,\n outlineColor,\n strokeDashArray,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35e36256\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"rx\", \"ry\", \"width\", \"height\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { toRef } from 'vue'\nimport type { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageRectOutline',\n props: {\n width: {},\n height: {},\n outline: {},\n radius: { default: '0' }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst {\n outlineWidth,\n outlineColor,\n strokeDashArray,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-rect-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"rect\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n rx: _ctx.radius,\n ry: _ctx.radius,\n width: _ctx.width,\n height: _ctx.height,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n\n","import script from \"./ImageRectOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageRectOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageRectOutline.vue?vue&type=style&index=0&id=35e36256&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35e36256\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-11836cf8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"cx\", \"cy\", \"rx\", \"ry\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { toRef } from 'vue'\nimport type { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageEllipseOutline',\n props: {\n width: {},\n height: {},\n outline: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst {\n outlineWidth,\n outlineColor,\n strokeDashArray,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-ellipse-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"ellipse\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n cx: _ctx.width / 2,\n cy: _ctx.height / 2,\n rx: _ctx.width / 2,\n ry: _ctx.height / 2,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n\n","import script from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageEllipseOutline.vue?vue&type=style&index=0&id=11836cf8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-11836cf8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6e021ee2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { toRef } from 'vue'\nimport type { PPTElementOutline } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImagePolygonOutline',\n props: {\n width: {},\n height: {},\n createPath: { type: Function },\n outline: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst {\n outlineWidth,\n outlineColor,\n strokeDashArray,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"image-polygon-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n d: _ctx.createPath(_ctx.width, _ctx.height),\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n\n","import script from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImagePolygonOutline.vue?vue&type=style&index=0&id=6e021ee2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6e021ee2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"image-outline\" }\n\nimport { computed } from 'vue'\nimport type { PPTImageElement } from '@/types/slides'\nimport useClipImage from '../useClipImage'\n\nimport ImageRectOutline from './ImageRectOutline.vue'\nimport ImageEllipseOutline from './ImageEllipseOutline.vue'\nimport ImagePolygonOutline from './ImagePolygonOutline.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape } = useClipImage(clip)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(clipShape).type === 'rect')\n ? (_openBlock(), _createBlock(ImageRectOutline, {\n key: 0,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n radius: _unref(clipShape).radius,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"radius\", \"outline\"]))\n : (_unref(clipShape).type === 'ellipse')\n ? (_openBlock(), _createBlock(ImageEllipseOutline, {\n key: 1,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]))\n : (_unref(clipShape).type === 'polygon')\n ? (_openBlock(), _createBlock(ImagePolygonOutline, {\n key: 2,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline,\n createPath: _unref(clipShape).createPath!\n }, null, 8, [\"width\", \"height\", \"outline\", \"createPath\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5984406b\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\nconst _hoisted_2 = [\"src\"]\nconst _hoisted_3 = [\"onMousedown\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n width: \"16\",\n height: \"16\",\n fill: \"#fff\",\n stroke: \"#333\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n \"stroke-width\": \"0.3\",\n \"shape-rendering\": \"crispEdges\",\n d: \"M 16 0 L 0 0 L 0 16 L 4 16 L 4 4 L 16 4 L 16 0 Z\"\n })\n], -1))\nconst _hoisted_5 = [\n _hoisted_4\n]\nconst _hoisted_6 = [\"onMousedown\"]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n width: \"16\",\n height: \"16\",\n fill: \"#fff\",\n stroke: \"#333\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", {\n \"stroke-width\": \"0.3\",\n \"shape-rendering\": \"crispEdges\",\n d: \"M 16 0 L 0 0 L 0 4 L 16 4 Z\"\n })\n], -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\n\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport { KEYS } from '@/configs/hotkey'\nimport { type ImageClipedEmitData, OperateResizeHandlers } from '@/types/edit'\nimport type { ImageClipDataRange, ImageElementClip } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageClipHandler',\n props: {\n src: {},\n clipPath: {},\n width: {},\n height: {},\n top: {},\n left: {},\n rotate: {},\n clipData: {}\n },\n emits: [\"clip\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst { canvasScale } = storeToRefs(useMainStore())\nconst { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\nconst clipWrapperPositionStyle = ref({\n top: '0',\n left: '0',\n})\nconst isSettingClipRange = ref(false)\nconst currentRange = ref(null)\n\n// 获取裁剪区域信息(裁剪区域占原图的宽高比例,处在原图中的位置)\nconst getClipDataTransformInfo = () => {\n const [start, end] = props.clipData ? props.clipData.range : [[0, 0], [100, 100]]\n\n const widthScale = (end[0] - start[0]) / 100\n const heightScale = (end[1] - start[1]) / 100\n const left = start[0] / widthScale\n const top = start[1] / heightScale\n\n return { widthScale, heightScale, left, top }\n}\n\n// 底层图片位置大小(遮罩区域图片)\nconst imgPosition = computed(() => {\n const { widthScale, heightScale, left, top } = getClipDataTransformInfo()\n return {\n left: -left,\n top: -top,\n width: 100 / widthScale,\n height: 100 / heightScale,\n }\n})\n\n// 底层图片位置大小样式(遮罩区域图片)\nconst bottomImgPositionStyle = computed(() => {\n return {\n top: imgPosition.value.top + '%',\n left: imgPosition.value.left + '%',\n width: imgPosition.value.width + '%',\n height: imgPosition.value.height + '%',\n }\n})\n\n// 顶层图片容器位置大小(裁剪高亮区域)\nconst topImgWrapperPosition = ref({\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n})\n\n// 顶层图片容器位置大小样式(裁剪高亮区域)\nconst topImgWrapperPositionStyle = computed(() => {\n const { top, left, width, height } = topImgWrapperPosition.value\n return {\n top: top + '%',\n left: left + '%',\n width: width + '%',\n height: height + '%',\n }\n})\n\n// 顶层图片位置大小样式(裁剪区域图片)\nconst topImgPositionStyle = computed(() => {\n const bottomWidth = imgPosition.value.width\n const bottomHeight = imgPosition.value.height\n \n const { top, left, width, height } = topImgWrapperPosition.value\n \n return {\n left: -left * (100 / width) + '%',\n top: -top * (100 / height) + '%',\n width: bottomWidth / width * 100 + '%',\n height: bottomHeight / height * 100 + '%',\n }\n})\n\n// 初始化裁剪位置信息\nconst initClipPosition = () => {\n const { left, top } = getClipDataTransformInfo()\n topImgWrapperPosition.value = {\n left: left,\n top: top,\n width: 100,\n height: 100,\n }\n \n clipWrapperPositionStyle.value = {\n top: -top + '%',\n left: -left + '%',\n }\n}\n\n// 执行裁剪:计算裁剪后的图片位置大小和裁剪信息,并将数据同步出去\nconst handleClip = () => {\n if (isSettingClipRange.value) return\n\n if (!currentRange.value) {\n emit('clip', null)\n return\n }\n\n const { left, top } = getClipDataTransformInfo()\n\n const position = {\n left: (topImgWrapperPosition.value.left - left) / 100 * props.width,\n top: (topImgWrapperPosition.value.top - top) / 100 * props.height,\n width: (topImgWrapperPosition.value.width - 100) / 100 * props.width,\n height: (topImgWrapperPosition.value.height - 100) / 100 * props.height,\n }\n\n const clipedEmitData: ImageClipedEmitData = {\n range: currentRange.value,\n position,\n }\n emit('clip', clipedEmitData)\n}\n\n// 快捷键监听:回车确认裁剪\nconst keyboardListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ENTER) handleClip()\n}\n\nonMounted(() => {\n initClipPosition()\n document.addEventListener('keydown', keyboardListener)\n})\nonUnmounted(() => {\n document.removeEventListener('keydown', keyboardListener)\n})\n\n// 计算并更新裁剪区域范围数据\nconst updateRange = () => {\n const retPosition = {\n left: parseInt(topImgPositionStyle.value.left),\n top: parseInt(topImgPositionStyle.value.top),\n width: parseInt(topImgPositionStyle.value.width),\n height: parseInt(topImgPositionStyle.value.height),\n }\n\n const widthScale = 100 / retPosition.width\n const heightScale = 100 / retPosition.height\n\n const start: [number, number] = [\n -retPosition.left * widthScale,\n -retPosition.top * heightScale,\n ]\n const end: [number, number] = [\n widthScale * 100 + start[0],\n heightScale * 100 + start[1],\n ]\n\n currentRange.value = [start, end]\n}\n\n// 移动裁剪区域\nconst moveClipRange = (e: MouseEvent) => {\n isSettingClipRange.value = true\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n const bottomPosition = imgPosition.value\n const originPositopn = { ...topImgWrapperPosition.value }\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n let moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\n let moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\n\n if (props.rotate > 45 && props.rotate < 135) {\n moveX = (currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = -(currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n if ((props.rotate >= 135 && props.rotate <= 180) || (props.rotate >= -180 && props.rotate <= -135)) {\n moveX = -moveX\n moveY = -moveY\n }\n if (props.rotate > -135 && props.rotate < -45) {\n moveX = -(currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = (currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n\n let targetLeft = originPositopn.left + moveX\n let targetTop = originPositopn.top + moveY\n\n if (targetLeft < 0) targetLeft = 0\n else if (targetLeft + originPositopn.width > bottomPosition.width) {\n targetLeft = bottomPosition.width - originPositopn.width\n }\n if (targetTop < 0) targetTop = 0\n else if (targetTop + originPositopn.height > bottomPosition.height) {\n targetTop = bottomPosition.height - originPositopn.height\n }\n \n topImgWrapperPosition.value = {\n ...topImgWrapperPosition.value,\n left: targetLeft,\n top: targetTop,\n }\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n updateRange()\n\n setTimeout(() => {\n isSettingClipRange.value = false\n }, 0)\n }\n}\n\n// 缩放裁剪区域\nconst scaleClipRange = (e: MouseEvent, type: OperateResizeHandlers) => {\n isSettingClipRange.value = true\n let isMouseDown = true\n\n const minWidth = 50 / props.width * 100\n const minHeight = 50 / props.height * 100\n \n const startPageX = e.pageX\n const startPageY = e.pageY\n const bottomPosition = imgPosition.value\n const originPositopn = { ...topImgWrapperPosition.value }\n\n const aspectRatio = topImgWrapperPosition.value.width / topImgWrapperPosition.value.height\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n\n const currentPageX = e.pageX\n const currentPageY = e.pageY\n\n let moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\n let moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\n\n if (props.rotate > 45 && props.rotate < 135) {\n moveX = (currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = -(currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n if ((props.rotate >= 135 && props.rotate <= 180) || (props.rotate >= -180 && props.rotate <= -135)) {\n moveX = -moveX\n moveY = -moveY\n }\n if (props.rotate > -135 && props.rotate < -45) {\n moveX = -(currentPageY - startPageY) / canvasScale.value / props.width * 100\n moveY = (currentPageX - startPageX) / canvasScale.value / props.height * 100\n }\n\n if (ctrlOrShiftKeyActive.value) {\n if (type === OperateResizeHandlers.RIGHT_BOTTOM || type === OperateResizeHandlers.LEFT_TOP) moveY = moveX / aspectRatio\n if (type === OperateResizeHandlers.LEFT_BOTTOM || type === OperateResizeHandlers.RIGHT_TOP) moveY = -moveX / aspectRatio\n }\n\n let targetLeft, targetTop, targetWidth, targetHeight\n\n if (type === OperateResizeHandlers.LEFT_TOP) {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top + moveY\n }\n else if (type === OperateResizeHandlers.RIGHT_TOP) {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width + moveX\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top + moveY\n }\n else if (type === OperateResizeHandlers.LEFT_BOTTOM) {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top\n }\n else if (type === OperateResizeHandlers.RIGHT_BOTTOM) {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width + moveX\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n else if (type === OperateResizeHandlers.TOP) {\n if (originPositopn.top + moveY < 0) {\n moveY = -originPositopn.top\n }\n if (originPositopn.height - moveY < minHeight) {\n moveY = originPositopn.height - minHeight\n }\n targetWidth = originPositopn.width\n targetHeight = originPositopn.height - moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top + moveY\n }\n else if (type === OperateResizeHandlers.BOTTOM) {\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\n }\n if (originPositopn.height + moveY < minHeight) {\n moveY = minHeight - originPositopn.height\n }\n targetWidth = originPositopn.width\n targetHeight = originPositopn.height + moveY\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n else if (type === OperateResizeHandlers.LEFT) {\n if (originPositopn.left + moveX < 0) {\n moveX = -originPositopn.left\n }\n if (originPositopn.width - moveX < minWidth) {\n moveX = originPositopn.width - minWidth\n }\n targetWidth = originPositopn.width - moveX\n targetHeight = originPositopn.height\n targetLeft = originPositopn.left + moveX\n targetTop = originPositopn.top\n }\n else {\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\n }\n if (originPositopn.width + moveX < minWidth) {\n moveX = minWidth - originPositopn.width\n }\n targetHeight = originPositopn.height\n targetWidth = originPositopn.width + moveX\n targetLeft = originPositopn.left\n targetTop = originPositopn.top\n }\n\n topImgWrapperPosition.value = {\n left: targetLeft,\n top: targetTop,\n width: targetWidth,\n height: targetHeight,\n }\n }\n\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n updateRange()\n\n setTimeout(() => isSettingClipRange.value = false, 0)\n }\n}\n\nconst rotateClassName = computed(() => {\n const prefix = 'rotate-'\n const rotate = props.rotate\n if (rotate > -22.5 && rotate <= 22.5) return prefix + 0\n else if (rotate > 22.5 && rotate <= 67.5) return prefix + 45\n else if (rotate > 67.5 && rotate <= 112.5) return prefix + 90\n else if (rotate > 112.5 && rotate <= 157.5) return prefix + 135\n else if (rotate > 157.5 || rotate <= -157.5) return prefix + 0\n else if (rotate > -157.5 && rotate <= -112.5) return prefix + 45\n else if (rotate > -112.5 && rotate <= -67.5) return prefix + 90\n else if (rotate > -67.5 && rotate <= -22.5) return prefix + 135\n return prefix + 0\n})\n\nconst cornerPoint = [\n OperateResizeHandlers.LEFT_TOP,\n OperateResizeHandlers.RIGHT_TOP,\n OperateResizeHandlers.LEFT_BOTTOM,\n OperateResizeHandlers.RIGHT_BOTTOM,\n]\nconst edgePoints = [\n OperateResizeHandlers.TOP,\n OperateResizeHandlers.BOTTOM,\n OperateResizeHandlers.LEFT,\n OperateResizeHandlers.RIGHT,\n]\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"image-clip-handler\",\n style: _normalizeStyle(clipWrapperPositionStyle.value)\n }, [\n _createElementVNode(\"img\", {\n class: \"bottom-img\",\n src: _ctx.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(bottomImgPositionStyle.value)\n }, null, 12, _hoisted_1),\n _createElementVNode(\"div\", {\n class: \"top-image-content\",\n style: _normalizeStyle({\n ...topImgWrapperPositionStyle.value,\n clipPath: _ctx.clipPath,\n })\n }, [\n _createElementVNode(\"img\", {\n class: \"top-img\",\n src: _ctx.src,\n draggable: false,\n alt: \"\",\n style: _normalizeStyle(topImgPositionStyle.value)\n }, null, 12, _hoisted_2)\n ], 4),\n _createElementVNode(\"div\", {\n class: \"operate\",\n style: _normalizeStyle(topImgWrapperPositionStyle.value),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => moveClipRange($event), [\"stop\"]))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(cornerPoint, (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point, rotateClassName.value]),\n key: point,\n onMousedown: _withModifiers($event => scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_5, 42, _hoisted_3)\n }), 64)),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(edgePoints, (point) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['clip-point', point, rotateClassName.value]),\n key: point,\n onMousedown: _withModifiers($event => scaleClipRange($event, point), [\"stop\"])\n }, _hoisted_8, 42, _hoisted_6)\n }), 64))\n ], 36)\n ], 4)), [\n [_directive_click_outside, handleClip]\n ])\n}\n}\n\n})","\n\n\n\n","import script from \"./ImageClipHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageClipHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageClipHandler.vue?vue&type=style&index=0&id=5984406b&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5984406b\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1156b3e1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { ImageElementClip, PPTImageElement } from '@/types/slides'\nimport type { ImageClipedEmitData } from '@/types/edit'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport useClipImage from './useClipImage'\nimport useFilter from './useFilter'\n\nimport ImageOutline from './ImageOutline/index.vue'\nimport ImageClipHandler from './ImageClipHandler.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { clipingImageElementId } = storeToRefs(mainStore)\n\nconst isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape, imgPosition } = useClipImage(clip)\n\nconst filters = computed(() => props.elementInfo.filters)\nconst { filter } = useFilter(filters)\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n props.selectElement(e, props.elementInfo)\n}\n\nconst handleClip = (data: ImageClipedEmitData | null) => {\n mainStore.setClipingImageElementId('')\n \n if (!data) return\n\n const { range, position } = data\n const originClip: ImageElementClip = props.elementInfo.clip || { shape: 'rect', range: [[0, 0], [100, 100]] }\n\n const left = props.elementInfo.left + position.left\n const top = props.elementInfo.top + position.top\n const width = props.elementInfo.width + position.width\n const height = props.elementInfo.height + position.height\n\n let centerOffsetX = 0\n let centerOffsetY = 0\n\n if (props.elementInfo.rotate) {\n const centerX = (left + width / 2) - (props.elementInfo.left + props.elementInfo.width / 2)\n const centerY = -((top + height / 2) - (props.elementInfo.top + props.elementInfo.height / 2))\n\n const radian = -props.elementInfo.rotate * Math.PI / 180\n\n const rotatedCenterX = centerX * Math.cos(radian) - centerY * Math.sin(radian)\n const rotatedCenterY = centerX * Math.sin(radian) + centerY * Math.cos(radian)\n\n centerOffsetX = rotatedCenterX - centerX\n centerOffsetY = -(rotatedCenterY - centerY)\n }\n\n const _props = {\n clip: { ...originClip, range },\n left: left + centerOffsetX,\n top: top + centerOffsetY,\n width,\n height,\n }\n slidesStore.updateElement({ id: props.elementInfo.id, props: _props })\n \n addHistorySnapshot()\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-image\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n (isCliping.value)\n ? (_openBlock(), _createBlock(ImageClipHandler, {\n key: 0,\n src: _ctx.elementInfo.src,\n clipData: _ctx.elementInfo.clip,\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n top: _ctx.elementInfo.top,\n left: _ctx.elementInfo.left,\n rotate: _ctx.elementInfo.rotate,\n clipPath: _unref(clipShape).style,\n onClip: _cache[0] || (_cache[0] = range => handleClip(range))\n }, null, 8, [\"src\", \"clipData\", \"width\", \"height\", \"top\", \"left\", \"rotate\", \"clipPath\"]))\n : _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"element-content\",\n style: _normalizeStyle({\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event))\n }, [\n _createVNode(ImageOutline, { elementInfo: _ctx.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _unref(clipShape).style })\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _unref(imgPosition).top,\n left: _unref(imgPosition).left,\n width: _unref(imgPosition).width,\n height: _unref(imgPosition).height,\n filter: _unref(filter),\n }),\n onDragstart: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"prevent\"])),\n alt: \"\"\n }, null, 44, _hoisted_1),\n (_ctx.elementInfo.colorMask)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"color-mask\",\n style: _normalizeStyle({\n backgroundColor: _ctx.elementInfo.colorMask,\n })\n }, null, 4))\n : _createCommentVNode(\"\", true)\n ], 4)\n ], 36)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1156b3e1&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1156b3e1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-efb76626\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { toRef } from 'vue'\nimport type { PPTElementOutline } from '@/types/slides'\n\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementOutline',\n props: {\n width: {},\n height: {},\n outline: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst {\n outlineWidth,\n outlineColor,\n strokeDashArray,\n} = useElementOutline(toRef(props, 'outline'))\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.outline)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n class: \"element-outline\",\n overflow: \"visible\",\n width: _ctx.width,\n height: _ctx.height\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: \"transparent\",\n d: `M0,0 L${_ctx.width},0 L${_ctx.width},${_ctx.height} L0,${_ctx.height} Z`,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","\n\n\n\n","import script from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=efb76626&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-efb76626\"]])\n\nexport default __exports__","import { splitListItem, liftListItem, sinkListItem } from 'prosemirror-schema-list'\nimport type { Schema } from 'prosemirror-model'\nimport { undo, redo } from 'prosemirror-history'\nimport { undoInputRule } from 'prosemirror-inputrules'\nimport type { Command } from 'prosemirror-state'\nimport {\n toggleMark,\n selectParentNode,\n joinUp,\n joinDown,\n chainCommands,\n newlineInCode,\n createParagraphNear,\n liftEmptyBlock,\n splitBlockKeepMarks,\n} from 'prosemirror-commands'\n\ninterface Keys {\n [key: string]: Command\n}\n\nexport const buildKeymap = (schema: Schema) => {\n const keys: Keys = {}\n const bind = (key: string, cmd: Command) => keys[key] = cmd\n\n bind('Alt-ArrowUp', joinUp)\n bind('Alt-ArrowDown', joinDown)\n bind('Mod-z', undo)\n bind('Mod-y', redo)\n bind('Backspace', undoInputRule)\n bind('Escape', selectParentNode)\n bind('Mod-b', toggleMark(schema.marks.strong))\n bind('Mod-i', toggleMark(schema.marks.em))\n bind('Mod-u', toggleMark(schema.marks.underline))\n bind('Mod-d', toggleMark(schema.marks.strikethrough))\n bind('Mod-e', toggleMark(schema.marks.code))\n bind('Mod-;', toggleMark(schema.marks.superscript))\n bind(`Mod-'`, toggleMark(schema.marks.subscript))\n bind('Enter', chainCommands(\n splitListItem(schema.nodes.list_item),\n newlineInCode,\n createParagraphNear,\n liftEmptyBlock,\n splitBlockKeepMarks,\n ))\n bind('Mod-[', liftListItem(schema.nodes.list_item))\n bind('Mod-]', sinkListItem(schema.nodes.list_item))\n bind('Tab', sinkListItem(schema.nodes.list_item))\n\n return keys\n}","import type { NodeType, Schema } from 'prosemirror-model'\nimport {\n inputRules,\n wrappingInputRule,\n smartQuotes,\n emDash,\n ellipsis,\n InputRule,\n} from 'prosemirror-inputrules'\n\nconst blockQuoteRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*>\\s$/, nodeType)\n\nconst orderedListRule = (nodeType: NodeType) => (\n wrappingInputRule(\n /^(\\d+)\\.\\s$/, \n nodeType, \n match => ({order: +match[1]}),\n (match, node) => node.childCount + node.attrs.order === +match[1],\n )\n)\n\nconst bulletListRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*([-+*])\\s$/, nodeType)\n\nconst codeRule = () => {\n const inputRegex = /(?:^|\\s)((?:`)((?:[^`]+))(?:`))$/\n \n return new InputRule(inputRegex, (state, match, start, end) => {\n const { schema } = state\n\n const tr = state.tr.insertText(`${match[2]} `, start, end)\n const mark = schema.marks.code.create()\n\n return tr.addMark(start, start + match[2].length, mark)\n })\n}\n\nconst linkRule = () => {\n const urlRegEx = /(?:https?:\\/\\/)?[\\w-]+(?:\\.[\\w-]+)+\\.?(?:\\d+)?(?:\\/\\S*)?$/\n \n return new InputRule(urlRegEx, (state, match, start, end) => {\n const { schema } = state\n\n const tr = state.tr.insertText(match[0], start, end)\n const mark = schema.marks.link.create({ href: match[0], title: match[0] })\n\n return tr.addMark(start, start + match[0].length, mark)\n })\n}\n\nexport const buildInputRules = (schema: Schema) => {\n const rules = [\n ...smartQuotes,\n ellipsis,\n emDash,\n ]\n rules.push(blockQuoteRule(schema.nodes.blockquote))\n rules.push(orderedListRule(schema.nodes.ordered_list))\n rules.push(bulletListRule(schema.nodes.bullet_list))\n rules.push(codeRule())\n rules.push(linkRule())\n\n return inputRules({ rules })\n}","import { Plugin } from 'prosemirror-state'\nimport { Decoration, DecorationSet } from 'prosemirror-view'\nimport type { Node } from 'prosemirror-model'\n\nconst isEmptyParagraph = (node: Node) => {\n return node.type.name === 'paragraph' && node.nodeSize === 2\n}\n\nexport const placeholderPlugin = (placeholder: string) => {\n return new Plugin({\n props: {\n decorations(state) {\n const { $from } = state.selection\n if (isEmptyParagraph($from.parent)) {\n const decoration = Decoration.node($from.before(), $from.after(), {\n 'data-placeholder': placeholder,\n })\n return DecorationSet.create(state.doc, [decoration])\n }\n },\n },\n })\n}","import { keymap } from 'prosemirror-keymap'\nimport type { Schema } from 'prosemirror-model'\nimport { history } from 'prosemirror-history'\nimport { baseKeymap } from 'prosemirror-commands'\nimport { dropCursor } from 'prosemirror-dropcursor'\nimport { gapCursor } from 'prosemirror-gapcursor'\n\nimport { buildKeymap } from './keymap'\nimport { buildInputRules } from './inputrules'\nimport { placeholderPlugin } from './placeholder'\n\nexport interface PluginOptions {\n placeholder?: string\n}\n\nexport const buildPlugins = (schema: Schema, options?: PluginOptions) => {\n const placeholder = options?.placeholder\n\n const plugins = [\n buildInputRules(schema),\n keymap(buildKeymap(schema)),\n keymap(baseKeymap),\n dropCursor(),\n gapCursor(),\n history(),\n ]\n\n if (placeholder) plugins.push(placeholderPlugin(placeholder))\n\n return plugins\n}","import { nodes } from 'prosemirror-schema-basic'\nimport type { Node, NodeSpec } from 'prosemirror-model'\nimport { listItem as _listItem } from 'prosemirror-schema-list'\n\ninterface Attr {\n [key: string]: number | string\n}\n\nconst orderedList: NodeSpec = {\n attrs: {\n order: {\n default: 1,\n },\n listStyleType: {\n default: '',\n },\n fontsize: {\n default: '',\n },\n color: {\n default: '',\n },\n },\n content: 'list_item+',\n group: 'block',\n parseDOM: [\n { \n tag: 'ol', \n getAttrs: dom => {\n const order = ((dom as HTMLElement).hasAttribute('start') ? (dom as HTMLElement).getAttribute('start') : 1) || 1\n const attr: Attr = { order: +order }\n\n const { listStyleType, fontSize, color } = (dom as HTMLElement).style\n if (listStyleType) attr['listStyleType'] = listStyleType\n if (fontSize) attr['fontsize'] = fontSize\n if (color) attr['color'] = color\n\n return attr\n }\n }\n ],\n toDOM: (node: Node) => {\n const { order, listStyleType, fontsize, color } = node.attrs\n let style = ''\n if (listStyleType) style += `list-style-type: ${listStyleType};`\n if (fontsize) style += `font-size: ${fontsize};`\n if (color) style += `color: ${color};`\n\n const attr: Attr = { style }\n if (order !== 1) attr['start'] = order\n\n\n return ['ol', attr, 0]\n },\n}\n\nconst bulletList: NodeSpec = {\n attrs: {\n listStyleType: {\n default: '',\n },\n fontsize: {\n default: '',\n },\n color: {\n default: '',\n },\n },\n content: 'list_item+',\n group: 'block',\n parseDOM: [\n {\n tag: 'ul',\n getAttrs: dom => {\n const attr: Attr = {}\n\n const { listStyleType, fontSize, color } = (dom as HTMLElement).style\n if (listStyleType) attr['listStyleType'] = listStyleType\n if (fontSize) attr['fontsize'] = fontSize\n if (color) attr['color'] = color\n\n return attr\n }\n }\n ],\n toDOM: (node: Node) => {\n const { listStyleType, fontsize, color } = node.attrs\n let style = ''\n if (listStyleType) style += `list-style-type: ${listStyleType};`\n if (fontsize) style += `font-size: ${fontsize};`\n if (color) style += `color: ${color};`\n\n return ['ul', { style }, 0]\n },\n}\n\nconst listItem: NodeSpec = {\n ..._listItem,\n content: 'paragraph block*',\n group: 'block',\n}\n\nconst paragraph: NodeSpec = {\n attrs: {\n align: {\n default: '',\n },\n indent: {\n default: 0,\n },\n textIndent: {\n default: 0,\n },\n },\n content: 'inline*',\n group: 'block',\n parseDOM: [\n {\n tag: 'p',\n getAttrs: dom => {\n const { textAlign, textIndent } = (dom as HTMLElement).style\n\n let align = (dom as HTMLElement).getAttribute('align') || textAlign || ''\n align = /(left|right|center|justify)/.test(align) ? align : ''\n\n let textIndentLevel = 0\n if (textIndent) {\n if (/em/.test(textIndent)) {\n textIndentLevel = parseInt(textIndent)\n }\n else if (/px/.test(textIndent)) {\n textIndentLevel = Math.floor(parseInt(textIndent) / 20)\n if (!textIndentLevel) textIndentLevel = 1\n }\n }\n\n const indent = +((dom as HTMLElement).getAttribute('data-indent') || 0)\n \n return { align, indent, textIndent: textIndentLevel }\n }\n },\n {\n tag: 'img',\n ignore: true,\n },\n {\n tag: 'pre',\n skip: true,\n },\n ],\n toDOM: (node: Node) => {\n const { align, indent, textIndent } = node.attrs\n let style = ''\n if (align && align !== 'left') style += `text-align: ${align};`\n if (textIndent) style += `text-indent: ${textIndent * 20}px;`\n\n const attr: Attr = { style }\n if (indent) attr['data-indent'] = indent\n\n return ['p', attr, 0]\n },\n}\n\nconst {\n doc,\n blockquote,\n text,\n} = nodes\n\nexport default {\n doc,\n paragraph,\n blockquote,\n text,\n 'ordered_list': orderedList,\n 'bullet_list': bulletList,\n 'list_item': listItem,\n}\n","import { marks } from 'prosemirror-schema-basic'\nimport type { MarkSpec } from 'prosemirror-model'\n\nconst subscript: MarkSpec = {\n excludes: 'subscript',\n parseDOM: [\n { tag: 'sub' },\n {\n style: 'vertical-align',\n getAttrs: value => value === 'sub' && null\n },\n ],\n toDOM: () => ['sub', 0],\n}\n\nconst superscript: MarkSpec = {\n excludes: 'superscript',\n parseDOM: [\n { tag: 'sup' },\n {\n style: 'vertical-align',\n getAttrs: value => value === 'super' && null\n },\n ],\n toDOM: () => ['sup', 0],\n}\n\nconst strikethrough: MarkSpec = {\n parseDOM: [\n { tag: 'strike' },\n {\n style: 'text-decoration',\n getAttrs: value => value === 'line-through' && null\n },\n {\n style: 'text-decoration-line',\n getAttrs: value => value === 'line-through' && null\n },\n ],\n toDOM: () => ['span', { style: 'text-decoration-line: line-through;' }, 0],\n}\n\nconst underline: MarkSpec = {\n parseDOM: [\n { tag: 'u' },\n {\n style: 'text-decoration',\n getAttrs: value => value === 'underline' && null\n },\n {\n style: 'text-decoration-line',\n getAttrs: value => value === 'underline' && null\n },\n ],\n toDOM: () => ['span', { style: 'text-decoration: underline;' }, 0],\n}\n\nconst forecolor: MarkSpec = {\n attrs: {\n color: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'color',\n getAttrs: color => color ? { color } : {}\n },\n ],\n toDOM: mark => {\n const { color } = mark.attrs\n let style = ''\n if (color) style += `color: ${color};`\n return ['span', { style }, 0]\n },\n}\n\nconst backcolor: MarkSpec = {\n attrs: {\n backcolor: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'background-color',\n getAttrs: backcolor => backcolor ? { backcolor } : {}\n },\n ],\n toDOM: mark => {\n const { backcolor } = mark.attrs\n let style = ''\n if (backcolor) style += `background-color: ${backcolor};`\n return ['span', { style }, 0]\n },\n}\n\nconst fontsize: MarkSpec = {\n attrs: {\n fontsize: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'font-size',\n getAttrs: fontsize => fontsize ? { fontsize } : {}\n },\n ],\n toDOM: mark => {\n const { fontsize } = mark.attrs\n let style = ''\n if (fontsize) style += `font-size: ${fontsize};`\n return ['span', { style }, 0]\n },\n}\n\nconst fontname: MarkSpec = {\n attrs: {\n fontname: {},\n },\n inline: true,\n group: 'inline',\n parseDOM: [\n {\n style: 'font-family',\n getAttrs: fontname => {\n return { fontname: fontname && typeof fontname === 'string' ? fontname.replace(/[\\\"\\']/g, '') : '' }\n }\n },\n ],\n toDOM: mark => {\n const { fontname } = mark.attrs\n let style = ''\n if (fontname) style += `font-family: ${fontname};`\n return ['span', { style }, 0]\n },\n}\n\nconst link: MarkSpec = {\n attrs: {\n href: {},\n title: { default: null },\n target: { default: '_blank' },\n },\n inclusive: false,\n parseDOM: [\n {\n tag: 'a[href]',\n getAttrs: dom => {\n const href = (dom as HTMLElement).getAttribute('href')\n const title = (dom as HTMLElement).getAttribute('title')\n return { href, title }\n }\n },\n ],\n toDOM: node => ['a', node.attrs, 0],\n}\n\nconst mark: MarkSpec = {\n attrs: {\n index: { default: null },\n },\n parseDOM: [\n {\n tag: 'mark',\n getAttrs: dom => {\n const index = (dom as HTMLElement).dataset.index\n return { index }\n }\n },\n ],\n toDOM: node => ['mark', { 'data-index': node.attrs.index }, 0],\n}\n\nconst { em, strong, code } = marks\n\nexport default {\n em,\n strong,\n fontsize,\n fontname,\n code,\n forecolor,\n backcolor,\n subscript,\n superscript,\n strikethrough,\n underline,\n link,\n mark,\n}","import nodes from './nodes'\nimport marks from './marks'\n\nexport const schemaNodes = nodes\nexport const schemaMarks = marks\n","import { EditorState } from 'prosemirror-state'\nimport { type DirectEditorProps, EditorView } from 'prosemirror-view'\nimport { Schema, DOMParser } from 'prosemirror-model'\nimport { buildPlugins, type PluginOptions } from './plugins/index'\nimport { schemaNodes, schemaMarks } from './schema/index'\n\nconst schema = new Schema({\n nodes: schemaNodes,\n marks: schemaMarks,\n})\n\nexport const createDocument = (content: string) => {\n const htmlString = `
${content}
`\n const parser = new window.DOMParser()\n const element = parser.parseFromString(htmlString, 'text/html').body.firstElementChild\n return DOMParser.fromSchema(schema).parse(element as Element)\n}\n\nexport const initProsemirrorEditor = (\n dom: Element,\n content: string,\n props: Omit,\n pluginOptions?: PluginOptions,\n) => {\n return new EditorView(dom, {\n state: EditorState.create({\n doc: createDocument(content),\n plugins: buildPlugins(schema, pluginOptions),\n }),\n ...props,\n })\n}","import mitt, { type Emitter } from 'mitt'\n\nexport const enum EmitterEvents {\n RICH_TEXT_COMMAND = 'RICH_TEXT_COMMAND',\n SYNC_RICH_TEXT_ATTRS_TO_STORE = 'SYNC_RICH_TEXT_ATTRS_TO_STORE',\n OPEN_CHART_DATA_EDITOR = 'OPEN_CHART_DATA_EDITOR',\n OPEN_LATEX_EDITOR = 'OPEN_LATEX_EDITOR',\n}\n\nexport interface RichTextAction {\n command: string\n value?: string\n}\n\nexport interface RichTextCommand {\n target?: string\n action: RichTextAction | RichTextAction[]\n}\n\ntype Events = {\n [EmitterEvents.RICH_TEXT_COMMAND]: RichTextCommand\n [EmitterEvents.SYNC_RICH_TEXT_ATTRS_TO_STORE]: void\n [EmitterEvents.OPEN_CHART_DATA_EDITOR]: void\n [EmitterEvents.OPEN_LATEX_EDITOR]: void\n} \n\nconst emitter: Emitter = mitt()\n\nexport default emitter","import type { Schema, Node, NodeType } from 'prosemirror-model'\nimport type { Transaction } from 'prosemirror-state'\nimport type { EditorView } from 'prosemirror-view'\n\nexport const setTextAlign = (tr: Transaction, schema: Schema, alignment: string) => {\n const { selection, doc } = tr\n if (!selection || !doc) return tr\n\n const { from, to } = selection\n const { nodes } = schema\n\n const blockquote = nodes.blockquote\n const listItem = nodes.list_item\n const paragraph = nodes.paragraph\n\n interface Task {\n node: Node\n pos: number\n nodeType: NodeType\n }\n\n const tasks: Task[] = []\n alignment = alignment || ''\n\n const allowedNodeTypes = new Set([blockquote, listItem, paragraph])\n\n doc.nodesBetween(from, to, (node, pos) => {\n const nodeType = node.type\n const align = node.attrs.align || ''\n if (align !== alignment && allowedNodeTypes.has(nodeType)) {\n tasks.push({\n node,\n pos,\n nodeType,\n })\n }\n return true\n })\n\n if (!tasks.length) return tr\n\n tasks.forEach(task => {\n const { node, pos, nodeType } = task\n let { attrs } = node\n if (alignment) attrs = { ...attrs, align: alignment }\n else attrs = { ...attrs, align: null }\n tr = tr.setNodeMarkup(pos, nodeType, attrs, node.marks)\n })\n\n return tr\n}\n\nexport const alignmentCommand = (view: EditorView, alignment: string) => {\n const { state } = view\n const { schema, selection } = state\n const tr = setTextAlign(\n state.tr.setSelection(selection),\n schema,\n alignment,\n )\n view.dispatch(tr)\n}","import type { Schema } from 'prosemirror-model'\nimport { type Transaction, TextSelection, AllSelection } from 'prosemirror-state'\nimport type { EditorView } from 'prosemirror-view'\nimport { isList } from '../utils'\n\ntype IndentKey = 'indent' | 'textIndent'\n\nfunction setNodeIndentMarkup(tr: Transaction, pos: number, delta: number, indentKey: IndentKey): Transaction {\n if (!tr.doc) return tr\n\n const node = tr.doc.nodeAt(pos)\n if (!node) return tr\n\n const minIndent = 0\n const maxIndent = 8\n\n let indent = (node.attrs[indentKey] || 0) + delta\n if (indent < minIndent) indent = minIndent\n if (indent > maxIndent) indent = maxIndent\n\n if (indent === node.attrs[indentKey]) return tr\n\n const nodeAttrs = {\n ...node.attrs,\n [indentKey]: indent,\n }\n\n return tr.setNodeMarkup(pos, node.type, nodeAttrs, node.marks)\n}\n\nconst setIndent = (tr: Transaction, schema: Schema, delta: number, indentKey: IndentKey): Transaction => {\n const { selection, doc } = tr\n if (!selection || !doc) return tr\n\n if (!(selection instanceof TextSelection || selection instanceof AllSelection)) return tr\n\n const { from, to } = selection\n\n doc.nodesBetween(from, to, (node, pos) => {\n const nodeType = node.type\n\n if (nodeType.name === 'paragraph' || nodeType.name === 'blockquote') {\n tr = setNodeIndentMarkup(tr, pos, delta, indentKey)\n return false\n } \n else if (isList(node, schema)) return false\n return true\n })\n\n return tr\n}\n\nexport const indentCommand = (view: EditorView, delta: number) => {\n const { state } = view\n const { schema, selection } = state\n\n const tr = setIndent(\n state.tr.setSelection(selection),\n schema,\n delta,\n 'indent',\n )\n if (tr.docChanged) {\n view.dispatch(tr)\n return true\n }\n\n return false\n}\n\nexport const textIndentCommand = (view: EditorView, delta: number) => {\n const { state } = view\n const { schema, selection } = state\n\n const tr = setIndent(\n state.tr.setSelection(selection),\n schema,\n delta,\n 'textIndent',\n )\n if (tr.docChanged) {\n view.dispatch(tr)\n return true\n }\n\n return false\n}","import { wrapInList, liftListItem } from 'prosemirror-schema-list'\nimport type { Node, NodeType } from 'prosemirror-model'\nimport type { Transaction, EditorState } from 'prosemirror-state'\nimport { findParentNode, isList } from '../utils'\n\ninterface Attr {\n [key: string]: number | string\n}\n\ninterface TextStyleAttr {\n color?: string\n fontsize?: string\n}\n\nexport const toggleList = (listType: NodeType, itemType: NodeType, listStyleType: string, textStyleAttr: TextStyleAttr = {}) => {\n return (state: EditorState, dispatch: (tr: Transaction) => void) => {\n const { schema, selection } = state\n const { $from, $to } = selection\n const range = $from.blockRange($to)\n\n if (!range) return false\n\n const parentList = findParentNode((node: Node) => isList(node, schema))(selection)\n\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\n if (parentList.node.type === listType && !listStyleType) {\n return liftListItem(itemType)(state, dispatch)\n }\n\n if (isList(parentList.node, schema) && listType.validContent(parentList.node.content)) {\n const { tr } = state\n\n const nodeAttrs: Attr = {\n ...parentList.node.attrs,\n ...textStyleAttr,\n }\n if (listStyleType) nodeAttrs.listStyleType = listStyleType\n\n tr.setNodeMarkup(parentList.pos, listType, nodeAttrs)\n\n if (dispatch) dispatch(tr)\n\n return false\n }\n }\n\n const nodeAttrs: Attr = {\n ...textStyleAttr,\n }\n if (listStyleType) nodeAttrs.listStyleType = listStyleType\n\n return wrapInList(listType, nodeAttrs)(state, dispatch)\n }\n}","import type { EditorView } from 'prosemirror-view'\nimport { isList } from '../utils'\n\ninterface Style {\n [key: string]: string\n}\n\nexport const setListStyle = (view: EditorView, style: Style | Style[]) => {\n const { state } = view\n const { schema, selection } = state\n const tr = state.tr.setSelection(selection)\n \n const { doc } = tr\n if (!doc) return tr\n\n const { from, to } = selection\n doc.nodesBetween(from, to, (node, pos) => {\n if (isList(node, schema)) {\n if (from - 3 <= pos && to + 3 >= pos + node.nodeSize) {\n const styles = Array.isArray(style) ? style : [style]\n\n for (const style of styles) {\n tr.setNodeAttribute(pos, style.key, style.value)\n }\n }\n }\n return false\n })\n\n view.dispatch(tr)\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { debounce } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { EditorView } from 'prosemirror-view'\nimport { toggleMark, wrapIn, lift } from 'prosemirror-commands'\nimport { initProsemirrorEditor, createDocument } from '@/utils/prosemirror'\nimport { isActiveOfParentNodeType, findNodesWithSameMark, getTextAttrs, autoSelectAll, addMark, markActive, getFontsize } from '@/utils/prosemirror/utils'\nimport emitter, { EmitterEvents, type RichTextAction, type RichTextCommand } from '@/utils/emitter'\nimport { alignmentCommand } from '@/utils/prosemirror/commands/setTextAlign'\nimport { indentCommand, textIndentCommand } from '@/utils/prosemirror/commands/setTextIndent'\nimport { toggleList } from '@/utils/prosemirror/commands/toggleList'\nimport { setListStyle } from '@/utils/prosemirror/commands/setListStyle'\nimport type { TextFormatPainterKeys } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ProsemirrorEditor',\n props: {\n elementId: {},\n defaultColor: {},\n defaultFontName: {},\n value: {},\n editable: { type: Boolean, default: false },\n autoFocus: { type: Boolean, default: false }\n },\n emits: [\"update\", \"focus\", \"blur\", \"mousedown\"],\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst mainStore = useMainStore()\nconst { handleElementId, textFormatPainter, richTextAttrs } = storeToRefs(mainStore)\n\nconst editorViewRef = ref()\nlet editorView: EditorView\n\n// 富文本的各种交互事件监听:\n// 聚焦时取消全局快捷键事件\n// 输入文字时同步数据到vuex\n// 点击鼠标和键盘时同步富文本状态到工具栏\nconst handleInput = debounce(function() {\n emit('update', editorView.dom.innerHTML)\n}, 300, { trailing: true })\n\nconst handleFocus = () => {\n mainStore.setDisableHotkeysState(true)\n emit('focus')\n}\n\nconst handleBlur = () => {\n mainStore.setDisableHotkeysState(false)\n emit('blur')\n}\n\nconst handleClick = debounce(function() {\n const attrs = getTextAttrs(editorView, {\n color: props.defaultColor,\n fontname: props.defaultFontName,\n })\n mainStore.setRichtextAttrs(attrs)\n}, 30, { trailing: true })\n\nconst handleKeydown = () => {\n handleInput()\n handleClick()\n}\n\n// 将富文本内容同步到DOM\nconst textContent = computed(() => props.value)\nwatch(textContent, () => {\n if (!editorView) return\n if (editorView.hasFocus()) return\n\n const { doc, tr } = editorView.state\n editorView.dispatch(tr.replaceRangeWith(0, doc.content.size, createDocument(textContent.value)))\n})\n\n// 打开/关闭编辑器的编辑模式\nwatch(() => props.editable, () => {\n editorView.setProps({ editable: () => props.editable })\n})\n\n// 暴露 focus 方法\nconst focus = () => editorView.focus()\n__expose({ focus })\n\n// 执行富文本命令(可以是一个或多个)\n// 部分命令在执行前先判断当前选区是否为空,如果选区为空先进行全选操作\nconst execCommand = ({ target, action }: RichTextCommand) => {\n if (!target && handleElementId.value !== props.elementId) return\n if (target && target !== props.elementId) return\n\n const actions = ('command' in action) ? [action] : action\n\n for (const item of actions) {\n if (item.command === 'fontname' && item.value) {\n const mark = editorView.state.schema.marks.fontname.create({ fontname: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'fontsize' && item.value) {\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n setListStyle(editorView, { key: 'fontsize', value: item.value })\n }\n else if (item.command === 'fontsize-add') {\n const step = item.value ? +item.value : 2\n autoSelectAll(editorView)\n const fontsize = getFontsize(editorView) + step + 'px'\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize })\n addMark(editorView, mark)\n setListStyle(editorView, { key: 'fontsize', value: fontsize })\n }\n else if (item.command === 'fontsize-reduce') {\n const step = item.value ? +item.value : 2\n autoSelectAll(editorView)\n let fontsize = getFontsize(editorView) - step\n if (fontsize < 12) fontsize = 12\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: fontsize + 'px' })\n addMark(editorView, mark)\n setListStyle(editorView, { key: 'fontsize', value: fontsize + 'px' })\n }\n else if (item.command === 'color' && item.value) {\n const mark = editorView.state.schema.marks.forecolor.create({ color: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n setListStyle(editorView, { key: 'color', value: item.value })\n }\n else if (item.command === 'backcolor' && item.value) {\n const mark = editorView.state.schema.marks.backcolor.create({ backcolor: item.value })\n autoSelectAll(editorView)\n addMark(editorView, mark)\n }\n else if (item.command === 'bold') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.strong)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'em') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.em)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'underline') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.underline)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'strikethrough') {\n autoSelectAll(editorView)\n toggleMark(editorView.state.schema.marks.strikethrough)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'subscript') {\n toggleMark(editorView.state.schema.marks.subscript)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'superscript') {\n toggleMark(editorView.state.schema.marks.superscript)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'blockquote') {\n const isBlockquote = isActiveOfParentNodeType('blockquote', editorView.state)\n if (isBlockquote) lift(editorView.state, editorView.dispatch)\n else wrapIn(editorView.state.schema.nodes.blockquote)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'code') {\n toggleMark(editorView.state.schema.marks.code)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'align' && item.value) {\n alignmentCommand(editorView, item.value)\n }\n else if (item.command === 'indent' && item.value) {\n indentCommand(editorView, +item.value)\n }\n else if (item.command === 'textIndent' && item.value) {\n textIndentCommand(editorView, +item.value)\n }\n else if (item.command === 'bulletList') {\n const listStyleType = item.value || ''\n const { bullet_list: bulletList, list_item: listItem } = editorView.state.schema.nodes\n const textStyle = {\n color: richTextAttrs.value.color,\n fontsize: richTextAttrs.value.fontsize\n }\n toggleList(bulletList, listItem, listStyleType, textStyle)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'orderedList') {\n const listStyleType = item.value || ''\n const { ordered_list: orderedList, list_item: listItem } = editorView.state.schema.nodes\n const textStyle = {\n color: richTextAttrs.value.color,\n fontsize: richTextAttrs.value.fontsize\n }\n toggleList(orderedList, listItem, listStyleType, textStyle)(editorView.state, editorView.dispatch)\n }\n else if (item.command === 'clear') {\n autoSelectAll(editorView)\n const { $from, $to } = editorView.state.selection\n editorView.dispatch(editorView.state.tr.removeMark($from.pos, $to.pos))\n setListStyle(editorView, [\n { key: 'fontsize', value: '' },\n { key: 'color', value: '' },\n ])\n }\n else if (item.command === 'link') {\n const markType = editorView.state.schema.marks.link\n const { from, to } = editorView.state.selection\n const result = findNodesWithSameMark(editorView.state.doc, from, to, markType)\n if (result) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark, { from: result.from.pos, to: result.to.pos + 1 })\n }\n else editorView.dispatch(editorView.state.tr.removeMark(result.from.pos, result.to.pos + 1, markType))\n }\n else if (markActive(editorView.state, markType)) {\n if (item.value) {\n const mark = editorView.state.schema.marks.link.create({ href: item.value, title: item.value })\n addMark(editorView, mark)\n }\n else toggleMark(markType)(editorView.state, editorView.dispatch)\n }\n else if (item.value) {\n autoSelectAll(editorView)\n toggleMark(markType, { href: item.value, title: item.value })(editorView.state, editorView.dispatch)\n }\n }\n else if (item.command === 'insert' && item.value) {\n editorView.dispatch(editorView.state.tr.insertText(item.value))\n }\n }\n\n editorView.focus()\n handleInput()\n handleClick()\n}\n\n// 鼠标抬起时,执行格式刷命令\nconst handleMouseup = () => {\n if (!textFormatPainter.value) return\n const { keep, ...newProps } = textFormatPainter.value\n\n const actions: RichTextAction[] = [{ command: 'clear' }]\n for (const key of Object.keys(newProps) as TextFormatPainterKeys[]) {\n const command = key\n const value = textFormatPainter.value[key]\n if (value === true) actions.push({ command })\n else if (value) actions.push({ command, value })\n }\n execCommand({ action: actions })\n if (!keep) mainStore.setTextFormatPainter(null)\n}\n\n// Prosemirror编辑器的初始化和卸载\nonMounted(() => {\n editorView = initProsemirrorEditor((editorViewRef.value as Element), textContent.value, {\n handleDOMEvents: {\n focus: handleFocus,\n blur: handleBlur,\n keydown: handleKeydown,\n click: handleClick,\n mouseup: handleMouseup,\n },\n editable: () => props.editable,\n })\n if (props.autoFocus) editorView.focus()\n})\nonUnmounted(() => {\n editorView && editorView.destroy()\n})\n\nconst syncAttrsToStore = () => {\n if (handleElementId.value !== props.elementId) return\n handleClick()\n}\n\nemitter.on(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\nemitter.on(EmitterEvents.SYNC_RICH_TEXT_ATTRS_TO_STORE, syncAttrsToStore)\nonUnmounted(() => {\n emitter.off(EmitterEvents.RICH_TEXT_COMMAND, execCommand)\n emitter.off(EmitterEvents.SYNC_RICH_TEXT_ATTRS_TO_STORE, syncAttrsToStore)\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"prosemirror-editor\", { 'format-painter': _unref(textFormatPainter) }]),\n ref_key: \"editorViewRef\",\n ref: editorViewRef,\n onMousedown: _cache[0] || (_cache[0] = $event => emit('mousedown', $event))\n }, null, 34))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ProsemirrorEditor.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ProsemirrorEditor.vue?vue&type=style&index=0&id=653f533c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-653f533c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, openBlock as _openBlock, createElementBlock as _createElementBlock, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2a1e49ba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"drag-handler top\" }, null, -1))\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"drag-handler bottom\" }, null, -1))\n\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { debounce } from 'lodash'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTTextElement } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\nimport ProsemirrorEditor from '@/views/components/element/ProsemirrorEditor.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElementId, isScaling } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst elementRef = ref()\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\n}\n\n// 监听文本元素的尺寸变化,当高度变化时,更新高度到vuex\n// 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\nconst realHeightCache = ref(-1)\nconst realWidthCache = ref(-1)\n\nwatch(isScaling, () => {\n if (handleElementId.value !== props.elementInfo.id) return\n\n if (!isScaling.value) {\n if (!props.elementInfo.vertical && realHeightCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeightCache.value },\n })\n realHeightCache.value = -1\n }\n if (props.elementInfo.vertical && realWidthCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { width: realWidthCache.value },\n })\n realWidthCache.value = -1\n }\n }\n})\n\nconst updateTextElementHeight = (entries: ResizeObserverEntry[]) => {\n const contentRect = entries[0].contentRect\n if (!elementRef.value) return\n\n const realHeight = contentRect.height + 20\n const realWidth = contentRect.width + 20\n\n if (!props.elementInfo.vertical && props.elementInfo.height !== realHeight) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeight },\n })\n }\n else realHeightCache.value = realHeight\n }\n if (props.elementInfo.vertical && props.elementInfo.width !== realWidth) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { width: realWidth },\n })\n }\n else realWidthCache.value = realWidth\n }\n}\nconst resizeObserver = new ResizeObserver(updateTextElementHeight)\n\nonMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n})\nonUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n})\n\nconst updateContent = (content: string) => {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { content },\n })\n \n addHistorySnapshot()\n}\n\nconst checkEmptyText = debounce(function() {\n const pureText = props.elementInfo.content.replaceAll(/<[^>]+>/g, '')\n if (!pureText) slidesStore.deleteElement(props.elementInfo.id)\n}, 300, { trailing: true })\n\nconst isHandleElement = computed(() => handleElementId.value === props.elementInfo.id)\nwatch(isHandleElement, () => {\n if (!isHandleElement.value) checkEmptyText()\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-text\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n ref_key: \"elementRef\",\n ref: elementRef,\n style: _normalizeStyle({\n width: _ctx.elementInfo.vertical ? 'auto' : _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.vertical ? _ctx.elementInfo.height + 'px' : 'auto',\n backgroundColor: _ctx.elementInfo.fill,\n opacity: _ctx.elementInfo.opacity,\n textShadow: _unref(shadowStyle),\n lineHeight: _ctx.elementInfo.lineHeight,\n letterSpacing: (_ctx.elementInfo.wordSpace || 0) + 'px',\n color: _ctx.elementInfo.defaultColor,\n fontFamily: _ctx.elementInfo.defaultFontName,\n writingMode: _ctx.elementInfo.vertical ? 'vertical-rl' : 'horizontal-tb',\n }),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event))\n }, [\n _createVNode(ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(ProsemirrorEditor, {\n class: \"text\",\n elementId: _ctx.elementInfo.id,\n defaultColor: _ctx.elementInfo.defaultColor,\n defaultFontName: _ctx.elementInfo.defaultFontName,\n editable: !_ctx.elementInfo.lock,\n value: _ctx.elementInfo.content,\n style: _normalizeStyle({\n '--paragraphSpace': `${_ctx.elementInfo.paragraphSpace === undefined ? 5 : _ctx.elementInfo.paragraphSpace}px`,\n }),\n onUpdate: _cache[0] || (_cache[0] = value => updateContent(value)),\n onMousedown: _cache[1] || (_cache[1] = $event => handleSelectElement($event, false))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\", \"style\"]),\n _hoisted_1,\n _hoisted_2\n ], 36)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2a1e49ba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2a1e49ba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"gradientTransform\"]\nconst _hoisted_2 = [\"stop-color\"]\nconst _hoisted_3 = [\"stop-color\"]\nconst _hoisted_4 = [\"id\"]\nconst _hoisted_5 = [\"stop-color\"]\nconst _hoisted_6 = [\"stop-color\"]\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'GradientDefs',\n props: {\n id: {},\n type: {},\n color1: {},\n color2: {},\n rotate: { default: 0 }\n },\n setup(__props: any) {\n\r\n\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_ctx.type === 'linear')\n ? (_openBlock(), _createElementBlock(\"linearGradient\", {\n key: 0,\n id: _ctx.id,\n x1: \"0%\",\n y1: \"0%\",\n x2: \"100%\",\n y2: \"0%\",\n gradientTransform: `rotate(${_ctx.rotate},0.5,0.5)`\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": _ctx.color1\n }, null, 8, _hoisted_2),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": _ctx.color2\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"radialGradient\", {\n key: 1,\n id: _ctx.id\n }, [\n _createElementVNode(\"stop\", {\n offset: \"0%\",\n \"stop-color\": _ctx.color1\n }, null, 8, _hoisted_5),\n _createElementVNode(\"stop\", {\n offset: \"100%\",\n \"stop-color\": _ctx.color2\n }, null, 8, _hoisted_6)\n ], 8, _hoisted_4))\n}\n}\n\n})","import script from \"./GradientDefs.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./GradientDefs.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5d988de2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\", \"fill\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\n\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTShapeElement, ShapeText } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport GradientDefs from './GradientDefs.vue'\nimport ProsemirrorEditor from '@/views/components/element/ProsemirrorEditor.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElementId, shapeFormatPainter } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\n}\n\nconst execFormatPainter = () => {\n if (!shapeFormatPainter.value) return\n const { keep, ...newProps } = shapeFormatPainter.value\n\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: newProps,\n })\n \n addHistorySnapshot()\n if (!keep) mainStore.setShapeFormatPainter(null)\n}\n\nconst outline = computed(() => props.elementInfo.outline)\nconst { outlineWidth, outlineColor, strokeDashArray } = useElementOutline(outline)\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst editable = ref(false)\n\nwatch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) {\n if (editable.value) editable.value = false\n }\n})\n\nconst text = computed(() => {\n const defaultText: ShapeText = {\n content: '',\n defaultFontName: '微软雅黑',\n defaultColor: '#000',\n align: 'middle',\n }\n if (!props.elementInfo.text) return defaultText\n\n return props.elementInfo.text\n})\n\nconst updateText = (content: string) => {\n const _text = { ...text.value, content }\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { text: _text },\n })\n \n addHistorySnapshot()\n}\n\nconst checkEmptyText = () => {\n if (!props.elementInfo.text) return\n\n const pureText = props.elementInfo.text.content.replaceAll(/<[^>]+>/g, '')\n if (!pureText) {\n slidesStore.removeElementProps({ id: props.elementInfo.id, propName: 'text' })\n addHistorySnapshot()\n }\n}\n\nconst prosemirrorEditorRef = ref>()\nconst startEdit = () => {\n editable.value = true\n nextTick(() => prosemirrorEditorRef.value && prosemirrorEditorRef.value.focus())\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", {\n 'lock': _ctx.elementInfo.lock,\n 'format-painter': _unref(shapeFormatPainter),\n }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: _ctx.elementInfo.opacity,\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n color: text.value.defaultColor,\n fontFamily: text.value.defaultFontName,\n }),\n onMousedown: _cache[3] || (_cache[3] = $event => handleSelectElement($event)),\n onMouseup: _cache[4] || (_cache[4] = ($event: any) => (execFormatPainter())),\n onTouchstart: _cache[5] || (_cache[5] = $event => handleSelectElement($event)),\n onDblclick: _cache[6] || (_cache[6] = ($event: any) => (startEdit()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height\n }, [\n (_ctx.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(GradientDefs, {\n id: `editabel-gradient-${_ctx.elementInfo.id}`,\n type: _ctx.elementInfo.gradient.type,\n color1: _ctx.elementInfo.gradient.color[0],\n color2: _ctx.elementInfo.gradient.color[1],\n rotate: _ctx.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: \"shape-path\",\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n d: _ctx.elementInfo.path,\n fill: _ctx.elementInfo.gradient ? `url(#editabel-gradient-${_ctx.elementInfo.id})` : _ctx.elementInfo.fill,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_1)),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape-text\", [text.value.align, { 'editable': editable.value || text.value.content }]])\n }, [\n (editable.value || text.value.content)\n ? (_openBlock(), _createBlock(ProsemirrorEditor, {\n key: 0,\n ref_key: \"prosemirrorEditorRef\",\n ref: prosemirrorEditorRef,\n elementId: _ctx.elementInfo.id,\n defaultColor: text.value.defaultColor,\n defaultFontName: text.value.defaultFontName,\n editable: !_ctx.elementInfo.lock,\n value: text.value.content,\n onUpdate: _cache[0] || (_cache[0] = value => updateText(value)),\n onBlur: _cache[1] || (_cache[1] = ($event: any) => (checkEmptyText())),\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event, false))\n }, null, 8, [\"elementId\", \"defaultColor\", \"defaultFontName\", \"editable\", \"value\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ], 36)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5d988de2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5d988de2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"markerWidth\", \"markerHeight\", \"refX\", \"refY\"]\nconst _hoisted_2 = [\"d\", \"fill\", \"transform\"]\n\nimport { computed } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinePointMarker',\n props: {\n id: {},\n position: {},\n type: {},\n baseSize: {},\n color: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst pathMap = {\n dot: 'm0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z',\n arrow: 'M0,0 L10,5 0,10 Z',\n}\nconst rotateMap: { [key: string]: number } = {\n 'arrow-start': 180,\n 'arrow-end': 0,\n}\n\nconst path = computed(() => pathMap[props.type])\nconst rotate = computed(() => rotateMap[`${props.type}-${props.position}`] || 0)\nconst size = computed(() => props.baseSize < 2 ? 2 : props.baseSize)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"marker\", {\n id: `${_ctx.id}-${_ctx.type}-${_ctx.position}`,\n markerUnits: \"userSpaceOnUse\",\n orient: \"auto\",\n markerWidth: size.value * 3,\n markerHeight: size.value * 3,\n refX: size.value * 1.5,\n refY: size.value * 1.5\n }, [\n _createElementVNode(\"path\", {\n d: path.value,\n fill: _ctx.color,\n transform: `scale(${size.value * 0.3}, ${size.value * 0.3}) rotate(${rotate.value}, 5, 5)`\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n}\n}\n\n})","\n\n","import script from \"./LinePointMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinePointMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-16512454\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\nconst _hoisted_3 = [\"d\"]\n\nimport { computed } from 'vue'\nimport type { PPTLineElement } from '@/types/slides'\nimport { getLineElementPath } from '@/utils/element'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\nimport LinePointMarker from './LinePointMarker.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n})\nconst svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n})\n\nconst lineDashArray = computed(() => {\n if (props.elementInfo.style !== 'dashed') return '0 0'\n const size = props.elementInfo.width\n return size <= 8 ? `${size * 5} ${size * 2.5}` : `${size * 5} ${size * 1.5}`\n})\n\nconst path = computed(() => {\n return getLineElementPath(props.elementInfo)\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-shape\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '' }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: svgWidth.value,\n height: svgHeight.value\n }, [\n _createElementVNode(\"defs\", null, [\n (_ctx.elementInfo.points[0])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 0,\n id: _ctx.elementInfo.id,\n position: \"start\",\n type: _ctx.elementInfo.points[0],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.points[1])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 1,\n id: _ctx.elementInfo.id,\n position: \"end\",\n type: _ctx.elementInfo.points[1],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n class: \"line-point\",\n d: path.value,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.width,\n \"stroke-dasharray\": lineDashArray.value,\n fill: \"none\",\n \"marker-start\": _ctx.elementInfo.points[0] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[0]}-start)` : '',\n \"marker-end\": _ctx.elementInfo.points[1] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2),\n _withDirectives(_createElementVNode(\"path\", {\n class: \"line-path\",\n d: path.value,\n stroke: \"transparent\",\n \"stroke-width\": \"20\",\n fill: \"none\"\n }, null, 8, _hoisted_3), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 8, _hoisted_1))\n ], 36)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=16512454&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-16512454\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { computed, inject, onMounted, ref, watch } from 'vue'\nimport tinycolor from 'tinycolor2'\nimport { BarChart, LineChart, PieChart } from 'chartist'\nimport type { ChartData, ChartOptions, ChartType } from '@/types/slides'\nimport { injectKeySlideScale } from '@/types/injectKey'\n\nimport 'chartist/dist/index.css'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Chart',\n props: {\n width: {},\n height: {},\n type: {},\n data: {},\n themeColor: {},\n legends: {},\n options: {},\n gridColor: {},\n legend: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst chartRef = ref()\nconst slideScale = inject(injectKeySlideScale) || ref(1)\n\nlet chart: LineChart | BarChart | PieChart | undefined\n\nconst chartHeight = computed(() => {\n if (props.legend) return props.height - 20\n return props.height\n})\n\nconst getPieChartData = () => ({ ...props.data, series: props.data.series[0] })\n\nconst getOptions = () => {\n const propsOptopns = props.options || {}\n return {\n ...propsOptopns,\n width: props.width * slideScale.value,\n height: chartHeight.value * slideScale.value,\n }\n}\n\nconst renderChart = () => {\n if (!chartRef.value) return\n\n const options = getOptions()\n if (props.type === 'bar') chart = new BarChart(chartRef.value, props.data, options)\n if (props.type === 'line') chart = new LineChart(chartRef.value, props.data, options)\n if (props.type === 'pie') chart = new PieChart(chartRef.value, getPieChartData(), options)\n}\n\nconst updateChart = () => {\n if (!chart) {\n renderChart()\n return\n }\n const options = getOptions()\n const data = props.type === 'pie' ? getPieChartData() : props.data\n chart.update(data, options)\n}\n\nwatch([\n () => props.width,\n () => props.height,\n () => props.data,\n () => props.options,\n slideScale,\n], updateChart)\n\nonMounted(renderChart)\n\nconst themeColors = computed(() => {\n let colors: string[] = []\n if (props.themeColor.length >= 10) colors = props.themeColor\n else if (props.themeColor.length === 1) colors = tinycolor(props.themeColor[0]).analogous(10).map(color => color.toRgbString())\n else {\n const len = props.themeColor.length\n const supplement = tinycolor(props.themeColor[len - 1]).analogous(10 + 1 - len).map(color => color.toRgbString())\n colors = [...props.themeColor.slice(0, len - 1), ...supplement]\n }\n return colors\n})\n\n// 更新主题配色:\n// 如果当前所设置的主题色数小于10,剩余部分获取最后一个主题色的相近颜色作为配色\nconst updateTheme = () => {\n if (!chartRef.value) return\n\n for (let i = 0; i < 10; i++) {\n chartRef.value.style.setProperty(`--theme-color-${i + 1}`, themeColors.value[i])\n }\n}\n\nwatch(themeColors, updateTheme)\nonMounted(updateTheme)\n\n// 更新网格颜色,包括坐标的文字部分\nconst updateGridColor = () => {\n if (!chartRef.value) return\n if (props.gridColor) chartRef.value.style.setProperty(`--grid-color`, props.gridColor)\n}\n\nwatch(() => props.gridColor, updateGridColor)\nonMounted(updateGridColor)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"chart\",\n style: _normalizeStyle({ flexDirection: _ctx.legend === 'top' ? 'column-reverse' : 'column' })\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n ref_key: \"chartRef\",\n ref: chartRef,\n style: _normalizeStyle({\n width: _ctx.width + 'px',\n height: chartHeight.value + 'px',\n transform: `scale(${1 / _unref(slideScale)})`,\n })\n }, null, 4),\n (_ctx.legend)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"legends\",\n style: _normalizeStyle({ transform: `scale(${1 / _unref(slideScale)})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.legends, (legend, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"legend\",\n key: index,\n style: _normalizeStyle({ color: _ctx.gridColor })\n }, [\n _createElementVNode(\"div\", {\n class: \"block\",\n style: _normalizeStyle({ backgroundColor: themeColors.value[index] })\n }, null, 4),\n _createTextVNode(\" \" + _toDisplayString(legend), 1)\n ], 4))\n }), 128))\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n\n","import script from \"./Chart.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Chart.vue?vue&type=style&index=0&id=ae2a96a6&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=ae2a96a6&lang=scss\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ae2a96a6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, normalizeStyle as _normalizeStyle, resolveDirective as _resolveDirective, openBlock as _openBlock, createElementBlock as _createElementBlock, withDirectives as _withDirectives, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nimport type { PPTChartElement } from '@/types/slides'\r\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\r\nconst props = __props\r\n\r\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n}\r\n\r\nconst openDataEditor = () => {\r\n emitter.emit(EmitterEvents.OPEN_CHART_DATA_EDITOR)\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-chart\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top + 'px',\r\n left: _ctx.elementInfo.left + 'px',\r\n width: _ctx.elementInfo.width + 'px',\r\n height: _ctx.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: _ctx.elementInfo.fill,\r\n }),\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($event: any) => (openDataEditor()))\n }, [\n _createVNode(ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(Chart, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n type: _ctx.elementInfo.chartType,\n data: _ctx.elementInfo.data,\n options: _ctx.elementInfo.options,\n themeColor: _ctx.elementInfo.themeColor,\n gridColor: _ctx.elementInfo.gridColor,\n legends: _ctx.elementInfo.data.legends,\n legend: _ctx.elementInfo.legend || ''\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\"])\n ], 36)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\r\n\r\n\r\n\r\n\r\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6fc3de39&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6fc3de39\"]])\n\nexport default __exports__","import type { CSSProperties } from 'vue'\nimport type { TableCellStyle } from '@/types/slides'\n\n/**\n * 计算单元格文本样式\n * @param style 单元格文本样式原数据\n */\nexport const getTextStyle = (style?: TableCellStyle): CSSProperties => {\n if (!style) return {}\n const {\n bold,\n em,\n underline,\n strikethrough,\n color,\n backcolor,\n fontsize,\n fontname,\n align,\n } = style\n\n let textDecoration = `${underline ? 'underline' : ''} ${strikethrough ? 'line-through' : ''}`\n if (textDecoration === ' ') textDecoration = 'none'\n \n return {\n fontWeight: bold ? 'bold' : 'normal',\n fontStyle: em ? 'italic' : 'normal',\n textDecoration,\n color: color || '#000',\n backgroundColor: backcolor || '',\n fontSize: fontsize || '14px',\n fontFamily: fontname || '微软雅黑',\n textAlign: align || 'left',\n }\n}\n\nexport const formatText = (text: string) => {\n return text.replace(/\\n/g, '
').replace(/ /g, ' ')\n}","import { computed, type Ref } from 'vue'\nimport type { TableCell } from '@/types/slides'\n\n// 计算无效的单元格位置(被合并的单元格位置)集合\n\nexport default (cells: Ref) => {\n const hideCells = computed(() => {\n const hideCells = []\n \n for (let i = 0; i < cells.value.length; i++) {\n const rowCells = cells.value[i]\n\n for (let j = 0; j < rowCells.length; j++) {\n const cell = rowCells[j]\n \n if (cell.colspan > 1 || cell.rowspan > 1) {\n for (let row = i; row < i + cell.rowspan; row++) {\n for (let col = row === i ? j + 1 : j; col < j + cell.colspan; col++) {\n hideCells.push(`${row}_${col}`)\n }\n }\n }\n }\n }\n return hideCells\n })\n\n return {\n hideCells,\n }\n}","import { ref, watch, type Ref } from 'vue'\nimport type { TableTheme } from '@/types/slides'\nimport { getTableSubThemeColor } from '@/utils/element'\n\n// 通过表格的主题色计算辅助颜色\n\nexport default (theme: Ref) => {\n const subThemeColor = ref(['', ''])\n watch(() => theme.value, () => {\n if (theme.value) {\n subThemeColor.value = getTableSubThemeColor(theme.value.color)\n }\n }, { immediate: true })\n\n return {\n subThemeColor,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7a7222ac\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { onBeforeUnmount, ref, watch } from 'vue'\nimport { pasteCustomClipboardString, pasteExcelClipboardString } from '@/utils/clipboard'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomTextarea',\n props: {\n value: { default: '' }\n },\n emits: [\"updateValue\", \"insertExcelData\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst textareaRef = ref()\nconst text = ref('')\nconst isFocus = ref(false)\n\n// 自定义v-modal,同步数据\n// 当文本框聚焦时,不执行数据同步\nwatch(() => props.value, () => {\n if (isFocus.value) return\n text.value = props.value\n if (textareaRef.value) textareaRef.value.innerHTML = props.value\n}, { immediate: true })\n\nconst handleInput = () => {\n if (!textareaRef.value) return\n const text = textareaRef.value.innerHTML\n emit('updateValue', text)\n}\n\n// 聚焦时更新焦点标记,并监听粘贴事件\nconst handleFocus = () => {\n isFocus.value = true\n\n if (!textareaRef.value) return\n textareaRef.value.onpaste = (e: ClipboardEvent) => {\n e.preventDefault()\n if (!e.clipboardData) return\n\n const clipboardDataFirstItem = e.clipboardData.items[0]\n\n if (clipboardDataFirstItem && clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\n clipboardDataFirstItem.getAsString(text => {\n const clipboardData = pasteCustomClipboardString(text)\n if (typeof clipboardData === 'object') return\n \n const excelData = pasteExcelClipboardString(text)\n if (excelData) {\n emit('insertExcelData', excelData)\n if (textareaRef.value) textareaRef.value.innerHTML = excelData[0][0]\n return\n }\n\n document.execCommand('insertText', false, text)\n })\n }\n }\n}\n\n// 失焦时更新焦点标记,清除粘贴事件监听\nconst handleBlur = () => {\n isFocus.value = false\n if (textareaRef.value) textareaRef.value.onpaste = null\n}\n\n// 清除粘贴事件监听\nonBeforeUnmount(() => {\n if (textareaRef.value) textareaRef.value.onpaste = null\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"custom-textarea\",\n ref_key: \"textareaRef\",\n ref: textareaRef,\n contenteditable: true,\n onFocus: _cache[0] || (_cache[0] = ($event: any) => (handleFocus())),\n onBlur: _cache[1] || (_cache[1] = ($event: any) => (handleBlur())),\n onInput: _cache[2] || (_cache[2] = ($event: any) => (handleInput())),\n innerHTML: text.value\n }, null, 40, _hoisted_1))\n}\n}\n\n})","\n\n\n\n","import script from \"./CustomTextarea.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomTextarea.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./CustomTextarea.vue?vue&type=style&index=0&id=7a7222ac&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7a7222ac\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, vShow as _vShow, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0236a619\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"handler\"\n}\nconst _hoisted_2 = [\"onMousedown\"]\nconst _hoisted_3 = [\"width\"]\nconst _hoisted_4 = [\"rowspan\", \"colspan\", \"data-cell-index\", \"onMousedown\", \"onMouseenter\"]\nconst _hoisted_5 = [\"innerHTML\"]\n\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { debounce, isEqual } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { nanoid } from 'nanoid'\nimport { useMainStore } from '@/store'\nimport type { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { KEYS } from '@/configs/hotkey'\nimport { getTextStyle, formatText } from './utils'\nimport useHideCells from './useHideCells'\nimport useSubThemeColor from './useSubThemeColor'\n\nimport CustomTextarea from './CustomTextarea.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditableTable',\n props: {\n data: {},\n width: {},\n cellMinHeight: {},\n colWidths: {},\n outline: {},\n theme: {},\n editable: { type: Boolean, default: true }\n },\n emits: [\"change\", \"changeColWidths\", \"changeSelectedCells\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst { canvasScale } = storeToRefs(useMainStore())\n \nconst isStartSelect = ref(false)\nconst startCell = ref([])\nconst endCell = ref([])\n\nconst tableCells = computed({\n get() {\n return props.data\n },\n set(newData) {\n emit('change', newData)\n },\n})\n\n// 主题辅助色\nconst theme = computed(() => props.theme)\nconst { subThemeColor } = useSubThemeColor(theme)\n\n// 计算表格每一列的列宽和总宽度\nconst colSizeList = ref([])\nconst totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\nwatch([\n () => props.colWidths,\n () => props.width,\n], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n}, { immediate: true })\n\n// 清除全部单元格的选中状态\n// 表格处于不可编辑状态时也需要清除\nconst removeSelectedCells = () => {\n startCell.value = []\n endCell.value = []\n}\n\nwatch(() => props.editable, () => {\n if (!props.editable) removeSelectedCells()\n})\n\n// 用于拖拽列宽的操作节点位置\nconst dragLinePosition = computed(() => {\n const dragLinePosition: number[] = []\n for (let i = 1; i < colSizeList.value.length + 1; i++) {\n const pos = colSizeList.value.slice(0, i).reduce((a, b) => (a + b))\n dragLinePosition.push(pos)\n }\n return dragLinePosition\n})\n\n// 无效的单元格位置(被合并的单元格位置)集合\nconst cells = computed(() => props.data)\nconst { hideCells } = useHideCells(cells)\n\n// 当前选中的单元格集合\nconst selectedCells = computed(() => {\n if (!startCell.value.length) return []\n const [startX, startY] = startCell.value\n\n if (!endCell.value.length) return [`${startX}_${startY}`]\n const [endX, endY] = endCell.value\n\n if (startX === endX && startY === endY) return [`${startX}_${startY}`]\n\n const selectedCells = []\n\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n for (let i = 0; i < tableCells.value.length; i++) {\n const rowCells = tableCells.value[i]\n for (let j = 0; j < rowCells.length; j++) {\n if (i >= minX && i <= maxX && j >= minY && j <= maxY) selectedCells.push(`${i}_${j}`)\n }\n }\n return selectedCells\n})\n\nwatch(selectedCells, (value, oldValue) => {\n if (isEqual(value, oldValue)) return\n emit('changeSelectedCells', selectedCells.value)\n})\n\n// 当前激活的单元格:当且仅当只有一个选中单元格时,该单元格为激活的单元格\nconst activedCell = computed(() => {\n if (selectedCells.value.length > 1) return null\n return selectedCells.value[0]\n})\n\n// 设置选中单元格状态(鼠标点击或拖选)\nconst handleMouseup = () => isStartSelect.value = false\n\nconst handleCellMousedown = (e: MouseEvent, rowIndex: number, colIndex: number) => {\n if (e.button === 0) {\n endCell.value = []\n isStartSelect.value = true\n startCell.value = [rowIndex, colIndex]\n }\n}\n\nconst handleCellMouseenter = (rowIndex: number, colIndex: number) => {\n if (!isStartSelect.value) return\n endCell.value = [rowIndex, colIndex]\n}\n\nonMounted(() => {\n document.addEventListener('mouseup', handleMouseup)\n})\nonUnmounted(() => {\n document.removeEventListener('mouseup', handleMouseup)\n})\n\n// 判断某位置是否为无效单元格(被合并掉的位置)\nconst isHideCell = (rowIndex: number, colIndex: number) => hideCells.value.includes(`${rowIndex}_${colIndex}`)\n\n// 选中指定的列\nconst selectCol = (index: number) => {\n const maxRow = tableCells.value.length - 1\n startCell.value = [0, index]\n endCell.value = [maxRow, index]\n}\n\n// 选中指定的行\nconst selectRow = (index: number) => {\n const maxCol = tableCells.value[index].length - 1\n startCell.value = [index, 0]\n endCell.value = [index, maxCol]\n}\n\n// 选中全部单元格\nconst selectAll = () => {\n const maxRow = tableCells.value.length - 1\n const maxCol = tableCells.value[maxRow].length - 1\n startCell.value = [0, 0]\n endCell.value = [maxRow, maxCol]\n}\n\n// 删除一行\nconst deleteRow = (rowIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const targetCells = tableCells.value[rowIndex]\n const hideCellsPos = []\n for (let i = 0; i < targetCells.length; i++) {\n if (isHideCell(rowIndex, i)) hideCellsPos.push(i)\n }\n \n for (const pos of hideCellsPos) {\n for (let i = rowIndex; i >= 0; i--) {\n if (!isHideCell(i, pos)) {\n _tableCells[i][pos].rowspan = _tableCells[i][pos].rowspan - 1\n break\n }\n }\n }\n\n _tableCells.splice(rowIndex, 1)\n tableCells.value = _tableCells\n}\n\n// 删除一列\nconst deleteCol = (colIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const hideCellsPos = []\n for (let i = 0; i < tableCells.value.length; i++) {\n if (isHideCell(i, colIndex)) hideCellsPos.push(i)\n }\n\n for (const pos of hideCellsPos) {\n for (let i = colIndex; i >= 0; i--) {\n if (!isHideCell(pos, i)) {\n _tableCells[pos][i].colspan = _tableCells[pos][i].colspan - 1\n break\n }\n }\n }\n\n tableCells.value = _tableCells.map(item => {\n item.splice(colIndex, 1)\n return item\n })\n colSizeList.value.splice(colIndex, 1)\n emit('changeColWidths', colSizeList.value)\n}\n\n// 插入一行\nconst insertRow = (rowIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n const rowCells: TableCell[] = []\n for (let i = 0; i < _tableCells[0].length; i++) {\n rowCells.push({\n colspan: 1,\n rowspan: 1,\n text: '',\n id: nanoid(10),\n })\n }\n\n _tableCells.splice(rowIndex, 0, rowCells)\n tableCells.value = _tableCells\n}\n\n// 插入一列\nconst insertCol = (colIndex: number) => {\n tableCells.value = tableCells.value.map(item => {\n const cell = {\n colspan: 1,\n rowspan: 1,\n text: '',\n id: nanoid(10),\n }\n item.splice(colIndex, 0, cell)\n return item\n })\n colSizeList.value.splice(colIndex, 0, 100)\n emit('changeColWidths', colSizeList.value)\n}\n\n// 填充指定的行/列数\nconst fillTable = (rowCount: number, colCount: number) => {\n let _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n const defaultCell = { colspan: 1, rowspan: 1, text: '' }\n \n if (rowCount) {\n const newRows = []\n for (let i = 0; i < rowCount; i++) {\n const rowCells: TableCell[] = []\n for (let j = 0; j < _tableCells[0].length; j++) {\n rowCells.push({\n ...defaultCell,\n id: nanoid(10),\n })\n }\n newRows.push(rowCells)\n }\n _tableCells = [..._tableCells, ...newRows]\n }\n if (colCount) {\n _tableCells = _tableCells.map(item => {\n const cells: TableCell[] = []\n for (let i = 0; i < colCount; i++) {\n const cell = {\n ...defaultCell,\n id: nanoid(10),\n }\n cells.push(cell)\n }\n return [...item, ...cells]\n })\n colSizeList.value = [...colSizeList.value, ...new Array(colCount).fill(100)]\n emit('changeColWidths', colSizeList.value)\n }\n\n tableCells.value = _tableCells\n}\n\n// 合并单元格\nconst mergeCells = () => {\n const [startX, startY] = startCell.value\n const [endX, endY] = endCell.value\n\n const minX = Math.min(startX, endX)\n const minY = Math.min(startY, endY)\n const maxX = Math.max(startX, endX)\n const maxY = Math.max(startY, endY)\n\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n \n _tableCells[minX][minY].rowspan = maxX - minX + 1\n _tableCells[minX][minY].colspan = maxY - minY + 1\n\n tableCells.value = _tableCells\n removeSelectedCells()\n}\n\n// 拆分单元格\nconst splitCells = (rowIndex: number, colIndex: number) => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n _tableCells[rowIndex][colIndex].rowspan = 1\n _tableCells[rowIndex][colIndex].colspan = 1\n\n tableCells.value = _tableCells\n removeSelectedCells()\n}\n\n// 鼠标拖拽调整列宽\nconst handleMousedownColHandler = (e: MouseEvent, colIndex: number) => {\n removeSelectedCells()\n let isMouseDown = true\n\n const originWidth = colSizeList.value[colIndex]\n const startPageX = e.pageX\n\n const minWidth = 50\n\n document.onmousemove = e => {\n if (!isMouseDown) return\n \n const moveX = (e.pageX - startPageX) / canvasScale.value\n const width = originWidth + moveX < minWidth ? minWidth : Math.round(originWidth + moveX)\n\n colSizeList.value[colIndex] = width\n }\n document.onmouseup = () => {\n isMouseDown = false\n document.onmousemove = null\n document.onmouseup = null\n\n emit('changeColWidths', colSizeList.value)\n }\n}\n\n// 清空选中单元格内的文字\nconst clearSelectedCellText = () => {\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\n\n for (let i = 0; i < _tableCells.length; i++) {\n for (let j = 0; j < _tableCells[i].length; j++) {\n if (selectedCells.value.includes(`${i}_${j}`)) {\n _tableCells[i][j].text = ''\n }\n }\n }\n tableCells.value = _tableCells\n}\n\n// 将焦点移动到下一个单元格\n// 当前行右边有单元格时,焦点右移\n// 当前行右边无单元格(已处在行末),且存在下一行时,焦点移动至下一行行首\n// 当前行右边无单元格(已处在行末),且不存在下一行(已处在最后一行)时,新建一行并将焦点移动至下一行行首\nconst tabActiveCell = () => {\n const getNextCell = (i: number, j: number): [number, number] | null => {\n if (!tableCells.value[i]) return null\n if (!tableCells.value[i][j]) return getNextCell(i + 1, 0)\n if (isHideCell(i, j)) return getNextCell(i, j + 1)\n return [i, j]\n }\n\n endCell.value = []\n\n const nextRow = startCell.value[0]\n const nextCol = startCell.value[1] + 1\n\n const nextCell = getNextCell(nextRow, nextCol)\n if (!nextCell) {\n insertRow(nextRow + 1)\n startCell.value = [nextRow + 1, 0]\n }\n else startCell.value = nextCell\n\n // 移动焦点后自动聚焦文本\n nextTick(() => {\n const textRef = document.querySelector('.cell-text.active') as HTMLInputElement\n if (textRef) textRef.focus()\n })\n}\n\n// 表格快捷键监听\nconst keydownListener = (e: KeyboardEvent) => {\n if (!props.editable || !selectedCells.value.length) return\n\n const key = e.key.toUpperCase()\n if (selectedCells.value.length < 2) {\n if (key === KEYS.TAB) {\n e.preventDefault()\n tabActiveCell()\n }\n if (e.ctrlKey && key === KEYS.UP) {\n e.preventDefault()\n const rowIndex = +selectedCells.value[0].split('_')[0]\n insertRow(rowIndex)\n }\n if (e.ctrlKey && key === KEYS.DOWN) {\n e.preventDefault()\n const rowIndex = +selectedCells.value[0].split('_')[0]\n insertRow(rowIndex + 1)\n }\n if (e.ctrlKey && key === KEYS.LEFT) {\n e.preventDefault()\n const colIndex = +selectedCells.value[0].split('_')[1]\n insertCol(colIndex)\n }\n if (e.ctrlKey && key === KEYS.RIGHT) {\n e.preventDefault()\n const colIndex = +selectedCells.value[0].split('_')[1]\n insertCol(colIndex + 1)\n }\n }\n else if (key === KEYS.DELETE) {\n clearSelectedCellText()\n }\n}\n\nonMounted(() => {\n document.addEventListener('keydown', keydownListener)\n})\nonUnmounted(() => {\n document.removeEventListener('keydown', keydownListener)\n})\n\n// 单元格文字输入时更新表格数据\nconst handleInput = debounce(function(value, rowIndex, colIndex) {\n tableCells.value[rowIndex][colIndex].text = value\n emit('change', tableCells.value)\n}, 300, { trailing: true })\n\n// 插入来自Excel的数据,表格的行/列数不够时自动补足\nconst insertExcelData = (data: string[][], rowIndex: number, colIndex: number) => {\n const maxRow = data.length\n const maxCol = data[0].length\n\n let fillRowCount = 0\n let fillColCount = 0\n if (rowIndex + maxRow > tableCells.value.length) fillRowCount = rowIndex + maxRow - tableCells.value.length\n if (colIndex + maxCol > tableCells.value[0].length) fillColCount = colIndex + maxCol - tableCells.value[0].length\n if (fillRowCount || fillColCount) fillTable(fillRowCount, fillColCount)\n\n nextTick(() => {\n for (let i = 0; i < maxRow; i++) {\n for (let j = 0; j < maxCol; j++) {\n if (tableCells.value[rowIndex + i][colIndex + j]) {\n tableCells.value[rowIndex + i][colIndex + j].text = data[i][j]\n }\n }\n }\n emit('change', tableCells.value)\n })\n}\n\n// 获取有效的单元格(排除掉被合并的单元格)\nconst getEffectiveTableCells = () => {\n const effectiveTableCells = []\n\n for (let i = 0; i < tableCells.value.length; i++) {\n const rowCells = tableCells.value[i]\n const _rowCells = []\n for (let j = 0; j < rowCells.length; j++) {\n if (!isHideCell(i, j)) _rowCells.push(rowCells[j])\n }\n if (_rowCells.length) effectiveTableCells.push(_rowCells)\n }\n\n return effectiveTableCells\n}\n\n// 检查是否可以删除行和列:有效的行/列数大于1\nconst checkCanDeleteRowOrCol = () => {\n const effectiveTableCells = getEffectiveTableCells()\n const canDeleteRow = effectiveTableCells.length > 1\n const canDeleteCol = effectiveTableCells[0].length > 1\n\n return { canDeleteRow, canDeleteCol }\n}\n\n// 检查是否可以合并或拆分\n// 必须多选才可以合并\n// 必须单选且所选单元格为合并单元格才可以拆分\nconst checkCanMergeOrSplit = (rowIndex: number, colIndex: number) => {\n const isMultiSelected = selectedCells.value.length > 1\n const targetCell = tableCells.value[rowIndex][colIndex]\n\n const canMerge = isMultiSelected\n const canSplit = !isMultiSelected && (targetCell.rowspan > 1 || targetCell.colspan > 1)\n\n return { canMerge, canSplit }\n}\n\nconst contextmenus = (el: HTMLElement): ContextmenuItem[] => {\n const cellIndex = el.dataset.cellIndex as string\n const rowIndex = +cellIndex.split('_')[0]\n const colIndex = +cellIndex.split('_')[1]\n\n if (!selectedCells.value.includes(`${rowIndex}_${colIndex}`)) {\n startCell.value = [rowIndex, colIndex]\n endCell.value = []\n }\n\n const { canMerge, canSplit } = checkCanMergeOrSplit(rowIndex, colIndex)\n const { canDeleteRow, canDeleteCol } = checkCanDeleteRowOrCol()\n\n return [\n {\n text: '插入列',\n children: [\n { text: '到左侧', handler: () => insertCol(colIndex) },\n { text: '到右侧', handler: () => insertCol(colIndex + 1) },\n ],\n },\n {\n text: '插入行',\n children: [\n { text: '到上方', handler: () => insertRow(rowIndex) },\n { text: '到下方', handler: () => insertRow(rowIndex + 1) },\n ],\n },\n {\n text: '删除列',\n disable: !canDeleteCol,\n handler: () => deleteCol(colIndex),\n },\n {\n text: '删除行',\n disable: !canDeleteRow,\n handler: () => deleteRow(rowIndex),\n },\n { divider: true },\n {\n text: '合并单元格',\n disable: !canMerge,\n handler: mergeCells,\n },\n {\n text: '取消合并单元格',\n disable: !canSplit,\n handler: () => splitCells(rowIndex, colIndex),\n },\n { divider: true },\n {\n text: '选中当前列',\n handler: () => selectCol(colIndex),\n },\n {\n text: '选中当前行',\n handler: () => selectRow(rowIndex),\n },\n {\n text: '选中全部单元格',\n handler: selectAll,\n },\n ]\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-table\",\n style: _normalizeStyle({ width: totalWidth.value + 'px' })\n }, [\n (_ctx.editable)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(dragLinePosition.value, (pos, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"drag-line\",\n key: index,\n style: _normalizeStyle({ left: pos + 'px' }),\n onMousedown: $event => handleMousedownColHandler($event, index)\n }, null, 44, _hoisted_2))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': theme.value,\n 'row-header': theme.value?.rowHeader,\n 'row-footer': theme.value?.rowFooter,\n 'col-header': theme.value?.colHeader,\n 'col-footer': theme.value?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${theme.value?.color}; --subThemeColor1: ${_unref(subThemeColor)[0]}; --subThemeColor2: ${_unref(subThemeColor)[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(colSizeList.value, (width, index) => {\n return (_openBlock(), _createElementBlock(\"col\", {\n span: \"1\",\n key: index,\n width: width\n }, null, 8, _hoisted_3))\n }), 128))\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(tableCells.value, (rowCells, rowIndex) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: rowIndex,\n style: _normalizeStyle({ height: _ctx.cellMinHeight + 'px' })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rowCells, (cell, colIndex) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"td\", {\n class: _normalizeClass([\"cell\", {\n 'selected': selectedCells.value.includes(`${rowIndex}_${colIndex}`) && selectedCells.value.length > 1,\n 'active': activedCell.value === `${rowIndex}_${colIndex}`,\n }]),\n style: _normalizeStyle({\n borderStyle: _ctx.outline.style,\n borderColor: _ctx.outline.color,\n borderWidth: _ctx.outline.width + 'px',\n ..._unref(getTextStyle)(cell.style),\n }),\n key: cell.id,\n rowspan: cell.rowspan,\n colspan: cell.colspan,\n \"data-cell-index\": `${rowIndex}_${colIndex}`,\n onMousedown: $event => handleCellMousedown($event, rowIndex, colIndex),\n onMouseenter: ($event: any) => (handleCellMouseenter(rowIndex, colIndex))\n }, [\n (activedCell.value === `${rowIndex}_${colIndex}`)\n ? (_openBlock(), _createBlock(CustomTextarea, {\n key: 0,\n class: _normalizeClass([\"cell-text\", { 'active': activedCell.value === `${rowIndex}_${colIndex}` }]),\n style: _normalizeStyle({ minHeight: (_ctx.cellMinHeight - 4) + 'px' }),\n value: cell.text,\n onUpdateValue: value => _unref(handleInput)(value, rowIndex, colIndex),\n onInsertExcelData: value => insertExcelData(value, rowIndex, colIndex)\n }, null, 8, [\"class\", \"style\", \"value\", \"onUpdateValue\", \"onInsertExcelData\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"cell-text\",\n style: _normalizeStyle({ minHeight: (_ctx.cellMinHeight - 4) + 'px' }),\n innerHTML: _unref(formatText)(cell.text)\n }, null, 12, _hoisted_5))\n ], 46, _hoisted_4)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)],\n [_directive_contextmenu, (el) => contextmenus(el)]\n ])\n }), 128))\n ], 4))\n }), 128))\n ])\n ], 6)\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./EditableTable.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./EditableTable.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./EditableTable.vue?vue&type=style&index=0&id=0236a619&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-0236a619\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { withModifiers as _withModifiers, createVNode as _createVNode, unref as _unref, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-742a731e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTTableElement, TableCell } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport EditableTable from './EditableTable.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { canvasScale, handleElementId, isScaling } = storeToRefs(mainStore)\n\nconst elementRef = ref()\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\n// 更新表格的可编辑状态,表格处于编辑状态时需要禁用全局快捷键\nconst editable = ref(false)\n\nwatch(handleElementId, () => {\n if (handleElementId.value !== props.elementInfo.id) editable.value = false\n})\n\nwatch(editable, () => {\n mainStore.setDisableHotkeysState(editable.value)\n})\n\nconst startEdit = () => {\n if (!props.elementInfo.lock) editable.value = true\n}\n\n// 监听表格元素的尺寸变化,当高度变化时,更新高度到vuex\n// 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\nconst realHeightCache = ref(-1)\n\nwatch(isScaling, () => {\n if (handleElementId.value !== props.elementInfo.id) return\n\n if (isScaling.value) editable.value = false\n\n if (!isScaling.value && realHeightCache.value !== -1) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeightCache.value },\n })\n realHeightCache.value = -1\n }\n})\n\nconst updateTableElementHeight = (entries: ResizeObserverEntry[]) => {\n const contentRect = entries[0].contentRect\n if (!elementRef.value) return\n\n const realHeight = contentRect.height\n\n if (props.elementInfo.height !== realHeight) {\n if (!isScaling.value) {\n slidesStore.updateElement({\n id: props.elementInfo.id,\n props: { height: realHeight },\n })\n }\n else realHeightCache.value = realHeight\n }\n}\n\nconst resizeObserver = new ResizeObserver(updateTableElementHeight)\n\nonMounted(() => {\n if (elementRef.value) resizeObserver.observe(elementRef.value)\n})\nonUnmounted(() => {\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\n})\n\n// 更新表格内容数据\nconst updateTableCells = (data: TableCell[][]) => {\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { data },\n })\n addHistorySnapshot()\n}\n\n// 更新表格的列宽数据\nconst updateColWidths = (widths: number[]) => {\n const width = widths.reduce((a, b) => a + b)\n const colWidths = widths.map(item => item / width)\n\n slidesStore.updateElement({\n id: props.elementInfo.id, \n props: { width, colWidths },\n })\n addHistorySnapshot()\n}\n\n// 更新表格当前选中的单元格\nconst updateSelectedCells = (cells: string[]) => {\n nextTick(() => mainStore.setSelectedTableCells(cells))\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-table\", { 'lock': _ctx.elementInfo.lock }]),\n ref_key: \"elementRef\",\n ref: elementRef,\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(EditableTable, {\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"])),\n data: _ctx.elementInfo.data,\n width: _ctx.elementInfo.width,\n cellMinHeight: _ctx.elementInfo.cellMinHeight,\n colWidths: _ctx.elementInfo.colWidths,\n outline: _ctx.elementInfo.outline,\n theme: _ctx.elementInfo.theme,\n editable: editable.value,\n onChange: _cache[1] || (_cache[1] = data => updateTableCells(data)),\n onChangeColWidths: _cache[2] || (_cache[2] = widths => updateColWidths(widths)),\n onChangeSelectedCells: _cache[3] || (_cache[3] = cells => updateSelectedCells(cells))\n }, null, 8, [\"data\", \"width\", \"cellMinHeight\", \"colWidths\", \"outline\", \"theme\", \"editable\"]),\n (!editable.value || _ctx.elementInfo.lock)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"table-mask\", { 'lock': _ctx.elementInfo.lock }]),\n onDblclick: _cache[4] || (_cache[4] = ($event: any) => (startEdit())),\n onMousedown: _cache[5] || (_cache[5] = $event => handleSelectElement($event)),\n onTouchstart: _cache[6] || (_cache[6] = $event => handleSelectElement($event))\n }, [\n (_unref(handleElementId) === _ctx.elementInfo.id)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mask-tip\",\n style: _normalizeStyle({ transform: `scale(${ 1 / _unref(canvasScale) })` })\n }, \"双击编辑\", 4))\n : _createCommentVNode(\"\", true)\n ], 34))\n : _createCommentVNode(\"\", true)\n ])), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=742a731e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-742a731e\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35c33b80\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\", \"stroke\", \"stroke-width\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nimport type { PPTLatexElement } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nconst openLatexEditor = () => {\n emitter.emit(EmitterEvents.OPEN_LATEX_EDITOR)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-latex\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onDblclick: _cache[2] || (_cache[2] = ($event: any) => (openLatexEditor()))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.elementInfo.path\n }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 32)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=35c33b80&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35c33b80\"]])\n\nexport default __exports__","import { onMounted, type Ref } from 'vue'\n\nexport default (\n src: string,\n videoRef: Ref,\n) => {\n onMounted(() => {\n if (!videoRef.value) return\n\n let type = 'normal'\n if (/m3u8(#|\\?|$)/i.exec(src)) type = 'hls'\n else if (/.flv(#|\\?|$)/i.exec(src)) type = 'flv'\n\n if (videoRef.value && type === 'hls' && (videoRef.value.canPlayType('application/x-mpegURL') || videoRef.value.canPlayType('application/vnd.apple.mpegURL'))) {\n type = 'normal'\n }\n\n if (type === 'hls') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Hls = (window as any).Hls\n \n if (Hls && Hls.isSupported()) {\n const hls = new Hls()\n hls.loadSource(src)\n hls.attachMedia(videoRef.value)\n }\n }\n else if (type === 'flv') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const flvjs = (window as any).flvjs\n if (flvjs && flvjs.isSupported()) {\n const flvPlayer = flvjs.createPlayer({\n type: 'flv',\n url: src,\n })\n flvPlayer.attachMediaElement(videoRef.value)\n flvPlayer.load()\n }\n }\n })\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-e55352ca\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"load-error\"\n}\nconst _hoisted_2 = [\"src\", \"autoplay\", \"poster\"]\nconst _hoisted_3 = { class: \"bezel\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"controller-mask\" }, null, -1))\nconst _hoisted_5 = { class: \"controller\" }\nconst _hoisted_6 = { class: \"icons icons-left\" }\nconst _hoisted_7 = { class: \"icon-content\" }\nconst _hoisted_8 = { class: \"volume\" }\nconst _hoisted_9 = { class: \"icon-content\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_11 = [\n _hoisted_10\n]\nconst _hoisted_12 = { class: \"time\" }\nconst _hoisted_13 = { class: \"ptime\" }\nconst _hoisted_14 = { class: \"dtime\" }\nconst _hoisted_15 = { class: \"icons icons-right\" }\nconst _hoisted_16 = { class: \"speed\" }\nconst _hoisted_17 = { class: \"icon speed-icon\" }\nconst _hoisted_18 = [\"onClick\"]\nconst _hoisted_19 = { class: \"icon-content\" }\nconst _hoisted_20 = { class: \"bar\" }\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_22 = [\n _hoisted_21\n]\n\nimport { computed, ref } from 'vue'\nimport useMSE from './useMSE'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n width: {},\n height: {},\n src: {},\n poster: { default: '' },\n autoplay: { type: Boolean, default: false },\n scale: { default: 1 }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst secondToTime = (second = 0) => {\n if (second === 0 || isNaN(second)) return '00:00'\n\n const add0 = (num: number) => (num < 10 ? '0' + num : '' + num)\n const hour = Math.floor(second / 3600)\n const min = Math.floor((second - hour * 3600) / 60)\n const sec = Math.floor(second - hour * 3600 - min * 60)\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':')\n}\n\nconst getBoundingClientRectViewLeft = (element: HTMLElement) => {\n return element.getBoundingClientRect().left\n}\n\nconst videoRef = ref()\nconst playBarWrap = ref()\nconst volumeBarRef = ref()\n\nconst volume = ref(0.5)\nconst paused = ref(true)\nconst currentTime = ref(0)\nconst duration = ref(0)\nconst loaded = ref(0)\nconst loop = ref(false)\nconst bezelTransition = ref(false)\nconst playbackRate = ref(1)\n\nconst playBarTimeVisible = ref(false)\nconst playBarTime = ref('00:00')\nconst playBarTimeLeft = ref('0')\n\nconst ptime = computed(() => secondToTime(currentTime.value))\nconst dtime = computed(() => secondToTime(duration.value))\nconst playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\nconst loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\nconst volumeBarWidth = computed(() => volume.value * 100 + '%')\n\nconst speedMenuVisible = ref(false)\nconst speedOptions = [\n { label: '2x', value: 2 },\n { label: '1.5x', value: 1.5 },\n { label: '1.25x', value: 1.25 },\n { label: '1x', value: 1 },\n { label: '0.75x', value: 0.75 },\n { label: '0.5x', value: 0.5 },\n]\n\nconst seek = (time: number) => {\n if (!videoRef.value) return\n\n time = Math.max(time, 0)\n time = Math.min(time, duration.value)\n\n videoRef.value.currentTime = time\n currentTime.value = time\n}\n\nconst play = () => {\n if (!videoRef.value) return\n\n paused.value = false\n videoRef.value.play()\n bezelTransition.value = true\n}\n\nconst pause = () => {\n if (!videoRef.value) return\n\n paused.value = true\n videoRef.value.pause()\n bezelTransition.value = true\n}\n\nconst toggle = () => {\n if (paused.value) play() \n else pause()\n}\n\nconst setVolume = (percentage: number) => {\n if (!videoRef.value) return\n\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n\n videoRef.value.volume = percentage\n volume.value = percentage\n if (videoRef.value.muted && percentage !== 0) videoRef.value.muted = false\n}\n\nconst speed = (rate: number) => {\n if (videoRef.value) videoRef.value.playbackRate = rate\n playbackRate.value = rate\n}\n\nconst handleDurationchange = () => {\n duration.value = videoRef.value?.duration || 0\n}\n\nconst handleTimeupdate = () => {\n currentTime.value = videoRef.value?.currentTime || 0\n}\n\nconst handleEnded = () => {\n if (!loop.value) pause()\n else {\n seek(0)\n play()\n }\n}\n\nconst handleProgress = () => {\n loaded.value = videoRef.value?.buffered.length ? videoRef.value.buffered.end(videoRef.value.buffered.length - 1) : 0\n}\n\nconst loadError = ref(false)\nconst handleError = () => loadError.value = true\n\nconst thumbMove = (e: MouseEvent | TouchEvent) => {\n if (!videoRef.value || !playBarWrap.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n videoRef.value.currentTime = time\n currentTime.value = time\n}\n\nconst thumbUp = (e: MouseEvent | TouchEvent) => {\n if (!videoRef.value || !playBarWrap.value) return\n\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n videoRef.value.currentTime = time\n currentTime.value = time\n\n document.removeEventListener('mousemove', thumbMove)\n document.removeEventListener('touchmove', thumbMove)\n document.removeEventListener('mouseup', thumbUp)\n document.removeEventListener('touchend', thumbUp)\n}\n\nconst handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n}\n\nconst volumeMove = (e: MouseEvent | TouchEvent) => {\n if (!volumeBarRef.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n const percentage = (clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n}\n\nconst handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n}\n\nconst handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst handleMousemovePlayBar = (e: MouseEvent) => {\n if (duration.value && playBarWrap.value) {\n const px = playBarWrap.value.getBoundingClientRect().left\n const tx = e.clientX - px\n if (tx < 0 || tx > playBarWrap.value.offsetWidth) return\n\n const time = duration.value * (tx / playBarWrap.value.offsetWidth)\n playBarTimeLeft.value = `${tx - (time >= 3600 ? 25 : 20)}px`\n playBarTime.value = secondToTime(time)\n playBarTimeVisible.value = true\n }\n}\n\nconst toggleVolume = () => {\n if (!videoRef.value) return\n\n if (videoRef.value.muted) {\n videoRef.value.muted = false\n setVolume(0.5)\n }\n else {\n videoRef.value.muted = true\n setVolume(0)\n }\n}\n\nconst toggleLoop = () => {\n loop.value = !loop.value\n}\n\nconst autoHideControllerTimer = ref(-1)\nconst hideController = ref(false)\nconst autoHideController = () => {\n hideController.value = false\n clearTimeout(autoHideControllerTimer.value)\n autoHideControllerTimer.value = setTimeout(() => {\n if (videoRef.value?.played.length) hideController.value = true\n }, 3000)\n}\n\nuseMSE(props.src, videoRef)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPause = _resolveComponent(\"IconPause\")!\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_IconVolumeMute = _resolveComponent(\"IconVolumeMute\")!\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_IconVolumeSmall = _resolveComponent(\"IconVolumeSmall\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"video-player\", { 'hide-controller': hideController.value }]),\n style: _normalizeStyle({\n width: _ctx.width * _ctx.scale + 'px',\n height: _ctx.height * _ctx.scale + 'px',\n transform: `scale(${1 / _ctx.scale})`,\n }),\n onMousemove: _cache[22] || (_cache[22] = ($event: any) => (autoHideController())),\n onClick: _cache[23] || (_cache[23] = ($event: any) => (autoHideController()))\n }, [\n _createElementVNode(\"div\", {\n class: \"video-wrap\",\n onClick: _cache[8] || (_cache[8] = ($event: any) => (toggle()))\n }, [\n (loadError.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"视频加载失败\"))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"video\", {\n class: \"video\",\n ref_key: \"videoRef\",\n ref: videoRef,\n src: _ctx.src,\n autoplay: _ctx.autoplay,\n poster: _ctx.poster,\n \"webkit-playsinline\": \"\",\n playsinline: \"\",\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (handleTimeupdate())),\n onEnded: _cache[2] || (_cache[2] = ($event: any) => (handleEnded())),\n onProgress: _cache[3] || (_cache[3] = ($event: any) => (handleProgress())),\n onPlay: _cache[4] || (_cache[4] = ($event: any) => {autoHideController(); paused.value = false}),\n onPause: _cache[5] || (_cache[5] = ($event: any) => (autoHideController())),\n onError: _cache[6] || (_cache[6] = ($event: any) => (handleError()))\n }, null, 40, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", {\n class: _normalizeClass([\"bezel-icon\", { 'bezel-transition': bezelTransition.value }]),\n onAnimationend: _cache[7] || (_cache[7] = ($event: any) => (bezelTransition.value = false))\n }, [\n (paused.value)\n ? (_openBlock(), _createBlock(_component_IconPause, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPlayOne, { key: 1 }))\n ], 34)\n ])\n ]),\n _hoisted_4,\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", {\n class: \"icon play-icon\",\n onClick: _cache[9] || (_cache[9] = ($event: any) => (toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_7, [\n (paused.value)\n ? (_openBlock(), _createBlock(_component_IconPlayOne, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPause, { key: 1 }))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"icon volume-icon\",\n onClick: _cache[10] || (_cache[10] = ($event: any) => (toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_9, [\n (volume.value === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (volume.value === 1)\n ? (_openBlock(), _createBlock(_component_IconVolumeNotice, { key: 1 }))\n : (_openBlock(), _createBlock(_component_IconVolumeSmall, { key: 2 }))\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"volume-bar-wrap\",\n onMousedown: _cache[11] || (_cache[11] = ($event: any) => (handleMousedownVolumeBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (handleMousedownVolumeBar())),\n onClick: _cache[13] || (_cache[13] = $event => handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar\",\n ref_key: \"volumeBarRef\",\n ref: volumeBarRef\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: volumeBarWidth.value })\n }, _hoisted_11, 4)\n ], 512)\n ], 32)\n ]),\n _createElementVNode(\"span\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(ptime.value), 1),\n _createTextVNode(\" / \"),\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(dtime.value), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createElementVNode(\"span\", {\n class: \"icon-content\",\n onClick: _cache[14] || (_cache[14] = ($event: any) => (speedMenuVisible.value = !speedMenuVisible.value))\n }, _toDisplayString(playbackRate.value === 1 ? '倍速' : (playbackRate.value + 'x')), 1),\n (speedMenuVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"speed-menu\",\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (speedMenuVisible.value = false))\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(speedOptions, (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"speed-menu-item\", { 'active': item.value === playbackRate.value }]),\n key: item.label,\n onClick: ($event: any) => (speed(item.value))\n }, _toDisplayString(item.label), 11, _hoisted_18)\n }), 64))\n ], 32))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"loop\",\n onClick: _cache[16] || (_cache[16] = ($event: any) => (toggleLoop()))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"icon loop-icon\", { 'active': loop.value }])\n }, [\n _createElementVNode(\"span\", _hoisted_19, \"循环\" + _toDisplayString(loop.value ? '开' : '关'), 1)\n ], 2)\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref_key: \"playBarWrap\",\n ref: playBarWrap,\n onMousedown: _cache[17] || (_cache[17] = ($event: any) => (handleMousedownPlayBar())),\n onTouchstart: _cache[18] || (_cache[18] = ($event: any) => (handleMousedownPlayBar())),\n onMousemove: _cache[19] || (_cache[19] = $event => handleMousemovePlayBar($event)),\n onMouseenter: _cache[20] || (_cache[20] = ($event: any) => (playBarTimeVisible.value = true)),\n onMouseleave: _cache[21] || (_cache[21] = ($event: any) => (playBarTimeVisible.value = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !playBarTimeVisible.value }]),\n style: _normalizeStyle({ left: playBarTimeLeft.value })\n }, _toDisplayString(playBarTime.value), 7),\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: loadedBarWidth.value })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: playedBarWidth.value })\n }, _hoisted_22, 4)\n ])\n ], 544)\n ])\n ], 38))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=e55352ca&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e55352ca\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, normalizeStyle as _normalizeStyle } from \"vue\"\n\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTVideoElement } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\n\nimport VideoPlayer from './VideoPlayer/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent, canMove = true) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo, canMove)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-video\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[2] || (_cache[2] = $event => handleSelectElement($event, false)),\n onTouchstart: _cache[3] || (_cache[3] = $event => handleSelectElement($event, false))\n }, [\n _createVNode(VideoPlayer, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n src: _ctx.elementInfo.src,\n poster: _ctx.elementInfo.poster,\n scale: _unref(canvasScale)\n }, null, 8, [\"width\", \"height\", \"src\", \"poster\", \"scale\"]),\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(['t', 'b', 'l', 'r'], (item) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass(['handler-border', item]),\n key: item,\n onMousedown: _cache[0] || (_cache[0] = $event => handleSelectElement($event)),\n onTouchstart: _cache[1] || (_cache[1] = $event => handleSelectElement($event))\n }, null, 34)\n }), 64))\n ], 32)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5dc89f2a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5dc89f2a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-44037f56\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\", \"autoplay\"]\nconst _hoisted_2 = { class: \"controller\" }\nconst _hoisted_3 = { class: \"icons\" }\nconst _hoisted_4 = { class: \"icon-content\" }\nconst _hoisted_5 = { class: \"volume\" }\nconst _hoisted_6 = { class: \"icon-content\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = { class: \"time\" }\nconst _hoisted_10 = { class: \"ptime\" }\nconst _hoisted_11 = { class: \"dtime\" }\nconst _hoisted_12 = { class: \"bar\" }\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"thumb\" }, null, -1))\nconst _hoisted_14 = [\n _hoisted_13\n]\n\nimport { computed, ref } from 'vue'\nimport message from '@/utils/message'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AudioPlayer',\n props: {\n src: {},\n loop: { type: Boolean },\n autoplay: { type: Boolean, default: false },\n scale: { default: 1 }\n },\n setup(__props: any, { expose: __expose }) {\n\nconst props = __props\n\nconst secondToTime = (second = 0) => {\n if (second === 0 || isNaN(second)) return '00:00'\n\n const add0 = (num: number) => (num < 10 ? '0' + num : '' + num)\n const hour = Math.floor(second / 3600)\n const min = Math.floor((second - hour * 3600) / 60)\n const sec = Math.floor(second - hour * 3600 - min * 60)\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':')\n}\n\nconst getBoundingClientRectViewLeft = (element: HTMLElement) => {\n return element.getBoundingClientRect().left\n}\n\nconst audioRef = ref()\nconst playBarWrap = ref()\nconst volumeBarRef = ref()\n\nconst volume = ref(0.5)\nconst paused = ref(true)\nconst currentTime = ref(0)\nconst duration = ref(0)\nconst loaded = ref(0)\n\nconst playBarTimeVisible = ref(false)\nconst playBarTime = ref('00:00')\nconst playBarTimeLeft = ref('0')\n\nconst ptime = computed(() => secondToTime(currentTime.value))\nconst dtime = computed(() => secondToTime(duration.value))\nconst playedBarWidth = computed(() => currentTime.value / duration.value * 100 + '%')\nconst loadedBarWidth = computed(() => loaded.value / duration.value * 100 + '%')\nconst volumeBarWidth = computed(() => volume.value * 100 + '%')\n\nconst seek = (time: number) => {\n if (!audioRef.value) return\n\n time = Math.max(time, 0)\n time = Math.min(time, duration.value)\n\n audioRef.value.currentTime = time\n currentTime.value = time\n}\n\nconst play = () => {\n if (!audioRef.value) return\n\n paused.value = false\n audioRef.value.play()\n}\n\nconst pause = () => {\n if (!audioRef.value) return\n\n paused.value = true\n audioRef.value.pause()\n}\n\nconst toggle = () => {\n if (paused.value) play() \n else pause()\n}\n\nconst setVolume = (percentage: number) => {\n if (!audioRef.value) return\n\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n\n audioRef.value.volume = percentage\n volume.value = percentage\n if (audioRef.value.muted && percentage !== 0) audioRef.value.muted = false\n}\n\nconst handleDurationchange = () => {\n duration.value = audioRef.value?.duration || 0\n}\n\nconst handleTimeupdate = () => {\n currentTime.value = audioRef.value?.currentTime || 0\n}\n\nconst handlePlayed = () => {\n paused.value = false\n}\n\nconst handleEnded = () => {\n if (!props.loop) pause()\n else {\n seek(0)\n play()\n }\n}\n\nconst handleProgress = () => {\n loaded.value = audioRef.value?.buffered.length ? audioRef.value.buffered.end(audioRef.value.buffered.length - 1) : 0\n}\n\nconst handleError = () => message.error('视频加载失败')\n\nconst thumbMove = (e: MouseEvent | TouchEvent) => {\n if (!audioRef.value || !playBarWrap.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n audioRef.value.currentTime = time\n currentTime.value = time\n}\n\nconst thumbUp = (e: MouseEvent | TouchEvent) => {\n if (!audioRef.value || !playBarWrap.value) return\n\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n let percentage = (clientX - getBoundingClientRectViewLeft(playBarWrap.value)) / playBarWrap.value.clientWidth\n percentage = Math.max(percentage, 0)\n percentage = Math.min(percentage, 1)\n const time = percentage * duration.value\n\n audioRef.value.currentTime = time\n currentTime.value = time\n\n document.removeEventListener('mousemove', thumbMove)\n document.removeEventListener('touchmove', thumbMove)\n document.removeEventListener('mouseup', thumbUp)\n document.removeEventListener('touchend', thumbUp)\n}\n\nconst handleMousedownPlayBar = () => {\n document.addEventListener('mousemove', thumbMove)\n document.addEventListener('touchmove', thumbMove)\n document.addEventListener('mouseup', thumbUp)\n document.addEventListener('touchend', thumbUp)\n}\n\nconst volumeMove = (e: MouseEvent | TouchEvent) => {\n if (!volumeBarRef.value) return\n const clientX = 'clientX' in e ? e.clientX : e.changedTouches[0].clientX\n const percentage = (clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst volumeUp = () => {\n document.removeEventListener('mousemove', volumeMove)\n document.removeEventListener('touchmove', volumeMove)\n document.removeEventListener('mouseup', volumeUp)\n document.removeEventListener('touchend', volumeUp)\n}\n\nconst handleMousedownVolumeBar = () => {\n document.addEventListener('mousemove', volumeMove)\n document.addEventListener('touchmove', volumeMove)\n document.addEventListener('mouseup', volumeUp)\n document.addEventListener('touchend', volumeUp)\n}\n\nconst handleClickVolumeBar = (e: MouseEvent) => {\n if (!volumeBarRef.value) return\n const percentage = (e.clientX - getBoundingClientRectViewLeft(volumeBarRef.value)) / 45\n setVolume(percentage)\n}\n\nconst handleMousemovePlayBar = (e: MouseEvent) => {\n if (duration.value && playBarWrap.value) {\n const px = playBarWrap.value.getBoundingClientRect().left\n const tx = e.clientX - px\n if (tx < 0 || tx > playBarWrap.value.offsetWidth) return\n\n const time = duration.value * (tx / playBarWrap.value.offsetWidth)\n playBarTimeLeft.value = `${tx - (time >= 3600 ? 25 : 20)}px`\n playBarTime.value = secondToTime(time)\n playBarTimeVisible.value = true\n }\n}\n\nconst toggleVolume = () => {\n if (!audioRef.value) return\n\n if (audioRef.value.muted) {\n audioRef.value.muted = false\n setVolume(0.5)\n }\n else {\n audioRef.value.muted = true\n setVolume(0)\n }\n}\n\n__expose({\n toggle,\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n const _component_IconPause = _resolveComponent(\"IconPause\")!\n const _component_IconVolumeMute = _resolveComponent(\"IconVolumeMute\")!\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _component_IconVolumeSmall = _resolveComponent(\"IconVolumeSmall\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"audio-player\",\n style: _normalizeStyle({ transform: `scale(${1 / _ctx.scale})` })\n }, [\n _createElementVNode(\"audio\", {\n class: \"audio\",\n ref_key: \"audioRef\",\n ref: audioRef,\n src: _ctx.src,\n autoplay: _ctx.autoplay,\n onDurationchange: _cache[0] || (_cache[0] = ($event: any) => (handleDurationchange())),\n onTimeupdate: _cache[1] || (_cache[1] = ($event: any) => (handleTimeupdate())),\n onPlay: _cache[2] || (_cache[2] = ($event: any) => (handlePlayed())),\n onEnded: _cache[3] || (_cache[3] = ($event: any) => (handleEnded())),\n onProgress: _cache[4] || (_cache[4] = ($event: any) => (handleProgress())),\n onError: _cache[5] || (_cache[5] = ($event: any) => (handleError()))\n }, null, 40, _hoisted_1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"icon play-icon\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (toggle()))\n }, [\n _createElementVNode(\"span\", _hoisted_4, [\n (paused.value)\n ? (_openBlock(), _createBlock(_component_IconPlayOne, { key: 0 }))\n : (_openBlock(), _createBlock(_component_IconPause, { key: 1 }))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", {\n class: \"icon volume-icon\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (toggleVolume()))\n }, [\n _createElementVNode(\"span\", _hoisted_6, [\n (volume.value === 0)\n ? (_openBlock(), _createBlock(_component_IconVolumeMute, { key: 0 }))\n : (volume.value === 1)\n ? (_openBlock(), _createBlock(_component_IconVolumeNotice, { key: 1 }))\n : (_openBlock(), _createBlock(_component_IconVolumeSmall, { key: 2 }))\n ])\n ]),\n _createElementVNode(\"div\", {\n class: \"volume-bar-wrap\",\n onMousedown: _cache[8] || (_cache[8] = ($event: any) => (handleMousedownVolumeBar())),\n onTouchstart: _cache[9] || (_cache[9] = ($event: any) => (handleMousedownVolumeBar())),\n onClick: _cache[10] || (_cache[10] = $event => handleClickVolumeBar($event))\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar\",\n ref_key: \"volumeBarRef\",\n ref: volumeBarRef\n }, [\n _createElementVNode(\"div\", {\n class: \"volume-bar-inner\",\n style: _normalizeStyle({ width: volumeBarWidth.value })\n }, _hoisted_8, 4)\n ], 512)\n ], 32)\n ])\n ]),\n _createElementVNode(\"span\", _hoisted_9, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(ptime.value), 1),\n _createTextVNode(\" / \"),\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(dtime.value), 1)\n ]),\n _createElementVNode(\"div\", {\n class: \"bar-wrap\",\n ref_key: \"playBarWrap\",\n ref: playBarWrap,\n onMousedown: _cache[11] || (_cache[11] = ($event: any) => (handleMousedownPlayBar())),\n onTouchstart: _cache[12] || (_cache[12] = ($event: any) => (handleMousedownPlayBar())),\n onMousemove: _cache[13] || (_cache[13] = $event => handleMousemovePlayBar($event)),\n onMouseenter: _cache[14] || (_cache[14] = ($event: any) => (playBarTimeVisible.value = true)),\n onMouseleave: _cache[15] || (_cache[15] = ($event: any) => (playBarTimeVisible.value = false))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bar-time\", { 'hidden': !playBarTimeVisible.value }]),\n style: _normalizeStyle({ left: playBarTimeLeft.value })\n }, _toDisplayString(playBarTime.value), 7),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", {\n class: \"loaded\",\n style: _normalizeStyle({ width: loadedBarWidth.value })\n }, null, 4),\n _createElementVNode(\"div\", {\n class: \"played\",\n style: _normalizeStyle({ width: playedBarWidth.value })\n }, _hoisted_14, 4)\n ])\n ], 544)\n ])\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./AudioPlayer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AudioPlayer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AudioPlayer.vue?vue&type=style&index=0&id=44037f56&scoped=true&lang=scss\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-44037f56\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, unref as _unref, withModifiers as _withModifiers, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveDirective as _resolveDirective, createElementBlock as _createElementBlock, withDirectives as _withDirectives, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTAudioElement } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\n\nimport AudioPlayer from './AudioPlayer.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n selectElement: { type: Function },\n contextmenus: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale, handleElementId } = storeToRefs(useMainStore())\nconst { viewportRatio } = storeToRefs(useSlidesStore())\n\nconst audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n})\nconst audioPlayerPosition = computed(() => {\n const canvasWidth = VIEWPORT_SIZE\n const canvasHeight = VIEWPORT_SIZE * viewportRatio.value\n\n const audioWidth = 280 / canvasScale.value\n const audioHeight = 50 / canvasScale.value\n\n const elWidth = props.elementInfo.width\n const elHeight = props.elementInfo.height\n const elLeft = props.elementInfo.left\n const elTop = props.elementInfo.top\n\n let left = 0\n let top = elHeight\n \n if (elLeft + audioWidth >= canvasWidth) left = elWidth - audioWidth\n if (elTop + elHeight + audioHeight >= canvasHeight) top = -audioHeight\n\n return {\n left: left + 'px',\n top: top + 'px',\n }\n})\n\nconst handleSelectElement = (e: MouseEvent | TouchEvent) => {\n if (props.elementInfo.lock) return\n e.stopPropagation()\n\n props.selectElement(e, props.elementInfo)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"editable-element-audio\", { 'lock': _ctx.elementInfo.lock }]),\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"element-content\",\n onMousedown: _cache[1] || (_cache[1] = $event => handleSelectElement($event)),\n onTouchstart: _cache[2] || (_cache[2] = $event => handleSelectElement($event))\n }, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: audioIconSize.value,\n color: _ctx.elementInfo.color,\n })\n }, null, 8, [\"style\"]),\n (_unref(handleElementId) === _ctx.elementInfo.id)\n ? (_openBlock(), _createBlock(AudioPlayer, {\n key: 0,\n class: \"audio-player\",\n style: _normalizeStyle({ ...audioPlayerPosition.value }),\n src: _ctx.elementInfo.src,\n loop: _ctx.elementInfo.loop,\n scale: _unref(canvasScale),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"style\", \"src\", \"loop\", \"scale\"]))\n : _createCommentVNode(\"\", true)\n ], 32)), [\n [_directive_contextmenu, _ctx.contextmenus]\n ])\n ], 4)\n ], 6))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=53bdc956&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53bdc956\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\"]\n\nimport { computed } from 'vue'\nimport { ElementTypes, type PPTElement } from '@/types/slides'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\n\nimport useLockElement from '@/hooks/useLockElement'\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useCombineElement from '@/hooks/useCombineElement'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\n\nimport { ElementOrderCommands, ElementAlignCommands } from '@/types/edit'\n\nimport ImageElement from '@/views/components/element/ImageElement/index.vue'\nimport TextElement from '@/views/components/element/TextElement/index.vue'\nimport ShapeElement from '@/views/components/element/ShapeElement/index.vue'\nimport LineElement from '@/views/components/element/LineElement/index.vue'\nimport ChartElement from '@/views/components/element/ChartElement/index.vue'\nimport TableElement from '@/views/components/element/TableElement/index.vue'\nimport LatexElement from '@/views/components/element/LatexElement/index.vue'\nimport VideoElement from '@/views/components/element/VideoElement/index.vue'\nimport AudioElement from '@/views/components/element/AudioElement/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditableElement',\n props: {\n elementInfo: {},\n elementIndex: {},\n isMultiSelect: { type: Boolean },\n selectElement: { type: Function },\n openLinkDialog: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst currentElementComponent = computed(() => {\n const elementTypeMap = {\n [ElementTypes.IMAGE]: ImageElement,\n [ElementTypes.TEXT]: TextElement,\n [ElementTypes.SHAPE]: ShapeElement,\n [ElementTypes.LINE]: LineElement,\n [ElementTypes.CHART]: ChartElement,\n [ElementTypes.TABLE]: TableElement,\n [ElementTypes.LATEX]: LatexElement,\n [ElementTypes.VIDEO]: VideoElement,\n [ElementTypes.AUDIO]: AudioElement,\n }\n return elementTypeMap[props.elementInfo.type] || null\n})\n\nconst { orderElement } = useOrderElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\nconst { combineElements, uncombineElements } = useCombineElement()\nconst { deleteElement } = useDeleteElement()\nconst { lockElement, unlockElement } = useLockElement()\nconst { copyElement, pasteElement, cutElement } = useCopyAndPasteElement()\nconst { selectAllElement } = useSelectAllElement()\n\nconst contextmenus = (): ContextmenuItem[] => {\n if (props.elementInfo.lock) {\n return [{\n text: '解锁', \n handler: () => unlockElement(props.elementInfo),\n }]\n }\n\n return [\n {\n text: '剪切',\n subText: 'Ctrl + X',\n handler: cutElement,\n },\n {\n text: '复制',\n subText: 'Ctrl + C',\n handler: copyElement,\n },\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteElement,\n },\n { divider: true },\n {\n text: '水平居中',\n handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL),\n children: [\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER), },\n { text: '水平居中', handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL) },\n { text: '左对齐', handler: () => alignElementToCanvas(ElementAlignCommands.LEFT) },\n { text: '右对齐', handler: () => alignElementToCanvas(ElementAlignCommands.RIGHT) },\n ],\n },\n {\n text: '垂直居中',\n handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL),\n children: [\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER) },\n { text: '垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL) },\n { text: '顶部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.TOP) },\n { text: '底部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.BOTTOM) },\n ],\n },\n { divider: true },\n {\n text: '置于顶层',\n disable: props.isMultiSelect && !props.elementInfo.groupId,\n handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP),\n children: [\n { text: '置于顶层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP) },\n { text: '上移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.UP) },\n ],\n },\n {\n text: '置于底层',\n disable: props.isMultiSelect && !props.elementInfo.groupId,\n handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM),\n children: [\n { text: '置于底层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM) },\n { text: '下移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.DOWN) },\n ],\n },\n { divider: true },\n {\n text: '设置链接',\n handler: props.openLinkDialog,\n },\n {\n text: props.elementInfo.groupId ? '取消组合' : '组合',\n subText: 'Ctrl + G',\n handler: props.elementInfo.groupId ? uncombineElements : combineElements,\n hide: !props.isMultiSelect,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllElement,\n },\n {\n text: '锁定',\n subText: 'Ctrl + L',\n handler: lockElement,\n },\n {\n text: '删除',\n subText: 'Delete',\n handler: deleteElement,\n },\n ]\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"editable-element\",\n ref: \"elementRef\",\n id: `editable-element-${_ctx.elementInfo.id}`,\n style: _normalizeStyle({\n zIndex: _ctx.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(currentElementComponent.value), {\n elementInfo: _ctx.elementInfo,\n selectElement: _ctx.selectElement,\n contextmenus: contextmenus\n }, null, 8, [\"elementInfo\", \"selectElement\"]))\n ], 12, _hoisted_1))\n}\n}\n\n})","\n\n","import script from \"./EditableElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./EditableElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MouseSelection',\n props: {\n top: {},\n left: {},\n width: {},\n height: {},\n quadrant: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(`mouse-selection quadrant-${_ctx.quadrant}`),\n style: _normalizeStyle({\n top: _ctx.top + 'px',\n left: _ctx.left + 'px',\n width: _ctx.width + 'px',\n height: _ctx.height + 'px',\n })\n }, null, 6))\n}\n}\n\n})","import script from \"./MouseSelection.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MouseSelection.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MouseSelection.vue?vue&type=style&index=0&id=2c5e1d42&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2c5e1d42\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-05484a24\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"grid-lines\" }\nconst _hoisted_2 = [\"d\", \"stroke\"]\n\nimport { computed } from 'vue'\nimport tinycolor from 'tinycolor2'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport type { SlideBackground } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'GridLines',\n setup(__props) {\n\nconst { canvasScale, gridLineSize } = storeToRefs(useMainStore())\nconst { currentSlide, viewportRatio } = storeToRefs(useSlidesStore())\n\nconst background = computed(() => currentSlide.value?.background)\n\n// 计算网格线的颜色,避免与背景的颜色太接近\nconst gridColor = computed(() => {\n const bgColor = background.value?.color || '#fff'\n const colorList = ['#000', '#fff']\n return tinycolor.mostReadable(bgColor, colorList, { includeFallbackColors: true }).setAlpha(.5).toRgbString()\n})\n\n// 网格路径\nconst path = computed(() => {\n const maxX = VIEWPORT_SIZE\n const maxY = VIEWPORT_SIZE * viewportRatio.value\n\n let p = ''\n for (let i = 0; i <= Math.floor(maxY / gridLineSize.value); i++) {\n p += `M0 ${i * gridLineSize.value} L${maxX} ${i * gridLineSize.value} `\n }\n for (let i = 0; i <= Math.floor(maxX / gridLineSize.value); i++) {\n p += `M${i * gridLineSize.value} 0 L${i * gridLineSize.value} ${maxY} `\n }\n return p\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [\n _createElementVNode(\"path\", {\n style: _normalizeStyle({\n transform: `scale(${_unref(canvasScale)})`,\n }),\n d: path.value,\n fill: \"none\",\n stroke: gridColor.value,\n \"stroke-width\": \"0.3\",\n \"stroke-dasharray\": \"5\"\n }, null, 12, _hoisted_2)\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./GridLines.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./GridLines.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./GridLines.vue?vue&type=style&index=0&id=05484a24&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-05484a24\"]])\n\nexport default __exports__","import { type Ref, computed } from 'vue'\nimport type { SlideBackground } from '@/types/slides'\n\n// 将页面背景数据转换为css样式\nexport default (background: Ref) => {\n const backgroundStyle = computed(() => {\n if (!background.value) return { backgroundColor: '#fff' }\n\n const {\n type,\n color,\n image,\n imageSize,\n gradientColor,\n gradientRotate,\n gradientType,\n } = background.value\n\n // 纯色背景\n if (type === 'solid') return { backgroundColor: color }\n\n // 背景图模式\n // 包括:背景图、背景大小,是否重复\n else if (type === 'image') {\n if (!image) return { backgroundColor: '#fff' }\n if (imageSize === 'repeat') {\n return {\n backgroundImage: `url(${image}`,\n backgroundRepeat: 'repeat',\n backgroundSize: 'contain',\n }\n }\n return {\n backgroundImage: `url(${image}`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: imageSize || 'cover',\n }\n }\n\n // 渐变色背景\n else if (type === 'gradient') {\n const rotate = gradientRotate || 0\n const color1 = gradientColor ? gradientColor[0] : '#fff'\n const color2 = gradientColor ? gradientColor[1] : '#fff'\n \n if (gradientType === 'radial') return { backgroundImage: `radial-gradient(${color1}, ${color2}` }\n return { backgroundImage: `linear-gradient(${rotate}deg, ${color1}, ${color2}` }\n }\n\n return { backgroundColor: '#fff' }\n })\n\n return {\n backgroundStyle,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { SlideBackground } from '@/types/slides'\nimport GridLines from './GridLines.vue'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ViewportBackground',\n setup(__props) {\n\nconst { gridLineSize } = storeToRefs(useMainStore())\nconst { currentSlide } = storeToRefs(useSlidesStore())\nconst background = computed(() => currentSlide.value?.background)\n\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"viewport-background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, [\n (_unref(gridLineSize))\n ? (_openBlock(), _createBlock(GridLines, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./ViewportBackground.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ViewportBackground.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ViewportBackground.vue?vue&type=style&index=0&id=b6b18502&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b6b18502\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\nimport type { AlignmentLineAxis } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AlignmentLine',\n props: {\n type: {},\n axis: {},\n length: {},\n canvasScale: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\n// 吸附对齐线的位置\nconst left = computed(() => props.axis.x * props.canvasScale + 'px')\nconst top = computed(() => props.axis.y * props.canvasScale + 'px')\n\n// 吸附对齐线的长度\nconst sizeStyle = computed(() => {\n if (props.type === 'vertical') return { height: props.length * props.canvasScale + 'px' }\n return { width: props.length * props.canvasScale + 'px' }\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"alignment-line\",\n style: _normalizeStyle({ left: left.value, top: top.value })\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['line', _ctx.type]),\n style: _normalizeStyle(sizeStyle.value)\n }, null, 6)\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./AlignmentLine.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./AlignmentLine.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./AlignmentLine.vue?vue&type=style&index=0&id=ed6fc00a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ed6fc00a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2963c74c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"ruler\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\n\ninterface ViewportStyles {\n top: number\n left: number\n width: number\n height: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Ruler',\n props: {\n viewportStyles: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst markerSize = computed(() => {\n return props.viewportStyles.width * canvasScale.value / 10\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"h\",\n style: _normalizeStyle({\n width: _ctx.viewportStyles.width * _unref(canvasScale) + 'px',\n left: _ctx.viewportStyles.left + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(20, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': markerSize.value < 36, 'omit': markerSize.value < 72 }]),\n key: `marker-100-${marker}`\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(marker), 1)\n ], 2)\n }), 64))\n ], 4),\n _createElementVNode(\"div\", {\n class: \"v\",\n style: _normalizeStyle({\n height: _ctx.viewportStyles.height * _unref(canvasScale) + 'px',\n top: _ctx.viewportStyles.top + 'px',\n })\n }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(20, (marker) => {\n return _createElementVNode(\"div\", {\n class: _normalizeClass([\"ruler-marker-100\", { 'hide': markerSize.value < 36, 'omit': markerSize.value < 72 }]),\n key: marker,\n style: _normalizeStyle({ height: markerSize.value + 'px' })\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(marker), 1)\n ], 6)\n }), 64))\n ], 4)\n ]))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./Ruler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Ruler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Ruler.vue?vue&type=style&index=0&id=2963c74c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2963c74c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-85b0bbaa\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\"]\n\nimport { computed, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useKeyboardStore } from '@/store'\nimport type { CreateElementSelectionData } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementCreateSelection',\n emits: [\"created\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst mainStore = useMainStore()\nconst { creatingElement } = storeToRefs(mainStore)\nconst { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\n\nconst start = ref<[number, number]>()\nconst end = ref<[number, number]>()\n\nconst selectionRef = ref()\nconst offset = ref({\n x: 0,\n y: 0,\n})\nonMounted(() => {\n if (!selectionRef.value) return\n const { x, y } = selectionRef.value.getBoundingClientRect()\n offset.value = { x, y }\n})\n\n// 鼠标拖动创建元素生成位置大小\n// 获取范围的起始位置和终点位置\nconst createSelection = (e: MouseEvent) => {\n let isMouseDown = true\n\n const startPageX = e.pageX\n const startPageY = e.pageY\n start.value = [startPageX, startPageY]\n\n document.onmousemove = e => {\n if (!creatingElement.value || !isMouseDown) return\n\n let currentPageX = e.pageX\n let currentPageY = e.pageY\n\n // 按住Ctrl键或者Shift键时:\n // 对于非线条元素需要锁定宽高比例,对于线条元素需要锁定水平或垂直方向\n if (ctrlOrShiftKeyActive.value) {\n const moveX = currentPageX - startPageX\n const moveY = currentPageY - startPageY\n\n // 水平和垂直方向的拖动距离,后面以拖动距离较大的方向为基础计算另一方向的数据\n const absX = Math.abs(moveX)\n const absY = Math.abs(moveY)\n\n if (creatingElement.value.type === 'shape') {\n\n // 判断是否为反向拖动:从左上到右下为正向操作,此外所有情况都是反向操作\n const isOpposite = (moveY > 0 && moveX < 0) || (moveY < 0 && moveX > 0)\n\n if (absX > absY) {\n currentPageY = isOpposite ? startPageY - moveX : startPageY + moveX\n }\n else {\n currentPageX = isOpposite ? startPageX - moveY : startPageX + moveY\n }\n }\n\n else if (creatingElement.value.type === 'line') {\n if (absX > absY) currentPageY = startPageY\n else currentPageX = startPageX\n }\n }\n\n end.value = [currentPageX, currentPageY]\n }\n\n document.onmouseup = e => {\n document.onmousemove = null\n document.onmouseup = null\n\n if (e.button === 2) {\n setTimeout(() => mainStore.setCreatingElement(null), 0)\n return\n }\n\n isMouseDown = false\n\n const endPageX = e.pageX\n const endPageY = e.pageY\n\n const minSize = 30\n\n if (\n creatingElement.value?.type === 'line' &&\n (Math.abs(endPageX - startPageX) >= minSize || Math.abs(endPageY - startPageY) >= minSize)\n ) {\n emit('created', {\n start: start.value!,\n end: end.value!,\n })\n }\n else if (\n creatingElement.value?.type !== 'line' &&\n (Math.abs(endPageX - startPageX) >= minSize && Math.abs(endPageY - startPageY) >= minSize)\n ) {\n emit('created', {\n start: start.value!,\n end: end.value!,\n })\n }\n else {\n const defaultSize = 200\n const minX = Math.min(endPageX, startPageX)\n const minY = Math.min(endPageY, startPageY)\n const maxX = Math.max(endPageX, startPageX)\n const maxY = Math.max(endPageY, startPageY)\n const offsetX = maxX - minX >= minSize ? maxX - minX : defaultSize\n const offsetY = maxY - minY >= minSize ? maxY - minY : defaultSize\n emit('created', {\n start: [minX, minY],\n end: [minX + offsetX, minY + offsetY],\n })\n }\n }\n}\n\n// 绘制线条的路径相关数据(仅当绘制元素类型为线条时使用)\nconst lineData = computed(() => {\n if (!start.value || !end.value) return null\n if (!creatingElement.value || creatingElement.value.type !== 'line') return null\n\n const [_startX, _startY] = start.value\n const [_endX, _endY] = end.value\n const minX = Math.min(_startX, _endX)\n const maxX = Math.max(_startX, _endX)\n const minY = Math.min(_startY, _endY)\n const maxY = Math.max(_startY, _endY)\n\n const svgWidth = maxX - minX >= 24 ? maxX - minX : 24\n const svgHeight = maxY - minY >= 24 ? maxY - minY : 24\n\n const startX = _startX === minX ? 0 : maxX - minX\n const startY = _startY === minY ? 0 : maxY - minY\n const endX = _endX === minX ? 0 : maxX - minX\n const endY = _endY === minY ? 0 : maxY - minY\n\n const path = `M${startX}, ${startY} L${endX}, ${endY}`\n\n return {\n svgWidth,\n svgHeight,\n startX,\n startY,\n endX,\n endY,\n path,\n }\n})\n\n// 根据生成范围的起始位置和终点位置,计算元素创建时的位置和大小\nconst position = computed(() => {\n if (!start.value || !end.value) return {}\n\n const [startX, startY] = start.value\n const [endX, endY] = end.value\n const minX = Math.min(startX, endX)\n const maxX = Math.max(startX, endX)\n const minY = Math.min(startY, endY)\n const maxY = Math.max(startY, endY)\n\n const width = maxX - minX\n const height = maxY - minY\n\n return {\n left: minX - offset.value.x + 'px',\n top: minY - offset.value.y + 'px',\n width: width + 'px',\n height: height + 'px',\n }\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"element-create-selection\",\n ref_key: \"selectionRef\",\n ref: selectionRef,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => createSelection($event), [\"stop\"])),\n onContextmenu: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\",\"prevent\"]))\n }, [\n (start.value && end.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(['selection', _unref(creatingElement)?.type]),\n style: _normalizeStyle(position.value)\n }, [\n (_unref(creatingElement)?.type === 'line' && lineData.value)\n ? (_openBlock(), _createElementBlock(\"svg\", {\n key: 0,\n overflow: \"visible\",\n width: lineData.value.svgWidth,\n height: lineData.value.svgHeight\n }, [\n _createElementVNode(\"path\", {\n d: lineData.value.path,\n stroke: \"#d14424\",\n fill: \"none\",\n \"stroke-width\": \"2\"\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ], 6))\n : _createCommentVNode(\"\", true)\n ], 544))\n}\n}\n\n})","\n\n\n\n","import script from \"./ElementCreateSelection.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementCreateSelection.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementCreateSelection.vue?vue&type=style&index=0&id=85b0bbaa&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-85b0bbaa\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6dc9876e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { overflow: \"visible\" }\nconst _hoisted_2 = [\"d\", \"fill\"]\n\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useKeyboardStore, useMainStore, useSlidesStore } from '@/store'\nimport type { CreateCustomShapeData } from '@/types/edit'\nimport { KEYS } from '@/configs/hotkey'\nimport message from '@/utils/message'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapeCreateCanvas',\n emits: [\"created\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\nconst mainStore = useMainStore()\nconst { ctrlOrShiftKeyActive } = storeToRefs(useKeyboardStore())\nconst { theme } = storeToRefs(useSlidesStore())\n\nconst shapeCanvasRef = ref()\nconst isMouseDown = ref(false)\nconst offset = ref({\n x: 0,\n y: 0,\n})\nonMounted(() => {\n if (!shapeCanvasRef.value) return\n const { x, y } = shapeCanvasRef.value.getBoundingClientRect()\n offset.value = { x, y }\n})\n\nconst mousePosition = ref<[number, number] | null>(null)\nconst points = ref<[number, number][]>([])\nconst closed = ref(false)\n\nconst getPoint = (e: MouseEvent, custom = false) => {\n let pageX = e.pageX - offset.value.x\n let pageY = e.pageY - offset.value.y\n\n if (custom) return { pageX, pageY }\n\n if (ctrlOrShiftKeyActive.value && points.value.length) {\n const [lastPointX, lastPointY] = points.value[points.value.length - 1]\n if (Math.abs(lastPointX - pageX) - Math.abs(lastPointY - pageY) > 0) {\n pageY = lastPointY\n }\n else pageX = lastPointX\n }\n return { pageX, pageY }\n}\n\nconst updateMousePosition = (e: MouseEvent) => {\n if (isMouseDown.value) {\n const { pageX, pageY } = getPoint(e, true)\n points.value.push([pageX, pageY])\n mousePosition.value = null\n return\n }\n\n const { pageX, pageY } = getPoint(e)\n mousePosition.value = [pageX, pageY]\n\n if (points.value.length >= 2) {\n const [firstPointX, firstPointY] = points.value[0]\n if (Math.abs(firstPointX - pageX) < 5 && Math.abs(firstPointY - pageY) < 5) {\n closed.value = true\n }\n else closed.value = false\n }\n else closed.value = false\n}\n\nconst path = computed(() => {\n let d = ''\n for (let i = 0; i < points.value.length; i++) {\n const point = points.value[i]\n if (i === 0) d += `M ${point[0]} ${point[1]} `\n else d += `L ${point[0]} ${point[1]} `\n }\n if (points.value.length && mousePosition.value) {\n d += `L ${mousePosition.value[0]} ${mousePosition.value[1]}`\n }\n return d\n})\n\nconst getCreateData = (close = true) => {\n const xList = points.value.map(item => item[0])\n const yList = points.value.map(item => item[1])\n const minX = Math.min(...xList)\n const minY = Math.min(...yList)\n const maxX = Math.max(...xList)\n const maxY = Math.max(...yList)\n\n const formatedPoints = points.value.map(point => {\n return [point[0] - minX, point[1] - minY]\n })\n\n let path = ''\n for (let i = 0; i < formatedPoints.length; i++) {\n const point = formatedPoints[i]\n if (i === 0) path += `M ${point[0]} ${point[1]} `\n else path += `L ${point[0]} ${point[1]} `\n }\n if (close) path += 'Z'\n\n const start: [number, number] = [minX + offset.value.x, minY + offset.value.y]\n const end: [number, number] = [maxX + offset.value.x, maxY + offset.value.y]\n const viewBox: [number, number] = [maxX - minX, maxY - minY]\n\n return {\n start,\n end,\n path,\n viewBox,\n }\n}\n\nconst addPoint = (e: MouseEvent) => {\n const { pageX, pageY } = getPoint(e)\n isMouseDown.value = true\n\n if (closed.value) emit('created', getCreateData())\n else points.value.push([pageX, pageY])\n\n document.onmouseup = () => {\n isMouseDown.value = false\n }\n}\n\nconst close = () => {\n mainStore.setCreatingCustomShapeState(false)\n}\n\nconst create = () => {\n emit('created', {\n ...getCreateData(false),\n fill: 'rgba(0, 0, 0, 0)',\n outline: {\n width: 2,\n color: theme.value.themeColor,\n style: 'solid',\n },\n })\n close()\n}\n\nconst keydownListener = (e: KeyboardEvent) => {\n const key = e.key.toUpperCase()\n if (key === KEYS.ESC) close()\n if (key === KEYS.ENTER) create()\n}\nonMounted(() => {\n message.success('点击绘制任意形状,首尾闭合完成绘制,按 ESC 键或鼠标右键取消,按 ENTER 键提前完成', {\n duration: 5000,\n })\n document.addEventListener('keydown', keydownListener)\n})\nonUnmounted(() => document.removeEventListener('keydown', keydownListener))\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"shape-create-canvas\",\n ref_key: \"shapeCanvasRef\",\n ref: shapeCanvasRef,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => addPoint($event), [\"stop\"])),\n onMousemove: _cache[1] || (_cache[1] = $event => updateMousePosition($event)),\n onContextmenu: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (close()), [\"stop\",\"prevent\"]))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [\n _createElementVNode(\"path\", {\n d: path.value,\n stroke: \"#d14424\",\n fill: closed.value ? 'rgba(226, 83, 77, 0.15)' : 'none',\n \"stroke-width\": \"2\"\n }, null, 8, _hoisted_2)\n ]))\n ], 544))\n}\n}\n\n})","\n\n\n\n","import script from \"./ShapeCreateCanvas.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeCreateCanvas.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapeCreateCanvas.vue?vue&type=style&index=0&id=6dc9876e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6dc9876e\"]])\n\nexport default __exports__","import { computed, type Ref } from 'vue'\nimport { OperateResizeHandlers, OperateBorderLines } from '@/types/edit'\n\nexport default (width: Ref, height: Ref) => {\n // 元素缩放点\n const resizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.LEFT_TOP, style: {} },\n { direction: OperateResizeHandlers.TOP, style: {left: width.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT_TOP, style: {left: width.value + 'px'} },\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.LEFT_BOTTOM, style: {top: height.value + 'px'} },\n { direction: OperateResizeHandlers.BOTTOM, style: {left: width.value / 2 + 'px', top: height.value + 'px'} },\n { direction: OperateResizeHandlers.RIGHT_BOTTOM, style: {left: width.value + 'px', top: height.value + 'px'} },\n ]\n })\n\n // 文本元素缩放点\n const textElementResizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\n ]\n })\n const verticalTextElementResizeHandlers = computed(() => {\n return [\n { direction: OperateResizeHandlers.TOP, style: {left: width.value / 2 + 'px'} },\n { direction: OperateResizeHandlers.BOTTOM, style: {left: width.value / 2 + 'px', top: height.value + 'px'} },\n ]\n })\n\n // 元素选中边框线\n const borderLines = computed(() => {\n return [\n { type: OperateBorderLines.T, style: {width: width.value + 'px'} },\n { type: OperateBorderLines.B, style: {top: height.value + 'px', width: width.value + 'px'} },\n { type: OperateBorderLines.L, style: {height: height.value + 'px'} },\n { type: OperateBorderLines.R, style: {left: width.value + 'px', height: height.value + 'px'} },\n ]\n })\n\n return {\n resizeHandlers,\n textElementResizeHandlers,\n verticalTextElementResizeHandlers,\n borderLines,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\nimport type { OperateResizeHandlers } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ResizeHandler',\n props: {\n type: {},\n rotate: { default: 0 }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst rotateClassName = computed(() => {\n const prefix = 'rotate-'\n const rotate = props.rotate\n if (rotate > -22.5 && rotate <= 22.5) return prefix + 0\n else if (rotate > 22.5 && rotate <= 67.5) return prefix + 45\n else if (rotate > 67.5 && rotate <= 112.5) return prefix + 90\n else if (rotate > 112.5 && rotate <= 157.5) return prefix + 135\n else if (rotate > 157.5 || rotate <= -157.5) return prefix + 0\n else if (rotate > -157.5 && rotate <= -112.5) return prefix + 45\n else if (rotate > -112.5 && rotate <= -67.5) return prefix + 90\n else if (rotate > -67.5 && rotate <= -22.5) return prefix + 135\n return prefix + 0\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['resize-handler', rotateClassName.value, _ctx.type])\n }, null, 2))\n}\n}\n\n})","\n\n\n\n","import script from \"./ResizeHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ResizeHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ResizeHandler.vue?vue&type=style&index=0&id=1e66197f&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1e66197f\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport type { OperateBorderLines } from '@/types/edit'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BorderLine',\n props: {\n type: {},\n isWide: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['border-line', _ctx.type, { 'wide': _ctx.isWide }])\n }, null, 2))\n}\n}\n\n})","import script from \"./BorderLine.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BorderLine.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BorderLine.vue?vue&type=style&index=0&id=8346cf6c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8346cf6c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { computed, ref, watchEffect } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport { getElementListRange } from '@/utils/element'\nimport type { OperateResizeHandlers, MultiSelectRange } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MultiSelectOperate',\n props: {\n elementList: {},\n scaleMultiElement: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { activeElementIdList, canvasScale } = storeToRefs(useMainStore())\n\nconst localActiveElementList = computed(() => props.elementList.filter(el => activeElementIdList.value.includes(el.id)))\n\nconst range = ref({\n minX: 0,\n maxX: 0,\n minY: 0,\n maxY: 0,\n})\n\n// 根据多选元素整体在画布中的范围,计算边框线和缩放点的位置信息\nconst width = computed(() => (range.value.maxX - range.value.minX) * canvasScale.value)\nconst height = computed(() => (range.value.maxY - range.value.minY) * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(width, height)\n\n// 计算多选元素整体在画布中的范围\nconst setRange = () => {\n const { minX, maxX, minY, maxY } = getElementListRange(localActiveElementList.value)\n range.value = { minX, maxX, minY, maxY }\n}\nwatchEffect(setRange)\n\n// 禁用多选状态下缩放:仅未旋转的图片和形状可以在多选状态下缩放\nconst disableResize = computed(() => {\n return localActiveElementList.value.some(item => {\n if (\n (item.type === 'image' || item.type === 'shape') && \n !item.rotate\n ) return false\n return true\n })\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"multi-select-operate\",\n style: _normalizeStyle({\n left: range.value.minX * _unref(canvasScale) + 'px',\n top: range.value.minY * _unref(canvasScale) + 'px',\n })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (!disableResize.value)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n key: point.direction,\n type: point.direction,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers(($event: any) => (_ctx.scaleMultiElement($event, range.value, point.direction)), [\"stop\"])\n }, null, 8, [\"type\", \"style\", \"onMousedown\"]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./MultiSelectOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MultiSelectOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MultiSelectOperate.vue?vue&type=style&index=0&id=97dc9b9a&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-97dc9b9a\"]])\n\nexport default __exports__","\n\n\n\n","import { render } from \"./RotateHandler.vue?vue&type=template&id=b99d8dae&scoped=true\"\nconst script = {}\n\nimport \"./RotateHandler.vue?vue&type=style&index=0&id=b99d8dae&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b99d8dae\"]])\n\nexport default __exports__","\r\n\r\n\r\n\r\n\r\n\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nimport { computed } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore } from '@/store'\r\nimport type { PPTImageElement } from '@/types/slides'\r\nimport type { OperateResizeHandlers } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\n\r\nconst __default__ = {\r\n inheritAttrs: false,\r\n}\r\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'ImageElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function }\n },\n setup(__props: any) {\n\r\nconst props = __props\r\n\r\nconst { canvasScale, clipingImageElementId } = storeToRefs(useMainStore())\r\n\r\nconst isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\r\n\r\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"image-element-operate\", { 'cliping': isCliping.value }])\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: scaleWidth.value / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.rotateElement($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 2))\n}\n}\n\n})","import script from \"./ImageElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ImageElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ImageElementOperate.vue?vue&type=style&index=0&id=7bcad5a9&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7bcad5a9\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"text-element-operate\" }\n\nimport { computed } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore } from '@/store'\r\nimport type { PPTTextElement } from '@/types/slides'\r\nimport type { OperateResizeHandlers } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\n\r\nconst __default__ = {\r\n inheritAttrs: false,\r\n}\r\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'TextElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function }\n },\n setup(__props: any) {\n\r\nconst props = __props\r\n\r\nconst { canvasScale } = storeToRefs(useMainStore())\r\n\r\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n\r\nconst { textElementResizeHandlers, verticalTextElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\nconst resizeHandlers = computed(() => props.elementInfo.vertical ? verticalTextElementResizeHandlers.value : textElementResizeHandlers.value)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(resizeHandlers.value, (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: scaleWidth.value / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.rotateElement($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\r\n\r\n\r\n\r\n","import script from \"./TextElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TextElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52dcdbf8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-element-operate\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTShapeElement } from '@/types/slides'\nimport type { OperateResizeHandlers } from '@/types/edit'\nimport { SHAPE_PATH_FORMULAS } from '@/configs/shapes'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'ShapeElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function },\n moveShapeKeypoint: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nconst keypointStyle = computed(() => {\n if (!props.elementInfo.pathFormula || props.elementInfo.keypoint === undefined) return {}\n\n const pathFormula = SHAPE_PATH_FORMULAS[props.elementInfo.pathFormula]\n if ('editable' in pathFormula) {\n const keypointPos = pathFormula.getBaseSize(props.elementInfo.width, props.elementInfo.height) * props.elementInfo.keypoint\n if (pathFormula.relative === 'left') return { left: keypointPos * canvasScale.value + 'px' }\n if (pathFormula.relative === 'right') return { left: (props.elementInfo.width - keypointPos) * canvasScale.value + 'px' }\n if (pathFormula.relative === 'center') return { left: (props.elementInfo.width - keypointPos) / 2 * canvasScale.value + 'px' }\n if (pathFormula.relative === 'top') return { top: keypointPos * canvasScale.value + 'px' }\n if (pathFormula.relative === 'bottom') return { top: (props.elementInfo.height - keypointPos) * canvasScale.value + 'px' }\n }\n return {}\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: scaleWidth.value / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.rotateElement($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 8, [\"style\"]),\n (_ctx.elementInfo.keypoint !== undefined)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"operate-keypoint-handler\",\n style: _normalizeStyle(keypointStyle.value),\n onMousedown: _cache[1] || (_cache[1] = _withModifiers($event => _ctx.moveShapeKeypoint($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 36))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n\n\n","import script from \"./ShapeElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapeElementOperate.vue?vue&type=style&index=0&id=52dcdbf8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52dcdbf8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle, createBlock as _createBlock, unref as _unref, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3aa5cc44\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"line-element-operate\" }\nconst _hoisted_2 = [\"width\", \"height\", \"stroke\"]\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_5 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_6 = [\"x1\", \"y1\", \"x2\", \"y2\"]\nconst _hoisted_7 = [\"x1\", \"y1\", \"x2\", \"y2\"]\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTLineElement } from '@/types/slides'\nimport { OperateLineHandlers } from '@/types/edit'\n\nimport ResizeHandler from './ResizeHandler.vue'\n\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'LineElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n dragLineElement: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst svgWidth = computed(() => Math.max(props.elementInfo.start[0], props.elementInfo.end[0]))\nconst svgHeight = computed(() => Math.max(props.elementInfo.start[1], props.elementInfo.end[1]))\n\nconst resizeHandlers = computed(() => {\n const handlers = [\n {\n handler: OperateLineHandlers.START,\n style: {\n left: props.elementInfo.start[0] * canvasScale.value + 'px',\n top: props.elementInfo.start[1] * canvasScale.value + 'px',\n }\n },\n {\n handler: OperateLineHandlers.END,\n style: {\n left: props.elementInfo.end[0] * canvasScale.value + 'px',\n top: props.elementInfo.end[1] * canvasScale.value + 'px',\n }\n },\n ]\n\n if (props.elementInfo.curve || props.elementInfo.broken) {\n const ctrlHandler = (props.elementInfo.curve || props.elementInfo.broken) as [number, number]\n\n handlers.push({\n handler: OperateLineHandlers.C,\n style: {\n left: ctrlHandler[0] * canvasScale.value + 'px',\n top: ctrlHandler[1] * canvasScale.value + 'px',\n }\n })\n }\n else if (props.elementInfo.cubic) {\n const [ctrlHandler1, ctrlHandler2] = props.elementInfo.cubic\n handlers.push({\n handler: OperateLineHandlers.C1,\n style: {\n left: ctrlHandler1[0] * canvasScale.value + 'px',\n top: ctrlHandler1[1] * canvasScale.value + 'px',\n }\n })\n handlers.push({\n handler: OperateLineHandlers.C2,\n style: {\n left: ctrlHandler2[0] * canvasScale.value + 'px',\n top: ctrlHandler2[1] * canvasScale.value + 'px',\n }\n })\n }\n\n return handlers\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(resizeHandlers.value, (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.handler,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.dragLineElement($event, _ctx.elementInfo, point.handler), [\"stop\"])\n }, null, 8, [\"style\", \"onMousedown\"]))\n }), 128)),\n (_openBlock(), _createElementBlock(\"svg\", {\n width: svgWidth.value || 1,\n height: svgHeight.value || 1,\n stroke: _ctx.elementInfo.color,\n overflow: \"visible\",\n style: _normalizeStyle({ transform: `scale(${_unref(canvasScale)})` })\n }, [\n (_ctx.elementInfo.curve)\n ? (_openBlock(), _createElementBlock(\"g\", _hoisted_3, [\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: _ctx.elementInfo.start[0],\n y1: _ctx.elementInfo.start[1],\n x2: _ctx.elementInfo.curve[0],\n y2: _ctx.elementInfo.curve[1]\n }, null, 8, _hoisted_4),\n _createElementVNode(\"line\", {\n class: \"anchor-line\",\n x1: _ctx.elementInfo.end[0],\n y1: _ctx.elementInfo.end[1],\n x2: _ctx.elementInfo.curve[0],\n y2: _ctx.elementInfo.curve[1]\n }, null, 8, _hoisted_5)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.cubic)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 1 }, _renderList(_ctx.elementInfo.cubic, (item, index) => {\n return (_openBlock(), _createElementBlock(\"g\", { key: index }, [\n (index === 0)\n ? (_openBlock(), _createElementBlock(\"line\", {\n key: 0,\n class: \"anchor-line\",\n x1: _ctx.elementInfo.start[0],\n y1: _ctx.elementInfo.start[1],\n x2: item[0],\n y2: item[1]\n }, null, 8, _hoisted_6))\n : _createCommentVNode(\"\", true),\n (index === 1)\n ? (_openBlock(), _createElementBlock(\"line\", {\n key: 1,\n class: \"anchor-line\",\n x1: _ctx.elementInfo.end[0],\n y1: _ctx.elementInfo.end[1],\n x2: item[0],\n y2: item[1]\n }, null, 8, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_2))\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n\n\n","import script from \"./LineElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LineElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LineElementOperate.vue?vue&type=style&index=0&id=3aa5cc44&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3aa5cc44\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"table-element-operate\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTTableElement } from '@/types/slides'\nimport type { OperateResizeHandlers } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'TableElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst outlineWidth = computed(() => props.elementInfo.outline.width || 1)\n\nconst scaleWidth = computed(() => (props.elementInfo.width + outlineWidth.value) * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\n\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n _createVNode(RotateHandler, {\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: scaleWidth.value / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.rotateElement($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 8, [\"style\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./TableElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TableElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createBlock as _createBlock, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"common-element-operate\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore } from '@/store'\nimport type { PPTVideoElement, PPTLatexElement, PPTAudioElement, PPTChartElement } from '@/types/slides'\nimport type { OperateResizeHandlers } from '@/types/edit'\nimport useCommonOperate from '../hooks/useCommonOperate'\n\nimport RotateHandler from './RotateHandler.vue'\nimport ResizeHandler from './ResizeHandler.vue'\nimport BorderLine from './BorderLine.vue'\n\ntype PPTElement = PPTVideoElement | PPTLatexElement | PPTAudioElement | PPTChartElement\n\n\nconst __default__ = {\n inheritAttrs: false,\n}\n\nexport default /*#__PURE__*/_defineComponent({\n ...__default__,\n __name: 'CommonElementOperate',\n props: {\n elementInfo: {},\n handlerVisible: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { canvasScale } = storeToRefs(useMainStore())\n\nconst scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\nconst scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\nconst { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\n\nconst cannotRotate = computed(() => ['chart', 'video', 'audio'].includes(props.elementInfo.type))\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(borderLines), (line) => {\n return (_openBlock(), _createBlock(BorderLine, {\n class: \"operate-border-line\",\n key: line.type,\n type: line.type,\n style: _normalizeStyle(line.style)\n }, null, 8, [\"type\", \"style\"]))\n }), 128)),\n (_ctx.handlerVisible)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(resizeHandlers), (point) => {\n return (_openBlock(), _createBlock(ResizeHandler, {\n class: \"operate-resize-handler\",\n key: point.direction,\n type: point.direction,\n rotate: _ctx.elementInfo.rotate,\n style: _normalizeStyle(point.style),\n onMousedown: _withModifiers($event => _ctx.scaleElement($event, _ctx.elementInfo, point.direction), [\"stop\"])\n }, null, 8, [\"type\", \"rotate\", \"style\", \"onMousedown\"]))\n }), 128)),\n (!cannotRotate.value)\n ? (_openBlock(), _createBlock(RotateHandler, {\n key: 0,\n class: \"operate-rotate-handler\",\n style: _normalizeStyle({ left: scaleWidth.value / 2 + 'px' }),\n onMousedown: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.rotateElement($event, _ctx.elementInfo), [\"stop\"]))\n }, null, 8, [\"style\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./CommonElementOperate.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CommonElementOperate.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useSlidesStore } from '@/store'\nimport type { PPTElement, PPTElementLink } from '@/types/slides'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\nimport message from '@/utils/message'\n\nexport default () => {\n const slidesStore = useSlidesStore()\n\n const { addHistorySnapshot } = useHistorySnapshot()\n\n const setLink = (handleElement: PPTElement, link: PPTElementLink) => {\n const linkRegExp = /^(https?):\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+([\\w\\-.,@?^=%&:\\/~+#]*[\\w\\-@?^=%&\\/~+#])?$/\n if (link.type === 'web' && !linkRegExp.test(link.target)) {\n message.error('不是正确的网页链接地址')\n return false\n }\n if (link.type === 'slide' && !link.target) {\n message.error('请先选择链接目标')\n return false\n }\n const props = { link }\n slidesStore.updateElement({ id: handleElement.id, props })\n addHistorySnapshot()\n\n return true\n }\n\n const removeLink = (handleElement: PPTElement) => {\n slidesStore.removeElementProps({ id: handleElement.id, propName: 'link' })\n addHistorySnapshot()\n }\n\n return {\n setLink,\n removeLink,\n }\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Divider',\n props: {\n type: { default: 'horizontal' },\n margin: { default: 0 }\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(['divider', _ctx.type]),\n style: _normalizeStyle({\n margin: _ctx.type === 'horizontal' ? `${_ctx.margin || 24}px 0` : `0 ${_ctx.margin || 8}px`\n })\n }, null, 6))\n}\n}\n\n})","import script from \"./Divider.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Divider.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Divider.vue?vue&type=style&index=0&id=6b66cde8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6b66cde8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-316c4664\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"href\"]\nconst _hoisted_2 = { class: \"btns\" }\n\nimport { computed } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement, PPTElementLink } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\nimport Divider from '@/components/Divider.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinkHandler',\n props: {\n elementInfo: {},\n link: {},\n openLinkDialog: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { canvasScale } = storeToRefs(mainStore)\nconst { slides } = storeToRefs(slidesStore)\nconst { removeLink } = useLink()\nconst height = computed(() => props.elementInfo.type === 'line' ? 0 : props.elementInfo.height)\n\nconst turnTarget = (slideId: string) => {\n const targetIndex = slides.value.findIndex(item => item.id === slideId)\n if (targetIndex !== -1) {\n mainStore.setActiveElementIdList([])\n slidesStore.updateSlideIndex(targetIndex)\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"link-handler\",\n style: _normalizeStyle({ top: height.value * _unref(canvasScale) + 10 + 'px' })\n }, [\n (_ctx.link.type === 'web')\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n class: \"link\",\n href: _ctx.link.target,\n target: \"_blank\"\n }, _toDisplayString(_ctx.link.target), 9, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"a\", {\n key: 1,\n class: \"link\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (turnTarget(_ctx.link.target)))\n }, \"幻灯片页面 \" + _toDisplayString(_ctx.link.target), 1)),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.openLinkDialog()))\n }, \"更换\"),\n _createVNode(Divider, { type: \"vertical\" }),\n _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_unref(removeLink)(_ctx.elementInfo)))\n }, \"移除\")\n ])\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./LinkHandler.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinkHandler.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinkHandler.vue?vue&type=style&index=0&id=316c4664&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-316c4664\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ec1ff35\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"animation-index\"\n}\n\nimport { computed } from 'vue'\r\nimport { storeToRefs } from 'pinia'\r\nimport { useMainStore, useSlidesStore } from '@/store'\r\nimport {\r\n ElementTypes,\r\n type PPTElement,\r\n type PPTLineElement,\r\n type PPTVideoElement,\r\n type PPTAudioElement,\r\n type PPTShapeElement,\r\n type PPTChartElement,\r\n} from '@/types/slides'\r\nimport type { OperateLineHandlers, OperateResizeHandlers } from '@/types/edit'\r\n\r\nimport ImageElementOperate from './ImageElementOperate.vue'\r\nimport TextElementOperate from './TextElementOperate.vue'\r\nimport ShapeElementOperate from './ShapeElementOperate.vue'\r\nimport LineElementOperate from './LineElementOperate.vue'\r\nimport TableElementOperate from './TableElementOperate.vue'\r\nimport CommonElementOperate from './CommonElementOperate.vue'\r\nimport LinkHandler from './LinkHandler.vue'\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n elementInfo: {},\n isSelected: { type: Boolean },\n isActive: { type: Boolean },\n isActiveGroupElement: { type: Boolean },\n isMultiSelect: { type: Boolean },\n rotateElement: { type: Function },\n scaleElement: { type: Function },\n dragLineElement: { type: Function },\n moveShapeKeypoint: { type: Function },\n openLinkDialog: { type: Function }\n },\n setup(__props: any) {\n\r\nconst props = __props\r\n\r\nconst { canvasScale, toolbarState } = storeToRefs(useMainStore())\r\nconst { formatedAnimations } = storeToRefs(useSlidesStore())\r\n\r\nconst currentOperateComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: ImageElementOperate,\r\n [ElementTypes.TEXT]: TextElementOperate,\r\n [ElementTypes.SHAPE]: ShapeElementOperate,\r\n [ElementTypes.LINE]: LineElementOperate,\r\n [ElementTypes.TABLE]: TableElementOperate,\r\n [ElementTypes.CHART]: CommonElementOperate,\r\n [ElementTypes.LATEX]: CommonElementOperate,\r\n [ElementTypes.VIDEO]: CommonElementOperate,\r\n [ElementTypes.AUDIO]: CommonElementOperate,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n})\r\n\r\nconst elementIndexListInAnimation = computed(() => {\r\n const indexList = []\r\n for (let i = 0; i < formatedAnimations.value.length; i++) {\r\n const elIds = formatedAnimations.value[i].animations.map(item => item.elId)\r\n if (elIds.includes(props.elementInfo.id)) indexList.push(i)\r\n }\r\n return indexList\r\n})\r\n\r\nconst rotate = computed(() => 'rotate' in props.elementInfo ? props.elementInfo.rotate : 0)\r\nconst height = computed(() => 'height' in props.elementInfo ? props.elementInfo.height : 0)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"operate\", { 'multi-select': _ctx.isMultiSelect && !_ctx.isActive }]),\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top * _unref(canvasScale) + 'px',\r\n left: _ctx.elementInfo.left * _unref(canvasScale) + 'px',\r\n transform: `rotate(${rotate.value}deg)`,\r\n transformOrigin: `${_ctx.elementInfo.width * _unref(canvasScale) / 2}px ${height.value * _unref(canvasScale) / 2}px`,\r\n })\n }, [\n (_ctx.isSelected)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(currentOperateComponent.value), {\n key: 0,\n elementInfo: _ctx.elementInfo,\n handlerVisible: !_ctx.elementInfo.lock && (_ctx.isActiveGroupElement || !_ctx.isMultiSelect),\n rotateElement: _ctx.rotateElement,\n scaleElement: _ctx.scaleElement,\n dragLineElement: _ctx.dragLineElement,\n moveShapeKeypoint: _ctx.moveShapeKeypoint\n }, null, 8, [\"elementInfo\", \"handlerVisible\", \"rotateElement\", \"scaleElement\", \"dragLineElement\", \"moveShapeKeypoint\"]))\n : _createCommentVNode(\"\", true),\n (_unref(toolbarState) === 'elAnimation' && elementIndexListInAnimation.value.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementIndexListInAnimation.value, (index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"index-item\",\n key: index\n }, _toDisplayString(index + 1), 1))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isActive && _ctx.elementInfo.link)\n ? (_openBlock(), _createBlock(LinkHandler, {\n key: 2,\n elementInfo: _ctx.elementInfo,\n link: _ctx.elementInfo.link,\n openLinkDialog: _ctx.openLinkDialog,\n onMousedown: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, null, 8, [\"elementInfo\", \"link\", \"openLinkDialog\"]))\n : _createCommentVNode(\"\", true)\n ], 6))\n}\n}\n\n})","\r\n\r\n\r\n\r\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5ec1ff35&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5ec1ff35\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-24fef706\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"src\"]\n\nimport { computed } from 'vue'\nimport type { PPTImageElement } from '@/types/slides'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\nimport useClipImage from './useClipImage'\nimport useFilter from './useFilter'\n\nimport ImageOutline from './ImageOutline/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseImageElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst clip = computed(() => props.elementInfo.clip)\nconst { clipShape, imgPosition } = useClipImage(clip)\n\nconst filters = computed(() => props.elementInfo.filters)\nconst { filter } = useFilter(filters)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-image\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n })\n }, [\n _createVNode(ImageOutline, { elementInfo: _ctx.elementInfo }, null, 8, [\"elementInfo\"]),\n _createElementVNode(\"div\", {\n class: \"image-content\",\n style: _normalizeStyle({ clipPath: _unref(clipShape).style })\n }, [\n _createElementVNode(\"img\", {\n src: _ctx.elementInfo.src,\n draggable: false,\n style: _normalizeStyle({\n top: _unref(imgPosition).top,\n left: _unref(imgPosition).left,\n width: _unref(imgPosition).width,\n height: _unref(imgPosition).height,\n filter: _unref(filter),\n }),\n alt: \"\"\n }, null, 12, _hoisted_1),\n (_ctx.elementInfo.colorMask)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"color-mask\",\n style: _normalizeStyle({\n backgroundColor: _ctx.elementInfo.colorMask,\n })\n }, null, 4))\n : _createCommentVNode(\"\", true)\n ], 4)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./BaseImageElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseImageElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseImageElement.vue?vue&type=style&index=0&id=24fef706&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24fef706\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-52a206f2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { computed } from 'vue'\nimport type { PPTTextElement } from '@/types/slides'\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\n\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseTextElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-text\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n width: _ctx.elementInfo.vertical ? 'auto' : _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.vertical ? _ctx.elementInfo.height + 'px' : 'auto',\n backgroundColor: _ctx.elementInfo.fill,\n opacity: _ctx.elementInfo.opacity,\n textShadow: _unref(shadowStyle),\n lineHeight: _ctx.elementInfo.lineHeight,\n letterSpacing: (_ctx.elementInfo.wordSpace || 0) + 'px',\n color: _ctx.elementInfo.defaultColor,\n fontFamily: _ctx.elementInfo.defaultFontName,\n writingMode: _ctx.elementInfo.vertical ? 'vertical-rl' : 'horizontal-tb',\n })\n }, [\n _createVNode(ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createElementVNode(\"div\", {\n class: \"text ProseMirror-static\",\n style: _normalizeStyle({\n '--paragraphSpace': `${_ctx.elementInfo.paragraphSpace === undefined ? 5 : _ctx.elementInfo.paragraphSpace}px`,\n }),\n innerHTML: _ctx.elementInfo.content\n }, null, 12, _hoisted_1)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./BaseTextElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseTextElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseTextElement.vue?vue&type=style&index=0&id=52a206f2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52a206f2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-b13f8fa8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\", \"fill\", \"stroke\", \"stroke-width\", \"stroke-dasharray\"]\nconst _hoisted_5 = [\"innerHTML\"]\n\nimport { computed } from 'vue'\nimport type { PPTShapeElement, ShapeText } from '@/types/slides'\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\n\nimport GradientDefs from './GradientDefs.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseShapeElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst outline = computed(() => props.elementInfo.outline)\nconst { outlineWidth, outlineColor, strokeDashArray } = useElementOutline(outline)\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst flipH = computed(() => props.elementInfo.flipH)\nconst flipV = computed(() => props.elementInfo.flipV)\nconst { flipStyle } = useElementFlip(flipH, flipV)\n\nconst text = computed(() => {\n const defaultText: ShapeText = {\n content: '',\n defaultFontName: '微软雅黑',\n defaultColor: '#000',\n align: 'middle',\n }\n if (!props.elementInfo.text) return defaultText\n\n return props.elementInfo.text\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-shape\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\n opacity: _ctx.elementInfo.opacity,\n filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '',\n transform: _unref(flipStyle),\n color: text.value.defaultColor,\n fontFamily: text.value.defaultFontName,\n })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height\n }, [\n (_ctx.elementInfo.gradient)\n ? (_openBlock(), _createElementBlock(\"defs\", _hoisted_2, [\n _createVNode(GradientDefs, {\n id: `base-gradient-${_ctx.elementInfo.id}`,\n type: _ctx.elementInfo.gradient.type,\n color1: _ctx.elementInfo.gradient.color[0],\n color2: _ctx.elementInfo.gradient.color[1],\n rotate: _ctx.elementInfo.gradient.rotate\n }, null, 8, [\"id\", \"type\", \"color1\", \"color2\", \"rotate\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n d: _ctx.elementInfo.path,\n fill: _ctx.elementInfo.gradient ? `url(#base-gradient-${_ctx.elementInfo.id})` : _ctx.elementInfo.fill,\n stroke: _unref(outlineColor),\n \"stroke-width\": _unref(outlineWidth),\n \"stroke-dasharray\": _unref(strokeDashArray)\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_1)),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"shape-text\", text.value.align])\n }, [\n _createElementVNode(\"div\", {\n class: \"ProseMirror-static\",\n innerHTML: text.value.content\n }, null, 8, _hoisted_5)\n ], 2)\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./BaseShapeElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseShapeElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseShapeElement.vue?vue&type=style&index=0&id=b13f8fa8&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-b13f8fa8\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-443e2f82\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"d\", \"stroke\", \"stroke-width\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\n\nimport { computed } from 'vue'\nimport type { PPTLineElement } from '@/types/slides'\nimport { getLineElementPath } from '@/utils/element'\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\n\nimport LinePointMarker from './LinePointMarker.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseLineElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst shadow = computed(() => props.elementInfo.shadow)\nconst { shadowStyle } = useElementShadow(shadow)\n\nconst svgWidth = computed(() => {\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\n return width < 24 ? 24 : width\n})\nconst svgHeight = computed(() => {\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\n return height < 24 ? 24 : height\n})\n\nconst lineDashArray = computed(() => {\n if (props.elementInfo.style !== 'dashed') return '0 0'\n const size = props.elementInfo.width\n return size <= 8 ? `${size * 5} ${size * 2.5}` : `${size * 5} ${size * 1.5}`\n})\n\nconst path = computed(() => {\n return getLineElementPath(props.elementInfo)\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-line\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ filter: _unref(shadowStyle) ? `drop-shadow(${_unref(shadowStyle)})` : '' })\n }, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: svgWidth.value,\n height: svgHeight.value\n }, [\n _createElementVNode(\"defs\", null, [\n (_ctx.elementInfo.points[0])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 0,\n id: _ctx.elementInfo.id,\n position: \"start\",\n type: _ctx.elementInfo.points[0],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.elementInfo.points[1])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 1,\n id: _ctx.elementInfo.id,\n position: \"end\",\n type: _ctx.elementInfo.points[1],\n color: _ctx.elementInfo.color,\n baseSize: _ctx.elementInfo.width\n }, null, 8, [\"id\", \"type\", \"color\", \"baseSize\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n d: path.value,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.width,\n \"stroke-dasharray\": lineDashArray.value,\n fill: \"none\",\n \"marker-start\": _ctx.elementInfo.points[0] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[0]}-start)` : '',\n \"marker-end\": _ctx.elementInfo.points[1] ? `url(#${_ctx.elementInfo.id}-${_ctx.elementInfo.points[1]}-end)` : ''\n }, null, 8, _hoisted_2)\n ], 8, _hoisted_1))\n ], 4)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./BaseLineElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseLineElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseLineElement.vue?vue&type=style&index=0&id=443e2f82&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-443e2f82\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, inject, ref } from 'vue'\r\nimport type { PPTChartElement } from '@/types/slides'\r\nimport { injectKeySlideScale } from '@/types/injectKey'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseChartElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\r\n\r\n\r\nconst slideScale = inject(injectKeySlideScale) || ref(1)\r\n\r\nconst needScaleSize = computed(() => slideScale.value < 1)\r\nconst zoom = computed(() => needScaleSize.value ? 1 / slideScale.value : 1)\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-chart\",\n style: _normalizeStyle({\r\n top: _ctx.elementInfo.top + 'px',\r\n left: _ctx.elementInfo.left + 'px',\r\n width: _ctx.elementInfo.width + 'px',\r\n height: _ctx.elementInfo.height + 'px',\r\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({\r\n backgroundColor: _ctx.elementInfo.fill,\r\n })\n }, [\n _createVNode(ElementOutline, {\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n outline: _ctx.elementInfo.outline\n }, null, 8, [\"width\", \"height\", \"outline\"]),\n _createVNode(Chart, {\n width: _ctx.elementInfo.width * zoom.value,\n height: _ctx.elementInfo.height * zoom.value,\n type: _ctx.elementInfo.chartType,\n data: _ctx.elementInfo.data,\n options: _ctx.elementInfo.options,\n themeColor: _ctx.elementInfo.themeColor,\n gridColor: _ctx.elementInfo.gridColor,\n legends: _ctx.elementInfo.data.legends,\n legend: _ctx.elementInfo.legend || '',\n style: _normalizeStyle({ zoom: 1 / zoom.value })\n }, null, 8, [\"width\", \"height\", \"type\", \"data\", \"options\", \"themeColor\", \"gridColor\", \"legends\", \"legend\", \"style\"])\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","\r\n\r\n\r\n\r\n","import script from \"./BaseChartElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseChartElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseChartElement.vue?vue&type=style&index=0&id=7c03d68d&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7c03d68d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, vShow as _vShow, withDirectives as _withDirectives, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5d949d4d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\"]\nconst _hoisted_2 = [\"rowspan\", \"colspan\"]\nconst _hoisted_3 = [\"innerHTML\"]\n\nimport { computed, ref, watch } from 'vue'\nimport type { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\nimport { getTextStyle, formatText } from './utils'\nimport useHideCells from './useHideCells'\nimport useSubThemeColor from './useSubThemeColor'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'StaticTable',\n props: {\n data: {},\n width: {},\n cellMinHeight: {},\n colWidths: {},\n outline: {},\n theme: {},\n editable: { type: Boolean, default: true }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst colSizeList = ref([])\nconst totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\n\nwatch([\n () => props.colWidths,\n () => props.width,\n], () => {\n colSizeList.value = props.colWidths.map(item => item * props.width)\n}, { immediate: true })\n\nconst cells = computed(() => props.data)\nconst { hideCells } = useHideCells(cells)\n\nconst theme = computed(() => props.theme)\nconst { subThemeColor } = useSubThemeColor(theme)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"static-table\",\n style: _normalizeStyle({ width: totalWidth.value + 'px' })\n }, [\n _createElementVNode(\"table\", {\n class: _normalizeClass({\n 'theme': theme.value,\n 'row-header': theme.value?.rowHeader,\n 'row-footer': theme.value?.rowFooter,\n 'col-header': theme.value?.colHeader,\n 'col-footer': theme.value?.colFooter,\n }),\n style: _normalizeStyle(`--themeColor: ${theme.value?.color}; --subThemeColor1: ${_unref(subThemeColor)[0]}; --subThemeColor2: ${_unref(subThemeColor)[1]}`)\n }, [\n _createElementVNode(\"colgroup\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(colSizeList.value, (width, index) => {\n return (_openBlock(), _createElementBlock(\"col\", {\n span: \"1\",\n key: index,\n width: width\n }, null, 8, _hoisted_1))\n }), 128))\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.data, (rowCells, rowIndex) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: rowIndex,\n style: _normalizeStyle({ height: _ctx.cellMinHeight + 'px' })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(rowCells, (cell, colIndex) => {\n return _withDirectives((_openBlock(), _createElementBlock(\"td\", {\n class: \"cell\",\n style: _normalizeStyle({\n borderStyle: _ctx.outline.style,\n borderColor: _ctx.outline.color,\n borderWidth: _ctx.outline.width + 'px',\n ..._unref(getTextStyle)(cell.style),\n }),\n key: cell.id,\n rowspan: cell.rowspan,\n colspan: cell.colspan\n }, [\n _createElementVNode(\"div\", {\n class: \"cell-text\",\n style: _normalizeStyle({ minHeight: (_ctx.cellMinHeight - 4) + 'px' }),\n innerHTML: _unref(formatText)(cell.text)\n }, null, 12, _hoisted_3)\n ], 12, _hoisted_2)), [\n [_vShow, !_unref(hideCells).includes(`${rowIndex}_${colIndex}`)]\n ])\n }), 128))\n ], 4))\n }), 128))\n ])\n ], 6)\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./StaticTable.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./StaticTable.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./StaticTable.vue?vue&type=style&index=0&id=5d949d4d&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5d949d4d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3eff7eba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport type { PPTTableElement } from '@/types/slides'\n\nimport StaticTable from './StaticTable.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseTableElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-table\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(StaticTable, {\n data: _ctx.elementInfo.data,\n width: _ctx.elementInfo.width,\n cellMinHeight: _ctx.elementInfo.cellMinHeight,\n colWidths: _ctx.elementInfo.colWidths,\n outline: _ctx.elementInfo.outline,\n theme: _ctx.elementInfo.theme\n }, null, 8, [\"data\", \"width\", \"cellMinHeight\", \"colWidths\", \"outline\", \"theme\"])\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseTableElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseTableElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseTableElement.vue?vue&type=style&index=0&id=3eff7eba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3eff7eba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-1587280d\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\nconst _hoisted_2 = [\"width\", \"height\", \"stroke\", \"stroke-width\"]\nconst _hoisted_3 = [\"transform\"]\nconst _hoisted_4 = [\"d\"]\n\nimport type { PPTLatexElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseLatexElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-latex\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(), _createElementBlock(\"svg\", {\n overflow: \"visible\",\n width: _ctx.elementInfo.width,\n height: _ctx.elementInfo.height,\n stroke: _ctx.elementInfo.color,\n \"stroke-width\": _ctx.elementInfo.strokeWidth,\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${_ctx.elementInfo.width / _ctx.elementInfo.viewBox[0]}, ${_ctx.elementInfo.height / _ctx.elementInfo.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n d: _ctx.elementInfo.path\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_3)\n ], 8, _hoisted_2))\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseLatexElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseLatexElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseLatexElement.vue?vue&type=style&index=0&id=1587280d&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1587280d\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport type { PPTVideoElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseVideoElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconPlayOne = _resolveComponent(\"IconPlayOne\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-video\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", {\n class: \"element-content\",\n style: _normalizeStyle({ backgroundImage: _ctx.elementInfo.poster ? `url(${_ctx.elementInfo.poster})` : '' })\n }, [\n _createVNode(_component_IconPlayOne, { class: \"icon\" })\n ], 4)\n ], 4)\n ], 4))\n}\n}\n\n})","import script from \"./BaseVideoElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseVideoElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseVideoElement.vue?vue&type=style&index=0&id=09436dde&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-09436dde\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, normalizeStyle as _normalizeStyle, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5da834d7\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-content\" }\n\nimport { computed } from 'vue'\nimport type { PPTAudioElement } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BaseAudioElement',\n props: {\n elementInfo: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst audioIconSize = computed(() => {\n return Math.min(props.elementInfo.width, props.elementInfo.height) + 'px'\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconVolumeNotice = _resolveComponent(\"IconVolumeNotice\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"base-element-audio\",\n style: _normalizeStyle({\n top: _ctx.elementInfo.top + 'px',\n left: _ctx.elementInfo.left + 'px',\n width: _ctx.elementInfo.width + 'px',\n height: _ctx.elementInfo.height + 'px',\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"rotate-wrapper\",\n style: _normalizeStyle({ transform: `rotate(${_ctx.elementInfo.rotate}deg)` })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_IconVolumeNotice, {\n class: \"audio-icon\",\n style: _normalizeStyle({\n fontSize: audioIconSize.value,\n color: _ctx.elementInfo.color,\n })\n }, null, 8, [\"style\"])\n ])\n ], 4)\n ], 4))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./BaseAudioElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./BaseAudioElement.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./BaseAudioElement.vue?vue&type=style&index=0&id=5da834d7&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5da834d7\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\nimport { ElementTypes, type PPTElement } from '@/types/slides'\n\nimport BaseImageElement from '@/views/components/element/ImageElement/BaseImageElement.vue'\nimport BaseTextElement from '@/views/components/element/TextElement/BaseTextElement.vue'\nimport BaseShapeElement from '@/views/components/element/ShapeElement/BaseShapeElement.vue'\nimport BaseLineElement from '@/views/components/element/LineElement/BaseLineElement.vue'\nimport BaseChartElement from '@/views/components/element/ChartElement/BaseChartElement.vue'\nimport BaseTableElement from '@/views/components/element/TableElement/BaseTableElement.vue'\nimport BaseLatexElement from '@/views/components/element/LatexElement/BaseLatexElement.vue'\nimport BaseVideoElement from '@/views/components/element/VideoElement/BaseVideoElement.vue'\nimport BaseAudioElement from '@/views/components/element/AudioElement/BaseAudioElement.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ThumbnailElement',\n props: {\n elementInfo: {},\n elementIndex: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst currentElementComponent = computed(() => {\n const elementTypeMap = {\n [ElementTypes.IMAGE]: BaseImageElement,\n [ElementTypes.TEXT]: BaseTextElement,\n [ElementTypes.SHAPE]: BaseShapeElement,\n [ElementTypes.LINE]: BaseLineElement,\n [ElementTypes.CHART]: BaseChartElement,\n [ElementTypes.TABLE]: BaseTableElement,\n [ElementTypes.LATEX]: BaseLatexElement,\n [ElementTypes.VIDEO]: BaseVideoElement,\n [ElementTypes.AUDIO]: BaseAudioElement,\n }\n return elementTypeMap[props.elementInfo.type] || null\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"base-element\", `base-element-${_ctx.elementInfo.id}`]),\n style: _normalizeStyle({\n zIndex: _ctx.elementIndex,\n })\n }, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(currentElementComponent.value), {\n elementInfo: _ctx.elementInfo,\n target: \"thumbnail\"\n }, null, 8, [\"elementInfo\"]))\n ], 6))\n}\n}\n\n})","\n\n","import script from \"./ThumbnailElement.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ThumbnailElement.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-43dcaa52\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"placeholder\"\n}\n\nimport { computed, provide } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport type { Slide } from '@/types/slides'\nimport { injectKeySlideScale } from '@/types/injectKey'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\n\nimport ThumbnailElement from './ThumbnailElement.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n slide: {},\n size: {},\n visible: { type: Boolean, default: true }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst { viewportRatio } = storeToRefs(useSlidesStore())\n\nconst background = computed(() => props.slide.background)\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nconst scale = computed(() => props.size / VIEWPORT_SIZE)\nprovide(injectKeySlideScale, scale)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-slide\",\n style: _normalizeStyle({\n width: _ctx.size + 'px',\n height: _ctx.size * _unref(viewportRatio) + 'px',\n })\n }, [\n (_ctx.visible)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"elements\",\n style: _normalizeStyle({\n width: _unref(VIEWPORT_SIZE) + 'px',\n height: _unref(VIEWPORT_SIZE) * _unref(viewportRatio) + 'px',\n transform: `scale(${scale.value})`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.slide.elements, (element, index) => {\n return (_openBlock(), _createBlock(ThumbnailElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1\n }, null, 8, [\"elementInfo\", \"elementIndex\"]))\n }), 128))\n ], 4))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"加载中 ...\"))\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=43dcaa52&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-43dcaa52\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5e3d7626\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"onClick\"]\n\nimport { type CSSProperties } from 'vue'\n\ninterface TabItem {\n key: string\n label: string\n color?: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Tabs',\n props: {\n value: {},\n tabs: {},\n card: { type: Boolean, default: false },\n tabsStyle: {},\n tabStyle: {},\n spaceAround: { type: Boolean, default: false },\n spaceBetween: { type: Boolean, default: false }\n },\n emits: [\"update:value\"],\n setup(__props: any, { emit: __emit }) {\n\n\n\nconst emit = __emit\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tabs\", {\n 'card': _ctx.card,\n 'space-around': _ctx.spaceAround,\n 'space-between': _ctx.spaceBetween,\n }]),\n style: _normalizeStyle(_ctx.tabsStyle || {})\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"tab\", { 'active': tab.key === _ctx.value }]),\n key: tab.key,\n style: _normalizeStyle({\n ...(_ctx.tabStyle || {}),\n '--color': tab.color,\n }),\n onClick: ($event: any) => (emit('update:value', tab.key))\n }, _toDisplayString(tab.label), 15, _hoisted_1))\n }), 128))\n ], 6))\n}\n}\n\n})","\n\n\n\n","import script from \"./Tabs.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Tabs.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Tabs.vue?vue&type=style&index=0&id=5e3d7626&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5e3d7626\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Button',\n props: {\n checked: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n type: { default: 'default' },\n size: { default: 'normal' },\n first: { type: Boolean, default: false },\n last: { type: Boolean, default: false }\n },\n emits: [\"click\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst handleClick = () => {\n if (props.disabled) return\n emit('click')\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n class: _normalizeClass([\"button\", {\n 'disabled': _ctx.disabled,\n 'checked': !_ctx.disabled && _ctx.checked,\n 'default': !_ctx.disabled && _ctx.type === 'default',\n 'primary': !_ctx.disabled && _ctx.type === 'primary',\n 'checkbox': !_ctx.disabled && _ctx.type === 'checkbox',\n 'radio': !_ctx.disabled && _ctx.type === 'radio',\n 'small': _ctx.size === 'small',\n 'first': _ctx.first,\n 'last': _ctx.last,\n }]),\n onClick: _cache[0] || (_cache[0] = ($event: any) => (handleClick()))\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2))\n}\n}\n\n})","\n\n\n\n","import script from \"./Button.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Button.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Button.vue?vue&type=style&index=0&id=52c90330&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-52c90330\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderSlot as _renderSlot, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5bf3b141\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"select-wrap\"\n}\nconst _hoisted_2 = { class: \"selector\" }\nconst _hoisted_3 = { class: \"icon\" }\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = { class: \"selector\" }\nconst _hoisted_6 = { class: \"icon\" }\n\nimport { computed, onMounted, onUnmounted, ref } from 'vue'\nimport Popover from './Popover.vue'\n\ninterface SelectOption {\n label: string\n value: string | number\n disabled?: boolean\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Select',\n props: {\n value: {},\n options: {},\n disabled: { type: Boolean, default: false }\n },\n emits: [\"update:value\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst showLabel = computed(() => {\n return props.options.find(item => item.value === props.value)?.label || props.value\n})\n\nconst emit = __emit\n\nconst popoverVisible = ref(false)\nconst selectRef = ref()\nconst width = ref(0)\n\nconst updateWidth = () => {\n if (!selectRef.value) return\n width.value = selectRef.value.clientWidth\n}\nconst resizeObserver = new ResizeObserver(updateWidth)\nonMounted(() => {\n if (!selectRef.value) return\n resizeObserver.observe(selectRef.value)\n})\nonUnmounted(() => {\n if (!selectRef.value) return\n resizeObserver.unobserve(selectRef.value)\n})\n\nconst handleSelect = (option: SelectOption) => {\n if (option.disabled) return\n\n emit('update:value', option.value)\n popoverVisible.value = false\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconDown = _resolveComponent(\"IconDown\")!\n\n return (_ctx.disabled)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"select disabled\",\n ref_key: \"selectRef\",\n ref: selectRef\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.value), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"icon\", {}, () => [\n _createVNode(_component_IconDown, { size: 14 })\n ])\n ])\n ], 512)\n ]))\n : (_openBlock(), _createBlock(Popover, {\n key: 1,\n class: \"select-wrap\",\n trigger: \"click\",\n value: popoverVisible.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((popoverVisible).value = $event)),\n placement: \"bottom\",\n contentStyle: {\n padding: 0,\n boxShadow: '0 6px 16px 0 rgba(0, 0, 0, 0.08)',\n }\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"options\",\n style: _normalizeStyle({ width: width.value + 2 + 'px' })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (option) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"option\", {\n 'disabled': option.disabled,\n 'selected': option.value === _ctx.value,\n }]),\n key: option.value,\n onClick: ($event: any) => (handleSelect(option))\n }, _toDisplayString(option.label), 11, _hoisted_4))\n }), 128))\n ], 4)\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: \"select\",\n ref_key: \"selectRef\",\n ref: selectRef\n }, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(showLabel.value), 1),\n _createElementVNode(\"div\", _hoisted_6, [\n _renderSlot(_ctx.$slots, \"icon\", {}, () => [\n _createVNode(_component_IconDown, { size: 14 })\n ])\n ])\n ], 512)\n ]),\n _: 3\n }, 8, [\"value\", \"contentStyle\"]))\n}\n}\n\n})","\n\n\n\n","import script from \"./Select.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Select.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Select.vue?vue&type=style&index=0&id=5bf3b141&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5bf3b141\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cc39ee16\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"link-dialog\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"preview\"\n}\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", null, \"预览:\", -1))\nconst _hoisted_4 = { class: \"btns\" }\n\nimport { computed, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElementLink } from '@/types/slides'\nimport useLink from '@/hooks/useLink'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport Tabs from '@/components/Tabs.vue'\nimport Input from '@/components/Input.vue'\nimport Button from '@/components/Button.vue'\nimport Select from '@/components/Select.vue'\n\ntype TypeKey = 'web' | 'slide'\ninterface TabItem {\n key: TypeKey\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinkDialog',\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst { handleElement } = storeToRefs(useMainStore())\nconst { slides, currentSlide } = storeToRefs(useSlidesStore())\n\nconst type = ref('web')\nconst address = ref('')\nconst slideId = ref('')\n\nconst slideOptions = computed(() => {\n return slides.value.map((item, index) => ({\n label: `幻灯片 ${index + 1}`,\n value: item.id,\n disabled: currentSlide.value.id === item.id,\n }))\n})\n\nslideId.value = slides.value.find(item => item.id !== currentSlide.value.id)?.id || ''\n\nconst selectedSlide = computed(() => {\n if (!slideId.value) return null\n\n return slides.value.find(item => item.id === slideId.value) || null\n})\n\nconst tabs: TabItem[] = [\n { key: 'web', label: '网页链接' },\n { key: 'slide', label: '幻灯片页面' },\n]\n\nconst { setLink } = useLink()\n\nonMounted(() => {\n if (handleElement.value?.link) {\n if (handleElement.value.link.type === 'web') address.value = handleElement.value.link.target\n else if (handleElement.value.link.type === 'slide') slideId.value = handleElement.value.link.target\n\n type.value = handleElement.value.link.type\n }\n})\n\nconst save = () => {\n const link: PPTElementLink = {\n type: type.value,\n target: type.value === 'web' ? address.value : slideId.value,\n }\n if (handleElement.value) {\n const success = setLink(handleElement.value, link)\n if (success) emit('close')\n else address.value = ''\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Tabs, {\n tabs: tabs,\n value: type.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((type).value = $event)),\n tabsStyle: { marginBottom: '20px' }\n }, null, 8, [\"value\"]),\n (type.value === 'web')\n ? (_openBlock(), _createBlock(Input, {\n key: 0,\n class: \"input\",\n value: address.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((address).value = $event)),\n placeholder: \"请输入网页链接地址\"\n }, null, 8, [\"value\"]))\n : _createCommentVNode(\"\", true),\n (type.value === 'slide')\n ? (_openBlock(), _createBlock(Select, {\n key: 1,\n class: \"input\",\n value: slideId.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((slideId).value = $event)),\n options: slideOptions.value\n }, null, 8, [\"value\", \"options\"]))\n : _createCommentVNode(\"\", true),\n (type.value === 'slide' && selectedSlide.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(ThumbnailSlide, {\n class: \"thumbnail\",\n slide: selectedSlide.value,\n size: 500\n }, null, 8, [\"slide\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(Button, {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n type: \"primary\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (save()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./LinkDialog.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinkDialog.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinkDialog.vue?vue&type=style&index=0&id=cc39ee16&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-cc39ee16\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, vShow as _vShow, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, withKeys as _withKeys, Teleport as _Teleport, createBlock as _createBlock } from \"vue\"\n\nimport { computed, nextTick, ref, watch, type CSSProperties } from 'vue'\nimport { icons } from '@/plugins/icon'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Modal',\n props: {\n visible: { type: Boolean },\n width: { default: 480 },\n closeButton: { type: Boolean, default: false },\n closeOnClickMask: { type: Boolean, default: true },\n closeOnEsc: { type: Boolean, default: true },\n contentStyle: {}\n },\n emits: [\"update:visible\", \"closed\"],\n setup(__props: any, { emit: __emit }) {\n\nconst { IconClose } = icons\n\nconst props = __props\n\nconst modalRef = ref()\n\nconst emit = __emit\n\nconst contentVisible = ref(false)\n\nconst contentStyle = computed(() => {\n return {\n width: props.width + 'px',\n ...(props.contentStyle || {})\n }\n})\n\nwatch(() => props.visible, () => {\n if (props.visible) {\n nextTick(() => modalRef.value!.focus())\n }\n})\n\nconst close = () => {\n emit('update:visible', false)\n emit('closed')\n}\n\nconst onEsc = () => {\n if (props.visible && props.closeOnEsc) close()\n}\n\nconst onClickMask = () => {\n if (props.closeOnClickMask) close()\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n _createVNode(_Transition, { name: \"modal-fade\" }, {\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"modal\",\n ref_key: \"modalRef\",\n ref: modalRef,\n tabindex: \"-1\",\n onKeyup: _cache[4] || (_cache[4] = _withKeys(($event: any) => (onEsc()), [\"esc\"]))\n }, [\n _createElementVNode(\"div\", {\n class: \"mask\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (onClickMask()))\n }),\n _createVNode(_Transition, {\n name: \"modal-zoom\",\n onAfterLeave: _cache[2] || (_cache[2] = ($event: any) => (contentVisible.value = false)),\n onBeforeEnter: _cache[3] || (_cache[3] = ($event: any) => (contentVisible.value = true))\n }, {\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"div\", {\n class: \"modal-content\",\n style: _normalizeStyle(contentStyle.value)\n }, [\n (_ctx.closeButton)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"close-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (close()))\n }, [\n _createVNode(_unref(IconClose))\n ]))\n : _createCommentVNode(\"\", true),\n (contentVisible.value)\n ? _renderSlot(_ctx.$slots, \"default\", { key: 1 })\n : _createCommentVNode(\"\", true)\n ], 4), [\n [_vShow, _ctx.visible]\n ])\n ]),\n _: 3\n })\n ], 544), [\n [_vShow, _ctx.visible]\n ])\n ]),\n _: 3\n })\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./Modal.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Modal.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=fea8edcc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-fea8edcc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, vShow as _vShow, withDirectives as _withDirectives, createVNode as _createVNode, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, withCtx as _withCtx, resolveDirective as _resolveDirective, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5294a048\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"operates\" }\nconst _hoisted_2 = {\n key: 2,\n class: \"drag-mask\"\n}\n\nimport { nextTick, onMounted, onUnmounted, provide, ref, watch, watchEffect } from 'vue'\nimport { throttle } from 'lodash'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore, useKeyboardStore } from '@/store'\nimport type { ContextmenuItem } from '@/components/Contextmenu/types'\nimport type { PPTElement, PPTShapeElement } from '@/types/slides'\nimport type { AlignmentLineProps, CreateCustomShapeData } from '@/types/edit'\nimport { injectKeySlideScale } from '@/types/injectKey'\nimport { removeAllRanges } from '@/utils/selection'\nimport { KEYS } from '@/configs/hotkey'\n\nimport useViewportSize from './hooks/useViewportSize'\nimport useMouseSelection from './hooks/useMouseSelection'\nimport useDropImageOrText from './hooks/useDropImageOrText'\nimport useRotateElement from './hooks/useRotateElement'\nimport useScaleElement from './hooks/useScaleElement'\nimport useSelectElement from './hooks/useSelectElement'\nimport useDragElement from './hooks/useDragElement'\nimport useDragLineElement from './hooks/useDragLineElement'\nimport useMoveShapeKeypoint from './hooks/useMoveShapeKeypoint'\nimport useInsertFromCreateSelection from './hooks/useInsertFromCreateSelection'\n\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\nimport useScaleCanvas from '@/hooks/useScaleCanvas'\nimport useScreening from '@/hooks/useScreening'\nimport useSlideHandler from '@/hooks/useSlideHandler'\nimport useCreateElement from '@/hooks/useCreateElement'\n\nimport EditableElement from './EditableElement.vue'\nimport MouseSelection from './MouseSelection.vue'\nimport ViewportBackground from './ViewportBackground.vue'\nimport AlignmentLine from './AlignmentLine.vue'\nimport Ruler from './Ruler.vue'\nimport ElementCreateSelection from './ElementCreateSelection.vue'\nimport ShapeCreateCanvas from './ShapeCreateCanvas.vue'\nimport MultiSelectOperate from './Operate/MultiSelectOperate.vue'\nimport Operate from './Operate/index.vue'\nimport LinkDialog from './LinkDialog.vue'\nimport Modal from '@/components/Modal.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mainStore = useMainStore()\nconst {\n activeElementIdList,\n activeGroupElementId,\n handleElementId,\n hiddenElementIdList,\n editorAreaFocus,\n gridLineSize,\n showRuler,\n creatingElement,\n creatingCustomShape,\n canvasScale,\n textFormatPainter,\n} = storeToRefs(mainStore)\nconst { currentSlide } = storeToRefs(useSlidesStore())\nconst { ctrlKeyState, spaceKeyState } = storeToRefs(useKeyboardStore())\n\nconst viewportRef = ref()\nconst alignmentLines = ref([])\n\nconst linkDialogVisible = ref(false)\nconst openLinkDialog = () => linkDialogVisible.value = true\n\nwatch(handleElementId, () => {\n mainStore.setActiveGroupElementId('')\n})\n\nconst elementList = ref([])\nconst setLocalElementList = () => {\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\n}\nwatchEffect(setLocalElementList)\n\nconst canvasRef = ref()\nconst { dragViewport, viewportStyles } = useViewportSize(canvasRef)\n\nuseDropImageOrText(canvasRef)\n\nconst { mouseSelection, mouseSelectionVisible, mouseSelectionQuadrant, updateMouseSelection } = useMouseSelection(elementList, viewportRef)\n\nconst { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\nconst { dragLineElement } = useDragLineElement(elementList)\nconst { selectElement } = useSelectElement(elementList, dragElement)\nconst { scaleElement, scaleMultiElement } = useScaleElement(elementList, alignmentLines, canvasScale)\nconst { rotateElement } = useRotateElement(elementList, viewportRef, canvasScale)\nconst { moveShapeKeypoint } = useMoveShapeKeypoint(elementList, canvasScale)\n\nconst { selectAllElement } = useSelectAllElement()\nconst { deleteAllElements } = useDeleteElement()\nconst { pasteElement } = useCopyAndPasteElement()\nconst { enterScreeningFromStart } = useScreening()\nconst { updateSlideIndex } = useSlideHandler()\nconst { createTextElement, createShapeElement } = useCreateElement()\n\n// 组件渲染时,如果存在元素焦点,需要清除\n// 这种情况存在于:有焦点元素的情况下进入了放映模式,再退出时,需要清除原先的焦点(因为可能已经切换了页面)\nonMounted(() => {\n if (activeElementIdList.value.length) {\n nextTick(() => mainStore.setActiveElementIdList([]))\n }\n})\n\n// 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区、清空格式刷状态\nconst handleClickBlankArea = (e: MouseEvent) => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n\n if (!spaceKeyState.value) updateMouseSelection(e)\n else dragViewport(e)\n\n if (!editorAreaFocus.value) mainStore.setEditorareaFocus(true)\n if (textFormatPainter.value) mainStore.setTextFormatPainter(null)\n removeAllRanges()\n}\n\n// 双击空白处插入文本\nconst handleDblClick = (e: MouseEvent) => {\n if (activeElementIdList.value.length || creatingElement.value || creatingCustomShape.value) return\n if (!viewportRef.value) return\n\n const viewportRect = viewportRef.value.getBoundingClientRect()\n const left = (e.pageX - viewportRect.x) / canvasScale.value\n const top = (e.pageY - viewportRect.y) / canvasScale.value\n\n createTextElement({\n left,\n top,\n width: 200 / canvasScale.value, // 除以 canvasScale 是为了与点击选区创建的形式保持相同的宽度\n height: 0,\n })\n}\n\n// 画布注销时清空格式刷状态\nonUnmounted(() => {\n if (textFormatPainter.value) mainStore.setTextFormatPainter(null)\n})\n\n// 移除画布编辑区域焦点\nconst removeEditorAreaFocus = () => {\n if (editorAreaFocus.value) mainStore.setEditorareaFocus(false)\n}\n\n// 滚动鼠标\nconst { scaleCanvas } = useScaleCanvas()\nconst throttleScaleCanvas = throttle(scaleCanvas, 100, { leading: true, trailing: false })\nconst throttleUpdateSlideIndex = throttle(updateSlideIndex, 300, { leading: true, trailing: false })\n\nconst handleMousewheelCanvas = (e: WheelEvent) => {\n e.preventDefault()\n\n // 按住Ctrl键时:缩放画布\n if (ctrlKeyState.value) {\n if (e.deltaY > 0) throttleScaleCanvas('-')\n else if (e.deltaY < 0) throttleScaleCanvas('+')\n }\n // 上下翻页\n else {\n if (e.deltaY > 0) throttleUpdateSlideIndex(KEYS.DOWN)\n else if (e.deltaY < 0) throttleUpdateSlideIndex(KEYS.UP)\n }\n}\n\n// 开关标尺\nconst toggleRuler = () => {\n mainStore.setRulerState(!showRuler.value)\n}\n\n// 在鼠标绘制的范围插入元素\nconst { insertElementFromCreateSelection, formatCreateSelection } = useInsertFromCreateSelection(viewportRef)\n\n// 插入自定义任意多边形\nconst insertCustomShape = (data: CreateCustomShapeData) => {\n const {\n start,\n end,\n path,\n viewBox,\n } = data\n const position = formatCreateSelection({ start, end })\n if (position) {\n const supplement: Partial = {}\n if (data.fill) supplement.fill = data.fill\n if (data.outline) supplement.outline = data.outline\n createShapeElement(position, { path, viewBox }, supplement)\n }\n\n mainStore.setCreatingCustomShapeState(false)\n}\n\nconst contextmenus = (): ContextmenuItem[] => {\n return [\n {\n text: '粘贴',\n subText: 'Ctrl + V',\n handler: pasteElement,\n },\n {\n text: '全选',\n subText: 'Ctrl + A',\n handler: selectAllElement,\n },\n {\n text: '标尺',\n subText: showRuler.value ? '√' : '',\n handler: toggleRuler,\n },\n {\n text: '网格线',\n handler: () => mainStore.setGridLineSize(gridLineSize.value ? 0 : 50),\n children: [\n {\n text: '无',\n subText: gridLineSize.value === 0 ? '√' : '',\n handler: () => mainStore.setGridLineSize(0),\n },\n {\n text: '小',\n subText: gridLineSize.value === 25 ? '√' : '',\n handler: () => mainStore.setGridLineSize(25),\n },\n {\n text: '中',\n subText: gridLineSize.value === 50 ? '√' : '',\n handler: () => mainStore.setGridLineSize(50),\n },\n {\n text: '大',\n subText: gridLineSize.value === 100 ? '√' : '',\n handler: () => mainStore.setGridLineSize(100),\n },\n ],\n },\n {\n text: '重置当前页',\n handler: deleteAllElements,\n },\n { divider: true },\n {\n text: '幻灯片放映',\n subText: 'F5',\n handler: enterScreeningFromStart,\n },\n ]\n}\n\nprovide(injectKeySlideScale, canvasScale)\n\nreturn (_ctx: any,_cache: any) => {\n const _directive_contextmenu = _resolveDirective(\"contextmenu\")!\n const _directive_click_outside = _resolveDirective(\"click-outside\")!\n\n return _withDirectives((_openBlock(), _createElementBlock(\"div\", {\n class: \"canvas\",\n ref_key: \"canvasRef\",\n ref: canvasRef,\n onWheel: _cache[4] || (_cache[4] = $event => handleMousewheelCanvas($event)),\n onMousedown: _cache[5] || (_cache[5] = $event => handleClickBlankArea($event)),\n onDblclick: _cache[6] || (_cache[6] = $event => handleDblClick($event))\n }, [\n (_unref(creatingElement))\n ? (_openBlock(), _createBlock(ElementCreateSelection, {\n key: 0,\n onCreated: _cache[0] || (_cache[0] = data => _unref(insertElementFromCreateSelection)(data))\n }))\n : _createCommentVNode(\"\", true),\n (_unref(creatingCustomShape))\n ? (_openBlock(), _createBlock(ShapeCreateCanvas, {\n key: 1,\n onCreated: _cache[1] || (_cache[1] = data => insertCustomShape(data))\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle({\n width: _unref(viewportStyles).width * _unref(canvasScale) + 'px',\n height: _unref(viewportStyles).height * _unref(canvasScale) + 'px',\n left: _unref(viewportStyles).left + 'px',\n top: _unref(viewportStyles).top + 'px',\n })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(alignmentLines.value, (line, index) => {\n return (_openBlock(), _createBlock(AlignmentLine, {\n key: index,\n type: line.type,\n axis: line.axis,\n length: line.length,\n canvasScale: _unref(canvasScale)\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\n }), 128)),\n (_unref(activeElementIdList).length > 1)\n ? (_openBlock(), _createBlock(MultiSelectOperate, {\n key: 0,\n elementList: elementList.value,\n scaleMultiElement: _unref(scaleMultiElement)\n }, null, 8, [\"elementList\", \"scaleMultiElement\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element) => {\n return _withDirectives((_openBlock(), _createBlock(Operate, {\n key: element.id,\n elementInfo: element,\n isSelected: _unref(activeElementIdList).includes(element.id),\n isActive: _unref(handleElementId) === element.id,\n isActiveGroupElement: _unref(activeGroupElementId) === element.id,\n isMultiSelect: _unref(activeElementIdList).length > 1,\n rotateElement: _unref(rotateElement),\n scaleElement: _unref(scaleElement),\n openLinkDialog: openLinkDialog,\n dragLineElement: _unref(dragLineElement),\n moveShapeKeypoint: _unref(moveShapeKeypoint)\n }, null, 8, [\"elementInfo\", \"isSelected\", \"isActive\", \"isActiveGroupElement\", \"isMultiSelect\", \"rotateElement\", \"scaleElement\", \"dragLineElement\", \"moveShapeKeypoint\"])), [\n [_vShow, !_unref(hiddenElementIdList).includes(element.id)]\n ])\n }), 128)),\n _createVNode(ViewportBackground)\n ]),\n _createElementVNode(\"div\", {\n class: \"viewport\",\n ref_key: \"viewportRef\",\n ref: viewportRef,\n style: _normalizeStyle({ transform: `scale(${_unref(canvasScale)})` })\n }, [\n (_unref(mouseSelectionVisible))\n ? (_openBlock(), _createBlock(MouseSelection, {\n key: 0,\n top: _unref(mouseSelection).top,\n left: _unref(mouseSelection).left,\n width: _unref(mouseSelection).width,\n height: _unref(mouseSelection).height,\n quadrant: _unref(mouseSelectionQuadrant)\n }, null, 8, [\"top\", \"left\", \"width\", \"height\", \"quadrant\"]))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element, index) => {\n return _withDirectives((_openBlock(), _createBlock(EditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n isMultiSelect: _unref(activeElementIdList).length > 1,\n selectElement: _unref(selectElement),\n openLinkDialog: openLinkDialog\n }, null, 8, [\"elementInfo\", \"elementIndex\", \"isMultiSelect\", \"selectElement\"])), [\n [_vShow, !_unref(hiddenElementIdList).includes(element.id)]\n ])\n }), 128))\n ], 4)\n ], 4),\n (_unref(spaceKeyState))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n (_unref(showRuler))\n ? (_openBlock(), _createBlock(Ruler, {\n key: 3,\n viewportStyles: _unref(viewportStyles)\n }, null, 8, [\"viewportStyles\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(Modal, {\n visible: linkDialogVisible.value,\n \"onUpdate:visible\": _cache[3] || (_cache[3] = ($event: any) => ((linkDialogVisible).value = $event)),\n width: 540\n }, {\n default: _withCtx(() => [\n _createVNode(LinkDialog, {\n onClose: _cache[2] || (_cache[2] = ($event: any) => (linkDialogVisible.value = false))\n })\n ]),\n _: 1\n }, 8, [\"visible\"])\n ], 32)), [\n [_directive_contextmenu, contextmenus],\n [_directive_click_outside, removeEditorAreaFocus]\n ])\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5294a048&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5294a048\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8603ad34\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-item-thumbnail\" }\nconst _hoisted_2 = { class: \"shape-content\" }\nconst _hoisted_3 = {\n overflow: \"visible\",\n width: \"18\",\n height: \"18\"\n}\nconst _hoisted_4 = [\"transform\"]\nconst _hoisted_5 = [\"fill\", \"stroke\", \"d\"]\n\nimport type { ShapePoolItem } from '@/configs/shapes'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapeItemThumbnail',\n props: {\n shape: {}\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [\n _createElementVNode(\"g\", {\n transform: `scale(${18 / _ctx.shape.viewBox[0]}, ${18 / _ctx.shape.viewBox[1]}) translate(0,0) matrix(1,0,0,1,0,0)`\n }, [\n _createElementVNode(\"path\", {\n class: _normalizeClass([\"shape-path\", { 'outlined': _ctx.shape.outlined }]),\n \"vector-effect\": \"non-scaling-stroke\",\n \"stroke-linecap\": \"butt\",\n \"stroke-miterlimit\": \"8\",\n fill: _ctx.shape.outlined ? '#999' : 'transparent',\n stroke: _ctx.shape.outlined ? 'transparent' : '#999',\n \"stroke-width\": \"2\",\n d: _ctx.shape.path\n }, null, 10, _hoisted_5)\n ], 8, _hoisted_4)\n ]))\n ])\n ]))\n}\n}\n\n})","import script from \"./ShapeItemThumbnail.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapeItemThumbnail.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapeItemThumbnail.vue?vue&type=style&index=0&id=8603ad34&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8603ad34\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8b994b42\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"shape-pool\" }\nconst _hoisted_2 = { class: \"category-name\" }\nconst _hoisted_3 = { class: \"shape-list\" }\n\nimport { SHAPE_LIST, type ShapePoolItem } from '@/configs/shapes'\nimport ShapeItemThumbnail from './ShapeItemThumbnail.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShapePool',\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst selectShape = (shape: ShapePoolItem) => {\n emit('select', shape)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(SHAPE_LIST), (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"category\",\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (shape, index) => {\n return (_openBlock(), _createBlock(ShapeItemThumbnail, {\n class: \"shape-item\",\n key: index,\n shape: shape,\n onClick: ($event: any) => (selectShape(shape))\n }, null, 8, [\"shape\", \"onClick\"]))\n }), 128))\n ])\n ]))\n }), 128))\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./ShapePool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ShapePool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ShapePool.vue?vue&type=style&index=0&id=8b994b42&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-8b994b42\"]])\n\nexport default __exports__","import type { LinePoint } from '@/types/slides'\n\n\nexport interface LinePoolItem {\n path: string\n style: 'solid' | 'dashed'\n points: [LinePoint, LinePoint]\n isBroken?: boolean\n isCurve?: boolean\n isCubic?: boolean\n}\n\ninterface PresetLine {\n type: string\n children: LinePoolItem[]\n}\n\nexport const LINE_LIST: PresetLine[] = [\n {\n type: '直线',\n children: [\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', ''] },\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', ''] },\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'arrow'] },\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', 'arrow'] },\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'dot'] },\n ],\n },\n {\n type: '折线、曲线',\n children: [\n { path: 'M 0 0 L 0 20 L 20 20', style: 'solid', points: ['', 'arrow'], isBroken: true },\n { path: 'M 0 0 Q 0 20 20 20', style: 'solid', points: ['', 'arrow'], isCurve: true },\n { path: 'M 0 0 C 20 0 0 20 20 20', style: 'solid', points: ['', 'arrow'], isCubic: true },\n ],\n },\n]","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-554824b6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"line-pool\" }\nconst _hoisted_2 = { class: \"category-name\" }\nconst _hoisted_3 = { class: \"line-list\" }\nconst _hoisted_4 = [\"onClick\"]\nconst _hoisted_5 = {\n overflow: \"visible\",\n width: \"20\",\n height: \"20\"\n}\nconst _hoisted_6 = [\"d\", \"stroke-dasharray\", \"marker-start\", \"marker-end\"]\n\nimport { LINE_LIST, type LinePoolItem } from '@/configs/lines'\n\nimport LinePointMarker from '@/views/components/element/LineElement/LinePointMarker.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LinePool',\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst selectLine = (line: LinePoolItem) => {\n emit('select', line)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(LINE_LIST), (item, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"category\",\n key: item.type\n }, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(item.type), 1),\n _createElementVNode(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(item.children, (line, j) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"line-item\",\n key: j\n }, [\n _createElementVNode(\"div\", {\n class: \"line-content\",\n onClick: ($event: any) => (selectLine(line))\n }, [\n (_openBlock(), _createElementBlock(\"svg\", _hoisted_5, [\n _createElementVNode(\"defs\", null, [\n (line.points[0])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 0,\n class: \"line-marker\",\n id: `preset-line-${i}-${j}`,\n position: \"start\",\n type: line.points[0],\n color: \"currentColor\",\n baseSize: 2\n }, null, 8, [\"id\", \"type\"]))\n : _createCommentVNode(\"\", true),\n (line.points[1])\n ? (_openBlock(), _createBlock(LinePointMarker, {\n key: 1,\n class: \"line-marker\",\n id: `preset-line-${i}-${j}`,\n position: \"end\",\n type: line.points[1],\n color: \"currentColor\",\n baseSize: 2\n }, null, 8, [\"id\", \"type\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"path\", {\n class: \"line-path\",\n d: line.path,\n stroke: \"currentColor\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-dasharray\": line.style === 'solid' ? '0, 0' : '4, 1',\n \"marker-start\": line.points[0] ? `url(#${`preset-line-${i}-${j}`}-${line.points[0]}-start)` : '',\n \"marker-end\": line.points[1] ? `url(#${`preset-line-${i}-${j}`}-${line.points[1]}-end)` : ''\n }, null, 8, _hoisted_6)\n ]))\n ], 8, _hoisted_4)\n ]))\n }), 128))\n ])\n ]))\n }), 128))\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./LinePool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./LinePool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./LinePool.vue?vue&type=style&index=0&id=554824b6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-554824b6\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-398f5699\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"chart-pool\" }\nconst _hoisted_2 = [\"onClick\"]\n\nimport type { PresetChartType } from '@/types/slides'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ChartPool',\n emits: [\"select\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst chartList: PresetChartType[] = ['bar', 'horizontalBar', 'line', 'area', 'scatter', 'pie', 'ring']\n\nconst selectChart = (chart: PresetChartType) => {\n emit('select', chart)\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconChartLine = _resolveComponent(\"IconChartLine\")!\n const _component_IconChartHistogram = _resolveComponent(\"IconChartHistogram\")!\n const _component_IconChartPie = _resolveComponent(\"IconChartPie\")!\n const _component_IconChartHistogramOne = _resolveComponent(\"IconChartHistogramOne\")!\n const _component_IconChartLineArea = _resolveComponent(\"IconChartLineArea\")!\n const _component_IconChartRing = _resolveComponent(\"IconChartRing\")!\n const _component_IconChartScatter = _resolveComponent(\"IconChartScatter\")!\n\n return (_openBlock(), _createElementBlock(\"ul\", _hoisted_1, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(chartList, (chart, index) => {\n return _createElementVNode(\"li\", {\n class: \"chart-item\",\n key: index\n }, [\n _createElementVNode(\"div\", {\n class: \"chart-content\",\n onClick: ($event: any) => (selectChart(chart))\n }, [\n (chart === 'line')\n ? (_openBlock(), _createBlock(_component_IconChartLine, {\n key: 0,\n size: \"24\"\n }))\n : (chart === 'bar')\n ? (_openBlock(), _createBlock(_component_IconChartHistogram, {\n key: 1,\n size: \"24\"\n }))\n : (chart === 'pie')\n ? (_openBlock(), _createBlock(_component_IconChartPie, {\n key: 2,\n size: \"24\"\n }))\n : (chart === 'horizontalBar')\n ? (_openBlock(), _createBlock(_component_IconChartHistogramOne, {\n key: 3,\n size: \"24\"\n }))\n : (chart === 'area')\n ? (_openBlock(), _createBlock(_component_IconChartLineArea, {\n key: 4,\n size: \"24\"\n }))\n : (chart === 'ring')\n ? (_openBlock(), _createBlock(_component_IconChartRing, {\n key: 5,\n size: \"24\"\n }))\n : (chart === 'scatter')\n ? (_openBlock(), _createBlock(_component_IconChartScatter, {\n key: 6,\n size: \"24\"\n }))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_2)\n ])\n }), 64))\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./ChartPool.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ChartPool.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ChartPool.vue?vue&type=style&index=0&id=398f5699&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-398f5699\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, createElementVNode as _createElementVNode, vModelText as _vModelText, withKeys as _withKeys, withDirectives as _withDirectives, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-268948c2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"prefix\" }\nconst _hoisted_2 = { class: \"input-wrap\" }\nconst _hoisted_3 = [\"disabled\", \"placeholder\"]\nconst _hoisted_4 = { class: \"handlers\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n fill: \"currentColor\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"64 64 896 896\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\" })\n], -1))\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"svg\", {\n fill: \"currentColor\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"64 64 896 896\"\n}, [\n /*#__PURE__*/_createElementVNode(\"path\", { d: \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" })\n], -1))\nconst _hoisted_8 = [\n _hoisted_7\n]\nconst _hoisted_9 = { class: \"suffix\" }\n\nimport { ref, watch } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NumberInput',\n props: {\n value: {},\n disabled: { type: Boolean, default: false },\n placeholder: { default: '' },\n min: { default: 0 },\n max: { default: Infinity },\n step: { default: 1 }\n },\n emits: [\"update:value\", \"input\", \"change\", \"blur\", \"focus\", \"enter\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\n\nconst number = ref(0)\nconst focused = ref(false)\n\nwatch(() => props.value, () => {\n if (props.value !== number.value) {\n number.value = props.value\n }\n}, {\n immediate: true,\n})\n\nwatch(number, () => {\n let value = +number.value\n if (isNaN(value)) value = props.min\n else if (value > props.max) value = props.max\n else if (value < props.min) value = props.min\n\n number.value = value\n emit('update:value', number.value)\n})\n\nconst handleBlur = (e: Event) => {\n focused.value = false\n emit('blur', e)\n}\nconst handleFocus = (e: Event) => {\n focused.value = true\n emit('focus', e)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"number-input\", {\n 'disabled': _ctx.disabled,\n 'focused': focused.value,\n }])\n }, [\n _createElementVNode(\"span\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"prefix\")\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _withDirectives(_createElementVNode(\"input\", {\n type: \"text\",\n disabled: _ctx.disabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((number).value = $event)),\n placeholder: _ctx.placeholder,\n onInput: _cache[1] || (_cache[1] = $event => emit('input', $event)),\n onFocus: _cache[2] || (_cache[2] = $event => handleFocus($event)),\n onBlur: _cache[3] || (_cache[3] = $event => handleBlur($event)),\n onChange: _cache[4] || (_cache[4] = $event => emit('change', $event)),\n onKeydown: _cache[5] || (_cache[5] = _withKeys($event => emit('enter', $event), [\"enter\"]))\n }, null, 40, _hoisted_3), [\n [_vModelText, number.value]\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", {\n class: \"handler\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (number.value += _ctx.step))\n }, _hoisted_6),\n _createElementVNode(\"span\", {\n class: \"handler\",\n onClick: _cache[7] || (_cache[7] = ($event: any) => (number.value -= _ctx.step))\n }, _hoisted_8)\n ])\n ]),\n _createElementVNode(\"span\", _hoisted_9, [\n _renderSlot(_ctx.$slots, \"suffix\")\n ])\n ], 2))\n}\n}\n\n})","\n\n\n\n","import script from \"./NumberInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./NumberInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./NumberInput.vue?vue&type=style&index=0&id=268948c2&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-268948c2\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-372c6730\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-generator\" }\nconst _hoisted_2 = { class: \"title\" }\nconst _hoisted_3 = { class: \"lef\" }\nconst _hoisted_4 = [\"onMouseenter\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"custom\"\n}\nconst _hoisted_6 = { class: \"row\" }\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"label\",\n style: {\"width\":\"25%\"}\n}, \"行数:\", -1))\nconst _hoisted_8 = { class: \"row\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"label\",\n style: {\"width\":\"25%\"}\n}, \"列数:\", -1))\nconst _hoisted_10 = { class: \"btns\" }\n\nimport { ref } from 'vue'\nimport message from '@/utils/message'\nimport Button from '@/components/Button.vue'\nimport NumberInput from '@/components/NumberInput.vue'\n\ninterface InsertData {\n row: number\n col: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TableGenerator',\n emits: [\"insert\", \"close\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst endCell = ref([])\nconst customRow = ref(3)\nconst customCol = ref(3)\nconst isCustom = ref(false)\n\nconst handleClickTable = () => {\n if (!endCell.value.length) return\n const [row, col] = endCell.value\n emit('insert', { row, col })\n}\n\nconst insertCustomTable = () => {\n if (customRow.value < 1 || customRow.value > 20) return message.warning('行数/列数必须在0~20之间!')\n if (customCol.value < 1 || customCol.value > 20) return message.warning('行数/列数必须在0~20之间!')\n emit('insert', { row: customRow.value, col: customCol.value })\n isCustom.value = false\n}\n\nconst close = () => {\n emit('close')\n isCustom.value = false\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, \"表格 \" + _toDisplayString(endCell.value.length ? `${endCell.value[0]} x ${endCell.value[1]}` : ''), 1),\n _createElementVNode(\"div\", {\n class: \"right\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (isCustom.value = !isCustom.value))\n }, _toDisplayString(isCustom.value ? '返回' : '自定义'), 1)\n ]),\n (!isCustom.value)\n ? (_openBlock(), _createElementBlock(\"table\", {\n key: 0,\n onMouseleave: _cache[1] || (_cache[1] = ($event: any) => (endCell.value = [])),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (handleClickTable()))\n }, [\n _createElementVNode(\"tbody\", null, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (row) => {\n return _createElementVNode(\"tr\", { key: row }, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(10, (col) => {\n return _createElementVNode(\"td\", {\n onMouseenter: ($event: any) => (endCell.value = [row, col]),\n key: col\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"cell\", { 'active': endCell.value.length && row <= endCell.value[0] && col <= endCell.value[1] }])\n }, null, 2)\n ], 40, _hoisted_4)\n }), 64))\n ])\n }), 64))\n ])\n ], 32))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(NumberInput, {\n min: 1,\n max: 20,\n value: customRow.value,\n \"onUpdate:value\": _cache[3] || (_cache[3] = ($event: any) => ((customRow).value = $event)),\n style: {\"width\":\"75%\"}\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createVNode(NumberInput, {\n min: 1,\n max: 20,\n value: customCol.value,\n \"onUpdate:value\": _cache[4] || (_cache[4] = ($event: any) => ((customCol).value = $event)),\n style: {\"width\":\"75%\"}\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(Button, {\n class: \"btn\",\n onClick: _cache[5] || (_cache[5] = ($event: any) => (close()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (insertCustomTable()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ]))\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./TableGenerator.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TableGenerator.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TableGenerator.vue?vue&type=style&index=0&id=372c6730&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-372c6730\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-35a1214c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"media-input\" }\nconst _hoisted_2 = { class: \"btns\" }\nconst _hoisted_3 = { class: \"btns\" }\n\nimport { ref } from 'vue'\nimport message from '@/utils/message'\nimport Tabs from '@/components/Tabs.vue'\nimport Input from '@/components/Input.vue'\nimport Button from '@/components/Button.vue'\n\ntype TypeKey = 'video' | 'audio'\ninterface TabItem {\n key: TypeKey\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MediaInput',\n emits: [\"insertVideo\", \"insertAudio\", \"close\"],\n setup(__props, { emit: __emit }) {\n\nconst emit = __emit\n\nconst type = ref('video')\n\nconst videoSrc = ref('https://mazwai.com/videvo_files/video/free/2019-01/small_watermarked/181004_04_Dolphins-Whale_06_preview.webm')\nconst audioSrc = ref('https://freesound.org/data/previews/614/614107_11861866-lq.mp3')\n\nconst tabs: TabItem[] = [\n { key: 'video', label: '视频' },\n { key: 'audio', label: '音频' },\n]\n\nconst insertVideo = () => {\n if (!videoSrc.value) return message.error('请先输入正确的视频地址')\n emit('insertVideo', videoSrc.value)\n}\n\nconst insertAudio = () => {\n if (!audioSrc.value) return message.error('请先输入正确的音频地址')\n emit('insertAudio', audioSrc.value)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Tabs, {\n tabs: tabs,\n value: type.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((type).value = $event)),\n tabsStyle: { marginBottom: '15px' }\n }, null, 8, [\"value\"]),\n (type.value === 'video')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(Input, {\n value: videoSrc.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((videoSrc).value = $event)),\n placeholder: \"请输入视频地址,e.g. https://xxx.mp4\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(Button, {\n onClick: _cache[2] || (_cache[2] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (insertVideo()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true),\n (type.value === 'audio')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(Input, {\n value: audioSrc.value,\n \"onUpdate:value\": _cache[4] || (_cache[4] = ($event: any) => ((audioSrc).value = $event)),\n placeholder: \"请输入音频地址,e.g. https://xxx.mp3\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(Button, {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (emit('close'))),\n style: {\"margin-right\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n type: \"primary\",\n onClick: _cache[6] || (_cache[6] = ($event: any) => (insertAudio()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确认\")\n ]),\n _: 1\n })\n ])\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./MediaInput.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MediaInput.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MediaInput.vue?vue&type=style&index=0&id=35a1214c&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-35a1214c\"]])\n\nexport default __exports__","import { hfmath, CONFIG as hfmathConfig } from 'hfmath'\n\nhfmathConfig.SUB_SUP_SCALE = 0.5\n\nexport { hfmath }","export const FORMULA_LIST = [\n {\n label: '高斯公式',\n latex: `\\\\int\\\\int\\\\int _ { \\\\Omega } \\\\left( \\\\frac { \\\\partial {P} } { \\\\partial {x} } + \\\\frac { \\\\partial {Q} } { \\\\partial {y} } + \\\\frac { \\\\partial {R} }{ \\\\partial {z} } \\\\right) \\\\mathrm { d } V = \\\\oint _ { \\\\partial \\\\Omega } ( P \\\\cos \\\\alpha + Q \\\\cos \\\\beta + R \\\\cos \\\\gamma ) \\\\mathrm{ d} S`\n },\n {\n label: '傅里叶级数',\n latex: `f(x) = \\\\frac {a_0} 2 + \\\\sum_{n = 1}^\\\\infty {({a_n}\\\\cos {nx} + {b_n}\\\\sin {nx})}`,\n },\n {\n label: '泰勒展开式',\n latex: `e ^ { x } = 1 + \\\\frac { x } { 1 ! } + \\\\frac { x ^ { 2 } } { 2 ! } + \\\\frac { x ^ { 3 } } { 3 ! } + ... , \\\\quad - \\\\infty < x < \\\\infty`,\n },\n {\n label: '定积分',\n latex: `\\\\lim_ { n \\\\rightarrow + \\\\infty } \\\\sum _ { i = 1 } ^ { n } f \\\\left[ a + \\\\frac { i } { n } ( b - a ) \\\\right] \\\\frac { b - a } { n } = \\\\int _ { a } ^ { b } f ( x ) dx`,\n },\n {\n label: '三角恒等式1',\n latex: `\\\\sin \\\\alpha \\\\pm \\\\sin \\\\beta = 2 \\\\sin \\\\frac { 1 } { 2 } ( \\\\alpha \\\\pm \\\\beta ) \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha \\\\mp \\\\beta )`,\n },\n {\n label: '三角恒等式2',\n latex: `\\\\cos \\\\alpha + \\\\cos \\\\beta = 2 \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha + \\\\beta ) \\\\cos \\\\frac { 1 } { 2 } ( \\\\alpha - \\\\beta )`,\n },\n {\n label: '和的展开式',\n latex: `( 1 + x ) ^ { n } = 1 + \\\\frac { n x } { 1 ! } + \\\\frac { n ( n - 1 ) x ^ { 2 } } { 2 ! } + ...`,\n },\n {\n label: '欧拉公式',\n latex: ` e^{ix} = \\\\cos {x} + i\\\\sin {x}`,\n },\n {\n label: '贝努利方程',\n latex: `\\\\frac {dy} {dx} + P(x)y = Q(x) y^n ({n} \\\\not= {0,1})`,\n },\n {\n label: '全微分方程',\n latex: `du(x,y) = P(x,y)dx + Q(x,y)dy = 0`,\n },\n {\n label: '非齐次方程',\n latex: `y = (\\\\int Q(x) e^{\\\\int {P(x)dx}}dx + C)e^{-\\\\int {P(x)dx}}`,\n },\n {\n label: '柯西中值定理',\n latex: `\\\\frac{{f(b) - f(a)}}{{F(b) - F(a)}} = \\\\frac{{f'(\\\\xi )}}{{F'(\\\\xi )}}`,\n },\n {\n label: '拉格朗日中值定理',\n latex: `f(b) - f(a) = f'(\\\\xi )(b - a)`,\n },\n {\n label: '导数公式',\n latex: `(\\\\arcsin x)' = \\\\frac{1}{{\\\\sqrt {1 - x^2} }}`,\n },\n {\n label: '三角函数积分',\n latex: `\\\\int {tgxdx = - \\\\ln \\\\left| {\\\\cos x} \\\\right| + C}`,\n },\n {\n label: '二次曲面',\n latex: `\\\\frac{{{x^2}}}{{{a^2}}} + \\\\frac{{{y^2}}}{{{b^2}}} - \\\\frac{{{z^2}}}{{{c^2}}} = 1`,\n },\n {\n label: '二阶微分',\n latex: `\\\\frac {{d^2}y} {dx^2} + P(x) \\\\frac {dy} {dx} + Q(x)y = f(x)`,\n },\n {\n label: '方向导数',\n latex: `\\\\frac{{\\\\partial f}}{{\\\\partial l}} = \\\\frac{{\\\\partial f}}{{\\\\partial x}}\\\\cos \\\\phi + \\\\frac{{\\\\partial f}}{{\\\\partial y}}\\\\sin \\\\phi`,\n },\n]\n\nexport const SYMBOL_LIST = [\n {\n type: 'operators',\n label: '数学',\n children: [\n { latex: '\\\\cdot' },\n { latex: '\\\\pm' },\n { latex: '\\\\mp' },\n { latex: '+' },\n { latex: '-' },\n { latex: '\\\\times' },\n { latex: '\\\\div' },\n { latex: '<' },\n { latex: '>' },\n { latex: '=' },\n { latex: '\\\\neq\\\\ne' },\n { latex: '\\\\leqq' },\n { latex: '\\\\geqq' },\n { latex: '\\\\leq' },\n { latex: '\\\\geq' },\n { latex: '\\\\propto' },\n { latex: '\\\\sim' },\n { latex: '\\\\equiv' },\n { latex: '\\\\dagger' },\n { latex: '\\\\ddagger' },\n { latex: '\\\\ell' },\n { latex: '\\\\#' },\n { latex: '\\\\$' },\n { latex: '\\\\&' },\n { latex: '\\\\%' },\n { latex: '\\\\langle\\\\rangle' },\n { latex: '()' },\n { latex: '[]' },\n { latex: '\\\\{\\\\}' },\n { latex: '||' },\n { latex: '\\\\|' },\n { latex: '\\\\exists' },\n { latex: '\\\\in' },\n { latex: '\\\\subset' },\n { latex: '\\\\supset' },\n { latex: '\\\\cup' },\n { latex: '\\\\cap' },\n { latex: '\\\\infty' },\n { latex: '\\\\partial' },\n { latex: '\\\\nabla' },\n { latex: '\\\\aleph' },\n { latex: '\\\\wp' },\n { latex: '\\\\therefore' },\n { latex: '\\\\mid' },\n { latex: '\\\\sum' },\n { latex: '\\\\prod' },\n { latex: '\\\\bigoplus' },\n { latex: '\\\\bigodot' },\n { latex: '\\\\int' },\n { latex: '\\\\oint' },\n { latex: '\\\\oplus' },\n { latex: '\\\\odot' },\n { latex: '\\\\perp' },\n { latex: '\\\\angle' },\n { latex: '\\\\triangle' },\n { latex: '\\\\Box' },\n { latex: '\\\\rightarrow' },\n { latex: '\\\\to' },\n { latex: '\\\\leftarrow' },\n { latex: '\\\\gets' },\n { latex: '\\\\circ' },\n { latex: '\\\\bigcirc' },\n { latex: '\\\\bullet' },\n { latex: '\\\\star' },\n { latex: '\\\\diamond' },\n { latex: '\\\\ast' },\n { latex: ',' },\n { latex: '.' },\n { latex: ';' },\n { latex: '!' },\n ],\n },\n {\n type: 'group',\n label: '组合',\n children: [\n { latex: '\\\\frac{a}{b}' },\n { latex: '\\\\frac{dx}{dx}' },\n { latex: '\\\\frac{\\\\partial a}{\\\\partial b}' },\n { latex: '\\\\sqrt{x}' },\n { latex: '\\\\sqrt[n]{x}' },\n { latex: 'x^{n}' },\n { latex: 'x_{n}' },\n { latex: 'x_a^b' },\n { latex: '\\\\int_{a}^{b}' },\n { latex: '\\\\oint_a^b' },\n { latex: '\\\\lim_{a \\\\rightarrow b}' },\n { latex: '\\\\prod_a^b' },\n { latex: '\\\\sum_a^b' },\n { latex: '\\\\left(\\\\begin{array}a \\\\\\\\ b\\\\end{array}\\\\right)' },\n { latex: '\\\\begin{bmatrix}a & b \\\\\\\\ c & d \\\\end{bmatrix}' },\n { latex: '\\\\begin{cases}a & x = 0 \\\\\\\\ b & x > 0\\\\end{cases}' },\n { latex: '\\\\hat{a}' },\n { latex: '\\\\breve{a}' },\n { latex: '\\\\acute{a}' },\n { latex: '\\\\grave{a}' },\n { latex: '\\\\tilde{a}' },\n { latex: '\\\\bar{a}' },\n { latex: '\\\\vec{a}' },\n { latex: '\\\\underline{a}' },\n { latex: '\\\\overline{a}' },\n { latex: '\\\\widehat{ab}' },\n { latex: '\\\\overleftarrow{ab}' },\n { latex: '\\\\overrightarrow{ab}' },\n ],\n },\n {\n type: 'verbatim',\n label: '函数',\n children: [\n { latex: '\\\\log' },\n { latex: '\\\\ln' },\n { latex: '\\\\exp' },\n { latex: '\\\\mod' },\n { latex: '\\\\lim' },\n { latex: '\\\\sin' },\n { latex: '\\\\cos' },\n { latex: '\\\\tan' },\n { latex: '\\\\csc' },\n { latex: '\\\\sec' },\n { latex: '\\\\cot' },\n { latex: '\\\\sinh' },\n { latex: '\\\\cosh' },\n { latex: '\\\\tanh' },\n { latex: '\\\\csch' },\n { latex: '\\\\sech' },\n { latex: '\\\\coth' },\n { latex: '\\\\arcsin' },\n { latex: '\\\\arccos' },\n { latex: '\\\\arctan' },\n { latex: '\\\\arccsc' },\n { latex: '\\\\arcsec' },\n { latex: '\\\\arccot' },\n ],\n },\n {\n type: 'greek',\n label: '希腊字母',\n children: [\n { latex: '\\\\alpha' },\n { latex: '\\\\beta' },\n { latex: '\\\\gamma' },\n { latex: '\\\\delta' },\n { latex: '\\\\varepsilon' },\n { latex: '\\\\zeta' },\n { latex: '\\\\eta' },\n { latex: '\\\\vartheta' },\n { latex: '\\\\iota' },\n { latex: '\\\\kappa' },\n { latex: '\\\\lambda' },\n { latex: '\\\\mu' },\n { latex: '\\\\nu' },\n { latex: '\\\\xi' },\n { latex: '\\\\omicron' },\n { latex: '\\\\pi' },\n { latex: '\\\\rho' },\n { latex: '\\\\sigma' },\n { latex: '\\\\tau' },\n { latex: '\\\\upsilon' },\n { latex: '\\\\varphi' },\n { latex: '\\\\chi' },\n { latex: '\\\\psi' },\n { latex: '\\\\omega' },\n { latex: '\\\\epsilon' },\n { latex: '\\\\theta' },\n { latex: '\\\\phi' },\n { latex: '\\\\varsigma' },\n { latex: '\\\\Alpha' },\n { latex: '\\\\Beta' },\n { latex: '\\\\Gamma' },\n { latex: '\\\\Delta' },\n { latex: '\\\\Epsilon' },\n { latex: '\\\\Zeta' },\n { latex: '\\\\Eta' },\n { latex: '\\\\Theta' },\n { latex: '\\\\Iota' },\n { latex: '\\\\Kappa' },\n { latex: '\\\\Lambda' },\n { latex: '\\\\Mu' },\n { latex: '\\\\Nu' },\n { latex: '\\\\Xi' },\n { latex: '\\\\Omicron' },\n { latex: '\\\\Pi' },\n { latex: '\\\\Rho' },\n { latex: '\\\\Sigma' },\n { latex: '\\\\Tau' },\n { latex: '\\\\Upsilon' },\n { latex: '\\\\Phi' },\n { latex: '\\\\Chi' },\n { latex: '\\\\Psi' },\n { latex: '\\\\Omega' },\n ],\n },\n]","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-567417d3\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"width\", \"height\"]\nconst _hoisted_2 = [\"transform\"]\nconst _hoisted_3 = [\"d\"]\n\nimport { computed, ref, watch } from 'vue'\nimport { hfmath } from './hfmath'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FormulaContent',\n props: {\n latex: {},\n width: {},\n height: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst box = ref({ x: 0, y: 0, w: 0, h: 0 })\nconst pathd = ref('')\n\nwatch(() => props.latex, () => {\n const eq = new hfmath(props.latex)\n pathd.value = eq.pathd({})\n box.value = eq.box({})\n}, { immediate: true })\n\nconst scale = computed(() => {\n const boxW = box.value.w + 32\n const boxH = box.value.h + 32\n\n if (boxW > props.width || boxH > props.height) {\n if (boxW / boxH > props.width / props.height) return props.width / boxW\n return props.height / boxH\n }\n return 1\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"svg\", {\n class: \"formula-content\",\n overflow: \"visible\",\n width: box.value.w + 32,\n height: box.value.h + 32,\n stroke: \"#000\",\n \"stroke-width\": \"1\",\n fill: \"none\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }, [\n _createElementVNode(\"g\", {\n transform: `scale(${scale.value}, ${scale.value}) translate(0,0) matrix(1,0,0,1,0,0)`,\n \"transform-origin\": \"0 50%\"\n }, [\n _createElementVNode(\"path\", { d: pathd.value }, null, 8, _hoisted_3)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n}\n}\n\n})","\n\n\n\n","import script from \"./FormulaContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FormulaContent.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./FormulaContent.vue?vue&type=style&index=0&id=567417d3&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-567417d3\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\n\nimport { computed } from 'vue'\nimport { hfmath } from './hfmath'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SymbolContent',\n props: {\n latex: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst svg = computed(() => {\n const eq = new hfmath(props.latex)\n return eq.svg({\n SCALE_X: 10,\n SCALE_Y: 10,\n })\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-content\",\n innerHTML: svg.value\n }, null, 8, _hoisted_1))\n}\n}\n\n})","\n\n\n","import script from \"./SymbolContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SymbolContent.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-65d72404\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"disabled\", \"value\", \"rows\", \"placeholder\"]\n\nimport { ref } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TextArea',\n props: {\n value: {},\n rows: { default: 4 },\n disabled: { type: Boolean, default: false },\n resizable: { type: Boolean, default: false },\n placeholder: { default: '' }\n },\n emits: [\"update:value\"],\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\n\n\nconst emit = __emit\n\nconst handleInput = (e: Event) => {\n emit('update:value', (e.target as HTMLInputElement).value)\n}\n\nconst textareaRef = ref()\nconst focus = () => {\n if (textareaRef.value) textareaRef.value.focus()\n}\n\n__expose({\n focus,\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"textarea\", {\n class: _normalizeClass([\"textarea\", {\n 'disabled': _ctx.disabled,\n 'resizable': _ctx.resizable,\n }]),\n ref_key: \"textareaRef\",\n ref: textareaRef,\n disabled: _ctx.disabled,\n value: _ctx.value,\n rows: _ctx.rows,\n placeholder: _ctx.placeholder,\n onInput: _cache[0] || (_cache[0] = $event => handleInput($event))\n }, null, 42, _hoisted_1))\n}\n}\n\n})","\n\n\n\n","import script from \"./TextArea.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./TextArea.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./TextArea.vue?vue&type=style&index=0&id=65d72404&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-65d72404\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-49a14edf\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"latex-editor\" }\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = { class: \"left\" }\nconst _hoisted_4 = { class: \"input-area\" }\nconst _hoisted_5 = { class: \"preview\" }\nconst _hoisted_6 = {\n key: 0,\n class: \"placeholder\"\n}\nconst _hoisted_7 = {\n key: 1,\n class: \"preview-content\"\n}\nconst _hoisted_8 = { class: \"right\" }\nconst _hoisted_9 = { class: \"content\" }\nconst _hoisted_10 = {\n key: 0,\n class: \"symbol\"\n}\nconst _hoisted_11 = { class: \"symbol-pool\" }\nconst _hoisted_12 = [\"onClick\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"formula\"\n}\nconst _hoisted_14 = { class: \"formula-title\" }\nconst _hoisted_15 = [\"onClick\"]\nconst _hoisted_16 = { class: \"footer\" }\n\nimport { computed, onMounted, ref } from 'vue'\nimport { hfmath } from './hfmath'\nimport { FORMULA_LIST, SYMBOL_LIST } from '@/configs/latex'\nimport message from '@/utils/message'\n\nimport FormulaContent from './FormulaContent.vue'\nimport SymbolContent from './SymbolContent.vue'\nimport Button from '../Button.vue'\nimport TextArea from '../TextArea.vue'\nimport Tabs from '../Tabs.vue'\n\ninterface TabItem {\n key: 'symbol' | 'formula'\n label: string\n}\n\ninterface LatexResult {\n latex: string\n path: string\n w: number\n h: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n value: { default: '' }\n },\n emits: [\"update\", \"close\"],\n setup(__props: any, { emit: __emit }) {\n\nconst tabs: TabItem[] = [\n { label: '常用符号', key: 'symbol' },\n { label: '预置公式', key: 'formula' },\n]\n\nconst props = __props\n\nconst emit = __emit\n\nconst formulaList = FORMULA_LIST\n\nconst symbolTabs = SYMBOL_LIST.map(item => ({\n label: item.label,\n key: item.type,\n}))\n\nconst latex = ref('')\nconst toolbarState = ref<'symbol' | 'formula'>('symbol')\nconst textAreaRef = ref>()\n\nconst selectedSymbolKey = ref(SYMBOL_LIST[0].type)\nconst symbolPool = computed(() => {\n const selectedSymbol = SYMBOL_LIST.find(item => item.type === selectedSymbolKey.value)\n return selectedSymbol?.children || []\n})\n\nonMounted(() => {\n if (props.value) latex.value = props.value\n})\n\nconst update = () => {\n if (!latex.value) return message.error('公式不能为空')\n\n const eq = new hfmath(latex.value)\n const pathd = eq.pathd({})\n const box = eq.box({})\n \n emit('update', {\n latex: latex.value,\n path: pathd,\n w: box.w + 32,\n h: box.h + 32,\n })\n}\n\nconst insertSymbol = (latex: string) => {\n if (!textAreaRef.value) return\n textAreaRef.value.focus()\n document.execCommand('insertText', false, latex)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(TextArea, {\n value: latex.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((latex).value = $event)),\n placeholder: \"输入 LaTeX 公式\",\n ref_key: \"textAreaRef\",\n ref: textAreaRef\n }, null, 8, [\"value\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n (!latex.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, \"公式预览\"))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createVNode(FormulaContent, {\n width: 518,\n height: 138,\n latex: latex.value\n }, null, 8, [\"latex\"])\n ]))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(Tabs, {\n tabs: tabs,\n value: toolbarState.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = ($event: any) => ((toolbarState).value = $event)),\n card: \"\"\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_9, [\n (toolbarState.value === 'symbol')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(Tabs, {\n tabs: _unref(symbolTabs),\n value: selectedSymbolKey.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((selectedSymbolKey).value = $event)),\n spaceBetween: \"\",\n tabsStyle: { margin: '10px 10px 0' }\n }, null, 8, [\"tabs\", \"value\"]),\n _createElementVNode(\"div\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(symbolPool.value, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"symbol-item\",\n key: item.latex,\n onClick: ($event: any) => (insertSymbol(item.latex))\n }, [\n _createVNode(SymbolContent, {\n latex: item.latex\n }, null, 8, [\"latex\"])\n ], 8, _hoisted_12))\n }), 128))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(formulaList), (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"formula-item\",\n key: item.label\n }, [\n _createElementVNode(\"div\", _hoisted_14, _toDisplayString(item.label), 1),\n _createElementVNode(\"div\", {\n class: \"formula-item-content\",\n onClick: ($event: any) => (latex.value = item.latex)\n }, [\n _createVNode(FormulaContent, {\n width: 236,\n height: 60,\n latex: item.latex\n }, null, 8, [\"latex\"])\n ], 8, _hoisted_15)\n ]))\n }), 128))\n ]))\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(Button, {\n class: \"btn\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emit('close')))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"取消\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n class: \"btn\",\n type: \"primary\",\n onClick: _cache[4] || (_cache[4] = ($event: any) => (update()))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\"确定\")\n ]),\n _: 1\n })\n ])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./SlideToolbar.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./SlideToolbar.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./SlideToolbar.vue?vue&type=style&index=0&id=24150aba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-24150aba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, resolveComponent as _resolveComponent, withCtx as _withCtx, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f3d1ac70\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"element-toolbar\" }\nconst _hoisted_2 = { class: \"content\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"style\"\n}\nconst _hoisted_4 = { class: \"row-block\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"文字颜色:\", -1))\nconst _hoisted_6 = { class: \"colors\" }\nconst _hoisted_7 = [\"onClick\"]\nconst _hoisted_8 = { class: \"row-block\" }\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"label\" }, \"填充色:\", -1))\nconst _hoisted_10 = { class: \"colors\" }\nconst _hoisted_11 = [\"onClick\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"common\"\n}\n\nimport { ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement, TableCell } from '@/types/slides'\nimport { ElementAlignCommands, ElementOrderCommands } from '@/types/edit'\nimport emitter, { EmitterEvents } from '@/utils/emitter'\nimport useOrderElement from '@/hooks/useOrderElement'\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\nimport useDeleteElement from '@/hooks/useDeleteElement'\nimport useAddSlidesOrElements from '@/hooks/useAddSlidesOrElements'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\nimport CheckboxButton from '@/components/CheckboxButton.vue'\nimport Tabs from '@/components/Tabs.vue'\nimport Divider from '@/components/Divider.vue'\nimport Button from '@/components/Button.vue'\nimport ButtonGroup from '@/components/ButtonGroup.vue'\nimport RadioButton from '@/components/RadioButton.vue'\nimport RadioGroup from '@/components/RadioGroup.vue'\n\ninterface TabItem {\n key: 'style' | 'common'\n label: string\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ElementToolbar',\n setup(__props) {\n\nconst colors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c', '#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57']\n\nconst mainStore = useMainStore()\nconst slidesStore = useSlidesStore()\nconst { handleElement, handleElementId, richTextAttrs } = storeToRefs(mainStore)\n\nconst { addHistorySnapshot } = useHistorySnapshot()\n\nconst updateElement = (id: string, props: Partial) => {\n slidesStore.updateElement({ id, props })\n addHistorySnapshot()\n}\n\nconst tabs: TabItem[] = [\n { key: 'style', label: '样式' },\n { key: 'common', label: '布局' },\n]\nconst activeTab = ref('common')\n\nconst { orderElement } = useOrderElement()\nconst { alignElementToCanvas } = useAlignElementToCanvas()\nconst { addElementsFromData } = useAddSlidesOrElements()\nconst { deleteElement } = useDeleteElement()\n\nconst copyElement = () => {\n const element: PPTElement = JSON.parse(JSON.stringify(handleElement.value))\n addElementsFromData([element])\n}\n\nconst emitRichTextCommand = (command: string, value?: string) => {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command, value } })\n}\n\nconst updateFontColor = (color: string) => {\n if (!handleElement.value) return\n if (handleElement.value.type === 'text' || (handleElement.value.type === 'shape' && handleElement.value.text?.content)) {\n emitter.emit(EmitterEvents.RICH_TEXT_COMMAND, { action: { command: 'color', value: color } })\n }\n if (handleElement.value.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, color }\n }\n }\n updateElement(handleElementId.value, { data })\n }\n if (handleElement.value.type === 'latex') {\n updateElement(handleElementId.value, { color })\n }\n}\n\nconst updateFill = (color: string) => {\n if (!handleElement.value) return\n if (\n handleElement.value.type === 'text' ||\n handleElement.value.type === 'shape' ||\n handleElement.value.type === 'chart'\n ) updateElement(handleElementId.value, { fill: color })\n\n if (handleElement.value.type === 'table') {\n const data: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\n for (let i = 0; i < data.length; i++) {\n for (let j = 0; j < data[i].length; j++) {\n const style = data[i][j].style || {}\n data[i][j].style = { ...style, backcolor: color }\n }\n }\n updateElement(handleElementId.value, { data })\n }\n\n if (handleElement.value.type === 'audio') updateElement(handleElementId.value, { color })\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconTextBold = _resolveComponent(\"IconTextBold\")!\n const _component_IconTextItalic = _resolveComponent(\"IconTextItalic\")!\n const _component_IconTextUnderline = _resolveComponent(\"IconTextUnderline\")!\n const _component_IconStrikethrough = _resolveComponent(\"IconStrikethrough\")!\n const _component_IconFontSize = _resolveComponent(\"IconFontSize\")!\n const _component_IconAlignTextLeft = _resolveComponent(\"IconAlignTextLeft\")!\n const _component_IconAlignTextCenter = _resolveComponent(\"IconAlignTextCenter\")!\n const _component_IconAlignTextRight = _resolveComponent(\"IconAlignTextRight\")!\n const _component_IconCopy = _resolveComponent(\"IconCopy\")!\n const _component_IconDelete = _resolveComponent(\"IconDelete\")!\n const _component_IconSendToBack = _resolveComponent(\"IconSendToBack\")!\n const _component_IconBringToFrontOne = _resolveComponent(\"IconBringToFrontOne\")!\n const _component_IconBringToFront = _resolveComponent(\"IconBringToFront\")!\n const _component_IconSentToBack = _resolveComponent(\"IconSentToBack\")!\n const _component_IconAlignLeft = _resolveComponent(\"IconAlignLeft\")!\n const _component_IconAlignVertically = _resolveComponent(\"IconAlignVertically\")!\n const _component_IconAlignRight = _resolveComponent(\"IconAlignRight\")!\n const _component_IconAlignTop = _resolveComponent(\"IconAlignTop\")!\n const _component_IconAlignHorizontally = _resolveComponent(\"IconAlignHorizontally\")!\n const _component_IconAlignBottom = _resolveComponent(\"IconAlignBottom\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Tabs, {\n tabs: tabs,\n value: activeTab.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = ($event: any) => ((activeTab).value = $event)),\n tabsStyle: { marginBottom: '8px' },\n tabStyle: {\n width: '30%',\n margin: '0 10%',\n }\n }, null, 8, [\"value\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n (activeTab.value === 'style')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).bold,\n onClick: _cache[1] || (_cache[1] = ($event: any) => (emitRichTextCommand('bold')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextBold)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).em,\n onClick: _cache[2] || (_cache[2] = ($event: any) => (emitRichTextCommand('em')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextItalic)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).underline,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (emitRichTextCommand('underline')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconTextUnderline)\n ]),\n _: 1\n }, 8, [\"checked\"]),\n _createVNode(CheckboxButton, {\n style: {\"flex\":\"1\"},\n checked: _unref(richTextAttrs).strikethrough,\n onClick: _cache[4] || (_cache[4] = ($event: any) => (emitRichTextCommand('strikethrough')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconStrikethrough)\n ]),\n _: 1\n }, 8, [\"checked\"])\n ]),\n _: 1\n }),\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[5] || (_cache[5] = ($event: any) => (emitRichTextCommand('fontsize-add')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _createTextVNode(\"+\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[6] || (_cache[6] = ($event: any) => (emitRichTextCommand('fontsize-reduce')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconFontSize),\n _createTextVNode(\"-\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(RadioGroup, {\n class: \"row\",\n \"button-style\": \"solid\",\n value: _unref(richTextAttrs).align,\n \"onUpdate:value\": _cache[7] || (_cache[7] = value => emitRichTextCommand('align', value))\n }, {\n default: _withCtx(() => [\n _createVNode(RadioButton, {\n value: \"left\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextLeft)\n ]),\n _: 1\n }),\n _createVNode(RadioButton, {\n value: \"center\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextCenter)\n ]),\n _: 1\n }),\n _createVNode(RadioButton, {\n value: \"right\",\n style: {\"flex\":\"1\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTextRight)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(Divider, { style: {\"margin\":\"20px 0\"} }),\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"div\", _hoisted_6, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(colors, (color) => {\n return _createElementVNode(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (updateFontColor(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_7)\n }), 64))\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _hoisted_9,\n _createElementVNode(\"div\", _hoisted_10, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(colors, (color) => {\n return _createElementVNode(\"div\", {\n class: \"color\",\n key: color,\n onClick: ($event: any) => (updateFill(color))\n }, [\n _createElementVNode(\"div\", {\n class: \"color-block\",\n style: _normalizeStyle({ backgroundColor: color })\n }, null, 4)\n ], 8, _hoisted_11)\n }), 64))\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (activeTab.value === 'common')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[8] || (_cache[8] = ($event: any) => (copyElement()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconCopy, { class: \"icon\" }),\n _createTextVNode(\" 复制\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[9] || (_cache[9] = ($event: any) => (_unref(deleteElement)()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconDelete, { class: \"icon\" }),\n _createTextVNode(\" 删除\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[10] || (_cache[10] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).TOP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSendToBack, { class: \"icon\" }),\n _createTextVNode(\" 置顶\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).BOTTOM)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFrontOne, { class: \"icon\" }),\n _createTextVNode(\" 置底\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[12] || (_cache[12] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).UP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconBringToFront, { class: \"icon\" }),\n _createTextVNode(\" 上移\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[13] || (_cache[13] = ($event: any) => (_unref(orderElement)(_unref(handleElement)!, _unref(ElementOrderCommands).DOWN)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconSentToBack, { class: \"icon\" }),\n _createTextVNode(\" 下移\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(Divider, { style: {\"margin\":\"20px 0\"} }),\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).LEFT)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignLeft, { class: \"icon\" }),\n _createTextVNode(\" 左对齐\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[15] || (_cache[15] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).HORIZONTAL)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignVertically, { class: \"icon\" }),\n _createTextVNode(\" 水平居中\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[16] || (_cache[16] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).RIGHT)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignRight, { class: \"icon\" }),\n _createTextVNode(\" 右对齐\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(ButtonGroup, { class: \"row\" }, {\n default: _withCtx(() => [\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[17] || (_cache[17] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).TOP)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignTop, { class: \"icon\" }),\n _createTextVNode(\" 上对齐\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).VERTICAL)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignHorizontally, { class: \"icon\" }),\n _createTextVNode(\" 垂直居中\")\n ]),\n _: 1\n }),\n _createVNode(Button, {\n style: {\"flex\":\"1\"},\n onClick: _cache[19] || (_cache[19] = ($event: any) => (_unref(alignElementToCanvas)(_unref(ElementAlignCommands).BOTTOM)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_IconAlignBottom, { class: \"icon\" }),\n _createTextVNode(\" 下对齐\")\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./ElementToolbar.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./ElementToolbar.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./ElementToolbar.vue?vue&type=style&index=0&id=f3d1ac70&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f3d1ac70\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5c34ab81\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor-header\" }\nconst _hoisted_2 = { class: \"history\" }\n\nimport { storeToRefs } from 'pinia'\nimport { useSnapshotStore } from '@/store'\nimport type { Mode } from '@/types/mobile'\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Header',\n props: {\n changeMode: { type: Function }\n },\n setup(__props: any) {\n\n\n\nconst { canUndo, canRedo } = storeToRefs(useSnapshotStore())\nconst { redo, undo } = useHistorySnapshot()\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconBack = _resolveComponent(\"IconBack\")!\n const _component_IconNext = _resolveComponent(\"IconNext\")!\n const _component_IconLogout = _resolveComponent(\"IconLogout\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"history-item\", { 'disable': !_unref(canUndo) }]),\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_unref(undo)()), [\"stop\"]))\n }, [\n _createVNode(_component_IconBack),\n _createTextVNode(\" 撤销\")\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"history-item\", { 'disable': !_unref(canRedo) }]),\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_unref(redo)()), [\"stop\"]))\n }, [\n _createVNode(_component_IconNext),\n _createTextVNode(\" 重做\")\n ], 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"back\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _createTextVNode(\" 退出编辑\")\n ])\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./Header.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Header.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./Header.vue?vue&type=style&index=0&id=5c34ab81&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5c34ab81\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, unref as _unref, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-3756d058\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile-editor\" }\n\nimport { computed, onMounted, ref, watchEffect } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useMainStore, useSlidesStore } from '@/store'\nimport type { PPTElement } from '@/types/slides'\nimport type { AlignmentLineProps } from '@/types/edit'\nimport type { Mode } from '@/types/mobile'\nimport { VIEWPORT_SIZE } from '@/configs/canvas'\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\nimport useDragElement from '@/views/Editor/Canvas/hooks/useDragElement'\nimport useScaleElement from '@/views/Editor/Canvas/hooks/useScaleElement'\nimport useRotateElement from '@/views/Editor/Canvas/hooks/useRotateElement'\n\nimport AlignmentLine from '@/views/Editor/Canvas/AlignmentLine.vue'\nimport MobileEditableElement from './MobileEditableElement.vue'\nimport MobileOperate from './MobileOperate.vue'\nimport SlideToolbar from './SlideToolbar.vue'\nimport ElementToolbar from './ElementToolbar.vue'\nimport Header from './Header.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n changeMode: { type: Function }\n },\n setup(__props: any) {\n\n\n\nconst slidesStore = useSlidesStore()\nconst mainStore = useMainStore()\nconst { slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\nconst { activeElementIdList, handleElement } = storeToRefs(mainStore)\n\nconst contentRef = ref()\nconst viewportRef = ref()\n\nconst alignmentLines = ref([])\n\nconst background = computed(() => currentSlide.value.background)\nconst { backgroundStyle } = useSlideBackgroundStyle(background)\n\nconst canvasScale = computed(() => {\n if (!contentRef.value) return 1\n const contentWidth = contentRef.value.clientWidth\n const contentheight = contentRef.value.clientHeight\n\n const contentRatio = contentheight / contentWidth\n if (contentRatio >= viewportRatio.value) return (contentWidth - 20) / VIEWPORT_SIZE\n return (contentheight - 20) / viewportRatio.value / VIEWPORT_SIZE\n})\n\nonMounted(() => {\n if (activeElementIdList.value.length) mainStore.setActiveElementIdList([])\n if (slideIndex.value !== 0) slidesStore.updateSlideIndex(0)\n})\n\nconst viewportStyles = computed(() => ({\n width: VIEWPORT_SIZE * canvasScale.value + 'px',\n height: VIEWPORT_SIZE * viewportRatio.value * canvasScale.value + 'px',\n}))\n\nconst elementList = ref([])\nconst setLocalElementList = () => {\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\n}\nwatchEffect(setLocalElementList)\n\nconst { dragElement } = useDragElement(elementList, alignmentLines, canvasScale)\nconst { scaleElement } = useScaleElement(elementList, alignmentLines, canvasScale)\nconst { rotateElement } = useRotateElement(elementList, viewportRef, canvasScale)\n\nconst selectElement = (e: TouchEvent, element: PPTElement, startMove = true) => {\n if (!activeElementIdList.value.includes(element.id)) {\n mainStore.setActiveElementIdList([element.id])\n mainStore.setHandleElementId(element.id)\n }\n if (startMove) dragElement(e, element)\n}\n\nconst handleClickBlankArea = () => {\n mainStore.setActiveElementIdList([])\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(Header, { changeMode: _ctx.changeMode }, null, 8, [\"changeMode\"]),\n _createElementVNode(\"div\", {\n class: \"content\",\n ref_key: \"contentRef\",\n ref: contentRef,\n onTouchstart: _cache[0] || (_cache[0] = ($event: any) => (handleClickBlankArea()))\n }, [\n _createElementVNode(\"div\", {\n class: \"viewport-wrapper\",\n style: _normalizeStyle(viewportStyles.value)\n }, [\n _createElementVNode(\"div\", {\n class: \"background\",\n style: _normalizeStyle(_unref(backgroundStyle))\n }, null, 4),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(alignmentLines.value, (line, index) => {\n return (_openBlock(), _createBlock(AlignmentLine, {\n key: index,\n type: line.type,\n axis: line.axis,\n length: line.length,\n canvasScale: canvasScale.value\n }, null, 8, [\"type\", \"axis\", \"length\", \"canvasScale\"]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: element.id\n }, [\n (element.type !== 'line')\n ? (_openBlock(), _createBlock(MobileOperate, {\n key: 0,\n elementInfo: element,\n isSelected: _unref(activeElementIdList).includes(element.id),\n canvasScale: canvasScale.value,\n scaleElement: _unref(scaleElement),\n rotateElement: _unref(rotateElement)\n }, null, 8, [\"elementInfo\", \"isSelected\", \"canvasScale\", \"scaleElement\", \"rotateElement\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128)),\n _createElementVNode(\"div\", {\n class: \"viewport\",\n ref_key: \"viewportRef\",\n ref: viewportRef,\n style: _normalizeStyle({ transform: `scale(${canvasScale.value})` })\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(elementList.value, (element, index) => {\n return (_openBlock(), _createBlock(MobileEditableElement, {\n key: element.id,\n elementInfo: element,\n elementIndex: index + 1,\n selectElement: selectElement\n }, null, 8, [\"elementInfo\", \"elementIndex\"]))\n }), 128))\n ], 4)\n ], 4)\n ], 544),\n _createVNode(SlideToolbar),\n (_unref(handleElement))\n ? (_openBlock(), _createBlock(ElementToolbar, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=3756d058&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-3756d058\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-62f26eba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\n\nimport { computed, onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport type { Mode } from '@/types/mobile'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport MobileThumbnails from './MobileThumbnails.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobilePlayer',\n props: {\n changeMode: { type: Function }\n },\n setup(__props: any) {\n\n\n\nconst slidesStore = useSlidesStore()\nconst { slides, slideIndex, currentSlide, viewportRatio } = storeToRefs(slidesStore)\n\nconst toolVisible = ref(false)\n\nconst playerSize = ref({ width: 0, height: 0 })\n\nonMounted(() => {\n if (slideIndex.value !== 0) slidesStore.updateSlideIndex(0)\n\n playerSize.value = {\n width: document.body.clientHeight,\n height: document.body.clientWidth,\n }\n})\n\nconst slideSize = computed(() => {\n const playerRatio = playerSize.value.height / playerSize.value.width\n\n let slideWidth = 0\n let slideHeight = 0\n\n if (playerRatio >= viewportRatio.value) {\n slideWidth = playerSize.value.width\n slideHeight = slideWidth * viewportRatio.value\n }\n else {\n slideHeight = playerSize.value.height\n slideWidth = slideHeight / viewportRatio.value\n }\n\n return {\n width: slideWidth,\n height: slideHeight,\n }\n})\n\nconst touchInfo = ref<{ x: number; y: number; } | null>(null)\nconst touchStartListener = (e: TouchEvent) => {\n touchInfo.value = {\n x: e.changedTouches[0].pageX,\n y: e.changedTouches[0].pageY,\n }\n}\nconst touchEndListener = (e: TouchEvent) => {\n if (!touchInfo.value) return\n\n const offsetY = Math.abs(touchInfo.value.y - e.changedTouches[0].pageY)\n const offsetX = e.changedTouches[0].pageX - touchInfo.value.x\n\n if ( Math.abs(offsetX) > offsetY && Math.abs(offsetX) > 50 ) {\n touchInfo.value = null\n\n if (offsetX < 0 && slideIndex.value > 0) slidesStore.updateSlideIndex(slideIndex.value - 1)\n if (offsetX > 0 && slideIndex.value < slides.value.length - 1) slidesStore.updateSlideIndex(slideIndex.value + 1)\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconLogout = _resolveComponent(\"IconLogout\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-player\",\n style: _normalizeStyle({\n width: playerSize.value.width + 'px',\n height: playerSize.value.height + 'px',\n transform: `rotate(90deg) translateY(-${playerSize.value.height}px)`,\n })\n }, [\n _createElementVNode(\"div\", {\n class: \"screen-slide-list\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (toolVisible.value = !toolVisible.value)),\n onTouchstart: _cache[1] || (_cache[1] = $event => touchStartListener($event)),\n onTouchend: _cache[2] || (_cache[2] = $event => touchEndListener($event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\n 'slide-item', \n `turning-mode-${slide.turningMode || 'slideY'}`,\n {\n 'current': index === _unref(slideIndex),\n 'before': index < _unref(slideIndex),\n 'after': index > _unref(slideIndex),\n 'hide': (index === _unref(slideIndex) - 1 || index === _unref(slideIndex) + 1) && slide.turningMode !== _unref(currentSlide).turningMode,\n }\n ]),\n key: slide.id\n }, [\n (Math.abs(_unref(slideIndex) - index) < 2)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"slide-content\",\n style: _normalizeStyle({\n width: slideSize.value.width + 'px',\n height: slideSize.value.height + 'px',\n })\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: slideSize.value.width\n }, null, 8, [\"slide\", \"size\"])\n ], 4))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ], 32),\n (toolVisible.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"back\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.changeMode('preview')))\n }, [\n _createVNode(_component_IconLogout),\n _createTextVNode(\" 退出播放\")\n ])\n ]),\n _createVNode(MobileThumbnails, { class: \"thumbnails\" })\n ], 64))\n : _createCommentVNode(\"\", true)\n ], 4))\n}\n}\n\n})","\n\n\n\n","import script from \"./MobilePlayer.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobilePlayer.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobilePlayer.vue?vue&type=style&index=0&id=62f26eba&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-62f26eba\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-53dd42dc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"thumbnail-list\" }\nconst _hoisted_2 = { class: \"menu\" }\n\nimport { onMounted, ref } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useSlidesStore } from '@/store'\nimport useLoadSlides from '@/hooks/useLoadSlides'\nimport type { Mode } from '@/types/mobile'\n\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\nimport Divider from '@/components/Divider.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MobilePreview',\n props: {\n changeMode: { type: Function }\n },\n setup(__props: any) {\n\n\n\nconst { slides } = storeToRefs(useSlidesStore())\nconst { slidesLoadLimit } = useLoadSlides()\n\nconst mobileRef = ref()\nconst screenWidth = ref(0)\n\nonMounted(() => {\n if (!mobileRef.value) return\n screenWidth.value = mobileRef.value.clientWidth\n})\n\nreturn (_ctx: any,_cache: any) => {\n const _component_IconEdit = _resolveComponent(\"IconEdit\")!\n const _component_IconFullScreenPlay = _resolveComponent(\"IconFullScreenPlay\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"mobile-preview\",\n ref_key: \"mobileRef\",\n ref: mobileRef\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slides), (slide, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"thumbnail-item\",\n key: slide.id\n }, [\n _createVNode(ThumbnailSlide, {\n slide: slide,\n size: screenWidth.value - 20,\n visible: index < _unref(slidesLoadLimit)\n }, null, 8, [\"slide\", \"size\", \"visible\"])\n ]))\n }), 128))\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.changeMode('editor')))\n }, [\n _createVNode(_component_IconEdit, { class: \"icon\" }),\n _createTextVNode(\" 编辑\")\n ]),\n _createVNode(Divider, {\n type: \"vertical\",\n style: {\"height\":\"30px\"}\n }),\n _createElementVNode(\"div\", {\n class: \"menu-item\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.changeMode('player')))\n }, [\n _createVNode(_component_IconFullScreenPlay, { class: \"icon\" }),\n _createTextVNode(\" 播放\")\n ])\n ])\n ], 512))\n}\n}\n\n})","\n\n\n\n\n","import script from \"./MobilePreview.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MobilePreview.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MobilePreview.vue?vue&type=style&index=0&id=53dd42dc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53dd42dc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9826ff08\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mobile\" }\n\nimport { computed, ref } from 'vue'\nimport type { Mode } from '@/types/mobile'\n\nimport MobileEditor from './MobileEditor/index.vue'\nimport MobilePlayer from './MobilePlayer.vue'\nimport MobilePreview from './MobilePreview.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst mode = ref('preview')\n \nconst changeMode = (_mode: Mode) => mode.value = _mode\n\nconst currentComponent = computed(() => {\n const componentMap = {\n 'editor': MobileEditor,\n 'player': MobilePlayer,\n 'preview': MobilePreview,\n }\n return componentMap[mode.value] || null\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(), _createBlock(_resolveDynamicComponent(currentComponent.value), { changeMode: changeMode }))\n ]))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=9826ff08&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-9826ff08\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { onMounted } from 'vue'\nimport { storeToRefs } from 'pinia'\nimport { useScreenStore, useMainStore, useSnapshotStore } from '@/store'\nimport { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage'\nimport { deleteDiscardedDB } from '@/utils/database'\nimport { isPC } from './utils/common'\n\nimport Editor from './views/Editor/index.vue'\nimport Screen from './views/Screen/index.vue'\nimport Mobile from './views/Mobile/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\nconst _isPC = isPC()\n\nconst mainStore = useMainStore()\nconst snapshotStore = useSnapshotStore()\nconst { databaseId } = storeToRefs(mainStore)\nconst { screening } = storeToRefs(useScreenStore())\n\nif (process.env.NODE_ENV === 'production') {\n window.onbeforeunload = () => false\n}\n\nonMounted(async () => {\n await deleteDiscardedDB()\n snapshotStore.initSnapshotDatabase()\n mainStore.setAvailableFonts()\n})\n\n// 应用注销时向 localStorage 中记录下本次 indexedDB 的数据库ID,用于之后清除数据库\nwindow.addEventListener('unload', () => {\n const discardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB)\n const discardedDBList: string[] = discardedDB ? JSON.parse(discardedDB) : []\n\n discardedDBList.push(databaseId.value)\n\n const newDiscardedDB = JSON.stringify(discardedDBList)\n localStorage.setItem(LOCALSTORAGE_KEY_DISCARDED_DB, newDiscardedDB)\n})\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(screening))\n ? (_openBlock(), _createBlock(Screen, { key: 0 }))\n : (_unref(_isPC))\n ? (_openBlock(), _createBlock(Editor, { key: 1 }))\n : (_openBlock(), _createBlock(Mobile, { key: 2 }))\n}\n}\n\n})","\n\n\n\n","import script from \"./App.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./App.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./App.vue?vue&type=style&index=0&id=685e8c72&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log('No internet connection found. App is running in offline mode.')\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n }\n })\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, normalizeClass as _normalizeClass, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-77e74b43\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"menu-content\" }\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = { class: \"text\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"sub-text\"\n}\n\nimport type { ContextmenuItem } from './types'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MenuContent',\n props: {\n menus: {},\n handleClickMenuItem: { type: Function }\n },\n setup(__props: any) {\n\n\n\nreturn (_ctx: any,_cache: any) => {\n const _component_menu_content = _resolveComponent(\"menu-content\", true)!\n\n return (_openBlock(), _createElementBlock(\"ul\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.menus, (menu, index) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: menu.text || index\n }, [\n (!menu.hide)\n ? (_openBlock(), _createElementBlock(\"li\", {\n key: 0,\n class: _normalizeClass([\"menu-item\", {'divider': menu.divider, 'disable': menu.disable}]),\n onClick: _withModifiers(($event: any) => (_ctx.handleClickMenuItem(menu)), [\"stop\"])\n }, [\n (!menu.divider)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"menu-item-content\", {\n 'has-children': menu.children,\n 'has-handler': menu.handler,\n }])\n }, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(menu.text), 1),\n (menu.subText && !menu.children)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(menu.subText), 1))\n : _createCommentVNode(\"\", true),\n (menu.children && menu.children.length)\n ? (_openBlock(), _createBlock(_component_menu_content, {\n key: 1,\n class: \"sub-menu\",\n menus: menu.children,\n handleClickMenuItem: _ctx.handleClickMenuItem\n }, null, 8, [\"menus\", \"handleClickMenuItem\"]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_2))\n : _createCommentVNode(\"\", true)\n ], 64))\n }), 128))\n ]))\n}\n}\n\n})","import script from \"./MenuContent.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./MenuContent.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./MenuContent.vue?vue&type=style&index=0&id=77e74b43&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-77e74b43\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { withModifiers as _withModifiers, createElementVNode as _createElementVNode, createVNode as _createVNode, normalizeStyle as _normalizeStyle, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\nimport type { ContextmenuItem, Axis } from './types'\n\nimport MenuContent from './MenuContent.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n axis: {},\n el: {},\n menus: {},\n removeContextmenu: { type: Function }\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst style = computed(() => {\n const MENU_WIDTH = 170\n const MENU_HEIGHT = 30\n const DIVIDER_HEIGHT = 11\n const PADDING = 5\n\n const { x, y } = props.axis\n const menuCount = props.menus.filter(menu => !(menu.divider || menu.hide)).length\n const dividerCount = props.menus.filter(menu => menu.divider).length\n\n const menuWidth = MENU_WIDTH\n const menuHeight = menuCount * MENU_HEIGHT + dividerCount * DIVIDER_HEIGHT + PADDING * 2\n\n const screenWidth = document.body.clientWidth\n const screenHeight = document.body.clientHeight\n\n return {\n left: screenWidth <= x + menuWidth ? x - menuWidth : x,\n top: screenHeight <= y + menuHeight ? y - menuHeight : y,\n }\n})\n\nconst handleClickMenuItem = (item: ContextmenuItem) => {\n if (item.disable) return\n if (item.children && !item.handler) return\n if (item.handler) item.handler(props.el)\n props.removeContextmenu()\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", {\n class: \"mask\",\n onContextmenu: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.removeContextmenu()), [\"prevent\"])),\n onMousedown: _cache[1] || (_cache[1] = ($event: any) => (_ctx.removeContextmenu()))\n }, null, 32),\n _createElementVNode(\"div\", {\n class: \"contextmenu\",\n style: _normalizeStyle({\n left: style.value.left + 'px',\n top: style.value.top + 'px',\n }),\n onContextmenu: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"prevent\"]))\n }, [\n _createVNode(MenuContent, {\n menus: _ctx.menus,\n handleClickMenuItem: handleClickMenuItem\n }, null, 8, [\"menus\"])\n ], 36)\n ], 64))\n}\n}\n\n})","\n\n\n\n","import script from \"./index.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./index.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./index.vue?vue&type=style&index=0&id=1abfab1d&lang=scss\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { type Directive, type DirectiveBinding, createVNode, render } from 'vue'\nimport ContextmenuComponent from '@/components/Contextmenu/index.vue'\n\nconst CTX_CONTEXTMENU_HANDLER = 'CTX_CONTEXTMENU_HANDLER'\n\ninterface CustomHTMLElement extends HTMLElement {\n [CTX_CONTEXTMENU_HANDLER]?: (event: MouseEvent) => void\n} \n\nconst contextmenuListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\n event.stopPropagation()\n event.preventDefault()\n\n const menus = binding.value(el)\n if (!menus) return\n\n let container: HTMLDivElement | null = null\n\n // 移除右键菜单并取消相关的事件监听\n const removeContextmenu = () => {\n if (container) {\n document.body.removeChild(container)\n container = null\n }\n el.classList.remove('contextmenu-active')\n document.body.removeEventListener('scroll', removeContextmenu) \n window.removeEventListener('resize', removeContextmenu)\n }\n\n // 创建自定义菜单\n const options = {\n axis: { x: event.x, y: event.y },\n el,\n menus,\n removeContextmenu,\n }\n container = document.createElement('div')\n const vm = createVNode(ContextmenuComponent, options, null)\n render(vm, container)\n document.body.appendChild(container)\n\n // 为目标节点添加菜单激活状态的className\n el.classList.add('contextmenu-active')\n\n // 页面变化时移除菜单\n document.body.addEventListener('scroll', removeContextmenu)\n window.addEventListener('resize', removeContextmenu)\n}\n\nconst ContextmenuDirective: Directive = {\n mounted(el: CustomHTMLElement, binding) {\n el[CTX_CONTEXTMENU_HANDLER] = (event: MouseEvent) => contextmenuListener(el, event, binding)\n el.addEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\n },\n\n unmounted(el: CustomHTMLElement) {\n if (el && el[CTX_CONTEXTMENU_HANDLER]) {\n el.removeEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\n delete el[CTX_CONTEXTMENU_HANDLER]\n }\n },\n}\n\nexport default ContextmenuDirective","import type { Directive, DirectiveBinding } from 'vue'\n\nconst CTX_CLICK_OUTSIDE_HANDLER = 'CTX_CLICK_OUTSIDE_HANDLER'\n\ninterface CustomHTMLElement extends HTMLElement {\n [CTX_CLICK_OUTSIDE_HANDLER]?: (event: MouseEvent) => void\n} \n\nconst clickListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\n const handler = binding.value\n\n const path = event.composedPath()\n const isClickOutside = path ? path.indexOf(el) < 0 : !el.contains(event.target as HTMLElement)\n\n if (!isClickOutside) return\n handler(event)\n}\n\nconst ClickOutsideDirective: Directive = {\n mounted(el: CustomHTMLElement, binding) {\n el[CTX_CLICK_OUTSIDE_HANDLER] = (event: MouseEvent) => clickListener(el, event, binding)\n setTimeout(() => {\n document.addEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER]!)\n }, 0)\n },\n \n unmounted(el: CustomHTMLElement) {\n if (el[CTX_CLICK_OUTSIDE_HANDLER]) {\n document.removeEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER])\n delete el[CTX_CLICK_OUTSIDE_HANDLER]\n }\n },\n}\n\nexport default ClickOutsideDirective","import type { Directive, DirectiveBinding } from 'vue'\nimport tippy, { type Instance, type Placement } from 'tippy.js'\n\nimport './tooltip.scss'\n\nconst TOOLTIP_INSTANCE = 'TOOLTIP_INSTANCE'\n\ninterface CustomHTMLElement extends HTMLElement {\n [TOOLTIP_INSTANCE]?: Instance\n}\n\ntype Delay = number | [number | null, number | null]\n\ninterface BindingValue {\n content: string\n placement?: Placement\n delay?: Delay\n}\n\nconst TooltipDirective: Directive = {\n mounted(el: CustomHTMLElement, binding: DirectiveBinding) {\n let content = ''\n let placement: Placement = 'top'\n let delay: Delay = [300, 0]\n\n if (typeof binding.value === 'string') {\n content = binding.value\n }\n else {\n content = binding.value.content\n if (binding.value.placement !== undefined) placement = binding.value.placement\n if (binding.value.delay !== undefined) delay = binding.value.delay\n }\n\n el[TOOLTIP_INSTANCE] = tippy(el, {\n content,\n theme: 'tooltip',\n duration: 100,\n animation: 'scale',\n allowHTML: true,\n placement,\n delay,\n })\n },\n\n updated(el: CustomHTMLElement, binding: DirectiveBinding) {\n let content = ''\n if (typeof binding.value === 'string') {\n content = binding.value\n }\n else {\n content = binding.value.content\n }\n if (el[TOOLTIP_INSTANCE]) el[TOOLTIP_INSTANCE].setContent(content)\n },\n \n unmounted(el: CustomHTMLElement) {\n if (el[TOOLTIP_INSTANCE]) el[TOOLTIP_INSTANCE].destroy()\n },\n}\n\nexport default TooltipDirective","import type { App } from 'vue'\n\nimport Contextmenu from './contextmenu'\nimport ClickOutside from './clickOutside'\nimport Tooltip from './tooltip'\n\nexport default {\n install(app: App) {\n app.directive('contextmenu', Contextmenu)\n app.directive('click-outside', ClickOutside)\n app.directive('tooltip', Tooltip)\n }\n}\n","import { createApp } from 'vue'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './registerServiceWorker'\n\nimport '@icon-park/vue-next/styles/index.css'\nimport 'prosemirror-view/style/prosemirror.css'\nimport 'animate.css'\n\nimport '@/assets/styles/prosemirror.scss'\nimport '@/assets/styles/global.scss'\nimport '@/assets/styles/font.scss'\n\nimport Icon from '@/plugins/icon'\nimport Directive from '@/plugins/directive'\n\nconst app = createApp(App)\n\napp.use(Icon)\napp.use(Directive)\n\napp.use(createPinia())\napp.mount('#app')\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpptist\"] = self[\"webpackChunkpptist\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(8277); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["ToolbarStates","isList","node","schema","type","nodes","bullet_list","ordered_list","autoSelectAll","view","empty","state","selection","selectAll","dispatch","addMark","editorView","mark","tr","from","to","$from","$to","pos","findNodesWithSameMark","doc","markType","ii","finder","firstMark","fromNode","toNode","nodeAt","marks","find","fromPos","toPos","jj","nodeSize","equalNodeType","nodeType","Array","isArray","indexOf","findParentNodeClosestToPos","$pos","predicate","i","depth","before","start","findParentNode","_ref","findParentNodeOfType","isActiveOfParentNodeType","getLastTextNode","name","lastChild","getMarkAttrs","getAttrValue","attr","attrs","isActiveMark","markActive","isInSet","storedMarks","rangeHasMark","getAttrValueInSelection","keepChecking","value","nodesBetween","_defaultAttrs","color","backcolor","fontsize","fontname","align","getTextAttrs","defaultAttrs","isBold","isEm","isUnderline","isStrikethrough","isSuperscript","isSubscript","isCode","link","isBulletList","isOrderedList","isBlockquote","bold","em","underline","strikethrough","superscript","subscript","code","bulletList","orderedList","blockquote","getFontsize","parseInt","defaultRichTextAttrs","SYS_FONTS","label","WEB_FONTS","isSupportFont","fontName","arial","toLowerCase","size","width","height","str","canvas","document","createElement","ctx","getContext","willReadFrequently","textAlign","fillStyle","textBaseline","getDotArray","_fontFamily","clearRect","font","fillText","imageData","getImageData","data","slice","call","filter","item","join","slides","id","elements","left","top","viewBox","path","fill","fixedRatio","opacity","rotate","flipV","lineHeight","content","defaultFontName","defaultColor","end","points","style","background","wordSpace","theme","themeColor","fontColor","backgroundColor","shadow","h","v","blur","outline","layouts","text","useSlidesStore","defineStore","title","slideIndex","viewportRatio","getters","currentSlide","currentSlideAnimations","animations","els","elIds","map","el","animation","includes","elId","formatedAnimations","trigger","length","last","push","autoNext","subColor","tinycolor","isDark","layoutsString","JSON","stringify","replaceAll","parse","actions","setTitle","this","setTheme","themeProps","setViewportRatio","setSlides","addSlide","slide","addIndex","splice","updateSlide","props","deleteSlide","slideId","slidesId","deleteSlidesIndex","index","findIndex","newIndex","Math","min","maxIndex","updateSlideIndex","addElement","element","currentSlideEls","newEls","deleteElement","elementId","elementIdList","updateElement","elIdList","removeElementProps","propName","propsNames","omit","nanoid","customAlphabet","databaseId","useMainStore","activeElementIdList","handleElementId","activeGroupElementId","hiddenElementIdList","canvasPercentage","canvasScale","canvasDragged","thumbnailsFocus","editorAreaFocus","disableHotkeys","gridLineSize","showRuler","creatingElement","creatingCustomShape","availableFonts","toolbarState","SLIDE_DESIGN","clipingImageElementId","richTextAttrs","selectedTableCells","isScaling","selectedSlidesIndex","dialogForExport","textFormatPainter","shapeFormatPainter","showSelectPanel","showSearchPanel","activeElementList","slidesStore","handleElement","setActiveElementIdList","setHandleElementId","setActiveGroupElementId","setHiddenElementIdList","setCanvasPercentage","percentage","setCanvasScale","scale","setCanvasDragged","isDragged","setThumbnailsFocus","isFocus","setEditorareaFocus","setDisableHotkeysState","disable","setGridLineSize","setRulerState","show","setCreatingElement","setCreatingCustomShapeState","setAvailableFonts","setToolbarState","setClipingImageElementId","setRichtextAttrs","setSelectedTableCells","cells","setScalingState","updateSelectedSlidesIndex","setDialogForExport","setTextFormatPainter","setShapeFormatPainter","setSelectPanelState","setSearchPanelState","LOCALSTORAGE_KEY_DISCARDED_DB","databaseNamePrefix","deleteDiscardedDB","async","now","Date","getTime","localStorageDiscardedDB","localStorage","getItem","localStorageDiscardedDBList","databaseNames","Dexie","getDatabaseNames","discardedDBNames","prefix","time","split","delete","removeItem","PPTistDB","constructor","super","_defineProperty","version","stores","snapshots","writingBoardImgs","table","db","useSnapshotStore","snapshotCursor","snapshotLength","canUndo","canRedo","setSnapshotCursor","cursor","setSnapshotLength","initSnapshotDatabase","newFirstSnapshot","add","addSnapshot","allKeys","orderBy","keys","needDeleteKeys","snapshot","snapshotLengthLimit","update","bulkDelete","unDo","mainStore","toArray","reDo","useKeyboardStore","ctrlKeyState","shiftKeyState","spaceKeyState","ctrlOrShiftKeyActive","setCtrlKeyState","active","setShiftKeyState","setSpaceKeyState","useScreenStore","screening","setScreening","fillDigit","digit","len","padStart","isPC","navigator","userAgent","match","ElementOrderCommands","ElementAlignCommands","OperateBorderLines","OperateResizeHandlers","OperateLineHandlers","KEYS","HOTKEY_DOC","children","CRYPTO_KEY","encrypt","msg","CryptoJS","toString","decrypt","ciphertext","bytes","Utf8","copyText","Promise","resolve","reject","fakeElement","clipboard","Clipboard","action","container","body","on","e","destroy","appendChild","click","removeChild","readClipboard","readText","then","pasteCustomClipboardString","clipboardData","pasteExcelClipboardString","lines","pop","colCount","getRectRotatedRange","radius","sqrt","pow","auxiliaryAngle","atan","PI","tlbraRadian","trblaRadian","middleLeft","middleTop","xAxis","cos","yAxis","sin","xRange","max","yRange","getRectRotatedOffset","originXRange","originYRange","rotatedXRange","rotatedYRange","offsetX","offsetY","getElementRange","minX","maxX","minY","maxY","getElementListRange","elementList","leftValues","topValues","rightValues","bottomValues","forEach","uniqAlignLines","uniqLines","line","_line","uniqLine","rangeMin","range","rangeMax","createSlideIdMap","slideIdMap","createElementIdMap","groupIdMap","elIdMap","groupId","getTableSubThemeColor","rgba","setAlpha","toRgbString","getLineElementPath","broken","mid","curve","cubic","c1","c2","p1","p2","isElementInViewport","parent","elementRect","getBoundingClientRect","parentRect","bottom","icons","IconPlayOne","_PlayOne","IconFullScreenPlay","_FullScreenPlay","IconLock","_Lock","IconUnlock","_Unlock","IconPpt","_Ppt","IconFormat","_Format","IconPicture","_Picture","IconFullScreen","_FullScreen","IconList","_List","IconOrderedList","_OrderedList","IconFlipVertically","_FlipVertically","IconFlipHorizontally","_FlipHorizontally","IconFontSize","_FontSize","IconCode","_Code","IconTextBold","_TextBold","IconTextItalic","_TextItalic","IconTextUnderline","_TextUnderline","IconStrikethrough","_Strikethrough","IconEdit","_Edit","IconQuote","_Quote","IconBackgroundColor","_BackgroundColor","IconGroup","_Group","IconUngroup","_Ungroup","IconBack","_Back","IconNext","_Next","IconFullwidth","_Fullwidth","IconAlignTop","_AlignTop","IconAlignLeft","_AlignLeft","IconAlignRight","_AlignRight","IconAlignBottom","_AlignBottom","IconAlignVertically","_AlignVertically","IconAlignHorizontally","_AlignHorizontally","IconBringToFront","_BringToFront","IconSendToBack","_SendToBack","IconAlignTextLeft","_AlignTextLeft","IconAlignTextRight","_AlignTextRight","IconAlignTextCenter","_AlignTextCenter","IconAlignTextBoth","_AlignTextBoth","IconRowHeight","_RowHeight","IconWrite","_Write","IconInsertTable","_InsertTable","IconAddText","_AddText","IconFill","_Fill","IconTailoring","_Tailoring","IconEffects","_Effects","IconColorFilter","_ColorFilter","IconUp","_Up","IconDown","_Down","IconPlus","_Plus","IconMinus","_Minus","IconConnection","_Connection","IconBringToFrontOne","_BringToFrontOne","IconSentToBack","_SentToBack","IconGithub","_Github","IconChartProportion","_ChartProportion","IconChartHistogram","_ChartHistogram","IconChartHistogramOne","_ChartHistogramOne","IconChartLineArea","_ChartLineArea","IconChartRing","_ChartRing","IconChartScatter","_ChartScatter","IconChartLine","_ChartLine","IconChartPie","_ChartPie","IconText","_Text","IconRotate","_Rotate","IconLeftTwo","_LeftTwo","IconRightTwo","_RightTwo","IconPlatte","_Platte","IconClose","_Close","IconCloseSmall","_CloseSmall","IconUndo","_Undo","IconTransform","_Transform","IconClick","_Click","IconTheme","_Theme","IconArrowCircleLeft","_ArrowCircleLeft","IconGraphicDesign","_GraphicDesign","IconLogout","_Logout","IconErase","_Erase","IconClear","_Clear","IconAlignTextTopOne","_AlignTextTopOne","IconAlignTextBottomOne","_AlignTextBottomOne","IconAlignTextMiddleOne","_AlignTextMiddleOne","IconPause","_Pause","IconVolumeMute","_VolumeMute","IconVolumeNotice","_VolumeNotice","IconVolumeSmall","_VolumeSmall","IconVideoTwo","_VideoTwo","IconFormula","_Formula","IconLinkOne","_LinkOne","IconFullScreenOne","_FullScreenOne","IconOffScreenOne","_OffScreenOne","IconPower","_Power","IconListView","_ListView","IconMagic","_Magic","IconHighLight","_HighLight","IconDownload","_Download","IconIndentLeft","_IndentLeft","IconIndentRight","_IndentRight","IconVerticalSpacingBetweenItems","_VerticalSpacingBetweenItems","IconCopy","_Copy","IconDelete","_Delete","IconSquare","_Square","IconRound","_Round","IconNeedle","_Needle","IconTextRotationNone","_TextRotationNone","IconTextRotationDown","_TextRotationDown","IconFormatBrush","_FormatBrush","IconPreviewOpen","_PreviewOpen","IconPreviewClose","_PreviewClose","IconStopwatchStart","_StopwatchStart","IconSearch","_Search","IconLeft","_Left","IconRight","_Right","IconMoveOne","_MoveOne","IconHamburgerButton","_HamburgerButton","IconAttention","_Attention","IconCheckOne","_CheckOne","IconCloseOne","_CloseOne","IconInfo","_Info","install","app","key","Object","component","_hoisted_1","_hoisted_2","class","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_defineComponent","__name","message","default","duration","closable","Boolean","emits","setup","__props","expose","__expose","emit","__emit","visible","ref","timer","startTimer","setTimeout","close","clearTimer","clearTimeout","onBeforeMount","onMounted","_ctx","_cache","_openBlock","_createBlock","_Transition","appear","mode","onBeforeLeave","$event","onAfterLeave","_withCtx","_createElementBlock","_createElementVNode","onMouseenter","onMouseleave","_unref","_createCommentVNode","_toDisplayString","onClick","_createVNode","_","__exports__","instances","wrap","seed","defaultOptions","options","className","cssText","vm","createVNode","MessageComponent","div","appContext","_context","onClose","onDestroy","childNodes","remove","render","firstElementChild","instance","exposed","success","info","warning","error","closeAll","parseText2Paragraphs","htmlText","replace","paragraphs","string","paragraph","getImageSize","src","img","onload","imgWidth","clientWidth","imgHeight","clientHeight","onerror","getImageDataURL","file","reader","FileReader","addEventListener","result","readAsDataURL","VIEWPORT_SIZE","ShapePathFormulasKeys","ElementTypes","SHAPE_PATH_FORMULAS","ROUND_RECT","editable","defaultValue","relative","getBaseSize","formula","CUT_RECT_DIAGONAL","CUT_RECT_SINGLE","CUT_RECT_SAMESIDE","ROUND_RECT_DIAGONAL","ROUND_RECT_SINGLE","ROUND_RECT_SAMESIDE","CUT_ROUND_RECT","MESSAGE","arrowWidth","arrowheight","ROUND_MESSAGE","L","lineWidth","RING_RECT","PLUS","TRIANGLE","vertex","PARALLELOGRAM_LEFT","point","PARALLELOGRAM_RIGHT","TRAPEZOID","BULLET","INDICATOR","SHAPE_LIST","pptxShapeType","pathFormula","special","outlined","CHART_TYPES","bar","horizontalBar","area","scatter","pie","ring","snapshotStore","addHistorySnapshot","debounce","trailing","redo","throttle","leading","undo","storeToRefs","useHistorySnapshot","callback","createImageElement","createChartElement","newElement","chartType","gridColor","labels","legends","series","horizontalBars","stackBars","showLine","lineSmooth","showArea","donut","createTableElement","row","col","rowCells","j","colspan","rowspan","DEFAULT_CELL_WIDTH","DEFAULT_CELL_HEIGHT","colWidths","rowHeader","rowFooter","colHeader","colFooter","cellMinHeight","createTextElement","position","vertical","editorRef","querySelector","focus","createShapeElement","supplement","keypoint","createLineElement","isBroken","isCurve","isCubic","createLatexElement","w","latex","strokeWidth","createVideoElement","autoplay","createAudioElement","loop","addElementsFromData","firstElement","lastSameElement","offset","oMinX","oMaxX","oMinY","oMaxY","nMinX","nMaxX","nMinY","nMaxY","values","addSlidesFromData","newSlides","target","isEmptySlide","computed","useCreateElement","useAddSlidesOrElements","createTextElementFromClipboard","pasteTextClipboardData","onlySlide","onlyElements","_selectedSlidesIndex","selectedSlides","selectedSlidesId","usePasteTextClipboardData","resetSlides","emptySlide","command","UP","DOWN","copySlide","pasteSlide","catch","err","createSlide","createSlideByTemplate","newSlide","copyAndPasteSlide","targetSlidesId","cutSlide","selectAllSlide","newSelectedSlidesIndex","sortSlides","oldIndex","_slides","_slide","lockElement","newElementList","lock","unlockElement","groupElementIdList","deleteAllElements","canCombine","firstGroupId","inSameGroup","every","combineElements","combineElementList","combineElementMaxLevel","_element","combineElementIdList","insertLevel","uncombineElements","hasElementInGroup","some","handleElementIdList","useDeleteElement","copyElement","cutElement","pasteElement","quickCopyElement","selectAllElement","unlockedElements","newActiveElementIdList","moveElement","step","move","LEFT","RIGHT","getCombineElementLevelRange","minLevel","maxLevel","moveUpElement","copyOfElementList","nextElement","movedElementList","nextCombineElementList","level","movedElement","moveDownElement","prevElement","prevCombineElementList","moveTopElement","moveBottomElement","unshift","orderElement","TOP","BOTTOM","enterFullscreen","docElm","documentElement","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","msRequestFullscreen","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","msExitFullscreen","isFullscreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","webkitCurrentFullScreenElement","screenStore","enterScreening","enterScreeningFromStart","exitScreening","canvasScalePercentage","round","scaleCanvas","setCanvasScalePercentage","resetCanvas","keyboardStore","useSlideHandler","useCombineElement","useLockElement","useCopyAndPasteElement","useSelectAllElement","useMoveElement","useOrderElement","useScreening","useScaleCanvas","copy","cut","quickCopy","combine","uncombine","moveSlide","PAGEUP","PAGEDOWN","order","create","tabActiveElement","currentIndex","nextIndex","nextElementId","keydownListener","ctrlKey","shiftKey","altKey","metaKey","ctrlOrMetaKeyActive","toUpperCase","SPACE","P","preventDefault","F5","F","C","X","D","Z","Y","A","G","B","DELETE","BACKSPACE","ENTER","MINUS","EQUAL","DIGIT_0","TAB","keyupListener","window","onUnmounted","removeEventListener","pasteImageFile","imageFile","dataURL","pasteListener","clipboardDataItems","items","clipboardDataFirstItem","kind","getAsFile","getAsString","exporting","importSpecificFile","files","cover","readAsText","parseLineElement","isFlipV","isFlipH","borderWidth","borderType","borderColor","shapType","importPPTXFile","shapeList","json","slideFactor","fontsizeFactor","image","picBase64","imageSize","gradientType","gradientColor","colors","gradientRotate","rot","parseElements","textEl","fillColor","isVertical","blob","test","lineElement","shape","vAlignMap","vAlign","flipH","cellData","colSpan","rowSpan","xlabels","y","barDir","grouping","_el","readAsArrayBuffer","_Fragment","_renderList","hotkey","accept","inputRef","handleClick","handleChange","_renderSlot","$slots","ref_key","onChange","_withScopeId","n","_pushScopeId","_popScopeId","loading","tip","contentStyle","placement","contentVisible","_component_IconClose","_resolveComponent","_Teleport","onBeforeEnter","_withDirectives","_normalizeClass","_normalizeStyle","_vShow","disabled","placeholder","focused","handleInput","handleBlur","handleFocus","onInput","onFocus","onBlur","onKeydown","_withKeys","appendTo","center","triggerRef","contentRef","watch","hide","tippy","allowHTML","interactive","maxWidth","onShow","onShown","onHidden","_hoisted_7","_hoisted_8","_hoisted_9","href","_hoisted_10","useImport","mainMenuVisible","hotkeyDrawerVisible","editingTitle","titleInputRef","titleValue","startEditTitle","nextTick","handleUpdateTitle","goLink","url","open","_component_IconHamburgerButton","_component_IconPpt","_component_IconDown","_component_IconDownload","_component_IconGithub","_directive_tooltip","_resolveDirective","Popover","FileInput","PopoverMenuItem","_createTextVNode","Input","Drawer","HotkeyDoc","FullscreenSpin","injectKeySlideScale","Symbol","injectKeySlideId","injectKeyRadioGroupValue","removeAllRanges","getSelection","canvasRef","viewportLeft","viewportTop","initViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","setViewportPosition","newValue","oldValue","newViewportActualWidth","oldViewportActualWidth","newViewportActualHeight","oldViewportActualHeight","viewportStyles","resizeObserver","ResizeObserver","observe","unobserve","dragViewport","isMouseDown","startPageX","pageX","startPageY","pageY","originLeft","originTop","onmousemove","currentPageX","currentPageY","onmouseup","viewportRef","mouseSelectionVisible","mouseSelectionQuadrant","mouseSelection","updateMouseSelection","viewportRect","minSelectionRange","x","offsetWidth","offsetHeight","abs","quadrant","inRangeElementList","mouseSelectionLeft","mouseSelectionTop","mouseSelectionWidth","mouseSelectionHeight","isInclude","inRangeElement","inRangeElementIdList","groupElementList","groupElement","elementRef","handleDrop","dataTransfer","dataTransferItem","ondragleave","ondrop","ondragenter","ondragover","getAngleFromCoordinate","radian","atan2","angle","rotateElement","isTouchEvent","MouseEvent","changedTouches","elOriginRotate","elLeft","elTop","elWidth","elHeight","centerX","centerY","handleMousemove","mouseX","mouseY","sorptionRange","handleMouseup","ontouchmove","ontouchend","ELEMENT_TYPE_ZH","chart","video","audio","MIN_SIZE","getRotateElementPoints","taRadian","raRadian","halfWidth","halfHeight","leftTopPoint","topPoint","rightTopPoint","rightPoint","rightBottomPoint","bottomPoint","leftBottomPoint","leftPoint","getOppositePoint","direction","oppositeMap","RIGHT_BOTTOM","LEFT_BOTTOM","LEFT_TOP","RIGHT_TOP","ClipPathTypes","ClipPaths","alignmentLines","scaleElement","elOriginLeft","elOriginTop","elOriginWidth","elOriginHeight","originTableCellMinHeight","elRotate","rotateRadian","aspectRatio","minSize","getSizeWithinRange","getHeightWithinRange","minHeight","baseLeft","baseTop","horizontalLines","verticalLines","oppositePoint","edgeWidth","edgeHeight","isActiveGroupElement","right","topLine","bottomLine","leftLine","rightLine","edgeTopLine","edgeBottomLine","edgeHorizontalCenterLine","edgeLeftLine","edgeRightLine","edgeVerticalCenterLine","alignedAdsorption","currentX","currentY","_alignmentLines","isVerticalAdsorbed","isHorizontalAdsorbed","correctionVal","axis","revisedX","revisedY","currentPoints","currentOppositePoint","currentBaseLeft","currentBaseTop","moveX","moveY","scaleMultiElement","operateWidth","operateHeight","originElementList","currentMinX","currentMaxX","currentMinY","currentMaxY","currentOppositeWidth","currentOppositeHeight","widthScale","heightScale","originElement","originEl","selectElement","startMove","newActiveIdList","groupMembersId","uniq","dragElement","originActiveElementList","isMisoperation","horizontalCenterLine","verticalCenterLine","targetMinX","targetMaxX","targetMinY","targetMaxY","targetLeft","targetTop","targetCenterX","targetCenterY","dragLineElement","adsorptionPoints","startX","startY","endX","endY","midX","midY","c1X","c1Y","c2X","c2Y","START","adsorptionPoint","END","C1","C2","newEl","moveShapeKeypoint","shapePathData","baseSize","originPos","shapeElement","formatCreateSelection","selectionData","formatCreateSelectionForLine","_start","_end","insertElementFromCreateSelection","alignElementToCanvas","viewportWidth","viewportHeight","CENTER","VERTICAL","HORIZONTAL","shadowStyle","flipStyle","CLIPPATHS","rect","RECT","rect2","POLYGON","createPath","rect3","roundRect","ellipse","ELLIPSE","triangle","triangle2","triangle3","rhombus","pentagon","hexagon","heptagon","octagon","chevron","arrow","parallelogram","parallelogram2","trapezoid","trapezoid2","clip","clipShape","imgPosition","filters","outlineWidth","outlineStyle","outlineColor","strokeDashArray","useElementOutline","toRef","overflow","rx","ry","stroke","cx","cy","Function","d","elementInfo","useClipImage","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","clipPath","clipData","clipWrapperPositionStyle","isSettingClipRange","currentRange","getClipDataTransformInfo","bottomImgPositionStyle","topImgWrapperPosition","topImgWrapperPositionStyle","topImgPositionStyle","bottomWidth","bottomHeight","initClipPosition","handleClip","clipedEmitData","keyboardListener","updateRange","retPosition","moveClipRange","bottomPosition","originPositopn","scaleClipRange","minWidth","targetWidth","targetHeight","rotateClassName","cornerPoint","edgePoints","_directive_click_outside","draggable","alt","onMousedown","_withModifiers","contextmenus","isCliping","useElementShadow","useElementFlip","useFilter","handleSelectElement","stopPropagation","originClip","centerOffsetX","centerOffsetY","rotatedCenterX","rotatedCenterY","_props","_directive_contextmenu","transform","ImageClipHandler","onClip","onTouchstart","ImageOutline","onDragstart","colorMask","buildKeymap","bind","cmd","joinUp","joinDown","undoInputRule","selectParentNode","toggleMark","strong","chainCommands","splitListItem","list_item","newlineInCode","createParagraphNear","liftEmptyBlock","splitBlockKeepMarks","liftListItem","sinkListItem","blockQuoteRule","wrappingInputRule","orderedListRule","childCount","bulletListRule","codeRule","inputRegex","InputRule","insertText","linkRule","urlRegEx","buildInputRules","rules","smartQuotes","ellipsis","emDash","inputRules","isEmptyParagraph","placeholderPlugin","Plugin","decorations","decoration","Decoration","after","DecorationSet","buildPlugins","plugins","keymap","baseKeymap","dropCursor","gapCursor","history","listStyleType","group","parseDOM","tag","getAttrs","dom","hasAttribute","getAttribute","fontSize","toDOM","listItem","_listItem","indent","textIndent","textIndentLevel","floor","ignore","skip","excludes","forecolor","inline","inclusive","dataset","schemaNodes","schemaMarks","Schema","createDocument","htmlString","parser","DOMParser","parseFromString","fromSchema","initProsemirrorEditor","pluginOptions","EditorView","EditorState","EmitterEvents","emitter","mitt","setTextAlign","alignment","tasks","allowedNodeTypes","Set","has","task","setNodeMarkup","alignmentCommand","setSelection","setNodeIndentMarkup","delta","indentKey","minIndent","maxIndent","nodeAttrs","setIndent","TextSelection","AllSelection","indentCommand","docChanged","textIndentCommand","toggleList","listType","itemType","textStyleAttr","blockRange","parentList","validContent","wrapInList","setListStyle","styles","setNodeAttribute","autoFocus","editorViewRef","innerHTML","handleKeydown","textContent","hasFocus","replaceRangeWith","setProps","execCommand","lift","wrapIn","textStyle","removeMark","keep","newProps","handleDOMEvents","keydown","mouseup","syncAttrsToStore","RICH_TEXT_COMMAND","SYNC_RICH_TEXT_ATTRS_TO_STORE","off","canMove","realHeightCache","realWidthCache","updateTextElementHeight","entries","contentRect","realHeight","realWidth","updateContent","checkEmptyText","pureText","isHandleElement","textShadow","letterSpacing","fontFamily","writingMode","ElementOutline","ProsemirrorEditor","undefined","paragraphSpace","onUpdate","color1","color2","x1","y1","x2","y2","gradientTransform","execFormatPainter","defaultText","updateText","_text","prosemirrorEditorRef","startEdit","onMouseup","onDblclick","gradient","GradientDefs","pathMap","dot","rotateMap","markerUnits","orient","markerWidth","markerHeight","refX","refY","svgWidth","svgHeight","lineDashArray","LinePointMarker","legend","chartRef","slideScale","inject","chartHeight","getPieChartData","getOptions","propsOptopns","renderChart","BarChart","LineChart","PieChart","updateChart","themeColors","analogous","updateTheme","setProperty","updateGridColor","flexDirection","openDataEditor","OPEN_CHART_DATA_EDITOR","Chart","getTextStyle","textDecoration","fontWeight","fontStyle","formatText","hideCells","cell","subThemeColor","immediate","textareaRef","onpaste","excelData","onBeforeUnmount","contenteditable","isStartSelect","startCell","endCell","tableCells","get","set","newData","useSubThemeColor","colSizeList","totalWidth","reduce","a","b","removeSelectedCells","dragLinePosition","useHideCells","selectedCells","isEqual","activedCell","handleCellMousedown","rowIndex","colIndex","button","handleCellMouseenter","isHideCell","selectCol","maxRow","selectRow","maxCol","deleteRow","_tableCells","targetCells","hideCellsPos","deleteCol","insertRow","insertCol","fillTable","rowCount","defaultCell","newRows","mergeCells","splitCells","handleMousedownColHandler","originWidth","clearSelectedCellText","tabActiveCell","getNextCell","nextRow","nextCol","nextCell","textRef","insertExcelData","fillRowCount","fillColCount","getEffectiveTableCells","effectiveTableCells","_rowCells","checkCanDeleteRowOrCol","canDeleteRow","canDeleteCol","checkCanMergeOrSplit","isMultiSelected","targetCell","canMerge","canSplit","cellIndex","handler","divider","span","borderStyle","CustomTextarea","onUpdateValue","onInsertExcelData","updateTableElementHeight","updateTableCells","updateColWidths","widths","updateSelectedCells","EditableTable","onChangeColWidths","onChangeSelectedCells","openLatexEditor","OPEN_LATEX_EDITOR","videoRef","exec","canPlayType","Hls","isSupported","hls","loadSource","attachMedia","flvjs","flvPlayer","createPlayer","attachMediaElement","load","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","poster","secondToTime","second","isNaN","add0","num","hour","sec","getBoundingClientRectViewLeft","playBarWrap","volumeBarRef","volume","paused","currentTime","loaded","bezelTransition","playbackRate","playBarTimeVisible","playBarTime","playBarTimeLeft","ptime","dtime","playedBarWidth","loadedBarWidth","volumeBarWidth","speedMenuVisible","speedOptions","seek","play","pause","toggle","setVolume","muted","speed","rate","handleDurationchange","handleTimeupdate","handleEnded","handleProgress","buffered","loadError","handleError","thumbMove","clientX","thumbUp","handleMousedownPlayBar","volumeMove","volumeUp","handleMousedownVolumeBar","handleClickVolumeBar","handleMousemovePlayBar","px","tx","toggleVolume","toggleLoop","autoHideControllerTimer","hideController","autoHideController","played","useMSE","_component_IconPause","_component_IconPlayOne","_component_IconVolumeMute","_component_IconVolumeNotice","_component_IconVolumeSmall","onMousemove","playsinline","onDurationchange","onTimeupdate","onEnded","onProgress","onPlay","onPause","onError","onAnimationend","VideoPlayer","audioRef","handlePlayed","audioIconSize","audioPlayerPosition","audioWidth","audioHeight","AudioPlayer","elementIndex","isMultiSelect","openLinkDialog","currentElementComponent","elementTypeMap","IMAGE","ImageElement","TEXT","TextElement","SHAPE","ShapeElement","LINE","LineElement","CHART","ChartElement","TABLE","TableElement","LATEX","LatexElement","VIDEO","VideoElement","AUDIO","AudioElement","useAlignElementToCanvas","subText","zIndex","_resolveDynamicComponent","bgColor","colorList","mostReadable","includeFallbackColors","p","backgroundStyle","backgroundImage","backgroundRepeat","backgroundSize","useSlideBackgroundStyle","GridLines","sizeStyle","markerSize","marker","selectionRef","createSelection","absX","absY","isOpposite","endPageX","endPageY","defaultSize","lineData","_startX","_startY","_endX","_endY","onContextmenu","shapeCanvasRef","mousePosition","closed","getPoint","custom","lastPointX","lastPointY","updateMousePosition","firstPointX","firstPointY","getCreateData","xList","yList","formatedPoints","addPoint","ESC","resizeHandlers","textElementResizeHandlers","verticalTextElementResizeHandlers","borderLines","T","R","isWide","localActiveElementList","useCommonOperate","setRange","watchEffect","disableResize","BorderLine","ResizeHandler","script","__default__","inheritAttrs","handlerVisible","scaleWidth","scaleHeight","RotateHandler","keypointStyle","keypointPos","handlers","ctrlHandler","ctrlHandler1","ctrlHandler2","cannotRotate","setLink","linkRegExp","removeLink","margin","useLink","turnTarget","targetIndex","Divider","isSelected","isActive","currentOperateComponent","ImageElementOperate","TextElementOperate","ShapeElementOperate","LineElementOperate","TableElementOperate","CommonElementOperate","elementIndexListInAnimation","indexList","transformOrigin","LinkHandler","needScaleSize","zoom","StaticTable","BaseImageElement","BaseTextElement","BaseShapeElement","BaseLineElement","BaseChartElement","BaseTableElement","BaseLatexElement","BaseVideoElement","BaseAudioElement","provide","ThumbnailElement","tabs","card","tabsStyle","tabStyle","spaceAround","spaceBetween","tab","checked","first","showLabel","popoverVisible","selectRef","updateWidth","handleSelect","option","padding","boxShadow","address","slideOptions","selectedSlide","save","Tabs","marginBottom","Select","ThumbnailSlide","Button","closeButton","closeOnClickMask","closeOnEsc","modalRef","onEsc","onClickMask","tabindex","onKeyup","linkDialogVisible","setLocalElementList","useViewportSize","useDropImageOrText","useMouseSelection","useDragElement","useDragLineElement","useSelectElement","useScaleElement","useRotateElement","useMoveShapeKeypoint","handleClickBlankArea","handleDblClick","removeEditorAreaFocus","throttleScaleCanvas","throttleUpdateSlideIndex","handleMousewheelCanvas","deltaY","toggleRuler","useInsertFromCreateSelection","insertCustomShape","onWheel","ElementCreateSelection","onCreated","ShapeCreateCanvas","AlignmentLine","MultiSelectOperate","Operate","ViewportBackground","MouseSelection","EditableElement","Ruler","Modal","LinkDialog","selectShape","ShapeItemThumbnail","LINE_LIST","selectLine","chartList","selectChart","_component_IconChartLine","_component_IconChartHistogram","_component_IconChartPie","_component_IconChartHistogramOne","_component_IconChartLineArea","_component_IconChartRing","_component_IconChartScatter","Infinity","number","_vModelText","customRow","customCol","isCustom","handleClickTable","insertCustomTable","NumberInput","videoSrc","audioSrc","insertVideo","insertAudio","hfmathConfig","SUB_SUP_SCALE","FORMULA_LIST","SYMBOL_LIST","box","pathd","eq","hfmath","boxW","boxH","svg","SCALE_X","SCALE_Y","rows","resizable","formulaList","symbolTabs","textAreaRef","selectedSymbolKey","symbolPool","selectedSymbol","insertSymbol","TextArea","FormulaContent","SymbolContent","canvasScalePresetList","canvasScaleVisible","applyCanvasPresetScale","insertImageElement","shapePoolVisible","linePoolVisible","chartPoolVisible","tableGeneratorVisible","mediaInputVisible","latexEditorVisible","textTypeSelectVisible","drawText","drawShape","drawLine","toggleSelectPanel","toggleSraechPanel","_component_IconBack","_component_IconNext","_component_IconMoveOne","_component_IconSearch","_component_IconFontSize","_component_IconTextRotationNone","_component_IconTextRotationDown","_component_IconPicture","_component_IconGraphicDesign","_component_IconConnection","_component_IconChartProportion","_component_IconInsertTable","_component_IconFormula","_component_IconVideoTwo","_component_IconMinus","_component_IconPlus","_component_IconFullScreen","ShapePool","onSelect","LinePool","ChartPool","TableGenerator","onInsert","MediaInput","onInsertVideo","onInsertAudio","LaTeXEditor","slidesLoadLimit","loadSlide","selectSlideTemplate","useLoadSlides","presetLayoutPopoverVisible","thumbnailsRef","activeThumbnailRef","$el","scrollIntoView","behavior","changeSlideIndex","handleClickSlideThumbnail","minIndex","handleDragEnd","eventData","contextmenusThumbnails","contextmenusThumbnailItem","LayoutPool","Draggable","modelValue","scroll","scrollSensitivity","onEnd","itemKey","toggleTextFormatPainter","sliderRef","getNewValue","diff","fround","targetNumber","accuracy","NP","tooltipValue","tooltipRangeStartValue","tooltipRangeEndValue","getPercentage","progress","_percentage","remainder","updateRangeEnd","updatePercentage","oldValueArr","newValueArr","updatePercentageEnd","handleMousedown","deep","updateOpacity","Slider","_component_IconPlatte","white","grey","checkboardCache","renderCheckboard","fillRect","translate","toDataURL","getCheckboard","checkboard","bgStyle","rgbaStr","r","g","alphaRef","containerWidth","xOffset","pageXOffset","unbindEventListeners","handleMouseDown","Checkboard","hue","oldHue","pullDirection","hsla","toHsl","pointerLeft","s","hueRef","percent","l","hsva","toHsv","pointerTop","emitChangeEvent","param","saturationRef","containerHeight","yOffset","pageYOffset","clamp","saturation","bright","val","_hex","toHex8String","toHexString","isValid","toRgb","RECENT_COLORS","presetColorConfig","startColor","endColor","_startColor","_endColor","rStep","gStep","bStep","gradientColorArr","getPresetColors","presetColors","standardColors","recentColors","rgbaString","currentColor","selectPresetColor","colorString","updateRecentColorsCache","_color","maxLength","recentColorsCache","setItem","changeColor","openEyeDropper","isSupportedEyeDropper","browserEyeDropper","customEyeDropper","eyeDropper","EyeDropper","tColor","sRGBHex","targetRef","maskRef","colorBlockRef","tagName","classList","contains","toCanvas","fontEmbedCSS","pixelRatio","toFixed","handleMouseleave","_component_IconNeedle","Saturation","onColorChange","Hue","Alpha","EditableInput","c","fixed","hasOutline","updateOutline","outlineProps","toggleOutline","_outline","Switch","ColorPicker","ColorButton","hasShadow","updateShadow","shadowProps","_shadow","toggleShadow","passive","_value","updateValue","ButtonGroup","_hoisted_23","_hoisted_24","_hoisted_25","presetStyles","useTextFormatPainter","bulletListPanelVisible","orderedListPanelVisible","indentLeftPanelVisible","indentRightPanelVisible","bulletListStyleTypeOption","orderedListStyleTypeOption","fontSizeOptions","lineHeightOptions","wordSpaceOptions","paragraphSpaceOptions","updateLineHeight","updateParagraphSpace","updateWordSpace","updateFill","emitRichTextCommand","emitBatchRichTextCommand","linkPopoverVisible","openLinkPopover","updateLink","_component_IconAddText","_component_IconText","_component_IconHighLight","_component_IconTextBold","_component_IconTextItalic","_component_IconTextUnderline","_component_IconStrikethrough","_component_IconCode","_component_IconQuote","_component_IconFormat","_component_IconFormatBrush","_component_IconLinkOne","_component_IconAlignTextLeft","_component_IconAlignTextCenter","_component_IconAlignTextRight","_component_IconAlignTextBoth","_component_IconList","_component_IconOrderedList","_component_IconIndentLeft","_component_IconIndentRight","_component_IconRowHeight","_component_IconVerticalSpacingBetweenItems","_component_IconFullwidth","SelectGroup","icon","TextColorButton","CheckboxButton","RadioGroup","RadioButton","ElementShadow","ElementOpacity","updateFlip","flipProps","_component_IconFlipVertically","_component_IconFlipHorizontally","defaultFilters","unit","filterOptions","hasFilters","filterItem","updateFilter","_handleElement","originFilters","toggleFilters","defaultColorMask","hasColorMask","toggleColorMask","updateColorMask","shapeClipPathOptions","ratioClipOptions","ratio","handleImageElement","clipPanelVisible","clipImage","getImageElementDataBeforeClip","imgLeft","imgTop","originClipRange","originHeight","presetImageClip","imageRatio","distance","replaceImage","resetImage","setBackgroundImage","_component_IconTailoring","_component_IconTransform","_component_IconUndo","_component_IconTheme","ElementFlip","typeItem","ElementColorMask","ElementFilter","toggleShapeFormatPainter","handleShapeElement","fillType","useShapeFormatPainter","updateFillType","updateGradient","gradientProps","_gradient","changeShape","updateTextAlign","_component_IconAlignTextTopOne","_component_IconAlignTextMiddleOne","_component_IconAlignTextBottomOne","handleLineElement","updateLine","CELL_WIDTH","CELL_HEIGHT","selectedRange","tempRangeSize","focusCell","rangeLines","resizablePointStyle","initData","_data","moveNextRow","getTableData","labelsItem","labelInputRef","legendsItem","seriesItem","valueInputRef","clear","handlePaste","closeEditor","changeSelectRange","autocomplete","onPaste","presetChartThemes","handleChartElement","chartDataEditorVisible","presetThemesVisible","presetThemeColorHoverIndex","_lineSmooth","_showLine","_showArea","_horizontalBars","_donut","_stackBars","updateData","updateOptions","optionProps","newOptions","addThemeColor","applyPresetTheme","deleteThemeColor","updateLegend","_component_IconEdit","_component_IconCloseSmall","Checkbox","itemIndex","ChartDataEditor","onSave","textAttrs","hasTheme","minRowCount","minColCount","updateTextAttrState","selectedCell","updateTextAttrs","textAttrProp","themeProp","_theme","toggleTheme","setTableRow","newTableCells","setTableCol","newColSizeList","_component_IconFill","handleLatexElement","updateLatex","updateLatexData","handleVideoElement","updateVideo","setVideoPoster","handleAudioElement","updateAudio","updateFontStyle","panelMap","TextStylePanel","ImageStylePanel","ShapeStylePanel","LineStylePanel","ChartStylePanel","TableStylePanel","LatexStylePanel","VideoStylePanel","AudioStylePanel","currentPanelComponent","MultiStylePanel","activeGroupElement","isHorizontalText","isVerticalText","updateLeft","updateTop","updateShapePathData","updateHeight","updateRotate","updateFixedRatio","updateRotate45","_rotate","_component_IconSendToBack","_component_IconBringToFrontOne","_component_IconBringToFront","_component_IconSentToBack","_component_IconAlignLeft","_component_IconAlignVertically","_component_IconAlignRight","_component_IconAlignTop","_component_IconAlignHorizontally","_component_IconAlignBottom","_component_IconLock","_component_IconUnlock","_component_IconRotate","ANIMATION_DEFAULT_DURATION","ANIMATION_DEFAULT_TRIGGER","ANIMATION_CLASS_PREFIX","ENTER_ANIMATIONS","EXIT_ANIMATIONS","ATTENTION_ANIMATIONS","SLIDE_ANIMATIONS","animationEffects","effect","animationTypes","activeTab","animateIn","animationPoolVisible","hoverPreviewAnimation","animationSequence","elType","animationEffect","handleElementAnimation","deleteAnimation","runAnimation","elRef","animationName","handleAnimationEnd","removeProperty","once","runAllAnimation","updateElementAnimationDuration","updateElementAnimationTrigger","updateElementAnimation","handleAnimationId","animationItem","addAnimation","popoverMaskHide","handlePopoverVisibleChange","openAnimationPool","in","out","attention","_component_IconEffects","_component_IconClick","handle","PRESET_THEMES","getSlideAllColors","getAlpha","createSlideThemeColorMap","newColors","oldColors","themeColorMap","otherColors","setSlideTheme","colorMap","applyPresetThemeToSingleSlide","applyPresetThemeToAllSlides","applyThemeToAllSlides","applyAll","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","moreThemeConfigsVisible","useSlideTheme","updateBackgroundType","newBackground","updateBackground","uploadBackgroundImage","applyBackgroundAllSlide","updateViewportRatio","_component_IconRight","currentTurningMode","turningMode","updateTurningMode","applyAllSlide","alignActiveElement","groupElementRangeMap","activeElement","groupElements","horizontalCenter","verticalCenter","displayItemCount","count","groupIdList","uniformHorizontalDisplay","copyOfActiveElementList","singleElemetList","groupList","groupEl","formatedGroupList","groupItem","list","sort","itemA","itemB","sortedElementData","firstItem","lastPos","lastWidth","currentPos","currentWidth","sortedItem","uniformVerticalDisplay","totalHeight","lastHeight","currentHeight","useAlignActiveElement","useUniformDisplayElement","alignElement","_component_IconGroup","_component_IconUngroup","selectSymbol","elementTabs","EL_STYLE","SYMBOL","EL_POSITION","EL_ANIMATION","slideTabs","SLIDE_ANIMATION","multiSelectTabs","MULTI_POSITION","currentTabs","currentTabsValue","ElementStylePanel","ElementPositionPanel","ElementAnimationPanel","SlideDesignPanel","SlideAnimationPanel","MultiPositionPanel","SymbolPanel","menuInstance","menuRef","hideMenuInstance","updateTextContent","anchorNode","focusNode","isCollapsed","getRangeAt","getReferenceClientRect","mousedown","input","hideOnClick","remark","resize","newHeight","Editor","childlessTags","closingTags","closingTagAncestorBreakers","li","dt","dd","tbody","thead","tfoot","td","voidTags","jumpPosition","movePositopn","findTextEnd","isEnd","textEnd","char","charAt","lexText","tokens","lexComment","contentEnd","commentEnd","lexTagName","isTagChar","lexTagAttributes","quote","wordBegin","words","isQuoteEnd","isTagEnd","isWordEnd","isQuoteStart","word","isNotPair","secondWord","startsWith","newWord","thirdWord","endsWith","lexSkipTag","safeTagName","nextTag","tagState","lexTag","textStart","secondChar","tagStartClose","firstChar","tagEndClose","lex","isComment","safeTag","lexer","root","stack","hasTerminalParent","tagParents","parentTagName","rewindStack","newLength","token","tagToken","shouldRewind","isClosingTag","shouldRewindToAutoClose","previousIndex","attributes","tagEndToken","_token","elementNode","hasChildren","innerState","splitHead","sep","idx","unquote","car","formatAttributes","attribute","parts","trim","format","toAST","typeMap","toPoints","pathData","SVGPathData","commands","lastPoint","cubicBezierPoints","arcToBezier","py","rX","rY","xAxisRotation","xRot","largeArcFlag","lArcFlag","sweepFlag","cbPoint","characters","PREFIX","utf8Encode","utftext","charCodeAt","String","fromCharCode","encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","svg2Base64","XMLS","XMLSerializer","serializeToString","INCH_PX_RATIO","PT_PX_RATIO","exportImage","domRef","quality","ignoreWebfont","toImage","toPng","toJpeg","foreignObjectSpans","querySelectorAll","spanRef","removeAttribute","config","dataUrl","saveAs","exportSpecificFile","Blob","exportJSON","formatColor","alpha","formatHTML","html","ast","bulletFlag","slices","obj","baseStyleObj","isBlockTag","lastSlice","breakLine","styleObj","styleAttr","styleArr","styleItem","_key","dataIndentAttr","highlight","strike","italic","fontFace","hyperlink","bullet","paraSpaceBefore","indentLevel","formatPoints","moveTo","getShadowOption","getOutlineOption","transparency","dashType","getLinkOption","exportPPTX","masterOverwrite","ignoreMedia","pptx","pptxgen","layout","defineLayout","bgAlpha","defineSlideMaster","pptxSlide","mix","addNotes","textProps","valign","lineSpacingMultiple","autoFit","charSpacing","vert","addText","linkOption","rounding","originW","originH","sizing","addImage","svgRef","base64SVG","addShape","beginArrowType","endArrowType","chartData","chartColors","plotArea","showLegend","legendPos","legendColor","legendFontSize","ChartType","lineSize","doughnut","holeSize","addChart","hiddenCells","rowData","tableData","subThemeColors","_row","cellOptions","colW","border","pt","addTable","extMatch","extn","ext","videoExts","audioExts","addMedia","writeFile","fileName","imageThumbnailsRef","rangeType","renderSlides","useExport","expImage","createIframe","iframe","writeContent","printNode","docType","styleSheets","styleSheet","cssRules","rule","head","write","print","iframeContentWindow","contentWindow","contentDocument","handleLoadIframe","handleAfterprint","pdfThumbnailsRef","expPDF","pageSize","currentDialogComponent","dialogMap","ExportImage","ExportJSON","ExportPDF","ExportPPTX","ExportSpecificFile","moveable","moveablePanelRef","windowWidth","_elements","lastItem","selectGroupEl","idList","selectEl","hideElement","showAll","currentSlideElIdList","needHiddenElementIdList","hideAll","editingElId","saveElementName","enterEdit","_component_IconUp","_component_IconPreviewClose","_component_IconPreviewOpen","MoveablePanel","searchWord","replaceWord","searchResults","searchIndex","modifiers","search","textList","matchRegex","RegExp","textRegex","rets","highlightCurrentSlide","clearMarks","getTextNodeList","nodeList","textNodes","shift","TEXT_NODE","wholeText","getTextInfoList","startIdx","endIdx","getMatchList","keyword","reg","matchList","matchStart","matchEnd","textIdx","textNode","nodeMatchStartIdx","nodeMatchLength","splitText","innerText","substring","parentNode","replaceChild","highlightTableText","markNodes","createTextNode","lastTarget","setActiveMark","searchNext","searchPrev","targetElement","replaced","targetSlide","lastMarkIndex","markIndex","reset","toggleModifiers","useSearch","searchInpRef","_component_IconLeft","_isRef","onEnter","suffix","closeExportDialog","remarkHeight","useGlobalHotkey","usePasteEvent","EditorHeader","Thumbnails","CanvasTool","Canvas","Remark","Toolbar","SelectPanel","SearchPanel","onClosed","ExportDialog","animationIndex","inAnimation","playedSlidesMinIndex","endAnimationCount","classname","revokeAnimation","execPrev","autoPlayTimer","closeAutoPlay","clearInterval","loopPlay","setLoopPlay","throttleMassage","turnSlideToIndex","execNext","autoPlayInterval","autoPlay","setInterval","setAutoPlayInterval","interval","mousewheelListener","touchInfo","touchStartListener","touchEndListener","turnPrevSlide","turnNextSlide","turnSlideToId","wrapRef","slideWidth","slideHeight","setSlideContentSize","slideWrapRef","winWidth","winHeight","fullscreenState","escExit","handleFullscreenChange","manualExitFullscreen","inCurrentSlide","audioPlayerRef","ScreenVideoElement","ScreenAudioElement","needWaitAnimation","elementIndexInAnimation","firstAnimation","openLink","visibility","ScreenElement","slidesWithTurningMode","turningModeKeys","random","ScreenSlide","turnSlide","_component_IconArrowCircleLeft","model","blackboard","penSize","markSize","rubberSize","writingBoardRef","lastTime","lastLineWidth","mouse","mouseInCanvas","updateCanvasSize","initCanvas","lineCap","lineJoin","updateCtx","globalCompositeOperation","globalAlpha","draw","posX","posY","lastPosX","lastPosY","strokeStyle","beginPath","lineTo","closePath","erase","sinRadius","cosRadius","rectPoint1","rectPoint2","rectPoint3","rectPoint4","arc","restore","getDistance","getLineWidth","t","maxV","minV","handleMove","getMouseOffsetPosition","event","canvasRect","clearCanvas","setImageDataURL","imageDataURL","Image","drawImage","_component_IconWrite","onTouchmove","onTouchend","writingBoardColors","writingBoardColor","writingBoardModel","sizePopoverType","changeModel","closeWritingBoard","where","equals","ret","currentImg","hanldeWritingEnd","_component_IconErase","_component_IconClear","WritingBoard","inTiming","isCountdown","minute","inputEditable","toggleCountdown","changeTime","isNumber","maxlength","changeViewMode","useExecPlay","useSlideSize","useFullscreen","rightToolsVisible","writingBoardToolVisible","timerlVisible","slideThumbnailModelVisible","laserPen","_component_IconLeftTwo","_component_IconRightTwo","_component_IconMagic","_component_IconStopwatchStart","_component_IconListView","_component_IconOffScreenOne","_component_IconFullScreenOne","_component_IconPower","ScreenSlideList","SlideThumbnails","WritingBoardTool","CountdownTimer","slideListWrapRef","remarkFontSize","currentSlideRemark","handleMousewheelThumbnails","scrollBy","setRemarkFontSize","offsetLeft","scrollTo","viewMode","BaseView","PresenterView","_resizeHandlers","delayOnTouchOnly","delay","insertTextElement","insertShapeElement","square","handleInputMark","_component_IconCopy","_component_IconDelete","_component_IconSquare","_component_IconRound","MobileThumbnails","updateFontColor","changeMode","_component_IconLogout","contentWidth","contentheight","contentRatio","Header","MobileOperate","MobileEditableElement","SlideToolbar","ElementToolbar","toolVisible","playerSize","slideSize","playerRatio","mobileRef","screenWidth","_component_IconFullScreenPlay","_mode","currentComponent","componentMap","MobileEditor","MobilePlayer","MobilePreview","_isPC","onbeforeunload","discardedDB","discardedDBList","newDiscardedDB","Screen","Mobile","register","ready","console","log","registered","cached","updatefound","updated","offline","menus","handleClickMenuItem","_component_menu_content","menu","removeContextmenu","MENU_WIDTH","MENU_HEIGHT","DIVIDER_HEIGHT","PADDING","menuCount","dividerCount","menuWidth","menuHeight","screenHeight","MenuContent","CTX_CONTEXTMENU_HANDLER","contextmenuListener","binding","ContextmenuComponent","ContextmenuDirective","mounted","unmounted","CTX_CLICK_OUTSIDE_HANDLER","clickListener","composedPath","isClickOutside","ClickOutsideDirective","TOOLTIP_INSTANCE","TooltipDirective","setContent","directive","Contextmenu","ClickOutside","Tooltip","createApp","App","use","Icon","Directive","createPinia","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","deferred","O","chunkIds","fn","priority","notFulfilled","fulfilled","getter","__esModule","definition","o","defineProperty","enumerable","globalThis","prop","prototype","hasOwnProperty","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/service-worker.js.map b/service-worker.js.map index a7220bd5..73a61c6c 100644 --- a/service-worker.js.map +++ b/service-worker.js.map @@ -1 +1 @@ -{"version":3,"file":"service-worker.js","sources":["../../../../../tmp/162c39775575b6b4c4e64b30a4a15cf9/service-worker.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/PPTist/PPTist/node_modules/workbox-routing/registerRoute.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from '/home/runner/work/PPTist/PPTist/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheableResponsePlugin as workbox_cacheable_response_CacheableResponsePlugin} from '/home/runner/work/PPTist/PPTist/node_modules/workbox-cacheable-response/CacheableResponsePlugin.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from '/home/runner/work/PPTist/PPTist/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {setCacheNameDetails as workbox_core_setCacheNameDetails} from '/home/runner/work/PPTist/PPTist/node_modules/workbox-core/setCacheNameDetails.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\nworkbox_core_setCacheNameDetails({prefix: \"pptist\"});\n\n\nself.skipWaiting();\n\n\n\n\n\nworkbox_routing_registerRoute(/.*/, new workbox_strategies_NetworkFirst({ \"cacheName\":\"PPTist\", plugins: [new workbox_expiration_ExpirationPlugin({ maxAgeSeconds: 36000 }), new workbox_cacheable_response_CacheableResponsePlugin({ statuses: [ 0, 200 ] })] }), 'GET');\n\n\n\n\n"],"names":["workbox_core_setCacheNameDetails","prefix","self","skipWaiting","workbox_routing_registerRoute","workbox_strategies_NetworkFirst","cacheName","plugins","workbox_expiration_ExpirationPlugin","maxAgeSeconds","workbox_cacheable_response_CacheableResponsePlugin","statuses"],"mappings":"0nBAoBAA,EAAAA,oBAAiC,CAACC,OAAQ,WAG1CC,KAAKC,cAMLC,EAAAA,cAA8B,KAAM,IAAIC,eAAgC,CAAEC,UAAY,SAAUC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,cAAe,OAAU,IAAIC,EAAAA,wBAAmD,CAAEC,SAAU,CAAE,EAAG,UAAc"} \ No newline at end of file +{"version":3,"file":"service-worker.js","sources":["../../../../../tmp/fbbe0366504c97bc9320b1a9e2059b1c/service-worker.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/PPTist/PPTist/node_modules/workbox-routing/registerRoute.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from '/home/runner/work/PPTist/PPTist/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheableResponsePlugin as workbox_cacheable_response_CacheableResponsePlugin} from '/home/runner/work/PPTist/PPTist/node_modules/workbox-cacheable-response/CacheableResponsePlugin.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from '/home/runner/work/PPTist/PPTist/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {setCacheNameDetails as workbox_core_setCacheNameDetails} from '/home/runner/work/PPTist/PPTist/node_modules/workbox-core/setCacheNameDetails.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\nworkbox_core_setCacheNameDetails({prefix: \"pptist\"});\n\n\nself.skipWaiting();\n\n\n\n\n\nworkbox_routing_registerRoute(/.*/, new workbox_strategies_NetworkFirst({ \"cacheName\":\"PPTist\", plugins: [new workbox_expiration_ExpirationPlugin({ maxAgeSeconds: 36000 }), new workbox_cacheable_response_CacheableResponsePlugin({ statuses: [ 0, 200 ] })] }), 'GET');\n\n\n\n\n"],"names":["workbox_core_setCacheNameDetails","prefix","self","skipWaiting","workbox_routing_registerRoute","workbox_strategies_NetworkFirst","cacheName","plugins","workbox_expiration_ExpirationPlugin","maxAgeSeconds","workbox_cacheable_response_CacheableResponsePlugin","statuses"],"mappings":"0nBAoBAA,EAAAA,oBAAiC,CAACC,OAAQ,WAG1CC,KAAKC,cAMLC,EAAAA,cAA8B,KAAM,IAAIC,eAAgC,CAAEC,UAAY,SAAUC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,cAAe,OAAU,IAAIC,EAAAA,wBAAmD,CAAEC,SAAU,CAAE,EAAG,UAAc"} \ No newline at end of file