e-virt-table 1.2.25 → 1.2.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +3 -3
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +548 -528
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +3 -3
- package/dist/index.umd.js.map +1 -1
- package/dist/lib/Database.js +1 -0
- package/dist/lib/Database.js.map +1 -1
- package/dist/lib/EventTable.js +6 -1
- package/dist/lib/EventTable.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode(":root{--evt-header-font: 12px normal Arial;--evt-body-font: 12px normal Arial;--evt-color-white: #fff;--evt-color-black: #000000;--evt-color-primary: rgb(82, 146, 247);--evt-text-color-primary: #333;--evt-text-color-regular: #666;--evt-text-color-secondary: #999;--evt-box-shadow: 0 2px 12px 0 #0000001a;--evt-editor-bg-color: #fff;--evt-editor-text-color: #333;--evt-border-color: #e1e6eb;--evt-stripe-color: #fafafa;--evt-placeholder-color: #cdd0dc;--evt-header-bg-color: #f8faff;--evt-body-bg-color: #fff;--evt-header-text-color: #1d2129;--evt-body-text-color: #4e5969;--evt-footer-text-color: #4e5969;--evt-loading-icon-color: #4e5969;--evt-expand-icon-color: #4e5969;--evt-shrink-icon-color: #4e5969;--evt-error-tip-icon-color: red;--evt-cell-hover-icon-bg-color: #fff;--evt-cell-hover-icon-border-color: #dde0ea;--evt-scroller-color: #dee0e3;--evt-scroller-track-color: #fff;--evt-scroller-focus-color: #bbbec4;--evt-select-border-color: var(--evt-color-primary);--evt-select-area-color: rgba(82, 146, 247, .1);--evt-select-row-col-bg-color: transparent;--evt-autofill-point-border-color: #fff;--evt-edit-bg-color: #fcf6ed;--evt-checkbox-color: var(--evt-color-primary);--evt-readonly-color: #fff;--evt-readonly-text-color: var(--evt-body-text-color);--evt-error-tip-color: #ed3f14;--evt-footer-bg-color: #fafafa;--evt-highlight-hover-row-color: rgba(186, 203, 231, .1);--evt-highlight-selected-row-color: rgba(82, 146, 247, .1);--evt-tooltip-bg-color: #303133;--evt-tooltip-text-color: #fff;--evt-resize-row-line-color: #e1e6eb;--evt-resize-column-line-color: #e1e6eb;--evt-tree-line-color: #e1e6eb;--evt-sort-icon-color: rgb(82, 146, 247)}.dark{--evt-border-color: #363637;--evt-header-bg-color: #141414;--evt-body-bg-color: #141414;--evt-header-text-color: #a3a6ad;--evt-scroller-color: #414243;--evt-scroller-track-color: #141414;--evt-scroller-focus-color: #a3a6ad;--evt-edit-bg-color: #141414;--evt-readonly-text-color: #cfd3dc;--evt-footer-bg-color: #262727;--evt-autofill-point-border-color: #fff;--evt-editor-bg-color: #434343;--evt-editor-text-color: #cfd3dc}.e-virt-table-container{position:relative;outline:none}.e-virt-table-stage{position:relative;overflow:hidden;outline:none;box-sizing:border-box;z-index:10;border-radius:8px;border:1px solid var(--evt-border-color)}.e-virt-table-canvas{position:absolute;left:0;top:0;box-sizing:border-box;border:none;outline:none;z-index:10}.e-virt-table-editor{position:absolute;top:-10000px;left:-10000px;text-align:left;height:auto;line-height:0;z-index:100;overflow:hidden;background-color:var(--evt-editor-bg-color);border:2px solid var(--evt-color-primary);box-sizing:border-box;box-shadow:var(--evt-box-shadow);display:flex;align-items:center}.e-virt-table-overlayer{position:absolute;left:0;top:0;overflow:hidden;z-index:100;pointer-events:none}.e-virt-table-editor-textarea{width:100%;box-sizing:border-box;outline:none;font-weight:400;padding:8px;font-size:12px;color:inherit;white-space:pre-wrap;word-wrap:break-word;word-break:break-all;line-height:1.5;margin:0;border:none;vertical-align:middle;background:var(--evt-editor-bg-color);color:var(--evt-editor-text-color);overflow-y:auto;resize:none}.e-virt-table-context-menu{position:absolute;font-size:14px;color:var(--evt-text-color-regular);background-color:var(--evt-color-white);border-radius:4px;border:1px solid #e4e7ed;box-shadow:var(--evt-box-shadow);width:fit-content;padding:6px 0;z-index:9999;left:-99999px;top:-99999px}.e-virt-table-context-menu-item{cursor:pointer;padding:8px 24px;color:var(--evt-text-color-regular)}.e-virt-table-context-menu-item:hover{color:var(--evt-color-primary);background-color:#f5f7fa}")),document.head.appendChild(o)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
|
|
2
|
-
"use strict";var se=Object.defineProperty;var oe=(
|
|
2
|
+
"use strict";var se=Object.defineProperty;var oe=(l,t,e)=>t in l?se(l,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[t]=e;var n=(l,t,e)=>oe(l,typeof t!="symbol"?t+"":t,e);class re{constructor(t){n(this,"rules");this.rules=t}validate(t){const e=[],{column:i,row:s,key:o,rowKey:r,colIndex:a,rowIndex:c,value:h,field:d,fieldValue:f}=t;Array.isArray(this.rules)||(this.rules=[this.rules]);for(const u of this.rules){if(u.validator){const x={field:d,fieldValue:f,value:h,column:i,colIndex:a,rowIndex:c,row:s,key:o,rowKey:r,...u};u.validator(x,h,w=>{w&&e.push({...x,message:w})})}if(!u.required&&(h==null||h===""))return e;u.pattern&&!u.pattern.test(h)&&e.push({value:h,column:i,row:s,key:o,rowKey:r,colIndex:a,rowIndex:c,field:d,fieldValue:f,message:u.message||`${o} is pattern validation error`}),u.required&&(h==null||h==="")&&e.push({value:h,column:i,row:s,key:o,rowKey:r,colIndex:a,rowIndex:c,field:d,fieldValue:f,message:u.message||`${o} is required`})}return e}}function Mt(){return"xxxxxxxxxxxxxxxxxx".replace(/[x]/g,function(l){const t=Math.random()*16|0;return(l==="x"?t:t&3|8).toString(16)})}function Ht(l,t){let e=0,i;return function(...s){const o=new Date().getTime(),r=o-e;!e||r>=t?(l.apply(this,s),e=o):i||(i=setTimeout(()=>{l.apply(this,s),e=new Date().getTime(),i=void 0},t-r))}}function Dt(l=[]){return l.length?l.map(t=>Dt(t.children)+1).sort((t,e)=>e-t)[0]:0}function ne(l=[]){let t=[],e=[],i=[];return l.forEach(s=>{s.fixed==="left"?t.push(s):s.fixed==="right"?i.push(s):e.push(s)}),[...t.sort((s,o)=>(s.sort??0)-(o.sort??0)),...e.sort((s,o)=>(s.sort??0)-(o.sort??0)),...i.sort((s,o)=>(s.sort??0)-(o.sort??0))]}function Nt(l=[],t=1,e=0){return l.map(i=>{if(i.children){let s=0,o=i.fixed;i.children.forEach(a=>{a.fixed=o});const r=Nt(i.children,t-1,e+1);return r&&r.forEach(a=>{s+=a.colspan??0}),{...i,width:i.width,level:e,rowspan:1,colspan:s,children:r}}return{...i,level:e,rowspan:t,colspan:1}})}function et(l=[]){let t=[];return l.forEach(e=>{e.children?t=t.concat(et(e.children)):t.push(e)}),t}const yt=/^(\r\n|\n\r|\r|\n)/,ae=/^[^\t\r\n]+/,Ct=/^\t/;function ce(l){let t=[[""]];if(l.length===0)return t;let e=0,i=0,s;for(;l.length>0&&s!==l.length;)if(s=l.length,l.match(Ct))l=l.replace(Ct,""),e+=1,t[i][e]="";else if(l.match(yt))l=l.replace(yt,""),e=0,i+=1,t[i]=[""];else{let o="";if(l.startsWith('"')){let r=0,a=!0;for(;a;){const c=l.slice(0,1);c==='"'&&(r+=1),o+=c,l=l.slice(1),(l.length===0||l.match(/^[\t\r\n]/)&&r%2===0)&&(a=!1)}o=o.replace(/^"/,"").replace(/"$/,"").replace(/["]*/g,c=>new Array(Math.floor(c.length/2)).fill('"').join(""))}else{const r=l.match(ae);o=r?r[0]:"",l=l.slice(o.length)}t[i][e]=o}return Array.isArray(t)&&t.length>1&&t[t.length-1].length===1&&t[t.length-1][0]===""&&(t=t.slice(0,t.length-1)),t}function he(l){let t,e,i,s,o="",r;for(t=0,e=l.length;t<e;t+=1){for(s=l[t].length,i=0;i<s;i+=1)i>0&&(o+=" "),r=l[t][i],typeof r=="string"?r.indexOf(`
|
|
3
3
|
`)>-1?o+=`"${r.replace(/"/g,'""')}"`:o+=r:r==null?o+="":o+=r;t!==e-1&&(o+=`
|
|
4
|
-
`)}return o}function kt(h,t,e=[]){let i=0;const s=[];return h.forEach((o,r)=>{if(r===0)s.push(1);else{const a=e.reduce((l,d)=>`${l}${o[d]??""}`,"")||o[t],c=e.reduce((l,d)=>`${l}${h[r-1][d]??""}`,"")||h[r-1][t];a===c?(s[i]+=1,s.push(0)):(s.push(1),i=r)}}),s}function Xt(h,t){let e="",i="";const s={};return t.forEach((o,r)=>{r===0?(e=o.key,i=o.key,s[o.key]=1):h[o.key]===h[e]?(s[o.key]=0,s[i]+=1):(s[o.key]=1,e=o.key,i=o.key)}),s}function he(h,t,e=[]){const{visibleRows:i,rowIndex:s,headIndex:o}=h,r=kt(i,t,e);return r[s-o]===0?{rowspan:0,colspan:0,relationRowKeys:e,mergeRow:!0}:{rowspan:r[s-o],colspan:1,relationRowKeys:e,mergeRow:!0}}function de(h,t=[]){const{column:e,row:i,visibleLeafColumns:s}=h,o=s.filter(r=>t.includes(r.key));if(t.includes(e.key)){const r=Xt(i,o);return r[e.key]===0?{rowspan:0,colspan:0,relationColKeys:t,mergeCol:!0}:{rowspan:1,colspan:r[e.key],relationColKeys:t,mergeCol:!0}}}function fe(h,t=document.documentElement){const e=h.startsWith("--")?h:`--${h}`;return getComputedStyle(t).getPropertyValue(e).trim()}function bt(h){if(!h)return new Date(0);if(typeof h=="number")return new Date(h);const t=String(h).trim(),e=new Date(t);if(!isNaN(e.getTime()))return e;const i=[/^(\d{4})-(\d{1,2})-(\d{1,2})$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/,/^(\d{4})\.(\d{1,2})\.(\d{1,2})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{4})(\d{2})(\d{2})$/,/^(\d{4})-(\d{1,2})-(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/];for(const s of i){const o=t.match(s);if(o){const r=o.slice(1).map(Number);if(s.source.includes("YYYY-MM-DD")||s.source.includes("YYYY/MM/DD")||s.source.includes("YYYY.MM.DD")){const[a,c,l,d=0,f=0,u=0]=r;return new Date(a,c-1,l,d,f,u)}else if(s.source.includes("DD-MM-YYYY")||s.source.includes("DD/MM/YYYY")||s.source.includes("DD.MM.YYYY")){const[a,c,l,d=0,f=0,u=0]=r;return new Date(l,c-1,a,d,f,u)}else if(s.source.includes("MM-DD-YYYY")||s.source.includes("MM/DD/YYYY")||s.source.includes("MM.DD.YYYY")){const[a,c,l,d=0,f=0,u=0]=r;return new Date(l,a-1,c,d,f,u)}else if(s.source.includes("YYYYMMDD")){const[a,c,l]=r;return new Date(a,c-1,l)}}}return new Date(NaN)}function xe(h,t){const e=bt(h),i=bt(t);return isNaN(e.getTime())&&isNaN(i.getTime())?0:isNaN(e.getTime())?-1:isNaN(i.getTime())?1:e.getTime()-i.getTime()}class Yt{constructor(t,e,i,s,o,r,a){n(this,"ctx");n(this,"x",0);n(this,"y",0);n(this,"width",0);n(this,"height",0);n(this,"fixed");n(this,"cellType");this.ctx=t,this.x=e,this.y=i,this.width=s,this.height=o,this.fixed=a,this.cellType=r}isHorizontalVisible(){if(this.fixed)return!0;const{stageWidth:t,fixedLeftWidth:e,scrollX:i,fixedRightWidth:s}=this.ctx,o=t;return!(this.x+this.width-e-i<=0||this.x-i>=o-s)}isVerticalVisible(){const{stageHeight:t,scrollY:e}=this.ctx,i=t;return!(this.y+this.height-e<=0||this.y-e>=i)}getDrawX(){if(this.fixed==="left")return this.x;if(this.fixed==="right"){const{stageWidth:t,config:{SCROLLER_TRACK_SIZE:e}}=this.ctx;return t-(this.ctx.header.width-this.x)-e}return this.x-this.ctx.scrollX}getDrawY(){return this.cellType==="header"?this.y:this.cellType==="footer"&&this.ctx.config.FOOTER_FIXED?this.y:this.y-this.ctx.scrollY}getLeftFixedX(){return this.x-this.ctx.scrollX}getRightFixedX(){}}class xt extends Yt{constructor(e,i,s,o,r,a,c,l,d,f="body"){super(e,o,r,a,c,f,l.fixed);n(this,"formatter");n(this,"formatterFooter");n(this,"hoverIconName","");n(this,"operation",!1);n(this,"align");n(this,"verticalAlign");n(this,"fixed");n(this,"type");n(this,"editorType");n(this,"editorProps");n(this,"cellType");n(this,"level");n(this,"colspan",1);n(this,"rowspan",1);n(this,"mergeRow",!1);n(this,"mergeCol",!1);n(this,"relationRowKeys",[]);n(this,"relationColKeys",[]);n(this,"key");n(this,"column");n(this,"rowIndex");n(this,"colIndex");n(this,"rowKey");n(this,"row");n(this,"value");n(this,"render");n(this,"renderFooter");n(this,"style",{});n(this,"rules",[]);n(this,"message","");n(this,"text","");n(this,"displayText","");n(this,"visibleWidth",0);n(this,"visibleHeight",0);n(this,"isHasChanged",!1);n(this,"drawX",0);n(this,"drawY",0);n(this,"drawCellBgColor","");n(this,"drawCellSkyBgColor","");n(this,"drawTextColor","");n(this,"drawTextX",0);n(this,"drawTextY",0);n(this,"drawTextWidth",0);n(this,"drawTextHeight",0);n(this,"drawTreeImageX",0);n(this,"drawTreeImageY",0);n(this,"drawTreeImageWidth",0);n(this,"drawTreeImageHeight",0);n(this,"drawTreeImageName","");n(this,"drawTreeImageSource");n(this,"drawSelectionImageX",0);n(this,"drawSelectionImageY",0);n(this,"drawSelectionImageWidth",0);n(this,"drawSelectionImageHeight",0);n(this,"drawSelectionImageName","");n(this,"drawSelectionImageSource");n(this,"drawHoverImageX",0);n(this,"drawHoverImageY",0);n(this,"drawHoverImageWidth",0);n(this,"drawHoverImageHeight",0);n(this,"drawHoverImageName","");n(this,"drawHoverImageSource");n(this,"ellipsis",!1);n(this,"rowExpand",!1);n(this,"rowHasChildren",!1);n(this,"overflowTooltipShow",!0);n(this,"selectorCellValueType","value");n(this,"overflowTooltipMaxWidth",500);n(this,"overflowTooltipPlacement","top");this.visibleWidth=this.width,this.visibleHeight=this.height,this.colIndex=s,this.rowIndex=i,this.key=l.key,this.type=l.type||"",this.editorType=l.editorType||"text",this.selectorCellValueType=l.selectorCellValueType||this.ctx.config.SELECTOR_CELL_VALUE_TYPE||"value",this.editorProps=l.editorProps||{},this.cellType=f,this.align=l.align||this.ctx.config.COLUMNS_ALIGN,this.verticalAlign=l.verticalAlign||this.ctx.config.COLUMNS_VERTICAL_ALIGN,this.fixed=l.fixed,this.level=l.level||0,this.operation=l.operation||!1,this.column=l,this.rules=l.rules||[],this.row=d,this.rowKey=this.cellType==="body"?this.ctx.database.getRowKeyForRowIndex(i):`${this.cellType}_${this.rowIndex}`,this.value=this.getValue(),this.render=l.render,this.overflowTooltipShow=l.overflowTooltipShow!==!1,this.overflowTooltipMaxWidth=l.overflowTooltipMaxWidth||500,this.overflowTooltipPlacement=l.overflowTooltipPlacement||"top",this.renderFooter=l.renderFooter,this.hoverIconName=l.hoverIconName,this.formatter=l.formatter,this.formatterFooter=l.formatterFooter,this.update()}setWidthHeight(e,i){this.width=e,this.height=i}getValidationMessage(){const e=this.ctx.database.getValidationError(this.rowKey,this.key);if(Array.isArray(e)&&e.length){const[i]=e;this.message=i.message||""}return this.message}update(){this.drawX=this.getDrawX(),this.drawY=this.getDrawY(),this.drawTextX=this.drawX,this.drawTextY=this.drawY,this.isHasChanged=this.ctx.database.isHasChangedData(this.rowKey,this.key),this.updateSpan(),this.drawTextWidth=this.visibleWidth,this.drawTextHeight=this.visibleHeight,this.updateStyle(),this.updateType(),this.updateHoverIcon(),this.updateSelection(),this.updateTree(),this.updateEditor(),this.updateRender(),this.getValidationMessage(),this.updateContainer(),this.text=this.getText(),this.displayText=this.getDisplayText()}updateSpan(){if(this.cellType==="footer")return;const{SPAN_METHOD:e}=this.ctx.config;if(typeof e=="function"){const i=e,{colspan:s=1,rowspan:o=1,relationRowKeys:r,relationColKeys:a,mergeRow:c=!1,mergeCol:l=!1}=i({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue(),headIndex:this.ctx.body.headIndex,headPosition:this.ctx.database.getPositionForRowIndex(this.ctx.body.headIndex),visibleRows:this.ctx.body.visibleRows,visibleLeafColumns:this.ctx.header.visibleLeafColumns,rows:this.ctx.body.data})||{};Array.isArray(r)&&r.length>0?this.relationRowKeys=r:this.relationRowKeys=[this.key],Array.isArray(a)&&a.length>0?this.relationColKeys=a:this.relationColKeys=[this.key],this.mergeCol=l,this.mergeRow=c,this.colspan=s,this.rowspan=o,this.visibleWidth=this.getWidthByColIndexColSpan(this.colIndex,this.colspan),this.visibleHeight=this.ctx.database.getHeightByRowIndexRowSpan(this.rowIndex,this.rowspan)}}updateSpanInfo(){if(this.mergeRow||this.mergeCol){const e=this.getSpanInfo();this.height=e.height,this.width=e.width,this.drawX=this.getDrawX(),this.drawY=this.getDrawY(),this.drawY-=e.offsetTop,this.drawX-=e.offsetLeft}}updateType(){const{BODY_CELL_TYPE_METHOD:e}=this.ctx.config;if(typeof e=="function"){const s=e({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()});s!==void 0&&(this.type=s)}}updateEditor(){const{BODY_CELL_EDITOR_METHOD:e}=this.ctx.config;if(typeof e=="function"){const s=e({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()});if(s!==void 0){const{type:o,props:r={}}=s;this.editorType=o,this.editorProps=r}}}updateRender(){const{BODY_CELL_RENDER_METHOD:e}=this.ctx.config;if(typeof e=="function"){const s=e({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()});s!==void 0&&(this.render=s)}}validate(){this.ctx.database.getValidator(this.rowKey,this.key).then(()=>{this.ctx.database.setValidationError(this.rowKey,this.key,[]),this.message=""}).catch(e=>{if(Array.isArray(e)&&e.length){const[i]=e;this.message=i.message,this.ctx.database.setValidationError(this.rowKey,this.key,e)}}).finally(()=>{this.ctx.emit("draw")})}updateStyle(){this.style=this.getOverlayerViewsStyle()}updateTree(){const{CELL_PADDING:e=0}=this.ctx.config,{rowKey:i,cellType:s}=this;let o,r=0,a="";if(!(["tree","selection-tree","tree-selection"].includes(this.type)&&s==="body"))return;const c=this.ctx.database.getRowForRowKey(i),{expand:l=!1,hasChildren:d=!1,expandLoading:f=!1,level:u=0}=c||{};this.rowExpand=l,this.rowHasChildren=d;const{TREE_INDENT:x=16,CHECKBOX_SIZE:w,TREE_ICON_SIZE:m}=this.ctx.config;if(r=u*x,f){const R=this.ctx.icons.get("loading");a="loading",o=R}else if(d){const R=this.ctx.icons.get("expand"),v=this.ctx.icons.get("shrink");o=l?v:R,a=l?"shrink":"expand"}let g=m,E=m,y=this.drawX;(this.align==="center"||this.align==="right")&&(y=this.drawX+(this.visibleWidth-g-2*e)/2,this.align="left");let p=y+r+e,b=this.drawY+(this.visibleHeight-E)/2,C=r+this.drawX+g-.5;this.type==="selection-tree"?(p=r+this.drawSelectionImageX+this.drawSelectionImageWidth,C=p+g-e/2):this.type==="tree-selection"?C=p+w+g-e/2:C=p+g-e/2,this.drawTextX=C,this.drawTextWidth=this.drawX+this.visibleWidth-C,!(p+g+e>this.drawX+this.visibleWidth)&&(b+E+e>this.drawY+this.visibleHeight||(this.drawTreeImageX=p,this.drawTreeImageY=b,this.drawTreeImageWidth=g,this.drawTreeImageHeight=E,o?(this.drawTreeImageName=a,this.drawTreeImageSource=o):(this.drawTreeImageName="",this.drawTreeImageSource=void 0)))}drawTreeLine(){const{TREE_LINE:e,TREE_INDENT:i=16,TREE_ICON_SIZE:s=16,TREE_LINE_COLOR:o="#e1e6eb"}=this.ctx.config;if(!e||this.cellType!=="body"||!["tree","selection-tree","tree-selection"].includes(this.type)||this.rowspan===0||this.colspan===0)return;const r=this.ctx.database.getRowForRowKey(this.rowKey)||{},a=r.level??0,c=this.drawTreeImageX+this.drawTreeImageWidth/2,l=this.drawTreeImageY+this.drawTreeImageHeight/2;let d=this.drawTreeImageX-a*i;const f=Array.isArray(r.parentRowKeys)?r.parentRowKeys:[];if(a>0){for(let g=0;g<a-1;g+=1){const E=f[g+1];if(!!(E?this.ctx.database.getRowForRowKey(E)||{}:{}).isLastChild)continue;const b=Math.round(this.drawTreeImageX-(a-g)*i+s/2);this.ctx.paint.drawLine([b,this.drawY,b,this.drawY+this.visibleHeight],{borderColor:o,borderWidth:1,lineDash:[4,4],lineDashOffset:0})}const u=Math.round(this.drawTreeImageX-i+s/2),w=!!r.isLastChild?l:this.drawY+this.visibleHeight;this.ctx.paint.drawLine([u,this.drawY,u,w],{borderColor:o,borderWidth:1,lineDash:[4,4],lineDashOffset:0});const m=Math.round(d+(a-1)*i+s/2);this.ctx.paint.drawLine([m,l,c,l],{borderColor:o,borderWidth:1,lineDash:[4,4],lineDashOffset:0})}if(r.hasChildren&&r.expand){const u=this.drawTreeImageY+this.drawTreeImageHeight,x=u+Math.min(this.visibleHeight/2,Math.max(8,s/2));this.ctx.paint.drawLine([c,u,c,x],{borderColor:o,borderWidth:1,lineDash:[4,4],lineDashOffset:0})}}updateContainer(){const{BODY_BG_COLOR:e,EDIT_BG_COLOR:i,BODY_CELL_STYLE_METHOD:s,FOOTER_CELL_STYLE_METHOD:o,READONLY_TEXT_COLOR:r,BODY_TEXT_COLOR:a,FOOTER_TEXT_COLOR:c,FOOTER_BG_COLOR:l,HIGHLIGHT_SELECTED_ROW:d,HIGHLIGHT_SELECTED_ROW_COLOR:f,HIGHLIGHT_HOVER_ROW:u,HIGHLIGHT_HOVER_ROW_COLOR:x,STRIPE:w,STRIPE_COLOR:m}=this.ctx.config;if(this.cellType==="footer"){let v=l,T=c;if(typeof o=="function"){const S=o,{backgroundColor:I,color:_}=S({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()})||{};I&&(v=I),_&&(T=_)}this.drawCellSkyBgColor="transparent",this.drawCellBgColor=v,this.drawTextColor=T;return}let g="transparent";const E=this.ctx.hoverCell,y=this.ctx.currentCell;let p=this.rowIndex,b=this.rowIndex;if(this.rowspan!==1&&(u||d)){const v=this.getSpanInfo(),{yArr:T}=v;p=T[0],b=T[1]}u&&E&&(E.rowKey===this.rowKey&&(g=x),E.rowIndex>=p&&E.rowIndex<=b&&(g=x)),d&&y&&(y.rowKey===this.rowKey&&(g=f),y.rowIndex>=p&&y.rowIndex<=b&&(g=f)),this.drawCellSkyBgColor=g;let C=e,R=a;if(this.ctx.database.getReadonly(this.rowKey,this.key)||(C=i,R=r),w&&(this.rowIndex%2?C=m:C=e),typeof s=="function"){const v=s,{backgroundColor:T,color:S}=v({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,isHasChanged:this.isHasChanged,value:this.getValue()})||{};T&&(C=T),S&&(R=S)}this.drawCellBgColor=C,this.drawTextColor=R}updateSelection(){const{visibleWidth:e,visibleHeight:i,rowspan:s,colspan:o,cellType:r,type:a,rowIndex:c,rowKey:l}=this;if(s===0||o===0||r==="footer"||!["index-selection","selection","selection-tree","tree-selection"].includes(a))return;const d=this.ctx.database.getRowSelectable(l),{CHECKBOX_SIZE:f=0,CELL_PADDING:u}=this.ctx.config;let x=this.drawX+u;(this.align==="center"||this.align==="right")&&(x=this.drawX+(e-f)/2);let w=x,m=this.drawY+(i-f)/2;if(a!=="selection-tree"){if(a==="tree-selection"){const{TREE_INDENT:y=16,TREE_ICON_SIZE:p}=this.ctx.config,b=this.ctx.database.getRowForRowKey(l),{level:C=0}=b||{},R=C*y;w=x+p+R}}let g=this.ctx.icons.get("checkbox-uncheck"),E="checkbox-uncheck";if(a==="selection-tree"||a==="tree-selection"){const y=this.ctx.database.getTreeSelectionState(l);y.indeterminate&&d?(g=this.ctx.icons.get("checkbox-indeterminate"),E="checkbox-indeterminate"):y.checked&&d?(g=this.ctx.icons.get("checkbox-check"),E="checkbox-check"):!y.checked&&d?(g=this.ctx.icons.get("checkbox-uncheck"),E="checkbox-uncheck"):(g=this.ctx.icons.get("checkbox-disabled"),E="checkbox-disabled")}else{const y=this.ctx.database.getRowSelection(l);y&&d?(g=this.ctx.icons.get("checkbox-check"),E="checkbox-check"):y&&!d?(g=this.ctx.icons.get("checkbox-check-disabled"),E="checkbox-check-disabled"):!y&&d?(g=this.ctx.icons.get("checkbox-uncheck"),E="checkbox-uncheck"):(g=this.ctx.icons.get("checkbox-disabled"),E="checkbox-disabled")}w+f+u>this.drawX+this.visibleWidth||m+f+u>this.drawY+this.visibleHeight||(a==="index-selection"?(this.ctx.hoverCell&&this.ctx.hoverCell.rowIndex===c||["checkbox-disabled","checkbox-check"].includes(E))&&(this.drawSelectionImageX=w,this.drawSelectionImageY=m,this.drawSelectionImageWidth=f,this.drawSelectionImageHeight=f,this.drawSelectionImageName=E,this.drawSelectionImageSource=g):(this.drawSelectionImageX=w,this.drawSelectionImageY=m,this.drawSelectionImageWidth=f,this.drawSelectionImageHeight=f,this.drawSelectionImageName=E,this.drawSelectionImageSource=g))}updateHoverIcon(){if(this.ctx.database.getReadonly(this.rowKey,this.key))return;const{BODY_CELL_HOVER_ICON_METHOD:i,CELL_HOVER_ICON_SIZE:s,CELL_PADDING:o,ENABLE_MERGE_CELL_LINK:r}=this.ctx.config;if(typeof i=="function"){const l=i({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()});l!==void 0&&(this.hoverIconName=l)}const{hoverCell:a}=this.ctx;if(this.hoverIconName&&!this.ctx.editing&&a){let c=0,l=0;if(a.rowKey===this.rowKey&&(c=this.drawX+this.width-s-o,l=this.drawY+(this.height-s)/2),this.rowspan!==1&&r){const f=this.getSpanInfo(),{yArr:u}=f,x=u[0],w=u[1];if(a.rowIndex>=x&&a.rowIndex<=w){const{width:m,height:g,offsetTop:E,offsetLeft:y}=f;c=this.drawX-y+m-s-o,l=this.drawY-E+(g-s)/2}}const d=this.ctx.icons.get(this.hoverIconName);this.drawHoverImageX=c,this.drawHoverImageY=l,this.drawHoverImageWidth=s,this.drawHoverImageHeight=s,this.drawHoverImageName=this.hoverIconName,this.drawHoverImageSource=d}}getSpanInfo(){return this.ctx.database.getSpanInfo(this)}getDisplayText(){return this.cellType==="footer"?this.renderFooter||this.text===null||this.text===void 0?"":this.text:this.rowspan===0||this.colspan===0||this.render||this.type==="index-selection"&&(this.ctx.hoverCell&&this.ctx.hoverCell.rowIndex===this.rowIndex||["checkbox-disabled","checkbox-check"].includes(this.drawSelectionImageName))||this.text===null||this.text===void 0?"":`${this.text}`}getText(){if(this.cellType==="footer")return typeof this.formatterFooter=="function"?this.formatterFooter({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.row[this.key]}):this.row[this.key];if(typeof this.formatter=="function")return this.formatter({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()});const{BODY_CELL_FORMATTER_METHOD:e}=this.ctx.config;return typeof e=="function"?e({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()}):["index-selection","index"].includes(this.type)?`${this.rowIndex+1}`:(this.value=this.ctx.database.getItemValue(this.rowKey,this.key),this.value)}getValue(){return this.ctx.database.getItemValue(this.rowKey,this.key)}setValue(e){this.ctx.setItemValueByEditor(this.rowKey,this.key,e)}getOverlayerViewsStyle(){let e=`${this.drawX-this.ctx.fixedLeftWidth}px`,i=`${this.drawY-this.ctx.body.y}px`;return this.fixed==="left"?e=`${this.drawX}px`:this.fixed==="right"&&(e=`${this.drawX-(this.ctx.stageWidth-this.ctx.fixedRightWidth)}px`),this.cellType==="footer"&&this.ctx.config.FOOTER_FIXED&&(i=`${this.drawY-this.ctx.footer.y}px`),{position:"absolute",overflow:"hidden",left:e,top:i,width:`${this.visibleWidth}px`,height:`${this.visibleHeight}px`,pointerEvents:"initial",userSelect:"none"}}drawContainer(){const{paint:e,config:{BORDER_COLOR:i,BORDER:s}}=this.ctx,{drawX:o,drawY:r}=this;e.drawRect(o,r,this.visibleWidth,this.visibleHeight,{borderColor:s?i:"transparent",fillColor:this.drawCellBgColor}),e.drawRect(o,r,this.width,this.height,{borderColor:"transparent",fillColor:this.drawCellSkyBgColor}),s||this.ctx.paint.drawLine([o,r+this.visibleHeight,o+this.visibleWidth,r+this.visibleHeight],{borderColor:i,fillColor:i,borderWidth:1,lineCap:"round",lineJoin:"round"})}drawAutofillPiont(){if(this.cellType==="footer")return;const{SELECT_BORDER_COLOR:e,ENABLE_AUTOFILL:i,ENABLE_SELECTOR:s,AUTOFILL_POINT_BORDER_COLOR:o}=this.ctx.config;if(!s||!i||this.ctx.editing)return;const{xArr:r,yArr:a}=this.ctx.selector,c=r[1],l=a[1],{colIndex:d,rowIndex:f,drawX:u,drawY:x}=this;if(d===c&&f===l){const m=d===this.ctx.maxColIndex||f===this.ctx.maxRowIndex||d===this.ctx.lastCenterColIndex?6:4;this.ctx.paint.drawRect(u+this.width-m,x+this.height-m,6,6,{borderColor:o,fillColor:e})}}draw(){this.drawTreeLine(),this.drawText(),this.drawImage(),this.drawSelector(),this.drawAutofillPiont(),this.drawErrorTip()}getWidthByColIndexColSpan(e,i){if(i===0)return 0;let s=0;for(let o=e;o<e+i;o++){const r=this.ctx.header.leafCellHeaders[o];s+=r.width}return s}drawText(){const{CELL_PADDING:e,BODY_FONT:i,PLACEHOLDER_COLOR:s}=this.ctx.config,{ellipsis:o}=this.ctx.paint.handleEllipsis(this.displayText,this.drawTextWidth,e,i);this.ellipsis=o;const{placeholder:r}=this.column;let a=this.displayText,c=this.drawTextColor;return!this.ctx.database.getReadonly(this.rowKey,this.key)&&r&&["",null,void 0].includes(this.text)&&this.cellType==="body"&&!(this.rowspan===0||this.colspan===0)&&(a=r,c=s),this.ctx.paint.drawText(a,this.drawTextX,this.drawTextY,this.drawTextWidth,this.drawTextHeight,{font:i,padding:e,align:this.align,verticalAlign:this.verticalAlign,color:c})}drawImage(){if(this.drawSelectionImageSource&&this.ctx.paint.drawImage(this.drawSelectionImageSource,this.drawSelectionImageX,this.drawSelectionImageY,this.drawSelectionImageWidth,this.drawSelectionImageHeight),this.drawTreeImageSource&&this.ctx.paint.drawImage(this.drawTreeImageSource,this.drawTreeImageX,this.drawTreeImageY,this.drawTreeImageWidth,this.drawTreeImageHeight),this.drawHoverImageSource){const{CELL_HOVER_ICON_BG_COLOR:e,CELL_HOVER_ICON_BORDER_COLOR:i}=this.ctx.config;this.ctx.paint.drawRect(this.drawHoverImageX-2,this.drawHoverImageY-2,this.drawHoverImageWidth+4,this.drawHoverImageHeight+4,{borderColor:i,radius:4,borderWidth:1,fillColor:e}),this.ctx.paint.drawImage(this.drawHoverImageSource,this.drawHoverImageX,this.drawHoverImageY,this.drawHoverImageWidth,this.drawHoverImageHeight)}}drawSelector(){if(this.cellType==="footer")return;const{ENABLE_SELECTOR:e}=this.ctx.config;if(!e)return;const{xArr:i,yArr:s,xArrCopy:o,yArrCopy:r}=this.ctx.selector;this.drawBorder({xArr:o,yArr:r,borderColor:this.ctx.config.SELECT_BORDER_COLOR||"rgb(82,146,247)",fillColor:"transparent",borderWidth:1,lineDash:[4,4]}),this.drawBorder({xArr:this.ctx.autofill.xArr,yArr:this.ctx.autofill.yArr,borderColor:this.ctx.config.SELECT_BORDER_COLOR||"rgb(82,146,247)",fillColor:"transparent",borderWidth:1,lineDash:[4,4]}),this.drawBorder({xArr:i,yArr:s,borderColor:this.ctx.config.SELECT_BORDER_COLOR||"rgb(82,146,247)",fillColor:"transparent",borderWidth:1});const[a,c]=i,[l,d]=s;!(a===c&&l===d)&&this.colIndex>=a&&this.colIndex<=c&&this.rowIndex>=l&&this.rowIndex<=d&&this.ctx.paint.drawRect(this.drawX,this.drawY,this.width,this.height,{borderColor:"transparent",fillColor:this.ctx.config.SELECT_AREA_COLOR||"rgba(82,146,247,0.1)"}),this.operation&&this.rowIndex>=l&&this.rowIndex<=d&&this.ctx.paint.drawRect(this.drawX,this.drawY,this.visibleWidth,this.visibleHeight,{borderColor:"transparent",fillColor:this.ctx.config.SELECT_ROW_COL_BG_COLOR||"transparent"})}drawErrorTip(){if(this.cellType==="footer"||!this.message||this.rowspan===0||this.colspan===0)return;const{ERROR_TIP_ICON_SIZE:e,ERROR_TIP_COLOR:i}=this.ctx.config,{width:s}=this,o=this.drawX,r=this.drawY,a=[o+s-e-.5,r,o+s-.5,r,o+s-.5,r+e];this.ctx.paint.drawLine(a,{borderColor:i,fillColor:i,borderWidth:1,lineCap:"round",lineJoin:"round"})}drawBorder(e){const{drawX:i,drawY:s,rowIndex:o,colIndex:r,height:a,width:c}=this;let l=i,d=s;const{xArr:f,yArr:u,lineDash:x=[],borderWidth:w=1,borderColor:m,fillColor:g}=e,E=f[0],y=f[1],p=u[0],b=u[1];if(r>=E&&r<=y&&o===p){const C=r===y?1:0,R=r===E?1:0;this.ctx.paint.drawLine([l+R,d+1,l+c-C,d+1],{borderColor:m,fillColor:g,borderWidth:w,lineCap:"round",lineJoin:"round",lineDash:x})}if(r===y&&o>=p&&o<=b){const C=o===p?1:0,R=o===b?1:0;this.ctx.paint.drawLine([l+c-1,d+C,l+c-1,d+a-R],{borderColor:m,fillColor:g,borderWidth:w,lineCap:"round",lineJoin:"round",lineDash:x})}if(r>=E&&r<=y&&o===b){const C=r===y?1:0,R=r===E?1:0;this.ctx.paint.drawLine([l+R,d+a-1,l+c-C,d+a-1],{borderColor:m,fillColor:g,borderWidth:w,lineCap:"round",lineJoin:"round",lineDash:x})}if(r===E&&o>=p&&o<=b){const C=o===b?1:0,R=o===p?1:0;this.ctx.paint.drawLine([l+1,d+R,l+1,d+a-C],{borderColor:m,fillColor:g,borderWidth:w,lineCap:"round",lineJoin:"round",lineDash:x})}}}class ue{constructor(t,e){n(this,"loading",!1);n(this,"ctx");n(this,"data");n(this,"columns");n(this,"footerData",[]);n(this,"rowKeyMap",new Map);n(this,"colIndexKeyMap",new Map);n(this,"headerMap",new Map);n(this,"rowIndexRowKeyMap",new Map);n(this,"rowKeyRowIndexMap",new Map);n(this,"checkboxKeyMap",new Map);n(this,"selectionMap",new Map);n(this,"expandMap",new Map);n(this,"originalDataMap",new Map);n(this,"changedDataMap",new Map);n(this,"validationErrorMap",new Map);n(this,"itemRowKeyMap",new WeakMap);n(this,"bufferData",[]);n(this,"bufferCheckState",{buffer:!1,check:!1,indeterminate:!1,selectable:!0});n(this,"sumHeight",0);n(this,"filterMethod");n(this,"positions",[]);n(this,"sortState",new Map);this.ctx=t;const{data:i=[],columns:s=[],footerData:o=[]}=e;this.data=i,this.footerData=o,this.columns=s,this.setLoading(!0),this.init()}init(t=!0){this.clearBufferData(),this.rowKeyMap.clear(),this.checkboxKeyMap.clear(),this.colIndexKeyMap.clear(),this.rowIndexRowKeyMap.clear(),this.rowKeyRowIndexMap.clear();const e=this.getColumns(),i=et(e);if(this.ctx.hasSelection=i.some(s=>s.type==="selection"),this.ctx.hasTree=i.some(s=>s.type==="tree"),t){this.originalDataMap.clear(),this.changedDataMap.clear(),this.validationErrorMap.clear();const{ROW_KEY:s}=this.ctx.config;s?(this.ctx.hasSelection||this.selectionMap.clear(),this.ctx.hasTree||this.expandMap.clear()):(this.selectionMap.clear(),this.expandMap.clear())}this.itemRowKeyMap=new WeakMap,this.initData(this.data),this.getData(),this.bufferCheckState.buffer=!1}clearBufferData(){this.bufferData=[]}initData(t,e=0,i=[]){const s=t.length;t.forEach((o,r)=>{var y;const{ROW_KEY:a="",DEFAULT_EXPAND_ALL:c,CELL_HEIGHT:l,SELECTABLE_METHOD:d,CHECKBOX_KEY:f}=this.ctx.config,u=o[a],x=u!=null?`${u}`:At();this.itemRowKeyMap.set(o,x);const w=o._height||l,m=o._readonly;let g=!0;if(typeof d=="function"&&(g=d),f){const p=o[f];if(this.checkboxKeyMap.has(p)){const b=this.checkboxKeyMap.get(p)||[];b.push(x),this.checkboxKeyMap.set(p,b)}else this.checkboxKeyMap.set(p,[x])}this.selectionMap.set(x,{key:f?o[f]:x,row:o,check:((y=this.selectionMap.get(x))==null?void 0:y.check)||!1});const E=c||this.expandMap.get(x)||o._expand||!1;this.expandMap.set(x,E),this.rowKeyMap.set(x,{readonly:m,index:r,rowIndex:r,level:e,height:w,check:!1,selectable:g,expand:E,expandLazy:!1,hasChildren:o._hasChildren||(Array.isArray(o.children)?o.children.length>0:!1),expandLoading:!1,item:o,parentRowKeys:i,parentRowKey:i[i.length-1]||"",isLastChild:r===s-1}),Array.isArray(o.children)&&o.children.length&&this.initData(o.children,e+1,[...i,x])})}setRowHeight(t,e){const i=this.rowIndexRowKeyMap.get(t);if(i===void 0)return;const s=this.rowKeyMap.get(i);s.height=e,s.item._height=e,this.clearBufferData()}getAllRowsData(){return[]}filterColumns(t){return t.reduce((e,i)=>{if(!(typeof i.hide=="function"?i.hide():i.hide)){const o={...i};o.children&&Array.isArray(o.children)&&(o.children=this.filterColumns(o.children)),e.push(o)}return e},[])}getColumns(){return this.filterColumns(this.columns)}setColumns(t){this.columns=t,this.clearBufferData()}setData(t){this.data=t,this.setLoading(!0),this.init()}getData(){if(this.bufferData.length>0)return{data:this.bufferData,sumHeight:this.sumHeight,positions:this.positions};let t=[],e=0;this.sumHeight=0,this.positions=[];const i=o=>{o.forEach(r=>{t.push(r);const a=this.itemRowKeyMap.get(r),{expand:c,hasChildren:l,height:d}=this.rowKeyMap.get(a),f=this.sumHeight;this.sumHeight+=d,this.rowIndexRowKeyMap.set(e,a),this.rowKeyRowIndexMap.set(a,e),this.positions.push({top:f,height:d,bottom:this.sumHeight}),e+=1,c&&l&&i(r.children)})};this.rowIndexRowKeyMap.clear(),this.rowKeyRowIndexMap.clear();let s=this.data;if(typeof this.filterMethod=="function"&&(s=this.filterMethod(s)),this.sortState.size){const o=Array.from(this.sortState.entries()).sort((r,a)=>r[1].timestamp-a[1].timestamp);s=this.sortDataRecursive(s,o)}return i(s),this.bufferData=t,{data:t,sumHeight:this.sumHeight,positions:this.positions}}setFooterData(t){this.footerData=t}getFooterData(){return this.footerData}setFilterMethod(t){this.filterMethod=t}clearFilterMethod(){this.filterMethod=void 0}getSortState(t){return this.sortState.get(t)||{direction:"none",timestamp:0}}setSortState(t,e){const i=Date.now();this.ctx.config.SORT_STRICTLY&&this.sortState.clear(),e==="none"?this.sortState.delete(t):this.sortState.set(t,{direction:e,timestamp:i}),this.ctx.emit("sortChange",this.sortState),this.clearBufferData(),this.ctx.emit("draw")}clearSort(){this.sortState.clear(),this.ctx.emit("sortChange",this.sortState),this.clearBufferData(),this.ctx.emit("draw")}sortDataRecursive(t,e){let i=[...t];for(const[s,{direction:o}]of e){if(o==="none")continue;const r=this.getColumnByKey(s);!r||!r.column.sortBy||(i=this.applySingleColumnSort(i,s,o,r.column.sortBy))}return i.map(s=>(s.children&&Array.isArray(s.children)&&(s.children=this.sortDataRecursive(s.children,e)),s))}applySingleColumnSort(t,e,i,s){return t.sort((o,r)=>{const a=o[e],c=r[e];let l=0;if(typeof s=="function")l=s(o,r);else if(s==="number"){const d=Number(a)||0,f=Number(c)||0;l=d-f}else if(s==="string"){const d=String(a||""),f=String(c||"");l=d.localeCompare(f)}else s==="date"&&(l=xe(a,c));return i==="asc"?l:-l})}expandItem(t,e=!1){const i=this.rowKeyMap.get(t);i.expand=e,this.expandMap.set(t,e),this.clearBufferData(),this.ctx.emit("draw")}setExpandRowKeys(t,e=!0){this.expandMap.clear(),t.forEach(i=>{const s=this.rowKeyMap.get(i);this.expandMap.set(i,e),s.expand=e}),this.clearBufferData(),this.ctx.emit("draw")}getExpandRowKeys(){let t=[];return this.rowKeyMap.forEach((e,i)=>{e.expand&&t.push(i)}),t}expandAll(t){this.expandMap.clear(),this.rowKeyMap.forEach(e=>{e.expand=t,this.expandMap.set(e.key,t)}),this.clearBufferData(),this.ctx.emit("draw")}expandLoading(t,e=!1){const i=this.rowKeyMap.get(t);i.expandLoading=e,this.clearBufferData(),this.ctx.emit("draw")}setExpandChildren(t,e){const i=this.rowKeyMap.get(t);i.expand=!0,this.expandMap.set(t,!0),i.expandLazy=!0,i.item.children=e,this.initData(i.item.children,i.level+1),this.clearBufferData()}getIsExpandLoading(t){return this.rowKeyMap.get(t).expandLoading}getIsExpandLazy(t){return this.rowKeyMap.get(t).expandLazy}getIsExpand(t){return this.rowKeyMap.get(t).expand}getRowForRowKey(t){return this.rowKeyMap.get(t)}getRowForRowIndex(t){const e=this.getRowKeyForRowIndex(t);return this.rowKeyMap.get(e)}getRowKeyForRowIndex(t){return this.rowIndexRowKeyMap.get(t)||""}getRowKeyByItem(t){return this.itemRowKeyMap.get(t)}getRowIndexForRowKey(t){return this.rowKeyRowIndexMap.get(t)}getItemValueForRowIndexAndColIndex(t,e){if(!(this.rowIndexRowKeyMap.has(t)&&this.colIndexKeyMap.get(e)))return null;const s=this.rowIndexRowKeyMap.get(t),o=this.colIndexKeyMap.get(e);return s===void 0||o===void 0?null:{rowKey:s,key:o,value:this.getItemValue(s,o)}}getItemValue(t,e){const i=this.rowKeyMap.get(t);return i&&i.item?i.item[e]===void 0?null:i.item[e]:null}async batchSetItemValue(t,e=!1,i=!0,s="none"){let o=[],r=i;const a=new Set;let c=[],l=t.map(x=>{const{rowKey:w,key:m}=x;let g=x.value,E=g;const y=this.getRowDataItemForRowKey(w),p=this.getItemValue(w,m),b=this.getVirtualBodyCellByKey(w,m);return(b==null?void 0:b.type)==="number"&&(["",void 0,null].includes(g)?E=null:/^-?\d+(\.\d+)?$/.test(`${g}`)?E=Number(g):(E=p,c.push({...x,value:E,oldValue:p,row:y}))),{...x,value:E,oldValue:p,row:y}});if(l=l.filter(x=>!c.some(w=>x.rowKey===w.rowKey&&x.key===w.key)),c.length){const x={code:"ERR_BATCH_SET_NUMBER_VALUE",message:"Assignment failed, not a numeric type",data:c};this.ctx.emit("error",x)}if(l=l.filter(x=>x.oldValue!==x.value),!l.length)return;const{BEFORE_VALUE_CHANGE_METHOD:d}=this.ctx.config;s==="none"&&typeof d=="function"&&(l=await d(l),r=!1),l.forEach(x=>{const{value:w,rowKey:m,key:g}=x,E=this.getItemValue(m,g);a.add(m),this.setItemValue(m,g,w,!1,!1,!1,r),o.push({rowKey:m,key:g,oldValue:E,newValue:w})});let f=[];a.forEach(x=>{f.push(this.ctx.database.getRowDataItemForRowKey(x))});const u=l.map(({rowKey:x,key:w})=>this.getValidator(x,w));Promise.all(u).then(()=>{this.validationErrorMap.size===0&&this.changedDataMap.size>0&&this.ctx.emit("validateChangedData",this.getChangedData())}),this.ctx.emit("change",l,f),e&&this.ctx.history.pushState({changeList:o,scrollX:this.ctx.scrollX,scrollY:this.ctx.scrollY,type:"multiple"}),this.ctx.emit("draw")}async setItemValue(t,e,i,s=!1,o=!1,r=!1,a=!0){if(!this.rowKeyMap.has(t))return{};const{item:c}=this.rowKeyMap.get(t);let l=c[e],d=i;if(a&&this.ctx.database.getReadonly(t,e))return{oldValue:l,newValue:l};c[e]!==null&&typeof c[e]=="object"&&(l=JSON.parse(JSON.stringify(c[e])));const f=`${t}_${e}`;this.originalDataMap.has(f)||this.originalDataMap.set(f,l);const u=this.originalDataMap.get(f),x=this.getRowDataItemForRowKey(t);if(r){const w=this.getVirtualBodyCellByKey(t,e);if((w==null?void 0:w.type)==="number")if(["",void 0,null].includes(i))d=null;else if(/^-?\d+(\.\d+)?$/.test(`${i}`))d=Number(i);else{d=l;const g={code:"ERR_SET_NUMBER_VALUE",message:"Assignment failed, not a numeric type",data:[{rowKey:t,key:e,value:d,oldValue:l,row:x}]};this.ctx.emit("error",g)}if(d===l)return{oldValue:l,newValue:l};let m=[{rowKey:t,key:e,value:d,oldValue:l,row:x}];this.batchSetItemValue(m,s,!1),this.ctx.emit("editChange",{rowKey:t,key:e,oldValue:l,value:d,originalValue:u,row:x})}else this.changedDataMap.set(f,d),c[e]=d;return this.ctx.hasEvent("iterationChange")&&this.ctx.emit("iterationChange",{rowKey:t,key:e,oldValue:l,value:d,originalValue:this.originalDataMap.get(f),row:x}),o&&this.ctx.emit("draw"),{oldValue:l,newValue:d}}getRowDataItemForRowKey(t){if(!this.rowKeyMap.has(t))return{};const{item:e}=this.rowKeyMap.get(t);return e}setRowSelectionByCheckboxKey(t,e){const{CHECKBOX_KEY:i}=this.ctx.config;if(i){if(!this.rowKeyMap.has(t))return!1;const{item:s}=this.rowKeyMap.get(t),o=s[i];this.checkboxKeyMap.has(o)&&(this.checkboxKeyMap.get(o)||[]).forEach(a=>{const c=this.selectionMap.get(a);c&&(c.check=e)})}}toggleRowSelection(t,e){const i=this.rowKeyMap.get(t),s=this.selectionMap.get(t);if(!s)return;e==="selection-tree"||e==="tree-selection"?this.toggleTreeSelection(t):(s.check=!s.check,this.setRowSelectionByCheckboxKey(t,s.check)),this.ctx.emit("toggleRowSelection",i);const o=this.getSelectionRows();this.ctx.emit("selectionChange",o),this.bufferCheckState.buffer=!1,this.ctx.emit("draw")}toggleTreeSelection(t){const e=this.getTreeSelectionState(t),i=this.ctx.config.TREE_SELECT_MODE;if(i==="auto")e.checked&&!e.indeterminate?(this.setRowSelection(t,!1,!1),this.clearTreeSelectionRecursive(t)):(this.setRowSelection(t,!0,!1),this.selectTreeSelectionRecursive(t));else if(i==="cautious")e.checked&&!e.indeterminate?(this.setRowSelection(t,!1,!1),this.clearTreeSelectionRecursive(t)):(this.setRowSelection(t,!0,!1),this.selectTreeSelectionRecursive(t));else if(i==="strictly"){const s=this.selectionMap.get(t);s&&(s.check=!s.check,this.setRowSelectionByCheckboxKey(t,s.check))}this.ctx.emit("selectionChange",this.getSelectionRows()),this.ctx.emit("draw")}selectTreeSelectionRecursive(t){this.getTreeChildren(t).forEach(i=>{this.setRowSelection(i,!0,!1),this.selectTreeSelectionRecursive(i)})}clearTreeSelectionRecursive(t){this.getTreeChildren(t).forEach(i=>{this.setRowSelection(i,!1,!1),this.clearTreeSelectionRecursive(i)})}updateParentTreeSelection(t){const e=this.getTreeParent(t);if(!e)return;const s=this.getTreeChildren(e).map(l=>this.selectionMap.get(l)),o=s.filter(l=>l==null?void 0:l.check).length,r=s.length;let a=!1;r>0&&(o===0?a=!1:o===r||this.ctx.config.TREE_SELECT_MODE==="auto"?a=!0:this.ctx.config.TREE_SELECT_MODE==="cautious"&&(a=!1));const c=this.selectionMap.get(e);c&&c.check!==a&&(c.check=a,this.setRowSelectionByCheckboxKey(e,a),this.updateParentTreeSelection(e))}setRowSelection(t,e,i=!0){const s=this.selectionMap.get(t);s&&(s.check=e,this.setRowSelectionByCheckboxKey(t,s.check),this.ctx.emit("setRowSelection",e,s.row),(this.ctx.config.TREE_SELECT_MODE==="auto"||this.ctx.config.TREE_SELECT_MODE==="cautious")&&this.updateParentTreeSelection(t),i&&(this.bufferCheckState.buffer=!1,this.ctx.emit("draw")))}getSelectionRows(){let t=[];return this.selectionMap.forEach(e=>{e.check&&t.push(e.row)}),t}getRowSelection(t){const e=this.selectionMap.get(t);return e?e.check:!1}getTreeSelectionState(t){if(!this.getRowForRowKey(t))return{checked:!1,indeterminate:!1};const i=this.selectionMap.get(t),s=(i==null?void 0:i.check)||!1;if(this.getTreeChildren(t).length===0)return{checked:s,indeterminate:!1};let r=!1,a=s;if(this.ctx.config.TREE_SELECT_MODE==="auto"){const l=g=>{const E=this.getTreeChildren(g);let y=[];for(const p of E)y.push(p),y.push(...l(p));return y},f=l(t).map(g=>this.selectionMap.get(g)),u=f.filter(g=>g==null?void 0:g.check).length,x=f.length,w=u>0;r=w&&!(u===x),a=s||w,s&&x>0&&u===0&&(a=!1,r=!1)}else if(this.ctx.config.TREE_SELECT_MODE==="cautious"){const l=g=>{const E=this.getTreeChildren(g);let y=[];for(const p of E)y.push(p),y.push(...l(p));return y},f=l(t).map(g=>this.selectionMap.get(g)),u=f.filter(g=>g==null?void 0:g.check).length,x=f.length,w=u>0,m=u===x;r=w&&!m,a=s||m,s&&x>0&&u===0&&(a=!1,r=!1)}else this.ctx.config.TREE_SELECT_MODE==="strictly"&&(r=!1,a=s);return{checked:a,indeterminate:r}}getTreeChildren(t){const e=this.getRowForRowKey(t);if(!e||!e.item||!e.item.children)return[];const i=[],s=o=>{for(const r of o){const a=this.getRowKeyByItem(r);a&&i.push(a),r.children&&r.children.length>0&&s(r.children)}};return s(e.item.children),i}getTreeParent(t){const e=(i,s)=>{for(const o of i){const r=this.getRowKeyByItem(o);if(o.children)for(const a of o.children){if(this.getRowKeyByItem(a)===s)return r;const l=e(o.children,s);if(l)return l}}return null};return e(this.data,t)}getRowSelectable(t){const{selectable:e,item:i,rowIndex:s}=this.rowKeyMap.get(t);return typeof e=="function"?e({row:i,rowIndex:s}):e}toggleAllSelection(){this.ctx.config.TREE_SELECT_MODE==="auto"||this.ctx.config.TREE_SELECT_MODE==="cautious"?this.rowKeyMap.forEach((i,s)=>{let o=i.selectable;if(typeof o=="function"&&(o=o({row:i.item,rowIndex:i.rowIndex})),o){const r=this.selectionMap.get(s);r&&(r.check=!0,this.setRowSelectionByCheckboxKey(s,!0))}}):this.rowKeyMap.forEach((i,s)=>{let o=i.selectable;typeof o=="function"&&(o=o({row:i.item,rowIndex:i.rowIndex})),o&&this.setRowSelection(s,!0,!1)});const e=this.getSelectionRows();this.ctx.emit("toggleAllSelection",e),this.ctx.emit("selectionChange",e),this.bufferCheckState.buffer=!1,this.ctx.emit("draw")}clearSelection(t=!1){const e=this.ctx.config.TREE_SELECT_MODE==="auto"||this.ctx.config.TREE_SELECT_MODE==="cautious";t?e?this.rowKeyMap.forEach((s,o)=>{const r=this.selectionMap.get(o);r&&(r.check=!1,this.setRowSelectionByCheckboxKey(o,!1))}):this.rowKeyMap.forEach((s,o)=>{this.setRowSelection(o,!1,!1)}):(this.selectionMap.clear(),this.rowKeyMap.forEach((s,o)=>{this.selectionMap.set(o,{check:!1,row:s.item,key:o})}));const i=this.getSelectionRows();this.ctx.emit("clearSelection"),this.ctx.emit("selectionChange",i),this.bufferCheckState.buffer=!1,this.ctx.emit("draw")}getCheckedState(){const{buffer:t,...e}=this.bufferCheckState;if(t)return e;const i=this.rowKeyMap.size;let s=0,o=0;const r=this.selectionMap.size,a=Array.from(this.selectionMap.values()).some(u=>u.check);this.rowKeyMap.forEach((u,x)=>{var m;(m=this.selectionMap.get(x))!=null&&m.check&&(s+=1);let w=u.selectable;typeof w=="function"&&(w=w({row:u.item,rowIndex:u.rowIndex})),w&&(o+=1)});const c=r>i&&s===0&&a,l=o&&o>s&&s>0||c,d=o!==0,f=!!o&&o===s;return this.bufferCheckState={buffer:!0,check:f,indeterminate:l,selectable:d},{check:f,indeterminate:l,selectable:d}}updateColIndexKeyMap(t=[]){this.colIndexKeyMap.clear(),t.forEach(e=>{this.colIndexKeyMap.set(e.colIndex,e.key)})}getColumnByColIndex(t){var i;const e=this.colIndexKeyMap.get(t);if(e&&this.headerMap.has(e))return(i=this.headerMap.get(e))==null?void 0:i.column}getColumnByKey(t){const e=this.headerMap.get(t);if(e)return e}getColIndexForKey(t){var e;if(t&&this.headerMap.has(t))return(e=this.headerMap.get(t))==null?void 0:e.colIndex}getColHeaderByIndex(t){const e=this.colIndexKeyMap.get(t);if(e&&this.headerMap.has(e))return this.headerMap.get(e)}getChangedData(){let t=[];return this.changedDataMap.forEach((e,i)=>{const s=this.originalDataMap.get(i),o=i.split("_")[0],r=i.split("_")[1];s!==e&&t.push({rowKey:o,colKey:r,originalValue:s,row:this.ctx.database.getRowDataItemForRowKey(o),value:e})}),t}getChangedRows(){const t=new Set;this.changedDataMap.forEach((i,s)=>{const o=this.originalDataMap.get(s),r=s.split("_")[0];o!==i&&t.add(r)});let e=[];return t.forEach(i=>{e.push(this.ctx.database.getRowDataItemForRowKey(i))}),e}isHasChangedData(t,e){const i=`${t}_${e}`;if(!this.changedDataMap.has(i))return!1;const s=this.originalDataMap.get(i),o=this.changedDataMap.get(i);return s!==o}getPositionForRowIndex(t){return t<this.positions.length?this.positions[t]:{height:0,top:0,bottom:0}}setHeader(t,e){return t?(this.headerMap.set(t,e),!0):!1}getReadonly(t,e){const{DISABLED:i}=this.ctx.config;if(i)return!0;const s=this.rowKeyMap.get(t),o=this.headerMap.get(e);if(!s||!o)return!0;const r=s.readonly,a=o.readonly,{BODY_CELL_READONLY_METHOD:c}=this.ctx.config;if(typeof c=="function"&&o){const d=c({row:s.item,rowIndex:s.rowIndex,colIndex:o.colIndex,column:o.column,value:this.getItemValue(t,e)});if(d!==void 0)return d}return a||r}clearValidate(){this.validationErrorMap.clear()}hasValidationError(){return this.validationErrorMap.size!==0}getValidator(t,e){return new Promise(i=>{const s=this.rowKeyMap.get(t),o=this.headerMap.get(e),{BODY_CELL_RULES_METHOD:r}=this.ctx.config;if(o===void 0)return i([]);const a=o.column;let c=a.rules;if(typeof r=="function"){const d=r({row:s.item,rowIndex:s.rowIndex,colIndex:o.colIndex,column:a,value:this.getItemValue(t,e)});d&&(c=d)}if(c){const l={row:s.item,rowIndex:s.rowIndex,colIndex:o.colIndex,column:a,key:e,rowKey:t,value:this.getItemValue(t,e),field:e,fieldValue:this.getItemValue(t,e)},f=new re(c).validate(l);this.setValidationError(t,e,f),i(f)}else this.clearValidationError(t,e),i([])})}getHeightByRowIndexRowSpan(t,e){let i=0;for(let s=0;s<e;s++){const o=this.positions[t+s];o&&(i+=o.height)}return i}getSpanInfo(t){const{rowIndex:e,key:i,rowKey:s,row:o,value:r,colIndex:a,relationRowKeys:c,relationColKeys:l,rowspan:d,height:f,width:u,colspan:x,mergeRow:w,mergeCol:m}=t;if(d===1&&x===1)return{xArr:[a,a],yArr:[e,e],rowspan:d,colspan:x,height:f,width:u,offsetTop:0,offsetLeft:0,dataList:[{rowKey:s,key:i,row:o,value:r}]};let g=e,E=e,y=a,p=a,b=[],C=0,R=0,v=0,T=0;if(d!==1&&w){T=u;const S=c.reduce((I,_)=>{const O=this.getItemValue(s,_)??"";return`${I}${O}`},"");for(let I=e-1;I>=0;I--){const _=this.rowIndexRowKeyMap.get(I)||"",O=c.reduce((A,L)=>{const H=this.getItemValue(_,L)??"";return`${A}${H}`},"");if(S===O)g=I;else break}for(let I=e;I<=this.ctx.maxRowIndex;I++){const _=this.rowIndexRowKeyMap.get(I)||"",O=c.reduce((A,L)=>{const H=this.getItemValue(_,L)??"";return`${A}${H}`},"");if(S===O)E=I;else break}for(let I=g;I<e;I++){const{height:_}=this.positions[I];C+=_}for(let I=g;I<=E;I++){const{height:_}=this.positions[I];v+=_;const O=this.rowIndexRowKeyMap.get(I)||"",{item:A}=this.rowKeyMap.get(O),L=this.getItemValue(O,i);b.push({rowKey:O,key:i,value:L,row:A})}}if(x!==1&&m){v=f;for(let S=a-1;S>=0;S--){const I=this.getColumnByColIndex(S);if(!I)break;const _=this.getItemValue(s,i),O=this.getItemValue(s,I.key);if(_===O&&l.includes(I.key))y=S;else break}for(let S=a;S<=this.ctx.maxColIndex;S++){const I=this.getColumnByColIndex(S);if(!I)break;const _=this.getItemValue(s,i),O=this.getItemValue(s,I.key);if(_===O&&l.includes(I.key))p=S;else break}for(let S=y;S<a;S++){const I=this.getColumnByColIndex(S);if(!I)break;R+=I.width||100}for(let S=y;S<=p;S++){const I=this.getColumnByColIndex(S);if(!I)break;T+=I.width||100,b.push({rowKey:s,key:I.key,value:this.getItemValue(s,I.key),row:o})}}return{xArr:[y,p],yArr:[g,E],rowspan:d,colspan:x,height:v,width:T,offsetTop:C,offsetLeft:R,dataList:b}}setLoading(t){this.loading=t,this.ctx.emit("loadingChange",t)}getLoading(){return this.loading}setValidationErrorByRowIndex(t,e,i){const s=this.rowIndexRowKeyMap.get(t),o=`${s}_${e}`,r=this.getRowForRowIndex(t),a=this.getColumnByKey(e);if(!s||!a||!r)return;const c=this.getItemValue(s,e),l=[{key:e,rowKey:s,rowIndex:t,colIndex:a.colIndex,column:a.column,row:r,value:c,message:i,field:e,fieldValue:c}];this.validationErrorMap.set(o,l)}setValidationError(t,e,i){const s=`${t}_${e}`;this.validationErrorMap.set(s,i)}clearValidationError(t,e){const i=`${t}_${e}`;this.validationErrorMap.has(i)&&this.validationErrorMap.delete(i)}getValidationError(t,e){const i=`${t}_${e}`;return this.validationErrorMap.get(i)||[]}getVirtualBodyCell(t,e){const i=this.getColumnByColIndex(e),s=this.getRowForRowIndex(t);return!i||!s?void 0:new xt(this.ctx,t,e,0,0,0,0,i,s.item,"body")}getVirtualBodyCellByKey(t,e){const i=this.getRowIndexForRowKey(t),s=this.getColIndexForKey(e);if(!(i===void 0||s===void 0))return this.getVirtualBodyCell(i,s)}hasMergeCell(t,e){let i=!1;for(let s=e[0];s<=e[1];s++)for(let o=t[0];o<=t[1];o++){const r=this.getVirtualBodyCell(s,o);if(r&&(r.rowspan!==1||r.colspan!==1)){i=!0;break}}return i}calculateMaxTreeDepth(t,e=0){let i=e;return t.forEach(s=>{if(Array.isArray(s.children)&&s.children.length>0){const o=this.calculateMaxTreeDepth(s.children,e+1);i=Math.max(i,o)}}),i}}class ge{constructor(t){n(this,"ctx");n(this,"history",[]);n(this,"historyIndex",-1);this.ctx=t,this.init()}init(){this.ctx.on("keydown",t=>{if(!this.ctx.editing){if(t.ctrlKey&&!t.shiftKey&&t.code==="KeyZ"||t.metaKey&&!t.shiftKey&&t.code==="KeyZ"){t.preventDefault(),this.ctx.clearSelector(),this.ctx.clearAutofill(),this.backState();return}if(t.ctrlKey&&t.code==="KeyY"||t.ctrlKey&&t.shiftKey&&t.code==="KeyZ"||t.metaKey&&t.shiftKey&&t.code==="KeyZ"){t.preventDefault(),this.ctx.clearSelector(),this.ctx.clearAutofill(),this.forwardState();return}}})}pushState(t){const{HISTORY_NUM:e=0,ENABLE_HISTORY:i}=this.ctx.config;i&&(this.history.push(t),this.history.length>e&&this.history.splice(0,1),this.historyIndex=this.history.length-1)}backState(){if(this.historyIndex>=0){const{changeList:t,scrollX:e,scrollY:i}=this.history[this.historyIndex],s=t.map(o=>({rowKey:o.rowKey,key:o.key,value:o.oldValue,row:{}}));this.ctx.setScroll(e,i),this.ctx.database.batchSetItemValue(s,!1,!1,"back"),this.historyIndex-=1}}forwardState(){if(this.historyIndex<this.history.length-1){this.historyIndex+=1;const{changeList:t}=this.history[this.historyIndex],e=t.map(i=>({rowKey:i.rowKey,key:i.key,value:i.newValue,row:{}}));this.ctx.database.batchSetItemValue(e,!1,!1,"forward")}}clear(){this.history=[],this.historyIndex=-1}}class we{constructor(t){n(this,"eventTasks",new Map);n(this,"ctx");this.ctx=t,this.init()}init(){this.bind(window,"resize",this.handleResize.bind(this)),this.bind(window,"mouseup",this.handleMouseUp.bind(this)),this.bind(window,"mousemove",this.handleMousemove.bind(this)),this.bind(window,"blur",this.handleOutsideMousedown.bind(this)),this.bind(window,"mousedown",this.handleOutsideMousedown.bind(this)),this.bind(this.ctx.stageElement,"click",this.handleClick.bind(this)),this.bind(window,"keydown",this.handleKeydown.bind(this)),this.bind(this.ctx.stageElement,"wheel",this.handleWheel.bind(this),{passive:!1}),this.bind(this.ctx.stageElement,"touchstart",this.handleTouchstart.bind(this),{passive:!1}),this.bind(this.ctx.stageElement,"touchend",this.handleTouchend.bind(this)),this.bind(this.ctx.stageElement,"touchmove",this.handleTouchmove.bind(this),{passive:!1}),this.bind(this.ctx.stageElement,"contextmenu",this.handleContextMenu.bind(this)),this.bind(this.ctx.stageElement,"mousedown",this.handleMouseDown.bind(this)),this.bind(this.ctx.stageElement,"dblclick",this.handleDblclick.bind(this)),this.bind(this.ctx.stageElement,"mouseover",this.handleMouseover.bind(this)),this.bind(this.ctx.stageElement,"mouseout",this.handleMouseout.bind(this)),document.addEventListener("selectionchange",this.selectionchange.bind(this))}selectionchange(){this.ctx.domSelectionStr="";const t=window.getSelection();t&&t.toString()&&(this.ctx.domSelectionStr=t.toString())}clearDomSelection(){const t=window.getSelection();t&&!t.isCollapsed&&t.removeAllRanges()}destroy(){this.eventTasks.forEach((t,e)=>{this.unbind(window,e,t)}),document.removeEventListener("selectionchange",this.selectionchange.bind(this)),this.eventTasks.clear()}handleResize(t){this.ctx.emit("resetHeader",t),this.ctx.emit("resize",t)}handleMouseDown(t){this.clearDomSelection(),t.button===0&&(this.ctx.mousedown=!0),this.ctx.containerElement.focus({preventScroll:!0}),this.ctx.emit("mousedown",t)}handleMousemove(t){this.ctx.emit("mousemove",t)}handleMouseUp(t){t.button===0&&(this.ctx.mousedown=!1),this.ctx.emit("mouseup",t)}handleClick(t){this.ctx.emit("click",t)}handleKeydown(t){const{ENABLE_KEYBOARD:e}=this.ctx.config;e&&this.ctx.isTarget(t)&&this.ctx.emit("keydown",t)}handleWheel(t){this.ctx.emit("wheel",t)}handleTouchstart(t){this.ctx.emit("touchstart",t)}handleTouchend(t){this.ctx.emit("touchend",t)}handleTouchmove(t){this.ctx.emit("touchmove",t)}handleContextMenu(t){t.preventDefault(),this.ctx.emit("contextMenu",t)}handleMouseover(t){this.ctx.isMouseoverTargetContainer=!0,this.ctx.emit("mouseover",t)}handleMouseout(t){this.ctx.isMouseoverTargetContainer=!1,this.ctx.emit("mouseout",t)}handleDblclick(t){this.ctx.emit("dblclick",t)}handleOutsideMousedown(t){this.ctx.selector.enable&&(t.target instanceof Window||t.target instanceof Node&&!this.ctx.containerElement.contains(t.target))&&this.ctx.emit("outsideMousedown",t)}bind(t,e,i,s){t.addEventListener(e,i,s),this.eventTasks.set(e,i)}unbind(t,e,i){t.removeEventListener(e,i),this.eventTasks.delete(e)}}class me{constructor(){n(this,"events",new Map)}has(t){return this.events.has(t)}on(t,e){const i=this.events.get(t)||[];i.push(e),this.events.set(t,i)}once(t,e){const i=(...s)=>{e(...s),this.off(t,i)};return this.on(t,i),this}off(t,e){const i=this.events.get(t);if(i){const s=i.indexOf(e);s>=0&&(i.splice(s,1),i.length===0?this.events.delete(t):this.events.set(t,i))}}emit(t,...e){const i=this.events.get(t);i&&i.forEach(s=>{s(...e)})}destroy(){this.events.clear()}}class Ee{constructor(t){n(this,"ctx");const e=t.getContext("2d");if(!e)throw new Error("canvas context not found");this.ctx=e}scale(t){this.ctx.setTransform(1,0,0,1,0,0),this.ctx.scale(t,t)}measureTextWidth(t,e){return this.ctx.font=e,this.ctx.measureText(t).width}save(){this.ctx.save()}restore(){this.ctx.restore()}translate(t,e){this.ctx.translate(t,e)}setCursor(t="default"){this.ctx.canvas.style.cursor=t}clear(t=0,e=0,i,s){this.ctx.clearRect(t,e,i||this.ctx.canvas.width,s||this.ctx.canvas.height)}drawShadow(t,e,i,s,o){const{fillColor:r,side:a,shadowWidth:c,colorStart:l,colorEnd:d}=o;this.ctx.save(),r&&(this.ctx.fillStyle=r,this.ctx.fillRect(t,e,i,s));let f;switch(a){case"left":f=this.ctx.createLinearGradient(t-c,e,t,e),f.addColorStop(0,l),f.addColorStop(1,d),this.ctx.fillStyle=f,this.ctx.fillRect(t-c,e,c,s);break;case"right":f=this.ctx.createLinearGradient(t+i,e,t+i+c,e),f.addColorStop(0,l),f.addColorStop(1,d),this.ctx.fillStyle=f,this.ctx.fillRect(t+i,e,c,s);break;case"top":f=this.ctx.createLinearGradient(t,e-c,t,e),f.addColorStop(0,l),f.addColorStop(1,d),this.ctx.fillStyle=f,this.ctx.fillRect(t,e-c,i,c);break;case"bottom":f=this.ctx.createLinearGradient(t,e+s,t,e+s+c),f.addColorStop(0,l),f.addColorStop(1,d),this.ctx.fillStyle=f,this.ctx.fillRect(t,e+s,i,c);break;default:console.error("Invalid side specified for shadow");break}}drawLine(t,e){if(t.length<4||t.length%2!==0)throw new Error("A valid array of points is required to draw a line");this.ctx.save();const{borderColor:i="black",borderWidth:s=1}=e;this.ctx.beginPath(),this.ctx.moveTo(t[0]-.5,t[1]-.5);for(let o=2;o<t.length;o+=2)this.ctx.lineTo(t[o]-.5,t[o+1]-.5);this.ctx.strokeStyle=i,this.ctx.lineWidth=s,e.lineDash&&(this.ctx.lineDashOffset=e.lineDashOffset??0,this.ctx.setLineDash(e.lineDash)),e.fillColor&&(this.ctx.fillStyle=e.fillColor,this.ctx.fill()),e.borderColor&&(this.ctx.strokeStyle=e.borderColor),this.ctx.stroke(),this.ctx.closePath(),this.ctx.restore()}drawImage(t,e,i,s,o){this.ctx.save(),this.ctx.drawImage(t,e,i,s,o),this.ctx.restore()}drawRect(t,e,i,s,{borderWidth:o=1,borderColor:r,fillColor:a,radius:c=0}={}){if(this.ctx.save(),this.ctx.beginPath(),a!==void 0&&(this.ctx.fillStyle=a),r!==void 0&&(this.ctx.lineWidth=o,this.ctx.strokeStyle=r),c===0)this.ctx.rect(t-.5,e-.5,i,s);else{const[l,d,f,u]=typeof c=="number"?[c,c,c,c]:c;this.ctx.moveTo(t+l,e),this.ctx.arcTo(t+i,e,t+i,e+d,d),this.ctx.arcTo(t+i,e+s,t+i-f,e+s,f),this.ctx.arcTo(t,e+s,t,e+s-u,u),this.ctx.arcTo(t,e,t+l,e,l)}a!==void 0&&this.ctx.fill(),r!==void 0&&this.ctx.stroke(),this.ctx.restore()}drawText(t="",e,i,s,o,r={}){this.ctx.save();const{font:a="12px Arial",align:c="center",color:l="#495060",padding:d=0,verticalAlign:f="middle"}=r;this.ctx.font=a,this.ctx.fillStyle=l,this.ctx.textBaseline=f,this.ctx.textAlign=c;let u=0;f==="top"?u=i+d:f==="bottom"?u=i+o-d:u=i+(o+1)/2;let x=0;c==="left"?x=e+d:c==="right"?x=e+s-d:x=e+s/2;const{_text:w,ellipsis:m}=this.handleEllipsis(t,s,d,a);return this.ctx.fillText(w,x,u),this.ctx.restore(),m}handleEllipsis(t,e,i=0,s="12px Arial"){let o=!1,r=t;if(this.ctx.font=s,t==null||t==="")return{_text:"",ellipsis:o};const a=this.ctx.measureText("...").width;if(e<=a+i*2)return{_text:"",ellipsis:!0};const c=this.ctx.measureText(t).width;if(c&&c+a>=e-i*2){o=!0;let l=0;for(let d=0;d<t.length;d++)if(l+=this.ctx.measureText(t[d]).width,l>=e-i*2-a){r=t.slice(0,d)+"...";break}}return{_text:r,ellipsis:o}}}class It{constructor(t){n(this,"_config",{});n(this,"CSS_PREFIX","e-virt-table");n(this,"ICONS",[]);n(this,"ROW_KEY","");n(this,"DISABLED",!1);n(this,"HEADER_FONT","12px normal Arial");n(this,"BODY_FONT","12px normal Arial");n(this,"BORDER",!0);n(this,"STRIPE",!1);n(this,"STRIPE_COLOR","#fafafa");n(this,"BORDER_COLOR","#e1e6eb");n(this,"WIDTH",0);n(this,"RESIZE_MIN_WIDTH",40);n(this,"HEIGHT",0);n(this,"PLACEHOLDER_COLOR","#CDD0DC");n(this,"EMPTY_BODY_HEIGHT",120);n(this,"EMPTY_CUSTOM_STYLE",{});n(this,"EMPTY_TEXT","暂无数据");n(this,"MAX_HEIGHT",1e3);n(this,"BORDER_RADIUS",8);n(this,"ENABLE_OFFSET_HEIGHT",!1);n(this,"OFFSET_HEIGHT",0);n(this,"HEADER_HEIGHT",36);n(this,"ENABLE_HEADER_STICKY",!1);n(this,"HEADER_BG_COLOR","#F8FAFF");n(this,"BODY_BG_COLOR","#FFF");n(this,"HEADER_TEXT_COLOR","#1D2129");n(this,"BODY_TEXT_COLOR","#4E5969");n(this,"FOOTER_TEXT_COLOR","#4E5969");n(this,"LOADING_ICON_SVG","");n(this,"LOADING_ICON_COLOR","#4E5969");n(this,"EXPAND_ICON_SVG","");n(this,"SHRINK_ICON_SVG","");n(this,"EXPAND_ICON_COLOR","#4E5969");n(this,"SHRINK_ICON_COLOR","#4E5969");n(this,"ERROR_TIP_ICON_COLOR","red");n(this,"ERROR_TIP_ICON_SIZE",6);n(this,"COLUMNS_ALIGN","left");n(this,"COLUMNS_VERTICAL_ALIGN","middle");n(this,"EXPAND_LAZY",!0);n(this,"DEFAULT_EXPAND_ALL",!1);n(this,"CELL_WIDTH",100);n(this,"CELL_HEIGHT",36);n(this,"CELL_PADDING",8);n(this,"CELL_HOVER_ICON_SIZE",14);n(this,"CELL_HOVER_ICON_BG_COLOR","#fff");n(this,"CELL_HOVER_ICON_BORDER_COLOR","#DDE0EA");n(this,"SCROLLER_TRACK_SIZE",14);n(this,"SCROLLER_SIZE",8);n(this,"SCROLLER_COLOR","#dee0e3");n(this,"SCROLLER_TRACK_COLOR","#fff");n(this,"SCROLLER_FOCUS_COLOR","#bbbec4");n(this,"SELECT_BORDER_COLOR","rgb(82,146,247)");n(this,"SELECT_AREA_COLOR","rgba(82,146,247,0.1)");n(this,"SELECT_ROW_COL_BG_COLOR","transparent");n(this,"AUTOFILL_POINT_BORDER_COLOR","#fff");n(this,"EDIT_BG_COLOR","#fcf6ed");n(this,"CHECKBOX_KEY","");n(this,"CHECKBOX_COLOR","rgb(82,146,247)");n(this,"CHECKBOX_SIZE",20);n(this,"CHECKBOX_DISABLED_SVG","");n(this,"CHECKBOX_CHECK_SVG","");n(this,"CHECKBOX_UNCHECK_SVG","");n(this,"CHECKBOX_INDETERMINATE_SVG","");n(this,"SORT_STRICTLY",!0);n(this,"SORT_ASC_ICON_SVG","");n(this,"SORT_DESC_ICON_SVG","");n(this,"SORTABLE_ICON_SVG","");n(this,"SORT_ICON_COLOR","rgb(82,146,247)");n(this,"READONLY_COLOR","#fff");n(this,"READONLY_TEXT_COLOR","#4E5969");n(this,"ERROR_TIP_COLOR","#ED3F14");n(this,"FOOTER_BG_COLOR","#fafafa");n(this,"FOOTER_FIXED",!0);n(this,"FOOTER_POSITION","bottom");n(this,"CELL_FOOTER_HEIGHT",36);n(this,"ENABLE_SELECTOR",!0);n(this,"TREE_SELECT_MODE","auto");n(this,"TREE_INDENT",20);n(this,"TREE_ICON_SIZE",20);n(this,"TREE_LINE",!1);n(this,"TREE_LINE_COLOR","#e1e6eb");n(this,"ENABLE_EDIT_SINGLE_CLICK",!1);n(this,"ENABLE_EDIT_CLICK_SELECTOR",!0);n(this,"SELECTOR_AREA_MIN_X",0);n(this,"SELECTOR_AREA_MAX_X_OFFSET",0);n(this,"SELECTOR_AREA_MAX_X",0);n(this,"SELECTOR_AREA_MIN_Y",0);n(this,"SELECTOR_AREA_MAX_Y",0);n(this,"SELECTOR_AREA_MAX_Y_OFFSET",0);n(this,"SELECTOR_CELL_VALUE_TYPE","value");n(this,"ENABLE_AUTO_THEME",!0);n(this,"ENABLE_SELECTOR_SINGLE",!1);n(this,"ENABLE_SELECTOR_SPAN_COL",!0);n(this,"ENABLE_SELECTOR_SPAN_ROW",!0);n(this,"ENABLE_SELECTOR_ALL_ROWS",!0);n(this,"ENABLE_SELECTOR_ALL_COLS",!0);n(this,"ENABLE_MERGE_CELL_LINK",!1);n(this,"ENABLE_AUTOFILL",!1);n(this,"ENABLE_CONTEXT_MENU",!1);n(this,"ENABLE_COPY",!0);n(this,"ENABLE_PASTER",!0);n(this,"ENABLE_RESIZE_ROW",!0);n(this,"ENABLE_RESIZE_COLUMN",!0);n(this,"RESIZE_ROW_LINE_COLOR","#e1e6eb");n(this,"RESIZE_COLUMN_LINE_COLOR","#e1e6eb");n(this,"RESIZE_ROW_MIN_HEIGHT",36);n(this,"RESIZE_COLUMN_MIN_WIDTH",40);n(this,"ENABLE_KEYBOARD",!0);n(this,"ENABLE_HISTORY",!1);n(this,"ENABLE_VALIDATOR_IMMEDIATE",!0);n(this,"HISTORY_NUM",50);n(this,"HIGHLIGHT_HOVER_ROW",!1);n(this,"HIGHLIGHT_HOVER_ROW_COLOR","rgba(186,203,231,0.1)");n(this,"HIGHLIGHT_SELECTED_ROW",!1);n(this,"HIGHLIGHT_SELECTED_ROW_COLOR","rgba(82,146,247,0.1)");n(this,"TOOLTIP_BG_COLOR","#303133");n(this,"TOOLTIP_TEXT_COLOR","#fff");n(this,"TOOLTIP_ZINDEX",3e3);n(this,"TOOLTIP_CUSTOM_STYLE",{});n(this,"CONTEXT_MENU",[{label:"复制",value:"copy"},{label:"剪切",value:"cut"},{label:"粘贴",value:"paste"},{label:"清空选中内容",value:"clearSelected"}]);n(this,"HEADER_CELL_STYLE_METHOD");n(this,"BODY_CELL_STYLE_METHOD");n(this,"FOOTER_CELL_STYLE_METHOD");n(this,"BODY_CELL_READONLY_METHOD");n(this,"BODY_CELL_FORMATTER_METHOD");n(this,"BODY_CELL_RULES_METHOD");n(this,"BODY_CELL_TYPE_METHOD");n(this,"BODY_CELL_EDITOR_METHOD");n(this,"BODY_CELL_RENDER_METHOD");n(this,"BODY_CELL_HOVER_ICON_METHOD");n(this,"SPAN_METHOD");n(this,"SELECTABLE_METHOD");n(this,"EXPAND_LAZY_METHOD");n(this,"BEFORE_VALUE_CHANGE_METHOD");n(this,"BEFORE_PASTE_DATA_METHOD");n(this,"BEFORE_AUTOFILL_DATA_METHOD");n(this,"BEFORE_SET_SELECTOR_METHOD");n(this,"BEFORE_SET_AUTOFILL_METHOD");n(this,"BEFORE_COPY_METHOD");this._config=t,this.updateCssVar()}init(t){this._config=t,this.updateCssVar()}updateCssVar(){let t={};Object.keys(this).forEach(e=>{if(e.endsWith("_COLOR")||e.endsWith("_FONT")){const i=`--evt-${e.toLocaleLowerCase().replace(/_/g,"-")}`,s=fe(i);s&&(t[e]=s)}}),Object.assign(this,t,this._config)}}const Rt='<svg t="1724122044148" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4551" width="32" height="32"><path d="M707.648 401.28L489.28 560.704l22.656 30.976 22.656-30.976L316.16 401.216q-3.072-2.24-6.464-3.84-3.456-1.536-7.104-2.432-3.712-0.896-7.488-1.088-3.776-0.128-7.488 0.448-3.776 0.64-7.296 1.92-3.584 1.28-6.784 3.2-3.2 1.984-6.016 4.544-2.816 2.56-5.056 5.632-2.176 3.072-3.84 6.464-1.536 3.456-2.432 7.104-0.896 3.712-1.088 7.488-0.128 3.776 0.448 7.488 0.64 3.776 1.92 7.296 1.28 3.584 3.2 6.784 1.984 3.2 4.544 6.016 2.56 2.752 5.632 4.992l218.368 159.552q4.928 3.584 10.752 5.504 5.76 1.92 11.904 1.92 6.08 0 11.904-1.92 5.76-1.92 10.752-5.504l218.368-159.552q3.008-2.24 5.568-4.992 2.56-2.816 4.544-6.016 1.92-3.2 3.264-6.784 1.28-3.52 1.92-7.296 0.576-3.712 0.384-7.488-0.128-3.84-1.024-7.488-0.896-3.648-2.496-7.04-1.6-3.456-3.84-6.528-2.24-3.072-4.992-5.632-2.816-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.584-1.28-7.296-1.856-3.712-0.64-7.488-0.448-3.84 0.192-7.488 1.088-3.648 0.896-7.04 2.496-3.456 1.536-6.528 3.84z m61.056 30.976q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.472-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.72-3.584-3.456-1.408-7.168-2.176-3.712-0.704-7.488-0.704-3.84 0-7.488 0.704-3.712 0.768-7.232 2.176-3.456 1.472-6.656 3.584-3.136 2.112-5.76 4.8-2.688 2.624-4.8 5.76-2.112 3.2-3.584 6.656-1.408 3.52-2.176 7.232-0.704 3.712-0.704 7.488 0 3.776 0.704 7.488 0.768 3.712 2.176 7.168 1.472 3.52 3.584 6.656 2.112 3.2 4.8 5.824 2.624 2.688 5.76 4.8 3.2 2.112 6.656 3.52 3.52 1.472 7.232 2.176 3.712 0.768 7.488 0.768 3.776 0 7.488-0.768 3.712-0.704 7.168-2.176 3.52-1.408 6.656-3.52 3.2-2.112 5.824-4.8 2.688-2.688 4.8-5.76 2.048-3.2 3.52-6.72 1.472-3.456 2.176-7.168 0.768-3.712 0.768-7.488z m-436.736 0q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.408-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704-3.84 0-7.488 0.704-3.712 0.768-7.232 2.176-3.456 1.472-6.592 3.584-3.2 2.112-5.824 4.8-2.688 2.624-4.8 5.76-2.112 3.2-3.52 6.656-1.472 3.52-2.24 7.232-0.704 3.712-0.704 7.488 0 3.776 0.704 7.488 0.768 3.712 2.24 7.168 1.408 3.52 3.52 6.656 2.112 3.2 4.8 5.824 2.624 2.688 5.76 4.8 3.2 2.112 6.656 3.52 3.52 1.472 7.232 2.176 3.712 0.768 7.488 0.768 3.776 0 7.488-0.768 3.712-0.704 7.232-2.176 3.456-1.408 6.592-3.52 3.2-2.112 5.824-4.8 2.688-2.688 4.8-5.76 2.112-3.2 3.52-6.72 1.472-3.456 2.176-7.168 0.768-3.712 0.768-7.488z" p-id="4552"></path></svg>',ut='<svg t="1755138507987" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5079" width="200" height="200"><path d="M512 938.688a42.688 42.688 0 0 1-35.072-18.432l-192-277.312A42.56 42.56 0 0 1 320 576h384a42.752 42.752 0 0 1 35.072 66.944l-192 277.312a42.688 42.688 0 0 1-35.072 18.432" fill="currentColor" p-id="2016"></path><path d="M704 448H320a42.752 42.752 0 0 1-35.072-66.944l192-277.312c16-23.04 54.208-23.04 70.144 0l192 277.312A42.56 42.56 0 0 1 704 448" fill="currentColor" p-id="2015"></path></svg>',pe=ut.replace('fill="currentColor" p-id="2016"','fill="#bec4c7" p-id="2016"'),ye=ut.replace('fill="currentColor" p-id="2015"','fill="#bec4c7" p-id="2015"');class Ce{constructor(t){n(this,"ctx");n(this,"list",[{name:"loading",configName:"LOADING_ICON_SVG",configColorName:"LOADING_ICON_COLOR",svg:'<svg t="1724133395728" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2893" width="32" height="32"><path d="M512 226.8476541a19.82487759 19.82487759 0 0 1 14.66497778 5.70304692c3.80203107 3.82918865 5.70304692 8.71751457 5.70304693 14.66497779v122.20814825a19.82487759 19.82487759 0 0 1-5.70304693 14.66497778 19.82487759 19.82487759 0 0 1-14.66497778 5.70304691 19.82487759 19.82487759 0 0 1-14.66497778-5.70304691 19.82487759 19.82487759 0 0 1-5.70304693-14.66497778v-122.20814825a19.82487759 19.82487759 0 0 1 5.70304693-14.66497779 19.82487759 19.82487759 0 0 1 14.66497778-5.70304692z m0 407.36049415a19.82487759 19.82487759 0 0 1 14.66497778 5.70304691c3.80203107 3.82918865 5.70304692 8.71751457 5.70304693 14.66497778v122.20814827a19.82487759 19.82487759 0 0 1-5.70304693 14.66497776 19.82487759 19.82487759 0 0 1-14.66497778 5.70304693 19.82487759 19.82487759 0 0 1-14.66497778-5.70304693 19.82487759 19.82487759 0 0 1-5.70304693-14.66497776v-122.20814827a19.82487759 19.82487759 0 0 1 5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 14.66497778-5.70304691zM797.1523459 512a19.82487759 19.82487759 0 0 1-5.70304692 14.66497778 19.82487759 19.82487759 0 0 1-14.66497779 5.70304693h-122.20814825a19.82487759 19.82487759 0 0 1-14.66497778-5.70304693 19.82487759 19.82487759 0 0 1-5.70304691-14.66497778 19.82487759 19.82487759 0 0 1 5.70304691-14.66497778 19.82487759 19.82487759 0 0 1 14.66497778-5.70304693h122.20814825a19.82487759 19.82487759 0 0 1 14.66497779 5.70304693c3.80203107 3.82918865 5.70304692 8.71751457 5.70304692 14.66497778z m-407.36049415 0a19.82487759 19.82487759 0 0 1-5.70304691 14.66497778 19.82487759 19.82487759 0 0 1-14.66497778 5.70304693h-122.20814827a19.82487759 19.82487759 0 0 1-14.66497776-5.70304693 19.82487759 19.82487759 0 0 1-5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 14.66497776-5.70304693h122.20814827a19.82487759 19.82487759 0 0 1 14.66497778 5.70304693c3.80203107 3.82918865 5.70304692 8.71751457 5.70304691 14.66497778zM310.22076878 310.22076878a21.29137537 21.29137537 0 0 1 14.66497779-5.70304693c5.51294514 0 10.18401235 1.90101585 14.01320099 5.70304693l86.55052591 86.57768347a20.91117183 20.91117183 0 0 1 5.73020449 14.31193182 19.28172983 19.28172983 0 0 1-6.05609289 14.013201 19.11878565 19.11878565 0 0 1-14.013201 6.05609289 20.96548698 20.96548698 0 0 1-14.31193182-5.70304692L310.22076878 338.87178998a19.06447114 19.06447114 0 0 1-5.70304693-14.01320099c0-5.54010272 1.90101585-10.42842865 5.70304693-14.66497778z m288.32975775 288.32975775a19.79772001 19.79772001 0 0 1 14.3390894-6.35482371c5.29568642 0 10.04822572 2.11827457 14.31193182 6.38198066l86.57768347 86.55052651c3.80203107 3.80203107 5.70304692 8.47309828 5.70304691 14.01320102a19.55330372 19.55330372 0 0 1-6.05609225 14.31193182 19.66193339 19.66193339 0 0 1-14.31193245 6.05609288 19.01015661 19.01015661 0 0 1-14.01320099-5.70304692l-86.55052591-86.57768347a19.79772001 19.79772001 0 0 1-6.38198129-14.31193245c0-5.29568642 2.11827457-10.07538268 6.38198129-14.33908939zM713.77923122 310.22076878c3.80203107 4.26370672 5.70304692 9.15203265 5.70304693 14.66497779s-1.90101585 10.18401235-5.70304693 14.01320099l-86.57768347 86.55052591a20.91117183 20.91117183 0 0 1-14.31193182 5.73020449 19.28172983 19.28172983 0 0 1-14.013201-6.05609289 19.11878565 19.11878565 0 0 1-6.05609289-14.013201c0-5.29568642 1.90101585-10.07538268 5.70304692-14.31193182l86.57768348-86.57768347c3.80203107-3.80203107 8.50025585-5.70304692 14.01320099-5.70304693 5.54010272 0 10.40127108 1.90101585 14.66497779 5.70304693zM425.44947347 598.57768347a19.79772001 19.79772001 0 0 1 6.35482371 14.33908939c0 5.29568642-2.11827457 10.04822572-6.38198066 14.31193245L338.89894756 713.77923122a19.06447114 19.06447114 0 0 1-14.01320099 5.70304693 19.55330372 19.55330372 0 0 1-14.31193245-6.05609227 19.68909035 19.68909035 0 0 1-6.05609227-14.31193245 19.01015661 19.01015661 0 0 1 5.70304693-14.01320099l86.57768347-86.55052591a19.79772001 19.79772001 0 0 1 14.31193182-6.38198129c5.29568642 0 10.07538268 2.11827457 14.3390894 6.38198129z" fill="#000000" fill-opacity=".65" p-id="2894"></path></svg>',color:"#4E5969"},{name:"expand",configName:"EXPAND_ICON_SVG",configColorName:"EXPAND_ICON_COLOR",svg:'<svg t="1724122015492" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4237" width="32" height="32"><path d="M401.472 316.992l159.04 217.664L591.488 512l-30.976-22.656-159.04 217.728q-2.24 3.008-3.84 6.464-1.6 3.456-2.496 7.104-0.896 3.648-1.024 7.424-0.192 3.84 0.384 7.552 0.64 3.712 1.92 7.296 1.28 3.52 3.2 6.784 1.984 3.2 4.544 6.016 2.56 2.752 5.632 4.992 3.072 2.24 6.464 3.84 3.456 1.6 7.168 2.496 3.648 0.896 7.424 1.024 3.776 0.192 7.488-0.448 3.776-0.576 7.296-1.856 3.584-1.28 6.784-3.264 3.2-1.92 6.016-4.48 2.816-2.56 5.056-5.632l159.04-217.728q3.584-4.928 5.504-10.752 1.92-5.76 1.92-11.904 0-6.08-1.92-11.904-1.92-5.76-5.504-10.752L463.488 271.68q-2.24-3.072-5.056-5.632-2.752-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.52-1.28-7.296-1.856-3.712-0.576-7.488-0.448-3.84 0.192-7.424 1.088-3.712 0.896-7.168 2.496-3.392 1.6-6.4 3.84-3.136 2.176-5.696 4.992-2.56 2.752-4.48 6.016-1.984 3.2-3.264 6.784-1.28 3.52-1.92 7.296-0.576 3.712-0.384 7.488 0.128 3.84 1.024 7.488 0.896 3.648 2.496 7.04 1.6 3.456 3.84 6.528z m30.976-61.056q-3.776 0-7.488 0.704-3.712 0.768-7.168 2.24-3.52 1.408-6.656 3.52-3.2 2.112-5.824 4.8-2.688 2.624-4.8 5.76-2.112 3.2-3.52 6.656-1.472 3.52-2.176 7.232-0.768 3.712-0.768 7.488 0 3.776 0.768 7.488 0.704 3.712 2.176 7.232 1.408 3.456 3.52 6.592 2.112 3.2 4.8 5.824 2.688 2.688 5.76 4.8 3.2 2.112 6.72 3.52 3.456 1.472 7.168 2.176 3.712 0.768 7.488 0.768 3.84 0 7.488-0.768 3.712-0.704 7.232-2.176 3.456-1.408 6.592-3.52 3.2-2.112 5.824-4.8 2.688-2.688 4.8-5.76 2.112-3.2 3.52-6.656 1.472-3.52 2.24-7.232 0.704-3.712 0.704-7.488 0-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.456-3.52-6.592-2.112-3.2-4.8-5.824-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.52-3.52-1.472-7.232-2.24Q436.224 256 432.448 256z m0 435.392q-3.776 0-7.488 0.704-3.712 0.768-7.168 2.176-3.52 1.472-6.656 3.584-3.2 2.112-5.824 4.736-2.688 2.688-4.8 5.824-2.112 3.2-3.52 6.656-1.472 3.52-2.176 7.232-0.768 3.712-0.768 7.488 0 3.776 0.768 7.488 0.704 3.712 2.176 7.168 1.408 3.52 3.52 6.656 2.112 3.2 4.8 5.76 2.688 2.752 5.76 4.8 3.2 2.112 6.72 3.584 3.456 1.472 7.168 2.176 3.712 0.768 7.488 0.768 3.84 0 7.488-0.768 3.712-0.704 7.232-2.176 3.456-1.472 6.592-3.584 3.2-2.048 5.824-4.736 2.688-2.688 4.8-5.824 2.112-3.2 3.52-6.656 1.472-3.456 2.24-7.168 0.704-3.712 0.704-7.488 0-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.52-3.52-6.656-2.112-3.136-4.8-5.76-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704z" p-id="4238"></path></svg>',color:"#4E5969"},{name:"shrink",configName:"CHECKBOX_UNCHECK_SVG",configColorName:"SHRINK_ICON_COLOR",svg:Rt,color:"#4E5969"},{name:"checkbox-uncheck",configName:"CHECKBOX_UNCHECK_SVG",svg:'<svg t="1722595639920" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4708" width="32" height="32"><path d="M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z m64 0q0 79.552 56.256 135.744Q304.448 832 384 832h256q79.552 0 135.744-56.256Q832 719.552 832 640V384q0-79.552-56.256-135.744Q719.552 192 640 192H384q-79.552 0-135.744 56.256Q192 304.448 192 384v256z" fill="#DDE0EA" p-id="4709"></path></svg>',color:""},{name:"checkbox-check",configName:"CHECKBOX_CHECK_SVG",configColorName:"CHECKBOX_COLOR",svg:'<svg t="1722595535853" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4551" width="32" height="32"><path d="M640 128H384c-170.496 0-256 85.504-256 256v256c0 170.496 85.504 256 256 256h256c170.496 0 256-85.504 256-256V384c0-170.496-85.504-256-256-256z m67.584 302.592c-2.048 4.608-4.608 8.704-8.192 12.288L506.88 634.88c-3.584 3.584-7.68 6.144-12.288 8.192-4.608 2.048-9.728 3.072-14.848 3.072s-10.24-1.024-14.848-3.072c-4.608-2.048-8.704-4.608-12.288-8.192l-96.256-96.256c-3.584-3.584-6.144-7.68-8.192-12.288-2.048-4.608-3.072-9.728-3.072-14.848 0-2.56 0-5.12 1.024-7.68 0.512-2.56 1.024-5.12 2.048-7.168 1.024-2.56 2.048-4.608 3.584-6.656 1.536-2.048 3.072-4.096 4.608-5.632 1.536-2.048 3.584-3.584 5.632-4.608 2.048-1.536 4.096-2.56 6.656-3.584 2.56-1.024 4.608-1.536 7.168-2.048 2.56-0.512 5.12-0.512 7.68-0.512 5.12 0 10.24 1.024 14.848 3.072 4.608 2.048 8.704 4.608 12.288 8.192l69.12 68.608L645.12 389.12c3.584-3.584 7.68-6.144 12.288-8.192 4.608-2.048 9.728-3.072 14.848-3.072 2.56 0 5.12 0 7.68 0.512s5.12 1.024 7.168 2.048c2.56 1.024 4.608 2.048 6.656 3.584 2.048 1.536 4.096 3.072 5.632 4.608 1.536 1.536 3.584 3.584 4.608 5.632 1.536 2.048 2.56 4.096 3.584 6.656 1.024 2.56 1.536 4.608 2.048 7.168 0.512 2.56 1.024 5.12 1.024 7.68 0 5.12-1.024 10.24-3.072 14.848z" p-id="4552"></path></svg>',color:"rgb(82,146,247)"},{name:"checkbox-hover",configName:"CHECKBOX_UNCHECK_SVG",configColorName:"CHECKBOX_COLOR",svg:'<svg t="1722595639920" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4708" width="32" height="32"><path d="M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z m64 0q0 79.552 56.256 135.744Q304.448 832 384 832h256q79.552 0 135.744-56.256Q832 719.552 832 640V384q0-79.552-56.256-135.744Q719.552 192 640 192H384q-79.552 0-135.744 56.256Q192 304.448 192 384v256z" fill="#DDE0EA" p-id="4709"></path></svg>',color:"rgb(82,146,247)"},{name:"checkbox-indeterminate",configName:"CHECKBOX_INDETERMINATE_SVG",configColorName:"CHECKBOX_COLOR",svg:'<svg t="1722595280953" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4394" width="32" height="32"><path d="M128 384v256q0 12.608 1.28 25.088 1.216 12.544 3.648 24.832 2.432 12.352 6.08 24.384t8.448 23.68q4.864 11.584 10.752 22.72 5.952 11.072 12.928 21.504 7.04 10.496 14.976 20.224 8 9.728 16.896 18.56 8.896 8.96 18.56 16.896 9.728 8 20.224 14.976 10.432 7.04 21.504 12.928 11.136 5.888 22.72 10.688 11.648 4.864 23.68 8.512 12.032 3.648 24.32 6.08 12.352 2.432 24.896 3.712Q371.392 896 384 896h256q12.608 0 25.088-1.28 12.544-1.216 24.832-3.648 12.352-2.432 24.384-6.08t23.68-8.512q11.584-4.8 22.72-10.688 11.072-5.952 21.504-12.928 10.496-7.04 20.224-14.976 9.728-8 18.56-16.896 8.96-8.832 16.896-18.56 8-9.728 14.976-20.224 7.04-10.432 12.928-21.504 5.888-11.136 10.688-22.72 4.864-11.648 8.512-23.68 3.648-12.032 6.08-24.32 2.432-12.352 3.712-24.896Q896 652.608 896 640V384q0-12.608-1.28-25.088-1.216-12.544-3.648-24.832-2.432-12.352-6.08-24.384t-8.512-23.68q-4.8-11.584-10.688-22.72-5.952-11.072-12.928-21.504-7.04-10.496-14.976-20.224-8-9.664-16.896-18.56-8.832-8.96-18.56-16.896-9.728-8-20.224-14.976-10.432-7.04-21.504-12.928-11.136-5.888-22.72-10.752-11.648-4.8-23.68-8.448-12.032-3.648-24.32-6.08-12.352-2.432-24.896-3.712Q652.608 128 640 128H384q-12.608 0-25.088 1.28-12.544 1.216-24.832 3.648-12.352 2.432-24.384 6.08t-23.68 8.448q-11.584 4.864-22.72 10.752-11.072 5.952-21.504 12.928-10.496 7.04-20.224 14.976-9.664 8-18.56 16.896-8.96 8.896-16.896 18.56-8 9.728-14.976 20.224-7.04 10.432-12.928 21.504-5.888 11.136-10.752 22.72-4.8 11.648-8.448 23.68-3.648 12.032-6.08 24.32-2.432 12.352-3.712 24.896Q128 371.392 128 384z m566.016 166.336H330.112a38.4 38.4 0 0 1 0-76.8h363.904a38.4 38.4 0 0 1 0 76.8z" p-id="4395"></path></svg>',color:"rgb(82,146,247)"},{name:"checkbox-check-disabled",configName:"CHECKBOX_CHECK_SVG",svg:'<svg t="1722595535853" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4551" width="32" height="32"><path d="M640 128H384c-170.496 0-256 85.504-256 256v256c0 170.496 85.504 256 256 256h256c170.496 0 256-85.504 256-256V384c0-170.496-85.504-256-256-256z m67.584 302.592c-2.048 4.608-4.608 8.704-8.192 12.288L506.88 634.88c-3.584 3.584-7.68 6.144-12.288 8.192-4.608 2.048-9.728 3.072-14.848 3.072s-10.24-1.024-14.848-3.072c-4.608-2.048-8.704-4.608-12.288-8.192l-96.256-96.256c-3.584-3.584-6.144-7.68-8.192-12.288-2.048-4.608-3.072-9.728-3.072-14.848 0-2.56 0-5.12 1.024-7.68 0.512-2.56 1.024-5.12 2.048-7.168 1.024-2.56 2.048-4.608 3.584-6.656 1.536-2.048 3.072-4.096 4.608-5.632 1.536-2.048 3.584-3.584 5.632-4.608 2.048-1.536 4.096-2.56 6.656-3.584 2.56-1.024 4.608-1.536 7.168-2.048 2.56-0.512 5.12-0.512 7.68-0.512 5.12 0 10.24 1.024 14.848 3.072 4.608 2.048 8.704 4.608 12.288 8.192l69.12 68.608L645.12 389.12c3.584-3.584 7.68-6.144 12.288-8.192 4.608-2.048 9.728-3.072 14.848-3.072 2.56 0 5.12 0 7.68 0.512s5.12 1.024 7.168 2.048c2.56 1.024 4.608 2.048 6.656 3.584 2.048 1.536 4.096 3.072 5.632 4.608 1.536 1.536 3.584 3.584 4.608 5.632 1.536 2.048 2.56 4.096 3.584 6.656 1.024 2.56 1.536 4.608 2.048 7.168 0.512 2.56 1.024 5.12 1.024 7.68 0 5.12-1.024 10.24-3.072 14.848z" p-id="4552"></path></svg>',color:"#DDE0EA"},{name:"checkbox-disabled",configName:"CHECKBOX_DISABLED_SVG",svg:'<svg t="1722595946663" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4865" width="32" height="32"><path d="M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z" fill="#F1F2F4" p-id="4866"></path><path d="M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z m64 0q0 79.552 56.256 135.744Q304.448 832 384 832h256q79.552 0 135.744-56.256Q832 719.552 832 640V384q0-79.552-56.256-135.744Q719.552 192 640 192H384q-79.552 0-135.744 56.256Q192 304.448 192 384v256z" fill="#DDE0EA" p-id="4867"></path></svg>',color:""},{name:"icon-edit",configName:"CHECKBOX_DISABLED_SVG",svg:'<svg t="1744798692576" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6606" width="200" height="200"><path d="M855.296 894.528H168.768v-76.8h686.528v76.8z m38.4-38.4q0 3.84-0.768 7.488-0.704 3.712-2.176 7.232-1.472 3.52-3.52 6.656-2.112 3.136-4.8 5.76-2.688 2.688-5.824 4.8-3.2 2.112-6.656 3.584-3.456 1.408-7.168 2.176-3.712 0.704-7.488 0.704-3.84 0-7.488-0.704-3.712-0.768-7.232-2.176-3.52-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488 0-3.776 0.704-7.488 0.768-3.712 2.176-7.168 1.472-3.52 3.584-6.656 2.112-3.136 4.736-5.76 2.688-2.752 5.824-4.8 3.2-2.112 6.656-3.584 3.52-1.472 7.232-2.176 3.712-0.768 7.488-0.768 3.776 0 7.488 0.768 3.712 0.704 7.168 2.176 3.52 1.472 6.656 3.584 3.2 2.048 5.76 4.736 2.752 2.688 4.864 5.824 2.048 3.2 3.52 6.656 1.472 3.456 2.176 7.168 0.768 3.712 0.768 7.488z m-686.528 0q0 3.84-0.768 7.488-0.704 3.712-2.176 7.232-1.472 3.52-3.52 6.656-2.112 3.136-4.8 5.76-2.688 2.688-5.76 4.8-3.2 2.112-6.72 3.584-3.456 1.408-7.168 2.176-3.712 0.704-7.488 0.704-3.84 0-7.488-0.704-3.712-0.768-7.232-2.176-3.456-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488 0-3.776 0.704-7.488 0.768-3.712 2.176-7.168 1.472-3.52 3.584-6.656 2.112-3.136 4.736-5.76 2.688-2.752 5.824-4.8 3.2-2.112 6.656-3.584 3.52-1.472 7.232-2.176 3.712-0.768 7.488-0.768 3.776 0 7.488 0.768 3.712 0.704 7.168 2.176 3.52 1.472 6.656 3.584 3.2 2.048 5.824 4.736 2.688 2.688 4.8 5.824 2.048 3.2 3.52 6.656 1.472 3.456 2.176 7.168 0.768 3.712 0.768 7.488zM652.032 211.2l-369.92 370.368v89.344h90.048l369.664-369.856L652.032 211.2z m-54.4-54.272q22.528-22.528 54.4-22.528 31.808 0 54.336 22.528l89.792 89.856q22.464 22.464 22.464 54.272t-22.464 54.272l-369.664 369.856q-22.464 22.528-54.336 22.528H282.24q-31.808 0-54.336-22.528-22.464-22.464-22.464-54.272V581.568q0-31.808 22.4-54.272l369.92-370.368z" p-id="6607"></path></svg>',color:"#4E5969"},{name:"icon-select",configName:"CHECKBOX_UNCHECK_SVG",configColorName:"SHRINK_ICON_COLOR",svg:Rt,color:"#4E5969"},{name:"sort-asc",configName:"SORT_ASC_ICON_SVG",configColorName:"SORT_ICON_COLOR",svg:pe,color:"rgb(82,146,247)"},{name:"sort-desc",configName:"SORT_DESC_ICON_SVG",configColorName:"SORT_ICON_COLOR",svg:ye,color:"rgb(82,146,247)"},{name:"sort-default",configName:"SORTABLE_ICON_SVG",svg:ut,color:"#bec4c7"}]);n(this,"icons",new Map);this.ctx=t,this.init()}async init(){const t=[];for(let e=0;e<this.list.length;e++){const i=this.list[e];let s=i.color,o=i.svg;if(i.configColorName){const a=this.ctx.config[i.configColorName];a&&(s=a)}if(i.configName){const a=this.ctx.config[i.configName];a&&(o=a)}const r=this.createImageFromSVG(o,s).then(a=>{this.icons.set(i.name,a)});t.push(r)}for(let e=0;e<this.ctx.config.ICONS.length;e++){const i=this.ctx.config.ICONS[e];let s=i.color;const o=this.createImageFromSVG(i.svg,s,i.isBlob).then(r=>{this.icons.set(i.name,r)});t.push(o)}await Promise.all(t),this.ctx.emit("draw")}async createImageFromSVG(t,e,i=!1){const r=new DOMParser().parseFromString(t,"image/svg+xml").documentElement;e&&r.querySelectorAll("*").forEach(l=>{const d=l.getAttribute("fill");(d==="currentColor"||d===null)&&l.setAttribute("fill",e)});const a=new Image;let c="";if(i){const l=new Blob([new XMLSerializer().serializeToString(r)],{type:"image/svg+xml"});c=URL.createObjectURL(l)}else c="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(r));return a.src=c,new Promise((l,d)=>{a.onerror=()=>d(new Error("Failed to load image:"+t)),a.onload=()=>{l(a)}})}get(t){return this.icons.get(t)}}class lt extends Yt{constructor(e,i,s,o,r,a,c){super(e,s,o,r,a,"header",c.fixed);n(this,"align");n(this,"hideHeaderSelection",!1);n(this,"verticalAlign","middle");n(this,"fixed");n(this,"minWidth");n(this,"maxWidth");n(this,"widthFillDisable");n(this,"type");n(this,"operation",!1);n(this,"editorType");n(this,"level");n(this,"text");n(this,"displayText","");n(this,"colspan");n(this,"rowspan");n(this,"row");n(this,"key");n(this,"required",!1);n(this,"readonly",!1);n(this,"ellipsis",!1);n(this,"overflowTooltipShow",!0);n(this,"children",[]);n(this,"column");n(this,"colIndex");n(this,"rowKey");n(this,"rules");n(this,"hasChildren");n(this,"render");n(this,"style",{});n(this,"drawX",0);n(this,"drawY",0);n(this,"sortIconName","sort-default");n(this,"sortAscIconName","sort-asc");n(this,"sortDescIconName","sort-desc");n(this,"visibleWidth",0);n(this,"visibleHeight",0);n(this,"drawTextX",0);n(this,"drawTextY",0);n(this,"drawTextWidth",0);n(this,"drawTextHeight",0);n(this,"drawCellBgColor","");n(this,"drawTextColor","");n(this,"drawSelectionImageX",0);n(this,"drawSelectionImageY",0);n(this,"drawSelectionImageWidth",0);n(this,"drawSelectionImageHeight",0);n(this,"drawSelectionImageName","");n(this,"drawSelectionImageSource");n(this,"drawSortImageX",0);n(this,"drawSortImageY",0);n(this,"drawSortImageWidth",0);n(this,"drawSortImageHeight",0);n(this,"drawSortImageName","");n(this,"drawSortImageSource");this.ctx=e,this.x=s,this.y=o,this.width=r,this.height=a,this.visibleWidth=r,this.visibleHeight=a,this.colIndex=i,this.key=c.key,this.minWidth=c.minWidth,this.maxWidth=c.maxWidth,this.type=c.type||"",this.editorType=c.editorType||"text",this.hideHeaderSelection=c.hideHeaderSelection||!1,this.align=c.headerAlign||c.align||this.ctx.config.COLUMNS_ALIGN,this.verticalAlign=c.headerVerticalAlign||c.verticalAlign||this.ctx.config.COLUMNS_VERTICAL_ALIGN,this.fixed=c.fixed,this.level=c.level||0,this.operation=c.operation||!1,this.text=c.title,this.column=c,this.colspan=c.colspan||1,this.widthFillDisable=c.widthFillDisable||!1,this.rowspan=c.rowspan||1,this.rules=c.rules,this.readonly=c.readonly||!1,this.required=c.required||!1,this.sortIconName=c.sortIconName||"sort-default",this.sortAscIconName=c.sortAscIconName||"sort-asc",this.sortDescIconName=c.sortDescIconName||"sort-desc",this.rowKey=At(),this.overflowTooltipShow=c.overflowTooltipHeaderShow!==!1,this.hasChildren=c.children&&c.children.length>0||!1,this.render=c.renderHeader}isVerticalVisible(){const{stageHeight:e}=this.ctx,i=e;return!(this.y+this.height<=0||this.y>=i)}updateStyle(){this.style=this.getOverlayerViewsStyle()}updateContainer(){const{HEADER_CELL_STYLE_METHOD:e,HEADER_BG_COLOR:i,HEADER_TEXT_COLOR:s}=this.ctx.config;let o=i,r=s;if(typeof e=="function"){const a=e,{backgroundColor:c,color:l}=a({colIndex:this.colIndex,column:this.column})||{};c&&(o=c),l&&(r=l)}this.drawCellBgColor=o,this.drawTextColor=r}update(){this.updateContainer(),this.displayText=this.getText(),this.drawX=this.getDrawX(),this.drawY=this.getDrawY(),this.drawTextX=this.drawX,this.drawTextY=this.drawY,this.drawTextWidth=this.width,this.drawTextHeight=this.height,this.updateStyle()}draw(){this.drawEdge(),this.drawSelection(),this.recalculateTextPosition(),this.drawText(),this.drawSelector(),this.drawSortIcon()}drawEdge(){const{paint:e,config:{BORDER_COLOR:i,BORDER:s}}=this.ctx;e.drawRect(this.drawX,this.drawY,this.width,this.height,{borderColor:s?i:"transparent",fillColor:this.drawCellBgColor})}recalculateTextPosition(){let e=this.drawX,i=this.width;if(["selection","index-selection","selection-tree","tree-selection"].includes(this.type)){const{CHECKBOX_SIZE:s}=this.ctx.config;this.align==="left"||this.align==="right"?(e=this.drawX+s+4,i=this.width-e+this.drawX):(e=this.drawX+(this.width-s)/2+s+1,i=this.width-e+this.drawX)}this.column.sortBy&&(this.align==="right"?(i=this.width-this.ctx.config.CELL_PADDING-16-4,e=this.drawX+this.ctx.config.CELL_PADDING):this.align==="center"&&this.ctx.paint.measureTextWidth(this.displayText,this.ctx.config.HEADER_FONT)+16+4>this.width-this.ctx.config.CELL_PADDING*2&&(i=this.width-this.ctx.config.CELL_PADDING*2-16-4)),this.drawTextX=e,this.drawTextWidth=i}drawText(){const{paint:e,config:{HEADER_FONT:i,CELL_PADDING:s}}=this.ctx;this.ellipsis=e.drawText(this.displayText,this.drawTextX,this.drawTextY,this.drawTextWidth,this.drawTextHeight,{font:i,padding:s,color:this.drawTextColor,align:this.align,verticalAlign:this.verticalAlign})}drawSelector(){const{ENABLE_SELECTOR:e}=this.ctx.config;if(!e)return;const{xArr:i}=this.ctx.selector,[s,o]=i;this.colIndex>=s&&this.colIndex<=o&&this.ctx.paint.drawRect(this.drawX,this.drawY,this.width,this.height,{borderColor:"transparent",fillColor:this.ctx.config.SELECT_ROW_COL_BG_COLOR||"transparent"})}drawSelection(){if(!this.hideHeaderSelection&&["index-selection","selection","selection-tree","tree-selection"].includes(this.type)){const{indeterminate:e,check:i,selectable:s}=this.ctx.database.getCheckedState(),{CHECKBOX_SIZE:o=0,CELL_PADDING:r}=this.ctx.config;let a=this.drawX+(this.width-o)/2,c=this.drawY+(this.height-o)/2;this.drawTextX=a+o-r/2,this.drawTextWidth=this.drawX+this.visibleWidth-this.drawTextX,(this.align==="left"||this.align==="right")&&(a=this.drawX+r,this.drawTextX=a+o-r/2,this.drawTextWidth=this.drawX+this.visibleWidth-this.drawTextX),this.verticalAlign==="top"?c=this.drawY+r/2:this.verticalAlign==="bottom"&&(c=this.drawY+this.height-o-r/2);let l=this.ctx.icons.get("checkbox-uncheck"),d="checkbox-uncheck";e?(l=this.ctx.icons.get("checkbox-indeterminate"),d="checkbox-indeterminate"):i&&s?(l=this.ctx.icons.get("checkbox-check"),d="checkbox-check"):i&&!s?(l=this.ctx.icons.get("checkbox-check-disabled"),d="checkbox-check-disabled"):!i&&s?(l=this.ctx.icons.get("checkbox-uncheck"),d="checkbox-uncheck"):(l=this.ctx.icons.get("checkbox-disabled"),d="checkbox-disabled"),l&&(this.drawSelectionImageX=a,this.drawSelectionImageY=c,this.drawSelectionImageWidth=o,this.drawSelectionImageHeight=o,this.drawSelectionImageName=d,this.drawSelectionImageSource=l,this.ctx.paint.drawImage(this.drawSelectionImageSource,this.drawSelectionImageX,this.drawSelectionImageY,this.drawSelectionImageWidth,this.drawSelectionImageHeight))}}drawSortIcon(){if(!this.column.sortBy)return;const{CELL_PADDING:e=0}=this.ctx.config,i=16,s=4;let o=this.sortIconName;const r=this.ctx.database.getSortState(this.key);r.direction==="asc"?o=this.sortAscIconName:r.direction==="desc"&&(o=this.sortDescIconName);const a=this.ctx.icons.get(o);if(!a)return;let c=0,l=this.drawY+(this.height-i)/2;if(this.align==="left"){const d=this.ctx.paint.measureTextWidth(this.displayText,this.ctx.config.HEADER_FONT);c=this.drawX+e+d+s}else if(this.align==="center"){const d=this.ctx.paint.measureTextWidth(this.displayText,this.ctx.config.HEADER_FONT);c=this.drawX+this.width/2-d/2+d+s}else this.align==="right"&&(c=this.drawX+this.width-e-i);this.drawSortImageX=c,this.drawSortImageY=l,this.drawSortImageWidth=i,this.drawSortImageHeight=i,this.drawSortImageName=o,this.drawSortImageSource=a,this.ctx.paint.drawImage(this.drawSortImageSource,this.drawSortImageX,this.drawSortImageY,this.drawSortImageWidth,this.drawSortImageHeight)}getText(){return this.render?"":this.text}getOverlayerViewsStyle(){let e="";return this.fixed==="left"?e=`${this.drawX}px`:this.fixed==="right"?e=`${this.drawX-(this.ctx.stageWidth-this.ctx.fixedRightWidth)}px`:e=`${this.drawX-this.ctx.fixedLeftWidth}px`,{position:"absolute",overflow:"hidden",left:e,top:`${this.drawY+1}px`,width:`${this.width}px`,height:`${this.height-2}px`,pointerEvents:"initial",userSelect:"none"}}}class be{constructor(t){n(this,"ctx");n(this,"visibleHoverCell");n(this,"resizeObserver");n(this,"mutationObserver");this.ctx=t,this.init()}init(){this.resizeObserver=new ResizeObserver(()=>{this.ctx.emit("resetHeader"),this.ctx.emit("resizeObserver")}),this.resizeObserver.observe(this.ctx.containerElement),this.mutationObserver=new MutationObserver(t=>{for(const e of t)e.type==="attributes"&&e.attributeName==="class"&&(this.ctx.config.updateCssVar(),this.ctx.emit("draw"))}),this.ctx.config.ENABLE_AUTO_THEME&&this.mutationObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),this.ctx.on("mousedown",t=>{if(t.button!==0||this.isBusy(t))return;const{offsetY:e,offsetX:i}=this.ctx.getOffset(t),s=e,o=i;this.handleHeaderEvent(o,s,this.ctx.header.renderCellHeaders,r=>{this.ctx.focusCellHeader=r,this.ctx.emit("cellHeaderMousedown",r,t)}),this.handleBodyEvent(o,s,this.ctx.body.renderRows,r=>{this.ctx.setFocusCell(r),this.ctx.emit("cellMousedown",r,t)})}),this.ctx.on("click",t=>{if(t.button!==0||this.isBusy(t))return;const e=this.ctx.getOffset(t).offsetY,i=this.ctx.getOffset(t).offsetX;this.handleHeaderEvent(i,e,this.ctx.header.renderCellHeaders,s=>{this.ctx.clickCellHeader=s,this.ctx.emit("cellHeaderClick",s,t),this.selectionClick(s,t),this.sortClick(s,t)}),this.handleBodyEvent(i,e,this.ctx.body.renderRows,s=>{this.ctx.clickCell=s,this.ctx.emit("cellClick",s,t),this.selectionClick(s,t),this.treeClick(s,t),this.hoverIconClick(s)})}),this.ctx.on("dblclick",t=>{if(t.button!==0||this.isBusy(t))return;const e=this.ctx.getOffset(t).offsetY,i=this.ctx.getOffset(t).offsetX;this.handleHeaderEvent(i,e,this.ctx.header.renderCellHeaders,s=>{this.ctx.emit("cellHeaderDblclick",s,t)}),this.handleBodyEvent(i,e,this.ctx.body.renderRows,s=>{this.ctx.clickCell=s,this.ctx.emit("cellDblclick",s,t)})}),this.ctx.on("contextMenu",t=>{if(this.isBusy(t))return;const{offsetY:e,offsetX:i}=this.ctx.getOffset(t),s=e,o=i;this.handleHeaderEvent(o,s,this.ctx.header.renderCellHeaders,r=>{this.ctx.emit("cellHeaderContextMenuClick",r,t)}),this.handleBodyEvent(o,s,this.ctx.body.renderRows,r=>{this.ctx.emit("cellContextMenuClick",r,t)})}),this.ctx.on("mouseout",t=>{!this.ctx.containerElement.contains(t.relatedTarget)&&this.ctx.hoverCell!==void 0&&(this.ctx.hoverRow=void 0,this.ctx.hoverCell=void 0,this.ctx.emit("draw"))}),this.ctx.on("mousemove",t=>{if(this.isBusy(t))return;this.ctx.isPointer=!1,this.ctx.stageElement.style.cursor==="pointer"&&(this.ctx.stageElement.style.cursor="default");const e=this.ctx.getOffset(t).offsetY,i=this.ctx.getOffset(t).offsetX;this.handleHeaderEvent(i,e,this.ctx.header.renderCellHeaders,s=>{this.ctx.emit("cellHeaderMouseenter",s,t),this.ctx.hoverCellHeader&&this.ctx.hoverCellHeader!==s&&this.ctx.emit("cellHeaderMouseleave",this.ctx.hoverCellHeader,t),this.imageEnterAndLeave(s,t),this.ctx.hoverCellHeader!==s&&(this.ctx.hoverCellHeader=s,this.visibleHoverCell=void 0,this.ctx.emit("cellHeaderHoverChange",s,t))}),this.handleBodyEvent(i,e,this.ctx.body.renderRows,s=>{this.visibleHoverCell!==s&&(this.ctx.emit("visibleCellMouseleave",s,t),this.visibleHoverCell=s,this.ctx.hoverCellHeader=void 0,this.ctx.emit("visibleCellHoverChange",s,t))},!0),this.handleBodyEvent(i,e,this.ctx.body.renderRows,s=>{var o;this.imageEnterAndLeave(s,t),this.ctx.emit("cellMouseenter",s,t),this.ctx.hoverCell&&this.ctx.hoverCell!==s&&this.ctx.emit("cellMouseleave",s,t),this.ctx.hoverCell!==s&&(((o=this.ctx.hoverCell)==null?void 0:o.rowKey)!==s.rowKey&&(this.ctx.hoverCell=s,this.ctx.hoverRow=this.ctx.body.renderRows.find(r=>r.rowKey===s.rowKey),this.ctx.emit("rowHoverChange",this.ctx.hoverRow,s,t),this.ctx.emit("drawView")),this.ctx.hoverCell=s,this.ctx.emit("cellHoverChange",s,t))})})}hoverIconClick(t){t.hoverIconName&&this.ctx.isPointer&&this.ctx.emit("hoverIconClick",t)}selectionClick(t,e){if(!(["selection","index-selection","selection-tree","tree-selection"].includes(t.type)&&this.ctx.isPointer))return;const{offsetY:s,offsetX:o}=this.ctx.getOffset(e),r=s,a=o;if(this.isInsideElement(a,r,t.drawSelectionImageX,t.drawSelectionImageY,t.drawSelectionImageWidth,t.drawSelectionImageHeight))if(t instanceof lt)t.drawSelectionImageName==="checkbox-uncheck"||t.drawSelectionImageName==="checkbox-indeterminate"?this.ctx.database.toggleAllSelection():t.drawSelectionImageName==="checkbox-check"&&this.ctx.database.clearSelection(!0);else{if(!this.ctx.database.getRowSelectable(t.rowKey))return;this.ctx.database.toggleRowSelection(t.rowKey,t.type)}}treeClick(t,e){if(!(["tree","selection-tree","tree-selection"].includes(t.type)&&this.ctx.isPointer))return;const{offsetY:s,offsetX:o}=this.ctx.getOffset(e),r=s,a=o;if(!this.isInsideElement(a,r,t.drawTreeImageX,t.drawTreeImageY,t.drawTreeImageWidth,t.drawTreeImageHeight))return;const c=this.ctx.database.getRowForRowKey(t.rowKey),{expand:l=!1,expandLazy:d=!1}=c||{},{EXPAND_LAZY:f,EXPAND_LAZY_METHOD:u}=this.ctx.config;if(f&&u&&!l&&!d)typeof u=="function"&&(this.ctx.database.expandLoading(t.rowKey,!0),u({row:t.row,rowIndex:t.rowIndex,colIndex:t.colIndex,column:t.column,value:t.getValue()}).then(w=>{this.ctx.database.setExpandChildren(t.rowKey,w),this.ctx.database.expandLoading(t.rowKey,!1),this.ctx.emit("expandChange",this.ctx.database.getExpandRowKeys())}).catch(w=>{this.ctx.database.expandLoading(t.rowKey,!1),console.error(w)}));else{const x=this.ctx.database.getIsExpand(t.rowKey);this.ctx.database.expandItem(t.rowKey,!x),this.ctx.emit("expandChange",this.ctx.database.getExpandRowKeys())}}sortClick(t,e){const{offsetY:i,offsetX:s}=this.ctx.getOffset(e),o=i,r=s;if(!this.isInsideElement(r,o,t.drawSortImageX,t.drawSortImageY,t.drawSortImageWidth,t.drawSortImageHeight))return;const a=this.ctx.database.getSortState(t.key);let c;a.direction==="none"?c="asc":a.direction==="asc"?c="desc":c="none",this.ctx.database.setSortState(t.key,c)}imageEnterAndLeave(t,e){const{offsetY:i,offsetX:s}=this.ctx.getOffset(e),o=i,r=s;if(t instanceof lt){if(t.drawSelectionImageSource&&this.isInsideElement(r,o,t.drawSelectionImageX,t.drawSelectionImageY,t.drawSelectionImageWidth,t.drawSelectionImageHeight)){this.ctx.stageElement.style.cursor="pointer",this.ctx.isPointer=!0;return}if(t.drawSortImageSource&&this.isInsideElement(r,o,t.drawSortImageX,t.drawSortImageY,t.drawSortImageWidth,t.drawSortImageHeight)){this.ctx.stageElement.style.cursor="pointer",this.ctx.isPointer=!0;return}}if(t instanceof xt){if(t.drawSelectionImageSource&&this.isInsideElement(r,o,t.drawSelectionImageX,t.drawSelectionImageY,t.drawSelectionImageWidth,t.drawSelectionImageHeight)){this.ctx.stageElement.style.cursor="pointer",this.ctx.isPointer=!0,this.ctx.database.getRowSelectable(t.rowKey)||(this.ctx.stageElement.style.cursor="not-allowed");return}if(t.drawHoverImageSource&&this.isInsideElement(r,o,t.drawHoverImageX,t.drawHoverImageY,t.drawHoverImageWidth,t.drawHoverImageHeight)){this.ctx.stageElement.style.cursor="pointer",this.ctx.isPointer=!0;return}if(t.drawTreeImageSource&&this.isInsideElement(r,o,t.drawTreeImageX,t.drawTreeImageY,t.drawTreeImageWidth,t.drawTreeImageHeight)){this.ctx.stageElement.style.cursor="pointer",this.ctx.isPointer=!0;return}}}isInsideElement(t,e,i,s,o,r){return t>i&&t<i+o&&e>s&&e<s+r}isBusy(t){const{offsetY:e,offsetX:i}=this.ctx.getOffset(t),s=e,o=i;if(!this.ctx.isTarget(t)||this.ctx.stageElement.style.cursor==="row-resize"||this.ctx.stageElement.style.cursor==="col-resize"||this.ctx.columnResizing||this.ctx.rowResizing)return!0;const{SCROLLER_TRACK_SIZE:r}=this.ctx.config;return!!(this.ctx.scrollerMove||this.ctx.scrollerFocus||s>this.ctx.stageHeight-r||o>this.ctx.stageWidth-r)}handleBodyEvent(t,e,i,s,o=!1){if(this.isInsideBody(e))for(const r of i){const a=r.fixedCells.concat(r.noFixedCells);for(const c of a){const l=c.getDrawX(),d=c.getDrawY();if(o){if(t>l&&t<l+c.visibleWidth&&e>d&&e<d+c.visibleHeight){s(c);return}}else if(t>l&&t<l+c.width&&e>d&&e<d+c.height){s(c);return}}}}handleHeaderEvent(t,e,i,s){for(const o of i){const r=o.getDrawX(),a=o.getDrawY();if(t>r&&t<r+o.width&&e>a&&e<a+o.height){s(o);return}}}isInsideBody(t){return t>this.ctx.body.y&&t<this.ctx.body.y+this.ctx.body.visibleHeight}destroy(){this.resizeObserver.unobserve(this.ctx.stageElement),this.mutationObserver.disconnect()}}class Ie{constructor(t,e){n(this,"eventBus");n(this,"eventBrowser");n(this,"eventTable");n(this,"containerElement");n(this,"stageElement");n(this,"canvasElement");n(this,"overlayerElement");n(this,"editorElement");n(this,"emptyElement");n(this,"contextMenuElement");n(this,"stageWidth",0);n(this,"stageHeight",0);n(this,"paint");n(this,"icons");n(this,"domSelectionStr","");n(this,"isMouseoverTargetContainer",!1);n(this,"mousedown",!1);n(this,"isPointer",!1);n(this,"rowResizing",!1);n(this,"columnResizing",!1);n(this,"scrollerMove",!1);n(this,"scrollerFocus",!1);n(this,"autofillMove",!1);n(this,"selectorMove",!1);n(this,"adjustPositioning",!1);n(this,"editing",!1);n(this,"onlyMergeCell",!1);n(this,"selectOnlyOne",!1);n(this,"hasSelection",!1);n(this,"hasTree",!1);n(this,"scrollY",0);n(this,"scrollX",0);n(this,"fixedLeftWidth",0);n(this,"fixedRightWidth",0);n(this,"lastCenterColIndex",0);n(this,"maxColIndex",0);n(this,"maxRowIndex",0);n(this,"hoverRow");n(this,"clickCell");n(this,"focusCell");n(this,"currentCell");n(this,"hoverCell");n(this,"clickCellHeader");n(this,"focusCellHeader");n(this,"hoverCellHeader");n(this,"body",{x:0,y:0,width:0,height:0,visibleHeight:0,visibleWidth:0,headIndex:0,tailIndex:0,visibleRows:[],renderRows:[],data:[]});n(this,"footer",{x:0,y:0,width:0,height:0,visibleHeight:0,visibleWidth:0,renderRows:[]});n(this,"header",{x:0,y:0,width:0,height:0,visibleHeight:0,visibleWidth:0,visibleLeafColumns:[],leafCellHeaders:[],renderLeafCellHeaders:[],renderCellHeaders:[],fixedLeftCellHeaders:[],fixedRightCellHeaders:[],renderCenterCellHeaders:[]});n(this,"selector",{enable:!1,xArr:[-1,-1],yArr:[-1,-1],xArrCopy:[-1,-1],yArrCopy:[-1,-1]});n(this,"autofill",{enable:!1,xArr:[-1,-1],yArr:[-1,-1]});n(this,"database");n(this,"history");n(this,"config");const{containerElement:i,stageElement:s,canvasElement:o,overlayerElement:r,editorElement:a,emptyElement:c,contextMenuElement:l}=t;this.containerElement=i,s.tabIndex=0,this.stageElement=s,this.canvasElement=o,this.overlayerElement=r,this.editorElement=a,this.emptyElement=c,this.contextMenuElement=l,this.config=new It(e.config||{}),this.eventBus=new me,this.eventBrowser=new we(this),this.eventTable=new be(this),this.paint=new Ee(this.canvasElement),this.database=new ue(this,e),this.history=new ge(this),this.icons=new Ce(this)}setConfig(t){this.config=new It(t)}setItemValueByEditor(t,e,i,s=!0,o=!0,r=!0){if(this.config.ENABLE_MERGE_CELL_LINK){const a=this.database.getVirtualBodyCellByKey(t,e);if(a&&(a.mergeRow||a.mergeCol)){const{dataList:c}=a.getSpanInfo(),l=c.map(d=>({...d,value:i}));this.database.batchSetItemValue(l,s,r);return}}this.database.setItemValue(t,e,i,s,o,!0,r)}batchSetItemValueByEditor(t,e=!0,i=!0){if(this.config.ENABLE_MERGE_CELL_LINK){const s=[];t.forEach(o=>{const r=this.database.getRowIndexForRowKey(o.rowKey),a=this.database.getColIndexForKey(o.key);if(r===void 0||a===void 0)return;const c=this.database.getVirtualBodyCell(r,a);if(c){const{dataList:l}=c.getSpanInfo(),d=l.map(f=>({...f,value:o.value}));s.push(...d)}}),this.database.batchSetItemValue(s,e,i)}else this.database.batchSetItemValue(t,e,i)}setFocusCell(t){var e;if(this.focusCell!==t){if(((e=this.focusCell)==null?void 0:e.rowKey)!==t.rowKey){this.currentCell=t,this.emit("rowFocusChange",t);const i={rowIndex:t.rowIndex,rowKey:t.rowKey,row:t.row};this.emit("currentRowChange",i)}this.focusCell=t,this.emit("cellFocusChange",t)}}clearSelector(){this.selector.enable=!1,this.selector.xArr=[-1,-1],this.selector.yArr=[-1,-1],this.emit("clearSelector")}clearSelectorCopy(){this.selector.xArrCopy=[-1,-1],this.selector.yArrCopy=[-1,-1]}clearAutofill(){this.autofill={enable:!1,xArr:[-1,-1],yArr:[-1,-1]}}getSelectedData(){const t=[],e=this.selector.yArr,i=this.selector.xArr;let s="";for(let o=0;o<=e[1]-e[0];o++){const r=[];for(let a=0;a<=i[1]-i[0];a++){const c=o+e[0],l=a+i[0],d=this.database.getVirtualBodyCell(c,l);d&&(d.selectorCellValueType==="displayText"?r.push(d.displayText):r.push(d.getValue()))}s+=`${r.join(" ")}\r`,t.push(r)}return s=s?s.replace(/\r$/,""):" ",{xArr:i,yArr:e,text:s,value:t}}setScroll(t,e){let i=Math.floor(t);const s=this.body.width-this.body.visibleWidth;i<0?i=0:i>s&&(i=s);let o=Math.floor(e),r=this.body.height-this.body.visibleHeight;this.config.FOOTER_FIXED||(r=this.body.height+this.footer.height-this.body.visibleHeight),o<0?o=0:o>r&&(o=r),this.emit("setScroll",i,o)}setScrollX(t){let e=Math.floor(t);const i=this.body.width-this.body.visibleWidth;e<0?e=0:e>i&&(e=i),this.emit("setScrollX",e)}setScrollY(t){let e=Math.floor(t),i=0;this.config.FOOTER_FIXED||(i=this.footer.height);const s=this.body.height-this.body.visibleHeight+i;e<0?e=0:e>s&&(e=s),this.emit("setScrollY",e)}isTarget(t){return!!this.containerElement.contains(t.target)}getOffset(t){const{left:e,top:i}=this.containerElement.getBoundingClientRect();return{offsetX:t.clientX-e,offsetY:t.clientY-i}}hasEvent(t){return this.eventBus.has(t)}on(t,e){this.eventBus.on(t,e)}once(t,e){this.eventBus.once(t,e)}off(t,e){this.eventBus.off(t,e)}emit(t,...e){this.eventBus.emit(t,...e)}destroy(){this.eventTable.destroy(),this.eventBrowser.destroy(),this.eventBus.destroy()}}class St{constructor(t,e){n(this,"ctx");n(this,"type");n(this,"isFocus",!1);n(this,"trackX",0);n(this,"trackY",0);n(this,"trackWidth",0);n(this,"trackHeight",0);n(this,"splitPoints",[]);n(this,"barX",0);n(this,"barY",0);n(this,"barWidth",0);n(this,"barHeight",0);n(this,"distance",0);n(this,"visibleDistance",0);n(this,"clientX",0);n(this,"clientY",0);n(this,"dragStart",0);n(this,"isDragging",!1);n(this,"scroll",0);this.ctx=t,this.type=e,this.type==="vertical"?this.scroll=this.ctx.scrollY:this.scroll=this.ctx.scrollX}onWheel(t){this.updateScroll(t)}onTouchmove(t){const{clientY:e,clientX:i}=t.touches[0],s=e-this.clientY,o=i-this.clientX;let r=0;this.type==="vertical"?(r=Math.max(0,Math.min(this.dragStart-s,this.distance)),this.hasScrollbar()&&!(r===0&&s>0||r===this.distance&&s<0)&&t.preventDefault()):this.type==="horizontal"&&(r=Math.max(0,Math.min(this.dragStart-o,this.distance))),this.scroll=r}onTouchstart(t){const{clientY:e,clientX:i}=t.touches[0];this.clientX=i,this.clientY=e,this.dragStart=this.scroll}onMouseDown(t){if(!(t.target instanceof Element)||!this.ctx.isTarget(t))return;if(this.ctx.stageElement.style.cursor==="row-resize"||this.ctx.stageElement.style.cursor==="col-resize")return!0;const{offsetX:e,offsetY:i,clientX:s,clientY:o}=t;if(!(s==this.clientX&&o==this.clientY)){if(this.isOnScrollbar(e,i))this.clientX=s,this.clientY=o,this.isDragging=!0,this.ctx.scrollerMove=!0,this.isFocus=!0,this.dragStart=this.scroll,t.preventDefault();else if(this.isOnTrack(e,i)){let r=0;this.type==="vertical"?r=(i-this.ctx.header.height-this.barHeight/2)/(this.visibleDistance-this.barHeight)*this.distance:r=(e-this.barWidth/2)/(this.visibleDistance-this.barWidth)*this.distance,this.scroll=Math.max(0,Math.min(r,this.distance))}}}onMouseUp(){this.isDragging=!1,this.isFocus=!1,this.clientX=0,this.clientY=0}onMouseMove(t){const{offsetX:e,offsetY:i,clientX:s,clientY:o,buttons:r}=t;if(this.isOnScrollbar(e,i)&&t.target===this.ctx.canvasElement?this.isFocus=!0:this.isFocus=!1,r===0||s==this.clientX&&o==this.clientY)return;let a=0;if(this.type==="horizontal"?a=s-this.clientX:a=o-this.clientY,this.isDragging&&a!==0){let c=0;this.type==="vertical"?c=this.dragStart+a/(this.visibleDistance-this.barHeight)*this.distance:c=this.dragStart+a/(this.visibleDistance-this.barWidth)*this.distance,this.scroll=Math.max(0,Math.min(c,this.distance))}}isPointInElement(t,e,i,s,o,r){return t>=i&&t<=i+o&&e>=s&&e<=s+r}hasScrollbar(){return this.type==="vertical"?this.barHeight>0:this.type==="horizontal"?this.barWidth>0:!1}isOnScrollbar(t,e){return this.isPointInElement(t,e,this.barX,this.barY,this.barWidth,this.barHeight)}isOnTrack(t,e){return this.isPointInElement(t,e,this.trackX,this.trackY,this.trackWidth,this.trackHeight)}updateScroll(t){const e=t.deltaX,i=t.deltaY;this.type==="vertical"&&t.shiftKey===!1?(this.hasScrollbar()&&!(this.scroll===0&&i<0||this.scroll===this.distance&&i>0)&&t.preventDefault(),this.scroll=Math.max(0,Math.min(this.scroll+i,this.distance))):this.type==="horizontal"&&(t.shiftKey?this.scroll=Math.max(0,Math.min(this.scroll+i,this.distance)):this.scroll=Math.max(0,Math.min(this.scroll+e,this.distance)))}updatedSize(){const{body:t,header:e,stageHeight:i,stageWidth:s,config:{SCROLLER_TRACK_SIZE:o=0,SCROLLER_SIZE:r=0,BORDER:a}}=this.ctx,c=s,l=i,d=e.height,f=e.width,u=t.height,x=this.ctx.footer.height;if(this.type==="vertical"){this.visibleDistance=l-o-d,this.distance=u-this.visibleDistance+x,this.trackX=c-o,this.trackY=0,this.splitPoints=[this.trackX,d,this.trackX+o,d],this.trackWidth=o,this.trackHeight=l,this.barX=this.trackX-1+(o-r)/2,this.barWidth=r;const w=this.distance?this.visibleDistance/(u+x):0;let m=Math.floor(w*this.visibleDistance);m<30?m=30:m>this.visibleDistance&&(m=0),this.barHeight=m,this.barY=d+this.scroll/this.distance*(this.visibleDistance-this.barHeight),this.scroll=Math.max(0,Math.min(this.scroll,this.distance))}else{this.visibleDistance=c-o,this.distance=f-this.visibleDistance,this.splitPoints=[c-o,l-o,c-o,l];const w=a?0:.5;this.trackX=0,this.trackY=l-o+w,this.trackWidth=c,this.trackHeight=o;const m=this.distance?this.visibleDistance/f:0;let g=Math.floor(m*this.visibleDistance);this.barY=this.trackY-1+(o-r)/2,g<30?g=30:g>=this.visibleDistance&&(g=0),this.barWidth=g,this.barHeight=r,this.barX=this.scroll/this.distance*(this.visibleDistance-this.barWidth),this.scroll=Math.max(0,Math.min(this.scroll,this.distance))}}draw(){const{config:{SCROLLER_FOCUS_COLOR:t,SCROLLER_COLOR:e,BORDER_COLOR:i,BORDER:s,SCROLLER_TRACK_COLOR:o}}=this.ctx;this.updatedSize();let r=i;s||(r="transparent"),this.ctx.paint.drawRect(this.trackX,this.trackY,this.trackWidth,this.trackHeight,{borderColor:r,fillColor:o}),this.ctx.paint.drawRect(this.barX,this.barY,this.barWidth,this.barHeight,{fillColor:this.isFocus||this.isDragging?t:e,radius:4}),this.splitPoints.length>0&&this.ctx.paint.drawLine(this.splitPoints,{borderColor:r,borderWidth:1}),this.ctx.scrollerFocus=this.isFocus}}class Re{constructor(t){n(this,"ctx");n(this,"verticalScrollbar");n(this,"horizontalScrollbar");this.ctx=t,this.verticalScrollbar=new St(t,"vertical"),this.horizontalScrollbar=new St(t,"horizontal"),this.ctx.on("wheel",e=>this.onWheel(e)),this.ctx.on("mousedown",e=>this.onMouseDown(e)),this.ctx.on("mousemove",e=>this.onMouseMove(e)),this.ctx.on("mouseup",()=>this.onMouseUp()),this.ctx.on("touchmove",e=>this.onTouchmove(e)),this.ctx.on("touchstart",e=>{this.onTouchstart(e)}),this.ctx.on("setScroll",(e,i)=>{this.setScroll(e,i)}),this.ctx.on("setScrollX",e=>{this.setScrollX(e)}),this.ctx.on("setScrollY",e=>{this.setScrollY(e)})}onWheel(t){this.verticalScrollbar.onWheel(t),this.horizontalScrollbar.onWheel(t),this.draw()}onTouchmove(t){this.verticalScrollbar.onTouchmove(t),this.horizontalScrollbar.onTouchmove(t),this.draw()}onTouchstart(t){this.verticalScrollbar.onTouchstart(t),this.horizontalScrollbar.onTouchstart(t),this.draw()}onMouseDown(t){this.verticalScrollbar.onMouseDown(t),this.horizontalScrollbar.onMouseDown(t),this.draw()}onMouseMove(t){this.verticalScrollbar.onMouseMove(t),this.horizontalScrollbar.onMouseMove(t),this.draw()}onMouseUp(){this.verticalScrollbar.onMouseUp(),this.horizontalScrollbar.onMouseUp(),this.ctx.scrollerMove=!1}draw(){this.verticalScrollbar.draw(),this.horizontalScrollbar.draw();const t=Math.floor(this.horizontalScrollbar.scroll),e=Math.floor(this.verticalScrollbar.scroll);(t!==this.ctx.scrollX||e!==this.ctx.scrollY)&&(this.ctx.emit("onScroll",t,e),t!==this.ctx.scrollX&&this.ctx.emit("onScrollX",t),e!==this.ctx.scrollY&&this.ctx.emit("onScrollY",e),this.ctx.scrollX=t,this.ctx.scrollY=e,this.ctx.emit("draw"))}setScroll(t,e){this.horizontalScrollbar.scroll=t,this.verticalScrollbar.scroll=e,this.ctx.emit("draw"),this.ctx.emit("onScroll",t,e)}setScrollX(t){this.horizontalScrollbar.scroll=t,this.ctx.emit("draw")}setScrollY(t){this.verticalScrollbar.scroll=t,this.ctx.emit("draw")}scrollToColkey(t){const{header:e}=this.ctx,i=e.leafCellHeaders.find(s=>s.key===t);i&&this.setScrollX(i.x-e.visibleWidth/2)}scrollToColIndex(t){const{header:e}=this.ctx,i=e.leafCellHeaders.find(s=>s.colIndex===t);i&&i.x>e.visibleWidth/2&&this.setScrollX(i.x-e.visibleWidth/2)}scrollToRowIndex(t){const{body:e,database:i}=this.ctx,{top:s}=i.getPositionForRowIndex(t);s>e.visibleHeight&&this.setScrollY(s-e.visibleHeight/2)}scrollToRowKey(t){const{body:e,database:i}=this.ctx,s=i.getRowIndexForRowKey(t);if(s===void 0)return;const{top:o}=i.getPositionForRowIndex(s);this.setScrollY(o-e.visibleHeight/2)}}class Se{constructor(t){n(this,"ctx");n(this,"x",0);n(this,"y",0);n(this,"width",0);n(this,"height",0);n(this,"resizeTarget",null);n(this,"resizeNum",0);n(this,"isResizing",!1);n(this,"clientX",0);n(this,"resizeDiff",0);n(this,"columnIndex",0);n(this,"isMouseDown",!1);n(this,"columns");n(this,"visibleLeafColumns",[]);n(this,"visibleHeight",0);n(this,"visibleWidth",0);n(this,"allCellHeaders",[]);n(this,"leafCellHeaders",[]);n(this,"renderLeafCellHeaders",[]);n(this,"fixedLeftCellHeaders",[]);n(this,"centerCellHeaders",[]);n(this,"fixedRightCellHeaders",[]);n(this,"renderCenterCellHeaders",[]);n(this,"renderFixedCellHeaders",[]);this.ctx=t,this.ctx.on("resetHeader",Ht(()=>{this.init(),this.ctx.emit("draw")},100)),this.init(),this.initResizeColumn()}init(){const{config:{HEADER_HEIGHT:t,SCROLLER_TRACK_SIZE:e}}=this.ctx,i=this.ctx.database.getColumns();this.columns=i,this.allCellHeaders=[],this.leafCellHeaders=[],this.fixedLeftCellHeaders=[],this.fixedRightCellHeaders=[],this.centerCellHeaders=[];const s=Dt(i),o=et(i);this.height=t*s,this.width=o.reduce((f,u)=>{const x=u.width||100,{maxWidth:w,minWidth:m}=u;return w&&x>w?f+w:m&&x<m?f+m:f+x},0),this.visibleHeight=this.height;const r=ne(Nt(i,s));this.columnIndex=0,this.resizeNum=0,this.render(r,0),this.ctx.database.updateColIndexKeyMap(this.leafCellHeaders);const a=this.ctx.containerElement.getBoundingClientRect();this.resizeNum>0?this.ctx.stageWidth=Math.floor(a.width):this.ctx.stageWidth=Math.floor(this.width+e),this.ctx.stageElement.style.width=this.ctx.stageWidth+"px",this.visibleWidth=this.ctx.stageWidth-e;const c=this.visibleWidth-this.width;if(this.resizeNum&&c>0){const f=Math.floor(c/this.resizeNum*100)/100;this.resizeAllColumn(f)}const l=this.fixedLeftCellHeaders.filter(f=>!f.hasChildren);this.ctx.fixedLeftWidth=l.reduce((f,u)=>f+u.width,0);const d=this.fixedRightCellHeaders.filter(f=>!f.hasChildren);this.ctx.fixedRightWidth=d.reduce((f,u)=>f+u.width,e),this.ctx.maxColIndex=this.leafCellHeaders.length-1,this.ctx.header.x=this.x,this.ctx.header.y=this.y,this.ctx.header.width=this.width,this.ctx.header.height=this.height,this.ctx.header.visibleWidth=this.visibleWidth,this.ctx.header.visibleHeight=this.visibleHeight}initResizeColumn(){const{config:{ENABLE_RESIZE_COLUMN:t}}=this.ctx;t&&(this.ctx.on("mousedown",e=>{this.ctx.isTarget(e)&&(this.clientX=e.clientX,this.resizeTarget?(this.isResizing=!0,this.ctx.columnResizing=!0):this.isResizing=!1,this.isMouseDown=!0)}),this.ctx.on("mouseup",()=>{this.isMouseDown=!1,this.resizeDiff!==0&&this.resizeTarget&&this.resizeColumn(this.resizeTarget,this.resizeDiff),this.resizeTarget=null,this.isResizing=!1,this.isMouseDown=!1,this.ctx.columnResizing=!1,this.clientX=0,this.resizeDiff=0}),this.ctx.on("mousemove",e=>{if(this.ctx.editing)return;const{stageWidth:i,config:{RESIZE_COLUMN_MIN_WIDTH:s}}=this.ctx;if(this.isResizing&&this.resizeTarget){const o=this.resizeTarget.width,r=this.resizeTarget.minWidth,a=this.resizeTarget.maxWidth;let c=e.clientX-this.clientX;c+o<s&&(c=-(o-s)),r&&c+o<r&&(c=-(o-r)),a&&c+o>a&&(c=a-o),this.resizeDiff=c,this.ctx.emit("draw")}else{if(this.resizeTarget=null,this.isMouseDown)return;if(e.offsetX<0||e.offsetX>this.visibleWidth){this.ctx.stageElement.style.cursor==="col-resize"&&(this.ctx.stageElement.style.cursor="default");return}this.ctx.stageElement.style.cursor==="col-resize"&&(this.ctx.stageElement.style.cursor="default");const o=[...this.renderFixedCellHeaders,...this.renderCenterCellHeaders];for(const r of o){const{offsetX:a,offsetY:c}=this.ctx.getOffset(e),l=a,d=r.getDrawX();l>d+r.width-5&&l<d+r.width+4&&l<i-4&&r.colspan<=1&&this.ctx.isTarget(e)&&c<=this.height&&(this.ctx.stageElement.style.cursor="col-resize",this.resizeTarget=r)}}}))}resizeColumn(t,e){const i=o=>{o.forEach(r=>{if(r.children&&r.children.length>0&&i(r.children),r.key===t.key){const a=r.width||100;r.width=a+e}})};i(this.columns),this.ctx.database.setColumns(this.columns),this.init(),this.ctx.emit("draw");let s=0;if(this.width<this.visibleWidth){const o=this.visibleWidth-this.width;s=Math.floor(o/this.resizeNum*100)/100,this.resizeAllColumn(s),this.ctx.emit("draw")}this.ctx.emit("resizeColumnChange",{colIndex:t.colIndex,key:t.key,oldWidth:t.width,width:t.width+e+s,column:t.column,columns:this.columns})}resizeAllColumn(t){if(t===0)return;const e=new Map;let i=!0;for(const o of this.allCellHeaders)if(o.widthFillDisable)e.set(o.key,o.width);else{const r=o.width+t*o.colspan;e.set(o.key,r),r<this.ctx.config.RESIZE_COLUMN_MIN_WIDTH&&(i=!1)}if(!i)return;const s=o=>{o.forEach(r=>{e.has(r.key)&&(r.width=e.get(r.key)),r.children&&r.children.length>0&&s(r.children)})};s(this.columns),this.ctx.database.setColumns(this.columns),this.init()}render(t,e){const i=t.length;let s=e;const{HEADER_HEIGHT:o=0}=this.ctx.config;for(let r=0;r<i;r++){const a=t[r],c=o*(a.rowspan||0),l=o*(a.level||0);let{minWidth:d,maxWidth:f}=a,u=a.width||100;d&&u<d&&(u=d),f&&u>f&&(u=f),a.children&&(u=et(a.children).reduce((m,g)=>m+((g==null?void 0:g.width)||100),0));const x=new lt(this.ctx,this.columnIndex,s,l,u,c,a);this.ctx.database.setHeader(a.key,x),this.allCellHeaders.push(x),a.children||(this.leafCellHeaders.push(x),x.column.widthFillDisable||this.resizeNum++),a.fixed==="left"?this.fixedLeftCellHeaders.push(x):a.fixed==="right"?this.fixedRightCellHeaders.push(x):this.centerCellHeaders.push(x),!a.children&&this.columnIndex++,a.children&&this.render(a.children,s),s+=u}}drawTipLine(){if(this.isResizing&&this.resizeTarget){const{stageHeight:t,config:{RESIZE_COLUMN_LINE_COLOR:e}}=this.ctx,i=this.resizeTarget.getDrawX(),s=this.resizeTarget.width,o=i+s+this.resizeDiff-.5,r=[o-.5,0,o-.5,t];this.ctx.paint.drawLine(r,{borderColor:e,borderWidth:1})}}drawFixedShadow(){const{fixedLeftWidth:t,fixedRightWidth:e,scrollX:i,header:s,stageWidth:o,config:{HEADER_BG_COLOR:r,SCROLLER_TRACK_SIZE:a}}=this.ctx;if(i>0&&t!==0&&this.ctx.paint.drawShadow(this.x,this.y,t,this.height,{fillColor:r,side:"right",shadowWidth:4,colorStart:"rgba(0,0,0,0.1)",colorEnd:"rgba(0,0,0,0)"}),i<Math.floor(s.width-o-1)&&e!==a){const c=s.width-(this.x+this.width)+o-e;this.ctx.paint.drawShadow(c,this.y,e,this.height,{fillColor:r,side:"left",shadowWidth:4,colorStart:"rgba(0,0,0,0)",colorEnd:"rgba(0,0,0,0.1)"})}}update(){const t=[],e=[],i=[];if(this.centerCellHeaders.length){const s=this.centerCellHeaders[this.centerCellHeaders.length-1];this.ctx.lastCenterColIndex=s.colIndex}this.centerCellHeaders.forEach(s=>{s.isHorizontalVisible()&&s.isVerticalVisible()&&(e.push(s),s.hasChildren||t.push(s))}),this.fixedLeftCellHeaders.forEach(s=>{i.push(s),s.hasChildren||t.push(s)}),this.fixedRightCellHeaders.forEach(s=>{i.push(s),s.hasChildren||t.push(s)}),this.renderCenterCellHeaders=e,this.renderFixedCellHeaders=i,this.renderLeafCellHeaders=t.sort((s,o)=>s.x-o.x),this.visibleLeafColumns=this.renderLeafCellHeaders.map(s=>s.column),this.ctx.header.visibleLeafColumns=this.visibleLeafColumns,this.ctx.header.leafCellHeaders=this.leafCellHeaders,this.ctx.header.renderLeafCellHeaders=this.renderLeafCellHeaders,this.ctx.header.renderCellHeaders=this.renderFixedCellHeaders.concat(this.renderCenterCellHeaders)}drawBottomLine(){const{stageWidth:t,config:{BORDER_COLOR:e}}=this.ctx,i=[0,this.height,t,this.height];this.ctx.paint.drawLine(i,{borderColor:e,borderWidth:1})}draw(){this.renderCenterCellHeaders.forEach(t=>{t.update(),t.draw()}),this.drawFixedShadow(),this.renderFixedCellHeaders.forEach(t=>{t.update(),t.draw()}),this.drawTipLine(),this.drawBottomLine()}}class Bt{constructor(t,e,i=0,s=0,o=0,r=0,a,c="body"){n(this,"ctx");n(this,"x",0);n(this,"y",0);n(this,"width",0);n(this,"height");n(this,"cells",[]);n(this,"fixedCells",[]);n(this,"noFixedCells",[]);n(this,"rowIndex",0);n(this,"rowKey","");n(this,"rowType","body");n(this,"data");this.ctx=t,this.x=i,this.y=s,this.width=o,this.height=r,this.rowIndex=e,this.rowKey=t.database.getRowKeyForRowIndex(e)||"",this.rowType=c,this.data=a,this.update()}update(){const{header:t}=this.ctx,e=[],i=[],s=[];t.renderLeafCellHeaders.forEach(o=>{const r=new xt(this.ctx,this.rowIndex,o.colIndex,o.x,this.y,o.width,this.height,o.column,this.data,this.rowType);r.fixed?i.push(r):s.push(r),e.push(r)}),this.cells=e,this.fixedCells=i,this.noFixedCells=s}drawCenter(){this.noFixedCells.forEach(t=>{t.draw()})}drawFixed(){this.fixedCells.forEach(t=>{t.draw()})}drawContainer(){this.noFixedCells.forEach(t=>{t.drawContainer()})}drawFixedContainer(){this.fixedCells.forEach(t=>{t.drawContainer()})}}class ve{constructor(t){n(this,"resizeTarget",null);n(this,"isMouseDown",!1);n(this,"resizeDiff",0);n(this,"clientY",0);n(this,"ctx");n(this,"x",0);n(this,"y",0);n(this,"width",0);n(this,"height",0);n(this,"headIndex",0);n(this,"tailIndex",0);n(this,"isResizing",!1);n(this,"renderRows",[]);n(this,"visibleRows",[]);n(this,"visibleHeight",0);n(this,"visibleWidth",0);n(this,"containerRect");n(this,"data",[]);this.ctx=t,this.init(),this.initResizeRow()}init(){const{canvasElement:t,header:e,footer:i,database:s,config:{FOOTER_FIXED:o,SCROLLER_TRACK_SIZE:r=0,HEIGHT:a,EMPTY_BODY_HEIGHT:c=0,MAX_HEIGHT:l=0,ENABLE_OFFSET_HEIGHT:d=0,OFFSET_HEIGHT:f=0,FOOTER_POSITION:u}}=this.ctx;if(!e.width)return;this.x=0,u==="top"&&o?this.y=e.height+i.height:this.y=e.height;const{data:x,sumHeight:w}=s.getData();this.height=w,this.data=x,this.width=e.width,this.visibleWidth=this.ctx.stageWidth-r;const m=this.ctx.footer.height;!this.data.length&&!a?this.height=c:!this.data.length&&a&&(this.height=a-e.height-m-r);let g=this.height+e.height+r;g+=m;let E=g;const y=window.innerHeight,{top:p}=this.containerRect||this.ctx.containerElement.getBoundingClientRect();if(y>p&&d&&!a){const O=y-p-f;O>e.height+r?E=O:g>l&&(E=l)}else this.data.length&&a?E=a:this.data.length&&l&&g>l&&(E=l);E>0&&(this.ctx.stageHeight=Math.floor(E),this.ctx.stageElement.style.height=`${this.ctx.stageHeight}px`);let b=this.ctx.stageHeight-e.height-r;o?this.visibleHeight=b-m:this.visibleHeight=b,this.data.length||(this.height=this.visibleHeight),this.ctx.body.x=this.x,this.ctx.body.y=this.y,this.ctx.body.width=this.width,this.ctx.body.height=this.height,this.ctx.body.visibleWidth=this.visibleWidth,this.ctx.body.visibleHeight=this.visibleHeight,this.ctx.body.data=x;const C=window.devicePixelRatio||1,R=this.ctx.stageWidth*C,v=this.ctx.stageHeight*C;t.width=Math.round(R),t.height=Math.round(v);const T=this.data.length?"not-empty":"empty";this.ctx.emit("emptyChange",{isEmpty:T,type:T,headerHeight:e.height,bodyHeight:this.height,footerHeight:m,width:this.width,height:this.data.length?0:c+m});const S=Math.round(t.width/C*1e4)/1e4,I=Math.round(t.height/C*1e4)/1e4;this.ctx.canvasElement.setAttribute("style",`height:${I}px;width:${S}px;`),this.ctx.paint.scale(C)}initResizeRow(){const{config:{ENABLE_RESIZE_ROW:t}}=this.ctx;t&&(this.ctx.on("resize",()=>{this.containerRect=this.ctx.containerElement.getBoundingClientRect()}),this.ctx.on("resizeObserver",()=>{this.containerRect=this.ctx.containerElement.getBoundingClientRect()}),this.ctx.on("mouseup",()=>{this.isMouseDown=!1,this.resizeDiff!==0&&this.resizeTarget&&this.resizeRow(this.resizeTarget,this.resizeDiff),this.resizeTarget=null,this.resizeDiff=0,this.isResizing=!1,setTimeout(()=>{this.ctx.rowResizing=!1},0),this.clientY=0}),this.ctx.on("mousedown",e=>{this.ctx.isTarget(e)&&(this.clientY=e.clientY,this.resizeTarget?(this.isResizing=!0,this.ctx.rowResizing=!0):(this.isResizing=!1,this.ctx.rowResizing=!1),this.isMouseDown=!0)}),this.ctx.on("mousemove",e=>{if(this.ctx.editing)return;const{offsetY:i,offsetX:s}=this.ctx.getOffset(e),o=i,r=s,a=e.clientY,{stageHeight:c,scrollY:l,config:{RESIZE_ROW_MIN_HEIGHT:d=0}}=this.ctx;if(this.isResizing&&this.resizeTarget){const f=this.resizeTarget.height;let u=a-this.clientY;u+f<d&&(u=-(f-d)),this.resizeDiff=u,this.ctx.emit("draw")}else{if(this.resizeTarget=null,this.isMouseDown)return;if(r<0||r>this.ctx.body.visibleWidth||o<0||o>this.ctx.header.visibleHeight+this.ctx.body.visibleHeight){this.ctx.stageElement.style.cursor==="row-resize"&&(this.ctx.stageElement.style.cursor="default");return}if(this.ctx.stageElement.style.cursor==="crosshair")return;this.ctx.stageElement.style.cursor==="row-resize"&&(this.ctx.stageElement.style.cursor="default");for(let f=0;f<this.renderRows.length;f++){const u=this.renderRows[f];if(o>u.y-l+u.height-1.5&&o<u.y-l+u.height+1.5&&o<c-4)for(let w=0;w<u.cells.length;w++){const m=u.cells[w];r>m.drawX+10&&r<m.drawX+m.width-10&&m.rowspan===1&&(this.ctx.stageElement.style.cursor="row-resize",this.resizeTarget=u)}}}}))}resizeRow(t,e){const{rowIndex:i,height:s,rowKey:o,data:r}=t;this.ctx.database.setRowHeight(i,s+e),this.init(),this.ctx.emit("draw"),this.ctx.emit("resizeRowChange",{rowIndex:i,oldHeight:s,height:s+e,rowKey:o,row:r,data:this.data})}drawTipLine(){if(this.isResizing&&this.resizeTarget){const{stageWidth:t,scrollY:e,config:{RESIZE_ROW_LINE_COLOR:i}}=this.ctx,s=this.resizeTarget.y-e,o=this.resizeTarget.height,r=s+o+this.resizeDiff-.5,a=[0,r-.5,t,r-.5];this.ctx.paint.drawLine(a,{borderColor:i,borderWidth:1})}}drawFixedShadow(){const{fixedLeftWidth:t,fixedRightWidth:e,scrollX:i,header:s,stageWidth:o,config:{HEADER_BG_COLOR:r,SCROLLER_TRACK_SIZE:a}}=this.ctx;if(i>0&&t!==0&&this.ctx.paint.drawShadow(this.x,this.y,t,this.height,{fillColor:r,side:"right",shadowWidth:4,colorStart:"rgba(0,0,0,0.1)",colorEnd:"rgba(0,0,0,0)"}),i<Math.floor(s.width-o-1)&&e!==a){const c=s.width-(this.x+this.width)+o-e;this.ctx.paint.drawShadow(c,this.y,e,this.height,{fillColor:r,side:"left",shadowWidth:4,colorStart:"rgba(0,0,0,0)",colorEnd:"rgba(0,0,0,0.1)"})}}binarySearch(t,e){let i=0,s=t.length-1,o=-1;for(;i<=s;){let r=Math.floor((i+s)/2),a=t[r].bottom;if(a===e)return r;a<e?i=r+1:(o=r,s=r-1)}return o}update(){this.init();const{header:t,database:e,scrollY:i,config:{CELL_HEIGHT:s}}=this.ctx,o=i,{data:r,positions:a}=e.getData();this.ctx.maxRowIndex=r.length-1;let c=this.binarySearch(a,o),l=this.binarySearch(a,o+this.visibleHeight);if(l===-1&&(l=this.ctx.maxRowIndex),c===-1&&l===this.ctx.maxRowIndex){const f=Math.floor(this.visibleHeight/s);c=this.ctx.maxRowIndex-f}this.headIndex=Math.max(0,c),this.tailIndex=Math.min(this.ctx.maxRowIndex,l+1),this.visibleRows=r.slice(this.headIndex,this.tailIndex+1),this.ctx.body.headIndex=this.headIndex,this.ctx.body.tailIndex=this.tailIndex,this.ctx.body.visibleRows=this.visibleRows;const d=[];for(let f=0;f<this.visibleRows.length;f++){const u=this.headIndex+f,x=this.visibleRows[f],{height:w,top:m}=this.ctx.database.getPositionForRowIndex(u),g=new Bt(this.ctx,u,0,m+this.y,t.width,w,x);d.push(g)}this.renderRows=d,this.ctx.body.renderRows=d}draw(){this.renderRows.forEach(t=>{t.drawContainer()}),this.renderRows.forEach(t=>{t.drawCenter()}),this.drawFixedShadow(),this.renderRows.forEach(t=>{t.drawFixedContainer()}),this.renderRows.forEach(t=>{t.drawFixed()}),this.drawTipLine()}}class _e{constructor(t){n(this,"ctx");n(this,"renderRows",[]);n(this,"data",[]);n(this,"x",0);n(this,"y",0);n(this,"width",0);n(this,"height",0);n(this,"visibleWidth",0);n(this,"visibleHeight",0);this.ctx=t,this.init()}init(){this.data=this.ctx.database.getFooterData();const{header:t,body:e,config:{CELL_FOOTER_HEIGHT:i,FOOTER_FIXED:s,SCROLLER_TRACK_SIZE:o,FOOTER_POSITION:r}}=this.ctx;this.width=t.width,this.visibleWidth=t.visibleWidth,this.height=this.data.reduce(a=>a+i,0),this.visibleHeight=this.height,s?r==="top"?this.y=this.ctx.header.height:this.y=this.ctx.stageHeight-this.height-o:this.y=e.y+e.height,this.ctx.footer.x=this.x,this.ctx.footer.y=this.y,this.ctx.footer.height=this.height,this.ctx.footer.width=this.width,this.ctx.footer.visibleWidth=this.visibleWidth,this.ctx.footer.visibleHeight=this.visibleHeight}drawFixedShadow(){const{fixedLeftWidth:t,fixedRightWidth:e,scrollX:i,header:s,stageWidth:o,config:{HEADER_BG_COLOR:r,SCROLLER_TRACK_SIZE:a}}=this.ctx;let c=this.y;if(this.ctx.config.FOOTER_FIXED||(c=this.y-this.ctx.scrollY),i>0&&t!==0&&this.ctx.paint.drawShadow(this.x,c,t,this.height,{fillColor:r,side:"right",shadowWidth:4,colorStart:"rgba(0,0,0,0.1)",colorEnd:"rgba(0,0,0,0)"}),i<Math.floor(s.width-o-1)&&e!==a){const l=s.width-(this.x+this.width)+o-e;this.ctx.paint.drawShadow(l,c,e,this.height,{fillColor:r,side:"left",shadowWidth:4,colorStart:"rgba(0,0,0,0)",colorEnd:"rgba(0,0,0,0.1)"})}}update(){this.init();const{CELL_FOOTER_HEIGHT:t}=this.ctx.config;let e=this.y;const i=[];this.data.forEach((s,o)=>{const r=new Bt(this.ctx,o,0,e,this.width,t,s,"footer");e+=t,i.push(r)}),this.renderRows=i,this.ctx.footer.renderRows=this.renderRows}drawTopLine(){const{stageWidth:t,config:{BORDER_COLOR:e}}=this.ctx,i=[0,this.y,t,this.y];this.ctx.paint.drawLine(i,{borderColor:e,borderWidth:1})}draw(){this.renderRows.forEach(t=>{t.drawContainer()}),this.renderRows.forEach(t=>{t.drawCenter()}),this.drawFixedShadow(),this.renderRows.forEach(t=>{t.drawFixedContainer()}),this.renderRows.forEach(t=>{t.drawFixed()}),this.drawTopLine()}}class Te{constructor(t){n(this,"isCut",!1);n(this,"isMultipleRow",!1);n(this,"mousedownHeader",!1);n(this,"ctx");n(this,"adjustPositionX","");n(this,"adjustPositionY","");n(this,"timerX",0);n(this,"timerY",0);this.ctx=t,this.init()}init(){this.ctx.on("setMoveFocus",t=>{this.moveFocus(t)}),this.ctx.on("mousemove",Ht(t=>{const{offsetY:e,offsetX:i}=this.ctx.getOffset(t),s=this.ctx.isTarget(t)&&i>0&&i<this.ctx.body.visibleWidth&&e>this.ctx.header.visibleHeight&&e<this.ctx.header.visibleHeight+this.ctx.body.visibleHeight;(this.ctx.selectorMove||this.ctx.autofillMove)&&(!s&&!this.mousedownHeader?this.startAdjustPosition(t):this.stopAdjustPosition())},100)),this.ctx.on("cellHoverChange",t=>{if(!this.ctx.autofillMove){if(t.operation){this.selectRows(t,!1);return}this.isMultipleRow||this.mouseenter()}}),this.ctx.on("cellMousedown",(t,e)=>{if(!this.ctx.isTarget(e)||this.ctx.stageElement.style.cursor==="pointer"||this.ctx.isPointer||this.ctx.stageElement.style.cursor==="crosshair")return;if(t.operation){this.isMultipleRow=!0,this.selectRows(t);return}window.getComputedStyle(e.target).userSelect!=="text"&&e.preventDefault(),this.isMultipleRow=!1,this.click(e.shiftKey),this.ctx.emit("selectorClick",t)}),this.ctx.on("mouseup",()=>{this.mousedownHeader=!1;const t=setTimeout(()=>{this.ctx.adjustPositioning=!1,clearTimeout(t)},0)}),this.ctx.on("cellHeaderHoverChange",t=>{this.ctx.mousedown&&this.selectCols(t)}),this.ctx.on("cellHeaderMousedown",(t,e)=>{if(this.ctx.stageElement.style.cursor==="pointer"||this.ctx.isPointer)return;window.getComputedStyle(e.target).userSelect!=="text"&&e.preventDefault(),this.mousedownHeader=!0,this.selectCols(t)}),this.ctx.on("keydown",t=>{if(!this.ctx.editing){if(t.ctrlKey&&t.code==="KeyV"||t.metaKey&&t.code==="KeyV"){this.paste();return}if(t.ctrlKey&&t.code==="KeyC"||t.metaKey&&t.code==="KeyC"){this.copy(),this.isCut=!1;return}if(t.ctrlKey&&t.code==="KeyX"||t.metaKey&&t.code==="KeyX"){this.isCut=!0,this.copy();return}if((t.ctrlKey&&t.code==="KeyA"||t.metaKey&&t.code==="KeyA")&&(t.preventDefault(),this.selectAll()),t.code==="ArrowLeft"||t.shiftKey&&t.code==="Tab"){t.preventDefault(),this.moveFocus("LEFT");return}if(t.code==="ArrowUp"){t.preventDefault(),this.moveFocus("TOP");return}if(t.code==="ArrowRight"||t.code==="Tab"){t.preventDefault(),this.moveFocus("RIGHT");return}if(t.code==="ArrowDown"){t.preventDefault(),this.moveFocus("BOTTOM");return}if(t.code==="Delete"||t.code==="Backspace"){t.preventDefault();const{xArr:e,yArr:i}=this.ctx.selector;this.clearSelectedData(e,i);return}}}),this.ctx.on("contextMenuClearSelected",()=>{const{xArr:t,yArr:e}=this.ctx.selector;this.clearSelectedData(t,e)}),this.ctx.on("contextMenuCopy",()=>{this.copy()}),this.ctx.on("contextMenuPaste",()=>{this.paste()}),this.ctx.on("contextMenuCut",()=>{this.isCut=!0,this.copy()}),this.ctx.on("setSelectorCell",t=>{this.ctx.setFocusCell(t),this.click()}),this.ctx.on("mouseup",()=>{this.ctx.selectorMove=!1,this.stopAdjustPosition()})}setSelector(t,e){const{ENABLE_SELECTOR_SPAN_COL:i,ENABLE_SELECTOR_SPAN_ROW:s}=this.ctx.config;let o=t,r=e;if(!s){const[a]=r;r=[a,a]}if(!i){const[a]=o;o=[a,a]}if(JSON.stringify(this.ctx.selector.xArr)!==JSON.stringify(o)||JSON.stringify(this.ctx.selector.yArr)!==JSON.stringify(r)){this.ctx.mousedown&&(this.ctx.selectorMove=!0),this.ctx.selector.enable=!0;const{SELECTOR_AREA_MIN_X:a,SELECTOR_AREA_MAX_X:c,SELECTOR_AREA_MIN_Y:l,SELECTOR_AREA_MAX_Y:d,SELECTOR_AREA_MAX_X_OFFSET:f,SELECTOR_AREA_MAX_Y_OFFSET:u}=this.ctx.config,x=a,w=c||this.ctx.maxColIndex-f,m=l,g=d||this.ctx.maxRowIndex-u;let[E,y]=o,[p,b]=r;if(E<x||y>w||p<m||b>g)return;if(this.ctx.stageElement.focus({preventScroll:!0}),this.ctx.config.ENABLE_MERGE_CELL_LINK){const R=this.adjustMergeCells(o,r);p=R.yArr[0],b=R.yArr[1],E=R.xArr[0],y=R.xArr[1],this.ctx.onlyMergeCell=R.onlyMergeCell}E===y&&p===b?this.ctx.selectOnlyOne=!0:this.ctx.selectOnlyOne=!1,o=[Math.max(x,E),Math.min(w,y)],r=[Math.max(m,p),Math.min(g,b)];const{BEFORE_SET_SELECTOR_METHOD:C}=this.ctx.config;if(typeof C=="function"){const v=C({focusCell:this.ctx.focusCell,xArr:o,yArr:r});if(!v)return;o=v.xArr,r=v.yArr}this.ctx.selector.xArr=o,this.ctx.selector.yArr=r,this.ctx.emit("setSelector",this.ctx.selector),this.ctx.emit("drawView")}}adjustMergeCells(t,e){var w;const[i,s]=e,[o,r]=t;let a=[],c=[];for(let m=0;m<=e[1]-e[0];m++)for(let g=0;g<=t[1]-t[0];g++){const E=m+e[0],y=g+t[0],p=this.ctx.database.getVirtualBodyCell(E,y);p&&((E===i||E===s)&&a.push(p),(y===o||y===r)&&c.push(p))}const l=a.reduce((m,g)=>{const{yArr:E}=g.getSpanInfo(),[y,p]=E;return m.minY=Math.min(m.minY,y),m.maxY=Math.max(m.maxY,p),m},{minY:i,maxY:s}),d=c.reduce((m,g)=>{const{xArr:E}=g.getSpanInfo(),[y,p]=E;return m.minX=Math.min(m.minX,y),m.maxX=Math.max(m.maxX,p),m},{minX:o,maxX:r}),f=[d.minX,d.maxX],u=[l.minY,l.maxY];let x=!1;if(d.minX!==d.maxX||l.minY!==l.maxY){const m=JSON.stringify(f)+JSON.stringify(u),g=(w=this.ctx.focusCell)==null?void 0:w.getSpanInfo();x=(g&&JSON.stringify(g.xArr)+JSON.stringify(g.yArr))===m}return{xArr:f,yArr:u,onlyMergeCell:x}}selectCols(t){if(this.ctx.config.ENABLE_SELECTOR_SINGLE||!this.ctx.config.ENABLE_SELECTOR_ALL_ROWS||this.ctx.autofillMove||this.ctx.columnResizing||this.ctx.editing)return;if(t.operation){this.selectAll();return}const{SELECTOR_AREA_MIN_Y:e,SELECTOR_AREA_MAX_Y:i,SELECTOR_AREA_MAX_Y_OFFSET:s}=this.ctx.config,o=e,r=i||this.ctx.maxRowIndex-s;if(this.ctx.mousedown&&this.ctx.focusCellHeader){const{colIndex:a}=this.ctx.focusCellHeader;if(this.ctx.clearSelector(),t.colIndex>=a){const c=[a,t.colIndex+t.colspan-1],l=[o,r];this.setSelector(c,l)}else{const c=[t.colIndex,a],l=[o,r];this.setSelector(c,l)}}else{const a=[t.colIndex,t.colIndex+t.colspan-1],c=[o,r];this.setSelector(a,c)}}selectAll(){if(this.ctx.autofillMove||this.ctx.editing)return;const{ENABLE_SELECTOR_ALL_ROWS:t,ENABLE_SELECTOR_ALL_COLS:e}=this.ctx.config;if(t&&e){const{SELECTOR_AREA_MIN_X:i,SELECTOR_AREA_MAX_X:s,SELECTOR_AREA_MIN_Y:o,SELECTOR_AREA_MAX_Y:r,SELECTOR_AREA_MAX_X_OFFSET:a,SELECTOR_AREA_MAX_Y_OFFSET:c}=this.ctx.config,l=i,d=s||this.ctx.maxColIndex-a,f=o,u=r||this.ctx.maxRowIndex-c,x=[l,d],w=[f,u];this.setSelector(x,w)}}selectRows(t,e=!0){if(this.ctx.config.ENABLE_SELECTOR_SINGLE||!this.ctx.config.ENABLE_SELECTOR_ALL_COLS||this.ctx.autofillMove||this.ctx.editing)return;const{SELECTOR_AREA_MIN_X:i,SELECTOR_AREA_MAX_X:s,SELECTOR_AREA_MAX_X_OFFSET:o}=this.ctx.config,r=s||this.ctx.maxColIndex-o,a=i;if(e){this.ctx.setFocusCell(t);const c=[a,r],l=[t.rowIndex,t.rowIndex];this.setSelector(c,l)}if(this.ctx.focusCell&&this.ctx.mousedown){const{rowIndex:c}=this.ctx.focusCell;if(t.rowIndex>=c){const l=[a,r],d=[c,t.rowIndex];this.setSelector(l,d)}else{const l=[a,r],d=[t.rowIndex,c];this.setSelector(l,d)}}}mouseenter(){if(this.ctx.config.ENABLE_SELECTOR_SINGLE||this.ctx.editing)return;const{mousedown:t,focusCell:e,hoverCell:i}=this.ctx;if(t&&e&&i){const{rowIndex:s,colIndex:o}=e,r=Math.min(i.colIndex,o),a=Math.max(i.colIndex,o),c=Math.min(i.rowIndex,s),l=Math.max(i.rowIndex,s),d=[r,a],f=[c,l];this.setSelector(d,f)}}click(t=!1){const{focusCell:e,clickCell:i}=this.ctx;if(e&&this.isInSettingRange(e.rowIndex,e.colIndex))if(this.ctx.selector.enable=!0,i&&t){if(this.ctx.config.ENABLE_SELECTOR_SINGLE)return;const{colIndex:s,rowIndex:o}=i,{colIndex:r,rowIndex:a}=e,c=Math.min(r,s),l=Math.max(r,s),d=Math.min(a,o),f=Math.max(a,o),u=[c,l],x=[d,f];this.setSelector(u,x)}else{this.ctx.emit("cellSelectedClick",e);const s=[e.colIndex,e.colIndex],o=[e.rowIndex,e.rowIndex];this.setSelector(s,o),this.adjustBoundaryPosition()}}clearCopyLine(){this.ctx.selector.xArrCopy=[-1,-1],this.ctx.selector.yArrCopy=[-1,-1]}getCell(t,e){const i=this.ctx.body.renderRows.find(o=>o.rowIndex===t);return i==null?void 0:i.cells.find(o=>o.colIndex===e)}copy(){if(!this.ctx.config.ENABLE_COPY||this.ctx.domSelectionStr)return;let{value:t,xArr:e,yArr:i}=this.ctx.getSelectedData();if(this.ctx.config.ENABLE_MERGE_CELL_LINK&&this.ctx.database.hasMergeCell(e,i))if(this.ctx.onlyMergeCell&&this.ctx.focusCell){const r=this.ctx.focusCell;t=[[r.getValue()]],e=[r.colIndex,r.colIndex],i=[r.rowIndex,r.rowIndex]}else{const r={code:"ERR_MERGED_CELLS_COPY",message:"Merged cells cannot span copy data"};this.ctx.hasEvent("error")?this.ctx.emit("error",r):alert(r.message);return}const{BEFORE_COPY_METHOD:s}=this.ctx.config;if(typeof s=="function"){const a=s({focusCell:this.ctx.focusCell,data:t,xArr:e,yArr:i});if(!a)return;t=a.data}const o=le(t);navigator.clipboard?navigator.clipboard.writeText(o).then(()=>{this.ctx.selector.xArrCopy=this.ctx.selector.xArr.slice(),this.ctx.selector.yArrCopy=this.ctx.selector.yArr.slice(),this.ctx.emit("copyChange",{xArr:this.ctx.selector.xArrCopy,yArr:this.ctx.selector.yArrCopy,data:t}),this.ctx.emit("draw")}).catch(r=>console.error("Copy Failure:",r)):console.error("current browser does not support the Clipboard API")}clearSelectedData(t,e,i=!1,s=null){let o=[];const r=new Set;for(let c=0;c<=e[1]-e[0];c++)for(let l=0;l<=t[1]-t[0];l++){const d=c+e[0],f=l+t[0],u=this.ctx.database.getItemValueForRowIndexAndColIndex(d,f);if(u){const{rowKey:x,key:w}=u;this.ctx.database.getReadonly(x,w)||(r.add(x),o.push({rowKey:x,key:w,value:s,row:{}}))}}if(!o.length)return[];if(i)return o;this.ctx.database.batchSetItemValue(o,!0);let a=[];return r.forEach(c=>{a.push(this.ctx.database.getRowDataItemForRowKey(c))}),this.ctx.emit("clearSelectedDataChange",o,a),o}paste(){if(!navigator.clipboard){console.error("current browser does not support the Clipboard API");return}const{ENABLE_PASTER:t}=this.ctx.config;if(this.ctx.selector.enable&&t){const e=this.ctx.selector.yArr[0],i=this.ctx.selector.xArr[0],s=new Set;navigator.clipboard.readText().then(async o=>{let r=ce(o);const a=[i,i+r[0].length-1],c=[e,e+r.length-1],[l,d]=c,[f,u]=a,x=d-this.ctx.maxRowIndex,w=u-this.ctx.maxColIndex;(x>0||w>0)&&this.ctx.emit("onPastedDataOverflow",{maxY:d,maxX:u,minY:l,minX:f,overflowRowCount:x,overflowColCount:w,textArr:r});const m=r.length===1&&r[0].length===1;if(this.ctx.config.ENABLE_MERGE_CELL_LINK&&this.ctx.database.hasMergeCell(a,c)&&!m){const p={code:"ERR_MERGED_CELLS_PASTE",message:"Merged cells cannot span paste data"};this.ctx.hasEvent("error")?this.ctx.emit("error",p):alert(p.message);return}let g=[];for(let p=0;p<=r.length-1;p++){const b=r[p].length;for(let C=0;C<=b-1;C++){const R=p+e,v=C+i,T=r[p][C],S=this.ctx.database.getItemValueForRowIndexAndColIndex(R,v);if(S){const{rowKey:I,key:_}=S;this.ctx.database.getReadonly(I,_)||(s.add(I),g.push({rowKey:I,key:_,value:T,row:{}}))}}}if(this.isCut){const p=this.clearSelectedData(this.ctx.selector.xArrCopy,this.ctx.selector.yArrCopy,!0),b=g.map(C=>`${C.rowKey}-${C.key}`);p.forEach(C=>{b.includes(`${C.rowKey}-${C.key}`)||g.unshift(C)}),this.isCut=!1}if(!g.length)return;const{BEFORE_PASTE_DATA_METHOD:E}=this.ctx.config;if(typeof E=="function"){const p=E,b=g.map(C=>({rowKey:C.rowKey,key:C.key,value:C.value,oldValue:this.ctx.database.getItemValue(C.rowKey,C.key),row:this.ctx.database.getRowDataItemForRowKey(C.rowKey)}));if(g=await p(b,a,c,r),g&&!g.length)return}this.clearCopyLine(),this.ctx.batchSetItemValueByEditor(g,!0);let y=[];s.forEach(p=>{y.push(this.ctx.database.getRowDataItemForRowKey(p))}),this.ctx.emit("pasteChange",g,y)}).catch(o=>{console.error("Failed to get the clipboard content:",o)})}}moveFocus(t){if(this.ctx.editing)return;const{focusCell:e}=this.ctx;if(!e)return;let{colIndex:i=0,rowIndex:s=0}=e;const o=0,r=0,a=this.ctx.maxColIndex,c=this.ctx.maxRowIndex;switch(t){case"LEFT":i>o&&i--;break;case"TOP":s>r&&s--;break;case"RIGHT":i<a&&i++;break;case"BOTTOM":s<c&&s++;break}const l=[i,i],d=[s,s],f=this.getCell(s,i);f&&(f.operation||this.isInSettingRange(f.rowIndex,f.colIndex)&&(this.ctx.setFocusCell(f),this.setSelector(l,d),this.adjustBoundaryPosition(),this.ctx.emit("moveFocus",f),this.ctx.emit("draw")))}stopAdjustPosition(){this.adjustPositionX="",this.adjustPositionY="",this.timerX&&(clearInterval(this.timerX),this.timerX=0),this.timerY&&(clearInterval(this.timerY),this.timerY=0)}isInSettingRange(t,e){const{SELECTOR_AREA_MIN_X:i,SELECTOR_AREA_MAX_X:s,SELECTOR_AREA_MIN_Y:o,SELECTOR_AREA_MAX_Y:r,SELECTOR_AREA_MAX_X_OFFSET:a,SELECTOR_AREA_MAX_Y_OFFSET:c}=this.ctx.config,l=i,d=s||this.ctx.maxColIndex-a,f=o,u=r||this.ctx.maxRowIndex-c;return!(e<l||e>d||t<f||t>u)}startAdjustPosition(t){const{offsetX:e,offsetY:i}=this.ctx.getOffset(t);let s="",o="";if(e<0?s="left":e>this.ctx.body.visibleWidth&&(s="right"),i<this.ctx.header.visibleHeight?o="top":i>this.ctx.header.visibleHeight+this.ctx.body.visibleHeight&&(o="bottom"),s&&this.adjustPositionX!==s){this.adjustPositionX=s;let a=10*(s==="left"?-1:1);this.timerX&&(clearInterval(this.timerX),this.timerX=0),this.timerX=setInterval(()=>{a*=1.5;const{scrollX:c}=this.ctx,l=c+a;(l<0||l>this.ctx.body.width)&&(clearInterval(this.timerX),this.timerX=0),this.ctx.setScrollX(l)},100)}if(o&&this.adjustPositionY!==o){this.adjustPositionY=o;let a=10*(o==="top"?-1:1);this.timerY&&(clearInterval(this.timerY),this.timerY=0),this.timerY=setInterval(()=>{a*=1.5;const{scrollY:c}=this.ctx,l=c+a;(l<0||l>this.ctx.body.height)&&(clearInterval(this.timerY),this.timerY=0),this.ctx.setScrollY(l)},100)}}adjustBoundaryPosition(){const{stageHeight:t,stageWidth:e,focusCell:i,fixedRightWidth:s,fixedLeftWidth:o,header:r,footer:a,body:c,scrollX:l,scrollY:d,config:{SCROLLER_TRACK_SIZE:f,FOOTER_FIXED:u,FOOTER_POSITION:x,ENABLE_MERGE_CELL_LINK:w}}=this.ctx;if(!i)return;w&&this.ctx.onlyMergeCell&&i.updateSpanInfo();const{drawX:m,drawY:g,width:E,height:y,fixed:p}=i,b=o-m+1,C=i.drawX+E-(e-s)+1;let R=r.height-g,v=y;v>c.visibleHeight&&(v=c.visibleHeight);let T=0;u&&(x==="top"?R=r.height+a.height-g:T=a.visibleHeight);const S=g+v-(t-T-f);let I=l,_=d;C>0&&!p?I=Math.floor(l+C):b>0&&!p&&(I=Math.floor(l-b)),R>0?_=Math.floor(d-R):S>0&&(_=Math.floor(d+S)),(Math.abs(l-I)>2||Math.abs(d-_)>2)&&(this.ctx.adjustPositioning=!0,this.ctx.setScroll(I,_),this.ctx.emit("adjustBoundaryPosition",i))}destroy(){this.timerX&&(clearTimeout(this.timerX),this.timerX=0),this.timerY&&(clearTimeout(this.timerY),this.timerY=0)}}class Oe{constructor(t){n(this,"ctx");n(this,"maxColRowCell");this.ctx=t,this.init()}init(){this.ctx.on("mousemove",t=>{if(this.ctx.stageElement.style.cursor==="crosshair"&&(this.ctx.stageElement.style.cursor="default"),this.ctx.editing||!this.ctx.focusCell||!this.maxColRowCell)return;const{offsetX:e,offsetY:i}=this.ctx.getOffset(t),{colIndex:s,rowIndex:o,drawX:r,drawY:a,width:c,height:l}=this.maxColRowCell,d=6,f=s===this.ctx.maxColIndex||o===this.ctx.maxRowIndex?0:2,u=r+c-d+f,x=a+l-d+f;e>u&&i>x&&e<u+d&&i<x+d&&(this.ctx.stageElement.style.cursor="crosshair")}),this.ctx.on("cellMouseenter",t=>{const{xArr:e,yArr:i}=this.ctx.selector,s=e[1],o=i[1],{colIndex:r,rowIndex:a}=t;this.ctx.config.ENABLE_AUTOFILL&&r===s&&a===o&&(this.maxColRowCell=t),this.mouseenter(t)}),this.ctx.on("mousedown",()=>{this.ctx.stageElement.style.cursor==="crosshair"&&this.setMousedown()}),this.ctx.on("mouseup",()=>{this.setMouseUp()})}isAutofillIng(){const{xArr:t,yArr:e}=this.ctx.selector;return!(JSON.stringify(this.ctx.autofill.xArr)===JSON.stringify(t)&&JSON.stringify(this.ctx.autofill.yArr)===JSON.stringify(e))}setMousedown(){this.ctx.autofill.enable=!0,this.ctx.autofillMove=!0}setMouseUp(){if(!this.ctx.autofill.enable)return;this.isAutofillIng()&&this.autofillData(),this.ctx.autofill.enable=!1,this.ctx.autofillMove=!1,this.ctx.autofill.xArr=[-1,-1],this.ctx.autofill.yArr=[-1,-1]}setAutofill(t,e){const{ENABLE_AUTOFILL:i,ENABLE_SELECTOR_SPAN_COL:s,ENABLE_SELECTOR_SPAN_ROW:o}=this.ctx.config;if(!i)return;let r=t,a=e;if(!o){const[c]=a;a=[c,c]}if(!s){const[c]=r;r=[c,c]}if(JSON.stringify(this.ctx.autofill.xArr)!==JSON.stringify(r)||JSON.stringify(this.ctx.autofill.yArr)!==JSON.stringify(a)){const{SELECTOR_AREA_MIN_X:c,SELECTOR_AREA_MAX_X:l,SELECTOR_AREA_MIN_Y:d,SELECTOR_AREA_MAX_Y:f,SELECTOR_AREA_MAX_X_OFFSET:u,SELECTOR_AREA_MAX_Y_OFFSET:x}=this.ctx.config,w=c,m=l||this.ctx.maxColIndex-u,g=d,E=f||this.ctx.maxRowIndex-x;let[y,p]=r,[b,C]=a;if(y<w||b<g)return;r=[Math.max(w,y),Math.min(m,p)],a=[Math.max(g,b),Math.min(E,C)];const{BEFORE_SET_AUTOFILL_METHOD:R}=this.ctx.config;if(typeof R=="function"){const T=R({focusCell:this.ctx.focusCell,xArr:r,yArr:a});if(!T)return;r=T.xArr,a=T.yArr}this.ctx.autofill.xArr=r,this.ctx.autofill.yArr=a,this.ctx.emit("setAutofill",this.ctx.autofill),this.ctx.emit("draw")}}async autofillData(){const t=new Set,e=this.ctx.getSelectedData(),i=new Map;for(let x=0;x<=e.yArr[1]-e.yArr[0];x++)for(let w=0;w<=e.xArr[1]-e.xArr[0];w++){const m=x+e.yArr[0],g=w+e.xArr[0];i.set(`${m}-${g}`,!0)}const{value:s}=e,o=s[0].length,r=s.length,a=this.ctx.autofill.xArr,c=this.ctx.autofill.yArr,l=o===1&&r===1;if(this.ctx.config.ENABLE_MERGE_CELL_LINK&&this.ctx.database.hasMergeCell(a,c)&&!l){const x={code:"ERR_MERGED_CELLS_AUTOFILL",message:"Merged cells cannot span autofill data"};this.ctx.hasEvent("error")?this.ctx.emit("error",x):alert(x.message);return}let d=[];for(let x=0;x<=c[1]-c[0];x++)for(let w=0;w<=a[1]-a[0];w++){const m=w+a[0],g=x+c[0],E=s[x%r][w%o],y=this.ctx.database.getItemValueForRowIndexAndColIndex(g,m),p=`${g}-${m}`;if(y&&!i.has(p)){const{rowKey:b,key:C}=y;this.ctx.database.getReadonly(b,C)||(t.add(b),d.push({rowKey:b,key:C,value:E,row:{}}))}}if(!d.length)return;this.ctx.selector.xArr=this.ctx.autofill.xArr,this.ctx.selector.yArr=this.ctx.autofill.yArr;const{BEFORE_AUTOFILL_DATA_METHOD:f}=this.ctx.config;if(typeof f=="function"){const x=f,w=d.map(m=>({rowKey:m.rowKey,key:m.key,value:m.value,oldValue:this.ctx.database.getItemValue(m.rowKey,m.key),row:this.ctx.database.getRowDataItemForRowKey(m.rowKey)}));if(d=await x(w,a,c),d&&!d.length)return}this.ctx.batchSetItemValueByEditor(d,!0);let u=[];t.forEach(x=>{u.push(this.ctx.database.getRowDataItemForRowKey(x))}),this.ctx.emit("autofillChange",d,u)}mouseenter(t){if(["index","selection","index-selection"].includes(t.type))return;const{selector:e,autofill:i}=this.ctx;if(this.ctx.mousedown&&e.enable&&i.enable){const{rowIndex:s,colIndex:o}=t,r=e.xArr.slice(),a=e.yArr.slice();s>=e.yArr[0]&&s<=e.yArr[1]?o>e.xArr[1]?r.splice(1,1,o):o<e.xArr[0]&&r.splice(0,1,o):s>e.yArr[1]?a.splice(1,1,s):s<e.yArr[0]&&a.splice(0,1,s),this.setAutofill(r,a)}}destroy(){}}const j=Math.min,$=Math.max,it=Math.round,Y=h=>({x:h,y:h}),Le={left:"right",right:"left",bottom:"top",top:"bottom"},Me={start:"end",end:"start"};function ht(h,t,e){return $(h,j(t,e))}function J(h,t){return typeof h=="function"?h(t):h}function z(h){return h.split("-")[0]}function Q(h){return h.split("-")[1]}function Kt(h){return h==="x"?"y":"x"}function gt(h){return h==="y"?"height":"width"}const Ae=new Set(["top","bottom"]);function V(h){return Ae.has(z(h))?"y":"x"}function wt(h){return Kt(V(h))}function He(h,t,e){e===void 0&&(e=!1);const i=Q(h),s=wt(h),o=gt(s);let r=s==="x"?i===(e?"end":"start")?"right":"left":i==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(r=st(r)),[r,st(r)]}function De(h){const t=st(h);return[dt(h),t,dt(t)]}function dt(h){return h.replace(/start|end/g,t=>Me[t])}const vt=["left","right"],_t=["right","left"],Ne=["top","bottom"],ke=["bottom","top"];function Xe(h,t,e){switch(h){case"top":case"bottom":return e?t?_t:vt:t?vt:_t;case"left":case"right":return t?Ne:ke;default:return[]}}function Ye(h,t,e,i){const s=Q(h);let o=Xe(z(h),e==="start",i);return s&&(o=o.map(r=>r+"-"+s),t&&(o=o.concat(o.map(dt)))),o}function st(h){return h.replace(/left|right|bottom|top/g,t=>Le[t])}function Be(h){return{top:0,right:0,bottom:0,left:0,...h}}function Wt(h){return typeof h!="number"?Be(h):{top:h,right:h,bottom:h,left:h}}function ot(h){const{x:t,y:e,width:i,height:s}=h;return{width:i,height:s,top:e,left:t,right:t+i,bottom:e+s,x:t,y:e}}function Tt(h,t,e){let{reference:i,floating:s}=h;const o=V(t),r=wt(t),a=gt(r),c=z(t),l=o==="y",d=i.x+i.width/2-s.width/2,f=i.y+i.height/2-s.height/2,u=i[a]/2-s[a]/2;let x;switch(c){case"top":x={x:d,y:i.y-s.height};break;case"bottom":x={x:d,y:i.y+i.height};break;case"right":x={x:i.x+i.width,y:f};break;case"left":x={x:i.x-s.width,y:f};break;default:x={x:i.x,y:i.y}}switch(Q(t)){case"start":x[r]-=u*(e&&l?-1:1);break;case"end":x[r]+=u*(e&&l?-1:1);break}return x}const Ke=async(h,t,e)=>{const{placement:i="bottom",strategy:s="absolute",middleware:o=[],platform:r}=e,a=o.filter(Boolean),c=await(r.isRTL==null?void 0:r.isRTL(t));let l=await r.getElementRects({reference:h,floating:t,strategy:s}),{x:d,y:f}=Tt(l,i,c),u=i,x={},w=0;for(let m=0;m<a.length;m++){const{name:g,fn:E}=a[m],{x:y,y:p,data:b,reset:C}=await E({x:d,y:f,initialPlacement:i,placement:u,strategy:s,middlewareData:x,rects:l,platform:r,elements:{reference:h,floating:t}});d=y??d,f=p??f,x={...x,[g]:{...x[g],...b}},C&&w<=50&&(w++,typeof C=="object"&&(C.placement&&(u=C.placement),C.rects&&(l=C.rects===!0?await r.getElementRects({reference:h,floating:t,strategy:s}):C.rects),{x:d,y:f}=Tt(l,u,c)),m=-1)}return{x:d,y:f,placement:u,strategy:s,middlewareData:x}};async function Ft(h,t){var e;t===void 0&&(t={});const{x:i,y:s,platform:o,rects:r,elements:a,strategy:c}=h,{boundary:l="clippingAncestors",rootBoundary:d="viewport",elementContext:f="floating",altBoundary:u=!1,padding:x=0}=J(t,h),w=Wt(x),g=a[u?f==="floating"?"reference":"floating":f],E=ot(await o.getClippingRect({element:(e=await(o.isElement==null?void 0:o.isElement(g)))==null||e?g:g.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(a.floating)),boundary:l,rootBoundary:d,strategy:c})),y=f==="floating"?{x:i,y:s,width:r.floating.width,height:r.floating.height}:r.reference,p=await(o.getOffsetParent==null?void 0:o.getOffsetParent(a.floating)),b=await(o.isElement==null?void 0:o.isElement(p))?await(o.getScale==null?void 0:o.getScale(p))||{x:1,y:1}:{x:1,y:1},C=ot(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:y,offsetParent:p,strategy:c}):y);return{top:(E.top-C.top+w.top)/b.y,bottom:(C.bottom-E.bottom+w.bottom)/b.y,left:(E.left-C.left+w.left)/b.x,right:(C.right-E.right+w.right)/b.x}}const We=h=>({name:"arrow",options:h,async fn(t){const{x:e,y:i,placement:s,rects:o,platform:r,elements:a,middlewareData:c}=t,{element:l,padding:d=0}=J(h,t)||{};if(l==null)return{};const f=Wt(d),u={x:e,y:i},x=wt(s),w=gt(x),m=await r.getDimensions(l),g=x==="y",E=g?"top":"left",y=g?"bottom":"right",p=g?"clientHeight":"clientWidth",b=o.reference[w]+o.reference[x]-u[x]-o.floating[w],C=u[x]-o.reference[x],R=await(r.getOffsetParent==null?void 0:r.getOffsetParent(l));let v=R?R[p]:0;(!v||!await(r.isElement==null?void 0:r.isElement(R)))&&(v=a.floating[p]||o.floating[w]);const T=b/2-C/2,S=v/2-m[w]/2-1,I=j(f[E],S),_=j(f[y],S),O=I,A=v-m[w]-_,L=v/2-m[w]/2+T,H=ht(O,L,A),K=!c.arrow&&Q(s)!=null&&L!==H&&o.reference[w]/2-(L<O?I:_)-m[w]/2<0,D=K?L<O?L-O:L-A:0;return{[x]:u[x]+D,data:{[x]:H,centerOffset:L-H-D,...K&&{alignmentOffset:D}},reset:K}}}),Fe=function(h){return h===void 0&&(h={}),{name:"flip",options:h,async fn(t){var e,i;const{placement:s,middlewareData:o,rects:r,initialPlacement:a,platform:c,elements:l}=t,{mainAxis:d=!0,crossAxis:f=!0,fallbackPlacements:u,fallbackStrategy:x="bestFit",fallbackAxisSideDirection:w="none",flipAlignment:m=!0,...g}=J(h,t);if((e=o.arrow)!=null&&e.alignmentOffset)return{};const E=z(s),y=V(a),p=z(a)===a,b=await(c.isRTL==null?void 0:c.isRTL(l.floating)),C=u||(p||!m?[st(a)]:De(a)),R=w!=="none";!u&&R&&C.push(...Ye(a,m,w,b));const v=[a,...C],T=await Ft(t,g),S=[];let I=((i=o.flip)==null?void 0:i.overflows)||[];if(d&&S.push(T[E]),f){const L=He(s,r,b);S.push(T[L[0]],T[L[1]])}if(I=[...I,{placement:s,overflows:S}],!S.every(L=>L<=0)){var _,O;const L=(((_=o.flip)==null?void 0:_.index)||0)+1,H=v[L];if(H&&(!(f==="alignment"?y!==V(H):!1)||I.every(N=>V(N.placement)===y?N.overflows[0]>0:!0)))return{data:{index:L,overflows:I},reset:{placement:H}};let K=(O=I.filter(D=>D.overflows[0]<=0).sort((D,N)=>D.overflows[1]-N.overflows[1])[0])==null?void 0:O.placement;if(!K)switch(x){case"bestFit":{var A;const D=(A=I.filter(N=>{if(R){const F=V(N.placement);return F===y||F==="y"}return!0}).map(N=>[N.placement,N.overflows.filter(F=>F>0).reduce((F,ie)=>F+ie,0)]).sort((N,F)=>N[1]-F[1])[0])==null?void 0:A[0];D&&(K=D);break}case"initialPlacement":K=a;break}if(s!==K)return{reset:{placement:K}}}return{}}}},Ve=new Set(["left","top"]);async function Pe(h,t){const{placement:e,platform:i,elements:s}=h,o=await(i.isRTL==null?void 0:i.isRTL(s.floating)),r=z(e),a=Q(e),c=V(e)==="y",l=Ve.has(r)?-1:1,d=o&&c?-1:1,f=J(t,h);let{mainAxis:u,crossAxis:x,alignmentAxis:w}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof w=="number"&&(x=a==="end"?w*-1:w),c?{x:x*d,y:u*l}:{x:u*l,y:x*d}}const ze=function(h){return h===void 0&&(h=0),{name:"offset",options:h,async fn(t){var e,i;const{x:s,y:o,placement:r,middlewareData:a}=t,c=await Pe(t,h);return r===((e=a.offset)==null?void 0:e.placement)&&(i=a.arrow)!=null&&i.alignmentOffset?{}:{x:s+c.x,y:o+c.y,data:{...c,placement:r}}}}},$e=function(h){return h===void 0&&(h={}),{name:"shift",options:h,async fn(t){const{x:e,y:i,placement:s}=t,{mainAxis:o=!0,crossAxis:r=!1,limiter:a={fn:g=>{let{x:E,y}=g;return{x:E,y}}},...c}=J(h,t),l={x:e,y:i},d=await Ft(t,c),f=V(z(s)),u=Kt(f);let x=l[u],w=l[f];if(o){const g=u==="y"?"top":"left",E=u==="y"?"bottom":"right",y=x+d[g],p=x-d[E];x=ht(y,x,p)}if(r){const g=f==="y"?"top":"left",E=f==="y"?"bottom":"right",y=w+d[g],p=w-d[E];w=ht(y,w,p)}const m=a.fn({...t,[u]:x,[f]:w});return{...m,data:{x:m.x-e,y:m.y-i,enabled:{[u]:o,[f]:r}}}}}};function rt(){return typeof window<"u"}function Z(h){return Vt(h)?(h.nodeName||"").toLowerCase():"#document"}function M(h){var t;return(h==null||(t=h.ownerDocument)==null?void 0:t.defaultView)||window}function W(h){var t;return(t=(Vt(h)?h.ownerDocument:h.document)||window.document)==null?void 0:t.documentElement}function Vt(h){return rt()?h instanceof Node||h instanceof M(h).Node:!1}function k(h){return rt()?h instanceof Element||h instanceof M(h).Element:!1}function B(h){return rt()?h instanceof HTMLElement||h instanceof M(h).HTMLElement:!1}function Ot(h){return!rt()||typeof ShadowRoot>"u"?!1:h instanceof ShadowRoot||h instanceof M(h).ShadowRoot}const Ge=new Set(["inline","contents"]);function tt(h){const{overflow:t,overflowX:e,overflowY:i,display:s}=X(h);return/auto|scroll|overlay|hidden|clip/.test(t+i+e)&&!Ge.has(s)}const Ue=new Set(["table","td","th"]);function Ze(h){return Ue.has(Z(h))}const je=[":popover-open",":modal"];function nt(h){return je.some(t=>{try{return h.matches(t)}catch{return!1}})}const qe=["transform","translate","scale","rotate","perspective"],Je=["transform","translate","scale","rotate","perspective","filter"],Qe=["paint","layout","strict","content"];function mt(h){const t=Et(),e=k(h)?X(h):h;return qe.some(i=>e[i]?e[i]!=="none":!1)||(e.containerType?e.containerType!=="normal":!1)||!t&&(e.backdropFilter?e.backdropFilter!=="none":!1)||!t&&(e.filter?e.filter!=="none":!1)||Je.some(i=>(e.willChange||"").includes(i))||Qe.some(i=>(e.contain||"").includes(i))}function ti(h){let t=P(h);for(;B(t)&&!U(t);){if(mt(t))return t;if(nt(t))return null;t=P(t)}return null}function Et(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const ei=new Set(["html","body","#document"]);function U(h){return ei.has(Z(h))}function X(h){return M(h).getComputedStyle(h)}function at(h){return k(h)?{scrollLeft:h.scrollLeft,scrollTop:h.scrollTop}:{scrollLeft:h.scrollX,scrollTop:h.scrollY}}function P(h){if(Z(h)==="html")return h;const t=h.assignedSlot||h.parentNode||Ot(h)&&h.host||W(h);return Ot(t)?t.host:t}function Pt(h){const t=P(h);return U(t)?h.ownerDocument?h.ownerDocument.body:h.body:B(t)&&tt(t)?t:Pt(t)}function zt(h,t,e){var i;t===void 0&&(t=[]);const s=Pt(h),o=s===((i=h.ownerDocument)==null?void 0:i.body),r=M(s);return o?(ft(r),t.concat(r,r.visualViewport||[],tt(s)?s:[],[])):t.concat(s,zt(s,[]))}function ft(h){return h.parent&&Object.getPrototypeOf(h.parent)?h.frameElement:null}function $t(h){const t=X(h);let e=parseFloat(t.width)||0,i=parseFloat(t.height)||0;const s=B(h),o=s?h.offsetWidth:e,r=s?h.offsetHeight:i,a=it(e)!==o||it(i)!==r;return a&&(e=o,i=r),{width:e,height:i,$:a}}function Gt(h){return k(h)?h:h.contextElement}function G(h){const t=Gt(h);if(!B(t))return Y(1);const e=t.getBoundingClientRect(),{width:i,height:s,$:o}=$t(t);let r=(o?it(e.width):e.width)/i,a=(o?it(e.height):e.height)/s;return(!r||!Number.isFinite(r))&&(r=1),(!a||!Number.isFinite(a))&&(a=1),{x:r,y:a}}const ii=Y(0);function Ut(h){const t=M(h);return!Et()||!t.visualViewport?ii:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function si(h,t,e){return t===void 0&&(t=!1),!e||t&&e!==M(h)?!1:t}function q(h,t,e,i){t===void 0&&(t=!1),e===void 0&&(e=!1);const s=h.getBoundingClientRect(),o=Gt(h);let r=Y(1);t&&(i?k(i)&&(r=G(i)):r=G(h));const a=si(o,e,i)?Ut(o):Y(0);let c=(s.left+a.x)/r.x,l=(s.top+a.y)/r.y,d=s.width/r.x,f=s.height/r.y;if(o){const u=M(o),x=i&&k(i)?M(i):i;let w=u,m=ft(w);for(;m&&i&&x!==w;){const g=G(m),E=m.getBoundingClientRect(),y=X(m),p=E.left+(m.clientLeft+parseFloat(y.paddingLeft))*g.x,b=E.top+(m.clientTop+parseFloat(y.paddingTop))*g.y;c*=g.x,l*=g.y,d*=g.x,f*=g.y,c+=p,l+=b,w=M(m),m=ft(w)}}return ot({width:d,height:f,x:c,y:l})}function pt(h,t){const e=at(h).scrollLeft;return t?t.left+e:q(W(h)).left+e}function Zt(h,t,e){e===void 0&&(e=!1);const i=h.getBoundingClientRect(),s=i.left+t.scrollLeft-(e?0:pt(h,i)),o=i.top+t.scrollTop;return{x:s,y:o}}function oi(h){let{elements:t,rect:e,offsetParent:i,strategy:s}=h;const o=s==="fixed",r=W(i),a=t?nt(t.floating):!1;if(i===r||a&&o)return e;let c={scrollLeft:0,scrollTop:0},l=Y(1);const d=Y(0),f=B(i);if((f||!f&&!o)&&((Z(i)!=="body"||tt(r))&&(c=at(i)),B(i))){const x=q(i);l=G(i),d.x=x.x+i.clientLeft,d.y=x.y+i.clientTop}const u=r&&!f&&!o?Zt(r,c,!0):Y(0);return{width:e.width*l.x,height:e.height*l.y,x:e.x*l.x-c.scrollLeft*l.x+d.x+u.x,y:e.y*l.y-c.scrollTop*l.y+d.y+u.y}}function ri(h){return Array.from(h.getClientRects())}function ni(h){const t=W(h),e=at(h),i=h.ownerDocument.body,s=$(t.scrollWidth,t.clientWidth,i.scrollWidth,i.clientWidth),o=$(t.scrollHeight,t.clientHeight,i.scrollHeight,i.clientHeight);let r=-e.scrollLeft+pt(h);const a=-e.scrollTop;return X(i).direction==="rtl"&&(r+=$(t.clientWidth,i.clientWidth)-s),{width:s,height:o,x:r,y:a}}function ai(h,t){const e=M(h),i=W(h),s=e.visualViewport;let o=i.clientWidth,r=i.clientHeight,a=0,c=0;if(s){o=s.width,r=s.height;const l=Et();(!l||l&&t==="fixed")&&(a=s.offsetLeft,c=s.offsetTop)}return{width:o,height:r,x:a,y:c}}const ci=new Set(["absolute","fixed"]);function li(h,t){const e=q(h,!0,t==="fixed"),i=e.top+h.clientTop,s=e.left+h.clientLeft,o=B(h)?G(h):Y(1),r=h.clientWidth*o.x,a=h.clientHeight*o.y,c=s*o.x,l=i*o.y;return{width:r,height:a,x:c,y:l}}function Lt(h,t,e){let i;if(t==="viewport")i=ai(h,e);else if(t==="document")i=ni(W(h));else if(k(t))i=li(t,e);else{const s=Ut(h);i={x:t.x-s.x,y:t.y-s.y,width:t.width,height:t.height}}return ot(i)}function jt(h,t){const e=P(h);return e===t||!k(e)||U(e)?!1:X(e).position==="fixed"||jt(e,t)}function hi(h,t){const e=t.get(h);if(e)return e;let i=zt(h,[]).filter(a=>k(a)&&Z(a)!=="body"),s=null;const o=X(h).position==="fixed";let r=o?P(h):h;for(;k(r)&&!U(r);){const a=X(r),c=mt(r);!c&&a.position==="fixed"&&(s=null),(o?!c&&!s:!c&&a.position==="static"&&!!s&&ci.has(s.position)||tt(r)&&!c&&jt(h,r))?i=i.filter(d=>d!==r):s=a,r=P(r)}return t.set(h,i),i}function di(h){let{element:t,boundary:e,rootBoundary:i,strategy:s}=h;const r=[...e==="clippingAncestors"?nt(t)?[]:hi(t,this._c):[].concat(e),i],a=r[0],c=r.reduce((l,d)=>{const f=Lt(t,d,s);return l.top=$(f.top,l.top),l.right=j(f.right,l.right),l.bottom=j(f.bottom,l.bottom),l.left=$(f.left,l.left),l},Lt(t,a,s));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}function fi(h){const{width:t,height:e}=$t(h);return{width:t,height:e}}function xi(h,t,e){const i=B(t),s=W(t),o=e==="fixed",r=q(h,!0,o,t);let a={scrollLeft:0,scrollTop:0};const c=Y(0);function l(){c.x=pt(s)}if(i||!i&&!o)if((Z(t)!=="body"||tt(s))&&(a=at(t)),i){const x=q(t,!0,o,t);c.x=x.x+t.clientLeft,c.y=x.y+t.clientTop}else s&&l();o&&!i&&s&&l();const d=s&&!i&&!o?Zt(s,a):Y(0),f=r.left+a.scrollLeft-c.x-d.x,u=r.top+a.scrollTop-c.y-d.y;return{x:f,y:u,width:r.width,height:r.height}}function ct(h){return X(h).position==="static"}function Mt(h,t){if(!B(h)||X(h).position==="fixed")return null;if(t)return t(h);let e=h.offsetParent;return W(h)===e&&(e=e.ownerDocument.body),e}function qt(h,t){const e=M(h);if(nt(h))return e;if(!B(h)){let s=P(h);for(;s&&!U(s);){if(k(s)&&!ct(s))return s;s=P(s)}return e}let i=Mt(h,t);for(;i&&Ze(i)&&ct(i);)i=Mt(i,t);return i&&U(i)&&ct(i)&&!mt(i)?e:i||ti(h)||e}const ui=async function(h){const t=this.getOffsetParent||qt,e=this.getDimensions,i=await e(h.floating);return{reference:xi(h.reference,await t(h.floating),h.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function gi(h){return X(h).direction==="rtl"}const wi={convertOffsetParentRelativeRectToViewportRelativeRect:oi,getDocumentElement:W,getClippingRect:di,getOffsetParent:qt,getElementRects:ui,getClientRects:ri,getDimensions:fi,getScale:G,isElement:k,isRTL:gi},Jt=ze,Qt=$e,te=Fe,mi=We,ee=(h,t,e)=>{const i=new Map,s={platform:wi,...e},o={...s.platform,_c:i};return Ke(h,t,{...s,platform:o})};let Ei=class{constructor(t){n(this,"ctx");n(this,"enable",!1);n(this,"contentEl");n(this,"floatingEl");n(this,"arrowEl");this.ctx=t;const{TOOLTIP_BG_COLOR:e,TOOLTIP_TEXT_COLOR:i,TOOLTIP_ZINDEX:s,TOOLTIP_CUSTOM_STYLE:o,CSS_PREFIX:r}=this.ctx.config;this.contentEl=document.createElement("div"),this.arrowEl=document.createElement("div"),this.floatingEl=document.createElement("div"),this.floatingEl.className=`${r}-tooltip`,this.contentEl.className=`${r}-tooltip-content`,this.arrowEl.className=`${r}-tooltip-arrow`;const a={display:"none",position:"absolute",background:e,color:i,boxSizing:"border-box",zIndex:s,padding:"8px",borderRadius:"4px",fontSize:"12px",...o},c={position:"absolute",width:"10px",height:"10px",background:a.background,backgroundColor:a.backgroundColor,transform:"rotate(45deg)",zIndex:a.zIndex};Object.assign(this.arrowEl.style,c),Object.assign(this.floatingEl.style,a),this.floatingEl.appendChild(this.contentEl),this.floatingEl.appendChild(this.arrowEl),this.ctx.containerElement.appendChild(this.floatingEl),this.init()}init(){this.floatingEl.addEventListener("mouseleave",()=>{this.hide()}),this.ctx.on("mouseout",t=>{this.floatingEl.contains(t.relatedTarget)||this.hide()}),this.ctx.on("onScroll",()=>{this.hide()}),this.ctx.on("startEdit",()=>{this.hide()}),this.ctx.on("visibleCellHoverChange",(t,e)=>{this.floatingEl.contains(e.target)||(t.ellipsis||t.message)&&this.show(t)}),this.ctx.on("visibleCellMouseleave",(t,e)=>{this.floatingEl.contains(e.target)||this.hide()}),this.ctx.on("cellHeaderMouseleave",(t,e)=>{this.floatingEl.contains(e.target)||this.hide()}),this.ctx.on("cellHeaderHoverChange",(t,e)=>{this.floatingEl.contains(e.target)||t.ellipsis&&this.show(t)})}show(t){if(!t.overflowTooltipShow||this.ctx.mousedown)return;this.floatingEl.style.display="block";let e=t.getText();t.message&&(e=t.message);const i=this.ctx.containerElement.getBoundingClientRect();if(!i)return;this.enable=!0,this.contentEl.style.maxWidth=`${t.overflowTooltipMaxWidth||500}px`,this.contentEl.style.minWidth="100px",this.contentEl.style.width="100%",this.contentEl.style.display="inline-block",this.contentEl.style.wordBreak="break-all",this.contentEl.style.lineHeight="1.5",this.contentEl.innerText=e;const s=t.drawX+i.x,o=t.drawY+i.y;ee({getBoundingClientRect(){return{width:t.visibleWidth,height:t.visibleHeight,x:s,y:o,left:s,right:s+t.visibleWidth,top:o,bottom:o+t.visibleHeight}}},this.floatingEl,{placement:t.overflowTooltipPlacement,middleware:[Qt(),te(),Jt(6),mi({element:this.arrowEl})]}).then(a=>{const{x:c,y:l,placement:d,middlewareData:f}=a;if(Object.assign(this.floatingEl.style,{top:`${l}px`,left:`${c}px`}),f.arrow){const u=f.arrow;["left","left-start","left-end"].includes(d)?Object.assign(this.arrowEl.style,{top:`${u.y}px`,bottom:"",left:"",right:"-5px"}):["right","right-start","right-end"].includes(d)?Object.assign(this.arrowEl.style,{top:`${u.y}px`,bottom:"",left:"-5px",right:""}):["bottom","bottom-start","bottom-end"].includes(d)?Object.assign(this.arrowEl.style,{top:"-5px",bottom:"",left:`${u.x}px`,right:""}):["top","top-start","top-end"].includes(d)&&Object.assign(this.arrowEl.style,{top:"",bottom:"-5px",left:`${u.x}px`,right:""})}})}hide(){this.enable&&(this.enable=!1,this.floatingEl.style.display="none")}destroy(){this.contentEl.remove(),this.arrowEl.remove(),this.floatingEl.remove()}};class pi{constructor(t){n(this,"editorEl");n(this,"inputEl");n(this,"enable",!1);n(this,"cellTarget",null);n(this,"selectorArrStr","");n(this,"ctx");n(this,"drawY",0);n(this,"drawX",0);n(this,"cancel",!1);this.ctx=t,this.initTextEditor(),this.init()}init(){this.ctx.on("outsideMousedown",()=>{this.cellTarget&&this.cellTarget.editorType==="text"&&this.clearEditor()}),this.ctx.on("moveFocus",t=>{this.cellTarget=t;const{xArr:e,yArr:i}=this.ctx.selector;this.selectorArrStr=JSON.stringify(e)+JSON.stringify(i)}),this.ctx.on("onScroll",()=>{this.enable&&this.doneEdit()}),this.ctx.on("cellHeaderMousedown",()=>{this.enable&&this.doneEdit(),this.cellTarget=null}),this.ctx.on("hoverIconClick",t=>{t.editorType!=="none"&&this.editCell(t.rowIndex,t.colIndex)}),this.ctx.on("keydown",t=>{if(!this.ctx.isTarget(t)||!this.ctx.focusCell)return;if(t.code==="Escape"&&this.ctx.editing){this.cancel=!0;const{focusCell:c}=this.ctx;c&&(this.ctx.emit("setSelectorCell",c),this.cellTarget=c),this.doneEdit();return}if((t.altKey||t.metaKey)&&t.code==="Enter"&&this.ctx.editing&&this.inputEl){t.preventDefault();const c=this.inputEl.selectionStart,l=this.inputEl.value.substring(0,c),d=this.inputEl.value.substring(c);this.inputEl.value=l+`
|
|
5
|
-
`+d,this.inputEl.selectionStart=this.inputEl.selectionEnd=c+1,this.autoSize();return}if(t.code==="Tab"&&this.ctx.editing){if(t.preventDefault(),this.doneEdit(),t.shiftKey){this.ctx.emit("setMoveFocus","LEFT");return}this.ctx.emit("setMoveFocus","RIGHT");return}if(t.code==="Enter"&&this.ctx.editing){if(t.preventDefault(),this.doneEdit(),t.shiftKey){this.ctx.emit("setMoveFocus","TOP");return}this.ctx.emit("setMoveFocus","BOTTOM");return}if(t.code==="Enter"&&!this.ctx.editing){t.preventDefault(),this.startEdit();return}const e=t.key,i=t.ctrlKey,s=t.altKey,o=t.shiftKey,r=t.metaKey;i||s||o||r||["Enter","Escape","Tab","Backspace","Delete","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown","Insert","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"].includes(e)||this.startEdit(!0)}),this.ctx.on("adjustBoundaryPosition",t=>{this.cellTarget=t;const{xArr:e,yArr:i}=this.ctx.selector;this.selectorArrStr=JSON.stringify(e)+JSON.stringify(i)}),this.ctx.on("cellClick",t=>{if(this.ctx.adjustPositioning||this.ctx.isPointer||!this.isInSelectorRange(t.rowIndex,t.colIndex))return;const{xArr:e,yArr:i}=this.ctx.selector,s=JSON.stringify(e)+JSON.stringify(i);if(this.selectorArrStr===s&&this.cellTarget){if(this.ctx.config.ENABLE_MERGE_CELL_LINK&&this.ctx.onlyMergeCell){this.startEdit();return}if(this.ctx.selectOnlyOne&&t.rowKey===this.cellTarget.rowKey&&t.key===this.cellTarget.key){this.startEdit();return}}if(this.selectorArrStr=s,this.doneEdit(),this.cellTarget=t,this.ctx.config.ENABLE_EDIT_SINGLE_CLICK){if(this.ctx.config.ENABLE_MERGE_CELL_LINK&&this.ctx.onlyMergeCell){this.startEdit();return}this.ctx.selectOnlyOne&&this.startEdit()}})}isInSelectorRange(t,e){const{xArr:i,yArr:s}=this.ctx.selector,[o,r]=i,[a,c]=s;return!(e<o||e>r||t<a||t>c)}initTextEditor(){this.inputEl=document.createElement("textarea"),this.inputEl.setAttribute("rows","1"),this.inputEl.addEventListener("input",this.autoSize.bind(this)),this.inputEl.addEventListener("blur",()=>{this.doneEdit()}),this.editorEl=this.ctx.editorElement,this.inputEl.className="e-virt-table-editor-textarea",this.editorEl.appendChild(this.inputEl),this.ctx.containerElement.appendChild(this.editorEl)}autoSize(){this.inputEl.style.height="auto";let t=this.inputEl.scrollHeight,e=this.ctx.body.visibleHeight;t>e&&(t=e);const{stageHeight:i,footer:s,header:o,config:{SCROLLER_TRACK_SIZE:r}}=this.ctx,a=i-s.height-r;this.editorEl.style.bottom="auto",this.drawY<o.height&&(this.editorEl.style.top=`${o.height-1}px`),this.drawY+t>a&&(this.editorEl.style.left=`${this.drawX-1}px`,this.editorEl.style.top="auto",this.editorEl.style.bottom=`${i-a}px`),this.inputEl.style.height=`${t}px`}startEditByInput(t,e=!1){const i=e?null:t.getValue(),{editorType:s}=t;t.update(),this.ctx.config.ENABLE_MERGE_CELL_LINK&&t.updateSpanInfo();let{height:o,width:r,drawY:a,drawX:c}=t;this.drawX=c,this.drawY=a;const{config:{CELL_PADDING:l},header:d}=this.ctx;let f=this.ctx.body.visibleHeight;if(o>f&&(o=f),this.editorEl.style.display="inline-block",this.editorEl.style.left=`${this.drawX-1}px`,this.editorEl.style.top=`${this.drawY-1}px`,this.editorEl.style.bottom="auto",this.editorEl.style.maxHeight=`${f}px`,s==="text"){this.inputEl.style.display="block",this.inputEl.style.minWidth=`${r-1}px`,this.inputEl.style.minHeight=`${o-1}px`,this.inputEl.style.maxHeight=`${f}px`,this.inputEl.style.width=`${r-1}px`,this.inputEl.style.height="auto",this.inputEl.style.padding=`${l}px`,i!==null&&(this.inputEl.value=i),this.inputEl.focus({preventScroll:!0});const u=this.inputEl.value.length;this.inputEl.setSelectionRange(u,u)}else this.inputEl.style.display="none";(this.inputEl.scrollHeight>o||this.drawY<d.height)&&this.autoSize()}doneEditByInput(){if(this.cellTarget&&this.cellTarget.editorType==="text"){const{rowKey:t,key:e}=this.cellTarget,i=this.cellTarget.getValue(),s=this.inputEl.value;s!==i&&!(s===""&&i===null)&&!this.cancel&&this.ctx.setItemValueByEditor(t,e,s,!0),this.inputEl.value=""}}startEdit(t=!1){this.cancel=!1;const{ENABLE_EDIT_CLICK_SELECTOR:e}=this.ctx.config;if(!e)return;const i=this.ctx.focusCell;if(!i||["index","index-selection","selection"].includes(i.type)||this.enable||(this.ctx.emit("drawView"),!(i.isVerticalVisible()&&i.isHorizontalVisible())))return;const{rowKey:o,key:r,editorType:a}=i;if(a==="none")return;const c=this.ctx.database.getReadonly(o,r);i&&!c&&(this.enable=!0,this.ctx.editing=!0,this.cellTarget=i,this.startEditByInput(this.cellTarget,t),this.ctx.emit("startEdit",this.cellTarget))}editCell(t,e){const i=this.ctx.body.renderRows.find(l=>l.rowIndex===t);if(!i)return;const s=i.cells.find(l=>l.colIndex===e);if(!s)return;this.ctx.emit("setSelectorCell",s);const o=this.ctx.focusCell;if(!o||["index","index-selection","selection"].includes(o.type)||this.enable)return;const{rowKey:r,key:a}=o,c=this.ctx.database.getReadonly(r,a);o&&!c&&(this.enable=!0,this.ctx.editing=!0,this.cellTarget=o,this.startEditByInput(this.cellTarget),this.ctx.emit("startEdit",this.cellTarget))}doneEdit(){this.enable&&(this.doneEditByInput(),this.ctx.emit("doneEdit",this.cellTarget),this.enable=!1,this.ctx.editing=!1,this.ctx.containerElement.focus({preventScroll:!0}),this.editorEl.style.display="none",this.ctx.emit("drawView"))}clearEditor(){this.doneEdit(),this.cellTarget=null,this.selectorArrStr="",this.ctx.clearSelector(),this.ctx.focusCell=void 0,this.ctx.emit("drawView")}destroy(){var t;(t=this.editorEl)==null||t.remove()}}class yi{constructor(t){n(this,"ctx");n(this,"emptyEl");this.ctx=t;const{EMPTY_TEXT:e,EMPTY_CUSTOM_STYLE:i}=this.ctx.config;this.ctx.emptyElement?this.emptyEl=this.ctx.emptyElement:(this.emptyEl=document.createElement("div"),this.emptyEl.innerText=e),this.emptyEl.className="e-virt-table-empty",this.emptyEl.style.display="none",this.ctx.containerElement.appendChild(this.emptyEl),this.ctx.on("emptyChange",({type:s,headerHeight:o,bodyHeight:r,footerHeight:a})=>{const c=o+(r+a)/2,l={display:s==="empty"?"block":"none",position:"absolute",fontSize:"14px",color:"#666",left:"50%",top:`${c}px`,transform:"translate(-50%, -50%)",...i};Object.assign(this.emptyEl.style,l)})}destroy(){this.emptyEl.remove()}}class Ci{constructor(t){n(this,"ctx");this.ctx=t}draw(){const t=this.getContainer();this.ctx.emit("overlayerChange",t)}destroy(){this.ctx.emit("overlayerChange",{style:{},views:[]})}getContainer(){const t=this.getHeader(),e=this.getBody(),i=this.getFooter();let s=[];const{FOOTER_FIXED:o,FOOTER_POSITION:r}=this.ctx.config;return o?r==="top"?s=[t,i,e]:s=[t,e,i]:s=[t,e],{views:s}}getHeader(){const{fixedLeftWidth:t,fixedRightWidth:e,config:{SCROLLER_TRACK_SIZE:i,CSS_PREFIX:s}}=this.ctx,{visibleWidth:o,visibleHeight:r,renderCellHeaders:a}=this.ctx.header;let c=[],l=[],d=[];a.forEach(g=>{g.render&&(g.fixed==="left"?l.push(g):g.fixed==="right"?d.push(g):c.push(g))});const f=e-i,u={key:"left",style:{position:"absolute",top:"0px",left:"0px",overflow:"hidden",width:`${t}px`,height:`${r}px`},cells:l},x={key:"center",style:{position:"absolute",top:"0px",left:`${t}px`,overflow:"hidden",width:`${o-t-f+1}px`,height:`${r}px`},cells:c},w={key:"right",style:{position:"absolute",top:"0px",right:"0px",overflow:"hidden",width:`${f+1}px`,height:`${r}px`},cells:d};return{type:"header",class:`${s}-overlayer-header`,style:{position:"relative",overflow:"hidden",width:`${o}px`,height:`${r}px`},views:[u,x,w]}}getBody(){const t=[],e=[],i=[];let s=this.ctx.body.renderRows;this.ctx.config.FOOTER_FIXED||(s=s.concat(this.ctx.footer.renderRows)),s.forEach(g=>{g.cells.forEach(E=>{E.cellType==="footer"&&(E.render=E.renderFooter),E.render&&(E.fixed==="left"?e.push(E):E.fixed==="right"?i.push(E):t.push(E))})});const{fixedLeftWidth:o,fixedRightWidth:r,config:{SCROLLER_TRACK_SIZE:a,CSS_PREFIX:c}}=this.ctx,{visibleWidth:l,visibleHeight:d}=this.ctx.body,f=r-a,u={key:"left",style:{position:"absolute",top:`${.5}px`,left:`${.5}px`,overflow:"hidden",width:`${o}px`,height:`${d}px`},cells:e},x={key:"center",style:{position:"absolute",top:`${.5}px`,left:`${o-.5}px`,overflow:"hidden",width:`${l-o-f}px`,height:`${d}px`},cells:t},w={key:"right",style:{position:"absolute",top:"0px",right:"0px",overflow:"hidden",width:`${f}px`,height:`${d}px`},cells:i};return{type:"body",class:`${c}-overlayer-body`,style:{position:"relative",overflow:"hidden",width:`${l}px`,height:`${d}px`},views:[u,x,w]}}getFooter(){const t=[],e=[],i=[];this.ctx.footer.renderRows.forEach(m=>{m.cells.forEach(g=>{g.cellType==="footer"&&g.renderFooter&&(g.render=g.renderFooter,g.fixed==="left"?e.push(g):g.fixed==="right"?i.push(g):t.push(g))})});const{fixedLeftWidth:s,fixedRightWidth:o,config:{SCROLLER_TRACK_SIZE:r,CSS_PREFIX:a}}=this.ctx,{visibleWidth:c,visibleHeight:l}=this.ctx.footer,d=o-r,f={key:"left",style:{position:"absolute",top:`${.5}px`,left:`${.5}px`,overflow:"hidden",width:`${s}px`,height:`${l}px`},cells:e},u={key:"center",style:{position:"absolute",top:`${.5}px`,left:`${s-.5}px`,overflow:"hidden",width:`${c-s-d}px`,height:`${l}px`},cells:t},x={key:"right",style:{position:"absolute",top:`${.5}px`,right:`${.5}px`,overflow:"hidden",width:`${d}px`,height:`${l}px`},cells:i};return{type:"footer",class:`${a}-overlayer-footer`,style:{position:"relative",overflow:"hidden",width:`${c}px`,height:`${l}px`},views:[f,u,x]}}}class bi{constructor(t){n(this,"ctx");n(this,"contextMenuEl");n(this,"custom",!1);this.ctx=t,this.ctx.contextMenuElement?(this.custom=!0,this.contextMenuEl=this.ctx.contextMenuElement):(this.custom=!1,this.contextMenuEl=document.createElement("div")),this.createContextMenu(),this.init()}init(){this.ctx.on("cellContextMenuClick",(t,e)=>{if(!this.ctx.config.ENABLE_CONTEXT_MENU)return;e.preventDefault();const{xArr:i,yArr:s}=this.ctx.selector,[o,r]=i,[a,c]=s,{rowIndex:l,colIndex:d}=t;l>=a&&l<=c&&d>=o&&d<=r||this.ctx.emit("setSelectorCell",t,e);const u={getBoundingClientRect:()=>({width:0,height:0,top:e.clientY,left:e.clientX,right:e.clientX,bottom:e.clientY,x:e.clientX,y:e.clientY}),contextElement:document.body};ee(u,this.contextMenuEl,{placement:"right-start",middleware:[Jt(),Qt(),te()]}).then(({x,y:w})=>{this.show(x,w)})}),this.ctx.on("click",this.hide.bind(this)),this.ctx.on("onScroll",this.hide.bind(this)),this.ctx.on("resize",this.hide.bind(this))}createContextMenu(){if(this.contextMenuEl.className="e-virt-table-context-menu",this.contextMenuEl.addEventListener("contextmenu",function(e){e.preventDefault()}),this.ctx.containerElement.appendChild(this.contextMenuEl),this.custom)return;const{CONTEXT_MENU:t}=this.ctx.config;this.createContextMenuItems(t,e=>{switch(e.value){case"copy":this.ctx.emit("contextMenuCopy");break;case"paste":this.ctx.emit("contextMenuPaste");break;case"cut":this.ctx.emit("contextMenuCut");break;case"clearSelected":this.ctx.emit("contextMenuClearSelected");break}this.hide()})}createContextMenuItems(t,e){this.contextMenuEl.replaceChildren(),t.forEach(i=>{const s=document.createElement("div");s.className="e-virt-table-context-menu-item",s.innerText=i.label,i.event?s.onclick=()=>{i.event&&i.event(),e(i)}:s.onclick=()=>e(i),this.contextMenuEl.appendChild(s)})}show(t,e){Object.assign(this.contextMenuEl.style,{left:`${t}px`,top:`${e}px`})}hide(){Object.assign(this.contextMenuEl.style,{left:"-99999px",top:"-99999px"})}updated(){this.createContextMenu()}destroy(){this.contextMenuEl.remove()}}class Ii{constructor(t,e){n(this,"options");n(this,"scroller");n(this,"header");n(this,"body");n(this,"footer");n(this,"selector");n(this,"autofill");n(this,"tooltip");n(this,"editor");n(this,"empty");n(this,"overlayer");n(this,"contextMenu");n(this,"ctx");this.options=e;const{overlayerElement:i,editorElement:s,emptyElement:o,contextMenuElement:r}=this.options,a=this.createContainer(t,i,s,o,r);this.ctx=new Ie(a,this.options),this.header=new Se(this.ctx),this.footer=new _e(this.ctx),this.body=new ve(this.ctx),this.scroller=new Re(this.ctx),this.selector=new Te(this.ctx),this.autofill=new Oe(this.ctx),this.tooltip=new Ei(this.ctx),this.empty=new yi(this.ctx),this.editor=new pi(this.ctx),this.overlayer=new Ci(this.ctx),this.contextMenu=new bi(this.ctx),this.ctx.on("draw",()=>{this.draw()}),this.ctx.on("drawView",()=>{this.draw(!0)}),this.draw()}createContainer(t,e,i,s,o){t.className="e-virt-table-container";const r=document.createElement("div"),a=document.createElement("canvas"),c=e||document.createElement("div");r.className="e-virt-table-stage",t.tabIndex=0,a.className="e-virt-table-canvas",c.className="e-virt-table-overlayer";const l=i||document.createElement("div");l.className="e-virt-table-editor";const d=s,f=o;return r.appendChild(a),r.appendChild(c),t.appendChild(r),{containerElement:t,stageElement:r,canvasElement:a,overlayerElement:c,editorElement:l,emptyElement:d,contextMenuElement:f}}draw(t=!1){requestAnimationFrame(()=>{this.header.update(),this.footer.update(),this.body.update(),this.ctx.paint.clear(),this.body.draw(),this.footer.draw(),this.header.draw(),this.scroller.draw(),t||this.overlayer.draw()})}loadConfig(t){this.ctx.config.init(t),this.ctx.database.init(!1),this.header.init(),this.contextMenu.updated(),this.ctx.emit("draw")}loadColumns(t){this.editor.doneEdit(),this.ctx.database.setColumns(t),this.header.init(),this.ctx.emit("draw")}loadData(t){this.editor.doneEdit(),this.ctx.database.setData(t),this.header.init(),this.tooltip.hide(),this.ctx.emit("draw")}loadFooterData(t){this.ctx.database.setFooterData(t),this.ctx.emit("draw")}setLoading(t){this.ctx.database.setLoading(t)}on(t,e){this.ctx.on(t,e)}emit(t,...e){this.ctx.emit(t,...e)}off(t,e){this.ctx.off(t,e)}filterMethod(t){this.ctx.database.setFilterMethod(t),this.ctx.database.init(!1),this.header.init(),this.ctx.emit("draw")}editCell(t,e){this.editor.editCell(t,e)}setItemValue(t,e,i,s=!0,o=!0,r=!1){this.ctx.database.setItemValue(t,e,i,s,o,r)}batchSetItemValue(t,e=!0){this.ctx.database.batchSetItemValue(t,e)}setItemValueByEditor(t,e,i,s=!0,o=!0){this.ctx.setItemValueByEditor(t,e,i,s,o),this.editor.doneEdit()}clearEditableData(t=null){const e=[0,this.ctx.maxColIndex],i=[0,this.ctx.maxRowIndex];return this.selector.clearSelectedData(e,i,!1,t)}clearEditor(){this.editor.clearEditor()}doLayout(){this.ctx.emit("draw")}getChangedData(){return this.ctx.database.getChangedData()}getChangedRows(){return this.ctx.database.getChangedRows()}setCurrentRowByRowIndex(t){this.ctx.currentCell=this.ctx.database.getVirtualBodyCell(t,0),this.ctx.emit("draw")}setCurrentRow(t){const e=this.ctx.database.getColumnByColIndex(0);e&&(this.ctx.currentCell=this.ctx.database.getVirtualBodyCellByKey(t,e.key),this.ctx.emit("draw"))}getCurrentRow(){const t=this.ctx.currentCell;return t?{row:t.row,rowIndex:t.rowIndex,rowKey:t.rowKey}:void 0}clearValidate(){this.ctx.database.clearValidate(),this.ctx.emit("draw")}validateFields(t,e=!0){return new Promise(async(i,s)=>{let o=[];for(let r=0;r<t.length;r++){const{rowKey:a,key:c}=t[r],l=await this.ctx.database.getValidator(a,c);Array.isArray(l)&&l.length&&o.push(l)}if(o.length){if(s(o),e){const[r]=o;if(Array.isArray(r)&&r.length){const[a]=r,{rowKey:c,key:l}=a;this.scrollToRowkey(c),this.scrollToColkey(l)}}this.ctx.emit("draw")}else i([]),this.ctx.emit("draw")})}async validate(t=!0){return new Promise(async(e,i)=>{try{const s=await this.getValidations();e(s)}catch(s){if(t&&Array.isArray(s)&&s.length){const[o]=s;if(Array.isArray(o)&&o.length){const[r]=o,{rowKey:a,key:c}=r,l=this.ctx.database.getRowForRowKey(a);if(l){const{parentRowKeys:d=[]}=l;d&&d.length&&this.setExpandRowKeys(d,!0)}this.scrollToRowkey(a),this.scrollToColkey(c)}}i(s)}})}setValidations(t){if(t.forEach(e=>{const{rowIndex:i,key:s,message:o}=e;this.ctx.database.setValidationErrorByRowIndex(i,s,o)}),t&&Array.isArray(t)&&t.length){const[e]=t;if(e&&e.rowIndex>=0&&e.key){const{rowIndex:i,key:s}=e;this.scrollToRowIndex(i),this.scrollToColkey(s)}}}getValidations(){return new Promise(async(t,e)=>{const i=this.ctx.database.getAllRowsData(),s=this.ctx.header.leafCellHeaders;let o=[];for(let r=0;r<i.length;r++)for(let a=0;a<s.length;a++){const c=this.ctx.database.getRowKeyByItem(i[r]),d=s[a].key,f=await this.ctx.database.getValidator(c,d);Array.isArray(f)&&f.length&&o.push(f)}o.length?(e(o),this.ctx.emit("draw")):(t([]),this.ctx.emit("draw"))})}hasValidationError(){return this.ctx.database.hasValidationError()}scrollTo(t,e){this.scroller.setScroll(t,e)}scrollXTo(t){this.scroller.setScrollX(t)}scrollToColkey(t){this.scroller.scrollToColkey(t)}scrollToRowkey(t){this.scroller.scrollToRowKey(t)}scrollToColIndex(t){this.scroller.scrollToColIndex(t)}scrollToRowIndex(t){this.scroller.scrollToRowIndex(t)}scrollYTo(t){this.scroller.setScrollY(t)}setExpandRowKeys(t,e=!0){this.ctx.database.setExpandRowKeys(t,e)}getExpandRowKeys(){return this.ctx.database.getExpandRowKeys()}clearSelection(){this.ctx.database.clearSelection(),this.ctx.emit("draw")}toggleRowSelection(t){const e=this.ctx.database.getRowKeyByItem(t);this.ctx.database.toggleRowSelection(e),this.ctx.emit("draw")}setSelectionByRows(t,e=!0){t.forEach(i=>{const s=this.ctx.database.getRowKeyByItem(i);this.ctx.database.setRowSelection(s,e,!1)}),this.ctx.emit("selectionChange",this.getSelectionRows()),this.ctx.emit("draw")}setSelectionByRowKeys(t,e=!0){t.forEach(i=>{this.ctx.database.setRowSelection(i,e,!1)}),this.ctx.emit("selectionChange",this.getSelectionRows()),this.ctx.emit("draw")}toggleAllSelection(){this.ctx.database.toggleAllSelection(),this.ctx.emit("draw")}toggleRowExpand(t,e){this.ctx.database.expandItem(t,e),this.ctx.emit("draw")}toggleExpandAll(t){this.ctx.database.expandAll(t),this.ctx.emit("draw")}getSelectionRows(){return this.ctx.database.getSelectionRows()}getPositionForRowIndex(t){return this.ctx.database.getPositionForRowIndex(t)}getCellValue(t,e){return this.ctx.database.getItemValue(t,e)}getCellValueByIndex(t,e){return this.ctx.database.getItemValueForRowIndexAndColIndex(t,e)}clearSort(){this.ctx.database.clearSort()}contextMenuHide(){this.contextMenu.hide()}getUtils(){return{mergeColCell:de,mergeRowCell:he,getSpanArrByRow:kt,getSpanObjByColumn:Xt}}getColumnByKey(t){var e;return(e=this.ctx.database.getColumnByKey(t))==null?void 0:e.column}destroy(){this.overlayer.destroy(),this.empty.destroy(),this.editor.destroy(),this.tooltip.destroy(),this.selector.destroy(),this.autofill.destroy(),this.contextMenu.destroy(),this.ctx.destroy(),this.ctx.containerElement.remove()}}module.exports=Ii;
|
|
4
|
+
`)}return o}function kt(l,t,e=[]){let i=0;const s=[];return l.forEach((o,r)=>{if(r===0)s.push(1);else{const a=e.reduce((h,d)=>`${h}${o[d]??""}`,"")||o[t],c=e.reduce((h,d)=>`${h}${l[r-1][d]??""}`,"")||l[r-1][t];a===c?(s[i]+=1,s.push(0)):(s.push(1),i=r)}}),s}function Xt(l,t){let e="",i="";const s={};return t.forEach((o,r)=>{r===0?(e=o.key,i=o.key,s[o.key]=1):l[o.key]===l[e]?(s[o.key]=0,s[i]+=1):(s[o.key]=1,e=o.key,i=o.key)}),s}function le(l,t,e=[]){const{visibleRows:i,rowIndex:s,headIndex:o}=l,r=kt(i,t,e);return r[s-o]===0?{rowspan:0,colspan:0,relationRowKeys:e,mergeRow:!0}:{rowspan:r[s-o],colspan:1,relationRowKeys:e,mergeRow:!0}}function de(l,t=[]){const{column:e,row:i,visibleLeafColumns:s}=l,o=s.filter(r=>t.includes(r.key));if(t.includes(e.key)){const r=Xt(i,o);return r[e.key]===0?{rowspan:0,colspan:0,relationColKeys:t,mergeCol:!0}:{rowspan:1,colspan:r[e.key],relationColKeys:t,mergeCol:!0}}}function fe(l,t=document.documentElement){const e=l.startsWith("--")?l:`--${l}`;return getComputedStyle(t).getPropertyValue(e).trim()}function bt(l){if(!l)return new Date(0);if(typeof l=="number")return new Date(l);const t=String(l).trim(),e=new Date(t);if(!isNaN(e.getTime()))return e;const i=[/^(\d{4})-(\d{1,2})-(\d{1,2})$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})$/,/^(\d{4})\.(\d{1,2})\.(\d{1,2})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{1,2})-(\d{1,2})-(\d{4})$/,/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/,/^(\d{4})(\d{2})(\d{2})$/,/^(\d{4})-(\d{1,2})-(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/,/^(\d{4})\/(\d{1,2})\/(\d{1,2})\s+(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/];for(const s of i){const o=t.match(s);if(o){const r=o.slice(1).map(Number);if(s.source.includes("YYYY-MM-DD")||s.source.includes("YYYY/MM/DD")||s.source.includes("YYYY.MM.DD")){const[a,c,h,d=0,f=0,u=0]=r;return new Date(a,c-1,h,d,f,u)}else if(s.source.includes("DD-MM-YYYY")||s.source.includes("DD/MM/YYYY")||s.source.includes("DD.MM.YYYY")){const[a,c,h,d=0,f=0,u=0]=r;return new Date(h,c-1,a,d,f,u)}else if(s.source.includes("MM-DD-YYYY")||s.source.includes("MM/DD/YYYY")||s.source.includes("MM.DD.YYYY")){const[a,c,h,d=0,f=0,u=0]=r;return new Date(h,a-1,c,d,f,u)}else if(s.source.includes("YYYYMMDD")){const[a,c,h]=r;return new Date(a,c-1,h)}}}return new Date(NaN)}function xe(l,t){const e=bt(l),i=bt(t);return isNaN(e.getTime())&&isNaN(i.getTime())?0:isNaN(e.getTime())?-1:isNaN(i.getTime())?1:e.getTime()-i.getTime()}class Yt{constructor(t,e,i,s,o,r,a){n(this,"ctx");n(this,"x",0);n(this,"y",0);n(this,"width",0);n(this,"height",0);n(this,"fixed");n(this,"cellType");this.ctx=t,this.x=e,this.y=i,this.width=s,this.height=o,this.fixed=a,this.cellType=r}isHorizontalVisible(){if(this.fixed)return!0;const{stageWidth:t,fixedLeftWidth:e,scrollX:i,fixedRightWidth:s}=this.ctx,o=t;return!(this.x+this.width-e-i<=0||this.x-i>=o-s)}isVerticalVisible(){const{stageHeight:t,scrollY:e}=this.ctx,i=t;return!(this.y+this.height-e<=0||this.y-e>=i)}getDrawX(){if(this.fixed==="left")return this.x;if(this.fixed==="right"){const{stageWidth:t,config:{SCROLLER_TRACK_SIZE:e}}=this.ctx;return t-(this.ctx.header.width-this.x)-e}return this.x-this.ctx.scrollX}getDrawY(){return this.cellType==="header"?this.y:this.cellType==="footer"&&this.ctx.config.FOOTER_FIXED?this.y:this.y-this.ctx.scrollY}getLeftFixedX(){return this.x-this.ctx.scrollX}getRightFixedX(){}}class xt extends Yt{constructor(e,i,s,o,r,a,c,h,d,f="body"){super(e,o,r,a,c,f,h.fixed);n(this,"formatter");n(this,"formatterFooter");n(this,"hoverIconName","");n(this,"operation",!1);n(this,"align");n(this,"verticalAlign");n(this,"fixed");n(this,"type");n(this,"editorType");n(this,"editorProps");n(this,"cellType");n(this,"level");n(this,"colspan",1);n(this,"rowspan",1);n(this,"mergeRow",!1);n(this,"mergeCol",!1);n(this,"relationRowKeys",[]);n(this,"relationColKeys",[]);n(this,"key");n(this,"column");n(this,"rowIndex");n(this,"colIndex");n(this,"rowKey");n(this,"row");n(this,"value");n(this,"render");n(this,"renderFooter");n(this,"style",{});n(this,"rules",[]);n(this,"message","");n(this,"text","");n(this,"displayText","");n(this,"visibleWidth",0);n(this,"visibleHeight",0);n(this,"isHasChanged",!1);n(this,"drawX",0);n(this,"drawY",0);n(this,"drawCellBgColor","");n(this,"drawCellSkyBgColor","");n(this,"drawTextColor","");n(this,"drawTextX",0);n(this,"drawTextY",0);n(this,"drawTextWidth",0);n(this,"drawTextHeight",0);n(this,"drawTreeImageX",0);n(this,"drawTreeImageY",0);n(this,"drawTreeImageWidth",0);n(this,"drawTreeImageHeight",0);n(this,"drawTreeImageName","");n(this,"drawTreeImageSource");n(this,"drawSelectionImageX",0);n(this,"drawSelectionImageY",0);n(this,"drawSelectionImageWidth",0);n(this,"drawSelectionImageHeight",0);n(this,"drawSelectionImageName","");n(this,"drawSelectionImageSource");n(this,"drawHoverImageX",0);n(this,"drawHoverImageY",0);n(this,"drawHoverImageWidth",0);n(this,"drawHoverImageHeight",0);n(this,"drawHoverImageName","");n(this,"drawHoverImageSource");n(this,"ellipsis",!1);n(this,"rowExpand",!1);n(this,"rowHasChildren",!1);n(this,"overflowTooltipShow",!0);n(this,"selectorCellValueType","value");n(this,"overflowTooltipMaxWidth",500);n(this,"overflowTooltipPlacement","top");this.visibleWidth=this.width,this.visibleHeight=this.height,this.colIndex=s,this.rowIndex=i,this.key=h.key,this.type=h.type||"",this.editorType=h.editorType||"text",this.selectorCellValueType=h.selectorCellValueType||this.ctx.config.SELECTOR_CELL_VALUE_TYPE||"value",this.editorProps=h.editorProps||{},this.cellType=f,this.align=h.align||this.ctx.config.COLUMNS_ALIGN,this.verticalAlign=h.verticalAlign||this.ctx.config.COLUMNS_VERTICAL_ALIGN,this.fixed=h.fixed,this.level=h.level||0,this.operation=h.operation||!1,this.column=h,this.rules=h.rules||[],this.row=d,this.rowKey=this.cellType==="body"?this.ctx.database.getRowKeyForRowIndex(i):`${this.cellType}_${this.rowIndex}`,this.value=this.getValue(),this.render=h.render,this.overflowTooltipShow=h.overflowTooltipShow!==!1,this.overflowTooltipMaxWidth=h.overflowTooltipMaxWidth||500,this.overflowTooltipPlacement=h.overflowTooltipPlacement||"top",this.renderFooter=h.renderFooter,this.hoverIconName=h.hoverIconName,this.formatter=h.formatter,this.formatterFooter=h.formatterFooter,this.update()}setWidthHeight(e,i){this.width=e,this.height=i}getValidationMessage(){const e=this.ctx.database.getValidationError(this.rowKey,this.key);if(Array.isArray(e)&&e.length){const[i]=e;this.message=i.message||""}return this.message}update(){this.drawX=this.getDrawX(),this.drawY=this.getDrawY(),this.drawTextX=this.drawX,this.drawTextY=this.drawY,this.isHasChanged=this.ctx.database.isHasChangedData(this.rowKey,this.key),this.updateSpan(),this.drawTextWidth=this.visibleWidth,this.drawTextHeight=this.visibleHeight,this.updateStyle(),this.updateType(),this.updateHoverIcon(),this.updateSelection(),this.updateTree(),this.updateEditor(),this.updateRender(),this.getValidationMessage(),this.updateContainer(),this.text=this.getText(),this.displayText=this.getDisplayText()}updateSpan(){if(this.cellType==="footer")return;const{SPAN_METHOD:e}=this.ctx.config;if(typeof e=="function"){const i=e,{colspan:s=1,rowspan:o=1,relationRowKeys:r,relationColKeys:a,mergeRow:c=!1,mergeCol:h=!1}=i({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue(),headIndex:this.ctx.body.headIndex,headPosition:this.ctx.database.getPositionForRowIndex(this.ctx.body.headIndex),visibleRows:this.ctx.body.visibleRows,visibleLeafColumns:this.ctx.header.visibleLeafColumns,rows:this.ctx.body.data})||{};Array.isArray(r)&&r.length>0?this.relationRowKeys=r:this.relationRowKeys=[this.key],Array.isArray(a)&&a.length>0?this.relationColKeys=a:this.relationColKeys=[this.key],this.mergeCol=h,this.mergeRow=c,this.colspan=s,this.rowspan=o,this.visibleWidth=this.getWidthByColIndexColSpan(this.colIndex,this.colspan),this.visibleHeight=this.ctx.database.getHeightByRowIndexRowSpan(this.rowIndex,this.rowspan)}}updateSpanInfo(){if(this.mergeRow||this.mergeCol){const e=this.getSpanInfo();this.height=e.height,this.width=e.width,this.drawX=this.getDrawX(),this.drawY=this.getDrawY(),this.drawY-=e.offsetTop,this.drawX-=e.offsetLeft}}updateType(){const{BODY_CELL_TYPE_METHOD:e}=this.ctx.config;if(typeof e=="function"){const s=e({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()});s!==void 0&&(this.type=s)}}updateEditor(){const{BODY_CELL_EDITOR_METHOD:e}=this.ctx.config;if(typeof e=="function"){const s=e({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()});if(s!==void 0){const{type:o,props:r={}}=s;this.editorType=o,this.editorProps=r}}}updateRender(){const{BODY_CELL_RENDER_METHOD:e}=this.ctx.config;if(typeof e=="function"){const s=e({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()});s!==void 0&&(this.render=s)}}validate(){this.ctx.database.getValidator(this.rowKey,this.key).then(()=>{this.ctx.database.setValidationError(this.rowKey,this.key,[]),this.message=""}).catch(e=>{if(Array.isArray(e)&&e.length){const[i]=e;this.message=i.message,this.ctx.database.setValidationError(this.rowKey,this.key,e)}}).finally(()=>{this.ctx.emit("draw")})}updateStyle(){this.style=this.getOverlayerViewsStyle()}updateTree(){const{CELL_PADDING:e=0}=this.ctx.config,{rowKey:i,cellType:s}=this;let o,r=0,a="";if(!(["tree","selection-tree","tree-selection"].includes(this.type)&&s==="body"))return;const c=this.ctx.database.getRowForRowKey(i),{expand:h=!1,hasChildren:d=!1,expandLoading:f=!1,level:u=0}=c||{};this.rowExpand=h,this.rowHasChildren=d;const{TREE_INDENT:x=16,CHECKBOX_SIZE:w,TREE_ICON_SIZE:m}=this.ctx.config;if(r=u*x,f){const R=this.ctx.icons.get("loading");a="loading",o=R}else if(d){const R=this.ctx.icons.get("expand"),v=this.ctx.icons.get("shrink");o=h?v:R,a=h?"shrink":"expand"}let g=m,E=m,y=this.drawX;(this.align==="center"||this.align==="right")&&(y=this.drawX+(this.visibleWidth-g-2*e)/2,this.align="left");let p=y+r+e,b=this.drawY+(this.visibleHeight-E)/2,C=r+this.drawX+g-.5;this.type==="selection-tree"?(p=r+this.drawSelectionImageX+this.drawSelectionImageWidth,C=p+g-e/2):this.type==="tree-selection"?C=p+w+g-e/2:C=p+g-e/2,this.drawTextX=C,this.drawTextWidth=this.drawX+this.visibleWidth-C,!(p+g+e>this.drawX+this.visibleWidth)&&(b+E+e>this.drawY+this.visibleHeight||(this.drawTreeImageX=p,this.drawTreeImageY=b,this.drawTreeImageWidth=g,this.drawTreeImageHeight=E,o?(this.drawTreeImageName=a,this.drawTreeImageSource=o):(this.drawTreeImageName="",this.drawTreeImageSource=void 0)))}drawTreeLine(){const{TREE_LINE:e,TREE_INDENT:i=16,TREE_ICON_SIZE:s=16,TREE_LINE_COLOR:o="#e1e6eb"}=this.ctx.config;if(!e||this.cellType!=="body"||!["tree","selection-tree","tree-selection"].includes(this.type)||this.rowspan===0||this.colspan===0)return;const r=this.ctx.database.getRowForRowKey(this.rowKey)||{},a=r.level??0,c=this.drawTreeImageX+this.drawTreeImageWidth/2,h=this.drawTreeImageY+this.drawTreeImageHeight/2;let d=this.drawTreeImageX-a*i;const f=Array.isArray(r.parentRowKeys)?r.parentRowKeys:[];if(a>0){for(let g=0;g<a-1;g+=1){const E=f[g+1];if(!!(E?this.ctx.database.getRowForRowKey(E)||{}:{}).isLastChild)continue;const b=Math.round(this.drawTreeImageX-(a-g)*i+s/2);this.ctx.paint.drawLine([b,this.drawY,b,this.drawY+this.visibleHeight],{borderColor:o,borderWidth:1,lineDash:[4,4],lineDashOffset:0})}const u=Math.round(this.drawTreeImageX-i+s/2),w=!!r.isLastChild?h:this.drawY+this.visibleHeight;this.ctx.paint.drawLine([u,this.drawY,u,w],{borderColor:o,borderWidth:1,lineDash:[4,4],lineDashOffset:0});const m=Math.round(d+(a-1)*i+s/2);this.ctx.paint.drawLine([m,h,c,h],{borderColor:o,borderWidth:1,lineDash:[4,4],lineDashOffset:0})}if(r.hasChildren&&r.expand){const u=this.drawTreeImageY+this.drawTreeImageHeight,x=u+Math.min(this.visibleHeight/2,Math.max(8,s/2));this.ctx.paint.drawLine([c,u,c,x],{borderColor:o,borderWidth:1,lineDash:[4,4],lineDashOffset:0})}}updateContainer(){const{BODY_BG_COLOR:e,EDIT_BG_COLOR:i,BODY_CELL_STYLE_METHOD:s,FOOTER_CELL_STYLE_METHOD:o,READONLY_TEXT_COLOR:r,BODY_TEXT_COLOR:a,FOOTER_TEXT_COLOR:c,FOOTER_BG_COLOR:h,HIGHLIGHT_SELECTED_ROW:d,HIGHLIGHT_SELECTED_ROW_COLOR:f,HIGHLIGHT_HOVER_ROW:u,HIGHLIGHT_HOVER_ROW_COLOR:x,STRIPE:w,STRIPE_COLOR:m}=this.ctx.config;if(this.cellType==="footer"){let v=h,T=c;if(typeof o=="function"){const S=o,{backgroundColor:I,color:_}=S({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()})||{};I&&(v=I),_&&(T=_)}this.drawCellSkyBgColor="transparent",this.drawCellBgColor=v,this.drawTextColor=T;return}let g="transparent";const E=this.ctx.hoverCell,y=this.ctx.currentCell;let p=this.rowIndex,b=this.rowIndex;if(this.rowspan!==1&&(u||d)){const v=this.getSpanInfo(),{yArr:T}=v;p=T[0],b=T[1]}u&&E&&(E.rowKey===this.rowKey&&(g=x),E.rowIndex>=p&&E.rowIndex<=b&&(g=x)),d&&y&&(y.rowKey===this.rowKey&&(g=f),y.rowIndex>=p&&y.rowIndex<=b&&(g=f)),this.drawCellSkyBgColor=g;let C=e,R=a;if(this.ctx.database.getReadonly(this.rowKey,this.key)||(C=i,R=r),w&&(this.rowIndex%2?C=m:C=e),typeof s=="function"){const v=s,{backgroundColor:T,color:S}=v({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,isHasChanged:this.isHasChanged,value:this.getValue()})||{};T&&(C=T),S&&(R=S)}this.drawCellBgColor=C,this.drawTextColor=R}updateSelection(){const{visibleWidth:e,visibleHeight:i,rowspan:s,colspan:o,cellType:r,type:a,rowIndex:c,rowKey:h}=this;if(s===0||o===0||r==="footer"||!["index-selection","selection","selection-tree","tree-selection"].includes(a))return;const d=this.ctx.database.getRowSelectable(h),{CHECKBOX_SIZE:f=0,CELL_PADDING:u}=this.ctx.config;let x=this.drawX+u;(this.align==="center"||this.align==="right")&&(x=this.drawX+(e-f)/2);let w=x,m=this.drawY+(i-f)/2;if(a!=="selection-tree"){if(a==="tree-selection"){const{TREE_INDENT:y=16,TREE_ICON_SIZE:p}=this.ctx.config,b=this.ctx.database.getRowForRowKey(h),{level:C=0}=b||{},R=C*y;w=x+p+R}}let g=this.ctx.icons.get("checkbox-uncheck"),E="checkbox-uncheck";if(a==="selection-tree"||a==="tree-selection"){const y=this.ctx.database.getTreeSelectionState(h);y.indeterminate&&d?(g=this.ctx.icons.get("checkbox-indeterminate"),E="checkbox-indeterminate"):y.checked&&d?(g=this.ctx.icons.get("checkbox-check"),E="checkbox-check"):!y.checked&&d?(g=this.ctx.icons.get("checkbox-uncheck"),E="checkbox-uncheck"):(g=this.ctx.icons.get("checkbox-disabled"),E="checkbox-disabled")}else{const y=this.ctx.database.getRowSelection(h);y&&d?(g=this.ctx.icons.get("checkbox-check"),E="checkbox-check"):y&&!d?(g=this.ctx.icons.get("checkbox-check-disabled"),E="checkbox-check-disabled"):!y&&d?(g=this.ctx.icons.get("checkbox-uncheck"),E="checkbox-uncheck"):(g=this.ctx.icons.get("checkbox-disabled"),E="checkbox-disabled")}w+f+u>this.drawX+this.visibleWidth||m+f+u>this.drawY+this.visibleHeight||(a==="index-selection"?(this.ctx.hoverCell&&this.ctx.hoverCell.rowIndex===c||["checkbox-disabled","checkbox-check"].includes(E))&&(this.drawSelectionImageX=w,this.drawSelectionImageY=m,this.drawSelectionImageWidth=f,this.drawSelectionImageHeight=f,this.drawSelectionImageName=E,this.drawSelectionImageSource=g):(this.drawSelectionImageX=w,this.drawSelectionImageY=m,this.drawSelectionImageWidth=f,this.drawSelectionImageHeight=f,this.drawSelectionImageName=E,this.drawSelectionImageSource=g))}updateHoverIcon(){if(this.ctx.database.getReadonly(this.rowKey,this.key))return;const{BODY_CELL_HOVER_ICON_METHOD:i,CELL_HOVER_ICON_SIZE:s,CELL_PADDING:o,ENABLE_MERGE_CELL_LINK:r}=this.ctx.config;if(typeof i=="function"){const h=i({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()});h!==void 0&&(this.hoverIconName=h)}const{hoverCell:a}=this.ctx;if(this.hoverIconName&&!this.ctx.editing&&a){let c=0,h=0;if(a.rowKey===this.rowKey&&(c=this.drawX+this.width-s-o,h=this.drawY+(this.height-s)/2),this.rowspan!==1&&r){const f=this.getSpanInfo(),{yArr:u}=f,x=u[0],w=u[1];if(a.rowIndex>=x&&a.rowIndex<=w){const{width:m,height:g,offsetTop:E,offsetLeft:y}=f;c=this.drawX-y+m-s-o,h=this.drawY-E+(g-s)/2}}const d=this.ctx.icons.get(this.hoverIconName);this.drawHoverImageX=c,this.drawHoverImageY=h,this.drawHoverImageWidth=s,this.drawHoverImageHeight=s,this.drawHoverImageName=this.hoverIconName,this.drawHoverImageSource=d}}getSpanInfo(){return this.ctx.database.getSpanInfo(this)}getDisplayText(){return this.cellType==="footer"?this.renderFooter||this.text===null||this.text===void 0?"":this.text:this.rowspan===0||this.colspan===0||this.render||this.type==="index-selection"&&(this.ctx.hoverCell&&this.ctx.hoverCell.rowIndex===this.rowIndex||["checkbox-disabled","checkbox-check"].includes(this.drawSelectionImageName))||this.text===null||this.text===void 0?"":`${this.text}`}getText(){if(this.cellType==="footer")return typeof this.formatterFooter=="function"?this.formatterFooter({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.row[this.key]}):this.row[this.key];if(typeof this.formatter=="function")return this.formatter({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()});const{BODY_CELL_FORMATTER_METHOD:e}=this.ctx.config;return typeof e=="function"?e({row:this.row,rowIndex:this.rowIndex,colIndex:this.colIndex,column:this.column,value:this.getValue()}):["index-selection","index"].includes(this.type)?`${this.rowIndex+1}`:(this.value=this.ctx.database.getItemValue(this.rowKey,this.key),this.value)}getValue(){return this.ctx.database.getItemValue(this.rowKey,this.key)}setValue(e){this.ctx.setItemValueByEditor(this.rowKey,this.key,e)}getOverlayerViewsStyle(){let e=`${this.drawX-this.ctx.fixedLeftWidth}px`,i=`${this.drawY-this.ctx.body.y}px`;return this.fixed==="left"?e=`${this.drawX}px`:this.fixed==="right"&&(e=`${this.drawX-(this.ctx.stageWidth-this.ctx.fixedRightWidth)}px`),this.cellType==="footer"&&this.ctx.config.FOOTER_FIXED&&(i=`${this.drawY-this.ctx.footer.y}px`),{position:"absolute",overflow:"hidden",left:e,top:i,width:`${this.visibleWidth}px`,height:`${this.visibleHeight}px`,pointerEvents:"initial",userSelect:"none"}}drawContainer(){const{paint:e,config:{BORDER_COLOR:i,BORDER:s}}=this.ctx,{drawX:o,drawY:r}=this;e.drawRect(o,r,this.visibleWidth,this.visibleHeight,{borderColor:s?i:"transparent",fillColor:this.drawCellBgColor}),e.drawRect(o,r,this.width,this.height,{borderColor:"transparent",fillColor:this.drawCellSkyBgColor}),s||this.ctx.paint.drawLine([o,r+this.visibleHeight,o+this.visibleWidth,r+this.visibleHeight],{borderColor:i,fillColor:i,borderWidth:1,lineCap:"round",lineJoin:"round"})}drawAutofillPiont(){if(this.cellType==="footer")return;const{SELECT_BORDER_COLOR:e,ENABLE_AUTOFILL:i,ENABLE_SELECTOR:s,AUTOFILL_POINT_BORDER_COLOR:o}=this.ctx.config;if(!s||!i||this.ctx.editing)return;const{xArr:r,yArr:a}=this.ctx.selector,c=r[1],h=a[1],{colIndex:d,rowIndex:f,drawX:u,drawY:x}=this;if(d===c&&f===h){const m=d===this.ctx.maxColIndex||f===this.ctx.maxRowIndex||d===this.ctx.lastCenterColIndex?6:4;this.ctx.paint.drawRect(u+this.width-m,x+this.height-m,6,6,{borderColor:o,fillColor:e})}}draw(){this.drawTreeLine(),this.drawText(),this.drawImage(),this.drawSelector(),this.drawAutofillPiont(),this.drawErrorTip()}getWidthByColIndexColSpan(e,i){if(i===0)return 0;let s=0;for(let o=e;o<e+i;o++){const r=this.ctx.header.leafCellHeaders[o];s+=r.width}return s}drawText(){const{CELL_PADDING:e,BODY_FONT:i,PLACEHOLDER_COLOR:s}=this.ctx.config,{ellipsis:o}=this.ctx.paint.handleEllipsis(this.displayText,this.drawTextWidth,e,i);this.ellipsis=o;const{placeholder:r}=this.column;let a=this.displayText,c=this.drawTextColor;return!this.ctx.database.getReadonly(this.rowKey,this.key)&&r&&["",null,void 0].includes(this.text)&&this.cellType==="body"&&!(this.rowspan===0||this.colspan===0)&&(a=r,c=s),this.ctx.paint.drawText(a,this.drawTextX,this.drawTextY,this.drawTextWidth,this.drawTextHeight,{font:i,padding:e,align:this.align,verticalAlign:this.verticalAlign,color:c})}drawImage(){if(this.drawSelectionImageSource&&this.ctx.paint.drawImage(this.drawSelectionImageSource,this.drawSelectionImageX,this.drawSelectionImageY,this.drawSelectionImageWidth,this.drawSelectionImageHeight),this.drawTreeImageSource&&this.ctx.paint.drawImage(this.drawTreeImageSource,this.drawTreeImageX,this.drawTreeImageY,this.drawTreeImageWidth,this.drawTreeImageHeight),this.drawHoverImageSource){const{CELL_HOVER_ICON_BG_COLOR:e,CELL_HOVER_ICON_BORDER_COLOR:i}=this.ctx.config;this.ctx.paint.drawRect(this.drawHoverImageX-2,this.drawHoverImageY-2,this.drawHoverImageWidth+4,this.drawHoverImageHeight+4,{borderColor:i,radius:4,borderWidth:1,fillColor:e}),this.ctx.paint.drawImage(this.drawHoverImageSource,this.drawHoverImageX,this.drawHoverImageY,this.drawHoverImageWidth,this.drawHoverImageHeight)}}drawSelector(){if(this.cellType==="footer")return;const{ENABLE_SELECTOR:e}=this.ctx.config;if(!e)return;const{xArr:i,yArr:s,xArrCopy:o,yArrCopy:r}=this.ctx.selector;this.drawBorder({xArr:o,yArr:r,borderColor:this.ctx.config.SELECT_BORDER_COLOR||"rgb(82,146,247)",fillColor:"transparent",borderWidth:1,lineDash:[4,4]}),this.drawBorder({xArr:this.ctx.autofill.xArr,yArr:this.ctx.autofill.yArr,borderColor:this.ctx.config.SELECT_BORDER_COLOR||"rgb(82,146,247)",fillColor:"transparent",borderWidth:1,lineDash:[4,4]}),this.drawBorder({xArr:i,yArr:s,borderColor:this.ctx.config.SELECT_BORDER_COLOR||"rgb(82,146,247)",fillColor:"transparent",borderWidth:1});const[a,c]=i,[h,d]=s;!(a===c&&h===d)&&this.colIndex>=a&&this.colIndex<=c&&this.rowIndex>=h&&this.rowIndex<=d&&this.ctx.paint.drawRect(this.drawX,this.drawY,this.width,this.height,{borderColor:"transparent",fillColor:this.ctx.config.SELECT_AREA_COLOR||"rgba(82,146,247,0.1)"}),this.operation&&this.rowIndex>=h&&this.rowIndex<=d&&this.ctx.paint.drawRect(this.drawX,this.drawY,this.visibleWidth,this.visibleHeight,{borderColor:"transparent",fillColor:this.ctx.config.SELECT_ROW_COL_BG_COLOR||"transparent"})}drawErrorTip(){if(this.cellType==="footer"||!this.message||this.rowspan===0||this.colspan===0)return;const{ERROR_TIP_ICON_SIZE:e,ERROR_TIP_COLOR:i}=this.ctx.config,{width:s}=this,o=this.drawX,r=this.drawY,a=[o+s-e-.5,r,o+s-.5,r,o+s-.5,r+e];this.ctx.paint.drawLine(a,{borderColor:i,fillColor:i,borderWidth:1,lineCap:"round",lineJoin:"round"})}drawBorder(e){const{drawX:i,drawY:s,rowIndex:o,colIndex:r,height:a,width:c}=this;let h=i,d=s;const{xArr:f,yArr:u,lineDash:x=[],borderWidth:w=1,borderColor:m,fillColor:g}=e,E=f[0],y=f[1],p=u[0],b=u[1];if(r>=E&&r<=y&&o===p){const C=r===y?1:0,R=r===E?1:0;this.ctx.paint.drawLine([h+R,d+1,h+c-C,d+1],{borderColor:m,fillColor:g,borderWidth:w,lineCap:"round",lineJoin:"round",lineDash:x})}if(r===y&&o>=p&&o<=b){const C=o===p?1:0,R=o===b?1:0;this.ctx.paint.drawLine([h+c-1,d+C,h+c-1,d+a-R],{borderColor:m,fillColor:g,borderWidth:w,lineCap:"round",lineJoin:"round",lineDash:x})}if(r>=E&&r<=y&&o===b){const C=r===y?1:0,R=r===E?1:0;this.ctx.paint.drawLine([h+R,d+a-1,h+c-C,d+a-1],{borderColor:m,fillColor:g,borderWidth:w,lineCap:"round",lineJoin:"round",lineDash:x})}if(r===E&&o>=p&&o<=b){const C=o===b?1:0,R=o===p?1:0;this.ctx.paint.drawLine([h+1,d+R,h+1,d+a-C],{borderColor:m,fillColor:g,borderWidth:w,lineCap:"round",lineJoin:"round",lineDash:x})}}}class ue{constructor(t,e){n(this,"loading",!1);n(this,"ctx");n(this,"data");n(this,"columns");n(this,"footerData",[]);n(this,"rowKeyMap",new Map);n(this,"colIndexKeyMap",new Map);n(this,"headerMap",new Map);n(this,"rowIndexRowKeyMap",new Map);n(this,"rowKeyRowIndexMap",new Map);n(this,"checkboxKeyMap",new Map);n(this,"selectionMap",new Map);n(this,"expandMap",new Map);n(this,"originalDataMap",new Map);n(this,"changedDataMap",new Map);n(this,"validationErrorMap",new Map);n(this,"itemRowKeyMap",new WeakMap);n(this,"bufferData",[]);n(this,"bufferCheckState",{buffer:!1,check:!1,indeterminate:!1,selectable:!0});n(this,"sumHeight",0);n(this,"filterMethod");n(this,"positions",[]);n(this,"sortState",new Map);this.ctx=t;const{data:i=[],columns:s=[],footerData:o=[]}=e;this.data=i,this.footerData=o,this.columns=s,this.setLoading(!0),this.init()}init(t=!0){this.clearBufferData(),this.rowKeyMap.clear(),this.checkboxKeyMap.clear(),this.colIndexKeyMap.clear(),this.rowIndexRowKeyMap.clear(),this.rowKeyRowIndexMap.clear();const e=this.getColumns(),i=et(e);if(this.ctx.hasSelection=i.some(s=>s.type==="selection"),this.ctx.hasTree=i.some(s=>s.type==="tree"),t){this.originalDataMap.clear(),this.changedDataMap.clear(),this.validationErrorMap.clear();const{ROW_KEY:s}=this.ctx.config;s?(this.ctx.hasSelection||this.selectionMap.clear(),this.ctx.hasTree||this.expandMap.clear()):(this.selectionMap.clear(),this.expandMap.clear())}this.itemRowKeyMap=new WeakMap,this.initData(this.data),this.getData(),this.bufferCheckState.buffer=!1}clearBufferData(){this.bufferData=[]}initData(t,e=0,i=[]){const s=t.length;t.forEach((o,r)=>{var y;const{ROW_KEY:a="",DEFAULT_EXPAND_ALL:c,CELL_HEIGHT:h,SELECTABLE_METHOD:d,CHECKBOX_KEY:f}=this.ctx.config,u=o[a],x=u!=null?`${u}`:Mt();this.itemRowKeyMap.set(o,x);const w=o._height||h,m=o._readonly;let g=!0;if(typeof d=="function"&&(g=d),f){const p=o[f];if(this.checkboxKeyMap.has(p)){const b=this.checkboxKeyMap.get(p)||[];b.push(x),this.checkboxKeyMap.set(p,b)}else this.checkboxKeyMap.set(p,[x])}this.selectionMap.set(x,{key:f?o[f]:x,row:o,check:((y=this.selectionMap.get(x))==null?void 0:y.check)||!1});const E=c||this.expandMap.get(x)||o._expand||!1;this.expandMap.set(x,E),this.rowKeyMap.set(x,{readonly:m,index:r,rowIndex:r,level:e,height:w,check:!1,selectable:g,expand:E,expandLazy:!1,hasChildren:o._hasChildren||(Array.isArray(o.children)?o.children.length>0:!1),expandLoading:!1,item:o,parentRowKeys:i,parentRowKey:i[i.length-1]||"",isLastChild:r===s-1}),Array.isArray(o.children)&&o.children.length&&this.initData(o.children,e+1,[...i,x])})}setRowHeight(t,e){const i=this.rowIndexRowKeyMap.get(t);if(i===void 0)return;const s=this.rowKeyMap.get(i);s.height=e,s.item._height=e,this.clearBufferData()}getAllRowsData(){let t=[];const e=i=>{i.forEach(s=>{t.push(s),Array.isArray(s.children)&&e(s.children)})};return e(this.data),t}filterColumns(t){return t.reduce((e,i)=>{if(!(typeof i.hide=="function"?i.hide():i.hide)){const o={...i};o.children&&Array.isArray(o.children)&&(o.children=this.filterColumns(o.children)),e.push(o)}return e},[])}getColumns(){return this.filterColumns(this.columns)}setColumns(t){this.columns=t,this.clearBufferData()}setData(t){this.data=t,this.setLoading(!0),this.init()}getData(){if(this.bufferData.length>0)return{data:this.bufferData,sumHeight:this.sumHeight,positions:this.positions};let t=[],e=0;this.sumHeight=0,this.positions=[];const i=o=>{o.forEach(r=>{t.push(r);const a=this.itemRowKeyMap.get(r),{expand:c,hasChildren:h,height:d}=this.rowKeyMap.get(a),f=this.sumHeight;this.sumHeight+=d,this.rowIndexRowKeyMap.set(e,a),this.rowKeyRowIndexMap.set(a,e),this.positions.push({top:f,height:d,bottom:this.sumHeight}),e+=1,c&&h&&i(r.children)})};this.rowIndexRowKeyMap.clear(),this.rowKeyRowIndexMap.clear();let s=this.data;if(typeof this.filterMethod=="function"&&(s=this.filterMethod(s)),this.sortState.size){const o=Array.from(this.sortState.entries()).sort((r,a)=>r[1].timestamp-a[1].timestamp);s=this.sortDataRecursive(s,o)}return i(s),this.bufferData=t,{data:t,sumHeight:this.sumHeight,positions:this.positions}}setFooterData(t){this.footerData=t}getFooterData(){return this.footerData}setFilterMethod(t){this.filterMethod=t}clearFilterMethod(){this.filterMethod=void 0}getSortState(t){return this.sortState.get(t)||{direction:"none",timestamp:0}}setSortState(t,e){const i=Date.now();this.ctx.config.SORT_STRICTLY&&this.sortState.clear(),e==="none"?this.sortState.delete(t):this.sortState.set(t,{direction:e,timestamp:i}),this.ctx.emit("sortChange",this.sortState),this.clearBufferData(),this.ctx.emit("draw")}clearSort(){this.sortState.clear(),this.ctx.emit("sortChange",this.sortState),this.clearBufferData(),this.ctx.emit("draw")}sortDataRecursive(t,e){let i=[...t];for(const[s,{direction:o}]of e){if(o==="none")continue;const r=this.getColumnByKey(s);!r||!r.column.sortBy||(i=this.applySingleColumnSort(i,s,o,r.column.sortBy))}return i.map(s=>(s.children&&Array.isArray(s.children)&&(s.children=this.sortDataRecursive(s.children,e)),s))}applySingleColumnSort(t,e,i,s){return t.sort((o,r)=>{const a=o[e],c=r[e];let h=0;if(typeof s=="function")h=s(o,r);else if(s==="number"){const d=Number(a)||0,f=Number(c)||0;h=d-f}else if(s==="string"){const d=String(a||""),f=String(c||"");h=d.localeCompare(f)}else s==="date"&&(h=xe(a,c));return i==="asc"?h:-h})}expandItem(t,e=!1){const i=this.rowKeyMap.get(t);i.expand=e,this.expandMap.set(t,e),this.clearBufferData(),this.ctx.emit("draw")}setExpandRowKeys(t,e=!0){this.expandMap.clear(),t.forEach(i=>{const s=this.rowKeyMap.get(i);this.expandMap.set(i,e),s.expand=e}),this.clearBufferData(),this.ctx.emit("draw")}getExpandRowKeys(){let t=[];return this.rowKeyMap.forEach((e,i)=>{e.expand&&t.push(i)}),t}expandAll(t){this.expandMap.clear(),this.rowKeyMap.forEach(e=>{e.expand=t,this.expandMap.set(e.key,t)}),this.clearBufferData(),this.ctx.emit("draw")}expandLoading(t,e=!1){const i=this.rowKeyMap.get(t);i.expandLoading=e,this.clearBufferData(),this.ctx.emit("draw")}setExpandChildren(t,e){const i=this.rowKeyMap.get(t);i.expand=!0,this.expandMap.set(t,!0),i.expandLazy=!0,i.item.children=e,this.initData(i.item.children,i.level+1),this.clearBufferData()}getIsExpandLoading(t){return this.rowKeyMap.get(t).expandLoading}getIsExpandLazy(t){return this.rowKeyMap.get(t).expandLazy}getIsExpand(t){return this.rowKeyMap.get(t).expand}getRowForRowKey(t){return this.rowKeyMap.get(t)}getRowForRowIndex(t){const e=this.getRowKeyForRowIndex(t);return this.rowKeyMap.get(e)}getRowKeyForRowIndex(t){return this.rowIndexRowKeyMap.get(t)||""}getRowKeyByItem(t){return this.itemRowKeyMap.get(t)}getRowIndexForRowKey(t){return this.rowKeyRowIndexMap.get(t)}getItemValueForRowIndexAndColIndex(t,e){if(!(this.rowIndexRowKeyMap.has(t)&&this.colIndexKeyMap.get(e)))return null;const s=this.rowIndexRowKeyMap.get(t),o=this.colIndexKeyMap.get(e);return s===void 0||o===void 0?null:{rowKey:s,key:o,value:this.getItemValue(s,o)}}getItemValue(t,e){const i=this.rowKeyMap.get(t);return i&&i.item?i.item[e]===void 0?null:i.item[e]:null}async batchSetItemValue(t,e=!1,i=!0,s="none"){let o=[],r=i;const a=new Set;let c=[],h=t.map(x=>{const{rowKey:w,key:m}=x;let g=x.value,E=g;const y=this.getRowDataItemForRowKey(w),p=this.getItemValue(w,m),b=this.getVirtualBodyCellByKey(w,m);return(b==null?void 0:b.type)==="number"&&(["",void 0,null].includes(g)?E=null:/^-?\d+(\.\d+)?$/.test(`${g}`)?E=Number(g):(E=p,c.push({...x,value:E,oldValue:p,row:y}))),{...x,value:E,oldValue:p,row:y}});if(h=h.filter(x=>!c.some(w=>x.rowKey===w.rowKey&&x.key===w.key)),c.length){const x={code:"ERR_BATCH_SET_NUMBER_VALUE",message:"Assignment failed, not a numeric type",data:c};this.ctx.emit("error",x)}if(h=h.filter(x=>x.oldValue!==x.value),!h.length)return;const{BEFORE_VALUE_CHANGE_METHOD:d}=this.ctx.config;s==="none"&&typeof d=="function"&&(h=await d(h),r=!1),h.forEach(x=>{const{value:w,rowKey:m,key:g}=x,E=this.getItemValue(m,g);a.add(m),this.setItemValue(m,g,w,!1,!1,!1,r),o.push({rowKey:m,key:g,oldValue:E,newValue:w})});let f=[];a.forEach(x=>{f.push(this.ctx.database.getRowDataItemForRowKey(x))});const u=h.map(({rowKey:x,key:w})=>this.getValidator(x,w));Promise.all(u).then(()=>{this.validationErrorMap.size===0&&this.changedDataMap.size>0&&this.ctx.emit("validateChangedData",this.getChangedData())}),this.ctx.emit("change",h,f),e&&this.ctx.history.pushState({changeList:o,scrollX:this.ctx.scrollX,scrollY:this.ctx.scrollY,type:"multiple"}),this.ctx.emit("draw")}async setItemValue(t,e,i,s=!1,o=!1,r=!1,a=!0){if(!this.rowKeyMap.has(t))return{};const{item:c}=this.rowKeyMap.get(t);let h=c[e],d=i;if(a&&this.ctx.database.getReadonly(t,e))return{oldValue:h,newValue:h};c[e]!==null&&typeof c[e]=="object"&&(h=JSON.parse(JSON.stringify(c[e])));const f=`${t}_${e}`;this.originalDataMap.has(f)||this.originalDataMap.set(f,h);const u=this.originalDataMap.get(f),x=this.getRowDataItemForRowKey(t);if(r){const w=this.getVirtualBodyCellByKey(t,e);if((w==null?void 0:w.type)==="number")if(["",void 0,null].includes(i))d=null;else if(/^-?\d+(\.\d+)?$/.test(`${i}`))d=Number(i);else{d=h;const g={code:"ERR_SET_NUMBER_VALUE",message:"Assignment failed, not a numeric type",data:[{rowKey:t,key:e,value:d,oldValue:h,row:x}]};this.ctx.emit("error",g)}if(d===h)return{oldValue:h,newValue:h};let m=[{rowKey:t,key:e,value:d,oldValue:h,row:x}];this.batchSetItemValue(m,s,!1),this.ctx.emit("editChange",{rowKey:t,key:e,oldValue:h,value:d,originalValue:u,row:x})}else this.changedDataMap.set(f,d),c[e]=d;return this.ctx.hasEvent("iterationChange")&&this.ctx.emit("iterationChange",{rowKey:t,key:e,oldValue:h,value:d,originalValue:this.originalDataMap.get(f),row:x}),o&&this.ctx.emit("draw"),{oldValue:h,newValue:d}}getRowDataItemForRowKey(t){if(!this.rowKeyMap.has(t))return{};const{item:e}=this.rowKeyMap.get(t);return e}setRowSelectionByCheckboxKey(t,e){const{CHECKBOX_KEY:i}=this.ctx.config;if(i){if(!this.rowKeyMap.has(t))return!1;const{item:s}=this.rowKeyMap.get(t),o=s[i];this.checkboxKeyMap.has(o)&&(this.checkboxKeyMap.get(o)||[]).forEach(a=>{const c=this.selectionMap.get(a);c&&(c.check=e)})}}toggleRowSelection(t,e){const i=this.rowKeyMap.get(t),s=this.selectionMap.get(t);if(!s)return;e==="selection-tree"||e==="tree-selection"?this.toggleTreeSelection(t):(s.check=!s.check,this.setRowSelectionByCheckboxKey(t,s.check)),this.ctx.emit("toggleRowSelection",i);const o=this.getSelectionRows();this.ctx.emit("selectionChange",o),this.bufferCheckState.buffer=!1,this.ctx.emit("draw")}toggleTreeSelection(t){const e=this.getTreeSelectionState(t),i=this.ctx.config.TREE_SELECT_MODE;if(i==="auto")e.checked&&!e.indeterminate?(this.setRowSelection(t,!1,!1),this.clearTreeSelectionRecursive(t)):(this.setRowSelection(t,!0,!1),this.selectTreeSelectionRecursive(t));else if(i==="cautious")e.checked&&!e.indeterminate?(this.setRowSelection(t,!1,!1),this.clearTreeSelectionRecursive(t)):(this.setRowSelection(t,!0,!1),this.selectTreeSelectionRecursive(t));else if(i==="strictly"){const s=this.selectionMap.get(t);s&&(s.check=!s.check,this.setRowSelectionByCheckboxKey(t,s.check))}this.ctx.emit("selectionChange",this.getSelectionRows()),this.ctx.emit("draw")}selectTreeSelectionRecursive(t){this.getTreeChildren(t).forEach(i=>{this.setRowSelection(i,!0,!1),this.selectTreeSelectionRecursive(i)})}clearTreeSelectionRecursive(t){this.getTreeChildren(t).forEach(i=>{this.setRowSelection(i,!1,!1),this.clearTreeSelectionRecursive(i)})}updateParentTreeSelection(t){const e=this.getTreeParent(t);if(!e)return;const s=this.getTreeChildren(e).map(h=>this.selectionMap.get(h)),o=s.filter(h=>h==null?void 0:h.check).length,r=s.length;let a=!1;r>0&&(o===0?a=!1:o===r||this.ctx.config.TREE_SELECT_MODE==="auto"?a=!0:this.ctx.config.TREE_SELECT_MODE==="cautious"&&(a=!1));const c=this.selectionMap.get(e);c&&c.check!==a&&(c.check=a,this.setRowSelectionByCheckboxKey(e,a),this.updateParentTreeSelection(e))}setRowSelection(t,e,i=!0){const s=this.selectionMap.get(t);s&&(s.check=e,this.setRowSelectionByCheckboxKey(t,s.check),this.ctx.emit("setRowSelection",e,s.row),(this.ctx.config.TREE_SELECT_MODE==="auto"||this.ctx.config.TREE_SELECT_MODE==="cautious")&&this.updateParentTreeSelection(t),i&&(this.bufferCheckState.buffer=!1,this.ctx.emit("draw")))}getSelectionRows(){let t=[];return this.selectionMap.forEach(e=>{e.check&&t.push(e.row)}),t}getRowSelection(t){const e=this.selectionMap.get(t);return e?e.check:!1}getTreeSelectionState(t){if(!this.getRowForRowKey(t))return{checked:!1,indeterminate:!1};const i=this.selectionMap.get(t),s=(i==null?void 0:i.check)||!1;if(this.getTreeChildren(t).length===0)return{checked:s,indeterminate:!1};let r=!1,a=s;if(this.ctx.config.TREE_SELECT_MODE==="auto"){const h=g=>{const E=this.getTreeChildren(g);let y=[];for(const p of E)y.push(p),y.push(...h(p));return y},f=h(t).map(g=>this.selectionMap.get(g)),u=f.filter(g=>g==null?void 0:g.check).length,x=f.length,w=u>0;r=w&&!(u===x),a=s||w,s&&x>0&&u===0&&(a=!1,r=!1)}else if(this.ctx.config.TREE_SELECT_MODE==="cautious"){const h=g=>{const E=this.getTreeChildren(g);let y=[];for(const p of E)y.push(p),y.push(...h(p));return y},f=h(t).map(g=>this.selectionMap.get(g)),u=f.filter(g=>g==null?void 0:g.check).length,x=f.length,w=u>0,m=u===x;r=w&&!m,a=s||m,s&&x>0&&u===0&&(a=!1,r=!1)}else this.ctx.config.TREE_SELECT_MODE==="strictly"&&(r=!1,a=s);return{checked:a,indeterminate:r}}getTreeChildren(t){const e=this.getRowForRowKey(t);if(!e||!e.item||!e.item.children)return[];const i=[],s=o=>{for(const r of o){const a=this.getRowKeyByItem(r);a&&i.push(a),r.children&&r.children.length>0&&s(r.children)}};return s(e.item.children),i}getTreeParent(t){const e=(i,s)=>{for(const o of i){const r=this.getRowKeyByItem(o);if(o.children)for(const a of o.children){if(this.getRowKeyByItem(a)===s)return r;const h=e(o.children,s);if(h)return h}}return null};return e(this.data,t)}getRowSelectable(t){const{selectable:e,item:i,rowIndex:s}=this.rowKeyMap.get(t);return typeof e=="function"?e({row:i,rowIndex:s}):e}toggleAllSelection(){this.ctx.config.TREE_SELECT_MODE==="auto"||this.ctx.config.TREE_SELECT_MODE==="cautious"?this.rowKeyMap.forEach((i,s)=>{let o=i.selectable;if(typeof o=="function"&&(o=o({row:i.item,rowIndex:i.rowIndex})),o){const r=this.selectionMap.get(s);r&&(r.check=!0,this.setRowSelectionByCheckboxKey(s,!0))}}):this.rowKeyMap.forEach((i,s)=>{let o=i.selectable;typeof o=="function"&&(o=o({row:i.item,rowIndex:i.rowIndex})),o&&this.setRowSelection(s,!0,!1)});const e=this.getSelectionRows();this.ctx.emit("toggleAllSelection",e),this.ctx.emit("selectionChange",e),this.bufferCheckState.buffer=!1,this.ctx.emit("draw")}clearSelection(t=!1){const e=this.ctx.config.TREE_SELECT_MODE==="auto"||this.ctx.config.TREE_SELECT_MODE==="cautious";t?e?this.rowKeyMap.forEach((s,o)=>{const r=this.selectionMap.get(o);r&&(r.check=!1,this.setRowSelectionByCheckboxKey(o,!1))}):this.rowKeyMap.forEach((s,o)=>{this.setRowSelection(o,!1,!1)}):(this.selectionMap.clear(),this.rowKeyMap.forEach((s,o)=>{this.selectionMap.set(o,{check:!1,row:s.item,key:o})}));const i=this.getSelectionRows();this.ctx.emit("clearSelection"),this.ctx.emit("selectionChange",i),this.bufferCheckState.buffer=!1,this.ctx.emit("draw")}getCheckedState(){const{buffer:t,...e}=this.bufferCheckState;if(t)return e;const i=this.rowKeyMap.size;let s=0,o=0;const r=this.selectionMap.size,a=Array.from(this.selectionMap.values()).some(u=>u.check);this.rowKeyMap.forEach((u,x)=>{var m;(m=this.selectionMap.get(x))!=null&&m.check&&(s+=1);let w=u.selectable;typeof w=="function"&&(w=w({row:u.item,rowIndex:u.rowIndex})),w&&(o+=1)});const c=r>i&&s===0&&a,h=o&&o>s&&s>0||c,d=o!==0,f=!!o&&o===s;return this.bufferCheckState={buffer:!0,check:f,indeterminate:h,selectable:d},{check:f,indeterminate:h,selectable:d}}updateColIndexKeyMap(t=[]){this.colIndexKeyMap.clear(),t.forEach(e=>{this.colIndexKeyMap.set(e.colIndex,e.key)})}getColumnByColIndex(t){var i;const e=this.colIndexKeyMap.get(t);if(e&&this.headerMap.has(e))return(i=this.headerMap.get(e))==null?void 0:i.column}getColumnByKey(t){const e=this.headerMap.get(t);if(e)return e}getColIndexForKey(t){var e;if(t&&this.headerMap.has(t))return(e=this.headerMap.get(t))==null?void 0:e.colIndex}getColHeaderByIndex(t){const e=this.colIndexKeyMap.get(t);if(e&&this.headerMap.has(e))return this.headerMap.get(e)}getChangedData(){let t=[];return this.changedDataMap.forEach((e,i)=>{const s=this.originalDataMap.get(i),o=i.split("_")[0],r=i.split("_")[1];s!==e&&t.push({rowKey:o,colKey:r,originalValue:s,row:this.ctx.database.getRowDataItemForRowKey(o),value:e})}),t}getChangedRows(){const t=new Set;this.changedDataMap.forEach((i,s)=>{const o=this.originalDataMap.get(s),r=s.split("_")[0];o!==i&&t.add(r)});let e=[];return t.forEach(i=>{e.push(this.ctx.database.getRowDataItemForRowKey(i))}),e}isHasChangedData(t,e){const i=`${t}_${e}`;if(!this.changedDataMap.has(i))return!1;const s=this.originalDataMap.get(i),o=this.changedDataMap.get(i);return s!==o}getPositionForRowIndex(t){return t<this.positions.length?this.positions[t]:{height:0,top:0,bottom:0}}setHeader(t,e){return t?(this.headerMap.set(t,e),!0):!1}getReadonly(t,e){const{DISABLED:i}=this.ctx.config;if(i)return!0;const s=this.rowKeyMap.get(t),o=this.headerMap.get(e);if(!s||!o)return!0;const r=s.readonly,a=o.readonly,{BODY_CELL_READONLY_METHOD:c}=this.ctx.config;if(typeof c=="function"&&o){const d=c({row:s.item,rowIndex:s.rowIndex,colIndex:o.colIndex,column:o.column,value:this.getItemValue(t,e)});if(d!==void 0)return d}return a||r}clearValidate(){this.validationErrorMap.clear()}hasValidationError(){return this.validationErrorMap.size!==0}getValidator(t,e){return new Promise(i=>{const s=this.rowKeyMap.get(t),o=this.headerMap.get(e),{BODY_CELL_RULES_METHOD:r}=this.ctx.config;if(o===void 0)return i([]);const a=o.column;let c=a.rules;if(typeof r=="function"){const d=r({row:s.item,rowIndex:s.rowIndex,colIndex:o.colIndex,column:a,value:this.getItemValue(t,e)});d&&(c=d)}if(c){const h={row:s.item,rowIndex:s.rowIndex,colIndex:o.colIndex,column:a,key:e,rowKey:t,value:this.getItemValue(t,e),field:e,fieldValue:this.getItemValue(t,e)},f=new re(c).validate(h);this.setValidationError(t,e,f),i(f)}else this.clearValidationError(t,e),i([])})}getHeightByRowIndexRowSpan(t,e){let i=0;for(let s=0;s<e;s++){const o=this.positions[t+s];o&&(i+=o.height)}return i}getSpanInfo(t){const{rowIndex:e,key:i,rowKey:s,row:o,value:r,colIndex:a,relationRowKeys:c,relationColKeys:h,rowspan:d,height:f,width:u,colspan:x,mergeRow:w,mergeCol:m}=t;if(d===1&&x===1)return{xArr:[a,a],yArr:[e,e],rowspan:d,colspan:x,height:f,width:u,offsetTop:0,offsetLeft:0,dataList:[{rowKey:s,key:i,row:o,value:r}]};let g=e,E=e,y=a,p=a,b=[],C=0,R=0,v=0,T=0;if(d!==1&&w){T=u;const S=c.reduce((I,_)=>{const O=this.getItemValue(s,_)??"";return`${I}${O}`},"");for(let I=e-1;I>=0;I--){const _=this.rowIndexRowKeyMap.get(I)||"",O=c.reduce((M,L)=>{const H=this.getItemValue(_,L)??"";return`${M}${H}`},"");if(S===O)g=I;else break}for(let I=e;I<=this.ctx.maxRowIndex;I++){const _=this.rowIndexRowKeyMap.get(I)||"",O=c.reduce((M,L)=>{const H=this.getItemValue(_,L)??"";return`${M}${H}`},"");if(S===O)E=I;else break}for(let I=g;I<e;I++){const{height:_}=this.positions[I];C+=_}for(let I=g;I<=E;I++){const{height:_}=this.positions[I];v+=_;const O=this.rowIndexRowKeyMap.get(I)||"",{item:M}=this.rowKeyMap.get(O),L=this.getItemValue(O,i);b.push({rowKey:O,key:i,value:L,row:M})}}if(x!==1&&m){v=f;for(let S=a-1;S>=0;S--){const I=this.getColumnByColIndex(S);if(!I)break;const _=this.getItemValue(s,i),O=this.getItemValue(s,I.key);if(_===O&&h.includes(I.key))y=S;else break}for(let S=a;S<=this.ctx.maxColIndex;S++){const I=this.getColumnByColIndex(S);if(!I)break;const _=this.getItemValue(s,i),O=this.getItemValue(s,I.key);if(_===O&&h.includes(I.key))p=S;else break}for(let S=y;S<a;S++){const I=this.getColumnByColIndex(S);if(!I)break;R+=I.width||100}for(let S=y;S<=p;S++){const I=this.getColumnByColIndex(S);if(!I)break;T+=I.width||100,b.push({rowKey:s,key:I.key,value:this.getItemValue(s,I.key),row:o})}}return{xArr:[y,p],yArr:[g,E],rowspan:d,colspan:x,height:v,width:T,offsetTop:C,offsetLeft:R,dataList:b}}setLoading(t){this.loading=t,this.ctx.emit("loadingChange",t)}getLoading(){return this.loading}setValidationErrorByRowIndex(t,e,i){const s=this.rowIndexRowKeyMap.get(t),o=`${s}_${e}`,r=this.getRowForRowIndex(t),a=this.getColumnByKey(e);if(!s||!a||!r)return;const c=this.getItemValue(s,e),h=[{key:e,rowKey:s,rowIndex:t,colIndex:a.colIndex,column:a.column,row:r,value:c,message:i,field:e,fieldValue:c}];this.validationErrorMap.set(o,h)}setValidationError(t,e,i){const s=`${t}_${e}`;this.validationErrorMap.set(s,i)}clearValidationError(t,e){const i=`${t}_${e}`;this.validationErrorMap.has(i)&&this.validationErrorMap.delete(i)}getValidationError(t,e){const i=`${t}_${e}`;return this.validationErrorMap.get(i)||[]}getVirtualBodyCell(t,e){const i=this.getColumnByColIndex(e),s=this.getRowForRowIndex(t);return!i||!s?void 0:new xt(this.ctx,t,e,0,0,0,0,i,s.item,"body")}getVirtualBodyCellByKey(t,e){const i=this.getRowIndexForRowKey(t),s=this.getColIndexForKey(e);if(!(i===void 0||s===void 0))return this.getVirtualBodyCell(i,s)}hasMergeCell(t,e){let i=!1;for(let s=e[0];s<=e[1];s++)for(let o=t[0];o<=t[1];o++){const r=this.getVirtualBodyCell(s,o);if(r&&(r.rowspan!==1||r.colspan!==1)){i=!0;break}}return i}calculateMaxTreeDepth(t,e=0){let i=e;return t.forEach(s=>{if(Array.isArray(s.children)&&s.children.length>0){const o=this.calculateMaxTreeDepth(s.children,e+1);i=Math.max(i,o)}}),i}}class ge{constructor(t){n(this,"ctx");n(this,"history",[]);n(this,"historyIndex",-1);this.ctx=t,this.init()}init(){this.ctx.on("keydown",t=>{if(!this.ctx.editing){if(t.ctrlKey&&!t.shiftKey&&t.code==="KeyZ"||t.metaKey&&!t.shiftKey&&t.code==="KeyZ"){t.preventDefault(),this.ctx.clearSelector(),this.ctx.clearAutofill(),this.backState();return}if(t.ctrlKey&&t.code==="KeyY"||t.ctrlKey&&t.shiftKey&&t.code==="KeyZ"||t.metaKey&&t.shiftKey&&t.code==="KeyZ"){t.preventDefault(),this.ctx.clearSelector(),this.ctx.clearAutofill(),this.forwardState();return}}})}pushState(t){const{HISTORY_NUM:e=0,ENABLE_HISTORY:i}=this.ctx.config;i&&(this.history.push(t),this.history.length>e&&this.history.splice(0,1),this.historyIndex=this.history.length-1)}backState(){if(this.historyIndex>=0){const{changeList:t,scrollX:e,scrollY:i}=this.history[this.historyIndex],s=t.map(o=>({rowKey:o.rowKey,key:o.key,value:o.oldValue,row:{}}));this.ctx.setScroll(e,i),this.ctx.database.batchSetItemValue(s,!1,!1,"back"),this.historyIndex-=1}}forwardState(){if(this.historyIndex<this.history.length-1){this.historyIndex+=1;const{changeList:t}=this.history[this.historyIndex],e=t.map(i=>({rowKey:i.rowKey,key:i.key,value:i.newValue,row:{}}));this.ctx.database.batchSetItemValue(e,!1,!1,"forward")}}clear(){this.history=[],this.historyIndex=-1}}class we{constructor(t){n(this,"eventTasks",new Map);n(this,"ctx");this.ctx=t,this.init()}init(){this.bind(window,"resize",this.handleResize.bind(this)),this.bind(window,"mouseup",this.handleMouseUp.bind(this)),this.bind(window,"mousemove",this.handleMousemove.bind(this)),this.bind(window,"blur",this.handleOutsideMousedown.bind(this)),this.bind(window,"mousedown",this.handleOutsideMousedown.bind(this)),this.bind(this.ctx.stageElement,"click",this.handleClick.bind(this)),this.bind(window,"keydown",this.handleKeydown.bind(this)),this.bind(this.ctx.stageElement,"wheel",this.handleWheel.bind(this),{passive:!1}),this.bind(this.ctx.stageElement,"touchstart",this.handleTouchstart.bind(this),{passive:!1}),this.bind(this.ctx.stageElement,"touchend",this.handleTouchend.bind(this)),this.bind(this.ctx.stageElement,"touchmove",this.handleTouchmove.bind(this),{passive:!1}),this.bind(this.ctx.stageElement,"contextmenu",this.handleContextMenu.bind(this)),this.bind(this.ctx.stageElement,"mousedown",this.handleMouseDown.bind(this)),this.bind(this.ctx.stageElement,"dblclick",this.handleDblclick.bind(this)),this.bind(this.ctx.stageElement,"mouseover",this.handleMouseover.bind(this)),this.bind(this.ctx.stageElement,"mouseout",this.handleMouseout.bind(this)),document.addEventListener("selectionchange",this.selectionchange.bind(this))}selectionchange(){this.ctx.domSelectionStr="";const t=window.getSelection();t&&t.toString()&&(this.ctx.domSelectionStr=t.toString())}clearDomSelection(){const t=window.getSelection();t&&!t.isCollapsed&&t.removeAllRanges()}destroy(){this.eventTasks.forEach((t,e)=>{this.unbind(window,e,t)}),document.removeEventListener("selectionchange",this.selectionchange.bind(this)),this.eventTasks.clear()}handleResize(t){this.ctx.emit("resetHeader",t),this.ctx.emit("resize",t)}handleMouseDown(t){this.clearDomSelection(),t.button===0&&(this.ctx.mousedown=!0),this.ctx.containerElement.focus({preventScroll:!0}),this.ctx.emit("mousedown",t)}handleMousemove(t){this.ctx.emit("mousemove",t)}handleMouseUp(t){t.button===0&&(this.ctx.mousedown=!1),this.ctx.emit("mouseup",t)}handleClick(t){this.ctx.emit("click",t)}handleKeydown(t){const{ENABLE_KEYBOARD:e}=this.ctx.config;e&&this.ctx.isTarget(t)&&this.ctx.emit("keydown",t)}handleWheel(t){this.ctx.emit("wheel",t)}handleTouchstart(t){this.ctx.emit("touchstart",t)}handleTouchend(t){this.ctx.emit("touchend",t)}handleTouchmove(t){this.ctx.emit("touchmove",t)}handleContextMenu(t){t.preventDefault(),this.ctx.emit("contextMenu",t)}handleMouseover(t){this.ctx.isMouseoverTargetContainer=!0,this.ctx.emit("mouseover",t)}handleMouseout(t){this.ctx.isMouseoverTargetContainer=!1,this.ctx.emit("mouseout",t)}handleDblclick(t){this.ctx.emit("dblclick",t)}handleOutsideMousedown(t){this.ctx.selector.enable&&(t.target instanceof Window||t.target instanceof Node&&!this.ctx.containerElement.contains(t.target))&&this.ctx.emit("outsideMousedown",t)}bind(t,e,i,s){t.addEventListener(e,i,s),this.eventTasks.set(e,i)}unbind(t,e,i){t.removeEventListener(e,i),this.eventTasks.delete(e)}}class me{constructor(){n(this,"events",new Map)}has(t){return this.events.has(t)}on(t,e){const i=this.events.get(t)||[];i.push(e),this.events.set(t,i)}once(t,e){const i=(...s)=>{e(...s),this.off(t,i)};return this.on(t,i),this}off(t,e){const i=this.events.get(t);if(i){const s=i.indexOf(e);s>=0&&(i.splice(s,1),i.length===0?this.events.delete(t):this.events.set(t,i))}}emit(t,...e){const i=this.events.get(t);i&&i.forEach(s=>{s(...e)})}destroy(){this.events.clear()}}class Ee{constructor(t){n(this,"ctx");const e=t.getContext("2d");if(!e)throw new Error("canvas context not found");this.ctx=e}scale(t){this.ctx.setTransform(1,0,0,1,0,0),this.ctx.scale(t,t)}measureTextWidth(t,e){return this.ctx.font=e,this.ctx.measureText(t).width}save(){this.ctx.save()}restore(){this.ctx.restore()}translate(t,e){this.ctx.translate(t,e)}setCursor(t="default"){this.ctx.canvas.style.cursor=t}clear(t=0,e=0,i,s){this.ctx.clearRect(t,e,i||this.ctx.canvas.width,s||this.ctx.canvas.height)}drawShadow(t,e,i,s,o){const{fillColor:r,side:a,shadowWidth:c,colorStart:h,colorEnd:d}=o;this.ctx.save(),r&&(this.ctx.fillStyle=r,this.ctx.fillRect(t,e,i,s));let f;switch(a){case"left":f=this.ctx.createLinearGradient(t-c,e,t,e),f.addColorStop(0,h),f.addColorStop(1,d),this.ctx.fillStyle=f,this.ctx.fillRect(t-c,e,c,s);break;case"right":f=this.ctx.createLinearGradient(t+i,e,t+i+c,e),f.addColorStop(0,h),f.addColorStop(1,d),this.ctx.fillStyle=f,this.ctx.fillRect(t+i,e,c,s);break;case"top":f=this.ctx.createLinearGradient(t,e-c,t,e),f.addColorStop(0,h),f.addColorStop(1,d),this.ctx.fillStyle=f,this.ctx.fillRect(t,e-c,i,c);break;case"bottom":f=this.ctx.createLinearGradient(t,e+s,t,e+s+c),f.addColorStop(0,h),f.addColorStop(1,d),this.ctx.fillStyle=f,this.ctx.fillRect(t,e+s,i,c);break;default:console.error("Invalid side specified for shadow");break}}drawLine(t,e){if(t.length<4||t.length%2!==0)throw new Error("A valid array of points is required to draw a line");this.ctx.save();const{borderColor:i="black",borderWidth:s=1}=e;this.ctx.beginPath(),this.ctx.moveTo(t[0]-.5,t[1]-.5);for(let o=2;o<t.length;o+=2)this.ctx.lineTo(t[o]-.5,t[o+1]-.5);this.ctx.strokeStyle=i,this.ctx.lineWidth=s,e.lineDash&&(this.ctx.lineDashOffset=e.lineDashOffset??0,this.ctx.setLineDash(e.lineDash)),e.fillColor&&(this.ctx.fillStyle=e.fillColor,this.ctx.fill()),e.borderColor&&(this.ctx.strokeStyle=e.borderColor),this.ctx.stroke(),this.ctx.closePath(),this.ctx.restore()}drawImage(t,e,i,s,o){this.ctx.save(),this.ctx.drawImage(t,e,i,s,o),this.ctx.restore()}drawRect(t,e,i,s,{borderWidth:o=1,borderColor:r,fillColor:a,radius:c=0}={}){if(this.ctx.save(),this.ctx.beginPath(),a!==void 0&&(this.ctx.fillStyle=a),r!==void 0&&(this.ctx.lineWidth=o,this.ctx.strokeStyle=r),c===0)this.ctx.rect(t-.5,e-.5,i,s);else{const[h,d,f,u]=typeof c=="number"?[c,c,c,c]:c;this.ctx.moveTo(t+h,e),this.ctx.arcTo(t+i,e,t+i,e+d,d),this.ctx.arcTo(t+i,e+s,t+i-f,e+s,f),this.ctx.arcTo(t,e+s,t,e+s-u,u),this.ctx.arcTo(t,e,t+h,e,h)}a!==void 0&&this.ctx.fill(),r!==void 0&&this.ctx.stroke(),this.ctx.restore()}drawText(t="",e,i,s,o,r={}){this.ctx.save();const{font:a="12px Arial",align:c="center",color:h="#495060",padding:d=0,verticalAlign:f="middle"}=r;this.ctx.font=a,this.ctx.fillStyle=h,this.ctx.textBaseline=f,this.ctx.textAlign=c;let u=0;f==="top"?u=i+d:f==="bottom"?u=i+o-d:u=i+(o+1)/2;let x=0;c==="left"?x=e+d:c==="right"?x=e+s-d:x=e+s/2;const{_text:w,ellipsis:m}=this.handleEllipsis(t,s,d,a);return this.ctx.fillText(w,x,u),this.ctx.restore(),m}handleEllipsis(t,e,i=0,s="12px Arial"){let o=!1,r=t;if(this.ctx.font=s,t==null||t==="")return{_text:"",ellipsis:o};const a=this.ctx.measureText("...").width;if(e<=a+i*2)return{_text:"",ellipsis:!0};const c=this.ctx.measureText(t).width;if(c&&c+a>=e-i*2){o=!0;let h=0;for(let d=0;d<t.length;d++)if(h+=this.ctx.measureText(t[d]).width,h>=e-i*2-a){r=t.slice(0,d)+"...";break}}return{_text:r,ellipsis:o}}}class It{constructor(t){n(this,"_config",{});n(this,"CSS_PREFIX","e-virt-table");n(this,"ICONS",[]);n(this,"ROW_KEY","");n(this,"DISABLED",!1);n(this,"HEADER_FONT","12px normal Arial");n(this,"BODY_FONT","12px normal Arial");n(this,"BORDER",!0);n(this,"STRIPE",!1);n(this,"STRIPE_COLOR","#fafafa");n(this,"BORDER_COLOR","#e1e6eb");n(this,"WIDTH",0);n(this,"RESIZE_MIN_WIDTH",40);n(this,"HEIGHT",0);n(this,"PLACEHOLDER_COLOR","#CDD0DC");n(this,"EMPTY_BODY_HEIGHT",120);n(this,"EMPTY_CUSTOM_STYLE",{});n(this,"EMPTY_TEXT","暂无数据");n(this,"MAX_HEIGHT",1e3);n(this,"BORDER_RADIUS",8);n(this,"ENABLE_OFFSET_HEIGHT",!1);n(this,"OFFSET_HEIGHT",0);n(this,"HEADER_HEIGHT",36);n(this,"ENABLE_HEADER_STICKY",!1);n(this,"HEADER_BG_COLOR","#F8FAFF");n(this,"BODY_BG_COLOR","#FFF");n(this,"HEADER_TEXT_COLOR","#1D2129");n(this,"BODY_TEXT_COLOR","#4E5969");n(this,"FOOTER_TEXT_COLOR","#4E5969");n(this,"LOADING_ICON_SVG","");n(this,"LOADING_ICON_COLOR","#4E5969");n(this,"EXPAND_ICON_SVG","");n(this,"SHRINK_ICON_SVG","");n(this,"EXPAND_ICON_COLOR","#4E5969");n(this,"SHRINK_ICON_COLOR","#4E5969");n(this,"ERROR_TIP_ICON_COLOR","red");n(this,"ERROR_TIP_ICON_SIZE",6);n(this,"COLUMNS_ALIGN","left");n(this,"COLUMNS_VERTICAL_ALIGN","middle");n(this,"EXPAND_LAZY",!0);n(this,"DEFAULT_EXPAND_ALL",!1);n(this,"CELL_WIDTH",100);n(this,"CELL_HEIGHT",36);n(this,"CELL_PADDING",8);n(this,"CELL_HOVER_ICON_SIZE",14);n(this,"CELL_HOVER_ICON_BG_COLOR","#fff");n(this,"CELL_HOVER_ICON_BORDER_COLOR","#DDE0EA");n(this,"SCROLLER_TRACK_SIZE",14);n(this,"SCROLLER_SIZE",8);n(this,"SCROLLER_COLOR","#dee0e3");n(this,"SCROLLER_TRACK_COLOR","#fff");n(this,"SCROLLER_FOCUS_COLOR","#bbbec4");n(this,"SELECT_BORDER_COLOR","rgb(82,146,247)");n(this,"SELECT_AREA_COLOR","rgba(82,146,247,0.1)");n(this,"SELECT_ROW_COL_BG_COLOR","transparent");n(this,"AUTOFILL_POINT_BORDER_COLOR","#fff");n(this,"EDIT_BG_COLOR","#fcf6ed");n(this,"CHECKBOX_KEY","");n(this,"CHECKBOX_COLOR","rgb(82,146,247)");n(this,"CHECKBOX_SIZE",20);n(this,"CHECKBOX_DISABLED_SVG","");n(this,"CHECKBOX_CHECK_SVG","");n(this,"CHECKBOX_UNCHECK_SVG","");n(this,"CHECKBOX_INDETERMINATE_SVG","");n(this,"SORT_STRICTLY",!0);n(this,"SORT_ASC_ICON_SVG","");n(this,"SORT_DESC_ICON_SVG","");n(this,"SORTABLE_ICON_SVG","");n(this,"SORT_ICON_COLOR","rgb(82,146,247)");n(this,"READONLY_COLOR","#fff");n(this,"READONLY_TEXT_COLOR","#4E5969");n(this,"ERROR_TIP_COLOR","#ED3F14");n(this,"FOOTER_BG_COLOR","#fafafa");n(this,"FOOTER_FIXED",!0);n(this,"FOOTER_POSITION","bottom");n(this,"CELL_FOOTER_HEIGHT",36);n(this,"ENABLE_SELECTOR",!0);n(this,"TREE_SELECT_MODE","auto");n(this,"TREE_INDENT",20);n(this,"TREE_ICON_SIZE",20);n(this,"TREE_LINE",!1);n(this,"TREE_LINE_COLOR","#e1e6eb");n(this,"ENABLE_EDIT_SINGLE_CLICK",!1);n(this,"ENABLE_EDIT_CLICK_SELECTOR",!0);n(this,"SELECTOR_AREA_MIN_X",0);n(this,"SELECTOR_AREA_MAX_X_OFFSET",0);n(this,"SELECTOR_AREA_MAX_X",0);n(this,"SELECTOR_AREA_MIN_Y",0);n(this,"SELECTOR_AREA_MAX_Y",0);n(this,"SELECTOR_AREA_MAX_Y_OFFSET",0);n(this,"SELECTOR_CELL_VALUE_TYPE","value");n(this,"ENABLE_AUTO_THEME",!0);n(this,"ENABLE_SELECTOR_SINGLE",!1);n(this,"ENABLE_SELECTOR_SPAN_COL",!0);n(this,"ENABLE_SELECTOR_SPAN_ROW",!0);n(this,"ENABLE_SELECTOR_ALL_ROWS",!0);n(this,"ENABLE_SELECTOR_ALL_COLS",!0);n(this,"ENABLE_MERGE_CELL_LINK",!1);n(this,"ENABLE_AUTOFILL",!1);n(this,"ENABLE_CONTEXT_MENU",!1);n(this,"ENABLE_COPY",!0);n(this,"ENABLE_PASTER",!0);n(this,"ENABLE_RESIZE_ROW",!0);n(this,"ENABLE_RESIZE_COLUMN",!0);n(this,"RESIZE_ROW_LINE_COLOR","#e1e6eb");n(this,"RESIZE_COLUMN_LINE_COLOR","#e1e6eb");n(this,"RESIZE_ROW_MIN_HEIGHT",36);n(this,"RESIZE_COLUMN_MIN_WIDTH",40);n(this,"ENABLE_KEYBOARD",!0);n(this,"ENABLE_HISTORY",!1);n(this,"ENABLE_VALIDATOR_IMMEDIATE",!0);n(this,"HISTORY_NUM",50);n(this,"HIGHLIGHT_HOVER_ROW",!1);n(this,"HIGHLIGHT_HOVER_ROW_COLOR","rgba(186,203,231,0.1)");n(this,"HIGHLIGHT_SELECTED_ROW",!1);n(this,"HIGHLIGHT_SELECTED_ROW_COLOR","rgba(82,146,247,0.1)");n(this,"TOOLTIP_BG_COLOR","#303133");n(this,"TOOLTIP_TEXT_COLOR","#fff");n(this,"TOOLTIP_ZINDEX",3e3);n(this,"TOOLTIP_CUSTOM_STYLE",{});n(this,"CONTEXT_MENU",[{label:"复制",value:"copy"},{label:"剪切",value:"cut"},{label:"粘贴",value:"paste"},{label:"清空选中内容",value:"clearSelected"}]);n(this,"HEADER_CELL_STYLE_METHOD");n(this,"BODY_CELL_STYLE_METHOD");n(this,"FOOTER_CELL_STYLE_METHOD");n(this,"BODY_CELL_READONLY_METHOD");n(this,"BODY_CELL_FORMATTER_METHOD");n(this,"BODY_CELL_RULES_METHOD");n(this,"BODY_CELL_TYPE_METHOD");n(this,"BODY_CELL_EDITOR_METHOD");n(this,"BODY_CELL_RENDER_METHOD");n(this,"BODY_CELL_HOVER_ICON_METHOD");n(this,"SPAN_METHOD");n(this,"SELECTABLE_METHOD");n(this,"EXPAND_LAZY_METHOD");n(this,"BEFORE_VALUE_CHANGE_METHOD");n(this,"BEFORE_PASTE_DATA_METHOD");n(this,"BEFORE_AUTOFILL_DATA_METHOD");n(this,"BEFORE_SET_SELECTOR_METHOD");n(this,"BEFORE_SET_AUTOFILL_METHOD");n(this,"BEFORE_COPY_METHOD");this._config=t,this.updateCssVar()}init(t){this._config=t,this.updateCssVar()}updateCssVar(){let t={};Object.keys(this).forEach(e=>{if(e.endsWith("_COLOR")||e.endsWith("_FONT")){const i=`--evt-${e.toLocaleLowerCase().replace(/_/g,"-")}`,s=fe(i);s&&(t[e]=s)}}),Object.assign(this,t,this._config)}}const Rt='<svg t="1724122044148" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4551" width="32" height="32"><path d="M707.648 401.28L489.28 560.704l22.656 30.976 22.656-30.976L316.16 401.216q-3.072-2.24-6.464-3.84-3.456-1.536-7.104-2.432-3.712-0.896-7.488-1.088-3.776-0.128-7.488 0.448-3.776 0.64-7.296 1.92-3.584 1.28-6.784 3.2-3.2 1.984-6.016 4.544-2.816 2.56-5.056 5.632-2.176 3.072-3.84 6.464-1.536 3.456-2.432 7.104-0.896 3.712-1.088 7.488-0.128 3.776 0.448 7.488 0.64 3.776 1.92 7.296 1.28 3.584 3.2 6.784 1.984 3.2 4.544 6.016 2.56 2.752 5.632 4.992l218.368 159.552q4.928 3.584 10.752 5.504 5.76 1.92 11.904 1.92 6.08 0 11.904-1.92 5.76-1.92 10.752-5.504l218.368-159.552q3.008-2.24 5.568-4.992 2.56-2.816 4.544-6.016 1.92-3.2 3.264-6.784 1.28-3.52 1.92-7.296 0.576-3.712 0.384-7.488-0.128-3.84-1.024-7.488-0.896-3.648-2.496-7.04-1.6-3.456-3.84-6.528-2.24-3.072-4.992-5.632-2.816-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.584-1.28-7.296-1.856-3.712-0.64-7.488-0.448-3.84 0.192-7.488 1.088-3.648 0.896-7.04 2.496-3.456 1.536-6.528 3.84z m61.056 30.976q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.472-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.72-3.584-3.456-1.408-7.168-2.176-3.712-0.704-7.488-0.704-3.84 0-7.488 0.704-3.712 0.768-7.232 2.176-3.456 1.472-6.656 3.584-3.136 2.112-5.76 4.8-2.688 2.624-4.8 5.76-2.112 3.2-3.584 6.656-1.408 3.52-2.176 7.232-0.704 3.712-0.704 7.488 0 3.776 0.704 7.488 0.768 3.712 2.176 7.168 1.472 3.52 3.584 6.656 2.112 3.2 4.8 5.824 2.624 2.688 5.76 4.8 3.2 2.112 6.656 3.52 3.52 1.472 7.232 2.176 3.712 0.768 7.488 0.768 3.776 0 7.488-0.768 3.712-0.704 7.168-2.176 3.52-1.408 6.656-3.52 3.2-2.112 5.824-4.8 2.688-2.688 4.8-5.76 2.048-3.2 3.52-6.72 1.472-3.456 2.176-7.168 0.768-3.712 0.768-7.488z m-436.736 0q0-3.84-0.768-7.488-0.704-3.712-2.176-7.232-1.408-3.456-3.52-6.656-2.112-3.136-4.8-5.76-2.688-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704-3.84 0-7.488 0.704-3.712 0.768-7.232 2.176-3.456 1.472-6.592 3.584-3.2 2.112-5.824 4.8-2.688 2.624-4.8 5.76-2.112 3.2-3.52 6.656-1.472 3.52-2.24 7.232-0.704 3.712-0.704 7.488 0 3.776 0.704 7.488 0.768 3.712 2.24 7.168 1.408 3.52 3.52 6.656 2.112 3.2 4.8 5.824 2.624 2.688 5.76 4.8 3.2 2.112 6.656 3.52 3.52 1.472 7.232 2.176 3.712 0.768 7.488 0.768 3.776 0 7.488-0.768 3.712-0.704 7.232-2.176 3.456-1.408 6.592-3.52 3.2-2.112 5.824-4.8 2.688-2.688 4.8-5.76 2.112-3.2 3.52-6.72 1.472-3.456 2.176-7.168 0.768-3.712 0.768-7.488z" p-id="4552"></path></svg>',ut='<svg t="1755138507987" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5079" width="200" height="200"><path d="M512 938.688a42.688 42.688 0 0 1-35.072-18.432l-192-277.312A42.56 42.56 0 0 1 320 576h384a42.752 42.752 0 0 1 35.072 66.944l-192 277.312a42.688 42.688 0 0 1-35.072 18.432" fill="currentColor" p-id="2016"></path><path d="M704 448H320a42.752 42.752 0 0 1-35.072-66.944l192-277.312c16-23.04 54.208-23.04 70.144 0l192 277.312A42.56 42.56 0 0 1 704 448" fill="currentColor" p-id="2015"></path></svg>',pe=ut.replace('fill="currentColor" p-id="2016"','fill="#bec4c7" p-id="2016"'),ye=ut.replace('fill="currentColor" p-id="2015"','fill="#bec4c7" p-id="2015"');class Ce{constructor(t){n(this,"ctx");n(this,"list",[{name:"loading",configName:"LOADING_ICON_SVG",configColorName:"LOADING_ICON_COLOR",svg:'<svg t="1724133395728" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2893" width="32" height="32"><path d="M512 226.8476541a19.82487759 19.82487759 0 0 1 14.66497778 5.70304692c3.80203107 3.82918865 5.70304692 8.71751457 5.70304693 14.66497779v122.20814825a19.82487759 19.82487759 0 0 1-5.70304693 14.66497778 19.82487759 19.82487759 0 0 1-14.66497778 5.70304691 19.82487759 19.82487759 0 0 1-14.66497778-5.70304691 19.82487759 19.82487759 0 0 1-5.70304693-14.66497778v-122.20814825a19.82487759 19.82487759 0 0 1 5.70304693-14.66497779 19.82487759 19.82487759 0 0 1 14.66497778-5.70304692z m0 407.36049415a19.82487759 19.82487759 0 0 1 14.66497778 5.70304691c3.80203107 3.82918865 5.70304692 8.71751457 5.70304693 14.66497778v122.20814827a19.82487759 19.82487759 0 0 1-5.70304693 14.66497776 19.82487759 19.82487759 0 0 1-14.66497778 5.70304693 19.82487759 19.82487759 0 0 1-14.66497778-5.70304693 19.82487759 19.82487759 0 0 1-5.70304693-14.66497776v-122.20814827a19.82487759 19.82487759 0 0 1 5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 14.66497778-5.70304691zM797.1523459 512a19.82487759 19.82487759 0 0 1-5.70304692 14.66497778 19.82487759 19.82487759 0 0 1-14.66497779 5.70304693h-122.20814825a19.82487759 19.82487759 0 0 1-14.66497778-5.70304693 19.82487759 19.82487759 0 0 1-5.70304691-14.66497778 19.82487759 19.82487759 0 0 1 5.70304691-14.66497778 19.82487759 19.82487759 0 0 1 14.66497778-5.70304693h122.20814825a19.82487759 19.82487759 0 0 1 14.66497779 5.70304693c3.80203107 3.82918865 5.70304692 8.71751457 5.70304692 14.66497778z m-407.36049415 0a19.82487759 19.82487759 0 0 1-5.70304691 14.66497778 19.82487759 19.82487759 0 0 1-14.66497778 5.70304693h-122.20814827a19.82487759 19.82487759 0 0 1-14.66497776-5.70304693 19.82487759 19.82487759 0 0 1-5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 5.70304693-14.66497778 19.82487759 19.82487759 0 0 1 14.66497776-5.70304693h122.20814827a19.82487759 19.82487759 0 0 1 14.66497778 5.70304693c3.80203107 3.82918865 5.70304692 8.71751457 5.70304691 14.66497778zM310.22076878 310.22076878a21.29137537 21.29137537 0 0 1 14.66497779-5.70304693c5.51294514 0 10.18401235 1.90101585 14.01320099 5.70304693l86.55052591 86.57768347a20.91117183 20.91117183 0 0 1 5.73020449 14.31193182 19.28172983 19.28172983 0 0 1-6.05609289 14.013201 19.11878565 19.11878565 0 0 1-14.013201 6.05609289 20.96548698 20.96548698 0 0 1-14.31193182-5.70304692L310.22076878 338.87178998a19.06447114 19.06447114 0 0 1-5.70304693-14.01320099c0-5.54010272 1.90101585-10.42842865 5.70304693-14.66497778z m288.32975775 288.32975775a19.79772001 19.79772001 0 0 1 14.3390894-6.35482371c5.29568642 0 10.04822572 2.11827457 14.31193182 6.38198066l86.57768347 86.55052651c3.80203107 3.80203107 5.70304692 8.47309828 5.70304691 14.01320102a19.55330372 19.55330372 0 0 1-6.05609225 14.31193182 19.66193339 19.66193339 0 0 1-14.31193245 6.05609288 19.01015661 19.01015661 0 0 1-14.01320099-5.70304692l-86.55052591-86.57768347a19.79772001 19.79772001 0 0 1-6.38198129-14.31193245c0-5.29568642 2.11827457-10.07538268 6.38198129-14.33908939zM713.77923122 310.22076878c3.80203107 4.26370672 5.70304692 9.15203265 5.70304693 14.66497779s-1.90101585 10.18401235-5.70304693 14.01320099l-86.57768347 86.55052591a20.91117183 20.91117183 0 0 1-14.31193182 5.73020449 19.28172983 19.28172983 0 0 1-14.013201-6.05609289 19.11878565 19.11878565 0 0 1-6.05609289-14.013201c0-5.29568642 1.90101585-10.07538268 5.70304692-14.31193182l86.57768348-86.57768347c3.80203107-3.80203107 8.50025585-5.70304692 14.01320099-5.70304693 5.54010272 0 10.40127108 1.90101585 14.66497779 5.70304693zM425.44947347 598.57768347a19.79772001 19.79772001 0 0 1 6.35482371 14.33908939c0 5.29568642-2.11827457 10.04822572-6.38198066 14.31193245L338.89894756 713.77923122a19.06447114 19.06447114 0 0 1-14.01320099 5.70304693 19.55330372 19.55330372 0 0 1-14.31193245-6.05609227 19.68909035 19.68909035 0 0 1-6.05609227-14.31193245 19.01015661 19.01015661 0 0 1 5.70304693-14.01320099l86.57768347-86.55052591a19.79772001 19.79772001 0 0 1 14.31193182-6.38198129c5.29568642 0 10.07538268 2.11827457 14.3390894 6.38198129z" fill="#000000" fill-opacity=".65" p-id="2894"></path></svg>',color:"#4E5969"},{name:"expand",configName:"EXPAND_ICON_SVG",configColorName:"EXPAND_ICON_COLOR",svg:'<svg t="1724122015492" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4237" width="32" height="32"><path d="M401.472 316.992l159.04 217.664L591.488 512l-30.976-22.656-159.04 217.728q-2.24 3.008-3.84 6.464-1.6 3.456-2.496 7.104-0.896 3.648-1.024 7.424-0.192 3.84 0.384 7.552 0.64 3.712 1.92 7.296 1.28 3.52 3.2 6.784 1.984 3.2 4.544 6.016 2.56 2.752 5.632 4.992 3.072 2.24 6.464 3.84 3.456 1.6 7.168 2.496 3.648 0.896 7.424 1.024 3.776 0.192 7.488-0.448 3.776-0.576 7.296-1.856 3.584-1.28 6.784-3.264 3.2-1.92 6.016-4.48 2.816-2.56 5.056-5.632l159.04-217.728q3.584-4.928 5.504-10.752 1.92-5.76 1.92-11.904 0-6.08-1.92-11.904-1.92-5.76-5.504-10.752L463.488 271.68q-2.24-3.072-5.056-5.632-2.752-2.56-6.016-4.48-3.2-1.984-6.784-3.328-3.52-1.28-7.296-1.856-3.712-0.576-7.488-0.448-3.84 0.192-7.424 1.088-3.712 0.896-7.168 2.496-3.392 1.6-6.4 3.84-3.136 2.176-5.696 4.992-2.56 2.752-4.48 6.016-1.984 3.2-3.264 6.784-1.28 3.52-1.92 7.296-0.576 3.712-0.384 7.488 0.128 3.84 1.024 7.488 0.896 3.648 2.496 7.04 1.6 3.456 3.84 6.528z m30.976-61.056q-3.776 0-7.488 0.704-3.712 0.768-7.168 2.24-3.52 1.408-6.656 3.52-3.2 2.112-5.824 4.8-2.688 2.624-4.8 5.76-2.112 3.2-3.52 6.656-1.472 3.52-2.176 7.232-0.768 3.712-0.768 7.488 0 3.776 0.768 7.488 0.704 3.712 2.176 7.232 1.408 3.456 3.52 6.592 2.112 3.2 4.8 5.824 2.688 2.688 5.76 4.8 3.2 2.112 6.72 3.52 3.456 1.472 7.168 2.176 3.712 0.768 7.488 0.768 3.84 0 7.488-0.768 3.712-0.704 7.232-2.176 3.456-1.408 6.592-3.52 3.2-2.112 5.824-4.8 2.688-2.688 4.8-5.76 2.112-3.2 3.52-6.656 1.472-3.52 2.24-7.232 0.704-3.712 0.704-7.488 0-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.456-3.52-6.592-2.112-3.2-4.8-5.824-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.52-3.52-1.472-7.232-2.24Q436.224 256 432.448 256z m0 435.392q-3.776 0-7.488 0.704-3.712 0.768-7.168 2.176-3.52 1.472-6.656 3.584-3.2 2.112-5.824 4.736-2.688 2.688-4.8 5.824-2.112 3.2-3.52 6.656-1.472 3.52-2.176 7.232-0.768 3.712-0.768 7.488 0 3.776 0.768 7.488 0.704 3.712 2.176 7.168 1.408 3.52 3.52 6.656 2.112 3.2 4.8 5.76 2.688 2.752 5.76 4.8 3.2 2.112 6.72 3.584 3.456 1.472 7.168 2.176 3.712 0.768 7.488 0.768 3.84 0 7.488-0.768 3.712-0.704 7.232-2.176 3.456-1.472 6.592-3.584 3.2-2.048 5.824-4.736 2.688-2.688 4.8-5.824 2.112-3.2 3.52-6.656 1.472-3.456 2.24-7.168 0.704-3.712 0.704-7.488 0-3.84-0.704-7.488-0.768-3.712-2.24-7.232-1.408-3.52-3.52-6.656-2.112-3.136-4.8-5.76-2.624-2.688-5.76-4.8-3.2-2.112-6.656-3.584-3.52-1.408-7.232-2.176-3.712-0.704-7.488-0.704z" p-id="4238"></path></svg>',color:"#4E5969"},{name:"shrink",configName:"CHECKBOX_UNCHECK_SVG",configColorName:"SHRINK_ICON_COLOR",svg:Rt,color:"#4E5969"},{name:"checkbox-uncheck",configName:"CHECKBOX_UNCHECK_SVG",svg:'<svg t="1722595639920" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4708" width="32" height="32"><path d="M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z m64 0q0 79.552 56.256 135.744Q304.448 832 384 832h256q79.552 0 135.744-56.256Q832 719.552 832 640V384q0-79.552-56.256-135.744Q719.552 192 640 192H384q-79.552 0-135.744 56.256Q192 304.448 192 384v256z" fill="#DDE0EA" p-id="4709"></path></svg>',color:""},{name:"checkbox-check",configName:"CHECKBOX_CHECK_SVG",configColorName:"CHECKBOX_COLOR",svg:'<svg t="1722595535853" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4551" width="32" height="32"><path d="M640 128H384c-170.496 0-256 85.504-256 256v256c0 170.496 85.504 256 256 256h256c170.496 0 256-85.504 256-256V384c0-170.496-85.504-256-256-256z m67.584 302.592c-2.048 4.608-4.608 8.704-8.192 12.288L506.88 634.88c-3.584 3.584-7.68 6.144-12.288 8.192-4.608 2.048-9.728 3.072-14.848 3.072s-10.24-1.024-14.848-3.072c-4.608-2.048-8.704-4.608-12.288-8.192l-96.256-96.256c-3.584-3.584-6.144-7.68-8.192-12.288-2.048-4.608-3.072-9.728-3.072-14.848 0-2.56 0-5.12 1.024-7.68 0.512-2.56 1.024-5.12 2.048-7.168 1.024-2.56 2.048-4.608 3.584-6.656 1.536-2.048 3.072-4.096 4.608-5.632 1.536-2.048 3.584-3.584 5.632-4.608 2.048-1.536 4.096-2.56 6.656-3.584 2.56-1.024 4.608-1.536 7.168-2.048 2.56-0.512 5.12-0.512 7.68-0.512 5.12 0 10.24 1.024 14.848 3.072 4.608 2.048 8.704 4.608 12.288 8.192l69.12 68.608L645.12 389.12c3.584-3.584 7.68-6.144 12.288-8.192 4.608-2.048 9.728-3.072 14.848-3.072 2.56 0 5.12 0 7.68 0.512s5.12 1.024 7.168 2.048c2.56 1.024 4.608 2.048 6.656 3.584 2.048 1.536 4.096 3.072 5.632 4.608 1.536 1.536 3.584 3.584 4.608 5.632 1.536 2.048 2.56 4.096 3.584 6.656 1.024 2.56 1.536 4.608 2.048 7.168 0.512 2.56 1.024 5.12 1.024 7.68 0 5.12-1.024 10.24-3.072 14.848z" p-id="4552"></path></svg>',color:"rgb(82,146,247)"},{name:"checkbox-hover",configName:"CHECKBOX_UNCHECK_SVG",configColorName:"CHECKBOX_COLOR",svg:'<svg t="1722595639920" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4708" width="32" height="32"><path d="M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z m64 0q0 79.552 56.256 135.744Q304.448 832 384 832h256q79.552 0 135.744-56.256Q832 719.552 832 640V384q0-79.552-56.256-135.744Q719.552 192 640 192H384q-79.552 0-135.744 56.256Q192 304.448 192 384v256z" fill="#DDE0EA" p-id="4709"></path></svg>',color:"rgb(82,146,247)"},{name:"checkbox-indeterminate",configName:"CHECKBOX_INDETERMINATE_SVG",configColorName:"CHECKBOX_COLOR",svg:'<svg t="1722595280953" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4394" width="32" height="32"><path d="M128 384v256q0 12.608 1.28 25.088 1.216 12.544 3.648 24.832 2.432 12.352 6.08 24.384t8.448 23.68q4.864 11.584 10.752 22.72 5.952 11.072 12.928 21.504 7.04 10.496 14.976 20.224 8 9.728 16.896 18.56 8.896 8.96 18.56 16.896 9.728 8 20.224 14.976 10.432 7.04 21.504 12.928 11.136 5.888 22.72 10.688 11.648 4.864 23.68 8.512 12.032 3.648 24.32 6.08 12.352 2.432 24.896 3.712Q371.392 896 384 896h256q12.608 0 25.088-1.28 12.544-1.216 24.832-3.648 12.352-2.432 24.384-6.08t23.68-8.512q11.584-4.8 22.72-10.688 11.072-5.952 21.504-12.928 10.496-7.04 20.224-14.976 9.728-8 18.56-16.896 8.96-8.832 16.896-18.56 8-9.728 14.976-20.224 7.04-10.432 12.928-21.504 5.888-11.136 10.688-22.72 4.864-11.648 8.512-23.68 3.648-12.032 6.08-24.32 2.432-12.352 3.712-24.896Q896 652.608 896 640V384q0-12.608-1.28-25.088-1.216-12.544-3.648-24.832-2.432-12.352-6.08-24.384t-8.512-23.68q-4.8-11.584-10.688-22.72-5.952-11.072-12.928-21.504-7.04-10.496-14.976-20.224-8-9.664-16.896-18.56-8.832-8.96-18.56-16.896-9.728-8-20.224-14.976-10.432-7.04-21.504-12.928-11.136-5.888-22.72-10.752-11.648-4.8-23.68-8.448-12.032-3.648-24.32-6.08-12.352-2.432-24.896-3.712Q652.608 128 640 128H384q-12.608 0-25.088 1.28-12.544 1.216-24.832 3.648-12.352 2.432-24.384 6.08t-23.68 8.448q-11.584 4.864-22.72 10.752-11.072 5.952-21.504 12.928-10.496 7.04-20.224 14.976-9.664 8-18.56 16.896-8.96 8.896-16.896 18.56-8 9.728-14.976 20.224-7.04 10.432-12.928 21.504-5.888 11.136-10.752 22.72-4.8 11.648-8.448 23.68-3.648 12.032-6.08 24.32-2.432 12.352-3.712 24.896Q128 371.392 128 384z m566.016 166.336H330.112a38.4 38.4 0 0 1 0-76.8h363.904a38.4 38.4 0 0 1 0 76.8z" p-id="4395"></path></svg>',color:"rgb(82,146,247)"},{name:"checkbox-check-disabled",configName:"CHECKBOX_CHECK_SVG",svg:'<svg t="1722595535853" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4551" width="32" height="32"><path d="M640 128H384c-170.496 0-256 85.504-256 256v256c0 170.496 85.504 256 256 256h256c170.496 0 256-85.504 256-256V384c0-170.496-85.504-256-256-256z m67.584 302.592c-2.048 4.608-4.608 8.704-8.192 12.288L506.88 634.88c-3.584 3.584-7.68 6.144-12.288 8.192-4.608 2.048-9.728 3.072-14.848 3.072s-10.24-1.024-14.848-3.072c-4.608-2.048-8.704-4.608-12.288-8.192l-96.256-96.256c-3.584-3.584-6.144-7.68-8.192-12.288-2.048-4.608-3.072-9.728-3.072-14.848 0-2.56 0-5.12 1.024-7.68 0.512-2.56 1.024-5.12 2.048-7.168 1.024-2.56 2.048-4.608 3.584-6.656 1.536-2.048 3.072-4.096 4.608-5.632 1.536-2.048 3.584-3.584 5.632-4.608 2.048-1.536 4.096-2.56 6.656-3.584 2.56-1.024 4.608-1.536 7.168-2.048 2.56-0.512 5.12-0.512 7.68-0.512 5.12 0 10.24 1.024 14.848 3.072 4.608 2.048 8.704 4.608 12.288 8.192l69.12 68.608L645.12 389.12c3.584-3.584 7.68-6.144 12.288-8.192 4.608-2.048 9.728-3.072 14.848-3.072 2.56 0 5.12 0 7.68 0.512s5.12 1.024 7.168 2.048c2.56 1.024 4.608 2.048 6.656 3.584 2.048 1.536 4.096 3.072 5.632 4.608 1.536 1.536 3.584 3.584 4.608 5.632 1.536 2.048 2.56 4.096 3.584 6.656 1.024 2.56 1.536 4.608 2.048 7.168 0.512 2.56 1.024 5.12 1.024 7.68 0 5.12-1.024 10.24-3.072 14.848z" p-id="4552"></path></svg>',color:"#DDE0EA"},{name:"checkbox-disabled",configName:"CHECKBOX_DISABLED_SVG",svg:'<svg t="1722595946663" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4865" width="32" height="32"><path d="M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z" fill="#F1F2F4" p-id="4866"></path><path d="M128 640V384a256 256 0 0 1 256-256h256a256 256 0 0 1 256 256v256a256 256 0 0 1-256 256H384a256 256 0 0 1-256-256z m64 0q0 79.552 56.256 135.744Q304.448 832 384 832h256q79.552 0 135.744-56.256Q832 719.552 832 640V384q0-79.552-56.256-135.744Q719.552 192 640 192H384q-79.552 0-135.744 56.256Q192 304.448 192 384v256z" fill="#DDE0EA" p-id="4867"></path></svg>',color:""},{name:"icon-edit",configName:"CHECKBOX_DISABLED_SVG",svg:'<svg t="1744798692576" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6606" width="200" height="200"><path d="M855.296 894.528H168.768v-76.8h686.528v76.8z m38.4-38.4q0 3.84-0.768 7.488-0.704 3.712-2.176 7.232-1.472 3.52-3.52 6.656-2.112 3.136-4.8 5.76-2.688 2.688-5.824 4.8-3.2 2.112-6.656 3.584-3.456 1.408-7.168 2.176-3.712 0.704-7.488 0.704-3.84 0-7.488-0.704-3.712-0.768-7.232-2.176-3.52-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488 0-3.776 0.704-7.488 0.768-3.712 2.176-7.168 1.472-3.52 3.584-6.656 2.112-3.136 4.736-5.76 2.688-2.752 5.824-4.8 3.2-2.112 6.656-3.584 3.52-1.472 7.232-2.176 3.712-0.768 7.488-0.768 3.776 0 7.488 0.768 3.712 0.704 7.168 2.176 3.52 1.472 6.656 3.584 3.2 2.048 5.76 4.736 2.752 2.688 4.864 5.824 2.048 3.2 3.52 6.656 1.472 3.456 2.176 7.168 0.768 3.712 0.768 7.488z m-686.528 0q0 3.84-0.768 7.488-0.704 3.712-2.176 7.232-1.472 3.52-3.52 6.656-2.112 3.136-4.8 5.76-2.688 2.688-5.76 4.8-3.2 2.112-6.72 3.584-3.456 1.408-7.168 2.176-3.712 0.704-7.488 0.704-3.84 0-7.488-0.704-3.712-0.768-7.232-2.176-3.456-1.472-6.656-3.584-3.136-2.112-5.76-4.736-2.688-2.688-4.8-5.824-2.112-3.2-3.584-6.656-1.408-3.52-2.176-7.232-0.704-3.648-0.704-7.488 0-3.776 0.704-7.488 0.768-3.712 2.176-7.168 1.472-3.52 3.584-6.656 2.112-3.136 4.736-5.76 2.688-2.752 5.824-4.8 3.2-2.112 6.656-3.584 3.52-1.472 7.232-2.176 3.712-0.768 7.488-0.768 3.776 0 7.488 0.768 3.712 0.704 7.168 2.176 3.52 1.472 6.656 3.584 3.2 2.048 5.824 4.736 2.688 2.688 4.8 5.824 2.048 3.2 3.52 6.656 1.472 3.456 2.176 7.168 0.768 3.712 0.768 7.488zM652.032 211.2l-369.92 370.368v89.344h90.048l369.664-369.856L652.032 211.2z m-54.4-54.272q22.528-22.528 54.4-22.528 31.808 0 54.336 22.528l89.792 89.856q22.464 22.464 22.464 54.272t-22.464 54.272l-369.664 369.856q-22.464 22.528-54.336 22.528H282.24q-31.808 0-54.336-22.528-22.464-22.464-22.464-54.272V581.568q0-31.808 22.4-54.272l369.92-370.368z" p-id="6607"></path></svg>',color:"#4E5969"},{name:"icon-select",configName:"CHECKBOX_UNCHECK_SVG",configColorName:"SHRINK_ICON_COLOR",svg:Rt,color:"#4E5969"},{name:"sort-asc",configName:"SORT_ASC_ICON_SVG",configColorName:"SORT_ICON_COLOR",svg:pe,color:"rgb(82,146,247)"},{name:"sort-desc",configName:"SORT_DESC_ICON_SVG",configColorName:"SORT_ICON_COLOR",svg:ye,color:"rgb(82,146,247)"},{name:"sort-default",configName:"SORTABLE_ICON_SVG",svg:ut,color:"#bec4c7"}]);n(this,"icons",new Map);this.ctx=t,this.init()}async init(){const t=[];for(let e=0;e<this.list.length;e++){const i=this.list[e];let s=i.color,o=i.svg;if(i.configColorName){const a=this.ctx.config[i.configColorName];a&&(s=a)}if(i.configName){const a=this.ctx.config[i.configName];a&&(o=a)}const r=this.createImageFromSVG(o,s).then(a=>{this.icons.set(i.name,a)});t.push(r)}for(let e=0;e<this.ctx.config.ICONS.length;e++){const i=this.ctx.config.ICONS[e];let s=i.color;const o=this.createImageFromSVG(i.svg,s,i.isBlob).then(r=>{this.icons.set(i.name,r)});t.push(o)}await Promise.all(t),this.ctx.emit("draw")}async createImageFromSVG(t,e,i=!1){const r=new DOMParser().parseFromString(t,"image/svg+xml").documentElement;e&&r.querySelectorAll("*").forEach(h=>{const d=h.getAttribute("fill");(d==="currentColor"||d===null)&&h.setAttribute("fill",e)});const a=new Image;let c="";if(i){const h=new Blob([new XMLSerializer().serializeToString(r)],{type:"image/svg+xml"});c=URL.createObjectURL(h)}else c="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(new XMLSerializer().serializeToString(r));return a.src=c,new Promise((h,d)=>{a.onerror=()=>d(new Error("Failed to load image:"+t)),a.onload=()=>{h(a)}})}get(t){return this.icons.get(t)}}class ht extends Yt{constructor(e,i,s,o,r,a,c){super(e,s,o,r,a,"header",c.fixed);n(this,"align");n(this,"hideHeaderSelection",!1);n(this,"verticalAlign","middle");n(this,"fixed");n(this,"minWidth");n(this,"maxWidth");n(this,"widthFillDisable");n(this,"type");n(this,"operation",!1);n(this,"editorType");n(this,"level");n(this,"text");n(this,"displayText","");n(this,"colspan");n(this,"rowspan");n(this,"row");n(this,"key");n(this,"required",!1);n(this,"readonly",!1);n(this,"ellipsis",!1);n(this,"overflowTooltipShow",!0);n(this,"children",[]);n(this,"column");n(this,"colIndex");n(this,"rowKey");n(this,"rules");n(this,"hasChildren");n(this,"render");n(this,"style",{});n(this,"drawX",0);n(this,"drawY",0);n(this,"sortIconName","sort-default");n(this,"sortAscIconName","sort-asc");n(this,"sortDescIconName","sort-desc");n(this,"visibleWidth",0);n(this,"visibleHeight",0);n(this,"drawTextX",0);n(this,"drawTextY",0);n(this,"drawTextWidth",0);n(this,"drawTextHeight",0);n(this,"drawCellBgColor","");n(this,"drawTextColor","");n(this,"drawSelectionImageX",0);n(this,"drawSelectionImageY",0);n(this,"drawSelectionImageWidth",0);n(this,"drawSelectionImageHeight",0);n(this,"drawSelectionImageName","");n(this,"drawSelectionImageSource");n(this,"drawSortImageX",0);n(this,"drawSortImageY",0);n(this,"drawSortImageWidth",0);n(this,"drawSortImageHeight",0);n(this,"drawSortImageName","");n(this,"drawSortImageSource");this.ctx=e,this.x=s,this.y=o,this.width=r,this.height=a,this.visibleWidth=r,this.visibleHeight=a,this.colIndex=i,this.key=c.key,this.minWidth=c.minWidth,this.maxWidth=c.maxWidth,this.type=c.type||"",this.editorType=c.editorType||"text",this.hideHeaderSelection=c.hideHeaderSelection||!1,this.align=c.headerAlign||c.align||this.ctx.config.COLUMNS_ALIGN,this.verticalAlign=c.headerVerticalAlign||c.verticalAlign||this.ctx.config.COLUMNS_VERTICAL_ALIGN,this.fixed=c.fixed,this.level=c.level||0,this.operation=c.operation||!1,this.text=c.title,this.column=c,this.colspan=c.colspan||1,this.widthFillDisable=c.widthFillDisable||!1,this.rowspan=c.rowspan||1,this.rules=c.rules,this.readonly=c.readonly||!1,this.required=c.required||!1,this.sortIconName=c.sortIconName||"sort-default",this.sortAscIconName=c.sortAscIconName||"sort-asc",this.sortDescIconName=c.sortDescIconName||"sort-desc",this.rowKey=Mt(),this.overflowTooltipShow=c.overflowTooltipHeaderShow!==!1,this.hasChildren=c.children&&c.children.length>0||!1,this.render=c.renderHeader}isVerticalVisible(){const{stageHeight:e}=this.ctx,i=e;return!(this.y+this.height<=0||this.y>=i)}updateStyle(){this.style=this.getOverlayerViewsStyle()}updateContainer(){const{HEADER_CELL_STYLE_METHOD:e,HEADER_BG_COLOR:i,HEADER_TEXT_COLOR:s}=this.ctx.config;let o=i,r=s;if(typeof e=="function"){const a=e,{backgroundColor:c,color:h}=a({colIndex:this.colIndex,column:this.column})||{};c&&(o=c),h&&(r=h)}this.drawCellBgColor=o,this.drawTextColor=r}update(){this.updateContainer(),this.displayText=this.getText(),this.drawX=this.getDrawX(),this.drawY=this.getDrawY(),this.drawTextX=this.drawX,this.drawTextY=this.drawY,this.drawTextWidth=this.width,this.drawTextHeight=this.height,this.updateStyle()}draw(){this.drawEdge(),this.drawSelection(),this.recalculateTextPosition(),this.drawText(),this.drawSelector(),this.drawSortIcon()}drawEdge(){const{paint:e,config:{BORDER_COLOR:i,BORDER:s}}=this.ctx;e.drawRect(this.drawX,this.drawY,this.width,this.height,{borderColor:s?i:"transparent",fillColor:this.drawCellBgColor})}recalculateTextPosition(){let e=this.drawX,i=this.width;if(["selection","index-selection","selection-tree","tree-selection"].includes(this.type)){const{CHECKBOX_SIZE:s}=this.ctx.config;this.align==="left"||this.align==="right"?(e=this.drawX+s+4,i=this.width-e+this.drawX):(e=this.drawX+(this.width-s)/2+s+1,i=this.width-e+this.drawX)}this.column.sortBy&&(this.align==="right"?(i=this.width-this.ctx.config.CELL_PADDING-16-4,e=this.drawX+this.ctx.config.CELL_PADDING):this.align==="center"&&this.ctx.paint.measureTextWidth(this.displayText,this.ctx.config.HEADER_FONT)+16+4>this.width-this.ctx.config.CELL_PADDING*2&&(i=this.width-this.ctx.config.CELL_PADDING*2-16-4)),this.drawTextX=e,this.drawTextWidth=i}drawText(){const{paint:e,config:{HEADER_FONT:i,CELL_PADDING:s}}=this.ctx;this.ellipsis=e.drawText(this.displayText,this.drawTextX,this.drawTextY,this.drawTextWidth,this.drawTextHeight,{font:i,padding:s,color:this.drawTextColor,align:this.align,verticalAlign:this.verticalAlign})}drawSelector(){const{ENABLE_SELECTOR:e}=this.ctx.config;if(!e)return;const{xArr:i}=this.ctx.selector,[s,o]=i;this.colIndex>=s&&this.colIndex<=o&&this.ctx.paint.drawRect(this.drawX,this.drawY,this.width,this.height,{borderColor:"transparent",fillColor:this.ctx.config.SELECT_ROW_COL_BG_COLOR||"transparent"})}drawSelection(){if(!this.hideHeaderSelection&&["index-selection","selection","selection-tree","tree-selection"].includes(this.type)){const{indeterminate:e,check:i,selectable:s}=this.ctx.database.getCheckedState(),{CHECKBOX_SIZE:o=0,CELL_PADDING:r}=this.ctx.config;let a=this.drawX+(this.width-o)/2,c=this.drawY+(this.height-o)/2;this.drawTextX=a+o-r/2,this.drawTextWidth=this.drawX+this.visibleWidth-this.drawTextX,(this.align==="left"||this.align==="right")&&(a=this.drawX+r,this.drawTextX=a+o-r/2,this.drawTextWidth=this.drawX+this.visibleWidth-this.drawTextX),this.verticalAlign==="top"?c=this.drawY+r/2:this.verticalAlign==="bottom"&&(c=this.drawY+this.height-o-r/2);let h=this.ctx.icons.get("checkbox-uncheck"),d="checkbox-uncheck";e?(h=this.ctx.icons.get("checkbox-indeterminate"),d="checkbox-indeterminate"):i&&s?(h=this.ctx.icons.get("checkbox-check"),d="checkbox-check"):i&&!s?(h=this.ctx.icons.get("checkbox-check-disabled"),d="checkbox-check-disabled"):!i&&s?(h=this.ctx.icons.get("checkbox-uncheck"),d="checkbox-uncheck"):(h=this.ctx.icons.get("checkbox-disabled"),d="checkbox-disabled"),h&&(this.drawSelectionImageX=a,this.drawSelectionImageY=c,this.drawSelectionImageWidth=o,this.drawSelectionImageHeight=o,this.drawSelectionImageName=d,this.drawSelectionImageSource=h,this.ctx.paint.drawImage(this.drawSelectionImageSource,this.drawSelectionImageX,this.drawSelectionImageY,this.drawSelectionImageWidth,this.drawSelectionImageHeight))}}drawSortIcon(){if(!this.column.sortBy)return;const{CELL_PADDING:e=0}=this.ctx.config,i=16,s=4;let o=this.sortIconName;const r=this.ctx.database.getSortState(this.key);r.direction==="asc"?o=this.sortAscIconName:r.direction==="desc"&&(o=this.sortDescIconName);const a=this.ctx.icons.get(o);if(!a)return;let c=0,h=this.drawY+(this.height-i)/2;if(this.align==="left"){const d=this.ctx.paint.measureTextWidth(this.displayText,this.ctx.config.HEADER_FONT);c=this.drawX+e+d+s}else if(this.align==="center"){const d=this.ctx.paint.measureTextWidth(this.displayText,this.ctx.config.HEADER_FONT);c=this.drawX+this.width/2-d/2+d+s}else this.align==="right"&&(c=this.drawX+this.width-e-i);this.drawSortImageX=c,this.drawSortImageY=h,this.drawSortImageWidth=i,this.drawSortImageHeight=i,this.drawSortImageName=o,this.drawSortImageSource=a,this.ctx.paint.drawImage(this.drawSortImageSource,this.drawSortImageX,this.drawSortImageY,this.drawSortImageWidth,this.drawSortImageHeight)}getText(){return this.render?"":this.text}getOverlayerViewsStyle(){let e="";return this.fixed==="left"?e=`${this.drawX}px`:this.fixed==="right"?e=`${this.drawX-(this.ctx.stageWidth-this.ctx.fixedRightWidth)}px`:e=`${this.drawX-this.ctx.fixedLeftWidth}px`,{position:"absolute",overflow:"hidden",left:e,top:`${this.drawY+1}px`,width:`${this.width}px`,height:`${this.height-2}px`,pointerEvents:"initial",userSelect:"none"}}}class be{constructor(t){n(this,"ctx");n(this,"visibleHoverCell");n(this,"resizeObserver");n(this,"mutationObserver");this.ctx=t,this.init()}init(){this.resizeObserver=new ResizeObserver(()=>{this.ctx.emit("resetHeader"),this.ctx.emit("resizeObserver")}),this.resizeObserver.observe(this.ctx.containerElement),this.mutationObserver=new MutationObserver(t=>{for(const e of t)e.type==="attributes"&&e.attributeName==="class"&&(this.ctx.config.updateCssVar(),this.ctx.emit("draw"))}),this.ctx.config.ENABLE_AUTO_THEME&&this.mutationObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),this.ctx.on("mousedown",t=>{if(t.button!==0||this.isBusy(t))return;const{offsetY:e,offsetX:i}=this.ctx.getOffset(t),s=e,o=i;this.handleHeaderEvent(o,s,this.ctx.header.renderCellHeaders,r=>{this.ctx.focusCellHeader=r,this.ctx.emit("cellHeaderMousedown",r,t)}),this.handleBodyEvent(o,s,this.ctx.body.renderRows,r=>{this.ctx.setFocusCell(r),this.ctx.emit("cellMousedown",r,t)})}),this.ctx.on("click",t=>{if(t.button!==0||this.isBusy(t))return;const e=this.ctx.getOffset(t).offsetY,i=this.ctx.getOffset(t).offsetX;this.handleHeaderEvent(i,e,this.ctx.header.renderCellHeaders,s=>{this.ctx.clickCellHeader=s,this.ctx.emit("cellHeaderClick",s,t),this.selectionClick(s,t),this.sortClick(s,t)}),this.handleBodyEvent(i,e,this.ctx.body.renderRows,s=>{this.ctx.clickCell=s,this.ctx.emit("cellClick",s,t),this.selectionClick(s,t),this.treeClick(s,t)},!0),this.handleBodyEvent(i,e,this.ctx.body.renderRows,s=>{this.hoverIconClick(s)},!1)}),this.ctx.on("dblclick",t=>{if(t.button!==0||this.isBusy(t))return;const e=this.ctx.getOffset(t).offsetY,i=this.ctx.getOffset(t).offsetX;this.handleHeaderEvent(i,e,this.ctx.header.renderCellHeaders,s=>{this.ctx.emit("cellHeaderDblclick",s,t)}),this.handleBodyEvent(i,e,this.ctx.body.renderRows,s=>{this.ctx.clickCell=s,this.ctx.emit("cellDblclick",s,t)})}),this.ctx.on("contextMenu",t=>{if(this.isBusy(t))return;const{offsetY:e,offsetX:i}=this.ctx.getOffset(t),s=e,o=i;this.handleHeaderEvent(o,s,this.ctx.header.renderCellHeaders,r=>{this.ctx.emit("cellHeaderContextMenuClick",r,t)}),this.handleBodyEvent(o,s,this.ctx.body.renderRows,r=>{this.ctx.emit("cellContextMenuClick",r,t)})}),this.ctx.on("mouseout",t=>{!this.ctx.containerElement.contains(t.relatedTarget)&&this.ctx.hoverCell!==void 0&&(this.ctx.hoverRow=void 0,this.ctx.hoverCell=void 0,this.ctx.emit("draw"))}),this.ctx.on("mousemove",t=>{if(this.isBusy(t))return;this.ctx.isPointer=!1,this.ctx.stageElement.style.cursor==="pointer"&&(this.ctx.stageElement.style.cursor="default");const e=this.ctx.getOffset(t).offsetY,i=this.ctx.getOffset(t).offsetX;this.handleHeaderEvent(i,e,this.ctx.header.renderCellHeaders,s=>{this.ctx.emit("cellHeaderMouseenter",s,t),this.ctx.hoverCellHeader&&this.ctx.hoverCellHeader!==s&&this.ctx.emit("cellHeaderMouseleave",this.ctx.hoverCellHeader,t),this.imageEnterAndLeave(s,t),this.ctx.hoverCellHeader!==s&&(this.ctx.hoverCellHeader=s,this.visibleHoverCell=void 0,this.ctx.emit("cellHeaderHoverChange",s,t))}),this.handleBodyEvent(i,e,this.ctx.body.renderRows,s=>{this.imageEnterAndLeave(s,t),this.visibleHoverCell!==s&&(this.ctx.emit("visibleCellMouseleave",s,t),this.visibleHoverCell=s,this.ctx.hoverCellHeader=void 0,this.ctx.emit("visibleCellHoverChange",s,t))},!0),this.handleBodyEvent(i,e,this.ctx.body.renderRows,s=>{var o;this.imageEnterAndLeave(s,t),this.ctx.emit("cellMouseenter",s,t),this.ctx.hoverCell&&this.ctx.hoverCell!==s&&this.ctx.emit("cellMouseleave",s,t),this.ctx.hoverCell!==s&&(((o=this.ctx.hoverCell)==null?void 0:o.rowKey)!==s.rowKey&&(this.ctx.hoverCell=s,this.ctx.hoverRow=this.ctx.body.renderRows.find(r=>r.rowKey===s.rowKey),this.ctx.emit("rowHoverChange",this.ctx.hoverRow,s,t),this.ctx.emit("drawView")),this.ctx.hoverCell=s,this.ctx.emit("cellHoverChange",s,t))})})}hoverIconClick(t){t.hoverIconName&&this.ctx.isPointer&&this.ctx.emit("hoverIconClick",t)}selectionClick(t,e){if(!(["selection","index-selection","selection-tree","tree-selection"].includes(t.type)&&this.ctx.isPointer))return;const{offsetY:s,offsetX:o}=this.ctx.getOffset(e),r=s,a=o;if(this.isInsideElement(a,r,t.drawSelectionImageX,t.drawSelectionImageY,t.drawSelectionImageWidth,t.drawSelectionImageHeight))if(t instanceof ht)t.drawSelectionImageName==="checkbox-uncheck"||t.drawSelectionImageName==="checkbox-indeterminate"?this.ctx.database.toggleAllSelection():t.drawSelectionImageName==="checkbox-check"&&this.ctx.database.clearSelection(!0);else{if(!this.ctx.database.getRowSelectable(t.rowKey))return;this.ctx.database.toggleRowSelection(t.rowKey,t.type)}}treeClick(t,e){if(!(["tree","selection-tree","tree-selection"].includes(t.type)&&this.ctx.isPointer))return;const{offsetY:s,offsetX:o}=this.ctx.getOffset(e),r=s,a=o;if(!this.isInsideElement(a,r,t.drawTreeImageX,t.drawTreeImageY,t.drawTreeImageWidth,t.drawTreeImageHeight))return;const c=this.ctx.database.getRowForRowKey(t.rowKey),{expand:h=!1,expandLazy:d=!1}=c||{},{EXPAND_LAZY:f,EXPAND_LAZY_METHOD:u}=this.ctx.config;if(f&&u&&!h&&!d)typeof u=="function"&&(this.ctx.database.expandLoading(t.rowKey,!0),u({row:t.row,rowIndex:t.rowIndex,colIndex:t.colIndex,column:t.column,value:t.getValue()}).then(w=>{this.ctx.database.setExpandChildren(t.rowKey,w),this.ctx.database.expandLoading(t.rowKey,!1),this.ctx.emit("expandChange",this.ctx.database.getExpandRowKeys())}).catch(w=>{this.ctx.database.expandLoading(t.rowKey,!1),console.error(w)}));else{const x=this.ctx.database.getIsExpand(t.rowKey);this.ctx.database.expandItem(t.rowKey,!x),this.ctx.emit("expandChange",this.ctx.database.getExpandRowKeys())}}sortClick(t,e){const{offsetY:i,offsetX:s}=this.ctx.getOffset(e),o=i,r=s;if(!this.isInsideElement(r,o,t.drawSortImageX,t.drawSortImageY,t.drawSortImageWidth,t.drawSortImageHeight))return;const a=this.ctx.database.getSortState(t.key);let c;a.direction==="none"?c="asc":a.direction==="asc"?c="desc":c="none",this.ctx.database.setSortState(t.key,c)}imageEnterAndLeave(t,e){const{offsetY:i,offsetX:s}=this.ctx.getOffset(e),o=i,r=s;if(t instanceof ht){if(t.drawSelectionImageSource&&this.isInsideElement(r,o,t.drawSelectionImageX,t.drawSelectionImageY,t.drawSelectionImageWidth,t.drawSelectionImageHeight)){this.ctx.stageElement.style.cursor="pointer",this.ctx.isPointer=!0;return}if(t.drawSortImageSource&&this.isInsideElement(r,o,t.drawSortImageX,t.drawSortImageY,t.drawSortImageWidth,t.drawSortImageHeight)){this.ctx.stageElement.style.cursor="pointer",this.ctx.isPointer=!0;return}}if(t instanceof xt){if(t.drawSelectionImageSource&&this.isInsideElement(r,o,t.drawSelectionImageX,t.drawSelectionImageY,t.drawSelectionImageWidth,t.drawSelectionImageHeight)){this.ctx.stageElement.style.cursor="pointer",this.ctx.isPointer=!0,this.ctx.database.getRowSelectable(t.rowKey)||(this.ctx.stageElement.style.cursor="not-allowed");return}if(t.drawHoverImageSource&&this.isInsideElement(r,o,t.drawHoverImageX,t.drawHoverImageY,t.drawHoverImageWidth,t.drawHoverImageHeight)){this.ctx.stageElement.style.cursor="pointer",this.ctx.isPointer=!0;return}if(t.drawTreeImageSource&&this.isInsideElement(r,o,t.drawTreeImageX,t.drawTreeImageY,t.drawTreeImageWidth,t.drawTreeImageHeight)){this.ctx.stageElement.style.cursor="pointer",this.ctx.isPointer=!0;return}}}isInsideElement(t,e,i,s,o,r){return t>i&&t<i+o&&e>s&&e<s+r}isBusy(t){const{offsetY:e,offsetX:i}=this.ctx.getOffset(t),s=e,o=i;if(!this.ctx.isTarget(t)||this.ctx.stageElement.style.cursor==="row-resize"||this.ctx.stageElement.style.cursor==="col-resize"||this.ctx.columnResizing||this.ctx.rowResizing)return!0;const{SCROLLER_TRACK_SIZE:r}=this.ctx.config;return!!(this.ctx.scrollerMove||this.ctx.scrollerFocus||s>this.ctx.stageHeight-r||o>this.ctx.stageWidth-r)}handleBodyEvent(t,e,i,s,o=!1){if(this.isInsideBody(e))for(const r of i){const a=r.fixedCells.concat(r.noFixedCells);for(const c of a){const h=c.getDrawX(),d=c.getDrawY();if(o){if(t>h&&t<h+c.visibleWidth&&e>d&&e<d+c.visibleHeight){s(c);return}}else if(t>h&&t<h+c.width&&e>d&&e<d+c.height){s(c);return}}}}handleHeaderEvent(t,e,i,s){for(const o of i){const r=o.getDrawX(),a=o.getDrawY();if(t>r&&t<r+o.width&&e>a&&e<a+o.height){s(o);return}}}isInsideBody(t){return t>this.ctx.body.y&&t<this.ctx.body.y+this.ctx.body.visibleHeight}destroy(){this.resizeObserver.unobserve(this.ctx.stageElement),this.mutationObserver.disconnect()}}class Ie{constructor(t,e){n(this,"eventBus");n(this,"eventBrowser");n(this,"eventTable");n(this,"containerElement");n(this,"stageElement");n(this,"canvasElement");n(this,"overlayerElement");n(this,"editorElement");n(this,"emptyElement");n(this,"contextMenuElement");n(this,"stageWidth",0);n(this,"stageHeight",0);n(this,"paint");n(this,"icons");n(this,"domSelectionStr","");n(this,"isMouseoverTargetContainer",!1);n(this,"mousedown",!1);n(this,"isPointer",!1);n(this,"rowResizing",!1);n(this,"columnResizing",!1);n(this,"scrollerMove",!1);n(this,"scrollerFocus",!1);n(this,"autofillMove",!1);n(this,"selectorMove",!1);n(this,"adjustPositioning",!1);n(this,"editing",!1);n(this,"onlyMergeCell",!1);n(this,"selectOnlyOne",!1);n(this,"hasSelection",!1);n(this,"hasTree",!1);n(this,"scrollY",0);n(this,"scrollX",0);n(this,"fixedLeftWidth",0);n(this,"fixedRightWidth",0);n(this,"lastCenterColIndex",0);n(this,"maxColIndex",0);n(this,"maxRowIndex",0);n(this,"hoverRow");n(this,"clickCell");n(this,"focusCell");n(this,"currentCell");n(this,"hoverCell");n(this,"clickCellHeader");n(this,"focusCellHeader");n(this,"hoverCellHeader");n(this,"body",{x:0,y:0,width:0,height:0,visibleHeight:0,visibleWidth:0,headIndex:0,tailIndex:0,visibleRows:[],renderRows:[],data:[]});n(this,"footer",{x:0,y:0,width:0,height:0,visibleHeight:0,visibleWidth:0,renderRows:[]});n(this,"header",{x:0,y:0,width:0,height:0,visibleHeight:0,visibleWidth:0,visibleLeafColumns:[],leafCellHeaders:[],renderLeafCellHeaders:[],renderCellHeaders:[],fixedLeftCellHeaders:[],fixedRightCellHeaders:[],renderCenterCellHeaders:[]});n(this,"selector",{enable:!1,xArr:[-1,-1],yArr:[-1,-1],xArrCopy:[-1,-1],yArrCopy:[-1,-1]});n(this,"autofill",{enable:!1,xArr:[-1,-1],yArr:[-1,-1]});n(this,"database");n(this,"history");n(this,"config");const{containerElement:i,stageElement:s,canvasElement:o,overlayerElement:r,editorElement:a,emptyElement:c,contextMenuElement:h}=t;this.containerElement=i,s.tabIndex=0,this.stageElement=s,this.canvasElement=o,this.overlayerElement=r,this.editorElement=a,this.emptyElement=c,this.contextMenuElement=h,this.config=new It(e.config||{}),this.eventBus=new me,this.eventBrowser=new we(this),this.eventTable=new be(this),this.paint=new Ee(this.canvasElement),this.database=new ue(this,e),this.history=new ge(this),this.icons=new Ce(this)}setConfig(t){this.config=new It(t)}setItemValueByEditor(t,e,i,s=!0,o=!0,r=!0){if(this.config.ENABLE_MERGE_CELL_LINK){const a=this.database.getVirtualBodyCellByKey(t,e);if(a&&(a.mergeRow||a.mergeCol)){const{dataList:c}=a.getSpanInfo(),h=c.map(d=>({...d,value:i}));this.database.batchSetItemValue(h,s,r);return}}this.database.setItemValue(t,e,i,s,o,!0,r)}batchSetItemValueByEditor(t,e=!0,i=!0){if(this.config.ENABLE_MERGE_CELL_LINK){const s=[];t.forEach(o=>{const r=this.database.getRowIndexForRowKey(o.rowKey),a=this.database.getColIndexForKey(o.key);if(r===void 0||a===void 0)return;const c=this.database.getVirtualBodyCell(r,a);if(c){const{dataList:h}=c.getSpanInfo(),d=h.map(f=>({...f,value:o.value}));s.push(...d)}}),this.database.batchSetItemValue(s,e,i)}else this.database.batchSetItemValue(t,e,i)}setFocusCell(t){var e;if(this.focusCell!==t){if(((e=this.focusCell)==null?void 0:e.rowKey)!==t.rowKey){this.currentCell=t,this.emit("rowFocusChange",t);const i={rowIndex:t.rowIndex,rowKey:t.rowKey,row:t.row};this.emit("currentRowChange",i)}this.focusCell=t,this.emit("cellFocusChange",t)}}clearSelector(){this.selector.enable=!1,this.selector.xArr=[-1,-1],this.selector.yArr=[-1,-1],this.emit("clearSelector")}clearSelectorCopy(){this.selector.xArrCopy=[-1,-1],this.selector.yArrCopy=[-1,-1]}clearAutofill(){this.autofill={enable:!1,xArr:[-1,-1],yArr:[-1,-1]}}getSelectedData(){const t=[],e=this.selector.yArr,i=this.selector.xArr;let s="";for(let o=0;o<=e[1]-e[0];o++){const r=[];for(let a=0;a<=i[1]-i[0];a++){const c=o+e[0],h=a+i[0],d=this.database.getVirtualBodyCell(c,h);d&&(d.selectorCellValueType==="displayText"?r.push(d.displayText):r.push(d.getValue()))}s+=`${r.join(" ")}\r`,t.push(r)}return s=s?s.replace(/\r$/,""):" ",{xArr:i,yArr:e,text:s,value:t}}setScroll(t,e){let i=Math.floor(t);const s=this.body.width-this.body.visibleWidth;i<0?i=0:i>s&&(i=s);let o=Math.floor(e),r=this.body.height-this.body.visibleHeight;this.config.FOOTER_FIXED||(r=this.body.height+this.footer.height-this.body.visibleHeight),o<0?o=0:o>r&&(o=r),this.emit("setScroll",i,o)}setScrollX(t){let e=Math.floor(t);const i=this.body.width-this.body.visibleWidth;e<0?e=0:e>i&&(e=i),this.emit("setScrollX",e)}setScrollY(t){let e=Math.floor(t),i=0;this.config.FOOTER_FIXED||(i=this.footer.height);const s=this.body.height-this.body.visibleHeight+i;e<0?e=0:e>s&&(e=s),this.emit("setScrollY",e)}isTarget(t){return!!this.containerElement.contains(t.target)}getOffset(t){const{left:e,top:i}=this.containerElement.getBoundingClientRect();return{offsetX:t.clientX-e,offsetY:t.clientY-i}}hasEvent(t){return this.eventBus.has(t)}on(t,e){this.eventBus.on(t,e)}once(t,e){this.eventBus.once(t,e)}off(t,e){this.eventBus.off(t,e)}emit(t,...e){this.eventBus.emit(t,...e)}destroy(){this.eventTable.destroy(),this.eventBrowser.destroy(),this.eventBus.destroy()}}class St{constructor(t,e){n(this,"ctx");n(this,"type");n(this,"isFocus",!1);n(this,"trackX",0);n(this,"trackY",0);n(this,"trackWidth",0);n(this,"trackHeight",0);n(this,"splitPoints",[]);n(this,"barX",0);n(this,"barY",0);n(this,"barWidth",0);n(this,"barHeight",0);n(this,"distance",0);n(this,"visibleDistance",0);n(this,"clientX",0);n(this,"clientY",0);n(this,"dragStart",0);n(this,"isDragging",!1);n(this,"scroll",0);this.ctx=t,this.type=e,this.type==="vertical"?this.scroll=this.ctx.scrollY:this.scroll=this.ctx.scrollX}onWheel(t){this.updateScroll(t)}onTouchmove(t){const{clientY:e,clientX:i}=t.touches[0],s=e-this.clientY,o=i-this.clientX;let r=0;this.type==="vertical"?(r=Math.max(0,Math.min(this.dragStart-s,this.distance)),this.hasScrollbar()&&!(r===0&&s>0||r===this.distance&&s<0)&&t.preventDefault()):this.type==="horizontal"&&(r=Math.max(0,Math.min(this.dragStart-o,this.distance))),this.scroll=r}onTouchstart(t){const{clientY:e,clientX:i}=t.touches[0];this.clientX=i,this.clientY=e,this.dragStart=this.scroll}onMouseDown(t){if(!(t.target instanceof Element)||!this.ctx.isTarget(t))return;if(this.ctx.stageElement.style.cursor==="row-resize"||this.ctx.stageElement.style.cursor==="col-resize")return!0;const{offsetX:e,offsetY:i,clientX:s,clientY:o}=t;if(!(s==this.clientX&&o==this.clientY)){if(this.isOnScrollbar(e,i))this.clientX=s,this.clientY=o,this.isDragging=!0,this.ctx.scrollerMove=!0,this.isFocus=!0,this.dragStart=this.scroll,t.preventDefault();else if(this.isOnTrack(e,i)){let r=0;this.type==="vertical"?r=(i-this.ctx.header.height-this.barHeight/2)/(this.visibleDistance-this.barHeight)*this.distance:r=(e-this.barWidth/2)/(this.visibleDistance-this.barWidth)*this.distance,this.scroll=Math.max(0,Math.min(r,this.distance))}}}onMouseUp(){this.isDragging=!1,this.isFocus=!1,this.clientX=0,this.clientY=0}onMouseMove(t){const{offsetX:e,offsetY:i,clientX:s,clientY:o,buttons:r}=t;if(this.isOnScrollbar(e,i)&&t.target===this.ctx.canvasElement?this.isFocus=!0:this.isFocus=!1,r===0||s==this.clientX&&o==this.clientY)return;let a=0;if(this.type==="horizontal"?a=s-this.clientX:a=o-this.clientY,this.isDragging&&a!==0){let c=0;this.type==="vertical"?c=this.dragStart+a/(this.visibleDistance-this.barHeight)*this.distance:c=this.dragStart+a/(this.visibleDistance-this.barWidth)*this.distance,this.scroll=Math.max(0,Math.min(c,this.distance))}}isPointInElement(t,e,i,s,o,r){return t>=i&&t<=i+o&&e>=s&&e<=s+r}hasScrollbar(){return this.type==="vertical"?this.barHeight>0:this.type==="horizontal"?this.barWidth>0:!1}isOnScrollbar(t,e){return this.isPointInElement(t,e,this.barX,this.barY,this.barWidth,this.barHeight)}isOnTrack(t,e){return this.isPointInElement(t,e,this.trackX,this.trackY,this.trackWidth,this.trackHeight)}updateScroll(t){const e=t.deltaX,i=t.deltaY;this.type==="vertical"&&t.shiftKey===!1?(this.hasScrollbar()&&!(this.scroll===0&&i<0||this.scroll===this.distance&&i>0)&&t.preventDefault(),this.scroll=Math.max(0,Math.min(this.scroll+i,this.distance))):this.type==="horizontal"&&(t.shiftKey?this.scroll=Math.max(0,Math.min(this.scroll+i,this.distance)):this.scroll=Math.max(0,Math.min(this.scroll+e,this.distance)))}updatedSize(){const{body:t,header:e,stageHeight:i,stageWidth:s,config:{SCROLLER_TRACK_SIZE:o=0,SCROLLER_SIZE:r=0,BORDER:a}}=this.ctx,c=s,h=i,d=e.height,f=e.width,u=t.height,x=this.ctx.footer.height;if(this.type==="vertical"){this.visibleDistance=h-o-d,this.distance=u-this.visibleDistance+x,this.trackX=c-o,this.trackY=0,this.splitPoints=[this.trackX,d,this.trackX+o,d],this.trackWidth=o,this.trackHeight=h,this.barX=this.trackX-1+(o-r)/2,this.barWidth=r;const w=this.distance?this.visibleDistance/(u+x):0;let m=Math.floor(w*this.visibleDistance);m<30?m=30:m>this.visibleDistance&&(m=0),this.barHeight=m,this.barY=d+this.scroll/this.distance*(this.visibleDistance-this.barHeight),this.scroll=Math.max(0,Math.min(this.scroll,this.distance))}else{this.visibleDistance=c-o,this.distance=f-this.visibleDistance,this.splitPoints=[c-o,h-o,c-o,h];const w=a?0:.5;this.trackX=0,this.trackY=h-o+w,this.trackWidth=c,this.trackHeight=o;const m=this.distance?this.visibleDistance/f:0;let g=Math.floor(m*this.visibleDistance);this.barY=this.trackY-1+(o-r)/2,g<30?g=30:g>=this.visibleDistance&&(g=0),this.barWidth=g,this.barHeight=r,this.barX=this.scroll/this.distance*(this.visibleDistance-this.barWidth),this.scroll=Math.max(0,Math.min(this.scroll,this.distance))}}draw(){const{config:{SCROLLER_FOCUS_COLOR:t,SCROLLER_COLOR:e,BORDER_COLOR:i,BORDER:s,SCROLLER_TRACK_COLOR:o}}=this.ctx;this.updatedSize();let r=i;s||(r="transparent"),this.ctx.paint.drawRect(this.trackX,this.trackY,this.trackWidth,this.trackHeight,{borderColor:r,fillColor:o}),this.ctx.paint.drawRect(this.barX,this.barY,this.barWidth,this.barHeight,{fillColor:this.isFocus||this.isDragging?t:e,radius:4}),this.splitPoints.length>0&&this.ctx.paint.drawLine(this.splitPoints,{borderColor:r,borderWidth:1}),this.ctx.scrollerFocus=this.isFocus}}class Re{constructor(t){n(this,"ctx");n(this,"verticalScrollbar");n(this,"horizontalScrollbar");this.ctx=t,this.verticalScrollbar=new St(t,"vertical"),this.horizontalScrollbar=new St(t,"horizontal"),this.ctx.on("wheel",e=>this.onWheel(e)),this.ctx.on("mousedown",e=>this.onMouseDown(e)),this.ctx.on("mousemove",e=>this.onMouseMove(e)),this.ctx.on("mouseup",()=>this.onMouseUp()),this.ctx.on("touchmove",e=>this.onTouchmove(e)),this.ctx.on("touchstart",e=>{this.onTouchstart(e)}),this.ctx.on("setScroll",(e,i)=>{this.setScroll(e,i)}),this.ctx.on("setScrollX",e=>{this.setScrollX(e)}),this.ctx.on("setScrollY",e=>{this.setScrollY(e)})}onWheel(t){this.verticalScrollbar.onWheel(t),this.horizontalScrollbar.onWheel(t),this.draw()}onTouchmove(t){this.verticalScrollbar.onTouchmove(t),this.horizontalScrollbar.onTouchmove(t),this.draw()}onTouchstart(t){this.verticalScrollbar.onTouchstart(t),this.horizontalScrollbar.onTouchstart(t),this.draw()}onMouseDown(t){this.verticalScrollbar.onMouseDown(t),this.horizontalScrollbar.onMouseDown(t),this.draw()}onMouseMove(t){this.verticalScrollbar.onMouseMove(t),this.horizontalScrollbar.onMouseMove(t),this.draw()}onMouseUp(){this.verticalScrollbar.onMouseUp(),this.horizontalScrollbar.onMouseUp(),this.ctx.scrollerMove=!1}draw(){this.verticalScrollbar.draw(),this.horizontalScrollbar.draw();const t=Math.floor(this.horizontalScrollbar.scroll),e=Math.floor(this.verticalScrollbar.scroll);(t!==this.ctx.scrollX||e!==this.ctx.scrollY)&&(this.ctx.emit("onScroll",t,e),t!==this.ctx.scrollX&&this.ctx.emit("onScrollX",t),e!==this.ctx.scrollY&&this.ctx.emit("onScrollY",e),this.ctx.scrollX=t,this.ctx.scrollY=e,this.ctx.emit("draw"))}setScroll(t,e){this.horizontalScrollbar.scroll=t,this.verticalScrollbar.scroll=e,this.ctx.emit("draw"),this.ctx.emit("onScroll",t,e)}setScrollX(t){this.horizontalScrollbar.scroll=t,this.ctx.emit("draw")}setScrollY(t){this.verticalScrollbar.scroll=t,this.ctx.emit("draw")}scrollToColkey(t){const{header:e}=this.ctx,i=e.leafCellHeaders.find(s=>s.key===t);i&&this.setScrollX(i.x-e.visibleWidth/2)}scrollToColIndex(t){const{header:e}=this.ctx,i=e.leafCellHeaders.find(s=>s.colIndex===t);i&&i.x>e.visibleWidth/2&&this.setScrollX(i.x-e.visibleWidth/2)}scrollToRowIndex(t){const{body:e,database:i}=this.ctx,{top:s}=i.getPositionForRowIndex(t);s>e.visibleHeight&&this.setScrollY(s-e.visibleHeight/2)}scrollToRowKey(t){const{body:e,database:i}=this.ctx,s=i.getRowIndexForRowKey(t);if(s===void 0)return;const{top:o}=i.getPositionForRowIndex(s);this.setScrollY(o-e.visibleHeight/2)}}class Se{constructor(t){n(this,"ctx");n(this,"x",0);n(this,"y",0);n(this,"width",0);n(this,"height",0);n(this,"resizeTarget",null);n(this,"resizeNum",0);n(this,"isResizing",!1);n(this,"clientX",0);n(this,"resizeDiff",0);n(this,"columnIndex",0);n(this,"isMouseDown",!1);n(this,"columns");n(this,"visibleLeafColumns",[]);n(this,"visibleHeight",0);n(this,"visibleWidth",0);n(this,"allCellHeaders",[]);n(this,"leafCellHeaders",[]);n(this,"renderLeafCellHeaders",[]);n(this,"fixedLeftCellHeaders",[]);n(this,"centerCellHeaders",[]);n(this,"fixedRightCellHeaders",[]);n(this,"renderCenterCellHeaders",[]);n(this,"renderFixedCellHeaders",[]);this.ctx=t,this.ctx.on("resetHeader",Ht(()=>{this.init(),this.ctx.emit("draw")},100)),this.init(),this.initResizeColumn()}init(){const{config:{HEADER_HEIGHT:t,SCROLLER_TRACK_SIZE:e}}=this.ctx,i=this.ctx.database.getColumns();this.columns=i,this.allCellHeaders=[],this.leafCellHeaders=[],this.fixedLeftCellHeaders=[],this.fixedRightCellHeaders=[],this.centerCellHeaders=[];const s=Dt(i),o=et(i);this.height=t*s,this.width=o.reduce((f,u)=>{const x=u.width||100,{maxWidth:w,minWidth:m}=u;return w&&x>w?f+w:m&&x<m?f+m:f+x},0),this.visibleHeight=this.height;const r=ne(Nt(i,s));this.columnIndex=0,this.resizeNum=0,this.render(r,0),this.ctx.database.updateColIndexKeyMap(this.leafCellHeaders);const a=this.ctx.containerElement.getBoundingClientRect();this.resizeNum>0?this.ctx.stageWidth=Math.floor(a.width):this.ctx.stageWidth=Math.floor(this.width+e),this.ctx.stageElement.style.width=this.ctx.stageWidth+"px",this.visibleWidth=this.ctx.stageWidth-e;const c=this.visibleWidth-this.width;if(this.resizeNum&&c>0){const f=Math.floor(c/this.resizeNum*100)/100;this.resizeAllColumn(f)}const h=this.fixedLeftCellHeaders.filter(f=>!f.hasChildren);this.ctx.fixedLeftWidth=h.reduce((f,u)=>f+u.width,0);const d=this.fixedRightCellHeaders.filter(f=>!f.hasChildren);this.ctx.fixedRightWidth=d.reduce((f,u)=>f+u.width,e),this.ctx.maxColIndex=this.leafCellHeaders.length-1,this.ctx.header.x=this.x,this.ctx.header.y=this.y,this.ctx.header.width=this.width,this.ctx.header.height=this.height,this.ctx.header.visibleWidth=this.visibleWidth,this.ctx.header.visibleHeight=this.visibleHeight}initResizeColumn(){const{config:{ENABLE_RESIZE_COLUMN:t}}=this.ctx;t&&(this.ctx.on("mousedown",e=>{this.ctx.isTarget(e)&&(this.clientX=e.clientX,this.resizeTarget?(this.isResizing=!0,this.ctx.columnResizing=!0):this.isResizing=!1,this.isMouseDown=!0)}),this.ctx.on("mouseup",()=>{this.isMouseDown=!1,this.resizeDiff!==0&&this.resizeTarget&&this.resizeColumn(this.resizeTarget,this.resizeDiff),this.resizeTarget=null,this.isResizing=!1,this.isMouseDown=!1,this.ctx.columnResizing=!1,this.clientX=0,this.resizeDiff=0}),this.ctx.on("mousemove",e=>{if(this.ctx.editing)return;const{stageWidth:i,config:{RESIZE_COLUMN_MIN_WIDTH:s}}=this.ctx;if(this.isResizing&&this.resizeTarget){const o=this.resizeTarget.width,r=this.resizeTarget.minWidth,a=this.resizeTarget.maxWidth;let c=e.clientX-this.clientX;c+o<s&&(c=-(o-s)),r&&c+o<r&&(c=-(o-r)),a&&c+o>a&&(c=a-o),this.resizeDiff=c,this.ctx.emit("draw")}else{if(this.resizeTarget=null,this.isMouseDown)return;if(e.offsetX<0||e.offsetX>this.visibleWidth){this.ctx.stageElement.style.cursor==="col-resize"&&(this.ctx.stageElement.style.cursor="default");return}this.ctx.stageElement.style.cursor==="col-resize"&&(this.ctx.stageElement.style.cursor="default");const o=[...this.renderFixedCellHeaders,...this.renderCenterCellHeaders];for(const r of o){const{offsetX:a,offsetY:c}=this.ctx.getOffset(e),h=a,d=r.getDrawX();h>d+r.width-5&&h<d+r.width+4&&h<i-4&&r.colspan<=1&&this.ctx.isTarget(e)&&c<=this.height&&(this.ctx.stageElement.style.cursor="col-resize",this.resizeTarget=r)}}}))}resizeColumn(t,e){const i=o=>{o.forEach(r=>{if(r.children&&r.children.length>0&&i(r.children),r.key===t.key){const a=r.width||100;r.width=a+e}})};i(this.columns),this.ctx.database.setColumns(this.columns),this.init(),this.ctx.emit("draw");let s=0;if(this.width<this.visibleWidth){const o=this.visibleWidth-this.width;s=Math.floor(o/this.resizeNum*100)/100,this.resizeAllColumn(s),this.ctx.emit("draw")}this.ctx.emit("resizeColumnChange",{colIndex:t.colIndex,key:t.key,oldWidth:t.width,width:t.width+e+s,column:t.column,columns:this.columns})}resizeAllColumn(t){if(t===0)return;const e=new Map;let i=!0;for(const o of this.allCellHeaders)if(o.widthFillDisable)e.set(o.key,o.width);else{const r=o.width+t*o.colspan;e.set(o.key,r),r<this.ctx.config.RESIZE_COLUMN_MIN_WIDTH&&(i=!1)}if(!i)return;const s=o=>{o.forEach(r=>{e.has(r.key)&&(r.width=e.get(r.key)),r.children&&r.children.length>0&&s(r.children)})};s(this.columns),this.ctx.database.setColumns(this.columns),this.init()}render(t,e){const i=t.length;let s=e;const{HEADER_HEIGHT:o=0}=this.ctx.config;for(let r=0;r<i;r++){const a=t[r],c=o*(a.rowspan||0),h=o*(a.level||0);let{minWidth:d,maxWidth:f}=a,u=a.width||100;d&&u<d&&(u=d),f&&u>f&&(u=f),a.children&&(u=et(a.children).reduce((m,g)=>m+((g==null?void 0:g.width)||100),0));const x=new ht(this.ctx,this.columnIndex,s,h,u,c,a);this.ctx.database.setHeader(a.key,x),this.allCellHeaders.push(x),a.children||(this.leafCellHeaders.push(x),x.column.widthFillDisable||this.resizeNum++),a.fixed==="left"?this.fixedLeftCellHeaders.push(x):a.fixed==="right"?this.fixedRightCellHeaders.push(x):this.centerCellHeaders.push(x),!a.children&&this.columnIndex++,a.children&&this.render(a.children,s),s+=u}}drawTipLine(){if(this.isResizing&&this.resizeTarget){const{stageHeight:t,config:{RESIZE_COLUMN_LINE_COLOR:e}}=this.ctx,i=this.resizeTarget.getDrawX(),s=this.resizeTarget.width,o=i+s+this.resizeDiff-.5,r=[o-.5,0,o-.5,t];this.ctx.paint.drawLine(r,{borderColor:e,borderWidth:1})}}drawFixedShadow(){const{fixedLeftWidth:t,fixedRightWidth:e,scrollX:i,header:s,stageWidth:o,config:{HEADER_BG_COLOR:r,SCROLLER_TRACK_SIZE:a}}=this.ctx;if(i>0&&t!==0&&this.ctx.paint.drawShadow(this.x,this.y,t,this.height,{fillColor:r,side:"right",shadowWidth:4,colorStart:"rgba(0,0,0,0.1)",colorEnd:"rgba(0,0,0,0)"}),i<Math.floor(s.width-o-1)&&e!==a){const c=s.width-(this.x+this.width)+o-e;this.ctx.paint.drawShadow(c,this.y,e,this.height,{fillColor:r,side:"left",shadowWidth:4,colorStart:"rgba(0,0,0,0)",colorEnd:"rgba(0,0,0,0.1)"})}}update(){const t=[],e=[],i=[];if(this.centerCellHeaders.length){const s=this.centerCellHeaders[this.centerCellHeaders.length-1];this.ctx.lastCenterColIndex=s.colIndex}this.centerCellHeaders.forEach(s=>{s.isHorizontalVisible()&&s.isVerticalVisible()&&(e.push(s),s.hasChildren||t.push(s))}),this.fixedLeftCellHeaders.forEach(s=>{i.push(s),s.hasChildren||t.push(s)}),this.fixedRightCellHeaders.forEach(s=>{i.push(s),s.hasChildren||t.push(s)}),this.renderCenterCellHeaders=e,this.renderFixedCellHeaders=i,this.renderLeafCellHeaders=t.sort((s,o)=>s.x-o.x),this.visibleLeafColumns=this.renderLeafCellHeaders.map(s=>s.column),this.ctx.header.visibleLeafColumns=this.visibleLeafColumns,this.ctx.header.leafCellHeaders=this.leafCellHeaders,this.ctx.header.renderLeafCellHeaders=this.renderLeafCellHeaders,this.ctx.header.renderCellHeaders=this.renderFixedCellHeaders.concat(this.renderCenterCellHeaders)}drawBottomLine(){const{stageWidth:t,config:{BORDER_COLOR:e}}=this.ctx,i=[0,this.height,t,this.height];this.ctx.paint.drawLine(i,{borderColor:e,borderWidth:1})}draw(){this.renderCenterCellHeaders.forEach(t=>{t.update(),t.draw()}),this.drawFixedShadow(),this.renderFixedCellHeaders.forEach(t=>{t.update(),t.draw()}),this.drawTipLine(),this.drawBottomLine()}}class Bt{constructor(t,e,i=0,s=0,o=0,r=0,a,c="body"){n(this,"ctx");n(this,"x",0);n(this,"y",0);n(this,"width",0);n(this,"height");n(this,"cells",[]);n(this,"fixedCells",[]);n(this,"noFixedCells",[]);n(this,"rowIndex",0);n(this,"rowKey","");n(this,"rowType","body");n(this,"data");this.ctx=t,this.x=i,this.y=s,this.width=o,this.height=r,this.rowIndex=e,this.rowKey=t.database.getRowKeyForRowIndex(e)||"",this.rowType=c,this.data=a,this.update()}update(){const{header:t}=this.ctx,e=[],i=[],s=[];t.renderLeafCellHeaders.forEach(o=>{const r=new xt(this.ctx,this.rowIndex,o.colIndex,o.x,this.y,o.width,this.height,o.column,this.data,this.rowType);r.fixed?i.push(r):s.push(r),e.push(r)}),this.cells=e,this.fixedCells=i,this.noFixedCells=s}drawCenter(){this.noFixedCells.forEach(t=>{t.draw()})}drawFixed(){this.fixedCells.forEach(t=>{t.draw()})}drawContainer(){this.noFixedCells.forEach(t=>{t.drawContainer()})}drawFixedContainer(){this.fixedCells.forEach(t=>{t.drawContainer()})}}class ve{constructor(t){n(this,"resizeTarget",null);n(this,"isMouseDown",!1);n(this,"resizeDiff",0);n(this,"clientY",0);n(this,"ctx");n(this,"x",0);n(this,"y",0);n(this,"width",0);n(this,"height",0);n(this,"headIndex",0);n(this,"tailIndex",0);n(this,"isResizing",!1);n(this,"renderRows",[]);n(this,"visibleRows",[]);n(this,"visibleHeight",0);n(this,"visibleWidth",0);n(this,"containerRect");n(this,"data",[]);this.ctx=t,this.init(),this.initResizeRow()}init(){const{canvasElement:t,header:e,footer:i,database:s,config:{FOOTER_FIXED:o,SCROLLER_TRACK_SIZE:r=0,HEIGHT:a,EMPTY_BODY_HEIGHT:c=0,MAX_HEIGHT:h=0,ENABLE_OFFSET_HEIGHT:d=0,OFFSET_HEIGHT:f=0,FOOTER_POSITION:u}}=this.ctx;if(!e.width)return;this.x=0,u==="top"&&o?this.y=e.height+i.height:this.y=e.height;const{data:x,sumHeight:w}=s.getData();this.height=w,this.data=x,this.width=e.width,this.visibleWidth=this.ctx.stageWidth-r;const m=this.ctx.footer.height;!this.data.length&&!a?this.height=c:!this.data.length&&a&&(this.height=a-e.height-m-r);let g=this.height+e.height+r;g+=m;let E=g;const y=window.innerHeight,{top:p}=this.containerRect||this.ctx.containerElement.getBoundingClientRect();if(y>p&&d&&!a){const O=y-p-f;O>e.height+r?E=O:g>h&&(E=h)}else this.data.length&&a?E=a:this.data.length&&h&&g>h&&(E=h);E>0&&(this.ctx.stageHeight=Math.floor(E),this.ctx.stageElement.style.height=`${this.ctx.stageHeight}px`);let b=this.ctx.stageHeight-e.height-r;o?this.visibleHeight=b-m:this.visibleHeight=b,this.data.length||(this.height=this.visibleHeight),this.ctx.body.x=this.x,this.ctx.body.y=this.y,this.ctx.body.width=this.width,this.ctx.body.height=this.height,this.ctx.body.visibleWidth=this.visibleWidth,this.ctx.body.visibleHeight=this.visibleHeight,this.ctx.body.data=x;const C=window.devicePixelRatio||1,R=this.ctx.stageWidth*C,v=this.ctx.stageHeight*C;t.width=Math.round(R),t.height=Math.round(v);const T=this.data.length?"not-empty":"empty";this.ctx.emit("emptyChange",{isEmpty:T,type:T,headerHeight:e.height,bodyHeight:this.height,footerHeight:m,width:this.width,height:this.data.length?0:c+m});const S=Math.round(t.width/C*1e4)/1e4,I=Math.round(t.height/C*1e4)/1e4;this.ctx.canvasElement.setAttribute("style",`height:${I}px;width:${S}px;`),this.ctx.paint.scale(C)}initResizeRow(){const{config:{ENABLE_RESIZE_ROW:t}}=this.ctx;t&&(this.ctx.on("resize",()=>{this.containerRect=this.ctx.containerElement.getBoundingClientRect()}),this.ctx.on("resizeObserver",()=>{this.containerRect=this.ctx.containerElement.getBoundingClientRect()}),this.ctx.on("mouseup",()=>{this.isMouseDown=!1,this.resizeDiff!==0&&this.resizeTarget&&this.resizeRow(this.resizeTarget,this.resizeDiff),this.resizeTarget=null,this.resizeDiff=0,this.isResizing=!1,setTimeout(()=>{this.ctx.rowResizing=!1},0),this.clientY=0}),this.ctx.on("mousedown",e=>{this.ctx.isTarget(e)&&(this.clientY=e.clientY,this.resizeTarget?(this.isResizing=!0,this.ctx.rowResizing=!0):(this.isResizing=!1,this.ctx.rowResizing=!1),this.isMouseDown=!0)}),this.ctx.on("mousemove",e=>{if(this.ctx.editing)return;const{offsetY:i,offsetX:s}=this.ctx.getOffset(e),o=i,r=s,a=e.clientY,{stageHeight:c,scrollY:h,config:{RESIZE_ROW_MIN_HEIGHT:d=0}}=this.ctx;if(this.isResizing&&this.resizeTarget){const f=this.resizeTarget.height;let u=a-this.clientY;u+f<d&&(u=-(f-d)),this.resizeDiff=u,this.ctx.emit("draw")}else{if(this.resizeTarget=null,this.isMouseDown)return;if(r<0||r>this.ctx.body.visibleWidth||o<0||o>this.ctx.header.visibleHeight+this.ctx.body.visibleHeight){this.ctx.stageElement.style.cursor==="row-resize"&&(this.ctx.stageElement.style.cursor="default");return}if(this.ctx.stageElement.style.cursor==="crosshair")return;this.ctx.stageElement.style.cursor==="row-resize"&&(this.ctx.stageElement.style.cursor="default");for(let f=0;f<this.renderRows.length;f++){const u=this.renderRows[f];if(o>u.y-h+u.height-1.5&&o<u.y-h+u.height+1.5&&o<c-4)for(let w=0;w<u.cells.length;w++){const m=u.cells[w];r>m.drawX+10&&r<m.drawX+m.width-10&&m.rowspan===1&&(this.ctx.stageElement.style.cursor="row-resize",this.resizeTarget=u)}}}}))}resizeRow(t,e){const{rowIndex:i,height:s,rowKey:o,data:r}=t;this.ctx.database.setRowHeight(i,s+e),this.init(),this.ctx.emit("draw"),this.ctx.emit("resizeRowChange",{rowIndex:i,oldHeight:s,height:s+e,rowKey:o,row:r,data:this.data})}drawTipLine(){if(this.isResizing&&this.resizeTarget){const{stageWidth:t,scrollY:e,config:{RESIZE_ROW_LINE_COLOR:i}}=this.ctx,s=this.resizeTarget.y-e,o=this.resizeTarget.height,r=s+o+this.resizeDiff-.5,a=[0,r-.5,t,r-.5];this.ctx.paint.drawLine(a,{borderColor:i,borderWidth:1})}}drawFixedShadow(){const{fixedLeftWidth:t,fixedRightWidth:e,scrollX:i,header:s,stageWidth:o,config:{HEADER_BG_COLOR:r,SCROLLER_TRACK_SIZE:a}}=this.ctx;if(i>0&&t!==0&&this.ctx.paint.drawShadow(this.x,this.y,t,this.height,{fillColor:r,side:"right",shadowWidth:4,colorStart:"rgba(0,0,0,0.1)",colorEnd:"rgba(0,0,0,0)"}),i<Math.floor(s.width-o-1)&&e!==a){const c=s.width-(this.x+this.width)+o-e;this.ctx.paint.drawShadow(c,this.y,e,this.height,{fillColor:r,side:"left",shadowWidth:4,colorStart:"rgba(0,0,0,0)",colorEnd:"rgba(0,0,0,0.1)"})}}binarySearch(t,e){let i=0,s=t.length-1,o=-1;for(;i<=s;){let r=Math.floor((i+s)/2),a=t[r].bottom;if(a===e)return r;a<e?i=r+1:(o=r,s=r-1)}return o}update(){this.init();const{header:t,database:e,scrollY:i,config:{CELL_HEIGHT:s}}=this.ctx,o=i,{data:r,positions:a}=e.getData();this.ctx.maxRowIndex=r.length-1;let c=this.binarySearch(a,o),h=this.binarySearch(a,o+this.visibleHeight);if(h===-1&&(h=this.ctx.maxRowIndex),c===-1&&h===this.ctx.maxRowIndex){const f=Math.floor(this.visibleHeight/s);c=this.ctx.maxRowIndex-f}this.headIndex=Math.max(0,c),this.tailIndex=Math.min(this.ctx.maxRowIndex,h+1),this.visibleRows=r.slice(this.headIndex,this.tailIndex+1),this.ctx.body.headIndex=this.headIndex,this.ctx.body.tailIndex=this.tailIndex,this.ctx.body.visibleRows=this.visibleRows;const d=[];for(let f=0;f<this.visibleRows.length;f++){const u=this.headIndex+f,x=this.visibleRows[f],{height:w,top:m}=this.ctx.database.getPositionForRowIndex(u),g=new Bt(this.ctx,u,0,m+this.y,t.width,w,x);d.push(g)}this.renderRows=d,this.ctx.body.renderRows=d}draw(){this.renderRows.forEach(t=>{t.drawContainer()}),this.renderRows.forEach(t=>{t.drawCenter()}),this.drawFixedShadow(),this.renderRows.forEach(t=>{t.drawFixedContainer()}),this.renderRows.forEach(t=>{t.drawFixed()}),this.drawTipLine()}}class _e{constructor(t){n(this,"ctx");n(this,"renderRows",[]);n(this,"data",[]);n(this,"x",0);n(this,"y",0);n(this,"width",0);n(this,"height",0);n(this,"visibleWidth",0);n(this,"visibleHeight",0);this.ctx=t,this.init()}init(){this.data=this.ctx.database.getFooterData();const{header:t,body:e,config:{CELL_FOOTER_HEIGHT:i,FOOTER_FIXED:s,SCROLLER_TRACK_SIZE:o,FOOTER_POSITION:r}}=this.ctx;this.width=t.width,this.visibleWidth=t.visibleWidth,this.height=this.data.reduce(a=>a+i,0),this.visibleHeight=this.height,s?r==="top"?this.y=this.ctx.header.height:this.y=this.ctx.stageHeight-this.height-o:this.y=e.y+e.height,this.ctx.footer.x=this.x,this.ctx.footer.y=this.y,this.ctx.footer.height=this.height,this.ctx.footer.width=this.width,this.ctx.footer.visibleWidth=this.visibleWidth,this.ctx.footer.visibleHeight=this.visibleHeight}drawFixedShadow(){const{fixedLeftWidth:t,fixedRightWidth:e,scrollX:i,header:s,stageWidth:o,config:{HEADER_BG_COLOR:r,SCROLLER_TRACK_SIZE:a}}=this.ctx;let c=this.y;if(this.ctx.config.FOOTER_FIXED||(c=this.y-this.ctx.scrollY),i>0&&t!==0&&this.ctx.paint.drawShadow(this.x,c,t,this.height,{fillColor:r,side:"right",shadowWidth:4,colorStart:"rgba(0,0,0,0.1)",colorEnd:"rgba(0,0,0,0)"}),i<Math.floor(s.width-o-1)&&e!==a){const h=s.width-(this.x+this.width)+o-e;this.ctx.paint.drawShadow(h,c,e,this.height,{fillColor:r,side:"left",shadowWidth:4,colorStart:"rgba(0,0,0,0)",colorEnd:"rgba(0,0,0,0.1)"})}}update(){this.init();const{CELL_FOOTER_HEIGHT:t}=this.ctx.config;let e=this.y;const i=[];this.data.forEach((s,o)=>{const r=new Bt(this.ctx,o,0,e,this.width,t,s,"footer");e+=t,i.push(r)}),this.renderRows=i,this.ctx.footer.renderRows=this.renderRows}drawTopLine(){const{stageWidth:t,config:{BORDER_COLOR:e}}=this.ctx,i=[0,this.y,t,this.y];this.ctx.paint.drawLine(i,{borderColor:e,borderWidth:1})}draw(){this.renderRows.forEach(t=>{t.drawContainer()}),this.renderRows.forEach(t=>{t.drawCenter()}),this.drawFixedShadow(),this.renderRows.forEach(t=>{t.drawFixedContainer()}),this.renderRows.forEach(t=>{t.drawFixed()}),this.drawTopLine()}}class Te{constructor(t){n(this,"isCut",!1);n(this,"isMultipleRow",!1);n(this,"mousedownHeader",!1);n(this,"ctx");n(this,"adjustPositionX","");n(this,"adjustPositionY","");n(this,"timerX",0);n(this,"timerY",0);this.ctx=t,this.init()}init(){this.ctx.on("setMoveFocus",t=>{this.moveFocus(t)}),this.ctx.on("mousemove",Ht(t=>{const{offsetY:e,offsetX:i}=this.ctx.getOffset(t),s=this.ctx.isTarget(t)&&i>0&&i<this.ctx.body.visibleWidth&&e>this.ctx.header.visibleHeight&&e<this.ctx.header.visibleHeight+this.ctx.body.visibleHeight;(this.ctx.selectorMove||this.ctx.autofillMove)&&(!s&&!this.mousedownHeader?this.startAdjustPosition(t):this.stopAdjustPosition())},100)),this.ctx.on("cellHoverChange",t=>{if(!this.ctx.autofillMove){if(t.operation){this.selectRows(t,!1);return}this.isMultipleRow||this.mouseenter()}}),this.ctx.on("cellMousedown",(t,e)=>{if(!this.ctx.isTarget(e)||this.ctx.stageElement.style.cursor==="pointer"||this.ctx.isPointer||this.ctx.stageElement.style.cursor==="crosshair")return;if(t.operation){this.isMultipleRow=!0,this.selectRows(t);return}window.getComputedStyle(e.target).userSelect!=="text"&&e.preventDefault(),this.isMultipleRow=!1,this.click(e.shiftKey),this.ctx.emit("selectorClick",t)}),this.ctx.on("mouseup",()=>{this.mousedownHeader=!1;const t=setTimeout(()=>{this.ctx.adjustPositioning=!1,clearTimeout(t)},0)}),this.ctx.on("cellHeaderHoverChange",t=>{this.ctx.mousedown&&this.selectCols(t)}),this.ctx.on("cellHeaderMousedown",(t,e)=>{if(this.ctx.stageElement.style.cursor==="pointer"||this.ctx.isPointer)return;window.getComputedStyle(e.target).userSelect!=="text"&&e.preventDefault(),this.mousedownHeader=!0,this.selectCols(t)}),this.ctx.on("keydown",t=>{if(!this.ctx.editing){if(t.ctrlKey&&t.code==="KeyV"||t.metaKey&&t.code==="KeyV"){this.paste();return}if(t.ctrlKey&&t.code==="KeyC"||t.metaKey&&t.code==="KeyC"){this.copy(),this.isCut=!1;return}if(t.ctrlKey&&t.code==="KeyX"||t.metaKey&&t.code==="KeyX"){this.isCut=!0,this.copy();return}if((t.ctrlKey&&t.code==="KeyA"||t.metaKey&&t.code==="KeyA")&&(t.preventDefault(),this.selectAll()),t.code==="ArrowLeft"||t.shiftKey&&t.code==="Tab"){t.preventDefault(),this.moveFocus("LEFT");return}if(t.code==="ArrowUp"){t.preventDefault(),this.moveFocus("TOP");return}if(t.code==="ArrowRight"||t.code==="Tab"){t.preventDefault(),this.moveFocus("RIGHT");return}if(t.code==="ArrowDown"){t.preventDefault(),this.moveFocus("BOTTOM");return}if(t.code==="Delete"||t.code==="Backspace"){t.preventDefault();const{xArr:e,yArr:i}=this.ctx.selector;this.clearSelectedData(e,i);return}}}),this.ctx.on("contextMenuClearSelected",()=>{const{xArr:t,yArr:e}=this.ctx.selector;this.clearSelectedData(t,e)}),this.ctx.on("contextMenuCopy",()=>{this.copy()}),this.ctx.on("contextMenuPaste",()=>{this.paste()}),this.ctx.on("contextMenuCut",()=>{this.isCut=!0,this.copy()}),this.ctx.on("setSelectorCell",t=>{this.ctx.setFocusCell(t),this.click()}),this.ctx.on("mouseup",()=>{this.ctx.selectorMove=!1,this.stopAdjustPosition()})}setSelector(t,e){const{ENABLE_SELECTOR_SPAN_COL:i,ENABLE_SELECTOR_SPAN_ROW:s}=this.ctx.config;let o=t,r=e;if(!s){const[a]=r;r=[a,a]}if(!i){const[a]=o;o=[a,a]}if(JSON.stringify(this.ctx.selector.xArr)!==JSON.stringify(o)||JSON.stringify(this.ctx.selector.yArr)!==JSON.stringify(r)){this.ctx.mousedown&&(this.ctx.selectorMove=!0),this.ctx.selector.enable=!0;const{SELECTOR_AREA_MIN_X:a,SELECTOR_AREA_MAX_X:c,SELECTOR_AREA_MIN_Y:h,SELECTOR_AREA_MAX_Y:d,SELECTOR_AREA_MAX_X_OFFSET:f,SELECTOR_AREA_MAX_Y_OFFSET:u}=this.ctx.config,x=a,w=c||this.ctx.maxColIndex-f,m=h,g=d||this.ctx.maxRowIndex-u;let[E,y]=o,[p,b]=r;if(E<x||y>w||p<m||b>g)return;if(this.ctx.stageElement.focus({preventScroll:!0}),this.ctx.config.ENABLE_MERGE_CELL_LINK){const R=this.adjustMergeCells(o,r);p=R.yArr[0],b=R.yArr[1],E=R.xArr[0],y=R.xArr[1],this.ctx.onlyMergeCell=R.onlyMergeCell}E===y&&p===b?this.ctx.selectOnlyOne=!0:this.ctx.selectOnlyOne=!1,o=[Math.max(x,E),Math.min(w,y)],r=[Math.max(m,p),Math.min(g,b)];const{BEFORE_SET_SELECTOR_METHOD:C}=this.ctx.config;if(typeof C=="function"){const v=C({focusCell:this.ctx.focusCell,xArr:o,yArr:r});if(!v)return;o=v.xArr,r=v.yArr}this.ctx.selector.xArr=o,this.ctx.selector.yArr=r,this.ctx.emit("setSelector",this.ctx.selector),this.ctx.emit("drawView")}}adjustMergeCells(t,e){var w;const[i,s]=e,[o,r]=t;let a=[],c=[];for(let m=0;m<=e[1]-e[0];m++)for(let g=0;g<=t[1]-t[0];g++){const E=m+e[0],y=g+t[0],p=this.ctx.database.getVirtualBodyCell(E,y);p&&((E===i||E===s)&&a.push(p),(y===o||y===r)&&c.push(p))}const h=a.reduce((m,g)=>{const{yArr:E}=g.getSpanInfo(),[y,p]=E;return m.minY=Math.min(m.minY,y),m.maxY=Math.max(m.maxY,p),m},{minY:i,maxY:s}),d=c.reduce((m,g)=>{const{xArr:E}=g.getSpanInfo(),[y,p]=E;return m.minX=Math.min(m.minX,y),m.maxX=Math.max(m.maxX,p),m},{minX:o,maxX:r}),f=[d.minX,d.maxX],u=[h.minY,h.maxY];let x=!1;if(d.minX!==d.maxX||h.minY!==h.maxY){const m=JSON.stringify(f)+JSON.stringify(u),g=(w=this.ctx.focusCell)==null?void 0:w.getSpanInfo();x=(g&&JSON.stringify(g.xArr)+JSON.stringify(g.yArr))===m}return{xArr:f,yArr:u,onlyMergeCell:x}}selectCols(t){if(this.ctx.config.ENABLE_SELECTOR_SINGLE||!this.ctx.config.ENABLE_SELECTOR_ALL_ROWS||this.ctx.autofillMove||this.ctx.columnResizing||this.ctx.editing)return;if(t.operation){this.selectAll();return}const{SELECTOR_AREA_MIN_Y:e,SELECTOR_AREA_MAX_Y:i,SELECTOR_AREA_MAX_Y_OFFSET:s}=this.ctx.config,o=e,r=i||this.ctx.maxRowIndex-s;if(this.ctx.mousedown&&this.ctx.focusCellHeader){const{colIndex:a}=this.ctx.focusCellHeader;if(this.ctx.clearSelector(),t.colIndex>=a){const c=[a,t.colIndex+t.colspan-1],h=[o,r];this.setSelector(c,h)}else{const c=[t.colIndex,a],h=[o,r];this.setSelector(c,h)}}else{const a=[t.colIndex,t.colIndex+t.colspan-1],c=[o,r];this.setSelector(a,c)}}selectAll(){if(this.ctx.autofillMove||this.ctx.editing)return;const{ENABLE_SELECTOR_ALL_ROWS:t,ENABLE_SELECTOR_ALL_COLS:e}=this.ctx.config;if(t&&e){const{SELECTOR_AREA_MIN_X:i,SELECTOR_AREA_MAX_X:s,SELECTOR_AREA_MIN_Y:o,SELECTOR_AREA_MAX_Y:r,SELECTOR_AREA_MAX_X_OFFSET:a,SELECTOR_AREA_MAX_Y_OFFSET:c}=this.ctx.config,h=i,d=s||this.ctx.maxColIndex-a,f=o,u=r||this.ctx.maxRowIndex-c,x=[h,d],w=[f,u];this.setSelector(x,w)}}selectRows(t,e=!0){if(this.ctx.config.ENABLE_SELECTOR_SINGLE||!this.ctx.config.ENABLE_SELECTOR_ALL_COLS||this.ctx.autofillMove||this.ctx.editing)return;const{SELECTOR_AREA_MIN_X:i,SELECTOR_AREA_MAX_X:s,SELECTOR_AREA_MAX_X_OFFSET:o}=this.ctx.config,r=s||this.ctx.maxColIndex-o,a=i;if(e){this.ctx.setFocusCell(t);const c=[a,r],h=[t.rowIndex,t.rowIndex];this.setSelector(c,h)}if(this.ctx.focusCell&&this.ctx.mousedown){const{rowIndex:c}=this.ctx.focusCell;if(t.rowIndex>=c){const h=[a,r],d=[c,t.rowIndex];this.setSelector(h,d)}else{const h=[a,r],d=[t.rowIndex,c];this.setSelector(h,d)}}}mouseenter(){if(this.ctx.config.ENABLE_SELECTOR_SINGLE||this.ctx.editing)return;const{mousedown:t,focusCell:e,hoverCell:i}=this.ctx;if(t&&e&&i){const{rowIndex:s,colIndex:o}=e,r=Math.min(i.colIndex,o),a=Math.max(i.colIndex,o),c=Math.min(i.rowIndex,s),h=Math.max(i.rowIndex,s),d=[r,a],f=[c,h];this.setSelector(d,f)}}click(t=!1){const{focusCell:e,clickCell:i}=this.ctx;if(e&&this.isInSettingRange(e.rowIndex,e.colIndex))if(this.ctx.selector.enable=!0,i&&t){if(this.ctx.config.ENABLE_SELECTOR_SINGLE)return;const{colIndex:s,rowIndex:o}=i,{colIndex:r,rowIndex:a}=e,c=Math.min(r,s),h=Math.max(r,s),d=Math.min(a,o),f=Math.max(a,o),u=[c,h],x=[d,f];this.setSelector(u,x)}else{this.ctx.emit("cellSelectedClick",e);const s=[e.colIndex,e.colIndex],o=[e.rowIndex,e.rowIndex];this.setSelector(s,o),this.adjustBoundaryPosition()}}clearCopyLine(){this.ctx.selector.xArrCopy=[-1,-1],this.ctx.selector.yArrCopy=[-1,-1]}getCell(t,e){const i=this.ctx.body.renderRows.find(o=>o.rowIndex===t);return i==null?void 0:i.cells.find(o=>o.colIndex===e)}copy(){if(!this.ctx.config.ENABLE_COPY||this.ctx.domSelectionStr)return;let{value:t,xArr:e,yArr:i}=this.ctx.getSelectedData();if(this.ctx.config.ENABLE_MERGE_CELL_LINK&&this.ctx.database.hasMergeCell(e,i))if(this.ctx.onlyMergeCell&&this.ctx.focusCell){const r=this.ctx.focusCell;t=[[r.getValue()]],e=[r.colIndex,r.colIndex],i=[r.rowIndex,r.rowIndex]}else{const r={code:"ERR_MERGED_CELLS_COPY",message:"Merged cells cannot span copy data"};this.ctx.hasEvent("error")?this.ctx.emit("error",r):alert(r.message);return}const{BEFORE_COPY_METHOD:s}=this.ctx.config;if(typeof s=="function"){const a=s({focusCell:this.ctx.focusCell,data:t,xArr:e,yArr:i});if(!a)return;t=a.data}const o=he(t);navigator.clipboard?navigator.clipboard.writeText(o).then(()=>{this.ctx.selector.xArrCopy=this.ctx.selector.xArr.slice(),this.ctx.selector.yArrCopy=this.ctx.selector.yArr.slice(),this.ctx.emit("copyChange",{xArr:this.ctx.selector.xArrCopy,yArr:this.ctx.selector.yArrCopy,data:t}),this.ctx.emit("draw")}).catch(r=>console.error("Copy Failure:",r)):console.error("current browser does not support the Clipboard API")}clearSelectedData(t,e,i=!1,s=null){let o=[];const r=new Set;for(let c=0;c<=e[1]-e[0];c++)for(let h=0;h<=t[1]-t[0];h++){const d=c+e[0],f=h+t[0],u=this.ctx.database.getItemValueForRowIndexAndColIndex(d,f);if(u){const{rowKey:x,key:w}=u;this.ctx.database.getReadonly(x,w)||(r.add(x),o.push({rowKey:x,key:w,value:s,row:{}}))}}if(!o.length)return[];if(i)return o;this.ctx.database.batchSetItemValue(o,!0);let a=[];return r.forEach(c=>{a.push(this.ctx.database.getRowDataItemForRowKey(c))}),this.ctx.emit("clearSelectedDataChange",o,a),o}paste(){if(!navigator.clipboard){console.error("current browser does not support the Clipboard API");return}const{ENABLE_PASTER:t}=this.ctx.config;if(this.ctx.selector.enable&&t){const e=this.ctx.selector.yArr[0],i=this.ctx.selector.xArr[0],s=new Set;navigator.clipboard.readText().then(async o=>{let r=ce(o);const a=[i,i+r[0].length-1],c=[e,e+r.length-1],[h,d]=c,[f,u]=a,x=d-this.ctx.maxRowIndex,w=u-this.ctx.maxColIndex;(x>0||w>0)&&this.ctx.emit("onPastedDataOverflow",{maxY:d,maxX:u,minY:h,minX:f,overflowRowCount:x,overflowColCount:w,textArr:r});const m=r.length===1&&r[0].length===1;if(this.ctx.config.ENABLE_MERGE_CELL_LINK&&this.ctx.database.hasMergeCell(a,c)&&!m){const p={code:"ERR_MERGED_CELLS_PASTE",message:"Merged cells cannot span paste data"};this.ctx.hasEvent("error")?this.ctx.emit("error",p):alert(p.message);return}let g=[];for(let p=0;p<=r.length-1;p++){const b=r[p].length;for(let C=0;C<=b-1;C++){const R=p+e,v=C+i,T=r[p][C],S=this.ctx.database.getItemValueForRowIndexAndColIndex(R,v);if(S){const{rowKey:I,key:_}=S;this.ctx.database.getReadonly(I,_)||(s.add(I),g.push({rowKey:I,key:_,value:T,row:{}}))}}}if(this.isCut){const p=this.clearSelectedData(this.ctx.selector.xArrCopy,this.ctx.selector.yArrCopy,!0),b=g.map(C=>`${C.rowKey}-${C.key}`);p.forEach(C=>{b.includes(`${C.rowKey}-${C.key}`)||g.unshift(C)}),this.isCut=!1}if(!g.length)return;const{BEFORE_PASTE_DATA_METHOD:E}=this.ctx.config;if(typeof E=="function"){const p=E,b=g.map(C=>({rowKey:C.rowKey,key:C.key,value:C.value,oldValue:this.ctx.database.getItemValue(C.rowKey,C.key),row:this.ctx.database.getRowDataItemForRowKey(C.rowKey)}));if(g=await p(b,a,c,r),g&&!g.length)return}this.clearCopyLine(),this.ctx.batchSetItemValueByEditor(g,!0);let y=[];s.forEach(p=>{y.push(this.ctx.database.getRowDataItemForRowKey(p))}),this.ctx.emit("pasteChange",g,y)}).catch(o=>{console.error("Failed to get the clipboard content:",o)})}}moveFocus(t){if(this.ctx.editing)return;const{focusCell:e}=this.ctx;if(!e)return;let{colIndex:i=0,rowIndex:s=0}=e;const o=0,r=0,a=this.ctx.maxColIndex,c=this.ctx.maxRowIndex;switch(t){case"LEFT":i>o&&i--;break;case"TOP":s>r&&s--;break;case"RIGHT":i<a&&i++;break;case"BOTTOM":s<c&&s++;break}const h=[i,i],d=[s,s],f=this.getCell(s,i);f&&(f.operation||this.isInSettingRange(f.rowIndex,f.colIndex)&&(this.ctx.setFocusCell(f),this.setSelector(h,d),this.adjustBoundaryPosition(),this.ctx.emit("moveFocus",f),this.ctx.emit("draw")))}stopAdjustPosition(){this.adjustPositionX="",this.adjustPositionY="",this.timerX&&(clearInterval(this.timerX),this.timerX=0),this.timerY&&(clearInterval(this.timerY),this.timerY=0)}isInSettingRange(t,e){const{SELECTOR_AREA_MIN_X:i,SELECTOR_AREA_MAX_X:s,SELECTOR_AREA_MIN_Y:o,SELECTOR_AREA_MAX_Y:r,SELECTOR_AREA_MAX_X_OFFSET:a,SELECTOR_AREA_MAX_Y_OFFSET:c}=this.ctx.config,h=i,d=s||this.ctx.maxColIndex-a,f=o,u=r||this.ctx.maxRowIndex-c;return!(e<h||e>d||t<f||t>u)}startAdjustPosition(t){const{offsetX:e,offsetY:i}=this.ctx.getOffset(t);let s="",o="";if(e<0?s="left":e>this.ctx.body.visibleWidth&&(s="right"),i<this.ctx.header.visibleHeight?o="top":i>this.ctx.header.visibleHeight+this.ctx.body.visibleHeight&&(o="bottom"),s&&this.adjustPositionX!==s){this.adjustPositionX=s;let a=10*(s==="left"?-1:1);this.timerX&&(clearInterval(this.timerX),this.timerX=0),this.timerX=setInterval(()=>{a*=1.5;const{scrollX:c}=this.ctx,h=c+a;(h<0||h>this.ctx.body.width)&&(clearInterval(this.timerX),this.timerX=0),this.ctx.setScrollX(h)},100)}if(o&&this.adjustPositionY!==o){this.adjustPositionY=o;let a=10*(o==="top"?-1:1);this.timerY&&(clearInterval(this.timerY),this.timerY=0),this.timerY=setInterval(()=>{a*=1.5;const{scrollY:c}=this.ctx,h=c+a;(h<0||h>this.ctx.body.height)&&(clearInterval(this.timerY),this.timerY=0),this.ctx.setScrollY(h)},100)}}adjustBoundaryPosition(){const{stageHeight:t,stageWidth:e,focusCell:i,fixedRightWidth:s,fixedLeftWidth:o,header:r,footer:a,body:c,scrollX:h,scrollY:d,config:{SCROLLER_TRACK_SIZE:f,FOOTER_FIXED:u,FOOTER_POSITION:x,ENABLE_MERGE_CELL_LINK:w}}=this.ctx;if(!i)return;w&&this.ctx.onlyMergeCell&&i.updateSpanInfo();const{drawX:m,drawY:g,width:E,height:y,fixed:p}=i,b=o-m+1,C=i.drawX+E-(e-s)+1;let R=r.height-g,v=y;v>c.visibleHeight&&(v=c.visibleHeight);let T=0;u&&(x==="top"?R=r.height+a.height-g:T=a.visibleHeight);const S=g+v-(t-T-f);let I=h,_=d;C>0&&!p?I=Math.floor(h+C):b>0&&!p&&(I=Math.floor(h-b)),R>0?_=Math.floor(d-R):S>0&&(_=Math.floor(d+S)),(Math.abs(h-I)>2||Math.abs(d-_)>2)&&(this.ctx.adjustPositioning=!0,this.ctx.setScroll(I,_),this.ctx.emit("adjustBoundaryPosition",i))}destroy(){this.timerX&&(clearTimeout(this.timerX),this.timerX=0),this.timerY&&(clearTimeout(this.timerY),this.timerY=0)}}class Oe{constructor(t){n(this,"ctx");n(this,"maxColRowCell");this.ctx=t,this.init()}init(){this.ctx.on("mousemove",t=>{if(this.ctx.stageElement.style.cursor==="crosshair"&&(this.ctx.stageElement.style.cursor="default"),this.ctx.editing||!this.ctx.focusCell||!this.maxColRowCell)return;const{offsetX:e,offsetY:i}=this.ctx.getOffset(t),{colIndex:s,rowIndex:o,drawX:r,drawY:a,width:c,height:h}=this.maxColRowCell,d=6,f=s===this.ctx.maxColIndex||o===this.ctx.maxRowIndex?0:2,u=r+c-d+f,x=a+h-d+f;e>u&&i>x&&e<u+d&&i<x+d&&(this.ctx.stageElement.style.cursor="crosshair")}),this.ctx.on("cellMouseenter",t=>{const{xArr:e,yArr:i}=this.ctx.selector,s=e[1],o=i[1],{colIndex:r,rowIndex:a}=t;this.ctx.config.ENABLE_AUTOFILL&&r===s&&a===o&&(this.maxColRowCell=t),this.mouseenter(t)}),this.ctx.on("mousedown",()=>{this.ctx.stageElement.style.cursor==="crosshair"&&this.setMousedown()}),this.ctx.on("mouseup",()=>{this.setMouseUp()})}isAutofillIng(){const{xArr:t,yArr:e}=this.ctx.selector;return!(JSON.stringify(this.ctx.autofill.xArr)===JSON.stringify(t)&&JSON.stringify(this.ctx.autofill.yArr)===JSON.stringify(e))}setMousedown(){this.ctx.autofill.enable=!0,this.ctx.autofillMove=!0}setMouseUp(){if(!this.ctx.autofill.enable)return;this.isAutofillIng()&&this.autofillData(),this.ctx.autofill.enable=!1,this.ctx.autofillMove=!1,this.ctx.autofill.xArr=[-1,-1],this.ctx.autofill.yArr=[-1,-1]}setAutofill(t,e){const{ENABLE_AUTOFILL:i,ENABLE_SELECTOR_SPAN_COL:s,ENABLE_SELECTOR_SPAN_ROW:o}=this.ctx.config;if(!i)return;let r=t,a=e;if(!o){const[c]=a;a=[c,c]}if(!s){const[c]=r;r=[c,c]}if(JSON.stringify(this.ctx.autofill.xArr)!==JSON.stringify(r)||JSON.stringify(this.ctx.autofill.yArr)!==JSON.stringify(a)){const{SELECTOR_AREA_MIN_X:c,SELECTOR_AREA_MAX_X:h,SELECTOR_AREA_MIN_Y:d,SELECTOR_AREA_MAX_Y:f,SELECTOR_AREA_MAX_X_OFFSET:u,SELECTOR_AREA_MAX_Y_OFFSET:x}=this.ctx.config,w=c,m=h||this.ctx.maxColIndex-u,g=d,E=f||this.ctx.maxRowIndex-x;let[y,p]=r,[b,C]=a;if(y<w||b<g)return;r=[Math.max(w,y),Math.min(m,p)],a=[Math.max(g,b),Math.min(E,C)];const{BEFORE_SET_AUTOFILL_METHOD:R}=this.ctx.config;if(typeof R=="function"){const T=R({focusCell:this.ctx.focusCell,xArr:r,yArr:a});if(!T)return;r=T.xArr,a=T.yArr}this.ctx.autofill.xArr=r,this.ctx.autofill.yArr=a,this.ctx.emit("setAutofill",this.ctx.autofill),this.ctx.emit("draw")}}async autofillData(){const t=new Set,e=this.ctx.getSelectedData(),i=new Map;for(let x=0;x<=e.yArr[1]-e.yArr[0];x++)for(let w=0;w<=e.xArr[1]-e.xArr[0];w++){const m=x+e.yArr[0],g=w+e.xArr[0];i.set(`${m}-${g}`,!0)}const{value:s}=e,o=s[0].length,r=s.length,a=this.ctx.autofill.xArr,c=this.ctx.autofill.yArr,h=o===1&&r===1;if(this.ctx.config.ENABLE_MERGE_CELL_LINK&&this.ctx.database.hasMergeCell(a,c)&&!h){const x={code:"ERR_MERGED_CELLS_AUTOFILL",message:"Merged cells cannot span autofill data"};this.ctx.hasEvent("error")?this.ctx.emit("error",x):alert(x.message);return}let d=[];for(let x=0;x<=c[1]-c[0];x++)for(let w=0;w<=a[1]-a[0];w++){const m=w+a[0],g=x+c[0],E=s[x%r][w%o],y=this.ctx.database.getItemValueForRowIndexAndColIndex(g,m),p=`${g}-${m}`;if(y&&!i.has(p)){const{rowKey:b,key:C}=y;this.ctx.database.getReadonly(b,C)||(t.add(b),d.push({rowKey:b,key:C,value:E,row:{}}))}}if(!d.length)return;this.ctx.selector.xArr=this.ctx.autofill.xArr,this.ctx.selector.yArr=this.ctx.autofill.yArr;const{BEFORE_AUTOFILL_DATA_METHOD:f}=this.ctx.config;if(typeof f=="function"){const x=f,w=d.map(m=>({rowKey:m.rowKey,key:m.key,value:m.value,oldValue:this.ctx.database.getItemValue(m.rowKey,m.key),row:this.ctx.database.getRowDataItemForRowKey(m.rowKey)}));if(d=await x(w,a,c),d&&!d.length)return}this.ctx.batchSetItemValueByEditor(d,!0);let u=[];t.forEach(x=>{u.push(this.ctx.database.getRowDataItemForRowKey(x))}),this.ctx.emit("autofillChange",d,u)}mouseenter(t){if(["index","selection","index-selection"].includes(t.type))return;const{selector:e,autofill:i}=this.ctx;if(this.ctx.mousedown&&e.enable&&i.enable){const{rowIndex:s,colIndex:o}=t,r=e.xArr.slice(),a=e.yArr.slice();s>=e.yArr[0]&&s<=e.yArr[1]?o>e.xArr[1]?r.splice(1,1,o):o<e.xArr[0]&&r.splice(0,1,o):s>e.yArr[1]?a.splice(1,1,s):s<e.yArr[0]&&a.splice(0,1,s),this.setAutofill(r,a)}}destroy(){}}const j=Math.min,$=Math.max,it=Math.round,Y=l=>({x:l,y:l}),Le={left:"right",right:"left",bottom:"top",top:"bottom"},Ae={start:"end",end:"start"};function lt(l,t,e){return $(l,j(t,e))}function J(l,t){return typeof l=="function"?l(t):l}function z(l){return l.split("-")[0]}function Q(l){return l.split("-")[1]}function Kt(l){return l==="x"?"y":"x"}function gt(l){return l==="y"?"height":"width"}const Me=new Set(["top","bottom"]);function V(l){return Me.has(z(l))?"y":"x"}function wt(l){return Kt(V(l))}function He(l,t,e){e===void 0&&(e=!1);const i=Q(l),s=wt(l),o=gt(s);let r=s==="x"?i===(e?"end":"start")?"right":"left":i==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(r=st(r)),[r,st(r)]}function De(l){const t=st(l);return[dt(l),t,dt(t)]}function dt(l){return l.replace(/start|end/g,t=>Ae[t])}const vt=["left","right"],_t=["right","left"],Ne=["top","bottom"],ke=["bottom","top"];function Xe(l,t,e){switch(l){case"top":case"bottom":return e?t?_t:vt:t?vt:_t;case"left":case"right":return t?Ne:ke;default:return[]}}function Ye(l,t,e,i){const s=Q(l);let o=Xe(z(l),e==="start",i);return s&&(o=o.map(r=>r+"-"+s),t&&(o=o.concat(o.map(dt)))),o}function st(l){return l.replace(/left|right|bottom|top/g,t=>Le[t])}function Be(l){return{top:0,right:0,bottom:0,left:0,...l}}function Wt(l){return typeof l!="number"?Be(l):{top:l,right:l,bottom:l,left:l}}function ot(l){const{x:t,y:e,width:i,height:s}=l;return{width:i,height:s,top:e,left:t,right:t+i,bottom:e+s,x:t,y:e}}function Tt(l,t,e){let{reference:i,floating:s}=l;const o=V(t),r=wt(t),a=gt(r),c=z(t),h=o==="y",d=i.x+i.width/2-s.width/2,f=i.y+i.height/2-s.height/2,u=i[a]/2-s[a]/2;let x;switch(c){case"top":x={x:d,y:i.y-s.height};break;case"bottom":x={x:d,y:i.y+i.height};break;case"right":x={x:i.x+i.width,y:f};break;case"left":x={x:i.x-s.width,y:f};break;default:x={x:i.x,y:i.y}}switch(Q(t)){case"start":x[r]-=u*(e&&h?-1:1);break;case"end":x[r]+=u*(e&&h?-1:1);break}return x}const Ke=async(l,t,e)=>{const{placement:i="bottom",strategy:s="absolute",middleware:o=[],platform:r}=e,a=o.filter(Boolean),c=await(r.isRTL==null?void 0:r.isRTL(t));let h=await r.getElementRects({reference:l,floating:t,strategy:s}),{x:d,y:f}=Tt(h,i,c),u=i,x={},w=0;for(let m=0;m<a.length;m++){const{name:g,fn:E}=a[m],{x:y,y:p,data:b,reset:C}=await E({x:d,y:f,initialPlacement:i,placement:u,strategy:s,middlewareData:x,rects:h,platform:r,elements:{reference:l,floating:t}});d=y??d,f=p??f,x={...x,[g]:{...x[g],...b}},C&&w<=50&&(w++,typeof C=="object"&&(C.placement&&(u=C.placement),C.rects&&(h=C.rects===!0?await r.getElementRects({reference:l,floating:t,strategy:s}):C.rects),{x:d,y:f}=Tt(h,u,c)),m=-1)}return{x:d,y:f,placement:u,strategy:s,middlewareData:x}};async function Ft(l,t){var e;t===void 0&&(t={});const{x:i,y:s,platform:o,rects:r,elements:a,strategy:c}=l,{boundary:h="clippingAncestors",rootBoundary:d="viewport",elementContext:f="floating",altBoundary:u=!1,padding:x=0}=J(t,l),w=Wt(x),g=a[u?f==="floating"?"reference":"floating":f],E=ot(await o.getClippingRect({element:(e=await(o.isElement==null?void 0:o.isElement(g)))==null||e?g:g.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(a.floating)),boundary:h,rootBoundary:d,strategy:c})),y=f==="floating"?{x:i,y:s,width:r.floating.width,height:r.floating.height}:r.reference,p=await(o.getOffsetParent==null?void 0:o.getOffsetParent(a.floating)),b=await(o.isElement==null?void 0:o.isElement(p))?await(o.getScale==null?void 0:o.getScale(p))||{x:1,y:1}:{x:1,y:1},C=ot(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:y,offsetParent:p,strategy:c}):y);return{top:(E.top-C.top+w.top)/b.y,bottom:(C.bottom-E.bottom+w.bottom)/b.y,left:(E.left-C.left+w.left)/b.x,right:(C.right-E.right+w.right)/b.x}}const We=l=>({name:"arrow",options:l,async fn(t){const{x:e,y:i,placement:s,rects:o,platform:r,elements:a,middlewareData:c}=t,{element:h,padding:d=0}=J(l,t)||{};if(h==null)return{};const f=Wt(d),u={x:e,y:i},x=wt(s),w=gt(x),m=await r.getDimensions(h),g=x==="y",E=g?"top":"left",y=g?"bottom":"right",p=g?"clientHeight":"clientWidth",b=o.reference[w]+o.reference[x]-u[x]-o.floating[w],C=u[x]-o.reference[x],R=await(r.getOffsetParent==null?void 0:r.getOffsetParent(h));let v=R?R[p]:0;(!v||!await(r.isElement==null?void 0:r.isElement(R)))&&(v=a.floating[p]||o.floating[w]);const T=b/2-C/2,S=v/2-m[w]/2-1,I=j(f[E],S),_=j(f[y],S),O=I,M=v-m[w]-_,L=v/2-m[w]/2+T,H=lt(O,L,M),K=!c.arrow&&Q(s)!=null&&L!==H&&o.reference[w]/2-(L<O?I:_)-m[w]/2<0,D=K?L<O?L-O:L-M:0;return{[x]:u[x]+D,data:{[x]:H,centerOffset:L-H-D,...K&&{alignmentOffset:D}},reset:K}}}),Fe=function(l){return l===void 0&&(l={}),{name:"flip",options:l,async fn(t){var e,i;const{placement:s,middlewareData:o,rects:r,initialPlacement:a,platform:c,elements:h}=t,{mainAxis:d=!0,crossAxis:f=!0,fallbackPlacements:u,fallbackStrategy:x="bestFit",fallbackAxisSideDirection:w="none",flipAlignment:m=!0,...g}=J(l,t);if((e=o.arrow)!=null&&e.alignmentOffset)return{};const E=z(s),y=V(a),p=z(a)===a,b=await(c.isRTL==null?void 0:c.isRTL(h.floating)),C=u||(p||!m?[st(a)]:De(a)),R=w!=="none";!u&&R&&C.push(...Ye(a,m,w,b));const v=[a,...C],T=await Ft(t,g),S=[];let I=((i=o.flip)==null?void 0:i.overflows)||[];if(d&&S.push(T[E]),f){const L=He(s,r,b);S.push(T[L[0]],T[L[1]])}if(I=[...I,{placement:s,overflows:S}],!S.every(L=>L<=0)){var _,O;const L=(((_=o.flip)==null?void 0:_.index)||0)+1,H=v[L];if(H&&(!(f==="alignment"?y!==V(H):!1)||I.every(N=>V(N.placement)===y?N.overflows[0]>0:!0)))return{data:{index:L,overflows:I},reset:{placement:H}};let K=(O=I.filter(D=>D.overflows[0]<=0).sort((D,N)=>D.overflows[1]-N.overflows[1])[0])==null?void 0:O.placement;if(!K)switch(x){case"bestFit":{var M;const D=(M=I.filter(N=>{if(R){const F=V(N.placement);return F===y||F==="y"}return!0}).map(N=>[N.placement,N.overflows.filter(F=>F>0).reduce((F,ie)=>F+ie,0)]).sort((N,F)=>N[1]-F[1])[0])==null?void 0:M[0];D&&(K=D);break}case"initialPlacement":K=a;break}if(s!==K)return{reset:{placement:K}}}return{}}}},Ve=new Set(["left","top"]);async function Pe(l,t){const{placement:e,platform:i,elements:s}=l,o=await(i.isRTL==null?void 0:i.isRTL(s.floating)),r=z(e),a=Q(e),c=V(e)==="y",h=Ve.has(r)?-1:1,d=o&&c?-1:1,f=J(t,l);let{mainAxis:u,crossAxis:x,alignmentAxis:w}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof w=="number"&&(x=a==="end"?w*-1:w),c?{x:x*d,y:u*h}:{x:u*h,y:x*d}}const ze=function(l){return l===void 0&&(l=0),{name:"offset",options:l,async fn(t){var e,i;const{x:s,y:o,placement:r,middlewareData:a}=t,c=await Pe(t,l);return r===((e=a.offset)==null?void 0:e.placement)&&(i=a.arrow)!=null&&i.alignmentOffset?{}:{x:s+c.x,y:o+c.y,data:{...c,placement:r}}}}},$e=function(l){return l===void 0&&(l={}),{name:"shift",options:l,async fn(t){const{x:e,y:i,placement:s}=t,{mainAxis:o=!0,crossAxis:r=!1,limiter:a={fn:g=>{let{x:E,y}=g;return{x:E,y}}},...c}=J(l,t),h={x:e,y:i},d=await Ft(t,c),f=V(z(s)),u=Kt(f);let x=h[u],w=h[f];if(o){const g=u==="y"?"top":"left",E=u==="y"?"bottom":"right",y=x+d[g],p=x-d[E];x=lt(y,x,p)}if(r){const g=f==="y"?"top":"left",E=f==="y"?"bottom":"right",y=w+d[g],p=w-d[E];w=lt(y,w,p)}const m=a.fn({...t,[u]:x,[f]:w});return{...m,data:{x:m.x-e,y:m.y-i,enabled:{[u]:o,[f]:r}}}}}};function rt(){return typeof window<"u"}function Z(l){return Vt(l)?(l.nodeName||"").toLowerCase():"#document"}function A(l){var t;return(l==null||(t=l.ownerDocument)==null?void 0:t.defaultView)||window}function W(l){var t;return(t=(Vt(l)?l.ownerDocument:l.document)||window.document)==null?void 0:t.documentElement}function Vt(l){return rt()?l instanceof Node||l instanceof A(l).Node:!1}function k(l){return rt()?l instanceof Element||l instanceof A(l).Element:!1}function B(l){return rt()?l instanceof HTMLElement||l instanceof A(l).HTMLElement:!1}function Ot(l){return!rt()||typeof ShadowRoot>"u"?!1:l instanceof ShadowRoot||l instanceof A(l).ShadowRoot}const Ge=new Set(["inline","contents"]);function tt(l){const{overflow:t,overflowX:e,overflowY:i,display:s}=X(l);return/auto|scroll|overlay|hidden|clip/.test(t+i+e)&&!Ge.has(s)}const Ue=new Set(["table","td","th"]);function Ze(l){return Ue.has(Z(l))}const je=[":popover-open",":modal"];function nt(l){return je.some(t=>{try{return l.matches(t)}catch{return!1}})}const qe=["transform","translate","scale","rotate","perspective"],Je=["transform","translate","scale","rotate","perspective","filter"],Qe=["paint","layout","strict","content"];function mt(l){const t=Et(),e=k(l)?X(l):l;return qe.some(i=>e[i]?e[i]!=="none":!1)||(e.containerType?e.containerType!=="normal":!1)||!t&&(e.backdropFilter?e.backdropFilter!=="none":!1)||!t&&(e.filter?e.filter!=="none":!1)||Je.some(i=>(e.willChange||"").includes(i))||Qe.some(i=>(e.contain||"").includes(i))}function ti(l){let t=P(l);for(;B(t)&&!U(t);){if(mt(t))return t;if(nt(t))return null;t=P(t)}return null}function Et(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const ei=new Set(["html","body","#document"]);function U(l){return ei.has(Z(l))}function X(l){return A(l).getComputedStyle(l)}function at(l){return k(l)?{scrollLeft:l.scrollLeft,scrollTop:l.scrollTop}:{scrollLeft:l.scrollX,scrollTop:l.scrollY}}function P(l){if(Z(l)==="html")return l;const t=l.assignedSlot||l.parentNode||Ot(l)&&l.host||W(l);return Ot(t)?t.host:t}function Pt(l){const t=P(l);return U(t)?l.ownerDocument?l.ownerDocument.body:l.body:B(t)&&tt(t)?t:Pt(t)}function zt(l,t,e){var i;t===void 0&&(t=[]);const s=Pt(l),o=s===((i=l.ownerDocument)==null?void 0:i.body),r=A(s);return o?(ft(r),t.concat(r,r.visualViewport||[],tt(s)?s:[],[])):t.concat(s,zt(s,[]))}function ft(l){return l.parent&&Object.getPrototypeOf(l.parent)?l.frameElement:null}function $t(l){const t=X(l);let e=parseFloat(t.width)||0,i=parseFloat(t.height)||0;const s=B(l),o=s?l.offsetWidth:e,r=s?l.offsetHeight:i,a=it(e)!==o||it(i)!==r;return a&&(e=o,i=r),{width:e,height:i,$:a}}function Gt(l){return k(l)?l:l.contextElement}function G(l){const t=Gt(l);if(!B(t))return Y(1);const e=t.getBoundingClientRect(),{width:i,height:s,$:o}=$t(t);let r=(o?it(e.width):e.width)/i,a=(o?it(e.height):e.height)/s;return(!r||!Number.isFinite(r))&&(r=1),(!a||!Number.isFinite(a))&&(a=1),{x:r,y:a}}const ii=Y(0);function Ut(l){const t=A(l);return!Et()||!t.visualViewport?ii:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function si(l,t,e){return t===void 0&&(t=!1),!e||t&&e!==A(l)?!1:t}function q(l,t,e,i){t===void 0&&(t=!1),e===void 0&&(e=!1);const s=l.getBoundingClientRect(),o=Gt(l);let r=Y(1);t&&(i?k(i)&&(r=G(i)):r=G(l));const a=si(o,e,i)?Ut(o):Y(0);let c=(s.left+a.x)/r.x,h=(s.top+a.y)/r.y,d=s.width/r.x,f=s.height/r.y;if(o){const u=A(o),x=i&&k(i)?A(i):i;let w=u,m=ft(w);for(;m&&i&&x!==w;){const g=G(m),E=m.getBoundingClientRect(),y=X(m),p=E.left+(m.clientLeft+parseFloat(y.paddingLeft))*g.x,b=E.top+(m.clientTop+parseFloat(y.paddingTop))*g.y;c*=g.x,h*=g.y,d*=g.x,f*=g.y,c+=p,h+=b,w=A(m),m=ft(w)}}return ot({width:d,height:f,x:c,y:h})}function pt(l,t){const e=at(l).scrollLeft;return t?t.left+e:q(W(l)).left+e}function Zt(l,t,e){e===void 0&&(e=!1);const i=l.getBoundingClientRect(),s=i.left+t.scrollLeft-(e?0:pt(l,i)),o=i.top+t.scrollTop;return{x:s,y:o}}function oi(l){let{elements:t,rect:e,offsetParent:i,strategy:s}=l;const o=s==="fixed",r=W(i),a=t?nt(t.floating):!1;if(i===r||a&&o)return e;let c={scrollLeft:0,scrollTop:0},h=Y(1);const d=Y(0),f=B(i);if((f||!f&&!o)&&((Z(i)!=="body"||tt(r))&&(c=at(i)),B(i))){const x=q(i);h=G(i),d.x=x.x+i.clientLeft,d.y=x.y+i.clientTop}const u=r&&!f&&!o?Zt(r,c,!0):Y(0);return{width:e.width*h.x,height:e.height*h.y,x:e.x*h.x-c.scrollLeft*h.x+d.x+u.x,y:e.y*h.y-c.scrollTop*h.y+d.y+u.y}}function ri(l){return Array.from(l.getClientRects())}function ni(l){const t=W(l),e=at(l),i=l.ownerDocument.body,s=$(t.scrollWidth,t.clientWidth,i.scrollWidth,i.clientWidth),o=$(t.scrollHeight,t.clientHeight,i.scrollHeight,i.clientHeight);let r=-e.scrollLeft+pt(l);const a=-e.scrollTop;return X(i).direction==="rtl"&&(r+=$(t.clientWidth,i.clientWidth)-s),{width:s,height:o,x:r,y:a}}function ai(l,t){const e=A(l),i=W(l),s=e.visualViewport;let o=i.clientWidth,r=i.clientHeight,a=0,c=0;if(s){o=s.width,r=s.height;const h=Et();(!h||h&&t==="fixed")&&(a=s.offsetLeft,c=s.offsetTop)}return{width:o,height:r,x:a,y:c}}const ci=new Set(["absolute","fixed"]);function hi(l,t){const e=q(l,!0,t==="fixed"),i=e.top+l.clientTop,s=e.left+l.clientLeft,o=B(l)?G(l):Y(1),r=l.clientWidth*o.x,a=l.clientHeight*o.y,c=s*o.x,h=i*o.y;return{width:r,height:a,x:c,y:h}}function Lt(l,t,e){let i;if(t==="viewport")i=ai(l,e);else if(t==="document")i=ni(W(l));else if(k(t))i=hi(t,e);else{const s=Ut(l);i={x:t.x-s.x,y:t.y-s.y,width:t.width,height:t.height}}return ot(i)}function jt(l,t){const e=P(l);return e===t||!k(e)||U(e)?!1:X(e).position==="fixed"||jt(e,t)}function li(l,t){const e=t.get(l);if(e)return e;let i=zt(l,[]).filter(a=>k(a)&&Z(a)!=="body"),s=null;const o=X(l).position==="fixed";let r=o?P(l):l;for(;k(r)&&!U(r);){const a=X(r),c=mt(r);!c&&a.position==="fixed"&&(s=null),(o?!c&&!s:!c&&a.position==="static"&&!!s&&ci.has(s.position)||tt(r)&&!c&&jt(l,r))?i=i.filter(d=>d!==r):s=a,r=P(r)}return t.set(l,i),i}function di(l){let{element:t,boundary:e,rootBoundary:i,strategy:s}=l;const r=[...e==="clippingAncestors"?nt(t)?[]:li(t,this._c):[].concat(e),i],a=r[0],c=r.reduce((h,d)=>{const f=Lt(t,d,s);return h.top=$(f.top,h.top),h.right=j(f.right,h.right),h.bottom=j(f.bottom,h.bottom),h.left=$(f.left,h.left),h},Lt(t,a,s));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}}function fi(l){const{width:t,height:e}=$t(l);return{width:t,height:e}}function xi(l,t,e){const i=B(t),s=W(t),o=e==="fixed",r=q(l,!0,o,t);let a={scrollLeft:0,scrollTop:0};const c=Y(0);function h(){c.x=pt(s)}if(i||!i&&!o)if((Z(t)!=="body"||tt(s))&&(a=at(t)),i){const x=q(t,!0,o,t);c.x=x.x+t.clientLeft,c.y=x.y+t.clientTop}else s&&h();o&&!i&&s&&h();const d=s&&!i&&!o?Zt(s,a):Y(0),f=r.left+a.scrollLeft-c.x-d.x,u=r.top+a.scrollTop-c.y-d.y;return{x:f,y:u,width:r.width,height:r.height}}function ct(l){return X(l).position==="static"}function At(l,t){if(!B(l)||X(l).position==="fixed")return null;if(t)return t(l);let e=l.offsetParent;return W(l)===e&&(e=e.ownerDocument.body),e}function qt(l,t){const e=A(l);if(nt(l))return e;if(!B(l)){let s=P(l);for(;s&&!U(s);){if(k(s)&&!ct(s))return s;s=P(s)}return e}let i=At(l,t);for(;i&&Ze(i)&&ct(i);)i=At(i,t);return i&&U(i)&&ct(i)&&!mt(i)?e:i||ti(l)||e}const ui=async function(l){const t=this.getOffsetParent||qt,e=this.getDimensions,i=await e(l.floating);return{reference:xi(l.reference,await t(l.floating),l.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function gi(l){return X(l).direction==="rtl"}const wi={convertOffsetParentRelativeRectToViewportRelativeRect:oi,getDocumentElement:W,getClippingRect:di,getOffsetParent:qt,getElementRects:ui,getClientRects:ri,getDimensions:fi,getScale:G,isElement:k,isRTL:gi},Jt=ze,Qt=$e,te=Fe,mi=We,ee=(l,t,e)=>{const i=new Map,s={platform:wi,...e},o={...s.platform,_c:i};return Ke(l,t,{...s,platform:o})};let Ei=class{constructor(t){n(this,"ctx");n(this,"enable",!1);n(this,"contentEl");n(this,"floatingEl");n(this,"arrowEl");this.ctx=t;const{TOOLTIP_BG_COLOR:e,TOOLTIP_TEXT_COLOR:i,TOOLTIP_ZINDEX:s,TOOLTIP_CUSTOM_STYLE:o,CSS_PREFIX:r}=this.ctx.config;this.contentEl=document.createElement("div"),this.arrowEl=document.createElement("div"),this.floatingEl=document.createElement("div"),this.floatingEl.className=`${r}-tooltip`,this.contentEl.className=`${r}-tooltip-content`,this.arrowEl.className=`${r}-tooltip-arrow`;const a={display:"none",position:"absolute",background:e,color:i,boxSizing:"border-box",zIndex:s,padding:"8px",borderRadius:"4px",fontSize:"12px",...o},c={position:"absolute",width:"10px",height:"10px",background:a.background,backgroundColor:a.backgroundColor,transform:"rotate(45deg)",zIndex:a.zIndex};Object.assign(this.arrowEl.style,c),Object.assign(this.floatingEl.style,a),this.floatingEl.appendChild(this.contentEl),this.floatingEl.appendChild(this.arrowEl),this.ctx.containerElement.appendChild(this.floatingEl),this.init()}init(){this.floatingEl.addEventListener("mouseleave",()=>{this.hide()}),this.ctx.on("mouseout",t=>{this.floatingEl.contains(t.relatedTarget)||this.hide()}),this.ctx.on("onScroll",()=>{this.hide()}),this.ctx.on("startEdit",()=>{this.hide()}),this.ctx.on("visibleCellHoverChange",(t,e)=>{this.floatingEl.contains(e.target)||(t.ellipsis||t.message)&&this.show(t)}),this.ctx.on("visibleCellMouseleave",(t,e)=>{this.floatingEl.contains(e.target)||this.hide()}),this.ctx.on("cellHeaderMouseleave",(t,e)=>{this.floatingEl.contains(e.target)||this.hide()}),this.ctx.on("cellHeaderHoverChange",(t,e)=>{this.floatingEl.contains(e.target)||t.ellipsis&&this.show(t)})}show(t){if(!t.overflowTooltipShow||this.ctx.mousedown)return;this.floatingEl.style.display="block";let e=t.getText();t.message&&(e=t.message);const i=this.ctx.containerElement.getBoundingClientRect();if(!i)return;this.enable=!0,this.contentEl.style.maxWidth=`${t.overflowTooltipMaxWidth||500}px`,this.contentEl.style.minWidth="100px",this.contentEl.style.width="100%",this.contentEl.style.display="inline-block",this.contentEl.style.wordBreak="break-all",this.contentEl.style.lineHeight="1.5",this.contentEl.innerText=e;const s=t.drawX+i.x,o=t.drawY+i.y;ee({getBoundingClientRect(){return{width:t.visibleWidth,height:t.visibleHeight,x:s,y:o,left:s,right:s+t.visibleWidth,top:o,bottom:o+t.visibleHeight}}},this.floatingEl,{placement:t.overflowTooltipPlacement,middleware:[Qt(),te(),Jt(6),mi({element:this.arrowEl})]}).then(a=>{const{x:c,y:h,placement:d,middlewareData:f}=a;if(Object.assign(this.floatingEl.style,{top:`${h}px`,left:`${c}px`}),f.arrow){const u=f.arrow;["left","left-start","left-end"].includes(d)?Object.assign(this.arrowEl.style,{top:`${u.y}px`,bottom:"",left:"",right:"-5px"}):["right","right-start","right-end"].includes(d)?Object.assign(this.arrowEl.style,{top:`${u.y}px`,bottom:"",left:"-5px",right:""}):["bottom","bottom-start","bottom-end"].includes(d)?Object.assign(this.arrowEl.style,{top:"-5px",bottom:"",left:`${u.x}px`,right:""}):["top","top-start","top-end"].includes(d)&&Object.assign(this.arrowEl.style,{top:"",bottom:"-5px",left:`${u.x}px`,right:""})}})}hide(){this.enable&&(this.enable=!1,this.floatingEl.style.display="none")}destroy(){this.contentEl.remove(),this.arrowEl.remove(),this.floatingEl.remove()}};class pi{constructor(t){n(this,"editorEl");n(this,"inputEl");n(this,"enable",!1);n(this,"cellTarget",null);n(this,"selectorArrStr","");n(this,"ctx");n(this,"drawY",0);n(this,"drawX",0);n(this,"cancel",!1);this.ctx=t,this.initTextEditor(),this.init()}init(){this.ctx.on("outsideMousedown",()=>{this.cellTarget&&this.cellTarget.editorType==="text"&&this.clearEditor()}),this.ctx.on("moveFocus",t=>{this.cellTarget=t;const{xArr:e,yArr:i}=this.ctx.selector;this.selectorArrStr=JSON.stringify(e)+JSON.stringify(i)}),this.ctx.on("onScroll",()=>{this.enable&&this.doneEdit()}),this.ctx.on("cellHeaderMousedown",()=>{this.enable&&this.doneEdit(),this.cellTarget=null}),this.ctx.on("hoverIconClick",t=>{t.editorType!=="none"&&this.editCell(t.rowIndex,t.colIndex)}),this.ctx.on("keydown",t=>{if(!this.ctx.isTarget(t)||!this.ctx.focusCell)return;if(t.code==="Escape"&&this.ctx.editing){this.cancel=!0;const{focusCell:c}=this.ctx;c&&(this.ctx.emit("setSelectorCell",c),this.cellTarget=c),this.doneEdit();return}if((t.altKey||t.metaKey)&&t.code==="Enter"&&this.ctx.editing&&this.inputEl){t.preventDefault();const c=this.inputEl.selectionStart,h=this.inputEl.value.substring(0,c),d=this.inputEl.value.substring(c);this.inputEl.value=h+`
|
|
5
|
+
`+d,this.inputEl.selectionStart=this.inputEl.selectionEnd=c+1,this.autoSize();return}if(t.code==="Tab"&&this.ctx.editing){if(t.preventDefault(),this.doneEdit(),t.shiftKey){this.ctx.emit("setMoveFocus","LEFT");return}this.ctx.emit("setMoveFocus","RIGHT");return}if(t.code==="Enter"&&this.ctx.editing){if(t.preventDefault(),this.doneEdit(),t.shiftKey){this.ctx.emit("setMoveFocus","TOP");return}this.ctx.emit("setMoveFocus","BOTTOM");return}if(t.code==="Enter"&&!this.ctx.editing){t.preventDefault(),this.startEdit();return}const e=t.key,i=t.ctrlKey,s=t.altKey,o=t.shiftKey,r=t.metaKey;i||s||o||r||["Enter","Escape","Tab","Backspace","Delete","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown","Insert","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"].includes(e)||this.startEdit(!0)}),this.ctx.on("adjustBoundaryPosition",t=>{this.cellTarget=t;const{xArr:e,yArr:i}=this.ctx.selector;this.selectorArrStr=JSON.stringify(e)+JSON.stringify(i)}),this.ctx.on("cellClick",t=>{if(this.ctx.adjustPositioning||this.ctx.isPointer||!this.isInSelectorRange(t.rowIndex,t.colIndex))return;const{xArr:e,yArr:i}=this.ctx.selector,s=JSON.stringify(e)+JSON.stringify(i);if(this.selectorArrStr===s&&this.cellTarget){if(this.ctx.config.ENABLE_MERGE_CELL_LINK&&this.ctx.onlyMergeCell){this.startEdit();return}if(this.ctx.selectOnlyOne&&t.rowKey===this.cellTarget.rowKey&&t.key===this.cellTarget.key){this.startEdit();return}}if(this.selectorArrStr=s,this.doneEdit(),this.cellTarget=t,this.ctx.config.ENABLE_EDIT_SINGLE_CLICK){if(this.ctx.config.ENABLE_MERGE_CELL_LINK&&this.ctx.onlyMergeCell){this.startEdit();return}this.ctx.selectOnlyOne&&this.startEdit()}})}isInSelectorRange(t,e){const{xArr:i,yArr:s}=this.ctx.selector,[o,r]=i,[a,c]=s;return!(e<o||e>r||t<a||t>c)}initTextEditor(){this.inputEl=document.createElement("textarea"),this.inputEl.setAttribute("rows","1"),this.inputEl.addEventListener("input",this.autoSize.bind(this)),this.inputEl.addEventListener("blur",()=>{this.doneEdit()}),this.editorEl=this.ctx.editorElement,this.inputEl.className="e-virt-table-editor-textarea",this.editorEl.appendChild(this.inputEl),this.ctx.containerElement.appendChild(this.editorEl)}autoSize(){this.inputEl.style.height="auto";let t=this.inputEl.scrollHeight,e=this.ctx.body.visibleHeight;t>e&&(t=e);const{stageHeight:i,footer:s,header:o,config:{SCROLLER_TRACK_SIZE:r}}=this.ctx,a=i-s.height-r;this.editorEl.style.bottom="auto",this.drawY<o.height&&(this.editorEl.style.top=`${o.height-1}px`),this.drawY+t>a&&(this.editorEl.style.left=`${this.drawX-1}px`,this.editorEl.style.top="auto",this.editorEl.style.bottom=`${i-a}px`),this.inputEl.style.height=`${t}px`}startEditByInput(t,e=!1){const i=e?null:t.getValue(),{editorType:s}=t;t.update(),this.ctx.config.ENABLE_MERGE_CELL_LINK&&t.updateSpanInfo();let{height:o,width:r,drawY:a,drawX:c}=t;this.drawX=c,this.drawY=a;const{config:{CELL_PADDING:h},header:d}=this.ctx;let f=this.ctx.body.visibleHeight;if(o>f&&(o=f),this.editorEl.style.display="inline-block",this.editorEl.style.left=`${this.drawX-1}px`,this.editorEl.style.top=`${this.drawY-1}px`,this.editorEl.style.bottom="auto",this.editorEl.style.maxHeight=`${f}px`,s==="text"){this.inputEl.style.display="block",this.inputEl.style.minWidth=`${r-1}px`,this.inputEl.style.minHeight=`${o-1}px`,this.inputEl.style.maxHeight=`${f}px`,this.inputEl.style.width=`${r-1}px`,this.inputEl.style.height="auto",this.inputEl.style.padding=`${h}px`,i!==null&&(this.inputEl.value=i),this.inputEl.focus({preventScroll:!0});const u=this.inputEl.value.length;this.inputEl.setSelectionRange(u,u)}else this.inputEl.style.display="none";(this.inputEl.scrollHeight>o||this.drawY<d.height)&&this.autoSize()}doneEditByInput(){if(this.cellTarget&&this.cellTarget.editorType==="text"){const{rowKey:t,key:e}=this.cellTarget,i=this.cellTarget.getValue(),s=this.inputEl.value;s!==i&&!(s===""&&i===null)&&!this.cancel&&this.ctx.setItemValueByEditor(t,e,s,!0),this.inputEl.value=""}}startEdit(t=!1){this.cancel=!1;const{ENABLE_EDIT_CLICK_SELECTOR:e}=this.ctx.config;if(!e)return;const i=this.ctx.focusCell;if(!i||["index","index-selection","selection"].includes(i.type)||this.enable||(this.ctx.emit("drawView"),!(i.isVerticalVisible()&&i.isHorizontalVisible())))return;const{rowKey:o,key:r,editorType:a}=i;if(a==="none")return;const c=this.ctx.database.getReadonly(o,r);i&&!c&&(this.enable=!0,this.ctx.editing=!0,this.cellTarget=i,this.startEditByInput(this.cellTarget,t),this.ctx.emit("startEdit",this.cellTarget))}editCell(t,e){const i=this.ctx.body.renderRows.find(h=>h.rowIndex===t);if(!i)return;const s=i.cells.find(h=>h.colIndex===e);if(!s)return;this.ctx.emit("setSelectorCell",s);const o=this.ctx.focusCell;if(!o||["index","index-selection","selection"].includes(o.type)||this.enable)return;const{rowKey:r,key:a}=o,c=this.ctx.database.getReadonly(r,a);o&&!c&&(this.enable=!0,this.ctx.editing=!0,this.cellTarget=o,this.startEditByInput(this.cellTarget),this.ctx.emit("startEdit",this.cellTarget))}doneEdit(){this.enable&&(this.doneEditByInput(),this.ctx.emit("doneEdit",this.cellTarget),this.enable=!1,this.ctx.editing=!1,this.ctx.containerElement.focus({preventScroll:!0}),this.editorEl.style.display="none",this.ctx.emit("drawView"))}clearEditor(){this.doneEdit(),this.cellTarget=null,this.selectorArrStr="",this.ctx.clearSelector(),this.ctx.focusCell=void 0,this.ctx.emit("drawView")}destroy(){var t;(t=this.editorEl)==null||t.remove()}}class yi{constructor(t){n(this,"ctx");n(this,"emptyEl");this.ctx=t;const{EMPTY_TEXT:e,EMPTY_CUSTOM_STYLE:i}=this.ctx.config;this.ctx.emptyElement?this.emptyEl=this.ctx.emptyElement:(this.emptyEl=document.createElement("div"),this.emptyEl.innerText=e),this.emptyEl.className="e-virt-table-empty",this.emptyEl.style.display="none",this.ctx.containerElement.appendChild(this.emptyEl),this.ctx.on("emptyChange",({type:s,headerHeight:o,bodyHeight:r,footerHeight:a})=>{const c=o+(r+a)/2,h={display:s==="empty"?"block":"none",position:"absolute",fontSize:"14px",color:"#666",left:"50%",top:`${c}px`,transform:"translate(-50%, -50%)",...i};Object.assign(this.emptyEl.style,h)})}destroy(){this.emptyEl.remove()}}class Ci{constructor(t){n(this,"ctx");this.ctx=t}draw(){const t=this.getContainer();this.ctx.emit("overlayerChange",t)}destroy(){this.ctx.emit("overlayerChange",{style:{},views:[]})}getContainer(){const t=this.getHeader(),e=this.getBody(),i=this.getFooter();let s=[];const{FOOTER_FIXED:o,FOOTER_POSITION:r}=this.ctx.config;return o?r==="top"?s=[t,i,e]:s=[t,e,i]:s=[t,e],{views:s}}getHeader(){const{fixedLeftWidth:t,fixedRightWidth:e,config:{SCROLLER_TRACK_SIZE:i,CSS_PREFIX:s}}=this.ctx,{visibleWidth:o,visibleHeight:r,renderCellHeaders:a}=this.ctx.header;let c=[],h=[],d=[];a.forEach(g=>{g.render&&(g.fixed==="left"?h.push(g):g.fixed==="right"?d.push(g):c.push(g))});const f=e-i,u={key:"left",style:{position:"absolute",top:"0px",left:"0px",overflow:"hidden",width:`${t}px`,height:`${r}px`},cells:h},x={key:"center",style:{position:"absolute",top:"0px",left:`${t}px`,overflow:"hidden",width:`${o-t-f+1}px`,height:`${r}px`},cells:c},w={key:"right",style:{position:"absolute",top:"0px",right:"0px",overflow:"hidden",width:`${f+1}px`,height:`${r}px`},cells:d};return{type:"header",class:`${s}-overlayer-header`,style:{position:"relative",overflow:"hidden",width:`${o}px`,height:`${r}px`},views:[u,x,w]}}getBody(){const t=[],e=[],i=[];let s=this.ctx.body.renderRows;this.ctx.config.FOOTER_FIXED||(s=s.concat(this.ctx.footer.renderRows)),s.forEach(g=>{g.cells.forEach(E=>{E.cellType==="footer"&&(E.render=E.renderFooter),E.render&&(E.fixed==="left"?e.push(E):E.fixed==="right"?i.push(E):t.push(E))})});const{fixedLeftWidth:o,fixedRightWidth:r,config:{SCROLLER_TRACK_SIZE:a,CSS_PREFIX:c}}=this.ctx,{visibleWidth:h,visibleHeight:d}=this.ctx.body,f=r-a,u={key:"left",style:{position:"absolute",top:`${.5}px`,left:`${.5}px`,overflow:"hidden",width:`${o}px`,height:`${d}px`},cells:e},x={key:"center",style:{position:"absolute",top:`${.5}px`,left:`${o-.5}px`,overflow:"hidden",width:`${h-o-f}px`,height:`${d}px`},cells:t},w={key:"right",style:{position:"absolute",top:"0px",right:"0px",overflow:"hidden",width:`${f}px`,height:`${d}px`},cells:i};return{type:"body",class:`${c}-overlayer-body`,style:{position:"relative",overflow:"hidden",width:`${h}px`,height:`${d}px`},views:[u,x,w]}}getFooter(){const t=[],e=[],i=[];this.ctx.footer.renderRows.forEach(m=>{m.cells.forEach(g=>{g.cellType==="footer"&&g.renderFooter&&(g.render=g.renderFooter,g.fixed==="left"?e.push(g):g.fixed==="right"?i.push(g):t.push(g))})});const{fixedLeftWidth:s,fixedRightWidth:o,config:{SCROLLER_TRACK_SIZE:r,CSS_PREFIX:a}}=this.ctx,{visibleWidth:c,visibleHeight:h}=this.ctx.footer,d=o-r,f={key:"left",style:{position:"absolute",top:`${.5}px`,left:`${.5}px`,overflow:"hidden",width:`${s}px`,height:`${h}px`},cells:e},u={key:"center",style:{position:"absolute",top:`${.5}px`,left:`${s-.5}px`,overflow:"hidden",width:`${c-s-d}px`,height:`${h}px`},cells:t},x={key:"right",style:{position:"absolute",top:`${.5}px`,right:`${.5}px`,overflow:"hidden",width:`${d}px`,height:`${h}px`},cells:i};return{type:"footer",class:`${a}-overlayer-footer`,style:{position:"relative",overflow:"hidden",width:`${c}px`,height:`${h}px`},views:[f,u,x]}}}class bi{constructor(t){n(this,"ctx");n(this,"contextMenuEl");n(this,"custom",!1);this.ctx=t,this.ctx.contextMenuElement?(this.custom=!0,this.contextMenuEl=this.ctx.contextMenuElement):(this.custom=!1,this.contextMenuEl=document.createElement("div")),this.createContextMenu(),this.init()}init(){this.ctx.on("cellContextMenuClick",(t,e)=>{if(!this.ctx.config.ENABLE_CONTEXT_MENU)return;e.preventDefault();const{xArr:i,yArr:s}=this.ctx.selector,[o,r]=i,[a,c]=s,{rowIndex:h,colIndex:d}=t;h>=a&&h<=c&&d>=o&&d<=r||this.ctx.emit("setSelectorCell",t,e);const u={getBoundingClientRect:()=>({width:0,height:0,top:e.clientY,left:e.clientX,right:e.clientX,bottom:e.clientY,x:e.clientX,y:e.clientY}),contextElement:document.body};ee(u,this.contextMenuEl,{placement:"right-start",middleware:[Jt(),Qt(),te()]}).then(({x,y:w})=>{this.show(x,w)})}),this.ctx.on("click",this.hide.bind(this)),this.ctx.on("onScroll",this.hide.bind(this)),this.ctx.on("resize",this.hide.bind(this))}createContextMenu(){if(this.contextMenuEl.className="e-virt-table-context-menu",this.contextMenuEl.addEventListener("contextmenu",function(e){e.preventDefault()}),this.ctx.containerElement.appendChild(this.contextMenuEl),this.custom)return;const{CONTEXT_MENU:t}=this.ctx.config;this.createContextMenuItems(t,e=>{switch(e.value){case"copy":this.ctx.emit("contextMenuCopy");break;case"paste":this.ctx.emit("contextMenuPaste");break;case"cut":this.ctx.emit("contextMenuCut");break;case"clearSelected":this.ctx.emit("contextMenuClearSelected");break}this.hide()})}createContextMenuItems(t,e){this.contextMenuEl.replaceChildren(),t.forEach(i=>{const s=document.createElement("div");s.className="e-virt-table-context-menu-item",s.innerText=i.label,i.event?s.onclick=()=>{i.event&&i.event(),e(i)}:s.onclick=()=>e(i),this.contextMenuEl.appendChild(s)})}show(t,e){Object.assign(this.contextMenuEl.style,{left:`${t}px`,top:`${e}px`})}hide(){Object.assign(this.contextMenuEl.style,{left:"-99999px",top:"-99999px"})}updated(){this.createContextMenu()}destroy(){this.contextMenuEl.remove()}}class Ii{constructor(t,e){n(this,"options");n(this,"scroller");n(this,"header");n(this,"body");n(this,"footer");n(this,"selector");n(this,"autofill");n(this,"tooltip");n(this,"editor");n(this,"empty");n(this,"overlayer");n(this,"contextMenu");n(this,"ctx");this.options=e;const{overlayerElement:i,editorElement:s,emptyElement:o,contextMenuElement:r}=this.options,a=this.createContainer(t,i,s,o,r);this.ctx=new Ie(a,this.options),this.header=new Se(this.ctx),this.footer=new _e(this.ctx),this.body=new ve(this.ctx),this.scroller=new Re(this.ctx),this.selector=new Te(this.ctx),this.autofill=new Oe(this.ctx),this.tooltip=new Ei(this.ctx),this.empty=new yi(this.ctx),this.editor=new pi(this.ctx),this.overlayer=new Ci(this.ctx),this.contextMenu=new bi(this.ctx),this.ctx.on("draw",()=>{this.draw()}),this.ctx.on("drawView",()=>{this.draw(!0)}),this.draw()}createContainer(t,e,i,s,o){t.className="e-virt-table-container";const r=document.createElement("div"),a=document.createElement("canvas"),c=e||document.createElement("div");r.className="e-virt-table-stage",t.tabIndex=0,a.className="e-virt-table-canvas",c.className="e-virt-table-overlayer";const h=i||document.createElement("div");h.className="e-virt-table-editor";const d=s,f=o;return r.appendChild(a),r.appendChild(c),t.appendChild(r),{containerElement:t,stageElement:r,canvasElement:a,overlayerElement:c,editorElement:h,emptyElement:d,contextMenuElement:f}}draw(t=!1){requestAnimationFrame(()=>{this.header.update(),this.footer.update(),this.body.update(),this.ctx.paint.clear(),this.body.draw(),this.footer.draw(),this.header.draw(),this.scroller.draw(),t||this.overlayer.draw()})}loadConfig(t){this.ctx.config.init(t),this.ctx.database.init(!1),this.header.init(),this.contextMenu.updated(),this.ctx.emit("draw")}loadColumns(t){this.editor.doneEdit(),this.ctx.database.setColumns(t),this.header.init(),this.ctx.emit("draw")}loadData(t){this.editor.doneEdit(),this.ctx.database.setData(t),this.header.init(),this.tooltip.hide(),this.ctx.emit("draw")}loadFooterData(t){this.ctx.database.setFooterData(t),this.ctx.emit("draw")}setLoading(t){this.ctx.database.setLoading(t)}on(t,e){this.ctx.on(t,e)}emit(t,...e){this.ctx.emit(t,...e)}off(t,e){this.ctx.off(t,e)}filterMethod(t){this.ctx.database.setFilterMethod(t),this.ctx.database.init(!1),this.header.init(),this.ctx.emit("draw")}editCell(t,e){this.editor.editCell(t,e)}setItemValue(t,e,i,s=!0,o=!0,r=!1){this.ctx.database.setItemValue(t,e,i,s,o,r)}batchSetItemValue(t,e=!0){this.ctx.database.batchSetItemValue(t,e)}setItemValueByEditor(t,e,i,s=!0,o=!0){this.ctx.setItemValueByEditor(t,e,i,s,o),this.editor.doneEdit()}clearEditableData(t=null){const e=[0,this.ctx.maxColIndex],i=[0,this.ctx.maxRowIndex];return this.selector.clearSelectedData(e,i,!1,t)}clearEditor(){this.editor.clearEditor()}doLayout(){this.ctx.emit("draw")}getChangedData(){return this.ctx.database.getChangedData()}getChangedRows(){return this.ctx.database.getChangedRows()}setCurrentRowByRowIndex(t){this.ctx.currentCell=this.ctx.database.getVirtualBodyCell(t,0),this.ctx.emit("draw")}setCurrentRow(t){const e=this.ctx.database.getColumnByColIndex(0);e&&(this.ctx.currentCell=this.ctx.database.getVirtualBodyCellByKey(t,e.key),this.ctx.emit("draw"))}getCurrentRow(){const t=this.ctx.currentCell;return t?{row:t.row,rowIndex:t.rowIndex,rowKey:t.rowKey}:void 0}clearValidate(){this.ctx.database.clearValidate(),this.ctx.emit("draw")}validateFields(t,e=!0){return new Promise(async(i,s)=>{let o=[];for(let r=0;r<t.length;r++){const{rowKey:a,key:c}=t[r],h=await this.ctx.database.getValidator(a,c);Array.isArray(h)&&h.length&&o.push(h)}if(o.length){if(s(o),e){const[r]=o;if(Array.isArray(r)&&r.length){const[a]=r,{rowKey:c,key:h}=a;this.scrollToRowkey(c),this.scrollToColkey(h)}}this.ctx.emit("draw")}else i([]),this.ctx.emit("draw")})}async validate(t=!0){return new Promise(async(e,i)=>{try{const s=await this.getValidations();e(s)}catch(s){if(t&&Array.isArray(s)&&s.length){const[o]=s;if(Array.isArray(o)&&o.length){const[r]=o,{rowKey:a,key:c}=r,h=this.ctx.database.getRowForRowKey(a);if(h){const{parentRowKeys:d=[]}=h;d&&d.length&&this.setExpandRowKeys(d,!0)}this.scrollToRowkey(a),this.scrollToColkey(c)}}i(s)}})}setValidations(t){if(t.forEach(e=>{const{rowIndex:i,key:s,message:o}=e;this.ctx.database.setValidationErrorByRowIndex(i,s,o)}),t&&Array.isArray(t)&&t.length){const[e]=t;if(e&&e.rowIndex>=0&&e.key){const{rowIndex:i,key:s}=e;this.scrollToRowIndex(i),this.scrollToColkey(s)}}}getValidations(){return new Promise(async(t,e)=>{const i=this.ctx.database.getAllRowsData(),s=this.ctx.header.leafCellHeaders;let o=[];for(let r=0;r<i.length;r++)for(let a=0;a<s.length;a++){const c=this.ctx.database.getRowKeyByItem(i[r]),d=s[a].key,f=await this.ctx.database.getValidator(c,d);Array.isArray(f)&&f.length&&o.push(f)}o.length?(e(o),this.ctx.emit("draw")):(t([]),this.ctx.emit("draw"))})}hasValidationError(){return this.ctx.database.hasValidationError()}scrollTo(t,e){this.scroller.setScroll(t,e)}scrollXTo(t){this.scroller.setScrollX(t)}scrollToColkey(t){this.scroller.scrollToColkey(t)}scrollToRowkey(t){this.scroller.scrollToRowKey(t)}scrollToColIndex(t){this.scroller.scrollToColIndex(t)}scrollToRowIndex(t){this.scroller.scrollToRowIndex(t)}scrollYTo(t){this.scroller.setScrollY(t)}setExpandRowKeys(t,e=!0){this.ctx.database.setExpandRowKeys(t,e)}getExpandRowKeys(){return this.ctx.database.getExpandRowKeys()}clearSelection(){this.ctx.database.clearSelection(),this.ctx.emit("draw")}toggleRowSelection(t){const e=this.ctx.database.getRowKeyByItem(t);this.ctx.database.toggleRowSelection(e),this.ctx.emit("draw")}setSelectionByRows(t,e=!0){t.forEach(i=>{const s=this.ctx.database.getRowKeyByItem(i);this.ctx.database.setRowSelection(s,e,!1)}),this.ctx.emit("selectionChange",this.getSelectionRows()),this.ctx.emit("draw")}setSelectionByRowKeys(t,e=!0){t.forEach(i=>{this.ctx.database.setRowSelection(i,e,!1)}),this.ctx.emit("selectionChange",this.getSelectionRows()),this.ctx.emit("draw")}toggleAllSelection(){this.ctx.database.toggleAllSelection(),this.ctx.emit("draw")}toggleRowExpand(t,e){this.ctx.database.expandItem(t,e),this.ctx.emit("draw")}toggleExpandAll(t){this.ctx.database.expandAll(t),this.ctx.emit("draw")}getSelectionRows(){return this.ctx.database.getSelectionRows()}getPositionForRowIndex(t){return this.ctx.database.getPositionForRowIndex(t)}getCellValue(t,e){return this.ctx.database.getItemValue(t,e)}getCellValueByIndex(t,e){return this.ctx.database.getItemValueForRowIndexAndColIndex(t,e)}clearSort(){this.ctx.database.clearSort()}contextMenuHide(){this.contextMenu.hide()}getUtils(){return{mergeColCell:de,mergeRowCell:le,getSpanArrByRow:kt,getSpanObjByColumn:Xt}}getColumnByKey(t){var e;return(e=this.ctx.database.getColumnByKey(t))==null?void 0:e.column}destroy(){this.overlayer.destroy(),this.empty.destroy(),this.editor.destroy(),this.tooltip.destroy(),this.selector.destroy(),this.autofill.destroy(),this.contextMenu.destroy(),this.ctx.destroy(),this.ctx.containerElement.remove()}}module.exports=Ii;
|
|
6
6
|
//# sourceMappingURL=index.cjs.js.map
|