@hufe921/canvas-editor 0.9.96 → 0.9.98

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 (31) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/canvas-editor.es.js +903 -191
  3. package/dist/canvas-editor.es.js.map +1 -1
  4. package/dist/canvas-editor.umd.js +38 -36
  5. package/dist/canvas-editor.umd.js.map +1 -1
  6. package/dist/src/editor/core/command/Command.d.ts +5 -0
  7. package/dist/src/editor/core/command/CommandAdapt.d.ts +8 -2
  8. package/dist/src/editor/core/draw/Draw.d.ts +3 -0
  9. package/dist/src/editor/core/draw/control/Control.d.ts +5 -2
  10. package/dist/src/editor/core/draw/control/select/SelectControl.d.ts +5 -2
  11. package/dist/src/editor/core/draw/interactive/Area.d.ts +18 -0
  12. package/dist/src/editor/core/draw/particle/table/TableOperate.d.ts +1 -0
  13. package/dist/src/editor/core/event/CanvasEvent.d.ts +2 -1
  14. package/dist/src/editor/core/event/handlers/copy.d.ts +2 -1
  15. package/dist/src/editor/core/range/RangeManager.d.ts +5 -1
  16. package/dist/src/editor/dataset/constant/Element.d.ts +1 -0
  17. package/dist/src/editor/dataset/enum/Area.d.ts +5 -0
  18. package/dist/src/editor/dataset/enum/Control.d.ts +6 -0
  19. package/dist/src/editor/dataset/enum/Element.d.ts +1 -0
  20. package/dist/src/editor/index.d.ts +4 -3
  21. package/dist/src/editor/interface/Area.d.ts +41 -0
  22. package/dist/src/editor/interface/Control.d.ts +21 -2
  23. package/dist/src/editor/interface/Element.d.ts +8 -1
  24. package/dist/src/editor/interface/Event.d.ts +3 -0
  25. package/dist/src/editor/interface/Listener.d.ts +2 -2
  26. package/dist/src/editor/interface/Range.d.ts +2 -1
  27. package/dist/src/editor/interface/Row.d.ts +1 -0
  28. package/dist/src/editor/interface/table/Table.d.ts +1 -0
  29. package/dist/src/editor/utils/element.d.ts +1 -0
  30. package/dist/src/editor/utils/index.d.ts +2 -0
  31. 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;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;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.96";
26
+ const version = "0.9.98";
27
27
  var MaxHeightRatio;
