@hufe921/canvas-editor 0.9.64 → 0.9.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- (()=>{(function(){"use strict";try{if(typeof document!="undefined"){var e=document.createElement("style");e.id="canvas-editor-style",e.appendChild(document.createTextNode('.ce-select-control-popup{max-width:160px;min-width:69px;max-height:225px;position:absolute;z-index:1;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;box-shadow:0 2px 12px #0000001a;box-sizing:border-box;margin:5px 0;overflow-y:auto}.ce-select-control-popup ul{list-style:none;padding:3px 0;margin:0;box-sizing:border-box}.ce-select-control-popup ul li{font-size:13px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#666;height:36px;line-height:36px;box-sizing:border-box;cursor:pointer}.ce-select-control-popup ul li:hover{background-color:#eef2fd}.ce-select-control-popup ul li.active{color:var(--COLOR-HOVER, #5175f4);font-weight:700}.ce-date-container{display:none;width:300px;overflow:hidden;left:0;right:0;position:absolute;z-index:1;color:#606266;background:#ffffff;border-radius:4px;padding:10px;user-select:none;border:1px solid #e4e7ed;box-shadow:0 2px 12px #0000001a}.ce-date-container.active{display:block}.ce-date-wrap{display:none}.ce-date-wrap.active{display:block}.ce-date-title{display:flex;justify-content:center;align-items:center;text-align:center;color:#606266;font-size:16px}.ce-date-title>span{display:inline-block}.ce-date-title>span:not(.ce-date-title__now){font-family:cursive;cursor:pointer}.ce-date-title>span:not(.ce-date-title__now):hover{color:#5175f4}.ce-date-title .ce-date-title__pre-year,.ce-date-title .ce-date-title__pre-month{width:15%}.ce-date-title .ce-date-title__now{width:40%}.ce-date-title .ce-date-title__next-year,.ce-date-title .ce-date-title__next-month{width:15%}.ce-date-week{width:100%;display:flex;justify-content:center;margin-top:15px;padding-bottom:5px;border-bottom:1px solid #e4e7ed}.ce-date-week>span{list-style:none;width:14.28571%;text-align:center;color:#606266;font-size:14px}.ce-date-day{width:100%;display:flex;flex-wrap:wrap;align-items:center;margin-top:5px}.ce-date-day>div{width:14.28571%;height:40px;text-align:center;color:#606266;font-size:14px;cursor:pointer;line-height:40px;border-radius:4px}.ce-date-day>div:hover{color:#5175f4;opacity:.8}.ce-date-day>div.active{color:#5175f4;font-weight:700}.ce-date-day>div.disable{color:#c0c4cc}.ce-date-day>div.select{color:#fff;background-color:#5175f4}.ce-time-wrap{display:none;padding:10px;height:286px}.ce-time-wrap ::-webkit-scrollbar{width:0}.ce-time-wrap.active{display:flex}.ce-time-wrap li{list-style:none}.ce-time-wrap>li{width:33.3%;height:100%;text-align:center}.ce-time-wrap>li>span{transform:translateY(-5px);display:inline-block}.ce-time-wrap>li>ol{height:calc(100% - 20px);overflow-y:auto;border:1px solid #e2e2e2;position:relative}.ce-time-wrap>li:first-child>ol{border-right:0}.ce-time-wrap>li:last-child>ol{border-left:0}.ce-time-wrap>li>ol>li{line-height:30px;cursor:pointer;transition:all .3s}.ce-time-wrap>li>ol>li:hover{background-color:#eaeaea}.ce-time-wrap>li>ol>li.active{color:#fff;background:#5175F4}.ce-date-menu{width:100%;height:28px;display:flex;justify-content:flex-end;align-items:center;padding-top:10px;position:relative;border-top:1px solid #e4e7ed}.ce-date-menu button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;appearance:none;text-align:center;box-sizing:border-box;outline:none;transition:.1s;font-weight:500;user-select:none;padding:7px 15px;font-size:12px;border-radius:3px;margin:0 0 0 10px}.ce-date-menu button:hover{color:#5175f4;border-color:#5175f4}.ce-date-menu button.ce-date-menu__time{border:1px solid transparent;position:absolute;left:0;margin-left:0}.ce-date-menu button.ce-date-menu__time:hover{color:#5175f4}.ce-block-item{position:absolute;z-index:0;overflow:hidden;border-radius:8px;background-color:#fff;border:1px solid rgb(235 236 240)}.ce-table-tool__row{position:absolute;width:12px;border-radius:6.5px;overflow:hidden;background-color:#e2e6ed}.ce-table-tool__row .ce-table-tool__row__item{width:100%;position:relative}.ce-table-tool__row .ce-table-tool__row__item:after{content:"";position:absolute;bottom:0;left:2px;width:8px;height:1px;background-color:#c0c6cf}.ce-table-tool__row .ce-table-tool__row__item:last-child:after{display:none}.ce-table-tool__col{position:absolute;height:12px;border-radius:6.5px;overflow:hidden;background-color:#e2e6ed;display:flex}.ce-table-tool__col .ce-table-tool__col__item{height:100%;position:relative}.ce-table-tool__col .ce-table-tool__col__item:after{content:"";position:absolute;top:2px;left:-1px;width:1px;height:8px;z-index:1;background-color:#c0c6cf}.ce-table-tool__col .ce-table-tool__col__item:first-child:after{display:none}.ce-table-tool__row .ce-table-tool__row__item.active,.ce-table-tool__col .ce-table-tool__col__item.active{background-color:#c4d7fa}.ce-table-tool__col .ce-table-tool__anchor{right:-5px;width:10px;height:12px;z-index:9;position:absolute;cursor:col-resize}.ce-table-tool__row .ce-table-tool__anchor{bottom:-5px;left:0;width:12px;height:10px;z-index:9;position:absolute;cursor:row-resize}.ce-table-anchor__line{z-index:9;position:absolute;border:1px dotted #000000}.ce-table-tool__border{position:absolute;z-index:1;background:transparent;pointer-events:none}.ce-table-tool__border__row{position:absolute;cursor:row-resize;pointer-events:auto}.ce-table-tool__border__col{position:absolute;cursor:col-resize;pointer-events:auto}.ce-resizer-selection{position:absolute;border:1px solid}.ce-resizer-selection .resizer-handle{position:absolute;z-index:9;width:10px;height:10px;box-shadow:0 1px 4px #0000004d;border-radius:5px;border:2px solid #ffffff;box-sizing:border-box}.ce-resizer-selection .handle-0{cursor:nw-resize}.ce-resizer-selection .handle-1{cursor:n-resize}.ce-resizer-selection .handle-2{cursor:ne-resize}.ce-resizer-selection .handle-3{cursor:e-resize}.ce-resizer-selection .handle-4{cursor:se-resize}.ce-resizer-selection .handle-5{cursor:s-resize}.ce-resizer-selection .handle-6{cursor:sw-resize}.ce-resizer-selection .handle-7{cursor:w-resize}.ce-resizer-size-view{display:flex;align-items:center;height:20px;white-space:nowrap;position:absolute;top:-30px;left:0;opacity:.9;background-color:#000;padding:0 5px;border-radius:4px}.ce-resizer-size-view span{color:#fff;font-size:12px}.ce-resizer-image{position:absolute;opacity:.5}.ce-image-previewer{position:fixed;left:0;top:0;z-index:1000;width:100%;height:100%;overflow:hidden;background:#f2f4f7;display:flex;align-items:center;justify-content:center;animation:previewerAnimation .3s}@keyframes previewerAnimation{0%{opacity:.1}to{opacity:1}}.ce-image-previewer .image-close{width:24px;height:24px;display:inline-block;position:absolute;right:50px;top:30px;z-index:99;cursor:pointer;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIzLjk3IDdsMS40MTUgMS40MTQtNy43NzkgNy43NzggNy43NzkgNy43NzktMS40MTQgMS40MTQtNy43NzktNy43NzktNy43NzggNy43NzlMNyAyMy45N2w3Ljc3OC03Ljc3OUw3IDguNDE0IDguNDE0IDdsNy43NzggNy43NzhMMjMuOTcxIDd6IiBmaWxsPSIjM0Q0NzU3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=) no-repeat;background-size:100% 100%;transition:all .3s;border-radius:50%}.ce-image-previewer .image-close:hover{background-color:#e2e6ed}.ce-image-previewer .ce-image-container{position:relative}.ce-image-previewer .ce-image-container img{cursor:move;position:relative}.ce-image-previewer .ce-image-menu{height:50px;position:absolute;bottom:50px;z-index:99;display:flex;align-items:center;justify-content:center}.ce-image-previewer .ce-image-menu i{width:32px;height:32px;margin:0 8px;cursor:pointer;display:inline-block;background-repeat:no-repeat;background-size:100% 100%;transition:all .3s;border-radius:50%}.ce-image-previewer .ce-image-menu i:hover{background-color:#e2e6ed}.ce-image-previewer .ce-image-menu i.zoom-in{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDE0di00aDJ2NGg0djJoLTR2NGgtMnYtNGgtNHYtMmg0em04Ljc0OSAxMC4xNjNBMTEuOTUyIDExLjk1MiAwIDAxMTUgMjdDOC4zNzMgMjcgMyAyMS42MjcgMyAxNVM4LjM3MyAzIDE1IDNzMTIgNS4zNzMgMTIgMTJjMCAyLjk1NC0xLjA2NyA1LjY1OC0yLjgzNyA3Ljc0OWw0LjkwOCA0LjkwOC0xLjQxNCAxLjQxNC00LjkwOC00LjkwOHpNMTUgMjVjNS41MjMgMCAxMC00LjQ3NyAxMC0xMFMyMC41MjMgNSAxNSA1IDUgOS40NzcgNSAxNXM0LjQ3NyAxMCAxMCAxMHoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-image-previewer .ce-image-menu i.zoom-out{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIyLjc0OSAyNC4xNjNBMTEuOTUyIDExLjk1MiAwIDAxMTUgMjdDOC4zNzMgMjcgMyAyMS42MjcgMyAxNVM4LjM3MyAzIDE1IDNzMTIgNS4zNzMgMTIgMTJjMCAyLjk1NC0xLjA2NyA1LjY1OC0yLjgzNyA3Ljc0OWw0LjkwOCA0LjkwOC0xLjQxNCAxLjQxNC00LjkwOC00LjkwOHpNMTUgMjVjNS41MjMgMCAxMC00LjQ3NyAxMC0xMFMyMC41MjMgNSAxNSA1IDUgOS40NzcgNSAxNXM0LjQ3NyAxMCAxMCAxMHptLTUtMTFoMTB2MkgxMHYtMnoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-image-previewer .ce-image-menu i.rotate{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTYgNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyYTExLjk3IDExLjk3IDAgMDEtNCA4Ljk0NFYyM2gtLjg2QTkuOTY4IDkuOTY4IDAgMDAyNiAxNmMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwUzYgMTAuNDc3IDYgMTZjMCA1LjE4NSAzLjk0NyA5LjQ0OSA5IDkuOTV2Mi4wMDlDOC44NCAyNy40NTEgNCAyMi4yOTEgNCAxNiA0IDkuMzczIDkuMzczIDQgMTYgNHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik0xOS44NzkgMjcuMzI4bDEuNzY3LTYuNzE3IDQuOTUgNC45NXoiLz48L2c+PC9zdmc+)}.ce-image-previewer .ce-image-menu i.original-size{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgNGgyNHYyNEg0VjR6bTIgMnYyMGgyMFY2SDZ6bTQgNWgydjEwaC0yVjExem01IDJoMnYyaC0ydi0yem0wIDRoMnYyaC0ydi0yem01LTZoMnYxMGgtMlYxMXoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-image-previewer .ce-image-menu i.image-download{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAxNXYzLjVoMTVWMTVIMjF2NUgzdi01aDEuNXptOC4yMzItMTEuMjI2djkuMTk2bDQuMDUtNC4wNSAxLjA2IDEuMDYtNS44MzQgNS44MzQtNS44MzMtNS44MzMgMS4wNi0xLjA2IDMuOTk4IDMuOTk2VjMuNzc0aDEuNXoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-contextmenu-container{z-index:9;position:fixed;display:none;padding:4px;overflow-x:hidden;overflow-y:auto;background:#fff;box-shadow:0 2px 12px #38383833;border:1px solid #e2e6ed;border-radius:2px}.ce-contextmenu-content{display:flex;flex-direction:column}.ce-contextmenu-content .ce-contextmenu-sub-item:after{position:absolute;content:"";width:16px;height:16px;right:12px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDE2djE2SDB6Ii8+PGcgZmlsbD0iIzc2N0M4NSI+PHBhdGggZD0iTTcgMTIuMjQzbC0uNzA3LS43MDcgNC4yNDMtNC4yNDMuNzA3LjcwN3oiLz48cGF0aCBkPSJNNi4yOTMgNC40NjRMNyAzLjc1NyAxMS4yNDMgOGwtLjcwNy43MDd6Ii8+PC9nPjwvZz48L3N2Zz4=)}.ce-contextmenu-content .ce-contextmenu-item{min-width:140px;padding:0 32px 0 16px;height:30px;display:flex;align-items:center;white-space:nowrap;box-sizing:border-box;cursor:pointer}.ce-contextmenu-content .ce-contextmenu-item.hover{background:rgba(25,55,88,.04)}.ce-contextmenu-content .ce-contextmenu-item span{max-width:300px;font-size:12px;color:#3d4757;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ce-contextmenu-content .ce-contextmenu-item span.ce-shortcut{color:#767c85;height:30px;flex:1;text-align:right;line-height:30px;margin-left:20px}.ce-contextmenu-content .ce-contextmenu-item i{width:16px;height:16px;vertical-align:middle;display:inline-block;background-repeat:no-repeat;background-size:100% 100%;flex-shrink:0;margin-right:8px}.ce-contextmenu-divider{background-color:#e2e6ed;margin:4px 16px;height:1px}.ce-contextmenu-print{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjM0Q0NzU3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiA0aC0xVjJINXYySDRWMmExIDEgMCAwMTEtMWg2YTEgMSAwIDAxMSAxdjJ6bTAgNXY0YTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY5aDF2NGg2VjloMXoiLz48cGF0aCBkPSJNMTIgMTJ2LTFoMlY1SDJ2NmgydjFIMmExIDEgMCAwMS0xLTFWNWExIDEgMCAwMTEtMWgxMmExIDEgMCAwMTEgMXY2YTEgMSAwIDAxLTEgMWgtMnoiLz48cGF0aCBkPSJNMyA4aDEwdjFIM3ptOC0yaDJ2MWgtMnoiLz48L2c+PC9zdmc+)}.ce-contextmenu-image{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSLlm77lsYJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3Qwe2ZpbGw6IzNkNDc1N308L3N0eWxlPjxnIGlkPSJfeDMwXzAt5YWs5YWxX3gyRl8wMuW3peWFt+agj194MkZf5o+S5YWl5Zu+54mHLTE2cHgtIj48ZyBpZD0iR3JvdXAtMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPjxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZSIgY2xhc3M9InN0MCIgZD0iTTEgMGgxMmMuNiAwIDEgLjQgMSAxdjExYzAgLjYtLjQgMS0xIDFIMWMtLjYgMC0xLS40LTEtMVYxYzAtLjYuNC0xIDEtMXptMCAxdjExaDEyVjFIMXoiLz48Y2lyY2xlIGlkPSLmpK3lnIblvaIiIGNsYXNzPSJzdDAiIGN4PSIxMCIgY3k9IjQiIHI9IjEiLz48cGF0aCBpZD0iUGF0aCIgY2xhc3M9InN0MCIgZD0iTTguNSAxMS4ybC00LTQuMUwxIDEwLjdWOS4yYzEuNy0xLjYgMi43LTIuNSAzLTIuOC40LS41LjctLjQgMSAwTDguNSAxMCAxMSA3LjNjLjQtLjUuNi0uNSAxLS4xbDIgMi44djEuNWwtMi41LTMuNC0zIDMuMXoiLz48L2c+PC9nPjwvc3ZnPg==)}.ce-contextmenu-image-change{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDQpIiBmaWxsPSIjM0Q0NzU3Ij48Y2lyY2xlIGZpbGwtcnVsZT0ibm9uemVybyIgY3g9IjMiIGN5PSIxIiByPSIxIi8+PHBhdGggZD0iTTcuNDczIDguMjIzTDMuNDcgNC4xMDcgMCA3LjY2N3YtMS41QzEuNzE1IDQuNiAyLjcwNyAzLjY2NCAyLjk3NSAzLjM1OGMuNDAyLS40NTcuNjUxLS4zOSAxLjA0MiAwTDcuNDczIDcgOS45NiA0LjM0OWMuNDE0LS40NjIuNjItLjQ2MiAxLjAxMS0uMDcxTDEzIDcuMDZ2MS41bC0yLjUxLTMuNDEtMy4wMTcgMy4wNzJ6Ii8+PC9nPjxwYXRoIGQ9Ik02IDEuNUgxLjV2MTJoMTN2LTRWMTNhLjUuNSAwIDAxLS41LjVIMmEuNS41IDAgMDEtLjUtLjVWMmEuNS41IDAgMDEuNS0uNWg0em04LjUgOFY2bC0uNS41aDFsLS41LS41djMuNXpNNiAxLjVoNEw5LjUgMXYxbC41LS41SDZ6IiBzdHJva2U9IiMzRDQ3NTciLz48cGF0aCBkPSJNMTMuMDg1IDEuMzE2bC0zLjgxNCA0YTEgMSAwIDAwMS40NTggMS4zNjhsMy44MTUtNGExIDEgMCAxMC0xLjQ1OS0xLjM2OHoiIGZpbGw9IiMzRDQ3NTciIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-insert-row-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiMzRDQ3NTciIGQ9Ik04LjUgNS41aDZ2NGgtNnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNNCA3djFoMlY3em0tMyAuNUw0IDV2NXpNMSAxaDEydjFIMXptMCAxMmgxMnYxSDF6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-insert-top-row{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNOCA1SDd2M2gxem0tLjUtM0wxMCA1SDV6Ii8+PHJlY3Qgc3Ryb2tlPSIjM0Q0NzU3IiB4PSIxLjUiIHk9IjEwLjUiIHdpZHRoPSIxMiIgaGVpZ2h0PSIzIiByeD0iMSIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-insert-bottom-row{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNNyAxMWgxVjhIN3ptLjUgM0w1IDExaDV6Ii8+PHJlY3Qgc3Ryb2tlPSIjM0Q0NzU3IiB4PSIxLjUiIHk9IjIuNSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjMiIHJ4PSIxIi8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-insert-left-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMTEgN3YxaDNWN3ptLTMgLjVMMTEgNXY1eiIvPjxyZWN0IHN0cm9rZT0iIzNENDc1NyIgdHJhbnNmb3JtPSJyb3RhdGUoOTAgNCA3LjUpIiB4PSItMiIgeT0iNiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjMiIHJ4PSIxIi8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-insert-right-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNNSA4VjdIMnYxem0zLS41TDUgMTBWNXoiLz48cmVjdCBzdHJva2U9IiMzRDQ3NTciIHRyYW5zZm9ybT0icm90YXRlKDkwIDEyIDcuNSkiIHg9IjYiIHk9IjYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIzIiByeD0iMSIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-delete-row-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiM5MjlBQTgiIGQ9Ik04LjUgNi41aDZ2MmgtNnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMiAxMmgxMXYxSDJ6TTIgMmgxMXYxSDJ6bS42MyAzTDcgOS4zNWwtLjYzNS42NUwyIDUuNjN6Ii8+PHBhdGggZmlsbD0iIzNENDc1NyIgZD0iTTIgOS4zNjNMNi4zNTUgNSA3IDUuNzA3IDIuNjk1IDEweiIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-delete-row{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiM5MjlBQTgiIGQ9Ik04LjUgNS41aDZ2NGgtNnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMSAxM2gxMnYxSDF6TTEgMWgxMnYxSDF6bTAgNGgxdjFIMXptMSAxaDF2MUgyem0xIDFoMXYxSDN6bTEtMWgxdjFINHptMS0xaDF2MUg1ek00IDhoMXYxSDR6TTIgOGgxdjFIMnptMyAxaDF2MUg1ek0xIDloMXYxSDF6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-delete-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiM5MjlBQTgiIGQ9Ik01LjUgNy41di02aDR2NnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMTMgMTVWM2gxdjEyek0xIDE1VjNoMXYxMnptNCAwdi0xaDF2MXptMS0xdi0xaDF2MXptMS0xdi0xaDF2MXptLTEtMXYtMWgxdjF6bS0xLTF2LTFoMXYxem0zIDF2LTFoMXYxem0wIDJ2LTFoMXYxem0xLTN2LTFoMXYxem0wIDR2LTFoMXYxeiIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-delete-table{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgMTNoLTF2LTNIMnYzSDF2LTNhMSAxIDAgMDExLTFoMTFhMSAxIDAgMDExIDF2M3oiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik01LjYyNSAyTDEwIDYuMzc1IDkuMzc1IDcgNSAyLjYyNXoiLz48cGF0aCBkPSJNNSA2LjM3NUw5LjM3NSAybC42MjUuNjI1TDUuNjI1IDd6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-merge-cell{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNiAxdjFIMnYxMWg0djFIMmExIDEgMCAwMS0xLTFWMmExIDEgMCAwMTEtMWg0em0zIDBoNGExIDEgMCAwMTEgMXYxMWExIDEgMCAwMS0xIDFIOXYtMWg0VjJIOVYxeiIvPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTYgMWgxdjRINnptMiAwaDF2NEg4eiIvPjxwYXRoIGQ9Ik04IDcuNUwxMCA2djN6bS0xIDBMNSA2djN6Ii8+PHBhdGggZD0iTTkgN2gzdjFIOXpNMyA3aDN2MUgzeiIvPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTggMTBoMXY0SDh6bS0yIDBoMXY0SDZ6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-merge-cancel-cell{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNiAxdjFIMnYxMWg0djFIMmExIDEgMCAwMS0xLTFWMmExIDEgMCAwMTEtMWg0em0zIDBoNGExIDEgMCAwMTEgMXYxMWExIDEgMCAwMS0xIDFIOXYtMWg0VjJIOVYxeiIvPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTYgMWgxdjRINnptMiAwaDF2NEg4eiIvPjxwYXRoIGQ9Ik0zIDcuNUw1IDZ2M3ptOSAwTDEwIDZ2M3oiLz48cGF0aCBkPSJNNCA3aDN2MUg0em00IDBoM3YxSDh6Ii8+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOCAxMGgxdjRIOHptLTIgMGgxdjRINnoiLz48L2c+PC9zdmc+)}.ce-contextmenu-vertical-align{background-image:url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMiAxM2gxMnYxSDJ6bTAtM2g4djFIMnptMC0zaDEydjFIMnptMC02aDEydjFIMnptMCAzaDh2MUgyeiIgZmlsbD0iIzNkNDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.ce-contextmenu-vertical-align-top{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTggOEg3djZoMXptLS41LTNMMTAgOEg1ek0yIDNoMTF2MUgyeiIgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.ce-contextmenu-vertical-align-middle{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOCAxMkg3djNoMXptLS41LTNsMi41IDNINXpNNyAzaDFWMEg3em0uNSAzTDUgM2g1ek0yIDdoMTF2MUgyeiIgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.ce-contextmenu-vertical-align-bottom{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgOWgxVjNIN3ptLjUgM0w1IDloNXpNMiAxM2gxMXYxSDJ6IiBmaWxsPSIjM0Q0NzU3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ce-contextmenu-border-all{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iIzNENDc1NyIvPjxwYXRoIGZpbGw9IiMzRDQ3NTciIGQ9Ik0zIDhoMTF2MUgzeiIvPjxwYXRoIGZpbGw9IiMzRDQ3NTciIGQ9Ik05IDN2MTFIOFYzeiIvPjwvc3ZnPg==)}.ce-contextmenu-border-empty{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMyAzaC0xVjJoMWExIDEgMCAwMTEgMXYxaC0xVjN6bS0zLTF2MUg4LjV2MmgtMVYzSDZWMmg0ek00IDJ2MUgzdjFIMlYzYTEgMSAwIDAxMS0xaDF6TTIgNmgxdjEuNWgydjFIM1YxMEgyVjZ6bTAgNmgxdjFoMXYxSDNhMSAxIDAgMDEtMS0xdi0xem00IDJ2LTFoMS41di0yaDF2MkgxMHYxSDZ6bTYgMHYtMWgxdi0xaDF2MWExIDEgMCAwMS0xIDFoLTF6bTItNGgtMVY4LjVoLTJ2LTFoMlY2aDF2NHpNOC41IDcuNXYtMWgtMXYxaC0xdjFoMXYxaDF2LTFoMXYtMWgtMXoiIGZpbGw9IiNBQUFDQjAiLz48L3N2Zz4=)}.ce-contextmenu-border-external{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iIzNENDc1NyIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOSA1VjNIOHYyaDF6bTAgOXYtMkg4djJoMXpNNSA4SDN2MWgyVjh6bTkgMGgtMnYxaDJWOHpNOSA3djFoMXYxSDl2MUg4VjlIN1Y4aDFWN2gxeiIgZmlsbD0iI0FBQUNCMCIvPjwvc3ZnPg==)}.ce-contextmenu-border-td{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgZD0iTTguNSAyLjUgdjYgaC02Ii8+PC9zdmc+)}.ce-contextmenu-border-td-top{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMi41IDMgaDEyIi8+PC9zdmc+)}.ce-contextmenu-border-td-left{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMyAzIHYxMSIvPjwvc3ZnPg==)}.ce-contextmenu-border-td-bottom{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMi41IDE0IGgxMiIvPjwvc3ZnPg==)}.ce-contextmenu-border-td-right{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMTQgMyB2MTEiLz48L3N2Zz4=)}.ce-contextmenu-border-td-forward{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIgLz48cGF0aCBzdHJva2U9IiMzRDQ3NTciIGQ9Ik0xNCAzIGwtMTEgMTEiIC8+PC9zdmc+)}.ce-contextmenu-border-td-back{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIgLz48cGF0aCBzdHJva2U9IiMzRDQ3NTciIGQ9Ik0zIDMgbDExIDExIiAvPjwvc3ZnPg==)}.ce-hyperlink-popup{background:#fff;box-shadow:0 2px 12px #626b8433;border-radius:2px;color:#3d4757;padding:12px 16px;position:absolute;z-index:1;text-align:center;display:none}.ce-hyperlink-popup a{min-width:100px;max-width:300px;font-size:12px;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;text-decoration:none;border-bottom-width:1px;border-bottom-style:solid;color:#00f}.ce-zone-indicator>div{padding:3px 6px;color:#000;font-size:12px;background:rgb(218 231 252);position:absolute;transform-origin:0 0}.ce-zone-indicator-border__top,.ce-zone-indicator-border__bottom,.ce-zone-indicator-border__left,.ce-zone-indicator-border__right{display:block;position:absolute;z-index:0}.ce-zone-indicator-border__top{border-top:2px dashed rgb(238,238,238)}.ce-zone-indicator-border__bottom{border-top:2px dashed rgb(238,238,238);width:100%}.ce-zone-indicator-border__left{border-left:2px dashed rgb(238,238,238)}.ce-zone-indicator-border__right{border-right:2px dashed rgb(238,238,238)}.ce-zone-tip{display:none;align-items:center;height:30px;white-space:nowrap;position:fixed;opacity:.9;background-color:#000;padding:0 5px;border-radius:4px;z-index:9;transition:all .3s;outline:none;user-select:none;pointer-events:none;transform:translate(10px,10px)}.ce-zone-tip.show{display:flex}.ce-zone-tip span{color:#fff;font-size:12px}.ce-inputarea{width:100px;height:30px;min-width:0;min-height:0;margin:0;padding:0;left:0;right:0;letter-spacing:0;font-size:12px;position:absolute;z-index:-1;outline:none;resize:none;border:none;overflow:hidden;color:transparent;user-select:none;caret-color:transparent;background-color:transparent}.ce-cursor{width:1px;height:20px;left:0;right:0;position:absolute;outline:none;background-color:#000;pointer-events:none}.ce-cursor.ce-cursor--animation{animation-duration:1s;animation-iteration-count:infinite;animation-name:cursorAnimation}@keyframes cursorAnimation{0%{opacity:1}13%{opacity:0}50%{opacity:0}63%{opacity:1}to{opacity:1}}')),document.head.appendChild(e)}}catch(i){console.error("vite-plugin-css-injected-by-js",i)}})();})();
1
+ (()=>{(function(){"use strict";try{if(typeof document!="undefined"){var e=document.createElement("style");e.id="canvas-editor-style",e.appendChild(document.createTextNode('.ce-select-control-popup{max-width:160px;min-width:69px;max-height:225px;position:absolute;z-index:1;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;box-shadow:0 2px 12px #0000001a;box-sizing:border-box;margin:5px 0;overflow-y:auto}.ce-select-control-popup ul{list-style:none;padding:3px 0;margin:0;box-sizing:border-box}.ce-select-control-popup ul li{font-size:13px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#666;height:36px;line-height:36px;box-sizing:border-box;cursor:pointer}.ce-select-control-popup ul li:hover{background-color:#eef2fd}.ce-select-control-popup ul li.active{color:var(--COLOR-HOVER, #5175f4);font-weight:700}.ce-date-container{display:none;width:300px;overflow:hidden;left:0;right:0;position:absolute;z-index:1;color:#606266;background:#ffffff;border-radius:4px;padding:10px;user-select:none;border:1px solid #e4e7ed;box-shadow:0 2px 12px #0000001a}.ce-date-container.active{display:block}.ce-date-wrap{display:none}.ce-date-wrap.active{display:block}.ce-date-title{display:flex;justify-content:center;align-items:center;text-align:center;color:#606266;font-size:16px}.ce-date-title>span{display:inline-block}.ce-date-title>span:not(.ce-date-title__now){font-family:cursive;cursor:pointer}.ce-date-title>span:not(.ce-date-title__now):hover{color:#5175f4}.ce-date-title .ce-date-title__pre-year,.ce-date-title .ce-date-title__pre-month{width:15%}.ce-date-title .ce-date-title__now{width:40%}.ce-date-title .ce-date-title__next-year,.ce-date-title .ce-date-title__next-month{width:15%}.ce-date-week{width:100%;display:flex;justify-content:center;margin-top:15px;padding-bottom:5px;border-bottom:1px solid #e4e7ed}.ce-date-week>span{list-style:none;width:14.28571%;text-align:center;color:#606266;font-size:14px}.ce-date-day{width:100%;display:flex;flex-wrap:wrap;align-items:center;margin-top:5px}.ce-date-day>div{width:14.28571%;height:40px;text-align:center;color:#606266;font-size:14px;cursor:pointer;line-height:40px;border-radius:4px}.ce-date-day>div:hover{color:#5175f4;opacity:.8}.ce-date-day>div.active{color:#5175f4;font-weight:700}.ce-date-day>div.disable{color:#c0c4cc}.ce-date-day>div.select{color:#fff;background-color:#5175f4}.ce-time-wrap{display:none;padding:10px;height:286px}.ce-time-wrap ::-webkit-scrollbar{width:0}.ce-time-wrap.active{display:flex}.ce-time-wrap li{list-style:none}.ce-time-wrap>li{width:33.3%;height:100%;text-align:center}.ce-time-wrap>li>span{transform:translateY(-5px);display:inline-block}.ce-time-wrap>li>ol{height:calc(100% - 20px);overflow-y:auto;border:1px solid #e2e2e2;position:relative}.ce-time-wrap>li:first-child>ol{border-right:0}.ce-time-wrap>li:last-child>ol{border-left:0}.ce-time-wrap>li>ol>li{line-height:30px;cursor:pointer;transition:all .3s}.ce-time-wrap>li>ol>li:hover{background-color:#eaeaea}.ce-time-wrap>li>ol>li.active{color:#fff;background:#5175F4}.ce-date-menu{width:100%;height:28px;display:flex;justify-content:flex-end;align-items:center;padding-top:10px;position:relative;border-top:1px solid #e4e7ed}.ce-date-menu button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;appearance:none;text-align:center;box-sizing:border-box;outline:none;transition:.1s;font-weight:500;user-select:none;padding:7px 15px;font-size:12px;border-radius:3px;margin:0 0 0 10px}.ce-date-menu button:hover{color:#5175f4;border-color:#5175f4}.ce-date-menu button.ce-date-menu__time{border:1px solid transparent;position:absolute;left:0;margin-left:0}.ce-date-menu button.ce-date-menu__time:hover{color:#5175f4}.ce-block-item{position:absolute;z-index:0;overflow:hidden;border-radius:8px;background-color:#fff;border:1px solid rgb(235 236 240)}.ce-table-tool__row{position:absolute;width:12px;border-radius:6.5px;overflow:hidden;background-color:#e2e6ed}.ce-table-tool__row .ce-table-tool__row__item{width:100%;position:relative}.ce-table-tool__row .ce-table-tool__row__item:after{content:"";position:absolute;bottom:0;left:2px;width:8px;height:1px;background-color:#c0c6cf}.ce-table-tool__row .ce-table-tool__row__item:last-child:after{display:none}.ce-table-tool__col{position:absolute;height:12px;border-radius:6.5px;overflow:hidden;background-color:#e2e6ed;display:flex}.ce-table-tool__col .ce-table-tool__col__item{height:100%;position:relative}.ce-table-tool__col .ce-table-tool__col__item:after{content:"";position:absolute;top:2px;left:-1px;width:1px;height:8px;z-index:1;background-color:#c0c6cf}.ce-table-tool__col .ce-table-tool__col__item:first-child:after{display:none}.ce-table-tool__row .ce-table-tool__row__item.active,.ce-table-tool__col .ce-table-tool__col__item.active{background-color:#c4d7fa}.ce-table-tool__col .ce-table-tool__anchor{right:-5px;width:10px;height:12px;z-index:9;position:absolute;cursor:col-resize}.ce-table-tool__row .ce-table-tool__anchor{bottom:-5px;left:0;width:12px;height:10px;z-index:9;position:absolute;cursor:row-resize}.ce-table-anchor__line{z-index:9;position:absolute;border:1px dotted #000000}.ce-table-tool__border{position:absolute;z-index:1;background:transparent;pointer-events:none}.ce-table-tool__border__row{position:absolute;cursor:row-resize;pointer-events:auto}.ce-table-tool__border__col{position:absolute;cursor:col-resize;pointer-events:auto}.ce-resizer-selection{position:absolute;border:1px solid;pointer-events:none}.ce-resizer-selection .resizer-handle{position:absolute;z-index:9;width:10px;height:10px;box-shadow:0 1px 4px #0000004d;border-radius:5px;border:2px solid #ffffff;box-sizing:border-box;pointer-events:initial}.ce-resizer-selection .handle-0{cursor:nw-resize}.ce-resizer-selection .handle-1{cursor:n-resize}.ce-resizer-selection .handle-2{cursor:ne-resize}.ce-resizer-selection .handle-3{cursor:e-resize}.ce-resizer-selection .handle-4{cursor:se-resize}.ce-resizer-selection .handle-5{cursor:s-resize}.ce-resizer-selection .handle-6{cursor:sw-resize}.ce-resizer-selection .handle-7{cursor:w-resize}.ce-resizer-size-view{display:flex;align-items:center;height:20px;white-space:nowrap;position:absolute;z-index:9;top:-30px;left:0;opacity:.9;background-color:#000;padding:0 5px;border-radius:4px}.ce-resizer-size-view span{color:#fff;font-size:12px}.ce-resizer-image{position:absolute;opacity:.5}.ce-image-previewer{position:fixed;left:0;top:0;z-index:1000;width:100%;height:100%;overflow:hidden;background:#f2f4f7;display:flex;align-items:center;justify-content:center;animation:previewerAnimation .3s}@keyframes previewerAnimation{0%{opacity:.1}to{opacity:1}}.ce-image-previewer .image-close{width:24px;height:24px;display:inline-block;position:absolute;right:50px;top:30px;z-index:99;cursor:pointer;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIzLjk3IDdsMS40MTUgMS40MTQtNy43NzkgNy43NzggNy43NzkgNy43NzktMS40MTQgMS40MTQtNy43NzktNy43NzktNy43NzggNy43NzlMNyAyMy45N2w3Ljc3OC03Ljc3OUw3IDguNDE0IDguNDE0IDdsNy43NzggNy43NzhMMjMuOTcxIDd6IiBmaWxsPSIjM0Q0NzU3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=) no-repeat;background-size:100% 100%;transition:all .3s;border-radius:50%}.ce-image-previewer .image-close:hover{background-color:#e2e6ed}.ce-image-previewer .ce-image-container{position:relative}.ce-image-previewer .ce-image-container img{cursor:move;position:relative}.ce-image-previewer .ce-image-menu{height:50px;position:absolute;bottom:50px;z-index:99;display:flex;align-items:center;justify-content:center}.ce-image-previewer .ce-image-menu i{width:32px;height:32px;margin:0 8px;cursor:pointer;display:inline-block;background-repeat:no-repeat;background-size:100% 100%;transition:all .3s;border-radius:50%}.ce-image-previewer .ce-image-menu i:hover{background-color:#e2e6ed}.ce-image-previewer .ce-image-menu i.zoom-in{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDE0di00aDJ2NGg0djJoLTR2NGgtMnYtNGgtNHYtMmg0em04Ljc0OSAxMC4xNjNBMTEuOTUyIDExLjk1MiAwIDAxMTUgMjdDOC4zNzMgMjcgMyAyMS42MjcgMyAxNVM4LjM3MyAzIDE1IDNzMTIgNS4zNzMgMTIgMTJjMCAyLjk1NC0xLjA2NyA1LjY1OC0yLjgzNyA3Ljc0OWw0LjkwOCA0LjkwOC0xLjQxNCAxLjQxNC00LjkwOC00LjkwOHpNMTUgMjVjNS41MjMgMCAxMC00LjQ3NyAxMC0xMFMyMC41MjMgNSAxNSA1IDUgOS40NzcgNSAxNXM0LjQ3NyAxMCAxMCAxMHoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-image-previewer .ce-image-menu i.zoom-out{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIyLjc0OSAyNC4xNjNBMTEuOTUyIDExLjk1MiAwIDAxMTUgMjdDOC4zNzMgMjcgMyAyMS42MjcgMyAxNVM4LjM3MyAzIDE1IDNzMTIgNS4zNzMgMTIgMTJjMCAyLjk1NC0xLjA2NyA1LjY1OC0yLjgzNyA3Ljc0OWw0LjkwOCA0LjkwOC0xLjQxNCAxLjQxNC00LjkwOC00LjkwOHpNMTUgMjVjNS41MjMgMCAxMC00LjQ3NyAxMC0xMFMyMC41MjMgNSAxNSA1IDUgOS40NzcgNSAxNXM0LjQ3NyAxMCAxMCAxMHptLTUtMTFoMTB2MkgxMHYtMnoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-image-previewer .ce-image-menu i.rotate{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTYgNGM2LjYyNyAwIDEyIDUuMzczIDEyIDEyYTExLjk3IDExLjk3IDAgMDEtNCA4Ljk0NFYyM2gtLjg2QTkuOTY4IDkuOTY4IDAgMDAyNiAxNmMwLTUuNTIzLTQuNDc3LTEwLTEwLTEwUzYgMTAuNDc3IDYgMTZjMCA1LjE4NSAzLjk0NyA5LjQ0OSA5IDkuOTV2Mi4wMDlDOC44NCAyNy40NTEgNCAyMi4yOTEgNCAxNiA0IDkuMzczIDkuMzczIDQgMTYgNHoiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik0xOS44NzkgMjcuMzI4bDEuNzY3LTYuNzE3IDQuOTUgNC45NXoiLz48L2c+PC9zdmc+)}.ce-image-previewer .ce-image-menu i.original-size{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgNGgyNHYyNEg0VjR6bTIgMnYyMGgyMFY2SDZ6bTQgNWgydjEwaC0yVjExem01IDJoMnYyaC0ydi0yem0wIDRoMnYyaC0ydi0yem01LTZoMnYxMGgtMlYxMXoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-image-previewer .ce-image-menu i.image-download{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAxNXYzLjVoMTVWMTVIMjF2NUgzdi01aDEuNXptOC4yMzItMTEuMjI2djkuMTk2bDQuMDUtNC4wNSAxLjA2IDEuMDYtNS44MzQgNS44MzQtNS44MzMtNS44MzMgMS4wNi0xLjA2IDMuOTk4IDMuOTk2VjMuNzc0aDEuNXoiIGZpbGw9IiMzRDQ3NTciLz48L3N2Zz4=)}.ce-contextmenu-container{z-index:9;position:fixed;display:none;padding:4px;overflow-x:hidden;overflow-y:auto;background:#fff;box-shadow:0 2px 12px #38383833;border:1px solid #e2e6ed;border-radius:2px}.ce-contextmenu-content{display:flex;flex-direction:column}.ce-contextmenu-content .ce-contextmenu-sub-item:after{position:absolute;content:"";width:16px;height:16px;right:12px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMCAwaDE2djE2SDB6Ii8+PGcgZmlsbD0iIzc2N0M4NSI+PHBhdGggZD0iTTcgMTIuMjQzbC0uNzA3LS43MDcgNC4yNDMtNC4yNDMuNzA3LjcwN3oiLz48cGF0aCBkPSJNNi4yOTMgNC40NjRMNyAzLjc1NyAxMS4yNDMgOGwtLjcwNy43MDd6Ii8+PC9nPjwvZz48L3N2Zz4=)}.ce-contextmenu-content .ce-contextmenu-item{min-width:140px;padding:0 32px 0 16px;height:30px;display:flex;align-items:center;white-space:nowrap;box-sizing:border-box;cursor:pointer}.ce-contextmenu-content .ce-contextmenu-item.hover{background:rgba(25,55,88,.04)}.ce-contextmenu-content .ce-contextmenu-item span{max-width:300px;font-size:12px;color:#3d4757;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ce-contextmenu-content .ce-contextmenu-item span.ce-shortcut{color:#767c85;height:30px;flex:1;text-align:right;line-height:30px;margin-left:20px}.ce-contextmenu-content .ce-contextmenu-item i{width:16px;height:16px;vertical-align:middle;display:inline-block;background-repeat:no-repeat;background-size:100% 100%;flex-shrink:0;margin-right:8px}.ce-contextmenu-divider{background-color:#e2e6ed;margin:4px 16px;height:1px}.ce-contextmenu-print{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjM0Q0NzU3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiA0aC0xVjJINXYySDRWMmExIDEgMCAwMTEtMWg2YTEgMSAwIDAxMSAxdjJ6bTAgNXY0YTEgMSAwIDAxLTEgMUg1YTEgMSAwIDAxLTEtMVY5aDF2NGg2VjloMXoiLz48cGF0aCBkPSJNMTIgMTJ2LTFoMlY1SDJ2NmgydjFIMmExIDEgMCAwMS0xLTFWNWExIDEgMCAwMTEtMWgxMmExIDEgMCAwMTEgMXY2YTEgMSAwIDAxLTEgMWgtMnoiLz48cGF0aCBkPSJNMyA4aDEwdjFIM3ptOC0yaDJ2MWgtMnoiLz48L2c+PC9zdmc+)}.ce-contextmenu-image{background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSLlm77lsYJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4PSIwIiB5PSIwIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3Qwe2ZpbGw6IzNkNDc1N308L3N0eWxlPjxnIGlkPSJfeDMwXzAt5YWs5YWxX3gyRl8wMuW3peWFt+agj194MkZf5o+S5YWl5Zu+54mHLTE2cHgtIj48ZyBpZD0iR3JvdXAtMTkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPjxwYXRoIGlkPSJDb21iaW5lZC1TaGFwZSIgY2xhc3M9InN0MCIgZD0iTTEgMGgxMmMuNiAwIDEgLjQgMSAxdjExYzAgLjYtLjQgMS0xIDFIMWMtLjYgMC0xLS40LTEtMVYxYzAtLjYuNC0xIDEtMXptMCAxdjExaDEyVjFIMXoiLz48Y2lyY2xlIGlkPSLmpK3lnIblvaIiIGNsYXNzPSJzdDAiIGN4PSIxMCIgY3k9IjQiIHI9IjEiLz48cGF0aCBpZD0iUGF0aCIgY2xhc3M9InN0MCIgZD0iTTguNSAxMS4ybC00LTQuMUwxIDEwLjdWOS4yYzEuNy0xLjYgMi43LTIuNSAzLTIuOC40LS41LjctLjQgMSAwTDguNSAxMCAxMSA3LjNjLjQtLjUuNi0uNSAxLS4xbDIgMi44djEuNWwtMi41LTMuNC0zIDMuMXoiLz48L2c+PC9nPjwvc3ZnPg==)}.ce-contextmenu-image-change{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDQpIiBmaWxsPSIjM0Q0NzU3Ij48Y2lyY2xlIGZpbGwtcnVsZT0ibm9uemVybyIgY3g9IjMiIGN5PSIxIiByPSIxIi8+PHBhdGggZD0iTTcuNDczIDguMjIzTDMuNDcgNC4xMDcgMCA3LjY2N3YtMS41QzEuNzE1IDQuNiAyLjcwNyAzLjY2NCAyLjk3NSAzLjM1OGMuNDAyLS40NTcuNjUxLS4zOSAxLjA0MiAwTDcuNDczIDcgOS45NiA0LjM0OWMuNDE0LS40NjIuNjItLjQ2MiAxLjAxMS0uMDcxTDEzIDcuMDZ2MS41bC0yLjUxLTMuNDEtMy4wMTcgMy4wNzJ6Ii8+PC9nPjxwYXRoIGQ9Ik02IDEuNUgxLjV2MTJoMTN2LTRWMTNhLjUuNSAwIDAxLS41LjVIMmEuNS41IDAgMDEtLjUtLjVWMmEuNS41IDAgMDEuNS0uNWg0em04LjUgOFY2bC0uNS41aDFsLS41LS41djMuNXpNNiAxLjVoNEw5LjUgMXYxbC41LS41SDZ6IiBzdHJva2U9IiMzRDQ3NTciLz48cGF0aCBkPSJNMTMuMDg1IDEuMzE2bC0zLjgxNCA0YTEgMSAwIDAwMS40NTggMS4zNjhsMy44MTUtNGExIDEgMCAxMC0xLjQ1OS0xLjM2OHoiIGZpbGw9IiMzRDQ3NTciIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-insert-row-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiMzRDQ3NTciIGQ9Ik04LjUgNS41aDZ2NGgtNnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNNCA3djFoMlY3em0tMyAuNUw0IDV2NXpNMSAxaDEydjFIMXptMCAxMmgxMnYxSDF6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-insert-top-row{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNOCA1SDd2M2gxem0tLjUtM0wxMCA1SDV6Ii8+PHJlY3Qgc3Ryb2tlPSIjM0Q0NzU3IiB4PSIxLjUiIHk9IjEwLjUiIHdpZHRoPSIxMiIgaGVpZ2h0PSIzIiByeD0iMSIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-insert-bottom-row{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNNyAxMWgxVjhIN3ptLjUgM0w1IDExaDV6Ii8+PHJlY3Qgc3Ryb2tlPSIjM0Q0NzU3IiB4PSIxLjUiIHk9IjIuNSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjMiIHJ4PSIxIi8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-insert-left-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMTEgN3YxaDNWN3ptLTMgLjVMMTEgNXY1eiIvPjxyZWN0IHN0cm9rZT0iIzNENDc1NyIgdHJhbnNmb3JtPSJyb3RhdGUoOTAgNCA3LjUpIiB4PSItMiIgeT0iNiIgd2lkdGg9IjEyIiBoZWlnaHQ9IjMiIHJ4PSIxIi8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-insert-right-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNNSA4VjdIMnYxem0zLS41TDUgMTBWNXoiLz48cmVjdCBzdHJva2U9IiMzRDQ3NTciIHRyYW5zZm9ybT0icm90YXRlKDkwIDEyIDcuNSkiIHg9IjYiIHk9IjYiIHdpZHRoPSIxMiIgaGVpZ2h0PSIzIiByeD0iMSIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-delete-row-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiM5MjlBQTgiIGQ9Ik04LjUgNi41aDZ2MmgtNnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMiAxMmgxMXYxSDJ6TTIgMmgxMXYxSDJ6bS42MyAzTDcgOS4zNWwtLjYzNS42NUwyIDUuNjN6Ii8+PHBhdGggZmlsbD0iIzNENDc1NyIgZD0iTTIgOS4zNjNMNi4zNTUgNSA3IDUuNzA3IDIuNjk1IDEweiIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-delete-row{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiM5MjlBQTgiIGQ9Ik04LjUgNS41aDZ2NGgtNnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMSAxM2gxMnYxSDF6TTEgMWgxMnYxSDF6bTAgNGgxdjFIMXptMSAxaDF2MUgyem0xIDFoMXYxSDN6bTEtMWgxdjFINHptMS0xaDF2MUg1ek00IDhoMXYxSDR6TTIgOGgxdjFIMnptMyAxaDF2MUg1ek0xIDloMXYxSDF6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-delete-col{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBzdHJva2U9IiM5MjlBQTgiIGQ9Ik01LjUgNy41di02aDR2NnoiLz48cGF0aCBmaWxsPSIjM0Q0NzU3IiBkPSJNMTMgMTVWM2gxdjEyek0xIDE1VjNoMXYxMnptNCAwdi0xaDF2MXptMS0xdi0xaDF2MXptMS0xdi0xaDF2MXptLTEtMXYtMWgxdjF6bS0xLTF2LTFoMXYxem0zIDF2LTFoMXYxem0wIDJ2LTFoMXYxem0xLTN2LTFoMXYxem0wIDR2LTFoMXYxeiIvPjwvZz48L3N2Zz4=)}.ce-contextmenu-delete-table{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTQgMTNoLTF2LTNIMnYzSDF2LTNhMSAxIDAgMDExLTFoMTFhMSAxIDAgMDExIDF2M3oiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik01LjYyNSAyTDEwIDYuMzc1IDkuMzc1IDcgNSAyLjYyNXoiLz48cGF0aCBkPSJNNSA2LjM3NUw5LjM3NSAybC42MjUuNjI1TDUuNjI1IDd6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-merge-cell{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNiAxdjFIMnYxMWg0djFIMmExIDEgMCAwMS0xLTFWMmExIDEgMCAwMTEtMWg0em0zIDBoNGExIDEgMCAwMTEgMXYxMWExIDEgMCAwMS0xIDFIOXYtMWg0VjJIOVYxeiIvPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTYgMWgxdjRINnptMiAwaDF2NEg4eiIvPjxwYXRoIGQ9Ik04IDcuNUwxMCA2djN6bS0xIDBMNSA2djN6Ii8+PHBhdGggZD0iTTkgN2gzdjFIOXpNMyA3aDN2MUgzeiIvPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTggMTBoMXY0SDh6bS0yIDBoMXY0SDZ6Ii8+PC9nPjwvc3ZnPg==)}.ce-contextmenu-merge-cancel-cell{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNNiAxdjFIMnYxMWg0djFIMmExIDEgMCAwMS0xLTFWMmExIDEgMCAwMTEtMWg0em0zIDBoNGExIDEgMCAwMTEgMXYxMWExIDEgMCAwMS0xIDFIOXYtMWg0VjJIOVYxeiIvPjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTYgMWgxdjRINnptMiAwaDF2NEg4eiIvPjxwYXRoIGQ9Ik0zIDcuNUw1IDZ2M3ptOSAwTDEwIDZ2M3oiLz48cGF0aCBkPSJNNCA3aDN2MUg0em00IDBoM3YxSDh6Ii8+PHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNOCAxMGgxdjRIOHptLTIgMGgxdjRINnoiLz48L2c+PC9zdmc+)}.ce-contextmenu-vertical-align{background-image:url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMiAxM2gxMnYxSDJ6bTAtM2g4djFIMnptMC0zaDEydjFIMnptMC02aDEydjFIMnptMCAzaDh2MUgyeiIgZmlsbD0iIzNkNDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.ce-contextmenu-vertical-align-top{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTggOEg3djZoMXptLS41LTNMMTAgOEg1ek0yIDNoMTF2MUgyeiIgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.ce-contextmenu-vertical-align-middle{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNOCAxMkg3djNoMXptLS41LTNsMi41IDNINXpNNyAzaDFWMEg3em0uNSAzTDUgM2g1ek0yIDdoMTF2MUgyeiIgZmlsbD0iIzNENDc1NyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+)}.ce-contextmenu-vertical-align-bottom{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgOWgxVjNIN3ptLjUgM0w1IDloNXpNMiAxM2gxMXYxSDJ6IiBmaWxsPSIjM0Q0NzU3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=)}.ce-contextmenu-border-all{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iIzNENDc1NyIvPjxwYXRoIGZpbGw9IiMzRDQ3NTciIGQ9Ik0zIDhoMTF2MUgzeiIvPjxwYXRoIGZpbGw9IiMzRDQ3NTciIGQ9Ik05IDN2MTFIOFYzeiIvPjwvc3ZnPg==)}.ce-contextmenu-border-empty{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMyAzaC0xVjJoMWExIDEgMCAwMTEgMXYxaC0xVjN6bS0zLTF2MUg4LjV2MmgtMVYzSDZWMmg0ek00IDJ2MUgzdjFIMlYzYTEgMSAwIDAxMS0xaDF6TTIgNmgxdjEuNWgydjFIM1YxMEgyVjZ6bTAgNmgxdjFoMXYxSDNhMSAxIDAgMDEtMS0xdi0xem00IDJ2LTFoMS41di0yaDF2MkgxMHYxSDZ6bTYgMHYtMWgxdi0xaDF2MWExIDEgMCAwMS0xIDFoLTF6bTItNGgtMVY4LjVoLTJ2LTFoMlY2aDF2NHpNOC41IDcuNXYtMWgtMXYxaC0xdjFoMXYxaDF2LTFoMXYtMWgtMXoiIGZpbGw9IiNBQUFDQjAiLz48L3N2Zz4=)}.ce-contextmenu-border-external{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iIzNENDc1NyIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOSA1VjNIOHYyaDF6bTAgOXYtMkg4djJoMXpNNSA4SDN2MWgyVjh6bTkgMGgtMnYxaDJWOHpNOSA3djFoMXYxSDl2MUg4VjlIN1Y4aDFWN2gxeiIgZmlsbD0iI0FBQUNCMCIvPjwvc3ZnPg==)}.ce-contextmenu-border-td{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgZD0iTTguNSAyLjUgdjYgaC02Ii8+PC9zdmc+)}.ce-contextmenu-border-td-top{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMi41IDMgaDEyIi8+PC9zdmc+)}.ce-contextmenu-border-td-left{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMyAzIHYxMSIvPjwvc3ZnPg==)}.ce-contextmenu-border-td-bottom{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMi41IDE0IGgxMiIvPjwvc3ZnPg==)}.ce-contextmenu-border-td-right{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIHN0cm9rZT0iIzNENDc1NyIgc3Ryb2tlLXdpZHRoPSIyIiBkPSJNMTQgMyB2MTEiLz48L3N2Zz4=)}.ce-contextmenu-border-td-forward{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIgLz48cGF0aCBzdHJva2U9IiMzRDQ3NTciIGQ9Ik0xNCAzIGwtMTEgMTEiIC8+PC9zdmc+)}.ce-contextmenu-border-td-back{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIgLz48cGF0aCBzdHJva2U9IiMzRDQ3NTciIGQ9Ik0zIDMgbDExIDExIiAvPjwvc3ZnPg==)}.ce-hyperlink-popup{background:#fff;box-shadow:0 2px 12px #626b8433;border-radius:2px;color:#3d4757;padding:12px 16px;position:absolute;z-index:1;text-align:center;display:none}.ce-hyperlink-popup a{min-width:100px;max-width:300px;font-size:12px;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;text-decoration:none;border-bottom-width:1px;border-bottom-style:solid;color:#00f}.ce-zone-indicator>div{padding:3px 6px;color:#000;font-size:12px;background:rgb(218 231 252);position:absolute;transform-origin:0 0}.ce-zone-indicator-border__top,.ce-zone-indicator-border__bottom,.ce-zone-indicator-border__left,.ce-zone-indicator-border__right{display:block;position:absolute;z-index:0}.ce-zone-indicator-border__top{border-top:2px dashed rgb(238,238,238)}.ce-zone-indicator-border__bottom{border-top:2px dashed rgb(238,238,238);width:100%}.ce-zone-indicator-border__left{border-left:2px dashed rgb(238,238,238)}.ce-zone-indicator-border__right{border-right:2px dashed rgb(238,238,238)}.ce-zone-tip{display:none;align-items:center;height:30px;white-space:nowrap;position:fixed;opacity:.9;background-color:#000;padding:0 5px;border-radius:4px;z-index:9;transition:all .3s;outline:none;user-select:none;pointer-events:none;transform:translate(10px,10px)}.ce-zone-tip.show{display:flex}.ce-zone-tip span{color:#fff;font-size:12px}.ce-inputarea{width:100px;height:30px;min-width:0;min-height:0;margin:0;padding:0;left:0;right:0;letter-spacing:0;font-size:12px;position:absolute;z-index:-1;outline:none;resize:none;border:none;overflow:hidden;color:transparent;user-select:none;caret-color:transparent;background-color:transparent}.ce-cursor{width:1px;height:20px;left:0;right:0;position:absolute;outline:none;background-color:#000;pointer-events:none}.ce-cursor.ce-cursor--animation{animation-duration:1s;animation-iteration-count:infinite;animation-name:cursorAnimation}@keyframes cursorAnimation{0%{opacity:1}13%{opacity:0}50%{opacity:0}63%{opacity:1}to{opacity:1}}.ce-float-image{position:absolute;opacity:.5;pointer-events:none}')),document.head.appendChild(e)}}catch(i){console.error("vite-plugin-css-injected-by-js",i)}})();})();
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defProps = Object.defineProperties;
4
4
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
@@ -23,7 +23,7 @@ var __publicField = (obj, key, value) => {
23
23
  return value;
24
24
  };
