@hufe921/canvas-editor 0.9.95 → 0.9.97

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.
Files changed (32) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +53 -18
  3. package/dist/canvas-editor.es.js +757 -136
  4. package/dist/canvas-editor.es.js.map +1 -1
  5. package/dist/canvas-editor.umd.js +32 -31
  6. package/dist/canvas-editor.umd.js.map +1 -1
  7. package/dist/src/editor/core/command/Command.d.ts +4 -0
  8. package/dist/src/editor/core/command/CommandAdapt.d.ts +6 -1
  9. package/dist/src/editor/core/cursor/Cursor.d.ts +1 -0
  10. package/dist/src/editor/core/draw/Draw.d.ts +3 -0
  11. package/dist/src/editor/core/draw/control/Control.d.ts +5 -2
  12. package/dist/src/editor/core/draw/interactive/Area.d.ts +18 -0
  13. package/dist/src/editor/core/draw/particle/table/TableOperate.d.ts +2 -1
  14. package/dist/src/editor/core/draw/particle/table/TableParticle.d.ts +1 -0
  15. package/dist/src/editor/core/draw/particle/table/TableTool.d.ts +2 -0
  16. package/dist/src/editor/core/range/RangeManager.d.ts +6 -1
  17. package/dist/src/editor/dataset/constant/ContextMenu.d.ts +2 -0
  18. package/dist/src/editor/dataset/constant/Element.d.ts +1 -0
  19. package/dist/src/editor/dataset/enum/Area.d.ts +5 -0
  20. package/dist/src/editor/dataset/enum/Control.d.ts +4 -0
  21. package/dist/src/editor/dataset/enum/Element.d.ts +1 -0
  22. package/dist/src/editor/dataset/enum/table/Table.d.ts +3 -1
  23. package/dist/src/editor/index.d.ts +6 -5
  24. package/dist/src/editor/interface/Area.d.ts +41 -0
  25. package/dist/src/editor/interface/Control.d.ts +15 -2
  26. package/dist/src/editor/interface/Element.d.ts +13 -2
  27. package/dist/src/editor/interface/Listener.d.ts +2 -2
  28. package/dist/src/editor/interface/Range.d.ts +2 -1
  29. package/dist/src/editor/interface/Row.d.ts +1 -0
  30. package/dist/src/editor/utils/element.d.ts +1 -0
  31. package/dist/src/editor/utils/index.d.ts +1 -0
  32. package/package.json +1 -1