28
28
  (function(MaxHeightRatio2) {
29
29
  MaxHeightRatio2["HALF"] = "half";
@@ -384,6 +384,12 @@ function isRectIntersect(rect1, rect2) {
384
384
  }
385
385
  return true;
386
386
  }
387
+ function isNonValue(value) {
388
+ return value === void 0 || value === null;
389
+ }
390
+ function normalizeLineBreak(text) {
391
+ return text.replace(/\r\n|\r/g, "\n");
392
+ }
387
393
  const CURSOR_AGENT_OFFSET_HEIGHT = 12;
388
394
  const defaultCursorOption = {
389
395
  width: 1,
@@ -412,6 +418,7 @@ var ElementType;
412
418
  ElementType2["SEPARATOR"] = "separator";
413
419
  ElementType2["PAGE_BREAK"] = "pageBreak";
414
420
  ElementType2["CONTROL"] = "control";
421
+ ElementType2["AREA"] = "area";
415
422
  ElementType2["CHECKBOX"] = "checkbox";
416
423
  ElementType2["RADIO"] = "radio";
417
424
  ElementType2["LATEX"] = "latex";
@@ -445,6 +452,7 @@ const EDITOR_ELEMENT_COPY_ATTR = [
445
452
  "strikeout",
446
453
  "rowFlex",
447
454
  "url",
455
+ "areaId",
448
456
  "hyperlinkId",
449
457
  "dateId",
450
458
  "dateFormat",
@@ -467,6 +475,7 @@ const EDITOR_ELEMENT_ZIP_ATTR = [
467
475
  "dashArray",
468
476
  "trList",
469
477
  "borderType",
478
+ "borderColor",
470
479
  "width",
471
480
  "height",
472
481
  "url",
@@ -488,7 +497,9 @@ const EDITOR_ELEMENT_ZIP_ATTR = [
488
497
  "imgFloatPosition",
489
498
  "textDecoration",
490
499
  "extension",
491
- "externalId"
500
+ "externalId",
501
+ "areaId",
502
+ "area"
492
503
  ];
493
504
  const TABLE_TD_ZIP_ATTR = [
494
505
  "conceptId",
@@ -527,10 +538,12 @@ const CONTROL_STYLE_ATTR = [
527
538
  "italic",
528
539
  "strikeout"
529
540
  ];
541
+ const AREA_CONTEXT_ATTR = ["areaId", "area"];
530
542
  const EDITOR_ELEMENT_CONTEXT_ATTR = [
531
543
  ...TABLE_CONTEXT_ATTR,
532
544
  ...TITLE_CONTEXT_ATTR,
533
- ...LIST_CONTEXT_ATTR
545
+ ...LIST_CONTEXT_ATTR,
546
+ ...AREA_CONTEXT_ATTR
534
547
  ];
535
548
  const TEXTLIKE_ELEMENT_TYPE = [
536
549
  ElementType.TEXT,
@@ -3763,6 +3776,8 @@ var ControlComponent;
3763
3776
  (function(ControlComponent2) {
3764
3777
  ControlComponent2["PREFIX"] = "prefix";
3765
3778
  ControlComponent2["POSTFIX"] = "postfix";
3779
+ ControlComponent2["PRE_TEXT"] = "preText";
3780
+ ControlComponent2["POST_TEXT"] = "postText";
3766
3781
  ControlComponent2["PLACEHOLDER"] = "placeholder";
3767
3782
  ControlComponent2["VALUE"] = "value";
3768
3783
  ControlComponent2["CHECKBOX"] = "checkbox";
@@ -3773,6 +3788,11 @@ var ControlIndentation;
3773
3788
  ControlIndentation2["ROW_START"] = "rowStart";
3774
3789
  ControlIndentation2["VALUE_START"] = "valueStart";
3775
3790
  })(ControlIndentation || (ControlIndentation = {}));
3791
+ var ControlState;
3792
+ (function(ControlState2) {
3793
+ ControlState2["ACTIVE"] = "active";
3794
+ ControlState2["INACTIVE"] = "inactive";
3795
+ })(ControlState || (ControlState = {}));
3776
3796
  var BackgroundSize;
3777
3797
  (function(BackgroundSize2) {
3778
3798
  BackgroundSize2["CONTAIN"] = "contain";
@@ -3885,7 +3905,8 @@ const defaultSeparatorOption = {
3885
3905
  const defaultTableOption = {
3886
3906
  tdPadding: [0, 5, 5, 5],
3887
3907
  defaultTrMinHeight: 42,
3888
- defaultColMinWidth: 40
3908
+ defaultColMinWidth: 40,
3909
+ defaultBorderColor: "#000000"
3889
3910
  };
3890
3911
  const defaultWatermarkOption = {
3891
3912
  data: "",
@@ -4064,6 +4085,7 @@ function unzipElementList(elementList) {
4064
4085
  return result;
4065
4086
  }
4066
4087
  function formatElementList(elementList, options) {
4088
+ var _a;
4067
4089
  const { isHandleFirstElement = true, isForceCompensation = false, editorOptions } = options;
4068
4090
  const startElement = elementList[0];
4069
4091
  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 +4104,7 @@ function formatElementList(elementList, options) {
4082
4104
  isForceCompensation: false
4083
4105
  }));
4084
4106
  if (valueList.length) {
4085
- const titleId = getUUID();
4107
+ const titleId = el.titleId || getUUID();
4086
4108
  const titleOptions = editorOptions.title;
4087
4109
  for (let v = 0; v < valueList.length; v++) {
4088
4110
  const value = valueList[v];
@@ -4123,6 +4145,39 @@ function formatElementList(elementList, options) {
4123
4145
  }
4124
4146
  }
4125
4147
  i--;
4148
+ } else if (el.type === ElementType.AREA) {
4149
+ elementList.splice(i, 1);
4150
+ const valueList = (el == null ? void 0 : el.valueList) || [];
4151
+ formatElementList(valueList, __spreadProps(__spreadValues({}, options), {
4152
+ isHandleFirstElement: false,
4153
+ isForceCompensation: false
4154
+ }));
4155
+ if (valueList.length) {
4156
+ const areaId = getUUID();
4157
+ for (let v = 0; v < valueList.length; v++) {
4158
+ const value = valueList[v];
4159
+ value.areaId = el.areaId || areaId;
4160
+ value.area = el.area;
4161
+ if (value.type === ElementType.TABLE) {
4162
+ const trList = value.trList;
4163
+ for (let r = 0; r < trList.length; r++) {
4164
+ const tr = trList[r];
4165
+ for (let d = 0; d < tr.tdList.length; d++) {
4166
+ const td = tr.tdList[d];
4167
+ const tdValueList = td.value;
4168
+ for (let t = 0; t < tdValueList.length; t++) {
4169
+ const tdValue = tdValueList[t];
4170
+ tdValue.areaId = el.areaId || areaId;
4171
+ tdValue.area = el.area;
4172
+ }
4173
+ }
4174
+ }
4175
+ }
4176
+ elementList.splice(i, 0, value);
4177
+ i++;
4178
+ }
4179
+ }
4180
+ i--;
4126
4181
  } else if (el.type === ElementType.TABLE) {
4127
4182
  const tableId = getUUID();
4128
4183
  el.id = tableId;
@@ -4190,9 +4245,9 @@ function formatElementList(elementList, options) {
4190
4245
  i++;
4191
4246
  continue;
4192
4247
  }
4193
- const { prefix, postfix, value, placeholder, code, type, valueSets } = el.control;
4248
+ const { prefix, postfix, preText, postText, value, placeholder, code, type, valueSets } = el.control;
4194
4249
  const { editorOptions: { control: controlOption, checkbox: checkboxOption, radio: radioOption } } = options;
4195
- const controlId = getUUID();
4250
+ const controlId = el.controlId || getUUID();
4196
4251
  elementList.splice(i, 1);
4197
4252
  const controlContext = pickObject(el, [
4198
4253
  ...EDITOR_ELEMENT_CONTEXT_ATTR,
@@ -4214,6 +4269,20 @@ function formatElementList(elementList, options) {
4214
4269
  }));
4215
4270
  i++;
4216
4271
  }
4272
+ if (preText) {
4273
+ const preTextStrList = splitText(preText);
4274
+ for (let p = 0; p < preTextStrList.length; p++) {
4275
+ const value2 = preTextStrList[p];
4276
+ elementList.splice(i, 0, __spreadProps(__spreadValues(__spreadValues({}, controlContext), controlDefaultStyle), {
4277
+ controlId,
4278
+ value: value2,
4279
+ type: el.type,
4280
+ control: el.control,
4281
+ controlComponent: ControlComponent.PRE_TEXT
4282
+ }));
4283
+ i++;
4284
+ }
4285
+ }
4217
4286
  if (value && value.length || type === ControlType.CHECKBOX || type === ControlType.RADIO || type === ControlType.SELECT && code && (!value || !value.length)) {
4218
4287
  let valueList = value || [];
4219
4288
  if (type === ControlType.CHECKBOX) {
@@ -4332,6 +4401,20 @@ function formatElementList(elementList, options) {
4332
4401
  i++;
4333
4402
  }
4334
4403
  }
4404
+ if (postText) {
4405
+ const postTextStrList = splitText(postText);
4406
+ for (let p = 0; p < postTextStrList.length; p++) {
4407
+ const value2 = postTextStrList[p];
4408
+ elementList.splice(i, 0, __spreadProps(__spreadValues(__spreadValues({}, controlContext), controlDefaultStyle), {
4409
+ controlId,
4410
+ value: value2,
4411
+ type: el.type,
4412
+ control: el.control,
4413
+ controlComponent: ControlComponent.POST_TEXT
4414
+ }));
4415
+ i++;
4416
+ }
4417
+ }
4335
4418
  const postfixStrList = splitText(postfix || controlOption.postfix);
4336
4419
  for (let p = 0; p < postfixStrList.length; p++) {
4337
4420
  const value2 = postfixStrList[p];
@@ -4345,7 +4428,7 @@ function formatElementList(elementList, options) {
4345
4428
  i++;
4346
4429
  }
4347
4430
  i--;
4348
- } else if ((!el.type || TEXTLIKE_ELEMENT_TYPE.includes(el.type)) && el.value.length > 1) {
4431
+ } else if ((!el.type || TEXTLIKE_ELEMENT_TYPE.includes(el.type)) && ((_a = el.value) == null ? void 0 : _a.length) > 1) {
4349
4432
  elementList.splice(i, 1);
4350
4433
  const valueList = splitText(el.value);
4351
4434
  for (let v = 0; v < valueList.length; v++) {
@@ -4406,7 +4489,7 @@ function pickElementAttr(payload, option = {}) {
4406
4489
  return element;
4407
4490
  }
4408
4491
  function zipElementList(payload, options = {}) {
4409
- const { extraPickAttrs } = options;
4492
+ const { extraPickAttrs, isClassifyArea = false } = options;
4410
4493
  const elementList = deepClone(payload);
4411
4494
  const zipElementListData = [];
4412
4495
  let e = 0;
@@ -4423,6 +4506,7 @@ function zipElementList(payload, options = {}) {
4423
4506
  const titleElement = {
4424
4507
  type: ElementType.TITLE,
4425
4508
  title: element.title,
4509
+ titleId,
4426
4510
  value: "",
4427
4511
  level
4428
4512
  };
@@ -4468,6 +4552,35 @@ function zipElementList(payload, options = {}) {
4468
4552
  listElement.valueList = zipElementList(valueList, options);
4469
4553
  element = listElement;
4470
4554
  }
4555
+ } else if (element.areaId && element.area) {
4556
+ const areaId = element.areaId;
4557
+ const area = element.area;
4558
+ const valueList = [];
4559
+ while (e < elementList.length) {
4560
+ const areaE = elementList[e];
4561
+ if (areaId !== areaE.areaId) {
4562
+ e--;
4563
+ break;
4564
+ }
4565
+ delete areaE.area;
4566
+ delete areaE.areaId;
4567
+ valueList.push(areaE);
4568
+ e++;
4569
+ }
4570
+ const areaElementList = zipElementList(valueList, options);
4571
+ if (isClassifyArea) {
4572
+ const areaElement = {
4573
+ type: ElementType.AREA,
4574
+ value: "",
4575
+ areaId,
4576
+ area
4577
+ };
4578
+ areaElement.valueList = areaElementList;
4579
+ element = areaElement;
4580
+ } else {
4581
+ zipElementListData.splice(e, 0, ...areaElementList);
4582
+ continue;
4583
+ }
4471
4584
  } else if (element.type === ElementType.TABLE) {
4472
4585
  if (element.pagingId) {
4473
4586
  let tableIndex = e + 1;
@@ -4494,7 +4607,9 @@ function zipElementList(payload, options = {}) {
4494
4607
  const zipTd = {
4495
4608
  colspan: td.colspan,
4496
4609
  rowspan: td.rowspan,
4497
- value: zipElementList(td.value, options)
4610
+ value: zipElementList(td.value, __spreadProps(__spreadValues({}, options), {
4611
+ isClassifyArea: false
4612
+ }))
4498
4613
  };
4499
4614
  TABLE_TD_ZIP_ATTR.forEach((attr) => {
4500
4615
  const value = td[attr];
@@ -4554,31 +4669,45 @@ function zipElementList(payload, options = {}) {
4554
4669
  }
4555
4670
  } else if (element.controlId) {
4556
4671
  const controlId = element.controlId;
4557
- if (controlId) {
4558
- const controlDefaultStyle = pickObject(element, CONTROL_STYLE_ATTR);
4559
- const control = __spreadValues(__spreadValues({}, element.control), controlDefaultStyle);
4560
- const controlElement = __spreadProps(__spreadValues({}, pickObject(element, EDITOR_ROW_ATTR)), {
4561
- type: ElementType.CONTROL,
4562
- value: "",
4563
- control,
4564
- controlId
4565
- });
4672
+ if (element.controlComponent === ControlComponent.PREFIX) {
4566
4673
  const valueList = [];
4567
- while (e < elementList.length) {
4568
- const controlE = elementList[e];
4569
- if (controlId !== controlE.controlId) {
4570
- e--;
4674
+ let isFull = false;
4675
+ let start = e;
4676
+ while (start < elementList.length) {
4677
+ const controlE = elementList[start];
4678
+ if (controlId !== controlE.controlId)
4571
4679
  break;
4572
- }
4573
4680
  if (controlE.controlComponent === ControlComponent.VALUE) {
4574
4681
  delete controlE.control;
4575
4682
  delete controlE.controlId;
4576
4683
  valueList.push(controlE);
4577
4684
  }
4685
+ if (controlE.controlComponent === ControlComponent.POSTFIX) {
4686
+ isFull = true;
4687
+ }
4688
+ start++;
4689
+ }
4690
+ if (isFull) {
4691
+ const controlDefaultStyle = pickObject(element, CONTROL_STYLE_ATTR);
4692
+ const control = __spreadValues(__spreadValues({}, element.control), controlDefaultStyle);
4693
+ const controlElement = __spreadProps(__spreadValues({}, pickObject(element, EDITOR_ROW_ATTR)), {
4694
+ type: ElementType.CONTROL,
4695
+ value: "",
4696
+ control,
4697
+ controlId
4698
+ });
4699
+ controlElement.control.value = zipElementList(valueList, options);
4700
+ element = pickElementAttr(controlElement, { extraPickAttrs });
4701
+ e += start - e - 1;
4702
+ }
4703
+ }
4704
+ if (element.controlComponent) {
4705
+ delete element.control;
4706
+ delete element.controlId;
4707
+ if (element.controlComponent !== ControlComponent.VALUE && element.controlComponent !== ControlComponent.PRE_TEXT && element.controlComponent !== ControlComponent.POST_TEXT) {
4578
4708
  e++;
4709
+ continue;
4579
4710
  }
4580
- controlElement.control.value = zipElementList(valueList, options);
4581
- element = pickElementAttr(controlElement, { extraPickAttrs });
4582
4711
  }
4583
4712
  }
4584
4713
  const pickElement = pickElementAttr(element, { extraPickAttrs });
@@ -4645,7 +4774,7 @@ function getAnchorElement(elementList, anchorIndex) {
4645
4774
  if (!anchorElement)
4646
4775
  return null;
4647
4776
  const anchorNextElement = elementList[anchorIndex + 1];
4648
- return !anchorElement.listId && anchorElement.value === ZERO && anchorNextElement && anchorNextElement.value !== ZERO ? anchorNextElement : anchorElement;
4777
+ return !anchorElement.listId && anchorElement.value === ZERO && anchorNextElement && anchorNextElement.value !== ZERO && anchorElement.areaId === anchorNextElement.areaId ? anchorNextElement : anchorElement;
4649
4778
  }
4650
4779
  function formatElementContext(sourceElementList, formatElementList2, anchorIndex, options) {
4651
4780
  var _a, _b, _c;
@@ -4664,7 +4793,11 @@ function formatElementContext(sourceElementList, formatElementList2, anchorIndex
4664
4793
  isBreakWarped = true;
4665
4794
  }
4666
4795
  if (isBreakWarped || !copyElement.listId && targetElement.type === ElementType.LIST) {
4667
- const cloneAttr2 = [...TABLE_CONTEXT_ATTR, ...EDITOR_ROW_ATTR];
4796
+ const cloneAttr2 = [
4797
+ ...TABLE_CONTEXT_ATTR,
4798
+ ...EDITOR_ROW_ATTR,
4799
+ ...AREA_CONTEXT_ATTR
4800
+ ];
4668
4801
  cloneProperty(cloneAttr2, copyElement, targetElement);
4669
4802
  (_b = targetElement.valueList) == null ? void 0 : _b.forEach((valueItem) => {
4670
4803
  cloneProperty(cloneAttr2, copyElement, valueItem);
@@ -5153,7 +5286,7 @@ function getElementListByHTML(htmlText, options) {
5153
5286
  }
5154
5287
  function getTextFromElementList(elementList) {
5155
5288
  function buildText(payload) {
5156
- var _a, _b, _c, _d, _e;
5289
+ var _a, _b, _c, _d, _e, _f, _g;
5157
5290
  let text = "";
5158
5291
  for (let e = 0; e < payload.length; e++) {
5159
5292
  const element = payload[e];
@@ -5198,9 +5331,10 @@ ${ulListStyleText || `${listIndex + 1}.`}${buildText(listElementList)}${isLast ?
5198
5331
  } else if (!element.type || element.type === ElementType.LATEX || TEXTLIKE_ELEMENT_TYPE.includes(element.type)) {
5199
5332
  let textLike = "";
5200
5333
  if (element.type === ElementType.CONTROL) {
5201
- textLike = ((_d = (_c = element.control.value) == null ? void 0 : _c[0]) == null ? void 0 : _d.value) || "";
5334
+ const controlValue = ((_d = (_c = element.control.value) == null ? void 0 : _c[0]) == null ? void 0 : _d.value) || "";
5335
+ textLike = controlValue ? `${((_e = element.control) == null ? void 0 : _e.preText) || ""}${controlValue}${((_f = element.control) == null ? void 0 : _f.postText) || ""}` : "";
5202
5336
  } else if (element.type === ElementType.DATE) {
5203
- textLike = ((_e = element.valueList) == null ? void 0 : _e.map((v) => v.value).join("")) || "";
5337
+ textLike = ((_g = element.valueList) == null ? void 0 : _g.map((v) => v.value).join("")) || "";
5204
5338
  } else {
5205
5339
  textLike = element.value;
5206
5340
  }
@@ -5406,7 +5540,7 @@ function pasteByEvent(host, evt) {
5406
5540
  if (!getIsClipboardContainFile(clipboardData)) {
5407
5541
  const clipboardText = clipboardData.getData("text");
5408
5542
  const editorClipboardData = getClipboardData();
5409
- if (clipboardText === (editorClipboardData == null ? void 0 : editorClipboardData.text)) {
5543
+ if (editorClipboardData && normalizeLineBreak(clipboardText) === normalizeLineBreak(editorClipboardData.text)) {
5410
5544
  pasteElement(host, editorClipboardData.elementList);
5411
5545
  return;
5412
5546
  }
@@ -5813,7 +5947,7 @@ class CheckboxControl {
5813
5947
  let preIndex = startIndex;
5814
5948
  while (preIndex > 0) {
5815
5949
  const preElement = elementList[preIndex];
5816
- if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
5950
+ if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX || preElement.controlComponent === ControlComponent.PRE_TEXT) {
5817
5951
  break;
5818
5952
  }
5819
5953
  if (preElement.controlComponent === ControlComponent.VALUE) {
@@ -5824,7 +5958,7 @@ class CheckboxControl {
5824
5958
  let nextIndex = startIndex + 1;
5825
5959
  while (nextIndex < elementList.length) {
5826
5960
  const nextElement = elementList[nextIndex];
5827
- if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) {
5961
+ if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX || nextElement.controlComponent === ControlComponent.POST_TEXT) {
5828
5962
  break;
5829
5963
  }
5830
5964
  if (nextElement.controlComponent === ControlComponent.VALUE) {
@@ -5848,7 +5982,7 @@ class CheckboxControl {
5848
5982
  let preIndex = startIndex;
5849
5983
  while (preIndex > 0) {
5850
5984
  const preElement = elementList[preIndex];
5851
- if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
5985
+ if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX || preElement.controlComponent === ControlComponent.PRE_TEXT) {
5852
5986
  break;
5853
5987
  }
5854
5988
  if (preElement.controlComponent === ControlComponent.CHECKBOX) {
@@ -5860,7 +5994,7 @@ class CheckboxControl {
5860
5994
  let nextIndex = startIndex + 1;
5861
5995
  while (nextIndex < elementList.length) {
5862
5996
  const nextElement = elementList[nextIndex];
5863
- if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) {
5997
+ if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX || nextElement.controlComponent === ControlComponent.POST_TEXT) {
5864
5998
  break;
5865
5999
  }
5866
6000
  if (nextElement.controlComponent === ControlComponent.CHECKBOX) {
@@ -5903,7 +6037,7 @@ class RadioControl extends CheckboxControl {
5903
6037
  let preIndex = startIndex;
5904
6038
  while (preIndex > 0) {
5905
6039
  const preElement = elementList[preIndex];
5906
- if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
6040
+ if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX || preElement.controlComponent === ControlComponent.PRE_TEXT) {
5907
6041
  break;
5908
6042
  }
5909
6043
  if (preElement.controlComponent === ControlComponent.RADIO) {
@@ -5915,7 +6049,7 @@ class RadioControl extends CheckboxControl {
5915
6049
  let nextIndex = startIndex + 1;
5916
6050
  while (nextIndex < elementList.length) {
5917
6051
  const nextElement = elementList[nextIndex];
5918
- if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) {
6052
+ if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX || nextElement.controlComponent === ControlComponent.POST_TEXT) {
5919
6053
  break;
5920
6054
  }
5921
6055
  if (nextElement.controlComponent === ControlComponent.RADIO) {
@@ -6527,7 +6661,7 @@ function del(evt, host) {
6527
6661
  }
6528
6662
  }
6529
6663
  function enter(evt, host) {
6530
- var _a, _b;
6664
+ var _a, _b, _c;
6531
6665
  const draw = host.getDraw();
6532
6666
  if (draw.isReadonly())
6533
6667
  return;
@@ -6543,7 +6677,7 @@ function enter(evt, host) {
6543
6677
  draw.getListParticle().unsetList();
6544
6678
  return;
6545
6679
  }
6546
- const enterText = {
6680
+ let enterText = {
6547
6681
  value: ZERO
6548
6682
  };
6549
6683
  if (evt.shiftKey && startElement.listId) {
@@ -6553,8 +6687,11 @@ function enter(evt, host) {
6553
6687
  isBreakWhenWrap: true,
6554
6688
  editorOptions: draw.getOptions()
6555
6689
  });
6556
- if (!(endElement.titleId && endElement.titleId !== ((_b = elementList[endIndex + 1]) == null ? void 0 : _b.titleId))) {
6557
- const copyElement = getAnchorElement(elementList, endIndex);
6690
+ if (evt.shiftKey && endElement.areaId && endElement.areaId !== ((_b = elementList[endIndex + 1]) == null ? void 0 : _b.areaId)) {
6691
+ enterText = omitObject(enterText, AREA_CONTEXT_ATTR);
6692
+ }
6693
+ if (!(endElement.titleId && endElement.titleId !== ((_c = elementList[endIndex + 1]) == null ? void 0 : _c.titleId))) {
6694
+ const copyElement = rangeManager.getRangeAnchorStyle(elementList, endIndex);
6558
6695
  if (copyElement) {
6559
6696
  const copyAttr = [...EDITOR_ROW_ATTR];
6560
6697
  if (copyElement.controlComponent !== ControlComponent.POSTFIX) {
@@ -6593,7 +6730,7 @@ function enter(evt, host) {
6593
6730
  evt.preventDefault();
6594
6731
  }
6595
6732
  function left(evt, host) {
6596
- var _a, _b;
6733
+ var _a, _b, _c;
6597
6734
  const draw = host.getDraw();
6598
6735
  const isReadonly = draw.isReadonly();
6599
6736
  if (isReadonly)
@@ -6611,7 +6748,7 @@ function left(evt, host) {
6611
6748
  const isCollapsed = rangeManager.getIsCollapsed();
6612
6749
  const elementList = draw.getElementList();
6613
6750
  const control = draw.getControl();
6614
- if (draw.getMode() === EditorMode.FORM && control.getActiveControl() && ((_a = elementList[index2]) == null ? void 0 : _a.controlComponent) === ControlComponent.PREFIX) {
6751
+ if (draw.getMode() === EditorMode.FORM && control.getActiveControl() && (((_a = elementList[index2]) == null ? void 0 : _a.controlComponent) === ControlComponent.PREFIX || ((_b = elementList[index2]) == null ? void 0 : _b.controlComponent) === ControlComponent.PRE_TEXT)) {
6615
6752
  control.initNextControl({
6616
6753
  direction: MoveDirection.UP
6617
6754
  });
@@ -6621,7 +6758,7 @@ function left(evt, host) {
6621
6758
  if (isMod(evt)) {
6622
6759
  const LETTER_REG = draw.getLetterReg();
6623
6760
  const moveStartIndex = evt.shiftKey && !isCollapsed && startIndex === (cursorPosition == null ? void 0 : cursorPosition.index) ? endIndex : startIndex;
6624
- if (LETTER_REG.test((_b = elementList[moveStartIndex]) == null ? void 0 : _b.value)) {
6761
+ if (LETTER_REG.test((_c = elementList[moveStartIndex]) == null ? void 0 : _c.value)) {
6625
6762
  let i = moveStartIndex - 1;
6626
6763
  while (i > 0) {
6627
6764
  const element = elementList[i];
@@ -6731,7 +6868,7 @@ function left(evt, host) {
6731
6868
  evt.preventDefault();
6732
6869
  }
6733
6870
  function right(evt, host) {
6734
- var _a, _b;
6871
+ var _a, _b, _c;
6735
6872
  const draw = host.getDraw();
6736
6873
  const isReadonly = draw.isReadonly();
6737
6874
  if (isReadonly)
@@ -6750,7 +6887,7 @@ function right(evt, host) {
6750
6887
  const isCollapsed = rangeManager.getIsCollapsed();
6751
6888
  let elementList = draw.getElementList();
6752
6889
  const control = draw.getControl();
6753
- if (draw.getMode() === EditorMode.FORM && control.getActiveControl() && ((_a = elementList[index2 + 1]) == null ? void 0 : _a.controlComponent) === ControlComponent.POSTFIX) {
6890
+ if (draw.getMode() === EditorMode.FORM && control.getActiveControl() && (((_a = elementList[index2 + 1]) == null ? void 0 : _a.controlComponent) === ControlComponent.POSTFIX || ((_b = elementList[index2 + 1]) == null ? void 0 : _b.controlComponent) === ControlComponent.POST_TEXT)) {
6754
6891
  control.initNextControl({
6755
6892
  direction: MoveDirection.DOWN
6756
6893
  });
@@ -6760,7 +6897,7 @@ function right(evt, host) {
6760
6897
  if (isMod(evt)) {
6761
6898
  const LETTER_REG = draw.getLetterReg();
6762
6899
  const moveStartIndex = evt.shiftKey && !isCollapsed && startIndex === (cursorPosition == null ? void 0 : cursorPosition.index) ? endIndex : startIndex;
6763
- if (LETTER_REG.test((_b = elementList[moveStartIndex + 1]) == null ? void 0 : _b.value)) {
6900
+ if (LETTER_REG.test((_c = elementList[moveStartIndex + 1]) == null ? void 0 : _c.value)) {
6764
6901
  let i = moveStartIndex + 2;
6765
6902
  while (i < elementList.length) {
6766
6903
  const element = elementList[i];
@@ -7266,7 +7403,7 @@ function input(data2, host) {
7266
7403
  `, ZERO);
7267
7404
  const { startIndex, endIndex } = rangeManager.getRange();
7268
7405
  const elementList = draw.getElementList();
7269
- const copyElement = getAnchorElement(elementList, endIndex);
7406
+ const copyElement = rangeManager.getRangeAnchorStyle(elementList, endIndex);
7270
7407
  if (!copyElement)
7271
7408
  return;
7272
7409
  const isDesignMode = draw.isDesignMode();
@@ -7376,7 +7513,7 @@ function cut(host) {
7376
7513
  rangeManager.setRange(curIndex, curIndex);
7377
7514
  draw.render({ curIndex });
7378
7515
  }
7379
- function copy(host) {
7516
+ function copy(host, options) {
7380
7517
  const draw = host.getDraw();
7381
7518
  const { copy: copy2 } = draw.getOverride();
7382
7519
  if (copy2) {
@@ -7424,6 +7561,13 @@ function copy(host) {
7424
7561
  } else {
7425
7562
  copyElementList = rangeManager.getIsCollapsed() ? rangeManager.getRangeRowElementList() : rangeManager.getSelectionElementList();
7426
7563
  }
7564
+ if ((options == null ? void 0 : options.isPlainText) && (copyElementList == null ? void 0 : copyElementList.length)) {
7565
+ copyElementList = [
7566
+ {
7567
+ value: getTextFromElementList(copyElementList)
7568
+ }
7569
+ ];
7570
+ }
7427
7571
  if (!(copyElementList == null ? void 0 : copyElementList.length))
7428
7572
  return;
7429
7573
  writeElementList(copyElementList, draw.getOptions());
@@ -7810,8 +7954,8 @@ class CanvasEvent {
7810
7954
  cut() {
7811
7955
  cut(this);
7812
7956
  }
7813
- copy() {
7814
- copy(this);
7957
+ copy(options) {
7958
+ copy(this, options);
7815
7959
  }
7816
7960
  compositionstart() {
7817
7961
  composition.compositionstart(this);
@@ -8081,6 +8225,7 @@ class Position {
8081
8225
  }
8082
8226
  }
8083
8227
  x += curRow.offsetX || 0;
8228
+ y += curRow.offsetY || 0;
8084
8229
  const tablePreX = x;
8085
8230
  const tablePreY = y;
8086
8231
  for (let j = 0; j < curRow.elementList.length; j++) {
@@ -8441,7 +8586,7 @@ class Position {
8441
8586
  }
8442
8587
  }
8443
8588
  const margins = this.draw.getMargins();
8444
- if (y <= margins[1]) {
8589
+ if (y <= margins[0]) {
8445
8590
  for (let p = 0; p < positionList.length; p++) {
8446
8591
  const position = positionList[p];
8447
8592
  if (position.pageNo !== positionNo || position.rowNo !== 0)
@@ -8593,6 +8738,7 @@ class RangeManager {
8593
8738
  __publicField(this, "eventBus");
8594
8739
  __publicField(this, "position");
8595
8740
  __publicField(this, "historyManager");
8741
+ __publicField(this, "defaultStyle");
8596
8742
  this.draw = draw;
8597
8743
  this.options = draw.getOptions();
8598
8744
  this.listener = draw.getListener();
@@ -8603,6 +8749,7 @@ class RangeManager {
8603
8749
  startIndex: -1,
8604
8750
  endIndex: -1
8605
8751
  };
8752
+ this.defaultStyle = null;
8606
8753
  }
8607
8754
  getRange() {
8608
8755
  return this.range;
@@ -8610,6 +8757,22 @@ class RangeManager {
8610
8757
  clearRange() {
8611
8758
  this.setRange(-1, -1);
8612
8759
  }
8760
+ setDefaultStyle(style) {
8761
+ if (!style) {
8762
+ this.defaultStyle = null;
8763
+ } else {
8764
+ this.defaultStyle = __spreadValues(__spreadValues({}, this.defaultStyle), style);
8765
+ }
8766
+ }
8767
+ getDefaultStyle() {
8768
+ return this.defaultStyle;
8769
+ }
8770
+ getRangeAnchorStyle(elementList, anchorIndex) {
8771
+ const anchorElement = getAnchorElement(elementList, anchorIndex);
8772
+ if (!anchorElement)
8773
+ return null;
8774
+ return __spreadValues(__spreadValues({}, anchorElement), this.defaultStyle);
8775
+ }
8613
8776
  getIsCollapsed() {
8614
8777
  const { startIndex, endIndex } = this.range;
8615
8778
  return startIndex === endIndex;
@@ -8853,15 +9016,17 @@ class RangeManager {
8853
9016
  return rangeList;
8854
9017
  }
8855
9018
  getIsCanInput() {
9019
+ var _a;
8856
9020
  const { startIndex, endIndex } = this.getRange();
8857
9021
  if (!~startIndex && !~endIndex)
8858
9022
  return false;
8859
- if (startIndex === endIndex)
8860
- return true;
8861
9023
  const elementList = this.draw.getElementList();
8862
9024
  const startElement = elementList[startIndex];
9025
+ if (startIndex === endIndex) {
9026
+ return (startElement.controlComponent !== ControlComponent.PRE_TEXT || ((_a = elementList[startIndex + 1]) == null ? void 0 : _a.controlComponent) !== ControlComponent.PRE_TEXT) && startElement.controlComponent !== ControlComponent.POST_TEXT;
9027
+ }
8863
9028
  const endElement = elementList[endIndex];
8864
- return !startElement.controlId && !endElement.controlId || (!startElement.controlId || startElement.controlComponent === ControlComponent.POSTFIX) && (!endElement.controlId || endElement.controlComponent === ControlComponent.POSTFIX) || !!startElement.controlId && endElement.controlId === startElement.controlId && endElement.controlComponent !== ControlComponent.POSTFIX;
9029
+ return !startElement.controlId && !endElement.controlId || (!startElement.controlId || startElement.controlComponent === ControlComponent.POSTFIX) && (!endElement.controlId || endElement.controlComponent === ControlComponent.POSTFIX) || !!startElement.controlId && endElement.controlId === startElement.controlId && endElement.controlComponent !== ControlComponent.PRE_TEXT && endElement.controlComponent !== ControlComponent.POST_TEXT && endElement.controlComponent !== ControlComponent.POSTFIX;
8865
9030
  }
8866
9031
  setRange(startIndex, endIndex, tableId, startTdIndex, endTdIndex, startTrIndex, endTrIndex) {
8867
9032
  this.range.startIndex = startIndex;
@@ -8872,6 +9037,7 @@ class RangeManager {
8872
9037
  this.range.startTrIndex = startTrIndex;
8873
9038
  this.range.endTrIndex = endTrIndex;
8874
9039
  this.range.isCrossRowCol = !!(startTdIndex || endTdIndex || startTrIndex || endTrIndex);
9040
+ this.setDefaultStyle(null);
8875
9041
  this.range.zone = this.draw.getZone().getZone();
8876
9042
  const control = this.draw.getControl();
8877
9043
  if (~startIndex && ~endIndex) {
@@ -8904,7 +9070,7 @@ class RangeManager {
8904
9070
  } else {
8905
9071
  const index2 = ~endIndex ? endIndex : 0;
8906
9072
  const elementList = this.draw.getElementList();
8907
- curElement = getAnchorElement(elementList, index2);
9073
+ curElement = this.getRangeAnchorStyle(elementList, index2);
8908
9074
  }
8909
9075
  if (!curElement)
8910
9076
  return;
@@ -9017,7 +9183,7 @@ class RangeManager {
9017
9183
  let index2 = startIndex - 1;
9018
9184
  while (index2 > 0) {
9019
9185
  const preElement = elementList[index2];
9020
- if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
9186
+ if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX || preElement.controlComponent === ControlComponent.PRE_TEXT) {
9021
9187
  range.startIndex = index2;
9022
9188
  range.endIndex = index2;
9023
9189
  break;
@@ -9030,7 +9196,7 @@ class RangeManager {
9030
9196
  let index2 = endIndex - 1;
9031
9197
  while (index2 > 0) {
9032
9198
  const preElement = elementList[index2];
9033
- if (preElement.controlId !== endElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
9199
+ if (preElement.controlId !== endElement.controlId || preElement.controlComponent === ControlComponent.PREFIX || preElement.controlComponent === ControlComponent.PRE_TEXT) {
9034
9200
  range.startIndex = index2;
9035
9201
  range.endIndex = index2;
9036
9202
  return;
@@ -10053,10 +10219,10 @@ class TableParticle {
10053
10219
  }
10054
10220
  _drawBorder(ctx, element, startX, startY) {
10055
10221
  var _a, _b, _c, _d, _e, _f;
10056
- const { colgroup, trList, borderType } = element;
10222
+ const { colgroup, trList, borderType, borderColor } = element;
10057
10223
  if (!colgroup || !trList)
10058
10224
  return;
10059
- const { scale } = this.options;
10225
+ const { scale, table: { defaultBorderColor } } = this.options;
10060
10226
  const tableWidth = element.width * scale;
10061
10227
  const tableHeight = element.height * scale;
10062
10228
  const isEmptyBorderType = borderType === TableBorder.EMPTY;
@@ -10067,6 +10233,7 @@ class TableParticle {
10067
10233
  ctx.setLineDash([3, 3]);
10068
10234
  }
10069
10235
  ctx.lineWidth = scale;
10236
+ ctx.strokeStyle = borderColor || defaultBorderColor;
10070
10237
  if (!isEmptyBorderType && !isInternalBorderType) {
10071
10238
  this._drawOuterBorder({
10072
10239
  ctx,
@@ -11186,7 +11353,10 @@ class SelectControl {
11186
11353
  __publicField(this, "isPopup");
11187
11354
  __publicField(this, "selectDom");
11188
11355
  __publicField(this, "options");
11189
- this.options = control.getDraw().getOptions();
11356
+ __publicField(this, "VALUE_DELIMITER", ",");
11357
+ __publicField(this, "DEFAULT_MULTI_SELECT_DELIMITER", ",");
11358
+ const draw = control.getDraw();
11359
+ this.options = draw.getOptions();
11190
11360
  this.element = element;
11191
11361
  this.control = control;
11192
11362
  this.isPopup = false;
@@ -11201,9 +11371,27 @@ class SelectControl {
11201
11371
  getIsPopup() {
11202
11372
  return this.isPopup;
11203
11373
  }
11204
- getCode() {
11205
- var _a;
11206
- return ((_a = this.element.control) == null ? void 0 : _a.code) || null;
11374
+ getCodes() {
11375
+ var _a, _b;
11376
+ return ((_b = (_a = this.element) == null ? void 0 : _a.control) == null ? void 0 : _b.code) ? this.element.control.code.split(",") : [];
11377
+ }
11378
+ getText(codes) {
11379
+ var _a, _b;
11380
+ if (!((_a = this.element) == null ? void 0 : _a.control))
11381
+ return null;
11382
+ const control = this.element.control;
11383
+ if (!((_b = control.valueSets) == null ? void 0 : _b.length))
11384
+ return null;
11385
+ const multiSelectDelimiter = (control == null ? void 0 : control.multiSelectDelimiter) || this.DEFAULT_MULTI_SELECT_DELIMITER;
11386
+ const valueSets = control.valueSets;
11387
+ const valueList = [];
11388
+ codes.forEach((code) => {
11389
+ const valueSet = valueSets.find((v) => v.code === code);
11390
+ if (valueSet && !isNonValue(valueSet.value)) {
11391
+ valueList.push(valueSet.value);
11392
+ }
11393
+ });
11394
+ return valueList.join(multiSelectDelimiter) || null;
11207
11395
  }
11208
11396
  getValue(context = {}) {
11209
11397
  const elementList = context.elementList || this.control.getElementList();
@@ -11213,7 +11401,7 @@ class SelectControl {
11213
11401
  let preIndex = startIndex;
11214
11402
  while (preIndex > 0) {
11215
11403
  const preElement = elementList[preIndex];
11216
- if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
11404
+ if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX || preElement.controlComponent === ControlComponent.PRE_TEXT) {
11217
11405
  break;
11218
11406
  }
11219
11407
  if (preElement.controlComponent === ControlComponent.VALUE) {
@@ -11224,7 +11412,7 @@ class SelectControl {
11224
11412
  let nextIndex = startIndex + 1;
11225
11413
  while (nextIndex < elementList.length) {
11226
11414
  const nextElement = elementList[nextIndex];
11227
- if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) {
11415
+ if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX || nextElement.controlComponent === ControlComponent.POST_TEXT) {
11228
11416
  break;
11229
11417
  }
11230
11418
  if (nextElement.controlComponent === ControlComponent.VALUE) {
@@ -11234,8 +11422,38 @@ class SelectControl {
11234
11422
  }
11235
11423
  return data2;
11236
11424
  }
11237
- setValue() {
11238
- return -1;
11425
+ setValue(data2, context = {}, options = {}) {
11426
+ var _a, _b;
11427
+ if (!((_b = (_a = this.element.control) == null ? void 0 : _a.selectExclusiveOptions) == null ? void 0 : _b.inputAble) || !options.isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) {
11428
+ return -1;
11429
+ }
11430
+ const elementList = context.elementList || this.control.getElementList();
11431
+ const range = context.range || this.control.getRange();
11432
+ this.control.shrinkBoundary(context);
11433
+ const { startIndex, endIndex } = range;
11434
+ const draw = this.control.getDraw();
11435
+ if (startIndex !== endIndex) {
11436
+ draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex);
11437
+ } else {
11438
+ this.control.removePlaceholder(startIndex, context);
11439
+ }
11440
+ const startElement = elementList[startIndex];
11441
+ const anchorElement = startElement.type && !TEXTLIKE_ELEMENT_TYPE.includes(startElement.type) || startElement.controlComponent === ControlComponent.PREFIX || startElement.controlComponent === ControlComponent.PRE_TEXT ? pickObject(startElement, [
11442
+ "control",
11443
+ "controlId",
11444
+ ...CONTROL_STYLE_ATTR
11445
+ ]) : omitObject(startElement, ["type"]);
11446
+ const start = range.startIndex + 1;
11447
+ for (let i = 0; i < data2.length; i++) {
11448
+ const newElement = __spreadProps(__spreadValues(__spreadValues({}, anchorElement), data2[i]), {
11449
+ controlComponent: ControlComponent.VALUE
11450
+ });
11451
+ formatElementContext(elementList, [newElement], startIndex, {
11452
+ editorOptions: this.options
11453
+ });
11454
+ draw.spliceElementList(elementList, start + i, 0, newElement);
11455
+ }
11456
+ return start + data2.length - 1;
11239
11457
  }
11240
11458
  keydown(evt) {
11241
11459
  if (this.control.getIsDisabledControl()) {
@@ -11251,7 +11469,7 @@ class SelectControl {
11251
11469
  if (startIndex !== endIndex) {
11252
11470
  return this.clearSelect();
11253
11471
  } else {
11254
- if (startElement.controlComponent === ControlComponent.PREFIX || endElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
11472
+ if (startElement.controlComponent === ControlComponent.PREFIX || startElement.controlComponent === ControlComponent.PRE_TEXT || endElement.controlComponent === ControlComponent.POSTFIX || endElement.controlComponent === ControlComponent.POST_TEXT || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
11255
11473
  return this.control.removeControl(startIndex);
11256
11474
  } else {
11257
11475
  return this.clearSelect();
@@ -11262,7 +11480,7 @@ class SelectControl {
11262
11480
  return this.clearSelect();
11263
11481
  } else {
11264
11482
  const endNextElement = elementList[endIndex + 1];
11265
- if (startElement.controlComponent === ControlComponent.PREFIX && endNextElement.controlComponent === ControlComponent.PLACEHOLDER || endNextElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
11483
+ if ((startElement.controlComponent === ControlComponent.PREFIX || startElement.controlComponent === ControlComponent.PRE_TEXT) && endNextElement.controlComponent === ControlComponent.PLACEHOLDER || endNextElement.controlComponent === ControlComponent.POSTFIX || endNextElement.controlComponent === ControlComponent.POST_TEXT || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
11266
11484
  return this.control.removeControl(startIndex);
11267
11485
  } else {
11268
11486
  return this.clearSelect();
@@ -11295,7 +11513,7 @@ class SelectControl {
11295
11513
  let preIndex = startIndex;
11296
11514
  while (preIndex > 0) {
11297
11515
  const preElement = elementList[preIndex];
11298
- if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
11516
+ if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX || preElement.controlComponent === ControlComponent.PRE_TEXT) {
11299
11517
  leftIndex = preIndex;
11300
11518
  break;
11301
11519
  }
@@ -11304,7 +11522,7 @@ class SelectControl {
11304
11522
  let nextIndex = startIndex + 1;
11305
11523
  while (nextIndex < elementList.length) {
11306
11524
  const nextElement = elementList[nextIndex];
11307
- if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) {
11525
+ if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX || nextElement.controlComponent === ControlComponent.POST_TEXT) {
11308
11526
  rightIndex = nextIndex - 1;
11309
11527
  break;
11310
11528
  }
@@ -11317,18 +11535,27 @@ class SelectControl {
11317
11535
  if (isAddPlaceholder) {
11318
11536
  this.control.addPlaceholder(preIndex, context);
11319
11537
  }
11320
- this.element.control.code = null;
11538
+ this.control.setControlProperties({
11539
+ code: null
11540
+ }, {
11541
+ elementList,
11542
+ range: { startIndex: preIndex, endIndex: preIndex }
11543
+ });
11321
11544
  return preIndex;
11322
11545
  }
11323
11546
  setSelect(code, context = {}, options = {}) {
11547
+ var _a;
11324
11548
  if (!options.isIgnoreDisabledRule && this.control.getIsDisabledControl(context)) {
11325
11549
  return;
11326
11550
  }
11327
11551
  const elementList = context.elementList || this.control.getElementList();
11328
11552
  const range = context.range || this.control.getRange();
11329
11553
  const control = this.element.control;
11554
+ const newCodes = (code == null ? void 0 : code.split(this.VALUE_DELIMITER)) || [];
11330
11555
  const oldCode = control.code;
11331
- if (code === oldCode) {
11556
+ const oldCodes = ((_a = control.code) == null ? void 0 : _a.split(this.VALUE_DELIMITER)) || [];
11557
+ const isMultiSelect = control.isMultiSelect;
11558
+ if (!isMultiSelect && code === oldCode || isMultiSelect && isArrayEqual(oldCodes, newCodes)) {
11332
11559
  this.control.repaintControl({
11333
11560
  curIndex: range.startIndex,
11334
11561
  isCompute: false,
@@ -11340,9 +11567,18 @@ class SelectControl {
11340
11567
  const valueSets = control.valueSets;
11341
11568
  if (!Array.isArray(valueSets) || !valueSets.length)
11342
11569
  return;
11343
- const valueSet = valueSets.find((v) => v.code === code);
11344
- if (!valueSet)
11570
+ const text = this.getText(newCodes);
11571
+ if (!text) {
11572
+ if (oldCode) {
11573
+ const prefixIndex2 = this.clearSelect(context);
11574
+ if (~prefixIndex2) {
11575
+ this.control.repaintControl({
11576
+ curIndex: prefixIndex2
11577
+ });
11578
+ }
11579
+ }
11345
11580
  return;
11581
+ }
11346
11582
  const valueElement = this.getValue(context)[0];
11347
11583
  const styleElement = valueElement ? pickObject(valueElement, EDITOR_ELEMENT_STYLE_ATTR) : pickObject(elementList[range.startIndex], CONTROL_STYLE_ATTR);
11348
11584
  const prefixIndex = this.clearSelect(context, {
@@ -11355,7 +11591,7 @@ class SelectControl {
11355
11591
  }
11356
11592
  const propertyElement = omitObject(elementList[prefixIndex], EDITOR_ELEMENT_STYLE_ATTR);
11357
11593
  const start = prefixIndex + 1;
11358
- const data2 = splitText(valueSet.value);
11594
+ const data2 = splitText(text);
11359
11595
  const draw = this.control.getDraw();
11360
11596
  for (let i = 0; i < data2.length; i++) {
11361
11597
  const newElement = __spreadProps(__spreadValues(__spreadValues({}, styleElement), propertyElement), {
@@ -11368,13 +11604,20 @@ class SelectControl {
11368
11604
  });
11369
11605
  draw.spliceElementList(elementList, start + i, 0, newElement);
11370
11606
  }
11371
- control.code = code;
11607
+ this.control.setControlProperties({
11608
+ code
11609
+ }, {
11610
+ elementList,
11611
+ range: { startIndex: prefixIndex, endIndex: prefixIndex }
11612
+ });
11372
11613
  if (!context.range) {
11373
11614
  const newIndex = start + data2.length - 1;
11374
11615
  this.control.repaintControl({
11375
11616
  curIndex: newIndex
11376
11617
  });
11377
- this.destroy();
11618
+ if (!isMultiSelect) {
11619
+ this.destroy();
11620
+ }
11378
11621
  }
11379
11622
  }
11380
11623
  _createSelectPopupDom() {
@@ -11392,12 +11635,26 @@ class SelectControl {
11392
11635
  for (let v = 0; v < valueSets.length; v++) {
11393
11636
  const valueSet = valueSets[v];
11394
11637
  const li = document.createElement("li");
11395
- const code = this.getCode();
11396
- if (code === valueSet.code) {
11638
+ let codes = this.getCodes();
11639
+ if (codes.includes(valueSet.code)) {
11397
11640
  li.classList.add("active");
11398
11641
  }
11399
11642
  li.onclick = () => {
11400
- this.setSelect(valueSet.code);
11643
+ const codeIndex = codes.findIndex((code) => code === valueSet.code);
11644
+ if (control.isMultiSelect) {
11645
+ if (~codeIndex) {
11646
+ codes.splice(codeIndex, 1);
11647
+ } else {
11648
+ codes.push(valueSet.code);
11649
+ }
11650
+ } else {
11651
+ if (~codeIndex) {
11652
+ codes = [];
11653
+ } else {
11654
+ codes = [valueSet.code];
11655
+ }
11656
+ }
11657
+ this.setSelect(codes.join(this.VALUE_DELIMITER));
11401
11658
  };
11402
11659
  li.append(document.createTextNode(valueSet.value));
11403
11660
  ul.append(li);
@@ -11436,7 +11693,8 @@ class TextControl {
11436
11693
  __publicField(this, "element");
11437
11694
  __publicField(this, "control");
11438
11695
  __publicField(this, "options");
11439
- this.options = control.getDraw().getOptions();
11696
+ const draw = control.getDraw();
11697
+ this.options = draw.getOptions();
11440
11698
  this.element = element;
11441
11699
  this.control = control;
11442
11700
  }
@@ -11454,7 +11712,7 @@ class TextControl {
11454
11712
  let preIndex = startIndex;
11455
11713
  while (preIndex > 0) {
11456
11714
  const preElement = elementList[preIndex];
11457
- if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
11715
+ if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX || preElement.controlComponent === ControlComponent.PRE_TEXT) {
11458
11716
  break;
11459
11717
  }
11460
11718
  if (preElement.controlComponent === ControlComponent.VALUE) {
@@ -11465,7 +11723,7 @@ class TextControl {
11465
11723
  let nextIndex = startIndex + 1;
11466
11724
  while (nextIndex < elementList.length) {
11467
11725
  const nextElement = elementList[nextIndex];
11468
- if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) {
11726
+ if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX || nextElement.controlComponent === ControlComponent.POST_TEXT) {
11469
11727
  break;
11470
11728
  }
11471
11729
  if (nextElement.controlComponent === ControlComponent.VALUE) {
@@ -11490,7 +11748,7 @@ class TextControl {
11490
11748
  this.control.removePlaceholder(startIndex, context);
11491
11749
  }
11492
11750
  const startElement = elementList[startIndex];
11493
- const anchorElement = startElement.type && !TEXTLIKE_ELEMENT_TYPE.includes(startElement.type) || startElement.controlComponent === ControlComponent.PREFIX ? pickObject(startElement, [
11751
+ const anchorElement = startElement.type && !TEXTLIKE_ELEMENT_TYPE.includes(startElement.type) || startElement.controlComponent === ControlComponent.PREFIX || startElement.controlComponent === ControlComponent.PRE_TEXT ? pickObject(startElement, [
11494
11752
  "control",
11495
11753
  "controlId",
11496
11754
  ...CONTROL_STYLE_ATTR
@@ -11541,7 +11799,7 @@ class TextControl {
11541
11799
  }
11542
11800
  return startIndex;
11543
11801
  } else {
11544
- if (startElement.controlComponent === ControlComponent.PREFIX || endElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
11802
+ if (startElement.controlComponent === ControlComponent.PREFIX || startElement.controlComponent === ControlComponent.PRE_TEXT || endElement.controlComponent === ControlComponent.POSTFIX || endElement.controlComponent === ControlComponent.POST_TEXT || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
11545
11803
  return this.control.removeControl(startIndex);
11546
11804
  } else {
11547
11805
  draw.spliceElementList(elementList, startIndex, 1);
@@ -11562,7 +11820,7 @@ class TextControl {
11562
11820
  return startIndex;
11563
11821
  } else {
11564
11822
  const endNextElement = elementList[endIndex + 1];
11565
- if (startElement.controlComponent === ControlComponent.PREFIX && endNextElement.controlComponent === ControlComponent.PLACEHOLDER || endNextElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
11823
+ if ((startElement.controlComponent === ControlComponent.PREFIX || startElement.controlComponent === ControlComponent.PRE_TEXT) && endNextElement.controlComponent === ControlComponent.PLACEHOLDER || endNextElement.controlComponent === ControlComponent.POSTFIX || endNextElement.controlComponent === ControlComponent.POST_TEXT || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
11566
11824
  return this.control.removeControl(startIndex);
11567
11825
  } else {
11568
11826
  draw.spliceElementList(elementList, startIndex + 1, 1);
@@ -12085,7 +12343,7 @@ class DateControl {
12085
12343
  let preIndex = startIndex;
12086
12344
  while (preIndex > 0) {
12087
12345
  const preElement = elementList[preIndex];
12088
- if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
12346
+ if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX || preElement.controlComponent === ControlComponent.PRE_TEXT) {
12089
12347
  break;
12090
12348
  }
12091
12349
  preIndex--;
@@ -12093,7 +12351,7 @@ class DateControl {
12093
12351
  let nextIndex = startIndex + 1;
12094
12352
  while (nextIndex < elementList.length) {
12095
12353
  const nextElement = elementList[nextIndex];
12096
- if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) {
12354
+ if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX || nextElement.controlComponent === ControlComponent.POST_TEXT) {
12097
12355
  break;
12098
12356
  }
12099
12357
  nextIndex++;
@@ -12132,7 +12390,7 @@ class DateControl {
12132
12390
  this.control.removePlaceholder(startIndex, context);
12133
12391
  }
12134
12392
  const startElement = elementList[startIndex];
12135
- const anchorElement = startElement.type && !TEXTLIKE_ELEMENT_TYPE.includes(startElement.type) || startElement.controlComponent === ControlComponent.PREFIX ? pickObject(startElement, [
12393
+ const anchorElement = startElement.type && !TEXTLIKE_ELEMENT_TYPE.includes(startElement.type) || startElement.controlComponent === ControlComponent.PREFIX || startElement.controlComponent === ControlComponent.PRE_TEXT ? pickObject(startElement, [
12136
12394
  "control",
12137
12395
  "controlId",
12138
12396
  ...CONTROL_STYLE_ATTR
@@ -12223,7 +12481,7 @@ class DateControl {
12223
12481
  }
12224
12482
  return startIndex;
12225
12483
  } else {
12226
- if (startElement.controlComponent === ControlComponent.PREFIX || endElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
12484
+ if (startElement.controlComponent === ControlComponent.PREFIX || startElement.controlComponent === ControlComponent.PRE_TEXT || endElement.controlComponent === ControlComponent.POSTFIX || endElement.controlComponent === ControlComponent.POST_TEXT || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
12227
12485
  return this.control.removeControl(startIndex);
12228
12486
  } else {
12229
12487
  draw.spliceElementList(elementList, startIndex, 1);
@@ -12244,7 +12502,7 @@ class DateControl {
12244
12502
  return startIndex;
12245
12503
  } else {
12246
12504
  const endNextElement = elementList[endIndex + 1];
12247
- if (startElement.controlComponent === ControlComponent.PREFIX && endNextElement.controlComponent === ControlComponent.PLACEHOLDER || endNextElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
12505
+ if ((startElement.controlComponent === ControlComponent.PREFIX || startElement.controlComponent === ControlComponent.PRE_TEXT) && endNextElement.controlComponent === ControlComponent.PLACEHOLDER || endNextElement.controlComponent === ControlComponent.POSTFIX || endNextElement.controlComponent === ControlComponent.POST_TEXT || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
12248
12506
  return this.control.removeControl(startIndex);
12249
12507
  } else {
12250
12508
  draw.spliceElementList(elementList, startIndex + 1, 1);
@@ -12327,6 +12585,7 @@ class Control {
12327
12585
  __publicField(this, "options");
12328
12586
  __publicField(this, "controlOptions");
12329
12587
  __publicField(this, "activeControl");
12588
+ __publicField(this, "activeControlValue");
12330
12589
  this.controlBorder = new ControlBorder(draw);
12331
12590
  this.draw = draw;
12332
12591
  this.range = draw.getRange();
@@ -12336,6 +12595,7 @@ class Control {
12336
12595
  this.options = draw.getOptions();
12337
12596
  this.controlOptions = this.options.control;
12338
12597
  this.activeControl = null;
12598
+ this.activeControlValue = [];
12339
12599
  }
12340
12600
  setHighlightList(payload) {
12341
12601
  this.controlSearch.setHighlightList(payload);
@@ -12356,8 +12616,8 @@ class Control {
12356
12616
  return this.draw;
12357
12617
  }
12358
12618
  filterAssistElement(elementList) {
12359
- return elementList.filter((element) => {
12360
- var _a;
12619
+ return elementList.filter((element, index2) => {
12620
+ var _a, _b, _c;
12361
12621
  if (element.type === ElementType.TABLE) {
12362
12622
  const trList = element.trList;
12363
12623
  for (let r = 0; r < trList.length; r++) {
@@ -12375,6 +12635,37 @@ class Control {
12375
12635
  element.value = "";
12376
12636
  return true;
12377
12637
  }
12638
+ } else {
12639
+ if (((_b = element.control) == null ? void 0 : _b.preText) && element.controlComponent === ControlComponent.PRE_TEXT) {
12640
+ let isExistValue = false;
12641
+ let start = index2 + 1;
12642
+ while (start < elementList.length) {
12643
+ const nextElement = elementList[start];
12644
+ if (element.controlId !== nextElement.controlId)
12645
+ break;
12646
+ if (nextElement.controlComponent === ControlComponent.VALUE) {
12647
+ isExistValue = true;
12648
+ break;
12649
+ }
12650
+ start++;
12651
+ }
12652
+ return isExistValue;
12653
+ }
12654
+ if (((_c = element.control) == null ? void 0 : _c.postText) && element.controlComponent === ControlComponent.POST_TEXT) {
12655
+ let isExistValue = false;
12656
+ let start = index2 - 1;
12657
+ while (start < elementList.length) {
12658
+ const preElement = elementList[start];
12659
+ if (element.controlId !== preElement.controlId)
12660
+ break;
12661
+ if (preElement.controlComponent === ControlComponent.VALUE) {
12662
+ isExistValue = true;
12663
+ break;
12664
+ }
12665
+ start--;
12666
+ }
12667
+ return isExistValue;
12668
+ }
12378
12669
  }
12379
12670
  return element.controlComponent !== ControlComponent.PREFIX && element.controlComponent !== ControlComponent.POSTFIX && element.controlComponent !== ControlComponent.PLACEHOLDER;
12380
12671
  });
@@ -12490,10 +12781,13 @@ class Control {
12490
12781
  getActiveControl() {
12491
12782
  return this.activeControl;
12492
12783
  }
12784
+ updateActiveControlValue() {
12785
+ if (this.activeControl) {
12786
+ this.activeControlValue = this.activeControl.getValue();
12787
+ }
12788
+ }
12493
12789
  initControl() {
12494
- const isReadonly = this.draw.isReadonly();
12495
- if (isReadonly)
12496
- return;
12790
+ var _a, _b;
12497
12791
  const elementList = this.getElementList();
12498
12792
  const range = this.getRange();
12499
12793
  const element = elementList[range.startIndex];
@@ -12506,10 +12800,15 @@ class Control {
12506
12800
  }
12507
12801
  }
12508
12802
  const controlElement = this.activeControl.getElement();
12509
- if (element.controlId === controlElement.controlId)
12803
+ if (element.controlId === controlElement.controlId) {
12804
+ this.updateActiveControlValue();
12510
12805
  return;
12806
+ }
12511
12807
  }
12512
12808
  this.destroyControl();
12809
+ const isReadonly = this.draw.isReadonly();
12810
+ if (isReadonly)
12811
+ return;
12513
12812
  const control = element.control;
12514
12813
  if (control.type === ControlType.TEXT) {
12515
12814
  this.activeControl = new TextControl(element, this);
@@ -12526,46 +12825,61 @@ class Control {
12526
12825
  this.activeControl = dateControl;
12527
12826
  dateControl.awake();
12528
12827
  }
12529
- nextTick(() => {
12530
- var _a;
12531
- const controlChangeListener = this.listener.controlChange;
12532
- const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
12533
- if (!controlChangeListener && !isSubscribeControlChange)
12534
- return;
12535
- let payload;
12536
- const value = (_a = this.activeControl) == null ? void 0 : _a.getValue();
12537
- if (value && value.length) {
12538
- payload = zipElementList(value)[0].control;
12828
+ this.updateActiveControlValue();
12829
+ const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
12830
+ if (this.listener.controlChange || isSubscribeControlChange) {
12831
+ let control2;
12832
+ const value = this.activeControlValue;
12833
+ if (value == null ? void 0 : value.length) {
12834
+ control2 = zipElementList(value)[0].control;
12539
12835
  } else {
12540
- payload = pickElementAttr(deepClone(element)).control;
12541
- }
12542
- if (controlChangeListener) {
12543
- controlChangeListener(payload);
12836
+ control2 = pickElementAttr(deepClone(element)).control;
12837
+ control2.value = [];
12544
12838
  }
12839
+ const payload = {
12840
+ control: control2,
12841
+ controlId: element.controlId,
12842
+ state: ControlState.ACTIVE
12843
+ };
12844
+ (_b = (_a = this.listener).controlChange) == null ? void 0 : _b.call(_a, payload);
12545
12845
  if (isSubscribeControlChange) {
12546
12846
  this.eventBus.emit("controlChange", payload);
12547
12847
  }
12548
- });
12848
+ }
12549
12849
  }
12550
- destroyControl() {
12551
- if (this.activeControl) {
12552
- if (this.activeControl instanceof SelectControl || this.activeControl instanceof DateControl) {
12553
- this.activeControl.destroy();
12554
- }
12555
- this.activeControl = null;
12556
- nextTick(() => {
12557
- const controlChangeListener = this.listener.controlChange;
12558
- const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
12559
- if (!controlChangeListener && !isSubscribeControlChange)
12560
- return;
12561
- if (controlChangeListener) {
12562
- controlChangeListener(null);
12850
+ destroyControl(options = {}) {
12851
+ var _a, _b;
12852
+ if (!this.activeControl)
12853
+ return;
12854
+ const { isEmitEvent = true } = options;
12855
+ if (this.activeControl instanceof SelectControl || this.activeControl instanceof DateControl) {
12856
+ this.activeControl.destroy();
12857
+ }
12858
+ if (isEmitEvent) {
12859
+ const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
12860
+ if (this.listener.controlChange || isSubscribeControlChange) {
12861
+ let control;
12862
+ const value = this.activeControlValue;
12863
+ const activeElement = this.activeControl.getElement();
12864
+ if (value == null ? void 0 : value.length) {
12865
+ control = zipElementList(value)[0].control;
12866
+ } else {
12867
+ control = pickElementAttr(deepClone(activeElement)).control;
12868
+ control.value = [];
12563
12869
  }
12870
+ const payload = {
12871
+ control,
12872
+ controlId: activeElement.controlId,
12873
+ state: ControlState.INACTIVE
12874
+ };
12875
+ (_b = (_a = this.listener).controlChange) == null ? void 0 : _b.call(_a, payload);
12564
12876
  if (isSubscribeControlChange) {
12565
- this.eventBus.emit("controlChange", null);
12877
+ this.eventBus.emit("controlChange", payload);
12566
12878
  }
12567
- });
12879
+ }
12568
12880
  }
12881
+ this.activeControl = null;
12882
+ this.activeControlValue = [];
12569
12883
  }
12570
12884
  repaintControl(options = {}) {
12571
12885
  const { curIndex, isCompute = true, isSubmitHistory = true, isSetCursor = true } = options;
@@ -12626,11 +12940,11 @@ class Control {
12626
12940
  }
12627
12941
  startIndex++;
12628
12942
  }
12629
- } else if (element.controlComponent === ControlComponent.PREFIX) {
12943
+ } else if (element.controlComponent === ControlComponent.PREFIX || element.controlComponent === ControlComponent.PRE_TEXT) {
12630
12944
  let startIndex = newIndex + 1;
12631
12945
  while (startIndex < elementList.length) {
12632
12946
  const nextElement = elementList[startIndex];
12633
- if (nextElement.controlId !== element.controlId || nextElement.controlComponent !== ControlComponent.PREFIX) {
12947
+ if (nextElement.controlId !== element.controlId || nextElement.controlComponent !== ControlComponent.PREFIX && nextElement.controlComponent !== ControlComponent.PRE_TEXT) {
12634
12948
  return {
12635
12949
  newIndex: startIndex - 1,
12636
12950
  newElement: elementList[startIndex - 1]
@@ -12638,11 +12952,11 @@ class Control {
12638
12952
  }
12639
12953
  startIndex++;
12640
12954
  }
12641
- } else if (element.controlComponent === ControlComponent.PLACEHOLDER) {
12955
+ } else if (element.controlComponent === ControlComponent.PLACEHOLDER || element.controlComponent === ControlComponent.POST_TEXT) {
12642
12956
  let startIndex = newIndex - 1;
12643
12957
  while (startIndex > 0) {
12644
12958
  const preElement = elementList[startIndex];
12645
- if (preElement.controlId !== element.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
12959
+ if (preElement.controlId !== element.controlId || preElement.controlComponent === ControlComponent.VALUE || preElement.controlComponent === ControlComponent.PREFIX || preElement.controlComponent === ControlComponent.PRE_TEXT) {
12646
12960
  return {
12647
12961
  newIndex: startIndex,
12648
12962
  newElement: elementList[startIndex]
@@ -12728,7 +13042,7 @@ class Control {
12728
13042
  for (let p = 0; p < placeholderStrList.length; p++) {
12729
13043
  const value = placeholderStrList[p];
12730
13044
  const newElement = __spreadProps(__spreadValues({}, anchorElementStyleAttr), {
12731
- value,
13045
+ value: value === "\n" ? ZERO : value,
12732
13046
  controlId: startElement.controlId,
12733
13047
  type: ElementType.CONTROL,
12734
13048
  control: startElement.control,
@@ -12747,6 +13061,27 @@ class Control {
12747
13061
  }
12748
13062
  return this.activeControl.setValue(data2);
12749
13063
  }
13064
+ setControlProperties(properties, context = {}) {
13065
+ const elementList = context.elementList || this.getElementList();
13066
+ const { startIndex } = context.range || this.getRange();
13067
+ const startElement = elementList[startIndex];
13068
+ let preIndex = startIndex;
13069
+ while (preIndex > 0) {
13070
+ const preElement = elementList[preIndex];
13071
+ if (preElement.controlId !== startElement.controlId)
13072
+ break;
13073
+ preElement.control = __spreadValues(__spreadValues({}, preElement.control), properties);
13074
+ preIndex--;
13075
+ }
13076
+ let nextIndex = startIndex + 1;
13077
+ while (nextIndex < elementList.length) {
13078
+ const nextElement = elementList[nextIndex];
13079
+ if (nextElement.controlId !== startElement.controlId)
13080
+ break;
13081
+ nextElement.control = __spreadValues(__spreadValues({}, nextElement.control), properties);
13082
+ nextIndex++;
13083
+ }
13084
+ }
12750
13085
  keydown(evt) {
12751
13086
  if (!this.activeControl) {
12752
13087
  throw new Error("active control is null");
@@ -12760,7 +13095,7 @@ class Control {
12760
13095
  return this.activeControl.cut();
12761
13096
  }
12762
13097
  getValueById(payload) {
12763
- const { id, conceptId } = payload;
13098
+ const { id, conceptId, areaId } = payload;
12764
13099
  const result = [];
12765
13100
  if (!id && !conceptId)
12766
13101
  return result;
@@ -12779,7 +13114,7 @@ class Control {
12779
13114
  }
12780
13115
  }
12781
13116
  }
12782
- if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) {
13117
+ if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId || areaId && element.areaId !== areaId) {
12783
13118
  continue;
12784
13119
  }
12785
13120
  const { type, code, valueSets } = element.control;
@@ -12838,7 +13173,7 @@ class Control {
12838
13173
  }
12839
13174
  setValueById(payload) {
12840
13175
  let isExistSet = false;
12841
- const { id, conceptId, value } = payload;
13176
+ const { id, conceptId, areaId, value } = payload;
12842
13177
  if (!id && !conceptId)
12843
13178
  return;
12844
13179
  const setValue = (elementList) => {
@@ -12856,7 +13191,7 @@ class Control {
12856
13191
  }
12857
13192
  }
12858
13193
  }
12859
- if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) {
13194
+ if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId || areaId && element.areaId !== areaId) {
12860
13195
  continue;
12861
13196
  }
12862
13197
  isExistSet = true;
@@ -12938,7 +13273,9 @@ class Control {
12938
13273
  i = newEndIndex;
12939
13274
  }
12940
13275
  };
12941
- this.destroyControl();
13276
+ this.destroyControl({
13277
+ isEmitEvent: false
13278
+ });
12942
13279
  const data2 = [
12943
13280
  this.draw.getHeaderElementList(),
12944
13281
  this.draw.getOriginalMainElementList(),
@@ -12954,7 +13291,7 @@ class Control {
12954
13291
  }
12955
13292
  }
12956
13293
  setExtensionById(payload) {
12957
- const { id, conceptId, extension } = payload;
13294
+ const { id, conceptId, areaId, extension } = payload;
12958
13295
  if (!id && !conceptId)
12959
13296
  return;
12960
13297
  const setExtension = (elementList) => {
@@ -12972,10 +13309,15 @@ class Control {
12972
13309
  }
12973
13310
  }
12974
13311
  }
12975
- if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) {
13312
+ if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId || areaId && element.areaId !== areaId) {
12976
13313
  continue;
12977
13314
  }
12978
- element.control.extension = extension;
13315
+ this.setControlProperties({
13316
+ extension
13317
+ }, {
13318
+ elementList,
13319
+ range: { startIndex: i, endIndex: i }
13320
+ });
12979
13321
  let newEndIndex = i;
12980
13322
  while (newEndIndex < elementList.length) {
12981
13323
  const nextElement = elementList[newEndIndex];
@@ -12996,11 +13338,11 @@ class Control {
12996
13338
  }
12997
13339
  }
12998
13340
  setPropertiesById(payload) {
12999
- const { id, conceptId, properties } = payload;
13341
+ const { id, conceptId, areaId, properties } = payload;
13000
13342
  if (!id && !conceptId)
13001
13343
  return;
13002
13344
  let isExistUpdate = false;
13003
- function setProperties(elementList) {
13345
+ const setProperties = (elementList) => {
13004
13346
  let i = 0;
13005
13347
  while (i < elementList.length) {
13006
13348
  const element = elementList[i];
@@ -13015,12 +13357,15 @@ class Control {
13015
13357
  }
13016
13358
  }
13017
13359
  }
13018
- if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId) {
13360
+ if (!element.control || id && element.controlId !== id || conceptId && element.control.conceptId !== conceptId || areaId && element.areaId !== areaId) {
13019
13361
  continue;
13020
13362
  }
13021
13363
  isExistUpdate = true;
13022
- element.control = __spreadProps(__spreadValues(__spreadValues({}, element.control), properties), {
13364
+ this.setControlProperties(__spreadProps(__spreadValues(__spreadValues({}, element.control), properties), {
13023
13365
  value: element.control.value
13366
+ }), {
13367
+ elementList,
13368
+ range: { startIndex: i, endIndex: i }
13024
13369
  });
13025
13370
  CONTROL_STYLE_ATTR.forEach((key) => {
13026
13371
  const controlStyleProperty = properties[key];
@@ -13037,7 +13382,7 @@ class Control {
13037
13382
  }
13038
13383
  i = newEndIndex;
13039
13384
  }
13040
- }
13385
+ };
13041
13386
  const pageComponentData = {
13042
13387
  header: this.draw.getHeaderElementList(),
13043
13388
  main: this.draw.getOriginalMainElementList(),
@@ -13051,7 +13396,9 @@ class Control {
13051
13396
  return;
13052
13397
  for (const key in pageComponentData) {
13053
13398
  const pageComponentKey = key;
13054
- const elementList = zipElementList(pageComponentData[pageComponentKey]);
13399
+ const elementList = zipElementList(pageComponentData[pageComponentKey], {
13400
+ isClassifyArea: true
13401
+ });
13055
13402
  pageComponentData[pageComponentKey] = elementList;
13056
13403
  formatElementList(elementList, {
13057
13404
  editorOptions: this.options,
@@ -13148,7 +13495,7 @@ class Control {
13148
13495
  let nextIndex = e;
13149
13496
  while (nextIndex > 0) {
13150
13497
  const nextElement = elementList2[nextIndex];
13151
- if (nextElement.controlComponent === ControlComponent.VALUE || nextElement.controlComponent === ControlComponent.PREFIX) {
13498
+ if (nextElement.controlComponent === ControlComponent.VALUE || nextElement.controlComponent === ControlComponent.PREFIX || nextElement.controlComponent === ControlComponent.PRE_TEXT) {
13152
13499
  break;
13153
13500
  }
13154
13501
  nextIndex--;
@@ -13220,6 +13567,7 @@ class Control {
13220
13567
  return null;
13221
13568
  const controlElement = this.activeControl.getElement();
13222
13569
  function getNextContext(elementList2, start) {
13570
+ var _a, _b;
13223
13571
  for (let e = start; e < elementList2.length; e++) {
13224
13572
  const element = elementList2[e];
13225
13573
  if (element.type === ElementType.TABLE) {
@@ -13247,7 +13595,7 @@ class Control {
13247
13595
  }
13248
13596
  }
13249
13597
  }
13250
- if (!element.controlId || element.controlId === controlElement.controlId) {
13598
+ if (!element.controlId || element.controlId === controlElement.controlId || ((_a = elementList2[e + 1]) == null ? void 0 : _a.controlComponent) === ControlComponent.PREFIX || ((_b = elementList2[e + 1]) == null ? void 0 : _b.controlComponent) === ControlComponent.PRE_TEXT) {
13251
13599
  continue;
13252
13600
  }
13253
13601
  return {
@@ -13533,7 +13881,7 @@ function WorkerWrapper$2() {
13533
13881
  objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
13534
13882
  }
13535
13883
  }
13536
- const encodedJs$1 = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBsOyhmdW5jdGlvbih0KXt0LlRFWFQ9InRleHQiLHQuSU1BR0U9ImltYWdlIix0LlRBQkxFPSJ0YWJsZSIsdC5IWVBFUkxJTks9Imh5cGVybGluayIsdC5TVVBFUlNDUklQVD0ic3VwZXJzY3JpcHQiLHQuU1VCU0NSSVBUPSJzdWJzY3JpcHQiLHQuU0VQQVJBVE9SPSJzZXBhcmF0b3IiLHQuUEFHRV9CUkVBSz0icGFnZUJyZWFrIix0LkNPTlRST0w9ImNvbnRyb2wiLHQuQ0hFQ0tCT1g9ImNoZWNrYm94Iix0LlJBRElPPSJyYWRpbyIsdC5MQVRFWD0ibGF0ZXgiLHQuVEFCPSJ0YWIiLHQuREFURT0iZGF0ZSIsdC5CTE9DSz0iYmxvY2siLHQuVElUTEU9InRpdGxlIix0LkxJU1Q9Imxpc3QifSkobHx8KGw9e30pKTt2YXIgYTsoZnVuY3Rpb24odCl7dC5GSVJTVD0iZmlyc3QiLHQuU0VDT05EPSJzZWNvbmQiLHQuVEhJUkQ9InRoaXJkIix0LkZPVVJUSD0iZm91cnRoIix0LkZJRlRIPSJmaWZ0aCIsdC5TSVhUSD0ic2l4dGgifSkoYXx8KGE9e30pKTtjb25zdCBnPXtbYS5GSVJTVF06MSxbYS5TRUNPTkRdOjIsW2EuVEhJUkRdOjMsW2EuRk9VUlRIXTo0LFthLkZJRlRIXTo1LFthLlNJWFRIXTo2fSxMPVtsLlRFWFQsbC5IWVBFUkxJTkssbC5TVUJTQ1JJUFQsbC5TVVBFUlNDUklQVCxsLkNPTlRST0wsbC5EQVRFXSxUPSJcdTIwMEIiO2Z1bmN0aW9uIGQodCl7cmV0dXJuIXQudHlwZXx8TC5pbmNsdWRlcyh0LnR5cGUpfWZ1bmN0aW9uIGYodCl7Y29uc3R7ZWxlbWVudExpc3Q6bixwb3NpdGlvbkxpc3Q6dn09dCxJPVtdO2xldCBpPTA7Zm9yKDtpPG4ubGVuZ3RoOyl7Y29uc3Qgcz1uW2ldO2lmKHMudGl0bGVJZCl7Y29uc3QgZT1zLnRpdGxlSWQsbz1zLmxldmVsLGM9e3R5cGU6bC5USVRMRSx2YWx1ZToiIixsZXZlbDpvLHRpdGxlSWQ6ZSxwYWdlTm86dltpXS5wYWdlTm99LHI9W107Zm9yKDtpPG4ubGVuZ3RoOyl7Y29uc3QgdT1uW2ldO2lmKGUhPT11LnRpdGxlSWQpe2ktLTticmVha31yLnB1c2godSksaSsrfWMudmFsdWU9ci5maWx0ZXIodT0+ZCh1KSkubWFwKHU9PnUudmFsdWUpLmpvaW4oIiIpLnJlcGxhY2UobmV3IFJlZ0V4cChULCJnIiksIiIpLEkucHVzaChjKX1pKyt9aWYoIUkubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGg9KHMsZSk9Pntjb25zdCBvPWUuc3ViQ2F0YWxvZ1tlLnN1YkNhdGFsb2cubGVuZ3RoLTFdLGM9Z1tvPT1udWxsP3ZvaWQgMDpvLmxldmVsXSxyPWdbcy5sZXZlbF07byYmcj5jP2gocyxvKTplLnN1YkNhdGFsb2cucHVzaCh7aWQ6cy50aXRsZUlkLG5hbWU6cy52YWx1ZSxsZXZlbDpzLmxldmVsLHBhZ2VObzpzLnBhZ2VObyxzdWJDYXRhbG9nOltdfSl9LFI9W107Zm9yKGxldCBzPTA7czxJLmxlbmd0aDtzKyspe2NvbnN0IGU9SVtzXSxvPVJbUi5sZW5ndGgtMV0sYz1nW289PW51bGw/dm9pZCAwOm8ubGV2ZWxdLHI9Z1tlLmxldmVsXTtvJiZyPmM/aChlLG8pOlIucHVzaCh7aWQ6ZS50aXRsZUlkLG5hbWU6ZS52YWx1ZSxsZXZlbDplLmxldmVsLHBhZ2VObzplLnBhZ2VObyxzdWJDYXRhbG9nOltdfSl9cmV0dXJuIFJ9b25tZXNzYWdlPXQ9Pntjb25zdCBuPXQuZGF0YSx2PWYobik7cG9zdE1lc3NhZ2Uodil9fSkoKTt9KSgpOwo=";
13884
+ const encodedJs$1 = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhOyhmdW5jdGlvbih0KXt0LlRFWFQ9InRleHQiLHQuSU1BR0U9ImltYWdlIix0LlRBQkxFPSJ0YWJsZSIsdC5IWVBFUkxJTks9Imh5cGVybGluayIsdC5TVVBFUlNDUklQVD0ic3VwZXJzY3JpcHQiLHQuU1VCU0NSSVBUPSJzdWJzY3JpcHQiLHQuU0VQQVJBVE9SPSJzZXBhcmF0b3IiLHQuUEFHRV9CUkVBSz0icGFnZUJyZWFrIix0LkNPTlRST0w9ImNvbnRyb2wiLHQuQ0hFQ0tCT1g9ImNoZWNrYm94Iix0LlJBRElPPSJyYWRpbyIsdC5MQVRFWD0ibGF0ZXgiLHQuVEFCPSJ0YWIiLHQuREFURT0iZGF0ZSIsdC5CTE9DSz0iYmxvY2siLHQuVElUTEU9InRpdGxlIix0LkFSRUE9ImFyZWEiLHQuTElTVD0ibGlzdCJ9KShhfHwoYT17fSkpO3ZhciBsOyhmdW5jdGlvbih0KXt0LkZJUlNUPSJmaXJzdCIsdC5TRUNPTkQ9InNlY29uZCIsdC5USElSRD0idGhpcmQiLHQuRk9VUlRIPSJmb3VydGgiLHQuRklGVEg9ImZpZnRoIix0LlNJWFRIPSJzaXh0aCJ9KShsfHwobD17fSkpO2NvbnN0IGc9e1tsLkZJUlNUXToxLFtsLlNFQ09ORF06MixbbC5USElSRF06MyxbbC5GT1VSVEhdOjQsW2wuRklGVEhdOjUsW2wuU0lYVEhdOjZ9LEw9W2EuVEVYVCxhLkhZUEVSTElOSyxhLlNVQlNDUklQVCxhLlNVUEVSU0NSSVBULGEuQ09OVFJPTCxhLkRBVEVdLGQ9Ilx1MjAwQiI7ZnVuY3Rpb24gZih0KXtyZXR1cm4hdC50eXBlfHxMLmluY2x1ZGVzKHQudHlwZSl9ZnVuY3Rpb24gQyh0KXtjb25zdHtlbGVtZW50TGlzdDpuLHBvc2l0aW9uTGlzdDp2fT10LEk9W107bGV0IGk9MDtmb3IoO2k8bi5sZW5ndGg7KXtjb25zdCBzPW5baV07aWYocy50aXRsZUlkKXtjb25zdCBvPXMudGl0bGVJZCxlPXMubGV2ZWwsYz17dHlwZTphLlRJVExFLHZhbHVlOiIiLGxldmVsOmUsdGl0bGVJZDpvLHBhZ2VObzp2W2ldLnBhZ2VOb30scj1bXTtmb3IoO2k8bi5sZW5ndGg7KXtjb25zdCB1PW5baV07aWYobyE9PXUudGl0bGVJZCl7aS0tO2JyZWFrfXIucHVzaCh1KSxpKyt9Yy52YWx1ZT1yLmZpbHRlcih1PT5mKHUpKS5tYXAodT0+dS52YWx1ZSkuam9pbigiIikucmVwbGFjZShuZXcgUmVnRXhwKGQsImciKSwiIiksSS5wdXNoKGMpfWkrK31pZighSS5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgaD0ocyxvKT0+e2NvbnN0IGU9by5zdWJDYXRhbG9nW28uc3ViQ2F0YWxvZy5sZW5ndGgtMV0sYz1nW2U9PW51bGw/dm9pZCAwOmUubGV2ZWxdLHI9Z1tzLmxldmVsXTtlJiZyPmM/aChzLGUpOm8uc3ViQ2F0YWxvZy5wdXNoKHtpZDpzLnRpdGxlSWQsbmFtZTpzLnZhbHVlLGxldmVsOnMubGV2ZWwscGFnZU5vOnMucGFnZU5vLHN1YkNhdGFsb2c6W119KX0sUj1bXTtmb3IobGV0IHM9MDtzPEkubGVuZ3RoO3MrKyl7Y29uc3Qgbz1JW3NdLGU9UltSLmxlbmd0aC0xXSxjPWdbZT09bnVsbD92b2lkIDA6ZS5sZXZlbF0scj1nW28ubGV2ZWxdO2UmJnI+Yz9oKG8sZSk6Ui5wdXNoKHtpZDpvLnRpdGxlSWQsbmFtZTpvLnZhbHVlLGxldmVsOm8ubGV2ZWwscGFnZU5vOm8ucGFnZU5vLHN1YkNhdGFsb2c6W119KX1yZXR1cm4gUn1vbm1lc3NhZ2U9dD0+e2NvbnN0IG49dC5kYXRhLHY9QyhuKTtwb3N0TWVzc2FnZSh2KX19KSgpO30pKCk7Cg==";
13537
13885
  const blob$1 = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs$1)], { type: "text/javascript;charset=utf-8" });
13538
13886
  function WorkerWrapper$1() {
13539
13887
  const objURL = blob$1 && (window.URL || window.webkitURL).createObjectURL(blob$1);
@@ -15967,6 +16315,23 @@ class TableOperate {
15967
16315
  curIndex: endIndex
15968
16316
  });
15969
16317
  }
16318
+ tableBorderColor(payload) {
16319
+ const positionContext = this.position.getPositionContext();
16320
+ if (!positionContext.isTable)
16321
+ return;
16322
+ const { index: index2 } = positionContext;
16323
+ const originalElementList = this.draw.getOriginalElementList();
16324
+ const element = originalElementList[index2];
16325
+ if (!element.borderColor && payload === this.options.table.defaultBorderColor || element.borderColor === payload) {
16326
+ return;
16327
+ }
16328
+ element.borderColor = payload;
16329
+ const { endIndex } = this.range.getRange();
16330
+ this.draw.render({
16331
+ curIndex: endIndex,
16332
+ isCompute: false
16333
+ });
16334
+ }
15970
16335
  tableTdBorderType(payload) {
15971
16336
  const rowCol = this.tableParticle.getRangeRowCol();
15972
16337
  if (!rowCol)
@@ -16073,6 +16438,178 @@ class TableOperate {
16073
16438
  });
16074
16439
  }
16075
16440
  }
16441
+ var AreaMode;
16442
+ (function(AreaMode2) {
16443
+ AreaMode2["EDIT"] = "edit";
16444
+ AreaMode2["READONLY"] = "readonly";
16445
+ AreaMode2["FORM"] = "form";
16446
+ })(AreaMode || (AreaMode = {}));
16447
+ class Area {
16448
+ constructor(draw) {
16449
+ __publicField(this, "draw");
16450
+ __publicField(this, "zone");
16451
+ __publicField(this, "range");
16452
+ __publicField(this, "position");
16453
+ __publicField(this, "areaInfoMap", new Map());
16454
+ this.draw = draw;
16455
+ this.zone = draw.getZone();
16456
+ this.range = draw.getRange();
16457
+ this.position = draw.getPosition();
16458
+ }
16459
+ getActiveAreaId() {
16460
+ if (!this.areaInfoMap.size)
16461
+ return null;
16462
+ const { startIndex } = this.range.getRange();
16463
+ const elementList = this.draw.getElementList();
16464
+ const element = elementList[startIndex];
16465
+ return (element == null ? void 0 : element.areaId) || null;
16466
+ }
16467
+ getActiveAreaInfo() {
16468
+ const activeAreaId = this.getActiveAreaId();
16469
+ if (!activeAreaId)
16470
+ return null;
16471
+ return this.areaInfoMap.get(activeAreaId) || null;
16472
+ }
16473
+ isReadonly() {
16474
+ const activeAreaInfo = this.getActiveAreaInfo();
16475
+ if (!(activeAreaInfo == null ? void 0 : activeAreaInfo.area))
16476
+ return false;
16477
+ switch (activeAreaInfo.area.mode) {
16478
+ case AreaMode.EDIT:
16479
+ return false;
16480
+ case AreaMode.READONLY:
16481
+ return true;
16482
+ case AreaMode.FORM:
16483
+ return !this.draw.getControl().getIsRangeWithinControl();
16484
+ default:
16485
+ return false;
16486
+ }
16487
+ }
16488
+ insertArea(payload) {
16489
+ if (this.zone.getZone() !== EditorZone.MAIN) {
16490
+ this.zone.setZone(EditorZone.MAIN);
16491
+ }
16492
+ this.draw.getPosition().setPositionContext({
16493
+ isTable: false
16494
+ });
16495
+ const { id, value, area, position } = payload;
16496
+ if (position === LocationPosition.BEFORE) {
16497
+ this.range.setRange(0, 0);
16498
+ } else {
16499
+ const elementList = this.draw.getOriginalMainElementList();
16500
+ const lastIndex = elementList.length - 1;
16501
+ this.range.setRange(lastIndex, lastIndex);
16502
+ }
16503
+ const areaId = id || getUUID();
16504
+ this.draw.insertElementList([
16505
+ {
16506
+ type: ElementType.AREA,
16507
+ value: "",
16508
+ areaId,
16509
+ valueList: value,
16510
+ area: deepClone(area)
16511
+ }
16512
+ ]);
16513
+ return areaId;
16514
+ }
16515
+ render(ctx, pageNo) {
16516
+ if (!this.areaInfoMap.size)
16517
+ return;
16518
+ ctx.save();
16519
+ const margins = this.draw.getMargins();
16520
+ const width = this.draw.getInnerWidth();
16521
+ for (const areaInfoItem of this.areaInfoMap) {
16522
+ const { area, positionList } = areaInfoItem[1];
16523
+ if (!(area == null ? void 0 : area.backgroundColor) && !(area == null ? void 0 : area.borderColor))
16524
+ continue;
16525
+ const pagePositionList = positionList.filter((p) => p.pageNo === pageNo);
16526
+ if (!pagePositionList.length)
16527
+ continue;
16528
+ ctx.translate(0.5, 0.5);
16529
+ const firstPosition = pagePositionList[0];
16530
+ const lastPosition = pagePositionList[pagePositionList.length - 1];
16531
+ const x = margins[3];
16532
+ const y = Math.ceil(firstPosition.coordinate.leftTop[1]);
16533
+ const height = Math.ceil(lastPosition.coordinate.rightBottom[1] - y);
16534
+ if (area.backgroundColor) {
16535
+ ctx.fillStyle = area.backgroundColor;
16536
+ ctx.fillRect(x, y, width, height);
16537
+ }
16538
+ if (area.borderColor) {
16539
+ ctx.strokeStyle = area.borderColor;
16540
+ ctx.strokeRect(x, y, width, height);
16541
+ }
16542
+ }
16543
+ ctx.restore();
16544
+ }
16545
+ compute() {
16546
+ this.areaInfoMap.clear();
16547
+ const elementList = this.draw.getOriginalMainElementList();
16548
+ const positionList = this.position.getOriginalMainPositionList();
16549
+ for (let e = 0; e < elementList.length; e++) {
16550
+ const element = elementList[e];
16551
+ const areaId = element.areaId;
16552
+ if (areaId) {
16553
+ const areaInfo = this.areaInfoMap.get(areaId);
16554
+ if (!areaInfo) {
16555
+ this.areaInfoMap.set(areaId, {
16556
+ id: areaId,
16557
+ area: element.area,
16558
+ elementList: [element],
16559
+ positionList: [positionList[e]]
16560
+ });
16561
+ } else {
16562
+ areaInfo.elementList.push(element);
16563
+ areaInfo.positionList.push(positionList[e]);
16564
+ }
16565
+ }
16566
+ }
16567
+ }
16568
+ getAreaValue(options = {}) {
16569
+ const areaId = options.id || this.getActiveAreaId();
16570
+ if (!areaId)
16571
+ return null;
16572
+ const areaInfo = this.areaInfoMap.get(areaId);
16573
+ if (!areaInfo)
16574
+ return null;
16575
+ return {
16576
+ area: areaInfo.area,
16577
+ id: areaInfo.id,
16578
+ startPageNo: areaInfo.positionList[0].pageNo,
16579
+ endPageNo: areaInfo.positionList[areaInfo.positionList.length - 1].pageNo,
16580
+ value: zipElementList(areaInfo.elementList)
16581
+ };
16582
+ }
16583
+ setAreaProperties(payload) {
16584
+ const areaId = payload.id || this.getActiveAreaId();
16585
+ if (!areaId)
16586
+ return;
16587
+ const areaInfo = this.areaInfoMap.get(areaId);
16588
+ if (!areaInfo)
16589
+ return;
16590
+ if (!areaInfo.area) {
16591
+ areaInfo.area = {};
16592
+ }
16593
+ let isCompute = false;
16594
+ if (payload.properties.mode) {
16595
+ areaInfo.area.mode = payload.properties.mode;
16596
+ }
16597
+ if (payload.properties.borderColor) {
16598
+ areaInfo.area.borderColor = payload.properties.borderColor;
16599
+ }
16600
+ if (payload.properties.backgroundColor) {
16601
+ areaInfo.area.backgroundColor = payload.properties.backgroundColor;
16602
+ }
16603
+ if (!isNonValue(payload.properties.top)) {
16604
+ isCompute = true;
16605
+ areaInfo.area.top = payload.properties.top;
16606
+ }
16607
+ this.draw.render({
16608
+ isCompute,
16609
+ isSetCursor: false
16610
+ });
16611
+ }
16612
+ }
16076
16613
  class Draw {
16077
16614
  constructor(rootContainer, options, data2, listener, eventBus, override) {
16078
16615
  __publicField(this, "container");
@@ -16098,6 +16635,7 @@ class Draw {
16098
16635
  __publicField(this, "background");
16099
16636
  __publicField(this, "search");
16100
16637
  __publicField(this, "group");
16638
+ __publicField(this, "area");
16101
16639
  __publicField(this, "underline");
16102
16640
  __publicField(this, "strikeout");
16103
16641
  __publicField(this, "highlight");
@@ -16165,6 +16703,7 @@ class Draw {
16165
16703
  this.background = new Background(this);
16166
16704
  this.search = new Search(this);
16167
16705
  this.group = new Group(this);
16706
+ this.area = new Area(this);
16168
16707
  this.underline = new Underline(this);
16169
16708
  this.strikeout = new Strikeout(this);
16170
16709
  this.highlight = new Highlight(this);
@@ -16258,6 +16797,9 @@ class Draw {
16258
16797
  });
16259
16798
  }
16260
16799
  isReadonly() {
16800
+ if (this.area.getActiveAreaId()) {
16801
+ return this.area.isReadonly();
16802
+ }
16261
16803
  switch (this.mode) {
16262
16804
  case EditorMode.DESIGN:
16263
16805
  return false;
@@ -16451,6 +16993,9 @@ class Draw {
16451
16993
  getGroup() {
16452
16994
  return this.group;
16453
16995
  }
16996
+ getArea() {
16997
+ return this.area;
16998
+ }
16454
16999
  getHistoryManager() {
16455
17000
  return this.historyManager;
16456
17001
  }
@@ -16877,7 +17422,8 @@ class Draw {
16877
17422
  extraPickAttrs
16878
17423
  }),
16879
17424
  main: zipElementList(mainElementList, {
16880
- extraPickAttrs
17425
+ extraPickAttrs,
17426
+ isClassifyArea: true
16881
17427
  }),
16882
17428
  footer: zipElementList(this.getFooterElementList(), {
16883
17429
  extraPickAttrs
@@ -16989,9 +17535,9 @@ class Draw {
16989
17535
  return defaultBasicRowMarginHeight * ((_a = el.rowMargin) != null ? _a : defaultRowMargin) * scale;
16990
17536
  }
16991
17537
  computeRowList(payload) {
16992
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
17538
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
16993
17539
  const { innerWidth, elementList, isPagingMode = false, isFromTable = false, startX = 0, startY = 0, pageHeight = 0, mainOuterHeight = 0, surroundElementList = [] } = payload;
16994
- const { defaultSize, defaultRowMargin, scale, table: { tdPadding }, defaultTabWidth } = this.options;
17540
+ const { defaultSize, defaultRowMargin, scale, table: { tdPadding, defaultTrMinHeight }, defaultTabWidth } = this.options;
16995
17541
  const defaultBasicRowMarginHeight = this.getDefaultBasicRowMarginHeight();
16996
17542
  const canvas = document.createElement("canvas");
16997
17543
  const ctx = canvas.getContext("2d");
@@ -17026,7 +17572,9 @@ class Draw {
17026
17572
  };
17027
17573
  const offsetX = curRow.offsetX || element.listId && listStyleMap.get(element.listId) || 0;
17028
17574
  const availableWidth = innerWidth - offsetX;
17029
- x += curRow.elementList.length === 1 ? offsetX : 0;
17575
+ const isStartElement = curRow.elementList.length === 1;
17576
+ x += isStartElement ? offsetX : 0;
17577
+ y += isStartElement ? curRow.offsetY || 0 : 0;
17030
17578
  if (element.type === ElementType.IMAGE || element.type === ElementType.LATEX) {
17031
17579
  if (element.imgDisplay === ImageDisplay.SURROUND || element.imgDisplay === ImageDisplay.FLOAT_TOP || element.imgDisplay === ImageDisplay.FLOAT_BOTTOM) {
17032
17580
  metrics.width = 0;
@@ -17072,8 +17620,12 @@ class Draw {
17072
17620
  }
17073
17621
  }
17074
17622
  element.pagingIndex = (_d = element.pagingIndex) != null ? _d : 0;
17075
- this.tableParticle.computeRowColInfo(element);
17076
17623
  const trList = element.trList;
17624
+ for (let t = 0; t < trList.length; t++) {
17625
+ const tr = trList[t];
17626
+ tr.height = tr.minHeight || defaultTrMinHeight;
17627
+ }
17628
+ this.tableParticle.computeRowColInfo(element);
17077
17629
  for (let t = 0; t < trList.length; t++) {
17078
17630
  const tr = trList[t];
17079
17631
  for (let d = 0; d < tr.tdList.length; d++) {
@@ -17093,6 +17645,11 @@ class Draw {
17093
17645
  changeTr.height += extraHeight;
17094
17646
  changeTr.tdList.forEach((changeTd) => {
17095
17647
  changeTd.height += extraHeight;
17648
+ if (!changeTd.realHeight) {
17649
+ changeTd.realHeight = changeTd.height;
17650
+ } else {
17651
+ changeTd.realHeight += extraHeight;
17652
+ }
17096
17653
  });
17097
17654
  }
17098
17655
  let curTdMinHeight = 0;
@@ -17128,6 +17685,7 @@ class Draw {
17128
17685
  changeTr.height -= reduceHeight;
17129
17686
  changeTr.tdList.forEach((changeTd) => {
17130
17687
  changeTd.height -= reduceHeight;
17688
+ changeTd.realHeight -= reduceHeight;
17131
17689
  });
17132
17690
  }
17133
17691
  }
@@ -17151,10 +17709,11 @@ class Draw {
17151
17709
  let curPagePreHeight = marginHeight;
17152
17710
  for (let r = 0; r < rowList.length; r++) {
17153
17711
  const row = rowList[r];
17154
- if (row.height + curPagePreHeight > height2 || ((_f = rowList[r - 1]) == null ? void 0 : _f.isPageBreak)) {
17155
- curPagePreHeight = marginHeight + row.height;
17712
+ const rowOffsetY = row.offsetY || 0;
17713
+ if (row.height + curPagePreHeight + rowOffsetY > height2 || ((_f = rowList[r - 1]) == null ? void 0 : _f.isPageBreak)) {
17714
+ curPagePreHeight = marginHeight + row.height + rowOffsetY;
17156
17715
  } else {
17157
- curPagePreHeight += row.height;
17716
+ curPagePreHeight += row.height + rowOffsetY;
17158
17717
  }
17159
17718
  }
17160
17719
  const rowMarginHeight = rowMargin * 2 * scale;
@@ -17354,7 +17913,7 @@ class Draw {
17354
17913
  x = surroundPosition.x;
17355
17914
  curRowWidth += surroundPosition.rowIncreaseWidth;
17356
17915
  x += metrics.width;
17357
- 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;
17916
+ 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;
17358
17917
  const isWidthNotEnough = curRowWidth > availableWidth;
17359
17918
  const isWrap = isForceBreak || isWidthNotEnough;
17360
17919
  if (isWrap) {
@@ -17386,10 +17945,11 @@ class Draw {
17386
17945
  row.offsetX = listStyleMap.get(element.listId);
17387
17946
  row.listIndex = listIndex;
17388
17947
  }
17948
+ 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;
17389
17949
  rowList.push(row);
17390
17950
  } else {
17391
17951
  curRow.width += metrics.width;
17392
- if (i === 0 && getIsBlockElement(elementList[1])) {
17952
+ if (i === 0 && (getIsBlockElement(elementList[1]) || !!((_n = elementList[1]) == null ? void 0 : _n.areaId))) {
17393
17953
  curRow.height = defaultBasicRowMarginHeight;
17394
17954
  curRow.ascent = defaultBasicRowMarginHeight;
17395
17955
  } else if (curRow.height < height) {
@@ -17400,8 +17960,8 @@ class Draw {
17400
17960
  }
17401
17961
  if (isWrap || i === elementList.length - 1) {
17402
17962
  curRow.isWidthNotEnough = isWidthNotEnough && !isForceBreak;
17403
- if (!curRow.isSurround && ((preElement == null ? void 0 : preElement.rowFlex) === RowFlex.JUSTIFY || (preElement == null ? void 0 : preElement.rowFlex) === RowFlex.ALIGNMENT && isWidthNotEnough)) {
17404
- const rowElementList = ((_l = curRow.elementList[0]) == null ? void 0 : _l.value) === ZERO ? curRow.elementList.slice(1) : curRow.elementList;
17963
+ if (!curRow.isSurround && ((preElement == null ? void 0 : preElement.rowFlex) === RowFlex.JUSTIFY || (preElement == null ? void 0 : preElement.rowFlex) === RowFlex.ALIGNMENT && curRow.isWidthNotEnough)) {
17964
+ const rowElementList = ((_o = curRow.elementList[0]) == null ? void 0 : _o.value) === ZERO ? curRow.elementList.slice(1) : curRow.elementList;
17405
17965
  const gap = (availableWidth - curRow.width) / (rowElementList.length - 1);
17406
17966
  for (let e = 0; e < rowElementList.length - 1; e++) {
17407
17967
  const el = rowElementList[e];
@@ -17449,7 +18009,7 @@ class Draw {
17449
18009
  let pageNo = 0;
17450
18010
  if (pageMode === PageMode.CONTINUITY) {
17451
18011
  pageRowList[0] = this.rowList;
17452
- pageHeight += this.rowList.reduce((pre, cur) => pre + cur.height, 0);
18012
+ pageHeight += this.rowList.reduce((pre, cur) => pre + cur.height + (cur.offsetY || 0), 0);
17453
18013
  const dpr = this.getPagePixelRatio();
17454
18014
  const pageDom = this.pageList[0];
17455
18015
  const pageDomHeight = Number(pageDom.style.height.replace("px", ""));
@@ -17465,16 +18025,17 @@ class Draw {
17465
18025
  } else {
17466
18026
  for (let i = 0; i < this.rowList.length; i++) {
17467
18027
  const row = this.rowList[i];
17468
- if (row.height + pageHeight > height || ((_a = this.rowList[i - 1]) == null ? void 0 : _a.isPageBreak)) {
18028
+ const rowOffsetY = row.offsetY || 0;
18029
+ if (row.height + rowOffsetY + pageHeight > height || ((_a = this.rowList[i - 1]) == null ? void 0 : _a.isPageBreak)) {
17469
18030
  if (Number.isInteger(maxPageNo) && pageNo >= maxPageNo) {
17470
18031
  this.elementList = this.elementList.slice(0, row.startIndex);
17471
18032
  break;
17472
18033
  }
17473
- pageHeight = marginHeight + row.height;
18034
+ pageHeight = marginHeight + row.height + rowOffsetY;
17474
18035
  pageRowList.push([row]);
17475
18036
  pageNo++;
17476
18037
  } else {
17477
- pageHeight += row.height;
18038
+ pageHeight += row.height + rowOffsetY;
17478
18039
  pageRowList[pageNo].push(row);
17479
18040
  }
17480
18041
  }
@@ -17739,19 +18300,25 @@ class Draw {
17739
18300
  var _a, _b;
17740
18301
  const { elementList, positionList, rowList, pageNo } = payload;
17741
18302
  const { inactiveAlpha, pageMode, header, footer, pageNumber, lineNumber, pageBorder } = this.options;
18303
+ const isPrintMode = this.mode === EditorMode.PRINT;
17742
18304
  const innerWidth = this.getInnerWidth();
17743
18305
  const ctx = this.ctxList[pageNo];
17744
18306
  ctx.globalAlpha = !this.zone.isMainActive() ? inactiveAlpha : 1;
17745
18307
  this._clearPage(pageNo);
17746
18308
  this.background.render(ctx, pageNo);
17747
- if (this.mode !== EditorMode.PRINT) {
18309
+ if (!isPrintMode) {
18310
+ this.area.render(ctx, pageNo);
18311
+ }
18312
+ if (!isPrintMode) {
17748
18313
  this.margin.render(ctx, pageNo);
17749
18314
  }
17750
18315
  this._drawFloat(ctx, {
17751
18316
  pageNo,
17752
18317
  imgDisplays: [ImageDisplay.FLOAT_BOTTOM]
17753
18318
  });
17754
- this.control.renderHighlightList(ctx, pageNo);
18319
+ if (!isPrintMode) {
18320
+ this.control.renderHighlightList(ctx, pageNo);
18321
+ }
17755
18322
  const index2 = (_a = rowList[0]) == null ? void 0 : _a.startIndex;
17756
18323
  this.drawRow(ctx, {
17757
18324
  elementList,
@@ -17777,7 +18344,7 @@ class Draw {
17777
18344
  pageNo,
17778
18345
  imgDisplays: [ImageDisplay.FLOAT_TOP, ImageDisplay.SURROUND]
17779
18346
  });
17780
- if (this.search.getSearchKeyword()) {
18347
+ if (!isPrintMode && this.search.getSearchKeyword()) {
17781
18348
  this.search.render(ctx, pageNo);
17782
18349
  }
17783
18350
  if (pageMode !== PageMode.CONTINUITY && this.options.watermark.data) {
@@ -17866,11 +18433,14 @@ class Draw {
17866
18433
  });
17867
18434
  this.pageRowList = this._computePageList();
17868
18435
  this.position.computePositionList();
17869
- const searchKeyword = this.search.getSearchKeyword();
17870
- if (searchKeyword) {
17871
- this.search.compute(searchKeyword);
18436
+ this.area.compute();
18437
+ if (this.mode !== EditorMode.PRINT) {
18438
+ const searchKeyword = this.search.getSearchKeyword();
18439
+ if (searchKeyword) {
18440
+ this.search.compute(searchKeyword);
18441
+ }
18442
+ this.control.computeHighlightList();
17872
18443
  }
17873
- this.control.computeHighlightList();
17874
18444
  }
17875
18445
  this.imageObserver.clearAll();
17876
18446
  this.cursor.recoveryCursor();
@@ -18041,6 +18611,7 @@ class Command {
18041
18611
  __publicField(this, "executeCancelMergeTableCell");
18042
18612
  __publicField(this, "executeTableTdVerticalAlign");
18043
18613
  __publicField(this, "executeTableBorderType");
18614
+ __publicField(this, "executeTableBorderColor");
18044
18615
  __publicField(this, "executeTableTdBorderType");
18045
18616
  __publicField(this, "executeTableTdSlashType");
18046
18617
  __publicField(this, "executeTableTdBackgroundColor");
@@ -18063,6 +18634,7 @@ class Command {
18063
18634
  __publicField(this, "executeSaveAsImageElement");
18064
18635
  __publicField(this, "executeChangeImageDisplay");
18065
18636
  __publicField(this, "executePageMode");
18637
+ __publicField(this, "executePageScale");
18066
18638
  __publicField(this, "executePageScaleRecovery");
18067
18639
  __publicField(this, "executePageScaleMinus");
18068
18640
  __publicField(this, "executePageScaleAdd");
@@ -18070,6 +18642,8 @@ class Command {
18070
18642
  __publicField(this, "executePaperDirection");
18071
18643
  __publicField(this, "executeSetPaperMargin");
18072
18644
  __publicField(this, "executeInsertElementList");
18645
+ __publicField(this, "executeInsertArea");
18646
+ __publicField(this, "executeSetAreaProperties");
18073
18647
  __publicField(this, "executeAppendElementList");
18074
18648
  __publicField(this, "executeUpdateElementById");
18075
18649
  __publicField(this, "executeSetValue");
@@ -18095,6 +18669,7 @@ class Command {
18095
18669
  __publicField(this, "getImage");
18096
18670
  __publicField(this, "getOptions");
18097
18671
  __publicField(this, "getValue");
18672
+ __publicField(this, "getAreaValue");
18098
18673
  __publicField(this, "getHTML");
18099
18674
  __publicField(this, "getText");
18100
18675
  __publicField(this, "getWordCount");
@@ -18160,6 +18735,7 @@ class Command {
18160
18735
  this.executeCancelMergeTableCell = adapt.cancelMergeTableCell.bind(adapt);
18161
18736
  this.executeTableTdVerticalAlign = adapt.tableTdVerticalAlign.bind(adapt);
18162
18737
  this.executeTableBorderType = adapt.tableBorderType.bind(adapt);
18738
+ this.executeTableBorderColor = adapt.tableBorderColor.bind(adapt);
18163
18739
  this.executeTableTdBorderType = adapt.tableTdBorderType.bind(adapt);
18164
18740
  this.executeTableTdSlashType = adapt.tableTdSlashType.bind(adapt);
18165
18741
  this.executeTableTdBackgroundColor = adapt.tableTdBackgroundColor.bind(adapt);
@@ -18182,12 +18758,16 @@ class Command {
18182
18758
  this.executeSaveAsImageElement = adapt.saveAsImageElement.bind(adapt);
18183
18759
  this.executeChangeImageDisplay = adapt.changeImageDisplay.bind(adapt);
18184
18760
  this.executePageMode = adapt.pageMode.bind(adapt);
18761
+ this.executePageScale = adapt.pageScale.bind(adapt);
18185
18762
  this.executePageScaleRecovery = adapt.pageScaleRecovery.bind(adapt);
18186
18763
  this.executePageScaleMinus = adapt.pageScaleMinus.bind(adapt);
18187
18764
  this.executePageScaleAdd = adapt.pageScaleAdd.bind(adapt);
18188
18765
  this.executePaperSize = adapt.paperSize.bind(adapt);
18189
18766
  this.executePaperDirection = adapt.paperDirection.bind(adapt);
18190
18767
  this.executeSetPaperMargin = adapt.setPaperMargin.bind(adapt);
18768
+ this.getAreaValue = adapt.getAreaValue.bind(adapt);
18769
+ this.executeInsertArea = adapt.insertArea.bind(adapt);
18770
+ this.executeSetAreaProperties = adapt.setAreaProperties.bind(adapt);
18191
18771
  this.executeInsertElementList = adapt.insertElementList.bind(adapt);
18192
18772
  this.executeAppendElementList = adapt.appendElementList.bind(adapt);
18193
18773
  this.executeUpdateElementById = adapt.updateElementById.bind(adapt);
@@ -18346,8 +18926,8 @@ class CommandAdapt {
18346
18926
  return;
18347
18927
  this.canvasEvent.cut();
18348
18928
  }
18349
- copy() {
18350
- this.canvasEvent.copy();
18929
+ copy(payload) {
18930
+ this.canvasEvent.copy(payload);
18351
18931
  }
18352
18932
  paste(payload) {
18353
18933
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
@@ -18506,13 +19086,23 @@ class CommandAdapt {
18506
19086
  });
18507
19087
  this.draw.render({ isSetCursor: false });
18508
19088
  } else {
19089
+ let isSubmitHistory = true;
18509
19090
  const { endIndex } = this.range.getRange();
18510
19091
  const elementList = this.draw.getElementList();
18511
19092
  const enterElement = elementList[endIndex];
18512
19093
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18513
19094
  enterElement.font = payload;
18514
- this.draw.render({ curIndex: endIndex, isCompute: false });
19095
+ } else {
19096
+ this.range.setDefaultStyle({
19097
+ font: payload
19098
+ });
19099
+ isSubmitHistory = false;
18515
19100
  }
19101
+ this.draw.render({
19102
+ isSubmitHistory,
19103
+ curIndex: endIndex,
19104
+ isCompute: false
19105
+ });
18516
19106
  }
18517
19107
  }
18518
19108
  size(payload) {
@@ -18535,6 +19125,15 @@ class CommandAdapt {
18535
19125
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18536
19126
  changeElementList.push(enterElement);
18537
19127
  renderOption = { curIndex: endIndex };
19128
+ } else {
19129
+ this.range.setDefaultStyle({
19130
+ size: payload
19131
+ });
19132
+ this.draw.render({
19133
+ curIndex: endIndex,
19134
+ isCompute: false,
19135
+ isSubmitHistory: false
19136
+ });
18538
19137
  }
18539
19138
  }
18540
19139
  if (!changeElementList.length)
@@ -18555,6 +19154,7 @@ class CommandAdapt {
18555
19154
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18556
19155
  if (isDisabled)
18557
19156
  return;
19157
+ const { defaultSize, maxSize } = this.options;
18558
19158
  const selection = this.range.getTextLikeSelectionElementList();
18559
19159
  let renderOption = {};
18560
19160
  let changeElementList = [];
@@ -18568,11 +19168,21 @@ class CommandAdapt {
18568
19168
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18569
19169
  changeElementList.push(enterElement);
18570
19170
  renderOption = { curIndex: endIndex };
19171
+ } else {
19172
+ const style = this.range.getDefaultStyle();
19173
+ const anchorSize = (style == null ? void 0 : style.size) || enterElement.size || defaultSize;
19174
+ this.range.setDefaultStyle({
19175
+ size: anchorSize + 2 > maxSize ? maxSize : anchorSize + 2
19176
+ });
19177
+ this.draw.render({
19178
+ curIndex: endIndex,
19179
+ isCompute: false,
19180
+ isSubmitHistory: false
19181
+ });
18571
19182
  }
18572
19183
  }
18573
19184
  if (!changeElementList.length)
18574
19185
  return;
18575
- const { defaultSize, maxSize } = this.options;
18576
19186
  let isExistUpdate = false;
18577
19187
  changeElementList.forEach((el) => {
18578
19188
  if (!el.size) {
@@ -18595,6 +19205,7 @@ class CommandAdapt {
18595
19205
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18596
19206
  if (isDisabled)
18597
19207
  return;
19208
+ const { defaultSize, minSize } = this.options;
18598
19209
  const selection = this.range.getTextLikeSelectionElementList();
18599
19210
  let renderOption = {};
18600
19211
  let changeElementList = [];
@@ -18608,11 +19219,21 @@ class CommandAdapt {
18608
19219
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18609
19220
  changeElementList.push(enterElement);
18610
19221
  renderOption = { curIndex: endIndex };
19222
+ } else {
19223
+ const style = this.range.getDefaultStyle();
19224
+ const anchorSize = (style == null ? void 0 : style.size) || enterElement.size || defaultSize;
19225
+ this.range.setDefaultStyle({
19226
+ size: anchorSize - 2 < minSize ? minSize : anchorSize - 2
19227
+ });
19228
+ this.draw.render({
19229
+ curIndex: endIndex,
19230
+ isCompute: false,
19231
+ isSubmitHistory: false
19232
+ });
18611
19233
  }
18612
19234
  }
18613
19235
  if (!changeElementList.length)
18614
19236
  return;
18615
- const { defaultSize, minSize } = this.options;
18616
19237
  let isExistUpdate = false;
18617
19238
  changeElementList.forEach((el) => {
18618
19239
  if (!el.size) {
@@ -18632,6 +19253,7 @@ class CommandAdapt {
18632
19253
  }
18633
19254
  }
18634
19255
  bold() {
19256
+ var _a;
18635
19257
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18636
19258
  if (isDisabled)
18637
19259
  return;
@@ -18643,16 +19265,27 @@ class CommandAdapt {
18643
19265
  });
18644
19266
  this.draw.render({ isSetCursor: false });
18645
19267
  } else {
19268
+ let isSubmitHistory = true;
18646
19269
  const { endIndex } = this.range.getRange();
18647
19270
  const elementList = this.draw.getElementList();
18648
19271
  const enterElement = elementList[endIndex];
18649
19272
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18650
19273
  enterElement.bold = !enterElement.bold;
18651
- this.draw.render({ curIndex: endIndex, isCompute: false });
19274
+ } else {
19275
+ this.range.setDefaultStyle({
19276
+ bold: enterElement.bold ? false : !((_a = this.range.getDefaultStyle()) == null ? void 0 : _a.bold)
19277
+ });
19278
+ isSubmitHistory = false;
18652
19279
  }
19280
+ this.draw.render({
19281
+ isSubmitHistory,
19282
+ curIndex: endIndex,
19283
+ isCompute: false
19284
+ });
18653
19285
  }
18654
19286
  }
18655
19287
  italic() {
19288
+ var _a;
18656
19289
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18657
19290
  if (isDisabled)
18658
19291
  return;
@@ -18664,16 +19297,27 @@ class CommandAdapt {
18664
19297
  });
18665
19298
  this.draw.render({ isSetCursor: false });
18666
19299
  } else {
19300
+ let isSubmitHistory = true;
18667
19301
  const { endIndex } = this.range.getRange();
18668
19302
  const elementList = this.draw.getElementList();
18669
19303
  const enterElement = elementList[endIndex];
18670
19304
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18671
19305
  enterElement.italic = !enterElement.italic;
18672
- this.draw.render({ curIndex: endIndex, isCompute: false });
19306
+ } else {
19307
+ this.range.setDefaultStyle({
19308
+ italic: enterElement.italic ? false : !((_a = this.range.getDefaultStyle()) == null ? void 0 : _a.italic)
19309
+ });
19310
+ isSubmitHistory = false;
18673
19311
  }
19312
+ this.draw.render({
19313
+ isSubmitHistory,
19314
+ curIndex: endIndex,
19315
+ isCompute: false
19316
+ });
18674
19317
  }
18675
19318
  }
18676
19319
  underline(textDecoration) {
19320
+ var _a;
18677
19321
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18678
19322
  if (isDisabled)
18679
19323
  return;
@@ -18693,16 +19337,27 @@ class CommandAdapt {
18693
19337
  isCompute: false
18694
19338
  });
18695
19339
  } else {
19340
+ let isSubmitHistory = true;
18696
19341
  const { endIndex } = this.range.getRange();
18697
19342
  const elementList = this.draw.getElementList();
18698
19343
  const enterElement = elementList[endIndex];
18699
19344
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18700
19345
  enterElement.underline = !enterElement.underline;
18701
- this.draw.render({ curIndex: endIndex, isCompute: false });
19346
+ } else {
19347
+ this.range.setDefaultStyle({
19348
+ underline: (enterElement == null ? void 0 : enterElement.underline) ? false : !((_a = this.range.getDefaultStyle()) == null ? void 0 : _a.underline)
19349
+ });
19350
+ isSubmitHistory = false;
18702
19351
  }
19352
+ this.draw.render({
19353
+ isSubmitHistory,
19354
+ curIndex: endIndex,
19355
+ isCompute: false
19356
+ });
18703
19357
  }
18704
19358
  }
18705
19359
  strikeout() {
19360
+ var _a;
18706
19361
  const isDisabled = this.draw.isReadonly() || this.draw.isDisabled();
18707
19362
  if (isDisabled)
18708
19363
  return;
@@ -18717,13 +19372,23 @@ class CommandAdapt {
18717
19372
  isCompute: false
18718
19373
  });
18719
19374
  } else {
19375
+ let isSubmitHistory = true;
18720
19376
  const { endIndex } = this.range.getRange();
18721
19377
  const elementList = this.draw.getElementList();
18722
19378
  const enterElement = elementList[endIndex];
18723
19379
  if ((enterElement == null ? void 0 : enterElement.value) === ZERO) {
18724
19380
  enterElement.strikeout = !enterElement.strikeout;
18725
- this.draw.render({ curIndex: endIndex, isCompute: false });
19381
+ } else {
19382
+ this.range.setDefaultStyle({
19383
+ strikeout: enterElement.strikeout ? false : !((_a = this.range.getDefaultStyle()) == null ? void 0 : _a.strikeout)
19384
+ });
19385
+ isSubmitHistory = false;
18726
19386
  }
19387
+ this.draw.render({
19388
+ isSubmitHistory,
19389
+ curIndex: endIndex,
19390
+ isCompute: false
19391
+ });
18727
19392
  }
18728
19393
  }
18729
19394
  superscript() {
@@ -18788,6 +19453,7 @@ class CommandAdapt {
18788
19453
  isCompute: false
18789
19454
  });
18790
19455
  } else {
19456
+ let isSubmitHistory = true;
18791
19457
  const { endIndex } = this.range.getRange();
18792
19458
  const elementList = this.draw.getElementList();
18793
19459
  const enterElement = elementList[endIndex];
@@ -18797,8 +19463,17 @@ class CommandAdapt {
18797
19463
  } else {
18798
19464
  delete enterElement.color;
18799
19465
  }
18800
- this.draw.render({ curIndex: endIndex, isCompute: false });
19466
+ } else {
19467
+ this.range.setDefaultStyle({
19468
+ color: payload || void 0
19469
+ });
19470
+ isSubmitHistory = false;
18801
19471
  }
19472
+ this.draw.render({
19473
+ isSubmitHistory,
19474
+ curIndex: endIndex,
19475
+ isCompute: false
19476
+ });
18802
19477
  }
18803
19478
  }
18804
19479
  highlight(payload) {
@@ -18819,6 +19494,7 @@ class CommandAdapt {
18819
19494
  isCompute: false
18820
19495
  });
18821
19496
  } else {
19497
+ let isSubmitHistory = true;
18822
19498
  const { endIndex } = this.range.getRange();
18823
19499
  const elementList = this.draw.getElementList();
18824
19500
  const enterElement = elementList[endIndex];
@@ -18828,8 +19504,17 @@ class CommandAdapt {
18828
19504
  } else {
18829
19505
  delete enterElement.highlight;
18830
19506
  }
18831
- this.draw.render({ curIndex: endIndex, isCompute: false });
19507
+ } else {
19508
+ this.range.setDefaultStyle({
19509
+ highlight: payload || void 0
19510
+ });
19511
+ isSubmitHistory = false;
18832
19512
  }
19513
+ this.draw.render({
19514
+ isSubmitHistory,
19515
+ curIndex: endIndex,
19516
+ isCompute: false
19517
+ });
18833
19518
  }
18834
19519
  }
18835
19520
  title(payload) {
@@ -18984,6 +19669,12 @@ class CommandAdapt {
18984
19669
  return;
18985
19670
  this.tableOperate.tableBorderType(payload);
18986
19671
  }
19672
+ tableBorderColor(payload) {
19673
+ const isReadonly = this.draw.isReadonly();
19674
+ if (isReadonly)
19675
+ return;
19676
+ this.tableOperate.tableBorderColor(payload);
19677
+ }
18987
19678
  tableTdBorderType(payload) {
18988
19679
  const isReadonly = this.draw.isReadonly();
18989
19680
  if (isReadonly)
@@ -19433,6 +20124,9 @@ class CommandAdapt {
19433
20124
  getValue(options) {
19434
20125
  return this.draw.getValue(options);
19435
20126
  }
20127
+ getAreaValue(options) {
20128
+ return this.draw.getArea().getAreaValue(options);
20129
+ }
19436
20130
  getHTML() {
19437
20131
  const options = this.options;
19438
20132
  const headerElementList = this.draw.getHeaderElementList();
@@ -19607,6 +20301,11 @@ class CommandAdapt {
19607
20301
  pageMode(payload) {
19608
20302
  this.draw.setPageMode(payload);
19609
20303
  }
20304
+ pageScale(scale) {
20305
+ if (scale === this.options.scale)
20306
+ return;
20307
+ this.draw.setPageScale(scale);
20308
+ }
19610
20309
  pageScaleRecovery() {
19611
20310
  const { scale } = this.options;
19612
20311
  if (scale !== 1) {
@@ -19882,6 +20581,7 @@ class CommandAdapt {
19882
20581
  locationControl(controlId, options) {
19883
20582
  const isLocationAfter = (options == null ? void 0 : options.position) === LocationPosition.AFTER;
19884
20583
  function location(elementList, zone2) {
20584
+ var _a, _b;
19885
20585
  let i = 0;
19886
20586
  while (i < elementList.length) {
19887
20587
  const element = elementList[i];
@@ -19914,7 +20614,11 @@ class CommandAdapt {
19914
20614
  let curIndex = i - 1;
19915
20615
  if (isLocationAfter) {
19916
20616
  curIndex -= 1;
19917
- if (element.controlComponent !== ControlComponent.PLACEHOLDER && element.controlComponent !== ControlComponent.POSTFIX) {
20617
+ if (element.controlComponent !== ControlComponent.PLACEHOLDER && element.controlComponent !== ControlComponent.POSTFIX && element.controlComponent !== ControlComponent.POST_TEXT) {
20618
+ continue;
20619
+ }
20620
+ } else {
20621
+ if (element.controlComponent !== ControlComponent.PREFIX && element.controlComponent !== ControlComponent.PRE_TEXT || ((_a = elementList[i]) == null ? void 0 : _a.controlComponent) === ControlComponent.PREFIX || ((_b = elementList[i]) == null ? void 0 : _b.controlComponent) === ControlComponent.PRE_TEXT) {
19918
20622
  continue;
19919
20623
  }
19920
20624
  }
@@ -19973,7 +20677,8 @@ class CommandAdapt {
19973
20677
  const cloneAttr = [
19974
20678
  ...TABLE_CONTEXT_ATTR,
19975
20679
  ...EDITOR_ROW_ATTR,
19976
- ...LIST_CONTEXT_ATTR
20680
+ ...LIST_CONTEXT_ATTR,
20681
+ ...AREA_CONTEXT_ATTR
19977
20682
  ];
19978
20683
  cloneProperty(cloneAttr, copyElement, cloneElement);
19979
20684
  this.draw.insertElementList([cloneElement]);
@@ -20099,7 +20804,8 @@ class CommandAdapt {
20099
20804
  const cloneAttr = [
20100
20805
  ...TABLE_CONTEXT_ATTR,
20101
20806
  ...EDITOR_ROW_ATTR,
20102
- ...LIST_CONTEXT_ATTR
20807
+ ...LIST_CONTEXT_ATTR,
20808
+ ...AREA_CONTEXT_ATTR
20103
20809
  ];
20104
20810
  (_a = cloneElement.valueList) == null ? void 0 : _a.forEach((valueItem) => {
20105
20811
  cloneProperty(cloneAttr, copyElement, valueItem);
@@ -20121,6 +20827,12 @@ class CommandAdapt {
20121
20827
  direction: MoveDirection.DOWN
20122
20828
  });
20123
20829
  }
20830
+ insertArea(payload) {
20831
+ return this.draw.getArea().insertArea(payload);
20832
+ }
20833
+ setAreaProperties(payload) {
20834
+ this.draw.getArea().setAreaProperties(payload);
20835
+ }
20124
20836
  }
20125
20837
  class Listener {
20126
20838
  constructor() {
@@ -21284,5 +21996,5 @@ class Editor {
21284
21996
  this.use = plugin.use.bind(plugin);
21285
21997
  }
21286
21998
  }
21287
- export { BackgroundRepeat, BackgroundSize, BlockType, Command, ControlIndentation, 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 };
21999
+ 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 };
21288
22000
  //# sourceMappingURL=canvas-editor.es.js.map