25
25
  var index = "";
26
- const version = "0.9.64";
26
+ const version = "0.9.66";
27
27
  var MaxHeightRatio;
28
28
  (function(MaxHeightRatio2) {
29
29
  MaxHeightRatio2["HALF"] = "half";
@@ -35,6 +35,13 @@ var NumberType;
35
35
  NumberType2["ARABIC"] = "arabic";
36
36
  NumberType2["CHINESE"] = "chinese";
37
37
  })(NumberType || (NumberType = {}));
38
+ var ImageDisplay;
39
+ (function(ImageDisplay2) {
40
+ ImageDisplay2["INLINE"] = "inline";
41
+ ImageDisplay2["BLOCK"] = "block";
42
+ ImageDisplay2["FLOAT_TOP"] = "float-top";
43
+ ImageDisplay2["FLOAT_BOTTOM"] = "float-bottom";
44
+ })(ImageDisplay || (ImageDisplay = {}));
38
45
  const ZERO = "\u200B";
39
46
  const WRAP = "\n";
40
47
  const NBSP = " ";
@@ -413,12 +420,15 @@ const EDITOR_ELEMENT_ZIP_ATTR = [
413
420
  "listStyle",
414
421
  "listWrap",
415
422
  "groupIds",
416
- "conceptId"
423
+ "conceptId",
424
+ "imgDisplay",
425
+ "imgFloatPosition"
417
426
  ];