@@ -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__quick__add{width:16px;height:16px;position:absolute;border-radius:50%;background-color:#e2e6ed;cursor:pointer}.ce-table-tool__quick__add:after{content:"+";color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-55%)}.ce-table-tool__select{width:16px;height:18px;position:absolute;border-radius:3px;cursor:pointer}.ce-table-tool__select:hover{background-color:#e2e6ed}.ce-table-tool__select:after{content:":::";color:#aaaaab;position:absolute;top:50%;left:50%;transform:translate(-75%,-50%) rotate(-90deg)}.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)}})();})();
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;cursor:pointer;transition:all .3s}.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:hover{background-color:#dadce0}.ce-table-tool__row .ce-table-tool__row__item:last-child:after{display:none}.ce-table-tool__quick__add{width:16px;height:16px;position:absolute;border-radius:50%;background-color:#e2e6ed;cursor:pointer}.ce-table-tool__quick__add:after{content:"+";color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-55%)}.ce-table-tool__select{width:16px;height:18px;position:absolute;border-radius:3px;cursor:pointer}.ce-table-tool__select:hover{background-color:#e2e6ed}.ce-table-tool__select:after{content:":::";color:#aaaaab;position:absolute;top:50%;left:50%;transform:translate(-75%,-50%) rotate(-90deg)}.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;cursor:pointer;transition:all .3s}.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:hover{background-color:#dadce0}.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-dash{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMyAzaC0xVjJoMWExIDEgMCAwMTEgMXYxaC0xVjN6bS0zLTF2MUg4LjV2MmgtMVYzSDZWMmg0ek00IDJ2MUgzdjFIMlYzYTEgMSAwIDAxMS0xaDF6TTIgNmgxdjEuNWgydjFIM1YxMEgyVjZ6bTAgNmgxdjFoMXYxSDNhMSAxIDAgMDEtMS0xdi0xem00IDJ2LTFoMS41di0yaDF2MkgxMHYxSDZ6bTYgMHYtMWgxdi0xaDF2MWExIDEgMCAwMS0xIDFoLTF6bTItNGgtMVY4LjVoLTJ2LTFoMlY2aDF2NHpNOC41IDcuNXYtMWgtMXYxaC0xdjFoMXYxaDF2LTFoMXYtMWgtMXoiIGZpbGw9IiMwMDAwMDAiLz48L3N2Zz4=)}.ce-contextmenu-border-external{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iIzNENDc1NyIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOSA1VjNIOHYyaDF6bTAgOXYtMkg4djJoMXpNNSA4SDN2MWgyVjh6bTkgMGgtMnYxaDJWOHpNOSA3djFoMXYxSDl2MUg4VjlIN1Y4aDFWN2gxeiIgZmlsbD0iI0FBQUNCMCIvPjwvc3ZnPg==)}.ce-contextmenu-border-internal{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuNSAzYS41LjUgMCAwMS41LS41aDExYS41LjUgMCAwMS41LjV2MTFhLjUuNSAwIDAxLS41LjVIM2EuNS41IDAgMDEtLjUtLjVWM3oiIHN0cm9rZT0iI0FBQUNCMCIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOSA1VjNIOHYyaDF6bTAgOXYtMkg4djJoMXpNNSA4SDN2MWgyVjh6bTkgMGgtMnYxaDJWOHpNOSA3djFoMXYxSDl2MUg4VjlIN1Y4aDFWN2gxeiIgZmlsbD0iIzNENDc1NyIvPjwvc3ZnPg==)}.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;top: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.95";
26
+ const version = "0.9.97";
27
27
  var MaxHeightRatio;
28
28
  (function(MaxHeightRatio2) {
29
29
  MaxHeightRatio2["HALF"] = "half";
@@ -384,6 +384,9 @@ function isRectIntersect(rect1, rect2) {
384
384
  }
385
385
  return true;
386
386
  }
387
+ function isNonValue(value) {
388
+ return value === void 0 || value === null;
389
+ }
387
390
  const CURSOR_AGENT_OFFSET_HEIGHT = 12;
388
391
  const defaultCursorOption = {
389
392
  width: 1,
@@ -412,6 +415,7 @@ var ElementType;
412
415
  ElementType2["SEPARATOR"] = "separator";
413
416
  ElementType2["PAGE_BREAK"] = "pageBreak";
414
417
  ElementType2["CONTROL"] = "control";
418
+ ElementType2["AREA"] = "area";
415
419
  ElementType2["CHECKBOX"] = "checkbox";
416
420
  ElementType2["RADIO"] = "radio";
417
421
  ElementType2["LATEX"] = "latex";
@@ -445,6 +449,7 @@ const EDITOR_ELEMENT_COPY_ATTR = [
445
449
  "strikeout",
446
450
  "rowFlex",
447
451
  "url",
452
+ "areaId",
448
453
  "hyperlinkId",
449
454
  "dateId",
450
455
  "dateFormat",
@@ -488,7 +493,9 @@ const EDITOR_ELEMENT_ZIP_ATTR = [
488
493
  "imgFloatPosition",
489
494
  "textDecoration",
490
495
  "extension",
491
- "externalId"
496
+ "externalId",
497
+ "areaId",
498
+ "area"
492
499
  ];
493
500
  const TABLE_TD_ZIP_ATTR = [
494
501
  "conceptId",
@@ -527,10 +534,12 @@ const CONTROL_STYLE_ATTR = [
527
534
  "italic",
528
535
  "strikeout"
529
536
  ];
537
+ const AREA_CONTEXT_ATTR = ["areaId", "area"];
530
538
  const EDITOR_ELEMENT_CONTEXT_ATTR = [
531
539
  ...TABLE_CONTEXT_ATTR,
532
540
  ...TITLE_CONTEXT_ATTR,
533
- ...LIST_CONTEXT_ATTR
541
+ ...LIST_CONTEXT_ATTR,
542
+ ...AREA_CONTEXT_ATTR
534
543
  ];
535
544
  const TEXTLIKE_ELEMENT_TYPE = [
536
545
  ElementType.TEXT,
@@ -3773,6 +3782,11 @@ var ControlIndentation;
3773
3782
  ControlIndentation2["ROW_START"] = "rowStart";
3774
3783
  ControlIndentation2["VALUE_START"] = "valueStart";
3775
3784
  })(ControlIndentation || (ControlIndentation = {}));
3785
+ var ControlState;
3786
+ (function(ControlState2) {
3787
+ ControlState2["ACTIVE"] = "active";
3788
+ ControlState2["INACTIVE"] = "inactive";
3789
+ })(ControlState || (ControlState = {}));
3776
3790
  var BackgroundSize;
3777
3791
  (function(BackgroundSize2) {
3778
3792
  BackgroundSize2["CONTAIN"] = "contain";
@@ -4064,6 +4078,7 @@ function unzipElementList(elementList) {
4064
4078
  return result;
4065
4079
  }
4066
4080
  function formatElementList(elementList, options) {
4081
+ var _a;
4067
4082
  const { isHandleFirstElement = true, isForceCompensation = false, editorOptions } = options;
4068
4083
  const startElement = elementList[0];
4069
4084
  if (isForceCompensation || isHandleFirstElement && (startElement == null ? void 0 : startElement.type) !== ElementType.LIST && ((startElement == null ? void 0 : startElement.type) && startElement.type !== ElementType.TEXT || !START_LINE_BREAK_REG.test(startElement == null ? void 0 : startElement.value))) {
@@ -4082,7 +4097,7 @@ function formatElementList(elementList, options) {
4082
4097
  isForceCompensation: false
4083
4098
  }));
4084
4099
  if (valueList.length) {
4085
- const titleId = getUUID();
4100
+ const titleId = el.titleId || getUUID();
4086
4101
  const titleOptions = editorOptions.title;
4087
4102
  for (let v = 0; v < valueList.length; v++) {
4088
4103
  const value = valueList[v];
@@ -4123,6 +4138,39 @@ function formatElementList(elementList, options) {
4123
4138
  }
4124
4139
  }
4125
4140
  i--;
4141
+ } else if (el.type === ElementType.AREA) {
4142
+ elementList.splice(i, 1);
4143
+ const valueList = (el == null ? void 0 : el.valueList) || [];
4144
+ formatElementList(valueList, __spreadProps(__spreadValues({}, options), {
4145
+ isHandleFirstElement: false,
4146
+ isForceCompensation: false
4147
+ }));
4148
+ if (valueList.length) {
4149
+ const areaId = getUUID();
4150
+ for (let v = 0; v < valueList.length; v++) {
4151
+ const value = valueList[v];
4152
+ value.areaId = el.areaId || areaId;
4153
+ value.area = el.area;
4154
+ if (value.type === ElementType.TABLE) {
4155
+ const trList = value.trList;
4156
+ for (let r = 0; r < trList.length; r++) {
4157
+ const tr = trList[r];
4158
+ for (let d = 0; d < tr.tdList.length; d++) {
4159
+ const td = tr.tdList[d];
4160
+ const tdValueList = td.value;
4161
+ for (let t = 0; t < tdValueList.length; t++) {
4162
+ const tdValue = tdValueList[t];
4163
+ tdValue.areaId = el.areaId || areaId;
4164
+ tdValue.area = el.area;
4165
+ }
4166
+ }
4167
+ }
4168
+ }
4169
+ elementList.splice(i, 0, value);
4170
+ i++;
4171
+ }
4172
+ }
4173
+ i--;
4126
4174
  } else if (el.type === ElementType.TABLE) {
4127
4175
  const tableId = getUUID();
4128
4176
  el.id = tableId;
@@ -4192,7 +4240,7 @@ function formatElementList(elementList, options) {
4192
4240
  }
4193
4241
  const { prefix, postfix, value, placeholder, code, type, valueSets } = el.control;
4194
4242
  const { editorOptions: { control: controlOption, checkbox: checkboxOption, radio: radioOption } } = options;
4195
- const controlId = getUUID();
4243
+ const controlId = el.controlId || getUUID();
4196
4244
  elementList.splice(i, 1);
4197
4245
  const controlContext = pickObject(el, [
4198
4246
  ...EDITOR_ELEMENT_CONTEXT_ATTR,
@@ -4345,7 +4393,7 @@ function formatElementList(elementList, options) {
4345
4393
  i++;
4346
4394
  }
4347
4395
  i--;
4348
- } else if ((!el.type || TEXTLIKE_ELEMENT_TYPE.includes(el.type)) && el.value.length > 1) {
4396
+ } else if ((!el.type || TEXTLIKE_ELEMENT_TYPE.includes(el.type)) && ((_a = el.value) == null ? void 0 : _a.length) > 1) {
4349
4397
  elementList.splice(i, 1);
4350
4398
  const valueList = splitText(el.value);
4351
4399
  for (let v = 0; v < valueList.length; v++) {
@@ -4406,7 +4454,7 @@ function pickElementAttr(payload, option = {}) {
4406
4454
  return element;
4407
4455
  }
4408
4456
  function zipElementList(payload, options = {}) {
4409
- const { extraPickAttrs } = options;
4457
+ const { extraPickAttrs, isClassifyArea = false } = options;
4410
4458
  const elementList = deepClone(payload);
4411
4459
  const zipElementListData = [];
4412
4460
  let e = 0;
@@ -4423,6 +4471,7 @@ function zipElementList(payload, options = {}) {
4423
4471
  const titleElement = {
4424
4472
  type: ElementType.TITLE,
4425
4473
  title: element.title,
4474
+ titleId,
4426
4475
  value: "",
4427
4476
  level
4428
4477
  };
@@ -4468,6 +4517,35 @@ function zipElementList(payload, options = {}) {
4468
4517
  listElement.valueList = zipElementList(valueList, options);
4469
4518
  element = listElement;
4470
4519
  }
4520
+ } else if (element.areaId && element.area) {
4521
+ const areaId = element.areaId;
4522
+ const area = element.area;
4523
+ const valueList = [];
4524
+ while (e < elementList.length) {
4525
+ const areaE = elementList[e];
4526
+ if (areaId !== areaE.areaId) {
4527
+ e--;
4528
+ break;
4529
+ }
4530
+ delete areaE.area;
4531
+ delete areaE.areaId;
4532
+ valueList.push(areaE);
4533
+ e++;
4534
+ }
4535
+ const areaElementList = zipElementList(valueList, options);
4536
+ if (isClassifyArea) {
4537
+ const areaElement = {
4538
+ type: ElementType.AREA,
4539
+ value: "",
4540
+ areaId,
4541
+ area
4542
+ };
4543
+ areaElement.valueList = areaElementList;
4544
+ element = areaElement;
4545
+ } else {
4546
+ zipElementListData.splice(e, 0, ...areaElementList);
4547
+ continue;
4548
+ }
4471
4549
  } else if (element.type === ElementType.TABLE) {
4472
4550
  if (element.pagingId) {
4473
4551
  let tableIndex = e + 1;
@@ -4494,7 +4572,9 @@ function zipElementList(payload, options = {}) {
4494
4572
  const zipTd = {
4495
4573
  colspan: td.colspan,
4496
4574
  rowspan: td.rowspan,
4497
- value: zipElementList(td.value, options)
4575
+ value: zipElementList(td.value, __spreadProps(__spreadValues({}, options), {
4576
+ isClassifyArea: false
4577
+ }))
4498
4578
  };
4499
4579
  TABLE_TD_ZIP_ATTR.forEach((attr) => {
4500
4580
  const value = td[attr];
@@ -4645,7 +4725,7 @@ function getAnchorElement(elementList, anchorIndex) {
4645
4725
  if (!anchorElement)
4646
4726
  return null;
4647
4727
  const anchorNextElement = elementList[anchorIndex + 1];
4648
- return !anchorElement.listId && anchorElement.value === ZERO && anchorNextElement && anchorNextElement.value !== ZERO ? anchorNextElement : anchorElement;
4728
+ return !anchorElement.listId && anchorElement.value === ZERO && anchorNextElement && anchorNextElement.value !== ZERO && anchorElement.areaId === anchorNextElement.areaId ? anchorNextElement : anchorElement;
4649
4729
  }
4650
4730
  function formatElementContext(sourceElementList, formatElementList2, anchorIndex, options) {
4651
4731
  var _a, _b, _c;
@@ -4664,7 +4744,11 @@ function formatElementContext(sourceElementList, formatElementList2, anchorIndex
4664
4744
  isBreakWarped = true;
4665
4745
  }
4666
4746
  if (isBreakWarped || !copyElement.listId && targetElement.type === ElementType.LIST) {
4667
- const cloneAttr2 = [...TABLE_CONTEXT_ATTR, ...EDITOR_ROW_ATTR];
4747
+ const cloneAttr2 = [
4748
+ ...TABLE_CONTEXT_ATTR,
4749
+ ...EDITOR_ROW_ATTR,
4750
+ ...AREA_CONTEXT_ATTR
4751
+ ];
4668
4752
  cloneProperty(cloneAttr2, copyElement, targetElement);
4669
4753
  (_b = targetElement.valueList) == null ? void 0 : _b.forEach((valueItem) => {
4670
4754
  cloneProperty(cloneAttr2, copyElement, valueItem);
@@ -5313,8 +5397,9 @@ function getIsClipboardContainFile(clipboardData) {
5313
5397
  }
5314
5398
  function pasteElement(host, elementList) {
5315
5399
  const draw = host.getDraw();
5316
- if (draw.isReadonly() || draw.isDisabled())
5400
+ if (draw.isReadonly() || draw.isDisabled() || draw.getControl().getIsDisabledPasteControl()) {
5317
5401
  return;
5402
+ }
5318
5403
  const rangeManager = draw.getRange();
5319
5404
  const { startIndex } = rangeManager.getRange();
5320
5405
  const originalElementList = draw.getElementList();
@@ -5599,6 +5684,13 @@ class Cursor {
5599
5684
  this.blinkTimeout = null;
5600
5685
  }
5601
5686
  }
5687
+ focus() {
5688
+ const agentCursorDom = this.cursorAgent.getAgentCursorDom();
5689
+ if (document.activeElement !== agentCursorDom) {
5690
+ agentCursorDom.focus();
5691
+ agentCursorDom.setSelectionRange(0, 0);
5692
+ }
5693
+ }
5602
5694
  drawCursor(payload) {
5603
5695
  let cursorPosition = this.position.getCursorPosition();
5604
5696
  if (!cursorPosition)
@@ -5621,10 +5713,7 @@ class Cursor {
5621
5713
  const agentCursorDom = this.cursorAgent.getAgentCursorDom();
5622
5714
  if (isFocus) {
5623
5715
  setTimeout(() => {
5624
- if (document.activeElement !== agentCursorDom) {
5625
- agentCursorDom.focus();
5626
- agentCursorDom.setSelectionRange(0, 0);
5627
- }
5716
+ this.focus();
5628
5717
  });
5629
5718
  }
5630
5719
  const descent = metrics.boundingBoxDescent < 0 ? 0 : metrics.boundingBoxDescent;
@@ -6522,7 +6611,7 @@ function del(evt, host) {
6522
6611
  }
6523
6612
  }
6524
6613
  function enter(evt, host) {
6525
- var _a, _b;
6614
+ var _a, _b, _c;
6526
6615
  const draw = host.getDraw();
6527
6616
  if (draw.isReadonly())
6528
6617
  return;
@@ -6538,7 +6627,7 @@ function enter(evt, host) {
6538
6627
  draw.getListParticle().unsetList();
6539
6628
  return;
6540
6629
  }
6541
- const enterText = {
6630
+ let enterText = {
6542
6631
  value: ZERO
6543
6632
  };
6544
6633
  if (evt.shiftKey && startElement.listId) {
@@ -6548,8 +6637,11 @@ function enter(evt, host) {
6548
6637
  isBreakWhenWrap: true,
6549
6638
  editorOptions: draw.getOptions()
6550
6639
  });
6551
- if (!(endElement.titleId && endElement.titleId !== ((_b = elementList[endIndex + 1]) == null ? void 0 : _b.titleId))) {
6552
- const copyElement = getAnchorElement(elementList, endIndex);
6640
+ if (evt.shiftKey && endElement.areaId && endElement.areaId !== ((_b = elementList[endIndex + 1]) == null ? void 0 : _b.areaId)) {
6641
+ enterText = omitObject(enterText, AREA_CONTEXT_ATTR);
6642
+ }
6643
+ if (!(endElement.titleId && endElement.titleId !== ((_c = elementList[endIndex + 1]) == null ? void 0 : _c.titleId))) {
6644
+ const copyElement = rangeManager.getRangeAnchorStyle(elementList, endIndex);
6553
6645
  if (copyElement) {
6554
6646
  const copyAttr = [...EDITOR_ROW_ATTR];
6555
6647
  if (copyElement.controlComponent !== ControlComponent.POSTFIX) {
@@ -7261,7 +7353,7 @@ function input(data2, host) {
7261
7353
  `, ZERO);
7262
7354
  const { startIndex, endIndex } = rangeManager.getRange();
7263
7355
  const elementList = draw.getElementList();
7264
- const copyElement = getAnchorElement(elementList, endIndex);
7356
+ const copyElement = rangeManager.getRangeAnchorStyle(elementList, endIndex);
7265
7357
  if (!copyElement)
7266
7358
  return;
7267
7359
  const isDesignMode = draw.isDesignMode();
@@ -8076,6 +8168,7 @@ class Position {
8076
8168
  }
8077
8169
  }
8078
8170
  x += curRow.offsetX || 0;
8171
+ y += curRow.offsetY || 0;
8079
8172
  const tablePreX = x;
8080
8173
  const tablePreY = y;
8081
8174
  for (let j = 0; j < curRow.elementList.length; j++) {
@@ -8436,7 +8529,7 @@ class Position {
8436
8529
  }
8437
8530
  }
8438
8531
  const margins = this.draw.getMargins();
8439
- if (y <= margins[1]) {
8532
+ if (y <= margins[0]) {
8440
8533
  for (let p = 0; p < positionList.length; p++) {
8441
8534
  const position = positionList[p];
8442
8535
  if (position.pageNo !== positionNo || position.rowNo !== 0)
@@ -8588,6 +8681,7 @@ class RangeManager {
8588
8681
  __publicField(this, "eventBus");
8589
8682
  __publicField(this, "position");
8590
8683
  __publicField(this, "historyManager");
8684
+ __publicField(this, "defaultStyle");
8591
8685
  this.draw = draw;
8592
8686
  this.options = draw.getOptions();
8593
8687
  this.listener = draw.getListener();
@@ -8598,6 +8692,7 @@ class RangeManager {
8598
8692
  startIndex: -1,
8599
8693
  endIndex: -1
8600
8694
  };
8695
+ this.defaultStyle = null;
8601
8696
  }
8602
8697
  getRange() {
8603
8698
  return this.range;
@@ -8605,10 +8700,32 @@ class RangeManager {
8605
8700
  clearRange() {
8606
8701
  this.setRange(-1, -1);
8607
8702
  }
8703
+ setDefaultStyle(style) {
8704
+ if (!style) {
8705
+ this.defaultStyle = null;
8706
+ } else {
8707
+ this.defaultStyle = __spreadValues(__spreadValues({}, this.defaultStyle), style);
8708
+ }
8709
+ }
8710
+ getDefaultStyle() {
8711
+ return this.defaultStyle;
8712
+ }
8713
+ getRangeAnchorStyle(elementList, anchorIndex) {
8714
+ const anchorElement = getAnchorElement(elementList, anchorIndex);
8715
+ if (!anchorElement)
8716
+ return null;
8717
+ return __spreadValues(__spreadValues({}, anchorElement), this.defaultStyle);
8718
+ }
8608
8719
  getIsCollapsed() {
8609
8720
  const { startIndex, endIndex } = this.range;
8610
8721
  return startIndex === endIndex;
8611
8722
  }
8723
+ getIsSelection() {
8724
+ const { startIndex, endIndex } = this.range;
8725
+ if (!~startIndex && !~endIndex)
8726
+ return false;
8727
+ return startIndex !== endIndex;
8728
+ }
8612
8729
  getSelection() {
8613
8730
  const { startIndex, endIndex } = this.range;
8614
8731
  if (startIndex === endIndex)
@@ -8861,6 +8978,7 @@ class RangeManager {
8861
8978
  this.range.startTrIndex = startTrIndex;
8862
8979
  this.range.endTrIndex = endTrIndex;
8863
8980
  this.range.isCrossRowCol = !!(startTdIndex || endTdIndex || startTrIndex || endTrIndex);
8981
+ this.setDefaultStyle(null);
8864
8982
  this.range.zone = this.draw.getZone().getZone();
8865
8983
  const control = this.draw.getControl();
8866
8984
  if (~startIndex && ~endIndex) {
@@ -8893,7 +9011,7 @@ class RangeManager {
8893
9011
  } else {
8894
9012
  const index2 = ~endIndex ? endIndex : 0;
8895
9013
  const elementList = this.draw.getElementList();
8896
- curElement = getAnchorElement(elementList, index2);
9014
+ curElement = this.getRangeAnchorStyle(elementList, index2);
8897
9015
  }
8898
9016
  if (!curElement)
8899
9017
  return;
@@ -9211,7 +9329,7 @@ class Margin {
9211
9329
  render(ctx, pageNo) {
9212
9330
  const { marginIndicatorColor, pageMode } = this.options;
9213
9331
  const width = this.draw.getWidth();
9214
- const height = pageMode === PageMode.CONTINUITY ? this.draw.getCanvasHeight(pageNo) : this.draw.getHeight();
9332
+ const height = pageMode === PageMode.CONTINUITY ? this.draw.getCanvasHeight(pageNo) / this.draw.getPagePixelRatio() : this.draw.getHeight();
9215
9333
  const margins = this.draw.getMargins();
9216
9334
  const marginIndicatorSize = this.draw.getMarginIndicatorSize();
9217
9335
  ctx.save();
@@ -9724,7 +9842,7 @@ class PageNumber {
9724
9842
  this.options = draw.getOptions();
9725
9843
  }
9726
9844
  render(ctx, pageNo) {
9727
- const { scale, pageMode, pageNumber: { size, font, color, rowFlex, numberType, format, startPageNo, fromPageNo } } = this.options;
9845
+ const { scale, pageNumber: { size, font, color, rowFlex, numberType, format, startPageNo, fromPageNo } } = this.options;
9728
9846
  if (pageNo < fromPageNo)
9729
9847
  return;
9730
9848
  let text = format;
@@ -9741,7 +9859,7 @@ class PageNumber {
9741
9859
  text = text.replace(pageCountReg, pageCountText);
9742
9860
  }
9743
9861
  const width = this.draw.getWidth();
9744
- const height = pageMode === PageMode.CONTINUITY ? this.draw.getCanvasHeight(pageNo) : this.draw.getHeight();
9862
+ const height = this.draw.getHeight();
9745
9863
  const pageNumberBottom = this.draw.getPageNumberBottom();
9746
9864
  const y = height - pageNumberBottom;
9747
9865
  ctx.save();
@@ -9926,6 +10044,8 @@ var TableBorder;
9926
10044
  TableBorder2["ALL"] = "all";
9927
10045
  TableBorder2["EMPTY"] = "empty";
9928
10046
  TableBorder2["EXTERNAL"] = "external";
10047
+ TableBorder2["INTERNAL"] = "internal";
10048
+ TableBorder2["DASH"] = "dash";
9929
10049
  })(TableBorder || (TableBorder = {}));
9930
10050
  var TdBorder;
9931
10051
  (function(TdBorder2) {
@@ -10048,9 +10168,13 @@ class TableParticle {
10048
10168
  const tableHeight = element.height * scale;
10049
10169
  const isEmptyBorderType = borderType === TableBorder.EMPTY;
10050
10170
  const isExternalBorderType = borderType === TableBorder.EXTERNAL;
10171
+ const isInternalBorderType = borderType === TableBorder.INTERNAL;
10051
10172
  ctx.save();
10173
+ if (borderType === TableBorder.DASH) {
10174
+ ctx.setLineDash([3, 3]);
10175
+ }
10052
10176
  ctx.lineWidth = scale;
10053
- if (!isEmptyBorderType) {
10177
+ if (!isEmptyBorderType && !isInternalBorderType) {
10054
10178
  this._drawOuterBorder({
10055
10179
  ctx,
10056
10180
  startX,
@@ -10097,9 +10221,14 @@ class TableParticle {
10097
10221
  ctx.stroke();
10098
10222
  }
10099
10223
  if (!isEmptyBorderType && !isExternalBorderType) {
10100
- ctx.moveTo(x, y);
10101
- ctx.lineTo(x, y + height);
10102
- ctx.lineTo(x - width, y + height);
10224
+ if (!isInternalBorderType || td.colIndex + td.colspan < colgroup.length) {
10225
+ ctx.moveTo(x, y);
10226
+ ctx.lineTo(x, y + height);
10227
+ }
10228
+ if (!isInternalBorderType || td.rowIndex + td.rowspan < trList.length) {
10229
+ ctx.moveTo(x, y + height);
10230
+ ctx.lineTo(x - width, y + height);
10231
+ }
10103
10232
  ctx.stroke();
10104
10233
  }
10105
10234
  ctx.translate(-0.5, -0.5);
@@ -10156,6 +10285,21 @@ class TableParticle {
10156
10285
  }
10157
10286
  return data2;
10158
10287
  }
10288
+ getTdListByRowIndex(trList, rowIndex) {
10289
+ const data2 = [];
10290
+ for (let r = 0; r < trList.length; r++) {
10291
+ const tdList = trList[r].tdList;
10292
+ for (let d = 0; d < tdList.length; d++) {
10293
+ const td = tdList[d];
10294
+ const min = td.rowIndex;
10295
+ const max = min + td.rowspan - 1;
10296
+ if (rowIndex >= min && rowIndex <= max) {
10297
+ data2.push(td);
10298
+ }
10299
+ }
10300
+ }
10301
+ return data2;
10302
+ }
10159
10303
  computeRowColInfo(element) {
10160
10304
  const { colgroup, trList } = element;
10161
10305
  if (!colgroup || !trList)
@@ -10295,6 +10439,7 @@ class TableTool {
10295
10439
  __publicField(this, "canvas");
10296
10440
  __publicField(this, "options");
10297
10441
  __publicField(this, "position");
10442
+ __publicField(this, "range");
10298
10443
  __publicField(this, "container");
10299
10444
  __publicField(this, "toolRowContainer");
10300
10445
  __publicField(this, "toolRowAddBtn");
@@ -10309,6 +10454,7 @@ class TableTool {
10309
10454
  this.canvas = draw.getPage();
10310
10455
  this.options = draw.getOptions();
10311
10456
  this.position = draw.getPosition();
10457
+ this.range = draw.getRange();
10312
10458
  this.container = draw.getContainer();
10313
10459
  this.toolRowContainer = null;
10314
10460
  this.toolRowAddBtn = null;
@@ -10379,6 +10525,25 @@ class TableTool {
10379
10525
  if (r === rowIndex) {
10380
10526
  rowItem.classList.add("active");
10381
10527
  }
10528
+ rowItem.onclick = () => {
10529
+ const tdList = this.draw.getTableParticle().getTdListByRowIndex(trList, r);
10530
+ const firstTd = tdList[0];
10531
+ const lastTd = tdList[tdList.length - 1];
10532
+ this.position.setPositionContext({
10533
+ index: index2,
10534
+ isTable: true,
10535
+ trIndex: firstTd.trIndex,
10536
+ tdIndex: firstTd.tdIndex,
10537
+ tableId: element.id
10538
+ });
10539
+ this.range.setRange(0, 0, element.id, firstTd.tdIndex, lastTd.tdIndex, firstTd.trIndex, lastTd.trIndex);
10540
+ this.draw.render({
10541
+ curIndex: 0,
10542
+ isCompute: false,
10543
+ isSubmitHistory: false
10544
+ });
10545
+ this._setAnchorActive(rowContainer, r);
10546
+ };
10382
10547
  const rowItemAnchor = document.createElement("div");
10383
10548
  rowItemAnchor.classList.add(`${EDITOR_PREFIX}-table-tool__anchor`);
10384
10549
  rowItemAnchor.onmousedown = (evt) => {
@@ -10408,7 +10573,8 @@ class TableTool {
10408
10573
  index: index2,
10409
10574
  isTable: true,
10410
10575
  trIndex: trList.length - 1,
10411
- tdIndex: 0
10576
+ tdIndex: 0,
10577
+ tableId: element.id
10412
10578
  });
10413
10579
  this.draw.getTableOperate().insertTableBottomRow();
10414
10580
  };
@@ -10425,6 +10591,25 @@ class TableTool {
10425
10591
  if (c === colIndex) {
10426
10592
  colItem.classList.add("active");
10427
10593
  }
10594
+ colItem.onclick = () => {
10595
+ const tdList = this.draw.getTableParticle().getTdListByColIndex(trList, c);
10596
+ const firstTd = tdList[0];
10597
+ const lastTd = tdList[tdList.length - 1];
10598
+ this.position.setPositionContext({
10599
+ index: index2,
10600
+ isTable: true,
10601
+ trIndex: firstTd.trIndex,
10602
+ tdIndex: firstTd.tdIndex,
10603
+ tableId: element.id
10604
+ });
10605
+ this.range.setRange(0, 0, element.id, firstTd.tdIndex, lastTd.tdIndex, firstTd.trIndex, lastTd.trIndex);
10606
+ this.draw.render({
10607
+ curIndex: 0,
10608
+ isCompute: false,
10609
+ isSubmitHistory: false
10610
+ });
10611
+ this._setAnchorActive(colContainer, c);
10612
+ };
10428
10613
  const colItemAnchor = document.createElement("div");
10429
10614
  colItemAnchor.classList.add(`${EDITOR_PREFIX}-table-tool__anchor`);
10430
10615
  colItemAnchor.onmousedown = (evt) => {
@@ -10454,7 +10639,8 @@ class TableTool {
10454
10639
  index: index2,
10455
10640
  isTable: true,
10456
10641
  trIndex: 0,
10457
- tdIndex: trList[0].tdList.length - 1 || 0
10642
+ tdIndex: trList[0].tdList.length - 1 || 0,
10643
+ tableId: element.id
10458
10644
  });
10459
10645
  this.draw.getTableOperate().insertTableRightCol();
10460
10646
  };
@@ -10505,6 +10691,17 @@ class TableTool {
10505
10691
  this.container.append(borderContainer);
10506
10692
  this.toolBorderContainer = borderContainer;
10507
10693
  }
10694
+ _setAnchorActive(container, index2) {
10695
+ const children = container.children;
10696
+ for (let c = 0; c < children.length; c++) {
10697
+ const child = children[c];
10698
+ if (c === index2) {
10699
+ child.classList.add("active");
10700
+ } else {
10701
+ child.classList.remove("active");
10702
+ }
10703
+ }
10704
+ }
10508
10705
  _mousedown(payload) {
10509
10706
  const { evt, index: index2, order, element } = payload;
10510
10707
  this.canvas = this.draw.getPage();
@@ -11096,7 +11293,8 @@ class SelectControl {
11096
11293
  __publicField(this, "isPopup");
11097
11294
  __publicField(this, "selectDom");
11098
11295
  __publicField(this, "options");
11099
- this.options = control.getDraw().getOptions();
11296
+ const draw = control.getDraw();
11297
+ this.options = draw.getOptions();
11100
11298
  this.element = element;
11101
11299
  this.control = control;
11102
11300
  this.isPopup = false;
@@ -11346,7 +11544,8 @@ class TextControl {
11346
11544
  __publicField(this, "element");
11347
11545
  __publicField(this, "control");
11348
11546
  __publicField(this, "options");
11349
- this.options = control.getDraw().getOptions();
11547
+ const draw = control.getDraw();
11548
+ this.options = draw.getOptions();
11350
11549
  this.element = element;
11351
11550
  this.control = control;
11352
11551
  }
@@ -12237,6 +12436,7 @@ class Control {
12237
12436
  __publicField(this, "options");
12238
12437
  __publicField(this, "controlOptions");
12239
12438
  __publicField(this, "activeControl");
12439
+ __publicField(this, "activeControlValue");
12240
12440
  this.controlBorder = new ControlBorder(draw);
12241
12441
  this.draw = draw;
12242
12442
  this.range = draw.getRange();
@@ -12246,6 +12446,7 @@ class Control {
12246
12446
  this.options = draw.getOptions();
12247
12447
  this.controlOptions = this.options.control;
12248
12448
  this.activeControl = null;
12449
+ this.activeControlValue = [];
12249
12450
  }
12250
12451
  setHighlightList(payload) {
12251
12452
  this.controlSearch.setHighlightList(payload);
@@ -12359,6 +12560,20 @@ class Control {
12359
12560
  }
12360
12561
  return !!((_b = (_a = this.activeControl.getElement()) == null ? void 0 : _a.control) == null ? void 0 : _b.disabled);
12361
12562
  }
12563
+ getIsDisabledPasteControl(context = {}) {
12564
+ var _a, _b;
12565
+ if (this.draw.isDesignMode() || !this.activeControl)
12566
+ return false;
12567
+ const { startIndex, endIndex } = context.range || this.range.getRange();
12568
+ if (startIndex === endIndex && ~startIndex && ~endIndex) {
12569
+ const elementList = context.elementList || this.getElementList();
12570
+ const startElement = elementList[startIndex];
12571
+ if (startElement.controlComponent === ControlComponent.POSTFIX) {
12572
+ return false;
12573
+ }
12574
+ }
12575
+ return !!((_b = (_a = this.activeControl.getElement()) == null ? void 0 : _a.control) == null ? void 0 : _b.pasteDisabled);
12576
+ }
12362
12577
  getContainer() {
12363
12578
  return this.draw.getContainer();
12364
12579
  }
@@ -12386,10 +12601,13 @@ class Control {
12386
12601
  getActiveControl() {
12387
12602
  return this.activeControl;
12388
12603
  }
12604
+ updateActiveControlValue() {
12605
+ if (this.activeControl) {
12606
+ this.activeControlValue = this.activeControl.getValue();
12607
+ }
12608
+ }
12389
12609
  initControl() {
12390
- const isReadonly = this.draw.isReadonly();
12391
- if (isReadonly)
12392
- return;
12610
+ var _a, _b;
12393
12611
  const elementList = this.getElementList();
12394
12612
  const range = this.getRange();
12395
12613
  const element = elementList[range.startIndex];
@@ -12402,10 +12620,15 @@ class Control {
12402
12620
  }
12403
12621
  }
12404
12622
  const controlElement = this.activeControl.getElement();
12405
- if (element.controlId === controlElement.controlId)
12623
+ if (element.controlId === controlElement.controlId) {
12624
+ this.updateActiveControlValue();
12406
12625
  return;
12626
+ }
12407
12627
  }
12408
12628
  this.destroyControl();
12629
+ const isReadonly = this.draw.isReadonly();
12630
+ if (isReadonly)
12631
+ return;
12409
12632
  const control = element.control;
12410
12633
  if (control.type === ControlType.TEXT) {
12411
12634
  this.activeControl = new TextControl(element, this);
@@ -12422,46 +12645,61 @@ class Control {
12422
12645
  this.activeControl = dateControl;
12423
12646
  dateControl.awake();
12424
12647
  }
12425
- nextTick(() => {
12426
- var _a;
12427
- const controlChangeListener = this.listener.controlChange;
12428
- const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
12429
- if (!controlChangeListener && !isSubscribeControlChange)
12430
- return;
12431
- let payload;
12432
- const value = (_a = this.activeControl) == null ? void 0 : _a.getValue();
12433
- if (value && value.length) {
12434
- payload = zipElementList(value)[0].control;
12648
+ this.updateActiveControlValue();
12649
+ const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
12650
+ if (this.listener.controlChange || isSubscribeControlChange) {
12651
+ let control2;
12652
+ const value = this.activeControlValue;
12653
+ if (value == null ? void 0 : value.length) {
12654
+ control2 = zipElementList(value)[0].control;
12435
12655
  } else {
12436
- payload = pickElementAttr(deepClone(element)).control;
12437
- }
12438
- if (controlChangeListener) {
12439
- controlChangeListener(payload);
12656
+ control2 = pickElementAttr(deepClone(element)).control;
12657
+ control2.value = [];
12440
12658
  }
12659
+ const payload = {
12660
+ control: control2,
12661
+ controlId: element.controlId,
12662
+ state: ControlState.ACTIVE
12663
+ };
12664
+ (_b = (_a = this.listener).controlChange) == null ? void 0 : _b.call(_a, payload);
12441
12665
  if (isSubscribeControlChange) {
12442
12666
  this.eventBus.emit("controlChange", payload);
12443
12667
  }
12444
- });
12668
+ }
12445
12669
  }
12446
- destroyControl() {
12447
- if (this.activeControl) {
12448
- if (this.activeControl instanceof SelectControl || this.activeControl instanceof DateControl) {
12449
- this.activeControl.destroy();
12450
- }
12451
- this.activeControl = null;
12452
- nextTick(() => {
12453
- const controlChangeListener = this.listener.controlChange;
12454
- const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
12455
- if (!controlChangeListener && !isSubscribeControlChange)
12456
- return;
12457
- if (controlChangeListener) {
12458
- controlChangeListener(null);
12670
+ destroyControl(options = {}) {
12671
+ var _a, _b;
12672
+ if (!this.activeControl)
12673
+ return;
12674
+ const { isEmitEvent = true } = options;
12675
+ if (this.activeControl instanceof SelectControl || this.activeControl instanceof DateControl) {
12676
+ this.activeControl.destroy();
12677
+ }
12678
+ if (isEmitEvent) {
12679
+ const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
12680
+ if (this.listener.controlChange || isSubscribeControlChange) {
12681
+ let control;
12682
+ const value = this.activeControlValue;
12683
+ const activeElement = this.activeControl.getElement();
12684
+ if (value == null ? void 0 : value.length) {
12685
+ control = zipElementList(value)[0].control;
12686
+ } else {
12687
+ control = pickElementAttr(deepClone(activeElement)).control;
12688
+ control.value = [];
12459
12689
  }
12690
+ const payload = {
12691
+ control,
12692
+ controlId: activeElement.controlId,
12693
+ state: ControlState.INACTIVE
12694
+ };
12695
+ (_b = (_a = this.listener).controlChange) == null ? void 0 : _b.call(_a, payload);
12460
12696
  if (isSubscribeControlChange) {
12461
- this.eventBus.emit("controlChange", null);
12697
+ this.eventBus.emit("controlChange", payload);
12462
12698
  }
12463
- });
12699
+ }
12464
12700
  }
12701
+ this.activeControl = null;
12702
+ this.activeControlValue = [];
12465
12703
  }
12466
12704
  repaintControl(options = {}) {
12467
12705
  const { curIndex, isCompute = true, isSubmitHistory = true, isSetCursor = true } = options;
@@ -12624,7 +12862,7 @@ class Control {
12624
12862
  for (let p = 0; p < placeholderStrList.length; p++) {
12625
12863
  const value = placeholderStrList[p];
12626
12864
  const newElement = __spreadProps(__spreadValues({}, anchorElementStyleAttr), {
12627
- value,
12865
+ value: value === "\n" ? ZERO : value,
12628
12866
  controlId: startElement.controlId,
12629
12867
  type: ElementType.CONTROL,
12630
12868
  control: startElement.control,
@@ -12656,7 +12894,7 @@ class Control {
12656
12894
  return this.activeControl.cut();
12657
12895
  }
12658
12896
  getValueById(payload) {
12659
- const { id, conceptId } = payload;
12897
+ const { id, conceptId, areaId } = payload;
12660
12898
  const result = [];
12661
12899
  if (!id && !conceptId)
12662
12900
  return result;
@@ -12675,7 +12913,7 @@ class Control {
12675
12913
  }
12676
12914
  }
12677
12915
  }
12678
- if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) {
12916
+ if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId || areaId && element.areaId !== areaId) {
12679
12917
  continue;
12680
12918
  }
12681
12919
  const { type, code, valueSets } = element.control;
@@ -12734,7 +12972,7 @@ class Control {
12734
12972
  }
12735
12973
  setValueById(payload) {
12736
12974
  let isExistSet = false;
12737
- const { id, conceptId, value } = payload;
12975
+ const { id, conceptId, areaId, value } = payload;
12738
12976
  if (!id && !conceptId)
12739
12977
  return;
12740
12978
  const setValue = (elementList) => {
@@ -12752,7 +12990,7 @@ class Control {
12752
12990
  }
12753
12991
  }
12754
12992
  }
12755
- if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) {
12993
+ if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId || areaId && element.areaId !== areaId) {
12756
12994
  continue;
12757
12995
  }
12758
12996
  isExistSet = true;
@@ -12834,7 +13072,9 @@ class Control {
12834
13072
  i = newEndIndex;
12835
13073
  }
12836
13074
  };
12837
- this.destroyControl();
13075
+ this.destroyControl({
13076
+ isEmitEvent: false
13077
+ });
12838
13078
  const data2 = [
12839
13079
  this.draw.getHeaderElementList(),
12840
13080
  this.draw.getOriginalMainElementList(),
@@ -12850,7 +13090,7 @@ class Control {
12850
13090
  }
12851
13091
  }
12852
13092
  setExtensionById(payload) {
12853
- const { id, conceptId, extension } = payload;
13093
+ const { id, conceptId, areaId, extension } = payload;
12854
13094
  if (!id && !conceptId)
12855
13095
  return;
12856
13096
  const setExtension = (elementList) => {
@@ -12868,7 +13108,7 @@ class Control {
12868
13108
  }
12869
13109
  }
12870
13110
  }
12871
- if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) {
13111
+ if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId || areaId && element.areaId !== areaId) {
12872
13112
  continue;
12873
13113
  }
12874
13114
  element.control.extension = extension;
@@ -12892,7 +13132,7 @@ class Control {
12892
13132
  }
12893
13133
  }
12894
13134
  setPropertiesById(payload) {
12895
- const { id, conceptId, properties } = payload;
13135
+ const { id, conceptId, areaId, properties } = payload;
12896
13136
  if (!id && !conceptId)
12897
13137
  return;
12898
13138
  let isExistUpdate = false;
@@ -12911,7 +13151,7 @@ class Control {
12911
13151
  }
12912
13152
  }
12913
13153
  }
12914
- if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) {
13154
+ if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId || areaId && element.areaId !== areaId) {
12915
13155
  continue;
12916
13156
  }
12917
13157
  isExistUpdate = true;
@@ -12947,7 +13187,9 @@ class Control {
12947
13187
  return;
12948
13188
  for (const key in pageComponentData) {
12949
13189
  const pageComponentKey = key;
12950
- const elementList = zipElementList(pageComponentData[pageComponentKey]);
13190
+ const elementList = zipElementList(pageComponentData[pageComponentKey], {
13191
+ isClassifyArea: true
13192
+ });
12951
13193
  pageComponentData[pageComponentKey] = elementList;
12952
13194
  formatElementList(elementList, {
12953
13195
  editorOptions: this.options,
@@ -13429,7 +13671,7 @@ function WorkerWrapper$2() {
13429
13671
  objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
13430
13672
  }
13431
13673
  }
13432
- const encodedJs$1 = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBsOyhmdW5jdGlvbih0KXt0LlRFWFQ9InRleHQiLHQuSU1BR0U9ImltYWdlIix0LlRBQkxFPSJ0YWJsZSIsdC5IWVBFUkxJTks9Imh5cGVybGluayIsdC5TVVBFUlNDUklQVD0ic3VwZXJzY3JpcHQiLHQuU1VCU0NSSVBUPSJzdWJzY3JpcHQiLHQuU0VQQVJBVE9SPSJzZXBhcmF0b3IiLHQuUEFHRV9CUkVBSz0icGFnZUJyZWFrIix0LkNPTlRST0w9ImNvbnRyb2wiLHQuQ0hFQ0tCT1g9ImNoZWNrYm94Iix0LlJBRElPPSJyYWRpbyIsdC5MQVRFWD0ibGF0ZXgiLHQuVEFCPSJ0YWIiLHQuREFURT0iZGF0ZSIsdC5CTE9DSz0iYmxvY2siLHQuVElUTEU9InRpdGxlIix0LkxJU1Q9Imxpc3QifSkobHx8KGw9e30pKTt2YXIgYTsoZnVuY3Rpb24odCl7dC5GSVJTVD0iZmlyc3QiLHQuU0VDT05EPSJzZWNvbmQiLHQuVEhJUkQ9InRoaXJkIix0LkZPVVJUSD0iZm91cnRoIix0LkZJRlRIPSJmaWZ0aCIsdC5TSVhUSD0ic2l4dGgifSkoYXx8KGE9e30pKTtjb25zdCBnPXtbYS5GSVJTVF06MSxbYS5TRUNPTkRdOjIsW2EuVEhJUkRdOjMsW2EuRk9VUlRIXTo0LFthLkZJRlRIXTo1LFthLlNJWFRIXTo2fSxMPVtsLlRFWFQsbC5IWVBFUkxJTkssbC5TVUJTQ1JJUFQsbC5TVVBFUlNDUklQVCxsLkNPTlRST0wsbC5EQVRFXSxUPSJcdTIwMEIiO2Z1bmN0aW9uIGQodCl7cmV0dXJuIXQudHlwZXx8TC5pbmNsdWRlcyh0LnR5cGUpfWZ1bmN0aW9uIGYodCl7Y29uc3R7ZWxlbWVudExpc3Q6bixwb3NpdGlvbkxpc3Q6dn09dCxJPVtdO2xldCBpPTA7Zm9yKDtpPG4ubGVuZ3RoOyl7Y29uc3Qgcz1uW2ldO2lmKHMudGl0bGVJZCl7Y29uc3QgZT1zLnRpdGxlSWQsbz1zLmxldmVsLGM9e3R5cGU6bC5USVRMRSx2YWx1ZToiIixsZXZlbDpvLHRpdGxlSWQ6ZSxwYWdlTm86dltpXS5wYWdlTm99LHI9W107Zm9yKDtpPG4ubGVuZ3RoOyl7Y29uc3QgdT1uW2ldO2lmKGUhPT11LnRpdGxlSWQpe2ktLTticmVha31yLnB1c2godSksaSsrfWMudmFsdWU9ci5maWx0ZXIodT0+ZCh1KSkubWFwKHU9PnUudmFsdWUpLmpvaW4oIiIpLnJlcGxhY2UobmV3IFJlZ0V4cChULCJnIiksIiIpLEkucHVzaChjKX1pKyt9aWYoIUkubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGg9KHMsZSk9Pntjb25zdCBvPWUuc3ViQ2F0YWxvZ1tlLnN1YkNhdGFsb2cubGVuZ3RoLTFdLGM9Z1tvPT1udWxsP3ZvaWQgMDpvLmxldmVsXSxyPWdbcy5sZXZlbF07byYmcj5jP2gocyxvKTplLnN1YkNhdGFsb2cucHVzaCh7aWQ6cy50aXRsZUlkLG5hbWU6cy52YWx1ZSxsZXZlbDpzLmxldmVsLHBhZ2VObzpzLnBhZ2VObyxzdWJDYXRhbG9nOltdfSl9LFI9W107Zm9yKGxldCBzPTA7czxJLmxlbmd0aDtzKyspe2NvbnN0IGU9SVtzXSxvPVJbUi5sZW5ndGgtMV0sYz1nW289PW51bGw/dm9pZCAwOm8ubGV2ZWxdLHI9Z1tlLmxldmVsXTtvJiZyPmM/aChlLG8pOlIucHVzaCh7aWQ6ZS50aXRsZUlkLG5hbWU6ZS52YWx1ZSxsZXZlbDplLmxldmVsLHBhZ2VObzplLnBhZ2VObyxzdWJDYXRhbG9nOltdfSl9cmV0dXJuIFJ9b25tZXNzYWdlPXQ9Pntjb25zdCBuPXQuZGF0YSx2PWYobik7cG9zdE1lc3NhZ2Uodil9fSkoKTt9KSgpOwo=";
13674
+ const encodedJs$1 = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhOyhmdW5jdGlvbih0KXt0LlRFWFQ9InRleHQiLHQuSU1BR0U9ImltYWdlIix0LlRBQkxFPSJ0YWJsZSIsdC5IWVBFUkxJTks9Imh5cGVybGluayIsdC5TVVBFUlNDUklQVD0ic3VwZXJzY3JpcHQiLHQuU1VCU0NSSVBUPSJzdWJzY3JpcHQiLHQuU0VQQVJBVE9SPSJzZXBhcmF0b3IiLHQuUEFHRV9CUkVBSz0icGFnZUJyZWFrIix0LkNPTlRST0w9ImNvbnRyb2wiLHQuQ0hFQ0tCT1g9ImNoZWNrYm94Iix0LlJBRElPPSJyYWRpbyIsdC5MQVRFWD0ibGF0ZXgiLHQuVEFCPSJ0YWIiLHQuREFURT0iZGF0ZSIsdC5CTE9DSz0iYmxvY2siLHQuVElUTEU9InRpdGxlIix0LkFSRUE9ImFyZWEiLHQuTElTVD0ibGlzdCJ9KShhfHwoYT17fSkpO3ZhciBsOyhmdW5jdGlvbih0KXt0LkZJUlNUPSJmaXJzdCIsdC5TRUNPTkQ9InNlY29uZCIsdC5USElSRD0idGhpcmQiLHQuRk9VUlRIPSJmb3VydGgiLHQuRklGVEg9ImZpZnRoIix0LlNJWFRIPSJzaXh0aCJ9KShsfHwobD17fSkpO2NvbnN0IGc9e1tsLkZJUlNUXToxLFtsLlNFQ09ORF06MixbbC5USElSRF06MyxbbC5GT1VSVEhdOjQsW2wuRklGVEhdOjUsW2wuU0lYVEhdOjZ9LEw9W2EuVEVYVCxhLkhZUEVSTElOSyxhLlNVQlNDUklQVCxhLlNVUEVSU0NSSVBULGEuQ09OVFJPTCxhLkRBVEVdLGQ9Ilx1MjAwQiI7ZnVuY3Rpb24gZih0KXtyZXR1cm4hdC50eXBlfHxMLmluY2x1ZGVzKHQudHlwZSl9ZnVuY3Rpb24gQyh0KXtjb25zdHtlbGVtZW50TGlzdDpuLHBvc2l0aW9uTGlzdDp2fT10LEk9W107bGV0IGk9MDtmb3IoO2k8bi5sZW5ndGg7KXtjb25zdCBzPW5baV07aWYocy50aXRsZUlkKXtjb25zdCBvPXMudGl0bGVJZCxlPXMubGV2ZWwsYz17dHlwZTphLlRJVExFLHZhbHVlOiIiLGxldmVsOmUsdGl0bGVJZDpvLHBhZ2VObzp2W2ldLnBhZ2VOb30scj1bXTtmb3IoO2k8bi5sZW5ndGg7KXtjb25zdCB1PW5baV07aWYobyE9PXUudGl0bGVJZCl7aS0tO2JyZWFrfXIucHVzaCh1KSxpKyt9Yy52YWx1ZT1yLmZpbHRlcih1PT5mKHUpKS5tYXAodT0+dS52YWx1ZSkuam9pbigiIikucmVwbGFjZShuZXcgUmVnRXhwKGQsImciKSwiIiksSS5wdXNoKGMpfWkrK31pZighSS5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgaD0ocyxvKT0+e2NvbnN0IGU9by5zdWJDYXRhbG9nW28uc3ViQ2F0YWxvZy5sZW5ndGgtMV0sYz1nW2U9PW51bGw/dm9pZCAwOmUubGV2ZWxdLHI9Z1tzLmxldmVsXTtlJiZyPmM/aChzLGUpOm8uc3ViQ2F0YWxvZy5wdXNoKHtpZDpzLnRpdGxlSWQsbmFtZTpzLnZhbHVlLGxldmVsOnMubGV2ZWwscGFnZU5vOnMucGFnZU5vLHN1YkNhdGFsb2c6W119KX0sUj1bXTtmb3IobGV0IHM9MDtzPEkubGVuZ3RoO3MrKyl7Y29uc3Qgbz1JW3NdLGU9UltSLmxlbmd0aC0xXSxjPWdbZT09bnVsbD92b2lkIDA6ZS5sZXZlbF0scj1nW28ubGV2ZWxdO2UmJnI+Yz9oKG8sZSk6Ui5wdXNoKHtpZDpvLnRpdGxlSWQsbmFtZTpvLnZhbHVlLGxldmVsOm8ubGV2ZWwscGFnZU5vOm8ucGFnZU5vLHN1YkNhdGFsb2c6W119KX1yZXR1cm4gUn1vbm1lc3NhZ2U9dD0+e2NvbnN0IG49dC5kYXRhLHY9QyhuKTtwb3N0TWVzc2FnZSh2KX19KSgpO30pKCk7Cg==";
13433
13675
  const blob$1 = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs$1)], { type: "text/javascript;charset=utf-8" });
13434
13676
  function WorkerWrapper$1() {
13435
13677
  const objURL = blob$1 && (window.URL || window.webkitURL).createObjectURL(blob$1);
@@ -13830,6 +14072,7 @@ class Previewer {
13830
14072
  }
13831
14073
  _updateResizerRect(width, height) {
13832
14074
  const { resizerSize: handleSize, scale } = this.options;
14075
+ const isReadonly = this.draw.isReadonly();
13833
14076
  this.resizerSelection.style.width = `${width}px`;
13834
14077
  this.resizerSelection.style.height = `${height}px`;
13835
14078
  for (let i = 0; i < 8; i++) {
@@ -13838,6 +14081,7 @@ class Previewer {
13838
14081
  this.resizerHandleList[i].style.transform = `scale(${scale})`;
13839
14082
  this.resizerHandleList[i].style.left = `${left2}px`;
13840
14083
  this.resizerHandleList[i].style.top = `${top}px`;
14084
+ this.resizerHandleList[i].style.display = isReadonly ? "none" : "block";
13841
14085
  }
13842
14086
  }
13843
14087
  _updateResizerSizeView(width, height) {
@@ -14168,7 +14412,9 @@ const contextmenu$1 = {
14168
14412
  border: "\u8868\u683C\u8FB9\u6846",
14169
14413
  borderAll: "\u6240\u6709\u6846\u7EBF",
14170
14414
  borderEmpty: "\u65E0\u6846\u7EBF",
14415
+ borderDash: "\u865A\u6846\u7EBF",
14171
14416
  borderExternal: "\u5916\u4FA7\u6846\u7EBF",
14417
+ borderInternal: "\u5185\u4FA7\u6846\u7EBF",
14172
14418
  borderTd: "\u5355\u5143\u683C\u8FB9\u6846",
14173
14419
  borderTdTop: "\u4E0A\u8FB9\u6846",
14174
14420
  borderTdRight: "\u53F3\u8FB9\u6846",
@@ -14263,7 +14509,9 @@ const contextmenu = {
14263
14509
  border: "Table border",
14264
14510
  borderAll: "All",
14265
14511
  borderEmpty: "Empty",
14512
+ borderDash: "Dash",
14266
14513
  borderExternal: "External",
14514
+ borderInternal: "Internal",
14267
14515
  borderTd: "Table cell border",
14268
14516
  borderTdTop: "Top",
14269
14517
  borderTdRight: "Right",
@@ -15444,6 +15692,24 @@ class TableOperate {
15444
15692
  this.range.setRange(0, 0);
15445
15693
  this.draw.render({ curIndex: 0 });
15446
15694
  }
15695
+ adjustColWidth(element) {
15696
+ if (element.type !== ElementType.TABLE)
15697
+ return;
15698
+ const { defaultColMinWidth } = this.options.table;
15699
+ const colgroup = element.colgroup;
15700
+ const colgroupWidth = colgroup.reduce((pre, cur) => pre + cur.width, 0);
15701
+ const width = this.draw.getOriginalInnerWidth();
15702
+ if (colgroupWidth > width) {
15703
+ const greaterMinWidthCol = colgroup.filter((col) => col.width > defaultColMinWidth);
15704
+ const adjustWidth = (colgroupWidth - width) / greaterMinWidthCol.length;
15705
+ for (let g = 0; g < colgroup.length; g++) {
15706
+ const group2 = colgroup[g];
15707
+ if (group2.width - adjustWidth >= defaultColMinWidth) {
15708
+ group2.width -= adjustWidth;
15709
+ }
15710
+ }
15711
+ }
15712
+ }
15447
15713
  insertTableLeftCol() {
15448
15714
  const positionContext = this.position.getPositionContext();
15449
15715
  if (!positionContext.isTable)
@@ -15471,19 +15737,12 @@ class TableOperate {
15471
15737
  ]
15472
15738
  });
15473
15739
  }
15740
+ const { defaultColMinWidth } = this.options.table;
15474
15741
  const colgroup = element.colgroup;
15475
15742
  colgroup.splice(curTdIndex, 0, {
15476
- width: this.options.table.defaultColMinWidth
15743
+ width: defaultColMinWidth
15477
15744
  });
15478
- const colgroupWidth = colgroup.reduce((pre, cur) => pre + cur.width, 0);
15479
- const width = this.draw.getOriginalInnerWidth();
15480
- if (colgroupWidth > width) {
15481
- const adjustWidth = (colgroupWidth - width) / colgroup.length;
15482
- for (let g = 0; g < colgroup.length; g++) {
15483
- const group2 = colgroup[g];
15484
- group2.width -= adjustWidth;
15485
- }
15486
- }
15745
+ this.adjustColWidth(element);
15487
15746
  this.position.setPositionContext({
15488
15747
  isTable: true,
15489
15748
  index: index2,
@@ -15524,19 +15783,12 @@ class TableOperate {
15524
15783
  ]
15525
15784
  });
15526
15785
  }
15786
+ const { defaultColMinWidth } = this.options.table;
15527
15787
  const colgroup = element.colgroup;
15528
15788
  colgroup.splice(curTdIndex, 0, {
15529
- width: this.options.table.defaultColMinWidth
15789
+ width: defaultColMinWidth
15530
15790
  });
15531
- const colgroupWidth = colgroup.reduce((pre, cur) => pre + cur.width, 0);
15532
- const width = this.draw.getOriginalInnerWidth();
15533
- if (colgroupWidth > width) {
15534
- const adjustWidth = (colgroupWidth - width) / colgroup.length;
15535
- for (let g = 0; g < colgroup.length; g++) {
15536
- const group2 = colgroup[g];
15537
- group2.width -= adjustWidth;
15538
- }
15539
- }
15791
+ this.adjustColWidth(element);
15540
15792
  this.position.setPositionContext({
15541
15793
  isTable: true,
15542
15794
  index: index2,
@@ -15959,6 +16211,175 @@ class TableOperate {
15959
16211
  });
15960
16212
  }
15961
16213
  }
16214
+ var AreaMode;
16215
+ (function(AreaMode2) {
16216
+ AreaMode2["EDIT"] = "edit";
16217
+ AreaMode2["READONLY"] = "readonly";
16218
+ AreaMode2["FORM"] = "form";
16219
+ })(AreaMode || (AreaMode = {}));
16220
+ class Area {
16221
+ constructor(draw) {
16222
+ __publicField(this, "draw");
16223
+ __publicField(this, "zone");
16224
+ __publicField(this, "range");
16225
+ __publicField(this, "position");
16226
+ __publicField(this, "areaInfoMap", new Map());
16227
+ this.draw = draw;
16228
+ this.zone = draw.getZone();
16229
+ this.range = draw.getRange();
16230
+ this.position = draw.getPosition();
16231
+ }
16232
+ getActiveAreaId() {
16233
+ if (!this.areaInfoMap.size)
16234
+ return null;
16235
+ const { startIndex } = this.range.getRange();
16236
+ const elementList = this.draw.getElementList();
16237
+ const element = elementList[startIndex];
16238
+ return (element == null ? void 0 : element.areaId) || null;
16239
+ }
16240
+ getActiveAreaInfo() {
16241
+ const activeAreaId = this.getActiveAreaId();
16242
+ if (!activeAreaId)
16243
+ return null;
16244
+ return this.areaInfoMap.get(activeAreaId) || null;
16245
+ }
16246
+ isReadonly() {
16247
+ const activeAreaInfo = this.getActiveAreaInfo();
16248
+ if (!activeAreaInfo)
16249
+ return false;
16250
+ switch (activeAreaInfo.area.mode) {
16251
+ case AreaMode.EDIT:
16252
+ return false;
16253
+ case AreaMode.READONLY:
16254
+ return true;
16255
+ case AreaMode.FORM:
16256
+ return !this.draw.getControl().getIsRangeWithinControl();
16257
+ default:
16258
+ return false;
16259
+ }
16260
+ }
16261
+ insertArea(payload) {
16262
+ if (this.zone.getZone() !== EditorZone.MAIN) {
16263
+ this.zone.setZone(EditorZone.MAIN);
16264
+ }
16265
+ this.draw.getPosition().setPositionContext({
16266
+ isTable: false
16267
+ });
16268
+ const { id, value, area, position } = payload;
16269
+ if (position === LocationPosition.BEFORE) {
16270
+ this.range.setRange(0, 0);
16271
+ } else {
16272
+ const elementList = this.draw.getOriginalMainElementList();
16273
+ const lastIndex = elementList.length - 1;
16274
+ this.range.setRange(lastIndex, lastIndex);
16275
+ }
16276
+ const areaId = id || getUUID();
16277
+ this.draw.insertElementList([
16278
+ {
16279
+ type: ElementType.AREA,
16280
+ value: "",
16281
+ areaId,
16282
+ valueList: value,
16283
+ area: deepClone(area)
16284
+ }
16285
+ ]);
16286
+ return areaId;
16287
+ }
16288
+ render(ctx, pageNo) {
16289
+ if (!this.areaInfoMap.size)
16290
+ return;
16291
+ ctx.save();
16292
+ const margins = this.draw.getMargins();
16293
+ const width = this.draw.getInnerWidth();
16294
+ for (const areaInfoItem of this.areaInfoMap) {
16295
+ const { area, positionList } = areaInfoItem[1];
16296
+ if (!area.backgroundColor && !area.borderColor)
16297
+ continue;
16298
+ const pagePositionList = positionList.filter((p) => p.pageNo === pageNo);
16299
+ if (!pagePositionList.length)
16300
+ continue;
16301
+ ctx.translate(0.5, 0.5);
16302
+ const firstPosition = pagePositionList[0];
16303
+ const lastPosition = pagePositionList[pagePositionList.length - 1];
16304
+ const x = margins[3];
16305
+ const y = Math.ceil(firstPosition.coordinate.leftTop[1]);
16306
+ const height = Math.ceil(lastPosition.coordinate.rightBottom[1] - y);
16307
+ if (area.backgroundColor) {
16308
+ ctx.fillStyle = area.backgroundColor;
16309
+ ctx.fillRect(x, y, width, height);
16310
+ }
16311
+ if (area.borderColor) {
16312
+ ctx.strokeStyle = area.borderColor;
16313
+ ctx.strokeRect(x, y, width, height);
16314
+ }
16315
+ }
16316
+ ctx.restore();
16317
+ }
16318
+ compute() {
16319
+ this.areaInfoMap.clear();
16320
+ const elementList = this.draw.getOriginalMainElementList();
16321
+ const positionList = this.position.getOriginalMainPositionList();
16322
+ for (let e = 0; e < elementList.length; e++) {
16323
+ const element = elementList[e];
16324
+ const areaId = element.areaId;
16325
+ if (areaId) {
16326
+ const areaInfo = this.areaInfoMap.get(areaId);
16327
+ if (!areaInfo) {
16328
+ this.areaInfoMap.set(areaId, {
16329
+ id: areaId,
16330
+ area: element.area,
16331
+ elementList: [element],
16332
+ positionList: [positionList[e]]
16333
+ });
16334
+ } else {
16335
+ areaInfo.elementList.push(element);
16336
+ areaInfo.positionList.push(positionList[e]);
16337
+ }
16338
+ }
16339
+ }
16340
+ }
16341
+ getAreaValue(options = {}) {
16342
+ const areaId = options.id || this.getActiveAreaId();
16343
+ if (!areaId)
16344
+ return null;
16345
+ const areaInfo = this.areaInfoMap.get(areaId);
16346
+ if (!areaInfo)
16347
+ return null;
16348
+ return {
16349
+ area: areaInfo.area,
16350
+ id: areaInfo.id,
16351
+ startPageNo: areaInfo.positionList[0].pageNo,
16352
+ endPageNo: areaInfo.positionList[areaInfo.positionList.length - 1].pageNo,
16353
+ value: zipElementList(areaInfo.elementList)
16354
+ };
16355
+ }
16356
+ setAreaProperties(payload) {
16357
+ const areaId = payload.id || this.getActiveAreaId();
16358
+ if (!areaId)
16359
+ return;
16360
+ const areaInfo = this.areaInfoMap.get(areaId);
16361
+ if (!areaInfo)
16362
+ return;
16363
+ let isCompute = false;
16364
+ if (payload.properties.mode) {
16365
+ areaInfo.area.mode = payload.properties.mode;
16366
+ }
16367
+ if (payload.properties.borderColor) {
16368
+ areaInfo.area.borderColor = payload.properties.borderColor;
16369
+ }
16370
+ if (payload.properties.backgroundColor) {
16371
+ areaInfo.area.backgroundColor = payload.properties.backgroundColor;
16372
+ }
16373
+ if (!isNonValue(payload.properties.top)) {
16374
+ isCompute = true;
16375
+ areaInfo.area.top = payload.properties.top;
16376
+ }
16377
+ this.draw.render({
16378
+ isCompute,
16379
+ isSetCursor: false
16380
+ });
16381
+ }
16382
+ }
15962
16383
  class Draw {
15963
16384
  constructor(rootContainer, options, data2, listener, eventBus, override) {
15964
16385
  __publicField(this, "container");
@@ -15984,6 +16405,7 @@ class Draw {
15984
16405
  __publicField(this, "background");
15985
16406
  __publicField(this, "search");
15986
16407
  __publicField(this, "group");
16408
+ __publicField(this, "area");
15987
16409
  __publicField(this, "underline");
15988
16410
  __publicField(this, "strikeout");
15989
16411
  __publicField(this, "highlight");
@@ -16051,6 +16473,7 @@ class Draw {
16051
16473
  this.background = new Background(this);
16052
16474
  this.search = new Search(this);
16053
16475
  this.group = new Group(this);
16476
+ this.area = new Area(this);
16054
16477
  this.underline = new Underline(this);
16055
16478
  this.strikeout = new Strikeout(this);
16056
16479
  this.highlight = new Highlight(this);
@@ -16144,6 +16567,9 @@ class Draw {
16144
16567
  });
16145
16568
  }
16146
16569
  isReadonly() {
16570
+ if (this.area.getActiveAreaId()) {
16571
+ return this.area.isReadonly();
16572
+ }
16147
16573
  switch (this.mode) {
16148
16574
  case EditorMode.DESIGN:
16149
16575
  return false;
@@ -16337,6 +16763,9 @@ class Draw {
16337
16763
  getGroup() {
16338
16764
  return this.group;
16339
16765
  }
16766
+ getArea() {
16767
+ return this.area;
16768
+ }
16340
16769
  getHistoryManager() {
16341
16770
  return this.historyManager;
16342
16771
  }
@@ -16763,7 +17192,8 @@ class Draw {
16763
17192
  extraPickAttrs
16764
17193
  }),
16765
17194
  main: zipElementList(mainElementList, {
16766
- extraPickAttrs
17195
+ extraPickAttrs,
17196
+ isClassifyArea: true
16767
17197
  }),
16768
17198
  footer: zipElementList(this.getFooterElementList(), {
16769
17199
  extraPickAttrs
@@ -16875,7 +17305,7 @@ class Draw {
16875
17305
  return defaultBasicRowMarginHeight * ((_a = el.rowMargin) != null ? _a : defaultRowMargin) * scale;
16876
17306
  }
16877
17307
  computeRowList(payload) {
16878
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
17308
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
16879
17309
  const { innerWidth, elementList, isPagingMode = false, isFromTable = false, startX = 0, startY = 0, pageHeight = 0, mainOuterHeight = 0, surroundElementList = [] } = payload;
16880
17310
  const { defaultSize, defaultRowMargin, scale, table: { tdPadding }, defaultTabWidth } = this.options;
16881
17311
  const defaultBasicRowMarginHeight = this.getDefaultBasicRowMarginHeight();
@@ -16912,7 +17342,9 @@ class Draw {
16912
17342
  };
16913
17343
  const offsetX = curRow.offsetX || element.listId && listStyleMap.get(element.listId) || 0;
16914
17344
  const availableWidth = innerWidth - offsetX;
16915
- x += curRow.elementList.length === 1 ? offsetX : 0;
17345
+ const isStartElement = curRow.elementList.length === 1;
17346
+ x += isStartElement ? offsetX : 0;
17347
+ y += isStartElement ? curRow.offsetY || 0 : 0;
16916
17348
  if (element.type === ElementType.IMAGE || element.type === ElementType.LATEX) {
16917
17349
  if (element.imgDisplay === ImageDisplay.SURROUND || element.imgDisplay === ImageDisplay.FLOAT_TOP || element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) {
16918
17350
  metrics.width = 0;
@@ -17037,14 +17469,16 @@ class Draw {
17037
17469
  let curPagePreHeight = marginHeight;
17038
17470
  for (let r = 0; r < rowList.length; r++) {
17039
17471
  const row = rowList[r];
17040
- if (row.height + curPagePreHeight > height2 || ((_f = rowList[r - 1]) == null ? void 0 : _f.isPageBreak)) {
17041
- curPagePreHeight = marginHeight + row.height;
17472
+ const rowOffsetY = row.offsetY || 0;
17473
+ if (row.height + curPagePreHeight + rowOffsetY > height2 || ((_f = rowList[r - 1]) == null ? void 0 : _f.isPageBreak)) {
17474
+ curPagePreHeight = marginHeight + row.height + rowOffsetY;
17042
17475
  } else {
17043
- curPagePreHeight += row.height;
17476
+ curPagePreHeight += row.height + rowOffsetY;
17044
17477
  }
17045
17478
  }
17046
17479
  const rowMarginHeight = rowMargin * 2 * scale;
17047
- if (curPagePreHeight + element.trList[0].height + rowMarginHeight > height2 || element.pagingIndex !== 0 && element.trList[0].pagingRepeat) {
17480
+ const firstTrHeight = element.trList[0].height * scale;
17481
+ if (curPagePreHeight + firstTrHeight + rowMarginHeight > height2 || element.pagingIndex !== 0 && element.trList[0].pagingRepeat) {
17048
17482
  curPagePreHeight = marginHeight;
17049
17483
  }
17050
17484
  if (curPagePreHeight + rowMarginHeight + elementHeight > height2) {
@@ -17072,11 +17506,12 @@ class Draw {
17072
17506
  if (deleteCount) {
17073
17507
  const cloneTrList = trList2.splice(deleteStart, deleteCount);
17074
17508
  const cloneTrHeight = cloneTrList.reduce((pre, cur) => pre + cur.height, 0);
17509
+ const cloneTrRealHeight = cloneTrHeight * scale;
17075
17510
  const pagingId = element.pagingId || getUUID();
17076
17511
  element.pagingId = pagingId;
17077
17512
  element.height -= cloneTrHeight;
17078
- metrics.height -= cloneTrHeight;
17079
- metrics.boundingBoxDescent -= cloneTrHeight;
17513
+ metrics.height -= cloneTrRealHeight;
17514
+ metrics.boundingBoxDescent -= cloneTrRealHeight;
17080
17515
  const cloneElement = deepClone(element);
17081
17516
  cloneElement.pagingId = pagingId;
17082
17517
  cloneElement.pagingIndex = element.pagingIndex + 1;
@@ -17238,7 +17673,7 @@ class Draw {
17238
17673
  x = surroundPosition.x;
17239
17674
  curRowWidth += surroundPosition.rowIncreaseWidth;
17240
17675
  x += metrics.width;
17241
- const isForceBreak = element.type === ElementType.SEPARATOR || element.type === ElementType.TABLE || (preElement == null ? void 0 : preElement.type) === ElementType.TABLE || (preElement == null ? void 0 : preElement.type) === ElementType.BLOCK || element.type === ElementType.BLOCK || (preElement == null ? void 0 : preElement.imgDisplay) === ImageDisplay.INLINE || element.imgDisplay === ImageDisplay.INLINE || (preElement == null ? void 0 : preElement.listId) !== element.listId || i !== 0 && element.value === ZERO;
17676
+ const isForceBreak = element.type === ElementType.SEPARATOR || element.type === ElementType.TABLE || (preElement == null ? void 0 : preElement.type) === ElementType.TABLE || (preElement == null ? void 0 : preElement.type) === ElementType.BLOCK || element.type === ElementType.BLOCK || (preElement == null ? void 0 : preElement.imgDisplay) === ImageDisplay.INLINE || element.imgDisplay === ImageDisplay.INLINE || (preElement == null ? void 0 : preElement.listId) !== element.listId || (preElement == null ? void 0 : preElement.areaId) !== element.areaId || i !== 0 && element.value === ZERO;
17242
17677
  const isWidthNotEnough = curRowWidth > availableWidth;
17243
17678
  const isWrap = isForceBreak || isWidthNotEnough;
17244
17679
  if (isWrap) {
@@ -17270,10 +17705,11 @@ class Draw {
17270
17705
  row.offsetX = listStyleMap.get(element.listId);
17271
17706
  row.listIndex = listIndex;
17272
17707
  }
17708
+ row.offsetY = !isFromTable && ((_l = element.area) == null ? void 0 : _l.top) && element.areaId !== ((_m = elementList[i - 1]) == null ? void 0 : _m.areaId) ? element.area.top * scale : 0;
17273
17709
  rowList.push(row);
17274
17710
  } else {
17275
17711
  curRow.width += metrics.width;
17276
- if (i === 0 && getIsBlockElement(elementList[1])) {
17712
+ if (i === 0 && (getIsBlockElement(elementList[1]) || !!((_n = elementList[1]) == null ? void 0 : _n.areaId))) {
17277
17713
  curRow.height = defaultBasicRowMarginHeight;
17278
17714
  curRow.ascent = defaultBasicRowMarginHeight;
17279
17715
  } else if (curRow.height < height) {
@@ -17284,8 +17720,8 @@ class Draw {
17284
17720
  }
17285
17721
  if (isWrap || i === elementList.length - 1) {
17286
17722
  curRow.isWidthNotEnough = isWidthNotEnough && !isForceBreak;
17287
- if (!curRow.isSurround && ((preElement == null ? void 0 : preElement.rowFlex) === RowFlex.JUSTIFY || (preElement == null ? void 0 : preElement.rowFlex) === RowFlex.ALIGNMENT && isWidthNotEnough)) {
17288
- const rowElementList = ((_l = curRow.elementList[0]) == null ? void 0 : _l.value) === ZERO ? curRow.elementList.slice(1) : curRow.elementList;
17723
+ if (!curRow.isSurround && ((preElement == null ? void 0 : preElement.rowFlex) === RowFlex.JUSTIFY || (preElement == null ? void 0 : preElement.rowFlex) === RowFlex.ALIGNMENT && curRow.isWidthNotEnough)) {
17724
+ const rowElementList = ((_o = curRow.elementList[0]) == null ? void 0 : _o.value) === ZERO ? curRow.elementList.slice(1) : curRow.elementList;
17289
17725
  const gap = (availableWidth - curRow.width) / (rowElementList.length - 1);
17290
17726
  for (let e = 0; e < rowElementList.length - 1; e++) {
17291
17727
  const el = rowElementList[e];
@@ -17333,7 +17769,7 @@ class Draw {
17333
17769
  let pageNo = 0;
17334
17770
  if (pageMode === PageMode.CONTINUITY) {
17335
17771
  pageRowList[0] = this.rowList;
17336
- pageHeight += this.rowList.reduce((pre, cur) => pre + cur.height, 0);
17772
+ pageHeight += this.rowList.reduce((pre, cur) => pre + cur.height + (cur.offsetY || 0), 0);
17337
17773
  const dpr = this.getPagePixelRatio();
17338
17774
  const pageDom = this.pageList[0];
17339
17775
  const pageDomHeight = Number(pageDom.style.height.replace("px", ""));
@@ -17349,16 +17785,17 @@ class Draw {
17349
17785
  } else {
17350
17786
  for (let i = 0; i < this.rowList.length; i++) {
17351
17787
  const row = this.rowList[i];
17352
- if (row.height + pageHeight > height || ((_a = this.rowList[i - 1]) == null ? void 0 : _a.isPageBreak)) {
17788
+ const rowOffsetY = row.offsetY || 0;
17789
+ if (row.height + rowOffsetY + pageHeight > height || ((_a = this.rowList[i - 1]) == null ? void 0 : _a.isPageBreak)) {
17353
17790
  if (Number.isInteger(maxPageNo) && pageNo >= maxPageNo) {
17354
17791
  this.elementList = this.elementList.slice(0, row.startIndex);
17355
17792
  break;
17356
17793
  }
17357
- pageHeight = marginHeight + row.height;
17794
+ pageHeight = marginHeight + row.height + rowOffsetY;
17358
17795
  pageRowList.push([row]);
17359
17796
  pageNo++;
17360
17797
  } else {
17361
- pageHeight += row.height;
17798
+ pageHeight += row.height + rowOffsetY;
17362
17799
  pageRowList[pageNo].push(row);
17363
17800
  }
17364
17801
  }
@@ -17623,19 +18060,25 @@ class Draw {
17623
18060
  var _a, _b;
17624
18061
  const { elementList, positionList, rowList, pageNo } = payload;
17625
18062
  const { inactiveAlpha, pageMode, header, footer, pageNumber, lineNumber, pageBorder } = this.options;
18063
+ const isPrintMode = this.mode === EditorMode.PRINT;
17626
18064
  const innerWidth = this.getInnerWidth();
17627
18065
  const ctx = this.ctxList[pageNo];
17628
18066
  ctx.globalAlpha = !this.zone.isMainActive() ? inactiveAlpha : 1;
17629
18067
  this._clearPage(pageNo);
17630
18068
  this.background.render(ctx, pageNo);
17631
- if (this.mode !== EditorMode.PRINT) {
18069
+ if (!isPrintMode) {
18070
+ this.area.render(ctx, pageNo);
18071
+ }
18072
+ if (!isPrintMode) {
17632
18073
  this.margin.render(ctx, pageNo);
17633
18074
  }
17634
18075
  this._drawFloat(ctx, {
17635
18076
  pageNo,
17636
18077
  imgDisplays: [ImageDisplay.FLOAT_BOTTOM]
17637
18078
  });
17638
- this.control.renderHighlightList(ctx, pageNo);
18079
+ if (!isPrintMode) {
18080
+ this.control.renderHighlightList(ctx, pageNo);
18081
+ }
17639
18082
  const index2 = (_a = rowList[0]) == null ? void 0 : _a.startIndex;
17640
18083
  this.drawRow(ctx, {
17641
18084
  elementList,
@@ -17661,7 +18104,7 @@ class Draw {
17661
18104
  pageNo,
17662
18105
  imgDisplays: [ImageDisplay.FLOAT_TOP, ImageDisplay.SURROUND]
17663
18106
  });
17664
- if (this.search.getSearchKeyword()) {
18107
+ if (!isPrintMode && this.search.getSearchKeyword()) {
17665
18108
  this.search.render(ctx, pageNo);
17666
18109
  }
17667
18110
  if (pageMode !== PageMode.CONTINUITY && this.options.watermark.data) {
@@ -17750,11 +18193,14 @@ class Draw {
17750
18193
  });
17751
18194
  this.pageRowList = this._computePageList();
17752
18195
  this.position.computePositionList();
17753
- const searchKeyword = this.search.getSearchKeyword();
17754
- if (searchKeyword) {
17755
- this.search.compute(searchKeyword);
18196
+ this.area.compute();
18197
+ if (this.mode !== EditorMode.PRINT) {
18198
+ const searchKeyword = this.search.getSearchKeyword();
18199
+ if (searchKeyword) {
18200
+ this.search.compute(searchKeyword);
18201
+ }
18202
+ this.control.computeHighlightList();
17756
18203
  }
17757
- this.control.computeHighlightList();
17758
18204
  }
17759
18205
  this.imageObserver.clearAll();
17760
18206
  this.cursor.recoveryCursor();
@@ -17777,6 +18223,8 @@ class Draw {
17777
18223
  }
17778
18224
  if (isSetCursor) {
17779
18225
  curIndex = this.setCursor(curIndex);
18226
+ } else if (this.range.getIsSelection()) {
18227
+ this.cursor.focus();
17780
18228
  }
17781
18229
  if (isSubmitHistory && !isFirstRender || curIndex !== void 0 && this.historyManager.isStackEmpty()) {
17782
18230
  this.submitHistory(curIndex);
@@ -17952,6 +18400,8 @@ class Command {
17952
18400
  __publicField(this, "executePaperDirection");
17953
18401
  __publicField(this, "executeSetPaperMargin");
17954
18402
  __publicField(this, "executeInsertElementList");
18403
+ __publicField(this, "executeInsertArea");
18404
+ __publicField(this, "executeSetAreaProperties");
17955
18405
  __publicField(this, "executeAppendElementList");
17956
18406
  __publicField(this, "executeUpdateElementById");
17957
18407
  __publicField(this, "executeSetValue");
@@ -17977,6 +18427,7 @@ class Command {
17977
18427
  __publicField(this, "getImage");
17978
18428
  __publicField(this, "getOptions");
17979
18429
  __publicField(this, "getValue");
18430
+ __publicField(this, "getAreaValue");
17980
18431
  __publicField(this, "getHTML");
17981
18432
  __publicField(this, "getText");
17982
18433
  __publicField(this, "getWordCount");
@@ -17997,6 +18448,7 @@ class Command {
17997
18448
  __publicField(this, "getContainer");
17998
18449
  __publicField(this, "getTitleValue");
17999
18450
  __publicField(this, "getPositionContextByEvent");
18451
+ __publicField(this, "getElementById");
18000
18452
  this.executeMode = adapt.mode.bind(adapt);
18001
18453
  this.executeCut = adapt.cut.bind(adapt);
18002
18454
  this.executeCopy = adapt.copy.bind(adapt);
@@ -18069,6 +18521,9 @@ class Command {
18069
18521
  this.executePaperSize = adapt.paperSize.bind(adapt);
18070
18522
  this.executePaperDirection = adapt.paperDirection.bind(adapt);
18071
18523
  this.executeSetPaperMargin = adapt.setPaperMargin.bind(adapt);
18524
+ this.getAreaValue = adapt.getAreaValue.bind(adapt);
18525
+ this.executeInsertArea = adapt.insertArea.bind(adapt);
18526
+ this.executeSetAreaProperties = adapt.setAreaProperties.bind(adapt);
18072
18527
  this.executeInsertElementList = adapt.insertElementList.bind(adapt);
18073
18528
  this.executeAppendElementList = adapt.appendElementList.bind(adapt);
18074
18529
  this.executeUpdateElementById = adapt.updateElementById.bind(adapt);
@@ -18107,6 +18562,7 @@ class Command {
18107
18562
  this.getContainer = adapt.getContainer.bind(adapt);
18108
18563
  this.getTitleValue = adapt.getTitleValue.bind(adapt);
18109
18564
  this.getPositionContextByEvent = adapt.getPositionContextByEvent.bind(adapt);
18565
+ this.getElementById = adapt.getElementById.bind(adapt);
18110
18566
  this.executeSetControlValue = adapt.setControlValue.bind(adapt);
18111
18567
  this.executeSetControlExtension = adapt.setControlExtension.bind(adapt);
18112
18568
  this.executeSetControlProperties = adapt.setControlProperties.bind(adapt);
@@ -18386,13 +18842,23 @@ class CommandAdapt {
18386
18842
  });
18387
18843
  this.draw.render({ isSetCursor: false });
18388
18844
  } else {
18845
+ let isSubmitHistory = true;
18389
18846
  const { endIndex } = this.range.getRange();
18390
18847
  const elementList = this.draw.getElementList();
18391
18848
  const enterElement = elementList[endIndex];
18392
18849
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18393
18850
  enterElement.font = payload;
18394
- this.draw.render({ curIndex: endIndex, isCompute: false });
18851
+ } else {
18852
+ this.range.setDefaultStyle({
18853
+ font: payload
18854
+ });
18855
+ isSubmitHistory = false;
18395
18856
  }
18857
+ this.draw.render({
18858
+ isSubmitHistory,
18859
+ curIndex: endIndex,
18860
+ isCompute: false
18861
+ });
18396
18862
  }
18397
18863
  }
18398
18864
  size(payload) {
@@ -18415,6 +18881,15 @@ class CommandAdapt {
18415
18881
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18416
18882
  changeElementList.push(enterElement);
18417
18883
  renderOption = { curIndex: endIndex };
18884
+ } else {
18885
+ this.range.setDefaultStyle({
18886
+ size: payload
18887
+ });
18888
+ this.draw.render({
18889
+ curIndex: endIndex,
18890
+ isCompute: false,
18891
+ isSubmitHistory: false
18892
+ });
18418
18893
  }
18419
18894
  }
18420
18895
  if (!changeElementList.length)
@@ -18435,6 +18910,7 @@ class CommandAdapt {
18435
18910
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18436
18911
  if (isDisabled)
18437
18912
  return;
18913
+ const { defaultSize, maxSize } = this.options;
18438
18914
  const selection = this.range.getTextLikeSelectionElementList();
18439
18915
  let renderOption = {};
18440
18916
  let changeElementList = [];
@@ -18448,11 +18924,21 @@ class CommandAdapt {
18448
18924
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18449
18925
  changeElementList.push(enterElement);
18450
18926
  renderOption = { curIndex: endIndex };
18927
+ } else {
18928
+ const style = this.range.getDefaultStyle();
18929
+ const anchorSize = (style == null ? void 0 : style.size) || enterElement.size || defaultSize;
18930
+ this.range.setDefaultStyle({
18931
+ size: anchorSize + 2 > maxSize ? maxSize : anchorSize + 2
18932
+ });
18933
+ this.draw.render({
18934
+ curIndex: endIndex,
18935
+ isCompute: false,
18936
+ isSubmitHistory: false
18937
+ });
18451
18938
  }
18452
18939
  }
18453
18940
  if (!changeElementList.length)
18454
18941
  return;
18455
- const { defaultSize, maxSize } = this.options;
18456
18942
  let isExistUpdate = false;
18457
18943
  changeElementList.forEach((el) => {
18458
18944
  if (!el.size) {
@@ -18475,6 +18961,7 @@ class CommandAdapt {
18475
18961
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18476
18962
  if (isDisabled)
18477
18963
  return;
18964
+ const { defaultSize, minSize } = this.options;
18478
18965
  const selection = this.range.getTextLikeSelectionElementList();
18479
18966
  let renderOption = {};
18480
18967
  let changeElementList = [];
@@ -18488,11 +18975,21 @@ class CommandAdapt {
18488
18975
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18489
18976
  changeElementList.push(enterElement);
18490
18977
  renderOption = { curIndex: endIndex };
18978
+ } else {
18979
+ const style = this.range.getDefaultStyle();
18980
+ const anchorSize = (style == null ? void 0 : style.size) || enterElement.size || defaultSize;
18981
+ this.range.setDefaultStyle({
18982
+ size: anchorSize - 2 < minSize ? minSize : anchorSize - 2
18983
+ });
18984
+ this.draw.render({
18985
+ curIndex: endIndex,
18986
+ isCompute: false,
18987
+ isSubmitHistory: false
18988
+ });
18491
18989
  }
18492
18990
  }
18493
18991
  if (!changeElementList.length)
18494
18992
  return;
18495
- const { defaultSize, minSize } = this.options;
18496
18993
  let isExistUpdate = false;
18497
18994
  changeElementList.forEach((el) => {
18498
18995
  if (!el.size) {
@@ -18512,6 +19009,7 @@ class CommandAdapt {
18512
19009
  }
18513
19010
  }
18514
19011
  bold() {
19012
+ var _a;
18515
19013
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18516
19014
  if (isDisabled)
18517
19015
  return;
@@ -18523,16 +19021,27 @@ class CommandAdapt {
18523
19021
  });
18524
19022
  this.draw.render({ isSetCursor: false });
18525
19023
  } else {
19024
+ let isSubmitHistory = true;
18526
19025
  const { endIndex } = this.range.getRange();
18527
19026
  const elementList = this.draw.getElementList();
18528
19027
  const enterElement = elementList[endIndex];
18529
19028
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18530
19029
  enterElement.bold = !enterElement.bold;
18531
- this.draw.render({ curIndex: endIndex, isCompute: false });
19030
+ } else {
19031
+ this.range.setDefaultStyle({
19032
+ bold: enterElement.bold ? false : !((_a = this.range.getDefaultStyle()) == null ? void 0 : _a.bold)
19033
+ });
19034
+ isSubmitHistory = false;
18532
19035
  }
19036
+ this.draw.render({
19037
+ isSubmitHistory,
19038
+ curIndex: endIndex,
19039
+ isCompute: false
19040
+ });
18533
19041
  }
18534
19042
  }
18535
19043
  italic() {
19044
+ var _a;
18536
19045
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18537
19046
  if (isDisabled)
18538
19047
  return;
@@ -18544,16 +19053,27 @@ class CommandAdapt {
18544
19053
  });
18545
19054
  this.draw.render({ isSetCursor: false });
18546
19055
  } else {
19056
+ let isSubmitHistory = true;
18547
19057
  const { endIndex } = this.range.getRange();
18548
19058
  const elementList = this.draw.getElementList();
18549
19059
  const enterElement = elementList[endIndex];
18550
19060
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18551
19061
  enterElement.italic = !enterElement.italic;
18552
- this.draw.render({ curIndex: endIndex, isCompute: false });
19062
+ } else {
19063
+ this.range.setDefaultStyle({
19064
+ italic: enterElement.italic ? false : !((_a = this.range.getDefaultStyle()) == null ? void 0 : _a.italic)
19065
+ });
19066
+ isSubmitHistory = false;
18553
19067
  }
19068
+ this.draw.render({
19069
+ isSubmitHistory,
19070
+ curIndex: endIndex,
19071
+ isCompute: false
19072
+ });
18554
19073
  }
18555
19074
  }
18556
19075
  underline(textDecoration) {
19076
+ var _a;
18557
19077
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18558
19078
  if (isDisabled)
18559
19079
  return;
@@ -18573,16 +19093,27 @@ class CommandAdapt {
18573
19093
  isCompute: false
18574
19094
  });
18575
19095
  } else {
19096
+ let isSubmitHistory = true;
18576
19097
  const { endIndex } = this.range.getRange();
18577
19098
  const elementList = this.draw.getElementList();
18578
19099
  const enterElement = elementList[endIndex];
18579
19100
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18580
19101
  enterElement.underline = !enterElement.underline;
18581
- this.draw.render({ curIndex: endIndex, isCompute: false });
19102
+ } else {
19103
+ this.range.setDefaultStyle({
19104
+ underline: (enterElement == null ? void 0 : enterElement.underline) ? false : !((_a = this.range.getDefaultStyle()) == null ? void 0 : _a.underline)
19105
+ });
19106
+ isSubmitHistory = false;
18582
19107
  }
19108
+ this.draw.render({
19109
+ isSubmitHistory,
19110
+ curIndex: endIndex,
19111
+ isCompute: false
19112
+ });
18583
19113
  }
18584
19114
  }
18585
19115
  strikeout() {
19116
+ var _a;
18586
19117
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18587
19118
  if (isDisabled)
18588
19119
  return;
@@ -18597,13 +19128,23 @@ class CommandAdapt {
18597
19128
  isCompute: false
18598
19129
  });
18599
19130
  } else {
19131
+ let isSubmitHistory = true;
18600
19132
  const { endIndex } = this.range.getRange();
18601
19133
  const elementList = this.draw.getElementList();
18602
19134
  const enterElement = elementList[endIndex];
18603
19135
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18604
19136
  enterElement.strikeout = !enterElement.strikeout;
18605
- this.draw.render({ curIndex: endIndex, isCompute: false });
19137
+ } else {
19138
+ this.range.setDefaultStyle({
19139
+ strikeout: enterElement.strikeout ? false : !((_a = this.range.getDefaultStyle()) == null ? void 0 : _a.strikeout)
19140
+ });
19141
+ isSubmitHistory = false;
18606
19142
  }
19143
+ this.draw.render({
19144
+ isSubmitHistory,
19145
+ curIndex: endIndex,
19146
+ isCompute: false
19147
+ });
18607
19148
  }
18608
19149
  }
18609
19150
  superscript() {
@@ -18668,6 +19209,7 @@ class CommandAdapt {
18668
19209
  isCompute: false
18669
19210
  });
18670
19211
  } else {
19212
+ let isSubmitHistory = true;
18671
19213
  const { endIndex } = this.range.getRange();
18672
19214
  const elementList = this.draw.getElementList();
18673
19215
  const enterElement = elementList[endIndex];
@@ -18677,8 +19219,17 @@ class CommandAdapt {
18677
19219
  } else {
18678
19220
  delete enterElement.color;
18679
19221
  }
18680
- this.draw.render({ curIndex: endIndex, isCompute: false });
19222
+ } else {
19223
+ this.range.setDefaultStyle({
19224
+ color: payload || void 0
19225
+ });
19226
+ isSubmitHistory = false;
18681
19227
  }
19228
+ this.draw.render({
19229
+ isSubmitHistory,
19230
+ curIndex: endIndex,
19231
+ isCompute: false
19232
+ });
18682
19233
  }
18683
19234
  }
18684
19235
  highlight(payload) {
@@ -18699,6 +19250,7 @@ class CommandAdapt {
18699
19250
  isCompute: false
18700
19251
  });
18701
19252
  } else {
19253
+ let isSubmitHistory = true;
18702
19254
  const { endIndex } = this.range.getRange();
18703
19255
  const elementList = this.draw.getElementList();
18704
19256
  const enterElement = elementList[endIndex];
@@ -18708,8 +19260,17 @@ class CommandAdapt {
18708
19260
  } else {
18709
19261
  delete enterElement.highlight;
18710
19262
  }
18711
- this.draw.render({ curIndex: endIndex, isCompute: false });
19263
+ } else {
19264
+ this.range.setDefaultStyle({
19265
+ highlight: payload || void 0
19266
+ });
19267
+ isSubmitHistory = false;
18712
19268
  }
19269
+ this.draw.render({
19270
+ isSubmitHistory,
19271
+ curIndex: endIndex,
19272
+ isCompute: false
19273
+ });
18713
19274
  }
18714
19275
  }
18715
19276
  title(payload) {
@@ -19313,6 +19874,9 @@ class CommandAdapt {
19313
19874
  getValue(options) {
19314
19875
  return this.draw.getValue(options);
19315
19876
  }
19877
+ getAreaValue(options) {
19878
+ return this.draw.getArea().getAreaValue(options);
19879
+ }
19316
19880
  getHTML() {
19317
19881
  const options = this.options;
19318
19882
  const headerElementList = this.draw.getHeaderElementList();
@@ -19543,10 +20107,13 @@ class CommandAdapt {
19543
20107
  this.draw.appendElementList(deepClone(elementList), options);
19544
20108
  }
19545
20109
  updateElementById(payload) {
20110
+ const { id, conceptId } = payload;
20111
+ if (!id && !conceptId)
20112
+ return;
19546
20113
  function getElementIndexById(elementList) {
19547
20114
  for (let e = 0; e < elementList.length; e++) {
19548
20115
  const element = elementList[e];
19549
- if (element.id === payload.id) {
20116
+ if (id && element.id === id || conceptId && element.conceptId === conceptId) {
19550
20117
  return e;
19551
20118
  }
19552
20119
  }
@@ -19573,6 +20140,34 @@ class CommandAdapt {
19573
20140
  }
19574
20141
  }
19575
20142
  }
20143
+ getElementById(payload) {
20144
+ const { id, conceptId } = payload;
20145
+ const result = [];
20146
+ if (!id && !conceptId)
20147
+ return result;
20148
+ const getElement = (elementList) => {
20149
+ let i = 0;
20150
+ while (i < elementList.length) {
20151
+ const element = elementList[i];
20152
+ i++;
20153
+ if (id && element.controlId !== id || conceptId && element.conceptId !== conceptId) {
20154
+ continue;
20155
+ }
20156
+ result.push(element);
20157
+ }
20158
+ };
20159
+ const data2 = [
20160
+ this.draw.getHeaderElementList(),
20161
+ this.draw.getOriginalMainElementList(),
20162
+ this.draw.getFooterElementList()
20163
+ ];
20164
+ for (const elementList of data2) {
20165
+ getElement(elementList);
20166
+ }
20167
+ return zipElementList(result, {
20168
+ extraPickAttrs: ["id"]
20169
+ });
20170
+ }
19576
20171
  setValue(payload, options) {
19577
20172
  this.draw.setValue(payload, options);
19578
20173
  }
@@ -19970,6 +20565,12 @@ class CommandAdapt {
19970
20565
  direction: MoveDirection.DOWN
19971
20566
  });
19972
20567
  }
20568
+ insertArea(payload) {
20569
+ return this.draw.getArea().insertArea(payload);
20570
+ }
20571
+ setAreaProperties(payload) {
20572
+ this.draw.getArea().setAreaProperties(payload);
20573
+ }
19973
20574
  }
19974
20575
  class Listener {
19975
20576
  constructor() {
@@ -20041,7 +20642,9 @@ const INTERNAL_CONTEXT_MENU_KEY = {
20041
20642
  BORDER: "border",
20042
20643
  BORDER_ALL: "tableBorderAll",
20043
20644
  BORDER_EMPTY: "tableBorderEmpty",
20645
+ BORDER_DASH: "tableBorderDash",
20044
20646
  BORDER_EXTERNAL: "tableBorderExternal",
20647
+ BORDER_INTERNAL: "tableBorderInternal",
20045
20648
  BORDER_TD: "tableBorderTd",
20046
20649
  BORDER_TD_TOP: "tableBorderTdTop",
20047
20650
  BORDER_TD_RIGHT: "tableBorderTdRight",
@@ -20268,7 +20871,7 @@ const imageMenus = [
20268
20871
  ]
20269
20872
  }
20270
20873
  ];
20271
- const { TABLE: { BORDER, BORDER_ALL, BORDER_EMPTY, BORDER_EXTERNAL, BORDER_TD, BORDER_TD_TOP, BORDER_TD_LEFT, BORDER_TD_BOTTOM, BORDER_TD_RIGHT, BORDER_TD_BACK, BORDER_TD_FORWARD, VERTICAL_ALIGN, VERTICAL_ALIGN_TOP, VERTICAL_ALIGN_MIDDLE, VERTICAL_ALIGN_BOTTOM, INSERT_ROW_COL, INSERT_TOP_ROW, INSERT_BOTTOM_ROW, INSERT_LEFT_COL, INSERT_RIGHT_COL, DELETE_ROW_COL, DELETE_ROW, DELETE_COL, DELETE_TABLE, MERGE_CELL, CANCEL_MERGE_CELL } } = INTERNAL_CONTEXT_MENU_KEY;
20874
+ const { TABLE: { BORDER, BORDER_ALL, BORDER_EMPTY, BORDER_DASH, BORDER_EXTERNAL, BORDER_INTERNAL, BORDER_TD, BORDER_TD_TOP, BORDER_TD_LEFT, BORDER_TD_BOTTOM, BORDER_TD_RIGHT, BORDER_TD_BACK, BORDER_TD_FORWARD, VERTICAL_ALIGN, VERTICAL_ALIGN_TOP, VERTICAL_ALIGN_MIDDLE, VERTICAL_ALIGN_BOTTOM, INSERT_ROW_COL, INSERT_TOP_ROW, INSERT_BOTTOM_ROW, INSERT_LEFT_COL, INSERT_RIGHT_COL, DELETE_ROW_COL, DELETE_ROW, DELETE_COL, DELETE_TABLE, MERGE_CELL, CANCEL_MERGE_CELL } } = INTERNAL_CONTEXT_MENU_KEY;
20272
20875
  const tableMenus = [
20273
20876
  {
20274
20877
  isDivider: true
@@ -20299,6 +20902,15 @@ const tableMenus = [
20299
20902
  command.executeTableBorderType(TableBorder.EMPTY);
20300
20903
  }
20301
20904
  },
20905
+ {
20906
+ key: BORDER_DASH,
20907
+ i18nPath: "contextmenu.table.borderDash",
20908
+ icon: "border-dash",
20909
+ when: () => true,
20910
+ callback: (command) => {
20911
+ command.executeTableBorderType(TableBorder.DASH);
20912
+ }
20913
+ },
20302
20914
  {
20303
20915
  key: BORDER_EXTERNAL,
20304
20916
  i18nPath: "contextmenu.table.borderExternal",
@@ -20308,6 +20920,15 @@ const tableMenus = [
20308
20920
  command.executeTableBorderType(TableBorder.EXTERNAL);
20309
20921
  }
20310
20922
  },
20923
+ {
20924
+ key: BORDER_INTERNAL,
20925
+ i18nPath: "contextmenu.table.borderInternal",
20926
+ icon: "border-internal",
20927
+ when: () => true,
20928
+ callback: (command) => {
20929
+ command.executeTableBorderType(TableBorder.INTERNAL);
20930
+ }
20931
+ },
20311
20932
  {
20312
20933
  key: BORDER_TD,
20313
20934
  i18nPath: "contextmenu.table.borderTd",
@@ -21113,5 +21734,5 @@ class Editor {
21113
21734
  this.use = plugin.use.bind(plugin);
21114
21735
  }
21115
21736
  }
21116
- export { BackgroundRepeat, BackgroundSize, BlockType, Command, ControlIndentation, ControlType, EDITOR_COMPONENT, Editor, EditorComponent, EditorMode, EditorZone, ElementType, INTERNAL_CONTEXT_MENU_KEY, ImageDisplay, KeyMap, LETTER_CLASS, LineNumberType, ListStyle, ListType, LocationPosition, MaxHeightRatio, NumberType, PageMode, PaperDirection, RenderMode, RowFlex, TableBorder, TdBorder, TdSlash, TextDecorationStyle, TitleLevel, VerticalAlign, WordBreak, createDomFromElementList, Editor as default, getElementListByHTML, getTextFromElementList, splitText };
21737
+ export { AreaMode, BackgroundRepeat, BackgroundSize, BlockType, Command, ControlIndentation, ControlState, ControlType, EDITOR_CLIPBOARD, EDITOR_COMPONENT, Editor, EditorComponent, EditorMode, EditorZone, ElementType, INTERNAL_CONTEXT_MENU_KEY, ImageDisplay, KeyMap, LETTER_CLASS, LineNumberType, ListStyle, ListType, LocationPosition, MaxHeightRatio, NumberType, PageMode, PaperDirection, RenderMode, RowFlex, TableBorder, TdBorder, TdSlash, TextDecorationStyle, TitleLevel, VerticalAlign, WordBreak, createDomFromElementList, Editor as default, getElementListByHTML, getTextFromElementList, splitText };
21117
21738
  //# sourceMappingURL=canvas-editor.es.js.map