@hufe921/canvas-editor 0.9.23 → 0.9.27

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.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-resizer-selection{position:absolute;border:1px solid}.ce-resizer-selection>div{position:absolute;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-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-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-header-indicator>div{padding:3px 6px;color:#000;font-size:12px;background:rgb(218 231 252);position:absolute;transform:translate(10px,10px)}.ce-inputarea{width:0;height:12px;min-width:0;min-height:0;margin:0;padding:0;left:0;right:0;letter-spacing:0;font-size:12px;position:absolute;outline:none;resize:none;border:none;overflow:hidden;color:transparent;user-select:none;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.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>div{position:absolute;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-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-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-header-indicator>div{padding:3px 6px;color:#000;font-size:12px;background:rgb(218 231 252);position:absolute;transform-origin:0 0}.ce-header-indicator-border__top,.ce-header-indicator-border__bottom,.ce-header-indicator-border__left,.ce-header-indicator-border__right{display:block;position:absolute}.ce-header-indicator-border__top{border-top:2px dashed rgb(238,238,238)}.ce-header-indicator-border__bottom{border-top:2px dashed rgb(238,238,238);width:100%}.ce-header-indicator-border__left{border-left:2px dashed rgb(238,238,238)}.ce-header-indicator-border__right{border-right:2px dashed rgb(238,238,238)}.ce-inputarea{width:1px;height:12px;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;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)}})();})();
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.23";
26
+ const version = "0.9.26";
27
27
  const ZERO = "\u200B";
28
28
  const WRAP = "\n";
29
29
  var RowFlex;
@@ -201,6 +201,7 @@ const EDITOR_ELEMENT_ZIP_ATTR = [
201
201
  "rowMargin",
202
202
  "dashArray",
203
203
  "trList",
204
+ "borderType",
204
205
  "width",
205
206
  "height",
206
207
  "url",
@@ -3503,7 +3504,7 @@ function zipElementList(payload) {
3503
3504
  let e = 0;
3504
3505
  while (e < elementList.length) {
3505
3506
  let element = elementList[e];
3506
- if (e === 0 && element.value === ZERO) {
3507
+ if (e === 0 && element.value === ZERO && (!element.type || element.type === ElementType.TEXT)) {
3507
3508
  e++;
3508
3509
  continue;
3509
3510
  }
@@ -3514,11 +3515,15 @@ function zipElementList(payload) {
3514
3515
  delete tr.id;
3515
3516
  for (let d = 0; d < tr.tdList.length; d++) {
3516
3517
  const td = tr.tdList[d];
3517
- tr.tdList[d] = {
3518
+ const zipTd = {
3518
3519
  colspan: td.colspan,
3519
3520
  rowspan: td.rowspan,
3520
3521
  value: zipElementList(td.value)
3521
3522
  };
3523
+ if (td.verticalAlign) {
3524
+ zipTd.verticalAlign = td.verticalAlign;
3525
+ }
3526
+ tr.tdList[d] = zipTd;
3522
3527
  }
3523
3528
  }
3524
3529
  }
@@ -4315,9 +4320,7 @@ function mousedown(evt, host) {
4315
4320
  const tableTool = draw.getTableTool();
4316
4321
  tableTool.dispose();
4317
4322
  if (isTable && !isReadonly) {
4318
- const originalElementList = draw.getOriginalElementList();
4319
- const originalPositionList = position.getOriginalPositionList();
4320
- tableTool.render(originalElementList[index2], originalPositionList[index2]);
4323
+ tableTool.render();
4321
4324
  }
4322
4325
  const hyperlinkParticle = draw.getHyperlinkParticle();
4323
4326
  hyperlinkParticle.clearHyperlinkPopup();
@@ -4772,6 +4775,10 @@ function keydown(evt, host) {
4772
4775
  evt.preventDefault();
4773
4776
  } else if (evt.key === KeyMap.ESC) {
4774
4777
  host.clearPainterStyle();
4778
+ const zoneManager = draw.getZone();
4779
+ if (zoneManager.isHeaderActive()) {
4780
+ zoneManager.setZone(EditorZone.MAIN);
4781
+ }
4775
4782
  evt.preventDefault();
4776
4783
  } else if (evt.key === KeyMap.TAB) {
4777
4784
  draw.insertElementList([{
@@ -5491,15 +5498,30 @@ class Position {
5491
5498
  for (let d = 0; d < tr.tdList.length; d++) {
5492
5499
  const td = tr.tdList[d];
5493
5500
  td.positionList = [];
5501
+ const rowList2 = td.rowList;
5494
5502
  const drawRowResult = this.computePageRowPosition({
5495
5503
  positionList: td.positionList,
5496
- rowList: td.rowList,
5504
+ rowList: rowList2,
5497
5505
  pageNo,
5498
5506
  startIndex: 0,
5499
5507
  startX: (td.x + tdPadding) * scale + tablePreX,
5500
5508
  startY: td.y * scale + tablePreY,
5501
5509
  innerWidth: (td.width - tdGap) * scale
5502
5510
  });
5511
+ if (td.verticalAlign === VerticalAlign.MIDDLE || td.verticalAlign == VerticalAlign.BOTTOM) {
5512
+ const rowsHeight = rowList2.reduce((pre, cur) => pre + cur.height, 0);
5513
+ const blankHeight = td.height - tdGap - rowsHeight;
5514
+ const offsetHeight = td.verticalAlign === VerticalAlign.MIDDLE ? blankHeight / 2 : blankHeight;
5515
+ if (Math.floor(offsetHeight) > 0) {
5516
+ td.positionList.forEach((tdPosition) => {
5517
+ const { coordinate: { leftTop, leftBottom, rightBottom, rightTop } } = tdPosition;
5518
+ leftTop[1] += offsetHeight;
5519
+ leftBottom[1] += offsetHeight;
5520
+ rightBottom[1] += offsetHeight;
5521
+ rightTop[1] += offsetHeight;
5522
+ });
5523
+ }
5524
+ }
5503
5525
  x = drawRowResult.x;
5504
5526
  y = drawRowResult.y;
5505
5527
  }
@@ -5632,13 +5654,14 @@ class Position {
5632
5654
  let isLastArea = false;
5633
5655
  let curPositionIndex = -1;
5634
5656
  if (isTable) {
5657
+ const { scale } = this.options;
5635
5658
  const { td, tablePosition } = payload;
5636
5659
  if (td && tablePosition) {
5637
5660
  const { leftTop } = tablePosition.coordinate;
5638
- const tdX = td.x + leftTop[0];
5639
- const tdY = td.y + leftTop[1];
5640
- const tdWidth = td.width;
5641
- const tdHeight = td.height;
5661
+ const tdX = td.x * scale + leftTop[0];
5662
+ const tdY = td.y * scale + leftTop[1];
5663
+ const tdWidth = td.width * scale;
5664
+ const tdHeight = td.height * scale;
5642
5665
  if (!(tdX < x && x < tdX + tdWidth && tdY < y && y < tdY + tdHeight)) {
5643
5666
  return {
5644
5667
  index: curPositionIndex
@@ -5756,6 +5779,12 @@ class RangeManager {
5756
5779
  const elementList = this.draw.getElementList();
5757
5780
  return elementList.slice(startIndex + 1, endIndex + 1);
5758
5781
  }
5782
+ getTextLikeSelection() {
5783
+ const selection = this.getSelection();
5784
+ if (!selection)
5785
+ return null;
5786
+ return selection.filter((s) => !s.type || TEXTLIKE_ELEMENT_TYPE.includes(s.type));
5787
+ }
5759
5788
  getRangeRow() {
5760
5789
  const { startIndex, endIndex } = this.range;
5761
5790
  if (!~startIndex && !~endIndex)
@@ -5825,6 +5854,7 @@ class RangeManager {
5825
5854
  return;
5826
5855
  const type = curElement.type || ElementType.TEXT;
5827
5856
  const font = curElement.font || this.options.defaultFont;
5857
+ const size = curElement.size || this.options.defaultSize;
5828
5858
  const bold = !~curElementList.findIndex((el) => !el.bold);
5829
5859
  const italic = !~curElementList.findIndex((el) => !el.italic);
5830
5860
  const underline = !~curElementList.findIndex((el) => !el.underline);
@@ -5843,6 +5873,7 @@ class RangeManager {
5843
5873
  redo,
5844
5874
  painter,
5845
5875
  font,
5876
+ size,
5846
5877
  bold,
5847
5878
  italic,
5848
5879
  underline,
@@ -5858,6 +5889,7 @@ class RangeManager {
5858
5889
  if (!this.listener.rangeStyleChange)
5859
5890
  return;
5860
5891
  const font = this.options.defaultFont;
5892
+ const size = this.options.defaultSize;
5861
5893
  const rowMargin = this.options.defaultRowMargin;
5862
5894
  const painter = !!this.draw.getPainterStyle();
5863
5895
  const undo = this.historyManager.isCanUndo();
@@ -5868,6 +5900,7 @@ class RangeManager {
5868
5900
  redo,
5869
5901
  painter,
5870
5902
  font,
5903
+ size,
5871
5904
  bold: false,
5872
5905
  italic: false,
5873
5906
  underline: false,
@@ -6415,14 +6448,26 @@ class PageNumber {
6415
6448
  this.options = draw.getOptions();
6416
6449
  }
6417
6450
  render(ctx, pageNo) {
6418
- const { pageNumberSize, pageNumberFont, scale, pageMode } = this.options;
6451
+ const { pageNumber: { size, font, color, rowFlex }, scale, pageMode } = this.options;
6452
+ const text = `${pageNo + 1}`;
6419
6453
  const width = this.draw.getWidth();
6420
6454
  const height = pageMode === PageMode.CONTINUITY ? this.draw.getCanvasHeight(pageNo) : this.draw.getHeight();
6421
6455
  const pageNumberBottom = this.draw.getPageNumberBottom();
6456
+ const y = height - pageNumberBottom;
6422
6457
  ctx.save();
6423
- ctx.fillStyle = "#00000";
6424
- ctx.font = `${pageNumberSize * scale}px ${pageNumberFont}`;
6425
- ctx.fillText(`${pageNo + 1}`, width / 2, height - pageNumberBottom);
6458
+ ctx.fillStyle = color;
6459
+ ctx.font = `${size * scale}px ${font}`;
6460
+ let x = 0;
6461
+ const margins = this.draw.getMargins();
6462
+ const { width: textWidth } = ctx.measureText(text);
6463
+ if (rowFlex === RowFlex.CENTER) {
6464
+ x = (width + textWidth) / 2;
6465
+ } else if (rowFlex === RowFlex.RIGHT) {
6466
+ x = width - textWidth - margins[1];
6467
+ } else {
6468
+ x = margins[3];
6469
+ }
6470
+ ctx.fillText(text, x, y);
6426
6471
  ctx.restore();
6427
6472
  }
6428
6473
  }
@@ -6569,14 +6614,19 @@ class TableParticle {
6569
6614
  this.range = draw.getRange();
6570
6615
  this.options = draw.getOptions();
6571
6616
  }
6572
- _drawBorder(ctx, startX, startY, width, height) {
6617
+ _drawBorder(payload) {
6618
+ const { ctx, startX, startY, width, height, isDrawFullBorder } = payload;
6573
6619
  ctx.beginPath();
6574
6620
  const x = Math.round(startX);
6575
6621
  const y = Math.round(startY);
6576
6622
  ctx.translate(0.5, 0.5);
6577
- ctx.moveTo(x, y + height);
6578
- ctx.lineTo(x, y);
6579
- ctx.lineTo(x + width, y);
6623
+ if (isDrawFullBorder) {
6624
+ ctx.rect(x, y, width, height);
6625
+ } else {
6626
+ ctx.moveTo(x, y + height);
6627
+ ctx.lineTo(x, y);
6628
+ ctx.lineTo(x + width, y);
6629
+ }
6580
6630
  ctx.stroke();
6581
6631
  ctx.translate(-0.5, -0.5);
6582
6632
  }
@@ -6698,29 +6748,39 @@ class TableParticle {
6698
6748
  ctx.restore();
6699
6749
  }
6700
6750
  render(ctx, element, startX, startY) {
6701
- const { colgroup, trList } = element;
6702
- if (!colgroup || !trList)
6751
+ const { colgroup, trList, borderType } = element;
6752
+ if (!colgroup || !trList || borderType === TableBorder.EMPTY)
6703
6753
  return;
6704
6754
  const { scale } = this.options;
6705
6755
  const tableWidth = element.width * scale;
6706
6756
  const tableHeight = element.height * scale;
6757
+ const isExternalBorderType = borderType === TableBorder.EXTERNAL;
6707
6758
  ctx.save();
6708
- this._drawBorder(ctx, startX, startY, tableWidth, tableHeight);
6709
- for (let t = 0; t < trList.length; t++) {
6710
- const tr = trList[t];
6711
- for (let d = 0; d < tr.tdList.length; d++) {
6712
- const td = tr.tdList[d];
6713
- const width = td.width * scale;
6714
- const height = td.height * scale;
6715
- const x = Math.round(td.x * scale + startX + width);
6716
- const y = Math.round(td.y * scale + startY);
6717
- ctx.translate(0.5, 0.5);
6718
- ctx.beginPath();
6719
- ctx.moveTo(x, y);
6720
- ctx.lineTo(x, y + height);
6721
- ctx.lineTo(x - width, y + height);
6722
- ctx.stroke();
6723
- ctx.translate(-0.5, -0.5);
6759
+ this._drawBorder({
6760
+ ctx,
6761
+ startX,
6762
+ startY,
6763
+ width: tableWidth,
6764
+ height: tableHeight,
6765
+ isDrawFullBorder: isExternalBorderType
6766
+ });
6767
+ if (!isExternalBorderType) {
6768
+ for (let t = 0; t < trList.length; t++) {
6769
+ const tr = trList[t];
6770
+ for (let d = 0; d < tr.tdList.length; d++) {
6771
+ const td = tr.tdList[d];
6772
+ const width = td.width * scale;
6773
+ const height = td.height * scale;
6774
+ const x = Math.round(td.x * scale + startX + width);
6775
+ const y = Math.round(td.y * scale + startY);
6776
+ ctx.translate(0.5, 0.5);
6777
+ ctx.beginPath();
6778
+ ctx.moveTo(x, y);
6779
+ ctx.lineTo(x, y + height);
6780
+ ctx.lineTo(x - width, y + height);
6781
+ ctx.stroke();
6782
+ ctx.translate(-0.5, -0.5);
6783
+ }
6724
6784
  }
6725
6785
  }
6726
6786
  ctx.restore();
@@ -6733,8 +6793,9 @@ var TableOrder;
6733
6793
  })(TableOrder || (TableOrder = {}));
6734
6794
  class TableTool {
6735
6795
  constructor(draw) {
6736
- __publicField(this, "translate", 18);
6737
- __publicField(this, "minTdWidth", 20);
6796
+ __publicField(this, "MIN_TD_WIDTH", 20);
6797
+ __publicField(this, "ROW_COL_OFFSET", 18);
6798
+ __publicField(this, "BORDER_VALUE", 4);
6738
6799
  __publicField(this, "draw");
6739
6800
  __publicField(this, "canvas");
6740
6801
  __publicField(this, "options");
@@ -6742,6 +6803,7 @@ class TableTool {
6742
6803
  __publicField(this, "container");
6743
6804
  __publicField(this, "toolRowContainer");
6744
6805
  __publicField(this, "toolColContainer");
6806
+ __publicField(this, "toolBorderContainer");
6745
6807
  __publicField(this, "anchorLine");
6746
6808
  __publicField(this, "mousedownX");
6747
6809
  __publicField(this, "mousedownY");
@@ -6752,34 +6814,46 @@ class TableTool {
6752
6814
  this.container = draw.getContainer();
6753
6815
  this.toolRowContainer = null;
6754
6816
  this.toolColContainer = null;
6817
+ this.toolBorderContainer = null;
6755
6818
  this.anchorLine = null;
6756
6819
  this.mousedownX = 0;
6757
6820
  this.mousedownY = 0;
6758
6821
  }
6759
6822
  dispose() {
6760
- var _a, _b;
6823
+ var _a, _b, _c;
6761
6824
  (_a = this.toolRowContainer) == null ? void 0 : _a.remove();
6762
6825
  (_b = this.toolColContainer) == null ? void 0 : _b.remove();
6826
+ (_c = this.toolBorderContainer) == null ? void 0 : _c.remove();
6827
+ this.toolRowContainer = null;
6828
+ this.toolColContainer = null;
6829
+ this.toolBorderContainer = null;
6763
6830
  }
6764
- render(element, position) {
6831
+ render() {
6832
+ const { isTable, index: index2, trIndex, tdIndex } = this.position.getPositionContext();
6833
+ if (!isTable)
6834
+ return;
6765
6835
  this.dispose();
6766
- const { trIndex, tdIndex } = this.position.getPositionContext();
6767
6836
  const { scale } = this.options;
6768
- const height = this.draw.getHeight();
6769
- const pageGap = this.draw.getPageGap();
6837
+ const elementList = this.draw.getOriginalElementList();
6838
+ const positionList = this.position.getOriginalPositionList();
6839
+ const element = elementList[index2];
6840
+ const position = positionList[index2];
6770
6841
  const { colgroup, trList } = element;
6771
6842
  const { coordinate: { leftTop } } = position;
6843
+ const height = this.draw.getHeight();
6844
+ const pageGap = this.draw.getPageGap();
6772
6845
  const prePageHeight = this.draw.getPageNo() * (height + pageGap);
6846
+ const tableX = leftTop[0];
6847
+ const tableY = leftTop[1] + prePageHeight;
6773
6848
  const td = element.trList[trIndex].tdList[tdIndex];
6774
6849
  const rowIndex = td.rowIndex;
6775
6850
  const colIndex = td.colIndex;
6776
- const rowList = trList.map((tr) => tr.height);
6777
- const colList = colgroup.map((col) => col.width);
6851
+ const rowHeightList = trList.map((tr) => tr.height);
6778
6852
  const rowContainer = document.createElement("div");
6779
6853
  rowContainer.classList.add(`${EDITOR_PREFIX}-table-tool__row`);
6780
- rowContainer.style.transform = `translateX(-${this.translate * scale}px)`;
6781
- for (let r = 0; r < rowList.length; r++) {
6782
- const rowHeight = rowList[r] * scale;
6854
+ rowContainer.style.transform = `translateX(-${this.ROW_COL_OFFSET * scale}px)`;
6855
+ for (let r = 0; r < rowHeightList.length; r++) {
6856
+ const rowHeight = rowHeightList[r] * scale;
6783
6857
  const rowItem = document.createElement("div");
6784
6858
  rowItem.classList.add(`${EDITOR_PREFIX}-table-tool__row__item`);
6785
6859
  if (r === rowIndex) {
@@ -6791,7 +6865,6 @@ class TableTool {
6791
6865
  this._mousedown({
6792
6866
  evt,
6793
6867
  element,
6794
- position,
6795
6868
  index: r,
6796
6869
  order: TableOrder.ROW
6797
6870
  });
@@ -6800,15 +6873,16 @@ class TableTool {
6800
6873
  rowItem.style.height = `${rowHeight}px`;
6801
6874
  rowContainer.append(rowItem);
6802
6875
  }
6803
- rowContainer.style.left = `${leftTop[0]}px`;
6804
- rowContainer.style.top = `${leftTop[1] + prePageHeight}px`;
6876
+ rowContainer.style.left = `${tableX}px`;
6877
+ rowContainer.style.top = `${tableY}px`;
6805
6878
  this.container.append(rowContainer);
6806
6879
  this.toolRowContainer = rowContainer;
6880
+ const colWidthList = colgroup.map((col) => col.width);
6807
6881
  const colContainer = document.createElement("div");
6808
6882
  colContainer.classList.add(`${EDITOR_PREFIX}-table-tool__col`);
6809
- colContainer.style.transform = `translateY(-${this.translate * scale}px)`;
6810
- for (let c = 0; c < colList.length; c++) {
6811
- const colHeight = colList[c] * scale;
6883
+ colContainer.style.transform = `translateY(-${this.ROW_COL_OFFSET * scale}px)`;
6884
+ for (let c = 0; c < colWidthList.length; c++) {
6885
+ const colWidth = colWidthList[c] * scale;
6812
6886
  const colItem = document.createElement("div");
6813
6887
  colItem.classList.add(`${EDITOR_PREFIX}-table-tool__col__item`);
6814
6888
  if (c === colIndex) {
@@ -6820,22 +6894,67 @@ class TableTool {
6820
6894
  this._mousedown({
6821
6895
  evt,
6822
6896
  element,
6823
- position,
6824
6897
  index: c,
6825
6898
  order: TableOrder.COL
6826
6899
  });
6827
6900
  };
6828
6901
  colItem.append(colItemAnchor);
6829
- colItem.style.width = `${colHeight}px`;
6902
+ colItem.style.width = `${colWidth}px`;
6830
6903
  colContainer.append(colItem);
6831
6904
  }
6832
- colContainer.style.left = `${leftTop[0]}px`;
6833
- colContainer.style.top = `${leftTop[1] + prePageHeight}px`;
6905
+ colContainer.style.left = `${tableX}px`;
6906
+ colContainer.style.top = `${tableY}px`;
6834
6907
  this.container.append(colContainer);
6835
6908
  this.toolColContainer = colContainer;
6909
+ const tableHeight = element.height * scale;
6910
+ const tableWidth = element.width * scale;
6911
+ const borderContainer = document.createElement("div");
6912
+ borderContainer.classList.add(`${EDITOR_PREFIX}-table-tool__border`);
6913
+ borderContainer.style.height = `${tableHeight}px`;
6914
+ borderContainer.style.width = `${tableWidth}px`;
6915
+ borderContainer.style.left = `${tableX}px`;
6916
+ borderContainer.style.top = `${tableY}px`;
6917
+ for (let r = 0; r < trList.length; r++) {
6918
+ const tr = trList[r];
6919
+ for (let d = 0; d < tr.tdList.length; d++) {
6920
+ const td2 = tr.tdList[d];
6921
+ const rowBorder = document.createElement("div");
6922
+ rowBorder.classList.add(`${EDITOR_PREFIX}-table-tool__border__row`);
6923
+ rowBorder.style.width = `${td2.width * scale}px`;
6924
+ rowBorder.style.height = `${this.BORDER_VALUE}px`;
6925
+ rowBorder.style.top = `${(td2.y + td2.height) * scale - this.BORDER_VALUE / 2}px`;
6926
+ rowBorder.style.left = `${td2.x * scale}px`;
6927
+ rowBorder.onmousedown = (evt) => {
6928
+ this._mousedown({
6929
+ evt,
6930
+ element,
6931
+ index: td2.rowIndex,
6932
+ order: TableOrder.ROW
6933
+ });
6934
+ };
6935
+ borderContainer.appendChild(rowBorder);
6936
+ const colBorder = document.createElement("div");
6937
+ colBorder.classList.add(`${EDITOR_PREFIX}-table-tool__border__col`);
6938
+ colBorder.style.width = `${this.BORDER_VALUE}px`;
6939
+ colBorder.style.height = `${td2.height * scale}px`;
6940
+ colBorder.style.top = `${td2.y * scale}px`;
6941
+ colBorder.style.left = `${(td2.x + td2.width) * scale - this.BORDER_VALUE / 2}px`;
6942
+ colBorder.onmousedown = (evt) => {
6943
+ this._mousedown({
6944
+ evt,
6945
+ element,
6946
+ index: td2.colIndex,
6947
+ order: TableOrder.COL
6948
+ });
6949
+ };
6950
+ borderContainer.appendChild(colBorder);
6951
+ }
6952
+ }
6953
+ this.container.append(borderContainer);
6954
+ this.toolBorderContainer = borderContainer;
6836
6955
  }
6837
6956
  _mousedown(payload) {
6838
- const { evt, index: index2, order, element, position } = payload;
6957
+ const { evt, index: index2, order, element } = payload;
6839
6958
  this.canvas = this.draw.getPage();
6840
6959
  const { scale } = this.options;
6841
6960
  const width = this.draw.getWidth();
@@ -6879,6 +6998,7 @@ class TableTool {
6879
6998
  };
6880
6999
  document.addEventListener("mousemove", mousemoveFn);
6881
7000
  document.addEventListener("mouseup", () => {
7001
+ var _a;
6882
7002
  let isChangeSize = false;
6883
7003
  if (order === TableOrder.ROW) {
6884
7004
  element.trList[index2].height += dy;
@@ -6891,8 +7011,9 @@ class TableTool {
6891
7011
  const innerWidth = this.draw.getInnerWidth();
6892
7012
  const curColWidth = colgroup[index2].width;
6893
7013
  const moveColWidth = curColWidth + dx;
6894
- if (moveColWidth < this.minTdWidth) {
6895
- dx = this.minTdWidth - curColWidth;
7014
+ const nextColWidth = ((_a = colgroup[index2 + 1]) == null ? void 0 : _a.width) || 0;
7015
+ if (moveColWidth < this.MIN_TD_WIDTH || moveColWidth > curColWidth + nextColWidth) {
7016
+ dx = this.MIN_TD_WIDTH - curColWidth;
6896
7017
  }
6897
7018
  let moveTableWidth = 0;
6898
7019
  for (let c = 0; c < colgroup.length; c++) {
@@ -6922,7 +7043,6 @@ class TableTool {
6922
7043
  }
6923
7044
  if (isChangeSize) {
6924
7045
  this.draw.render({ isSetCursor: false });
6925
- this.render(element, position);
6926
7046
  }
6927
7047
  anchorLine.remove();
6928
7048
  document.removeEventListener("mousemove", mousemoveFn);
@@ -7873,7 +7993,7 @@ class WorkerManager {
7873
7993
  this.wordCountWorker.onerror = (evt) => {
7874
7994
  reject(evt);
7875
7995
  };
7876
- const elementList = this.draw.getOriginalElementList();
7996
+ const elementList = this.draw.getOriginalMainElementList();
7877
7997
  this.wordCountWorker.postMessage(elementList);
7878
7998
  });
7879
7999
  }
@@ -8212,7 +8332,15 @@ const contextmenu$1 = {
8212
8332
  deleteCol: "\u5220\u96641\u5217",
8213
8333
  deleteTable: "\u5220\u9664\u6574\u4E2A\u8868\u683C",
8214
8334
  mergeCell: "\u5408\u5E76\u5355\u5143\u683C",
8215
- mergeCancelCell: "\u53D6\u6D88\u5408\u5E76"
8335
+ mergeCancelCell: "\u53D6\u6D88\u5408\u5E76",
8336
+ verticalAlign: "\u5782\u76F4\u5BF9\u9F50",
8337
+ verticalAlignTop: "\u9876\u7AEF\u5BF9\u9F50",
8338
+ verticalAlignMiddle: "\u5782\u76F4\u5C45\u4E2D",
8339
+ verticalAlignBottom: "\u5E95\u7AEF\u5BF9\u9F50",
8340
+ border: "\u8868\u683C\u8FB9\u6846",
8341
+ borderAll: "\u6240\u6709\u6846\u7EBF",
8342
+ borderEmpty: "\u65E0\u6846\u7EBF",
8343
+ borderExternal: "\u5916\u4FA7\u6846\u7EBF"
8216
8344
  }
8217
8345
  };
8218
8346
  const datePicker$1 = {
@@ -8235,9 +8363,14 @@ const datePicker$1 = {
8235
8363
  minute: "\u5206",
8236
8364
  second: "\u79D2"
8237
8365
  };
8366
+ const frame$1 = {
8367
+ header: "\u9875\u7709",
8368
+ footer: "\u9875\u811A"
8369
+ };
8238
8370
  var zhCN = {
8239
8371
  contextmenu: contextmenu$1,
8240
- datePicker: datePicker$1
8372
+ datePicker: datePicker$1,
8373
+ frame: frame$1
8241
8374
  };
8242
8375
  class DatePicker {
8243
8376
  constructor(options = {}) {
@@ -8962,7 +9095,15 @@ const contextmenu = {
8962
9095
  deleteCol: "Delete 1 col",
8963
9096
  deleteTable: "Delete table",
8964
9097
  mergeCell: "Merge cell",
8965
- mergeCancelCell: "Cancel merge cell"
9098
+ mergeCancelCell: "Cancel merge cell",
9099
+ verticalAlign: "Vertical align",
9100
+ verticalAlignTop: "Top",
9101
+ verticalAlignMiddle: "Middle",
9102
+ verticalAlignBottom: "Bottom",
9103
+ border: "Table border",
9104
+ borderAll: "All",
9105
+ borderEmpty: "Empty",
9106
+ borderExternal: "External"
8966
9107
  }
8967
9108
  };
8968
9109
  const datePicker = {
@@ -8985,9 +9126,14 @@ const datePicker = {
8985
9126
  minute: "Minute",
8986
9127
  second: "Second"
8987
9128
  };
9129
+ const frame = {
9130
+ header: "Header",
9131
+ footer: "Footer"
9132
+ };
8988
9133
  var en = {
8989
9134
  contextmenu,
8990
- datePicker
9135
+ datePicker,
9136
+ frame
8991
9137
  };
8992
9138
  class I18n {
8993
9139
  constructor() {
@@ -9040,11 +9186,16 @@ class ImageObserver {
9040
9186
  }
9041
9187
  class Zone {
9042
9188
  constructor(draw) {
9189
+ __publicField(this, "INDICATOR_TITLE_TRANSLATE", [20, 5]);
9043
9190
  __publicField(this, "draw");
9191
+ __publicField(this, "options");
9192
+ __publicField(this, "i18n");
9044
9193
  __publicField(this, "container");
9045
9194
  __publicField(this, "currentZone");
9046
9195
  __publicField(this, "headerIndicatorContainer");
9047
9196
  this.draw = draw;
9197
+ this.i18n = draw.getI18n();
9198
+ this.options = draw.getOptions();
9048
9199
  this.container = draw.getContainer();
9049
9200
  this.currentZone = EditorZone.MAIN;
9050
9201
  this.headerIndicatorContainer = null;
@@ -9069,29 +9220,62 @@ class Zone {
9069
9220
  isCompute: false
9070
9221
  });
9071
9222
  if (this.isHeaderActive()) {
9072
- this._drawHeaderZoneIndicator();
9223
+ this.drawHeaderZoneIndicator();
9073
9224
  } else {
9074
9225
  this._clearHeaderZoneIndicator();
9075
9226
  }
9076
9227
  }
9077
- _drawHeaderZoneIndicator() {
9228
+ drawHeaderZoneIndicator() {
9229
+ this._clearHeaderZoneIndicator();
9230
+ const { scale } = this.options;
9231
+ const [offsetX, offsetY] = this.INDICATOR_TITLE_TRANSLATE;
9078
9232
  this.headerIndicatorContainer = document.createElement("div");
9079
9233
  this.headerIndicatorContainer.classList.add(`${EDITOR_PREFIX}-header-indicator`);
9080
9234
  const pageList = this.draw.getPageList();
9235
+ const margins = this.draw.getMargins();
9236
+ const innerWidth = this.draw.getInnerWidth();
9081
9237
  const pageHeight = this.draw.getHeight();
9082
9238
  const pageGap = this.draw.getPageGap();
9083
9239
  const preY = pageHeight + pageGap;
9240
+ const header = this.draw.getHeader();
9241
+ const headerHeight = header.getHeight();
9242
+ const headerTop = header.getHeaderTop();
9084
9243
  for (let p = 0; p < pageList.length; p++) {
9085
- const indicator = document.createElement("div");
9086
- indicator.innerText = `\u7F16\u8F91\u9875\u7709`;
9087
- indicator.style.top = `${preY * p}px`;
9088
- this.headerIndicatorContainer.append(indicator);
9244
+ const startY = preY * p + headerTop;
9245
+ const indicatorTitle = document.createElement("div");
9246
+ indicatorTitle.innerText = this.i18n.t("frame.header");
9247
+ indicatorTitle.style.top = `${startY + headerHeight}px`;
9248
+ indicatorTitle.style.transform = `translate(${offsetX * scale}px, ${offsetY * scale}px) scale(${scale})`;
9249
+ this.headerIndicatorContainer.append(indicatorTitle);
9250
+ const lineTop = document.createElement("span");
9251
+ lineTop.classList.add(`${EDITOR_PREFIX}-header-indicator-border__top`);
9252
+ lineTop.style.top = `${startY}px`;
9253
+ lineTop.style.width = `${innerWidth}px`;
9254
+ lineTop.style.marginLeft = `${margins[3]}px`;
9255
+ this.headerIndicatorContainer.append(lineTop);
9256
+ const lineLeft = document.createElement("span");
9257
+ lineLeft.classList.add(`${EDITOR_PREFIX}-header-indicator-border__left`);
9258
+ lineLeft.style.top = `${startY}px`;
9259
+ lineLeft.style.height = `${headerHeight}px`;
9260
+ lineLeft.style.left = `${margins[3]}px`;
9261
+ this.headerIndicatorContainer.append(lineLeft);
9262
+ const lineBottom = document.createElement("span");
9263
+ lineBottom.classList.add(`${EDITOR_PREFIX}-header-indicator-border__bottom`);
9264
+ lineBottom.style.top = `${startY + headerHeight}px`;
9265
+ this.headerIndicatorContainer.append(lineBottom);
9266
+ const lineRight = document.createElement("span");
9267
+ lineRight.classList.add(`${EDITOR_PREFIX}-header-indicator-border__right`);
9268
+ lineRight.style.top = `${startY}px`;
9269
+ lineRight.style.height = `${headerHeight}px`;
9270
+ lineRight.style.left = `${margins[3] + innerWidth}px`;
9271
+ this.headerIndicatorContainer.append(lineRight);
9089
9272
  }
9090
9273
  this.container.append(this.headerIndicatorContainer);
9091
9274
  }
9092
9275
  _clearHeaderZoneIndicator() {
9093
9276
  var _a;
9094
9277
  (_a = this.headerIndicatorContainer) == null ? void 0 : _a.remove();
9278
+ this.headerIndicatorContainer = null;
9095
9279
  }
9096
9280
  }
9097
9281
  class Draw {
@@ -9268,10 +9452,8 @@ class Draw {
9268
9452
  return this.options.pageGap * this.options.scale;
9269
9453
  }
9270
9454
  getPageNumberBottom() {
9271
- return this.options.pageNumberBottom * this.options.scale;
9272
- }
9273
- getHeaderTop() {
9274
- return this.options.headerTop * this.options.scale;
9455
+ const { pageNumber: { bottom }, scale } = this.options;
9456
+ return bottom * scale;
9275
9457
  }
9276
9458
  getMarginIndicatorSize() {
9277
9459
  return this.options.marginIndicatorSize * this.options.scale;
@@ -9703,20 +9885,21 @@ class Draw {
9703
9885
  const trList = element.trList;
9704
9886
  for (let t = 0; t < trList.length; t++) {
9705
9887
  const tr = trList[t];
9706
- let maxTrHeight = 0;
9707
9888
  for (let d = 0; d < tr.tdList.length; d++) {
9708
9889
  const td = tr.tdList[d];
9709
9890
  const rowList2 = this.computeRowList((td.width - tdGap) * scale, td.value);
9710
9891
  const rowHeight = rowList2.reduce((pre, cur) => pre + cur.height, 0);
9711
9892
  td.rowList = rowList2;
9712
- const curTrHeight = (rowHeight + tdGap) / scale;
9713
- if (maxTrHeight < curTrHeight) {
9714
- maxTrHeight = curTrHeight;
9893
+ const curTdHeight = (rowHeight + tdGap) / scale;
9894
+ if (td.height < curTdHeight) {
9895
+ const extraHeight = curTdHeight - td.height;
9896
+ const changeTr = trList[t + td.rowspan - 1];
9897
+ changeTr.height += extraHeight;
9898
+ changeTr.tdList.forEach((changeTd) => {
9899
+ changeTd.height += extraHeight;
9900
+ });
9715
9901
  }
9716
9902
  }
9717
- if (maxTrHeight > tr.height) {
9718
- tr.height = maxTrHeight;
9719
- }
9720
9903
  }
9721
9904
  this.tableParticle.computeRowColInfo(element);
9722
9905
  const tableHeight = trList.reduce((pre, cur) => pre + cur.height, 0);
@@ -10164,9 +10347,9 @@ class Draw {
10164
10347
  } else {
10165
10348
  this._immediateRender();
10166
10349
  }
10350
+ const positionContext = this.position.getPositionContext();
10167
10351
  if (isSetCursor) {
10168
10352
  const positionList = this.position.getPositionList();
10169
- const positionContext = this.position.getPositionContext();
10170
10353
  if (positionContext.isTable) {
10171
10354
  const { index: index2, trIndex, tdIndex } = positionContext;
10172
10355
  const elementList = this.getOriginalElementList();
@@ -10187,7 +10370,7 @@ class Draw {
10187
10370
  const oldHeaderElementList = deepClone(this.header.getElementList());
10188
10371
  const { startIndex, endIndex } = this.range.getRange();
10189
10372
  const pageNo = this.pageNo;
10190
- const oldPositionContext = deepClone(this.position.getPositionContext());
10373
+ const oldPositionContext = deepClone(positionContext);
10191
10374
  const zone = this.zone.getZone();
10192
10375
  this.historyManager.execute(function() {
10193
10376
  self.zone.setZone(zone);
@@ -10200,6 +10383,12 @@ class Draw {
10200
10383
  });
10201
10384
  }
10202
10385
  nextTick(() => {
10386
+ if (isCompute && !this.isReadonly() && positionContext.isTable) {
10387
+ this.tableTool.render();
10388
+ }
10389
+ if (isCompute && this.zone.isHeaderActive()) {
10390
+ this.zone.drawHeaderZoneIndicator();
10391
+ }
10203
10392
  if (this.listener.pageSizeChange) {
10204
10393
  this.listener.pageSizeChange(this.pageRowList.length);
10205
10394
  }
@@ -10230,6 +10419,7 @@ const _Command = class {
10230
10419
  _Command.applyPainterStyle = adapt.applyPainterStyle.bind(adapt);
10231
10420
  _Command.format = adapt.format.bind(adapt);
10232
10421
  _Command.font = adapt.font.bind(adapt);
10422
+ _Command.size = adapt.size.bind(adapt);
10233
10423
  _Command.sizeAdd = adapt.sizeAdd.bind(adapt);
10234
10424
  _Command.sizeMinus = adapt.sizeMinus.bind(adapt);
10235
10425
  _Command.bold = adapt.bold.bind(adapt);
@@ -10255,6 +10445,8 @@ const _Command = class {
10255
10445
  _Command.deleteTable = adapt.deleteTable.bind(adapt);
10256
10446
  _Command.mergeTableCell = adapt.mergeTableCell.bind(adapt);
10257
10447
  _Command.cancelMergeTableCell = adapt.cancelMergeTableCell.bind(adapt);
10448
+ _Command.tableTdVerticalAlign = adapt.tableTdVerticalAlign.bind(adapt);
10449
+ _Command.tableBorderType = adapt.tableBorderType.bind(adapt);
10258
10450
  _Command.image = adapt.image.bind(adapt);
10259
10451
  _Command.hyperlink = adapt.hyperlink.bind(adapt);
10260
10452
  _Command.deleteHyperlink = adapt.deleteHyperlink.bind(adapt);
@@ -10328,6 +10520,9 @@ const _Command = class {
10328
10520
  executeFont(payload) {
10329
10521
  return _Command.font(payload);
10330
10522
  }
10523
+ executeSize(payload) {
10524
+ return _Command.size(payload);
10525
+ }
10331
10526
  executeSizeAdd() {
10332
10527
  return _Command.sizeAdd();
10333
10528
  }
@@ -10403,6 +10598,12 @@ const _Command = class {
10403
10598
  executeCancelMergeTableCell() {
10404
10599
  return _Command.cancelMergeTableCell();
10405
10600
  }
10601
+ executeTableTdVerticalAlign(payload) {
10602
+ return _Command.tableTdVerticalAlign(payload);
10603
+ }
10604
+ executeTableBorderType(payload) {
10605
+ return _Command.tableBorderType(payload);
10606
+ }
10406
10607
  executeHyperlink(payload) {
10407
10608
  return _Command.hyperlink(payload);
10408
10609
  }
@@ -10517,6 +10718,7 @@ __publicField(Command, "painter");
10517
10718
  __publicField(Command, "applyPainterStyle");
10518
10719
  __publicField(Command, "format");
10519
10720
  __publicField(Command, "font");
10721
+ __publicField(Command, "size");
10520
10722
  __publicField(Command, "sizeAdd");
10521
10723
  __publicField(Command, "sizeMinus");
10522
10724
  __publicField(Command, "bold");
@@ -10542,6 +10744,8 @@ __publicField(Command, "deleteTableCol");
10542
10744
  __publicField(Command, "deleteTable");
10543
10745
  __publicField(Command, "mergeTableCell");
10544
10746
  __publicField(Command, "cancelMergeTableCell");
10747
+ __publicField(Command, "tableTdVerticalAlign");
10748
+ __publicField(Command, "tableBorderType");
10545
10749
  __publicField(Command, "image");
10546
10750
  __publicField(Command, "hyperlink");
10547
10751
  __publicField(Command, "deleteHyperlink");
@@ -10582,6 +10786,18 @@ const defaultWatermarkOption = {
10582
10786
  size: 200,
10583
10787
  font: "Yahei"
10584
10788
  };
10789
+ var TableBorder;
10790
+ (function(TableBorder2) {
10791
+ TableBorder2["ALL"] = "all";
10792
+ TableBorder2["EMPTY"] = "empty";
10793
+ TableBorder2["EXTERNAL"] = "external";
10794
+ })(TableBorder || (TableBorder = {}));
10795
+ var VerticalAlign;
10796
+ (function(VerticalAlign2) {
10797
+ VerticalAlign2["TOP"] = "top";
10798
+ VerticalAlign2["MIDDLE"] = "middle";
10799
+ VerticalAlign2["BOTTOM"] = "bottom";
10800
+ })(VerticalAlign || (VerticalAlign = {}));
10585
10801
  function printImageBase64(base64List, width, height) {
10586
10802
  const iframe = document.createElement("iframe");
10587
10803
  iframe.style.visibility = "hidden";
@@ -10768,47 +10984,78 @@ class CommandAdapt {
10768
10984
  });
10769
10985
  this.draw.render({ isSetCursor: false });
10770
10986
  }
10771
- sizeAdd() {
10987
+ size(payload) {
10988
+ const { minSize, maxSize, defaultSize } = this.options;
10989
+ if (payload < minSize || payload > maxSize)
10990
+ return;
10772
10991
  const isReadonly = this.draw.isReadonly();
10773
10992
  if (isReadonly)
10774
10993
  return;
10775
- const selection = this.range.getSelection();
10776
- if (!selection)
10994
+ const selection = this.range.getTextLikeSelection();
10995
+ if (!selection || !selection.length)
10996
+ return;
10997
+ let isExistUpdate = false;
10998
+ selection.forEach((el) => {
10999
+ if (!el.size && payload === defaultSize || el.size && el.size === payload)
11000
+ return;
11001
+ el.size = payload;
11002
+ isExistUpdate = true;
11003
+ });
11004
+ if (isExistUpdate) {
11005
+ this.draw.render({ isSetCursor: false });
11006
+ }
11007
+ }
11008
+ sizeAdd() {
11009
+ const isReadonly = this.draw.isReadonly();
11010
+ if (isReadonly)
10777
11011
  return;
10778
- const lessThanMaxSizeIndex = selection.findIndex((s) => !s.size || s.size + 2 <= 72);
10779
- const { defaultSize } = this.options;
10780
- if (!~lessThanMaxSizeIndex)
11012
+ const selection = this.range.getTextLikeSelection();
11013
+ if (!selection || !selection.length)
10781
11014
  return;
11015
+ const { defaultSize, maxSize } = this.options;
11016
+ let isExistUpdate = false;
10782
11017
  selection.forEach((el) => {
10783
11018
  if (!el.size) {
10784
11019
  el.size = defaultSize;
10785
11020
  }
10786
- if (el.size + 2 > 72)
11021
+ if (el.size >= maxSize)
10787
11022
  return;
10788
- el.size += 2;
11023
+ if (el.size + 2 > maxSize) {
11024
+ el.size = maxSize;
11025
+ } else {
11026
+ el.size += 2;
11027
+ }
11028
+ isExistUpdate = true;
10789
11029
  });
10790
- this.draw.render({ isSetCursor: false });
11030
+ if (isExistUpdate) {
11031
+ this.draw.render({ isSetCursor: false });
11032
+ }
10791
11033
  }
10792
11034
  sizeMinus() {
10793
11035
  const isReadonly = this.draw.isReadonly();
10794
11036
  if (isReadonly)
10795
11037
  return;
10796
- const selection = this.range.getSelection();
10797
- if (!selection)
11038
+ const selection = this.range.getTextLikeSelection();
11039
+ if (!selection || !selection.length)
10798
11040
  return;
10799
- const greaterThanMaxSizeIndex = selection.findIndex((s) => !s.size || s.size - 2 >= 8);
10800
- if (!~greaterThanMaxSizeIndex)
10801
- return;
10802
- const { defaultSize } = this.options;
11041
+ const { defaultSize, minSize } = this.options;
11042
+ let isExistUpdate = false;
10803
11043
  selection.forEach((el) => {
10804
11044
  if (!el.size) {
10805
11045
  el.size = defaultSize;
10806
11046
  }
10807
- if (el.size - 2 < 8)
11047
+ if (el.size <= minSize)
10808
11048
  return;
10809
- el.size -= 2;
11049
+ if (el.size - 2 < minSize) {
11050
+ el.size = minSize;
11051
+ } else {
11052
+ el.size -= 2;
11053
+ }
11054
+ isExistUpdate = true;
10810
11055
  });
10811
- this.draw.render({ isSetCursor: false });
11056
+ if (isExistUpdate) {
11057
+ this.draw.render({ isSetCursor: false });
11058
+ }
10812
11059
  }
10813
11060
  bold() {
10814
11061
  const isReadonly = this.draw.isReadonly();
@@ -11103,8 +11350,7 @@ class CommandAdapt {
11103
11350
  });
11104
11351
  this.range.setRange(0, 0);
11105
11352
  this.draw.render({ curIndex: 0 });
11106
- const position = this.position.getOriginalPositionList();
11107
- this.tableTool.render(element, position[index2]);
11353
+ this.tableTool.render();
11108
11354
  }
11109
11355
  insertTableBottomRow() {
11110
11356
  const isReadonly = this.draw.isReadonly();
@@ -11165,8 +11411,7 @@ class CommandAdapt {
11165
11411
  });
11166
11412
  this.range.setRange(0, 0);
11167
11413
  this.draw.render({ curIndex: 0 });
11168
- const position = this.position.getOriginalPositionList();
11169
- this.tableTool.render(element, position[index2]);
11414
+ this.tableTool.render();
11170
11415
  }
11171
11416
  insertTableLeftCol() {
11172
11417
  const isReadonly = this.draw.isReadonly();
@@ -11220,8 +11465,7 @@ class CommandAdapt {
11220
11465
  });
11221
11466
  this.range.setRange(0, 0);
11222
11467
  this.draw.render({ curIndex: 0 });
11223
- const position = this.position.getOriginalPositionList();
11224
- this.tableTool.render(element, position[index2]);
11468
+ this.tableTool.render();
11225
11469
  }
11226
11470
  insertTableRightCol() {
11227
11471
  const isReadonly = this.draw.isReadonly();
@@ -11275,8 +11519,7 @@ class CommandAdapt {
11275
11519
  });
11276
11520
  this.range.setRange(0, 0);
11277
11521
  this.draw.render({ curIndex: 0 });
11278
- const position = this.position.getOriginalPositionList();
11279
- this.tableTool.render(element, position[index2]);
11522
+ this.tableTool.render();
11280
11523
  }
11281
11524
  deleteTableRow() {
11282
11525
  const isReadonly = this.draw.isReadonly();
@@ -11495,8 +11738,7 @@ class CommandAdapt {
11495
11738
  const curIndex = startTd.value.length - 1;
11496
11739
  this.range.setRange(curIndex, curIndex);
11497
11740
  this.draw.render();
11498
- const position = this.position.getOriginalPositionList();
11499
- this.tableTool.render(element, position[index2]);
11741
+ this.tableTool.render();
11500
11742
  }
11501
11743
  cancelMergeTableCell() {
11502
11744
  const isReadonly = this.draw.isReadonly();
@@ -11556,8 +11798,47 @@ class CommandAdapt {
11556
11798
  const curIndex = curTd.value.length - 1;
11557
11799
  this.range.setRange(curIndex, curIndex);
11558
11800
  this.draw.render();
11559
- const position = this.position.getOriginalPositionList();
11560
- this.tableTool.render(element, position[index2]);
11801
+ this.tableTool.render();
11802
+ }
11803
+ tableTdVerticalAlign(payload) {
11804
+ var _a, _b, _c;
11805
+ const isReadonly = this.draw.isReadonly();
11806
+ if (isReadonly)
11807
+ return;
11808
+ const positionContext = this.position.getPositionContext();
11809
+ if (!positionContext.isTable)
11810
+ return;
11811
+ const { index: index2, trIndex, tdIndex } = positionContext;
11812
+ const originalElementList = this.draw.getOriginalElementList();
11813
+ const element = originalElementList[index2];
11814
+ const curTd = (_c = (_b = (_a = element == null ? void 0 : element.trList) == null ? void 0 : _a[trIndex]) == null ? void 0 : _b.tdList) == null ? void 0 : _c[tdIndex];
11815
+ if (!curTd || curTd.verticalAlign === payload || !curTd.verticalAlign && payload === VerticalAlign.TOP) {
11816
+ return;
11817
+ }
11818
+ curTd.verticalAlign = payload;
11819
+ const { endIndex } = this.range.getRange();
11820
+ this.draw.render({
11821
+ curIndex: endIndex
11822
+ });
11823
+ }
11824
+ tableBorderType(payload) {
11825
+ const isReadonly = this.draw.isReadonly();
11826
+ if (isReadonly)
11827
+ return;
11828
+ const positionContext = this.position.getPositionContext();
11829
+ if (!positionContext.isTable)
11830
+ return;
11831
+ const { index: index2 } = positionContext;
11832
+ const originalElementList = this.draw.getOriginalElementList();
11833
+ const element = originalElementList[index2];
11834
+ if (!element.borderType && payload === TableBorder.ALL || element.borderType === payload) {
11835
+ return;
11836
+ }
11837
+ element.borderType = payload;
11838
+ const { endIndex } = this.range.getRange();
11839
+ this.draw.render({
11840
+ curIndex: endIndex
11841
+ });
11561
11842
  }
11562
11843
  hyperlink(payload) {
11563
11844
  const isReadonly = this.draw.isReadonly();
@@ -12227,6 +12508,72 @@ const tableMenus = [
12227
12508
  {
12228
12509
  isDivider: true
12229
12510
  },
12511
+ {
12512
+ i18nPath: "contextmenu.table.border",
12513
+ icon: "border-all",
12514
+ when: (payload) => {
12515
+ return !payload.isReadonly && payload.isInTable;
12516
+ },
12517
+ childMenus: [
12518
+ {
12519
+ i18nPath: "contextmenu.table.borderAll",
12520
+ icon: "border-all",
12521
+ when: () => true,
12522
+ callback: (command) => {
12523
+ command.executeTableBorderType(TableBorder.ALL);
12524
+ }
12525
+ },
12526
+ {
12527
+ i18nPath: "contextmenu.table.borderEmpty",
12528
+ icon: "border-empty",
12529
+ when: () => true,
12530
+ callback: (command) => {
12531
+ command.executeTableBorderType(TableBorder.EMPTY);
12532
+ }
12533
+ },
12534
+ {
12535
+ i18nPath: "contextmenu.table.borderExternal",
12536
+ icon: "border-external",
12537
+ when: () => true,
12538
+ callback: (command) => {
12539
+ command.executeTableBorderType(TableBorder.EXTERNAL);
12540
+ }
12541
+ }
12542
+ ]
12543
+ },
12544
+ {
12545
+ i18nPath: "contextmenu.table.verticalAlign",
12546
+ icon: "vertical-align",
12547
+ when: (payload) => {
12548
+ return !payload.isReadonly && payload.isInTable;
12549
+ },
12550
+ childMenus: [
12551
+ {
12552
+ i18nPath: "contextmenu.table.verticalAlignTop",
12553
+ icon: "vertical-align-top",
12554
+ when: () => true,
12555
+ callback: (command) => {
12556
+ command.executeTableTdVerticalAlign(VerticalAlign.TOP);
12557
+ }
12558
+ },
12559
+ {
12560
+ i18nPath: "contextmenu.table.verticalAlignMiddle",
12561
+ icon: "vertical-align-middle",
12562
+ when: () => true,
12563
+ callback: (command) => {
12564
+ command.executeTableTdVerticalAlign(VerticalAlign.MIDDLE);
12565
+ }
12566
+ },
12567
+ {
12568
+ i18nPath: "contextmenu.table.verticalAlignBottom",
12569
+ icon: "vertical-align-bottom",
12570
+ when: () => true,
12571
+ callback: (command) => {
12572
+ command.executeTableTdVerticalAlign(VerticalAlign.BOTTOM);
12573
+ }
12574
+ }
12575
+ ]
12576
+ },
12230
12577
  {
12231
12578
  i18nPath: "contextmenu.table.insertRowCol",
12232
12579
  icon: "insert-row-col",
@@ -12689,6 +13036,13 @@ class Shortcut {
12689
13036
  }
12690
13037
  }
12691
13038
  }
13039
+ const defaultPageNumberOption = {
13040
+ bottom: 60,
13041
+ size: 12,
13042
+ font: "Yahei",
13043
+ color: "#000000",
13044
+ rowFlex: RowFlex.CENTER
13045
+ };
12692
13046
  class Editor {
12693
13047
  constructor(container, data2, options = {}) {
12694
13048
  __publicField(this, "command");
@@ -12696,6 +13050,7 @@ class Editor {
12696
13050
  __publicField(this, "register");
12697
13051
  __publicField(this, "destroy");
12698
13052
  const headerOptions = __spreadValues(__spreadValues({}, defaultHeaderOption), options.header);
13053
+ const pageNumberOptions = __spreadValues(__spreadValues({}, defaultPageNumberOption), options.pageNumber);
12699
13054
  const waterMarkOptions = __spreadValues(__spreadValues({}, defaultWatermarkOption), options.watermark);
12700
13055
  const controlOptions = __spreadValues(__spreadValues({}, defaultControlOption), options.control);
12701
13056
  const checkboxOptions = __spreadValues(__spreadValues({}, defaultCheckboxOption), options.checkbox);
@@ -12705,6 +13060,8 @@ class Editor {
12705
13060
  defaultType: "TEXT",
12706
13061
  defaultFont: "Yahei",
12707
13062
  defaultSize: 16,
13063
+ minSize: 5,
13064
+ maxSize: 72,
12708
13065
  defaultRowMargin: 1,
12709
13066
  defaultBasicRowMarginHeight: 8,
12710
13067
  defaultTabWidth: 32,
@@ -12712,9 +13069,6 @@ class Editor {
12712
13069
  height: 1123,
12713
13070
  scale: 1,
12714
13071
  pageGap: 20,
12715
- pageNumberBottom: 60,
12716
- pageNumberSize: 12,
12717
- pageNumberFont: "Yahei",
12718
13072
  underlineColor: "#000000",
12719
13073
  strikeoutColor: "#FF0000",
12720
13074
  rangeAlpha: 0.6,
@@ -12733,11 +13087,11 @@ class Editor {
12733
13087
  tdPadding: 5,
12734
13088
  defaultTdHeight: 40,
12735
13089
  defaultHyperlinkColor: "#0000FF",
12736
- headerTop: 50,
12737
13090
  paperDirection: PaperDirection.VERTICAL,
12738
13091
  inactiveAlpha: 0.6
12739
13092
  }, options), {
12740
13093
  header: headerOptions,
13094
+ pageNumber: pageNumberOptions,
12741
13095
  watermark: waterMarkOptions,
12742
13096
  control: controlOptions,
12743
13097
  checkbox: checkboxOptions,
@@ -12777,5 +13131,5 @@ class Editor {
12777
13131
  };
12778
13132
  }
12779
13133
  }
12780
- export { BlockType, Command, ControlType, EDITOR_COMPONENT, Editor, EditorComponent, EditorMode, EditorZone, ElementType, ImageDisplay, KeyMap, PageMode, PaperDirection, RowFlex, Editor as default };
13134
+ export { BlockType, Command, ControlType, EDITOR_COMPONENT, Editor, EditorComponent, EditorMode, EditorZone, ElementType, ImageDisplay, KeyMap, PageMode, PaperDirection, RowFlex, TableBorder, VerticalAlign, Editor as default };
12781
13135
  //# sourceMappingURL=canvas-editor.es.js.map