418
427
  const TABLE_TD_ZIP_ATTR = [
419
428
  "verticalAlign",
420
429
  "backgroundColor",
421
- "borderType"
430
+ "borderTypes",
431
+ "slashTypes"
422
432
  ];
423
433
  const TABLE_CONTEXT_ATTR = [
424
434
  "tdId",
@@ -460,9 +470,55 @@ class ImageParticle {
460
470
  __publicField(this, "draw");
461
471
  __publicField(this, "options");
462
472
  __publicField(this, "imageCache");
473
+ __publicField(this, "container");
474
+ __publicField(this, "floatImageContainer");
475
+ __publicField(this, "floatImage");
463
476
  this.draw = draw;
464
477
  this.options = draw.getOptions();
478
+ this.container = draw.getContainer();
465
479
  this.imageCache = new Map();
480
+ this.floatImageContainer = null;
481
+ this.floatImage = null;
482
+ }
483
+ createFloatImage(element) {
484
+ const { scale } = this.options;
485
+ let floatImageContainer = this.floatImageContainer;
486
+ let floatImage = this.floatImage;
487
+ if (!floatImageContainer) {
488
+ floatImageContainer = document.createElement("div");
489
+ floatImageContainer.classList.add(`${EDITOR_PREFIX}-float-image`);
490
+ this.container.append(floatImageContainer);
491
+ this.floatImageContainer = floatImageContainer;
492
+ }
493
+ if (!floatImage) {
494
+ floatImage = document.createElement("img");
495
+ floatImageContainer.append(floatImage);
496
+ this.floatImage = floatImage;
497
+ }
498
+ floatImageContainer.style.display = "none";
499
+ floatImage.style.width = `${element.width * scale}px`;
500
+ floatImage.style.height = `${element.height * scale}px`;
501
+ const height = this.draw.getHeight();
502
+ const pageGap = this.draw.getPageGap();
503
+ const preY = this.draw.getPageNo() * (height + pageGap);
504
+ const imgFloatPosition = element.imgFloatPosition;
505
+ floatImageContainer.style.left = `${imgFloatPosition.x}px`;
506
+ floatImageContainer.style.top = `${preY + imgFloatPosition.y}px`;
507
+ floatImage.src = element.value;
508
+ }
509
+ dragFloatImage(movementX, movementY) {
510
+ if (!this.floatImageContainer)
511
+ return;
512
+ this.floatImageContainer.style.display = "block";
513
+ const x = parseFloat(this.floatImageContainer.style.left) + movementX;
514
+ const y = parseFloat(this.floatImageContainer.style.top) + movementY;
515
+ this.floatImageContainer.style.left = `${x}px`;
516
+ this.floatImageContainer.style.top = `${y}px`;
517
+ }
518
+ destroyFloatImage() {
519
+ if (this.floatImageContainer) {
520
+ this.floatImageContainer.style.display = "none";
521
+ }
466
522
  }
467
523
  addImageObserver(promise) {
468
524
  this.draw.getImageObserver().add(promise);
@@ -497,9 +553,17 @@ class ImageParticle {
497
553
  img.setAttribute("crossOrigin", "Anonymous");
498
554
  img.src = element.value;
499
555
  img.onload = () => {
500
- ctx.drawImage(img, x, y, width, height);
501
556
  this.imageCache.set(element.id, img);
502
557
  resolve(element);
558
+ if (element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) {
559
+ this.draw.render({
560
+ isCompute: false,
561
+ isSetCursor: false,
562
+ isSubmitHistory: false
563
+ });
564
+ } else {
565
+ ctx.drawImage(img, x, y, width, height);
566
+ }
503
567
  };
504
568
  img.onerror = (error) => {
505
569
  const fallbackImage = this.getFallbackImage(width, height);
@@ -3607,11 +3671,6 @@ var ControlComponent;
3607
3671
  ControlComponent2["VALUE"] = "value";
3608
3672
  ControlComponent2["CHECKBOX"] = "checkbox";
3609
3673
  })(ControlComponent || (ControlComponent = {}));
3610
- var ImageDisplay;
3611
- (function(ImageDisplay2) {
3612
- ImageDisplay2["INLINE"] = "inline";
3613
- ImageDisplay2["BLOCK"] = "block";
3614
- })(ImageDisplay || (ImageDisplay = {}));
3615
3674
  var ControlIndentation;
3616
3675
  (function(ControlIndentation2) {
3617
3676
  ControlIndentation2["ROW_START"] = "rowStart";
@@ -4744,10 +4803,16 @@ async function pasteByApi(host, options) {
4744
4803
  paste();
4745
4804
  return;
4746
4805
  }
4806
+ const clipboardText = await navigator.clipboard.readText();
4807
+ const editorClipboardData = getClipboardData();
4808
+ if (clipboardText === (editorClipboardData == null ? void 0 : editorClipboardData.text)) {
4809
+ pasteElement(host, editorClipboardData.elementList);
4810
+ return;
4811
+ }
4812
+ removeClipboardData();
4747
4813
  if (options == null ? void 0 : options.isPlainText) {
4748
- const text = await navigator.clipboard.readText();
4749
- if (text) {
4750
- host.input(text);
4814
+ if (clipboardText) {
4815
+ host.input(clipboardText);
4751
4816
  }
4752
4817
  } else {
4753
4818
  const clipboardData = await navigator.clipboard.read();
@@ -5159,6 +5224,15 @@ class CheckboxControl {
5159
5224
  return -1;
5160
5225
  }
5161
5226
  }
5227
+ function setRangeCache(host) {
5228
+ const draw = host.getDraw();
5229
+ const position = draw.getPosition();
5230
+ const rangeManager = draw.getRange();
5231
+ host.isAllowDrag = true;
5232
+ host.cacheRange = deepClone(rangeManager.getRange());
5233
+ host.cacheElementList = draw.getElementList();
5234
+ host.cachePositionList = position.getPositionList();
5235
+ }
5162
5236
  function mousedown(evt, host) {
5163
5237
  var _a;
5164
5238
  if (evt.button === MouseEventButton.RIGHT)
@@ -5172,10 +5246,7 @@ function mousedown(evt, host) {
5172
5246
  if (!isReadonly && range.startIndex !== range.endIndex) {
5173
5247
  const isPointInRange = rangeManager.getIsPointInRange(evt.offsetX, evt.offsetY);
5174
5248
  if (isPointInRange) {
5175
- host.isAllowDrag = true;
5176
- host.cacheRange = deepClone(range);
5177
- host.cacheElementList = draw.getElementList();
5178
- host.cachePositionList = position.getPositionList();
5249
+ setRangeCache(host);
5179
5250
  return;
5180
5251
  }
5181
5252
  }
@@ -5194,7 +5265,9 @@ function mousedown(evt, host) {
5194
5265
  return;
5195
5266
  const { index: index2, isDirectHit, isCheckbox, isImage, isTable, tdValueIndex, hitLineStartIndex } = positionResult;
5196
5267
  host.mouseDownStartPosition = __spreadProps(__spreadValues({}, positionResult), {
5197
- index: isTable ? tdValueIndex : index2
5268
+ index: isTable ? tdValueIndex : index2,
5269
+ x: evt.offsetX,
5270
+ y: evt.offsetY
5198
5271
  });
5199
5272
  const elementList = draw.getElementList();
5200
5273
  const positionList = position.getPositionList();
@@ -5249,6 +5322,10 @@ function mousedown(evt, host) {
5249
5322
  draw.getCursor().drawCursor({
5250
5323
  isShow: false
5251
5324
  });
5325
+ setRangeCache(host);
5326
+ if (curElement.imgDisplay === ImageDisplay.FLOAT_TOP || curElement.imgDisplay === ImageDisplay.FLOAT_BOTTOM) {
5327
+ draw.getImageParticle().createFloatImage(curElement);
5328
+ }
5252
5329
  }
5253
5330
  const tableTool = draw.getTableTool();
5254
5331
  tableTool.dispose();
@@ -5278,6 +5355,19 @@ function createDragId(element) {
5278
5355
  function getElementIndexByDragId(dragId, elementList) {
5279
5356
  return elementList.findIndex((el) => el.dragId === dragId);
5280
5357
  }
5358
+ function moveImgPosition(element, evt, host) {
5359
+ const draw = host.getDraw();
5360
+ if (element.imgDisplay === ImageDisplay.FLOAT_TOP || element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) {
5361
+ const moveX = evt.offsetX - host.mouseDownStartPosition.x;
5362
+ const moveY = evt.offsetY - host.mouseDownStartPosition.y;
5363
+ const imgFloatPosition = element.imgFloatPosition;
5364
+ element.imgFloatPosition = {
5365
+ x: imgFloatPosition.x + moveX,
5366
+ y: imgFloatPosition.y + moveY
5367
+ };
5368
+ }
5369
+ draw.getImageParticle().destroyFloatImage();
5370
+ }
5281
5371
  function mouseup(evt, host) {
5282
5372
  var _a, _b, _c;
5283
5373
  if (host.isAllowDrop) {
@@ -5291,20 +5381,38 @@ function mouseup(evt, host) {
5291
5381
  const cacheElementList = host.cacheElementList;
5292
5382
  const cachePositionList = host.cachePositionList;
5293
5383
  const range = rangeManager.getRange();
5294
- if (range.startIndex >= cacheRange.startIndex && range.endIndex <= cacheRange.endIndex) {
5384
+ const isCacheRangeCollapsed = cacheRange.startIndex === cacheRange.endIndex;
5385
+ const cacheStartIndex = isCacheRangeCollapsed ? cacheRange.startIndex - 1 : cacheRange.startIndex;
5386
+ const cacheEndIndex = cacheRange.endIndex;
5387
+ if (range.startIndex >= cacheStartIndex && range.endIndex <= cacheEndIndex) {
5388
+ draw.clearSideEffect();
5389
+ let isSubmitHistory = false;
5390
+ if (isCacheRangeCollapsed) {
5391
+ const dragElement = cacheElementList[cacheEndIndex];
5392
+ if (dragElement.type === ElementType.IMAGE || dragElement.type === ElementType.LATEX) {
5393
+ moveImgPosition(dragElement, evt, host);
5394
+ if (dragElement.imgDisplay === ImageDisplay.FLOAT_TOP || dragElement.imgDisplay === ImageDisplay.FLOAT_BOTTOM) {
5395
+ draw.getPreviewer().drawResizer(dragElement);
5396
+ isSubmitHistory = true;
5397
+ } else {
5398
+ const cachePosition = cachePositionList[cacheEndIndex];
5399
+ draw.getPreviewer().drawResizer(dragElement, cachePosition);
5400
+ }
5401
+ }
5402
+ }
5295
5403
  rangeManager.replaceRange(__spreadValues({}, cacheRange));
5296
5404
  draw.render({
5297
5405
  isSetCursor: false,
5298
5406
  isCompute: false,
5299
- isSubmitHistory: false
5407
+ isSubmitHistory
5300
5408
  });
5301
5409
  return;
5302
5410
  }
5303
- const dragElementList = cacheElementList.slice(cacheRange.startIndex + 1, cacheRange.endIndex + 1);
5411
+ const dragElementList = cacheElementList.slice(cacheStartIndex + 1, cacheEndIndex + 1);
5304
5412
  const isContainControl = dragElementList.find((element) => element.controlId);
5305
5413
  if (isContainControl) {
5306
- const cacheStartElement2 = cacheElementList[cacheRange.startIndex + 1];
5307
- const cacheEndElement2 = cacheElementList[cacheRange.endIndex];
5414
+ const cacheStartElement2 = cacheElementList[cacheStartIndex + 1];
5415
+ const cacheEndElement2 = cacheElementList[cacheEndIndex];
5308
5416
  const isAllowDragControl = (!cacheStartElement2.controlId || cacheStartElement2.controlComponent === ControlComponent.PREFIX) && (!cacheEndElement2.controlId || cacheEndElement2.controlComponent === ControlComponent.POSTFIX) || cacheStartElement2.controlId === cacheEndElement2.controlId && cacheStartElement2.controlComponent === ControlComponent.PREFIX && cacheEndElement2.controlComponent === ControlComponent.POSTFIX || ((_a = cacheStartElement2.control) == null ? void 0 : _a.type) === ControlType.TEXT && cacheStartElement2.controlComponent === ControlComponent.VALUE && ((_b = cacheEndElement2.control) == null ? void 0 : _b.type) === ControlType.TEXT && cacheEndElement2.controlComponent === ControlComponent.VALUE;
5309
5417
  if (!isAllowDragControl) {
5310
5418
  draw.render({
@@ -5340,8 +5448,8 @@ function mouseup(evt, host) {
5340
5448
  }
5341
5449
  });
5342
5450
  formatElementContext(elementList, replaceElementList, range.startIndex);
5343
- const cacheRangeStartId = createDragId(cacheElementList[cacheRange.startIndex]);
5344
- const cacheRangeEndId = createDragId(cacheElementList[cacheRange.endIndex]);
5451
+ const cacheRangeStartId = createDragId(cacheElementList[cacheStartIndex]);
5452
+ const cacheRangeEndId = createDragId(cacheElementList[cacheEndIndex]);
5345
5453
  const replaceLength = replaceElementList.length;
5346
5454
  let rangeStart = range.startIndex;
5347
5455
  let rangeEnd = rangeStart + replaceLength;
@@ -5374,9 +5482,9 @@ function mouseup(evt, host) {
5374
5482
  draw.spliceElementList(cacheElementList, cacheRangeStartIndex + 1, cacheRangeEndIndex - cacheRangeStartIndex);
5375
5483
  }
5376
5484
  const startElement = elementList[range.startIndex];
5377
- const cacheStartElement = cacheElementList[cacheRange.startIndex];
5485
+ const cacheStartElement = cacheElementList[cacheStartIndex];
5378
5486
  const startPosition = positionList[range.startIndex];
5379
- const cacheStartPosition = cachePositionList[cacheRange.startIndex];
5487
+ const cacheStartPosition = cachePositionList[cacheStartIndex];
5380
5488
  const positionContext = position.getPositionContext();
5381
5489
  let positionContextIndex = positionContext.index;
5382
5490
  if (positionContextIndex) {
@@ -5395,10 +5503,29 @@ function mouseup(evt, host) {
5395
5503
  }
5396
5504
  const rangeStartIndex = getElementIndexByDragId(rangeStartId, elementList);
5397
5505
  const rangeEndIndex = getElementIndexByDragId(rangeEndId, elementList);
5398
- rangeManager.setRange(rangeStartIndex, rangeEndIndex, range.tableId, range.startTdIndex, range.endTdIndex, range.startTrIndex, range.endTrIndex);
5506
+ rangeManager.setRange(isCacheRangeCollapsed ? rangeEndIndex : rangeStartIndex, rangeEndIndex, range.tableId, range.startTdIndex, range.endTdIndex, range.startTrIndex, range.endTrIndex);
5507
+ draw.clearSideEffect();
5508
+ let imgElement = null;
5509
+ if (isCacheRangeCollapsed) {
5510
+ const elementList2 = draw.getElementList();
5511
+ const dragElement = elementList2[rangeEndIndex];
5512
+ if (dragElement.type === ElementType.IMAGE || dragElement.type === ElementType.LATEX) {
5513
+ moveImgPosition(dragElement, evt, host);
5514
+ imgElement = dragElement;
5515
+ }
5516
+ }
5399
5517
  draw.render({
5400
5518
  isSetCursor: false
5401
5519
  });
5520
+ if (imgElement) {
5521
+ if (imgElement.imgDisplay === ImageDisplay.FLOAT_TOP || imgElement.imgDisplay === ImageDisplay.FLOAT_BOTTOM) {
5522
+ draw.getPreviewer().drawResizer(imgElement);
5523
+ } else {
5524
+ const dragPositionList = position.getPositionList();
5525
+ const dragPosition = dragPositionList[rangeEndIndex];
5526
+ draw.getPreviewer().drawResizer(imgElement, dragPosition);
5527
+ }
5528
+ }
5402
5529
  } else if (host.isAllowDrag) {
5403
5530
  host.mousedown(evt);
5404
5531
  }
@@ -5413,6 +5540,7 @@ function mouseleave(evt, host) {
5413
5540
  host.setIsAllowSelection(false);
5414
5541
  }
5415
5542
  function mousemove(evt, host) {
5543
+ var _a;
5416
5544
  const draw = host.getDraw();
5417
5545
  if (host.isAllowDrag) {
5418
5546
  const x = evt.offsetX;
@@ -5425,6 +5553,14 @@ function mousemove(evt, host) {
5425
5553
  return;
5426
5554
  }
5427
5555
  }
5556
+ const cacheStartIndex = (_a = host.cacheRange) == null ? void 0 : _a.startIndex;
5557
+ if (cacheStartIndex) {
5558
+ const dragElement = host.cacheElementList[cacheStartIndex];
5559
+ if ((dragElement == null ? void 0 : dragElement.type) === ElementType.IMAGE && (dragElement.imgDisplay === ImageDisplay.FLOAT_TOP || dragElement.imgDisplay === ImageDisplay.FLOAT_BOTTOM)) {
5560
+ draw.getPreviewer().clearResizer();
5561
+ draw.getImageParticle().dragFloatImage(evt.movementX, evt.movementY);
5562
+ }
5563
+ }
5428
5564
  host.dragover(evt);
5429
5565
  host.isAllowDrop = true;
5430
5566
  return;
@@ -6052,16 +6188,22 @@ function dblclick(host, evt) {
6052
6188
  const draw = host.getDraw();
6053
6189
  const LETTER_REG = draw.getLetterReg();
6054
6190
  const position = draw.getPosition();
6191
+ const positionContext = position.getPositionByXY({
6192
+ x: evt.offsetX,
6193
+ y: evt.offsetY
6194
+ });
6195
+ if (positionContext.isImage && positionContext.isDirectHit) {
6196
+ draw.getPreviewer().render();
6197
+ return;
6198
+ }
6055
6199
  if (draw.getIsPagingMode()) {
6056
- const positionContext = position.getPositionByXY({
6057
- x: evt.offsetX,
6058
- y: evt.offsetY
6059
- });
6060
6200
  if (!~positionContext.index && positionContext.zone) {
6061
6201
  draw.getZone().setZone(positionContext.zone);
6062
6202
  return;
6063
6203
  }
6064
6204
  }
6205
+ if (positionContext.isCheckbox && positionContext.isDirectHit)
6206
+ return;
6065
6207
  const cursorPosition = position.getCursorPosition();
6066
6208
  if (!cursorPosition)
6067
6209
  return;
@@ -6533,9 +6675,11 @@ class Position {
6533
6675
  __publicField(this, "cursorPosition");
6534
6676
  __publicField(this, "positionContext");
6535
6677
  __publicField(this, "positionList");
6678
+ __publicField(this, "floatPositionList");
6536
6679
  __publicField(this, "draw");
6537
6680
  __publicField(this, "options");
6538
6681
  this.positionList = [];
6682
+ this.floatPositionList = [];
6539
6683
  this.cursorPosition = null;
6540
6684
  this.positionContext = {
6541
6685
  isTable: false,
@@ -6544,6 +6688,9 @@ class Position {
6544
6688
  this.draw = draw;
6545
6689
  this.options = draw.getOptions();
6546
6690
  }
6691
+ getFloatPositionList() {
6692
+ return this.floatPositionList;
6693
+ }
6547
6694
  getTablePositionList(sourceElementList) {
6548
6695
  const { index: index2, trIndex, tdIndex } = this.positionContext;
6549
6696
  return sourceElementList[index2].trList[trIndex].tdList[tdIndex].positionList || [];
@@ -6621,6 +6768,23 @@ class Position {
6621
6768
  rightBottom: [x + metrics.width, y + curRow.height]
6622
6769
  }
6623
6770
  };
6771
+ if (element.imgDisplay === ImageDisplay.FLOAT_TOP || element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) {
6772
+ const prePosition = positionList[positionList.length - 1];
6773
+ if (prePosition) {
6774
+ positionItem.metrics = prePosition.metrics;
6775
+ positionItem.coordinate = prePosition.coordinate;
6776
+ }
6777
+ this.floatPositionList.push({
6778
+ pageNo,
6779
+ element,
6780
+ position: positionItem,
6781
+ isTable: payload.isTable,
6782
+ index: payload.index,
6783
+ tdIndex: payload.tdIndex,
6784
+ trIndex: payload.trIndex,
6785
+ tdValueIndex: index2
6786
+ });
6787
+ }
6624
6788
  positionList.push(positionItem);
6625
6789
  index2++;
6626
6790
  x += metrics.width;
@@ -6641,7 +6805,11 @@ class Position {
6641
6805
  startIndex: 0,
6642
6806
  startX: (td.x + tdPadding[3]) * scale + tablePreX,
6643
6807
  startY: (td.y + tdPadding[0]) * scale + tablePreY,
6644
- innerWidth: (td.width - tdPaddingWidth) * scale
6808
+ innerWidth: (td.width - tdPaddingWidth) * scale,
6809
+ isTable: true,
6810
+ index: index2 - 1,
6811
+ tdIndex: d,
6812
+ trIndex: t
6645
6813
  });
6646
6814
  if (td.verticalAlign === VerticalAlign.MIDDLE || td.verticalAlign === VerticalAlign.BOTTOM) {
6647
6815
  const rowsHeight = rowList2.reduce((pre, cur) => pre + cur.height, 0);
@@ -6673,6 +6841,7 @@ class Position {
6673
6841
  computePositionList() {
6674
6842
  var _a;
6675
6843
  this.positionList = [];
6844
+ this.floatPositionList = [];
6676
6845
  const innerWidth = this.draw.getInnerWidth();
6677
6846
  const pageRowList = this.draw.getPageRowList();
6678
6847
  const margins = this.draw.getMargins();
@@ -6738,6 +6907,13 @@ class Position {
6738
6907
  const curPageNo = (_a = payload.pageNo) != null ? _a : this.draw.getPageNo();
6739
6908
  const isMainActive = zoneManager.isMainActive();
6740
6909
  const positionNo = isMainActive ? curPageNo : 0;
6910
+ if (!isTable) {
6911
+ const floatTopPosition = this.getFloatPositionByXY(__spreadProps(__spreadValues({}, payload), {
6912
+ imgDisplay: ImageDisplay.FLOAT_TOP
6913
+ }));
6914
+ if (floatTopPosition)
6915
+ return floatTopPosition;
6916
+ }
6741
6917
  for (let j = 0; j < positionList.length; j++) {
6742
6918
  const { index: index2, pageNo, left, isFirstLetter, coordinate: { leftTop, rightTop, leftBottom } } = positionList[j];
6743
6919
  if (positionNo !== pageNo)
@@ -6812,6 +6988,13 @@ class Position {
6812
6988
  };
6813
6989
  }
6814
6990
  }
6991
+ if (!isTable) {
6992
+ const floatBottomPosition = this.getFloatPositionByXY(__spreadProps(__spreadValues({}, payload), {
6993
+ imgDisplay: ImageDisplay.FLOAT_BOTTOM
6994
+ }));
6995
+ if (floatBottomPosition)
6996
+ return floatBottomPosition;
6997
+ }
6815
6998
  let isLastArea = false;
6816
6999
  let curPositionIndex = -1;
6817
7000
  let hitLineStartIndex;
@@ -6894,6 +7077,36 @@ class Position {
6894
7077
  isControl: !!((_c = elementList[curPositionIndex]) == null ? void 0 : _c.controlId)
6895
7078
  };
6896
7079
  }
7080
+ getFloatPositionByXY(payload) {
7081
+ const { x, y } = payload;
7082
+ for (let f = 0; f < this.floatPositionList.length; f++) {
7083
+ const { position, element, isTable, index: index2, trIndex, tdIndex, tdValueIndex } = this.floatPositionList[f];
7084
+ if (element.type === ElementType.IMAGE && element.imgDisplay === payload.imgDisplay) {
7085
+ const imgFloatPosition = element.imgFloatPosition;
7086
+ if (x >= imgFloatPosition.x && x <= imgFloatPosition.x + element.width && y >= imgFloatPosition.y && y <= imgFloatPosition.y + element.height) {
7087
+ if (isTable) {
7088
+ return {
7089
+ index: index2,
7090
+ isDirectHit: true,
7091
+ isImage: true,
7092
+ isTable,
7093
+ trIndex,
7094
+ tdIndex,
7095
+ tdValueIndex,
7096
+ tdId: element.tdId,
7097
+ trId: element.trId,
7098
+ tableId: element.tableId
7099
+ };
7100
+ }
7101
+ return {
7102
+ index: position.index,
7103
+ isDirectHit: true,
7104
+ isImage: true
7105
+ };
7106
+ }
7107
+ }
7108
+ }
7109
+ }
6897
7110
  adjustPositionContext(payload) {
6898
7111
  const positionResult = this.getPositionByXY(payload);
6899
7112
  if (!~positionResult.index)
@@ -7482,7 +7695,7 @@ class AbstractRichText {
7482
7695
  }
7483
7696
  recordFillInfo(ctx, x, y, width, height, color) {
7484
7697
  const isFirstRecord = !this.fillRect.width;
7485
- if (!isFirstRecord && this.fillColor && this.fillColor !== color) {
7698
+ if (!isFirstRecord && this.fillColor !== color) {
7486
7699
  this.render(ctx);
7487
7700
  this.clearFillInfo();
7488
7701
  this.recordFillInfo(ctx, x, y, width, height, color);
@@ -8245,16 +8458,18 @@ class TableParticle {
8245
8458
  ctx.translate(-0.5, -0.5);
8246
8459
  }
8247
8460
  _drawSlash(ctx, td, startX, startY) {
8461
+ var _a, _b;
8248
8462
  const { scale } = this.options;
8249
8463
  ctx.save();
8250
8464
  const width = td.width * scale;
8251
8465
  const height = td.height * scale;
8252
8466
  const x = Math.round(td.x * scale + startX);
8253
8467
  const y = Math.round(td.y * scale + startY);
8254
- if (td.slashType === TdSlash.FORWARD) {
8468
+ if ((_a = td.slashTypes) == null ? void 0 : _a.includes(TdSlash.FORWARD)) {
8255
8469
  ctx.moveTo(x + width, y);
8256
8470
  ctx.lineTo(x, y + height);
8257
- } else {
8471
+ }
8472
+ if ((_b = td.slashTypes) == null ? void 0 : _b.includes(TdSlash.BACK)) {
8258
8473
  ctx.moveTo(x, y);
8259
8474
  ctx.lineTo(x + width, y + height);
8260
8475
  }
@@ -8262,6 +8477,7 @@ class TableParticle {
8262
8477
  ctx.restore();
8263
8478
  }
8264
8479
  _drawBorder(ctx, element, startX, startY) {
8480
+ var _a, _b, _c, _d, _e, _f;
8265
8481
  const { colgroup, trList, borderType } = element;
8266
8482
  if (!colgroup || !trList)
8267
8483
  return;
@@ -8286,10 +8502,10 @@ class TableParticle {
8286
8502
  const tr = trList[t];
8287
8503
  for (let d = 0; d < tr.tdList.length; d++) {
8288
8504
  const td = tr.tdList[d];
8289
- if (td.slashType) {
8505
+ if ((_a = td.slashTypes) == null ? void 0 : _a.length) {
8290
8506
  this._drawSlash(ctx, td, startX, startY);
8291
8507
  }
8292
- if (!td.borderType && (isEmptyBorderType || isExternalBorderType)) {
8508
+ if (!((_b = td.borderTypes) == null ? void 0 : _b.length) && (isEmptyBorderType || isExternalBorderType)) {
8293
8509
  continue;
8294
8510
  }
8295
8511
  const width = td.width * scale;
@@ -8298,22 +8514,22 @@ class TableParticle {
8298
8514
  const y = Math.round(td.y * scale + startY);
8299
8515
  ctx.translate(0.5, 0.5);
8300
8516
  ctx.beginPath();
8301
- if (td.borderType === TdBorder.TOP) {
8517
+ if ((_c = td.borderTypes) == null ? void 0 : _c.includes(TdBorder.TOP)) {
8302
8518
  ctx.moveTo(x - width, y);
8303
8519
  ctx.lineTo(x, y);
8304
8520
  ctx.stroke();
8305
8521
  }
8306
- if (td.borderType === TdBorder.RIGHT) {
8522
+ if ((_d = td.borderTypes) == null ? void 0 : _d.includes(TdBorder.RIGHT)) {
8307
8523
  ctx.moveTo(x, y);
8308
8524
  ctx.lineTo(x, y + height);
8309
8525
  ctx.stroke();
8310
8526
  }
8311
- if (td.borderType === TdBorder.BOTTOM) {
8527
+ if ((_e = td.borderTypes) == null ? void 0 : _e.includes(TdBorder.BOTTOM)) {
8312
8528
  ctx.moveTo(x, y + height);
8313
8529
  ctx.lineTo(x - width, y + height);
8314
8530
  ctx.stroke();
8315
8531
  }
8316
- if (td.borderType === TdBorder.LEFT) {
8532
+ if ((_f = td.borderTypes) == null ? void 0 : _f.includes(TdBorder.LEFT)) {
8317
8533
  ctx.moveTo(x - width, y);
8318
8534
  ctx.lineTo(x - width, y + height);
8319
8535
  ctx.stroke();
@@ -8986,7 +9202,8 @@ class SeparatorParticle {
8986
9202
  }
8987
9203
  render(ctx, element, x, y) {
8988
9204
  ctx.save();
8989
- ctx.lineWidth = this.options.scale;
9205
+ const { scale } = this.options;
9206
+ ctx.lineWidth = scale;
8990
9207
  if (element.color) {
8991
9208
  ctx.strokeStyle = element.color;
8992
9209
  }
@@ -8996,7 +9213,7 @@ class SeparatorParticle {
8996
9213
  ctx.translate(0, 0.5);
8997
9214
  ctx.beginPath();
8998
9215
  ctx.moveTo(x, y);
8999
- ctx.lineTo(x + element.width, y);
9216
+ ctx.lineTo(x + element.width * scale, y);
9000
9217
  ctx.stroke();
9001
9218
  ctx.restore();
9002
9219
  }
@@ -9015,7 +9232,7 @@ class PageBreakParticle {
9015
9232
  const displayName = this.i18n.t("pageBreak.displayName");
9016
9233
  const { scale, defaultRowMargin } = this.options;
9017
9234
  const size = fontSize * scale;
9018
- const elementWidth = element.width;
9235
+ const elementWidth = element.width * scale;
9019
9236
  const offsetY = this.draw.getDefaultBasicRowMarginHeight() * defaultRowMargin;
9020
9237
  ctx.save();
9021
9238
  ctx.font = `${size}px ${font}`;
@@ -10227,7 +10444,7 @@ function WorkerWrapper$2() {
10227
10444
  objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
10228
10445
  }
10229
10446
  }
10230
- const encodedJs$1 = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBnOyhmdW5jdGlvbihlKXtlLlRJVExFPSJ0aXRsZSJ9KShnfHwoZz17fSkpO3ZhciBvOyhmdW5jdGlvbihlKXtlLkZJUlNUPSJmaXJzdCIsZS5TRUNPTkQ9InNlY29uZCIsZS5USElSRD0idGhpcmQiLGUuRk9VUlRIPSJmb3VydGgiLGUuRklGVEg9ImZpZnRoIixlLlNJWFRIPSJzaXh0aCJ9KShvfHwobz17fSkpO2NvbnN0IHU9e1tvLkZJUlNUXToxLFtvLlNFQ09ORF06Mixbby5USElSRF06Myxbby5GT1VSVEhdOjQsW28uRklGVEhdOjUsW28uU0lYVEhdOjZ9LEk9Ilx1MjAwQiI7ZnVuY3Rpb24gZihlKXtjb25zdCBhPVtdO2xldCBzPTA7Zm9yKDtzPGUubGVuZ3RoOyl7Y29uc3QgdD1lW3NdO2lmKHQudGl0bGVJZCl7Y29uc3Qgbj10LnRpdGxlSWQsbD10LmxldmVsLGM9e3R5cGU6Zy5USVRMRSx2YWx1ZToiIixsZXZlbDpsLHRpdGxlSWQ6bn0saT1bXTtmb3IoO3M8ZS5sZW5ndGg7KXtjb25zdCB2PWVbc107aWYobiE9PXYudGl0bGVJZCl7cy0tO2JyZWFrfWkucHVzaCh2KSxzKyt9Yy52YWx1ZT1pLm1hcCh2PT52LnZhbHVlKS5qb2luKCIiKS5yZXBsYWNlKG5ldyBSZWdFeHAoSSwiZyIpLCIiKSxhLnB1c2goYyl9cysrfWlmKCFhLmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBoPSh0LG4pPT57Y29uc3QgbD1uLnN1YkNhdGFsb2dbbi5zdWJDYXRhbG9nLmxlbmd0aC0xXSxjPXVbbD09bnVsbD92b2lkIDA6bC5sZXZlbF0saT11W3QubGV2ZWxdO2wmJmk+Yz9oKHQsbCk6bi5zdWJDYXRhbG9nLnB1c2goe2lkOnQudGl0bGVJZCxuYW1lOnQudmFsdWUsbGV2ZWw6dC5sZXZlbCxzdWJDYXRhbG9nOltdfSl9LHI9W107Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kyspe2NvbnN0IG49YVt0XSxsPXJbci5sZW5ndGgtMV0sYz11W2w9PW51bGw/dm9pZCAwOmwubGV2ZWxdLGk9dVtuLmxldmVsXTtsJiZpPmM/aChuLGwpOnIucHVzaCh7aWQ6bi50aXRsZUlkLG5hbWU6bi52YWx1ZSxsZXZlbDpuLmxldmVsLHN1YkNhdGFsb2c6W119KX1yZXR1cm4gcn1vbm1lc3NhZ2U9ZT0+e2NvbnN0IGE9ZS5kYXRhLHM9ZihhKTtwb3N0TWVzc2FnZShzKX19KSgpO30pKCk7Cg==";
10447
+ const encodedJs$1 = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBvOyhmdW5jdGlvbih0KXt0LlRFWFQ9InRleHQiLHQuSU1BR0U9ImltYWdlIix0LlRBQkxFPSJ0YWJsZSIsdC5IWVBFUkxJTks9Imh5cGVybGluayIsdC5TVVBFUlNDUklQVD0ic3VwZXJzY3JpcHQiLHQuU1VCU0NSSVBUPSJzdWJzY3JpcHQiLHQuU0VQQVJBVE9SPSJzZXBhcmF0b3IiLHQuUEFHRV9CUkVBSz0icGFnZUJyZWFrIix0LkNPTlRST0w9ImNvbnRyb2wiLHQuQ0hFQ0tCT1g9ImNoZWNrYm94Iix0LkxBVEVYPSJsYXRleCIsdC5UQUI9InRhYiIsdC5EQVRFPSJkYXRlIix0LkJMT0NLPSJibG9jayIsdC5USVRMRT0idGl0bGUiLHQuTElTVD0ibGlzdCJ9KShvfHwobz17fSkpO3ZhciBuOyhmdW5jdGlvbih0KXt0LkZJUlNUPSJmaXJzdCIsdC5TRUNPTkQ9InNlY29uZCIsdC5USElSRD0idGhpcmQiLHQuRk9VUlRIPSJmb3VydGgiLHQuRklGVEg9ImZpZnRoIix0LlNJWFRIPSJzaXh0aCJ9KShufHwobj17fSkpO2NvbnN0IEk9e1tuLkZJUlNUXToxLFtuLlNFQ09ORF06Mixbbi5USElSRF06Myxbbi5GT1VSVEhdOjQsW24uRklGVEhdOjUsW24uU0lYVEhdOjZ9LHY9W28uVEVYVCxvLkhZUEVSTElOSyxvLlNVQlNDUklQVCxvLlNVUEVSU0NSSVBULG8uQ09OVFJPTCxvLkRBVEVdLGg9Ilx1MjAwQiI7ZnVuY3Rpb24gVCh0KXtyZXR1cm4hdC50eXBlfHx2LmluY2x1ZGVzKHQudHlwZSl9ZnVuY3Rpb24gRSh0KXtjb25zdCBjPVtdO2xldCBhPTA7Zm9yKDthPHQubGVuZ3RoOyl7Y29uc3Qgcz10W2FdO2lmKHMudGl0bGVJZCl7Y29uc3QgZT1zLnRpdGxlSWQsbD1zLmxldmVsLGk9e3R5cGU6by5USVRMRSx2YWx1ZToiIixsZXZlbDpsLHRpdGxlSWQ6ZX0sdT1bXTtmb3IoO2E8dC5sZW5ndGg7KXtjb25zdCByPXRbYV07aWYoZSE9PXIudGl0bGVJZCl7YS0tO2JyZWFrfXUucHVzaChyKSxhKyt9aS52YWx1ZT11LmZpbHRlcihyPT5UKHIpKS5tYXAocj0+ci52YWx1ZSkuam9pbigiIikucmVwbGFjZShuZXcgUmVnRXhwKGgsImciKSwiIiksYy5wdXNoKGkpfWErK31pZighYy5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgZz0ocyxlKT0+e2NvbnN0IGw9ZS5zdWJDYXRhbG9nW2Uuc3ViQ2F0YWxvZy5sZW5ndGgtMV0saT1JW2w9PW51bGw/dm9pZCAwOmwubGV2ZWxdLHU9SVtzLmxldmVsXTtsJiZ1Pmk/ZyhzLGwpOmUuc3ViQ2F0YWxvZy5wdXNoKHtpZDpzLnRpdGxlSWQsbmFtZTpzLnZhbHVlLGxldmVsOnMubGV2ZWwsc3ViQ2F0YWxvZzpbXX0pfSxSPVtdO2ZvcihsZXQgcz0wO3M8Yy5sZW5ndGg7cysrKXtjb25zdCBlPWNbc10sbD1SW1IubGVuZ3RoLTFdLGk9SVtsPT1udWxsP3ZvaWQgMDpsLmxldmVsXSx1PUlbZS5sZXZlbF07bCYmdT5pP2coZSxsKTpSLnB1c2goe2lkOmUudGl0bGVJZCxuYW1lOmUudmFsdWUsbGV2ZWw6ZS5sZXZlbCxzdWJDYXRhbG9nOltdfSl9cmV0dXJuIFJ9b25tZXNzYWdlPXQ9Pntjb25zdCBjPXQuZGF0YSxhPUUoYyk7cG9zdE1lc3NhZ2UoYSl9fSkoKTt9KSgpOwo=";
10231
10448
  const blob$1 = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs$1)], { type: "text/javascript;charset=utf-8" });
10232
10449
  function WorkerWrapper$1() {
10233
10450
  const objURL = blob$1 && (window.URL || window.webkitURL).createObjectURL(blob$1);
@@ -10342,10 +10559,25 @@ class Previewer {
10342
10559
  this.mousedownX = 0;
10343
10560
  this.mousedownY = 0;
10344
10561
  this.curHandleIndex = 0;
10345
- resizerSelection.ondblclick = this._dblclick.bind(this);
10346
10562
  this.previewerContainer = null;
10347
10563
  this.previewerImage = null;
10348
10564
  }
10565
+ _getElementPosition(element, position = null) {
10566
+ let x = 0;
10567
+ let y = 0;
10568
+ const height = this.draw.getHeight();
10569
+ const pageGap = this.draw.getPageGap();
10570
+ const preY = this.draw.getPageNo() * (height + pageGap);
10571
+ if (element.imgFloatPosition) {
10572
+ x = element.imgFloatPosition.x;
10573
+ y = element.imgFloatPosition.y + preY;
10574
+ } else if (position) {
10575
+ const { coordinate: { leftTop: [left, top] }, ascent } = position;
10576
+ x = left;
10577
+ y = top + preY + ascent;
10578
+ }
10579
+ return { x, y };
10580
+ }
10349
10581
  _createResizerDom() {
10350
10582
  const resizerSelection = document.createElement("div");
10351
10583
  resizerSelection.classList.add(`${EDITOR_PREFIX}-resizer-selection`);
@@ -10384,11 +10616,9 @@ class Previewer {
10384
10616
  }
10385
10617
  _mousedown(evt) {
10386
10618
  this.canvas = this.draw.getPage();
10387
- if (!this.curPosition || !this.curElement)
10619
+ if (!this.curElement)
10388
10620
  return;
10389
10621
  const { scale } = this.options;
10390
- const height = this.draw.getHeight();
10391
- const pageGap = this.draw.getPageGap();
10392
10622
  this.mousedownX = evt.x;
10393
10623
  this.mousedownY = evt.y;
10394
10624
  const target = evt.target;
@@ -10398,16 +10628,15 @@ class Previewer {
10398
10628
  this.canvas.style.cursor = cursor;
10399
10629
  this.resizerImage.src = this.curElementSrc;
10400
10630
  this.resizerImageContainer.style.display = "block";
10401
- const { coordinate: { leftTop: [left, top] }, ascent } = this.curPosition;
10402
- const prePageHeight = this.draw.getPageNo() * (height + pageGap);
10403
- this.resizerImageContainer.style.left = `${left}px`;
10404
- this.resizerImageContainer.style.top = `${top + prePageHeight + ascent}px`;
10631
+ const { x: resizerLeft, y: resizerTop } = this._getElementPosition(this.curElement, this.curPosition);
10632
+ this.resizerImageContainer.style.left = `${resizerLeft}px`;
10633
+ this.resizerImageContainer.style.top = `${resizerTop}px`;
10405
10634
  this.resizerImage.style.width = `${this.curElement.width * scale}px`;
10406
10635
  this.resizerImage.style.height = `${this.curElement.height * scale}px`;
10407
10636
  const mousemoveFn = this._mousemove.bind(this);
10408
10637
  document.addEventListener("mousemove", mousemoveFn);
10409
10638
  document.addEventListener("mouseup", () => {
10410
- if (this.curElement && this.curPosition) {
10639
+ if (this.curElement) {
10411
10640
  this.curElement.width = this.width;
10412
10641
  this.curElement.height = this.height;
10413
10642
  this.draw.render({ isSetCursor: false });
@@ -10488,10 +10717,6 @@ class Previewer {
10488
10717
  this._updateResizerSizeView(elementWidth, elementHeight);
10489
10718
  evt.preventDefault();
10490
10719
  }
10491
- _dblclick() {
10492
- this._drawPreviewer();
10493
- document.body.style.overflow = "hidden";
10494
- }
10495
10720
  _drawPreviewer() {
10496
10721
  const previewerContainer = document.createElement("div");
10497
10722
  previewerContainer.classList.add(`${EDITOR_PREFIX}-image-previewer`);
@@ -10620,18 +10845,19 @@ class Previewer {
10620
10845
  _updateResizerSizeView(width, height) {
10621
10846
  this.resizerSize.innerText = `${Math.round(width)} \xD7 ${Math.round(height)}`;
10622
10847
  }
10623
- drawResizer(element, position, options = {}) {
10848
+ render() {
10849
+ this._drawPreviewer();
10850
+ document.body.style.overflow = "hidden";
10851
+ }
10852
+ drawResizer(element, position = null, options = {}) {
10624
10853
  this.previewerDrawOption = options;
10625
10854
  const { scale } = this.options;
10626
- const { coordinate: { leftTop: [left, top] }, ascent } = position;
10627
10855
  const elementWidth = element.width * scale;
10628
10856
  const elementHeight = element.height * scale;
10629
- const height = this.draw.getHeight();
10630
- const pageGap = this.draw.getPageGap();
10631
- const preY = this.draw.getPageNo() * (height + pageGap);
10632
10857
  this._updateResizerSizeView(elementWidth, elementHeight);
10633
- this.resizerSelection.style.left = `${left}px`;
10634
- this.resizerSelection.style.top = `${top + preY + ascent}px`;
10858
+ const { x: resizerLeft, y: resizerTop } = this._getElementPosition(element, position);
10859
+ this.resizerSelection.style.left = `${resizerLeft}px`;
10860
+ this.resizerSelection.style.top = `${resizerTop}px`;
10635
10861
  this._updateResizerRect(elementWidth, elementHeight);
10636
10862
  this.resizerSelection.style.display = "block";
10637
10863
  this.curElement = element;
@@ -10668,7 +10894,9 @@ const contextmenu$1 = {
10668
10894
  textWrap: "\u6587\u5B57\u73AF\u7ED5",
10669
10895
  textWrapType: {
10670
10896
  embed: "\u5D4C\u5165\u578B",
10671
- upDown: "\u4E0A\u4E0B\u578B\u73AF\u7ED5"
10897
+ upDown: "\u4E0A\u4E0B\u578B\u73AF\u7ED5",
10898
+ floatTop: "\u6D6E\u4E8E\u6587\u5B57\u4E0A\u65B9",
10899
+ floatBottom: "\u886C\u4E8E\u6587\u5B57\u4E0B\u65B9"
10672
10900
  }
10673
10901
  },
10674
10902
  table: {
@@ -11456,7 +11684,9 @@ const contextmenu = {
11456
11684
  textWrap: "Text wrap",
11457
11685
  textWrapType: {
11458
11686
  embed: "Embed",
11459
- upDown: "Up down"
11687
+ upDown: "Up down",
11688
+ floatTop: "Float above text",
11689
+ floatBottom: "Float below text"
11460
11690
  }
11461
11691
  },
11462
11692
  table: {
@@ -12898,9 +13128,11 @@ class Draw {
12898
13128
  p.style.marginBottom = `${this.getPageGap()}px`;
12899
13129
  this._initPageContext(this.ctxList[i]);
12900
13130
  });
13131
+ const cursorPosition = this.position.getCursorPosition();
12901
13132
  this.render({
12902
13133
  isSubmitHistory: false,
12903
- isSetCursor: false
13134
+ isSetCursor: !!cursorPosition,
13135
+ curIndex: cursorPosition == null ? void 0 : cursorPosition.index
12904
13136
  });
12905
13137
  if (this.listener.pageScaleChange) {
12906
13138
  this.listener.pageScaleChange(payload);
@@ -13115,21 +13347,28 @@ class Draw {
13115
13347
  const offsetX = curRow.offsetX || element.listId && listStyleMap.get(element.listId) || 0;
13116
13348
  const availableWidth = innerWidth - offsetX;
13117
13349
  if (element.type === ElementType.IMAGE || element.type === ElementType.LATEX) {
13118
- const elementWidth = element.width * scale;
13119
- const elementHeight = element.height * scale;
13120
- const curRowWidth2 = element.imgDisplay === ImageDisplay.INLINE ? 0 : curRow.width;
13121
- if (curRowWidth2 + elementWidth > availableWidth) {
13122
- const surplusWidth = availableWidth - curRowWidth2;
13123
- const adaptiveWidth = surplusWidth > 0 ? surplusWidth : Math.min(elementWidth, availableWidth);
13124
- element.width = adaptiveWidth;
13125
- element.height = elementHeight * adaptiveWidth / elementWidth;
13126
- metrics.width = element.width;
13127
- metrics.height = element.height;
13128
- metrics.boundingBoxDescent = element.height;
13350
+ if (element.imgDisplay === ImageDisplay.FLOAT_TOP || element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) {
13351
+ metrics.width = 0;
13352
+ metrics.height = 0;
13353
+ metrics.boundingBoxDescent = 0;
13129
13354
  } else {
13130
- metrics.width = elementWidth;
13131
- metrics.height = elementHeight;
13132
- metrics.boundingBoxDescent = elementHeight;
13355
+ const elementWidth = element.width * scale;
13356
+ const elementHeight = element.height * scale;
13357
+ const curRowWidth2 = element.imgDisplay === ImageDisplay.INLINE ? 0 : curRow.width;
13358
+ if (curRowWidth2 + elementWidth > availableWidth) {
13359
+ const surplusWidth = availableWidth - curRowWidth2;
13360
+ const adaptiveWidth = surplusWidth > 0 ? surplusWidth : Math.min(elementWidth, availableWidth);
13361
+ const adaptiveHeight = elementHeight * adaptiveWidth / elementWidth;
13362
+ element.width = adaptiveWidth / scale;
13363
+ element.height = adaptiveHeight / scale;
13364
+ metrics.width = adaptiveWidth;
13365
+ metrics.height = adaptiveHeight;
13366
+ metrics.boundingBoxDescent = adaptiveHeight;
13367
+ } else {
13368
+ metrics.width = elementWidth;
13369
+ metrics.height = elementHeight;
13370
+ metrics.boundingBoxDescent = elementHeight;
13371
+ }
13133
13372
  }
13134
13373
  metrics.boundingBoxAscent = 0;
13135
13374
  } else if (element.type === ElementType.TABLE) {
@@ -13252,20 +13491,20 @@ class Draw {
13252
13491
  }
13253
13492
  }
13254
13493
  } else if (element.type === ElementType.SEPARATOR) {
13255
- element.width = availableWidth;
13494
+ element.width = availableWidth / scale;
13256
13495
  metrics.width = availableWidth;
13257
13496
  metrics.height = defaultSize;
13258
13497
  metrics.boundingBoxAscent = -rowMargin;
13259
13498
  metrics.boundingBoxDescent = -rowMargin;
13260
13499
  } else if (element.type === ElementType.PAGE_BREAK) {
13261
- element.width = availableWidth;
13500
+ element.width = availableWidth / scale;
13262
13501
  metrics.width = availableWidth;
13263
13502
  metrics.height = defaultSize;
13264
13503
  } else if (element.type === ElementType.CHECKBOX || element.controlComponent === ControlComponent.CHECKBOX) {
13265
13504
  const { width, height: height2, gap } = this.options.checkbox;
13266
- const elementWidth = (width + gap * 2) * scale;
13505
+ const elementWidth = width + gap * 2;
13267
13506
  element.width = elementWidth;
13268
- metrics.width = elementWidth;
13507
+ metrics.width = elementWidth * scale;
13269
13508
  metrics.height = height2 * scale;
13270
13509
  } else if (element.type === ElementType.TAB) {
13271
13510
  metrics.width = defaultTabWidth * scale;
@@ -13473,7 +13712,9 @@ class Draw {
13473
13712
  }
13474
13713
  if (element.type === ElementType.IMAGE) {
13475
13714
  this._drawRichText(ctx);
13476
- this.imageParticle.render(ctx, element, x, y + offsetY);
13715
+ if (element.imgDisplay !== ImageDisplay.FLOAT_TOP && element.imgDisplay !== ImageDisplay.FLOAT_BOTTOM) {
13716
+ this.imageParticle.render(ctx, element, x, y + offsetY);
13717
+ }
13477
13718
  } else if (element.type === ElementType.LATEX) {
13478
13719
  this._drawRichText(ctx);
13479
13720
  this.laTexParticle.render(ctx, element, x, y + offsetY);
@@ -13610,6 +13851,18 @@ class Draw {
13610
13851
  }
13611
13852
  }
13612
13853
  }
13854
+ _drawFloat(ctx, payload) {
13855
+ const floatPositionList = this.position.getFloatPositionList();
13856
+ const { imgDisplay, pageNo } = payload;
13857
+ for (let e = 0; e < floatPositionList.length; e++) {
13858
+ const floatPosition = floatPositionList[e];
13859
+ const element = floatPosition.element;
13860
+ if (pageNo === floatPosition.pageNo && element.imgDisplay === imgDisplay && element.type === ElementType.IMAGE) {
13861
+ const imgFloatPosition = element.imgFloatPosition;
13862
+ this.imageParticle.render(ctx, element, imgFloatPosition.x, imgFloatPosition.y);
13863
+ }
13864
+ }
13865
+ }
13613
13866
  _clearPage(pageNo) {
13614
13867
  const ctx = this.ctxList[pageNo];
13615
13868
  const pageDom = this.pageList[pageNo];
@@ -13628,6 +13881,10 @@ class Draw {
13628
13881
  if (this.mode !== EditorMode.PRINT) {
13629
13882
  this.margin.render(ctx, pageNo);
13630
13883
  }
13884
+ this._drawFloat(ctx, {
13885
+ pageNo,
13886
+ imgDisplay: ImageDisplay.FLOAT_BOTTOM
13887
+ });
13631
13888
  this.control.renderHighlightList(ctx, pageNo);
13632
13889
  const index2 = (_a = rowList[0]) == null ? void 0 : _a.startIndex;
13633
13890
  this.drawRow(ctx, {
@@ -13650,6 +13907,10 @@ class Draw {
13650
13907
  this.footer.render(ctx, pageNo);
13651
13908
  }
13652
13909
  }
13910
+ this._drawFloat(ctx, {
13911
+ pageNo,
13912
+ imgDisplay: ImageDisplay.FLOAT_TOP
13913
+ });
13653
13914
  if (this.search.getSearchKeyword()) {
13654
13915
  this.search.render(ctx, pageNo);
13655
13916
  }
@@ -13811,6 +14072,12 @@ class Draw {
13811
14072
  this.scrollObserver.removeEvent();
13812
14073
  this.selectionObserver.removeEvent();
13813
14074
  }
14075
+ clearSideEffect() {
14076
+ this.getPreviewer().clearResizer();
14077
+ this.getTableTool().dispose();
14078
+ this.getHyperlinkParticle().clearHyperlinkPopup();
14079
+ this.getDateParticle().clearDatePicker();
14080
+ }
13814
14081
  }
13815
14082
  class Command {
13816
14083
  constructor(adapt) {
@@ -13909,6 +14176,7 @@ class Command {
13909
14176
  __publicField(this, "getHTML");
13910
14177
  __publicField(this, "getText");
13911
14178
  __publicField(this, "getWordCount");
14179
+ __publicField(this, "getRange");
13912
14180
  __publicField(this, "getRangeText");
13913
14181
  __publicField(this, "getRangeContext");
13914
14182
  __publicField(this, "getRangeRow");
@@ -14010,6 +14278,7 @@ class Command {
14010
14278
  this.getHTML = adapt.getHTML.bind(adapt);
14011
14279
  this.getText = adapt.getText.bind(adapt);
14012
14280
  this.getWordCount = adapt.getWordCount.bind(adapt);
14281
+ this.getRange = adapt.getRange.bind(adapt);
14013
14282
  this.getRangeText = adapt.getRangeText.bind(adapt);
14014
14283
  this.getRangeContext = adapt.getRangeContext.bind(adapt);
14015
14284
  this.getRangeRow = adapt.getRangeRow.bind(adapt);
@@ -14063,7 +14332,7 @@ function printImageBase64(base64List, width, height) {
14063
14332
  container.append(image);
14064
14333
  });
14065
14334
  const style = document.createElement("style");
14066
- const stylesheet = `*{margin:0;padding:0;}`;
14335
+ const stylesheet = `*{margin:0;padding:0;}@page{margin:0;}`;
14067
14336
  style.append(document.createTextNode(stylesheet));
14068
14337
  setTimeout(() => {
14069
14338
  doc.write(`${style.outerHTML}${container.innerHTML}`);
@@ -15288,12 +15557,26 @@ class CommandAdapt {
15288
15557
  if (!rowCol)
15289
15558
  return;
15290
15559
  const tdList = rowCol.flat();
15291
- const isSetBorderType = tdList.some((td) => td.borderType !== payload);
15560
+ const isSetBorderType = tdList.some((td) => {
15561
+ var _a;
15562
+ return !((_a = td.borderTypes) == null ? void 0 : _a.includes(payload));
15563
+ });
15292
15564
  tdList.forEach((td) => {
15565
+ if (!td.borderTypes) {
15566
+ td.borderTypes = [];
15567
+ }
15568
+ const borderTypeIndex = td.borderTypes.findIndex((type) => type === payload);
15293
15569
  if (isSetBorderType) {
15294
- td.borderType = payload;
15570
+ if (!~borderTypeIndex) {
15571
+ td.borderTypes.push(payload);
15572
+ }
15295
15573
  } else {
15296
- delete td.borderType;
15574
+ if (~borderTypeIndex) {
15575
+ td.borderTypes.splice(borderTypeIndex, 1);
15576
+ }
15577
+ }
15578
+ if (!td.borderTypes.length) {
15579
+ delete td.borderTypes;
15297
15580
  }
15298
15581
  });
15299
15582
  const { endIndex } = this.range.getRange();
@@ -15309,12 +15592,26 @@ class CommandAdapt {
15309
15592
  if (!rowCol)
15310
15593
  return;
15311
15594
  const tdList = rowCol.flat();
15312
- const isSetTdSlashType = tdList.some((td) => td.slashType !== payload);
15595
+ const isSetTdSlashType = tdList.some((td) => {
15596
+ var _a;
15597
+ return !((_a = td.slashTypes) == null ? void 0 : _a.includes(payload));
15598
+ });
15313
15599
  tdList.forEach((td) => {
15600
+ if (!td.slashTypes) {
15601
+ td.slashTypes = [];
15602
+ }
15603
+ const slashTypeIndex = td.slashTypes.findIndex((type) => type === payload);
15314
15604
  if (isSetTdSlashType) {
15315
- td.slashType = payload;
15605
+ if (!~slashTypeIndex) {
15606
+ td.slashTypes.push(payload);
15607
+ }
15316
15608
  } else {
15317
- delete td.slashType;
15609
+ if (~slashTypeIndex) {
15610
+ td.slashTypes.splice(slashTypeIndex, 1);
15611
+ }
15612
+ }
15613
+ if (!td.slashTypes.length) {
15614
+ delete td.slashTypes;
15318
15615
  }
15319
15616
  });
15320
15617
  const { endIndex } = this.range.getRange();
@@ -15758,6 +16055,17 @@ class CommandAdapt {
15758
16055
  if (element.imgDisplay === display)
15759
16056
  return;
15760
16057
  element.imgDisplay = display;
16058
+ if (display === ImageDisplay.FLOAT_TOP || display === ImageDisplay.FLOAT_BOTTOM) {
16059
+ const positionList = this.position.getPositionList();
16060
+ const { startIndex } = this.range.getRange();
16061
+ const { coordinate: { leftTop } } = positionList[startIndex];
16062
+ element.imgFloatPosition = {
16063
+ x: leftTop[0],
16064
+ y: leftTop[1]
16065
+ };
16066
+ } else {
16067
+ delete element.imgFloatPosition;
16068
+ }
15761
16069
  this.draw.getPreviewer().clearResizer();
15762
16070
  this.draw.render({
15763
16071
  isSetCursor: false
@@ -15796,6 +16104,9 @@ class CommandAdapt {
15796
16104
  getWordCount() {
15797
16105
  return this.workerManager.getWordCount();
15798
16106
  }
16107
+ getRange() {
16108
+ return deepClone(this.range.getRange());
16109
+ }
15799
16110
  getRangeText() {
15800
16111
  return this.range.toString();
15801
16112
  }
@@ -16144,7 +16455,9 @@ const INTERNAL_CONTEXT_MENU_KEY = {
16144
16455
  SAVE_AS: "imageSaveAs",
16145
16456
  TEXT_WRAP: "imageTextWrap",
16146
16457
  TEXT_WRAP_EMBED: "imageTextWrapEmbed",
16147
- TEXT_WRAP_UP_DOWN: "imageTextWrapUpDown"
16458
+ TEXT_WRAP_UP_DOWN: "imageTextWrapUpDown",
16459
+ TEXT_WRAP_FLOAT_TOP: "imageTextWrapFloatTop",
16460
+ TEXT_WRAP_FLOAT_BOTTOM: "imageTextWrapFloatBottom"
16148
16461
  },
16149
16462
  TABLE: {
16150
16463
  BORDER: "border",
@@ -16288,7 +16601,7 @@ const hyperlinkMenus = [
16288
16601
  }
16289
16602
  }
16290
16603
  ];
16291
- const { IMAGE: { CHANGE, SAVE_AS, TEXT_WRAP, TEXT_WRAP_EMBED, TEXT_WRAP_UP_DOWN } } = INTERNAL_CONTEXT_MENU_KEY;
16604
+ const { IMAGE: { CHANGE, SAVE_AS, TEXT_WRAP, TEXT_WRAP_EMBED, TEXT_WRAP_UP_DOWN, TEXT_WRAP_FLOAT_TOP, TEXT_WRAP_FLOAT_BOTTOM } } = INTERNAL_CONTEXT_MENU_KEY;
16292
16605
  const imageMenus = [
16293
16606
  {
16294
16607
  key: CHANGE,
@@ -16349,6 +16662,22 @@ const imageMenus = [
16349
16662
  callback: (command, context) => {
16350
16663
  command.executeChangeImageDisplay(context.startElement, ImageDisplay.INLINE);
16351
16664
  }
16665
+ },
16666
+ {
16667
+ key: TEXT_WRAP_FLOAT_TOP,
16668
+ i18nPath: "contextmenu.image.textWrapType.floatTop",
16669
+ when: () => true,
16670
+ callback: (command, context) => {
16671
+ command.executeChangeImageDisplay(context.startElement, ImageDisplay.FLOAT_TOP);
16672
+ }
16673
+ },
16674
+ {
16675
+ key: TEXT_WRAP_FLOAT_BOTTOM,
16676
+ i18nPath: "contextmenu.image.textWrapType.floatBottom",
16677
+ when: () => true,
16678
+ callback: (command, context) => {
16679
+ command.executeChangeImageDisplay(context.startElement, ImageDisplay.FLOAT_BOTTOM);
16680
+ }
16352
16681
  }
16353
16682
  ]
16354
16683
  }