@agile-team/mach-table 0.13.0 → 0.14.0

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 CHANGED
@@ -1,7 +1,7 @@
1
- "use strict";var ft=Object.defineProperty;var Go=Object.getOwnPropertyDescriptor;var Fo=Object.getOwnPropertyNames;var Ho=Object.prototype.hasOwnProperty;var Bo=(s,e)=>{for(var t in e)ft(s,t,{get:e[t],enumerable:!0})},Vo=(s,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Fo(e))!Ho.call(s,r)&&r!==t&&ft(s,r,{get:()=>e[r],enumerable:!(o=Go(e,r))||o.enumerable});return s};var zo=s=>Vo(ft({},"__esModule",{value:!0}),s);var $r={};Bo($r,{BUILTIN_AGG_FUNCS:()=>wt,Column:()=>L,DEFAULT_LOCALE:()=>M,DIRECT_GRID_OPTION_KEYS:()=>go,EVENT_TYPES:()=>Q,EventBus:()=>q,GRID_OPTION_KEYS:()=>he,GRID_OPTION_META:()=>ct,GRID_SIZE_PRESETS:()=>V,GridCore:()=>te,LOCALE_EN:()=>to,actionsColumn:()=>To,buildColDefsFromSchema:()=>bo,clearColumnState:()=>no,clearComponentRegistries:()=>fo,computeColumnWidths:()=>ye,createActionButtonsRenderer:()=>ee,createAggResolver:()=>Ee,createBusinessColumnTypes:()=>Ao,createCachedDictionary:()=>No,createColumnHelper:()=>So,createColumnStateKey:()=>ro,createDictionaryRenderer:()=>Oo,createEnterprisePreset:()=>Io,createGrid:()=>wo,createLocalColumnStateStore:()=>St,createMachTablePreset:()=>Ft,createProgressBarRenderer:()=>Lt,createRowActionsRenderer:()=>at,createStatusTagRenderer:()=>kt,defaultComparator:()=>X,defineColumns:()=>Mo,defineGridOptions:()=>Lo,defineMachTablePreset:()=>ko,describeFilter:()=>Ye,downloadFile:()=>oo,dragColumn:()=>Do,escapeHtml:()=>W,evaluateColumnFilter:()=>yt,fitColumnWidths:()=>ve,formatText:()=>k,formatTwo:()=>He,getByPath:()=>Ue,getCellEditor:()=>dt,getCellRenderer:()=>ue,indexColumn:()=>Ro,isColDefGroup:()=>Y,isSafePath:()=>J,linkRenderer:()=>Pt,loadColumnState:()=>it,matchLocaleKey:()=>Fe,parseCsv:()=>Me,parseDelimited:()=>Ie,parseTsv:()=>Se,registerBuiltinRenderers:()=>lt,registerCellEditor:()=>ho,registerCellRenderer:()=>uo,resolveTagVariant:()=>It,rowActionsColumn:()=>xo,sanitizeFormulaCell:()=>ne,saveColumnState:()=>nt,selectionColumn:()=>Eo,setByPath:()=>K,sortNodes:()=>oe,toTsv:()=>Z,validateGridOptions:()=>ut,version:()=>_r});module.exports=zo($r);var ge={name:"@agile-team/mach-table",version:"0.13.0",description:"Enterprise-grade, framework-agnostic TypeScript data grid with virtualization, editing, grouping and extensibility",keywords:["data-grid","table","virtualization","typescript","enterprise","vue","react"],author:"ChenyCHENYU (Agile Team)",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/ChenyCHENYU/MachTable#readme",bugs:{url:"https://github.com/ChenyCHENYU/MachTable/issues"},repository:{type:"git",url:"git+https://github.com/ChenyCHENYU/MachTable.git",directory:"packages/core"},type:"module",main:"./dist/index.cjs",module:"./dist/index.js",types:"./dist/index.d.ts",engines:{node:">=18.0.0"},publishConfig:{access:"public"},exports:{".":{import:{types:"./dist/index.d.ts",default:"./dist/index.js"},require:{types:"./dist/index.d.cts",default:"./dist/index.cjs"}},"./styles/mach-table.css":{types:"./styles/mach-table.css.d.ts",default:"./styles/mach-table.css"}},files:["dist","styles"],sideEffects:["**/*.css"],scripts:{build:"tsup",typecheck:"tsc --noEmit",test:"vitest run","test:coverage":"vitest run --coverage"}};var q=class{constructor(e){this.onListenerError=e;this.listeners=new Map}on(e,t){let o=this.listeners.get(e);return o||(o=new Set,this.listeners.set(e,o)),o.add(t),()=>{o.delete(t)}}once(e,t){let o=this.on(e,r=>{o(),t(r)});return o}off(e,t){let o=this.listeners.get(e);o&&(o.delete(t),o.size===0&&this.listeners.delete(e))}emit(e,t){let o=this.listeners.get(e);if(o)for(let r of[...o])try{r(t)}catch(n){console.error(`[mach-table] error in "${e}" listener`,n),this.onListenerError?.(n,e)}}clear(){this.listeners.clear()}};var mt={sortable:!0,resizable:!0,movable:!0,filter:!1,minWidth:80},V={compact:{rowHeight:30,headerHeight:34,fontSize:12,cellPadding:6},normal:{rowHeight:36,headerHeight:40,fontSize:13,cellPadding:9},large:{rowHeight:44,headerHeight:48,fontSize:14,cellPadding:12}};function x(s,e,t,o=!1){return typeof s!="number"||!Number.isFinite(s)||s<t?e:o?Math.floor(s):s}function Ko(s){return s&&Object.prototype.hasOwnProperty.call(V,s)?s:"normal"}function _o(s){return s.theme==="light"||s.theme==="dark"||s.theme==="auto"?s.theme:s.className?.includes("mach-theme-dark")?"dark":"light"}function $o(s,e){let t=typeof s.pagination=="object"&&Array.isArray(s.pagination.pageSizeOptions)?s.pagination.pageSizeOptions:void 0,o=t?[...new Set(t.map(r=>x(r,0,1,!0)).filter(Boolean))]:[10,20,50,100];return o.includes(e)||o.push(e),o.sort((r,n)=>r-n)}function Uo(s,e){let t=V[e];return{columnDefs:Array.isArray(s.columnDefs)?s.columnDefs:[],rowData:Array.isArray(s.rowData)?s.rowData:[],defaultColDef:{...mt,...s.defaultColDef??{}},columnTypes:s.columnTypes??{},rowHeight:x(s.rowHeight,t.rowHeight,1),headerHeight:x(s.headerHeight,t.headerHeight,1),rowBuffer:x(s.rowBuffer,8,0,!0),columnLayout:s.columnLayout==="fit"?"fit":"normal",rowSelection:s.rowSelection==="single"||s.rowSelection==="multiple"?s.rowSelection:"none",multiSort:s.multiSort??!0,size:e,pinnedTopRowData:Array.isArray(s.pinnedTopRowData)?s.pinnedTopRowData:[],pinnedBottomRowData:Array.isArray(s.pinnedBottomRowData)?s.pinnedBottomRowData:[]}}function qo(s){return{stripedRows:s.stripedRows??!1,showCellBorders:s.showCellBorders??!1,theme:_o(s),quickFilterText:s.quickFilterText??null,suppressCellFocus:s.suppressCellFocus??!1,suppressRowHoverHighlight:s.suppressRowHoverHighlight??!1,suppressNoRowsOverlay:s.suppressNoRowsOverlay??!1,suppressHeaderFocus:s.suppressHeaderFocus??!1,loading:s.loading??!1,className:s.className??""}}function jo(s){return{editType:s.editType==="fullRow"?"fullRow":"cell",editableIndicator:s.editableIndicator==="always"||s.editableIndicator==="none"?s.editableIndicator:"hover",singleClickEdit:s.singleClickEdit??!1,manualSorting:s.manualSorting??!1,manualFiltering:s.manualFiltering??!1,showSummary:s.showSummary??!1,indexOffset:s.indexOffset??0,applyRowDrag:s.applyRowDrag??!0,undoStackSize:x(s.undoStackSize,100,0,!0),asyncTransactionWaitMillis:x(s.asyncTransactionWaitMillis,16,0,!0)}}function Yo(s){return{masterDetail:s.masterDetail??!1,detailRowHeight:x(s.detailRowHeight,240,1),detailToggleColumn:s.detailToggleColumn??!0,treeData:s.treeData??!1,childrenKey:s.childrenKey??"children",autoCheckedChildren:s.autoCheckedChildren??!0,defaultExpandAll:s.defaultExpandAll??!1}}function Xo(s){let e=typeof s.pagination=="object"?s.pagination:void 0,t=x(e?.pageSize,20,1,!0);return{paginationEnabled:s.pagination!==!1&&s.datasource==null,paginationMode:e?.mode==="server"?"server":"client",paginationPage:x(e?.page,1,1,!0),paginationTotal:x(e?.total,0,0,!0),paginationPageSize:t,paginationPageSizeOptions:$o(s,t),paginationShowTotal:e?e.showTotal!==!1:!0,paginationShowSizeSelector:e?e.showPageSizeSelector!==!1:!0}}function Zo(s){return{watermarkEnabled:s.watermark!=null&&s.watermark!==!1,watermarkConfig:s.watermark==null||s.watermark===!1?null:s.watermark===!0?{text:"MachTable"}:s.watermark}}function Qo(s){return{columnMenu:s.columnMenu??!1,columnStateKey:s.columnStateKey??null,locale:s.locale??{},suppressWarnings:s.suppressWarnings??!1,enableRangeSelection:s.enableRangeSelection??!1,suppressClipboard:s.suppressClipboard??!1,contextMenu:s.contextMenu??!1,tooltipShowDelay:x(s.tooltipShowDelay,600,0),flashCells:s.flashCells??!0,fillHandle:s.fillHandle??!0,statusBarEnabled:s.statusBar===!0||typeof s.statusBar=="object"&&s.statusBar!=null,statusBarPanels:typeof s.statusBar=="object"&&s.statusBar?.panels?s.statusBar.panels:["rowCount","selectedRowCount","rangeAggregate"]}}function Jo(s){return{blockSize:x(s.blockSize,100,1,!0),infiniteBufferRows:x(s.infiniteBufferRows,40,0,!0),datasourceRetryCount:x(s.datasourceRetryCount,2,0,!0),datasourceRetryDelay:x(s.datasourceRetryDelay,300,0,!0)}}function er(s){return{ariaLabel:s.ariaLabel??"MachTable data grid",ariaLabelledBy:s.ariaLabelledBy??"",ariaDescribedBy:s.ariaDescribedBy??"",overlayNoRowsTemplate:s.overlayNoRowsTemplate??"",overlayLoadingTemplate:s.overlayLoadingTemplate??"",allowUnsafeOverlayHtml:s.allowUnsafeOverlayHtml??!1}}var tr=["getRowId","detailRowRenderer","isRowExpandable","columnStateStore","aggFuncs","components","actionPolicy","summaryMethod","datasource","getRowHeight","tooltipComponent","getContextMenuItems","initialState","rowEditValidator","isTreeRowExpandable","loadTreeChildren"];function or(s,e){for(let t of tr)s[t]&&Object.assign(e,{[t]:s[t]})}function rr(s,e){for(let t of Object.keys(s))t.startsWith("on")&&typeof s[t]=="function"&&Object.assign(e,{[t]:s[t]})}function Bt(s){let e=Ko(s.size),t={...Uo(s,e),...qo(s),...jo(s),...Yo(s),...Xo(s),...Zo(s),...Qo(s),...Jo(s),...er(s),features:Array.isArray(s.features)?s.features:[]};return or(s,t),rr(s,t),t}function Vt(s){return Array.isArray(s)?s.filter(e=>typeof e=="string"&&e.length>0):typeof s=="string"&&s.length>0?[s]:[]}function j(s,e){return Vt(s.type).includes(e)}function zt(s,e,t={}){let o={};for(let r of Vt(s.type)){let n=t[r];n&&Object.assign(o,n)}return{...e,...o,...s}}var L=class{constructor(e,t){this.manualWidth=null;this.currentWidth=0;this.parentGroup=null;this.level=0;this.isDetailToggle=!1;this.id=e,this.colDef=t,this.hide=t.hide??!1;let o=t.pinned;this.pinned=o===!0?"left":o===!1||o==null?null:o}get sortable(){return this.colDef.sortable!==!1}get resizable(){return this.colDef.resizable!==!1}get movable(){return this.colDef.movable!==!1}get filterable(){return this.colDef.filter!=null&&this.colDef.filter!==!1}get filterType(){let e=this.colDef.filter;return e===!0?"text":e??"text"}get hasCheckbox(){return this.colDef.checkboxSelection===!0}};var z=class s{constructor(e,t){this.parent=null;this.children=[];this.groupId=e,this.def=t}get headerName(){return this.def.headerName??this.def.groupId??""}getLeafColumns(e=[]){for(let t of this.children)t instanceof s?t.getLeafColumns(e):e.push(t);return e}};function Y(s){return Array.isArray(s.children)}function P(s,e){let t=e.minWidth??80,o=e.maxWidth??Number.MAX_SAFE_INTEGER;return Math.max(t,Math.min(o,s))}function ye(s,e){let t=s.map(i=>P(i.width??150,i)),o=[],r=0;s.forEach((i,a)=>{let l=i.flex??0;l>0&&(o.push(a),r+=l)});let n=0;for(let i of t)n+=i;if(r>0&&e>n){let i=e-n;for(let a=0;a<4&&i>.5&&o.length>0;a++){let l=[],d=0;for(let p of o){let m=s[p].flex??0;l.push(p),d+=m}let c=[];for(let p=0;p<l.length;p++){let m=l[p],f=s[m].flex??0,y=i*f/d,v=t[m];t[m]=P(v+y,s[m]),c.push(t[m]-v)}let u=0;for(let p of c)u+=p;i-=u;let h=l.filter((p,m)=>c[m]>.001);if(h.length===l.length)break;o.length=0;for(let p of h)o.push(p)}}return t}function ve(s,e){let t=s.map(i=>P(i.width??150,i));if(!Number.isFinite(e)||e<=0||s.length===0)return t;let o=new Set(s.map((i,a)=>a)),r=e;for(let i=0;i<s.length+1&&o.size>0;i++){let a=0;for(let d of o)a+=Math.max(1,t[d]);if(a<=0)break;let l=!1;for(let d of[...o]){let c=r*(Math.max(1,t[d])/a),u=P(c,s[d]),h=s[d].minWidth??80,p=s[d].maxWidth??Number.MAX_SAFE_INTEGER;(c<h||c>p)&&(t[d]=u,r-=u,o.delete(d),l=!0)}if(!l){for(let d of o)t[d]=P(r*(Math.max(1,t[d])/a),s[d]);break}r=Math.max(0,r)}let n=e-t.reduce((i,a)=>i+a,0);if(Math.abs(n)>.01)for(let i=t.length-1;i>=0;i--){let a=P(t[i]+n,s[i]);if(Math.abs(a-t[i])>.01){t[i]=a;break}}return t}var gt="__rg_detail_toggle__",we=class{constructor(e){this.core=e;this.columns=[];this.rootChildren=[];this.left=[];this.center=[];this.right=[];this.sortModel=[];this.defs=[];this.headerDepth=1;this.flatIndexById=new Map;this.viewportWidth=0}setColumnDefs(e){this.defs=e?[...e]:[];let t=new Map(this.columns.map(i=>[i.id,i])),o=this.core.options.defaultColDef,r=new Set(this.core.options.masterDetail&&this.core.options.detailToggleColumn?[gt]:[]),n=(i,a,l)=>i.map((d,c)=>{if(Y(d)){let v=d.groupId??d.headerName??`group_${c}_${l}`,w=new z(v,d);return w.parent=a,w.children=n(d.children,w,l+1),w}let u=d,h=u.colId??u.field??`col_${c}`,p=h,m=2;for(;r.has(p);)p=`${h}_${m++}`;r.add(p);let f=new L(p,zt(u,o,this.core.options.columnTypes));f.parentGroup=a,f.level=l;let y=t.get(p);return y&&(f.manualWidth=y.manualWidth,f.hide=y.hide,f.pinned=y.pinned),f});if(this.rootChildren=n(this.defs,null,0),this.core.options.masterDetail&&this.core.options.detailToggleColumn){let i=new L(gt,{colId:gt,headerName:"",width:38,pinned:"left",sortable:!1,resizable:!1,movable:!1,filter:!1});i.isDetailToggle=!0,this.rootChildren.unshift(i)}if(this.columns=this.collectLeaves(this.rootChildren),this.headerDepth=this.columns.reduce((i,a)=>Math.max(i,a.level+1),1),this.sortModel=this.sortModel.filter(i=>this.columns.some(a=>a.id===i.colId)),this.sortModel.length===0){let i=[];for(let a of this.columns)a.colDef.initialSort&&i.push({colId:a.id,direction:a.colDef.initialSort});this.sortModel=i}this.regroup()}collectLeaves(e,t=[]){for(let o of e)o instanceof z?this.collectLeaves(o.children,t):t.push(o);return t}regroup(){let e=this.columns.filter(t=>!t.hide);this.left=e.filter(t=>t.pinned==="left"),this.right=e.filter(t=>t.pinned==="right"),this.center=e.filter(t=>t.pinned===null),this.flatIndexById.clear(),this.getOrderedVisible().forEach((t,o)=>this.flatIndexById.set(t.id,o))}getFlatIndex(e){return this.flatIndexById.get(e)??-1}getColumns(){return this.columns}getColumnDefs(){return this.defs}getRootChildren(){return this.rootChildren}getHeaderDepth(){return this.headerDepth}getColumn(e){return this.columns.find(t=>t.id===e)}getPaneColumns(e){return e==="left"?this.left:e==="right"?this.right:this.center}getOrderedVisible(){return[...this.left,...this.center,...this.right]}getRowGroupColumns(){return this.getOrderedVisible().filter(e=>e.colDef.rowGroup===!0)}getAggColumns(){return this.getOrderedVisible().filter(e=>e.colDef.aggFunc!=null&&e.colDef.rowGroup!==!0)}hasColSpan(){return this.center.some(e=>e.colDef.colSpan!=null)}getGroupLabelColumn(){let e=this.getOrderedVisible();return this.center.find(t=>!t.hasCheckbox&&!t.isDetailToggle)??e.find(t=>!t.hasCheckbox&&!t.isDetailToggle)??e[0]}paneOf(e){return e.pinned==="left"?"left":e.pinned==="right"?"right":"center"}computeLayout(e){this.viewportWidth=e;let t=0;for(let c of[...this.left,...this.right])c.currentWidth=P(c.manualWidth??c.colDef.width??150,this.widthInputOf(c)),t+=c.currentWidth;let o=Math.max(0,e-t),r=this.center.filter(c=>!c.colDef.suppressSizeToFit),n=this.center.filter(c=>c.colDef.suppressSizeToFit),i=0;for(let c of n)c.currentWidth=P(c.manualWidth??c.colDef.width??150,this.widthInputOf(c)),i+=c.currentWidth;let a=r.map(c=>this.widthInputOf(c)),l=Math.max(0,o-i),d=this.core.options.columnLayout==="fit"?ve(a,l):ye(a,l);r.forEach((c,u)=>{c.currentWidth=d[u]})}widthInputOf(e){let t=e.colDef;return e.manualWidth!=null?{width:e.manualWidth,minWidth:t.minWidth,maxWidth:t.maxWidth}:{width:t.width,minWidth:t.minWidth,maxWidth:t.maxWidth,flex:t.flex}}setColumnWidth(e,t){e.manualWidth=P(t,this.widthInputOf(e))}setColumnVisibility(e,t){let o=this.getColumn(e);!o||o.hide===!t||(o.hide=!t,this.regroup())}moveColumn(e,t){let o=this.getColumn(e);if(!o)return!1;let r=this.paneOf(o),n=u=>o.parentGroup?!0:this.paneOf(u)===r,i=o.parentGroup?o.parentGroup.children:this.rootChildren,a=i.filter(u=>u instanceof L&&!u.hide&&n(u)),l=a.indexOf(o);if(l<0)return!1;a.splice(l,1);let d=Math.max(0,Math.min(t,a.length));a.splice(d,0,o);let c=[];return i.forEach((u,h)=>{u instanceof L&&!u.hide&&n(u)&&c.push(h)}),c.length!==a.length?!1:(c.forEach((u,h)=>{i[u]=a[h]}),this.columns=this.collectLeaves(this.rootChildren),this.regroup(),!0)}setColumnPinned(e,t){let o=this.getColumn(e);o&&(o.pinned=t,this.regroup())}getColumnState(){return this.columns.map(e=>{let t=this.sortModel.findIndex(r=>r.colId===e.id),o={colId:e.id,hide:e.hide,width:e.manualWidth??e.currentWidth,pinned:e.pinned};return t>=0?(o.sort=this.sortModel[t].direction,o.sortIndex=t):(o.sort=null,o.sortIndex=null),o})}applyColumnState(e){let t=new Map(e.map(r=>[r.colId,r]));for(let r of this.columns){let n=t.get(r.id);n&&(n.hide!=null&&(r.hide=n.hide),n.width!=null&&(r.manualWidth=n.width),n.pinned!==void 0&&(r.pinned=n.pinned))}let o=[];for(let r of e)r.sort&&this.columns.some(n=>n.id===r.colId)&&o.push({colId:r.colId,direction:r.sort,sortIndex:r.sortIndex??0});o.sort((r,n)=>r.sortIndex-n.sortIndex),this.sortModel=o.map(({colId:r,direction:n})=>({colId:r,direction:n})),this.applyStateOrder(e),this.regroup()}applyStateOrder(e){let t=new Map;e.forEach((r,n)=>t.set(r.colId,n));let o=r=>r.pinned==="left"?"left":r.pinned==="right"?"right":"center";for(let r of["left","center","right"]){let n=this.rootChildren.filter(l=>l instanceof L&&!l.hide&&l.parentGroup===null&&o(l)===r);if(n.length<2)continue;let i=n.slice().sort((l,d)=>(t.get(l.id)??Number.MAX_SAFE_INTEGER)-(t.get(d.id)??Number.MAX_SAFE_INTEGER));if(i.every((l,d)=>l===n[d]))continue;let a=[];this.rootChildren.forEach((l,d)=>{l instanceof L&&!l.hide&&l.parentGroup===null&&o(l)===r&&a.push(d)}),a.forEach((l,d)=>{this.rootChildren[l]=i[d]})}this.columns=this.collectLeaves(this.rootChildren)}resetColumnState(){for(let e of this.columns){e.manualWidth=null,e.hide=e.colDef.hide??!1;let t=e.colDef.pinned;e.pinned=t===!0?"left":t===!1||t==null?null:t}this.sortModel=[],this.regroup()}getSortModel(){return this.sortModel.map(e=>({...e}))}applySortModel(e){if(!e||e.length===0){this.sortModel=[];return}this.sortModel=e.filter(t=>this.columns.some(o=>o.id===t.colId)&&(t.direction==="asc"||t.direction==="desc")).map(t=>({colId:t.colId,direction:t.direction}))}cycleSort(e,t){let o=[...this.sortModel],r=o.findIndex(l=>l.colId===e.id),n=r>=0?o[r].direction:null,i=n===null?"asc":n==="asc"?"desc":null;t&&this.core.options.multiSort?i===null?r>=0&&o.splice(r,1):r>=0?o[r]={colId:e.id,direction:i}:o.push({colId:e.id,direction:i}):(o.length=0,i&&o.push({colId:e.id,direction:i})),this.sortModel=o}};function Kt(s){return s==null?"":String(s).toLowerCase()}function nr(s,e,t){let o=Kt(s),r=e.map(n=>{let i=(n.value??"").toLowerCase();switch(n.match){case"contains":return o.includes(i);case"notContains":return!o.includes(i);case"equals":return o===i;case"notEquals":return o!==i;case"startsWith":return o.startsWith(i);case"endsWith":return o.endsWith(i);case"blank":return o==="";case"notBlank":return o!=="";default:return!0}});return r.length===0?!0:t==="or"?r.some(Boolean):r.every(Boolean)}function ir(s,e,t){let o=e.map(r=>{let n=s==null||s==="";if(r.match==="blank")return n;if(r.match==="notBlank")return!n;if(n)return!1;let i=typeof s=="number"?s:Number(s);if(isNaN(i))return!1;let a=r.value;if(a==null||isNaN(a))return!1;switch(r.match){case"equals":return i===a;case"notEquals":return i!==a;case"lessThan":return i<a;case"lessThanOrEqual":return i<=a;case"greaterThan":return i>a;case"greaterThanOrEqual":return i>=a;case"inRange":return i>=a&&i<=(r.value2??a);default:return!0}});return o.length===0?!0:t==="or"?o.some(Boolean):o.every(Boolean)}function Ce(s){if(s==null||s==="")return null;if(s instanceof Date)return isNaN(s.getTime())?null:s.getTime();if(typeof s=="number")return s;let e=Date.parse(String(s));return isNaN(e)?null:e}function sr(s,e,t){let o=e.map(r=>{let n=Ce(s)==null;if(r.match==="blank")return n;if(r.match==="notBlank")return!n;if(n)return!1;let i=Ce(s),a=r.value!=null?Ce(r.value):null;if(a==null)return!1;switch(r.match){case"equals":return i===a;case"notEquals":return i!==a;case"lessThan":return i<a;case"greaterThan":return i>a;case"inRange":{let l=r.value2!=null?Ce(r.value2):null;return l!=null?i>=a&&i<=l:i>=a}default:return!0}});return o.length===0?!0:t==="or"?o.some(Boolean):o.every(Boolean)}function ar(s,e){return e.length===0?!0:e.some(t=>t==null&&s==null||t===s)}function yt(s,e){let t=e.type!=="set"&&e.operator==="or"?"or":"and";switch(e.type){case"text":return nr(s,e.conditions,t);case"number":return ir(s,e.conditions,t);case"date":return sr(s,e.conditions,t);case"set":return ar(s,e.values);default:return!0}}function vt(s,e,t,o,r){for(let n of Object.keys(t)){let i=t[n],a=e.find(d=>d.id===n);if(!a)continue;let l=r(s,a);if(!yt(l,i))return!1}if(o&&o.trim()!==""){let n=o.trim().toLowerCase().split(/\s+/);for(let i of n)if(!e.some(l=>Kt(r(s,l)).includes(i)))return!1}return!0}var _t=typeof Intl<"u"?new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"}):null;function X(s,e){let t=s==null||s==="",o=e==null||e==="";if(t&&o)return 0;if(t)return 1;if(o)return-1;if(typeof s=="number"&&typeof e=="number")return isNaN(s)&&isNaN(e)?0:isNaN(s)?1:isNaN(e)?-1:s-e;if(s instanceof Date&&e instanceof Date)return s.getTime()-e.getTime();if(typeof s=="boolean"&&typeof e=="boolean")return s===e?0:s?1:-1;let r=String(s),n=String(e);return _t?_t.compare(r,n):r.localeCompare(n)}function oe(s,e,t,o){let r=new Map;for(let l of t)r.set(l.id,l);let n=[],i=[];for(let l of e){let d=r.get(l.colId);d&&(n.push(d.colDef.comparator??X),i.push(l.direction))}let a=s.map(l=>({node:l,values:e.map(d=>o(l,r.get(d.colId)))}));return a.sort((l,d)=>{for(let c=0;c<n.length;c++){let u=n[c](l.values[c],d.values[c],l.node,d.node);if(u!==0)return i[c]==="asc"?u:-u}return 0}),a.map(l=>l.node)}function be(s){return s.filter(e=>typeof e=="number"&&!isNaN(e))}var wt={sum:s=>be(s).reduce((e,t)=>e+t,0),avg:s=>{let e=be(s);return e.length===0?null:e.reduce((t,o)=>t+o,0)/e.length},count:s=>s.length,min:s=>{let e=be(s);return e.length===0?null:Math.min(...e)},max:s=>{let e=be(s);return e.length===0?null:Math.max(...e)},first:s=>s.length>0?s[0]:null,last:s=>s.length>0?s[s.length-1]:null};function Ee(s){let e={...wt,...s??{}};return t=>e[t]}function re(s,e){if(s==null||typeof s!="object")return;let t=s[e];return Array.isArray(t)?t:void 0}var Re=class{constructor(e){this.core=e;this.all=[];this.roots=[];this.childIds=new Map;this.displayed=[];this.nodesById=new Map;this.filterModel={};this.quickFilter=null;this.expandedIds=new Set;this.groupExpandedIds=new Set;this.knownGroupIds=[];this.spanInfo=new Map;this.mastersBuf=[];this.infiniteLastRow=null;this.infiniteRequested=!1;this.infiniteLoading=!1;this.infiniteSeq=0;this.infiniteAbort=null;this.infiniteRetryTimer=null;this.infinitePendingResolve=null;this.treeDepth=new WeakMap;this.rowSequence=new WeakMap;this.treeLoadControllers=new Map;this.treeLoadPromises=new Map;this.pipelineRows=[];this.page=1;this.pageSize=20}resolveRowId(e,t,o){let r=this.core.options.getRowId;if(!r)return o;try{let n=r({data:e,index:t,api:this.core.getApi()});if(typeof n=="string"&&n.length>0)return n;this.core.reportError(new Error("getRowId must return a non-empty string"),"getRowId",{index:t})}catch(n){this.core.reportError(n,"getRowId",{index:t})}return o}get isTree(){return this.core.options.treeData}get isInfinite(){return this.core.options.datasource!=null}getDisplayTotalCount(){if(this.isInfinite){let e=Math.max(0,this.displayed.length-this.all.length);return(this.infiniteLastRow??this.all.length)+e}return this.displayed.length}isLoadingInfinite(){return this.infiniteLoading}startInfinite(){return this.isInfinite?(this.cancelInfiniteRequest(),this.infiniteLastRow=null,this.infiniteRequested=!1,this.all=[],this.roots=[],this.nodesById.clear(),this.expandedIds.clear(),this.core.undoService.clear(),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged(),this.loadBlock(0)):Promise.resolve()}reloadInfinite(){return this.isInfinite?this.startInfinite():Promise.resolve()}setInfiniteLoading(e){this.infiniteLoading=e,this.core.skeleton.setInfiniteLoading(e,this.core.getLocaleText("loading"))}loadBlock(e,t){if(!this.isInfinite||this.infiniteRequested||this.infiniteLastRow!=null&&e>=this.infiniteLastRow)return Promise.resolve();let o=this.core.options.datasource,r=this.core.options.blockSize,n=t??e+r;if(n<=e)return Promise.resolve();let i=++this.infiniteSeq,a=new AbortController;return this.infiniteAbort=a,this.infiniteRequested=!0,this.setInfiniteLoading(!0),new Promise(l=>{let d=!1,c=0;this.infinitePendingResolve=l;let u=p=>{d||(d=!0,i===this.infiniteSeq&&(this.infiniteRequested=!1,this.infiniteAbort=null,this.infinitePendingResolve=null,this.setInfiniteLoading(!1),p!=null&&p?.name!=="AbortError"&&this.core.reportError(p,"datasource.getRows",{startRow:e,endRow:n})),l())},h=()=>{if(d||i!==this.infiniteSeq||a.signal.aborted||this.core.isDestroyed()){u();return}c++;let p=!1,m=f=>{if(!(p||d)){if(p=!0,i!==this.infiniteSeq||a.signal.aborted||this.core.isDestroyed()){u();return}if(c<=this.core.options.datasourceRetryCount){let y=Math.min(this.core.options.datasourceRetryDelay*2**Math.max(0,c-1),3e4);this.infiniteRetryTimer=setTimeout(()=>{this.infiniteRetryTimer=null,h()},y);return}u(f??new Error("Datasource request failed"))}};try{let f=o.getRows({startRow:e,endRow:n,sortModel:this.core.columnModel.getSortModel(),filterModel:this.getFilterModel(),quickFilterText:this.quickFilter,signal:a.signal,onSuccess:(y,v)=>{if(p||d)return;if(p=!0,i!==this.infiniteSeq||this.core.isDestroyed()||a.signal.aborted){u();return}let w=y??[];typeof v=="number"&&v>=0?this.infiniteLastRow=v:w.length<n-e&&(this.infiniteLastRow=e+w.length);let C=this.all.length===0;this.appendInfiniteRows(w),u(),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged(),C&&this.core.relayout(),this.core.headerRenderer.refreshSelectAllCheckbox()},fail:m});f&&typeof f.catch=="function"&&f.catch(m)}catch(f){m(f)}};h()})}cancelInfiniteRequest(){this.infiniteSeq++,this.infiniteRetryTimer!=null&&clearTimeout(this.infiniteRetryTimer),this.infiniteRetryTimer=null,this.infiniteAbort?.abort(),this.infiniteAbort=null,this.infiniteRequested=!1,this.setInfiniteLoading(!1),this.infinitePendingResolve?.(),this.infinitePendingResolve=null}appendInfiniteRows(e){for(let t of e){if(t==null)continue;let o=this.all.length,r=this.resolveRowId(t,o,`inf-${this.core.nextId()}`);if(this.nodesById.has(r)){this.core.reportError(new Error(`Duplicate row id: ${r}`),"datasource.getRows",{rowId:r});continue}let n={id:r,data:t,rowIndex:-1,selected:this.core.selectionService.isSelected(r)};this.all.push(n),this.nodesById.set(r,n),this.roots.push(n)}}checkInfiniteScroll(e){if(!this.isInfinite||this.infiniteRequested)return;let t=this.all.length;if(this.infiniteLastRow!=null&&t>=this.infiniteLastRow)return;let o=this.core.options.infiniteBufferRows;if(e+o<t&&e<t)return;let r=this.core.options.blockSize,n=this.infiniteLastRow==null?t+r:Math.min(this.infiniteLastRow,t+r);this.loadBlock(t,n)}onServerParamsChanged(){return this.reloadInfinite()}onDatasourceChanged(){return this.cancelInfiniteRequest(),this.isInfinite?this.startInfinite():(this.infiniteLastRow=null,this.setRowData(this.core.options.rowData),this.core.bodyRenderer.onDataChanged(),Promise.resolve())}destroy(){this.cancelInfiniteRequest(),this.cancelTreeLoads()}setRowData(e){this.cancelTreeLoads(),this.core.changeTracker.clear();let t=this.core.options.getRowId,o=this.core.options.childrenKey,r=[],n=[],i=new Map,a=new Map,l=0,d=(c,u,h)=>{let p=l++,m=this.resolveRowId(c,p,`auto-${p}`);if(i.has(m))return this.core.reportError(new Error(`Duplicate row id: ${m}`),"rowData",{rowId:m,index:p}),null;let f=this.isTree?re(c,o):void 0,y={id:m,data:c,rowIndex:-1,selected:!1,treeChildrenLoaded:Array.isArray(f)};if(this.treeDepth.set(y,u),r.push(y),i.set(m,y),h!=null){let v=a.get(h)??[];v.push(m),a.set(h,v)}else n.push(y);if(this.isTree&&Array.isArray(f))for(let v of f)v!=null&&d(v,u+1,m);return y};(e??[]).forEach(c=>{c!=null&&d(c,0,null)}),this.all=r,this.roots=n,this.childIds=a,this.nodesById=i,this.core.undoService.clear();for(let c of[...this.expandedIds])i.has(c)||this.expandedIds.delete(c);if(this.core.options.defaultExpandAll)for(let c of r)this.getChildrenCount(c.id)>0&&this.expandedIds.add(c.id);this.core.selectionService.onRowsRebuilt(t!=null),this.refreshPipeline()}getChildrenIds(e){return this.childIds.get(e)??[]}getChildrenCount(e){return this.childIds.get(e)?.length??0}hasChildren(e){return this.getChildrenCount(e)>0}isTreeRowLoading(e){return this.nodesById.get(e)?.treeLoading===!0}cancelTreeLoads(){for(let e of this.treeLoadControllers.values())e.abort();this.treeLoadControllers.clear(),this.treeLoadPromises.clear()}loadTreeChildren(e,t=!1){let o=this.nodesById.get(e),r=this.core.options.loadTreeChildren;if(!this.isTree||!o?.data||!r)return Promise.resolve([]);if(!t&&o.treeChildrenLoaded)return Promise.resolve(this.getChildrenIds(e).flatMap(l=>{let d=this.nodesById.get(l)?.data;return d==null?[]:[d]}));let n=this.treeLoadPromises.get(e);if(n&&!t)return n;this.treeLoadControllers.get(e)?.abort();let i=new AbortController;this.treeLoadControllers.set(e,i),o.treeLoading=!0,o.treeLoadError=void 0,this.core.bodyRenderer.onDataChanged();let a=Promise.resolve().then(()=>r({data:o.data,node:o,api:this.core.getApi(),signal:i.signal})).then(l=>{if(i.signal.aborted||this.core.isDestroyed())return[];if(!Array.isArray(l))throw new TypeError("[MachTable] loadTreeChildren must resolve to an array.");return this.replaceTreeChildren(o,l),o.treeChildrenLoaded=!0,o.treeLoadError=void 0,this.core.emit("treeChildrenLoaded",{rowId:e,rowNode:o,children:l}),l}).catch(l=>{if(i.signal.aborted||l?.name==="AbortError")return[];throw o.treeLoadError=l,o.treeChildrenLoaded=!1,this.core.reportError(l,"treeData.loadChildren",{rowId:e}),this.core.emit("treeChildrenLoadFailed",{rowId:e,rowNode:o,error:l}),l}).finally(()=>{this.treeLoadControllers.get(e)===i&&(this.treeLoadControllers.delete(e),this.treeLoadPromises.delete(e),o.treeLoading=!1,this.core.bodyRenderer.onDataChanged())});return this.treeLoadPromises.set(e,a),a}replaceTreeChildren(e,t){let o=new Set,r=[...this.getChildrenIds(e.id)];for(;r.length>0;){let i=r.pop();o.has(i)||(o.add(i),r.push(...this.getChildrenIds(i)))}this.validateTreeChildren(t,o);for(let i of o)this.treeLoadControllers.get(i)?.abort(),this.treeLoadControllers.delete(i),this.treeLoadPromises.delete(i),this.childIds.delete(i),this.nodesById.delete(i),this.expandedIds.delete(i);this.childIds.delete(e.id);let n=this.getTreeDepth(e)+1;for(let i of t)i!=null&&this.buildChildNodes(e,i,n);this.reindexAll(),this.core.selectionService.onRowsRebuilt(this.core.options.getRowId!=null),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged()}validateTreeChildren(e,t){let o=this.core.options.getRowId,r=o?new Set([...this.nodesById.keys()].filter(l=>!t.has(l))):null,n=new WeakSet,i=[...e],a=0;for(;i.length>0;){let l=i.pop();if(l==null)continue;if(typeof l=="object"){if(n.has(l))throw new TypeError("[MachTable] Lazy tree children contain a cyclic object graph.");n.add(l)}if(o&&r){let c=o({data:l,index:a++,api:this.core.getApi()});if(typeof c!="string"||c.length===0)throw new TypeError("[MachTable] getRowId must return a non-empty string for lazy tree children.");if(r.has(c))throw new Error(`Duplicate row id: ${c}`);r.add(c)}let d=re(l,this.core.options.childrenKey);d&&i.push(...d)}}applyTransaction(e,t=!0){let o=this.core.options.getRowId,r=[],n=[];if(e.remove?.length){let i=new Set,a=new Set,l=c=>{if(o){let h=[this.resolveRowId(c,-1,`__missing_remove_${this.core.nextId()}`)];for(;h.length>0;){let p=h.pop();if(!i.has(p)){i.add(p);for(let m of this.childIds.get(p)??[])h.push(m)}}}else{let u=[c];for(;u.length>0;){let h=u.pop();a.add(h);let p=this.isTree?re(h,this.core.options.childrenKey):void 0;if(p)for(let m of p)u.push(m)}}};e.remove.forEach(l),this.all=this.all.filter(c=>{let u=i.has(c.id)||c.data!=null&&a.has(c.data);return u&&(n.push(c.id),this.nodesById.delete(c.id),this.childIds.delete(c.id)),!u});let d=new Set(this.all);this.roots=this.roots.filter(c=>d.has(c))}if(e.update?.length)for(let i of e.update){let a;o?a=this.nodesById.get(this.resolveRowId(i,-1,`__missing_update_${this.core.nextId()}`)):a=this.all.find(l=>l.data===i),a&&(a.data=i,n.push(a.id),this.core.bodyRenderer.invalidateRowHeight(a),r.push(a))}if(e.add?.length){let i=e.addIndex!=null?Math.max(0,Math.min(e.addIndex,this.roots.length)):this.roots.length,a=[];e.add.forEach((l,d)=>{let c=this.resolveRowId(l,i+d,`add-${this.core.nextId()}`);if(this.nodesById.has(c)){this.core.reportError(new Error(`Duplicate row id: ${c}`),"transaction.add",{rowId:c});return}let u={id:c,data:l,rowIndex:-1,selected:!1};this.nodesById.set(c,u),this.treeDepth.set(u,0);let h=this.isTree?re(l,this.core.options.childrenKey):void 0;if(h)for(let p of h)p!=null&&this.buildChildNodes(u,p,1);a.push(u)}),this.roots.splice(i,0,...a),this.reindexAll()}if(t){this.refreshPipeline();for(let i of r)i.rowIndex>=0&&this.core.bodyRenderer.refreshRows([i.rowIndex])}this.core.changeTracker.clearRows(n)}applyTransactions(e){if(e.length!==0){for(let t of e)this.applyTransaction(t,!1);this.refreshPipeline()}}buildChildNodes(e,t,o){let r=this.resolveRowId(t,-1,`add-${this.core.nextId()}`);if(this.nodesById.has(r)){this.core.reportError(new Error(`Duplicate row id: ${r}`),"transaction.add",{rowId:r});return}let n=re(t,this.core.options.childrenKey),i={id:r,data:t,rowIndex:-1,selected:!1,treeChildrenLoaded:Array.isArray(n)};this.nodesById.set(r,i),this.treeDepth.set(i,o);let a=this.childIds.get(e.id)??[];if(a.push(i.id),this.childIds.set(e.id,a),!!n)for(let l of n)l!=null&&this.buildChildNodes(i,l,o+1)}reindexAll(){this.all=[];let e=t=>{this.all.push(t),this.nodesById.has(t.id)||this.nodesById.set(t.id,t);for(let o of this.childIds.get(t.id)??[]){let r=this.nodesById.get(o);r&&e(r)}};for(let t of this.roots)e(t)}setFilterModel(e){let t=JSON.stringify(this.filterModel);return this.filterModel=e?{...e}:{},JSON.stringify(this.filterModel)!==t}getFilterModel(){return{...this.filterModel}}setQuickFilter(e){let t=e!=null&&e.trim()!==""?e:null;return t===this.quickFilter?!1:(this.quickFilter=t,!0)}getQuickFilter(){return this.quickFilter}isFilterPresent(){return Object.keys(this.filterModel).length>0||this.quickFilter!=null}refreshPipeline(){let e=this.core.columnModel.getOrderedVisible(),t=(n,i)=>this.core.getCellValue(n,i);if(this.isInfinite){this.all.forEach((n,i)=>{n.rowIndex=i,this.rowSequence.set(n,i+1)}),this.displayed=this.all,this.pipelineRows=this.all,this.spanInfo.clear(),this.core.emit("modelUpdated",{rowCount:this.all.length});return}let o;if(this.isTree)o=this.buildTreeDisplay(e,t);else{o=this.all,this.isFilterPresent()&&!this.core.options.manualFiltering&&(o=o.filter(l=>vt(l,e,this.filterModel,this.quickFilter,t)));let i=this.core.columnModel.getSortModel();if(i.length>0&&!this.core.options.manualSorting)try{o=oe(o,i,e,t)}catch(l){this.core.reportError(l,"comparator",{sortModel:i})}let a=this.core.columnModel.getRowGroupColumns();if(a.length>0)o=this.buildGrouped(o,a);else if(this.core.options.masterDetail){let l=[];for(let d of o)l.push(d),this.expandedIds.has(d.id)&&this.isRowExpandable(d)&&l.push({id:`__detail__${d.id}`,data:d.data,rowIndex:-1,selected:!1,isDetail:!0,masterId:d.id});o=l}}for(let n of this.all)n.rowIndex=-1;let r=0;o.forEach((n,i)=>{n.rowIndex=i,!n.isDetail&&!n.isGroup&&(r++,this.rowSequence.set(n,r))}),this.pipelineRows=o,this.applyPagination(),this.computeSpans(t),this.core.emit("modelUpdated",{rowCount:o.length})}get paginationActive(){return this.core.options.paginationEnabled&&!this.isInfinite}applyPagination(){if(!this.paginationActive){this.displayed=this.pipelineRows;return}let e=this.effectivePageSize(),t=this.getPageCount();if(this.page>t&&(this.page=t),this.page<1&&(this.page=1),this.core.options.paginationPage=this.page,this.core.options.paginationMode==="server"){this.pipelineRows.forEach((n,i)=>{n.rowIndex=i}),this.displayed=this.pipelineRows;return}let o=(this.page-1)*e,r=this.pipelineRows.slice(o,o+e);r.forEach((n,i)=>{n.rowIndex=i}),this.displayed=r}effectivePageSize(){return this.pageSize=this.core.options.paginationPageSize,Math.max(1,this.pageSize)}getCurrentPage(){return this.paginationActive?this.page:1}getTotalRowCount(){return this.isInfinite?this.getDisplayTotalCount():this.paginationActive&&this.core.options.paginationMode==="server"?this.core.options.paginationTotal:this.pipelineRows.length}getPageCount(){return this.paginationActive?Math.max(1,Math.ceil(this.getTotalRowCount()/this.effectivePageSize())):1}getPipelineRows(){return this.pipelineRows}setPage(e,t=!1){if(!this.paginationActive)return;let o=this.getPageCount(),r=Math.max(1,Math.min(Math.round(e)||1,o));r!==this.page&&(this.page=r,this.core.options.paginationPage=r,this.applyPagination(),this.core.bodyRenderer.onDataChanged(),this.core.bodyRenderer.scrollToIndex(0,"top"),t||this.emitPaginationChanged())}setPageSize(e){if(!this.paginationActive)return;let t=Math.max(1,Math.round(e)||this.effectivePageSize()),o=(this.page-1)*this.effectivePageSize();this.core.options.paginationPageSize=t,this.pageSize=t,this.page=Math.floor(o/t)+1,this.core.options.paginationPage=this.page,this.applyPagination(),this.core.bodyRenderer.onDataChanged(),this.emitPaginationChanged()}restorePagination(e,t){this.pageSize=Math.max(1,Math.round(t)||1),this.core.options.paginationPageSize=this.pageSize,this.page=Math.max(1,Math.round(e)||1),this.core.options.paginationPage=this.page}setPaginationEnabled(e){this.core.options.paginationEnabled!==e&&(this.core.options.paginationEnabled=e&&!this.isInfinite,this.core.options.paginationEnabled&&(this.page=1),this.applyPagination(),this.core.bodyRenderer.onDataChanged(),this.emitPaginationChanged())}onPaginationOptionsChanged(){this.paginationActive&&(this.page=this.core.options.paginationMode==="server"?this.core.options.paginationPage:1,this.applyPagination(),this.core.bodyRenderer.onDataChanged(),this.emitPaginationChanged())}emitPaginationChanged(){this.core.emit("paginationChanged",{page:this.getCurrentPage(),pageSize:this.effectivePageSize(),pageCount:this.getPageCount(),total:this.getTotalRowCount()})}buildTreeDisplay(e,t){let o=this.core.options.manualSorting?[]:this.core.columnModel.getSortModel(),r=new Map,n=this.isFilterPresent()&&!this.core.options.manualFiltering,i=d=>{let c=r.get(d.id);if(c!==void 0)return c;let u=!0;if(n){u=vt(d,e,this.filterModel,this.quickFilter,t);for(let h of this.childIds.get(d.id)??[]){let p=this.nodesById.get(h);p&&i(p)&&(u=!0)}}return r.set(d.id,u),u},a=[],l=d=>{let c=d;o.length>0&&(c=oe(d,o,e,t));for(let u of c)if(i(u)&&(a.push(u),this.expandedIds.has(u.id))){let h=(this.childIds.get(u.id)??[]).map(p=>this.nodesById.get(p)).filter(p=>p!=null);l(h)}};return l(this.roots),a}computeSpans(e){if(this.spanInfo.clear(),this.isTree||this.core.options.masterDetail||this.core.columnModel.getRowGroupColumns().length>0)return;let t=this.core.columnModel.getOrderedVisible().filter(i=>i.colDef.rowSpan!=null||i.colDef.autoRowSpan===!0);if(t.length===0)return;let o=this.mastersBuf,r=0;for(let i of this.displayed)!i.isDetail&&!i.isGroup&&(o[r++]=i);o.length=r;let n=r;if(n!==0)for(let i of t){let a=new Int32Array(n),l=0;for(;l<n;){let d=o[l],c=e(d,i),u=1;if(i.colDef.rowSpan)try{let h=i.colDef.rowSpan({api:this.core.getApi(),colDef:i.colDef,column:i,node:d,data:d.data,value:c,rowIndex:d.rowIndex});u=Math.max(1,Math.min(Math.round(h)||1,n-l))}catch(h){this.core.reportError(h,"rowSpan",{colId:i.id,rowId:d.id})}else if(i.colDef.autoRowSpan)for(;l+u<n&&c!=null&&c!==""&&X(c,e(o[l+u],i))===0;)u++;a[l]=u;for(let h=1;h<u;h++)a[l+h]=-1;l+=u}this.spanInfo.set(i.id,a)}}getSpanInfo(e){return this.spanInfo.get(e)}getRowSeq(e){return this.rowSequence.get(e)??0}getTreeDepth(e){return this.treeDepth.get(e)??0}buildGrouped(e,t){let o=Ee(this.core.options.aggFuncs),r=this.core.columnModel.getAggColumns();this.knownGroupIds=[];let n=a=>{let l={};for(let d of r){let c=o(d.colDef.aggFunc);if(c)try{l[d.id]=c(a.map(u=>this.core.getCellValue(u,d)))}catch(u){this.core.reportError(u,"aggFunc",{colId:d.id,aggFunc:d.colDef.aggFunc}),l[d.id]=null}}return l},i=(a,l,d)=>{if(l>=t.length)return{display:a,leaves:a};let c=t[l],u=new Map,h=[];for(let f of a){let y=this.core.getCellValue(f,c),v=y==null?"(\u7A7A)":String(y),w=u.get(v);w||(w=[],u.set(v,w),h.push(v)),w.push(f)}h.sort((f,y)=>f.localeCompare(y,void 0,{numeric:!0,sensitivity:"base"}));let p=[],m=[];for(let f of h){let y=u.get(f),v=`${d}/g${l}:${f}`;this.knownGroupIds.push(v);let w=i(y,l+1,v),C={id:v,data:null,rowIndex:-1,selected:!1,isGroup:!0,groupLevel:l,groupKey:f,leafNodes:w.leaves,aggValues:n(w.leaves)};p.push(C),this.groupExpandedIds.has(v)&&p.push(...w.display),m.push(...w.leaves)}return{display:p,leaves:m}};return i(e,0,"").display}isRowExpandable(e){if(this.isTree){if(this.hasChildren(e.id)||e.treeLoading)return!0;if(e.treeChildrenLoaded||!e.data||!this.core.options.loadTreeChildren)return!1;let o=this.core.options.isTreeRowExpandable;if(!o)return!1;try{return o({data:e.data,node:e,api:this.core.getApi()})}catch(r){return this.core.reportError(r,"isTreeRowExpandable",{rowId:e.id}),!1}}if(!this.core.options.masterDetail)return!1;let t=this.core.options.isRowExpandable;if(t)try{return t({data:e.data,node:e,api:this.core.getApi()})}catch(o){return this.core.reportError(o,"isRowExpandable",{rowId:e.id}),!1}return!0}isRowExpanded(e){return this.expandedIds.has(e)}getExpandedRowIds(){return[...this.expandedIds]}getExpandedGroupIds(){return[...this.groupExpandedIds]}restoreExpansion(e,t){this.expandedIds=new Set(e.filter(o=>this.nodesById.has(o))),this.groupExpandedIds=new Set(t)}expandRow(e){return this.setDetailExpanded(e,!0)}collapseRow(e){return this.setDetailExpanded(e,!1)}toggleDetail(e){return this.setDetailExpanded(e,!this.expandedIds.has(e))}setDetailExpanded(e,t){let o=this.nodesById.get(e);return!o||t&&!this.isRowExpandable(o)?!1:(t===this.expandedIds.has(e)||(t?this.expandedIds.add(e):this.expandedIds.delete(e),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged(),this.core.emit("detailToggled",{rowId:e,rowNode:o,expanded:t}),t&&this.isTree&&!this.hasChildren(e)&&!o.treeLoading&&this.loadTreeChildren(e).catch(()=>{})),t)}expandAllDetails(){let e=!1;for(let t of this.all)!this.expandedIds.has(t.id)&&this.isRowExpandable(t)&&(this.expandedIds.add(t.id),e=!0);e&&(this.refreshPipeline(),this.core.bodyRenderer.onDataChanged())}collapseAllDetails(){this.expandedIds.size!==0&&(this.expandedIds.clear(),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged())}toggleGroup(e){return this.setGroupExpanded(e,!this.groupExpandedIds.has(e))}isGroupExpanded(e){return this.groupExpandedIds.has(e)}getGroupNode(e){return this.displayed.find(t=>t.isGroup&&t.id===e)}expandAllGroups(){if(this.knownGroupIds.length===0)return;let e=!1;for(let t of this.knownGroupIds)this.groupExpandedIds.has(t)||(this.groupExpandedIds.add(t),e=!0);e&&(this.refreshPipeline(),this.core.bodyRenderer.onDataChanged())}collapseAllGroups(){this.groupExpandedIds.size!==0&&(this.groupExpandedIds.clear(),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged())}setGroupExpanded(e,t){return!this.knownGroupIds.includes(e)||t===this.groupExpandedIds.has(e)||(t?this.groupExpandedIds.add(e):this.groupExpandedIds.delete(e),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged()),t}reorderRowsByDisplayed(e,t){if(this.isTree)return!1;let o=this.getDisplayedRow(e),r=this.getDisplayedRow(t);if(!o||!r||o.isDetail||r.isDetail||o.isGroup||r.isGroup)return!1;let n=this.all.indexOf(o),i=this.all.indexOf(r);if(n<0||i<0)return!1;if(i>n){let l=i;for(;l+1<this.all.length&&this.all[l+1].isDetail;)l++;i=l}if(n===i)return!1;this.all.splice(n,1);let a=this.all.indexOf(r);return this.all.splice(i>n?a+1:a,0,o),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged(),!0}getAllNodes(){return this.all}getRootNodes(){return this.roots}getDisplayedRows(){return this.displayed}getDisplayedRowCount(){return this.displayed.length}getDisplayedRow(e){return this.displayed[e]}getNodeById(e){return this.nodesById.get(e)}forEachNode(e){this.all.forEach(e)}forEachNodeAfterFilterAndSort(e){let t=0;for(let o of this.pipelineRows)o.isDetail||o.isGroup||e(o,t++)}};var De=class{constructor(e){this.core=e;this.selectedIds=new Set;this.anchorId=null;this.indeterminateIds=new Set}isSelected(e){return this.selectedIds.has(e)}isIndeterminate(e){return this.indeterminateIds.has(e)}isSelectable(e){let t=this.findSelectableColumn(e),o=t?.colDef.selectable;if(!t||!o)return!0;try{return o({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:e.rowIndex})}catch(r){return this.core.reportError(r,"selectable",{rowId:e.id,colId:t?.id}),!1}}findSelectableColumn(e){if(!(e.isGroup||e.isDetail))return this.core.columnModel.getOrderedVisible().find(t=>t.hasCheckbox&&t.colDef.selectable!=null)}getSelectedNodes(){return this.core.rowModel.getAllNodes().filter(e=>this.selectedIds.has(e.id))}getSelectedRows(){return this.getSelectedNodes().filter(e=>e.data!=null).map(e=>e.data)}getSelectedIds(){return[...this.selectedIds]}restoreSelection(e){let t=new Set(e),o=this.core.rowModel.getAllNodes().filter(r=>t.has(r.id)&&!r.isDetail&&!r.isGroup).map(r=>({node:r,selected:!0}));this.applySelection(o,!0)}onRowsRebuilt(e){if(!e)this.selectedIds.clear(),this.anchorId=null;else{let t=new Set(this.core.rowModel.getAllNodes().map(o=>o.id));for(let o of[...this.selectedIds])t.has(o)||this.selectedIds.delete(o);this.anchorId!=null&&!t.has(this.anchorId)&&(this.anchorId=null)}for(let t of this.core.rowModel.getAllNodes())t.selected=this.selectedIds.has(t.id);this.recomputeTriState()}getGroupSelectionState(e){let t=e.leafNodes??[];if(t.length===0)return{all:!1,some:!1};let o=0,r=0;for(let n of t)this.isSelectable(n)&&(o++,this.selectedIds.has(n.id)&&r++);return o===0?{all:!1,some:!1}:{all:r===o,some:r>0}}setGroupSelected(e,t){let o=(e.leafNodes??[]).filter(r=>this.isSelectable(r));o.length!==0&&this.applySelection(o.map(r=>({node:r,selected:t})))}setNodeSelected(e,t,o=!1){this.applySelection([{node:e,selected:t,clearOthers:o}])}selectNodeById(e,t=!0,o=!0){let r=this.core.rowModel.getNodeById(e);r&&this.setNodeSelected(r,t,o)}onRowClick(e,t,o){let r=this.core.options.rowSelection;if(r==="none"||!this.isSelectable(e))return;if(o){let i=r==="single";this.applySelection([{node:e,selected:i?!0:!e.selected,clearOthers:i}]),this.anchorId=e.id;return}let n=r==="multiple";if(n&&(t.ctrlKey||t.metaKey)){this.applySelection([{node:e,selected:!e.selected}]),this.anchorId=e.id;return}if(n&&t.shiftKey&&this.anchorId!=null){let i=this.core.rowModel.getNodeById(this.anchorId);if(i&&i.rowIndex>=0&&e.rowIndex>=0){let a=Math.min(i.rowIndex,e.rowIndex),l=Math.max(i.rowIndex,e.rowIndex),d=[];for(let c=a;c<=l;c++){let u=this.core.rowModel.getDisplayedRow(c);u&&!u.isDetail&&!u.isGroup&&this.isSelectable(u)&&d.push({node:u,selected:!0})}this.applySelection(d);return}}this.applySelection([{node:e,selected:!0,clearOthers:!0}]),this.anchorId=e.id}selectAll(e=!0){let t=this.core.options.rowSelection;if(t==="none")return;let r=(e?this.core.rowModel.getDisplayedRows():this.core.rowModel.getAllNodes()).filter(n=>!n.isDetail&&!n.isGroup&&this.isSelectable(n));if(r.length!==0){if(t==="single"){this.applySelection([{node:r[0],selected:!0,clearOthers:!0}]);return}this.applySelection(r.map(n=>({node:n,selected:!0})))}}deselectAll(){this.applySelection([],!0)}isSelectAllActive(){let t=this.core.rowModel.getDisplayedRows().filter(o=>!o.isDetail&&!o.isGroup).filter(o=>this.isSelectable(o));if(t.length===0)return!1;if(this.core.rowModel.isInfinite){let o=this.core.rowModel.getDisplayTotalCount();if(t.length<o)return!1}return t.every(o=>this.selectedIds.has(o.id))}isSelectAllIndeterminate(){let t=this.core.rowModel.getDisplayedRows().filter(r=>!r.isDetail&&!r.isGroup).filter(r=>this.isSelectable(r)),o=t.reduce((r,n)=>r+(this.selectedIds.has(n.id)?1:0),0);if(o===0)return!1;if(this.core.rowModel.isInfinite){let r=this.core.rowModel.getDisplayTotalCount();if(t.length<r)return!0}return o>0&&o<t.length}applySelectionPublic(e,t=!1){this.applySelection(e,t)}applySelection(e,t=!1){let o=new Set(this.selectedIds),r=t||e.some(u=>u.clearOthers),n=this.core.rowModel.isTree&&this.core.options.autoCheckedChildren;if(r){let u=t?new Set:new Set(e.filter(h=>h.selected).flatMap(h=>n?this.subtreeIds(h.node):[h.node.id]));this.selectedIds=u}for(let u of e){if(!this.isSelectable(u.node))continue;let h=n?this.subtreeIds(u.node):[u.node.id];for(let p of h)u.selected?this.selectedIds.add(p):this.selectedIds.delete(p)}let i=new Set;for(let u of new Set([...o,...this.selectedIds]))o.has(u)!==this.selectedIds.has(u)&&i.add(u);let a=new Map;for(let u of this.core.rowModel.getAllNodes())a.set(u.id,u.selected);let l=new Set(this.indeterminateIds);this.recomputeTriState();let d=[],c=new Set([...i,...l,...this.indeterminateIds]);for(let u of this.core.rowModel.getAllNodes()){let h=this.selectedIds.has(u.id);u.selected=h,(c.has(u.id)||a.get(u.id)!==h)&&u.rowIndex>=0&&d.push(u.rowIndex)}i.size>0&&(this.core.bodyRenderer.refreshRows(d),this.core.headerRenderer.refreshSelectAllCheckbox(),this.core.emit("selectionChanged",{selectedNodes:this.getSelectedNodes(),selectedRows:this.getSelectedRows()}))}subtreeIds(e){let t=[e.id],o=r=>{for(let n of this.core.rowModel.getChildrenIds(r))t.push(n),o(n)};return o(e.id),t}recomputeTriState(){if(this.indeterminateIds.clear(),!this.core.rowModel.isTree)return;let e=t=>{let o=this.core.rowModel.getChildrenIds(t);if(o.length===0)return{all:this.selectedIds.has(t),some:this.selectedIds.has(t)};let r=!0,n=!1;for(let i of o){let a=e(i);a.all?n=!0:(a.some&&(n=!0),r=!1)}return n&&!r&&this.indeterminateIds.add(t),r?this.selectedIds.add(t):this.selectedIds.delete(t),{all:r,some:n}};for(let t of this.core.rowModel.getRootNodes())e(t.id);for(let t of this.core.rowModel.getAllNodes())t.selected=this.selectedIds.has(t.id)}};function g(s,e,t){let o=document.createElement(s);if(e&&(o.className=e),t)for(let r of Object.keys(t))o.setAttribute(r,t[r]);return o}function T(s,e,t){return s<e?e:s>t?t:s}var $t='<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3.5h12L9.5 8v4.5L6.5 14V8L2 3.5z"/></svg>',Ut='<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor"><path d="M8 3l4 5H4l4-5z"/></svg>',qt='<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor"><path d="M8 13l4-5H4l4 5z"/></svg>';var Te=class{constructor(e){this.core=e;this.active=null;this.rafId=0;this.pendingWidth=0;this.onMove=e=>{let t=this.active;if(!t)return;let o=t.column.colDef,r=o.minWidth??80,n=o.maxWidth??Number.MAX_SAFE_INTEGER;this.pendingWidth=T(t.startWidth+(e.clientX-t.startX),r,n),!this.rafId&&(this.rafId=requestAnimationFrame(()=>{this.rafId=0;let i=this.active;i&&(this.core.columnModel.setColumnWidth(i.column,this.pendingWidth),this.core.relayoutColumns(),this.core.emit("columnResized",{colId:i.column.id,width:this.pendingWidth,finished:!1}))}))};this.onUp=e=>{let t=this.active;if(t){this.active=null,this.rafId&&(cancelAnimationFrame(this.rafId),this.core.columnModel.setColumnWidth(t.column,this.pendingWidth),this.core.relayoutColumns()),this.rafId=0,t.handle.removeEventListener("pointermove",this.onMove),t.handle.removeEventListener("pointerup",this.onUp),t.handle.removeEventListener("pointercancel",this.onUp);try{t.handle.releasePointerCapture(e.pointerId)}catch{}this.core.skeleton.root.classList.remove("mach-root--resizing"),this.core.emit("columnResized",{colId:t.column.id,width:t.column.manualWidth??t.column.currentWidth,finished:!0}),this.core.persistColumnState()}}}startResize(e,t){let o=e.currentTarget,r=t.colDef,n=t.manualWidth??t.currentWidth,i=r.minWidth??80;n<i&&r.width==null&&(t.manualWidth=n),this.active={column:t,startX:e.clientX,startWidth:t.manualWidth??n,pointerId:e.pointerId,handle:o},o.setPointerCapture(e.pointerId),o.addEventListener("pointermove",this.onMove),o.addEventListener("pointerup",this.onUp),o.addEventListener("pointercancel",this.onUp),this.core.skeleton.root.classList.add("mach-root--resizing")}destroy(){if(cancelAnimationFrame(this.rafId),this.rafId=0,this.active){let e=this.active;this.active=null,e.handle.removeEventListener("pointermove",this.onMove),e.handle.removeEventListener("pointerup",this.onUp),e.handle.removeEventListener("pointercancel",this.onUp)}this.core.skeleton.root?.classList.remove("mach-root--resizing")}};var jt=6,xe=class{constructor(e){this.core=e;this.pending=null;this.dragging=null;this.suppressClick=!1;this.onMove=e=>{if(this.dragging){this.updateIndicator(e);return}let t=this.pending;t&&(Math.abs(e.clientX-t.startX)<jt&&Math.abs(e.clientY-t.startY)<jt||this.startDrag(e))};this.onUp=()=>{let e=this.dragging;this.pending=null,this.cleanup(),e&&(this.dragging=null,e.cellEl.classList.remove("mach-header-cell--dragging"),e.indicator.remove(),this.core.skeleton.root.classList.remove("mach-root--dragging"),e.targetIndex>=0&&this.core.moveColumn(e.column.id,e.targetIndex))}}onPointerDown(e,t){e.button===0&&t.movable&&(this.pending={column:t,startX:e.clientX,startY:e.clientY},window.addEventListener("pointermove",this.onMove),window.addEventListener("pointerup",this.onUp),window.addEventListener("pointercancel",this.onUp))}didDrag(){let e=this.suppressClick;return this.suppressClick=!1,e}startDrag(e){let t=this.pending;if(!t)return;let o=this.findHeaderCell(t.column);if(!o||!o.parentElement){this.cleanup();return}this.suppressClick=!0;let r=g("div","mach-drop-indicator");o.parentElement.appendChild(r),o.classList.add("mach-header-cell--dragging"),this.core.skeleton.root.classList.add("mach-root--dragging"),this.dragging={column:t.column,cellEl:o,indicator:r,targetIndex:-1},this.updateIndicator(e)}findHeaderCell(e){let t=this.core.bodyRenderer.paneForColumn(e);return this.core.skeleton.headerRowContainers[t].querySelector(`.mach-header-cell[data-col-id="${lr(e.id)}"]`)}updateIndicator(e){let t=this.dragging;if(!t)return;let o=this.core.bodyRenderer.paneForColumn(t.column),n=this.core.skeleton.headerRowContainers[o].getBoundingClientRect(),i=this.core.columnModel.getPaneColumns(o),a=i.indexOf(t.column),l=e.clientX-n.left,d=-1,c=0,u=0;for(let h=0;h<i.length;h++){let p=u+i[h].currentWidth/2;if(l<p){d=h,c=u;break}u+=i[h].currentWidth}d<0&&(d=i.length,c=u),t.targetIndex=d>a?d-1:d,t.indicator.style.left=`${c}px`}cleanup(){window.removeEventListener("pointermove",this.onMove),window.removeEventListener("pointerup",this.onUp),window.removeEventListener("pointercancel",this.onUp)}destroy(){this.cleanup(),this.dragging&&(this.dragging.cellEl.classList.remove("mach-header-cell--dragging"),this.dragging.indicator.remove(),this.core.skeleton.root.classList.remove("mach-root--dragging"),this.dragging=null),this.pending=null}};function lr(s){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(s):s.replace(/[^a-zA-Z0-9_-]/g,"\\$&")}function Yt(s,e){let t=s==null?"":String(s);return t.includes(e)||t.includes('"')||t.includes(`
2
- `)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function ne(s){return typeof s!="string"||s===""||/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(s)?s:/^[\s\u0000-\u001f]*[=+\-@]/.test(s)?"'"+s:s}function Ct(s,e={}){let t=e.columnSeparator??",",o=e.includeHeader??!0,r=e.protectFormulas??!0,n=[];o&&n.push(s.getHeaderLabels().map(a=>Yt(a,t)).join(t));for(let a of s.getRowValues())n.push(a.map(l=>Yt(r?ne(l):l,t)).join(t));let i=n.join(`\r
3
- `);return e.prependBOM?"\uFEFF"+i:i}function dr(s,e){let t=e?ne(s):s,o=t==null?"":String(t);return/["\t\n\r]/.test(o)?'"'+o.replace(/"/g,'""')+'"':o}function Z(s,e=!0){return s.map(t=>t.map(o=>dr(o,e)).join(" ")).join(`
4
- `)}function Se(s){return Ie(s," ")}function Me(s,e=","){return Ie(s,e)}function Ie(s,e){let t=[],o=[],r="",n=!1,i=0;for(;i<s.length;){let a=s[i];if(n){if(a==='"'){if(s[i+1]==='"'){r+='"',i+=2;continue}n=!1,i++;continue}r+=a,i++;continue}if(a==='"'&&r===""){n=!0,i++;continue}if(a===e){o.push(r),r="",i++;continue}if(a===`
5
- `||a==="\r"){o.push(r),t.push(o),o=[],r="",a==="\r"&&s[i+1]===`
6
- `?i+=2:i++;continue}r+=a,i++}return(r!==""||o.length>0)&&(o.push(r),t.push(o)),t}function cr(s){let e=null;try{return e=document.createElement("textarea"),e.value=s,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.focus(),e.select(),document.execCommand("copy")}catch{return!1}finally{e?.remove()}}async function ie(s){try{if(typeof navigator<"u"&&navigator.clipboard?.writeText)return await navigator.clipboard.writeText(s),!0}catch{}return cr(s)}var ur=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Enter","F2","Home","End","PageUp","PageDown","Tab"," ","Escape","Delete","Backspace"]),hr=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown"]),ke=class{constructor(e){this.core=e;this.onCopy=e=>{if(this.core.options.suppressClipboard||this.core.editingService.isEditing())return;let t=this.core.bodyRenderer.getNormalizedRangeOrFocus();if(!t)return;let o=this.core.buildRangeTsv(t),r=e.clipboardData;r&&typeof r.setData=="function"?r.setData("text/plain",o):ie(o),e.preventDefault()};this.onCut=e=>{if(this.core.options.suppressClipboard||this.core.editingService.isEditing())return;let t=this.core.bodyRenderer.getNormalizedRangeOrFocus();if(!t)return;let o=this.core.buildRangeTsv(t),r=e.clipboardData;r&&typeof r.setData=="function"?r.setData("text/plain",o):ie(o),this.core.clearRangeValues(t),e.preventDefault()};this.onPaste=e=>{if(this.core.options.suppressClipboard||this.core.editingService.isEditing())return;let t=this.core.bodyRenderer.getPasteStart();if(!t)return;let o=e.clipboardData,r=o&&typeof o.getData=="function"?o.getData("text/plain"):null;typeof r!="string"||r===""||(e.preventDefault(),this.core.pasteText(r,t.row,t.colIdx))};this.onKeyDown=e=>{this.core.isDestroyed()||this.core.editingService.isEditing()||this.handleSelectAll(e)||this.handleHistoryShortcut(e)||ur.has(e.key)&&(this.handleRangeCommand(e)||this.focusFirstCell(e)||this.handleFocusedKey(e))}}init(){this.core.skeleton.root.addEventListener("keydown",this.onKeyDown),this.core.skeleton.root.addEventListener("copy",this.onCopy),this.core.skeleton.root.addEventListener("cut",this.onCut),this.core.skeleton.root.addEventListener("paste",this.onPaste)}destroy(){this.core.skeleton.root.removeEventListener("keydown",this.onKeyDown),this.core.skeleton.root.removeEventListener("copy",this.onCopy),this.core.skeleton.root.removeEventListener("cut",this.onCut),this.core.skeleton.root.removeEventListener("paste",this.onPaste)}nextEditable(e,t,o){let r=this.core.columnModel.getOrderedVisible(),n=r.findIndex(d=>d.id===t);if(n<0)return null;let i=this.core.rowModel.getDisplayedRowCount(),a=n,l=e;for(let d=0;d<(r.length+1)*(i+1);d++){if(a+=o,a>=r.length){if(l>=i-1)return null;a=0,l=this.skipDetailRows(l+1,1)}else if(a<0){if(l<=0)return null;a=r.length-1,l=this.skipDetailRows(l-1,-1)}if(l<0||l>=i)return null;let c=this.core.rowModel.getDisplayedRow(l);if(c&&!c.isDetail&&this.core.editingService.isEditable(c,r[a]))return{rowIndex:l,column:r[a]}}return null}skipDetailRows(e,t){let o=this.core.rowModel.getDisplayedRowCount(),r=0;for(;e>=0&&e<o;){let n=this.core.rowModel.getDisplayedRow(e);if(!n||!n.isDetail)return e;if(e+=t,r++,r>o+2)break}return-1}handleSelectAll(e){return!(e.ctrlKey||e.metaKey)||e.key.toLowerCase()!=="a"?!1:(this.core.options.rowSelection==="multiple"&&(e.preventDefault(),this.core.selectionService.selectAll(!0)),!0)}handleHistoryShortcut(e){if(!e.ctrlKey&&!e.metaKey||e.altKey)return!1;let t=e.key.toLowerCase();return t==="z"?(e.preventDefault(),e.shiftKey?this.core.undoService.redo():this.core.undoService.undo(),!0):t!=="y"?!1:(e.preventDefault(),this.core.undoService.redo(),!0)}handleRangeCommand(e){let t=this.core.bodyRenderer;if(e.key==="Escape")return this.core.options.enableRangeSelection&&t.normalizedRange()&&(e.preventDefault(),t.clearRangeSelection()),!0;if(e.key!=="Delete"&&e.key!=="Backspace")return!1;if(!this.core.options.enableRangeSelection)return!0;let o=t.normalizedRange();return o&&!(o.r1===o.r2&&o.c1===o.c2)&&(e.preventDefault(),this.core.clearRangeValues(o)),!0}focusFirstCell(e){if(this.core.bodyRenderer.focusedCell)return!1;let t=this.core.columnModel.getOrderedVisible();return this.core.rowModel.getDisplayedRowCount()>0&&t.length>0&&(e.preventDefault(),this.core.bodyRenderer.setFocusedCell(0,t[0].id)),!0}handleFocusedKey(e){let t=this.core.bodyRenderer,o=t.focusedCell;if(!o)return;let r=this.core.columnModel.getOrderedVisible(),n=r.findIndex(c=>c.id===o.colId),i=this.core.rowModel.getDisplayedRowCount();if(n<0||i===0)return;let a={row:o.rowIndex,colIdx:n},l=this.resolveKeyPosition(e,a,r,i);if(!l)return;e.preventDefault();let d=l.row!==a.row||l.colIdx!==a.colIdx;if(e.shiftKey&&this.core.options.enableRangeSelection&&d){t.moveRangeEnd(l.row,l.colIdx);return}d&&t.setFocusedCell(l.row,r[l.colIdx].id)}resolveKeyPosition(e,t,o,r){return hr.has(e.key)?this.movePosition(e,t,o.length,r):e.key==="Enter"||e.key==="F2"?this.activateEditor(e,t,o,r):e.key===" "?(this.toggleFocusedRow(t.row),t):e.key==="Tab"?this.moveToEditable(e,t,o):null}movePosition(e,t,o,r){let{row:n,colIdx:i}=t;switch(e.key){case"ArrowUp":n=this.validSkippedRow(n,this.skipDetailRows(n-1,-1),r);break;case"ArrowDown":n=this.validSkippedRow(n,this.skipDetailRows(n+1,1),r);break;case"ArrowLeft":i=Math.max(0,i-1);break;case"ArrowRight":i=Math.min(o-1,i+1);break;case"Home":i=0,e.ctrlKey&&(n=0);break;case"End":i=o-1,e.ctrlKey&&(n=Math.max(0,this.skipDetailRows(r-1,-1)));break;case"PageUp":case"PageDown":n=this.movePage(e.key,n,r);break}return{row:n,colIdx:i}}validSkippedRow(e,t,o){return t>=0&&t<o?t:e}movePage(e,t,o){let r=this.core.skeleton.bodyViewports.center,n=Math.max(1,Math.floor(r.clientHeight/this.core.options.rowHeight)),i=e==="PageUp"?-1:1,a=Math.max(0,Math.min(o-1,t+n*i));return this.validSkippedRow(t,this.skipDetailRows(a,i),o)}activateEditor(e,t,o,r){let n=this.core.rowModel.getDisplayedRow(t.row),i=o[t.colIdx];if(n&&!n.isDetail&&i&&this.core.editingService.isEditable(n,i))return this.core.editingService.start(t.row,i,e.key==="F2"?e.key:null),t;let a=this.skipDetailRows(t.row+1,1);return{...t,row:this.validSkippedRow(t.row,a,r)}}toggleFocusedRow(e){let t=this.core.rowModel.getDisplayedRow(e);if(!(!t||t.isDetail)){if(t.isGroup){this.core.rowModel.toggleGroup(t.id);return}this.core.options.rowSelection!=="none"&&this.core.selectionService.setNodeSelected(t,!t.selected,this.core.options.rowSelection==="single")}}moveToEditable(e,t,o){let r=this.nextEditable(t.row,o[t.colIdx].id,e.shiftKey?-1:1);return r?(this.core.bodyRenderer.setFocusedCell(r.rowIndex,r.column.id),this.core.editingService.start(r.rowIndex,r.column),t):null}};function bt(s,e){let t=document.createElement("input");return t.type=s,t.className="mach-editor-input",e!=null&&e!==""&&(t.value=s==="date"?String(e).slice(0,10):String(e)),t}function pr(s,e){return e&&e.length>0?"select":typeof s=="number"?"number":s instanceof Date||typeof s=="string"&&/^\d{4}-\d{2}-\d{2}/.test(s)?"date":"text"}function Et(s,e,t){let o=s.colDef,r=typeof o.cellEditor=="string"?o.cellEditor:pr(e,o.cellEditorParams?.values);if(r==="number"){let i=bt("number",e);return{el:i,getValue:()=>i.value===""?null:Number(i.value),focus:()=>{i.focus(),i.select()}}}if(r==="date"){let i=bt("date",e),l=(e==null?"":String(e)).match(/T(\d{2}:\d{2})/);return{el:i,getValue:()=>i.value===""?null:l?`${i.value}T${l[1]}`:i.value,focus:()=>i.focus()}}if(r==="select"){let i=o.cellEditorParams?.values??[],a=document.createElement("select");a.className="mach-editor-select";for(let l of i){let d=document.createElement("option");d.value=String(l),d.textContent=String(l),String(e)===String(l)&&(d.selected=!0),a.appendChild(d)}return{el:a,getValue:()=>{let l=i.find(d=>String(d)===a.value);return l!==void 0?l:a.value},focus:()=>a.focus()}}let n=bt("text",e);return t&&t.length===1&&(n.value=t),{el:n,getValue:()=>n.value,focus:()=>{n.focus(),n.select()}}}var Rt=new WeakMap,Le=new WeakMap,Pe=new WeakMap;function se(s){let e=Rt.get(s);return e||(e={},Rt.set(s,e)),e}function Xt(s){return Rt.get(s)}function Zt(s,e){e?Le.set(s,e):Le.delete(s)}function Qt(s){let e=Le.get(s);return Le.delete(s),e}function Jt(s,e){e?Pe.set(s,e):Pe.delete(s)}function Dt(s){let e=Pe.get(s);return Pe.delete(s),e}function Ae(s){if(s==null)return"";if(s instanceof Date)return s.toLocaleDateString();if(typeof s=="object")try{return JSON.stringify(s)}catch{return String(s)}return String(s)}function S(s,e){let t=Xt(e);if(!t)return;t.flashTimer&&clearTimeout(t.flashTimer),t.flashTimer=void 0;let o=t.destroy;if(t.destroy=void 0,!!o)try{o()}catch(r){s.reportError(r,"cellRenderer.destroy",{colId:e.dataset.colId})}}function N(s,e,t){let o=s.getCellValue(e,t),r=t.colDef.valueFormatter;if(r)try{let n=r({api:s.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:o});return n==null?"":String(n)}catch(n){s.reportError(n,"valueFormatter",{colId:t.id,rowId:e.id})}return Ae(o)}function ae(s,e,t,o){let r=t.colDef.valueFormatter;if(r)try{let n=r({api:s.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:o});return n==null?"":String(n)}catch(n){s.reportError(n,"valueFormatter",{colId:t.id,rowId:e.id})}return Ae(o)}function Ne(s,e,t,o){let r=o.colDef.cellStyle,n=se(e),i=n.styleKeys;if(i)for(let d of i)Reflect.set(e.style,d,"");if(!r){n.styleKeys=void 0;return}let a;if(typeof r=="function"){let d=s.getCellValue(t,o);try{a=r({api:s.getApi(),colDef:o.colDef,column:o,node:t,data:t.data,value:d,rowIndex:t.rowIndex})}catch(c){s.reportError(c,"cellStyle",{colId:o.id,rowId:t.id}),a=null}}else a=r;if(!a){n.styleKeys=void 0;return}let l=Object.keys(a);for(let d of l)Reflect.set(e.style,d,Reflect.get(a,d));n.styleKeys=l}function Oe(s,e,t,o){S(s,e);let r=s.getCellValue(t,o),n=N(s,t,o),i=o.colDef.cellRenderer,a=typeof i=="string"?s.resolveCellRenderer(i):i;if(a){let c={api:s.getApi(),colDef:o.colDef,column:o,node:t,data:t.data,value:r,formatted:n,rowIndex:t.rowIndex,rendererParams:o.colDef.cellRendererParams},u;try{u=a(c)}catch(h){s.reportError(h,"cellRenderer",{colId:o.id,rowId:t.id}),e.textContent=n;return}if(typeof u=="string")e.textContent=u;else if(u instanceof HTMLElement)e.replaceChildren(u);else if(u&&typeof u=="object"&&u.el instanceof HTMLElement){let h=u;e.replaceChildren(h.el),h.destroy&&(se(e).destroy=h.destroy)}else e.textContent=""}else e.textContent=n;let l=n;s.options.tooltipComponent&&(l="");let d=o.colDef.tooltipValueGetter;if(d)try{l=d({api:s.getApi(),colDef:o.colDef,column:o,node:t,data:t.data,value:r})??n}catch(c){s.reportError(c,"tooltipValueGetter",{colId:o.id,rowId:t.id})}l?e.getAttribute("title")!==l&&e.setAttribute("title",l):e.hasAttribute("title")&&e.removeAttribute("title")}function le(s,e,t,o){let r=s.getCellValue(t,o),n=["mach-cell"],i=o.colDef.align;i==="center"?n.push("mach-cell--center"):i==="right"?n.push("mach-cell--right"):(j(o.colDef,"rightAligned")||j(o.colDef,"numericColumn")||typeof r=="number"&&r!=null)&&n.push("mach-cell--num");let a=o.colDef.cellClass;if(a)if(typeof a=="function"){let u={api:s.getApi(),colDef:o.colDef,column:o,node:t,data:t.data,value:r,rowIndex:t.rowIndex};try{let h=a(u);typeof h=="string"?n.push(h):Array.isArray(h)&&n.push(...h)}catch(h){s.reportError(h,"cellClass",{colId:o.id,rowId:t.id})}}else typeof a=="string"?n.push(a):Array.isArray(a)&&n.push(...a);let l=e.classList.contains("mach-cell--focus"),d=e.classList.contains("mach-cell--editing");l&&n.push("mach-cell--focus"),d&&n.push("mach-cell--editing"),o.colDef.wrapText&&n.push("mach-cell--wrap");let c=n.join(" ");e.className!==c&&(e.className=c)}var fr='<path d="M3 8.5 6.4 12 13.5 4"/>',mr='<path d="m4 4 8 8m0-8-8 8"/>';function eo(s,e){let t=document.createElement("button");return t.type="button",t.className=`mach-edit-control mach-edit-control--${s}`,t.setAttribute("aria-label",e),t.title=e,t.innerHTML=`<svg viewBox="0 0 16 16" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">${s==="confirm"?fr:mr}</svg>`,t.addEventListener("mousedown",o=>{o.preventDefault(),o.stopPropagation()}),t}var Ge=class{constructor(e){this.core=e;this.cellEditing=null;this.rowEditing=null;this.stopPromise=null;this.stopToken=0;this.onCellEditorKeyDown=e=>{if(this.cellEditing){if(e.key==="Enter")e.preventDefault(),e.stopPropagation(),this.stopAsync(!1);else if(e.key==="Escape")e.preventDefault(),e.stopPropagation(),this.stopAsync(!0);else if(e.key==="Tab"){e.preventDefault(),e.stopPropagation();let t=this.cellEditing,o=this.core.keyboardService.nextEditable(t.rowIndex,t.column.id,e.shiftKey?-1:1);this.stopAsync(!1).then(r=>{r&&o&&(this.core.bodyRenderer.scrollToIndex(o.rowIndex,"nearest"),this.core.bodyRenderer.setFocusedCell(o.rowIndex,o.column.id),this.start(o.rowIndex,o.column))})}}};this.onCellEditorBlur=()=>{window.setTimeout(()=>{this.cellEditing&&this.stopAsync(!1)},0)}}isEditing(e,t){return this.cellEditing?e==null&&t==null?!0:this.cellEditing.rowIndex===e&&this.cellEditing.column.id===t:this.rowEditing?e==null&&t==null?!0:this.currentRowIndex(this.rowEditing)!==e?!1:t==null||this.rowEditing.drafts.has(t):!1}isCellEditing(){return this.cellEditing!=null}isRowEditing(e){return this.rowEditing?e==null||this.currentRowIndex(this.rowEditing)===e:!1}isEditable(e,t){if(e.isDetail||e.isGroup||e.data==null)return!1;let o=t.colDef.editable;if(!o)return!1;if(typeof o=="function")try{return o({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:e.rowIndex})}catch(r){return this.core.reportError(r,"editable",{colId:t.id,rowId:e.id}),!1}return!0}start(e,t,o){if(this.core.options.editType==="fullRow")return this.startRow(e,t.id);if(this.cellEditing||this.rowEditing)return!1;let r=this.core.rowModel.getDisplayedRow(e);if(!r||r.data==null||!this.isEditable(r,t))return!1;let n=this.core.bodyRenderer.getCellElement(e,t.id);if(!n)return!1;let i=this.core.getCellValue(r,t),a=this.createCellEditor(r,t,e,i,o);if(!a)return!1;S(this.core,n);let l=document.createElement("div");l.className="mach-cell-editor-shell";let d=document.createElement("div");d.className="mach-cell-editor-controls";let c=eo("confirm","Confirm edit"),u=eo("cancel","Cancel edit");d.append(c,u),l.append(a.el,d),n.replaceChildren(l),n.classList.add("mach-cell--editing"),n.removeAttribute("title");let h=this.onCellEditorKeyDown;return a.el.addEventListener("keydown",h),a.el.addEventListener("focusout",this.onCellEditorBlur),c.addEventListener("click",p=>{p.stopPropagation(),this.stopAsync(!1)}),u.addEventListener("click",p=>{p.stopPropagation(),this.stopAsync(!0)}),this.cellEditing={node:r,column:t,editor:a,rowIndex:e,oldValue:i,cell:n,shell:l,keydown:h,confirmButton:c,cancelButton:u},this.focusEditor(a,t,r),this.core.emit("cellEditingStarted",{rowIndex:e,colId:t.id,rowNode:r}),!0}startRow(e,t){if(this.cellEditing||this.rowEditing)return!1;let o=this.core.rowModel.getDisplayedRow(e);if(!o||o.data==null||o.isDetail||o.isGroup)return!1;let r=new Map;for(let l of this.core.columnModel.getOrderedVisible()){if(!this.isEditable(o,l))continue;let d=this.core.getCellValue(o,l);r.set(l.id,{column:l,oldValue:d,value:d,mounted:null})}if(r.size===0)return!1;let n={node:o,rowIndex:e,drafts:r,validating:!1};if(this.rowEditing=n,this.core.bodyRenderer.refreshRows([e]),r.size===0)return this.rowEditing=null,this.core.bodyRenderer.refreshRows([e]),!1;let i=r.values().next().value,a=(t?r.get(t):void 0)??i;return a?.mounted&&this.focusEditor(a.mounted.editor,a.column,o),this.core.emit("rowEditingStarted",{rowIndex:e,rowNode:o,data:o.data}),!0}renderEditor(e,t,o,r){if(this.cellEditing)return this.cellEditing.node===t&&this.cellEditing.column.id===o.id;let n=this.rowEditing;if(!n||n.node!==t)return!1;let i=n.drafts.get(o.id);return i?i.mounted?.cell!==r&&(i.mounted&&this.unmountRowDraft(i),!this.mountRowDraft(e,n,i,r))?(n.drafts.delete(o.id),!1):!0:!1}releaseCell(e,t,o){let r=this.rowEditing;if(r&&this.currentRowIndex(r)===e){let n=r.drafts.get(t);n?.mounted?.cell===o&&this.unmountRowDraft(n);return}if(this.cellEditing?.cell===o){let n=this.cellEditing;this.stopAsync(!1),this.cellEditing===n&&this.stopAsync(!0)}}stop(e=!1){this.stopAsync(e)}stopAsync(e=!1){if(this.rowEditing)return this.stopRowAsync(e);let t=this.cellEditing;if(!t)return Promise.resolve(!1);if(e)return this.stopToken++,this.stopPromise=null,Promise.resolve(this.finishCellStop(t,!0,t.oldValue));if(this.stopPromise)return this.stopPromise;let o;try{o=t.editor.getValue()}catch(n){return this.core.reportError(n,"cellEditor.getValue",{colId:t.column.id,rowId:t.node.id}),Promise.resolve(this.finishCellStop(t,!0,t.oldValue))}try{if(t.editor.isCancelAfterEnd?.(o))return Promise.resolve(this.finishCellStop(t,!0,t.oldValue))}catch(n){return this.core.reportError(n,"cellEditor.isCancelAfterEnd",{colId:t.column.id,rowId:t.node.id}),Promise.resolve(this.finishCellStop(t,!0,t.oldValue))}let r=this.validateValue(t.node,t.column,t.oldValue,o);if(r&&typeof r.then=="function"){let n=++this.stopToken;this.setCellBusy(t,!0);let i=Promise.resolve(r).then(a=>n!==this.stopToken||this.cellEditing!==t?!1:typeof a=="string"?(this.showError(t.editor,a),!1):this.finishCellStop(t,!1,o)).catch(a=>(n!==this.stopToken||this.cellEditing!==t||(this.core.reportError(a,"validate",{colId:t.column.id,rowId:t.node.id}),this.showError(t.editor,"Validation failed")),!1)).finally(()=>{this.stopPromise===i&&(this.stopPromise=null)});return this.stopPromise=i,i}return typeof r=="string"?(this.showError(t.editor,r),Promise.resolve(!1)):Promise.resolve(this.finishCellStop(t,!1,o))}stopRowAsync(e=!1){let t=this.rowEditing;if(!t)return Promise.resolve(!1);if(e)return this.stopToken++,this.stopPromise=null,Promise.resolve(this.finishRowStop(t,!0));if(this.stopPromise)return this.stopPromise;for(let i of t.drafts.values())this.captureRowDraft(i);let o=[...t.drafts.values()].filter(i=>!Object.is(i.oldValue,i.value));if(o.length===0)return Promise.resolve(this.finishRowStop(t,!1));let r=++this.stopToken;for(let i of o)i.error=void 0;t.validating=!0,this.setRowBusy(t,!0);let n=Promise.all(o.map(async i=>{try{let a=await this.validateValue(t.node,i.column,i.oldValue,i.value);return{draft:i,message:typeof a=="string"?a:null}}catch(a){return this.core.reportError(a,"validate",{colId:i.column.id,rowId:t.node.id}),{draft:i,message:"Validation failed"}}})).then(async i=>{if(r!==this.stopToken||this.rowEditing!==t)return!1;let a=i.filter(d=>d.message!=null);if(a.length>0)return this.showRowErrors(t,a.map(d=>({draft:d.draft,message:d.message}))),!1;let l=await this.validateRowDraft(t,o);return r!==this.stopToken||this.rowEditing!==t?!1:l.length>0?(this.showRowErrors(t,l),!1):this.finishRowStop(t,!1)}).finally(()=>{this.stopPromise===n&&(this.stopPromise=null)});return this.stopPromise=n,n}finishCellStop(e,t,o){if(this.cellEditing!==e)return!1;this.cellEditing=null;let r=!t&&this.applyValue(e.node,e.column,e.oldValue,o);return this.destroyMountedEditor(e,!0),this.core.emit("cellEditingStopped",{rowIndex:e.rowIndex,colId:e.column.id,rowNode:e.node,oldValue:e.oldValue,newValue:r?o:e.oldValue}),e.node.rowIndex>=0&&this.core.bodyRenderer.refreshRows([e.node.rowIndex]),this.core.summaryRenderer.refresh(),this.core.statusBarService.refresh(),!0}finishRowStop(e,t){if(this.rowEditing!==e)return!1;let o=t?[]:this.commitRowDrafts(e);if(o==null)return!1;for(let n of e.drafts.values())t||this.captureRowDraft(n),n.mounted&&this.destroyMountedEditor(n.mounted,!0),n.mounted=null;this.rowEditing=null;let r=this.currentRowIndex(e);return this.core.emit("rowEditingStopped",{rowIndex:r,rowNode:e.node,data:e.node.data,cancelled:t,changes:o}),r>=0&&this.core.bodyRenderer.refreshRows([r]),this.core.summaryRenderer.refresh(),this.core.statusBarService.refresh(),!0}commitRowDrafts(e){let t=[...e.drafts.values()].filter(r=>!Object.is(r.oldValue,r.value));if(t.length===0)return[];let o=[];this.core.undoService.beginBatch();for(let r of t){if(!this.core.writeValue(e.node,r.column,r.value,r.oldValue)){let n=!1;for(let i of[...o].reverse())this.core.writeValue(e.node,i.column,i.oldValue,i.value)||(n=!0);return this.core.undoService.cancelBatch(),n&&this.core.reportError(new Error("A valueSetter rejected full-row rollback"),"rowEditRollback",{rowId:e.node.id,colId:r.column.id}),this.showRowErrors(e,[{draft:r,message:"Value was rejected by the column setter"}]),null}o.push(r)}for(let r of o)this.core.notifyCellValueChanged(e.node,r.column,r.oldValue,r.value);return this.core.undoService.endBatch(),o.map(r=>({colId:r.column.id,oldValue:r.oldValue,newValue:r.value}))}mountRowDraft(e,t,o,r){let n=this.createCellEditor(t.node,o.column,e,o.value,null);if(!n)return!1;S(this.core,r);let i=document.createElement("div");i.className="mach-row-editor-shell",i.appendChild(n.el),r.replaceChildren(i),r.classList.add("mach-cell--editing","mach-cell--row-editing"),r.removeAttribute("title");let a=d=>this.onRowEditorKeyDown(d,t,o),l=()=>{try{o.value=n.getValue(),o.error=void 0}catch{}};return n.el.addEventListener("keydown",a),n.el.addEventListener("input",l),o.mounted={editor:n,cell:r,shell:i,keydown:a,input:l},o.error&&this.showError(n,o.error),t.validating&&(n.el.classList.add("mach-editor-validating"),n.el.setAttribute("aria-busy","true"),n.el.inert=!0),!0}unmountRowDraft(e){e.mounted&&(this.captureRowDraft(e),this.destroyMountedEditor(e.mounted,!0),e.mounted=null)}captureRowDraft(e){if(e.mounted)try{let t=e.mounted.editor.getValue();t!==void 0&&(e.value=t)}catch(t){this.core.reportError(t,"cellEditor.getValue",{colId:e.column.id,rowId:this.rowEditing?.node.id})}}createCellEditor(e,t,o,r,n){let i=t.colDef,a;try{let l={api:this.core.getApi(),colDef:i,column:t,node:e,data:e.data,value:r,rowIndex:o,keyPress:n};typeof i.cellEditor=="function"?a=i.cellEditor(l):typeof i.cellEditor=="string"&&!["text","number","date","select"].includes(i.cellEditor)?a=this.core.resolveCellEditor(i.cellEditor)?.(l)??Et(t,r,n):a=Et(t,r,n)}catch(l){return this.core.reportError(l,"cellEditor",{colId:t.id,rowId:e.id}),null}if(!a||!(a.el instanceof HTMLElement))return this.core.reportError(new Error("cellEditor must return an editor with an HTMLElement el"),"cellEditor",{colId:t.id,rowId:e.id}),null;try{if(a.isCancelBeforeStart?.())return a.destroy?.(),null}catch(l){this.core.reportError(l,"cellEditor.isCancelBeforeStart",{colId:t.id,rowId:e.id});try{a.destroy?.()}catch{}return null}return a}validateValue(e,t,o,r){let n=t.colDef.validate;if(!n)return!0;try{return n(r,{oldValue:o,newValue:r,data:e.data,node:e,colDef:t.colDef,column:t,api:this.core.getApi()})}catch(i){return this.core.reportError(i,"validate",{colId:t.id,rowId:e.id}),"Validation failed"}}async validateRowDraft(e,t){let o=this.core.options.rowEditValidator;if(!o)return[];let r=Object.create(null);for(let[l,d]of e.drafts)r[l]=d.value;let n=t.map(l=>({colId:l.column.id,oldValue:l.oldValue,newValue:l.value})),i;try{i=await o({data:e.node.data,node:e.node,values:r,changes:n,api:this.core.getApi()})}catch(l){return this.core.reportError(l,"rowEditValidator",{rowId:e.node.id}),[{draft:t[0],message:"Row validation failed"}]}if(typeof i=="string")return[{draft:t[0],message:i}];if(!i||i===!0||typeof i!="object")return[];let a=[];for(let[l,d]of Object.entries(i)){let c=e.drafts.get(l);c&&typeof d=="string"&&d&&a.push({draft:c,message:d})}if(a.length===0){let l=Object.values(i).find(d=>typeof d=="string"&&d);typeof l=="string"&&a.push({draft:t[0],message:l})}return a}showRowErrors(e,t){e.validating=!1,this.setRowBusy(e,!1);for(let{draft:o,message:r}of t)o.error=r,o.mounted&&this.showError(o.mounted.editor,r);t[0].draft.mounted?.editor.focus?.()}showError(e,t){let o=e.el;o.classList.add("mach-editor-invalid"),o.setAttribute("title",t),o.setAttribute("aria-invalid","true"),o.classList.remove("mach-editor-validating"),o.removeAttribute("aria-busy"),o.inert=!1,(o.querySelector("input, select, textarea")??o).focus?.();let n=()=>{o.classList.remove("mach-editor-invalid"),o.removeAttribute("title"),o.removeAttribute("aria-invalid")};o.addEventListener("input",n,{once:!0})}setCellBusy(e,t){e.editor.el.classList.toggle("mach-editor-validating",t),t?e.editor.el.setAttribute("aria-busy","true"):e.editor.el.removeAttribute("aria-busy"),e.editor.el.inert=t,e.confirmButton.disabled=t,e.cancelButton.disabled=!1,e.shell.classList.toggle("mach-editor-shell--busy",t)}setRowBusy(e,t){for(let o of e.drafts.values()){let r=o.mounted?.editor.el;r&&(r.classList.toggle("mach-editor-validating",t),t?r.setAttribute("aria-busy","true"):r.removeAttribute("aria-busy"),r.inert=t)}}applyValue(e,t,o,r){return r===void 0?!1:this.core.setCellValue(e,t,r,o)}focusEditor(e,t,o){try{e.focus?.()}catch(r){this.core.reportError(r,"cellEditor.focus",{colId:t.id,rowId:o.id})}}destroyMountedEditor(e,t){e.editor.el.removeEventListener("keydown",e.keydown),e.input&&e.editor.el.removeEventListener("input",e.input),e.editor.el.removeEventListener("focusout",this.onCellEditorBlur),e.editor.el.classList.remove("mach-editor-validating"),e.editor.el.removeAttribute("aria-busy"),e.editor.el.inert=!1;try{e.editor.destroy?.()}catch(o){this.core.reportError(o,"cellEditor.destroy",{colId:e.cell.dataset.colId})}t&&e.cell.classList.remove("mach-cell--editing","mach-cell--row-editing","mach-cell--error")}currentRowIndex(e){return e.node.rowIndex>=0?e.node.rowIndex:e.rowIndex}onRowEditorKeyDown(e,t,o){if(this.rowEditing!==t)return;if(e.key==="Escape"){e.preventDefault(),e.stopPropagation(),this.stopRowAsync(!0);return}if(e.key==="Enter"&&!e.shiftKey){e.preventDefault(),e.stopPropagation(),this.stopRowAsync(!1);return}if(e.key!=="Tab")return;e.preventDefault(),e.stopPropagation(),this.captureRowDraft(o);let r=[...t.drafts.values()],n=r.indexOf(o),i=e.shiftKey?-1:1;for(let a=1;a<=r.length;a++){let l=r[(n+i*a+r.length)%r.length];if(l.mounted){this.focusEditor(l.mounted.editor,l.column,t.node);break}}}destroy(){(this.cellEditing||this.rowEditing)&&this.stopAsync(!0)}};var M={matchContains:"\u5305\u542B",matchNotContains:"\u4E0D\u5305\u542B",matchEquals:"\u7B49\u4E8E",matchNotEquals:"\u4E0D\u7B49\u4E8E",matchStartsWith:"\u5F00\u5934\u662F",matchEndsWith:"\u7ED3\u5C3E\u662F",matchBlank:"\u4E3A\u7A7A",matchNotBlank:"\u4E0D\u4E3A\u7A7A",matchLessThan:"\u5C0F\u4E8E",matchLessThanOrEqual:"\u5C0F\u4E8E\u7B49\u4E8E",matchGreaterThan:"\u5927\u4E8E",matchGreaterThanOrEqual:"\u5927\u4E8E\u7B49\u4E8E",matchInRange:"\u5728\u8303\u56F4\u5185",apply:"\u5E94\u7528",reset:"\u91CD\u7F6E",search:"\u641C\u7D22...",emptySetLabel:"(\u7A7A)",selectedCount:"\u5DF2\u9009 {n} \u9879",sortAsc:"\u5347\u5E8F",sortDesc:"\u964D\u5E8F",clearSort:"\u53D6\u6D88\u6392\u5E8F",pinLeft:"\u56FA\u5B9A\u5DE6\u4FA7",pinRight:"\u56FA\u5B9A\u53F3\u4FA7",clearPin:"\u53D6\u6D88\u56FA\u5B9A",autoSize:"\u81EA\u9002\u5E94\u5217\u5BBD",hideColumn:"\u9690\u85CF\u6B64\u5217",columnVisibility:"\u5217\u663E\u793A",resetAll:"\u91CD\u7F6E\u5168\u90E8",autoSizeAll:"\u5168\u90E8\u81EA\u9002\u5E94",columnSettings:"\u5217\u8BBE\u7F6E",totalLabel:"\u5408\u8BA1",totalRowsLabel:"\u5171 {n} \u884C",menuCopy:"\u590D\u5236",menuPaste:"\u7C98\u8D34",menuClearContents:"\u6E05\u9664\u5185\u5BB9",loading:"\u52A0\u8F7D\u4E2D...",statusSelected:"\u5DF2\u9009 {n} \u884C",statusSum:"\u548C {n}",statusAvg:"\u5747 {n}",statusCount:"\u8BA1 {n}",emptyRows:"\u6682\u65E0\u6570\u636E",emptyRowsHint:"\u6CA1\u6709\u53EF\u663E\u793A\u7684\u884C",paginationTotal:"\u5171 {n} \u6761",paginationPage:"\u7B2C {a} / {b} \u9875",perPage:"{n} \u6761/\u9875",pageFirst:"\u9996\u9875",pagePrev:"\u4E0A\u4E00\u9875",pageNext:"\u4E0B\u4E00\u9875",pageLast:"\u672B\u9875"},to={matchContains:"Contains",matchNotContains:"Not Contains",matchEquals:"Equals",matchNotEquals:"Not Equals",matchStartsWith:"Starts With",matchEndsWith:"Ends With",matchBlank:"Blank",matchNotBlank:"Not Blank",matchLessThan:"Less Than",matchLessThanOrEqual:"\u2264",matchGreaterThan:"Greater Than",matchGreaterThanOrEqual:"\u2265",matchInRange:"In Range",apply:"Apply",reset:"Reset",search:"Search...",emptySetLabel:"(blank)",selectedCount:"{n} selected",sortAsc:"Ascending",sortDesc:"Descending",clearSort:"Clear Sort",pinLeft:"Pin Left",pinRight:"Pin Right",clearPin:"Unpin",autoSize:"Auto Fit",hideColumn:"Hide Column",columnVisibility:"Columns",resetAll:"Reset All",autoSizeAll:"Fit All",columnSettings:"Column Settings",totalLabel:"Total",totalRowsLabel:"{n} rows",menuCopy:"Copy",menuPaste:"Paste",menuClearContents:"Clear Contents",loading:"Loading...",statusSelected:"{n} selected",statusSum:"Sum {n}",statusAvg:"Avg {n}",statusCount:"Cnt {n}",emptyRows:"No Data",emptyRowsHint:"No rows to display",paginationTotal:"{n} items",paginationPage:"Page {a} / {b}",perPage:"{n} / page",pageFirst:"First",pagePrev:"Previous",pageNext:"Next",pageLast:"Last"},gr={contains:"matchContains",notContains:"matchNotContains",equals:"matchEquals",notEquals:"matchNotEquals",startsWith:"matchStartsWith",endsWith:"matchEndsWith",blank:"matchBlank",notBlank:"matchNotBlank",lessThan:"matchLessThan",lessThanOrEqual:"matchLessThanOrEqual",greaterThan:"matchGreaterThan",greaterThanOrEqual:"matchGreaterThanOrEqual",inRange:"matchInRange"};function Fe(s){return gr[s]??"matchEquals"}function k(s,e){return s.replace("{n}",String(e))}function He(s,e,t){return s.replace("{a}",String(e)).replace("{b}",String(t))}var yr=["contains","notContains","equals","notEquals","startsWith","endsWith","blank","notBlank"],vr=["equals","notEquals","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","inRange","blank","notBlank"],wr=["equals","notEquals","lessThan","greaterThan","inRange","blank","notBlank"],Be=class{constructor(e){this.core=e;this.panel=null;this.openColId=null;this.docMouseDown=e=>{this.panel&&!this.panel.contains(e.target)&&this.close()};this.docKeyDown=e=>{e.key==="Escape"&&this.close()}}toggle(e,t){if(this.openColId===e.id){this.close();return}this.close(),this.open(e,t)}open(e,t){let o=this.core.rowModel.getFilterModel()[e.id]??null,r=o?.type??e.filterType,n=g("div","mach-filter-panel");n.setAttribute("role","dialog"),n.setAttribute("aria-label",`${e.id} filter`),r==="set"?this.buildSetBody(n,e,o):this.buildConditionBody(n,e,r,o);let i=g("div","mach-filter-footer"),a=g("button","mach-filter-btn-reset");a.type="button",a.textContent=this.core.getLocaleText("reset"),a.addEventListener("click",()=>{this.core.applyColumnFilter(e,null),this.close()});let l=g("button","mach-filter-btn-apply");l.type="button",l.textContent=this.core.getLocaleText("apply"),l.addEventListener("click",()=>{let m=this.readFilter(n);this.core.applyColumnFilter(e,m),this.close()}),i.append(a,l),n.appendChild(i),document.body.appendChild(n),this.panel=n,this.openColId=e.id;let d=t.getBoundingClientRect(),c=n.getBoundingClientRect(),u=T(d.left,8,window.innerWidth-c.width-8),h=d.bottom+4;h+c.height>window.innerHeight-8&&(h=Math.max(8,d.top-c.height-4)),n.style.left=`${u}px`,n.style.top=`${h}px`,document.addEventListener("mousedown",this.docMouseDown,!0),document.addEventListener("keydown",this.docKeyDown,!0),n.querySelector("input, select")?.focus()}close(){this.panel&&(this.panel.remove(),this.panel=null,this.openColId=null,document.removeEventListener("mousedown",this.docMouseDown,!0),document.removeEventListener("keydown",this.docKeyDown,!0))}destroy(){this.close()}buildConditionBody(e,t,o,r){let n=o==="text"?yr:o==="number"?vr:wr,i=r&&r.type!=="set"&&r.conditions.length>0?r.conditions[0]:null,a=i?.match??(o==="text"?"contains":"equals"),l=a==="blank"||a==="notBlank",d=g("select","mach-filter-select");for(let m of n){let f=document.createElement("option");f.value=m,f.textContent=this.core.getLocaleText(Fe(m)),d.appendChild(f)}d.value=a;let c=g("input","mach-filter-input");o==="number"&&(c.type="number"),o==="date"&&(c.type="date"),i&&i.value!=null&&!l&&(c.value=o==="date"?String(i.value).slice(0,10):String(i.value));let u=g("input","mach-filter-input mach-filter-input--second");o==="number"&&(u.type="number"),o==="date"&&(u.type="date"),i&&"value2"in i&&i.value2!=null&&(u.value=String(i.value2).slice(0,10)),u.style.display=a==="inRange"?"":"none",d.addEventListener("change",()=>{let m=d.value==="blank"||d.value==="notBlank";c.style.display=m?"none":"",u.style.display=d.value==="inRange"?"":"none"});let h=m=>{if(m.key==="Enter"){let f=this.readFilter(e);this.core.applyColumnFilter(t,f),this.close()}};c.addEventListener("keydown",h),u.addEventListener("keydown",h);let p=g("div","mach-filter-body");p.append(d,c,u),e.appendChild(p),e.dataset.filterType=o}buildSetBody(e,t,o){let n=t.colDef.filterParams,i;if(n?.values)i=n.values;else{let f=new Set;i=[];let y=this.core.rowModel.getAllNodes(),v=Math.min(y.length,n?.maxValues??500);for(let w=0;w<v;w++){let C=this.core.getCellValue(y[w],t),E=C==null?"__null__":String(C);f.has(E)||(f.add(E),i.push(C))}}let a=new Set(o?.type==="set"?o.values.map(f=>f==null?"__null__":String(f)):i.map(f=>f==null?"__null__":String(f))),l=g("input","mach-filter-input mach-filter-input--search");l.type="text",l.placeholder=this.core.getLocaleText("search");let d=g("div","mach-filter-set-list"),c=[],u=new Map,h=f=>{d.textContent="",c.length=0;let y=f.trim().toLowerCase();for(let v of i){let w=v==null?this.core.getLocaleText("emptySetLabel"):String(v);if(y&&!w.toLowerCase().includes(y))continue;let C=v==null?"__null__":String(v);u.set(C,v);let E=g("label","mach-filter-set-item"),R=document.createElement("input");R.type="checkbox",R.checked=a.has(C),R.addEventListener("change",()=>{R.checked?a.add(C):a.delete(C)});let D=g("span");D.textContent=w,E.append(R,D),d.appendChild(E),c.push(R)}};l.addEventListener("input",()=>h(l.value)),h(""),e.dataset.filterType="set",e.dataset.setValues=JSON.stringify([...u.entries()]),(()=>{let f=[...u.entries()];e.dataset.setValues=JSON.stringify(f)})();let m=g("div","mach-filter-body mach-filter-body--set");m.append(l,d),e.appendChild(m)}readFilter(e){let t=e.dataset.filterType;if(t==="set"){let d=[];try{d=JSON.parse(e.dataset.setValues??"[]")}catch{d=[]}let c=new Set;e.querySelectorAll(".mach-filter-set-item input:checked").forEach(h=>{let m=h.closest(".mach-filter-set-item").querySelector("span"),f=this.core.getLocaleText("emptySetLabel"),y=m.textContent===f?"__null__":m.textContent??"";c.add(y)});let u=d.filter(([h])=>c.has(h)).map(([,h])=>h);return u.length===d.length||u.length===0?null:{type:"set",values:u}}let o=e.querySelector(".mach-filter-select"),r=e.querySelectorAll(".mach-filter-input"),n=r[0],i=r[1];if(!o||!n)return null;let a=o.value;if(a==="blank"||a==="notBlank")return{type:t,conditions:[{match:a}]};let l=n.value;if(l===""&&a!=="inRange")return null;if(t==="number"){let d=Number(l);if(isNaN(d))return null;if(a==="inRange"){let c=i&&i.value!==""?Number(i.value):d;return isNaN(c)?null:{type:"number",conditions:[{match:"inRange",value:d,value2:c}]}}return{type:"number",conditions:[{match:a,value:d}]}}if(t==="date"){let d=l;if(a==="inRange"){let c=i&&i.value!==""?i.value:d;return{type:"date",conditions:[{match:"inRange",value:d,value2:c}]}}return{type:"date",conditions:[{match:a,value:d}]}}return{type:"text",conditions:[{match:a,value:l}]}}};var Ve=class{constructor(e){this.core=e;this.panel=null;this.openColId=null;this.standaloneAnchor=null;this.searchText="";this.docMouseDown=e=>{this.panel&&!this.panel.contains(e.target)&&this.close()};this.docKeyDown=e=>{e.key==="Escape"&&this.close()}}toggle(e,t){if(this.openColId===e.id){this.close();return}this.close(),this.open(e,t)}openStandalone(e){this.close();let t=e??(()=>{let r=this.core.skeleton.root.getBoundingClientRect(),n=document.createElement("div");return n.style.position="fixed",n.style.left=`${r.right-16}px`,n.style.top=`${r.top+this.core.options.headerHeight}px`,n.style.width="1px",n.style.height="1px",document.body.appendChild(n),this.standaloneAnchor=n,n})();this.open(null,t)}close(){this.standaloneAnchor&&(this.standaloneAnchor.remove(),this.standaloneAnchor=null),this.panel?.remove(),this.panel=null,this.openColId=null,document.removeEventListener("mousedown",this.docMouseDown,!0),document.removeEventListener("keydown",this.docKeyDown,!0)}destroy(){this.close()}open(e,t){let o=this.core.getApi(),r=g("div","mach-filter-panel mach-column-panel");r.setAttribute("role",e?"menu":"dialog"),e||(r.setAttribute("aria-modal","false"),r.setAttribute("aria-label",this.core.getLocaleText("columnSettings")));let n=g("div","mach-column-panel-title");if(n.textContent=e?e.colDef.headerName??e.colDef.field??e.id:this.core.getLocaleText("columnSettings"),r.appendChild(n),e&&e.sortable){let R=g("div","mach-column-panel-actions"),D=(U,Ht)=>{let me=g("button","mach-column-panel-btn");return me.type="button",me.textContent=this.core.getLocaleText(U),me.addEventListener("click",()=>{o.setSortModel(Ht?[{colId:e.id,direction:Ht}]:[]),this.close()}),me};R.append(D("sortAsc","asc"),D("sortDesc","desc"),D("clearSort",null)),r.appendChild(R)}let i=g("div","mach-column-panel-actions"),a=(R,D)=>{let U=g("button","mach-column-panel-btn");return U.type="button",U.textContent=this.core.getLocaleText(R),U.addEventListener("click",()=>{e&&o.setColumnPinned(e.id,D),this.close()}),U};e&&(i.append(a("pinLeft","left"),a("pinRight","right"),a("clearPin",null)),r.appendChild(i));let l=g("div","mach-column-panel-actions"),d=g("button","mach-column-panel-btn");d.type="button",d.textContent=this.core.getLocaleText("autoSize"),d.addEventListener("click",()=>{e?o.autoSizeColumn(e.id):o.autoSizeAllColumns(),this.close()});let c=g("button","mach-column-panel-btn");c.type="button",c.textContent=this.core.getLocaleText("hideColumn"),c.addEventListener("click",()=>{e&&o.setColumnVisibility(e.id,!1),this.close()}),e&&(l.append(d,c),r.appendChild(l));let u=g("div","mach-column-panel-divider");r.appendChild(u);let h=g("div","mach-column-panel-subtitle");if(h.textContent=this.core.getLocaleText("columnVisibility"),r.appendChild(h),!e){let R=document.createElement("input");R.type="search",R.className="mach-column-workbench-search",R.placeholder=this.core.getLocaleText("search"),R.setAttribute("aria-label",this.core.getLocaleText("search")),R.value=this.searchText,R.addEventListener("input",()=>{this.searchText=R.value.trim().toLocaleLowerCase(),this.renderColumnList(p,!0)}),r.appendChild(R)}let p=g("div","mach-column-panel-list");this.renderColumnList(p,!e),r.appendChild(p);let m=g("div","mach-filter-footer"),f=g("button","mach-filter-btn-reset");f.type="button",f.textContent=this.core.getLocaleText("resetAll"),f.addEventListener("click",()=>{o.resetColumnState(),this.close()});let y=g("button","mach-filter-btn-apply");y.type="button",y.textContent=this.core.getLocaleText("autoSizeAll"),y.addEventListener("click",()=>{o.autoSizeAllColumns(),this.close()}),m.append(f,y),r.appendChild(m),document.body.appendChild(r),this.panel=r,this.openColId=e?e.id:"__standalone__";let v=t.getBoundingClientRect(),w=r.getBoundingClientRect(),C=T(v.left,8,window.innerWidth-w.width-8),E=v.bottom+4;E+w.height>window.innerHeight-8&&(E=Math.max(8,v.top-w.height-4)),r.style.left=`${C}px`,r.style.top=`${E}px`,document.addEventListener("mousedown",this.docMouseDown,!0),document.addEventListener("keydown",this.docKeyDown,!0)}rebuildListStates(){if(!this.panel)return;let e=this.panel.querySelector(".mach-column-panel-list");e&&this.renderColumnList(e,this.openColId==="__standalone__")}renderColumnList(e,t){let o=this.core.getApi();e.replaceChildren();let r=this.core.columnModel.getColumns().filter(n=>n.isDetailToggle?!1:!t||!this.searchText?!0:`${n.colDef.headerName??n.colDef.field??n.id} ${n.id}`.toLocaleLowerCase().includes(this.searchText));for(let n of r){let i=g("div",t?"mach-column-workbench-item":"mach-filter-set-item"),a=g("label","mach-column-workbench-label"),l=document.createElement("input");l.type="checkbox",l.checked=!n.hide,l.disabled=n.hasCheckbox,l.addEventListener("change",()=>{o.setColumnVisibility(n.id,l.checked),this.rebuildListStates()});let d=g("span","mach-column-workbench-name");if(d.textContent=n.colDef.headerName??n.colDef.field??n.id,d.title=`${d.textContent} (${n.id})`,a.append(l,d),i.appendChild(a),t){let c=document.createElement("select");c.className="mach-column-workbench-pin",c.setAttribute("aria-label",`${d.textContent} ${this.core.getLocaleText("clearPin")}`);for(let[m,f]of[["",this.core.getLocaleText("clearPin")],["left",this.core.getLocaleText("pinLeft")],["right",this.core.getLocaleText("pinRight")]]){let y=document.createElement("option");y.value=m,y.textContent=f,c.appendChild(y)}c.value=n.pinned??"",c.addEventListener("change",()=>{o.setColumnPinned(n.id,c.value==="left"||c.value==="right"?c.value:null),this.rebuildListStates()}),i.appendChild(c);let u=this.core.columnModel.getColumns().filter(m=>!m.hide&&m.parentGroup===n.parentGroup&&(n.parentGroup!=null||m.pinned===n.pinned)),h=u.indexOf(n),p=(m,f,y)=>{let v=g("button","mach-column-workbench-move");return v.type="button",v.textContent=m,v.disabled=y||n.hide||!n.movable,v.addEventListener("click",()=>{o.moveColumn(n.id,f),this.rebuildListStates()}),v};i.append(p("\u2191",h-1,h<=0),p("\u2193",h+1,h<0||h>=u.length-1))}e.appendChild(i)}}};var ze=class{constructor(e){this.core=e;this.panel=null;this.docMouseDown=e=>{this.panel&&!this.panel.contains(e.target)&&this.close()};this.docKeyDown=e=>{e.key==="Escape"&&this.close()}}open(e,t,o){this.close();let r=this.core,n,i;if(o)n=r.rowModel.getDisplayedRow(o.rowIndex),i=r.columnModel.getColumn(o.colId);else{let u=r.bodyRenderer.getNormalizedRangeOrFocus();if(!u)return;let h=r.columnModel.getOrderedVisible();n=r.rowModel.getDisplayedRow(u.r1),i=h[u.c1]}if(!n||!i)return;let a=n.rowIndex,l=g("div","mach-context-menu");l.setAttribute("role","menu");let d=r.options.getContextMenuItems;if(d){let u;try{u=d({data:n.data,node:n,api:r.getApi(),colId:i.id,value:r.getCellValue(n,i),rowIndex:a})}catch(p){r.reportError(p,"getContextMenuItems",{colId:i.id,rowId:n.id});return}if(u==null)return;let h=!1;for(let p of u){if(p.separator){let f=g("div","mach-context-menu-separator");l.appendChild(f);continue}let m=g("button","mach-context-menu-item");m.type="button",m.textContent=p.label??"",p.danger&&m.classList.add("mach-context-menu-item--danger"),p.disabled?m.disabled=!0:(h=!0,m.addEventListener("click",()=>{this.close();try{p.action?.()}catch(f){r.reportError(f,"contextMenu.action",{colId:i.id,rowId:n.id})}})),l.appendChild(m)}if(!h){l.remove();return}this.attach(l,e,t);return}let c=g("button","mach-context-menu-item");if(c.type="button",c.textContent=r.getLocaleText("menuCopy"),c.addEventListener("click",()=>{r.copyActiveRange(),this.close()}),l.appendChild(c),!r.options.suppressClipboard){let u=g("button","mach-context-menu-item");u.type="button",u.textContent=r.getLocaleText("menuPaste"),u.addEventListener("click",()=>{r.pasteFromSystemClipboard(),this.close()}),l.appendChild(u);let h=g("button","mach-context-menu-item");h.type="button",h.textContent=r.getLocaleText("menuClearContents"),h.addEventListener("click",()=>{let p=r.bodyRenderer.getNormalizedRangeOrFocus();p&&r.clearRangeValues(p),this.close()}),l.appendChild(h)}this.attach(l,e,t)}attach(e,t,o){document.body.appendChild(e),this.panel=e;let r=e.getBoundingClientRect(),n=T(t,8,Math.max(8,window.innerWidth-r.width-8)),i=T(o,8,Math.max(8,window.innerHeight-r.height-8));e.style.left=`${n}px`,e.style.top=`${i}px`,document.addEventListener("mousedown",this.docMouseDown,!0),document.addEventListener("keydown",this.docKeyDown,!0)}close(){this.panel&&(this.panel.remove(),this.panel=null,document.removeEventListener("mousedown",this.docMouseDown,!0),document.removeEventListener("keydown",this.docKeyDown,!0))}destroy(){this.close()}};var We=class{constructor(e){this.core=e;this.panel=null;this.showTimer=0;this.hideTimer=0;this.currentCell=null;this.onMouseOver=e=>{if(this.core.isDestroyed()||!this.core.options.tooltipComponent)return;let o=e.target.closest(".mach-cell");if(!o||o===this.currentCell)return;this.clearTimers(),this.removePanel(),this.currentCell=o;let r=o.dataset.colId??"",n=o.closest(".mach-row"),i=Number(n?.dataset.index),a=Number.isNaN(i)?void 0:this.core.rowModel.getDisplayedRow(i),l=r?this.core.columnModel.getColumn(r):void 0;if(!a||!l||a.isDetail||a.isGroup||o.classList.contains("mach-cell--editing"))return;let d=this.core.getCellValue(a,l),c={data:a.data,node:a,api:this.core.getApi(),colId:l.id,value:d,formatted:N(this.core,a,l),rowIndex:i},u=l.colDef.tooltipValueGetter,h=c.formatted;if(u)try{h=u({...c,colDef:l.colDef,column:l})??c.formatted}catch(p){this.core.reportError(p,"tooltipValueGetter",{colId:l.id,rowId:a.id})}!h&&!l.colDef.tooltipValueGetter||(this.showTimer=setTimeout(()=>{this.core.isDestroyed()||this.currentCell!==o||this.showPanel(o,c)},Math.max(0,this.core.options.tooltipShowDelay)))};this.onBodyLeave=()=>{this.hide()}}init(){let e=this.core.skeleton.bodyEl;e.addEventListener("mouseover",this.onMouseOver),e.addEventListener("mouseleave",this.onBodyLeave)}destroy(){this.clearTimers(),this.removePanel();let e=this.core.skeleton.bodyEl;e.removeEventListener("mouseover",this.onMouseOver),e.removeEventListener("mouseleave",this.onBodyLeave),this.currentCell=null}hide(){this.clearTimers(),this.removePanel(),this.currentCell=null}clearTimers(){this.showTimer&&(clearTimeout(this.showTimer),this.showTimer=0),this.hideTimer&&(clearTimeout(this.hideTimer),this.hideTimer=0)}removePanel(){this.panel&&(this.panel.remove(),this.panel=null)}showPanel(e,t){this.removePanel();let o=this.core.options.tooltipComponent;if(!o)return;let r=g("div","mach-tooltip");r.setAttribute("role","tooltip");let n;try{n=o(t)}catch(c){this.core.reportError(c,"tooltipComponent",{colId:t.colId,rowIndex:t.rowIndex});return}typeof n=="string"?r.textContent=n:r.appendChild(n),document.body.appendChild(r),this.panel=r;let i=e.getBoundingClientRect(),a=r.getBoundingClientRect(),l=T(i.left,8,Math.max(8,window.innerWidth-a.width-8)),d=i.bottom+6;d+a.height>window.innerHeight-8&&(d=Math.max(8,i.top-a.height-6)),r.style.left=`${l}px`,r.style.top=`${d}px`}};var Ke=class{constructor(e){this.core=e;this.overlay=null}init(){this.overlay=document.createElement("div"),this.overlay.className="mach-watermark",this.overlay.setAttribute("aria-hidden","true"),this.overlay.style.pointerEvents="none",this.core.skeleton.root.appendChild(this.overlay),this.apply()}apply(){if(!this.overlay||this.core.isDestroyed())return;let e=this.core.options.watermarkEnabled?this.core.options.watermarkConfig:null;if(!e||!e.text){this.overlay.style.display="none",this.overlay.style.backgroundImage="";return}let t=this.buildTile(e);this.overlay.style.display="",t?(this.overlay.style.backgroundImage=`url(${t})`,this.overlay.style.backgroundColor=""):this.overlay.style.backgroundImage=""}buildTile(e){try{let t=document.createElement("canvas"),o=t.getContext("2d");if(!o)return null;let r=e.fontSize??14,n=e.gap??160,i=e.angle??-22,a=e.color??(this.isDark()?"rgba(255,255,255,0.9)":"rgba(31,55,88,0.9)"),l=e.opacity??.06;o.font=`500 ${r}px sans-serif`;let d=o.measureText(e.text),c=Math.ceil(d.width),u=Math.max(n,c+40);t.width=u,t.height=u;let h=t.getContext("2d");return h.clearRect(0,0,u,u),h.globalAlpha=l,h.fillStyle=a,h.font=`500 ${r}px sans-serif`,h.translate(u/2,u/2),h.rotate(i*Math.PI/180),h.textAlign="center",h.textBaseline="middle",h.fillText(e.text,0,0),t.toDataURL("image/png")}catch{return null}}isDark(){return this.core.skeleton.root.classList.contains("mach-theme-dark")}refresh(){this.apply()}destroy(){this.overlay?.remove(),this.overlay=null}};var _e=class{constructor(e){this.core=e;this.stack=[];this.pointer=-1;this.pending=null}beginBatch(){this.pending||(this.pending=[])}endBatch(){if(!this.pending)return;let e=this.pending;this.pending=null,e.length>0&&this.push(e)}cancelBatch(){this.pending=null}record(e){if(this.pending){this.pending.push(e);return}this.push([e])}push(e){let t=Math.max(0,this.core.options.undoStackSize);if(t!==0){for(this.stack.length=this.pointer+1,this.stack.push(e);this.stack.length>t;)this.stack.shift();this.pointer=this.stack.length-1}}trimToSize(){let e=Math.max(0,this.core.options.undoStackSize);if(e===0){this.clear();return}for(;this.stack.length>e;)this.stack.shift(),this.pointer--;this.pointer<-1&&(this.pointer=-1)}canUndo(){return this.pointer>=0}canRedo(){return this.pointer<this.stack.length-1}undo(){return this.canUndo()?(this.apply(this.stack[this.pointer],!1),this.pointer--,!0):!1}redo(){return this.canRedo()?(this.pointer++,this.apply(this.stack[this.pointer],!0),!0):!1}apply(e,t){let o=this.core,r=[];for(let n of e){let i=o.rowModel.getNodeById(n.nodeId),a=o.columnModel.getColumn(n.columnId);if(!i||!a||i.data==null)continue;let l=t?n.newValue:n.oldValue,d=t?n.oldValue:n.newValue;o.writeValue(i,a,l,d)&&(o.bodyRenderer.invalidateRowHeight(i),o.bodyRenderer.queueFlash([i.rowIndex],[a.id]),i.rowIndex>=0&&r.push(i.rowIndex),o.emit("cellValueChanged",{oldValue:d,newValue:l,rowNode:i,rowIndex:i.rowIndex,column:a,colDef:a.colDef,data:i.data}))}r.length>0&&o.bodyRenderer.refreshRows(r),o.summaryRenderer.refresh(),o.statusBarService.refresh()}clear(){this.stack=[],this.pointer=-1,this.pending=null}};var $e=class{constructor(e){this.core=e;this.changes=new Map;this.rollingBack=!1;this.unsubscribe=null}init(){this.unsubscribe=this.core.eventBus.on("cellValueChanged",e=>{this.rollingBack||this.record(e)})}record(e){let t=`${e.rowNode.id}\0${e.column.id}`,r=this.changes.get(t)?.originalValue??e.oldValue;Object.is(e.newValue,r)?this.changes.delete(t):this.changes.set(t,{rowId:e.rowNode.id,colId:e.column.id,originalValue:r,value:e.newValue}),this.emitChanged()}getDirtyRowIds(){return[...new Set([...this.changes.values()].map(e=>e.rowId))]}getChanges(){let e=new Map;for(let t of this.changes.values()){let o=this.core.rowModel.getNodeById(t.rowId);if(!o?.data)continue;let r=e.get(t.rowId);r||(r={rowId:t.rowId,data:o.data,cells:[]},e.set(t.rowId,r)),r.cells.push({colId:t.colId,originalValue:t.originalValue,value:t.value})}return[...e.values()]}markSaved(e){if(!e)this.changes.clear();else{let t=new Set(e);for(let[o,r]of this.changes)t.has(r.rowId)&&this.changes.delete(o)}this.emitChanged()}acknowledge(e){for(let t of e)for(let o of t.cells){let r=`${t.rowId}\0${o.colId}`,n=this.changes.get(r);if(n){Object.is(n.value,o.value)?this.changes.delete(r):n.originalValue=o.value;continue}let i=this.core.rowModel.getNodeById(t.rowId),a=this.core.columnModel.getColumn(o.colId);if(!i||!a||i.data==null)continue;let l=this.core.getCellValue(i,a);Object.is(l,o.value)||this.changes.set(r,{rowId:t.rowId,colId:o.colId,originalValue:o.value,value:l})}this.emitChanged()}rollback(e){let t=e?new Set(e):null,o=[...this.changes.entries()].filter(([,i])=>!t||t.has(i.rowId));if(o.length===0)return!1;let r=new Set,n=new Set;this.rollingBack=!0;try{for(let[i,a]of o){let l=this.core.rowModel.getNodeById(a.rowId),d=this.core.columnModel.getColumn(a.colId);if(!l||!d||l.data==null)continue;let c=this.core.getCellValue(l,d);if(Object.is(c,a.originalValue)){n.add(i);continue}this.core.writeValue(l,d,a.originalValue,c)&&(n.add(i),this.core.bodyRenderer.invalidateRowHeight(l),l.rowIndex>=0&&r.add(l.rowIndex),this.core.emit("cellValueChanged",{oldValue:c,newValue:a.originalValue,rowNode:l,rowIndex:l.rowIndex,column:d,colDef:d.colDef,data:l.data}))}}finally{this.rollingBack=!1}for(let i of n)this.changes.delete(i);return r.size>0&&this.core.bodyRenderer.refreshRows([...r]),this.core.summaryRenderer.refresh(),this.core.statusBarService.refresh(),this.emitChanged(),n.size>0}clearRows(e){if(e.length===0)return;let t=new Set(e);for(let[o,r]of this.changes)t.has(r.rowId)&&this.changes.delete(o);this.emitChanged()}clear(){this.changes.size!==0&&(this.changes.clear(),this.emitChanged())}destroy(){this.unsubscribe?.(),this.unsubscribe=null,this.changes.clear()}emitChanged(){this.core.emit("dirtyStateChanged",{dirtyRowIds:this.getDirtyRowIds()})}};var Q=["gridReady","gridDestroyed","modelUpdated","cellClicked","cellDoubleClicked","cellContextMenu","rowClicked","rowDoubleClicked","selectionChanged","sortChanged","filterChanged","columnResized","columnMoved","columnVisibilityChanged","cellValueChanged","cellEditingStarted","cellEditingStopped","rowEditingStarted","rowEditingStopped","detailToggled","treeChildrenLoaded","treeChildrenLoadFailed","rowDragEnd","rangeSelectionChanged","paginationChanged","displayedColumnsChanged","gridError","dirtyStateChanged"];function W(s){return(s==null?"":String(s)).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function oo(s,e,t="text/plain;charset=utf-8"){try{if(typeof document>"u"||typeof Blob>"u")return!1;let o=document.createElement("a");if(typeof URL<"u"&&typeof URL.createObjectURL=="function"){let r=new Blob([e],{type:t}),n=URL.createObjectURL(r);o.href=n,o.download=s,o.click();let i=typeof URL.revokeObjectURL=="function"?URL.revokeObjectURL.bind(URL):null;i&&setTimeout(()=>{try{i(n)}catch{}},0)}else o.href=`data:${t},${encodeURIComponent(e)}`,o.download=s,o.click();return!0}catch{return!1}}var Cr=new Set(["__proto__","prototype","constructor"]);function J(s){return typeof s!="string"||s.length===0?!1:s.split(".").every(t=>t.length>0&&!Cr.has(t))}function Ue(s,e){if(s==null||!J(e))return;if(e.indexOf(".")<0)return s[e];let o=s,r=0;for(;r<e.length;){if(o==null)return;let n=e.indexOf(".",r);if(n<0){o=o[e.slice(r)];break}o=o[e.slice(r,n)],r=n+1}return o}function K(s,e,t){if(s==null||!J(e))return!1;let o=e.split("."),r=s;for(let n=0;n<o.length-1;n++){if(typeof r!="object"&&typeof r!="function"||r===null)return!1;r[o[n]]==null&&(r[o[n]]={}),r=r[o[n]]}return typeof r!="object"&&typeof r!="function"||r===null?!1:(r[o[o.length-1]]=t,!0)}function br(){return{datasourceChanged:!1,needsCellRefresh:!1,needsColumnRebuild:!1,needsHeaderRebuild:!1,needsPoolRebuild:!1,needsRelayout:!1,needsRowRebuild:!1,needsStateLoad:!1,needsSummaryRefresh:!1}}function b(s,e){return Object.prototype.hasOwnProperty.call(s,e)}function O(s,e,t=!1){if(!(typeof s!="number"||!Number.isFinite(s)||s<e))return t?Math.floor(s):s}function de(s,e,t,o=!1){let r=O(s,t,o);return r===void 0||r===e?void 0:r}function Er(s){try{if(typeof structuredClone=="function")return structuredClone(s)}catch{}return Array.isArray(s)?[...s]:s!=null&&typeof s=="object"?{...s}:s}var qe=class{constructor(e){this.core=e;this.measureCanvas=null;this.asyncTransactions=[];this.asyncTransactionTimer=null;this.asyncTransactionResolvers=[]}whenReady(){return this.core.whenReady()}setRowData(e){this.core.isDestroyed()||(this.core.options.rowData=e??[],!this.core.rowModel.isInfinite&&(this.core.rowModel.setRowData(e),this.core.bodyRenderer.onDataChanged()))}applyTransaction(e){this.core.isDestroyed()||this.core.rowModel.isInfinite||(this.core.rowModel.applyTransaction(e),this.core.bodyRenderer.onDataChanged())}applyTransactionAsync(e){return this.core.isDestroyed()||this.core.rowModel.isInfinite?Promise.resolve():(this.asyncTransactions.push(e),this.asyncTransactionTimer==null&&(this.asyncTransactionTimer=setTimeout(()=>this.flushAsyncTransactions(),this.core.options.asyncTransactionWaitMillis)),new Promise(t=>this.asyncTransactionResolvers.push(t)))}flushAsyncTransactions(){this.asyncTransactionTimer!=null&&clearTimeout(this.asyncTransactionTimer),this.asyncTransactionTimer=null;let e=this.asyncTransactions,t=this.asyncTransactionResolvers;this.asyncTransactions=[],this.asyncTransactionResolvers=[],e.length>0&&!this.core.isDestroyed()&&!this.core.rowModel.isInfinite&&(this.core.rowModel.applyTransactions(e),this.core.bodyRenderer.onDataChanged());for(let o of t)o()}getColumnDefs(){return this.core.columnModel.getColumnDefs()}setColumnDefs(e){this.core.isDestroyed()||(this.core.options.columnDefs=e??[],this.core.columnModel.setColumnDefs(e),this.core.loadPersistedColumnState(),this.core.onColumnsStructureChanged(),this.core.rowModel.isInfinite?this.core.rowModel.onServerParamsChanged():(this.core.rowModel.refreshPipeline(),this.core.bodyRenderer.onDataChanged()))}getColumnState(){return this.core.columnModel.getColumnState()}setColumnState(e){this.core.isDestroyed()||(this.core.columnModel.applyColumnState(e),this.core.onColumnsStructureChanged(),this.core.applySortModel(),this.core.persistColumnState())}resetColumnState(){this.core.isDestroyed()||(this.core.columnModel.resetColumnState(),this.core.onColumnsStructureChanged(),this.core.applySortModel(),this.core.persistColumnState())}setColumnVisibility(e,t){this.core.isDestroyed()||(this.core.columnModel.setColumnVisibility(e,t),this.core.onColumnsStructureChanged(),this.core.emit("columnVisibilityChanged",{colId:e,visible:t}),this.core.persistColumnState())}moveColumn(e,t){this.core.isDestroyed()||this.core.moveColumn(e,t)}setColumnPinned(e,t){this.core.isDestroyed()||(this.core.columnModel.setColumnPinned(e,t),this.core.onColumnsStructureChanged(),this.core.persistColumnState())}sizeColumnsToFit(e){if(this.core.isDestroyed())return;let t=this.core.columnModel.getOrderedVisible();if(t.length===0)return;let o=e??this.core.skeleton.measureViewportWidth();if(o<=0)return;let r=t.reduce((n,i)=>n+i.currentWidth,0);if(!(r<=0)){for(let n of t)this.core.columnModel.setColumnWidth(n,Math.max(30,Math.floor(n.currentWidth*o/r)));this.core.relayoutColumns(),this.core.persistColumnState()}}autoSizeColumn(e,t=!1){if(this.core.isDestroyed())return;let o=this.core.columnModel.getColumn(e);o&&this.autoSizeColumnInternal(o,t)&&(this.core.relayoutColumns(),this.core.persistColumnState())}autoSizeColumnInternal(e,t){if(e.hasCheckbox||e.isDetailToggle)return this.core.columnModel.setColumnWidth(e,e.isDetailToggle?38:46),!0;this.measureCanvas??(this.measureCanvas=document.createElement("canvas"));let o=this.measureCanvas.getContext("2d");if(!o)return!1;let r=window.getComputedStyle(this.core.skeleton.root);o.font=`${r.fontStyle} ${r.fontWeight} ${r.fontSize} ${r.fontFamily}`;let n=0,i=c=>{if(!c)return;let u=o.measureText(c).width;u>n&&(n=u)};t||i(e.colDef.headerName??e.colDef.field??e.id);let a=this.core.rowModel.getAllNodes(),l=Math.min(a.length,2e3);for(let c=0;c<l;c++)i(N(this.core,a[c],e));let d=(e.sortable?20:0)+(e.filterable?28:0)+(this.core.options.columnMenu?22:0)+28;return this.core.columnModel.setColumnWidth(e,Math.ceil(n)+d),!0}autoSizeAllColumns(e){if(this.core.isDestroyed())return;let t=!1;for(let o of this.core.columnModel.getOrderedVisible())t=this.autoSizeColumnInternal(o,e??!1)||t;t&&(this.core.relayoutColumns(),this.core.persistColumnState())}getSortModel(){return this.core.columnModel.getSortModel()}setSortModel(e){this.core.isDestroyed()||(this.core.columnModel.applySortModel(e),this.core.applySortModel())}getFilterModel(){return this.core.rowModel.getFilterModel()}setFilterModel(e){if(!this.core.isDestroyed()){if(this.core.rowModel.setFilterModel(e),this.core.headerRenderer.refreshFilterIcons(),this.core.emit("filterChanged",{filterModel:this.core.rowModel.getFilterModel()}),this.core.rowModel.isInfinite){this.core.rowModel.onServerParamsChanged();return}this.core.rowModel.refreshPipeline(),this.core.bodyRenderer.onDataChanged()}}isColumnFilterPresent(e){return Object.prototype.hasOwnProperty.call(this.core.rowModel.getFilterModel(),e)}setQuickFilter(e){this.core.isDestroyed()||(this.core.options.quickFilterText=e!=null&&e.trim()!==""?e:null,this.core.rowModel.setQuickFilter(e)&&this.core.applyQuickFilter())}getQuickFilter(){return this.core.rowModel.getQuickFilter()}getRowSelection(){return this.core.options.rowSelection}setRowSelection(e){this.core.isDestroyed()||this.core.options.rowSelection!==e&&(this.core.options.rowSelection=e,e==="none"&&this.deselectAll(),this.core.headerRenderer.build(),this.core.bodyRenderer.rebuildPool())}getSelectedNodes(){return this.core.selectionService.getSelectedNodes()}getSelectedRows(){return this.core.selectionService.getSelectedRows()}selectNodeById(e,t=!0,o=!0){this.core.selectionService.selectNodeById(e,t,o)}selectAll(e=!0){this.core.selectionService.selectAll(e)}deselectAll(){this.core.selectionService.deselectAll()}getDisplayedRowCount(){return this.core.rowModel.getDisplayedRowCount()}getRowNode(e){return this.core.rowModel.getDisplayedRow(e)}getNodeById(e){return this.core.rowModel.getNodeById(e)}forEachNode(e){this.core.rowModel.forEachNode(e)}forEachNodeAfterFilterAndSort(e){this.core.rowModel.forEachNodeAfterFilterAndSort(e)}scrollToIndex(e,t="top"){this.core.bodyRenderer.scrollToIndex(e,t)}expandRow(e){return this.core.isDestroyed()?!1:this.core.rowModel.expandRow(e)}collapseRow(e){return this.core.isDestroyed()?!1:this.core.rowModel.collapseRow(e)}toggleDetailRow(e){return this.core.isDestroyed()?!1:this.core.rowModel.toggleDetail(e)}isRowExpanded(e){return this.core.rowModel.isRowExpanded(e)}expandAllDetails(){this.core.isDestroyed()||this.core.rowModel.expandAllDetails()}collapseAllDetails(){this.core.isDestroyed()||this.core.rowModel.collapseAllDetails()}loadTreeChildren(e,t={}){return this.core.isDestroyed()?Promise.resolve([]):this.core.rowModel.loadTreeChildren(e,t.force===!0)}retryTreeChildren(e){return this.loadTreeChildren(e,{force:!0})}isTreeRowLoading(e){return!this.core.isDestroyed()&&this.core.rowModel.isTreeRowLoading(e)}toggleRowGroup(e){return this.core.isDestroyed()?!1:this.core.rowModel.toggleGroup(e)}reorderRows(e,t){return this.core.isDestroyed()?!1:this.core.rowModel.reorderRowsByDisplayed(e,t)}isGroupExpanded(e){return this.core.rowModel.isGroupExpanded(e)}expandAllGroups(){this.core.isDestroyed()||this.core.rowModel.expandAllGroups()}collapseAllGroups(){this.core.isDestroyed()||this.core.rowModel.collapseAllGroups()}setSelection(e,t=!0){if(this.core.isDestroyed())return;let o=this.core.options.getRowId,r=[];for(let n of e){let i=o?this.core.rowModel.getNodeById(this.core.rowModel.resolveRowId(n,-1,`__missing_selection_${this.core.nextId()}`)):this.core.rowModel.getAllNodes().find(a=>a.data===n);i&&r.push({node:i,selected:!0})}r.length>0?this.core.selectionService.applySelectionPublic(r,t):t&&this.deselectAll()}getVisibleSelection(){let e=new Set(this.core.selectionService.getSelectedNodes().map(t=>t.id));return this.core.rowModel.getDisplayedRows().filter(t=>!t.isDetail&&!t.isGroup&&e.has(t.id)).map(t=>t.data).filter(Boolean)}getSelectedIds(){return this.core.selectionService.getSelectedIds()}undo(){return this.core.isDestroyed()?!1:this.core.undoService.undo()}redo(){return this.core.isDestroyed()?!1:this.core.undoService.redo()}canUndo(){return this.core.undoService.canUndo()}canRedo(){return this.core.undoService.canRedo()}getDirtyRowIds(){return this.core.changeTracker.getDirtyRowIds()}getChanges(){return this.core.changeTracker.getChanges()}markChangesSaved(e){this.core.changeTracker.markSaved(e)}async saveChanges(e,t){let o=t?new Set(t):null,r=this.core.changeTracker.getChanges().filter(l=>!o||o.has(l.rowId)).map(l=>({...l,data:Er(l.data),cells:l.cells.map(d=>({...d}))}));if(r.length===0)return[];let n=await e(r),i=n&&typeof n=="object"&&Array.isArray(n.savedRowIds)?new Set(n.savedRowIds.map(String)):null,a=i?r.filter(l=>i.has(l.rowId)):r;return this.core.isDestroyed()||this.core.changeTracker.acknowledge(a),a}rollbackChanges(e){return this.core.changeTracker.rollback(e)}setPinnedTopRowData(e){this.core.isDestroyed()||(this.core.options.pinnedTopRowData=e??[],this.core.pinnedRowsRenderer.setTopData(this.core.options.pinnedTopRowData))}getPinnedTopRowData(){return this.core.pinnedRowsRenderer.getTopData()}setPinnedBottomRowData(e){this.core.isDestroyed()||(this.core.options.pinnedBottomRowData=e??[],this.core.pinnedRowsRenderer.setBottomData(this.core.options.pinnedBottomRowData))}getPinnedBottomRowData(){return this.core.pinnedRowsRenderer.getBottomData()}getRangeSelection(){return this.core.bodyRenderer.getRangeSelection()}clearRangeSelection(){this.core.isDestroyed()||this.core.bodyRenderer.clearRangeSelection()}copyRangeToClipboard(){return this.core.isDestroyed()?Promise.resolve(!1):this.core.copyActiveRange()}openColumnPanel(e){this.openColumnWorkbench(e)}openColumnWorkbench(e){this.core.isDestroyed()||this.core.columnMenu.openStandalone(e)}closeColumnWorkbench(){this.core.columnMenu.close()}getColumnWorkbenchItems(){return this.core.columnModel.getColumns().filter(e=>!e.isDetailToggle).map(e=>({colId:e.id,label:e.colDef.headerName??e.colDef.field??e.id,visible:!e.hide,pinned:e.pinned,width:e.currentWidth||e.manualWidth||e.colDef.width||0,movable:e.movable,hideable:!e.hasCheckbox}))}refreshLayout(){this.core.isDestroyed()||(this.core.relayout(),this.core.bodyRenderer.syncScroll())}isInfinite(){return this.core.rowModel.isInfinite}reload(){return this.core.isDestroyed()?Promise.resolve():this.core.rowModel.isInfinite?this.core.rowModel.reloadInfinite():(this.core.rowModel.setRowData(this.core.options.rowData),this.core.bodyRenderer.onDataChanged(),Promise.resolve())}paginationEnabled(){return this.core.rowModel.paginationActive}setPaginationEnabled(e){this.core.isDestroyed()||this.core.rowModel.setPaginationEnabled(e)}getPage(){return this.core.rowModel.getCurrentPage()}setPage(e){this.core.isDestroyed()||this.core.rowModel.setPage(e)}getPageSize(){return this.core.options.paginationPageSize}setPageSize(e){this.core.isDestroyed()||this.core.rowModel.setPageSize(e)}getPageCount(){return this.core.rowModel.getPageCount()}getTotalRowCount(){return this.core.rowModel.getTotalRowCount()}importCsv(e,t={}){if(this.core.isDestroyed()||!e)return!1;let o=Me(e,t.separator??",");if(o.length===0)return!1;let r=o[t.headerRowIndex??0]??[],n=o.slice((t.headerRowIndex??0)+1).filter(c=>c.some(u=>u!=="")),i=t.mode??"replace";if(i==="paste")return this.core.pasteText(Z(n,!1),0,0),!0;let a=this.core.columnModel.getOrderedVisible().filter(c=>c.colDef.field),l=this.resolveCsvFieldOrder(r,a),d=this.buildCsvRecords(n,l,t);return i==="append"?this.core.rowModel.applyTransaction({add:d}):this.core.rowModel.setRowData(d),this.core.bodyRenderer.onDataChanged(),!0}resolveCsvFieldOrder(e,t){let o=new Map;for(let n of t){let i=n.colDef.field;i&&(o.set(String(n.colDef.headerName??i),i),o.set(i,i))}e.length>0&&(e[0]=e[0].replace(/^\uFEFF/,""));let r=e.map((n,i)=>({field:o.get(String(n).trim())??null,index:i})).filter(n=>n.field!=null);return r.length>0?r:t.map((n,i)=>({field:n.colDef.field,index:i}))}buildCsvRecords(e,t,o){return e.map((r,n)=>{let i={};return t.forEach(({field:a,index:l})=>{let d=r[l];if(d===void 0)return;let c=this.parseCsvValue(d,a,n,l,o);K(i,a,c)||this.core.reportError(new Error(`Unsafe CSV field: ${a}`),"csv.import",{field:a})}),i})}parseCsvValue(e,t,o,r,n){if(n.parseValue)try{return n.parseValue({value:e,field:t,rowIndex:o,columnIndex:r})}catch(l){return this.core.reportError(l,"csv.parseValue",{field:t,rowIndex:o,columnIndex:r}),e}if(e==="")return null;let i=/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(e),a=/^[+-]?0\d/.test(e);return n.coerceNumbers!==!1&&i&&!a?Number(e):e}print(e={}){if(this.core.isDestroyed())return!1;try{let t=window.open("","_blank","width=980,height=720");if(!t)return!1;let o=this.core.columnModel.getOrderedVisible().filter(d=>!d.hasCheckbox&&!d.isDetailToggle&&!d.colDef.rowDrag),r=this.core.rowModel.getPipelineRows().filter(d=>!d.isDetail&&!d.isGroup),i=e.includeHeader!==!1?`<tr>${o.map(d=>`<th>${W(d.colDef.headerName??d.colDef.field??d.id)}</th>`).join("")}</tr>`:"",a=r.map(d=>`<tr>${o.map(c=>{let u=N(this.core,d,c);return`<td>${W(u)}</td>`}).join("")}</tr>`).join(""),l=`<!doctype html><html><head><meta charset="utf-8"><title>${W(e.title??"MachTable")}</title><style>body{font-family:system-ui,"PingFang SC","Microsoft YaHei",sans-serif;padding:20px}h3{margin:0 0 12px;font-size:16px}table{border-collapse:collapse;width:100%;font-size:12px}th,td{border:1px solid #bbb;padding:5px 8px;text-align:left;word-break:break-all}th{background:#f2f5f9;font-weight:600}@page{margin:12mm}</style></head><body><h3>${W(e.title??"")}</h3><table>${i}${a}</table></body></html>`;return t.document.write(l),t.document.close(),t.focus(),t.print(),!0}catch{return!1}}startEditingCell(e){let t=this.core.columnModel.getColumn(e.colId);return t?this.core.editingService.start(e.rowIndex,t,e.keyPress??null):!1}startEditingRow(e){return this.core.editingService.startRow(e)}isRowEditing(e){return this.core.editingService.isRowEditing(e)}stopEditing(e){this.core.editingService.stop(e??!1)}stopEditingAsync(e){return this.core.editingService.stopAsync(e??!1)}stopEditingRow(e){return this.core.editingService.stopRowAsync(e??!1)}refreshCells(){this.core.bodyRenderer.refreshAllCells(),this.core.pinnedRowsRenderer.refresh(),this.core.summaryRenderer.refresh()}getGridOption(e){return this.core.options[e]}setGridOption(e,t){this.updateOptions({[e]:t})}updateOptions(e){if(this.core.isDestroyed())return;this.core.checkWarnings(e);let t=br(),o=this.core.options.columnMenu;this.updateSourceOptions(e,t),this.updateDimensionOptions(e,t),this.updateEditingOptions(e,t),this.updateInteractionOptions(e,t),this.updatePaginationOptions(e),this.updatePresentationOptions(e,t),this.updateAccessibilityOptions(e,t),this.updateRowModelOptions(e,t),this.updateExtensionOptions(e,t),this.updateDatasourceOptions(e,t),this.applyOptionUpdateEffects(e,t,o)}updateSourceOptions(e,t){let o=this.core.options;b(e,"columnDefs")&&e.columnDefs!==o.columnDefs&&(o.columnDefs=Array.isArray(e.columnDefs)?e.columnDefs:[],t.needsColumnRebuild=!0,t.needsRowRebuild=!0),b(e,"rowData")&&(o.rowData=Array.isArray(e.rowData)?e.rowData:[],t.needsRowRebuild=!0),b(e,"initialState")&&e.initialState&&(o.initialState=e.initialState,t.stateToApply=e.initialState),this.updateEventHandlers(e)}updateEventHandlers(e){for(let t of Q){let o=`on${t.charAt(0).toUpperCase()}${t.slice(1)}`;b(e,o)&&Object.assign(this.core.options,{[o]:e[o]})}}updateDimensionOptions(e,t){let o=this.core.options,r=de(e.rowHeight,o.rowHeight,1),n=de(e.headerHeight,o.headerHeight,1),i=de(e.rowBuffer,o.rowBuffer,0,!0),a=de(e.detailRowHeight,o.detailRowHeight,1);r!==void 0&&(o.rowHeight=r,t.needsRelayout=!0),n!==void 0&&(o.headerHeight=n,t.needsRelayout=!0,t.needsHeaderRebuild=!0),i!==void 0&&(o.rowBuffer=i,t.needsRelayout=!0),e.columnLayout!=null&&e.columnLayout!==o.columnLayout&&(o.columnLayout=e.columnLayout==="fit"?"fit":"normal",t.needsRelayout=!0),e.multiSort!=null&&(o.multiSort=e.multiSort),a!==void 0&&(o.detailRowHeight=a,this.core.bodyRenderer.applyContainerSizes(),this.core.bodyRenderer.updateRange(!0))}updateEditingOptions(e,t){let o=this.core.options;e.editType!=null&&e.editType!==o.editType&&(this.core.editingService.stop(!0),o.editType=e.editType==="fullRow"?"fullRow":"cell",t.needsCellRefresh=!0),e.editableIndicator!=null&&e.editableIndicator!==o.editableIndicator&&(o.editableIndicator=e.editableIndicator==="always"||e.editableIndicator==="none"?e.editableIndicator:"hover",t.needsCellRefresh=!0),b(e,"rowEditValidator")&&(o.rowEditValidator=e.rowEditValidator),e.singleClickEdit!=null&&(o.singleClickEdit=e.singleClickEdit),e.manualSorting!=null&&(o.manualSorting=e.manualSorting),e.manualFiltering!=null&&(o.manualFiltering=e.manualFiltering)}updateInteractionOptions(e,t){let o=this.core.options;e.locale!=null&&e.locale!==o.locale&&(o.locale=e.locale,t.needsHeaderRebuild=!0,t.needsCellRefresh=!0,this.core.paginationBar.rebuild(),this.core.statusBarService.rebuild()),e.indexOffset!=null&&e.indexOffset!==o.indexOffset&&(o.indexOffset=e.indexOffset,t.needsCellRefresh=!0),e.showSummary!=null&&e.showSummary!==o.showSummary&&(o.showSummary=e.showSummary,t.needsSummaryRefresh=!0,t.needsRelayout=!0);let r=de(e.undoStackSize,o.undoStackSize,0,!0);r!==void 0&&(o.undoStackSize=r,this.core.undoService.trimToSize());let n=O(e.asyncTransactionWaitMillis,0,!0);n!==void 0&&(o.asyncTransactionWaitMillis=n),this.updateDynamicRowHeight(e,t),this.updateRangeAndFeedbackOptions(e)}updateDynamicRowHeight(e,t){if(!b(e,"getRowHeight"))return;let o=this.core.options.getRowHeight!==e.getRowHeight;this.core.options.getRowHeight=e.getRowHeight,o&&this.core.bodyRenderer.invalidateAllRowHeights(),t.needsRelayout=!0}updateRangeAndFeedbackOptions(e){let t=this.core.options;e.enableRangeSelection!=null&&(t.enableRangeSelection=e.enableRangeSelection,e.enableRangeSelection||this.clearRangeSelection()),b(e,"tooltipComponent")&&(t.tooltipComponent=e.tooltipComponent);let o=O(e.tooltipShowDelay,0);o!==void 0&&(t.tooltipShowDelay=o),e.flashCells!=null&&(t.flashCells=e.flashCells),b(e,"getContextMenuItems")&&(t.getContextMenuItems=e.getContextMenuItems),e.theme!=null&&e.theme!==t.theme&&(t.theme=e.theme,this.core.skeleton.applyTheme(e.theme),this.core.watermarkService.refresh())}updatePaginationOptions(e){if(e.pagination===void 0)return;let t=this.core.options,o=e.pagination,r=o!==!1&&t.datasource==null;r!==t.paginationEnabled&&this.core.rowModel.setPaginationEnabled(r),typeof o=="object"&&o&&this.updatePaginationConfig(o),t.paginationEnabled&&this.core.rowModel.onPaginationOptionsChanged(),this.core.paginationBar.rebuild()}updatePaginationConfig(e){let t=this.core.options;t.paginationMode=e.mode==="server"?"server":"client";let o=O(e.page,1,!0),r=O(e.total,0,!0);o!==void 0&&(t.paginationPage=o),r!==void 0&&(t.paginationTotal=r),e.pageSize!=null&&(t.paginationPageSize=e.pageSize),e.pageSizeOptions!=null&&(t.paginationPageSizeOptions=e.pageSizeOptions),e.showTotal!=null&&(t.paginationShowTotal=e.showTotal),e.showPageSizeSelector!=null&&(t.paginationShowSizeSelector=e.showPageSizeSelector)}updatePresentationOptions(e,t){this.updateWatermarkAndStatus(e,t),this.updateSizePreset(e,t);let o=this.core.options;e.stripedRows!=null&&e.stripedRows!==o.stripedRows&&(o.stripedRows=e.stripedRows,this.core.skeleton.setStriped(e.stripedRows)),e.showCellBorders!=null&&e.showCellBorders!==o.showCellBorders&&(o.showCellBorders=e.showCellBorders,this.core.skeleton.setCellBorders(e.showCellBorders))}updateWatermarkAndStatus(e,t){let o=this.core.options;e.watermark!==void 0&&(o.watermarkEnabled=e.watermark!=null&&e.watermark!==!1,o.watermarkConfig=e.watermark==null||e.watermark===!1?null:e.watermark===!0?{text:"MachTable"}:e.watermark,this.core.watermarkService.refresh()),this.updateStatusOptions(e),b(e,"summaryMethod")&&(o.summaryMethod=e.summaryMethod,t.needsSummaryRefresh=!0)}updateStatusOptions(e){let t=this.core.options;e.suppressClipboard!=null&&(t.suppressClipboard=e.suppressClipboard),e.contextMenu!=null&&(t.contextMenu=e.contextMenu),e.columnMenu!=null&&(t.columnMenu=e.columnMenu),e.fillHandle!=null&&(t.fillHandle=e.fillHandle),e.statusBar!==void 0&&(t.statusBarEnabled=e.statusBar===!0||typeof e.statusBar=="object"&&e.statusBar!=null,typeof e.statusBar=="object"&&e.statusBar?.panels&&(t.statusBarPanels=e.statusBar.panels),this.core.statusBarService.rebuild())}updateSizePreset(e,t){let{size:o}=e;if(o==null||!b(V,o)||o===this.core.options.size)return;let r=V[o];this.core.options.size=o,this.core.options.rowHeight=e.rowHeight??r.rowHeight,this.core.options.headerHeight=e.headerHeight??r.headerHeight,this.core.skeleton.applySize(o),t.needsRelayout=!0,t.needsHeaderRebuild=!0}updateAccessibilityOptions(e,t){let o=this.core.options;e.suppressCellFocus!=null&&(o.suppressCellFocus=e.suppressCellFocus),e.suppressRowHoverHighlight!=null&&(o.suppressRowHoverHighlight=e.suppressRowHoverHighlight),e.suppressNoRowsOverlay!=null&&(o.suppressNoRowsOverlay=e.suppressNoRowsOverlay),e.suppressHeaderFocus!=null&&e.suppressHeaderFocus!==o.suppressHeaderFocus&&(o.suppressHeaderFocus=e.suppressHeaderFocus,t.needsHeaderRebuild=!0),this.updateAriaLabels(e),this.updateOverlayOptions(e)}updateAriaLabels(e){let t=this.core.options,o=!1;b(e,"ariaLabel")&&(t.ariaLabel=e.ariaLabel??"MachTable data grid",o=!0),b(e,"ariaLabelledBy")&&(t.ariaLabelledBy=e.ariaLabelledBy??"",o=!0),b(e,"ariaDescribedBy")&&(t.ariaDescribedBy=e.ariaDescribedBy??"",o=!0),o&&this.core.skeleton.applyAriaLabels(t)}updateOverlayOptions(e){let t=this.core.options;b(e,"overlayNoRowsTemplate")&&(t.overlayNoRowsTemplate=e.overlayNoRowsTemplate??""),b(e,"overlayLoadingTemplate")&&(t.overlayLoadingTemplate=e.overlayLoadingTemplate??""),e.allowUnsafeOverlayHtml!=null&&(t.allowUnsafeOverlayHtml=e.allowUnsafeOverlayHtml),b(e,"className")&&(t.className=e.className??"",this.core.skeleton.setCustomClass(t.className)),e.loading!=null&&(t.loading=e.loading)}updateRowModelOptions(e,t){this.updateSelectionAndColumns(e,t),this.updateHierarchyOptions(e,t);let o=this.core.options;e.autoCheckedChildren!=null&&(o.autoCheckedChildren=e.autoCheckedChildren),e.defaultExpandAll!=null&&e.defaultExpandAll!==o.defaultExpandAll&&(o.defaultExpandAll=e.defaultExpandAll,t.needsRowRebuild=!0),e.applyRowDrag!=null&&(o.applyRowDrag=e.applyRowDrag),e.suppressWarnings!=null&&(o.suppressWarnings=e.suppressWarnings)}updateSelectionAndColumns(e,t){let o=this.core.options;e.rowSelection!=null&&e.rowSelection!==o.rowSelection&&(o.rowSelection=e.rowSelection,e.rowSelection==="none"&&this.deselectAll(),t.needsHeaderRebuild=!0,t.needsPoolRebuild=!0,this.core.refreshAriaState()),e.quickFilterText!==void 0&&this.setQuickFilter(e.quickFilterText),e.defaultColDef!==void 0&&e.defaultColDef!==o.defaultColDef&&(o.defaultColDef={...mt,...e.defaultColDef},t.needsColumnRebuild=!0),b(e,"columnTypes")&&e.columnTypes!==o.columnTypes&&(o.columnTypes=e.columnTypes??{},t.needsColumnRebuild=!0),b(e,"getRowId")&&e.getRowId!==o.getRowId&&(o.getRowId=e.getRowId,t.needsRowRebuild=!0)}updateHierarchyOptions(e,t){let o=this.core.options;e.masterDetail!=null&&e.masterDetail!==o.masterDetail&&(o.masterDetail=e.masterDetail,t.needsColumnRebuild=!0,t.needsRowRebuild=!0),e.detailToggleColumn!=null&&e.detailToggleColumn!==o.detailToggleColumn&&(o.detailToggleColumn=e.detailToggleColumn,t.needsColumnRebuild=!0),e.treeData!=null&&e.treeData!==o.treeData&&(o.treeData=e.treeData,t.needsRowRebuild=!0,t.needsColumnRebuild=!0,this.core.refreshAriaState()),e.childrenKey!=null&&e.childrenKey!==o.childrenKey&&(o.childrenKey=e.childrenKey,t.needsRowRebuild=!0),b(e,"isTreeRowExpandable")&&(o.isTreeRowExpandable=e.isTreeRowExpandable,t.needsCellRefresh=!0),b(e,"loadTreeChildren")&&(o.loadTreeChildren=e.loadTreeChildren,t.needsCellRefresh=!0)}updateExtensionOptions(e,t){let o=this.core.options;b(e,"aggFuncs")&&(o.aggFuncs=e.aggFuncs,t.needsRowRebuild=!0),b(e,"components")&&(o.components=e.components,t.needsCellRefresh=!0),b(e,"actionPolicy")&&(o.actionPolicy=e.actionPolicy,t.needsCellRefresh=!0),b(e,"features")&&(o.features=Array.isArray(e.features)?e.features:[],this.core.setFeatures(o.features)),b(e,"columnStateStore")&&(o.columnStateStore=e.columnStateStore,t.needsStateLoad=!0),b(e,"columnStateKey")&&(o.columnStateKey=e.columnStateKey??null,t.needsStateLoad=!0)}updateDatasourceOptions(e,t){let o=this.core.options,r=O(e.blockSize,1,!0),n=O(e.infiniteBufferRows,0,!0),i=O(e.datasourceRetryCount,0,!0),a=O(e.datasourceRetryDelay,0,!0);r!==void 0&&(o.blockSize=r),n!==void 0&&(o.infiniteBufferRows=n),i!==void 0&&(o.datasourceRetryCount=i),a!==void 0&&(o.datasourceRetryDelay=a),this.updateDatasourceReference(e,t),this.updatePinnedRows(e)}updateDatasourceReference(e,t){let o=this.core.options;b(e,"datasource")&&e.datasource!==o.datasource&&(o.datasource=e.datasource,o.paginationEnabled=e.datasource==null&&o.paginationEnabled,t.datasourceChanged=!0,this.core.paginationBar.rebuild()),b(e,"detailRowRenderer")&&(o.detailRowRenderer=e.detailRowRenderer,t.needsCellRefresh=!0),b(e,"isRowExpandable")&&(o.isRowExpandable=e.isRowExpandable,t.needsCellRefresh=!0)}updatePinnedRows(e){let t=this.core.options;e.pinnedTopRowData!==void 0&&(t.pinnedTopRowData=e.pinnedTopRowData??[],this.core.pinnedRowsRenderer.setTopData(t.pinnedTopRowData)),e.pinnedBottomRowData!==void 0&&(t.pinnedBottomRowData=e.pinnedBottomRowData??[],this.core.pinnedRowsRenderer.setBottomData(t.pinnedBottomRowData))}applyOptionUpdateEffects(e,t,o){let r=this.core.options;t.needsColumnRebuild&&(this.core.columnModel.setColumnDefs(r.columnDefs),this.core.onColumnsStructureChanged(),t.needsHeaderRebuild=!1,t.needsPoolRebuild=!1),t.needsStateLoad&&(this.core.loadPersistedColumnState(),this.core.onColumnsStructureChanged()),this.applyRowUpdateEffect(t),t.needsRelayout&&(this.core.skeleton.updateHeights(r.rowHeight,r.headerHeight),this.core.relayout(),this.core.relayoutColumns(!1)),e.columnMenu!=null&&e.columnMenu!==o&&(t.needsHeaderRebuild=!0),t.needsHeaderRebuild&&this.core.headerRenderer.build(),t.needsPoolRebuild?this.core.bodyRenderer.rebuildPool():t.needsCellRefresh&&this.refreshCells(),t.needsSummaryRefresh&&this.core.summaryRenderer.refresh(),t.stateToApply&&this.applyState(t.stateToApply),this.core.bodyRenderer.refreshOverlays()}applyRowUpdateEffect(e){if(e.datasourceChanged){this.core.rowModel.onDatasourceChanged();return}if(e.needsRowRebuild){if(this.core.rowModel.isInfinite){this.core.rowModel.onServerParamsChanged();return}this.core.rowModel.setRowData(this.core.options.rowData),this.core.bodyRenderer.onDataChanged()}}getDataAsCsv(e={}){let t=this.core.columnModel.getOrderedVisible().filter(r=>!r.hasCheckbox&&!r.isDetailToggle);if(e.headersOnly)return Ct({getHeaderLabels:()=>t.map(r=>r.colDef.headerName??r.colDef.field??r.id),getRowValues:()=>[]},e);let o=e.onlySelected?this.core.selectionService.getSelectedNodes().slice().sort((r,n)=>r.rowIndex-n.rowIndex):e.onlyAllDisplayed?this.core.rowModel.getDisplayedRows().filter(r=>!r.isDetail&&!r.isGroup):this.core.rowModel.getPipelineRows().filter(r=>!r.isDetail&&!r.isGroup);return Ct({getHeaderLabels:()=>t.map(r=>r.colDef.headerName??r.colDef.field??r.id),getRowValues:()=>o.map(r=>t.map(n=>{let i=this.core.getCellValue(r,n);return typeof i=="number"?i:N(this.core,r,n)}))},e)}getState(){return{version:1,columns:this.getColumnState(),sortModel:this.getSortModel(),filterModel:this.getFilterModel(),quickFilterText:this.getQuickFilter(),pagination:{enabled:this.paginationEnabled(),page:this.getPage(),pageSize:this.getPageSize()},selectedRowIds:this.getSelectedIds(),expandedRowIds:this.core.rowModel.getExpandedRowIds(),expandedGroupIds:this.core.rowModel.getExpandedGroupIds()}}applyState(e,t={}){if(this.core.isDestroyed()||!e||e.version!==1)return;let o=["columns","sort","filter","pagination","selection","expansion"],r=new Set(t.sections??o);this.core.editingService.stop(!0),this.restoreStateSections(e,r),this.refreshAfterStateRestore(e,r),t.emitEvents!==!1&&this.emitStateEvents(r)}restoreStateSections(e,t){t.has("columns")&&this.core.columnModel.applyColumnState(e.columns??[]),t.has("sort")&&this.core.columnModel.applySortModel(e.sortModel??[]),t.has("filter")&&(this.core.rowModel.setFilterModel(e.filterModel??{}),this.core.rowModel.setQuickFilter(e.quickFilterText)),t.has("expansion")&&this.core.rowModel.restoreExpansion(e.expandedRowIds??[],e.expandedGroupIds??[]),t.has("pagination")&&e.pagination&&(this.core.options.paginationEnabled=e.pagination.enabled&&!this.core.rowModel.isInfinite,this.core.rowModel.restorePagination(e.pagination.page,e.pagination.pageSize),this.core.paginationBar.rebuild())}refreshAfterStateRestore(e,t){t.has("columns")&&this.core.onColumnsStructureChanged(),this.core.rowModel.isInfinite?this.core.rowModel.onServerParamsChanged():(this.core.rowModel.refreshPipeline(),this.core.bodyRenderer.onDataChanged()),this.core.headerRenderer.refreshSortIndicators(),this.core.headerRenderer.refreshFilterIcons(),t.has("selection")&&this.core.selectionService.restoreSelection(e.selectedRowIds??[]),this.core.persistColumnState()}emitStateEvents(e){e.has("sort")&&this.core.emit("sortChanged",{sortModel:this.getSortModel()}),e.has("filter")&&this.core.emit("filterChanged",{filterModel:this.getFilterModel()}),e.has("pagination")&&this.core.emit("paginationChanged",{page:this.getPage(),pageSize:this.getPageSize(),pageCount:this.getPageCount(),total:this.getTotalRowCount()})}getDiagnostics(){return this.core.getDiagnostics()}setOverlay(e){if(e==="loading")this.core.skeleton.showOverlay("loading",this.core.options.overlayLoadingTemplate,this.core.options.allowUnsafeOverlayHtml);else if(e==="noRows"){let t=this.core.options.overlayNoRowsTemplate||this.core.buildDefaultEmptyState();this.core.skeleton.showOverlay("noRows",t,this.core.options.allowUnsafeOverlayHtml)}else this.core.skeleton.hideOverlay()}hideOverlays(){this.core.skeleton.hideOverlay()}addEventListener(e,t){return this.core.eventBus.on(e,t)}removeEventListener(e,t){this.core.eventBus.off(e,t)}destroy(){this.asyncTransactionTimer!=null&&clearTimeout(this.asyncTransactionTimer),this.asyncTransactionTimer=null,this.asyncTransactions=[];let e=this.asyncTransactionResolvers;this.asyncTransactionResolvers=[];for(let t of e)t();this.core.destroy()}isDestroyed(){return this.core.isDestroyed()}};var Rr=["compact","normal","large"],je=class{constructor(e){this.core=e;this.headerRows={left:[],center:[],right:[]};this.headerRowContainers={};this.currentOverlay=null;this.currentOverlayContent=null;this.currentOverlayAllowsHtml=!1;this.overlayCleanup=null;this.customClassTokens=[];this.resizeObserver=null;this.headerDepth=1;this.themeUnsub=null}init(e,t){let o=["mach-root",`mach-size--${t.size}`];t.stripedRows&&o.push("mach-striped"),t.showCellBorders&&o.push("mach-cell-borders"),this.root=g("div",o.join(" ")),this.setCustomClass(t.className),this.root.style.setProperty("--mach-row-h",`${t.rowHeight}px`),this.root.style.setProperty("--mach-header-h",`${t.headerHeight}px`),this.root.setAttribute("role","grid"),this.root.tabIndex=0,this.applyAriaLabels(t),this.headerEl=g("div","mach-header"),this.headerEl.setAttribute("role","rowgroup"),this.headerRows={left:[],center:[],right:[]},this.headerPanes={},this.headerRowContainers={};for(let r of["left","center","right"]){let n=g("div",`mach-pane mach-pane--${r} mach-header-pane`),i=g("div","mach-header-rows");if(r==="center"){let a=g("div","mach-header-viewport");a.appendChild(i),n.appendChild(a)}else n.appendChild(i);this.headerEl.appendChild(n),this.headerPanes[r]=n,this.headerRowContainers[r]=i}this.setHeaderRowCount(1),this.bodyEl=g("div","mach-body"),this.pinnedTopEl=g("div","mach-pinned-rows mach-pinned-rows--top"),this.pinnedTopEl.style.display="none",this.pinnedBottomEl=g("div","mach-pinned-rows mach-pinned-rows--bottom"),this.pinnedBottomEl.style.display="none",this.bodyViewports={},this.rowContainers={},this.bodyPanes={};for(let r of["left","center","right"]){let n=g("div",`mach-pane mach-pane--${r} mach-body-pane`),i=g("div",`mach-body-viewport${r==="center"?" mach-body-viewport--scroll":""}`),a=g("div","mach-row-container");i.appendChild(a),n.appendChild(i),this.bodyEl.appendChild(n),this.bodyPanes[r]=n,this.bodyViewports[r]=i,this.rowContainers[r]=a}this.overlayWrapper=g("div","mach-overlay"),this.overlayWrapper.style.display="none",this.overlayWrapper.setAttribute("role","status"),this.overlayWrapper.setAttribute("aria-live","polite"),this.overlayContent=g("div","mach-overlay-content"),this.overlayWrapper.appendChild(this.overlayContent),this.infiniteLoadingEl=g("div","mach-infinite-loading"),this.infiniteLoadingEl.style.display="none",this.infiniteLoadingEl.appendChild(g("div","mach-spinner")),this.infiniteLoadingText=g("span"),this.infiniteLoadingEl.appendChild(this.infiniteLoadingText),this.root.append(this.headerEl,this.pinnedTopEl,this.bodyEl,this.pinnedBottomEl,this.overlayWrapper,this.infiniteLoadingEl),e.appendChild(this.root),typeof ResizeObserver<"u"&&(this.resizeObserver=new ResizeObserver(()=>this.core.relayout()),this.resizeObserver.observe(this.root)),this.applyTheme(t.theme)}applyAriaLabels(e){e.ariaLabelledBy?(this.root.setAttribute("aria-labelledby",e.ariaLabelledBy),this.root.removeAttribute("aria-label")):(this.root.removeAttribute("aria-labelledby"),this.root.setAttribute("aria-label",e.ariaLabel)),e.ariaDescribedBy?this.root.setAttribute("aria-describedby",e.ariaDescribedBy):this.root.removeAttribute("aria-describedby")}setHeaderRowCount(e){this.headerDepth=e;for(let t of["left","center","right"]){let o=this.headerRowContainers[t],r=this.headerRows[t];for(;r.length<e;){let n=g("div","mach-header-row");n.setAttribute("role","row"),n.setAttribute("aria-rowindex",String(r.length+1)),n.style.top=`${r.length*this.core.options.headerHeight}px`,n.style.height=`${this.core.options.headerHeight}px`,o.appendChild(n),r.push(n)}for(;r.length>e;)r.pop().remove()}this.applyHeaderHeight()}getHeaderRowCount(){return this.headerDepth}applyHeaderHeight(){this.headerEl.style.height=`${this.headerDepth*this.core.options.headerHeight}px`;for(let e of["left","center","right"])this.headerRows[e].forEach((o,r)=>{o.style.top=`${r*this.core.options.headerHeight}px`,o.style.height=`${this.core.options.headerHeight}px`})}setPaneWidths(e,t){this.applyPaneWidth("left",e),this.applyPaneWidth("right",t)}applyPaneWidth(e,t){let o=this.headerPanes[e],r=this.bodyPanes[e];o.style.width=`${t}px`,r.style.width=`${t}px`;let n=t<=0;o.classList.toggle("mach-pane--hidden",n),r.classList.toggle("mach-pane--hidden",n)}measureViewportWidth(){return this.bodyViewports.center.clientWidth}updateHeights(e,t){this.root.style.setProperty("--mach-row-h",`${e}px`),this.root.style.setProperty("--mach-header-h",`${t}px`),this.applyHeaderHeight()}applySize(e){for(let t of Rr)this.root.classList.toggle(`mach-size--${t}`,t===e)}applyTheme(e){if(!this.root)return;this.themeUnsub?.(),this.themeUnsub=null;let t=e==="dark"||e==="auto"&&this.systemPrefersDark();if(this.root.classList.toggle("mach-theme-dark",t),e==="auto"&&typeof window<"u"&&typeof window.matchMedia=="function"){let o=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>this.root.classList.toggle("mach-theme-dark",o.matches);typeof o.addEventListener=="function"?(o.addEventListener("change",r),this.themeUnsub=()=>o.removeEventListener("change",r)):typeof o.addListener=="function"&&(o.addListener(r),this.themeUnsub=()=>o.removeListener(r))}}systemPrefersDark(){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-color-scheme: dark)").matches}setStriped(e){this.root.classList.toggle("mach-striped",e)}setCellBorders(e){this.root.classList.toggle("mach-cell-borders",e)}setCustomClass(e){for(let t of this.customClassTokens)this.root.classList.remove(t);this.customClassTokens=[];for(let t of String(e??"").split(/\s+/).filter(Boolean))this.root.classList.contains(t)||(this.root.classList.add(t),this.customClassTokens.push(t))}showOverlay(e,t,o=!1){if(this.currentOverlay===e&&this.currentOverlayContent===t&&this.currentOverlayAllowsHtml===o)return;this.currentOverlay=e,this.currentOverlayContent=t,this.currentOverlayAllowsHtml=o,this.cleanupOverlayContent(),this.overlayContent.replaceChildren();let r;try{r=typeof t=="function"?t():t}catch(n){this.core.reportError(n,"overlayTemplate"),r=""}if(typeof r=="object"&&r!=null&&"el"in r)this.overlayContent.appendChild(r.el),this.overlayCleanup=r.destroy??null;else if(r instanceof HTMLElement)this.overlayContent.appendChild(r);else if(r&&o)this.overlayContent.innerHTML=r;else if(r)this.overlayContent.textContent=r;else if(e==="loading"){let n=g("div","mach-spinner");n.setAttribute("aria-label","loading"),this.overlayContent.appendChild(n)}this.overlayWrapper.style.display="",this.root.setAttribute("aria-busy",e==="loading"?"true":"false")}hideOverlay(){this.currentOverlay&&(this.currentOverlay=null,this.currentOverlayContent=null,this.currentOverlayAllowsHtml=!1,this.overlayWrapper.style.display="none",this.cleanupOverlayContent(),this.overlayContent.replaceChildren(),this.root.setAttribute("aria-busy","false"))}setInfiniteLoading(e,t){this.infiniteLoadingEl&&(e?(this.infiniteLoadingText.textContent!==t&&(this.infiniteLoadingText.textContent=t),this.infiniteLoadingEl.style.display="",this.root.setAttribute("aria-busy","true")):(this.infiniteLoadingEl.style.display="none",this.currentOverlay!=="loading"&&this.root.setAttribute("aria-busy","false")))}destroy(){this.themeUnsub?.(),this.themeUnsub=null,this.resizeObserver?.disconnect(),this.resizeObserver=null,this.cleanupOverlayContent(),this.root.remove()}cleanupOverlayContent(){if(!this.overlayCleanup)return;let e=this.overlayCleanup;this.overlayCleanup=null;try{e()}catch(t){this.core.reportError(t,"overlayTemplate.destroy")}}};var Dr={contains:"\u5305\u542B",notContains:"\u4E0D\u5305\u542B",equals:"=",notEquals:"\u2260",startsWith:"\u5F00\u5934",endsWith:"\u7ED3\u5C3E",blank:"\u4E3A\u7A7A",notBlank:"\u975E\u7A7A",lessThan:"<",lessThanOrEqual:"\u2264",greaterThan:">",greaterThanOrEqual:"\u2265",inRange:"\u8303\u56F4"};function Ye(s){if(!s)return"";if(s.type==="set")return`\u5DF2\u9009 ${s.values.length} \u9879`;let e=[];for(let o of s.conditions){let r=Dr[o.match]??o.match,n=o.value,i="value2"in o?o.value2:void 0;o.match==="blank"||o.match==="notBlank"?e.push(r):o.match==="inRange"&&n!=null?e.push(`${r} ${n}~${i??n}`):n!=null&&String(n)!==""?e.push(`${r} ${n}`):e.push(r)}let t=s.operator==="or"?" \u6216 ":" \u4E14 ";return e.join(t)}var Xe=class{constructor(e){this.core=e;this.leafCells=[];this.groupCells=[];this.paneTrees={left:[],center:[],right:[]}}build(){for(let i of this.leafCells){let a=Dt(i.el);if(a)try{a()}catch(l){this.core.reportError(l,"headerComponent.destroy",{colId:i.column.id})}}this.leafCells=[],this.groupCells=[];let e=this.core.columnModel.getHeaderDepth();this.core.skeleton.setHeaderRowCount(e);let t=i=>i.pinned==="left"?"left":i.pinned==="right"?"right":"center",o=(i,a,l)=>{let d=[];for(let c of i)if(c instanceof z){let u=o(c.children,a+1,l);u.length>0&&d.push({group:c,level:a,children:u})}else!c.hide&&t(c)===l&&d.push({column:c,level:a,children:[]});return d},r=this.core.columnModel.getRootChildren();for(let i of["left","center","right"])this.paneTrees[i]=o(r,0,i);let n=this.core.options.headerHeight;for(let i of["left","center","right"]){let a=this.core.skeleton.headerRows[i];for(let d of a)d.textContent="";let l=d=>{let c=a[Math.min(d.level,a.length-1)];if(d.column){let u=this.createLeafCell(d.column,e-d.level,n);c.appendChild(u.el),this.leafCells.push(u)}else if(d.group){let u=this.createGroupCell(d.group);c.appendChild(u),this.groupCells.push({group:d.group,el:u})}for(let u of d.children)l(u)};for(let d of this.paneTrees[i])l(d)}this.core.options.suppressHeaderFocus||this.leafCells.forEach((i,a)=>{i.el.tabIndex=a===0?0:-1}),this.applyLayout(),this.refreshSortIndicators(),this.refreshFilterIcons(),this.refreshSelectAllCheckbox()}createLeafCell(e,t,o){let r=e.colDef,n=g("div","mach-header-cell mach-header-cell--leaf");n.dataset.colId=e.id,n.setAttribute("role","columnheader"),n.style.height=`${t*o}px`,typeof r.headerClass=="string"?n.classList.add(r.headerClass):Array.isArray(r.headerClass)&&n.classList.add(...r.headerClass),r.headerTooltip&&n.setAttribute("title",r.headerTooltip);let i=r.headerAlign??r.align;i==="center"?n.classList.add("mach-header-cell--center"):i==="right"&&n.classList.add("mach-header-cell--right"),this.core.options.suppressHeaderFocus||(n.tabIndex=-1,n.addEventListener("mousedown",()=>this.focusHeaderCell(e)),n.addEventListener("keydown",h=>this.onHeaderKeyDown(h,e)));let a;e.hasCheckbox&&this.core.options.rowSelection==="multiple"&&(a=document.createElement("input"),a.type="checkbox",a.className="mach-select-all",a.setAttribute("aria-label","select all rows"),a.addEventListener("click",h=>h.stopPropagation()),a.addEventListener("change",()=>{a.checked?this.core.selectionService.selectAll(!0):this.core.selectionService.deselectAll()}),n.appendChild(a));let l=r.headerComponent;if(l){let h;try{h=l({colDef:r,column:e,api:this.core.getApi()})}catch(p){this.core.reportError(p,"headerComponent",{colId:e.id}),h=null}if(typeof h=="string"){let p=g("span","mach-header-label");p.textContent=h,n.appendChild(p)}else if(h instanceof HTMLElement){let p=g("span","mach-header-label mach-header-label--custom");p.appendChild(h),n.appendChild(p)}else if(h&&typeof h=="object"&&h.el instanceof HTMLElement){let p=g("span","mach-header-label mach-header-label--custom");p.appendChild(h.el),n.appendChild(p),Jt(n,h.destroy)}else{let p=g("span","mach-header-label");p.textContent=r.headerName??r.field??e.id,n.appendChild(p)}}else{let h=g("span","mach-header-label");h.textContent=r.headerName??r.field??e.id,n.appendChild(h)}let d=g("span","mach-sort-indicator");n.appendChild(d);let c,u;if(e.filterable&&(c=document.createElement("button"),c.type="button",c.className="mach-filter-btn",c.setAttribute("aria-label",`filter ${e.id}`),c.innerHTML=$t,c.addEventListener("click",h=>{h.stopPropagation(),this.core.filterPopup.toggle(e,c)}),n.appendChild(c),u=g("span","mach-filter-tag"),n.appendChild(u)),this.core.options.columnMenu){let h=document.createElement("button");h.type="button",h.className="mach-menu-btn",h.setAttribute("aria-label","column menu"),h.textContent="\u22EF",h.addEventListener("click",p=>{p.stopPropagation(),this.core.columnMenu.toggle(e,h)}),n.appendChild(h)}if(e.resizable){let h=g("div","mach-header-resize");h.addEventListener("pointerdown",p=>{p.button===0&&(p.preventDefault(),p.stopPropagation(),this.core.resizeService.startResize(p,e))}),h.addEventListener("dblclick",p=>{p.stopPropagation(),this.core.getApi().autoSizeColumn(e.id)}),h.addEventListener("click",p=>p.stopPropagation()),n.appendChild(h)}return n.addEventListener("click",h=>{this.core.columnDragService.didDrag()||h.target.closest(".mach-header-resize, .mach-filter-btn, .mach-select-all")||e.sortable&&this.core.cycleSort(e,h.shiftKey)}),n.addEventListener("pointerdown",h=>{h.button!==0||h.target.closest(".mach-header-resize, .mach-filter-btn, .mach-select-all")||this.core.columnDragService.onPointerDown(h,e)}),{column:e,el:n,sortEl:d,filterBtn:c,filterTagEl:u,selectAllEl:a}}createGroupCell(e){let t=g("div","mach-header-cell mach-header-cell--group");e.groupId&&(t.dataset.groupId=e.groupId),t.setAttribute("role","columnheader");let o=e.def;typeof o.headerClass=="string"?t.classList.add(o.headerClass):Array.isArray(o.headerClass)&&t.classList.add(...o.headerClass);let r=g("span","mach-header-label mach-header-label--group");return r.textContent=e.headerName,t.appendChild(r),t}applyLayout(){let e=1,t={left:0,center:0,right:0};for(let o of["left","center","right"]){let r=this.core.skeleton.headerRows[o],n=0,i=new Map;for(let l of this.leafCells)this.core.columnModel.paneOf(l.column)===o&&(i.set(l.column.id,n),n+=l.column.currentWidth);let a=this.core.options.headerHeight;for(let l of this.leafCells){if(this.core.columnModel.paneOf(l.column)!==o)continue;let d=i.get(l.column.id)??0;l.el.style.width=`${l.column.currentWidth}px`,l.el.style.left=`${d}px`,l.el.setAttribute("aria-colindex",String(e++))}for(let l of this.groupCells){let d=this.visiblePaneLeaves(l.group,o);if(d.length===0)continue;let c=i.get(d[0].id)??0,u=0;for(let h of d)u+=h.currentWidth;l.el.style.left=`${c}px`,l.el.style.width=`${u}px`,l.el.style.height=`${a}px`,l.el.setAttribute("aria-colspan",String(d.length))}for(let l of r)l.style.width=`${n}px`;t[o]=n}this.core.skeleton.setPaneWidths(t.left,t.right)}visiblePaneLeaves(e,t){return e.getLeafColumns().filter(o=>!o.hide&&this.core.columnModel.paneOf(o)===t)}onHeaderKeyDown(e,t){if(this.core.isDestroyed())return;let o=r=>{let n=Math.max(t.colDef.minWidth??40,t.currentWidth+r);this.core.columnModel.setColumnWidth(t,n),this.core.relayoutColumns(),this.core.emit("columnResized",{colId:t.id,width:t.currentWidth,finished:!0}),e.preventDefault()};switch(!0){case(e.key==="Enter"||e.key===" "):if(e.target.closest(".mach-header-resize, .mach-filter-btn, .mach-select-all"))return;e.preventDefault(),t.sortable&&this.core.cycleSort(t,e.shiftKey);return;case(e.altKey&&(e.key==="ArrowRight"||e.key==="ArrowLeft")):if(!t.resizable)return;o(e.key==="ArrowRight"?24:-24);return;case(e.ctrlKey&&(e.key==="ArrowLeft"||e.key==="ArrowRight")):if(!t.movable)return;e.preventDefault();{let r=this.core.columnModel.paneOf(t),n=this.core.columnModel.getPaneColumns(r),i=n.indexOf(t),a=e.key==="ArrowRight"?Math.min(n.length-1,i+1):Math.max(0,i-1);a!==i&&this.core.moveColumn(t.id,a)}return;case(!e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.key==="ArrowLeft"||e.key==="ArrowRight")):e.preventDefault();{let r=this.leafCells.findIndex(i=>i.column.id===t.id),n=e.key==="ArrowRight"?Math.min(this.leafCells.length-1,r+1):Math.max(0,r-1);r>=0&&this.focusHeaderCell(this.leafCells[n].column)}return;case(e.key==="Home"||e.key==="End"):e.preventDefault(),this.leafCells.length>0&&this.focusHeaderCell(e.key==="Home"?this.leafCells[0].column:this.leafCells[this.leafCells.length-1].column);return}}focusHeaderCell(e){let t=this.leafCells.find(o=>o.column.id===e.id);if(t){for(let o of this.leafCells)o.el.tabIndex=o===t?0:-1;t.el.focus({preventScroll:!0})}}refreshSortIndicators(){let e=this.core.columnModel.getSortModel(),t=e.length>1;for(let o of this.leafCells){let r=e.findIndex(n=>n.colId===o.column.id);if(r>=0){let n=e[r].direction,i=t?`<span class="mach-sort-badge">${r+1}</span>`:"";o.sortEl.innerHTML=(n==="asc"?Ut:qt)+i,o.el.setAttribute("aria-sort",n==="asc"?"ascending":"descending"),o.el.classList.add("mach-header-cell--sorted")}else o.sortEl.innerHTML="",o.el.removeAttribute("aria-sort"),o.el.classList.remove("mach-header-cell--sorted")}}refreshFilterIcons(){let e=this.core.rowModel.getFilterModel();for(let t of this.leafCells){if(!t.filterBtn)continue;let o=e[t.column.id],r=o!=null;if(t.filterBtn.classList.toggle("mach-filter-btn--active",r),t.filterTagEl){let n=r?Ye(o):"";t.filterTagEl.style.display=n?"":"none",n&&(t.filterTagEl.textContent=n)}}}refreshSelectAllCheckbox(){for(let e of this.leafCells)e.selectAllEl&&(e.selectAllEl.checked=this.core.selectionService.isSelectAllActive(),e.selectAllEl.indeterminate=this.core.selectionService.isSelectAllIndeterminate())}destroy(){for(let e of this.leafCells){let t=Dt(e.el);if(t)try{t()}catch(o){console.error("[mach-table] headerComponent destroy error",o)}}this.leafCells=[],this.groupCells=[]}};var Ze=class{constructor(){this.anchor=null;this.end=null;this.cache=!1;this.cacheRowCount=-1;this.cacheColCount=-1}getAnchor(){return this.anchor}getEnd(){return this.end}hasAnchor(){return this.anchor!=null}start(e,t){(!t||!this.anchor)&&(this.anchor={...e}),this.end={...e},this.invalidate()}ensureAnchor(e){return this.anchor?!0:e.colIdx<0?!1:(this.anchor={...e},this.invalidate(),!0)}setEnd(e){this.end={...e},this.invalidate()}clear(){this.anchor=null,this.end=null,this.invalidate()}invalidate(){this.cache=!1,this.cacheRowCount=-1,this.cacheColCount=-1}normalize(e,t){return this.cache!==!1&&this.cacheRowCount===e&&this.cacheColCount===t?this.cache:(this.cacheRowCount=e,this.cacheColCount=t,!this.anchor||!this.end||e<=0||t<=0?(this.cache=null,null):(this.cache={r1:Math.max(0,Math.min(this.anchor.row,this.end.row,e-1)),r2:Math.max(0,Math.min(Math.max(this.anchor.row,this.end.row),e-1)),c1:Math.max(0,Math.min(this.anchor.colIdx,this.end.colIdx,t-1)),c2:Math.max(0,Math.min(Math.max(this.anchor.colIdx,this.end.colIdx),t-1))},this.cache))}};var Qe=class{constructor(e,t){this.core=e;this.getPositions=t;this.state=null;this.onMove=e=>{let t=this.state;if(!t)return;if(!t.active){if(Math.abs(e.clientY-t.startY)<5)return;t.active=!0,this.core.skeleton.root.classList.add("mach-root--row-dragging")}let o=this.core.skeleton.rowContainers.center,r=e.clientY-o.getBoundingClientRect().top,n=this.core.rowModel.getDisplayedRowCount(),i=this.getPositions(),a=n,l=i[n]??0;for(let d=0;d<n;d++){let c=this.core.rowModel.getDisplayedRow(d);if(!c||c.isDetail||c.isGroup)continue;let u=i[d],h=i[d+1];if(r<u+(h-u)/2){a=d,l=u;break}}t.targetIndex=a,t.indicator.style.top=`${l}px`};this.onUp=()=>{let e=this.takeState();if(!e||!e.active||e.targetIndex<0)return;let t=e.node.rowIndex,o=Math.max(0,Math.min(e.targetIndex,this.core.rowModel.getDisplayedRowCount()));t===o||t===o-1||(this.core.emit("rowDragEnd",{rowNode:e.node,fromIndex:t,toIndex:o}),this.core.options.applyRowDrag&&!this.core.rowModel.isTree&&this.core.rowModel.reorderRowsByDisplayed(t,o>t?o-1:o))}}start(e,t){this.destroy();let o=g("div","mach-row-drop-indicator");this.core.skeleton.rowContainers.center.appendChild(o),this.state={node:t,startY:e.clientY,indicator:o,targetIndex:-1,active:!1},window.addEventListener("pointermove",this.onMove),window.addEventListener("pointerup",this.onUp),window.addEventListener("pointercancel",this.onUp)}takeState(){let e=this.state;return this.state=null,this.detachListeners(),e?.indicator.remove(),e}detachListeners(){window.removeEventListener("pointermove",this.onMove),window.removeEventListener("pointerup",this.onUp),window.removeEventListener("pointercancel",this.onUp),this.core.skeleton.root.classList.remove("mach-root--row-dragging")}destroy(){this.takeState()}};var I=["left","center","right"];function Tt(s,e,t){let o=0,r=t;for(;o<r;){let n=o+r>>1;s[n+1]<=e?o=n+1:r=n}return o}var Je=class{constructor(e){this.core=e;this.pool=[];this.poolSize=0;this.first=0;this.lastExcl=-1;this.rafId=0;this.hoverIndex=-1;this.positions=new Float64Array(1);this.rangeSelection=new Ze;this.rangeDragging=!1;this.colFirst=0;this.colLastExcl=Number.MAX_SAFE_INTEGER;this.focusedCell=null;this.onScroll=()=>{this.rafId||(this.rafId=requestAnimationFrame(()=>{this.rafId=0,this.syncScroll()}))};this.positionsBuf=new Float64Array(new ArrayBuffer(512));this.lastMinRowHeight=0;this.rowHeightCache=new WeakMap;this.pendingFlash=[];this.measureCanvas=null;this.fillHandleEl=null;this.fillDrag=null;this.fillFromPointer=!1;this.fillDragIndicator=null;this.onFillMove=e=>{let t=this.fillDrag;if(!t)return;let o=e;if(typeof o.clientX!="number")return;if(!t.active){let i=Math.abs(o.clientX-t.startX),a=Math.abs(o.clientY-t.startY);if(i<4&&a<4)return;t.active=!0,t.axis=i>=a?"h":"v",this.core.skeleton.root.classList.add("mach-root--filling")}if(t.axis==="v"){let i=this.fillTargetRow(o),a=this.rangeSelection.getEnd();if(a&&a.row!==i){let l=this.normalizedRange();this.rangeSelection.setEnd({row:i,colIdx:a.colIdx}),this.refreshRowRange(l,this.normalizedRange()),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()})}return}let r=Math.max(t.c2+1,this.fillTargetCol(o)),n=this.rangeSelection.getEnd();if(n&&n.colIdx!==r){let i=this.normalizedRange();this.rangeSelection.setEnd({row:n.row,colIdx:r}),this.refreshRowRange(i,this.normalizedRange()),this.updateFillHandle(),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()})}};this.onFillUp=e=>{let t=this.fillDrag;if(!t)return;let o=e,r=()=>{this.cancelFillDrag()};if(!t.active){r();return}if(t.axis==="h"){let i=typeof o.clientX=="number"?Math.max(t.c2+1,this.fillTargetCol(o)):t.c2+1;if(r(),i>t.c2)this.fillHorizontal(t.r1,t.r2,t.c1,t.c2,i),this.updateFillHandle();else{let a=this.rangeSelection.getEnd();if(!a||a.colIdx===t.c2)return;let l=this.normalizedRange();this.rangeSelection.setEnd({row:a.row,colIdx:t.c2}),this.refreshRowRange(l,this.normalizedRange())}return}let n=typeof o.clientY=="number"?this.fillTargetRow(o):t.r2;if(r(),n>t.r2)this.fillValues(t.r1,t.r2,t.c1,t.c2,n),this.updateFillHandle();else{let i=this.rangeSelection.getEnd();if(!i||i.row===t.r2)return;let a=this.normalizedRange();this.rangeSelection.setEnd({row:t.r2,colIdx:i.colIdx}),this.refreshRowRange(a,this.normalizedRange())}};this.onBodyClick=e=>{if(this.core.isDestroyed())return;let t=this.resolveEventTarget(e);if(!t)return;let{node:o,index:r,cellEl:n}=t;if(o.isGroup){if(this.focusGridRoot(),e.target.closest?.(".mach-row-checkbox")){this.core.selectionService.setGroupSelected(o,!this.core.selectionService.getGroupSelectionState(o).all);return}let p=this.core.columnModel.getGroupLabelColumn();(!p||!n||n.dataset.colId===p.id)&&this.core.rowModel.toggleGroup(o.id);return}let i=e.target;if(this.handleTreeToggleClick(i,o,n))return;let a=n?.dataset.colId??"",l=a?this.core.columnModel.getColumn(a):void 0;if(l?.isDetailToggle&&!o.isDetail){this.focusGridRoot(),this.core.toggleDetail(o.id);return}if(o.isDetail)return;if(i.closest?.(".mach-row-checkbox")){this.focusGridRoot(),this.core.options.suppressCellFocus||this.setFocusedCell(r,this.firstCheckboxColId()),this.core.selectionService.onRowClick(o,e,!0);return}if(!n||!l)return;this.focusGridRoot(),this.core.options.suppressCellFocus||this.setFocusedCell(r,a),this.core.selectionService.onRowClick(o,e,!1);let d=this.core.getCellValue(o,l),c=this.core.emit("cellClicked",{event:e,rowNode:o,rowIndex:r,column:l,colDef:l.colDef,value:d});l.colDef.onCellClick?.(c),this.core.emit("rowClicked",{event:e,rowNode:o,rowIndex:r}),(this.core.options.singleClickEdit||l.colDef.singleClickEdit===!0)&&!o.isGroup&&this.core.editingService.isEditable(o,l)&&this.core.editingService.start(r,l)};this.onBodyDblClick=e=>{if(this.core.isDestroyed())return;let t=this.resolveEventTarget(e);if(!t)return;let{node:o,index:r,cellEl:n}=t;if(o.isDetail||o.isGroup||!n)return;let i=n.dataset.colId??"",a=this.core.columnModel.getColumn(i);if(!a)return;let l=this.core.getCellValue(o,a),d=this.core.emit("cellDoubleClicked",{event:e,rowNode:o,rowIndex:r,column:a,colDef:a.colDef,value:l});a.colDef.onCellDoubleClick?.(d),this.core.emit("rowDoubleClicked",{event:e,rowNode:o,rowIndex:r}),this.core.editingService.isEditable(o,a)&&this.core.editingService.start(r,a)};this.onContextMenu=e=>{if(this.core.isDestroyed())return;let t=this.resolveEventTarget(e);if(!t||t.node.isDetail||t.node.isGroup||!t.cellEl)return;let{node:o,index:r,cellEl:n}=t,i=n.dataset.colId??"",a=this.core.columnModel.getColumn(i);if(a&&(this.core.emit("cellContextMenu",{event:e,rowNode:o,rowIndex:r,column:a,colDef:a.colDef,value:this.core.getCellValue(o,a)}),this.core.options.contextMenu)){if(e.preventDefault(),this.core.options.enableRangeSelection&&!this.normalizedRange()){let l=this.core.columnModel.getFlatIndex(i);l>=0&&this.startRange(r,l,!1)}this.core.contextMenuService.open(e.clientX,e.clientY,{rowIndex:r,colId:i})}};this.onMouseDown=e=>{if(this.core.editingService.isCellEditing()&&this.core.editingService.stop(!1),this.core.options.enableRangeSelection&&e.button===0){let t=this.resolveEventTarget(e);if(t&&!t.node.isDetail&&!t.node.isGroup&&t.cellEl&&!e.target.closest?.(".mach-row-checkbox")){let o=this.core.columnModel.getFlatIndex(t.cellEl.dataset.colId??"");o>=0&&(this.startRange(t.index,o,e.shiftKey),this.rangeDragging=!0,!e.shiftKey&&!this.core.options.suppressCellFocus&&this.setFocusedCell(t.index,t.cellEl.dataset.colId??""))}}};this.onWindowMouseUp=()=>{this.rangeDragging=!1};this.onMouseOver=e=>{if(this.core.isDestroyed())return;let t=this.resolveEventTarget(e);if(this.rangeDragging&&t&&!t.node.isDetail&&!t.node.isGroup&&t.cellEl){let o=this.core.columnModel.getFlatIndex(t.cellEl.dataset.colId??""),r=this.rangeSelection.getEnd();o>=0&&r&&(r.row!==t.index||r.colIdx!==o)&&this.startRange(t.index,o,!0)}this.core.options.suppressRowHoverHighlight||!t||t.node.isDetail||this.setHoverIndex(t.index)};this.onMouseLeave=()=>{this.setHoverIndex(-1)};this.onDragHandlePointerDown=e=>{if(this.core.isDestroyed()||e.button!==0||!e.target.closest(".mach-row-drag-handle"))return;let o=this.resolveEventTarget(e);!o||o.node.isDetail||o.node.isGroup||(this.rowDragController.start(e,o.node),e.preventDefault())};this.rowDragController=new Qe(e,()=>this.positions)}init(){this.core.skeleton.bodyViewports.center.addEventListener("scroll",this.onScroll,{passive:!0});let t=this.core.skeleton.bodyEl;t.addEventListener("click",this.onBodyClick),t.addEventListener("dblclick",this.onBodyDblClick),t.addEventListener("contextmenu",this.onContextMenu),t.addEventListener("mousedown",this.onMouseDown),t.addEventListener("mouseover",this.onMouseOver),t.addEventListener("mouseleave",this.onMouseLeave),t.addEventListener("pointerdown",this.onDragHandlePointerDown),window.addEventListener("mouseup",this.onWindowMouseUp)}destroy(){cancelAnimationFrame(this.rafId),this.core.skeleton.bodyViewports.center.removeEventListener("scroll",this.onScroll);let t=this.core.skeleton.bodyEl;t.removeEventListener("click",this.onBodyClick),t.removeEventListener("dblclick",this.onBodyDblClick),t.removeEventListener("contextmenu",this.onContextMenu),t.removeEventListener("mousedown",this.onMouseDown),t.removeEventListener("mouseover",this.onMouseOver),t.removeEventListener("mouseleave",this.onMouseLeave),t.removeEventListener("pointerdown",this.onDragHandlePointerDown),window.removeEventListener("mouseup",this.onWindowMouseUp),this.cancelFillDrag(),this.rowDragController.destroy();for(let o of this.pool){o.detailRow&&this.cleanupDetail(o.detailRow);for(let r of I)for(let n of o.cells[r]??[])o.index>=0&&this.core.editingService.releaseCell(o.index,n.dataset.colId??"",n),S(this.core,n)}this.fillHandleEl?.remove(),this.fillDragIndicator?.remove()}paneForColumn(e){return e.pinned==="left"?"left":e.pinned==="right"?"right":"center"}syncScroll(){if(this.core.isDestroyed())return;let e=this.core.skeleton,t=e.bodyViewports.center;e.headerRowContainers.center.style.transform=`translateX(${-t.scrollLeft}px)`,e.rowContainers.left.style.transform=`translateY(${-t.scrollTop}px)`,e.rowContainers.right.style.transform=`translateY(${-t.scrollTop}px)`,this.core.pinnedRowsRenderer.onScrollLeft(t.scrollLeft),this.core.tooltipService.hide(),this.updateRange(),this.core.rowModel.checkInfiniteScroll(this.lastExcl-1)}paneWidths(){let e={left:0,center:0,right:0};for(let t of I)e[t]=this.core.columnModel.getPaneColumns(t).reduce((o,r)=>o+r.currentWidth,0);return e}applyContainerSizes(){let e=this.core.skeleton,t=this.paneWidths(),o=e.bodyViewports.center,r=this.core.rowModel.getDisplayedRows(),n=this.core.rowModel.getDisplayTotalCount(),i=Math.min(n,r.length),a=this.core.options.rowHeight,l=this.core.options.detailRowHeight,d=this.core.options.getRowHeight,c=this.core.getApi();if(this.positionsBuf.length<i+1){let w=this.positionsBuf.length;for(;w<i+1;)w*=2;this.positionsBuf=new Float64Array(new ArrayBuffer(w*8))}let u=this.positionsBuf,h=this.core.options.masterDetail?[]:this.collectAutoHeightColumns(),p=0,m=a;for(let w=0;w<i;w++){u[w]=p;let C=w<r.length?r[w]:void 0,E;if(C?.isDetail)E=l;else if(C&&(d||h.length>0)){let R=this.rowHeightCache.get(C);if(R!==void 0)E=R;else{if(E=a,d)try{let D=d({data:C.data,node:C,api:c});E=Number.isFinite(D)?Math.max(1,D||a):a}catch(D){this.core.reportError(D,"getRowHeight",{rowId:C.id})}if(h.length>0){let D=this.measureAutoHeight(C,h);D>E&&(E=D)}this.rowHeightCache.set(C,E)}E<m&&(m=E)}else E=a;p+=E}u[i]=p;let f=p+Math.max(0,n-i)*a;this.lastMinRowHeight=m,this.positions=u.subarray(0,i+1);let y=Math.max(0,o.clientWidth-t.left-t.right),v=Math.max(t.center,y);for(let w of I){let C=e.rowContainers[w];C.style.height=`${f}px`,w==="center"&&(C.style.width=`${v}px`)}e.root.setAttribute("aria-rowcount",String(n+e.getHeaderRowCount()))}invalidateRowHeight(e){this.rowHeightCache.delete(e)}invalidateAllRowHeights(){this.rowHeightCache=new WeakMap}collectAutoHeightColumns(){return this.core.columnModel.getOrderedVisible().filter(e=>e.colDef.autoHeight===!0)}get hasAnyAutoHeight(){return this.core.columnModel.getOrderedVisible().some(e=>e.colDef.autoHeight===!0)}measureAutoHeight(e,t){this.measureCanvas??(this.measureCanvas=document.createElement("canvas"));let o=this.measureCanvas.getContext("2d");if(!o)return 0;let r=window.getComputedStyle(this.core.skeleton.root),n=parseFloat(r.fontSize)||13;o.font=`${r.fontStyle} ${r.fontWeight} ${n}px ${r.fontFamily}`;let i=parseFloat(r.getPropertyValue("--mach-cell-padding"))||9,a=Math.round(n*1.45),l=1;for(let d of t){let c=N(this.core,e,d);if(!c)continue;let u=Math.max(10,d.currentWidth-i*2-2),h=1,p=0;for(let m of c){let f=o.measureText(m).width;if(p>0&&p+f>u?(h++,p=f):p+=f,h>=12)break}h>l&&(l=h)}return l*a+Math.round(i*.9)}queueFlash(e,t){if(this.core.options.flashCells)for(let o of e)for(let r of t)this.pendingFlash.push([o,r])}flushFlash(){if(this.pendingFlash.length===0)return;let e=this.pendingFlash;this.pendingFlash=[];for(let[t,o]of e){let r=this.getCellElement(t,o);if(!r)continue;r.classList.remove("mach-cell--flash"),r.offsetWidth,r.classList.add("mach-cell--flash");let n=se(r),i=n.flashTimer;i&&clearTimeout(i),n.flashTimer=setTimeout(()=>{r.classList.remove("mach-cell--flash"),n.flashTimer=void 0},800)}}relayout(){this.applyContainerSizes();let e=this.core.skeleton.bodyViewports.center,o=this.core.options.rowHeight;this.core.options.masterDetail&&(o=Math.min(o,this.core.options.detailRowHeight)),this.lastMinRowHeight>0&&(o=Math.min(o,this.lastMinRowHeight));let n=Math.ceil(e.clientHeight/Math.max(1,o))+this.core.options.rowBuffer*2+1;if(this.computeColWindow())for(let a of this.pool)this.reconcilePaneCells(a,"center");n>this.poolSize&&this.growPool(n),this.applyCellLayout(),this.updateRange(!0),this.refreshOverlays()}growPool(e){for(;this.poolSize<e;){let t={index:-1,nodeId:"",kind:"master",rows:{},cells:{},cellColIds:{}},o=this.core.skeleton;for(let r of I){if(this.core.columnModel.getPaneColumns(r).length===0)continue;let i=g("div","mach-row");i.style.height=`${this.core.options.rowHeight}px`,i.setAttribute("role","row"),i.style.display="none",o.rowContainers[r].appendChild(i),t.rows[r]=i,t.cells[r]=[],t.cellColIds[r]=[],this.reconcilePaneCells(t,r)}if(this.core.options.masterDetail){let r=g("div","mach-row mach-detail-row");r.style.height=`${this.core.options.detailRowHeight}px`,r.setAttribute("role","row"),r.style.display="none",o.rowContainers.center.appendChild(r),t.detailRow=r}this.pool.push(t),this.poolSize++}}activePaneColumns(e){let t=this.core.columnModel.getPaneColumns(e);return e!=="center"||t.length<=20||this.core.columnModel.hasColSpan()?t:t.slice(this.colFirst,this.colLastExcl)}createCell(e){let t=g("div","mach-cell");if(t.dataset.colId=e.id,t.setAttribute("role","gridcell"),e.hasCheckbox){let o=document.createElement("input");o.type=this.core.options.rowSelection==="single"?"radio":"checkbox",o.className="mach-row-checkbox",o.type==="radio"&&(o.name=`mach-radio-${this.core.gridId}`),o.setAttribute("aria-label","select row"),t.appendChild(o),t.classList.add("mach-cell--selection")}return t}reconcilePaneCells(e,t){let o=e.rows[t];if(!o)return;let r=this.activePaneColumns(t),n=e.cells[t]??[],i=e.cellColIds[t]??[];if(i.length===r.length&&i.every((c,u)=>c===r[u].id))return;let a=new Map;i.forEach((c,u)=>a.set(c,n[u]));let l=[],d=[];for(let c of r){let u=a.get(c.id)??this.createCell(c);a.delete(c.id),o.appendChild(u),l.push(u),d.push(c.id)}for(let c of a.values())e.index>=0&&this.core.editingService.releaseCell(e.index,c.dataset.colId??"",c),S(this.core,c),c.remove();e.cells[t]=l,e.cellColIds[t]=d}rebuildPool(){this.treeColumnCache=void 0,this.invalidateRangeCache();for(let e of this.pool){e.detailRow&&this.cleanupDetail(e.detailRow);for(let t of I){for(let o of e.cells[t]??[])S(this.core,o);e.rows[t]?.remove()}e.detailRow?.remove()}this.pool=[],this.poolSize=0,this.first=0,this.lastExcl=-1,this.relayout()}applyCellLayout(){let e=this.core.options.masterDetail||this.core.options.getRowHeight!=null||this.hasAnyAutoHeight;for(let t of I){let o=this.core.columnModel.getPaneColumns(t),r=this.activePaneColumns(t),n=0,i=[];if(t==="center"&&r.length>0){let a=o.indexOf(r[0]);for(let l=0;l<a;l++)n+=o[l].currentWidth}for(let a of r)i.push(n),n+=a.currentWidth;for(let a of this.pool){let l=a.cells[t],d=a.rows[t];if(!(!l||!d)){e||(d.style.height=`${this.core.options.rowHeight}px`);for(let c=0;c<r.length&&c<l.length;c++)l[c].style.width=`${r[c].currentWidth}px`,l[c].style.left=`${i[c]}px`,l[c].setAttribute("aria-colindex",String(this.core.columnModel.getFlatIndex(r[c].id)+1))}}if(this.core.options.masterDetail)for(let a of this.pool)a.detailRow?.style.setProperty("--mach-detail-h",`${this.core.options.detailRowHeight}px`)}}computeColWindow(){let e=this.core.skeleton.bodyViewports.center,t=this.core.columnModel.getPaneColumns("center"),o=this.colFirst,r=this.colLastExcl,n=0,i=t.length;if(t.length>20){let a=e.clientWidth,l=0;for(let d of t)l+=d.currentWidth;if(a>0&&l>a){let d=e.scrollLeft,c=0;for(let h=0;h<t.length&&c+t[h].currentWidth<=d;h++){n=h+1;c+=t[h].currentWidth}let u=c;for(let h=n;h<t.length;h++)if(u+=t[h].currentWidth,u>=d+a){i=h+1;break}i>t.length&&(i=t.length),n=Math.max(0,n-2),i=Math.min(t.length,i+2)}}return this.colFirst=n,this.colLastExcl=i,n!==o||i!==r}updateRange(e=!1){let t=this.core.skeleton.bodyViewports.center,o=this.core.rowModel.getDisplayedRowCount(),r=this.core.options.rowBuffer,n=this.computeColWindow();if(n){for(let h of this.pool)this.reconcilePaneCells(h,"center");this.applyCellLayout()}if(o===0){for(let h of this.pool)this.hideSlot(h);this.first=0,this.lastExcl=0;return}let i=t.scrollTop,a=i+t.clientHeight,l=Tt(this.positions,i,o),d=Tt(this.positions,a,o)+1;d>o&&(d=o);let c=T(l-r,0,o-1),u=T(d+r,1,o);if(!(!e&&c===this.first&&u===this.lastExcl)){this.first=c,this.lastExcl=u;for(let h of this.pool)h.index!==-1&&(h.index<c||h.index>=u)&&this.hideSlot(h);for(let h=c;h<u;h++){let p=this.core.rowModel.getDisplayedRow(h),m=this.pool[h%this.poolSize];if(!(!m||!p)){if(!e&&m.index===h&&m.nodeId===p.id){n&&m.kind==="master"&&this.renderPaneCells(m,p,"center");continue}this.assignSlot(m,h)}}}}hideSlot(e){this.releaseSlotEditors(e),this.focusedCell?.rowIndex===e.index&&this.core.skeleton.root.removeAttribute("aria-activedescendant"),e.index=-1,e.nodeId="",e.kind="master";for(let t of I){let o=e.rows[t];o&&(o.style.display="none")}e.detailRow&&(this.cleanupDetail(e.detailRow),e.detailRow.style.display="none")}assignSlot(e,t){e.index>=0&&e.index!==t&&this.releaseSlotEditors(e);let o=this.core.rowModel.getDisplayedRow(t);if(!o){this.hideSlot(e);return}e.index=t,e.nodeId=o.id;let r=this.positions[t],n=this.positions[t+1]-this.positions[t];if(o.isDetail){e.kind="detail";for(let p of I){let m=e.rows[p];m&&(m.style.display="none")}let h=e.detailRow;h&&(h.style.display="",h.style.transform=`translateY(${r}px)`,h.style.height=`${n}px`,h.dataset.index=String(t),h.setAttribute("aria-rowindex",String(t+this.core.skeleton.getHeaderRowCount()+1)),this.renderDetailContent(h,o));return}e.kind="master",e.detailRow&&(e.detailRow.style.display="none");let i=this.core.rowModel.isTree,a=o.isGroup===!0,l=i&&this.core.rowModel.hasChildren(o.id),d=a||l||this.core.options.masterDetail&&this.core.rowModel.isRowExpandable(o),c=a?this.core.rowModel.isGroupExpanded(o.id):this.core.rowModel.isRowExpanded(o.id),u=a?(o.groupLevel??0)+1:i?this.core.rowModel.getTreeDepth(o)+1:null;for(let h of I){let p=e.rows[h];p&&(p.style.display="",p.style.transform=`translateY(${r}px)`,p.style.height=`${n}px`,p.dataset.index=String(t),p.dataset.id=o.id,p.setAttribute("aria-rowindex",String(t+this.core.skeleton.getHeaderRowCount()+1)),p.classList.toggle("mach-row--selected",o.selected),p.classList.toggle("mach-row--hover",this.hoverIndex===t&&!this.core.options.suppressRowHoverHighlight),p.classList.toggle("mach-row--odd",t%2===1),p.setAttribute("aria-selected",o.selected?"true":"false"),d?p.setAttribute("aria-expanded",c?"true":"false"):p.removeAttribute("aria-expanded"),u!=null?p.setAttribute("aria-level",String(u)):p.removeAttribute("aria-level"),this.renderPaneCells(e,o,h))}this.focusedCell&&this.focusedCell.rowIndex===t&&this.applyFocusClass()}renderPaneCells(e,t,o){let r=this.activePaneColumns(o),n=e.cells[o];if(!n)return;let i=e.index,a=o==="center"&&this.core.columnModel.hasColSpan(),l=0;e.rows[o]?.classList.toggle("mach-row--editing",this.core.editingService.isRowEditing(i));for(let d=0;d<r.length;d++){let c=r[d],u=n[d];if(a&&l>0){l--,S(this.core,u),u.setAttribute("aria-hidden","true"),u.style.display!=="none"&&(u.style.display="none");continue}if(u.style.display==="none"&&(u.style.display=""),u.removeAttribute("aria-hidden"),a){let h=this.resolveColSpan(t,c,i,r.length-d);h>1?(l=h-1,this.applySpanWidth(u,r,d,h)):(u.removeAttribute("aria-colspan"),u.style.width!==`${c.currentWidth}px`&&(u.style.width=`${c.currentWidth}px`))}else u.removeAttribute("aria-colspan");this.core.editingService.renderEditor(i,t,c,u)||(this.renderCell(u,t,c),this.applyRangeClass(u,i,c))}}resolveColSpan(e,t,o,r){let n=t.colDef.colSpan;if(!n)return 1;try{let i=n({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:o});return Math.max(1,Math.min(Math.round(i)||1,r))}catch(i){return this.core.reportError(i,"colSpan",{colId:t.id,rowId:e.id}),1}}applySpanWidth(e,t,o,r){let n=0;for(let i=o;i<o+r&&i<t.length;i++)n+=t[i].currentWidth;e.style.width=`${n}px`,e.setAttribute("aria-colspan",String(r))}renderDetailContent(e,t){this.cleanupDetail(e);let o=t.masterId!=null?this.core.rowModel.getNodeById(t.masterId):t,r=g("div","mach-detail");e.appendChild(r);let n=this.core.options.detailRowRenderer;if(n){let i={data:t.data,node:o??t,api:this.core.getApi()},a;try{a=n(i)}catch(l){this.core.reportError(l,"detailRowRenderer",{rowId:t.id}),a=null}typeof a=="string"?r.textContent=a:a instanceof HTMLElement?r.appendChild(a):a&&typeof a=="object"&&a.el instanceof HTMLElement&&(r.appendChild(a.el),Zt(e,a.destroy))}}cleanupDetail(e){let t=Qt(e);if(t)try{t()}catch(o){this.core.reportError(o,"detailRowRenderer.destroy")}e.textContent=""}renderCell(e,t,o){if(S(this.core,e),e.setAttribute("aria-readonly",this.core.editingService.isEditable(t,o)?"false":"true"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-level"),t.isGroup){this.renderGroupCell(e,t,o);return}if(o.isDetailToggle){let r=this.core.rowModel.isRowExpanded(t.id),n=g("span",`mach-detail-toggle${r?" mach-detail-toggle--open":""}`);n.textContent="\u25B6",e.replaceChildren(n),e.classList.add("mach-cell--detail-toggle"),this.resetSpanStyle(e);return}if(o.hasCheckbox){let r=e.querySelector(".mach-row-checkbox");r&&(r.checked=t.selected,r.indeterminate=this.core.selectionService.isIndeterminate(t.id),r.disabled=!this.core.selectionService.isSelectable(t)),e.className!=="mach-cell mach-cell--selection"&&(e.className="mach-cell mach-cell--selection"),this.resetSpanStyle(e);return}if(o.colDef.rowDrag){let r=g("span","mach-row-drag-handle");r.textContent="\u283F",e.replaceChildren(r),e.className!=="mach-cell mach-cell--drag"&&(e.className="mach-cell mach-cell--drag"),this.resetSpanStyle(e);return}if(j(o.colDef,"index")&&!t.isDetail){e.textContent=String(this.core.rowModel.getRowSeq(t)+this.core.options.indexOffset),e.className!=="mach-cell mach-cell--index"&&(e.className="mach-cell mach-cell--index"),this.applyCellSpanStyle(e,t,o);return}if(this.core.rowModel.isTree&&this.getTreeColumn()?.id===o.id){this.renderTreeCell(e,t,o);return}Oe(this.core,e,t,o),le(this.core,e,t,o),Ne(this.core,e,t,o),this.applyCellSpanStyle(e,t,o),this.appendEditableIndicator(e,t,o)}appendEditableIndicator(e,t,o){if(this.core.options.editType!=="cell"||this.core.options.editableIndicator==="none"||!this.core.editingService.isEditable(t,o))return;let r=document.createElement("button");r.type="button",r.className=`mach-cell-edit-trigger mach-cell-edit-trigger--${this.core.options.editableIndicator}`,r.tabIndex=-1,r.title="Edit cell",r.setAttribute("aria-label","Edit cell"),r.innerHTML='<svg viewBox="0 0 16 16" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="m10.8 2.7 2.5 2.5L5.5 13H3v-2.5z"/><path d="m9.5 4 2.5 2.5"/></svg>',r.addEventListener("mousedown",n=>{n.preventDefault(),n.stopPropagation()}),r.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),this.setFocusedCell(t.rowIndex,o.id),this.core.editingService.start(t.rowIndex,o)}),e.appendChild(r)}releaseSlotEditors(e){if(!(e.index<0))for(let t of I)for(let o of e.cells[t]??[])this.core.editingService.releaseCell(e.index,o.dataset.colId??"",o)}getTreeColumn(){return this.treeColumnCache!==void 0?this.treeColumnCache:(this.treeColumnCache=this.core.columnModel.getOrderedVisible().find(e=>!e.hasCheckbox&&!e.isDetailToggle&&!e.colDef.rowDrag&&!j(e.colDef,"index"))??null,this.treeColumnCache)}renderTreeCell(e,t,o){let r=this.core.rowModel.isRowExpandable(t),n=this.getNodeDepth(t),i=g("span","mach-tree-indent");i.style.width=`${n*16}px`;let a=g("span","mach-tree-cell");if(a.appendChild(i),r){let d=this.core.rowModel.isRowExpanded(t.id);e.setAttribute("aria-expanded",d?"true":"false"),e.setAttribute("aria-level",String(n+1));let c=t.treeLoading?" mach-detail-toggle--loading":t.treeLoadError?" mach-detail-toggle--error":"",u=g("span",`mach-detail-toggle${d?" mach-detail-toggle--open":""}${c}`);t.treeLoadError&&(u.title="Retry loading children"),u.textContent="\u25B6",a.appendChild(u)}else{let d=g("span","mach-tree-toggle-spacer");a.appendChild(d)}let l=g("span","mach-tree-text");l.textContent=ae(this.core,t,o,this.core.getCellValue(t,o)),a.appendChild(l),e.replaceChildren(a),le(this.core,e,t,o)}getNodeDepth(e){return this.core.rowModel.getTreeDepth(e)}resetSpanStyle(e){e.style.height!==""&&(e.style.height=""),e.style.zIndex!==""&&(e.style.zIndex=""),e.style.display==="none"&&(e.style.display=""),e.removeAttribute("aria-rowspan")}applyCellSpanStyle(e,t,o){let r=this.core.rowModel.getSpanInfo(o.id);if(!r||t.isDetail){this.resetSpanStyle(e);return}let n=this.core.rowModel.getRowSeq(t)-1;if(n<0||n>=r.length){this.resetSpanStyle(e);return}let i=r[n];if(i===-1){e.style.display="none",e.setAttribute("aria-hidden","true");return}if(e.style.display==="none"&&(e.style.display=""),e.removeAttribute("aria-hidden"),i>1){let a=Math.min(n+i,this.positions.length-1),l=this.positions[a]-this.positions[n];e.style.height=`${l>0?l:i*this.core.options.rowHeight}px`,e.style.zIndex="1",e.setAttribute("aria-rowspan",String(i))}else this.resetSpanStyle(e)}renderGroupCell(e,t,o){let r="mach-cell";if(o.hasCheckbox){let i=e.querySelector(".mach-row-checkbox");if(i){let a=this.core.selectionService.getGroupSelectionState(t);i.checked=a.all,i.indeterminate=a.some&&!a.all}e.className!==`${r} mach-cell--selection`&&(e.className=`${r} mach-cell--selection`);return}if(o.isDetailToggle){e.textContent="",e.className!==r&&(e.className=r);return}let n=this.core.columnModel.getGroupLabelColumn();if(n&&o.id===n.id){e.setAttribute("aria-expanded",this.core.rowModel.isGroupExpanded(t.id)?"true":"false"),e.setAttribute("aria-level",String((t.groupLevel??0)+1));let i=g("span","mach-group-label");i.style.paddingLeft=`${(t.groupLevel??0)*16}px`;let a=g("span",`mach-detail-toggle${this.core.rowModel.isGroupExpanded(t.id)?" mach-detail-toggle--open":""}`);a.textContent="\u25B6";let l=g("span","mach-group-text"),d=this.core.columnModel.getRowGroupColumns()[t.groupLevel??0],c=d?.colDef.headerName?`${d.colDef.headerName}: `:"";l.textContent=`${c}${t.groupKey??""}`;let u=g("span","mach-group-count");u.textContent=`(${t.leafNodes?.length??0})`,i.append(a,l,u),e.replaceChildren(i),e.className!==`${r} mach-cell--group`&&(e.className=`${r} mach-cell--group`);return}if(o.colDef.aggFunc&&t.aggValues&&Object.prototype.hasOwnProperty.call(t.aggValues,o.id)){let i=t.aggValues[o.id],a=o.colDef.valueFormatter!=null?ae(this.core,t,o,i):Ae(i);e.textContent=a,e.className!==`${r} mach-cell--num`&&(e.className=`${r} mach-cell--num`);return}e.textContent="",e.className!==r&&(e.className=r)}refreshRows(e){if(this.core.isDestroyed())return;let t=new Set;for(let o of e){if(o<0||t.has(o))continue;t.add(o);let r=this.pool[o%this.poolSize];if(!r||r.index!==o)continue;let n=this.core.rowModel.getDisplayedRow(o);if(n){if(r.kind==="detail"){r.detailRow&&this.renderDetailContent(r.detailRow,n);continue}for(let i of I)r.cells[i]&&this.renderPaneCells(r,n,i)}}this.applyFocusClass(),this.flushFlash()}refreshAllCells(){if(!this.core.isDestroyed()){for(let e of this.pool){if(e.index<0)continue;let t=this.core.rowModel.getDisplayedRow(e.index);if(t){if(e.kind==="detail"){e.detailRow&&this.renderDetailContent(e.detailRow,t);continue}for(let o of I)e.cells[o]&&this.renderPaneCells(e,t,o)}}this.applyFocusClass(),this.flushFlash()}}onDataChanged(){this.core.isDestroyed()||(this.focusedCell&&this.focusedCell.rowIndex>=this.core.rowModel.getDisplayedRowCount()&&this.setFocusedCell(null,null),this.invalidateRangeCache(),this.applyContainerSizes(),this.updateRange(!0),this.updateFillHandle(),this.refreshOverlays(),this.core.summaryRenderer.refresh())}refreshOverlays(){let e=this.core.options;if(e.loading){this.core.skeleton.showOverlay("loading",e.overlayLoadingTemplate,e.allowUnsafeOverlayHtml);return}if(this.core.rowModel.getDisplayedRowCount()===0&&!e.suppressNoRowsOverlay){let t=e.overlayNoRowsTemplate||this.core.buildDefaultEmptyState();this.core.skeleton.showOverlay("noRows",t,e.allowUnsafeOverlayHtml);return}this.core.skeleton.hideOverlay()}getCellElement(e,t){let o=this.core.columnModel.getColumn(t);if(!o)return null;let r=this.paneForColumn(o),n=this.pool[e%Math.max(1,this.poolSize)]?.cellColIds[r]?.indexOf(o.id)??-1;if(n<0)return null;let i=this.pool[e%this.poolSize];return!i||i.index!==e||i.kind!=="master"?null:i.cells[r]?.[n]??null}invalidateRangeCache(){this.rangeSelection.invalidate()}normalizedRange(){let e=this.core.rowModel.getDisplayedRowCount(),t=this.core.columnModel.getOrderedVisible().length;return this.rangeSelection.normalize(e,t)}getNormalizedRangeOrFocus(){let e=this.normalizedRange();if(e)return e;let t=this.focusedCell;if(t){let o=this.core.columnModel.getFlatIndex(t.colId);if(o>=0)return{r1:t.rowIndex,c1:o,r2:t.rowIndex,c2:o}}return null}getRangeSelection(){let e=this.normalizedRange();if(!e)return null;let t=this.core.columnModel.getOrderedVisible();return{row1:e.r1,row2:e.r2,colId1:t[e.c1]?.id??"",colId2:t[e.c2]?.id??""}}getPasteStart(){let e=this.rangeSelection.getAnchor();if(e)return{row:e.row,colIdx:e.colIdx};let t=this.getNormalizedRangeOrFocus();return t?{row:t.r1,colIdx:t.c1}:null}clearRangeSelection(){let e=this.normalizedRange();this.rangeSelection.clear(),e&&(this.refreshRowRange(e,null),this.updateFillHandle(),this.core.emit("rangeSelectionChanged",{range:null}))}refreshRowRange(e,t){let o=[],r=n=>{if(n)for(let i=n.r1;i<=n.r2;i++)o.push(i)};r(e),r(t),o.length>0&&this.refreshRows(o)}startRange(e,t,o){let r=this.normalizedRange();this.rangeSelection.start({row:e,colIdx:t},o);let n=this.normalizedRange();this.refreshRowRange(r,n),this.updateFillHandle(),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()})}moveRangeEnd(e,t){if(!this.rangeSelection.hasAnchor()){let d=this.focusedCell;if(!d)return;let c=this.core.columnModel.getFlatIndex(d.colId);if(!this.rangeSelection.ensureAnchor({row:d.rowIndex,colIdx:c}))return}let o=this.core.rowModel.getDisplayedRowCount(),r=this.core.columnModel.getOrderedVisible().length,n=this.normalizedRange();this.rangeSelection.setEnd({row:Math.max(0,Math.min(e,o-1)),colIdx:Math.max(0,Math.min(t,r-1))});let i=this.normalizedRange();this.refreshRowRange(n,i),this.updateFillHandle();let a=this.core.columnModel.getOrderedVisible(),l=this.rangeSelection.getEnd();l&&l.colIdx<a.length&&this.setFocusedCell(l.row,a[l.colIdx].id),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()})}applyRangeClass(e,t,o){let r=this.normalizedRange();if(!r){e.classList.contains("mach-cell--range")&&e.classList.remove("mach-cell--range","mach-cell--range-top","mach-cell--range-bottom","mach-cell--range-left","mach-cell--range-right");return}let n=this.core.columnModel.getFlatIndex(o.id);if(n<0)return;let i=t>=r.r1&&t<=r.r2&&n>=r.c1&&n<=r.c2;e.classList.toggle("mach-cell--range",i),i?(e.classList.toggle("mach-cell--range-top",t===r.r1),e.classList.toggle("mach-cell--range-bottom",t===r.r2),e.classList.toggle("mach-cell--range-left",n===r.c1),e.classList.toggle("mach-cell--range-right",n===r.c2)):e.classList.remove("mach-cell--range-top","mach-cell--range-bottom","mach-cell--range-left","mach-cell--range-right")}ensureFillHandle(){if(this.fillHandleEl)return this.fillHandleEl;let e=g("div","mach-fill-handle");return e.style.display="none",e.addEventListener("pointerdown",t=>{this.fillFromPointer=!0,this.onFillHandleDown(t)}),e.addEventListener("mousedown",t=>{this.fillFromPointer||this.onFillHandleDown(t)}),this.core.skeleton.rowContainers.center.appendChild(e),this.fillHandleEl=e,e}updateFillHandle(){let e=this.ensureFillHandle(),t=this.normalizedRange();if(!this.core.options.enableRangeSelection||!this.core.options.fillHandle||!t){e.style.display="none";return}let o=this.core.columnModel,r=o.getPaneColumns("left").length,n=o.getPaneColumns("center");if(t.c2<r||t.c2>=r+n.length){e.style.display="none";return}let i=t.c2-r,a=0;for(let d=0;d<=i&&d<n.length;d++)a+=n[d].currentWidth;let l=this.positions[Math.min(t.r2+1,this.positions.length-1)]??(t.r2+1)*this.core.options.rowHeight;e.style.display="",e.style.left=`${a-4}px`,e.style.top=`${l-4}px`}onFillHandleDown(e){if(this.core.isDestroyed()||e.button!==0)return;let t=this.normalizedRange();t&&(e.preventDefault(),e.stopPropagation(),this.fillDrag={r1:t.r1,r2:t.r2,c1:t.c1,c2:t.c2,startX:e.clientX,startY:e.clientY,axis:null,active:!1},window.addEventListener("pointermove",this.onFillMove),window.addEventListener("mousemove",this.onFillMove),window.addEventListener("pointerup",this.onFillUp),window.addEventListener("mouseup",this.onFillUp),window.addEventListener("pointercancel",this.onFillUp))}fillTargetRow(e){let o=this.core.skeleton.rowContainers.center.getBoundingClientRect(),r=e.clientY-o.top,n=this.core.rowModel.getDisplayedRowCount(),i=Tt(this.positions,r,n);return Math.max(this.fillDrag.r2,Math.min(i,n-1))}fillTargetCol(e){let o=this.core.skeleton.rowContainers.center.getBoundingClientRect(),r=e.clientX-o.left,n=this.core.columnModel,i=n.getPaneColumns("left").length,a=n.getPaneColumns("center"),l=0;for(let d=0;d<a.length;d++){if(r<l+a[d].currentWidth/2)return i+d;l+=a[d].currentWidth}return i+a.length-1}cancelFillDrag(){this.fillDrag=null,this.fillFromPointer=!1,window.removeEventListener("pointermove",this.onFillMove),window.removeEventListener("mousemove",this.onFillMove),window.removeEventListener("pointerup",this.onFillUp),window.removeEventListener("mouseup",this.onFillUp),window.removeEventListener("pointercancel",this.onFillUp),this.core.skeleton.root.classList.remove("mach-root--filling")}fillHorizontal(e,t,o,r,n){let i=this.core.columnModel.getOrderedVisible(),a=new Set;this.core.undoService.beginBatch();try{for(let l=e;l<=t;l++){let d=this.core.rowModel.getDisplayedRow(l);if(!d||d.isDetail||d.isGroup)continue;let c=[];for(let f=o;f<=r;f++){let y=i[f];c.push(y?this.core.getCellValue(d,y):void 0)}let u=r-o+1,h=u>1&&c.every(f=>typeof f=="number"&&!isNaN(f)),p=h?(c[u-1]-c[0])/(u-1):0,m=!h||c.every(f=>Number.isInteger(f));for(let f=r+1;f<=n;f++){let y=i[f];if(!y||y.hasCheckbox||y.isDetailToggle||y.colDef.rowDrag||!this.core.editingService.isEditable(d,y))continue;let v=f-o,w;if(u===1)w=c[0];else if(h){let E=v-(u-1);w=c[u-1]+p*E,w=m?Math.round(w):Math.round(w*1e6)/1e6}else w=c[v%u];let C=this.core.getCellValue(d,y);this.core.setCellValue(d,y,w,C)&&a.add(l)}}}finally{this.core.undoService.endBatch()}a.size>0&&(this.refreshRows([...a]),this.core.summaryRenderer.refresh(),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()}))}fillValues(e,t,o,r,n){let i=this.core.columnModel.getOrderedVisible(),a=new Set;this.core.undoService.beginBatch();try{this.fillValuesInner(e,t,o,r,n,i,a)}finally{this.core.undoService.endBatch()}a.size>0&&(this.refreshRows([...a]),this.core.summaryRenderer.refresh(),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()}))}fillValuesInner(e,t,o,r,n,i,a){for(let l=o;l<=r;l++){let d=i[l];if(!d||d.hasCheckbox||d.isDetailToggle||d.colDef.rowDrag)continue;let c=[],u=e<t;for(let f=e;f<=t;f++){let y=this.core.rowModel.getDisplayedRow(f);if(!y){u=!1,c.push(void 0);continue}let v=this.core.getCellValue(y,d);c.push(v),(typeof v!="number"||isNaN(v))&&(u=!1)}if(c[0]===void 0&&c.length===1)continue;let h=t-e+1,p=0,m=!0;if(u){p=(c[h-1]-c[0])/(h-1);for(let f of c)Number.isInteger(f)||(m=!1)}for(let f=t+1;f<=n;f++){let y=this.core.rowModel.getDisplayedRow(f);if(!y||y.isDetail||y.isGroup||!this.core.editingService.isEditable(y,d))continue;let v;if(h===1)v=c[0];else if(u){let C=f-t;v=c[h-1]+p*C,v=m?Math.round(v):Math.round(v*1e6)/1e6}else v=c[(f-e)%h];let w=this.core.getCellValue(y,d);this.core.setCellValue(y,d,v,w)&&a.add(f)}}}setFocusedCell(e,t){if(this.clearFocusClass(),e==null||t==null){this.focusedCell=null;return}this.focusedCell={rowIndex:e,colId:t},this.applyFocusClass(),this.ensureFocusedCellVisible()}applyFocusClass(){if(!this.focusedCell)return;let e=this.getCellElement(this.focusedCell.rowIndex,this.focusedCell.colId);if(e){let t=Math.max(0,this.core.columnModel.getFlatIndex(this.focusedCell.colId));e.id=`mach-grid-${this.core.gridId}-r${this.focusedCell.rowIndex}-c${t}`,e.classList.add("mach-cell--focus"),this.core.skeleton.root.setAttribute("aria-activedescendant",e.id)}}clearFocusClass(){if(this.focusedCell){let e=this.getCellElement(this.focusedCell.rowIndex,this.focusedCell.colId);e&&(e.classList.remove("mach-cell--focus"),e.removeAttribute("id"))}this.core.skeleton.root.removeAttribute("aria-activedescendant")}ensureFocusedCellVisible(){if(!this.focusedCell)return;this.scrollToIndex(this.focusedCell.rowIndex,"nearest");let e=this.core.columnModel.getColumn(this.focusedCell.colId);if(!e||e.pinned)return;let t=this.core.skeleton.bodyViewports.center,o=0;for(let i of this.core.columnModel.getPaneColumns("center")){if(i.id===e.id)break;o+=i.currentWidth}let r=t.scrollLeft,n=t.clientWidth;o<r?t.scrollLeft=o:o+e.currentWidth>r+n&&(t.scrollLeft=o+e.currentWidth-n)}scrollToIndex(e,t="top"){let o=this.core.skeleton.bodyViewports.center,r=this.core.rowModel.getDisplayedRowCount();if(r===0)return;let n=T(e,0,r-1),i=o.clientHeight,a=o.scrollTop,l=this.positions[n],d=this.positions[n+1],c=a;t==="top"?c=l:t==="bottom"?c=d-i:t==="middle"?c=l-(i-(d-l))/2:l<a?c=l:d>a+i&&(c=d-i);let u=Math.max(0,this.positions[r]-i);o.scrollTop=T(c,0,u)}setHoverIndex(e){if(this.hoverIndex===e)return;let t=this.hoverIndex;this.hoverIndex=e,this.toggleHover(t,!1),this.toggleHover(e,!0)}toggleHover(e,t){if(e<0)return;let o=this.pool[e%this.poolSize];if(!(!o||o.index!==e||o.kind!=="master"))for(let r of I)o.rows[r]?.classList.toggle("mach-row--hover",t)}focusGridRoot(){this.core.skeleton.root.focus({preventScroll:!0})}resolveEventTarget(e){let t=e.target,o=t.closest(".mach-row");if(!o)return null;let r=Number(o.dataset.index);if(Number.isNaN(r))return null;let n=this.core.rowModel.getDisplayedRow(r);if(!n)return null;let i=t.closest(".mach-cell");return{node:n,index:r,cellEl:i}}handleTreeToggleClick(e,t,o){if(!this.core.rowModel.isTree||!e.closest(".mach-detail-toggle"))return!1;let r=this.getTreeColumn();return!r||o?.dataset.colId!==r.id||!this.core.rowModel.isRowExpandable(t)?!1:(this.focusGridRoot(),t.treeLoadError?this.core.rowModel.loadTreeChildren(t.id,!0).catch(()=>{}):this.core.rowModel.toggleDetail(t.id),!0)}firstCheckboxColId(){for(let e of this.core.columnModel.getOrderedVisible())if(e.hasCheckbox)return e.id;return this.core.columnModel.getOrderedVisible()[0]?.id??""}};var et=class{constructor(e){this.core=e;this.footerEl=null;this.rows={left:void 0,center:void 0,right:void 0};this.cellsByPane={left:[],center:[],right:[]}}init(){this.footerEl=g("div","mach-footer"),this.footerEl.style.display="none",this.footerEl.setAttribute("role","row"),this.core.skeleton.root.appendChild(this.footerEl);for(let e of["left","center","right"]){let t=g("div",`mach-footer-row mach-footer-row--${e}`);t.style.height=`${this.core.options.rowHeight}px`,this.footerEl.appendChild(t),this.rows[e]=t}}setVisible(e){this.footerEl&&(this.footerEl.style.display=e?"":"none")}refresh(){if(!this.footerEl||this.core.isDestroyed())return;let e=this.core.options.showSummary;if(this.setVisible(e),!e)return;let t=this.core.options.summaryMethod,o=this.core.rowModel.getDisplayedRows().filter(n=>!n.isDetail&&!n.isGroup),r={...M,...this.core.options.locale};for(let n of["left","center","right"]){let i=this.core.columnModel.getPaneColumns(n),a=this.rows[n];this.cellsByPane[n].length!==i.length&&(a.textContent="",this.cellsByPane[n]=i.map(()=>{let d=g("div","mach-footer-cell");return d.setAttribute("role","cell"),a.appendChild(d),d}));let l=0;i.forEach((d,c)=>{let u=this.cellsByPane[n][c];if(u.style.left=`${l}px`,u.style.width=`${d.currentWidth}px`,l+=d.currentWidth,d.hasCheckbox||d.isDetailToggle||d.colDef.rowDrag){u.textContent="";return}if(t)try{u.textContent=t({colId:d.id,column:d,values:o.map(h=>this.core.getCellValue(h,d))})}catch(h){this.core.reportError(h,"summaryMethod",{colId:d.id}),u.textContent=""}else c===0&&n==="left"?u.textContent=k(r.totalRowsLabel,o.length):u.textContent=""})}}destroy(){this.footerEl?.remove(),this.footerEl=null}};var tt=class{constructor(e){this.core=e;this.barEl=null;this.totalEl=null;this.pageEl=null;this.sizeSelect=null;this.firstBtn=null;this.prevBtn=null;this.nextBtn=null;this.lastBtn=null;this.offs=[]}init(){this.barEl=g("div","mach-pagination"),this.barEl.style.display="none",this.barEl.setAttribute("role","navigation");let e=(t,o,r)=>{let n=g("button",`mach-pagination-btn ${t}`);return n.type="button",n.title=o,n.setAttribute("aria-label",o),n.textContent=r,n};this.totalEl=g("span","mach-pagination-total"),this.firstBtn=e("mach-pagination-first",this.t("pageFirst"),"\xAB"),this.prevBtn=e("mach-pagination-prev",this.t("pagePrev"),"\u2039"),this.pageEl=g("span","mach-pagination-page"),this.nextBtn=e("mach-pagination-next",this.t("pageNext"),"\u203A"),this.lastBtn=e("mach-pagination-last",this.t("pageLast"),"\xBB"),this.firstBtn.addEventListener("click",()=>this.core.rowModel.setPage(1)),this.prevBtn.addEventListener("click",()=>this.core.rowModel.setPage(this.core.rowModel.getCurrentPage()-1)),this.nextBtn.addEventListener("click",()=>this.core.rowModel.setPage(this.core.rowModel.getCurrentPage()+1)),this.lastBtn.addEventListener("click",()=>this.core.rowModel.setPage(this.core.rowModel.getPageCount())),this.barEl.append(this.totalEl,this.firstBtn,this.prevBtn,this.pageEl,this.nextBtn,this.lastBtn),this.core.options.paginationShowSizeSelector&&(this.sizeSelect=document.createElement("select"),this.sizeSelect.className="mach-pagination-size",this.sizeSelect.setAttribute("aria-label","page size"),this.buildSizeOptions(),this.sizeSelect.addEventListener("change",()=>{let t=Number(this.sizeSelect.value);Number.isNaN(t)||this.core.rowModel.setPageSize(t)}),this.barEl.appendChild(this.sizeSelect)),this.core.skeleton.root.appendChild(this.barEl),this.offs.push(this.core.eventBus.on("modelUpdated",()=>this.refresh()),this.core.eventBus.on("paginationChanged",()=>this.refresh())),this.refresh()}buildSizeOptions(){if(!this.sizeSelect)return;let e=this.core.options.paginationPageSizeOptions,t=this.core.options.paginationPageSize;e.includes(t)||(e.push(t),e.sort((o,r)=>o-r)),this.sizeSelect.textContent="";for(let o of e){let r=document.createElement("option");r.value=String(o),r.textContent=k(this.t("perPage"),o),o===t&&(r.selected=!0),this.sizeSelect.appendChild(r)}}t(e){return this.core.options.locale?.[e]??M[e]}rebuild(){this.barEl&&(this.sizeSelect&&this.core.options.paginationShowSizeSelector&&this.buildSizeOptions(),this.refresh())}refresh(){if(!this.barEl||this.core.isDestroyed())return;let e=this.core.rowModel,t=e.paginationActive,o=e.getTotalRowCount(),r=t&&o>0;if(this.barEl.style.display=r?"":"none",!r)return;let n=e.getCurrentPage(),i=e.getPageCount();if(this.totalEl&&this.core.options.paginationShowTotal){let a=k(this.t("paginationTotal"),o);this.totalEl.textContent!==a&&(this.totalEl.textContent=a)}if(this.pageEl){let a=He(this.t("paginationPage"),n,i);this.pageEl.textContent!==a&&(this.pageEl.textContent=a)}this.firstBtn&&(this.firstBtn.disabled=n<=1),this.prevBtn&&(this.prevBtn.disabled=n<=1),this.nextBtn&&(this.nextBtn.disabled=n>=i),this.lastBtn&&(this.lastBtn.disabled=n>=i),this.sizeSelect&&Number(this.sizeSelect.value)!==this.core.options.paginationPageSize&&(this.sizeSelect.value=String(this.core.options.paginationPageSize))}destroy(){for(let e of this.offs)e();this.offs=[],this.barEl?.remove(),this.barEl=null}};var _=["left","center","right"],ot=class{constructor(e){this.core=e;this.top=null;this.bottom=null}init(){this.top=this.createSide(this.core.skeleton.pinnedTopEl),this.bottom=this.createSide(this.core.skeleton.pinnedBottomEl)}createSide(e){let t={root:e,segments:{left:g("div"),center:g("div"),right:g("div")},centerViewport:g("div","mach-pinned-viewport"),rowWrappers:{left:[],center:[],right:[]},cells:[],data:[]};for(let o of _)t.segments[o].className=`mach-pinned-seg mach-pinned-seg--${o}`,o!=="center"&&t.segments[o].classList.add("mach-pane--hidden"),o==="center"&&t.centerViewport.appendChild(t.segments[o]);return e.append(t.segments.left,t.centerViewport,t.segments.right),t}setData(e,t){this.core.isDestroyed()||!this.top||!this.bottom||(this.top.data=e??[],this.bottom.data=t??[],this.rebuild(),this.applyLayout(),this.core.relayout())}setTopData(e){this.core.isDestroyed()||!this.top||(this.top.data=e??[],this.rebuildSide(this.top,"top"),this.applyLayout(),this.core.relayout())}setBottomData(e){this.core.isDestroyed()||!this.bottom||(this.bottom.data=e??[],this.rebuildSide(this.bottom,"bottom"),this.applyLayout(),this.core.relayout())}getTopData(){return this.top?this.top.data.slice():[]}getBottomData(){return this.bottom?this.bottom.data.slice():[]}rebuild(){!this.top||!this.bottom||(this.rebuildSide(this.top,"top"),this.rebuildSide(this.bottom,"bottom"))}rebuildSide(e,t){for(let n of e.cells)for(let i of _)for(let a of n[i])S(this.core,a);for(let n of _){for(let i of e.rowWrappers[n])i.remove();e.rowWrappers[n]=[]}if(e.cells=[],e.root.style.display=e.data.length>0?"":"none",e.data.length===0)return;let o=this.core.options.rowHeight,r=this.core.columnModel;e.data.forEach((n,i)=>{let a={id:`__pinned_${t}_${i}`,data:n,rowIndex:-1,selected:!1},l={};for(let d of _){let c=g("div","mach-pinned-row");c.style.height=`${o}px`,c.setAttribute("role","row"),l[d]=[];for(let u of r.getPaneColumns(d)){let h=g("div","mach-cell");if(h.dataset.colId=u.id,h.setAttribute("role","gridcell"),u.hasCheckbox&&h.classList.add("mach-cell--selection"),!u.hasCheckbox&&!u.isDetailToggle&&!u.colDef.rowDrag&&u.colDef.type!=="index")try{Oe(this.core,h,a,u),le(this.core,h,a,u),Ne(this.core,h,a,u)}catch(p){this.core.reportError(p,"pinnedRow.render",{colId:u.id,side:t,rowIndex:i})}c.appendChild(h),l[d].push(h)}e.segments[d].appendChild(c),e.rowWrappers[d].push(c)}e.cells.push(l)})}applyLayout(){if(!this.top||!this.bottom)return;let e=this.core.columnModel,t={left:0,center:0,right:0},o={left:[],center:[],right:[]};for(let r of _){let n=0;for(let i of e.getPaneColumns(r))o[r].push(n),n+=i.currentWidth;t[r]=n}for(let r of[this.top,this.bottom]){let n=r.data.length===0;r.segments.left.classList.toggle("mach-pane--hidden",n||t.left<=0),r.segments.right.classList.toggle("mach-pane--hidden",n||t.right<=0),r.segments.left.style.width=`${t.left}px`,r.segments.right.style.width=`${t.right}px`,r.segments.center.style.width=`${t.center}px`,r.cells.forEach(i=>{let a=0;for(let l of _){let d=e.getPaneColumns(l);i[l].forEach((c,u)=>{c.style.width=`${d[u].currentWidth}px`,c.style.left=`${o[l][u]}px`,c.setAttribute("aria-colindex",String(a+u+1))}),a+=d.length}})}}onScrollLeft(e){this.top&&(this.top.segments.center.style.transform=`translateX(${-e}px)`),this.bottom&&(this.bottom.segments.center.style.transform=`translateX(${-e}px)`)}refresh(){this.rebuild(),this.applyLayout()}destroy(){for(let e of[this.top,this.bottom])if(e)for(let t of e.cells)for(let o of _)for(let r of t[o])S(this.core,r);this.top=null,this.bottom=null}};var rt=class{constructor(e){this.core=e;this.barEl=null;this.items={};this.offs=[]}init(){this.barEl=g("div","mach-statusbar"),this.barEl.style.display="none",this.barEl.setAttribute("role","status"),this.core.skeleton.root.appendChild(this.barEl),this.rebuild(),this.offs.push(this.core.eventBus.on("modelUpdated",()=>this.refresh()),this.core.eventBus.on("selectionChanged",()=>this.refresh()),this.core.eventBus.on("rangeSelectionChanged",()=>this.refresh()),this.core.eventBus.on("cellValueChanged",()=>this.refresh()))}rebuild(){if(!this.barEl)return;this.barEl.textContent="",this.items={};let e=this.core.options;if(!e.statusBarEnabled){this.barEl.style.display="none";return}for(let t of e.statusBarPanels){let o=g("span",`mach-statusbar-item mach-statusbar-item--${t}`);this.barEl.appendChild(o),this.items[t]=o}this.refresh()}refresh(){if(!this.barEl||this.core.isDestroyed())return;let e=this.core.options;if(this.barEl.style.display=e.statusBarEnabled?"":"none",!e.statusBarEnabled)return;let t={...M,...e.locale},o=(r,n)=>{let i=t[r]??M[r];return n===void 0?i:k(i,typeof n=="number"?n:parseFloat(String(n))||0)};if(this.items.rowCount){let r=this.core.rowModel,n=r.getDisplayTotalCount(),i=r.paginationActive?r.getTotalRowCount():r.getDisplayedRowCount(),a=r.isInfinite&&n>i?`${k(o("totalRowsLabel"),i)} / ${n}`:k(o("totalRowsLabel"),i);this.items.rowCount.textContent!==a&&(this.items.rowCount.textContent=a)}if(this.items.selectedRowCount){let r=this.core.selectionService.getSelectedNodes().length,n=k(o("statusSelected"),r);this.items.selectedRowCount.textContent!==n&&(this.items.selectedRowCount.textContent=n)}if(this.items.rangeAggregate){let r=this.core.bodyRenderer.normalizedRange(),n="";if(r){let i=this.core.columnModel.getOrderedVisible(),a=0,l=0;for(let d=r.r1;d<=r.r2;d++){let c=this.core.rowModel.getDisplayedRow(d);if(!(!c||c.isDetail||c.isGroup))for(let u=r.c1;u<=r.c2;u++){let h=i[u];if(!h)continue;let p=this.core.getCellValue(c,h);typeof p=="number"&&!isNaN(p)&&(a+=p,l++)}}if(l>0){let d=Math.round(a/l*100)/100,c=Number.isInteger(a)?String(a):String(Math.round(a*100)/100);n=`${o("statusSum",c)} \xB7 ${o("statusAvg",String(d))} \xB7 ${o("statusCount",String(l))}`}}this.items.rangeAggregate.textContent!==n&&(this.items.rangeAggregate.textContent=n)}}destroy(){for(let e of this.offs)e();this.offs=[],this.barEl?.remove(),this.barEl=null}};function xt(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}function Tr(s){return encodeURIComponent(String(s).trim()).replace(/%/g,"~")}function ro(s){return[["app",s.app],["tenant",s.tenant],["user",s.user],["route",s.route],["table",s.table],["schema",s.schema]].filter(t=>t[1]!==void 0&&String(t[1]).trim()!=="").map(([t,o])=>`${t}=${Tr(o)}`).join(";")}function ce(s,e){if(!Array.isArray(s)||s.length>e)return null;let t=[],o=new Set;for(let r of s){if(r==null||typeof r!="object")continue;let n=r;if(typeof n.colId!="string"||n.colId.length===0||n.colId.length>256||o.has(n.colId))continue;o.add(n.colId);let i={colId:n.colId};typeof n.hide=="boolean"&&(i.hide=n.hide),typeof n.width=="number"&&Number.isFinite(n.width)&&n.width>0&&(i.width=n.width),(n.pinned==="left"||n.pinned==="right"||n.pinned===null)&&(i.pinned=n.pinned),(n.sort==="asc"||n.sort==="desc"||n.sort===null)&&(i.sort=n.sort),n.sortIndex===null?i.sortIndex=null:typeof n.sortIndex=="number"&&Number.isInteger(n.sortIndex)&&n.sortIndex>=0&&(i.sortIndex=n.sortIndex),t.push(i)}return t}function St(s={}){let e=(s.namespace??"mach-table:col-state").replace(/:+$/,""),t=Math.max(1,Math.floor(s.version??1)),o=Math.max(1,Math.floor(s.maxColumns??1e3)),r=i=>`${e}:${i}`,n=(i,a,l)=>{try{s.onError?.(i,a,l)}catch{}};return{storageKey:r,load(i){try{let a=(s.storage??xt())?.getItem(r(i));if(!a)return null;let l=JSON.parse(a);if(Array.isArray(l)){let u=ce(l,o);return!u||!s.migrate?u:ce(s.migrate(u,0,t),o)}if(l==null||typeof l!="object")return null;let d=l;if(!Number.isInteger(d.version)||typeof d.version!="number")return null;let c=ce(d.columns,o);return c?d.version===t?c:s.migrate?ce(s.migrate(c,d.version,t),o):null:null}catch(a){return n(a,"load",i),null}},save(i,a){try{let l=ce(a,o);if(!l)throw new TypeError(`[MachTable] Invalid column state for "${i}".`);let d={version:t,savedAt:Date.now(),columns:l};(s.storage??xt())?.setItem(r(i),JSON.stringify(d))}catch(l){n(l,"save",i)}},clear(i){try{(s.storage??xt())?.removeItem(r(i))}catch(a){n(a,"clear",i)}}}}var Mt=St();function nt(s,e){Mt.save(s,e)}function it(s){return Mt.load(s)}function no(s){Mt.clear(s)}var xr=[[/^(success|ok|done|complete|completed|normal|active|enabled|启用|正常|完成|已完成|运行|运行中|在线|生效)$/i,"success"],[/^(warning|warn|hold|pending|standby|待机|待审核|暂停|预警|部分完成)$/i,"warning"],[/^(error|fail|failed|danger|fault|offline|disabled|故障|失败|错误|异常|停用|离线|断开)$/i,"danger"],[/^(info|processing|new|draft|进行中|新建|草稿|审批中|同步中)$/i,"info"]];function It(s,e){let t=String(s??"");if(e){let o=e[t];if(o)return o;let r=e[t.toLowerCase()];if(r)return r}for(let[o,r]of xr)if(o.test(t))return r;return"neutral"}function kt(s={}){return e=>{if(e.value==null||e.value==="")return"";let t=It(e.value,s.variantMap),o=s.labelMap?.[String(e.value)]??(e.formatted||String(e.value)),r=document.createElement("span");return r.className=`mach-tag mach-tag--${t}`,r.textContent=o,r}}function Lt(s={}){return e=>{let t=Number(e.value);if(isNaN(t))return e.formatted;let o=Math.max(0,Math.min(100,t)),r=document.createElement("div");r.className="mach-progress";let n=document.createElement("div");n.className="mach-progress__track";let i=document.createElement("div");if(i.className="mach-progress__bar",i.style.width=`${o}%`,s.color&&(i.style.background=s.color),n.appendChild(i),r.appendChild(n),s.showValue!==!1){let a=document.createElement("span");a.className="mach-progress__label",a.textContent=`${Math.round(o)}${s.unit??"%"}`,r.appendChild(a)}return r}}function Pt(s){if(s.value==null||s.value==="")return"";let e=document.createElement("span");return e.className="mach-link",e.textContent=s.formatted||String(s.value),e}var At={edit:'<path d="M11.5 2.5l2 2L5 13H3v-2l8.5-8.5z"/>',delete:'<path d="M3 5h10M6 5V3h4v2M5 5l.7 8h4.6L11 5"/>',view:'<path d="M1.5 8s2.4-4.2 6.5-4.2S14.5 8 14.5 8s-2.4 4.2-6.5 4.2S1.5 8 1.5 8z"/><circle cx="8" cy="8" r="1.8"/>',copy:'<rect x="5" y="5" width="8" height="8" rx="1"/><path d="M3 11V3h8"/>',download:'<path d="M8 2v8m0 0l-3-3m3 3l3-3M2.5 13.5h11"/>',refresh:'<path d="M13 3v4h-4M3 13V9h4"/><path d="M13 7a5.5 5.5 0 00-9.7-2.6M3 9a5.5 5.5 0 009.7 2.6"/>',close:'<path d="M3.5 3.5l9 9m0-9l-9 9"/>',check:'<path d="M2.5 8.5l3.5 3.5 7.5-8"/>',plus:'<path d="M8 2.5v11M2.5 8h11"/>',search:'<circle cx="7" cy="7" r="4.5"/><path d="M10.5 10.5L14 14"/>',more:'<circle cx="3" cy="8" r=".9" fill="currentColor" stroke="none"/><circle cx="8" cy="8" r=".9" fill="currentColor" stroke="none"/><circle cx="13" cy="8" r=".9" fill="currentColor" stroke="none"/>'};function st(s,e=14){let t=At[s]??"";return`<svg viewBox="0 0 16 16" width="${e}" height="${e}" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">${t}</svg>`}var B=null,A=null;function H(s=!1){B?.remove(),B=null,A&&(A.setAttribute("aria-expanded","false"),s&&A.isConnected&&A.focus({preventScroll:!0})),A=null,document.removeEventListener("mousedown",so,!0),document.removeEventListener("keydown",Nt,!0)}function so(s){B&&!B.contains(s.target)&&!A?.contains(s.target)&&H()}function Nt(s){if(!B)return;if(s.key==="Escape"){s.preventDefault(),H(!0);return}let e=[...B.querySelectorAll("button:not(:disabled)")];if(e.length===0)return;if(s.key==="Tab"){let r=e.indexOf(document.activeElement);(!s.shiftKey&&r===e.length-1||s.shiftKey&&r<=0)&&(s.preventDefault(),e[s.shiftKey?e.length-1:0].focus());return}if(s.key!=="ArrowDown"&&s.key!=="ArrowUp")return;s.preventDefault();let t=e.indexOf(document.activeElement),o=s.key==="ArrowDown"?1:-1;e[(t+o+e.length)%e.length].focus()}function ao(s,e){let t=document.createElement("button");return t.type="button",t.className=e,s.variant&&s.variant!=="default"&&t.classList.add(`${e}--${s.variant}`),t.disabled=s.disabled===!0,s.icon&&At[s.icon]?t.innerHTML=`${st(s.icon,16)}<span>${s.label}</span>`:t.textContent=s.label,t.addEventListener("click",()=>s.pick(t)),t}function Sr(s,e){H();let t=document.createElement("div");t.className="mach-context-menu mach-action-menu",t.setAttribute("role","menu");for(let n of e){let i=ao(n,"mach-context-menu-item");i.setAttribute("role","menuitem"),t.appendChild(i)}document.body.appendChild(t);let o=s.getBoundingClientRect(),r=t.getBoundingClientRect();t.style.left=`${Math.min(Math.max(8,o.left),window.innerWidth-r.width-8)}px`,t.style.top=`${Math.min(o.bottom+4,window.innerHeight-r.height-8)}px`,B=t,A=s,s.setAttribute("aria-expanded","true"),document.addEventListener("mousedown",so,!0),document.addEventListener("keydown",Nt,!0),t.querySelector("button:not(:disabled)")?.focus({preventScroll:!0})}function Mr(s,e,t){H();let o=document.createElement("div");o.className="mach-action-drawer-backdrop";let r=document.createElement("section");r.className="mach-action-drawer",r.setAttribute("role","dialog"),r.setAttribute("aria-modal","true"),r.setAttribute("aria-label",e);let n=document.createElement("header");n.className="mach-action-drawer__header";let i=document.createElement("strong");i.textContent=e;let a=document.createElement("button");a.type="button",a.className="mach-action-drawer__close",a.setAttribute("aria-label","Close"),a.title="Close",a.innerHTML=st("close",16),a.addEventListener("click",()=>H(!0)),n.append(i,a);let l=document.createElement("div");l.className="mach-action-drawer__body";for(let d of t)l.appendChild(ao(d,"mach-action-drawer__item"));r.append(n,l),o.appendChild(r),o.addEventListener("mousedown",d=>{d.target===o&&H(!0)}),document.body.appendChild(o),B=o,A=s,s.setAttribute("aria-expanded","true"),document.addEventListener("keydown",Nt,!0),r.querySelector("button:not(:disabled)")?.focus({preventScroll:!0})}function F(s,e){if(typeof s=="function")try{return s(e)}catch{return!1}return s===!0}function io(s){return s.danger?"danger":s.variant??"default"}function lo(s){return s.permission?typeof s.permission=="string"?[s.permission]:s.permission:[]}function Ot(s,e,t){return{...s.id?{actionId:s.id}:{},permissions:lo(s),...t?{message:t}:{},params:e}}function co(s,e,t){let o=t.api.getGridOption("actionPolicy");try{o?.onError?o.onError(s,Ot(e,t)):console.error("[mach-table] action handler failed",s)}catch(r){console.error("[mach-table] action error policy failed",r,s)}}function Ir(s,e){if(lo(s).length===0)return!0;let o=e.api.getGridOption("actionPolicy");if(!o?.canAccess)return!0;try{return o.canAccess(Ot(s,e))}catch(r){return co(r,s,e),!1}}function ee(s){let e=Math.max(0,s.max??3),t=s.overflow??"menu";return o=>{let r=s.actions.filter(d=>{if(!Ir(d,o))return!1;if(!d.show)return!0;try{return d.show(o)}catch{return!1}});if(r.length===0)return"";let n=document.createElement("div");n.className="mach-actions";let i=t==="inline"?r:r.slice(0,e),a=t==="inline"?[]:r.slice(e),l=(d,c)=>{if(F(d.disabled,o))return;c.disabled=!0,c.classList.add("mach-action-btn--loading"),(async()=>{if(d.confirm!=null&&d.confirm!==!1){let h=typeof d.confirm=="function"?await d.confirm(o):d.confirm;if(h===!1)return;let p=typeof h=="string"?h:d.label??d.title??"Confirm action",m=o.api.getGridOption("actionPolicy");if(!(m?.confirm?await m.confirm(Ot(d,o,p)):typeof window<"u"&&typeof window.confirm=="function"?window.confirm(p):!1))return}await d.onClick(o)})().catch(h=>co(h,d,o)).finally(()=>{c.isConnected&&(c.disabled=F(d.disabled,o)||F(d.loading,o),c.classList.toggle("mach-action-btn--loading",F(d.loading,o)))})};for(let d of i){let c=document.createElement("button");c.type="button",c.className="mach-action-btn";let u=io(d);u!=="default"&&c.classList.add(`mach-action-btn--${u}`);let h=d.title??d.label??"Action";c.title=h,c.setAttribute("aria-label",h),c.disabled=F(d.disabled,o),F(d.loading,o)&&(c.disabled=!0,c.classList.add("mach-action-btn--loading")),d.icon&&At[d.icon]?(c.innerHTML=st(d.icon),c.classList.add("mach-action-btn--icon")):c.textContent=d.label??h,c.addEventListener("mousedown",p=>p.stopPropagation()),c.addEventListener("click",p=>{p.stopPropagation(),l(d,c)}),n.appendChild(c)}if(a.length>0){let d=document.createElement("button");d.type="button",d.className="mach-action-btn mach-action-btn--icon";let c=s.moreLabel??"More actions";d.title=c,d.setAttribute("aria-label",c),d.setAttribute("aria-haspopup",t==="drawer"?"dialog":"menu"),d.setAttribute("aria-expanded","false"),d.innerHTML=`${st("more",16)}<span class="mach-sr-only">\u22EF</span>`,d.addEventListener("mousedown",u=>u.stopPropagation()),d.addEventListener("click",u=>{u.stopPropagation();let h=a.map(p=>({label:p.label??p.title??"Action",icon:p.icon,variant:io(p),disabled:F(p.disabled,o)||F(p.loading,o),pick:m=>{H(),l(p,m)}}));t==="drawer"?Mr(d,s.drawerTitle??c,h):Sr(d,h)}),n.appendChild(d)}return{el:n,destroy:()=>{A&&n.contains(A)&&H()}}}}function at(s={}){return e=>{let t={view:s.labels?.view??"View",edit:s.labels?.edit??"Edit row",delete:s.labels?.delete??"Delete",save:s.labels?.save??"Save row",cancel:s.labels?.cancel??"Cancel row edit"};if(e.api.isRowEditing(e.rowIndex))return ee({actions:[{icon:"check",title:t.save,variant:"primary",onClick:()=>e.api.stopEditingRow(!1).then(()=>{})},{icon:"close",title:t.cancel,onClick:()=>e.api.stopEditingRow(!0).then(()=>{})}],overflow:"inline"})(e);let o=[];return s.onView&&o.push({id:"view",icon:"view",title:t.view,variant:"primary",...s.permissions?.view?{permission:s.permissions.view}:{},onClick:s.onView}),s.edit!==!1&&o.push({id:"edit",icon:"edit",title:t.edit,variant:"warning",...s.permissions?.edit?{permission:s.permissions.edit}:{},onClick:()=>{e.api.startEditingRow(e.rowIndex)}}),s.onDelete&&o.push({id:"delete",icon:"delete",title:t.delete,variant:"danger",...s.permissions?.delete?{permission:s.permissions.delete}:{},...s.confirmDelete?{confirm:s.confirmDelete===!0?t.delete:s.confirmDelete}:{},onClick:s.onDelete}),o.push(...s.extraActions??[]),ee({actions:o,max:s.max,overflow:s.overflow??"drawer",moreLabel:s.moreLabel,drawerTitle:s.drawerTitle})(e)}}var kr=kt(),Lr=Lt();function lt(s){s("statusTag",kr),s("progressBar",Lr),s("link",Pt)}var G=new Map,$=new Map;function uo(s,e){let t=G.get(s);return G.set(s,e),()=>{G.get(s)===e&&(t?G.set(s,t):G.delete(s))}}function ue(s){return G.get(s)}function ho(s,e){let t=$.get(s);return $.set(s,e),()=>{$.get(s)===e&&(t?$.set(s,t):$.delete(s))}}function dt(s){return $.get(s)}function po(s,e){G.has(s)||G.set(s,e)}function fo(){G.clear(),$.clear()}function mo(s){if(!s||s.length===0)return[];let e=[],t=new Map,o=0,r=(n,i)=>{for(let a of n){if(Y(a)){if(!Array.isArray(a.children)||a.children.length===0){e.push(`\u5217\u5206\u7EC4 "${a.headerName??a.groupId??"?"}" \u7684 children \u4E3A\u7A7A`);continue}r(a.children,i+1);continue}o++;let l=a.colId??a.field??`col_${o}`;t.set(l,(t.get(l)??0)+1),a.field&&!J(a.field)&&e.push(`\u5217 "${l}" \u7684 field \u8DEF\u5F84\u4E0D\u5B89\u5168\u6216\u65E0\u6548\uFF0C\u5DF2\u7981\u6B62\u8BFB\u53D6\u548C\u5199\u5165`),!a.field&&!a.valueGetter&&!a.checkboxSelection&&!a.autoRowSpan&&!a.rowSpan&&e.push(`\u5217 "${l}" \u65E2\u65E0 field \u4E5F\u65E0 valueGetter\uFF0C\u5C06\u59CB\u7EC8\u663E\u793A\u7A7A\u503C\uFF08\u7EAF\u5DE5\u5177\u5217\u8BF7\u5FFD\u7565\u6B64\u63D0\u793A\uFF09`),a.width!=null&&a.minWidth!=null&&a.width<a.minWidth&&e.push(`\u5217 "${l}" \u7684 width(${a.width}) \u5C0F\u4E8E minWidth(${a.minWidth})\uFF0C\u5C06\u6309 minWidth \u6E32\u67D3`),a.width!=null&&a.maxWidth!=null&&a.width>a.maxWidth&&e.push(`\u5217 "${l}" \u7684 width(${a.width}) \u5927\u4E8E maxWidth(${a.maxWidth})\uFF0C\u5C06\u6309 maxWidth \u6E32\u67D3`)}};r(s,0);for(let[n,i]of t)i>1&&e.push(`\u5B58\u5728 ${i} \u4E2A\u91CD\u590D\u7684 colId/field "${n}"\uFF0C\u5DF2\u81EA\u52A8\u52A0\u540E\u7F00\u533A\u5206\uFF0C\u5EFA\u8BAE\u663E\u5F0F\u547D\u540D colId`);return e}var ct={columnDefs:{kind:"array",update:"columnDefs"},rowData:{kind:"array",update:"rowData"},defaultColDef:{kind:"object",update:"options"},columnTypes:{kind:"object",update:"options"},getRowId:{kind:"function",update:"options"},rowHeight:{kind:"number",update:"options"},headerHeight:{kind:"number",update:"options"},rowBuffer:{kind:"number",update:"options"},columnLayout:{kind:"string",update:"options"},rowSelection:{kind:"string",update:"options"},multiSort:{kind:"boolean",update:"options"},size:{kind:"string",update:"options"},stripedRows:{kind:"boolean",update:"options"},showCellBorders:{kind:"boolean",update:"options"},theme:{kind:"string",update:"options"},quickFilterText:{kind:"string",update:"quickFilter"},masterDetail:{kind:"boolean",update:"options"},detailRowHeight:{kind:"number",update:"options"},detailRowRenderer:{kind:"function",update:"options"},isRowExpandable:{kind:"function",update:"options"},detailToggleColumn:{kind:"boolean",update:"options"},columnMenu:{kind:"boolean",update:"options"},columnStateKey:{kind:"string",update:"options"},columnStateStore:{kind:"object",update:"options"},aggFuncs:{kind:"object",update:"options"},components:{kind:"object",update:"options"},actionPolicy:{kind:"object",update:"options"},features:{kind:"array",update:"options"},initialState:{kind:"object",update:"options"},locale:{kind:"object",update:"options"},editType:{kind:"string",update:"options"},editableIndicator:{kind:"string",update:"options"},rowEditValidator:{kind:"function",update:"options"},singleClickEdit:{kind:"boolean",update:"options"},manualSorting:{kind:"boolean",update:"options"},manualFiltering:{kind:"boolean",update:"options"},showSummary:{kind:"boolean",update:"options"},summaryMethod:{kind:"function",update:"options"},treeData:{kind:"boolean",update:"options"},childrenKey:{kind:"string",update:"options"},isTreeRowExpandable:{kind:"function",update:"options"},loadTreeChildren:{kind:"function",update:"options"},autoCheckedChildren:{kind:"boolean",update:"options"},defaultExpandAll:{kind:"boolean",update:"options"},indexOffset:{kind:"number",update:"options"},applyRowDrag:{kind:"boolean",update:"options"},undoStackSize:{kind:"number",update:"options"},asyncTransactionWaitMillis:{kind:"number",update:"options"},getRowHeight:{kind:"function",update:"options"},pinnedTopRowData:{kind:"array",update:"options"},pinnedBottomRowData:{kind:"array",update:"options"},pagination:{kind:"boolean-object",update:"options"},watermark:{kind:"boolean-object",update:"options"},suppressWarnings:{kind:"boolean",update:"options"},enableRangeSelection:{kind:"boolean",update:"options"},suppressClipboard:{kind:"boolean",update:"options"},contextMenu:{kind:"boolean",update:"options"},getContextMenuItems:{kind:"function",update:"options"},tooltipComponent:{kind:"function",update:"options"},tooltipShowDelay:{kind:"number",update:"options"},flashCells:{kind:"boolean",update:"options"},fillHandle:{kind:"boolean",update:"options"},statusBar:{kind:"boolean-object",update:"options"},datasource:{kind:"object",update:"options"},blockSize:{kind:"number",update:"options"},infiniteBufferRows:{kind:"number",update:"options"},datasourceRetryCount:{kind:"number",update:"options"},datasourceRetryDelay:{kind:"number",update:"options"},suppressCellFocus:{kind:"boolean",update:"options"},suppressRowHoverHighlight:{kind:"boolean",update:"options"},suppressNoRowsOverlay:{kind:"boolean",update:"options"},suppressHeaderFocus:{kind:"boolean",update:"options"},ariaLabel:{kind:"string",update:"options"},ariaLabelledBy:{kind:"string",update:"options"},ariaDescribedBy:{kind:"string",update:"options"},loading:{kind:"boolean",update:"options"},overlayNoRowsTemplate:{kind:"unknown",update:"options"},overlayLoadingTemplate:{kind:"unknown",update:"options"},allowUnsafeOverlayHtml:{kind:"boolean",update:"options"},className:{kind:"string",update:"options"}},he=Object.freeze(Object.keys(ct)),go=Object.freeze(he.filter(s=>ct[s].update==="options"));var Pr=Q.map(s=>`on${s.charAt(0).toUpperCase()}${s.slice(1)}`),yo=new Set([...he,...Pr]);function Ar(s,e){if(s===e)return 0;if(s.length===0)return e.length;if(e.length===0)return s.length;let t=Array.from({length:e.length+1},(o,r)=>r);for(let o=1;o<=s.length;o++){let r=[o];for(let n=1;n<=e.length;n++)r[n]=Math.min(r[n-1]+1,t[n]+1,t[n-1]+(s[o-1]===e[n-1]?0:1));t=r}return t[e.length]}function Nr(s){let e,t=Number.POSITIVE_INFINITY;for(let r of yo){let n=Ar(s.toLowerCase(),r.toLowerCase());n<t&&(t=n,e=r)}let o=Math.max(2,Math.floor(s.length*.3));return t<=o?e:void 0}function ut(s){let e=s,t=[];for(let r of Object.keys(e)){if(yo.has(r))continue;let n=Nr(r);t.push({code:"UNKNOWN_OPTION",option:r,...n?{suggestion:n}:{},message:n?`\u672A\u77E5 GridOption "${r}"\uFF0C\u662F\u5426\u60F3\u4F7F\u7528 "${n}"\uFF1F`:`\u672A\u77E5 GridOption "${r}"\uFF0C\u8BE5\u503C\u4E0D\u4F1A\u751F\u6548`})}let o=e.pagination;if(o!=null&&typeof o!="boolean"&&typeof o!="object"&&t.push({code:"INVALID_OPTION_VALUE",option:"pagination",message:"pagination \u5FC5\u987B\u662F boolean \u6216\u914D\u7F6E\u5BF9\u8C61"}),e.datasource!=null&&o!==void 0&&o!==!1&&t.push({code:"OPTION_CONFLICT",option:"pagination",message:"datasource \u987A\u5E8F\u65E0\u9650\u6A21\u5F0F\u4E0E pagination \u4E0D\u80FD\u540C\u65F6\u542F\u7528\uFF1B\u666E\u901A\u670D\u52A1\u7AEF\u5206\u9875\u8BF7\u4F7F\u7528 pagination.mode='server'"}),o&&typeof o=="object"){let r=o;r.mode==="server"&&typeof e.getRowId!="function"&&t.push({code:"MISSING_STABLE_ROW_ID",option:"getRowId",message:"\u670D\u52A1\u7AEF\u5206\u9875\u5EFA\u8BAE\u63D0\u4F9B\u7A33\u5B9A getRowId\uFF0C\u5426\u5219\u8DE8\u9875\u9009\u62E9\u4E0E\u589E\u91CF\u66F4\u65B0\u65E0\u6CD5\u53EF\u9760\u4FDD\u6301"}),r.mode==="server"&&r.total!==void 0&&(typeof r.total!="number"||!Number.isFinite(r.total)||r.total<0)&&t.push({code:"INVALID_OPTION_VALUE",option:"pagination.total",message:"\u670D\u52A1\u7AEF\u5206\u9875 total \u5FC5\u987B\u662F\u975E\u8D1F\u6709\u9650\u6570"})}return e.treeData===!0&&e.masterDetail===!0&&t.push({code:"OPTION_CONFLICT",option:"masterDetail",message:"treeData \u4E0E masterDetail \u4E0D\u80FD\u540C\u65F6\u542F\u7528\uFF0C\u4E3B\u4ECE\u660E\u7EC6\u5C06\u88AB\u5FFD\u7565"}),t}var Or=["datasource","treeData"],Gr=0;function vo(){lt(po)}var te=class{constructor(e,t){this.destroyed=!1;this.autoIdCounter=0;this.readyRafId=0;this.readySettled=!1;this.lastColumnLayoutSignature="";this.activeFeatures=new Map;this.recentErrors=[];this.stateLoadToken=0;this.lastValidatedDefs=null;this.issuedWarningSignatures=new Set;let o;this.readyPromise=new Promise(r=>{o=r}),this.resolveReady=o,this.gridId=++Gr,vo(),this.options=Bt(t),this.eventBus=new q((r,n)=>{n==="gridError"?console.error("[mach-table] error in gridError listener",r):this.reportError(r,"eventBus.listener",{eventType:n})}),this.columnModel=new we(this),this.rowModel=new Re(this),this.selectionService=new De(this),this.skeleton=new je(this),this.headerRenderer=new Xe(this),this.bodyRenderer=new Je(this),this.resizeService=new Te(this),this.columnDragService=new xe(this),this.keyboardService=new ke(this),this.editingService=new Ge(this),this.undoService=new _e(this),this.filterPopup=new Be(this),this.columnMenu=new Ve(this),this.contextMenuService=new ze(this),this.tooltipService=new We(this),this.watermarkService=new Ke(this),this.paginationBar=new tt(this),this.pinnedRowsRenderer=new ot(this),this.summaryRenderer=new et(this),this.statusBarService=new rt(this),this.api=new qe(this),this.changeTracker=new $e(this);try{this.changeTracker.init(),this.skeleton.init(e,this.options),this.watermarkService.init(),this.bodyRenderer.init(),this.keyboardService.init(),this.tooltipService.init(),this.paginationBar.init(),this.summaryRenderer.init(),this.statusBarService.init(),this.pinnedRowsRenderer.init(),this.rowModel.restorePagination(this.options.paginationPage,this.options.paginationPageSize),this.columnModel.setColumnDefs(this.options.columnDefs),this.refreshAriaState(),this.validateDefs(this.options.columnDefs),this.checkWarnings(t),this.loadPersistedColumnState(),this.headerRenderer.build(),this.options.datasource?this.rowModel.startInfinite():this.rowModel.setRowData(this.options.rowData),this.options.initialState&&this.api.applyState(this.options.initialState,{emitEvents:!1}),this.relayout(),this.pinnedRowsRenderer.setData(this.options.pinnedTopRowData,this.options.pinnedBottomRowData),this.setFeatures(this.options.features),this.readyRafId=requestAnimationFrame(()=>{this.readyRafId=0,this.destroyed||this.emit("gridReady",{}),this.settleReady()})}catch(r){throw this.reportError(r,"grid.constructor"),this.destroy(),r}}getApi(){return this.api}whenReady(){return this.readyPromise}settleReady(){this.readySettled||(this.readySettled=!0,this.resolveReady(this.api))}resolveCellRenderer(e){let t=this.options.components?.cellRenderers?.[e];if(t)return t;let o=ue(e);return o||(vo(),o=ue(e)),o}resolveCellEditor(e){return this.options.components?.cellEditors?.[e]??dt(e)}setFeatures(e){if(this.destroyFeatures(),!this.destroyed)for(let t of e??[]){let o=typeof t?.key=="string"?t.key.trim():"";if(!o){this.reportError(new Error("GridFeature.key must be a non-empty string"),"feature.setup");continue}if(this.activeFeatures.has(o)){this.reportError(new Error(`Duplicate GridFeature key: ${o}`),"feature.setup",{key:o});continue}let r=[],n=a=>{let l=!0,d=()=>{l&&(l=!1,a())};return r.push(d),d},i={api:this.api,root:this.skeleton.root,getOptions:()=>this.options,addEventListener:(a,l)=>n(this.eventBus.on(a,l)),onCleanup:a=>{n(a)},addManagedDomListener:(a,l,d,c)=>(a.addEventListener(l,d,c),n(()=>a.removeEventListener(l,d,c))),setManagedTimeout:(a,l)=>{let d=setTimeout(a,Math.max(0,l));return n(()=>clearTimeout(d)),d},createAbortController:()=>{let a=new AbortController;return n(()=>a.abort()),a},reportError:(a,l,d)=>this.reportError(a,`feature.${l}`,d)};try{let a=t.setup(i);typeof a=="function"&&n(a),this.activeFeatures.set(o,{feature:t,cleanups:r})}catch(a){for(let l of r.reverse())try{l()}catch(d){this.reportError(d,"feature.cleanup",{key:o})}this.reportError(a,"feature.setup",{key:o})}}}destroyFeatures(){let e=[...this.activeFeatures.entries()].reverse();this.activeFeatures.clear();for(let[t,o]of e){for(let r of o.cleanups.reverse())try{r()}catch(n){this.reportError(n,"feature.cleanup",{key:t})}try{o.feature.destroy?.()}catch(r){this.reportError(r,"feature.destroy",{key:t})}}}isDestroyed(){return this.destroyed}nextId(){return++this.autoIdCounter}getCellValue(e,t){let o=t.colDef;if(o.valueGetter)try{return o.valueGetter({api:this.api,colDef:o,column:t,node:e,data:e.data})}catch(r){this.reportError(r,"valueGetter",{colId:t.id,rowId:e.id});return}if(o.field)return Ue(e.data,o.field)}getLocaleText(e){return this.options.locale[e]??M[e]}writeValue(e,t,o,r){let n=t.colDef;if(n.valueSetter)try{return n.valueSetter({oldValue:r,newValue:o,data:e.data,node:e,colDef:n,column:t,api:this.api})}catch(i){return this.reportError(i,"valueSetter",{colId:t.id,rowId:e.id}),!1}return n.field?K(e.data,n.field,o):!1}setCellValue(e,t,o,r){if(o===void 0||o===r)return!1;let n=t.colDef,i;if(n.valueSetter)try{i=n.valueSetter({oldValue:r,newValue:o,data:e.data,node:e,colDef:n,column:t,api:this.api})}catch(a){return this.reportError(a,"valueSetter",{colId:t.id,rowId:e.id}),!1}else if(n.field)i=K(e.data,n.field,o);else return!1;return i&&this.notifyCellValueChanged(e,t,r,o),i}notifyCellValueChanged(e,t,o,r){this.bodyRenderer.invalidateRowHeight(e),this.bodyRenderer.queueFlash([e.rowIndex],[t.id]),this.emit("cellValueChanged",{oldValue:o,newValue:r,rowNode:e,rowIndex:e.rowIndex,column:t,colDef:t.colDef,data:e.data}),this.undoService.record({nodeId:e.id,columnId:t.id,oldValue:o,newValue:r})}buildRangeTsv(e){let o=this.columnModel.getOrderedVisible().slice(e.c1,e.c2+1),r=[];for(let n=e.r1;n<=e.r2;n++){let i=this.rowModel.getDisplayedRow(n);r.push(o.map(a=>!i||i.isDetail||i.isGroup?"":ae(this,i,a,this.getCellValue(i,a))))}return Z(r)}copyActiveRange(){let e=this.bodyRenderer.getNormalizedRangeOrFocus();return e?ie(this.buildRangeTsv(e)):Promise.resolve(!1)}clearRangeValues(e){if(this.destroyed)return;let t=this.columnModel.getOrderedVisible(),o=new Set;this.undoService.beginBatch();try{for(let r=e.r1;r<=e.r2;r++){let n=this.rowModel.getDisplayedRow(r);if(!(!n||n.isDetail||n.isGroup))for(let i=e.c1;i<=e.c2;i++){let a=t[i];if(!a||a.hasCheckbox||a.isDetailToggle||a.colDef.rowDrag||!this.editingService.isEditable(n,a))continue;let l=this.getCellValue(n,a);this.setCellValue(n,a,null,l)&&o.add(r)}}}finally{this.undoService.endBatch()}o.size>0&&(this.bodyRenderer.refreshRows([...o]),this.summaryRenderer.refresh())}pasteText(e,t,o){if(this.destroyed)return;let r=Se(e);if(r.length===0)return;let n=this.columnModel.getOrderedVisible(),i=this.rowModel.getDisplayedRowCount(),a=new Set,l=t;this.undoService.beginBatch();try{for(let d of r){for(;l<i;){let h=this.rowModel.getDisplayedRow(l);if(h&&!h.isDetail&&!h.isGroup)break;l++}if(l>=i)break;let c=this.rowModel.getDisplayedRow(l),u=o;for(let h of d){for(;u<n.length&&(n[u]&&(n[u].hasCheckbox||n[u].isDetailToggle||n[u].colDef.rowDrag));)u++;if(u>=n.length)break;let p=n[u];if(this.editingService.isEditable(c,p)){let m=this.getCellValue(c,p),f=h;h===""?f=null:typeof m=="number"&&!isNaN(Number(h))&&(f=Number(h)),this.setCellValue(c,p,f,m)&&a.add(l)}u++}l++}}finally{this.undoService.endBatch()}a.size>0&&(this.bodyRenderer.refreshRows([...a]),this.summaryRenderer.refresh())}pasteFromSystemClipboard(){let e=this.bodyRenderer.getPasteStart();if(!e)return Promise.resolve();try{if(typeof navigator<"u"&&navigator.clipboard?.readText)return navigator.clipboard.readText().then(t=>{t&&this.pasteText(t,e.row,e.colIdx)}).catch(()=>{})}catch{}return Promise.resolve()}refreshSummary(){this.summaryRenderer.refresh()}emit(e,t){let o={type:e,api:this.api,...t};this.eventBus.emit(e,o);let r="on"+e.charAt(0).toUpperCase()+e.slice(1),n=this.options[r];if(typeof n=="function")try{n(o)}catch(i){e==="gridError"?console.error("[mach-table] error in onGridError",i):this.reportError(i,`eventHandler.${String(r)}`,{eventType:e})}return o}reportError(e,t,o){let r=this.errorCodeFor(t,e),n=e instanceof Error?e.message:String(e);this.recentErrors.push({code:r,source:t,message:n,timestamp:Date.now(),...o?{context:o}:{}}),this.recentErrors.length>50&&this.recentErrors.splice(0,this.recentErrors.length-50),console.error(`[mach-table] ${r} (${t})`,e),!this.destroyed&&this.emit("gridError",{code:r,error:e,source:t,context:o})}errorCodeFor(e,t){if(Or.some(r=>e.startsWith(r)))return"DATA_SOURCE_ERROR";let o=t instanceof Error?t.message:String(t);return e==="getRowId"||o.includes("Duplicate row id")?"DATA_INTEGRITY_ERROR":e==="validate"?"VALIDATION_ERROR":e.toLowerCase().includes("renderer")||e==="valueFormatter"||e==="cellStyle"||e==="cellClass"?"RENDERER_ERROR":e.toLowerCase().includes("editor")||e==="editable"?"EDITOR_ERROR":e.startsWith("feature.")?"FEATURE_ERROR":e.startsWith("columnState.")?"STATE_ERROR":e.startsWith("eventBus.")||e.startsWith("eventHandler.")?"EVENT_HANDLER_ERROR":"GRID_ERROR"}getDiagnostics(){return{gridId:this.gridId,version:ge.version,destroyed:this.destroyed,infinite:this.rowModel.isInfinite,loading:this.rowModel.isLoadingInfinite()||this.options.loading,rowCount:this.rowModel.getDisplayTotalCount(),renderedRowCount:this.skeleton.bodyEl.querySelectorAll(".mach-row[data-index]").length,columnCount:this.columnModel.getColumns().length,selectedRowCount:this.selectionService.getSelectedNodes().length,dirtyRowCount:this.changeTracker.getDirtyRowIds().length,recentErrors:this.recentErrors.map(e=>({...e,...e.context?{context:{...e.context}}:{}}))}}cycleSort(e,t){this.columnModel.cycleSort(e,t),this.applySortModel()}applySortModel(){if(this.headerRenderer.refreshSortIndicators(),this.emit("sortChanged",{sortModel:this.columnModel.getSortModel()}),this.persistColumnState(),this.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.bodyRenderer.onDataChanged()}applyColumnFilter(e,t){let o=this.rowModel.getFilterModel();if(t?o[e.id]=t:delete o[e.id],this.rowModel.setFilterModel(o),this.headerRenderer.refreshFilterIcons(),this.emit("filterChanged",{filterModel:this.rowModel.getFilterModel()}),this.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.bodyRenderer.onDataChanged()}applyQuickFilter(){if(this.emit("filterChanged",{filterModel:this.rowModel.getFilterModel()}),this.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.bodyRenderer.onDataChanged()}moveColumn(e,t){this.columnModel.moveColumn(e,t)&&(this.onColumnsStructureChanged(),this.emit("columnMoved",{colId:e,toIndex:t}),this.persistColumnState())}toggleDetail(e){return this.rowModel.toggleDetail(e)}loadPersistedColumnState(){let e=++this.stateLoadToken;if(!this.options.columnStateKey)return;let t;try{t=this.options.columnStateStore?this.options.columnStateStore.load(this.options.columnStateKey):it(this.options.columnStateKey)}catch(o){this.reportError(o,"columnState.load");return}if(t!=null){if(!Array.isArray(t)){Promise.resolve(t).then(o=>{this.destroyed||e!==this.stateLoadToken||!o||o.length===0||(this.columnModel.applyColumnState(o),this.rowModel.isInfinite?this.rowModel.onServerParamsChanged():this.rowModel.refreshPipeline(),this.onColumnsStructureChanged())}).catch(o=>this.reportError(o,"columnState.load"));return}t.length>0&&this.columnModel.applyColumnState(t)}}persistColumnState(){if(!this.options.columnStateKey||this.destroyed)return;let e=this.columnModel.getColumnState();try{let t=this.options.columnStateStore?this.options.columnStateStore.save(this.options.columnStateKey,e):nt(this.options.columnStateKey,e);t&&typeof t.catch=="function"&&t.catch(o=>this.reportError(o,"columnState.save"))}catch(t){this.reportError(t,"columnState.save")}}buildDefaultEmptyState(){let e=this.options.locale??{},t=e.emptyRows??M.emptyRows,o=e.emptyRowsHint??M.emptyRowsHint,r=document.createElement("div");r.className="mach-empty";let n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","mach-empty__icon"),n.setAttribute("viewBox","0 0 96 84"),n.setAttribute("width","96"),n.setAttribute("height","84"),n.setAttribute("fill","none"),n.setAttribute("aria-hidden","true"),n.innerHTML='<rect x="8" y="10" width="68" height="56" rx="6" fill="#eaf3fe"/><rect x="8" y="10" width="68" height="12" rx="6" fill="#d5e8fd"/><rect x="8" y="19" width="68" height="3" fill="#d5e8fd"/><g stroke="#bcd7f8" stroke-width="2.4" stroke-linecap="round"><line x1="16" y1="32" x2="68" y2="32"/><line x1="16" y1="42" x2="60" y2="42"/><line x1="16" y1="52" x2="64" y2="52"/></g><circle cx="66" cy="52" r="15" fill="#ffffff" stroke="#8fbdf5" stroke-width="3"/><line x1="77" y1="63" x2="86" y2="72" stroke="#8fbdf5" stroke-width="4" stroke-linecap="round"/><line x1="60" y1="52" x2="72" y2="52" stroke="#bcd7f8" stroke-width="2.6" stroke-linecap="round"/>';let i=document.createElement("div");i.className="mach-empty__title",i.textContent=t;let a=document.createElement("div");return a.className="mach-empty__hint",a.textContent=o,r.append(n,i,a),r}checkWarnings(e){if(!(this.options.suppressWarnings||this.destroyed)){if(e)for(let t of ut(e)){let o=`${t.code}:${t.option??""}:${t.message}`;this.issuedWarningSignatures.has(o)||(this.issuedWarningSignatures.add(o),console.warn(`[mach-table:${t.code}] ${t.message}`))}this.options.treeData&&this.columnModel.getRowGroupColumns().length>0&&console.warn("[mach-table] treeData \u4E0E rowGroup \u4E0D\u652F\u6301\u540C\u65F6\u542F\u7528\uFF0C\u884C\u5206\u7EC4\u5DF2\u88AB\u5FFD\u7565")}}validateDefs(e){if(!(this.options.suppressWarnings||this.destroyed)&&this.lastValidatedDefs!==e){this.lastValidatedDefs=e;for(let t of mo(e))this.issuedWarningSignatures.has(t)||(this.issuedWarningSignatures.add(t),console.warn(`[mach-table] ${t}`))}}onColumnsStructureChanged(){this.checkWarnings(),this.validateDefs(this.columnModel.getColumnDefs()),this.bodyRenderer.invalidateAllRowHeights(),this.headerRenderer.build(),this.bodyRenderer.rebuildPool(),this.relayout(),this.pinnedRowsRenderer.rebuild(),this.summaryRenderer.refresh(),this.emit("displayedColumnsChanged",{})}relayout(){if(this.destroyed)return;this.refreshAriaState(),this.columnModel.computeLayout(this.skeleton.measureViewportWidth());let e=this.columnModel.getOrderedVisible().map(t=>`${t.id}:${t.currentWidth}`).join("|");this.lastColumnLayoutSignature&&e!==this.lastColumnLayoutSignature&&this.bodyRenderer.invalidateAllRowHeights(),this.lastColumnLayoutSignature=e,this.skeleton.root.setAttribute("aria-colcount",String(this.columnModel.getOrderedVisible().length)),this.headerRenderer.applyLayout(),this.bodyRenderer.relayout(),this.pinnedRowsRenderer.applyLayout(),this.summaryRenderer.refresh()}refreshAriaState(){if(!this.skeleton.root)return;let e=this.options.treeData||this.columnModel.getRowGroupColumns().length>0;this.skeleton.root.setAttribute("role",e?"treegrid":"grid"),this.options.rowSelection==="multiple"?this.skeleton.root.setAttribute("aria-multiselectable","true"):this.skeleton.root.removeAttribute("aria-multiselectable"),this.columnModel.getOrderedVisible().some(o=>!!o.colDef.editable)?this.skeleton.root.removeAttribute("aria-readonly"):this.skeleton.root.setAttribute("aria-readonly","true")}relayoutColumns(e=!0){this.destroyed||(this.columnModel.computeLayout(this.skeleton.measureViewportWidth()),e&&this.bodyRenderer.invalidateAllRowHeights(),this.headerRenderer.applyLayout(),this.bodyRenderer.applyContainerSizes(),this.bodyRenderer.applyCellLayout(),this.bodyRenderer.updateRange(!0),this.pinnedRowsRenderer.applyLayout(),this.summaryRenderer.refresh())}destroy(){if(this.destroyed)return;this.destroyed=!0,this.readyRafId&&cancelAnimationFrame(this.readyRafId),this.readyRafId=0,this.settleReady();let e=(t,o)=>{try{o()}catch(r){console.error(`[mach-table] ${t} destroy error`,r)}};e("grid event",()=>this.emit("gridDestroyed",{})),e("features",()=>this.destroyFeatures()),e("changeTracker",()=>this.changeTracker.destroy()),e("rowModel",()=>this.rowModel.destroy()),e("editingService",()=>this.editingService.destroy()),e("keyboardService",()=>this.keyboardService.destroy()),e("filterPopup",()=>this.filterPopup.destroy()),e("columnMenu",()=>this.columnMenu.destroy()),e("contextMenu",()=>this.contextMenuService.destroy()),e("tooltip",()=>this.tooltipService.destroy()),e("watermark",()=>this.watermarkService.destroy()),e("pagination",()=>this.paginationBar.destroy()),e("columnDrag",()=>this.columnDragService.destroy()),e("resize",()=>this.resizeService.destroy()),e("bodyRenderer",()=>this.bodyRenderer.destroy()),e("headerRenderer",()=>this.headerRenderer.destroy()),e("pinnedRowsRenderer",()=>this.pinnedRowsRenderer.destroy()),e("summaryRenderer",()=>this.summaryRenderer.destroy()),e("statusBar",()=>this.statusBarService.destroy()),e("skeleton",()=>this.skeleton.destroy()),this.eventBus.clear()}};function wo(s,e={}){if(!s)throw new Error("[mach-table] createGrid requires a container element");if(typeof document>"u")throw new Error("[mach-table] createGrid can only be used in a browser environment");return new te(s,e).getApi()}function Fr(s){return s.value===!0?"\u662F":s.value===!1?"\u5426":""}function Hr(s){return e=>{if(e.value==null||e.value==="")return"";let t=e.value instanceof Date?e.value.toISOString():String(e.value);return s==="datetime"?t.slice(0,16).replace("T"," "):t.slice(0,10)}}function Br(s){return e=>{if(e.value==null)return"";let t=s.find(o=>o.value===e.value);return t?t.label:String(e.value)}}function Co(s){let e=s.type??"string",t={colId:s.field,field:s.field,headerName:s.title??s.field,width:s.width,minWidth:s.minWidth,maxWidth:s.maxWidth,flex:s.flex,pinned:s.pinned??void 0,hide:s.hidden??!1,editable:s.editable??!1,sortable:s.sortable??!0,resizable:s.resizable??!0,filter:s.filterable===!1?!1:e==="number"?"number":e==="date"?"date":e==="select"?"set":"text",cellClass:s.cellClass};if(e==="number")t.type="rightAligned";else if(e==="date")t.valueFormatter=Hr(s.format);else if(e==="boolean")t.valueFormatter=Fr,t.filter=s.filterable===!1?!1:"set";else if(e==="select"){let o=s.options??[];t.valueFormatter=Br(o),s.editable&&(t.cellEditor="select",t.cellEditorParams={values:o.map(r=>r.value)})}return t}function bo(s){let e=new Map(s.fields.map(r=>[r.field,r])),t=new Set,o=[];for(let r of s.fields){if(t.has(r.field))continue;(s.groups??[]).some(i=>i.fields.includes(r.field))||(o.push(Co(r)),t.add(r.field))}for(let r of s.groups??[]){let n=[];for(let i of r.fields){let a=e.get(i);!a||t.has(i)||(n.push(Co(a)),t.add(i))}n.length>0&&o.push({headerName:r.title,children:n})}return o}var pe={sortable:!1,resizable:!1,movable:!1,filter:!1,suppressSizeToFit:!0};function Eo(s={}){return{colId:"sel",headerName:"",width:46,pinned:"left",checkboxSelection:!0,...pe,...s}}function Ro(s={}){return{colId:"idx",headerName:"#",type:"index",width:60,pinned:"left",...pe,...s}}function Do(s={}){return{colId:"drag",headerName:"",rowDrag:!0,width:40,...pe,...s}}function To(s={actions:[]}){let{width:e,pinned:t,...o}=s,r=o.actions?.length??0,n=o.overflow==="inline"?r:Math.min(r,o.max??3),i=o.overflow!=="inline"&&r>n,a=Math.max(1,n)*26+(i?26:0)+10;return{colId:"op",headerName:"\u64CD\u4F5C",width:e??Math.max(64,a),pinned:t??"right",cellRenderer:ee(o),...pe,cellRendererParams:void 0}}function xo(s={}){let{width:e,pinned:t,...o}=s,r=(o.onView?1:0)+(o.edit===!1?0:1)+(o.onDelete?1:0)+(o.extraActions?.length??0),n=o.overflow==="inline"?r:Math.min(r,o.max??3),i=o.overflow!=="inline"&&r>n,a=Math.max(2,n)*26+(i?26:0)+10;return{colId:"op",headerName:"\u64CD\u4F5C",width:e??Math.max(72,a),pinned:t??"right",cellRenderer:at(o),...pe,cellRendererParams:void 0}}function So(){return{accessor:(s,e={})=>({...e,field:s}),display:s=>({...s}),group:s=>({...s,children:[...s.children]})}}function Mo(s){return[...s]}function Gt(s,e){return e===void 0?s:typeof e!="object"||e===null||typeof s!="object"||s===null?e:{...s,...e}}function Vr(s,e){return typeof s!="function"?e:typeof e!="function"?s:(...t)=>{let o;try{s(...t)}catch(r){o=r}try{e(...t)}catch(r){o??(o=r)}if(o!==void 0)throw o}}function zr(s,e){let t={...s,...e,features:e.features??s.features};if((s.defaultColDef||e.defaultColDef)&&(t.defaultColDef={...s.defaultColDef,...e.defaultColDef}),(s.locale||e.locale)&&(t.locale={...s.locale,...e.locale}),(s.components||e.components)&&(t.components={cellRenderers:{...s.components?.cellRenderers,...e.components?.cellRenderers},cellEditors:{...s.components?.cellEditors,...e.components?.cellEditors}}),s.columnTypes||e.columnTypes){let o={};for(let r of new Set([...Object.keys(s.columnTypes??{}),...Object.keys(e.columnTypes??{})]))o[r]={...s.columnTypes?.[r],...e.columnTypes?.[r]};t.columnTypes=o}(s.aggFuncs||e.aggFuncs)&&(t.aggFuncs={...s.aggFuncs,...e.aggFuncs}),t.pagination=Gt(s.pagination,e.pagination),t.statusBar=Gt(s.statusBar,e.statusBar),t.watermark=Gt(s.watermark,e.watermark);for(let o of new Set([...Object.keys(s),...Object.keys(e)])){if(!/^on[A-Z]/.test(o))continue;let r=s[o],n=e[o];typeof r=="function"&&typeof n=="function"&&(t[o]=Vr(r,n))}return t}function Ft(...s){return s.reduce(zr,{})}function Io(s={}){return Ft({defaultColDef:{sortable:!0,resizable:!0,movable:!0,filter:!0},rowSelection:"multiple",columnMenu:!0,contextMenu:!0,enableRangeSelection:!0,fillHandle:!0,statusBar:!0,stripedRows:!0},s)}function ko(s){return s}function Lo(s){return s}function fe(s){return s!=null&&s!==""}function Wr(s){if(!fe(s))return null;let e=typeof s=="number"?s:Number(s);return Number.isFinite(e)?e:null}function ht(s,e){try{return new Intl.NumberFormat(s,e)}catch{return new Intl.NumberFormat(void 0,e)}}function Po(s,e){try{return new Intl.DateTimeFormat(s,e)}catch{let t={...e};return delete t.timeZone,new Intl.DateTimeFormat(void 0,t)}}function Kr(s){if(!fe(s))return null;let e=s instanceof Date?s:new Date(s);return Number.isFinite(e.getTime())?e:null}function Ao(s={}){let e=s.emptyText??"",t=s.invalidText??"\u2014",o=ht(s.locale,{maximumFractionDigits:s.maximumFractionDigits??2}),r=ht(s.locale,{maximumFractionDigits:0}),n=ht(s.locale,{style:"currency",currency:s.currency??"CNY",currencyDisplay:s.currencyDisplay??"symbol",maximumFractionDigits:s.maximumFractionDigits??2}),i=ht(s.locale,{style:"percent",maximumFractionDigits:s.maximumFractionDigits??2}),a=Po(s.locale,{year:"numeric",month:"2-digit",day:"2-digit",...s.timeZone?{timeZone:s.timeZone}:{}}),l=Po(s.locale,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,...s.timeZone?{timeZone:s.timeZone}:{}}),d=(u,h=1)=>({value:p})=>{if(!fe(p))return e;let m=Wr(p);return m==null?t:u.format(m*h)},c=u=>({value:h})=>{if(!fe(h))return e;let p=Kr(h);return p==null?t:u.format(p)};return Object.freeze({text:{align:"left",filter:"text"},number:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(o)},integer:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(r)},money:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(n)},percent:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(i)},percentage:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(i,.01)},date:{align:"center",filter:"date",cellEditor:"date",valueFormatter:c(a)},datetime:{align:"center",filter:"date",valueFormatter:c(l)},boolean:{align:"center",filter:"set",valueFormatter:({value:u})=>u===!0?s.trueText??"\u662F":u===!1?s.falseText??"\u5426":e},status:{filter:"set",cellRenderer:"statusTag"},link:{filter:"text",cellRenderer:"link"}})}function pt(s){return`${typeof s}:${String(s)}`}function No(s){let e=Math.max(0,s.ttlMs??3e5),t=Math.max(1,Math.floor(s.maxSize??2e3)),o=Math.max(0,s.batchDelayMs??0),r=new Map,n=new Map,i=new Map,a=null,l=null,d=!1,c=m=>{let f=pt(m),y=r.get(f);if(y){if(y.expiresAt<Date.now()){r.delete(f);return}return r.delete(f),r.set(f,y),y.label}},u=m=>{let f=e===0?Number.POSITIVE_INFINITY:Date.now()+e;for(let y of m){let v=pt(y.value);r.delete(v),r.set(v,{key:y.value,label:String(y.label),expiresAt:f})}for(;r.size>t;)r.delete(r.keys().next().value)},h=async()=>{if(a=null,d||n.size===0)return;let m=[...n.entries()];n.clear();let f=m.map(([,v])=>v),y=new AbortController;l=y;try{let v=await s.load(f,y.signal);if(d||y.signal.aborted)return;u(v);for(let[w,C]of m){let E=c(C);for(let R of i.get(w)??[])R.resolve(E);i.delete(w)}}catch(v){y.signal.aborted||s.onError?.(v,f);for(let[w]of m){for(let C of i.get(w)??[])C.reject(v);i.delete(w)}}finally{l===y&&(l=null),!d&&n.size>0&&a==null&&(a=setTimeout(()=>{h()},o))}},p=m=>{let f=c(m);if(f!==void 0)return Promise.resolve(f);if(d)return Promise.reject(new Error("[MachTable] Dictionary resolver has been destroyed."));let y=pt(m);n.set(y,m);let v=new Promise((w,C)=>{let E=i.get(y)??[];E.push({resolve:w,reject:C}),i.set(y,E)});return a==null&&l==null&&(a=setTimeout(()=>{h()},o)),v};return{get:c,resolve:p,async resolveMany(m){let f=await Promise.all(m.map(async y=>[y,await p(y)]));return new Map(f.filter(y=>y[1]!==void 0))},prime:u,invalidate(m){if(!m)r.clear();else for(let f of m)r.delete(pt(f))},destroy(){d=!0,a!=null&&clearTimeout(a),a=null,l?.abort(),l=null;let m=new Error("[MachTable] Dictionary resolver has been destroyed.");for(let f of i.values())for(let y of f)y.reject(m);i.clear(),n.clear(),r.clear()},get size(){return r.size}}}function Oo(s,e={}){return t=>{if(!fe(t.value))return e.emptyText??"";let o=t.value,r=e.fallback?.(o)??String(o),n=s.get(o);if(n!==void 0)return n;let i=document.createElement("span");i.className="mach-dictionary-value mach-dictionary-value--loading",i.textContent=e.loadingText??r;let a=!0;return s.resolve(o).then(l=>{!a||!i.isConnected||(i.textContent=l??r,i.classList.remove("mach-dictionary-value--loading"))}).catch(()=>{!a||!i.isConnected||(i.textContent=r,i.classList.remove("mach-dictionary-value--loading"),i.classList.add("mach-dictionary-value--error"))}),{el:i,destroy:()=>{a=!1}}}}var _r=ge.version;0&&(module.exports={BUILTIN_AGG_FUNCS,Column,DEFAULT_LOCALE,DIRECT_GRID_OPTION_KEYS,EVENT_TYPES,EventBus,GRID_OPTION_KEYS,GRID_OPTION_META,GRID_SIZE_PRESETS,GridCore,LOCALE_EN,actionsColumn,buildColDefsFromSchema,clearColumnState,clearComponentRegistries,computeColumnWidths,createActionButtonsRenderer,createAggResolver,createBusinessColumnTypes,createCachedDictionary,createColumnHelper,createColumnStateKey,createDictionaryRenderer,createEnterprisePreset,createGrid,createLocalColumnStateStore,createMachTablePreset,createProgressBarRenderer,createRowActionsRenderer,createStatusTagRenderer,defaultComparator,defineColumns,defineGridOptions,defineMachTablePreset,describeFilter,downloadFile,dragColumn,escapeHtml,evaluateColumnFilter,fitColumnWidths,formatText,formatTwo,getByPath,getCellEditor,getCellRenderer,indexColumn,isColDefGroup,isSafePath,linkRenderer,loadColumnState,matchLocaleKey,parseCsv,parseDelimited,parseTsv,registerBuiltinRenderers,registerCellEditor,registerCellRenderer,resolveTagVariant,rowActionsColumn,sanitizeFormulaCell,saveColumnState,selectionColumn,setByPath,sortNodes,toTsv,validateGridOptions,version});
1
+ "use strict";var Ct=Object.defineProperty;var Zo=Object.getOwnPropertyDescriptor;var Qo=Object.getOwnPropertyNames;var Jo=Object.prototype.hasOwnProperty;var er=(i,e)=>{for(var t in e)Ct(i,t,{get:e[t],enumerable:!0})},tr=(i,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Qo(e))!Jo.call(i,r)&&r!==t&&Ct(i,r,{get:()=>e[r],enumerable:!(o=Zo(e,r))||o.enumerable});return i};var or=i=>tr(Ct({},"__esModule",{value:!0}),i);var yn={};er(yn,{BUILTIN_AGG_FUNCS:()=>St,Column:()=>L,DEFAULT_LOCALE:()=>E,DIRECT_GRID_OPTION_KEYS:()=>xo,EVENT_TYPES:()=>oe,EventBus:()=>Y,GRID_OPTION_KEYS:()=>ge,GRID_OPTION_META:()=>gt,GRID_SIZE_PRESETS:()=>K,GridCore:()=>ie,LOCALE_EN:()=>ho,actionsColumn:()=>Fo,buildColDefsFromSchema:()=>Po,clearColumnState:()=>fo,clearComponentRegistries:()=>Do,clearGridState:()=>go,computeColumnWidths:()=>be,createActionButtonsRenderer:()=>ne,createAggResolver:()=>Se,createBusinessColumnTypes:()=>jo,createCachedDictionary:()=>Yo,createColumnHelper:()=>Bo,createColumnStateKey:()=>po,createDictionaryRenderer:()=>Xo,createEnterprisePreset:()=>zo,createGrid:()=>ko,createLocalColumnStateStore:()=>Gt,createLocalGridStateStore:()=>Ft,createMachTableCommands:()=>Ao,createMachTablePreset:()=>H,createProgressBarRenderer:()=>zt,createRowActionsRenderer:()=>pt,createStatusTagRenderer:()=>Vt,defaultComparator:()=>ee,defineColumns:()=>Vo,defineGridOptions:()=>Ko,defineMachTableConfig:()=>_o,defineMachTablePreset:()=>Wo,describeFilter:()=>Je,downloadFile:()=>Xe,dragColumn:()=>No,escapeHtml:()=>$,evaluateColumnFilter:()=>Et,fitColumnWidths:()=>Te,formatText:()=>k,formatTwo:()=>We,getByPath:()=>Z,getCellEditor:()=>mt,getCellRenderer:()=>me,indexColumn:()=>Oo,isColDefGroup:()=>J,isSafePath:()=>X,linkRenderer:()=>Wt,loadColumnState:()=>dt,loadGridState:()=>ut,matchLocaleKey:()=>ze,mergeMachTableConfig:()=>$o,normalizeMachTableConfig:()=>qt,parseCsv:()=>Pe,parseDelimited:()=>Ae,parseTsv:()=>Le,registerBuiltinRenderers:()=>ft,registerCellEditor:()=>Ro,registerCellRenderer:()=>To,resolveMachTableGridOptions:()=>Uo,resolveTagVariant:()=>Bt,rowActionsColumn:()=>Ho,sanitizeFormulaCell:()=>le,saveColumnState:()=>lt,saveGridState:()=>ct,selectionColumn:()=>Go,setByPath:()=>W,sortNodes:()=>se,toTsv:()=>te,validateGridOptions:()=>yt,version:()=>gn});module.exports=or(yn);var Ce={name:"@agile-team/mach-table",version:"0.14.0",description:"Enterprise-grade, framework-agnostic TypeScript data grid with virtualization, editing, grouping and extensibility",keywords:["data-grid","table","virtualization","typescript","enterprise","vue","react"],author:"ChenyCHENYU (Agile Team)",license:"SEE LICENSE IN LICENSE",homepage:"https://github.com/ChenyCHENYU/MachTable#readme",bugs:{url:"https://github.com/ChenyCHENYU/MachTable/issues"},repository:{type:"git",url:"git+https://github.com/ChenyCHENYU/MachTable.git",directory:"packages/core"},type:"module",main:"./dist/index.cjs",module:"./dist/index.js",types:"./dist/index.d.ts",engines:{node:">=18.0.0"},publishConfig:{access:"public"},exports:{".":{import:{types:"./dist/index.d.ts",default:"./dist/index.js"},require:{types:"./dist/index.d.cts",default:"./dist/index.cjs"}},"./styles/mach-table.css":{types:"./styles/mach-table.css.d.ts",default:"./styles/mach-table.css"}},files:["dist","styles"],sideEffects:["**/*.css"],scripts:{build:"tsup",typecheck:"tsc --noEmit",test:"vitest run","test:coverage":"vitest run --coverage"}};var Y=class{constructor(e){this.onListenerError=e;this.listeners=new Map}on(e,t){let o=this.listeners.get(e);return o||(o=new Set,this.listeners.set(e,o)),o.add(t),()=>{o.delete(t)}}once(e,t){let o=this.on(e,r=>{o(),t(r)});return o}off(e,t){let o=this.listeners.get(e);o&&(o.delete(t),o.size===0&&this.listeners.delete(e))}emit(e,t){let o=this.listeners.get(e);if(o)for(let r of[...o])try{r(t)}catch(n){console.error(`[mach-table] error in "${e}" listener`,n),this.onListenerError?.(n,e)}}clear(){this.listeners.clear()}};var nr=new Set(["__proto__","prototype","constructor"]);function X(i){return typeof i!="string"||i.length===0?!1:i.split(".").every(t=>t.length>0&&!nr.has(t))}function Z(i,e){if(i==null||!X(e))return;if(e.indexOf(".")<0)return i[e];let o=i,r=0;for(;r<e.length;){if(o==null)return;let n=e.indexOf(".",r);if(n<0){o=o[e.slice(r)];break}o=o[e.slice(r,n)],r=n+1}return o}function W(i,e,t){if(i==null||!X(e))return!1;let o=e.split("."),r=i;for(let n=0;n<o.length-1;n++){if(typeof r!="object"&&typeof r!="function"||r===null)return!1;r[o[n]]==null&&(r[o[n]]={}),r=r[o[n]]}return typeof r!="object"&&typeof r!="function"||r===null?!1:(r[o[o.length-1]]=t,!0)}var bt={sortable:!0,resizable:!0,movable:!0,filter:!1,minWidth:80},K={compact:{rowHeight:30,headerHeight:34,fontSize:12,cellPadding:6},normal:{rowHeight:36,headerHeight:40,fontSize:13,cellPadding:9},large:{rowHeight:44,headerHeight:48,fontSize:14,cellPadding:12}};function S(i,e,t,o=!1){return typeof i!="number"||!Number.isFinite(i)||i<t?e:o?Math.floor(i):i}function ir(i){return i&&Object.prototype.hasOwnProperty.call(K,i)?i:"normal"}function sr(i){return i.theme==="light"||i.theme==="dark"||i.theme==="auto"?i.theme:i.className?.includes("mach-theme-dark")?"dark":"light"}function ar(i,e){let t=typeof i.pagination=="object"&&Array.isArray(i.pagination.pageSizeOptions)?i.pagination.pageSizeOptions:void 0,o=t?[...new Set(t.map(r=>S(r,0,1,!0)).filter(Boolean))]:[10,20,50,100];return o.includes(e)||o.push(e),o.sort((r,n)=>r-n)}function Tt(i,e){let t=typeof i=="function"?i(e):Z(e,i);return t==null?"":String(t)}function lr(i){let e=i.rowKey,t=i.getRowId??(e?({data:o})=>Tt(e,o):void 0);return{...t?{getRowId:t}:{},...e?{rowKey:e}:{}}}function dr(i,e){let t=K[e];return{columnDefs:Array.isArray(i.columnDefs)?i.columnDefs:[],rowData:Array.isArray(i.rowData)?i.rowData:[],defaultColDef:{...bt,...i.defaultColDef??{}},columnTypes:i.columnTypes??{},...lr(i),rowHeight:S(i.rowHeight,t.rowHeight,1),headerHeight:S(i.headerHeight,t.headerHeight,1),rowBuffer:S(i.rowBuffer,8,0,!0),columnLayout:i.columnLayout==="fit"?"fit":"normal",domLayout:i.domLayout==="autoHeight"?"autoHeight":"normal",rowSelection:i.rowSelection==="single"||i.rowSelection==="multiple"?i.rowSelection:"none",multiSort:i.multiSort??!0,size:e,pinnedTopRowData:Array.isArray(i.pinnedTopRowData)?i.pinnedTopRowData:[],pinnedBottomRowData:Array.isArray(i.pinnedBottomRowData)?i.pinnedBottomRowData:[]}}function cr(i){return{stripedRows:i.stripedRows??!1,showCellBorders:i.showCellBorders??!1,theme:sr(i),quickFilterText:i.quickFilterText??null,suppressCellFocus:i.suppressCellFocus??!1,suppressRowHoverHighlight:i.suppressRowHoverHighlight??!1,suppressNoRowsOverlay:i.suppressNoRowsOverlay??!1,suppressHeaderFocus:i.suppressHeaderFocus??!1,loading:i.loading??!1,error:i.error??null,className:i.className??""}}function ur(i){return{editType:i.editType==="fullRow"?"fullRow":"cell",editableIndicator:i.editableIndicator==="always"||i.editableIndicator==="none"?i.editableIndicator:"hover",singleClickEdit:i.singleClickEdit??!1,manualSorting:i.manualSorting??!1,manualFiltering:i.manualFiltering??!1,showSummary:i.showSummary??!1,indexOffset:i.indexOffset??0,applyRowDrag:i.applyRowDrag??!0,undoStackSize:S(i.undoStackSize,100,0,!0),asyncTransactionWaitMillis:S(i.asyncTransactionWaitMillis,16,0,!0)}}function hr(i){return{masterDetail:i.masterDetail??!1,detailRowHeight:S(i.detailRowHeight,240,1),detailToggleColumn:i.detailToggleColumn??!0,treeData:i.treeData??!1,childrenKey:i.childrenKey??"children",autoCheckedChildren:i.autoCheckedChildren??!0,defaultExpandAll:i.defaultExpandAll??!1}}function pr(i){let e=typeof i.pagination=="object"?i.pagination:void 0,t=S(e?.pageSize,20,1,!0);return{paginationEnabled:i.pagination!==!1&&i.datasource==null,paginationMode:e?.mode==="server"?"server":"client",paginationPage:S(e?.page,1,1,!0),paginationTotal:S(e?.total,0,0,!0),paginationPageSize:t,paginationPageSizeOptions:ar(i,t),paginationShowTotal:e?e.showTotal!==!1:!0,paginationShowSizeSelector:e?e.showPageSizeSelector!==!1:!0}}function fr(i){return{watermarkEnabled:i.watermark!=null&&i.watermark!==!1,watermarkConfig:i.watermark==null||i.watermark===!1?null:i.watermark===!0?{text:"MachTable"}:i.watermark}}function mr(i){return{columnMenu:i.columnMenu??!1,columnStateKey:i.columnStateKey??null,...gr(i),locale:i.locale??{},suppressWarnings:i.suppressWarnings??!1,enableRangeSelection:i.enableRangeSelection??!1,suppressClipboard:i.suppressClipboard??!1,contextMenu:i.contextMenu??!1,tooltipShowDelay:S(i.tooltipShowDelay,600,0),flashCells:i.flashCells??!0,fillHandle:i.fillHandle??!0,statusBarEnabled:i.statusBar===!0||typeof i.statusBar=="object"&&i.statusBar!=null,statusBarPanels:typeof i.statusBar=="object"&&i.statusBar?.panels?i.statusBar.panels:["rowCount","selectedRowCount","rangeAggregate"]}}function gr(i){return{stateKey:i.stateKey??null,stateSaveDebounceMs:S(i.stateSaveDebounceMs,160,0,!0)}}function yr(i){return{blockSize:S(i.blockSize,100,1,!0),infiniteBufferRows:S(i.infiniteBufferRows,40,0,!0),datasourceRetryCount:S(i.datasourceRetryCount,2,0,!0),datasourceRetryDelay:S(i.datasourceRetryDelay,300,0,!0)}}function vr(i){return{ariaLabel:i.ariaLabel??"MachTable data grid",ariaLabelledBy:i.ariaLabelledBy??"",ariaDescribedBy:i.ariaDescribedBy??"",overlayNoRowsTemplate:i.overlayNoRowsTemplate??"",overlayLoadingTemplate:i.overlayLoadingTemplate??"",overlayErrorTemplate:i.overlayErrorTemplate??"",allowUnsafeOverlayHtml:i.allowUnsafeOverlayHtml??!1}}var wr=["stateStore","detailRowRenderer","isRowExpandable","columnStateStore","aggFuncs","components","actionPolicy","summaryMethod","datasource","getRowHeight","tooltipComponent","getContextMenuItems","initialState","rowEditValidator","isTreeRowExpandable","loadTreeChildren"];function Cr(i,e){for(let t of wr)i[t]&&Object.assign(e,{[t]:i[t]})}function br(i,e){for(let t of Object.keys(i))t.startsWith("on")&&typeof i[t]=="function"&&Object.assign(e,{[t]:i[t]})}function Yt(i){let e=ir(i.size),t={...dr(i,e),...cr(i),...ur(i),...hr(i),...pr(i),...fr(i),...mr(i),...yr(i),...vr(i),features:Array.isArray(i.features)?i.features:[]};return Cr(i,t),br(i,t),t}function Xt(i){return Array.isArray(i)?i.filter(e=>typeof e=="string"&&e.length>0):typeof i=="string"&&i.length>0?[i]:[]}function Q(i,e){return Xt(i.type).includes(e)}function Zt(i,e,t={}){let o={};for(let r of Xt(i.type)){let n=t[r];n&&Object.assign(o,n)}return{...e,...o,...i}}var L=class{constructor(e,t){this.manualWidth=null;this.currentWidth=0;this.parentGroup=null;this.level=0;this.isDetailToggle=!1;this.id=e,this.colDef=t,this.hide=t.hide??!1;let o=t.pinned;this.pinned=o===!0?"left":o===!1||o==null?null:o}get sortable(){return this.colDef.sortable!==!1}get resizable(){return this.colDef.resizable!==!1}get movable(){return this.colDef.movable!==!1}get filterable(){return this.colDef.filter!=null&&this.colDef.filter!==!1}get filterType(){let e=this.colDef.filter;return e===!0?"text":e??"text"}get hasCheckbox(){return this.colDef.checkboxSelection===!0}};var _=class i{constructor(e,t){this.parent=null;this.children=[];this.groupId=e,this.def=t}get headerName(){return this.def.headerName??this.def.groupId??""}getLeafColumns(e=[]){for(let t of this.children)t instanceof i?t.getLeafColumns(e):e.push(t);return e}};function J(i){return Array.isArray(i.children)}function A(i,e){let t=e.minWidth??80,o=e.maxWidth??Number.MAX_SAFE_INTEGER;return Math.max(t,Math.min(o,i))}function be(i,e){let t=i.map(s=>A(s.width??150,s)),o=[],r=0;i.forEach((s,a)=>{let l=s.flex??0;l>0&&(o.push(a),r+=l)});let n=0;for(let s of t)n+=s;if(r>0&&e>n){let s=e-n;for(let a=0;a<4&&s>.5&&o.length>0;a++){let l=[],d=0;for(let p of o){let m=i[p].flex??0;l.push(p),d+=m}let c=[];for(let p=0;p<l.length;p++){let m=l[p],f=i[m].flex??0,y=s*f/d,v=t[m];t[m]=A(v+y,i[m]),c.push(t[m]-v)}let u=0;for(let p of c)u+=p;s-=u;let h=l.filter((p,m)=>c[m]>.001);if(h.length===l.length)break;o.length=0;for(let p of h)o.push(p)}}return t}function Te(i,e){let t=i.map(s=>A(s.width??150,s));if(!Number.isFinite(e)||e<=0||i.length===0)return t;let o=new Set(i.map((s,a)=>a)),r=e;for(let s=0;s<i.length+1&&o.size>0;s++){let a=0;for(let d of o)a+=Math.max(1,t[d]);if(a<=0)break;let l=!1;for(let d of[...o]){let c=r*(Math.max(1,t[d])/a),u=A(c,i[d]),h=i[d].minWidth??80,p=i[d].maxWidth??Number.MAX_SAFE_INTEGER;(c<h||c>p)&&(t[d]=u,r-=u,o.delete(d),l=!0)}if(!l){for(let d of o)t[d]=A(r*(Math.max(1,t[d])/a),i[d]);break}r=Math.max(0,r)}let n=e-t.reduce((s,a)=>s+a,0);if(Math.abs(n)>.01)for(let s=t.length-1;s>=0;s--){let a=A(t[s]+n,i[s]);if(Math.abs(a-t[s])>.01){t[s]=a;break}}return t}var Rt="__rg_detail_toggle__",Re=class{constructor(e){this.core=e;this.columns=[];this.rootChildren=[];this.left=[];this.center=[];this.right=[];this.sortModel=[];this.defs=[];this.headerDepth=1;this.flatIndexById=new Map;this.viewportWidth=0}setColumnDefs(e){this.defs=e?[...e]:[];let t=new Map(this.columns.map(s=>[s.id,s])),o=this.core.options.defaultColDef,r=new Set(this.core.options.masterDetail&&this.core.options.detailToggleColumn?[Rt]:[]),n=(s,a,l)=>s.map((d,c)=>{if(J(d)){let v=d.groupId??d.headerName??`group_${c}_${l}`,w=new _(v,d);return w.parent=a,w.children=n(d.children,w,l+1),w}let u=d,h=u.colId??u.field??`col_${c}`,p=h,m=2;for(;r.has(p);)p=`${h}_${m++}`;r.add(p);let f=new L(p,Zt(u,o,this.core.options.columnTypes));f.parentGroup=a,f.level=l;let y=t.get(p);return y&&(f.manualWidth=y.manualWidth,f.hide=y.hide,f.pinned=y.pinned),f});if(this.rootChildren=n(this.defs,null,0),this.core.options.masterDetail&&this.core.options.detailToggleColumn){let s=new L(Rt,{colId:Rt,headerName:"",width:38,pinned:"left",sortable:!1,resizable:!1,movable:!1,filter:!1});s.isDetailToggle=!0,this.rootChildren.unshift(s)}if(this.columns=this.collectLeaves(this.rootChildren),this.headerDepth=this.columns.reduce((s,a)=>Math.max(s,a.level+1),1),this.sortModel=this.sortModel.filter(s=>this.columns.some(a=>a.id===s.colId)),this.sortModel.length===0){let s=[];for(let a of this.columns)a.colDef.initialSort&&s.push({colId:a.id,direction:a.colDef.initialSort});this.sortModel=s}this.regroup()}collectLeaves(e,t=[]){for(let o of e)o instanceof _?this.collectLeaves(o.children,t):t.push(o);return t}regroup(){let e=this.columns.filter(t=>!t.hide);this.left=e.filter(t=>t.pinned==="left"),this.right=e.filter(t=>t.pinned==="right"),this.center=e.filter(t=>t.pinned===null),this.flatIndexById.clear(),this.getOrderedVisible().forEach((t,o)=>this.flatIndexById.set(t.id,o))}getFlatIndex(e){return this.flatIndexById.get(e)??-1}getColumns(){return this.columns}getColumnDefs(){return this.defs}getRootChildren(){return this.rootChildren}getHeaderDepth(){return this.headerDepth}getColumn(e){return this.columns.find(t=>t.id===e)}getPaneColumns(e){return e==="left"?this.left:e==="right"?this.right:this.center}getOrderedVisible(){return[...this.left,...this.center,...this.right]}getRowGroupColumns(){return this.getOrderedVisible().filter(e=>e.colDef.rowGroup===!0)}getAggColumns(){return this.getOrderedVisible().filter(e=>e.colDef.aggFunc!=null&&e.colDef.rowGroup!==!0)}hasColSpan(){return this.center.some(e=>e.colDef.colSpan!=null)}getGroupLabelColumn(){let e=this.getOrderedVisible();return this.center.find(t=>!t.hasCheckbox&&!t.isDetailToggle)??e.find(t=>!t.hasCheckbox&&!t.isDetailToggle)??e[0]}paneOf(e){return e.pinned==="left"?"left":e.pinned==="right"?"right":"center"}computeLayout(e){this.viewportWidth=e;let t=0;for(let c of[...this.left,...this.right])c.currentWidth=A(c.manualWidth??c.colDef.width??150,this.widthInputOf(c)),t+=c.currentWidth;let o=Math.max(0,e-t),r=this.center.filter(c=>!c.colDef.suppressSizeToFit),n=this.center.filter(c=>c.colDef.suppressSizeToFit),s=0;for(let c of n)c.currentWidth=A(c.manualWidth??c.colDef.width??150,this.widthInputOf(c)),s+=c.currentWidth;let a=r.map(c=>this.widthInputOf(c)),l=Math.max(0,o-s),d=this.core.options.columnLayout==="fit"?Te(a,l):be(a,l);r.forEach((c,u)=>{c.currentWidth=d[u]})}widthInputOf(e){let t=e.colDef;return e.manualWidth!=null?{width:e.manualWidth,minWidth:t.minWidth,maxWidth:t.maxWidth}:{width:t.width,minWidth:t.minWidth,maxWidth:t.maxWidth,flex:t.flex}}setColumnWidth(e,t){e.manualWidth=A(t,this.widthInputOf(e))}setColumnVisibility(e,t){let o=this.getColumn(e);!o||o.hide===!t||(o.hide=!t,this.regroup())}moveColumn(e,t){let o=this.getColumn(e);if(!o)return!1;let r=this.paneOf(o),n=u=>o.parentGroup?!0:this.paneOf(u)===r,s=o.parentGroup?o.parentGroup.children:this.rootChildren,a=s.filter(u=>u instanceof L&&!u.hide&&n(u)),l=a.indexOf(o);if(l<0)return!1;a.splice(l,1);let d=Math.max(0,Math.min(t,a.length));a.splice(d,0,o);let c=[];return s.forEach((u,h)=>{u instanceof L&&!u.hide&&n(u)&&c.push(h)}),c.length!==a.length?!1:(c.forEach((u,h)=>{s[u]=a[h]}),this.columns=this.collectLeaves(this.rootChildren),this.regroup(),!0)}setColumnPinned(e,t){let o=this.getColumn(e);o&&(o.pinned=t,this.regroup())}getColumnState(){return this.columns.map(e=>{let t=this.sortModel.findIndex(r=>r.colId===e.id),o={colId:e.id,hide:e.hide,width:e.manualWidth??e.currentWidth,pinned:e.pinned};return t>=0?(o.sort=this.sortModel[t].direction,o.sortIndex=t):(o.sort=null,o.sortIndex=null),o})}applyColumnState(e){let t=new Map(e.map(r=>[r.colId,r]));for(let r of this.columns){let n=t.get(r.id);n&&(n.hide!=null&&(r.hide=n.hide),n.width!=null&&(r.manualWidth=n.width),n.pinned!==void 0&&(r.pinned=n.pinned))}let o=[];for(let r of e)r.sort&&this.columns.some(n=>n.id===r.colId)&&o.push({colId:r.colId,direction:r.sort,sortIndex:r.sortIndex??0});o.sort((r,n)=>r.sortIndex-n.sortIndex),this.sortModel=o.map(({colId:r,direction:n})=>({colId:r,direction:n})),this.applyStateOrder(e),this.regroup()}applyStateOrder(e){let t=new Map;e.forEach((r,n)=>t.set(r.colId,n));let o=r=>r.pinned==="left"?"left":r.pinned==="right"?"right":"center";for(let r of["left","center","right"]){let n=this.rootChildren.filter(l=>l instanceof L&&!l.hide&&l.parentGroup===null&&o(l)===r);if(n.length<2)continue;let s=n.slice().sort((l,d)=>(t.get(l.id)??Number.MAX_SAFE_INTEGER)-(t.get(d.id)??Number.MAX_SAFE_INTEGER));if(s.every((l,d)=>l===n[d]))continue;let a=[];this.rootChildren.forEach((l,d)=>{l instanceof L&&!l.hide&&l.parentGroup===null&&o(l)===r&&a.push(d)}),a.forEach((l,d)=>{this.rootChildren[l]=s[d]})}this.columns=this.collectLeaves(this.rootChildren)}resetColumnState(){for(let e of this.columns){e.manualWidth=null,e.hide=e.colDef.hide??!1;let t=e.colDef.pinned;e.pinned=t===!0?"left":t===!1||t==null?null:t}this.sortModel=[],this.regroup()}getSortModel(){return this.sortModel.map(e=>({...e}))}applySortModel(e){if(!e||e.length===0){this.sortModel=[];return}this.sortModel=e.filter(t=>this.columns.some(o=>o.id===t.colId)&&(t.direction==="asc"||t.direction==="desc")).map(t=>({colId:t.colId,direction:t.direction}))}cycleSort(e,t){let o=[...this.sortModel],r=o.findIndex(l=>l.colId===e.id),n=r>=0?o[r].direction:null,s=n===null?"asc":n==="asc"?"desc":null;t&&this.core.options.multiSort?s===null?r>=0&&o.splice(r,1):r>=0?o[r]={colId:e.id,direction:s}:o.push({colId:e.id,direction:s}):(o.length=0,s&&o.push({colId:e.id,direction:s})),this.sortModel=o}};function Jt(i){return i==null?"":String(i).toLowerCase()}function Tr(i,e,t){let o=Jt(i),r=e.map(n=>{let s=(n.value??"").toLowerCase();switch(n.match){case"contains":return o.includes(s);case"notContains":return!o.includes(s);case"equals":return o===s;case"notEquals":return o!==s;case"startsWith":return o.startsWith(s);case"endsWith":return o.endsWith(s);case"blank":return o==="";case"notBlank":return o!=="";default:return!0}});return r.length===0?!0:t==="or"?r.some(Boolean):r.every(Boolean)}function Rr(i,e,t){let o=e.map(r=>{let n=i==null||i==="";if(r.match==="blank")return n;if(r.match==="notBlank")return!n;if(n)return!1;let s=typeof i=="number"?i:Number(i);if(isNaN(s))return!1;let a=r.value;if(a==null||isNaN(a))return!1;switch(r.match){case"equals":return s===a;case"notEquals":return s!==a;case"lessThan":return s<a;case"lessThanOrEqual":return s<=a;case"greaterThan":return s>a;case"greaterThanOrEqual":return s>=a;case"inRange":return s>=a&&s<=(r.value2??a);default:return!0}});return o.length===0?!0:t==="or"?o.some(Boolean):o.every(Boolean)}function Ee(i){if(i==null||i==="")return null;if(i instanceof Date)return isNaN(i.getTime())?null:i.getTime();if(typeof i=="number")return i;let e=Date.parse(String(i));return isNaN(e)?null:e}function Er(i,e,t){let o=e.map(r=>{let n=Ee(i)==null;if(r.match==="blank")return n;if(r.match==="notBlank")return!n;if(n)return!1;let s=Ee(i),a=r.value!=null?Ee(r.value):null;if(a==null)return!1;switch(r.match){case"equals":return s===a;case"notEquals":return s!==a;case"lessThan":return s<a;case"greaterThan":return s>a;case"inRange":{let l=r.value2!=null?Ee(r.value2):null;return l!=null?s>=a&&s<=l:s>=a}default:return!0}});return o.length===0?!0:t==="or"?o.some(Boolean):o.every(Boolean)}function Dr(i,e){return e.length===0?!0:e.some(t=>t==null&&i==null||t===i)}function Et(i,e){let t=e.type!=="set"&&e.operator==="or"?"or":"and";switch(e.type){case"text":return Tr(i,e.conditions,t);case"number":return Rr(i,e.conditions,t);case"date":return Er(i,e.conditions,t);case"set":return Dr(i,e.values);default:return!0}}function Dt(i,e,t,o,r){for(let n of Object.keys(t)){let s=t[n],a=e.find(d=>d.id===n);if(!a)continue;let l=r(i,a);if(!Et(l,s))return!1}if(o&&o.trim()!==""){let n=o.trim().toLowerCase().split(/\s+/);for(let s of n)if(!e.some(l=>Jt(r(i,l)).includes(s)))return!1}return!0}var eo=typeof Intl<"u"?new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"}):null;function ee(i,e){let t=i==null||i==="",o=e==null||e==="";if(t&&o)return 0;if(t)return 1;if(o)return-1;if(typeof i=="number"&&typeof e=="number")return isNaN(i)&&isNaN(e)?0:isNaN(i)?1:isNaN(e)?-1:i-e;if(i instanceof Date&&e instanceof Date)return i.getTime()-e.getTime();if(typeof i=="boolean"&&typeof e=="boolean")return i===e?0:i?1:-1;let r=String(i),n=String(e);return eo?eo.compare(r,n):r.localeCompare(n)}function se(i,e,t,o){let r=new Map;for(let l of t)r.set(l.id,l);let n=[],s=[];for(let l of e){let d=r.get(l.colId);d&&(n.push(d.colDef.comparator??ee),s.push(l.direction))}let a=i.map(l=>({node:l,values:e.map(d=>o(l,r.get(d.colId)))}));return a.sort((l,d)=>{for(let c=0;c<n.length;c++){let u=n[c](l.values[c],d.values[c],l.node,d.node);if(u!==0)return s[c]==="asc"?u:-u}return 0}),a.map(l=>l.node)}function De(i){return i.filter(e=>typeof e=="number"&&!isNaN(e))}var St={sum:i=>De(i).reduce((e,t)=>e+t,0),avg:i=>{let e=De(i);return e.length===0?null:e.reduce((t,o)=>t+o,0)/e.length},count:i=>i.length,min:i=>{let e=De(i);return e.length===0?null:Math.min(...e)},max:i=>{let e=De(i);return e.length===0?null:Math.max(...e)},first:i=>i.length>0?i[0]:null,last:i=>i.length>0?i[i.length-1]:null};function Se(i){let e={...St,...i??{}};return t=>e[t]}function ae(i,e){if(i==null||typeof i!="object")return;let t=i[e];return Array.isArray(t)?t:void 0}var xe=class{constructor(e){this.core=e;this.all=[];this.roots=[];this.childIds=new Map;this.displayed=[];this.nodesById=new Map;this.filterModel={};this.quickFilter=null;this.expandedIds=new Set;this.groupExpandedIds=new Set;this.knownGroupIds=[];this.spanInfo=new Map;this.mastersBuf=[];this.infiniteLastRow=null;this.infiniteRequested=!1;this.infiniteLoading=!1;this.infiniteSeq=0;this.infiniteAbort=null;this.infiniteRetryTimer=null;this.infinitePendingResolve=null;this.treeDepth=new WeakMap;this.rowSequence=new WeakMap;this.treeLoadControllers=new Map;this.treeLoadPromises=new Map;this.pipelineRows=[];this.page=1;this.pageSize=20}resolveRowId(e,t,o){let r=this.core.options.getRowId;if(!r)return o;try{let n=r({data:e,index:t,api:this.core.getApi()});if(typeof n=="string"&&n.length>0)return n;this.core.reportError(new Error("getRowId must return a non-empty string"),"getRowId",{index:t})}catch(n){this.core.reportError(n,"getRowId",{index:t})}return o}get isTree(){return this.core.options.treeData}get isInfinite(){return this.core.options.datasource!=null}getDisplayTotalCount(){if(this.isInfinite){let e=Math.max(0,this.displayed.length-this.all.length);return(this.infiniteLastRow??this.all.length)+e}return this.displayed.length}isLoadingInfinite(){return this.infiniteLoading}startInfinite(){return this.isInfinite?(this.cancelInfiniteRequest(),this.infiniteLastRow=null,this.infiniteRequested=!1,this.all=[],this.roots=[],this.nodesById.clear(),this.expandedIds.clear(),this.core.undoService.clear(),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged(),this.loadBlock(0)):Promise.resolve()}reloadInfinite(){return this.isInfinite?this.startInfinite():Promise.resolve()}setInfiniteLoading(e){this.infiniteLoading=e,this.core.skeleton.setInfiniteLoading(e,this.core.getLocaleText("loading"))}loadBlock(e,t){if(!this.isInfinite||this.infiniteRequested||this.infiniteLastRow!=null&&e>=this.infiniteLastRow)return Promise.resolve();let o=this.core.options.datasource,r=this.core.options.blockSize,n=t??e+r;if(n<=e)return Promise.resolve();let s=++this.infiniteSeq,a=new AbortController;return this.infiniteAbort=a,this.infiniteRequested=!0,this.setInfiniteLoading(!0),new Promise(l=>{let d=!1,c=0;this.infinitePendingResolve=l;let u=p=>{d||(d=!0,s===this.infiniteSeq&&(this.infiniteRequested=!1,this.infiniteAbort=null,this.infinitePendingResolve=null,this.setInfiniteLoading(!1),p!=null&&p?.name!=="AbortError"&&this.core.reportError(p,"datasource.getRows",{startRow:e,endRow:n})),l())},h=()=>{if(d||s!==this.infiniteSeq||a.signal.aborted||this.core.isDestroyed()){u();return}c++;let p=!1,m=f=>{if(!(p||d)){if(p=!0,s!==this.infiniteSeq||a.signal.aborted||this.core.isDestroyed()){u();return}if(c<=this.core.options.datasourceRetryCount){let y=Math.min(this.core.options.datasourceRetryDelay*2**Math.max(0,c-1),3e4);this.infiniteRetryTimer=setTimeout(()=>{this.infiniteRetryTimer=null,h()},y);return}u(f??new Error("Datasource request failed"))}};try{let f=o.getRows({startRow:e,endRow:n,sortModel:this.core.columnModel.getSortModel(),filterModel:this.getFilterModel(),quickFilterText:this.quickFilter,signal:a.signal,onSuccess:(y,v)=>{if(p||d)return;if(p=!0,s!==this.infiniteSeq||this.core.isDestroyed()||a.signal.aborted){u();return}let w=y??[];typeof v=="number"&&v>=0?this.infiniteLastRow=v:w.length<n-e&&(this.infiniteLastRow=e+w.length);let C=this.all.length===0;this.appendInfiniteRows(w),u(),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged(),C&&this.core.relayout(),this.core.headerRenderer.refreshSelectAllCheckbox()},fail:m});f&&typeof f.catch=="function"&&f.catch(m)}catch(f){m(f)}};h()})}cancelInfiniteRequest(){this.infiniteSeq++,this.infiniteRetryTimer!=null&&clearTimeout(this.infiniteRetryTimer),this.infiniteRetryTimer=null,this.infiniteAbort?.abort(),this.infiniteAbort=null,this.infiniteRequested=!1,this.setInfiniteLoading(!1),this.infinitePendingResolve?.(),this.infinitePendingResolve=null}appendInfiniteRows(e){for(let t of e){if(t==null)continue;let o=this.all.length,r=this.resolveRowId(t,o,`inf-${this.core.nextId()}`);if(this.nodesById.has(r)){this.core.reportError(new Error(`Duplicate row id: ${r}`),"datasource.getRows",{rowId:r});continue}let n={id:r,data:t,rowIndex:-1,selected:this.core.selectionService.isSelected(r)};this.all.push(n),this.nodesById.set(r,n),this.roots.push(n)}}checkInfiniteScroll(e){if(!this.isInfinite||this.infiniteRequested)return;let t=this.all.length;if(this.infiniteLastRow!=null&&t>=this.infiniteLastRow)return;let o=this.core.options.infiniteBufferRows;if(e+o<t&&e<t)return;let r=this.core.options.blockSize,n=this.infiniteLastRow==null?t+r:Math.min(this.infiniteLastRow,t+r);this.loadBlock(t,n)}onServerParamsChanged(){return this.reloadInfinite()}onDatasourceChanged(){return this.cancelInfiniteRequest(),this.isInfinite?this.startInfinite():(this.infiniteLastRow=null,this.setRowData(this.core.options.rowData),this.core.bodyRenderer.onDataChanged(),Promise.resolve())}destroy(){this.cancelInfiniteRequest(),this.cancelTreeLoads()}setRowData(e){this.cancelTreeLoads(),this.core.changeTracker.clear();let t=this.core.options.getRowId,o=this.core.options.childrenKey,r=[],n=[],s=new Map,a=new Map,l=0,d=(c,u,h)=>{let p=l++,m=this.resolveRowId(c,p,`auto-${p}`);if(s.has(m))return this.core.reportError(new Error(`Duplicate row id: ${m}`),"rowData",{rowId:m,index:p}),null;let f=this.isTree?ae(c,o):void 0,y={id:m,data:c,rowIndex:-1,selected:!1,treeChildrenLoaded:Array.isArray(f)};if(this.treeDepth.set(y,u),r.push(y),s.set(m,y),h!=null){let v=a.get(h)??[];v.push(m),a.set(h,v)}else n.push(y);if(this.isTree&&Array.isArray(f))for(let v of f)v!=null&&d(v,u+1,m);return y};(e??[]).forEach(c=>{c!=null&&d(c,0,null)}),this.all=r,this.roots=n,this.childIds=a,this.nodesById=s,this.core.undoService.clear();for(let c of[...this.expandedIds])s.has(c)||this.expandedIds.delete(c);if(this.core.options.defaultExpandAll)for(let c of r)this.getChildrenCount(c.id)>0&&this.expandedIds.add(c.id);this.core.selectionService.onRowsRebuilt(t!=null),this.refreshPipeline()}getChildrenIds(e){return this.childIds.get(e)??[]}getChildrenCount(e){return this.childIds.get(e)?.length??0}hasChildren(e){return this.getChildrenCount(e)>0}isTreeRowLoading(e){return this.nodesById.get(e)?.treeLoading===!0}cancelTreeLoads(){for(let e of this.treeLoadControllers.values())e.abort();this.treeLoadControllers.clear(),this.treeLoadPromises.clear()}loadTreeChildren(e,t=!1){let o=this.nodesById.get(e),r=this.core.options.loadTreeChildren;if(!this.isTree||!o?.data||!r)return Promise.resolve([]);if(!t&&o.treeChildrenLoaded)return Promise.resolve(this.getChildrenIds(e).flatMap(l=>{let d=this.nodesById.get(l)?.data;return d==null?[]:[d]}));let n=this.treeLoadPromises.get(e);if(n&&!t)return n;this.treeLoadControllers.get(e)?.abort();let s=new AbortController;this.treeLoadControllers.set(e,s),o.treeLoading=!0,o.treeLoadError=void 0,this.core.bodyRenderer.onDataChanged();let a=Promise.resolve().then(()=>r({data:o.data,node:o,api:this.core.getApi(),signal:s.signal})).then(l=>{if(s.signal.aborted||this.core.isDestroyed())return[];if(!Array.isArray(l))throw new TypeError("[MachTable] loadTreeChildren must resolve to an array.");return this.replaceTreeChildren(o,l),o.treeChildrenLoaded=!0,o.treeLoadError=void 0,this.core.emit("treeChildrenLoaded",{rowId:e,rowNode:o,children:l}),l}).catch(l=>{if(s.signal.aborted||l?.name==="AbortError")return[];throw o.treeLoadError=l,o.treeChildrenLoaded=!1,this.core.reportError(l,"treeData.loadChildren",{rowId:e}),this.core.emit("treeChildrenLoadFailed",{rowId:e,rowNode:o,error:l}),l}).finally(()=>{this.treeLoadControllers.get(e)===s&&(this.treeLoadControllers.delete(e),this.treeLoadPromises.delete(e),o.treeLoading=!1,this.core.bodyRenderer.onDataChanged())});return this.treeLoadPromises.set(e,a),a}replaceTreeChildren(e,t){let o=new Set,r=[...this.getChildrenIds(e.id)];for(;r.length>0;){let s=r.pop();o.has(s)||(o.add(s),r.push(...this.getChildrenIds(s)))}this.validateTreeChildren(t,o);for(let s of o)this.treeLoadControllers.get(s)?.abort(),this.treeLoadControllers.delete(s),this.treeLoadPromises.delete(s),this.childIds.delete(s),this.nodesById.delete(s),this.expandedIds.delete(s);this.childIds.delete(e.id);let n=this.getTreeDepth(e)+1;for(let s of t)s!=null&&this.buildChildNodes(e,s,n);this.reindexAll(),this.core.selectionService.onRowsRebuilt(this.core.options.getRowId!=null),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged()}validateTreeChildren(e,t){let o=this.core.options.getRowId,r=o?new Set([...this.nodesById.keys()].filter(l=>!t.has(l))):null,n=new WeakSet,s=[...e],a=0;for(;s.length>0;){let l=s.pop();if(l==null)continue;if(typeof l=="object"){if(n.has(l))throw new TypeError("[MachTable] Lazy tree children contain a cyclic object graph.");n.add(l)}if(o&&r){let c=o({data:l,index:a++,api:this.core.getApi()});if(typeof c!="string"||c.length===0)throw new TypeError("[MachTable] getRowId must return a non-empty string for lazy tree children.");if(r.has(c))throw new Error(`Duplicate row id: ${c}`);r.add(c)}let d=ae(l,this.core.options.childrenKey);d&&s.push(...d)}}applyTransaction(e,t=!0){let o=this.core.options.getRowId,r=[],n=[];if(e.remove?.length){let s=new Set,a=new Set,l=c=>{if(o){let h=[this.resolveRowId(c,-1,`__missing_remove_${this.core.nextId()}`)];for(;h.length>0;){let p=h.pop();if(!s.has(p)){s.add(p);for(let m of this.childIds.get(p)??[])h.push(m)}}}else{let u=[c];for(;u.length>0;){let h=u.pop();a.add(h);let p=this.isTree?ae(h,this.core.options.childrenKey):void 0;if(p)for(let m of p)u.push(m)}}};e.remove.forEach(l),this.all=this.all.filter(c=>{let u=s.has(c.id)||c.data!=null&&a.has(c.data);return u&&(n.push(c.id),this.nodesById.delete(c.id),this.childIds.delete(c.id)),!u});let d=new Set(this.all);this.roots=this.roots.filter(c=>d.has(c))}if(e.update?.length)for(let s of e.update){let a;o?a=this.nodesById.get(this.resolveRowId(s,-1,`__missing_update_${this.core.nextId()}`)):a=this.all.find(l=>l.data===s),a&&(a.data=s,n.push(a.id),this.core.bodyRenderer.invalidateRowHeight(a),r.push(a))}if(e.add?.length){let s=e.addIndex!=null?Math.max(0,Math.min(e.addIndex,this.roots.length)):this.roots.length,a=[];e.add.forEach((l,d)=>{let c=this.resolveRowId(l,s+d,`add-${this.core.nextId()}`);if(this.nodesById.has(c)){this.core.reportError(new Error(`Duplicate row id: ${c}`),"transaction.add",{rowId:c});return}let u={id:c,data:l,rowIndex:-1,selected:!1};this.nodesById.set(c,u),this.treeDepth.set(u,0);let h=this.isTree?ae(l,this.core.options.childrenKey):void 0;if(h)for(let p of h)p!=null&&this.buildChildNodes(u,p,1);a.push(u)}),this.roots.splice(s,0,...a),this.reindexAll()}if(t){this.refreshPipeline();for(let s of r)s.rowIndex>=0&&this.core.bodyRenderer.refreshRows([s.rowIndex])}this.core.changeTracker.clearRows(n)}applyTransactions(e){if(e.length!==0){for(let t of e)this.applyTransaction(t,!1);this.refreshPipeline()}}buildChildNodes(e,t,o){let r=this.resolveRowId(t,-1,`add-${this.core.nextId()}`);if(this.nodesById.has(r)){this.core.reportError(new Error(`Duplicate row id: ${r}`),"transaction.add",{rowId:r});return}let n=ae(t,this.core.options.childrenKey),s={id:r,data:t,rowIndex:-1,selected:!1,treeChildrenLoaded:Array.isArray(n)};this.nodesById.set(r,s),this.treeDepth.set(s,o);let a=this.childIds.get(e.id)??[];if(a.push(s.id),this.childIds.set(e.id,a),!!n)for(let l of n)l!=null&&this.buildChildNodes(s,l,o+1)}reindexAll(){this.all=[];let e=t=>{this.all.push(t),this.nodesById.has(t.id)||this.nodesById.set(t.id,t);for(let o of this.childIds.get(t.id)??[]){let r=this.nodesById.get(o);r&&e(r)}};for(let t of this.roots)e(t)}setFilterModel(e){let t=JSON.stringify(this.filterModel);return this.filterModel=e?{...e}:{},JSON.stringify(this.filterModel)!==t}getFilterModel(){return{...this.filterModel}}setQuickFilter(e){let t=e!=null&&e.trim()!==""?e:null;return t===this.quickFilter?!1:(this.quickFilter=t,!0)}getQuickFilter(){return this.quickFilter}isFilterPresent(){return Object.keys(this.filterModel).length>0||this.quickFilter!=null}refreshPipeline(){let e=this.core.columnModel.getOrderedVisible(),t=(n,s)=>this.core.getCellValue(n,s);if(this.isInfinite){this.all.forEach((n,s)=>{n.rowIndex=s,this.rowSequence.set(n,s+1)}),this.displayed=this.all,this.pipelineRows=this.all,this.spanInfo.clear(),this.core.emit("modelUpdated",{rowCount:this.all.length});return}let o;if(this.isTree)o=this.buildTreeDisplay(e,t);else{o=this.all,this.isFilterPresent()&&!this.core.options.manualFiltering&&(o=o.filter(l=>Dt(l,e,this.filterModel,this.quickFilter,t)));let s=this.core.columnModel.getSortModel();if(s.length>0&&!this.core.options.manualSorting)try{o=se(o,s,e,t)}catch(l){this.core.reportError(l,"comparator",{sortModel:s})}let a=this.core.columnModel.getRowGroupColumns();if(a.length>0)o=this.buildGrouped(o,a);else if(this.core.options.masterDetail){let l=[];for(let d of o)l.push(d),this.expandedIds.has(d.id)&&this.isRowExpandable(d)&&l.push({id:`__detail__${d.id}`,data:d.data,rowIndex:-1,selected:!1,isDetail:!0,masterId:d.id});o=l}}for(let n of this.all)n.rowIndex=-1;let r=0;o.forEach((n,s)=>{n.rowIndex=s,!n.isDetail&&!n.isGroup&&(r++,this.rowSequence.set(n,r))}),this.pipelineRows=o,this.applyPagination(),this.computeSpans(t),this.core.emit("modelUpdated",{rowCount:o.length})}get paginationActive(){return this.core.options.paginationEnabled&&!this.isInfinite}applyPagination(){if(!this.paginationActive){this.displayed=this.pipelineRows;return}let e=this.effectivePageSize(),t=this.getPageCount();if(this.page>t&&(this.page=t),this.page<1&&(this.page=1),this.core.options.paginationPage=this.page,this.core.options.paginationMode==="server"){this.pipelineRows.forEach((n,s)=>{n.rowIndex=s}),this.displayed=this.pipelineRows;return}let o=(this.page-1)*e,r=this.pipelineRows.slice(o,o+e);r.forEach((n,s)=>{n.rowIndex=s}),this.displayed=r}effectivePageSize(){return this.pageSize=this.core.options.paginationPageSize,Math.max(1,this.pageSize)}getCurrentPage(){return this.paginationActive?this.page:1}getTotalRowCount(){return this.isInfinite?this.getDisplayTotalCount():this.paginationActive&&this.core.options.paginationMode==="server"?this.core.options.paginationTotal:this.pipelineRows.length}getPageCount(){return this.paginationActive?Math.max(1,Math.ceil(this.getTotalRowCount()/this.effectivePageSize())):1}getPipelineRows(){return this.pipelineRows}setPage(e,t=!1){if(!this.paginationActive)return;let o=this.getPageCount(),r=Math.max(1,Math.min(Math.round(e)||1,o));r!==this.page&&(this.page=r,this.core.options.paginationPage=r,this.applyPagination(),this.core.bodyRenderer.onDataChanged(),this.core.bodyRenderer.scrollToIndex(0,"top"),t||this.emitPaginationChanged())}setPageSize(e){if(!this.paginationActive)return;let t=Math.max(1,Math.round(e)||this.effectivePageSize()),o=(this.page-1)*this.effectivePageSize();this.core.options.paginationPageSize=t,this.pageSize=t,this.page=Math.floor(o/t)+1,this.core.options.paginationPage=this.page,this.applyPagination(),this.core.bodyRenderer.onDataChanged(),this.emitPaginationChanged()}restorePagination(e,t){this.pageSize=Math.max(1,Math.round(t)||1),this.core.options.paginationPageSize=this.pageSize,this.page=Math.max(1,Math.round(e)||1),this.core.options.paginationPage=this.page}setPaginationEnabled(e){this.core.options.paginationEnabled!==e&&(this.core.options.paginationEnabled=e&&!this.isInfinite,this.core.options.paginationEnabled&&(this.page=1),this.applyPagination(),this.core.bodyRenderer.onDataChanged(),this.emitPaginationChanged())}onPaginationOptionsChanged(){this.paginationActive&&(this.page=this.core.options.paginationMode==="server"?this.core.options.paginationPage:1,this.applyPagination(),this.core.bodyRenderer.onDataChanged(),this.emitPaginationChanged())}emitPaginationChanged(){this.core.emit("paginationChanged",{page:this.getCurrentPage(),pageSize:this.effectivePageSize(),pageCount:this.getPageCount(),total:this.getTotalRowCount()})}buildTreeDisplay(e,t){let o=this.core.options.manualSorting?[]:this.core.columnModel.getSortModel(),r=new Map,n=this.isFilterPresent()&&!this.core.options.manualFiltering,s=d=>{let c=r.get(d.id);if(c!==void 0)return c;let u=!0;if(n){u=Dt(d,e,this.filterModel,this.quickFilter,t);for(let h of this.childIds.get(d.id)??[]){let p=this.nodesById.get(h);p&&s(p)&&(u=!0)}}return r.set(d.id,u),u},a=[],l=d=>{let c=d;o.length>0&&(c=se(d,o,e,t));for(let u of c)if(s(u)&&(a.push(u),this.expandedIds.has(u.id))){let h=(this.childIds.get(u.id)??[]).map(p=>this.nodesById.get(p)).filter(p=>p!=null);l(h)}};return l(this.roots),a}computeSpans(e){if(this.spanInfo.clear(),this.isTree||this.core.options.masterDetail||this.core.columnModel.getRowGroupColumns().length>0)return;let t=this.core.columnModel.getOrderedVisible().filter(s=>s.colDef.rowSpan!=null||s.colDef.autoRowSpan===!0);if(t.length===0)return;let o=this.mastersBuf,r=0;for(let s of this.displayed)!s.isDetail&&!s.isGroup&&(o[r++]=s);o.length=r;let n=r;if(n!==0)for(let s of t){let a=new Int32Array(n),l=0;for(;l<n;){let d=o[l],c=e(d,s),u=1;if(s.colDef.rowSpan)try{let h=s.colDef.rowSpan({api:this.core.getApi(),colDef:s.colDef,column:s,node:d,data:d.data,value:c,rowIndex:d.rowIndex});u=Math.max(1,Math.min(Math.round(h)||1,n-l))}catch(h){this.core.reportError(h,"rowSpan",{colId:s.id,rowId:d.id})}else if(s.colDef.autoRowSpan)for(;l+u<n&&c!=null&&c!==""&&ee(c,e(o[l+u],s))===0;)u++;a[l]=u;for(let h=1;h<u;h++)a[l+h]=-1;l+=u}this.spanInfo.set(s.id,a)}}getSpanInfo(e){return this.spanInfo.get(e)}getRowSeq(e){return this.rowSequence.get(e)??0}getTreeDepth(e){return this.treeDepth.get(e)??0}buildGrouped(e,t){let o=Se(this.core.options.aggFuncs),r=this.core.columnModel.getAggColumns();this.knownGroupIds=[];let n=a=>{let l={};for(let d of r){let c=o(d.colDef.aggFunc);if(c)try{l[d.id]=c(a.map(u=>this.core.getCellValue(u,d)))}catch(u){this.core.reportError(u,"aggFunc",{colId:d.id,aggFunc:d.colDef.aggFunc}),l[d.id]=null}}return l},s=(a,l,d)=>{if(l>=t.length)return{display:a,leaves:a};let c=t[l],u=new Map,h=[];for(let f of a){let y=this.core.getCellValue(f,c),v=y==null?"(\u7A7A)":String(y),w=u.get(v);w||(w=[],u.set(v,w),h.push(v)),w.push(f)}h.sort((f,y)=>f.localeCompare(y,void 0,{numeric:!0,sensitivity:"base"}));let p=[],m=[];for(let f of h){let y=u.get(f),v=`${d}/g${l}:${f}`;this.knownGroupIds.push(v);let w=s(y,l+1,v),C={id:v,data:null,rowIndex:-1,selected:!1,isGroup:!0,groupLevel:l,groupKey:f,leafNodes:w.leaves,aggValues:n(w.leaves)};p.push(C),this.groupExpandedIds.has(v)&&p.push(...w.display),m.push(...w.leaves)}return{display:p,leaves:m}};return s(e,0,"").display}isRowExpandable(e){if(this.isTree){if(this.hasChildren(e.id)||e.treeLoading)return!0;if(e.treeChildrenLoaded||!e.data||!this.core.options.loadTreeChildren)return!1;let o=this.core.options.isTreeRowExpandable;if(!o)return!1;try{return o({data:e.data,node:e,api:this.core.getApi()})}catch(r){return this.core.reportError(r,"isTreeRowExpandable",{rowId:e.id}),!1}}if(!this.core.options.masterDetail)return!1;let t=this.core.options.isRowExpandable;if(t)try{return t({data:e.data,node:e,api:this.core.getApi()})}catch(o){return this.core.reportError(o,"isRowExpandable",{rowId:e.id}),!1}return!0}isRowExpanded(e){return this.expandedIds.has(e)}getExpandedRowIds(){return[...this.expandedIds]}getExpandedGroupIds(){return[...this.groupExpandedIds]}restoreExpansion(e,t){this.expandedIds=new Set(e.filter(o=>this.nodesById.has(o))),this.groupExpandedIds=new Set(t)}expandRow(e){return this.setDetailExpanded(e,!0)}collapseRow(e){return this.setDetailExpanded(e,!1)}toggleDetail(e){return this.setDetailExpanded(e,!this.expandedIds.has(e))}setDetailExpanded(e,t){let o=this.nodesById.get(e);return!o||t&&!this.isRowExpandable(o)?!1:(t===this.expandedIds.has(e)||(t?this.expandedIds.add(e):this.expandedIds.delete(e),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged(),this.core.emit("detailToggled",{rowId:e,rowNode:o,expanded:t}),t&&this.isTree&&!this.hasChildren(e)&&!o.treeLoading&&this.loadTreeChildren(e).catch(()=>{})),t)}expandAllDetails(){let e=!1;for(let t of this.all)!this.expandedIds.has(t.id)&&this.isRowExpandable(t)&&(this.expandedIds.add(t.id),e=!0);e&&(this.refreshPipeline(),this.core.bodyRenderer.onDataChanged())}collapseAllDetails(){this.expandedIds.size!==0&&(this.expandedIds.clear(),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged())}toggleGroup(e){return this.setGroupExpanded(e,!this.groupExpandedIds.has(e))}isGroupExpanded(e){return this.groupExpandedIds.has(e)}getGroupNode(e){return this.displayed.find(t=>t.isGroup&&t.id===e)}expandAllGroups(){if(this.knownGroupIds.length===0)return;let e=!1;for(let t of this.knownGroupIds)this.groupExpandedIds.has(t)||(this.groupExpandedIds.add(t),e=!0);e&&(this.refreshPipeline(),this.core.bodyRenderer.onDataChanged())}collapseAllGroups(){this.groupExpandedIds.size!==0&&(this.groupExpandedIds.clear(),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged())}setGroupExpanded(e,t){return!this.knownGroupIds.includes(e)||t===this.groupExpandedIds.has(e)||(t?this.groupExpandedIds.add(e):this.groupExpandedIds.delete(e),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged()),t}reorderRowsByDisplayed(e,t){if(this.isTree)return!1;let o=this.getDisplayedRow(e),r=this.getDisplayedRow(t);if(!o||!r||o.isDetail||r.isDetail||o.isGroup||r.isGroup)return!1;let n=this.all.indexOf(o),s=this.all.indexOf(r);if(n<0||s<0)return!1;if(s>n){let l=s;for(;l+1<this.all.length&&this.all[l+1].isDetail;)l++;s=l}if(n===s)return!1;this.all.splice(n,1);let a=this.all.indexOf(r);return this.all.splice(s>n?a+1:a,0,o),this.refreshPipeline(),this.core.bodyRenderer.onDataChanged(),!0}getAllNodes(){return this.all}getRootNodes(){return this.roots}getDisplayedRows(){return this.displayed}getDisplayedRowCount(){return this.displayed.length}getDisplayedRow(e){return this.displayed[e]}getNodeById(e){return this.nodesById.get(e)}forEachNode(e){this.all.forEach(e)}forEachNodeAfterFilterAndSort(e){let t=0;for(let o of this.pipelineRows)o.isDetail||o.isGroup||e(o,t++)}};var Me=class{constructor(e){this.core=e;this.selectedIds=new Set;this.anchorId=null;this.indeterminateIds=new Set}isSelected(e){return this.selectedIds.has(e)}isIndeterminate(e){return this.indeterminateIds.has(e)}isSelectable(e){let t=this.findSelectableColumn(e),o=t?.colDef.selectable;if(!t||!o)return!0;try{return o({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:e.rowIndex})}catch(r){return this.core.reportError(r,"selectable",{rowId:e.id,colId:t?.id}),!1}}findSelectableColumn(e){if(!(e.isGroup||e.isDetail))return this.core.columnModel.getOrderedVisible().find(t=>t.hasCheckbox&&t.colDef.selectable!=null)}getSelectedNodes(){return this.core.rowModel.getAllNodes().filter(e=>this.selectedIds.has(e.id))}getSelectedRows(){return this.getSelectedNodes().filter(e=>e.data!=null).map(e=>e.data)}getSelectedIds(){return[...this.selectedIds]}restoreSelection(e){let t=new Set(e),o=this.core.rowModel.getAllNodes().filter(r=>t.has(r.id)&&!r.isDetail&&!r.isGroup).map(r=>({node:r,selected:!0}));this.applySelection(o,!0)}onRowsRebuilt(e){if(!e)this.selectedIds.clear(),this.anchorId=null;else{let t=new Set(this.core.rowModel.getAllNodes().map(o=>o.id));for(let o of[...this.selectedIds])t.has(o)||this.selectedIds.delete(o);this.anchorId!=null&&!t.has(this.anchorId)&&(this.anchorId=null)}for(let t of this.core.rowModel.getAllNodes())t.selected=this.selectedIds.has(t.id);this.recomputeTriState()}getGroupSelectionState(e){let t=e.leafNodes??[];if(t.length===0)return{all:!1,some:!1};let o=0,r=0;for(let n of t)this.isSelectable(n)&&(o++,this.selectedIds.has(n.id)&&r++);return o===0?{all:!1,some:!1}:{all:r===o,some:r>0}}setGroupSelected(e,t){let o=(e.leafNodes??[]).filter(r=>this.isSelectable(r));o.length!==0&&this.applySelection(o.map(r=>({node:r,selected:t})))}setNodeSelected(e,t,o=!1){this.applySelection([{node:e,selected:t,clearOthers:o}])}selectNodeById(e,t=!0,o=!0){let r=this.core.rowModel.getNodeById(e);r&&this.setNodeSelected(r,t,o)}onRowClick(e,t,o){let r=this.core.options.rowSelection;if(r==="none"||!this.isSelectable(e))return;if(o){let s=r==="single";this.applySelection([{node:e,selected:s?!0:!e.selected,clearOthers:s}]),this.anchorId=e.id;return}let n=r==="multiple";if(n&&(t.ctrlKey||t.metaKey)){this.applySelection([{node:e,selected:!e.selected}]),this.anchorId=e.id;return}if(n&&t.shiftKey&&this.anchorId!=null){let s=this.core.rowModel.getNodeById(this.anchorId);if(s&&s.rowIndex>=0&&e.rowIndex>=0){let a=Math.min(s.rowIndex,e.rowIndex),l=Math.max(s.rowIndex,e.rowIndex),d=[];for(let c=a;c<=l;c++){let u=this.core.rowModel.getDisplayedRow(c);u&&!u.isDetail&&!u.isGroup&&this.isSelectable(u)&&d.push({node:u,selected:!0})}this.applySelection(d);return}}this.applySelection([{node:e,selected:!0,clearOthers:!0}]),this.anchorId=e.id}selectAll(e=!0){let t=this.core.options.rowSelection;if(t==="none")return;let r=(e?this.core.rowModel.getDisplayedRows():this.core.rowModel.getAllNodes()).filter(n=>!n.isDetail&&!n.isGroup&&this.isSelectable(n));if(r.length!==0){if(t==="single"){this.applySelection([{node:r[0],selected:!0,clearOthers:!0}]);return}this.applySelection(r.map(n=>({node:n,selected:!0})))}}deselectAll(){this.applySelection([],!0)}isSelectAllActive(){let t=this.core.rowModel.getDisplayedRows().filter(o=>!o.isDetail&&!o.isGroup).filter(o=>this.isSelectable(o));if(t.length===0)return!1;if(this.core.rowModel.isInfinite){let o=this.core.rowModel.getDisplayTotalCount();if(t.length<o)return!1}return t.every(o=>this.selectedIds.has(o.id))}isSelectAllIndeterminate(){let t=this.core.rowModel.getDisplayedRows().filter(r=>!r.isDetail&&!r.isGroup).filter(r=>this.isSelectable(r)),o=t.reduce((r,n)=>r+(this.selectedIds.has(n.id)?1:0),0);if(o===0)return!1;if(this.core.rowModel.isInfinite){let r=this.core.rowModel.getDisplayTotalCount();if(t.length<r)return!0}return o>0&&o<t.length}applySelectionPublic(e,t=!1){this.applySelection(e,t)}applySelection(e,t=!1){let o=new Set(this.selectedIds),r=t||e.some(u=>u.clearOthers),n=this.core.rowModel.isTree&&this.core.options.autoCheckedChildren;if(r){let u=t?new Set:new Set(e.filter(h=>h.selected).flatMap(h=>n?this.subtreeIds(h.node):[h.node.id]));this.selectedIds=u}for(let u of e){if(!this.isSelectable(u.node))continue;let h=n?this.subtreeIds(u.node):[u.node.id];for(let p of h)u.selected?this.selectedIds.add(p):this.selectedIds.delete(p)}let s=new Set;for(let u of new Set([...o,...this.selectedIds]))o.has(u)!==this.selectedIds.has(u)&&s.add(u);let a=new Map;for(let u of this.core.rowModel.getAllNodes())a.set(u.id,u.selected);let l=new Set(this.indeterminateIds);this.recomputeTriState();let d=[],c=new Set([...s,...l,...this.indeterminateIds]);for(let u of this.core.rowModel.getAllNodes()){let h=this.selectedIds.has(u.id);u.selected=h,(c.has(u.id)||a.get(u.id)!==h)&&u.rowIndex>=0&&d.push(u.rowIndex)}s.size>0&&(this.core.bodyRenderer.refreshRows(d),this.core.headerRenderer.refreshSelectAllCheckbox(),this.core.emit("selectionChanged",{selectedNodes:this.getSelectedNodes(),selectedRows:this.getSelectedRows()}))}subtreeIds(e){let t=[e.id],o=r=>{for(let n of this.core.rowModel.getChildrenIds(r))t.push(n),o(n)};return o(e.id),t}recomputeTriState(){if(this.indeterminateIds.clear(),!this.core.rowModel.isTree)return;let e=t=>{let o=this.core.rowModel.getChildrenIds(t);if(o.length===0)return{all:this.selectedIds.has(t),some:this.selectedIds.has(t)};let r=!0,n=!1;for(let s of o){let a=e(s);a.all?n=!0:(a.some&&(n=!0),r=!1)}return n&&!r&&this.indeterminateIds.add(t),r?this.selectedIds.add(t):this.selectedIds.delete(t),{all:r,some:n}};for(let t of this.core.rowModel.getRootNodes())e(t.id);for(let t of this.core.rowModel.getAllNodes())t.selected=this.selectedIds.has(t.id)}};function g(i,e,t){let o=document.createElement(i);if(e&&(o.className=e),t)for(let r of Object.keys(t))o.setAttribute(r,t[r]);return o}function x(i,e,t){return i<e?e:i>t?t:i}var to='<svg viewBox="0 0 16 16" width="14" height="14" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3.5h12L9.5 8v4.5L6.5 14V8L2 3.5z"/></svg>',oo='<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor"><path d="M8 3l4 5H4l4-5z"/></svg>',ro='<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor"><path d="M8 13l4-5H4l4 5z"/></svg>';var Ie=class{constructor(e){this.core=e;this.active=null;this.rafId=0;this.pendingWidth=0;this.onMove=e=>{let t=this.active;if(!t)return;let o=t.column.colDef,r=o.minWidth??80,n=o.maxWidth??Number.MAX_SAFE_INTEGER;this.pendingWidth=x(t.startWidth+(e.clientX-t.startX),r,n),!this.rafId&&(this.rafId=requestAnimationFrame(()=>{this.rafId=0;let s=this.active;s&&(this.core.columnModel.setColumnWidth(s.column,this.pendingWidth),this.core.relayoutColumns(),this.core.emit("columnResized",{colId:s.column.id,width:this.pendingWidth,finished:!1}))}))};this.onUp=e=>{let t=this.active;if(t){this.active=null,this.rafId&&(cancelAnimationFrame(this.rafId),this.core.columnModel.setColumnWidth(t.column,this.pendingWidth),this.core.relayoutColumns()),this.rafId=0,t.handle.removeEventListener("pointermove",this.onMove),t.handle.removeEventListener("pointerup",this.onUp),t.handle.removeEventListener("pointercancel",this.onUp);try{t.handle.releasePointerCapture(e.pointerId)}catch{}this.core.skeleton.root.classList.remove("mach-root--resizing"),this.core.emit("columnResized",{colId:t.column.id,width:t.column.manualWidth??t.column.currentWidth,finished:!0}),this.core.persistColumnState()}}}startResize(e,t){let o=e.currentTarget,r=t.colDef,n=t.manualWidth??t.currentWidth,s=r.minWidth??80;n<s&&r.width==null&&(t.manualWidth=n),this.active={column:t,startX:e.clientX,startWidth:t.manualWidth??n,pointerId:e.pointerId,handle:o},o.setPointerCapture(e.pointerId),o.addEventListener("pointermove",this.onMove),o.addEventListener("pointerup",this.onUp),o.addEventListener("pointercancel",this.onUp),this.core.skeleton.root.classList.add("mach-root--resizing")}destroy(){if(cancelAnimationFrame(this.rafId),this.rafId=0,this.active){let e=this.active;this.active=null,e.handle.removeEventListener("pointermove",this.onMove),e.handle.removeEventListener("pointerup",this.onUp),e.handle.removeEventListener("pointercancel",this.onUp)}this.core.skeleton.root?.classList.remove("mach-root--resizing")}};var no=6,ke=class{constructor(e){this.core=e;this.pending=null;this.dragging=null;this.suppressClick=!1;this.onMove=e=>{if(this.dragging){this.updateIndicator(e);return}let t=this.pending;t&&(Math.abs(e.clientX-t.startX)<no&&Math.abs(e.clientY-t.startY)<no||this.startDrag(e))};this.onUp=()=>{let e=this.dragging;this.pending=null,this.cleanup(),e&&(this.dragging=null,e.cellEl.classList.remove("mach-header-cell--dragging"),e.indicator.remove(),this.core.skeleton.root.classList.remove("mach-root--dragging"),e.targetIndex>=0&&this.core.moveColumn(e.column.id,e.targetIndex))}}onPointerDown(e,t){e.button===0&&t.movable&&(this.pending={column:t,startX:e.clientX,startY:e.clientY},window.addEventListener("pointermove",this.onMove),window.addEventListener("pointerup",this.onUp),window.addEventListener("pointercancel",this.onUp))}didDrag(){let e=this.suppressClick;return this.suppressClick=!1,e}startDrag(e){let t=this.pending;if(!t)return;let o=this.findHeaderCell(t.column);if(!o||!o.parentElement){this.cleanup();return}this.suppressClick=!0;let r=g("div","mach-drop-indicator");o.parentElement.appendChild(r),o.classList.add("mach-header-cell--dragging"),this.core.skeleton.root.classList.add("mach-root--dragging"),this.dragging={column:t.column,cellEl:o,indicator:r,targetIndex:-1},this.updateIndicator(e)}findHeaderCell(e){let t=this.core.bodyRenderer.paneForColumn(e);return this.core.skeleton.headerRowContainers[t].querySelector(`.mach-header-cell[data-col-id="${Sr(e.id)}"]`)}updateIndicator(e){let t=this.dragging;if(!t)return;let o=this.core.bodyRenderer.paneForColumn(t.column),n=this.core.skeleton.headerRowContainers[o].getBoundingClientRect(),s=this.core.columnModel.getPaneColumns(o),a=s.indexOf(t.column),l=e.clientX-n.left,d=-1,c=0,u=0;for(let h=0;h<s.length;h++){let p=u+s[h].currentWidth/2;if(l<p){d=h,c=u;break}u+=s[h].currentWidth}d<0&&(d=s.length,c=u),t.targetIndex=d>a?d-1:d,t.indicator.style.left=`${c}px`}cleanup(){window.removeEventListener("pointermove",this.onMove),window.removeEventListener("pointerup",this.onUp),window.removeEventListener("pointercancel",this.onUp)}destroy(){this.cleanup(),this.dragging&&(this.dragging.cellEl.classList.remove("mach-header-cell--dragging"),this.dragging.indicator.remove(),this.core.skeleton.root.classList.remove("mach-root--dragging"),this.dragging=null),this.pending=null}};function Sr(i){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(i):i.replace(/[^a-zA-Z0-9_-]/g,"\\$&")}function io(i,e){let t=i==null?"":String(i);return t.includes(e)||t.includes('"')||t.includes(`
2
+ `)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function le(i){return typeof i!="string"||i===""||/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(i)?i:/^[\s\u0000-\u001f]*[=+\-@]/.test(i)?"'"+i:i}function xt(i,e={}){let t=e.columnSeparator??",",o=e.includeHeader??!0,r=e.protectFormulas??!0,n=[];o&&n.push(i.getHeaderLabels().map(a=>io(a,t)).join(t));for(let a of i.getRowValues())n.push(a.map(l=>io(r?le(l):l,t)).join(t));let s=n.join(`\r
3
+ `);return e.prependBOM?"\uFEFF"+s:s}function xr(i,e){let t=e?le(i):i,o=t==null?"":String(t);return/["\t\n\r]/.test(o)?'"'+o.replace(/"/g,'""')+'"':o}function te(i,e=!0){return i.map(t=>t.map(o=>xr(o,e)).join(" ")).join(`
4
+ `)}function Le(i){return Ae(i," ")}function Pe(i,e=","){return Ae(i,e)}function Ae(i,e){let t=[],o=[],r="",n=!1,s=0;for(;s<i.length;){let a=i[s];if(n){if(a==='"'){if(i[s+1]==='"'){r+='"',s+=2;continue}n=!1,s++;continue}r+=a,s++;continue}if(a==='"'&&r===""){n=!0,s++;continue}if(a===e){o.push(r),r="",s++;continue}if(a===`
5
+ `||a==="\r"){o.push(r),t.push(o),o=[],r="",a==="\r"&&i[s+1]===`
6
+ `?s+=2:s++;continue}r+=a,s++}return(r!==""||o.length>0)&&(o.push(r),t.push(o)),t}function Mr(i){let e=null;try{return e=document.createElement("textarea"),e.value=i,e.style.position="fixed",e.style.opacity="0",document.body.appendChild(e),e.focus(),e.select(),document.execCommand("copy")}catch{return!1}finally{e?.remove()}}async function de(i){try{if(typeof navigator<"u"&&navigator.clipboard?.writeText)return await navigator.clipboard.writeText(i),!0}catch{}return Mr(i)}var Ir=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Enter","F2","Home","End","PageUp","PageDown","Tab"," ","Escape","Delete","Backspace"]),kr=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown"]),Ge=class{constructor(e){this.core=e;this.onCopy=e=>{if(this.core.options.suppressClipboard||this.core.editingService.isEditing())return;let t=this.core.bodyRenderer.getNormalizedRangeOrFocus();if(!t)return;let o=this.core.buildRangeTsv(t),r=e.clipboardData;r&&typeof r.setData=="function"?r.setData("text/plain",o):de(o),e.preventDefault()};this.onCut=e=>{if(this.core.options.suppressClipboard||this.core.editingService.isEditing())return;let t=this.core.bodyRenderer.getNormalizedRangeOrFocus();if(!t)return;let o=this.core.buildRangeTsv(t),r=e.clipboardData;r&&typeof r.setData=="function"?r.setData("text/plain",o):de(o),this.core.clearRangeValues(t),e.preventDefault()};this.onPaste=e=>{if(this.core.options.suppressClipboard||this.core.editingService.isEditing())return;let t=this.core.bodyRenderer.getPasteStart();if(!t)return;let o=e.clipboardData,r=o&&typeof o.getData=="function"?o.getData("text/plain"):null;typeof r!="string"||r===""||(e.preventDefault(),this.core.pasteText(r,t.row,t.colIdx))};this.onKeyDown=e=>{this.core.isDestroyed()||this.core.editingService.isEditing()||this.handleSelectAll(e)||this.handleHistoryShortcut(e)||Ir.has(e.key)&&(this.handleRangeCommand(e)||this.focusFirstCell(e)||this.handleFocusedKey(e))}}init(){this.core.skeleton.root.addEventListener("keydown",this.onKeyDown),this.core.skeleton.root.addEventListener("copy",this.onCopy),this.core.skeleton.root.addEventListener("cut",this.onCut),this.core.skeleton.root.addEventListener("paste",this.onPaste)}destroy(){this.core.skeleton.root.removeEventListener("keydown",this.onKeyDown),this.core.skeleton.root.removeEventListener("copy",this.onCopy),this.core.skeleton.root.removeEventListener("cut",this.onCut),this.core.skeleton.root.removeEventListener("paste",this.onPaste)}nextEditable(e,t,o){let r=this.core.columnModel.getOrderedVisible(),n=r.findIndex(d=>d.id===t);if(n<0)return null;let s=this.core.rowModel.getDisplayedRowCount(),a=n,l=e;for(let d=0;d<(r.length+1)*(s+1);d++){if(a+=o,a>=r.length){if(l>=s-1)return null;a=0,l=this.skipDetailRows(l+1,1)}else if(a<0){if(l<=0)return null;a=r.length-1,l=this.skipDetailRows(l-1,-1)}if(l<0||l>=s)return null;let c=this.core.rowModel.getDisplayedRow(l);if(c&&!c.isDetail&&this.core.editingService.isEditable(c,r[a]))return{rowIndex:l,column:r[a]}}return null}skipDetailRows(e,t){let o=this.core.rowModel.getDisplayedRowCount(),r=0;for(;e>=0&&e<o;){let n=this.core.rowModel.getDisplayedRow(e);if(!n||!n.isDetail)return e;if(e+=t,r++,r>o+2)break}return-1}handleSelectAll(e){return!(e.ctrlKey||e.metaKey)||e.key.toLowerCase()!=="a"?!1:(this.core.options.rowSelection==="multiple"&&(e.preventDefault(),this.core.selectionService.selectAll(!0)),!0)}handleHistoryShortcut(e){if(!e.ctrlKey&&!e.metaKey||e.altKey)return!1;let t=e.key.toLowerCase();return t==="z"?(e.preventDefault(),e.shiftKey?this.core.undoService.redo():this.core.undoService.undo(),!0):t!=="y"?!1:(e.preventDefault(),this.core.undoService.redo(),!0)}handleRangeCommand(e){let t=this.core.bodyRenderer;if(e.key==="Escape")return this.core.options.enableRangeSelection&&t.normalizedRange()&&(e.preventDefault(),t.clearRangeSelection()),!0;if(e.key!=="Delete"&&e.key!=="Backspace")return!1;if(!this.core.options.enableRangeSelection)return!0;let o=t.normalizedRange();return o&&!(o.r1===o.r2&&o.c1===o.c2)&&(e.preventDefault(),this.core.clearRangeValues(o)),!0}focusFirstCell(e){if(this.core.bodyRenderer.focusedCell)return!1;let t=this.core.columnModel.getOrderedVisible();return this.core.rowModel.getDisplayedRowCount()>0&&t.length>0&&(e.preventDefault(),this.core.bodyRenderer.setFocusedCell(0,t[0].id)),!0}handleFocusedKey(e){let t=this.core.bodyRenderer,o=t.focusedCell;if(!o)return;let r=this.core.columnModel.getOrderedVisible(),n=r.findIndex(c=>c.id===o.colId),s=this.core.rowModel.getDisplayedRowCount();if(n<0||s===0)return;let a={row:o.rowIndex,colIdx:n},l=this.resolveKeyPosition(e,a,r,s);if(!l)return;e.preventDefault();let d=l.row!==a.row||l.colIdx!==a.colIdx;if(e.shiftKey&&this.core.options.enableRangeSelection&&d){t.moveRangeEnd(l.row,l.colIdx);return}d&&t.setFocusedCell(l.row,r[l.colIdx].id)}resolveKeyPosition(e,t,o,r){return kr.has(e.key)?this.movePosition(e,t,o.length,r):e.key==="Enter"||e.key==="F2"?this.activateEditor(e,t,o,r):e.key===" "?(this.toggleFocusedRow(t.row),t):e.key==="Tab"?this.moveToEditable(e,t,o):null}movePosition(e,t,o,r){let{row:n,colIdx:s}=t;switch(e.key){case"ArrowUp":n=this.validSkippedRow(n,this.skipDetailRows(n-1,-1),r);break;case"ArrowDown":n=this.validSkippedRow(n,this.skipDetailRows(n+1,1),r);break;case"ArrowLeft":s=Math.max(0,s-1);break;case"ArrowRight":s=Math.min(o-1,s+1);break;case"Home":s=0,e.ctrlKey&&(n=0);break;case"End":s=o-1,e.ctrlKey&&(n=Math.max(0,this.skipDetailRows(r-1,-1)));break;case"PageUp":case"PageDown":n=this.movePage(e.key,n,r);break}return{row:n,colIdx:s}}validSkippedRow(e,t,o){return t>=0&&t<o?t:e}movePage(e,t,o){let r=this.core.skeleton.bodyViewports.center,n=Math.max(1,Math.floor(r.clientHeight/this.core.options.rowHeight)),s=e==="PageUp"?-1:1,a=Math.max(0,Math.min(o-1,t+n*s));return this.validSkippedRow(t,this.skipDetailRows(a,s),o)}activateEditor(e,t,o,r){let n=this.core.rowModel.getDisplayedRow(t.row),s=o[t.colIdx];if(n&&!n.isDetail&&s&&this.core.editingService.isEditable(n,s))return this.core.editingService.start(t.row,s,e.key==="F2"?e.key:null),t;let a=this.skipDetailRows(t.row+1,1);return{...t,row:this.validSkippedRow(t.row,a,r)}}toggleFocusedRow(e){let t=this.core.rowModel.getDisplayedRow(e);if(!(!t||t.isDetail)){if(t.isGroup){this.core.rowModel.toggleGroup(t.id);return}this.core.options.rowSelection!=="none"&&this.core.selectionService.setNodeSelected(t,!t.selected,this.core.options.rowSelection==="single")}}moveToEditable(e,t,o){let r=this.nextEditable(t.row,o[t.colIdx].id,e.shiftKey?-1:1);return r?(this.core.bodyRenderer.setFocusedCell(r.rowIndex,r.column.id),this.core.editingService.start(r.rowIndex,r.column),t):null}};function Mt(i,e){let t=document.createElement("input");return t.type=i,t.className="mach-editor-input",e!=null&&e!==""&&(t.value=i==="date"?String(e).slice(0,10):String(e)),t}function Lr(i,e){return e&&e.length>0?"select":typeof i=="number"?"number":i instanceof Date||typeof i=="string"&&/^\d{4}-\d{2}-\d{2}/.test(i)?"date":"text"}function It(i,e,t){let o=i.colDef,r=typeof o.cellEditor=="string"?o.cellEditor:Lr(e,o.cellEditorParams?.values);if(r==="number"){let s=Mt("number",e);return{el:s,getValue:()=>s.value===""?null:Number(s.value),focus:()=>{s.focus(),s.select()}}}if(r==="date"){let s=Mt("date",e),l=(e==null?"":String(e)).match(/T(\d{2}:\d{2})/);return{el:s,getValue:()=>s.value===""?null:l?`${s.value}T${l[1]}`:s.value,focus:()=>s.focus()}}if(r==="select"){let s=o.cellEditorParams?.values??[],a=document.createElement("select");a.className="mach-editor-select";for(let l of s){let d=document.createElement("option");d.value=String(l),d.textContent=String(l),String(e)===String(l)&&(d.selected=!0),a.appendChild(d)}return{el:a,getValue:()=>{let l=s.find(d=>String(d)===a.value);return l!==void 0?l:a.value},focus:()=>a.focus()}}let n=Mt("text",e);return t&&t.length===1&&(n.value=t),{el:n,getValue:()=>n.value,focus:()=>{n.focus(),n.select()}}}var kt=new WeakMap,Oe=new WeakMap,Ne=new WeakMap;function ce(i){let e=kt.get(i);return e||(e={},kt.set(i,e)),e}function so(i){return kt.get(i)}function ao(i,e){e?Oe.set(i,e):Oe.delete(i)}function lo(i){let e=Oe.get(i);return Oe.delete(i),e}function co(i,e){e?Ne.set(i,e):Ne.delete(i)}function Lt(i){let e=Ne.get(i);return Ne.delete(i),e}function Fe(i){if(i==null)return"";if(i instanceof Date)return i.toLocaleDateString();if(typeof i=="object")try{return JSON.stringify(i)}catch{return String(i)}return String(i)}function M(i,e){let t=so(e);if(!t)return;t.flashTimer&&clearTimeout(t.flashTimer),t.flashTimer=void 0;let o=t.destroy;if(t.destroy=void 0,!!o)try{o()}catch(r){i.reportError(r,"cellRenderer.destroy",{colId:e.dataset.colId})}}function N(i,e,t){let o=i.getCellValue(e,t),r=t.colDef.valueFormatter;if(r)try{let n=r({api:i.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:o});return n==null?"":String(n)}catch(n){i.reportError(n,"valueFormatter",{colId:t.id,rowId:e.id})}return Fe(o)}function ue(i,e,t,o){let r=t.colDef.valueFormatter;if(r)try{let n=r({api:i.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:o});return n==null?"":String(n)}catch(n){i.reportError(n,"valueFormatter",{colId:t.id,rowId:e.id})}return Fe(o)}function He(i,e,t,o){let r=o.colDef.cellStyle,n=ce(e),s=n.styleKeys;if(s)for(let d of s)Reflect.set(e.style,d,"");if(!r){n.styleKeys=void 0;return}let a;if(typeof r=="function"){let d=i.getCellValue(t,o);try{a=r({api:i.getApi(),colDef:o.colDef,column:o,node:t,data:t.data,value:d,rowIndex:t.rowIndex})}catch(c){i.reportError(c,"cellStyle",{colId:o.id,rowId:t.id}),a=null}}else a=r;if(!a){n.styleKeys=void 0;return}let l=Object.keys(a);for(let d of l)Reflect.set(e.style,d,Reflect.get(a,d));n.styleKeys=l}function Be(i,e,t,o){M(i,e);let r=i.getCellValue(t,o),n=N(i,t,o),s=o.colDef.cellRenderer,a=typeof s=="string"?i.resolveCellRenderer(s):s;if(a){let c={api:i.getApi(),colDef:o.colDef,column:o,node:t,data:t.data,value:r,formatted:n,rowIndex:t.rowIndex,rendererParams:o.colDef.cellRendererParams},u;try{u=a(c)}catch(h){i.reportError(h,"cellRenderer",{colId:o.id,rowId:t.id}),e.textContent=n;return}if(typeof u=="string")e.textContent=u;else if(u instanceof HTMLElement)e.replaceChildren(u);else if(u&&typeof u=="object"&&u.el instanceof HTMLElement){let h=u;e.replaceChildren(h.el),h.destroy&&(ce(e).destroy=h.destroy)}else e.textContent=""}else e.textContent=n;let l=n;i.options.tooltipComponent&&(l="");let d=o.colDef.tooltipValueGetter;if(d)try{l=d({api:i.getApi(),colDef:o.colDef,column:o,node:t,data:t.data,value:r})??n}catch(c){i.reportError(c,"tooltipValueGetter",{colId:o.id,rowId:t.id})}l?e.getAttribute("title")!==l&&e.setAttribute("title",l):e.hasAttribute("title")&&e.removeAttribute("title")}function he(i,e,t,o){let r=i.getCellValue(t,o),n=["mach-cell"],s=o.colDef.align;s==="center"?n.push("mach-cell--center"):s==="right"?n.push("mach-cell--right"):(Q(o.colDef,"rightAligned")||Q(o.colDef,"numericColumn")||typeof r=="number"&&r!=null)&&n.push("mach-cell--num");let a=o.colDef.cellClass;if(a)if(typeof a=="function"){let u={api:i.getApi(),colDef:o.colDef,column:o,node:t,data:t.data,value:r,rowIndex:t.rowIndex};try{let h=a(u);typeof h=="string"?n.push(h):Array.isArray(h)&&n.push(...h)}catch(h){i.reportError(h,"cellClass",{colId:o.id,rowId:t.id})}}else typeof a=="string"?n.push(a):Array.isArray(a)&&n.push(...a);let l=e.classList.contains("mach-cell--focus"),d=e.classList.contains("mach-cell--editing");l&&n.push("mach-cell--focus"),d&&n.push("mach-cell--editing"),o.colDef.wrapText&&n.push("mach-cell--wrap");let c=n.join(" ");e.className!==c&&(e.className=c)}var Pr='<path d="M3 8.5 6.4 12 13.5 4"/>',Ar='<path d="m4 4 8 8m0-8-8 8"/>';function uo(i,e){let t=document.createElement("button");return t.type="button",t.className=`mach-edit-control mach-edit-control--${i}`,t.setAttribute("aria-label",e),t.title=e,t.innerHTML=`<svg viewBox="0 0 16 16" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round">${i==="confirm"?Pr:Ar}</svg>`,t.addEventListener("mousedown",o=>{o.preventDefault(),o.stopPropagation()}),t}var Ve=class{constructor(e){this.core=e;this.cellEditing=null;this.rowEditing=null;this.stopPromise=null;this.stopToken=0;this.onCellEditorKeyDown=e=>{if(this.cellEditing){if(e.key==="Enter")e.preventDefault(),e.stopPropagation(),this.stopAsync(!1);else if(e.key==="Escape")e.preventDefault(),e.stopPropagation(),this.stopAsync(!0);else if(e.key==="Tab"){e.preventDefault(),e.stopPropagation();let t=this.cellEditing,o=this.core.keyboardService.nextEditable(t.rowIndex,t.column.id,e.shiftKey?-1:1);this.stopAsync(!1).then(r=>{r&&o&&(this.core.bodyRenderer.scrollToIndex(o.rowIndex,"nearest"),this.core.bodyRenderer.setFocusedCell(o.rowIndex,o.column.id),this.start(o.rowIndex,o.column))})}}};this.onCellEditorBlur=()=>{window.setTimeout(()=>{this.cellEditing&&this.stopAsync(!1)},0)}}isEditing(e,t){return this.cellEditing?e==null&&t==null?!0:this.cellEditing.rowIndex===e&&this.cellEditing.column.id===t:this.rowEditing?e==null&&t==null?!0:this.currentRowIndex(this.rowEditing)!==e?!1:t==null||this.rowEditing.drafts.has(t):!1}isCellEditing(){return this.cellEditing!=null}isRowEditing(e){return this.rowEditing?e==null||this.currentRowIndex(this.rowEditing)===e:!1}isEditable(e,t){if(e.isDetail||e.isGroup||e.data==null)return!1;let o=t.colDef.editable;if(!o)return!1;if(typeof o=="function")try{return o({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:e.rowIndex})}catch(r){return this.core.reportError(r,"editable",{colId:t.id,rowId:e.id}),!1}return!0}start(e,t,o){if(this.core.options.editType==="fullRow")return this.startRow(e,t.id);if(this.cellEditing||this.rowEditing)return!1;let r=this.core.rowModel.getDisplayedRow(e);if(!r||r.data==null||!this.isEditable(r,t))return!1;let n=this.core.bodyRenderer.getCellElement(e,t.id);if(!n)return!1;let s=this.core.getCellValue(r,t),a=this.createCellEditor(r,t,e,s,o);if(!a)return!1;M(this.core,n);let l=document.createElement("div");l.className="mach-cell-editor-shell";let d=document.createElement("div");d.className="mach-cell-editor-controls";let c=uo("confirm","Confirm edit"),u=uo("cancel","Cancel edit");d.append(c,u),l.append(a.el,d),n.replaceChildren(l),n.classList.add("mach-cell--editing"),n.removeAttribute("title");let h=this.onCellEditorKeyDown;return a.el.addEventListener("keydown",h),a.el.addEventListener("focusout",this.onCellEditorBlur),c.addEventListener("click",p=>{p.stopPropagation(),this.stopAsync(!1)}),u.addEventListener("click",p=>{p.stopPropagation(),this.stopAsync(!0)}),this.cellEditing={node:r,column:t,editor:a,rowIndex:e,oldValue:s,cell:n,shell:l,keydown:h,confirmButton:c,cancelButton:u},this.focusEditor(a,t,r),this.core.emit("cellEditingStarted",{rowIndex:e,colId:t.id,rowNode:r}),!0}startRow(e,t){if(this.cellEditing||this.rowEditing)return!1;let o=this.core.rowModel.getDisplayedRow(e);if(!o||o.data==null||o.isDetail||o.isGroup)return!1;let r=new Map;for(let l of this.core.columnModel.getOrderedVisible()){if(!this.isEditable(o,l))continue;let d=this.core.getCellValue(o,l);r.set(l.id,{column:l,oldValue:d,value:d,mounted:null})}if(r.size===0)return!1;let n={node:o,rowIndex:e,drafts:r,validating:!1};if(this.rowEditing=n,this.core.bodyRenderer.refreshRows([e]),r.size===0)return this.rowEditing=null,this.core.bodyRenderer.refreshRows([e]),!1;let s=r.values().next().value,a=(t?r.get(t):void 0)??s;return a?.mounted&&this.focusEditor(a.mounted.editor,a.column,o),this.core.emit("rowEditingStarted",{rowIndex:e,rowNode:o,data:o.data}),!0}renderEditor(e,t,o,r){if(this.cellEditing)return this.cellEditing.node===t&&this.cellEditing.column.id===o.id;let n=this.rowEditing;if(!n||n.node!==t)return!1;let s=n.drafts.get(o.id);return s?s.mounted?.cell!==r&&(s.mounted&&this.unmountRowDraft(s),!this.mountRowDraft(e,n,s,r))?(n.drafts.delete(o.id),!1):!0:!1}releaseCell(e,t,o){let r=this.rowEditing;if(r&&this.currentRowIndex(r)===e){let n=r.drafts.get(t);n?.mounted?.cell===o&&this.unmountRowDraft(n);return}if(this.cellEditing?.cell===o){let n=this.cellEditing;this.stopAsync(!1),this.cellEditing===n&&this.stopAsync(!0)}}stop(e=!1){this.stopAsync(e)}stopAsync(e=!1){if(this.rowEditing)return this.stopRowAsync(e);let t=this.cellEditing;if(!t)return Promise.resolve(!1);if(e)return this.stopToken++,this.stopPromise=null,Promise.resolve(this.finishCellStop(t,!0,t.oldValue));if(this.stopPromise)return this.stopPromise;let o;try{o=t.editor.getValue()}catch(n){return this.core.reportError(n,"cellEditor.getValue",{colId:t.column.id,rowId:t.node.id}),Promise.resolve(this.finishCellStop(t,!0,t.oldValue))}try{if(t.editor.isCancelAfterEnd?.(o))return Promise.resolve(this.finishCellStop(t,!0,t.oldValue))}catch(n){return this.core.reportError(n,"cellEditor.isCancelAfterEnd",{colId:t.column.id,rowId:t.node.id}),Promise.resolve(this.finishCellStop(t,!0,t.oldValue))}let r=this.validateValue(t.node,t.column,t.oldValue,o);if(r&&typeof r.then=="function"){let n=++this.stopToken;this.setCellBusy(t,!0);let s=Promise.resolve(r).then(a=>n!==this.stopToken||this.cellEditing!==t?!1:typeof a=="string"?(this.showError(t.editor,a),!1):this.finishCellStop(t,!1,o)).catch(a=>(n!==this.stopToken||this.cellEditing!==t||(this.core.reportError(a,"validate",{colId:t.column.id,rowId:t.node.id}),this.showError(t.editor,"Validation failed")),!1)).finally(()=>{this.stopPromise===s&&(this.stopPromise=null)});return this.stopPromise=s,s}return typeof r=="string"?(this.showError(t.editor,r),Promise.resolve(!1)):Promise.resolve(this.finishCellStop(t,!1,o))}stopRowAsync(e=!1){let t=this.rowEditing;if(!t)return Promise.resolve(!1);if(e)return this.stopToken++,this.stopPromise=null,Promise.resolve(this.finishRowStop(t,!0));if(this.stopPromise)return this.stopPromise;for(let s of t.drafts.values())this.captureRowDraft(s);let o=[...t.drafts.values()].filter(s=>!Object.is(s.oldValue,s.value));if(o.length===0)return Promise.resolve(this.finishRowStop(t,!1));let r=++this.stopToken;for(let s of o)s.error=void 0;t.validating=!0,this.setRowBusy(t,!0);let n=Promise.all(o.map(async s=>{try{let a=await this.validateValue(t.node,s.column,s.oldValue,s.value);return{draft:s,message:typeof a=="string"?a:null}}catch(a){return this.core.reportError(a,"validate",{colId:s.column.id,rowId:t.node.id}),{draft:s,message:"Validation failed"}}})).then(async s=>{if(r!==this.stopToken||this.rowEditing!==t)return!1;let a=s.filter(d=>d.message!=null);if(a.length>0)return this.showRowErrors(t,a.map(d=>({draft:d.draft,message:d.message}))),!1;let l=await this.validateRowDraft(t,o);return r!==this.stopToken||this.rowEditing!==t?!1:l.length>0?(this.showRowErrors(t,l),!1):this.finishRowStop(t,!1)}).finally(()=>{this.stopPromise===n&&(this.stopPromise=null)});return this.stopPromise=n,n}finishCellStop(e,t,o){if(this.cellEditing!==e)return!1;this.cellEditing=null;let r=!t&&this.applyValue(e.node,e.column,e.oldValue,o);return this.destroyMountedEditor(e,!0),this.core.emit("cellEditingStopped",{rowIndex:e.rowIndex,colId:e.column.id,rowNode:e.node,oldValue:e.oldValue,newValue:r?o:e.oldValue}),e.node.rowIndex>=0&&this.core.bodyRenderer.refreshRows([e.node.rowIndex]),this.core.summaryRenderer.refresh(),this.core.statusBarService.refresh(),!0}finishRowStop(e,t){if(this.rowEditing!==e)return!1;let o=t?[]:this.commitRowDrafts(e);if(o==null)return!1;for(let n of e.drafts.values())t||this.captureRowDraft(n),n.mounted&&this.destroyMountedEditor(n.mounted,!0),n.mounted=null;this.rowEditing=null;let r=this.currentRowIndex(e);return this.core.emit("rowEditingStopped",{rowIndex:r,rowNode:e.node,data:e.node.data,cancelled:t,changes:o}),r>=0&&this.core.bodyRenderer.refreshRows([r]),this.core.summaryRenderer.refresh(),this.core.statusBarService.refresh(),!0}commitRowDrafts(e){let t=[...e.drafts.values()].filter(r=>!Object.is(r.oldValue,r.value));if(t.length===0)return[];let o=[];this.core.undoService.beginBatch();for(let r of t){if(!this.core.writeValue(e.node,r.column,r.value,r.oldValue)){let n=!1;for(let s of[...o].reverse())this.core.writeValue(e.node,s.column,s.oldValue,s.value)||(n=!0);return this.core.undoService.cancelBatch(),n&&this.core.reportError(new Error("A valueSetter rejected full-row rollback"),"rowEditRollback",{rowId:e.node.id,colId:r.column.id}),this.showRowErrors(e,[{draft:r,message:"Value was rejected by the column setter"}]),null}o.push(r)}for(let r of o)this.core.notifyCellValueChanged(e.node,r.column,r.oldValue,r.value);return this.core.undoService.endBatch(),o.map(r=>({colId:r.column.id,oldValue:r.oldValue,newValue:r.value}))}mountRowDraft(e,t,o,r){let n=this.createCellEditor(t.node,o.column,e,o.value,null);if(!n)return!1;M(this.core,r);let s=document.createElement("div");s.className="mach-row-editor-shell",s.appendChild(n.el),r.replaceChildren(s),r.classList.add("mach-cell--editing","mach-cell--row-editing"),r.removeAttribute("title");let a=d=>this.onRowEditorKeyDown(d,t,o),l=()=>{try{o.value=n.getValue(),o.error=void 0}catch{}};return n.el.addEventListener("keydown",a),n.el.addEventListener("input",l),o.mounted={editor:n,cell:r,shell:s,keydown:a,input:l},o.error&&this.showError(n,o.error),t.validating&&(n.el.classList.add("mach-editor-validating"),n.el.setAttribute("aria-busy","true"),n.el.inert=!0),!0}unmountRowDraft(e){e.mounted&&(this.captureRowDraft(e),this.destroyMountedEditor(e.mounted,!0),e.mounted=null)}captureRowDraft(e){if(e.mounted)try{let t=e.mounted.editor.getValue();t!==void 0&&(e.value=t)}catch(t){this.core.reportError(t,"cellEditor.getValue",{colId:e.column.id,rowId:this.rowEditing?.node.id})}}createCellEditor(e,t,o,r,n){let s=t.colDef,a;try{let l={api:this.core.getApi(),colDef:s,column:t,node:e,data:e.data,value:r,rowIndex:o,keyPress:n};typeof s.cellEditor=="function"?a=s.cellEditor(l):typeof s.cellEditor=="string"&&!["text","number","date","select"].includes(s.cellEditor)?a=this.core.resolveCellEditor(s.cellEditor)?.(l)??It(t,r,n):a=It(t,r,n)}catch(l){return this.core.reportError(l,"cellEditor",{colId:t.id,rowId:e.id}),null}if(!a||!(a.el instanceof HTMLElement))return this.core.reportError(new Error("cellEditor must return an editor with an HTMLElement el"),"cellEditor",{colId:t.id,rowId:e.id}),null;try{if(a.isCancelBeforeStart?.())return a.destroy?.(),null}catch(l){this.core.reportError(l,"cellEditor.isCancelBeforeStart",{colId:t.id,rowId:e.id});try{a.destroy?.()}catch{}return null}return a}validateValue(e,t,o,r){let n=t.colDef.validate;if(!n)return!0;try{return n(r,{oldValue:o,newValue:r,data:e.data,node:e,colDef:t.colDef,column:t,api:this.core.getApi()})}catch(s){return this.core.reportError(s,"validate",{colId:t.id,rowId:e.id}),"Validation failed"}}async validateRowDraft(e,t){let o=this.core.options.rowEditValidator;if(!o)return[];let r=Object.create(null);for(let[l,d]of e.drafts)r[l]=d.value;let n=t.map(l=>({colId:l.column.id,oldValue:l.oldValue,newValue:l.value})),s;try{s=await o({data:e.node.data,node:e.node,values:r,changes:n,api:this.core.getApi()})}catch(l){return this.core.reportError(l,"rowEditValidator",{rowId:e.node.id}),[{draft:t[0],message:"Row validation failed"}]}if(typeof s=="string")return[{draft:t[0],message:s}];if(!s||s===!0||typeof s!="object")return[];let a=[];for(let[l,d]of Object.entries(s)){let c=e.drafts.get(l);c&&typeof d=="string"&&d&&a.push({draft:c,message:d})}if(a.length===0){let l=Object.values(s).find(d=>typeof d=="string"&&d);typeof l=="string"&&a.push({draft:t[0],message:l})}return a}showRowErrors(e,t){e.validating=!1,this.setRowBusy(e,!1);for(let{draft:o,message:r}of t)o.error=r,o.mounted&&this.showError(o.mounted.editor,r);t[0].draft.mounted?.editor.focus?.()}showError(e,t){let o=e.el;o.classList.add("mach-editor-invalid"),o.setAttribute("title",t),o.setAttribute("aria-invalid","true"),o.classList.remove("mach-editor-validating"),o.removeAttribute("aria-busy"),o.inert=!1,(o.querySelector("input, select, textarea")??o).focus?.();let n=()=>{o.classList.remove("mach-editor-invalid"),o.removeAttribute("title"),o.removeAttribute("aria-invalid")};o.addEventListener("input",n,{once:!0})}setCellBusy(e,t){e.editor.el.classList.toggle("mach-editor-validating",t),t?e.editor.el.setAttribute("aria-busy","true"):e.editor.el.removeAttribute("aria-busy"),e.editor.el.inert=t,e.confirmButton.disabled=t,e.cancelButton.disabled=!1,e.shell.classList.toggle("mach-editor-shell--busy",t)}setRowBusy(e,t){for(let o of e.drafts.values()){let r=o.mounted?.editor.el;r&&(r.classList.toggle("mach-editor-validating",t),t?r.setAttribute("aria-busy","true"):r.removeAttribute("aria-busy"),r.inert=t)}}applyValue(e,t,o,r){return r===void 0?!1:this.core.setCellValue(e,t,r,o)}focusEditor(e,t,o){try{e.focus?.()}catch(r){this.core.reportError(r,"cellEditor.focus",{colId:t.id,rowId:o.id})}}destroyMountedEditor(e,t){e.editor.el.removeEventListener("keydown",e.keydown),e.input&&e.editor.el.removeEventListener("input",e.input),e.editor.el.removeEventListener("focusout",this.onCellEditorBlur),e.editor.el.classList.remove("mach-editor-validating"),e.editor.el.removeAttribute("aria-busy"),e.editor.el.inert=!1;try{e.editor.destroy?.()}catch(o){this.core.reportError(o,"cellEditor.destroy",{colId:e.cell.dataset.colId})}t&&e.cell.classList.remove("mach-cell--editing","mach-cell--row-editing","mach-cell--error")}currentRowIndex(e){return e.node.rowIndex>=0?e.node.rowIndex:e.rowIndex}onRowEditorKeyDown(e,t,o){if(this.rowEditing!==t)return;if(e.key==="Escape"){e.preventDefault(),e.stopPropagation(),this.stopRowAsync(!0);return}if(e.key==="Enter"&&!e.shiftKey){e.preventDefault(),e.stopPropagation(),this.stopRowAsync(!1);return}if(e.key!=="Tab")return;e.preventDefault(),e.stopPropagation(),this.captureRowDraft(o);let r=[...t.drafts.values()],n=r.indexOf(o),s=e.shiftKey?-1:1;for(let a=1;a<=r.length;a++){let l=r[(n+s*a+r.length)%r.length];if(l.mounted){this.focusEditor(l.mounted.editor,l.column,t.node);break}}}destroy(){(this.cellEditing||this.rowEditing)&&this.stopAsync(!0)}};var E={matchContains:"\u5305\u542B",matchNotContains:"\u4E0D\u5305\u542B",matchEquals:"\u7B49\u4E8E",matchNotEquals:"\u4E0D\u7B49\u4E8E",matchStartsWith:"\u5F00\u5934\u662F",matchEndsWith:"\u7ED3\u5C3E\u662F",matchBlank:"\u4E3A\u7A7A",matchNotBlank:"\u4E0D\u4E3A\u7A7A",matchLessThan:"\u5C0F\u4E8E",matchLessThanOrEqual:"\u5C0F\u4E8E\u7B49\u4E8E",matchGreaterThan:"\u5927\u4E8E",matchGreaterThanOrEqual:"\u5927\u4E8E\u7B49\u4E8E",matchInRange:"\u5728\u8303\u56F4\u5185",apply:"\u5E94\u7528",reset:"\u91CD\u7F6E",search:"\u641C\u7D22...",emptySetLabel:"(\u7A7A)",selectedCount:"\u5DF2\u9009 {n} \u9879",sortAsc:"\u5347\u5E8F",sortDesc:"\u964D\u5E8F",clearSort:"\u53D6\u6D88\u6392\u5E8F",pinLeft:"\u56FA\u5B9A\u5DE6\u4FA7",pinRight:"\u56FA\u5B9A\u53F3\u4FA7",clearPin:"\u53D6\u6D88\u56FA\u5B9A",autoSize:"\u81EA\u9002\u5E94\u5217\u5BBD",hideColumn:"\u9690\u85CF\u6B64\u5217",columnVisibility:"\u5217\u663E\u793A",resetAll:"\u91CD\u7F6E\u5168\u90E8",autoSizeAll:"\u5168\u90E8\u81EA\u9002\u5E94",columnSettings:"\u5217\u8BBE\u7F6E",totalLabel:"\u5408\u8BA1",totalRowsLabel:"\u5171 {n} \u884C",menuCopy:"\u590D\u5236",menuPaste:"\u7C98\u8D34",menuClearContents:"\u6E05\u9664\u5185\u5BB9",loading:"\u52A0\u8F7D\u4E2D...",statusSelected:"\u5DF2\u9009 {n} \u884C",statusSum:"\u548C {n}",statusAvg:"\u5747 {n}",statusCount:"\u8BA1 {n}",emptyRows:"\u6682\u65E0\u6570\u636E",emptyRowsHint:"\u6CA1\u6709\u53EF\u663E\u793A\u7684\u884C",paginationTotal:"\u5171 {n} \u6761",paginationPage:"\u7B2C {a} / {b} \u9875",perPage:"{n} \u6761/\u9875",pageFirst:"\u9996\u9875",pagePrev:"\u4E0A\u4E00\u9875",pageNext:"\u4E0B\u4E00\u9875",pageLast:"\u672B\u9875",requestFailed:"\u6570\u636E\u52A0\u8F7D\u5931\u8D25",requestFailedHint:"\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5",actionView:"\u67E5\u770B",actionEdit:"\u7F16\u8F91",actionDelete:"\u5220\u9664",actionConfirm:"\u786E\u8BA4",actionSave:"\u4FDD\u5B58",actionCancel:"\u53D6\u6D88",actionMore:"\u66F4\u591A\u64CD\u4F5C"},ho={matchContains:"Contains",matchNotContains:"Not Contains",matchEquals:"Equals",matchNotEquals:"Not Equals",matchStartsWith:"Starts With",matchEndsWith:"Ends With",matchBlank:"Blank",matchNotBlank:"Not Blank",matchLessThan:"Less Than",matchLessThanOrEqual:"\u2264",matchGreaterThan:"Greater Than",matchGreaterThanOrEqual:"\u2265",matchInRange:"In Range",apply:"Apply",reset:"Reset",search:"Search...",emptySetLabel:"(blank)",selectedCount:"{n} selected",sortAsc:"Ascending",sortDesc:"Descending",clearSort:"Clear Sort",pinLeft:"Pin Left",pinRight:"Pin Right",clearPin:"Unpin",autoSize:"Auto Fit",hideColumn:"Hide Column",columnVisibility:"Columns",resetAll:"Reset All",autoSizeAll:"Fit All",columnSettings:"Column Settings",totalLabel:"Total",totalRowsLabel:"{n} rows",menuCopy:"Copy",menuPaste:"Paste",menuClearContents:"Clear Contents",loading:"Loading...",statusSelected:"{n} selected",statusSum:"Sum {n}",statusAvg:"Avg {n}",statusCount:"Cnt {n}",emptyRows:"No Data",emptyRowsHint:"No rows to display",paginationTotal:"{n} items",paginationPage:"Page {a} / {b}",perPage:"{n} / page",pageFirst:"First",pagePrev:"Previous",pageNext:"Next",pageLast:"Last",requestFailed:"Unable to load data",requestFailedHint:"Check your connection and try again",actionView:"View",actionEdit:"Edit",actionDelete:"Delete",actionConfirm:"Confirm",actionSave:"Save",actionCancel:"Cancel",actionMore:"More actions"},Gr={contains:"matchContains",notContains:"matchNotContains",equals:"matchEquals",notEquals:"matchNotEquals",startsWith:"matchStartsWith",endsWith:"matchEndsWith",blank:"matchBlank",notBlank:"matchNotBlank",lessThan:"matchLessThan",lessThanOrEqual:"matchLessThanOrEqual",greaterThan:"matchGreaterThan",greaterThanOrEqual:"matchGreaterThanOrEqual",inRange:"matchInRange"};function ze(i){return Gr[i]??"matchEquals"}function k(i,e){return i.replace("{n}",String(e))}function We(i,e,t){return i.replace("{a}",String(e)).replace("{b}",String(t))}var Or=["contains","notContains","equals","notEquals","startsWith","endsWith","blank","notBlank"],Nr=["equals","notEquals","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","inRange","blank","notBlank"],Fr=["equals","notEquals","lessThan","greaterThan","inRange","blank","notBlank"],Ke=class{constructor(e){this.core=e;this.panel=null;this.openColId=null;this.docMouseDown=e=>{this.panel&&!this.panel.contains(e.target)&&this.close()};this.docKeyDown=e=>{e.key==="Escape"&&this.close()}}toggle(e,t){if(this.openColId===e.id){this.close();return}this.close(),this.open(e,t)}open(e,t){let o=this.core.rowModel.getFilterModel()[e.id]??null,r=o?.type??e.filterType,n=g("div","mach-filter-panel");n.setAttribute("role","dialog"),n.setAttribute("aria-label",`${e.id} filter`),r==="set"?this.buildSetBody(n,e,o):this.buildConditionBody(n,e,r,o);let s=g("div","mach-filter-footer"),a=g("button","mach-filter-btn-reset");a.type="button",a.textContent=this.core.getLocaleText("reset"),a.addEventListener("click",()=>{this.core.applyColumnFilter(e,null),this.close()});let l=g("button","mach-filter-btn-apply");l.type="button",l.textContent=this.core.getLocaleText("apply"),l.addEventListener("click",()=>{let m=this.readFilter(n);this.core.applyColumnFilter(e,m),this.close()}),s.append(a,l),n.appendChild(s),document.body.appendChild(n),this.panel=n,this.openColId=e.id;let d=t.getBoundingClientRect(),c=n.getBoundingClientRect(),u=x(d.left,8,window.innerWidth-c.width-8),h=d.bottom+4;h+c.height>window.innerHeight-8&&(h=Math.max(8,d.top-c.height-4)),n.style.left=`${u}px`,n.style.top=`${h}px`,document.addEventListener("mousedown",this.docMouseDown,!0),document.addEventListener("keydown",this.docKeyDown,!0),n.querySelector("input, select")?.focus()}close(){this.panel&&(this.panel.remove(),this.panel=null,this.openColId=null,document.removeEventListener("mousedown",this.docMouseDown,!0),document.removeEventListener("keydown",this.docKeyDown,!0))}destroy(){this.close()}buildConditionBody(e,t,o,r){let n=o==="text"?Or:o==="number"?Nr:Fr,s=r&&r.type!=="set"&&r.conditions.length>0?r.conditions[0]:null,a=s?.match??(o==="text"?"contains":"equals"),l=a==="blank"||a==="notBlank",d=g("select","mach-filter-select");for(let m of n){let f=document.createElement("option");f.value=m,f.textContent=this.core.getLocaleText(ze(m)),d.appendChild(f)}d.value=a;let c=g("input","mach-filter-input");o==="number"&&(c.type="number"),o==="date"&&(c.type="date"),s&&s.value!=null&&!l&&(c.value=o==="date"?String(s.value).slice(0,10):String(s.value));let u=g("input","mach-filter-input mach-filter-input--second");o==="number"&&(u.type="number"),o==="date"&&(u.type="date"),s&&"value2"in s&&s.value2!=null&&(u.value=String(s.value2).slice(0,10)),u.style.display=a==="inRange"?"":"none",d.addEventListener("change",()=>{let m=d.value==="blank"||d.value==="notBlank";c.style.display=m?"none":"",u.style.display=d.value==="inRange"?"":"none"});let h=m=>{if(m.key==="Enter"){let f=this.readFilter(e);this.core.applyColumnFilter(t,f),this.close()}};c.addEventListener("keydown",h),u.addEventListener("keydown",h);let p=g("div","mach-filter-body");p.append(d,c,u),e.appendChild(p),e.dataset.filterType=o}buildSetBody(e,t,o){let n=t.colDef.filterParams,s;if(n?.values)s=n.values;else{let f=new Set;s=[];let y=this.core.rowModel.getAllNodes(),v=Math.min(y.length,n?.maxValues??500);for(let w=0;w<v;w++){let C=this.core.getCellValue(y[w],t),T=C==null?"__null__":String(C);f.has(T)||(f.add(T),s.push(C))}}let a=new Set(o?.type==="set"?o.values.map(f=>f==null?"__null__":String(f)):s.map(f=>f==null?"__null__":String(f))),l=g("input","mach-filter-input mach-filter-input--search");l.type="text",l.placeholder=this.core.getLocaleText("search");let d=g("div","mach-filter-set-list"),c=[],u=new Map,h=f=>{d.textContent="",c.length=0;let y=f.trim().toLowerCase();for(let v of s){let w=v==null?this.core.getLocaleText("emptySetLabel"):String(v);if(y&&!w.toLowerCase().includes(y))continue;let C=v==null?"__null__":String(v);u.set(C,v);let T=g("label","mach-filter-set-item"),R=document.createElement("input");R.type="checkbox",R.checked=a.has(C),R.addEventListener("change",()=>{R.checked?a.add(C):a.delete(C)});let D=g("span");D.textContent=w,T.append(R,D),d.appendChild(T),c.push(R)}};l.addEventListener("input",()=>h(l.value)),h(""),e.dataset.filterType="set",e.dataset.setValues=JSON.stringify([...u.entries()]),(()=>{let f=[...u.entries()];e.dataset.setValues=JSON.stringify(f)})();let m=g("div","mach-filter-body mach-filter-body--set");m.append(l,d),e.appendChild(m)}readFilter(e){let t=e.dataset.filterType;if(t==="set"){let d=[];try{d=JSON.parse(e.dataset.setValues??"[]")}catch{d=[]}let c=new Set;e.querySelectorAll(".mach-filter-set-item input:checked").forEach(h=>{let m=h.closest(".mach-filter-set-item").querySelector("span"),f=this.core.getLocaleText("emptySetLabel"),y=m.textContent===f?"__null__":m.textContent??"";c.add(y)});let u=d.filter(([h])=>c.has(h)).map(([,h])=>h);return u.length===d.length||u.length===0?null:{type:"set",values:u}}let o=e.querySelector(".mach-filter-select"),r=e.querySelectorAll(".mach-filter-input"),n=r[0],s=r[1];if(!o||!n)return null;let a=o.value;if(a==="blank"||a==="notBlank")return{type:t,conditions:[{match:a}]};let l=n.value;if(l===""&&a!=="inRange")return null;if(t==="number"){let d=Number(l);if(isNaN(d))return null;if(a==="inRange"){let c=s&&s.value!==""?Number(s.value):d;return isNaN(c)?null:{type:"number",conditions:[{match:"inRange",value:d,value2:c}]}}return{type:"number",conditions:[{match:a,value:d}]}}if(t==="date"){let d=l;if(a==="inRange"){let c=s&&s.value!==""?s.value:d;return{type:"date",conditions:[{match:"inRange",value:d,value2:c}]}}return{type:"date",conditions:[{match:a,value:d}]}}return{type:"text",conditions:[{match:a,value:l}]}}};var _e=class{constructor(e){this.core=e;this.panel=null;this.openColId=null;this.standaloneAnchor=null;this.searchText="";this.docMouseDown=e=>{this.panel&&!this.panel.contains(e.target)&&this.close()};this.docKeyDown=e=>{e.key==="Escape"&&this.close()}}toggle(e,t){if(this.openColId===e.id){this.close();return}this.close(),this.open(e,t)}openStandalone(e){this.close();let t=e??(()=>{let r=this.core.skeleton.root.getBoundingClientRect(),n=document.createElement("div");return n.style.position="fixed",n.style.left=`${r.right-16}px`,n.style.top=`${r.top+this.core.options.headerHeight}px`,n.style.width="1px",n.style.height="1px",document.body.appendChild(n),this.standaloneAnchor=n,n})();this.open(null,t)}close(){this.standaloneAnchor&&(this.standaloneAnchor.remove(),this.standaloneAnchor=null),this.panel?.remove(),this.panel=null,this.openColId=null,document.removeEventListener("mousedown",this.docMouseDown,!0),document.removeEventListener("keydown",this.docKeyDown,!0)}destroy(){this.close()}open(e,t){let o=this.core.getApi(),r=g("div","mach-filter-panel mach-column-panel");r.setAttribute("role",e?"menu":"dialog"),e||(r.setAttribute("aria-modal","false"),r.setAttribute("aria-label",this.core.getLocaleText("columnSettings")));let n=g("div","mach-column-panel-title");if(n.textContent=e?e.colDef.headerName??e.colDef.field??e.id:this.core.getLocaleText("columnSettings"),r.appendChild(n),e&&e.sortable){let R=g("div","mach-column-panel-actions"),D=(j,jt)=>{let we=g("button","mach-column-panel-btn");return we.type="button",we.textContent=this.core.getLocaleText(j),we.addEventListener("click",()=>{o.setSortModel(jt?[{colId:e.id,direction:jt}]:[]),this.close()}),we};R.append(D("sortAsc","asc"),D("sortDesc","desc"),D("clearSort",null)),r.appendChild(R)}let s=g("div","mach-column-panel-actions"),a=(R,D)=>{let j=g("button","mach-column-panel-btn");return j.type="button",j.textContent=this.core.getLocaleText(R),j.addEventListener("click",()=>{e&&o.setColumnPinned(e.id,D),this.close()}),j};e&&(s.append(a("pinLeft","left"),a("pinRight","right"),a("clearPin",null)),r.appendChild(s));let l=g("div","mach-column-panel-actions"),d=g("button","mach-column-panel-btn");d.type="button",d.textContent=this.core.getLocaleText("autoSize"),d.addEventListener("click",()=>{e?o.autoSizeColumn(e.id):o.autoSizeAllColumns(),this.close()});let c=g("button","mach-column-panel-btn");c.type="button",c.textContent=this.core.getLocaleText("hideColumn"),c.addEventListener("click",()=>{e&&o.setColumnVisibility(e.id,!1),this.close()}),e&&(l.append(d,c),r.appendChild(l));let u=g("div","mach-column-panel-divider");r.appendChild(u);let h=g("div","mach-column-panel-subtitle");if(h.textContent=this.core.getLocaleText("columnVisibility"),r.appendChild(h),!e){let R=document.createElement("input");R.type="search",R.className="mach-column-workbench-search",R.placeholder=this.core.getLocaleText("search"),R.setAttribute("aria-label",this.core.getLocaleText("search")),R.value=this.searchText,R.addEventListener("input",()=>{this.searchText=R.value.trim().toLocaleLowerCase(),this.renderColumnList(p,!0)}),r.appendChild(R)}let p=g("div","mach-column-panel-list");this.renderColumnList(p,!e),r.appendChild(p);let m=g("div","mach-filter-footer"),f=g("button","mach-filter-btn-reset");f.type="button",f.textContent=this.core.getLocaleText("resetAll"),f.addEventListener("click",()=>{o.resetColumnState(),this.close()});let y=g("button","mach-filter-btn-apply");y.type="button",y.textContent=this.core.getLocaleText("autoSizeAll"),y.addEventListener("click",()=>{o.autoSizeAllColumns(),this.close()}),m.append(f,y),r.appendChild(m),document.body.appendChild(r),this.panel=r,this.openColId=e?e.id:"__standalone__";let v=t.getBoundingClientRect(),w=r.getBoundingClientRect(),C=x(v.left,8,window.innerWidth-w.width-8),T=v.bottom+4;T+w.height>window.innerHeight-8&&(T=Math.max(8,v.top-w.height-4)),r.style.left=`${C}px`,r.style.top=`${T}px`,document.addEventListener("mousedown",this.docMouseDown,!0),document.addEventListener("keydown",this.docKeyDown,!0)}rebuildListStates(){if(!this.panel)return;let e=this.panel.querySelector(".mach-column-panel-list");e&&this.renderColumnList(e,this.openColId==="__standalone__")}renderColumnList(e,t){let o=this.core.getApi();e.replaceChildren();let r=this.core.columnModel.getColumns().filter(n=>n.isDetailToggle?!1:!t||!this.searchText?!0:`${n.colDef.headerName??n.colDef.field??n.id} ${n.id}`.toLocaleLowerCase().includes(this.searchText));for(let n of r){let s=g("div",t?"mach-column-workbench-item":"mach-filter-set-item"),a=g("label","mach-column-workbench-label"),l=document.createElement("input");l.type="checkbox",l.checked=!n.hide,l.disabled=n.hasCheckbox,l.addEventListener("change",()=>{o.setColumnVisibility(n.id,l.checked),this.rebuildListStates()});let d=g("span","mach-column-workbench-name");if(d.textContent=n.colDef.headerName??n.colDef.field??n.id,d.title=`${d.textContent} (${n.id})`,a.append(l,d),s.appendChild(a),t){let c=document.createElement("select");c.className="mach-column-workbench-pin",c.setAttribute("aria-label",`${d.textContent} ${this.core.getLocaleText("clearPin")}`);for(let[m,f]of[["",this.core.getLocaleText("clearPin")],["left",this.core.getLocaleText("pinLeft")],["right",this.core.getLocaleText("pinRight")]]){let y=document.createElement("option");y.value=m,y.textContent=f,c.appendChild(y)}c.value=n.pinned??"",c.addEventListener("change",()=>{o.setColumnPinned(n.id,c.value==="left"||c.value==="right"?c.value:null),this.rebuildListStates()}),s.appendChild(c);let u=this.core.columnModel.getColumns().filter(m=>!m.hide&&m.parentGroup===n.parentGroup&&(n.parentGroup!=null||m.pinned===n.pinned)),h=u.indexOf(n),p=(m,f,y)=>{let v=g("button","mach-column-workbench-move");return v.type="button",v.textContent=m,v.disabled=y||n.hide||!n.movable,v.addEventListener("click",()=>{o.moveColumn(n.id,f),this.rebuildListStates()}),v};s.append(p("\u2191",h-1,h<=0),p("\u2193",h+1,h<0||h>=u.length-1))}e.appendChild(s)}}};var $e=class{constructor(e){this.core=e;this.panel=null;this.docMouseDown=e=>{this.panel&&!this.panel.contains(e.target)&&this.close()};this.docKeyDown=e=>{e.key==="Escape"&&this.close()}}open(e,t,o){this.close();let r=this.core,n,s;if(o)n=r.rowModel.getDisplayedRow(o.rowIndex),s=r.columnModel.getColumn(o.colId);else{let u=r.bodyRenderer.getNormalizedRangeOrFocus();if(!u)return;let h=r.columnModel.getOrderedVisible();n=r.rowModel.getDisplayedRow(u.r1),s=h[u.c1]}if(!n||!s)return;let a=n.rowIndex,l=g("div","mach-context-menu");l.setAttribute("role","menu");let d=r.options.getContextMenuItems;if(d){let u;try{u=d({data:n.data,node:n,api:r.getApi(),colId:s.id,value:r.getCellValue(n,s),rowIndex:a})}catch(p){r.reportError(p,"getContextMenuItems",{colId:s.id,rowId:n.id});return}if(u==null)return;let h=!1;for(let p of u){if(p.separator){let f=g("div","mach-context-menu-separator");l.appendChild(f);continue}let m=g("button","mach-context-menu-item");m.type="button",m.textContent=p.label??"",p.danger&&m.classList.add("mach-context-menu-item--danger"),p.disabled?m.disabled=!0:(h=!0,m.addEventListener("click",()=>{this.close();try{p.action?.()}catch(f){r.reportError(f,"contextMenu.action",{colId:s.id,rowId:n.id})}})),l.appendChild(m)}if(!h){l.remove();return}this.attach(l,e,t);return}let c=g("button","mach-context-menu-item");if(c.type="button",c.textContent=r.getLocaleText("menuCopy"),c.addEventListener("click",()=>{r.copyActiveRange(),this.close()}),l.appendChild(c),!r.options.suppressClipboard){let u=g("button","mach-context-menu-item");u.type="button",u.textContent=r.getLocaleText("menuPaste"),u.addEventListener("click",()=>{r.pasteFromSystemClipboard(),this.close()}),l.appendChild(u);let h=g("button","mach-context-menu-item");h.type="button",h.textContent=r.getLocaleText("menuClearContents"),h.addEventListener("click",()=>{let p=r.bodyRenderer.getNormalizedRangeOrFocus();p&&r.clearRangeValues(p),this.close()}),l.appendChild(h)}this.attach(l,e,t)}attach(e,t,o){document.body.appendChild(e),this.panel=e;let r=e.getBoundingClientRect(),n=x(t,8,Math.max(8,window.innerWidth-r.width-8)),s=x(o,8,Math.max(8,window.innerHeight-r.height-8));e.style.left=`${n}px`,e.style.top=`${s}px`,document.addEventListener("mousedown",this.docMouseDown,!0),document.addEventListener("keydown",this.docKeyDown,!0)}close(){this.panel&&(this.panel.remove(),this.panel=null,document.removeEventListener("mousedown",this.docMouseDown,!0),document.removeEventListener("keydown",this.docKeyDown,!0))}destroy(){this.close()}};var Ue=class{constructor(e){this.core=e;this.panel=null;this.showTimer=0;this.hideTimer=0;this.currentCell=null;this.onMouseOver=e=>{if(this.core.isDestroyed()||!this.core.options.tooltipComponent)return;let o=e.target.closest(".mach-cell");if(!o||o===this.currentCell)return;this.clearTimers(),this.removePanel(),this.currentCell=o;let r=o.dataset.colId??"",n=o.closest(".mach-row"),s=Number(n?.dataset.index),a=Number.isNaN(s)?void 0:this.core.rowModel.getDisplayedRow(s),l=r?this.core.columnModel.getColumn(r):void 0;if(!a||!l||a.isDetail||a.isGroup||o.classList.contains("mach-cell--editing"))return;let d=this.core.getCellValue(a,l),c={data:a.data,node:a,api:this.core.getApi(),colId:l.id,value:d,formatted:N(this.core,a,l),rowIndex:s},u=l.colDef.tooltipValueGetter,h=c.formatted;if(u)try{h=u({...c,colDef:l.colDef,column:l})??c.formatted}catch(p){this.core.reportError(p,"tooltipValueGetter",{colId:l.id,rowId:a.id})}!h&&!l.colDef.tooltipValueGetter||(this.showTimer=setTimeout(()=>{this.core.isDestroyed()||this.currentCell!==o||this.showPanel(o,c)},Math.max(0,this.core.options.tooltipShowDelay)))};this.onBodyLeave=()=>{this.hide()}}init(){let e=this.core.skeleton.bodyEl;e.addEventListener("mouseover",this.onMouseOver),e.addEventListener("mouseleave",this.onBodyLeave)}destroy(){this.clearTimers(),this.removePanel();let e=this.core.skeleton.bodyEl;e.removeEventListener("mouseover",this.onMouseOver),e.removeEventListener("mouseleave",this.onBodyLeave),this.currentCell=null}hide(){this.clearTimers(),this.removePanel(),this.currentCell=null}clearTimers(){this.showTimer&&(clearTimeout(this.showTimer),this.showTimer=0),this.hideTimer&&(clearTimeout(this.hideTimer),this.hideTimer=0)}removePanel(){this.panel&&(this.panel.remove(),this.panel=null)}showPanel(e,t){this.removePanel();let o=this.core.options.tooltipComponent;if(!o)return;let r=g("div","mach-tooltip");r.setAttribute("role","tooltip");let n;try{n=o(t)}catch(c){this.core.reportError(c,"tooltipComponent",{colId:t.colId,rowIndex:t.rowIndex});return}typeof n=="string"?r.textContent=n:r.appendChild(n),document.body.appendChild(r),this.panel=r;let s=e.getBoundingClientRect(),a=r.getBoundingClientRect(),l=x(s.left,8,Math.max(8,window.innerWidth-a.width-8)),d=s.bottom+6;d+a.height>window.innerHeight-8&&(d=Math.max(8,s.top-a.height-6)),r.style.left=`${l}px`,r.style.top=`${d}px`}};var qe=class{constructor(e){this.core=e;this.overlay=null}init(){this.overlay=document.createElement("div"),this.overlay.className="mach-watermark",this.overlay.setAttribute("aria-hidden","true"),this.overlay.style.pointerEvents="none",this.core.skeleton.root.appendChild(this.overlay),this.apply()}apply(){if(!this.overlay||this.core.isDestroyed())return;let e=this.core.options.watermarkEnabled?this.core.options.watermarkConfig:null;if(!e||!e.text){this.overlay.style.display="none",this.overlay.style.backgroundImage="";return}let t=this.buildTile(e);this.overlay.style.display="",t?(this.overlay.style.backgroundImage=`url(${t})`,this.overlay.style.backgroundColor=""):this.overlay.style.backgroundImage=""}buildTile(e){try{let t=document.createElement("canvas"),o=t.getContext("2d");if(!o)return null;let r=e.fontSize??14,n=e.gap??160,s=e.angle??-22,a=e.color??(this.isDark()?"rgba(255,255,255,0.9)":"rgba(31,55,88,0.9)"),l=e.opacity??.06;o.font=`500 ${r}px sans-serif`;let d=o.measureText(e.text),c=Math.ceil(d.width),u=Math.max(n,c+40);t.width=u,t.height=u;let h=t.getContext("2d");return h.clearRect(0,0,u,u),h.globalAlpha=l,h.fillStyle=a,h.font=`500 ${r}px sans-serif`,h.translate(u/2,u/2),h.rotate(s*Math.PI/180),h.textAlign="center",h.textBaseline="middle",h.fillText(e.text,0,0),t.toDataURL("image/png")}catch{return null}}isDark(){return this.core.skeleton.root.classList.contains("mach-theme-dark")}refresh(){this.apply()}destroy(){this.overlay?.remove(),this.overlay=null}};var je=class{constructor(e){this.core=e;this.stack=[];this.pointer=-1;this.pending=null}beginBatch(){this.pending||(this.pending=[])}endBatch(){if(!this.pending)return;let e=this.pending;this.pending=null,e.length>0&&this.push(e)}cancelBatch(){this.pending=null}record(e){if(this.pending){this.pending.push(e);return}this.push([e])}push(e){let t=Math.max(0,this.core.options.undoStackSize);if(t!==0){for(this.stack.length=this.pointer+1,this.stack.push(e);this.stack.length>t;)this.stack.shift();this.pointer=this.stack.length-1}}trimToSize(){let e=Math.max(0,this.core.options.undoStackSize);if(e===0){this.clear();return}for(;this.stack.length>e;)this.stack.shift(),this.pointer--;this.pointer<-1&&(this.pointer=-1)}canUndo(){return this.pointer>=0}canRedo(){return this.pointer<this.stack.length-1}undo(){return this.canUndo()?(this.apply(this.stack[this.pointer],!1),this.pointer--,!0):!1}redo(){return this.canRedo()?(this.pointer++,this.apply(this.stack[this.pointer],!0),!0):!1}apply(e,t){let o=this.core,r=[];for(let n of e){let s=o.rowModel.getNodeById(n.nodeId),a=o.columnModel.getColumn(n.columnId);if(!s||!a||s.data==null)continue;let l=t?n.newValue:n.oldValue,d=t?n.oldValue:n.newValue;o.writeValue(s,a,l,d)&&(o.bodyRenderer.invalidateRowHeight(s),o.bodyRenderer.queueFlash([s.rowIndex],[a.id]),s.rowIndex>=0&&r.push(s.rowIndex),o.emit("cellValueChanged",{oldValue:d,newValue:l,rowNode:s,rowIndex:s.rowIndex,column:a,colDef:a.colDef,data:s.data}))}r.length>0&&o.bodyRenderer.refreshRows(r),o.summaryRenderer.refresh(),o.statusBarService.refresh()}clear(){this.stack=[],this.pointer=-1,this.pending=null}};var Ye=class{constructor(e){this.core=e;this.changes=new Map;this.rollingBack=!1;this.unsubscribe=null}init(){this.unsubscribe=this.core.eventBus.on("cellValueChanged",e=>{this.rollingBack||this.record(e)})}record(e){let t=`${e.rowNode.id}\0${e.column.id}`,r=this.changes.get(t)?.originalValue??e.oldValue;Object.is(e.newValue,r)?this.changes.delete(t):this.changes.set(t,{rowId:e.rowNode.id,colId:e.column.id,originalValue:r,value:e.newValue}),this.emitChanged()}getDirtyRowIds(){return[...new Set([...this.changes.values()].map(e=>e.rowId))]}getChanges(){let e=new Map;for(let t of this.changes.values()){let o=this.core.rowModel.getNodeById(t.rowId);if(!o?.data)continue;let r=e.get(t.rowId);r||(r={rowId:t.rowId,data:o.data,cells:[]},e.set(t.rowId,r)),r.cells.push({colId:t.colId,originalValue:t.originalValue,value:t.value})}return[...e.values()]}markSaved(e){if(!e)this.changes.clear();else{let t=new Set(e);for(let[o,r]of this.changes)t.has(r.rowId)&&this.changes.delete(o)}this.emitChanged()}acknowledge(e){for(let t of e)for(let o of t.cells){let r=`${t.rowId}\0${o.colId}`,n=this.changes.get(r);if(n){Object.is(n.value,o.value)?this.changes.delete(r):n.originalValue=o.value;continue}let s=this.core.rowModel.getNodeById(t.rowId),a=this.core.columnModel.getColumn(o.colId);if(!s||!a||s.data==null)continue;let l=this.core.getCellValue(s,a);Object.is(l,o.value)||this.changes.set(r,{rowId:t.rowId,colId:o.colId,originalValue:o.value,value:l})}this.emitChanged()}rollback(e){let t=e?new Set(e):null,o=[...this.changes.entries()].filter(([,s])=>!t||t.has(s.rowId));if(o.length===0)return!1;let r=new Set,n=new Set;this.rollingBack=!0;try{for(let[s,a]of o){let l=this.core.rowModel.getNodeById(a.rowId),d=this.core.columnModel.getColumn(a.colId);if(!l||!d||l.data==null)continue;let c=this.core.getCellValue(l,d);if(Object.is(c,a.originalValue)){n.add(s);continue}this.core.writeValue(l,d,a.originalValue,c)&&(n.add(s),this.core.bodyRenderer.invalidateRowHeight(l),l.rowIndex>=0&&r.add(l.rowIndex),this.core.emit("cellValueChanged",{oldValue:c,newValue:a.originalValue,rowNode:l,rowIndex:l.rowIndex,column:d,colDef:d.colDef,data:l.data}))}}finally{this.rollingBack=!1}for(let s of n)this.changes.delete(s);return r.size>0&&this.core.bodyRenderer.refreshRows([...r]),this.core.summaryRenderer.refresh(),this.core.statusBarService.refresh(),this.emitChanged(),n.size>0}clearRows(e){if(e.length===0)return;let t=new Set(e);for(let[o,r]of this.changes)t.has(r.rowId)&&this.changes.delete(o);this.emitChanged()}clear(){this.changes.size!==0&&(this.changes.clear(),this.emitChanged())}destroy(){this.unsubscribe?.(),this.unsubscribe=null,this.changes.clear()}emitChanged(){this.core.emit("dirtyStateChanged",{dirtyRowIds:this.getDirtyRowIds()})}};var oe=["gridReady","gridDestroyed","modelUpdated","cellClicked","cellDoubleClicked","cellContextMenu","rowClicked","rowDoubleClicked","selectionChanged","sortChanged","filterChanged","columnResized","columnMoved","columnVisibilityChanged","cellValueChanged","cellEditingStarted","cellEditingStopped","rowEditingStarted","rowEditingStopped","detailToggled","treeChildrenLoaded","treeChildrenLoadFailed","rowDragEnd","rangeSelectionChanged","paginationChanged","displayedColumnsChanged","gridError","dirtyStateChanged"];function $(i){return(i==null?"":String(i)).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Xe(i,e,t="text/plain;charset=utf-8"){try{if(typeof document>"u"||typeof Blob>"u")return!1;let o=document.createElement("a");if(typeof URL<"u"&&typeof URL.createObjectURL=="function"){let r=new Blob([e],{type:t}),n=URL.createObjectURL(r);o.href=n,o.download=i,o.click();let s=typeof URL.revokeObjectURL=="function"?URL.revokeObjectURL.bind(URL):null;s&&setTimeout(()=>{try{s(n)}catch{}},0)}else o.href=`data:${t},${encodeURIComponent(e)}`,o.download=i,o.click();return!0}catch{return!1}}function Hr(){return{datasourceChanged:!1,needsCellRefresh:!1,needsColumnRebuild:!1,needsHeaderRebuild:!1,needsPoolRebuild:!1,needsRelayout:!1,needsRowRebuild:!1,needsStateLoad:!1,needsSummaryRefresh:!1}}function b(i,e){return Object.prototype.hasOwnProperty.call(i,e)}function G(i,e,t=!1){if(!(typeof i!="number"||!Number.isFinite(i)||i<e))return t?Math.floor(i):i}function pe(i,e,t,o=!1){let r=G(i,t,o);return r===void 0||r===e?void 0:r}function Br(i){try{if(typeof structuredClone=="function")return structuredClone(i)}catch{}return Array.isArray(i)?[...i]:i!=null&&typeof i=="object"?{...i}:i}var Ze=class{constructor(e){this.core=e;this.measureCanvas=null;this.asyncTransactions=[];this.asyncTransactionTimer=null;this.asyncTransactionResolvers=[]}whenReady(){return this.core.whenReady()}getRootElement(){return this.core.isDestroyed()?null:this.core.skeleton.root}setRowData(e){this.core.isDestroyed()||(this.core.options.rowData=e??[],!this.core.rowModel.isInfinite&&(this.core.rowModel.setRowData(e),this.core.bodyRenderer.onDataChanged()))}applyTransaction(e){this.core.isDestroyed()||this.core.rowModel.isInfinite||(this.core.rowModel.applyTransaction(e),this.core.bodyRenderer.onDataChanged())}applyTransactionAsync(e){return this.core.isDestroyed()||this.core.rowModel.isInfinite?Promise.resolve():(this.asyncTransactions.push(e),this.asyncTransactionTimer==null&&(this.asyncTransactionTimer=setTimeout(()=>this.flushAsyncTransactions(),this.core.options.asyncTransactionWaitMillis)),new Promise(t=>this.asyncTransactionResolvers.push(t)))}flushAsyncTransactions(){this.asyncTransactionTimer!=null&&clearTimeout(this.asyncTransactionTimer),this.asyncTransactionTimer=null;let e=this.asyncTransactions,t=this.asyncTransactionResolvers;this.asyncTransactions=[],this.asyncTransactionResolvers=[],e.length>0&&!this.core.isDestroyed()&&!this.core.rowModel.isInfinite&&(this.core.rowModel.applyTransactions(e),this.core.bodyRenderer.onDataChanged());for(let o of t)o()}getColumnDefs(){return this.core.columnModel.getColumnDefs()}setColumnDefs(e){this.core.isDestroyed()||(this.core.options.columnDefs=e??[],this.core.columnModel.setColumnDefs(e),this.core.loadPersistedColumnState(),this.core.onColumnsStructureChanged(),this.core.rowModel.isInfinite?this.core.rowModel.onServerParamsChanged():(this.core.rowModel.refreshPipeline(),this.core.bodyRenderer.onDataChanged()))}getColumnState(){return this.core.columnModel.getColumnState()}setColumnState(e){this.core.isDestroyed()||(this.core.columnModel.applyColumnState(e),this.core.onColumnsStructureChanged(),this.core.applySortModel(),this.core.persistColumnState())}resetColumnState(){this.core.isDestroyed()||(this.core.columnModel.resetColumnState(),this.core.onColumnsStructureChanged(),this.core.applySortModel(),this.core.persistColumnState())}setColumnVisibility(e,t){this.core.isDestroyed()||(this.core.columnModel.setColumnVisibility(e,t),this.core.onColumnsStructureChanged(),this.core.emit("columnVisibilityChanged",{colId:e,visible:t}),this.core.persistColumnState())}moveColumn(e,t){this.core.isDestroyed()||this.core.moveColumn(e,t)}setColumnPinned(e,t){this.core.isDestroyed()||(this.core.columnModel.setColumnPinned(e,t),this.core.onColumnsStructureChanged(),this.core.persistColumnState())}sizeColumnsToFit(e){if(this.core.isDestroyed())return;let t=this.core.columnModel.getOrderedVisible();if(t.length===0)return;let o=e??this.core.skeleton.measureViewportWidth();if(o<=0)return;let r=t.reduce((n,s)=>n+s.currentWidth,0);if(!(r<=0)){for(let n of t)this.core.columnModel.setColumnWidth(n,Math.max(30,Math.floor(n.currentWidth*o/r)));this.core.relayoutColumns(),this.core.persistColumnState()}}autoSizeColumn(e,t=!1){if(this.core.isDestroyed())return;let o=this.core.columnModel.getColumn(e);o&&this.autoSizeColumnInternal(o,t)&&(this.core.relayoutColumns(),this.core.persistColumnState())}autoSizeColumnInternal(e,t){if(e.hasCheckbox||e.isDetailToggle)return this.core.columnModel.setColumnWidth(e,e.isDetailToggle?38:46),!0;this.measureCanvas??(this.measureCanvas=document.createElement("canvas"));let o=this.measureCanvas.getContext("2d");if(!o)return!1;let r=window.getComputedStyle(this.core.skeleton.root);o.font=`${r.fontStyle} ${r.fontWeight} ${r.fontSize} ${r.fontFamily}`;let n=0,s=c=>{if(!c)return;let u=o.measureText(c).width;u>n&&(n=u)};t||s(e.colDef.headerName??e.colDef.field??e.id);let a=this.core.rowModel.getAllNodes(),l=Math.min(a.length,2e3);for(let c=0;c<l;c++)s(N(this.core,a[c],e));let d=(e.sortable?20:0)+(e.filterable?28:0)+(this.core.options.columnMenu?22:0)+28;return this.core.columnModel.setColumnWidth(e,Math.ceil(n)+d),!0}autoSizeAllColumns(e){if(this.core.isDestroyed())return;let t=!1;for(let o of this.core.columnModel.getOrderedVisible())t=this.autoSizeColumnInternal(o,e??!1)||t;t&&(this.core.relayoutColumns(),this.core.persistColumnState())}getSortModel(){return this.core.columnModel.getSortModel()}setSortModel(e){this.core.isDestroyed()||(this.core.columnModel.applySortModel(e),this.core.applySortModel())}getFilterModel(){return this.core.rowModel.getFilterModel()}setFilterModel(e){if(!this.core.isDestroyed()){if(this.core.rowModel.setFilterModel(e),this.core.headerRenderer.refreshFilterIcons(),this.core.emit("filterChanged",{filterModel:this.core.rowModel.getFilterModel()}),this.core.rowModel.isInfinite){this.core.rowModel.onServerParamsChanged();return}this.core.rowModel.refreshPipeline(),this.core.bodyRenderer.onDataChanged()}}isColumnFilterPresent(e){return Object.prototype.hasOwnProperty.call(this.core.rowModel.getFilterModel(),e)}setQuickFilter(e){this.core.isDestroyed()||(this.core.options.quickFilterText=e!=null&&e.trim()!==""?e:null,this.core.rowModel.setQuickFilter(e)&&this.core.applyQuickFilter())}getQuickFilter(){return this.core.rowModel.getQuickFilter()}getRowSelection(){return this.core.options.rowSelection}setRowSelection(e){this.core.isDestroyed()||this.core.options.rowSelection!==e&&(this.core.options.rowSelection=e,e==="none"&&this.deselectAll(),this.core.headerRenderer.build(),this.core.bodyRenderer.rebuildPool())}getSelectedNodes(){return this.core.selectionService.getSelectedNodes()}getSelectedRows(){return this.core.selectionService.getSelectedRows()}selectNodeById(e,t=!0,o=!0){this.core.selectionService.selectNodeById(e,t,o)}selectAll(e=!0){this.core.selectionService.selectAll(e)}deselectAll(){this.core.selectionService.deselectAll()}getDisplayedRowCount(){return this.core.rowModel.getDisplayedRowCount()}getRowNode(e){return this.core.rowModel.getDisplayedRow(e)}getNodeById(e){return this.core.rowModel.getNodeById(e)}forEachNode(e){this.core.rowModel.forEachNode(e)}forEachNodeAfterFilterAndSort(e){this.core.rowModel.forEachNodeAfterFilterAndSort(e)}scrollToIndex(e,t="top"){this.core.bodyRenderer.scrollToIndex(e,t)}expandRow(e){return this.core.isDestroyed()?!1:this.core.rowModel.expandRow(e)}collapseRow(e){return this.core.isDestroyed()?!1:this.core.rowModel.collapseRow(e)}toggleDetailRow(e){return this.core.isDestroyed()?!1:this.core.rowModel.toggleDetail(e)}isRowExpanded(e){return this.core.rowModel.isRowExpanded(e)}expandAllDetails(){this.core.isDestroyed()||this.core.rowModel.expandAllDetails()}collapseAllDetails(){this.core.isDestroyed()||this.core.rowModel.collapseAllDetails()}loadTreeChildren(e,t={}){return this.core.isDestroyed()?Promise.resolve([]):this.core.rowModel.loadTreeChildren(e,t.force===!0)}retryTreeChildren(e){return this.loadTreeChildren(e,{force:!0})}isTreeRowLoading(e){return!this.core.isDestroyed()&&this.core.rowModel.isTreeRowLoading(e)}toggleRowGroup(e){return this.core.isDestroyed()?!1:this.core.rowModel.toggleGroup(e)}reorderRows(e,t){return this.core.isDestroyed()?!1:this.core.rowModel.reorderRowsByDisplayed(e,t)}isGroupExpanded(e){return this.core.rowModel.isGroupExpanded(e)}expandAllGroups(){this.core.isDestroyed()||this.core.rowModel.expandAllGroups()}collapseAllGroups(){this.core.isDestroyed()||this.core.rowModel.collapseAllGroups()}setSelection(e,t=!0){if(this.core.isDestroyed())return;let o=this.core.options.getRowId,r=[];for(let n of e){let s=o?this.core.rowModel.getNodeById(this.core.rowModel.resolveRowId(n,-1,`__missing_selection_${this.core.nextId()}`)):this.core.rowModel.getAllNodes().find(a=>a.data===n);s&&r.push({node:s,selected:!0})}r.length>0?this.core.selectionService.applySelectionPublic(r,t):t&&this.deselectAll()}getVisibleSelection(){let e=new Set(this.core.selectionService.getSelectedNodes().map(t=>t.id));return this.core.rowModel.getDisplayedRows().filter(t=>!t.isDetail&&!t.isGroup&&e.has(t.id)).map(t=>t.data).filter(Boolean)}getSelectedIds(){return this.core.selectionService.getSelectedIds()}undo(){return this.core.isDestroyed()?!1:this.core.undoService.undo()}redo(){return this.core.isDestroyed()?!1:this.core.undoService.redo()}canUndo(){return this.core.undoService.canUndo()}canRedo(){return this.core.undoService.canRedo()}getDirtyRowIds(){return this.core.changeTracker.getDirtyRowIds()}getChanges(){return this.core.changeTracker.getChanges()}markChangesSaved(e){this.core.changeTracker.markSaved(e)}async saveChanges(e,t){let o=t?new Set(t):null,r=this.core.changeTracker.getChanges().filter(l=>!o||o.has(l.rowId)).map(l=>({...l,data:Br(l.data),cells:l.cells.map(d=>({...d}))}));if(r.length===0)return[];let n=await e(r),s=n&&typeof n=="object"&&Array.isArray(n.savedRowIds)?new Set(n.savedRowIds.map(String)):null,a=s?r.filter(l=>s.has(l.rowId)):r;return this.core.isDestroyed()||this.core.changeTracker.acknowledge(a),a}rollbackChanges(e){return this.core.changeTracker.rollback(e)}setPinnedTopRowData(e){this.core.isDestroyed()||(this.core.options.pinnedTopRowData=e??[],this.core.pinnedRowsRenderer.setTopData(this.core.options.pinnedTopRowData))}getPinnedTopRowData(){return this.core.pinnedRowsRenderer.getTopData()}setPinnedBottomRowData(e){this.core.isDestroyed()||(this.core.options.pinnedBottomRowData=e??[],this.core.pinnedRowsRenderer.setBottomData(this.core.options.pinnedBottomRowData))}getPinnedBottomRowData(){return this.core.pinnedRowsRenderer.getBottomData()}getRangeSelection(){return this.core.bodyRenderer.getRangeSelection()}clearRangeSelection(){this.core.isDestroyed()||this.core.bodyRenderer.clearRangeSelection()}copyRangeToClipboard(){return this.core.isDestroyed()?Promise.resolve(!1):this.core.copyActiveRange()}openColumnPanel(e){this.openColumnWorkbench(e)}openColumnWorkbench(e){this.core.isDestroyed()||this.core.columnMenu.openStandalone(e)}closeColumnWorkbench(){this.core.columnMenu.close()}getColumnWorkbenchItems(){return this.core.columnModel.getColumns().filter(e=>!e.isDetailToggle).map(e=>({colId:e.id,label:e.colDef.headerName??e.colDef.field??e.id,visible:!e.hide,pinned:e.pinned,width:e.currentWidth||e.manualWidth||e.colDef.width||0,movable:e.movable,hideable:!e.hasCheckbox}))}refreshLayout(){this.core.isDestroyed()||(this.core.relayout(),this.core.bodyRenderer.syncScroll())}isInfinite(){return this.core.rowModel.isInfinite}reload(){return this.core.isDestroyed()?Promise.resolve():this.core.rowModel.isInfinite?this.core.rowModel.reloadInfinite():(this.core.rowModel.setRowData(this.core.options.rowData),this.core.bodyRenderer.onDataChanged(),Promise.resolve())}paginationEnabled(){return this.core.rowModel.paginationActive}setPaginationEnabled(e){this.core.isDestroyed()||this.core.rowModel.setPaginationEnabled(e)}getPage(){return this.core.rowModel.getCurrentPage()}setPage(e){this.core.isDestroyed()||this.core.rowModel.setPage(e)}getPageSize(){return this.core.options.paginationPageSize}setPageSize(e){this.core.isDestroyed()||this.core.rowModel.setPageSize(e)}getPageCount(){return this.core.rowModel.getPageCount()}getTotalRowCount(){return this.core.rowModel.getTotalRowCount()}importCsv(e,t={}){if(this.core.isDestroyed()||!e)return!1;let o=Pe(e,t.separator??",");if(o.length===0)return!1;let r=o[t.headerRowIndex??0]??[],n=o.slice((t.headerRowIndex??0)+1).filter(c=>c.some(u=>u!=="")),s=t.mode??"replace";if(s==="paste")return this.core.pasteText(te(n,!1),0,0),!0;let a=this.core.columnModel.getOrderedVisible().filter(c=>c.colDef.field),l=this.resolveCsvFieldOrder(r,a),d=this.buildCsvRecords(n,l,t);return s==="append"?this.core.rowModel.applyTransaction({add:d}):this.core.rowModel.setRowData(d),this.core.bodyRenderer.onDataChanged(),!0}resolveCsvFieldOrder(e,t){let o=new Map;for(let n of t){let s=n.colDef.field;s&&(o.set(String(n.colDef.headerName??s),s),o.set(s,s))}e.length>0&&(e[0]=e[0].replace(/^\uFEFF/,""));let r=e.map((n,s)=>({field:o.get(String(n).trim())??null,index:s})).filter(n=>n.field!=null);return r.length>0?r:t.map((n,s)=>({field:n.colDef.field,index:s}))}buildCsvRecords(e,t,o){return e.map((r,n)=>{let s={};return t.forEach(({field:a,index:l})=>{let d=r[l];if(d===void 0)return;let c=this.parseCsvValue(d,a,n,l,o);W(s,a,c)||this.core.reportError(new Error(`Unsafe CSV field: ${a}`),"csv.import",{field:a})}),s})}parseCsvValue(e,t,o,r,n){if(n.parseValue)try{return n.parseValue({value:e,field:t,rowIndex:o,columnIndex:r})}catch(l){return this.core.reportError(l,"csv.parseValue",{field:t,rowIndex:o,columnIndex:r}),e}if(e==="")return null;let s=/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(e),a=/^[+-]?0\d/.test(e);return n.coerceNumbers!==!1&&s&&!a?Number(e):e}print(e={}){if(this.core.isDestroyed())return!1;try{let t=window.open("","_blank","width=980,height=720");if(!t)return!1;let o=this.core.columnModel.getOrderedVisible().filter(d=>!d.hasCheckbox&&!d.isDetailToggle&&!d.colDef.rowDrag),r=this.core.rowModel.getPipelineRows().filter(d=>!d.isDetail&&!d.isGroup),s=e.includeHeader!==!1?`<tr>${o.map(d=>`<th>${$(d.colDef.headerName??d.colDef.field??d.id)}</th>`).join("")}</tr>`:"",a=r.map(d=>`<tr>${o.map(c=>{let u=N(this.core,d,c);return`<td>${$(u)}</td>`}).join("")}</tr>`).join(""),l=`<!doctype html><html><head><meta charset="utf-8"><title>${$(e.title??"MachTable")}</title><style>body{font-family:system-ui,"PingFang SC","Microsoft YaHei",sans-serif;padding:20px}h3{margin:0 0 12px;font-size:16px}table{border-collapse:collapse;width:100%;font-size:12px}th,td{border:1px solid #bbb;padding:5px 8px;text-align:left;word-break:break-all}th{background:#f2f5f9;font-weight:600}@page{margin:12mm}</style></head><body><h3>${$(e.title??"")}</h3><table>${s}${a}</table></body></html>`;return t.document.write(l),t.document.close(),t.focus(),t.print(),!0}catch{return!1}}startEditingCell(e){let t=this.core.columnModel.getColumn(e.colId);return t?this.core.editingService.start(e.rowIndex,t,e.keyPress??null):!1}startEditingRow(e){return this.core.editingService.startRow(e)}isRowEditing(e){return this.core.editingService.isRowEditing(e)}stopEditing(e){this.core.editingService.stop(e??!1)}stopEditingAsync(e){return this.core.editingService.stopAsync(e??!1)}stopEditingRow(e){return this.core.editingService.stopRowAsync(e??!1)}refreshCells(){this.core.bodyRenderer.refreshAllCells(),this.core.pinnedRowsRenderer.refresh(),this.core.summaryRenderer.refresh()}getGridOption(e){return this.core.options[e]}setGridOption(e,t){this.updateOptions({[e]:t})}updateOptions(e){if(this.core.isDestroyed())return;this.core.checkWarnings(e);let t=Hr(),o=this.core.options.columnMenu;this.updateSourceOptions(e,t),this.updateDimensionOptions(e,t),this.updateEditingOptions(e,t),this.updateInteractionOptions(e,t),this.updatePaginationOptions(e),this.updatePresentationOptions(e,t),this.updateAccessibilityOptions(e,t),this.updateRowModelOptions(e,t),this.updateExtensionOptions(e,t),this.updateDatasourceOptions(e,t),this.applyOptionUpdateEffects(e,t,o)}updateSourceOptions(e,t){let o=this.core.options;b(e,"columnDefs")&&e.columnDefs!==o.columnDefs&&(o.columnDefs=Array.isArray(e.columnDefs)?e.columnDefs:[],t.needsColumnRebuild=!0,t.needsRowRebuild=!0),b(e,"rowData")&&(o.rowData=Array.isArray(e.rowData)?e.rowData:[],t.needsRowRebuild=!0),b(e,"initialState")&&e.initialState&&(o.initialState=e.initialState,t.stateToApply=e.initialState),this.updateEventHandlers(e)}updateEventHandlers(e){for(let t of oe){let o=`on${t.charAt(0).toUpperCase()}${t.slice(1)}`;b(e,o)&&Object.assign(this.core.options,{[o]:e[o]})}}updateDimensionOptions(e,t){let o=this.core.options,r=pe(e.rowHeight,o.rowHeight,1),n=pe(e.headerHeight,o.headerHeight,1),s=pe(e.rowBuffer,o.rowBuffer,0,!0),a=pe(e.detailRowHeight,o.detailRowHeight,1);r!==void 0&&(o.rowHeight=r,t.needsRelayout=!0),n!==void 0&&(o.headerHeight=n,t.needsRelayout=!0,t.needsHeaderRebuild=!0),s!==void 0&&(o.rowBuffer=s,t.needsRelayout=!0),e.columnLayout!=null&&e.columnLayout!==o.columnLayout&&(o.columnLayout=e.columnLayout==="fit"?"fit":"normal",t.needsRelayout=!0),e.domLayout!=null&&e.domLayout!==o.domLayout&&(o.domLayout=e.domLayout==="autoHeight"?"autoHeight":"normal",this.core.skeleton.applyDomLayout(o.domLayout),t.needsPoolRebuild=!0),e.multiSort!=null&&(o.multiSort=e.multiSort),a!==void 0&&(o.detailRowHeight=a,this.core.bodyRenderer.applyContainerSizes(),this.core.bodyRenderer.updateRange(!0))}updateEditingOptions(e,t){let o=this.core.options;e.editType!=null&&e.editType!==o.editType&&(this.core.editingService.stop(!0),o.editType=e.editType==="fullRow"?"fullRow":"cell",t.needsCellRefresh=!0),e.editableIndicator!=null&&e.editableIndicator!==o.editableIndicator&&(o.editableIndicator=e.editableIndicator==="always"||e.editableIndicator==="none"?e.editableIndicator:"hover",t.needsCellRefresh=!0),b(e,"rowEditValidator")&&(o.rowEditValidator=e.rowEditValidator),e.singleClickEdit!=null&&(o.singleClickEdit=e.singleClickEdit),e.manualSorting!=null&&(o.manualSorting=e.manualSorting),e.manualFiltering!=null&&(o.manualFiltering=e.manualFiltering)}updateInteractionOptions(e,t){let o=this.core.options;e.locale!=null&&e.locale!==o.locale&&(o.locale=e.locale,t.needsHeaderRebuild=!0,t.needsCellRefresh=!0,this.core.paginationBar.rebuild(),this.core.statusBarService.rebuild()),e.indexOffset!=null&&e.indexOffset!==o.indexOffset&&(o.indexOffset=e.indexOffset,t.needsCellRefresh=!0),e.showSummary!=null&&e.showSummary!==o.showSummary&&(o.showSummary=e.showSummary,t.needsSummaryRefresh=!0,t.needsRelayout=!0);let r=pe(e.undoStackSize,o.undoStackSize,0,!0);r!==void 0&&(o.undoStackSize=r,this.core.undoService.trimToSize());let n=G(e.asyncTransactionWaitMillis,0,!0);n!==void 0&&(o.asyncTransactionWaitMillis=n),this.updateDynamicRowHeight(e,t),this.updateRangeAndFeedbackOptions(e)}updateDynamicRowHeight(e,t){if(!b(e,"getRowHeight"))return;let o=this.core.options.getRowHeight!==e.getRowHeight;this.core.options.getRowHeight=e.getRowHeight,o&&this.core.bodyRenderer.invalidateAllRowHeights(),t.needsRelayout=!0}updateRangeAndFeedbackOptions(e){let t=this.core.options;e.enableRangeSelection!=null&&(t.enableRangeSelection=e.enableRangeSelection,e.enableRangeSelection||this.clearRangeSelection()),b(e,"tooltipComponent")&&(t.tooltipComponent=e.tooltipComponent);let o=G(e.tooltipShowDelay,0);o!==void 0&&(t.tooltipShowDelay=o),e.flashCells!=null&&(t.flashCells=e.flashCells),b(e,"getContextMenuItems")&&(t.getContextMenuItems=e.getContextMenuItems),e.theme!=null&&e.theme!==t.theme&&(t.theme=e.theme,this.core.skeleton.applyTheme(e.theme),this.core.watermarkService.refresh())}updatePaginationOptions(e){if(e.pagination===void 0)return;let t=this.core.options,o=e.pagination,r=o!==!1&&t.datasource==null;r!==t.paginationEnabled&&this.core.rowModel.setPaginationEnabled(r),typeof o=="object"&&o&&this.updatePaginationConfig(o),t.paginationEnabled&&this.core.rowModel.onPaginationOptionsChanged(),this.core.paginationBar.rebuild()}updatePaginationConfig(e){let t=this.core.options;t.paginationMode=e.mode==="server"?"server":"client";let o=G(e.page,1,!0),r=G(e.total,0,!0);o!==void 0&&(t.paginationPage=o),r!==void 0&&(t.paginationTotal=r),e.pageSize!=null&&(t.paginationPageSize=e.pageSize),e.pageSizeOptions!=null&&(t.paginationPageSizeOptions=e.pageSizeOptions),e.showTotal!=null&&(t.paginationShowTotal=e.showTotal),e.showPageSizeSelector!=null&&(t.paginationShowSizeSelector=e.showPageSizeSelector)}updatePresentationOptions(e,t){this.updateWatermarkAndStatus(e,t),this.updateSizePreset(e,t);let o=this.core.options;e.stripedRows!=null&&e.stripedRows!==o.stripedRows&&(o.stripedRows=e.stripedRows,this.core.skeleton.setStriped(e.stripedRows)),e.showCellBorders!=null&&e.showCellBorders!==o.showCellBorders&&(o.showCellBorders=e.showCellBorders,this.core.skeleton.setCellBorders(e.showCellBorders))}updateWatermarkAndStatus(e,t){let o=this.core.options;e.watermark!==void 0&&(o.watermarkEnabled=e.watermark!=null&&e.watermark!==!1,o.watermarkConfig=e.watermark==null||e.watermark===!1?null:e.watermark===!0?{text:"MachTable"}:e.watermark,this.core.watermarkService.refresh()),this.updateStatusOptions(e),b(e,"summaryMethod")&&(o.summaryMethod=e.summaryMethod,t.needsSummaryRefresh=!0)}updateStatusOptions(e){let t=this.core.options;e.suppressClipboard!=null&&(t.suppressClipboard=e.suppressClipboard),e.contextMenu!=null&&(t.contextMenu=e.contextMenu),e.columnMenu!=null&&(t.columnMenu=e.columnMenu),e.fillHandle!=null&&(t.fillHandle=e.fillHandle),e.statusBar!==void 0&&(t.statusBarEnabled=e.statusBar===!0||typeof e.statusBar=="object"&&e.statusBar!=null,typeof e.statusBar=="object"&&e.statusBar?.panels&&(t.statusBarPanels=e.statusBar.panels),this.core.statusBarService.rebuild())}updateSizePreset(e,t){let{size:o}=e;if(o==null||!b(K,o)||o===this.core.options.size)return;let r=K[o];this.core.options.size=o,this.core.options.rowHeight=e.rowHeight??r.rowHeight,this.core.options.headerHeight=e.headerHeight??r.headerHeight,this.core.skeleton.applySize(o),t.needsRelayout=!0,t.needsHeaderRebuild=!0}updateAccessibilityOptions(e,t){let o=this.core.options;e.suppressCellFocus!=null&&(o.suppressCellFocus=e.suppressCellFocus),e.suppressRowHoverHighlight!=null&&(o.suppressRowHoverHighlight=e.suppressRowHoverHighlight),e.suppressNoRowsOverlay!=null&&(o.suppressNoRowsOverlay=e.suppressNoRowsOverlay),e.suppressHeaderFocus!=null&&e.suppressHeaderFocus!==o.suppressHeaderFocus&&(o.suppressHeaderFocus=e.suppressHeaderFocus,t.needsHeaderRebuild=!0),this.updateAriaLabels(e),this.updateOverlayOptions(e)}updateAriaLabels(e){let t=this.core.options,o=!1;b(e,"ariaLabel")&&(t.ariaLabel=e.ariaLabel??"MachTable data grid",o=!0),b(e,"ariaLabelledBy")&&(t.ariaLabelledBy=e.ariaLabelledBy??"",o=!0),b(e,"ariaDescribedBy")&&(t.ariaDescribedBy=e.ariaDescribedBy??"",o=!0),o&&this.core.skeleton.applyAriaLabels(t)}updateOverlayOptions(e){let t=this.core.options;b(e,"overlayNoRowsTemplate")&&(t.overlayNoRowsTemplate=e.overlayNoRowsTemplate??""),b(e,"overlayLoadingTemplate")&&(t.overlayLoadingTemplate=e.overlayLoadingTemplate??""),b(e,"overlayErrorTemplate")&&(t.overlayErrorTemplate=e.overlayErrorTemplate??""),e.allowUnsafeOverlayHtml!=null&&(t.allowUnsafeOverlayHtml=e.allowUnsafeOverlayHtml),b(e,"className")&&(t.className=e.className??"",this.core.skeleton.setCustomClass(t.className)),e.loading!=null&&(t.loading=e.loading),b(e,"error")&&(t.error=e.error??null)}updateRowModelOptions(e,t){this.updateSelectionAndColumns(e,t),this.updateHierarchyOptions(e,t);let o=this.core.options;e.autoCheckedChildren!=null&&(o.autoCheckedChildren=e.autoCheckedChildren),e.defaultExpandAll!=null&&e.defaultExpandAll!==o.defaultExpandAll&&(o.defaultExpandAll=e.defaultExpandAll,t.needsRowRebuild=!0),e.applyRowDrag!=null&&(o.applyRowDrag=e.applyRowDrag),e.suppressWarnings!=null&&(o.suppressWarnings=e.suppressWarnings)}updateSelectionAndColumns(e,t){let o=this.core.options;if(e.rowSelection!=null&&e.rowSelection!==o.rowSelection&&(o.rowSelection=e.rowSelection,e.rowSelection==="none"&&this.deselectAll(),t.needsHeaderRebuild=!0,t.needsPoolRebuild=!0,this.core.refreshAriaState()),e.quickFilterText!==void 0&&this.setQuickFilter(e.quickFilterText),e.defaultColDef!==void 0&&e.defaultColDef!==o.defaultColDef&&(o.defaultColDef={...bt,...e.defaultColDef},t.needsColumnRebuild=!0),b(e,"columnTypes")&&e.columnTypes!==o.columnTypes&&(o.columnTypes=e.columnTypes??{},t.needsColumnRebuild=!0),b(e,"getRowId")&&e.getRowId!==o.getRowId&&(o.getRowId=e.getRowId,t.needsRowRebuild=!0),b(e,"rowKey")){if(o.rowKey=e.rowKey,!b(e,"getRowId")){let r=e.rowKey;o.getRowId=r?({data:n})=>Tt(r,n):void 0}t.needsRowRebuild=!0}}updateHierarchyOptions(e,t){let o=this.core.options;e.masterDetail!=null&&e.masterDetail!==o.masterDetail&&(o.masterDetail=e.masterDetail,t.needsColumnRebuild=!0,t.needsRowRebuild=!0),e.detailToggleColumn!=null&&e.detailToggleColumn!==o.detailToggleColumn&&(o.detailToggleColumn=e.detailToggleColumn,t.needsColumnRebuild=!0),e.treeData!=null&&e.treeData!==o.treeData&&(o.treeData=e.treeData,t.needsRowRebuild=!0,t.needsColumnRebuild=!0,this.core.refreshAriaState()),e.childrenKey!=null&&e.childrenKey!==o.childrenKey&&(o.childrenKey=e.childrenKey,t.needsRowRebuild=!0),b(e,"isTreeRowExpandable")&&(o.isTreeRowExpandable=e.isTreeRowExpandable,t.needsCellRefresh=!0),b(e,"loadTreeChildren")&&(o.loadTreeChildren=e.loadTreeChildren,t.needsCellRefresh=!0)}updateExtensionOptions(e,t){let o=this.core.options,r=!1;b(e,"aggFuncs")&&(o.aggFuncs=e.aggFuncs,t.needsRowRebuild=!0),b(e,"components")&&(o.components=e.components,t.needsCellRefresh=!0),b(e,"actionPolicy")&&(o.actionPolicy=e.actionPolicy,t.needsCellRefresh=!0),b(e,"features")&&(o.features=Array.isArray(e.features)?e.features:[],this.core.setFeatures(o.features)),b(e,"columnStateStore")&&(o.columnStateStore=e.columnStateStore,t.needsStateLoad=!0),b(e,"columnStateKey")&&(o.columnStateKey=e.columnStateKey??null,t.needsStateLoad=!0),b(e,"stateStore")&&(o.stateStore=e.stateStore,r=!0),b(e,"stateKey")&&(o.stateKey=e.stateKey??null,r=!0);let n=G(e.stateSaveDebounceMs,0,!0);n!==void 0&&(o.stateSaveDebounceMs=n),r&&this.core.loadPersistedGridState()}updateDatasourceOptions(e,t){let o=this.core.options,r=G(e.blockSize,1,!0),n=G(e.infiniteBufferRows,0,!0),s=G(e.datasourceRetryCount,0,!0),a=G(e.datasourceRetryDelay,0,!0);r!==void 0&&(o.blockSize=r),n!==void 0&&(o.infiniteBufferRows=n),s!==void 0&&(o.datasourceRetryCount=s),a!==void 0&&(o.datasourceRetryDelay=a),this.updateDatasourceReference(e,t),this.updatePinnedRows(e)}updateDatasourceReference(e,t){let o=this.core.options;b(e,"datasource")&&e.datasource!==o.datasource&&(o.datasource=e.datasource,o.paginationEnabled=e.datasource==null&&o.paginationEnabled,t.datasourceChanged=!0,this.core.paginationBar.rebuild()),b(e,"detailRowRenderer")&&(o.detailRowRenderer=e.detailRowRenderer,t.needsCellRefresh=!0),b(e,"isRowExpandable")&&(o.isRowExpandable=e.isRowExpandable,t.needsCellRefresh=!0)}updatePinnedRows(e){let t=this.core.options;e.pinnedTopRowData!==void 0&&(t.pinnedTopRowData=e.pinnedTopRowData??[],this.core.pinnedRowsRenderer.setTopData(t.pinnedTopRowData)),e.pinnedBottomRowData!==void 0&&(t.pinnedBottomRowData=e.pinnedBottomRowData??[],this.core.pinnedRowsRenderer.setBottomData(t.pinnedBottomRowData))}applyOptionUpdateEffects(e,t,o){let r=this.core.options;t.needsColumnRebuild&&(this.core.columnModel.setColumnDefs(r.columnDefs),this.core.onColumnsStructureChanged(),t.needsHeaderRebuild=!1,t.needsPoolRebuild=!1),t.needsStateLoad&&(this.core.loadPersistedColumnState(),this.core.onColumnsStructureChanged()),this.applyRowUpdateEffect(t),t.needsRelayout&&(this.core.skeleton.updateHeights(r.rowHeight,r.headerHeight),this.core.relayout(),this.core.relayoutColumns(!1)),e.columnMenu!=null&&e.columnMenu!==o&&(t.needsHeaderRebuild=!0),t.needsHeaderRebuild&&this.core.headerRenderer.build(),t.needsPoolRebuild?this.core.bodyRenderer.rebuildPool():t.needsCellRefresh&&this.refreshCells(),t.needsSummaryRefresh&&this.core.summaryRenderer.refresh(),t.stateToApply&&this.applyState(t.stateToApply),this.core.bodyRenderer.refreshOverlays()}applyRowUpdateEffect(e){if(e.datasourceChanged){this.core.rowModel.onDatasourceChanged();return}if(e.needsRowRebuild){if(this.core.rowModel.isInfinite){this.core.rowModel.onServerParamsChanged();return}this.core.rowModel.setRowData(this.core.options.rowData),this.core.bodyRenderer.onDataChanged()}}getDataAsCsv(e={}){let t=this.core.columnModel.getOrderedVisible().filter(r=>!r.hasCheckbox&&!r.isDetailToggle);if(e.headersOnly)return xt({getHeaderLabels:()=>t.map(r=>r.colDef.headerName??r.colDef.field??r.id),getRowValues:()=>[]},e);let o=e.onlySelected?this.core.selectionService.getSelectedNodes().slice().sort((r,n)=>r.rowIndex-n.rowIndex):e.onlyAllDisplayed?this.core.rowModel.getDisplayedRows().filter(r=>!r.isDetail&&!r.isGroup):this.core.rowModel.getPipelineRows().filter(r=>!r.isDetail&&!r.isGroup);return xt({getHeaderLabels:()=>t.map(r=>r.colDef.headerName??r.colDef.field??r.id),getRowValues:()=>o.map(r=>t.map(n=>{let s=this.core.getCellValue(r,n);return typeof s=="number"?s:N(this.core,r,n)}))},e)}getState(){return{version:1,columns:this.getColumnState(),sortModel:this.getSortModel(),filterModel:this.getFilterModel(),quickFilterText:this.getQuickFilter(),pagination:{enabled:this.paginationEnabled(),page:this.getPage(),pageSize:this.getPageSize()},selectedRowIds:this.getSelectedIds(),expandedRowIds:this.core.rowModel.getExpandedRowIds(),expandedGroupIds:this.core.rowModel.getExpandedGroupIds()}}applyState(e,t={}){if(this.core.isDestroyed()||!e||e.version!==1)return;let o=["columns","sort","filter","pagination","selection","expansion"],r=new Set(t.sections??o);this.core.editingService.stop(!0),this.restoreStateSections(e,r),this.refreshAfterStateRestore(e,r),t.emitEvents!==!1&&this.emitStateEvents(r)}restoreStateSections(e,t){t.has("columns")&&this.core.columnModel.applyColumnState(e.columns??[]),t.has("sort")&&this.core.columnModel.applySortModel(e.sortModel??[]),t.has("filter")&&(this.core.rowModel.setFilterModel(e.filterModel??{}),this.core.rowModel.setQuickFilter(e.quickFilterText)),t.has("expansion")&&this.core.rowModel.restoreExpansion(e.expandedRowIds??[],e.expandedGroupIds??[]),t.has("pagination")&&e.pagination&&(this.core.options.paginationEnabled=e.pagination.enabled&&!this.core.rowModel.isInfinite,this.core.rowModel.restorePagination(e.pagination.page,e.pagination.pageSize),this.core.paginationBar.rebuild())}refreshAfterStateRestore(e,t){t.has("columns")&&this.core.onColumnsStructureChanged(),this.core.rowModel.isInfinite?this.core.rowModel.onServerParamsChanged():(this.core.rowModel.refreshPipeline(),this.core.bodyRenderer.onDataChanged()),this.core.headerRenderer.refreshSortIndicators(),this.core.headerRenderer.refreshFilterIcons(),t.has("selection")&&this.core.selectionService.restoreSelection(e.selectedRowIds??[]),this.core.persistColumnState()}emitStateEvents(e){e.has("sort")&&this.core.emit("sortChanged",{sortModel:this.getSortModel()}),e.has("filter")&&this.core.emit("filterChanged",{filterModel:this.getFilterModel()}),e.has("pagination")&&this.core.emit("paginationChanged",{page:this.getPage(),pageSize:this.getPageSize(),pageCount:this.getPageCount(),total:this.getTotalRowCount()})}getDiagnostics(){return this.core.getDiagnostics()}setOverlay(e){if(e==="loading")this.core.skeleton.showOverlay("loading",this.core.options.overlayLoadingTemplate,this.core.options.allowUnsafeOverlayHtml);else if(e==="noRows"){let t=this.core.options.overlayNoRowsTemplate||this.core.buildDefaultEmptyState();this.core.skeleton.showOverlay("noRows",t,this.core.options.allowUnsafeOverlayHtml)}else if(e==="error"){let t=this.core.options.overlayErrorTemplate||this.core.buildDefaultErrorState();this.core.skeleton.showOverlay("error",t,this.core.options.allowUnsafeOverlayHtml)}else this.core.skeleton.hideOverlay()}hideOverlays(){this.core.skeleton.hideOverlay()}addEventListener(e,t){return this.core.eventBus.on(e,t)}removeEventListener(e,t){this.core.eventBus.off(e,t)}destroy(){this.asyncTransactionTimer!=null&&clearTimeout(this.asyncTransactionTimer),this.asyncTransactionTimer=null,this.asyncTransactions=[];let e=this.asyncTransactionResolvers;this.asyncTransactionResolvers=[];for(let t of e)t();this.core.destroy()}isDestroyed(){return this.core.isDestroyed()}};var Vr=["compact","normal","large"],Qe=class{constructor(e){this.core=e;this.headerRows={left:[],center:[],right:[]};this.headerRowContainers={};this.currentOverlay=null;this.currentOverlayContent=null;this.currentOverlayAllowsHtml=!1;this.overlayCleanup=null;this.customClassTokens=[];this.resizeObserver=null;this.headerDepth=1;this.themeUnsub=null}init(e,t){let o=["mach-root",`mach-size--${t.size}`];t.stripedRows&&o.push("mach-striped"),t.showCellBorders&&o.push("mach-cell-borders"),t.domLayout==="autoHeight"&&o.push("mach-dom-layout--auto-height"),this.root=g("div",o.join(" ")),this.setCustomClass(t.className),this.root.style.setProperty("--mach-row-h",`${t.rowHeight}px`),this.root.style.setProperty("--mach-header-h",`${t.headerHeight}px`),this.root.setAttribute("role","grid"),this.root.tabIndex=0,this.applyAriaLabels(t),this.headerEl=g("div","mach-header"),this.headerEl.setAttribute("role","rowgroup"),this.headerRows={left:[],center:[],right:[]},this.headerPanes={},this.headerRowContainers={};for(let r of["left","center","right"]){let n=g("div",`mach-pane mach-pane--${r} mach-header-pane`),s=g("div","mach-header-rows");if(r==="center"){let a=g("div","mach-header-viewport");a.appendChild(s),n.appendChild(a)}else n.appendChild(s);this.headerEl.appendChild(n),this.headerPanes[r]=n,this.headerRowContainers[r]=s}this.setHeaderRowCount(1),this.bodyEl=g("div","mach-body"),this.pinnedTopEl=g("div","mach-pinned-rows mach-pinned-rows--top"),this.pinnedTopEl.style.display="none",this.pinnedBottomEl=g("div","mach-pinned-rows mach-pinned-rows--bottom"),this.pinnedBottomEl.style.display="none",this.bodyViewports={},this.rowContainers={},this.bodyPanes={};for(let r of["left","center","right"]){let n=g("div",`mach-pane mach-pane--${r} mach-body-pane`),s=g("div",`mach-body-viewport${r==="center"?" mach-body-viewport--scroll":""}`),a=g("div","mach-row-container");s.appendChild(a),n.appendChild(s),this.bodyEl.appendChild(n),this.bodyPanes[r]=n,this.bodyViewports[r]=s,this.rowContainers[r]=a}this.overlayWrapper=g("div","mach-overlay"),this.overlayWrapper.style.display="none",this.overlayWrapper.setAttribute("role","status"),this.overlayWrapper.setAttribute("aria-live","polite"),this.overlayContent=g("div","mach-overlay-content"),this.overlayWrapper.appendChild(this.overlayContent),this.infiniteLoadingEl=g("div","mach-infinite-loading"),this.infiniteLoadingEl.style.display="none",this.infiniteLoadingEl.appendChild(g("div","mach-spinner")),this.infiniteLoadingText=g("span"),this.infiniteLoadingEl.appendChild(this.infiniteLoadingText),this.root.append(this.headerEl,this.pinnedTopEl,this.bodyEl,this.pinnedBottomEl,this.overlayWrapper,this.infiniteLoadingEl),e.appendChild(this.root),typeof ResizeObserver<"u"&&(this.resizeObserver=new ResizeObserver(()=>this.core.relayout()),this.resizeObserver.observe(this.root)),this.applyTheme(t.theme)}applyAriaLabels(e){e.ariaLabelledBy?(this.root.setAttribute("aria-labelledby",e.ariaLabelledBy),this.root.removeAttribute("aria-label")):(this.root.removeAttribute("aria-labelledby"),this.root.setAttribute("aria-label",e.ariaLabel)),e.ariaDescribedBy?this.root.setAttribute("aria-describedby",e.ariaDescribedBy):this.root.removeAttribute("aria-describedby")}setHeaderRowCount(e){this.headerDepth=e;for(let t of["left","center","right"]){let o=this.headerRowContainers[t],r=this.headerRows[t];for(;r.length<e;){let n=g("div","mach-header-row");n.setAttribute("role","row"),n.setAttribute("aria-rowindex",String(r.length+1)),n.style.top=`${r.length*this.core.options.headerHeight}px`,n.style.height=`${this.core.options.headerHeight}px`,o.appendChild(n),r.push(n)}for(;r.length>e;)r.pop().remove()}this.applyHeaderHeight()}getHeaderRowCount(){return this.headerDepth}applyHeaderHeight(){this.headerEl.style.height=`${this.headerDepth*this.core.options.headerHeight}px`;for(let e of["left","center","right"])this.headerRows[e].forEach((o,r)=>{o.style.top=`${r*this.core.options.headerHeight}px`,o.style.height=`${this.core.options.headerHeight}px`})}setPaneWidths(e,t){this.applyPaneWidth("left",e),this.applyPaneWidth("right",t)}applyPaneWidth(e,t){let o=this.headerPanes[e],r=this.bodyPanes[e];o.style.width=`${t}px`,r.style.width=`${t}px`;let n=t<=0;o.classList.toggle("mach-pane--hidden",n),r.classList.toggle("mach-pane--hidden",n)}measureViewportWidth(){return this.bodyViewports.center.clientWidth}updateHeights(e,t){this.root.style.setProperty("--mach-row-h",`${e}px`),this.root.style.setProperty("--mach-header-h",`${t}px`),this.applyHeaderHeight()}applySize(e){for(let t of Vr)this.root.classList.toggle(`mach-size--${t}`,t===e)}applyTheme(e){if(!this.root)return;this.themeUnsub?.(),this.themeUnsub=null;let t=e==="dark"||e==="auto"&&this.systemPrefersDark();if(this.root.classList.toggle("mach-theme-dark",t),e==="auto"&&typeof window<"u"&&typeof window.matchMedia=="function"){let o=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>this.root.classList.toggle("mach-theme-dark",o.matches);typeof o.addEventListener=="function"?(o.addEventListener("change",r),this.themeUnsub=()=>o.removeEventListener("change",r)):typeof o.addListener=="function"&&(o.addListener(r),this.themeUnsub=()=>o.removeListener(r))}}systemPrefersDark(){return typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-color-scheme: dark)").matches}setStriped(e){this.root.classList.toggle("mach-striped",e)}setCellBorders(e){this.root.classList.toggle("mach-cell-borders",e)}applyDomLayout(e){this.root.classList.toggle("mach-dom-layout--auto-height",e==="autoHeight")}setCustomClass(e){for(let t of this.customClassTokens)this.root.classList.remove(t);this.customClassTokens=[];for(let t of String(e??"").split(/\s+/).filter(Boolean))this.root.classList.contains(t)||(this.root.classList.add(t),this.customClassTokens.push(t))}showOverlay(e,t,o=!1){if(this.currentOverlay===e&&this.currentOverlayContent===t&&this.currentOverlayAllowsHtml===o)return;this.currentOverlay=e,this.currentOverlayContent=t,this.currentOverlayAllowsHtml=o,this.cleanupOverlayContent(),this.overlayContent.replaceChildren();let r;try{r=typeof t=="function"?t():t}catch(n){this.core.reportError(n,"overlayTemplate"),r=""}if(typeof r=="object"&&r!=null&&"el"in r)this.overlayContent.appendChild(r.el),this.overlayCleanup=r.destroy??null;else if(r instanceof HTMLElement)this.overlayContent.appendChild(r);else if(r&&o)this.overlayContent.innerHTML=r;else if(r)this.overlayContent.textContent=r;else if(e==="loading"){let n=g("div","mach-spinner");n.setAttribute("aria-label","loading"),this.overlayContent.appendChild(n)}this.overlayWrapper.style.display="",this.applyOverlayRole(e),this.root.setAttribute("aria-busy",e==="loading"?"true":"false")}hideOverlay(){this.currentOverlay&&(this.currentOverlay=null,this.currentOverlayContent=null,this.currentOverlayAllowsHtml=!1,this.overlayWrapper.style.display="none",this.cleanupOverlayContent(),this.overlayContent.replaceChildren(),this.root.setAttribute("aria-busy","false"))}applyOverlayRole(e){this.overlayWrapper.setAttribute("role",e==="error"?"alert":"status")}setInfiniteLoading(e,t){this.infiniteLoadingEl&&(e?(this.infiniteLoadingText.textContent!==t&&(this.infiniteLoadingText.textContent=t),this.infiniteLoadingEl.style.display="",this.root.setAttribute("aria-busy","true")):(this.infiniteLoadingEl.style.display="none",this.currentOverlay!=="loading"&&this.root.setAttribute("aria-busy","false")))}destroy(){this.themeUnsub?.(),this.themeUnsub=null,this.resizeObserver?.disconnect(),this.resizeObserver=null,this.cleanupOverlayContent(),this.root.remove()}cleanupOverlayContent(){if(!this.overlayCleanup)return;let e=this.overlayCleanup;this.overlayCleanup=null;try{e()}catch(t){this.core.reportError(t,"overlayTemplate.destroy")}}};var zr={contains:"\u5305\u542B",notContains:"\u4E0D\u5305\u542B",equals:"=",notEquals:"\u2260",startsWith:"\u5F00\u5934",endsWith:"\u7ED3\u5C3E",blank:"\u4E3A\u7A7A",notBlank:"\u975E\u7A7A",lessThan:"<",lessThanOrEqual:"\u2264",greaterThan:">",greaterThanOrEqual:"\u2265",inRange:"\u8303\u56F4"};function Je(i){if(!i)return"";if(i.type==="set")return`\u5DF2\u9009 ${i.values.length} \u9879`;let e=[];for(let o of i.conditions){let r=zr[o.match]??o.match,n=o.value,s="value2"in o?o.value2:void 0;o.match==="blank"||o.match==="notBlank"?e.push(r):o.match==="inRange"&&n!=null?e.push(`${r} ${n}~${s??n}`):n!=null&&String(n)!==""?e.push(`${r} ${n}`):e.push(r)}let t=i.operator==="or"?" \u6216 ":" \u4E14 ";return e.join(t)}var et=class{constructor(e){this.core=e;this.leafCells=[];this.groupCells=[];this.paneTrees={left:[],center:[],right:[]}}build(){for(let s of this.leafCells){let a=Lt(s.el);if(a)try{a()}catch(l){this.core.reportError(l,"headerComponent.destroy",{colId:s.column.id})}}this.leafCells=[],this.groupCells=[];let e=this.core.columnModel.getHeaderDepth();this.core.skeleton.setHeaderRowCount(e);let t=s=>s.pinned==="left"?"left":s.pinned==="right"?"right":"center",o=(s,a,l)=>{let d=[];for(let c of s)if(c instanceof _){let u=o(c.children,a+1,l);u.length>0&&d.push({group:c,level:a,children:u})}else!c.hide&&t(c)===l&&d.push({column:c,level:a,children:[]});return d},r=this.core.columnModel.getRootChildren();for(let s of["left","center","right"])this.paneTrees[s]=o(r,0,s);let n=this.core.options.headerHeight;for(let s of["left","center","right"]){let a=this.core.skeleton.headerRows[s];for(let d of a)d.textContent="";let l=d=>{let c=a[Math.min(d.level,a.length-1)];if(d.column){let u=this.createLeafCell(d.column,e-d.level,n);c.appendChild(u.el),this.leafCells.push(u)}else if(d.group){let u=this.createGroupCell(d.group);c.appendChild(u),this.groupCells.push({group:d.group,el:u})}for(let u of d.children)l(u)};for(let d of this.paneTrees[s])l(d)}this.core.options.suppressHeaderFocus||this.leafCells.forEach((s,a)=>{s.el.tabIndex=a===0?0:-1}),this.applyLayout(),this.refreshSortIndicators(),this.refreshFilterIcons(),this.refreshSelectAllCheckbox()}createLeafCell(e,t,o){let r=e.colDef,n=g("div","mach-header-cell mach-header-cell--leaf");n.dataset.colId=e.id,n.setAttribute("role","columnheader"),n.style.height=`${t*o}px`,typeof r.headerClass=="string"?n.classList.add(r.headerClass):Array.isArray(r.headerClass)&&n.classList.add(...r.headerClass),r.headerTooltip&&n.setAttribute("title",r.headerTooltip);let s=r.headerAlign??r.align;s==="center"?n.classList.add("mach-header-cell--center"):s==="right"&&n.classList.add("mach-header-cell--right"),this.core.options.suppressHeaderFocus||(n.tabIndex=-1,n.addEventListener("mousedown",()=>this.focusHeaderCell(e)),n.addEventListener("keydown",h=>this.onHeaderKeyDown(h,e)));let a;e.hasCheckbox&&this.core.options.rowSelection==="multiple"&&(a=document.createElement("input"),a.type="checkbox",a.className="mach-select-all",a.setAttribute("aria-label","select all rows"),a.addEventListener("click",h=>h.stopPropagation()),a.addEventListener("change",()=>{a.checked?this.core.selectionService.selectAll(!0):this.core.selectionService.deselectAll()}),n.appendChild(a));let l=r.headerComponent;if(l){let h;try{h=l({colDef:r,column:e,api:this.core.getApi()})}catch(p){this.core.reportError(p,"headerComponent",{colId:e.id}),h=null}if(typeof h=="string"){let p=g("span","mach-header-label");p.textContent=h,n.appendChild(p)}else if(h instanceof HTMLElement){let p=g("span","mach-header-label mach-header-label--custom");p.appendChild(h),n.appendChild(p)}else if(h&&typeof h=="object"&&h.el instanceof HTMLElement){let p=g("span","mach-header-label mach-header-label--custom");p.appendChild(h.el),n.appendChild(p),co(n,h.destroy)}else{let p=g("span","mach-header-label");p.textContent=r.headerName??r.field??e.id,n.appendChild(p)}}else{let h=g("span","mach-header-label");h.textContent=r.headerName??r.field??e.id,n.appendChild(h)}let d=g("span","mach-sort-indicator");n.appendChild(d);let c,u;if(e.filterable&&(c=document.createElement("button"),c.type="button",c.className="mach-filter-btn",c.setAttribute("aria-label",`filter ${e.id}`),c.innerHTML=to,c.addEventListener("click",h=>{h.stopPropagation(),this.core.filterPopup.toggle(e,c)}),n.appendChild(c),u=g("span","mach-filter-tag"),n.appendChild(u)),this.core.options.columnMenu){let h=document.createElement("button");h.type="button",h.className="mach-menu-btn",h.setAttribute("aria-label","column menu"),h.textContent="\u22EF",h.addEventListener("click",p=>{p.stopPropagation(),this.core.columnMenu.toggle(e,h)}),n.appendChild(h)}if(e.resizable){let h=g("div","mach-header-resize");h.addEventListener("pointerdown",p=>{p.button===0&&(p.preventDefault(),p.stopPropagation(),this.core.resizeService.startResize(p,e))}),h.addEventListener("dblclick",p=>{p.stopPropagation(),this.core.getApi().autoSizeColumn(e.id)}),h.addEventListener("click",p=>p.stopPropagation()),n.appendChild(h)}return n.addEventListener("click",h=>{this.core.columnDragService.didDrag()||h.target.closest(".mach-header-resize, .mach-filter-btn, .mach-select-all")||e.sortable&&this.core.cycleSort(e,h.shiftKey)}),n.addEventListener("pointerdown",h=>{h.button!==0||h.target.closest(".mach-header-resize, .mach-filter-btn, .mach-select-all")||this.core.columnDragService.onPointerDown(h,e)}),{column:e,el:n,sortEl:d,filterBtn:c,filterTagEl:u,selectAllEl:a}}createGroupCell(e){let t=g("div","mach-header-cell mach-header-cell--group");e.groupId&&(t.dataset.groupId=e.groupId),t.setAttribute("role","columnheader");let o=e.def;typeof o.headerClass=="string"?t.classList.add(o.headerClass):Array.isArray(o.headerClass)&&t.classList.add(...o.headerClass);let r=g("span","mach-header-label mach-header-label--group");return r.textContent=e.headerName,t.appendChild(r),t}applyLayout(){let e=1,t={left:0,center:0,right:0};for(let o of["left","center","right"]){let r=this.core.skeleton.headerRows[o],n=0,s=new Map;for(let l of this.leafCells)this.core.columnModel.paneOf(l.column)===o&&(s.set(l.column.id,n),n+=l.column.currentWidth);let a=this.core.options.headerHeight;for(let l of this.leafCells){if(this.core.columnModel.paneOf(l.column)!==o)continue;let d=s.get(l.column.id)??0;l.el.style.width=`${l.column.currentWidth}px`,l.el.style.left=`${d}px`,l.el.setAttribute("aria-colindex",String(e++))}for(let l of this.groupCells){let d=this.visiblePaneLeaves(l.group,o);if(d.length===0)continue;let c=s.get(d[0].id)??0,u=0;for(let h of d)u+=h.currentWidth;l.el.style.left=`${c}px`,l.el.style.width=`${u}px`,l.el.style.height=`${a}px`,l.el.setAttribute("aria-colspan",String(d.length))}for(let l of r)l.style.width=`${n}px`;t[o]=n}this.core.skeleton.setPaneWidths(t.left,t.right)}visiblePaneLeaves(e,t){return e.getLeafColumns().filter(o=>!o.hide&&this.core.columnModel.paneOf(o)===t)}onHeaderKeyDown(e,t){if(this.core.isDestroyed())return;let o=r=>{let n=Math.max(t.colDef.minWidth??40,t.currentWidth+r);this.core.columnModel.setColumnWidth(t,n),this.core.relayoutColumns(),this.core.emit("columnResized",{colId:t.id,width:t.currentWidth,finished:!0}),e.preventDefault()};switch(!0){case(e.key==="Enter"||e.key===" "):if(e.target.closest(".mach-header-resize, .mach-filter-btn, .mach-select-all"))return;e.preventDefault(),t.sortable&&this.core.cycleSort(t,e.shiftKey);return;case(e.altKey&&(e.key==="ArrowRight"||e.key==="ArrowLeft")):if(!t.resizable)return;o(e.key==="ArrowRight"?24:-24);return;case(e.ctrlKey&&(e.key==="ArrowLeft"||e.key==="ArrowRight")):if(!t.movable)return;e.preventDefault();{let r=this.core.columnModel.paneOf(t),n=this.core.columnModel.getPaneColumns(r),s=n.indexOf(t),a=e.key==="ArrowRight"?Math.min(n.length-1,s+1):Math.max(0,s-1);a!==s&&this.core.moveColumn(t.id,a)}return;case(!e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.key==="ArrowLeft"||e.key==="ArrowRight")):e.preventDefault();{let r=this.leafCells.findIndex(s=>s.column.id===t.id),n=e.key==="ArrowRight"?Math.min(this.leafCells.length-1,r+1):Math.max(0,r-1);r>=0&&this.focusHeaderCell(this.leafCells[n].column)}return;case(e.key==="Home"||e.key==="End"):e.preventDefault(),this.leafCells.length>0&&this.focusHeaderCell(e.key==="Home"?this.leafCells[0].column:this.leafCells[this.leafCells.length-1].column);return}}focusHeaderCell(e){let t=this.leafCells.find(o=>o.column.id===e.id);if(t){for(let o of this.leafCells)o.el.tabIndex=o===t?0:-1;t.el.focus({preventScroll:!0})}}refreshSortIndicators(){let e=this.core.columnModel.getSortModel(),t=e.length>1;for(let o of this.leafCells){let r=e.findIndex(n=>n.colId===o.column.id);if(r>=0){let n=e[r].direction,s=t?`<span class="mach-sort-badge">${r+1}</span>`:"";o.sortEl.innerHTML=(n==="asc"?oo:ro)+s,o.el.setAttribute("aria-sort",n==="asc"?"ascending":"descending"),o.el.classList.add("mach-header-cell--sorted")}else o.sortEl.innerHTML="",o.el.removeAttribute("aria-sort"),o.el.classList.remove("mach-header-cell--sorted")}}refreshFilterIcons(){let e=this.core.rowModel.getFilterModel();for(let t of this.leafCells){if(!t.filterBtn)continue;let o=e[t.column.id],r=o!=null;if(t.filterBtn.classList.toggle("mach-filter-btn--active",r),t.filterTagEl){let n=r?Je(o):"";t.filterTagEl.style.display=n?"":"none",n&&(t.filterTagEl.textContent=n)}}}refreshSelectAllCheckbox(){for(let e of this.leafCells)e.selectAllEl&&(e.selectAllEl.checked=this.core.selectionService.isSelectAllActive(),e.selectAllEl.indeterminate=this.core.selectionService.isSelectAllIndeterminate())}destroy(){for(let e of this.leafCells){let t=Lt(e.el);if(t)try{t()}catch(o){console.error("[mach-table] headerComponent destroy error",o)}}this.leafCells=[],this.groupCells=[]}};var tt=class{constructor(){this.anchor=null;this.end=null;this.cache=!1;this.cacheRowCount=-1;this.cacheColCount=-1}getAnchor(){return this.anchor}getEnd(){return this.end}hasAnchor(){return this.anchor!=null}start(e,t){(!t||!this.anchor)&&(this.anchor={...e}),this.end={...e},this.invalidate()}ensureAnchor(e){return this.anchor?!0:e.colIdx<0?!1:(this.anchor={...e},this.invalidate(),!0)}setEnd(e){this.end={...e},this.invalidate()}clear(){this.anchor=null,this.end=null,this.invalidate()}invalidate(){this.cache=!1,this.cacheRowCount=-1,this.cacheColCount=-1}normalize(e,t){return this.cache!==!1&&this.cacheRowCount===e&&this.cacheColCount===t?this.cache:(this.cacheRowCount=e,this.cacheColCount=t,!this.anchor||!this.end||e<=0||t<=0?(this.cache=null,null):(this.cache={r1:Math.max(0,Math.min(this.anchor.row,this.end.row,e-1)),r2:Math.max(0,Math.min(Math.max(this.anchor.row,this.end.row),e-1)),c1:Math.max(0,Math.min(this.anchor.colIdx,this.end.colIdx,t-1)),c2:Math.max(0,Math.min(Math.max(this.anchor.colIdx,this.end.colIdx),t-1))},this.cache))}};var ot=class{constructor(e,t){this.core=e;this.getPositions=t;this.state=null;this.onMove=e=>{let t=this.state;if(!t)return;if(!t.active){if(Math.abs(e.clientY-t.startY)<5)return;t.active=!0,this.core.skeleton.root.classList.add("mach-root--row-dragging")}let o=this.core.skeleton.rowContainers.center,r=e.clientY-o.getBoundingClientRect().top,n=this.core.rowModel.getDisplayedRowCount(),s=this.getPositions(),a=n,l=s[n]??0;for(let d=0;d<n;d++){let c=this.core.rowModel.getDisplayedRow(d);if(!c||c.isDetail||c.isGroup)continue;let u=s[d],h=s[d+1];if(r<u+(h-u)/2){a=d,l=u;break}}t.targetIndex=a,t.indicator.style.top=`${l}px`};this.onUp=()=>{let e=this.takeState();if(!e||!e.active||e.targetIndex<0)return;let t=e.node.rowIndex,o=Math.max(0,Math.min(e.targetIndex,this.core.rowModel.getDisplayedRowCount()));t===o||t===o-1||(this.core.emit("rowDragEnd",{rowNode:e.node,fromIndex:t,toIndex:o}),this.core.options.applyRowDrag&&!this.core.rowModel.isTree&&this.core.rowModel.reorderRowsByDisplayed(t,o>t?o-1:o))}}start(e,t){this.destroy();let o=g("div","mach-row-drop-indicator");this.core.skeleton.rowContainers.center.appendChild(o),this.state={node:t,startY:e.clientY,indicator:o,targetIndex:-1,active:!1},window.addEventListener("pointermove",this.onMove),window.addEventListener("pointerup",this.onUp),window.addEventListener("pointercancel",this.onUp)}takeState(){let e=this.state;return this.state=null,this.detachListeners(),e?.indicator.remove(),e}detachListeners(){window.removeEventListener("pointermove",this.onMove),window.removeEventListener("pointerup",this.onUp),window.removeEventListener("pointercancel",this.onUp),this.core.skeleton.root.classList.remove("mach-root--row-dragging")}destroy(){this.takeState()}};var I=["left","center","right"];function Pt(i,e,t){let o=0,r=t;for(;o<r;){let n=o+r>>1;i[n+1]<=e?o=n+1:r=n}return o}var rt=class{constructor(e){this.core=e;this.pool=[];this.poolSize=0;this.first=0;this.lastExcl=-1;this.rafId=0;this.hoverIndex=-1;this.positions=new Float64Array(1);this.rangeSelection=new tt;this.rangeDragging=!1;this.colFirst=0;this.colLastExcl=Number.MAX_SAFE_INTEGER;this.focusedCell=null;this.onScroll=()=>{this.rafId||(this.rafId=requestAnimationFrame(()=>{this.rafId=0,this.syncScroll()}))};this.positionsBuf=new Float64Array(new ArrayBuffer(512));this.lastMinRowHeight=0;this.rowHeightCache=new WeakMap;this.pendingFlash=[];this.measureCanvas=null;this.fillHandleEl=null;this.fillDrag=null;this.fillFromPointer=!1;this.fillDragIndicator=null;this.onFillMove=e=>{let t=this.fillDrag;if(!t)return;let o=e;if(typeof o.clientX!="number")return;if(!t.active){let s=Math.abs(o.clientX-t.startX),a=Math.abs(o.clientY-t.startY);if(s<4&&a<4)return;t.active=!0,t.axis=s>=a?"h":"v",this.core.skeleton.root.classList.add("mach-root--filling")}if(t.axis==="v"){let s=this.fillTargetRow(o),a=this.rangeSelection.getEnd();if(a&&a.row!==s){let l=this.normalizedRange();this.rangeSelection.setEnd({row:s,colIdx:a.colIdx}),this.refreshRowRange(l,this.normalizedRange()),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()})}return}let r=Math.max(t.c2+1,this.fillTargetCol(o)),n=this.rangeSelection.getEnd();if(n&&n.colIdx!==r){let s=this.normalizedRange();this.rangeSelection.setEnd({row:n.row,colIdx:r}),this.refreshRowRange(s,this.normalizedRange()),this.updateFillHandle(),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()})}};this.onFillUp=e=>{let t=this.fillDrag;if(!t)return;let o=e,r=()=>{this.cancelFillDrag()};if(!t.active){r();return}if(t.axis==="h"){let s=typeof o.clientX=="number"?Math.max(t.c2+1,this.fillTargetCol(o)):t.c2+1;if(r(),s>t.c2)this.fillHorizontal(t.r1,t.r2,t.c1,t.c2,s),this.updateFillHandle();else{let a=this.rangeSelection.getEnd();if(!a||a.colIdx===t.c2)return;let l=this.normalizedRange();this.rangeSelection.setEnd({row:a.row,colIdx:t.c2}),this.refreshRowRange(l,this.normalizedRange())}return}let n=typeof o.clientY=="number"?this.fillTargetRow(o):t.r2;if(r(),n>t.r2)this.fillValues(t.r1,t.r2,t.c1,t.c2,n),this.updateFillHandle();else{let s=this.rangeSelection.getEnd();if(!s||s.row===t.r2)return;let a=this.normalizedRange();this.rangeSelection.setEnd({row:t.r2,colIdx:s.colIdx}),this.refreshRowRange(a,this.normalizedRange())}};this.onBodyClick=e=>{if(this.core.isDestroyed())return;let t=this.resolveEventTarget(e);if(!t)return;let{node:o,index:r,cellEl:n}=t;if(o.isGroup){if(this.focusGridRoot(),e.target.closest?.(".mach-row-checkbox")){this.core.selectionService.setGroupSelected(o,!this.core.selectionService.getGroupSelectionState(o).all);return}let p=this.core.columnModel.getGroupLabelColumn();(!p||!n||n.dataset.colId===p.id)&&this.core.rowModel.toggleGroup(o.id);return}let s=e.target;if(this.handleTreeToggleClick(s,o,n))return;let a=n?.dataset.colId??"",l=a?this.core.columnModel.getColumn(a):void 0;if(l?.isDetailToggle&&!o.isDetail){this.focusGridRoot(),this.core.toggleDetail(o.id);return}if(o.isDetail)return;if(s.closest?.(".mach-row-checkbox")){this.focusGridRoot(),this.core.options.suppressCellFocus||this.setFocusedCell(r,this.firstCheckboxColId()),this.core.selectionService.onRowClick(o,e,!0);return}if(!n||!l)return;this.focusGridRoot(),this.core.options.suppressCellFocus||this.setFocusedCell(r,a),this.core.selectionService.onRowClick(o,e,!1);let d=this.core.getCellValue(o,l),c=this.core.emit("cellClicked",{event:e,rowNode:o,rowIndex:r,column:l,colDef:l.colDef,value:d});l.colDef.onCellClick?.(c),this.core.emit("rowClicked",{event:e,rowNode:o,rowIndex:r}),(this.core.options.singleClickEdit||l.colDef.singleClickEdit===!0)&&!o.isGroup&&this.core.editingService.isEditable(o,l)&&this.core.editingService.start(r,l)};this.onBodyDblClick=e=>{if(this.core.isDestroyed())return;let t=this.resolveEventTarget(e);if(!t)return;let{node:o,index:r,cellEl:n}=t;if(o.isDetail||o.isGroup||!n)return;let s=n.dataset.colId??"",a=this.core.columnModel.getColumn(s);if(!a)return;let l=this.core.getCellValue(o,a),d=this.core.emit("cellDoubleClicked",{event:e,rowNode:o,rowIndex:r,column:a,colDef:a.colDef,value:l});a.colDef.onCellDoubleClick?.(d),this.core.emit("rowDoubleClicked",{event:e,rowNode:o,rowIndex:r}),this.core.editingService.isEditable(o,a)&&this.core.editingService.start(r,a)};this.onContextMenu=e=>{if(this.core.isDestroyed())return;let t=this.resolveEventTarget(e);if(!t||t.node.isDetail||t.node.isGroup||!t.cellEl)return;let{node:o,index:r,cellEl:n}=t,s=n.dataset.colId??"",a=this.core.columnModel.getColumn(s);if(a&&(this.core.emit("cellContextMenu",{event:e,rowNode:o,rowIndex:r,column:a,colDef:a.colDef,value:this.core.getCellValue(o,a)}),this.core.options.contextMenu)){if(e.preventDefault(),this.core.options.enableRangeSelection&&!this.normalizedRange()){let l=this.core.columnModel.getFlatIndex(s);l>=0&&this.startRange(r,l,!1)}this.core.contextMenuService.open(e.clientX,e.clientY,{rowIndex:r,colId:s})}};this.onMouseDown=e=>{if(this.core.editingService.isCellEditing()&&this.core.editingService.stop(!1),this.core.options.enableRangeSelection&&e.button===0){let t=this.resolveEventTarget(e);if(t&&!t.node.isDetail&&!t.node.isGroup&&t.cellEl&&!e.target.closest?.(".mach-row-checkbox")){let o=this.core.columnModel.getFlatIndex(t.cellEl.dataset.colId??"");o>=0&&(this.startRange(t.index,o,e.shiftKey),this.rangeDragging=!0,!e.shiftKey&&!this.core.options.suppressCellFocus&&this.setFocusedCell(t.index,t.cellEl.dataset.colId??""))}}};this.onWindowMouseUp=()=>{this.rangeDragging=!1};this.onMouseOver=e=>{if(this.core.isDestroyed())return;let t=this.resolveEventTarget(e);if(this.rangeDragging&&t&&!t.node.isDetail&&!t.node.isGroup&&t.cellEl){let o=this.core.columnModel.getFlatIndex(t.cellEl.dataset.colId??""),r=this.rangeSelection.getEnd();o>=0&&r&&(r.row!==t.index||r.colIdx!==o)&&this.startRange(t.index,o,!0)}this.core.options.suppressRowHoverHighlight||!t||t.node.isDetail||this.setHoverIndex(t.index)};this.onMouseLeave=()=>{this.setHoverIndex(-1)};this.onDragHandlePointerDown=e=>{if(this.core.isDestroyed()||e.button!==0||!e.target.closest(".mach-row-drag-handle"))return;let o=this.resolveEventTarget(e);!o||o.node.isDetail||o.node.isGroup||(this.rowDragController.start(e,o.node),e.preventDefault())};this.rowDragController=new ot(e,()=>this.positions)}init(){this.core.skeleton.bodyViewports.center.addEventListener("scroll",this.onScroll,{passive:!0});let t=this.core.skeleton.bodyEl;t.addEventListener("click",this.onBodyClick),t.addEventListener("dblclick",this.onBodyDblClick),t.addEventListener("contextmenu",this.onContextMenu),t.addEventListener("mousedown",this.onMouseDown),t.addEventListener("mouseover",this.onMouseOver),t.addEventListener("mouseleave",this.onMouseLeave),t.addEventListener("pointerdown",this.onDragHandlePointerDown),window.addEventListener("mouseup",this.onWindowMouseUp)}destroy(){cancelAnimationFrame(this.rafId),this.core.skeleton.bodyViewports.center.removeEventListener("scroll",this.onScroll);let t=this.core.skeleton.bodyEl;t.removeEventListener("click",this.onBodyClick),t.removeEventListener("dblclick",this.onBodyDblClick),t.removeEventListener("contextmenu",this.onContextMenu),t.removeEventListener("mousedown",this.onMouseDown),t.removeEventListener("mouseover",this.onMouseOver),t.removeEventListener("mouseleave",this.onMouseLeave),t.removeEventListener("pointerdown",this.onDragHandlePointerDown),window.removeEventListener("mouseup",this.onWindowMouseUp),this.cancelFillDrag(),this.rowDragController.destroy();for(let o of this.pool){o.detailRow&&this.cleanupDetail(o.detailRow);for(let r of I)for(let n of o.cells[r]??[])o.index>=0&&this.core.editingService.releaseCell(o.index,n.dataset.colId??"",n),M(this.core,n)}this.fillHandleEl?.remove(),this.fillDragIndicator?.remove()}paneForColumn(e){return e.pinned==="left"?"left":e.pinned==="right"?"right":"center"}syncScroll(){if(this.core.isDestroyed())return;let e=this.core.skeleton,t=e.bodyViewports.center;e.headerRowContainers.center.style.transform=`translateX(${-t.scrollLeft}px)`,e.rowContainers.left.style.transform=`translateY(${-t.scrollTop}px)`,e.rowContainers.right.style.transform=`translateY(${-t.scrollTop}px)`,this.core.pinnedRowsRenderer.onScrollLeft(t.scrollLeft),this.core.tooltipService.hide(),this.updateRange(),this.core.rowModel.checkInfiniteScroll(this.lastExcl-1)}paneWidths(){let e={left:0,center:0,right:0};for(let t of I)e[t]=this.core.columnModel.getPaneColumns(t).reduce((o,r)=>o+r.currentWidth,0);return e}applyContainerSizes(){let e=this.core.skeleton,t=this.paneWidths(),o=e.bodyViewports.center,r=this.core.rowModel.getDisplayedRows(),n=this.core.rowModel.getDisplayTotalCount(),s=Math.min(n,r.length),a=this.core.options.rowHeight,l=this.core.options.detailRowHeight,d=this.core.options.getRowHeight,c=this.core.getApi();if(this.positionsBuf.length<s+1){let w=this.positionsBuf.length;for(;w<s+1;)w*=2;this.positionsBuf=new Float64Array(new ArrayBuffer(w*8))}let u=this.positionsBuf,h=this.core.options.masterDetail?[]:this.collectAutoHeightColumns(),p=0,m=a;for(let w=0;w<s;w++){u[w]=p;let C=w<r.length?r[w]:void 0,T;if(C?.isDetail)T=l;else if(C&&(d||h.length>0)){let R=this.rowHeightCache.get(C);if(R!==void 0)T=R;else{if(T=a,d)try{let D=d({data:C.data,node:C,api:c});T=Number.isFinite(D)?Math.max(1,D||a):a}catch(D){this.core.reportError(D,"getRowHeight",{rowId:C.id})}if(h.length>0){let D=this.measureAutoHeight(C,h);D>T&&(T=D)}this.rowHeightCache.set(C,T)}T<m&&(m=T)}else T=a;p+=T}u[s]=p;let f=p+Math.max(0,n-s)*a;this.lastMinRowHeight=m,this.positions=u.subarray(0,s+1);let y=Math.max(0,o.clientWidth-t.left-t.right),v=Math.max(t.center,y);for(let w of I){let C=e.rowContainers[w];C.style.height=`${f}px`,w==="center"&&(C.style.width=`${v}px`)}this.applyDomLayoutHeight(f),e.root.setAttribute("aria-rowcount",String(n+e.getHeaderRowCount()))}invalidateRowHeight(e){this.rowHeightCache.delete(e)}applyDomLayoutHeight(e){this.core.skeleton.bodyEl.style.height=this.core.options.domLayout==="autoHeight"?`${e}px`:""}invalidateAllRowHeights(){this.rowHeightCache=new WeakMap}collectAutoHeightColumns(){return this.core.columnModel.getOrderedVisible().filter(e=>e.colDef.autoHeight===!0)}get hasAnyAutoHeight(){return this.core.columnModel.getOrderedVisible().some(e=>e.colDef.autoHeight===!0)}measureAutoHeight(e,t){this.measureCanvas??(this.measureCanvas=document.createElement("canvas"));let o=this.measureCanvas.getContext("2d");if(!o)return 0;let r=window.getComputedStyle(this.core.skeleton.root),n=parseFloat(r.fontSize)||13;o.font=`${r.fontStyle} ${r.fontWeight} ${n}px ${r.fontFamily}`;let s=parseFloat(r.getPropertyValue("--mach-cell-padding"))||9,a=Math.round(n*1.45),l=1;for(let d of t){let c=N(this.core,e,d);if(!c)continue;let u=Math.max(10,d.currentWidth-s*2-2),h=1,p=0;for(let m of c){let f=o.measureText(m).width;if(p>0&&p+f>u?(h++,p=f):p+=f,h>=12)break}h>l&&(l=h)}return l*a+Math.round(s*.9)}queueFlash(e,t){if(this.core.options.flashCells)for(let o of e)for(let r of t)this.pendingFlash.push([o,r])}flushFlash(){if(this.pendingFlash.length===0)return;let e=this.pendingFlash;this.pendingFlash=[];for(let[t,o]of e){let r=this.getCellElement(t,o);if(!r)continue;r.classList.remove("mach-cell--flash"),r.offsetWidth,r.classList.add("mach-cell--flash");let n=ce(r),s=n.flashTimer;s&&clearTimeout(s),n.flashTimer=setTimeout(()=>{r.classList.remove("mach-cell--flash"),n.flashTimer=void 0},800)}}relayout(){this.applyContainerSizes();let e=this.core.skeleton.bodyViewports.center,o=this.core.options.rowHeight;this.core.options.masterDetail&&(o=Math.min(o,this.core.options.detailRowHeight)),this.lastMinRowHeight>0&&(o=Math.min(o,this.lastMinRowHeight));let r=Math.ceil(e.clientHeight/Math.max(1,o)),n=this.core.options.domLayout==="autoHeight"?this.core.rowModel.getDisplayedRowCount():r+this.core.options.rowBuffer*2+1;if(this.computeColWindow())for(let a of this.pool)this.reconcilePaneCells(a,"center");n>this.poolSize&&this.growPool(n),this.applyCellLayout(),this.updateRange(!0),this.refreshOverlays()}growPool(e){for(;this.poolSize<e;){let t={index:-1,nodeId:"",kind:"master",rows:{},cells:{},cellColIds:{}},o=this.core.skeleton;for(let r of I){if(this.core.columnModel.getPaneColumns(r).length===0)continue;let s=g("div","mach-row");s.style.height=`${this.core.options.rowHeight}px`,s.setAttribute("role","row"),s.style.display="none",o.rowContainers[r].appendChild(s),t.rows[r]=s,t.cells[r]=[],t.cellColIds[r]=[],this.reconcilePaneCells(t,r)}if(this.core.options.masterDetail){let r=g("div","mach-row mach-detail-row");r.style.height=`${this.core.options.detailRowHeight}px`,r.setAttribute("role","row"),r.style.display="none",o.rowContainers.center.appendChild(r),t.detailRow=r}this.pool.push(t),this.poolSize++}}activePaneColumns(e){let t=this.core.columnModel.getPaneColumns(e);return e!=="center"||t.length<=20||this.core.columnModel.hasColSpan()?t:t.slice(this.colFirst,this.colLastExcl)}createCell(e){let t=g("div","mach-cell");if(t.dataset.colId=e.id,t.setAttribute("role","gridcell"),e.hasCheckbox){let o=document.createElement("input");o.type=this.core.options.rowSelection==="single"?"radio":"checkbox",o.className="mach-row-checkbox",o.type==="radio"&&(o.name=`mach-radio-${this.core.gridId}`),o.setAttribute("aria-label","select row"),t.appendChild(o),t.classList.add("mach-cell--selection")}return t}reconcilePaneCells(e,t){let o=e.rows[t];if(!o)return;let r=this.activePaneColumns(t),n=e.cells[t]??[],s=e.cellColIds[t]??[];if(s.length===r.length&&s.every((c,u)=>c===r[u].id))return;let a=new Map;s.forEach((c,u)=>a.set(c,n[u]));let l=[],d=[];for(let c of r){let u=a.get(c.id)??this.createCell(c);a.delete(c.id),o.appendChild(u),l.push(u),d.push(c.id)}for(let c of a.values())e.index>=0&&this.core.editingService.releaseCell(e.index,c.dataset.colId??"",c),M(this.core,c),c.remove();e.cells[t]=l,e.cellColIds[t]=d}rebuildPool(){this.treeColumnCache=void 0,this.invalidateRangeCache();for(let e of this.pool){e.detailRow&&this.cleanupDetail(e.detailRow);for(let t of I){for(let o of e.cells[t]??[])M(this.core,o);e.rows[t]?.remove()}e.detailRow?.remove()}this.pool=[],this.poolSize=0,this.first=0,this.lastExcl=-1,this.relayout()}applyCellLayout(){let e=this.core.options.masterDetail||this.core.options.getRowHeight!=null||this.hasAnyAutoHeight;for(let t of I){let o=this.core.columnModel.getPaneColumns(t),r=this.activePaneColumns(t),n=0,s=[];if(t==="center"&&r.length>0){let a=o.indexOf(r[0]);for(let l=0;l<a;l++)n+=o[l].currentWidth}for(let a of r)s.push(n),n+=a.currentWidth;for(let a of this.pool){let l=a.cells[t],d=a.rows[t];if(!(!l||!d)){e||(d.style.height=`${this.core.options.rowHeight}px`);for(let c=0;c<r.length&&c<l.length;c++)l[c].style.width=`${r[c].currentWidth}px`,l[c].style.left=`${s[c]}px`,l[c].setAttribute("aria-colindex",String(this.core.columnModel.getFlatIndex(r[c].id)+1))}}if(this.core.options.masterDetail)for(let a of this.pool)a.detailRow?.style.setProperty("--mach-detail-h",`${this.core.options.detailRowHeight}px`)}}computeColWindow(){let e=this.core.skeleton.bodyViewports.center,t=this.core.columnModel.getPaneColumns("center"),o=this.colFirst,r=this.colLastExcl,n=0,s=t.length;if(t.length>20){let a=e.clientWidth,l=0;for(let d of t)l+=d.currentWidth;if(a>0&&l>a){let d=e.scrollLeft,c=0;for(let h=0;h<t.length&&c+t[h].currentWidth<=d;h++){n=h+1;c+=t[h].currentWidth}let u=c;for(let h=n;h<t.length;h++)if(u+=t[h].currentWidth,u>=d+a){s=h+1;break}s>t.length&&(s=t.length),n=Math.max(0,n-2),s=Math.min(t.length,s+2)}}return this.colFirst=n,this.colLastExcl=s,n!==o||s!==r}updateRange(e=!1){let t=this.core.skeleton.bodyViewports.center,o=this.core.rowModel.getDisplayedRowCount(),r=this.core.options.rowBuffer,n=this.computeColWindow();if(this.reconcileColumnWindow(n),o===0){for(let h of this.pool)this.hideSlot(h);this.first=0,this.lastExcl=0;return}if(this.renderAutoHeightRange(o,e))return;let s=t.scrollTop,a=s+t.clientHeight,l=Pt(this.positions,s,o),d=Pt(this.positions,a,o)+1;d>o&&(d=o);let c=x(l-r,0,o-1),u=x(d+r,1,o);if(!(!e&&c===this.first&&u===this.lastExcl)){this.first=c,this.lastExcl=u;for(let h of this.pool)h.index!==-1&&(h.index<c||h.index>=u)&&this.hideSlot(h);for(let h=c;h<u;h++){let p=this.core.rowModel.getDisplayedRow(h),m=this.pool[h%this.poolSize];if(!(!m||!p)){if(!e&&m.index===h&&m.nodeId===p.id){n&&m.kind==="master"&&this.renderPaneCells(m,p,"center");continue}this.assignSlot(m,h)}}}}reconcileColumnWindow(e){if(e){for(let t of this.pool)this.reconcilePaneCells(t,"center");this.applyCellLayout()}}renderAutoHeightRange(e,t){if(this.core.options.domLayout!=="autoHeight")return!1;if(!t&&this.first===0&&this.lastExcl===e)return!0;this.first=0,this.lastExcl=e;for(let o=0;o<e;o++){let r=this.core.rowModel.getDisplayedRow(o),n=this.pool[o];!n||!r||(t||n.index!==o||n.nodeId!==r.id)&&this.assignSlot(n,o)}return!0}hideSlot(e){this.releaseSlotEditors(e),this.focusedCell?.rowIndex===e.index&&this.core.skeleton.root.removeAttribute("aria-activedescendant"),e.index=-1,e.nodeId="",e.kind="master";for(let t of I){let o=e.rows[t];o&&(o.style.display="none")}e.detailRow&&(this.cleanupDetail(e.detailRow),e.detailRow.style.display="none")}assignSlot(e,t){e.index>=0&&e.index!==t&&this.releaseSlotEditors(e);let o=this.core.rowModel.getDisplayedRow(t);if(!o){this.hideSlot(e);return}e.index=t,e.nodeId=o.id;let r=this.positions[t],n=this.positions[t+1]-this.positions[t];if(o.isDetail){e.kind="detail";for(let p of I){let m=e.rows[p];m&&(m.style.display="none")}let h=e.detailRow;h&&(h.style.display="",h.style.transform=`translateY(${r}px)`,h.style.height=`${n}px`,h.dataset.index=String(t),h.setAttribute("aria-rowindex",String(t+this.core.skeleton.getHeaderRowCount()+1)),this.renderDetailContent(h,o));return}e.kind="master",e.detailRow&&(e.detailRow.style.display="none");let s=this.core.rowModel.isTree,a=o.isGroup===!0,l=s&&this.core.rowModel.hasChildren(o.id),d=a||l||this.core.options.masterDetail&&this.core.rowModel.isRowExpandable(o),c=a?this.core.rowModel.isGroupExpanded(o.id):this.core.rowModel.isRowExpanded(o.id),u=a?(o.groupLevel??0)+1:s?this.core.rowModel.getTreeDepth(o)+1:null;for(let h of I){let p=e.rows[h];p&&(p.style.display="",p.style.transform=`translateY(${r}px)`,p.style.height=`${n}px`,p.dataset.index=String(t),p.dataset.id=o.id,p.setAttribute("aria-rowindex",String(t+this.core.skeleton.getHeaderRowCount()+1)),p.classList.toggle("mach-row--selected",o.selected),p.classList.toggle("mach-row--hover",this.hoverIndex===t&&!this.core.options.suppressRowHoverHighlight),p.classList.toggle("mach-row--odd",t%2===1),p.setAttribute("aria-selected",o.selected?"true":"false"),d?p.setAttribute("aria-expanded",c?"true":"false"):p.removeAttribute("aria-expanded"),u!=null?p.setAttribute("aria-level",String(u)):p.removeAttribute("aria-level"),this.renderPaneCells(e,o,h))}this.focusedCell&&this.focusedCell.rowIndex===t&&this.applyFocusClass()}renderPaneCells(e,t,o){let r=this.activePaneColumns(o),n=e.cells[o];if(!n)return;let s=e.index,a=o==="center"&&this.core.columnModel.hasColSpan(),l=0;e.rows[o]?.classList.toggle("mach-row--editing",this.core.editingService.isRowEditing(s));for(let d=0;d<r.length;d++){let c=r[d],u=n[d];if(a&&l>0){l--,M(this.core,u),u.setAttribute("aria-hidden","true"),u.style.display!=="none"&&(u.style.display="none");continue}if(u.style.display==="none"&&(u.style.display=""),u.removeAttribute("aria-hidden"),a){let h=this.resolveColSpan(t,c,s,r.length-d);h>1?(l=h-1,this.applySpanWidth(u,r,d,h)):(u.removeAttribute("aria-colspan"),u.style.width!==`${c.currentWidth}px`&&(u.style.width=`${c.currentWidth}px`))}else u.removeAttribute("aria-colspan");this.core.editingService.renderEditor(s,t,c,u)||(this.renderCell(u,t,c),this.applyRangeClass(u,s,c))}}resolveColSpan(e,t,o,r){let n=t.colDef.colSpan;if(!n)return 1;try{let s=n({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:o});return Math.max(1,Math.min(Math.round(s)||1,r))}catch(s){return this.core.reportError(s,"colSpan",{colId:t.id,rowId:e.id}),1}}applySpanWidth(e,t,o,r){let n=0;for(let s=o;s<o+r&&s<t.length;s++)n+=t[s].currentWidth;e.style.width=`${n}px`,e.setAttribute("aria-colspan",String(r))}renderDetailContent(e,t){this.cleanupDetail(e);let o=t.masterId!=null?this.core.rowModel.getNodeById(t.masterId):t,r=g("div","mach-detail");e.appendChild(r);let n=this.core.options.detailRowRenderer;if(n){let s={data:t.data,node:o??t,api:this.core.getApi()},a;try{a=n(s)}catch(l){this.core.reportError(l,"detailRowRenderer",{rowId:t.id}),a=null}typeof a=="string"?r.textContent=a:a instanceof HTMLElement?r.appendChild(a):a&&typeof a=="object"&&a.el instanceof HTMLElement&&(r.appendChild(a.el),ao(e,a.destroy))}}cleanupDetail(e){let t=lo(e);if(t)try{t()}catch(o){this.core.reportError(o,"detailRowRenderer.destroy")}e.textContent=""}renderCell(e,t,o){if(M(this.core,e),e.setAttribute("aria-readonly",this.core.editingService.isEditable(t,o)?"false":"true"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-level"),t.isGroup){this.renderGroupCell(e,t,o);return}if(o.isDetailToggle){let r=this.core.rowModel.isRowExpanded(t.id),n=g("span",`mach-detail-toggle${r?" mach-detail-toggle--open":""}`);n.textContent="\u25B6",e.replaceChildren(n),e.classList.add("mach-cell--detail-toggle"),this.resetSpanStyle(e);return}if(o.hasCheckbox){let r=e.querySelector(".mach-row-checkbox");r&&(r.checked=t.selected,r.indeterminate=this.core.selectionService.isIndeterminate(t.id),r.disabled=!this.core.selectionService.isSelectable(t)),e.className!=="mach-cell mach-cell--selection"&&(e.className="mach-cell mach-cell--selection"),this.resetSpanStyle(e);return}if(o.colDef.rowDrag){let r=g("span","mach-row-drag-handle");r.textContent="\u283F",e.replaceChildren(r),e.className!=="mach-cell mach-cell--drag"&&(e.className="mach-cell mach-cell--drag"),this.resetSpanStyle(e);return}if(Q(o.colDef,"index")&&!t.isDetail){e.textContent=String(this.core.rowModel.getRowSeq(t)+this.core.options.indexOffset),e.className!=="mach-cell mach-cell--index"&&(e.className="mach-cell mach-cell--index"),this.applyCellSpanStyle(e,t,o);return}if(this.core.rowModel.isTree&&this.getTreeColumn()?.id===o.id){this.renderTreeCell(e,t,o);return}Be(this.core,e,t,o),he(this.core,e,t,o),He(this.core,e,t,o),this.applyCellSpanStyle(e,t,o),this.appendEditableIndicator(e,t,o)}appendEditableIndicator(e,t,o){if(this.core.options.editType!=="cell"||this.core.options.editableIndicator==="none"||!this.core.editingService.isEditable(t,o))return;let r=document.createElement("button");r.type="button",r.className=`mach-cell-edit-trigger mach-cell-edit-trigger--${this.core.options.editableIndicator}`,r.tabIndex=-1,r.title="Edit cell",r.setAttribute("aria-label","Edit cell"),r.innerHTML='<svg viewBox="0 0 16 16" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="m10.8 2.7 2.5 2.5L5.5 13H3v-2.5z"/><path d="m9.5 4 2.5 2.5"/></svg>',r.addEventListener("mousedown",n=>{n.preventDefault(),n.stopPropagation()}),r.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),this.setFocusedCell(t.rowIndex,o.id),this.core.editingService.start(t.rowIndex,o)}),e.appendChild(r)}releaseSlotEditors(e){if(!(e.index<0))for(let t of I)for(let o of e.cells[t]??[])this.core.editingService.releaseCell(e.index,o.dataset.colId??"",o)}getTreeColumn(){return this.treeColumnCache!==void 0?this.treeColumnCache:(this.treeColumnCache=this.core.columnModel.getOrderedVisible().find(e=>!e.hasCheckbox&&!e.isDetailToggle&&!e.colDef.rowDrag&&!Q(e.colDef,"index"))??null,this.treeColumnCache)}renderTreeCell(e,t,o){let r=this.core.rowModel.isRowExpandable(t),n=this.getNodeDepth(t),s=g("span","mach-tree-indent");s.style.width=`${n*16}px`;let a=g("span","mach-tree-cell");if(a.appendChild(s),r){let d=this.core.rowModel.isRowExpanded(t.id);e.setAttribute("aria-expanded",d?"true":"false"),e.setAttribute("aria-level",String(n+1));let c=t.treeLoading?" mach-detail-toggle--loading":t.treeLoadError?" mach-detail-toggle--error":"",u=g("span",`mach-detail-toggle${d?" mach-detail-toggle--open":""}${c}`);t.treeLoadError&&(u.title="Retry loading children"),u.textContent="\u25B6",a.appendChild(u)}else{let d=g("span","mach-tree-toggle-spacer");a.appendChild(d)}let l=g("span","mach-tree-text");l.textContent=ue(this.core,t,o,this.core.getCellValue(t,o)),a.appendChild(l),e.replaceChildren(a),he(this.core,e,t,o)}getNodeDepth(e){return this.core.rowModel.getTreeDepth(e)}resetSpanStyle(e){e.style.height!==""&&(e.style.height=""),e.style.zIndex!==""&&(e.style.zIndex=""),e.style.display==="none"&&(e.style.display=""),e.removeAttribute("aria-rowspan")}applyCellSpanStyle(e,t,o){let r=this.core.rowModel.getSpanInfo(o.id);if(!r||t.isDetail){this.resetSpanStyle(e);return}let n=this.core.rowModel.getRowSeq(t)-1;if(n<0||n>=r.length){this.resetSpanStyle(e);return}let s=r[n];if(s===-1){e.style.display="none",e.setAttribute("aria-hidden","true");return}if(e.style.display==="none"&&(e.style.display=""),e.removeAttribute("aria-hidden"),s>1){let a=Math.min(n+s,this.positions.length-1),l=this.positions[a]-this.positions[n];e.style.height=`${l>0?l:s*this.core.options.rowHeight}px`,e.style.zIndex="1",e.setAttribute("aria-rowspan",String(s))}else this.resetSpanStyle(e)}renderGroupCell(e,t,o){let r="mach-cell";if(o.hasCheckbox){let s=e.querySelector(".mach-row-checkbox");if(s){let a=this.core.selectionService.getGroupSelectionState(t);s.checked=a.all,s.indeterminate=a.some&&!a.all}e.className!==`${r} mach-cell--selection`&&(e.className=`${r} mach-cell--selection`);return}if(o.isDetailToggle){e.textContent="",e.className!==r&&(e.className=r);return}let n=this.core.columnModel.getGroupLabelColumn();if(n&&o.id===n.id){e.setAttribute("aria-expanded",this.core.rowModel.isGroupExpanded(t.id)?"true":"false"),e.setAttribute("aria-level",String((t.groupLevel??0)+1));let s=g("span","mach-group-label");s.style.paddingLeft=`${(t.groupLevel??0)*16}px`;let a=g("span",`mach-detail-toggle${this.core.rowModel.isGroupExpanded(t.id)?" mach-detail-toggle--open":""}`);a.textContent="\u25B6";let l=g("span","mach-group-text"),d=this.core.columnModel.getRowGroupColumns()[t.groupLevel??0],c=d?.colDef.headerName?`${d.colDef.headerName}: `:"";l.textContent=`${c}${t.groupKey??""}`;let u=g("span","mach-group-count");u.textContent=`(${t.leafNodes?.length??0})`,s.append(a,l,u),e.replaceChildren(s),e.className!==`${r} mach-cell--group`&&(e.className=`${r} mach-cell--group`);return}if(o.colDef.aggFunc&&t.aggValues&&Object.prototype.hasOwnProperty.call(t.aggValues,o.id)){let s=t.aggValues[o.id],a=o.colDef.valueFormatter!=null?ue(this.core,t,o,s):Fe(s);e.textContent=a,e.className!==`${r} mach-cell--num`&&(e.className=`${r} mach-cell--num`);return}e.textContent="",e.className!==r&&(e.className=r)}refreshRows(e){if(this.core.isDestroyed())return;let t=new Set;for(let o of e){if(o<0||t.has(o))continue;t.add(o);let r=this.pool[o%this.poolSize];if(!r||r.index!==o)continue;let n=this.core.rowModel.getDisplayedRow(o);if(n){if(r.kind==="detail"){r.detailRow&&this.renderDetailContent(r.detailRow,n);continue}for(let s of I)r.cells[s]&&this.renderPaneCells(r,n,s)}}this.applyFocusClass(),this.flushFlash()}refreshAllCells(){if(!this.core.isDestroyed()){for(let e of this.pool){if(e.index<0)continue;let t=this.core.rowModel.getDisplayedRow(e.index);if(t){if(e.kind==="detail"){e.detailRow&&this.renderDetailContent(e.detailRow,t);continue}for(let o of I)e.cells[o]&&this.renderPaneCells(e,t,o)}}this.applyFocusClass(),this.flushFlash()}}onDataChanged(){this.core.isDestroyed()||(this.focusedCell&&this.focusedCell.rowIndex>=this.core.rowModel.getDisplayedRowCount()&&this.setFocusedCell(null,null),this.invalidateRangeCache(),this.applyContainerSizes(),this.updateRange(!0),this.updateFillHandle(),this.refreshOverlays(),this.core.summaryRenderer.refresh())}refreshOverlays(){let e=this.core.options;if(e.loading){this.core.skeleton.showOverlay("loading",e.overlayLoadingTemplate,e.allowUnsafeOverlayHtml);return}if(e.error!=null){let t=e.overlayErrorTemplate||this.core.buildDefaultErrorState();this.core.skeleton.showOverlay("error",t,e.allowUnsafeOverlayHtml);return}if(this.core.rowModel.getDisplayedRowCount()===0&&!e.suppressNoRowsOverlay){let t=e.overlayNoRowsTemplate||this.core.buildDefaultEmptyState();this.core.skeleton.showOverlay("noRows",t,e.allowUnsafeOverlayHtml);return}this.core.skeleton.hideOverlay()}getCellElement(e,t){let o=this.core.columnModel.getColumn(t);if(!o)return null;let r=this.paneForColumn(o),n=this.pool[e%Math.max(1,this.poolSize)]?.cellColIds[r]?.indexOf(o.id)??-1;if(n<0)return null;let s=this.pool[e%this.poolSize];return!s||s.index!==e||s.kind!=="master"?null:s.cells[r]?.[n]??null}invalidateRangeCache(){this.rangeSelection.invalidate()}normalizedRange(){let e=this.core.rowModel.getDisplayedRowCount(),t=this.core.columnModel.getOrderedVisible().length;return this.rangeSelection.normalize(e,t)}getNormalizedRangeOrFocus(){let e=this.normalizedRange();if(e)return e;let t=this.focusedCell;if(t){let o=this.core.columnModel.getFlatIndex(t.colId);if(o>=0)return{r1:t.rowIndex,c1:o,r2:t.rowIndex,c2:o}}return null}getRangeSelection(){let e=this.normalizedRange();if(!e)return null;let t=this.core.columnModel.getOrderedVisible();return{row1:e.r1,row2:e.r2,colId1:t[e.c1]?.id??"",colId2:t[e.c2]?.id??""}}getPasteStart(){let e=this.rangeSelection.getAnchor();if(e)return{row:e.row,colIdx:e.colIdx};let t=this.getNormalizedRangeOrFocus();return t?{row:t.r1,colIdx:t.c1}:null}clearRangeSelection(){let e=this.normalizedRange();this.rangeSelection.clear(),e&&(this.refreshRowRange(e,null),this.updateFillHandle(),this.core.emit("rangeSelectionChanged",{range:null}))}refreshRowRange(e,t){let o=[],r=n=>{if(n)for(let s=n.r1;s<=n.r2;s++)o.push(s)};r(e),r(t),o.length>0&&this.refreshRows(o)}startRange(e,t,o){let r=this.normalizedRange();this.rangeSelection.start({row:e,colIdx:t},o);let n=this.normalizedRange();this.refreshRowRange(r,n),this.updateFillHandle(),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()})}moveRangeEnd(e,t){if(!this.rangeSelection.hasAnchor()){let d=this.focusedCell;if(!d)return;let c=this.core.columnModel.getFlatIndex(d.colId);if(!this.rangeSelection.ensureAnchor({row:d.rowIndex,colIdx:c}))return}let o=this.core.rowModel.getDisplayedRowCount(),r=this.core.columnModel.getOrderedVisible().length,n=this.normalizedRange();this.rangeSelection.setEnd({row:Math.max(0,Math.min(e,o-1)),colIdx:Math.max(0,Math.min(t,r-1))});let s=this.normalizedRange();this.refreshRowRange(n,s),this.updateFillHandle();let a=this.core.columnModel.getOrderedVisible(),l=this.rangeSelection.getEnd();l&&l.colIdx<a.length&&this.setFocusedCell(l.row,a[l.colIdx].id),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()})}applyRangeClass(e,t,o){let r=this.normalizedRange();if(!r){e.classList.contains("mach-cell--range")&&e.classList.remove("mach-cell--range","mach-cell--range-top","mach-cell--range-bottom","mach-cell--range-left","mach-cell--range-right");return}let n=this.core.columnModel.getFlatIndex(o.id);if(n<0)return;let s=t>=r.r1&&t<=r.r2&&n>=r.c1&&n<=r.c2;e.classList.toggle("mach-cell--range",s),s?(e.classList.toggle("mach-cell--range-top",t===r.r1),e.classList.toggle("mach-cell--range-bottom",t===r.r2),e.classList.toggle("mach-cell--range-left",n===r.c1),e.classList.toggle("mach-cell--range-right",n===r.c2)):e.classList.remove("mach-cell--range-top","mach-cell--range-bottom","mach-cell--range-left","mach-cell--range-right")}ensureFillHandle(){if(this.fillHandleEl)return this.fillHandleEl;let e=g("div","mach-fill-handle");return e.style.display="none",e.addEventListener("pointerdown",t=>{this.fillFromPointer=!0,this.onFillHandleDown(t)}),e.addEventListener("mousedown",t=>{this.fillFromPointer||this.onFillHandleDown(t)}),this.core.skeleton.rowContainers.center.appendChild(e),this.fillHandleEl=e,e}updateFillHandle(){let e=this.ensureFillHandle(),t=this.normalizedRange();if(!this.core.options.enableRangeSelection||!this.core.options.fillHandle||!t){e.style.display="none";return}let o=this.core.columnModel,r=o.getPaneColumns("left").length,n=o.getPaneColumns("center");if(t.c2<r||t.c2>=r+n.length){e.style.display="none";return}let s=t.c2-r,a=0;for(let d=0;d<=s&&d<n.length;d++)a+=n[d].currentWidth;let l=this.positions[Math.min(t.r2+1,this.positions.length-1)]??(t.r2+1)*this.core.options.rowHeight;e.style.display="",e.style.left=`${a-4}px`,e.style.top=`${l-4}px`}onFillHandleDown(e){if(this.core.isDestroyed()||e.button!==0)return;let t=this.normalizedRange();t&&(e.preventDefault(),e.stopPropagation(),this.fillDrag={r1:t.r1,r2:t.r2,c1:t.c1,c2:t.c2,startX:e.clientX,startY:e.clientY,axis:null,active:!1},window.addEventListener("pointermove",this.onFillMove),window.addEventListener("mousemove",this.onFillMove),window.addEventListener("pointerup",this.onFillUp),window.addEventListener("mouseup",this.onFillUp),window.addEventListener("pointercancel",this.onFillUp))}fillTargetRow(e){let o=this.core.skeleton.rowContainers.center.getBoundingClientRect(),r=e.clientY-o.top,n=this.core.rowModel.getDisplayedRowCount(),s=Pt(this.positions,r,n);return Math.max(this.fillDrag.r2,Math.min(s,n-1))}fillTargetCol(e){let o=this.core.skeleton.rowContainers.center.getBoundingClientRect(),r=e.clientX-o.left,n=this.core.columnModel,s=n.getPaneColumns("left").length,a=n.getPaneColumns("center"),l=0;for(let d=0;d<a.length;d++){if(r<l+a[d].currentWidth/2)return s+d;l+=a[d].currentWidth}return s+a.length-1}cancelFillDrag(){this.fillDrag=null,this.fillFromPointer=!1,window.removeEventListener("pointermove",this.onFillMove),window.removeEventListener("mousemove",this.onFillMove),window.removeEventListener("pointerup",this.onFillUp),window.removeEventListener("mouseup",this.onFillUp),window.removeEventListener("pointercancel",this.onFillUp),this.core.skeleton.root.classList.remove("mach-root--filling")}fillHorizontal(e,t,o,r,n){let s=this.core.columnModel.getOrderedVisible(),a=new Set;this.core.undoService.beginBatch();try{for(let l=e;l<=t;l++){let d=this.core.rowModel.getDisplayedRow(l);if(!d||d.isDetail||d.isGroup)continue;let c=[];for(let f=o;f<=r;f++){let y=s[f];c.push(y?this.core.getCellValue(d,y):void 0)}let u=r-o+1,h=u>1&&c.every(f=>typeof f=="number"&&!isNaN(f)),p=h?(c[u-1]-c[0])/(u-1):0,m=!h||c.every(f=>Number.isInteger(f));for(let f=r+1;f<=n;f++){let y=s[f];if(!y||y.hasCheckbox||y.isDetailToggle||y.colDef.rowDrag||!this.core.editingService.isEditable(d,y))continue;let v=f-o,w;if(u===1)w=c[0];else if(h){let T=v-(u-1);w=c[u-1]+p*T,w=m?Math.round(w):Math.round(w*1e6)/1e6}else w=c[v%u];let C=this.core.getCellValue(d,y);this.core.setCellValue(d,y,w,C)&&a.add(l)}}}finally{this.core.undoService.endBatch()}a.size>0&&(this.refreshRows([...a]),this.core.summaryRenderer.refresh(),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()}))}fillValues(e,t,o,r,n){let s=this.core.columnModel.getOrderedVisible(),a=new Set;this.core.undoService.beginBatch();try{this.fillValuesInner(e,t,o,r,n,s,a)}finally{this.core.undoService.endBatch()}a.size>0&&(this.refreshRows([...a]),this.core.summaryRenderer.refresh(),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()}))}fillValuesInner(e,t,o,r,n,s,a){for(let l=o;l<=r;l++){let d=s[l];if(!d||d.hasCheckbox||d.isDetailToggle||d.colDef.rowDrag)continue;let c=[],u=e<t;for(let f=e;f<=t;f++){let y=this.core.rowModel.getDisplayedRow(f);if(!y){u=!1,c.push(void 0);continue}let v=this.core.getCellValue(y,d);c.push(v),(typeof v!="number"||isNaN(v))&&(u=!1)}if(c[0]===void 0&&c.length===1)continue;let h=t-e+1,p=0,m=!0;if(u){p=(c[h-1]-c[0])/(h-1);for(let f of c)Number.isInteger(f)||(m=!1)}for(let f=t+1;f<=n;f++){let y=this.core.rowModel.getDisplayedRow(f);if(!y||y.isDetail||y.isGroup||!this.core.editingService.isEditable(y,d))continue;let v;if(h===1)v=c[0];else if(u){let C=f-t;v=c[h-1]+p*C,v=m?Math.round(v):Math.round(v*1e6)/1e6}else v=c[(f-e)%h];let w=this.core.getCellValue(y,d);this.core.setCellValue(y,d,v,w)&&a.add(f)}}}setFocusedCell(e,t){if(this.clearFocusClass(),e==null||t==null){this.focusedCell=null;return}this.focusedCell={rowIndex:e,colId:t},this.applyFocusClass(),this.ensureFocusedCellVisible()}applyFocusClass(){if(!this.focusedCell)return;let e=this.getCellElement(this.focusedCell.rowIndex,this.focusedCell.colId);if(e){let t=Math.max(0,this.core.columnModel.getFlatIndex(this.focusedCell.colId));e.id=`mach-grid-${this.core.gridId}-r${this.focusedCell.rowIndex}-c${t}`,e.classList.add("mach-cell--focus"),this.core.skeleton.root.setAttribute("aria-activedescendant",e.id)}}clearFocusClass(){if(this.focusedCell){let e=this.getCellElement(this.focusedCell.rowIndex,this.focusedCell.colId);e&&(e.classList.remove("mach-cell--focus"),e.removeAttribute("id"))}this.core.skeleton.root.removeAttribute("aria-activedescendant")}ensureFocusedCellVisible(){if(!this.focusedCell)return;this.scrollToIndex(this.focusedCell.rowIndex,"nearest");let e=this.core.columnModel.getColumn(this.focusedCell.colId);if(!e||e.pinned)return;let t=this.core.skeleton.bodyViewports.center,o=0;for(let s of this.core.columnModel.getPaneColumns("center")){if(s.id===e.id)break;o+=s.currentWidth}let r=t.scrollLeft,n=t.clientWidth;o<r?t.scrollLeft=o:o+e.currentWidth>r+n&&(t.scrollLeft=o+e.currentWidth-n)}scrollToIndex(e,t="top"){let o=this.core.skeleton.bodyViewports.center,r=this.core.rowModel.getDisplayedRowCount();if(r===0)return;let n=x(e,0,r-1),s=o.clientHeight,a=o.scrollTop,l=this.positions[n],d=this.positions[n+1],c=a;t==="top"?c=l:t==="bottom"?c=d-s:t==="middle"?c=l-(s-(d-l))/2:l<a?c=l:d>a+s&&(c=d-s);let u=Math.max(0,this.positions[r]-s);o.scrollTop=x(c,0,u)}setHoverIndex(e){if(this.hoverIndex===e)return;let t=this.hoverIndex;this.hoverIndex=e,this.toggleHover(t,!1),this.toggleHover(e,!0)}toggleHover(e,t){if(e<0)return;let o=this.pool[e%this.poolSize];if(!(!o||o.index!==e||o.kind!=="master"))for(let r of I)o.rows[r]?.classList.toggle("mach-row--hover",t)}focusGridRoot(){this.core.skeleton.root.focus({preventScroll:!0})}resolveEventTarget(e){let t=e.target,o=t.closest(".mach-row");if(!o)return null;let r=Number(o.dataset.index);if(Number.isNaN(r))return null;let n=this.core.rowModel.getDisplayedRow(r);if(!n)return null;let s=t.closest(".mach-cell");return{node:n,index:r,cellEl:s}}handleTreeToggleClick(e,t,o){if(!this.core.rowModel.isTree||!e.closest(".mach-detail-toggle"))return!1;let r=this.getTreeColumn();return!r||o?.dataset.colId!==r.id||!this.core.rowModel.isRowExpandable(t)?!1:(this.focusGridRoot(),t.treeLoadError?this.core.rowModel.loadTreeChildren(t.id,!0).catch(()=>{}):this.core.rowModel.toggleDetail(t.id),!0)}firstCheckboxColId(){for(let e of this.core.columnModel.getOrderedVisible())if(e.hasCheckbox)return e.id;return this.core.columnModel.getOrderedVisible()[0]?.id??""}};var nt=class{constructor(e){this.core=e;this.footerEl=null;this.rows={left:void 0,center:void 0,right:void 0};this.cellsByPane={left:[],center:[],right:[]}}init(){this.footerEl=g("div","mach-footer"),this.footerEl.style.display="none",this.footerEl.setAttribute("role","row"),this.core.skeleton.root.appendChild(this.footerEl);for(let e of["left","center","right"]){let t=g("div",`mach-footer-row mach-footer-row--${e}`);t.style.height=`${this.core.options.rowHeight}px`,this.footerEl.appendChild(t),this.rows[e]=t}}setVisible(e){this.footerEl&&(this.footerEl.style.display=e?"":"none")}refresh(){if(!this.footerEl||this.core.isDestroyed())return;let e=this.core.options.showSummary;if(this.setVisible(e),!e)return;let t=this.core.options.summaryMethod,o=this.core.rowModel.getDisplayedRows().filter(n=>!n.isDetail&&!n.isGroup),r={...E,...this.core.options.locale};for(let n of["left","center","right"]){let s=this.core.columnModel.getPaneColumns(n),a=this.rows[n];this.cellsByPane[n].length!==s.length&&(a.textContent="",this.cellsByPane[n]=s.map(()=>{let d=g("div","mach-footer-cell");return d.setAttribute("role","cell"),a.appendChild(d),d}));let l=0;s.forEach((d,c)=>{let u=this.cellsByPane[n][c];if(u.style.left=`${l}px`,u.style.width=`${d.currentWidth}px`,l+=d.currentWidth,d.hasCheckbox||d.isDetailToggle||d.colDef.rowDrag){u.textContent="";return}if(t)try{u.textContent=t({colId:d.id,column:d,values:o.map(h=>this.core.getCellValue(h,d))})}catch(h){this.core.reportError(h,"summaryMethod",{colId:d.id}),u.textContent=""}else c===0&&n==="left"?u.textContent=k(r.totalRowsLabel,o.length):u.textContent=""})}}destroy(){this.footerEl?.remove(),this.footerEl=null}};var it=class{constructor(e){this.core=e;this.barEl=null;this.totalEl=null;this.pageEl=null;this.sizeSelect=null;this.firstBtn=null;this.prevBtn=null;this.nextBtn=null;this.lastBtn=null;this.offs=[]}init(){this.barEl=g("div","mach-pagination"),this.barEl.style.display="none",this.barEl.setAttribute("role","navigation");let e=(t,o,r)=>{let n=g("button",`mach-pagination-btn ${t}`);return n.type="button",n.title=o,n.setAttribute("aria-label",o),n.textContent=r,n};this.totalEl=g("span","mach-pagination-total"),this.firstBtn=e("mach-pagination-first",this.t("pageFirst"),"\xAB"),this.prevBtn=e("mach-pagination-prev",this.t("pagePrev"),"\u2039"),this.pageEl=g("span","mach-pagination-page"),this.nextBtn=e("mach-pagination-next",this.t("pageNext"),"\u203A"),this.lastBtn=e("mach-pagination-last",this.t("pageLast"),"\xBB"),this.firstBtn.addEventListener("click",()=>this.core.rowModel.setPage(1)),this.prevBtn.addEventListener("click",()=>this.core.rowModel.setPage(this.core.rowModel.getCurrentPage()-1)),this.nextBtn.addEventListener("click",()=>this.core.rowModel.setPage(this.core.rowModel.getCurrentPage()+1)),this.lastBtn.addEventListener("click",()=>this.core.rowModel.setPage(this.core.rowModel.getPageCount())),this.barEl.append(this.totalEl,this.firstBtn,this.prevBtn,this.pageEl,this.nextBtn,this.lastBtn),this.core.options.paginationShowSizeSelector&&(this.sizeSelect=document.createElement("select"),this.sizeSelect.className="mach-pagination-size",this.sizeSelect.setAttribute("aria-label","page size"),this.buildSizeOptions(),this.sizeSelect.addEventListener("change",()=>{let t=Number(this.sizeSelect.value);Number.isNaN(t)||this.core.rowModel.setPageSize(t)}),this.barEl.appendChild(this.sizeSelect)),this.core.skeleton.root.appendChild(this.barEl),this.offs.push(this.core.eventBus.on("modelUpdated",()=>this.refresh()),this.core.eventBus.on("paginationChanged",()=>this.refresh())),this.refresh()}buildSizeOptions(){if(!this.sizeSelect)return;let e=this.core.options.paginationPageSizeOptions,t=this.core.options.paginationPageSize;e.includes(t)||(e.push(t),e.sort((o,r)=>o-r)),this.sizeSelect.textContent="";for(let o of e){let r=document.createElement("option");r.value=String(o),r.textContent=k(this.t("perPage"),o),o===t&&(r.selected=!0),this.sizeSelect.appendChild(r)}}t(e){return this.core.options.locale?.[e]??E[e]}rebuild(){this.barEl&&(this.sizeSelect&&this.core.options.paginationShowSizeSelector&&this.buildSizeOptions(),this.refresh())}refresh(){if(!this.barEl||this.core.isDestroyed())return;let e=this.core.rowModel,t=e.paginationActive,o=e.getTotalRowCount(),r=t&&o>0;if(this.barEl.style.display=r?"":"none",!r)return;let n=e.getCurrentPage(),s=e.getPageCount();if(this.totalEl&&this.core.options.paginationShowTotal){let a=k(this.t("paginationTotal"),o);this.totalEl.textContent!==a&&(this.totalEl.textContent=a)}if(this.pageEl){let a=We(this.t("paginationPage"),n,s);this.pageEl.textContent!==a&&(this.pageEl.textContent=a)}this.firstBtn&&(this.firstBtn.disabled=n<=1),this.prevBtn&&(this.prevBtn.disabled=n<=1),this.nextBtn&&(this.nextBtn.disabled=n>=s),this.lastBtn&&(this.lastBtn.disabled=n>=s),this.sizeSelect&&Number(this.sizeSelect.value)!==this.core.options.paginationPageSize&&(this.sizeSelect.value=String(this.core.options.paginationPageSize))}destroy(){for(let e of this.offs)e();this.offs=[],this.barEl?.remove(),this.barEl=null}};var U=["left","center","right"],st=class{constructor(e){this.core=e;this.top=null;this.bottom=null}init(){this.top=this.createSide(this.core.skeleton.pinnedTopEl),this.bottom=this.createSide(this.core.skeleton.pinnedBottomEl)}createSide(e){let t={root:e,segments:{left:g("div"),center:g("div"),right:g("div")},centerViewport:g("div","mach-pinned-viewport"),rowWrappers:{left:[],center:[],right:[]},cells:[],data:[]};for(let o of U)t.segments[o].className=`mach-pinned-seg mach-pinned-seg--${o}`,o!=="center"&&t.segments[o].classList.add("mach-pane--hidden"),o==="center"&&t.centerViewport.appendChild(t.segments[o]);return e.append(t.segments.left,t.centerViewport,t.segments.right),t}setData(e,t){this.core.isDestroyed()||!this.top||!this.bottom||(this.top.data=e??[],this.bottom.data=t??[],this.rebuild(),this.applyLayout(),this.core.relayout())}setTopData(e){this.core.isDestroyed()||!this.top||(this.top.data=e??[],this.rebuildSide(this.top,"top"),this.applyLayout(),this.core.relayout())}setBottomData(e){this.core.isDestroyed()||!this.bottom||(this.bottom.data=e??[],this.rebuildSide(this.bottom,"bottom"),this.applyLayout(),this.core.relayout())}getTopData(){return this.top?this.top.data.slice():[]}getBottomData(){return this.bottom?this.bottom.data.slice():[]}rebuild(){!this.top||!this.bottom||(this.rebuildSide(this.top,"top"),this.rebuildSide(this.bottom,"bottom"))}rebuildSide(e,t){for(let n of e.cells)for(let s of U)for(let a of n[s])M(this.core,a);for(let n of U){for(let s of e.rowWrappers[n])s.remove();e.rowWrappers[n]=[]}if(e.cells=[],e.root.style.display=e.data.length>0?"":"none",e.data.length===0)return;let o=this.core.options.rowHeight,r=this.core.columnModel;e.data.forEach((n,s)=>{let a={id:`__pinned_${t}_${s}`,data:n,rowIndex:-1,selected:!1},l={};for(let d of U){let c=g("div","mach-pinned-row");c.style.height=`${o}px`,c.setAttribute("role","row"),l[d]=[];for(let u of r.getPaneColumns(d)){let h=g("div","mach-cell");if(h.dataset.colId=u.id,h.setAttribute("role","gridcell"),u.hasCheckbox&&h.classList.add("mach-cell--selection"),!u.hasCheckbox&&!u.isDetailToggle&&!u.colDef.rowDrag&&u.colDef.type!=="index")try{Be(this.core,h,a,u),he(this.core,h,a,u),He(this.core,h,a,u)}catch(p){this.core.reportError(p,"pinnedRow.render",{colId:u.id,side:t,rowIndex:s})}c.appendChild(h),l[d].push(h)}e.segments[d].appendChild(c),e.rowWrappers[d].push(c)}e.cells.push(l)})}applyLayout(){if(!this.top||!this.bottom)return;let e=this.core.columnModel,t={left:0,center:0,right:0},o={left:[],center:[],right:[]};for(let r of U){let n=0;for(let s of e.getPaneColumns(r))o[r].push(n),n+=s.currentWidth;t[r]=n}for(let r of[this.top,this.bottom]){let n=r.data.length===0;r.segments.left.classList.toggle("mach-pane--hidden",n||t.left<=0),r.segments.right.classList.toggle("mach-pane--hidden",n||t.right<=0),r.segments.left.style.width=`${t.left}px`,r.segments.right.style.width=`${t.right}px`,r.segments.center.style.width=`${t.center}px`,r.cells.forEach(s=>{let a=0;for(let l of U){let d=e.getPaneColumns(l);s[l].forEach((c,u)=>{c.style.width=`${d[u].currentWidth}px`,c.style.left=`${o[l][u]}px`,c.setAttribute("aria-colindex",String(a+u+1))}),a+=d.length}})}}onScrollLeft(e){this.top&&(this.top.segments.center.style.transform=`translateX(${-e}px)`),this.bottom&&(this.bottom.segments.center.style.transform=`translateX(${-e}px)`)}refresh(){this.rebuild(),this.applyLayout()}destroy(){for(let e of[this.top,this.bottom])if(e)for(let t of e.cells)for(let o of U)for(let r of t[o])M(this.core,r);this.top=null,this.bottom=null}};var at=class{constructor(e){this.core=e;this.barEl=null;this.items={};this.offs=[]}init(){this.barEl=g("div","mach-statusbar"),this.barEl.style.display="none",this.barEl.setAttribute("role","status"),this.core.skeleton.root.appendChild(this.barEl),this.rebuild(),this.offs.push(this.core.eventBus.on("modelUpdated",()=>this.refresh()),this.core.eventBus.on("selectionChanged",()=>this.refresh()),this.core.eventBus.on("rangeSelectionChanged",()=>this.refresh()),this.core.eventBus.on("cellValueChanged",()=>this.refresh()))}rebuild(){if(!this.barEl)return;this.barEl.textContent="",this.items={};let e=this.core.options;if(!e.statusBarEnabled){this.barEl.style.display="none";return}for(let t of e.statusBarPanels){let o=g("span",`mach-statusbar-item mach-statusbar-item--${t}`);this.barEl.appendChild(o),this.items[t]=o}this.refresh()}refresh(){if(!this.barEl||this.core.isDestroyed())return;let e=this.core.options;if(this.barEl.style.display=e.statusBarEnabled?"":"none",!e.statusBarEnabled)return;let t={...E,...e.locale},o=(r,n)=>{let s=t[r]??E[r];return n===void 0?s:k(s,typeof n=="number"?n:parseFloat(String(n))||0)};if(this.items.rowCount){let r=this.core.rowModel,n=r.getDisplayTotalCount(),s=r.paginationActive?r.getTotalRowCount():r.getDisplayedRowCount(),a=r.isInfinite&&n>s?`${k(o("totalRowsLabel"),s)} / ${n}`:k(o("totalRowsLabel"),s);this.items.rowCount.textContent!==a&&(this.items.rowCount.textContent=a)}if(this.items.selectedRowCount){let r=this.core.selectionService.getSelectedNodes().length,n=k(o("statusSelected"),r);this.items.selectedRowCount.textContent!==n&&(this.items.selectedRowCount.textContent=n)}if(this.items.rangeAggregate){let r=this.core.bodyRenderer.normalizedRange(),n="";if(r){let s=this.core.columnModel.getOrderedVisible(),a=0,l=0;for(let d=r.r1;d<=r.r2;d++){let c=this.core.rowModel.getDisplayedRow(d);if(!(!c||c.isDetail||c.isGroup))for(let u=r.c1;u<=r.c2;u++){let h=s[u];if(!h)continue;let p=this.core.getCellValue(c,h);typeof p=="number"&&!isNaN(p)&&(a+=p,l++)}}if(l>0){let d=Math.round(a/l*100)/100,c=Number.isInteger(a)?String(a):String(Math.round(a*100)/100);n=`${o("statusSum",c)} \xB7 ${o("statusAvg",String(d))} \xB7 ${o("statusCount",String(l))}`}}this.items.rangeAggregate.textContent!==n&&(this.items.rangeAggregate.textContent=n)}}destroy(){for(let e of this.offs)e();this.offs=[],this.barEl?.remove(),this.barEl=null}};function At(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}function Wr(i){return encodeURIComponent(String(i).trim()).replace(/%/g,"~")}function po(i){return[["app",i.app],["tenant",i.tenant],["user",i.user],["route",i.route],["table",i.table],["schema",i.schema]].filter(t=>t[1]!==void 0&&String(t[1]).trim()!=="").map(([t,o])=>`${t}=${Wr(o)}`).join(";")}function fe(i,e){if(!Array.isArray(i)||i.length>e)return null;let t=[],o=new Set;for(let r of i){if(r==null||typeof r!="object")continue;let n=r;if(typeof n.colId!="string"||n.colId.length===0||n.colId.length>256||o.has(n.colId))continue;o.add(n.colId);let s={colId:n.colId};typeof n.hide=="boolean"&&(s.hide=n.hide),typeof n.width=="number"&&Number.isFinite(n.width)&&n.width>0&&(s.width=n.width),(n.pinned==="left"||n.pinned==="right"||n.pinned===null)&&(s.pinned=n.pinned),(n.sort==="asc"||n.sort==="desc"||n.sort===null)&&(s.sort=n.sort),n.sortIndex===null?s.sortIndex=null:typeof n.sortIndex=="number"&&Number.isInteger(n.sortIndex)&&n.sortIndex>=0&&(s.sortIndex=n.sortIndex),t.push(s)}return t}function Gt(i={}){let e=(i.namespace??"mach-table:col-state").replace(/:+$/,""),t=Math.max(1,Math.floor(i.version??1)),o=Math.max(1,Math.floor(i.maxColumns??1e3)),r=s=>`${e}:${s}`,n=(s,a,l)=>{try{i.onError?.(s,a,l)}catch{}};return{storageKey:r,load(s){try{let a=(i.storage??At())?.getItem(r(s));if(!a)return null;let l=JSON.parse(a);if(Array.isArray(l)){let u=fe(l,o);return!u||!i.migrate?u:fe(i.migrate(u,0,t),o)}if(l==null||typeof l!="object")return null;let d=l;if(!Number.isInteger(d.version)||typeof d.version!="number")return null;let c=fe(d.columns,o);return c?d.version===t?c:i.migrate?fe(i.migrate(c,d.version,t),o):null:null}catch(a){return n(a,"load",s),null}},save(s,a){try{let l=fe(a,o);if(!l)throw new TypeError(`[MachTable] Invalid column state for "${s}".`);let d={version:t,savedAt:Date.now(),columns:l};(i.storage??At())?.setItem(r(s),JSON.stringify(d))}catch(l){n(l,"save",s)}},clear(s){try{(i.storage??At())?.removeItem(r(s))}catch(a){n(a,"clear",s)}}}}var Ot=Gt();function lt(i,e){Ot.save(i,e)}function dt(i){return Ot.load(i)}function fo(i){Ot.clear(i)}function Nt(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}function mo(i){if(i==null||typeof i!="object")return!1;let e=i;return e.version===1&&Array.isArray(e.columns)&&Array.isArray(e.sortModel)&&e.filterModel!=null&&typeof e.filterModel=="object"&&e.pagination!=null&&typeof e.pagination=="object"&&Array.isArray(e.selectedRowIds)&&Array.isArray(e.expandedRowIds)&&Array.isArray(e.expandedGroupIds)}function Ft(i={}){let e=(i.namespace??"mach-table:grid-state").replace(/:+$/,""),t=Math.max(1024,Math.floor(i.maxBytes??512*1024)),o=n=>`${e}:${n}`,r=(n,s,a)=>{try{i.onError?.(n,s,a)}catch{}};return{storageKey:o,load(n){try{let s=(i.storage??Nt())?.getItem(o(n));if(!s||s.length>t)return null;let a=JSON.parse(s);return a?.schemaVersion===1&&mo(a.state)?a.state:null}catch(s){return r(s,"load",n),null}},save(n,s){try{if(!mo(s))throw new TypeError(`[MachTable] Invalid grid state for "${n}".`);let a=JSON.stringify({schemaVersion:1,savedAt:Date.now(),state:s});if(a.length>t)throw new RangeError(`[MachTable] Grid state for "${n}" exceeds ${t} bytes.`);(i.storage??Nt())?.setItem(o(n),a)}catch(a){r(a,"save",n)}},clear(n){try{(i.storage??Nt())?.removeItem(o(n))}catch(s){r(s,"clear",n)}}}}var Ht=Ft();function ct(i,e){Ht.save(i,e)}function ut(i){return Ht.load(i)}function go(i){Ht.clear(i)}var Kr=[[/^(success|ok|done|complete|completed|normal|active|enabled|启用|正常|完成|已完成|运行|运行中|在线|生效)$/i,"success"],[/^(warning|warn|hold|pending|standby|待机|待审核|暂停|预警|部分完成)$/i,"warning"],[/^(error|fail|failed|danger|fault|offline|disabled|故障|失败|错误|异常|停用|离线|断开)$/i,"danger"],[/^(info|processing|new|draft|进行中|新建|草稿|审批中|同步中)$/i,"info"]];function Bt(i,e){let t=String(i??"");if(e){let o=e[t];if(o)return o;let r=e[t.toLowerCase()];if(r)return r}for(let[o,r]of Kr)if(o.test(t))return r;return"neutral"}function Vt(i={}){return e=>{if(e.value==null||e.value==="")return"";let t=Bt(e.value,i.variantMap),o=i.labelMap?.[String(e.value)]??(e.formatted||String(e.value)),r=document.createElement("span");return r.className=`mach-tag mach-tag--${t}`,r.textContent=o,r}}function zt(i={}){return e=>{let t=Number(e.value);if(isNaN(t))return e.formatted;let o=Math.max(0,Math.min(100,t)),r=document.createElement("div");r.className="mach-progress";let n=document.createElement("div");n.className="mach-progress__track";let s=document.createElement("div");if(s.className="mach-progress__bar",s.style.width=`${o}%`,i.color&&(s.style.background=i.color),n.appendChild(s),r.appendChild(n),i.showValue!==!1){let a=document.createElement("span");a.className="mach-progress__label",a.textContent=`${Math.round(o)}${i.unit??"%"}`,r.appendChild(a)}return r}}function Wt(i){if(i.value==null||i.value==="")return"";let e=document.createElement("span");return e.className="mach-link",e.textContent=i.formatted||String(i.value),e}var Kt={edit:'<path d="M11.5 2.5l2 2L5 13H3v-2l8.5-8.5z"/>',delete:'<path d="M3 5h10M6 5V3h4v2M5 5l.7 8h4.6L11 5"/>',view:'<path d="M1.5 8s2.4-4.2 6.5-4.2S14.5 8 14.5 8s-2.4 4.2-6.5 4.2S1.5 8 1.5 8z"/><circle cx="8" cy="8" r="1.8"/>',copy:'<rect x="5" y="5" width="8" height="8" rx="1"/><path d="M3 11V3h8"/>',download:'<path d="M8 2v8m0 0l-3-3m3 3l3-3M2.5 13.5h11"/>',refresh:'<path d="M13 3v4h-4M3 13V9h4"/><path d="M13 7a5.5 5.5 0 00-9.7-2.6M3 9a5.5 5.5 0 009.7 2.6"/>',close:'<path d="M3.5 3.5l9 9m0-9l-9 9"/>',check:'<path d="M2.5 8.5l3.5 3.5 7.5-8"/>',plus:'<path d="M8 2.5v11M2.5 8h11"/>',search:'<circle cx="7" cy="7" r="4.5"/><path d="M10.5 10.5L14 14"/>',more:'<circle cx="3" cy="8" r=".9" fill="currentColor" stroke="none"/><circle cx="8" cy="8" r=".9" fill="currentColor" stroke="none"/><circle cx="13" cy="8" r=".9" fill="currentColor" stroke="none"/>'};function ht(i,e=14){let t=Kt[i]??"";return`<svg viewBox="0 0 16 16" width="${e}" height="${e}" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">${t}</svg>`}var z=null,O=null;function V(i=!1){z?.remove(),z=null,O&&(O.setAttribute("aria-expanded","false"),i&&O.isConnected&&O.focus({preventScroll:!0})),O=null,document.removeEventListener("mousedown",vo,!0),document.removeEventListener("keydown",_t,!0)}function vo(i){z&&!z.contains(i.target)&&!O?.contains(i.target)&&V()}function _t(i){if(!z)return;if(i.key==="Escape"){i.preventDefault(),V(!0);return}let e=[...z.querySelectorAll("button:not(:disabled)")];if(e.length===0)return;if(i.key==="Tab"){let r=e.indexOf(document.activeElement);(!i.shiftKey&&r===e.length-1||i.shiftKey&&r<=0)&&(i.preventDefault(),e[i.shiftKey?e.length-1:0].focus());return}if(i.key!=="ArrowDown"&&i.key!=="ArrowUp")return;i.preventDefault();let t=e.indexOf(document.activeElement),o=i.key==="ArrowDown"?1:-1;e[(t+o+e.length)%e.length].focus()}function wo(i,e){let t=document.createElement("button");return t.type="button",t.className=e,i.variant&&i.variant!=="default"&&t.classList.add(`${e}--${i.variant}`),t.disabled=i.disabled===!0,i.icon&&Kt[i.icon]?t.innerHTML=`${ht(i.icon,16)}<span>${i.label}</span>`:t.textContent=i.label,t.addEventListener("click",()=>i.pick(t)),t}function _r(i,e){V();let t=document.createElement("div");t.className="mach-context-menu mach-action-menu",t.setAttribute("role","menu");for(let n of e){let s=wo(n,"mach-context-menu-item");s.setAttribute("role","menuitem"),t.appendChild(s)}document.body.appendChild(t);let o=i.getBoundingClientRect(),r=t.getBoundingClientRect();t.style.left=`${Math.min(Math.max(8,o.left),window.innerWidth-r.width-8)}px`,t.style.top=`${Math.min(o.bottom+4,window.innerHeight-r.height-8)}px`,z=t,O=i,i.setAttribute("aria-expanded","true"),document.addEventListener("mousedown",vo,!0),document.addEventListener("keydown",_t,!0),t.querySelector("button:not(:disabled)")?.focus({preventScroll:!0})}function $r(i,e,t){V();let o=document.createElement("div");o.className="mach-action-drawer-backdrop";let r=document.createElement("section");r.className="mach-action-drawer",r.setAttribute("role","dialog"),r.setAttribute("aria-modal","true"),r.setAttribute("aria-label",e);let n=document.createElement("header");n.className="mach-action-drawer__header";let s=document.createElement("strong");s.textContent=e;let a=document.createElement("button");a.type="button",a.className="mach-action-drawer__close",a.setAttribute("aria-label","Close"),a.title="Close",a.innerHTML=ht("close",16),a.addEventListener("click",()=>V(!0)),n.append(s,a);let l=document.createElement("div");l.className="mach-action-drawer__body";for(let d of t)l.appendChild(wo(d,"mach-action-drawer__item"));r.append(n,l),o.appendChild(r),o.addEventListener("mousedown",d=>{d.target===o&&V(!0)}),document.body.appendChild(o),z=o,O=i,i.setAttribute("aria-expanded","true"),document.addEventListener("keydown",_t,!0),r.querySelector("button:not(:disabled)")?.focus({preventScroll:!0})}function B(i,e){if(typeof i=="function")try{return i(e)}catch{return!1}return i===!0}function yo(i){return i.danger?"danger":i.variant??"default"}function Co(i){return i.permission?typeof i.permission=="string"?[i.permission]:i.permission:[]}function $t(i,e,t){return{...i.id?{actionId:i.id}:{},permissions:Co(i),...t?{message:t}:{},params:e}}function bo(i,e,t){let o=t.api.getGridOption("actionPolicy");try{o?.onError?o.onError(i,$t(e,t)):console.error("[mach-table] action handler failed",i)}catch(r){console.error("[mach-table] action error policy failed",r,i)}}function Ur(i,e){if(Co(i).length===0)return!0;let o=e.api.getGridOption("actionPolicy");if(!o?.canAccess)return!0;try{return o.canAccess($t(i,e))}catch(r){return bo(r,i,e),!1}}function qr(i,e){return i.filter(t=>{if(!Ur(t,e))return!1;if(!t.show)return!0;try{return t.show(e)}catch{return!1}})}function ne(i){let e=Math.max(0,i.max??3),t=i.overflow??"menu";return o=>{let r=qr(i.actions,o);if(r.length===0)return"";let n=document.createElement("div");n.className="mach-actions";let s=t==="inline"?r:r.slice(0,e),a=t==="inline"?[]:r.slice(e),l=(d,c)=>{if(B(d.disabled,o))return;c.disabled=!0,c.classList.add("mach-action-btn--loading"),(async()=>{if(d.confirm!=null&&d.confirm!==!1){let h=typeof d.confirm=="function"?await d.confirm(o):d.confirm;if(h===!1)return;let p=typeof h=="string"?h:d.label??d.title??"Confirm action",m=o.api.getGridOption("actionPolicy");if(!(m?.confirm?await m.confirm($t(d,o,p)):typeof window<"u"&&typeof window.confirm=="function"?window.confirm(p):!1))return}await d.onClick(o)})().catch(h=>bo(h,d,o)).finally(()=>{c.isConnected&&(c.disabled=B(d.disabled,o)||B(d.loading,o),c.classList.toggle("mach-action-btn--loading",B(d.loading,o)))})};for(let d of s){let c=document.createElement("button");c.type="button",c.className="mach-action-btn";let u=yo(d);u!=="default"&&c.classList.add(`mach-action-btn--${u}`);let h=d.title??d.label??"Action";c.title=h,c.setAttribute("aria-label",h),c.disabled=B(d.disabled,o),B(d.loading,o)&&(c.disabled=!0,c.classList.add("mach-action-btn--loading")),d.icon&&Kt[d.icon]?(c.innerHTML=ht(d.icon),c.classList.add("mach-action-btn--icon")):c.textContent=d.label??h,c.addEventListener("mousedown",p=>p.stopPropagation()),c.addEventListener("click",p=>{p.stopPropagation(),l(d,c)}),n.appendChild(c)}if(a.length>0){let d=document.createElement("button");d.type="button",d.className="mach-action-btn mach-action-btn--icon";let c=o.api.getGridOption("locale")??{},u=i.moreLabel??c.actionMore??E.actionMore;d.title=u,d.setAttribute("aria-label",u),d.setAttribute("aria-haspopup",t==="drawer"?"dialog":"menu"),d.setAttribute("aria-expanded","false"),d.innerHTML=`${ht("more",16)}<span class="mach-sr-only">\u22EF</span>`,d.addEventListener("mousedown",h=>h.stopPropagation()),d.addEventListener("click",h=>{h.stopPropagation();let p=a.map(m=>({label:m.label??m.title??"Action",icon:m.icon,variant:yo(m),disabled:B(m.disabled,o)||B(m.loading,o),pick:f=>{V(),l(m,f)}}));t==="drawer"?$r(d,i.drawerTitle??u,p):_r(d,p)}),n.appendChild(d)}return{el:n,destroy:()=>{O&&n.contains(O)&&V()}}}}function re(i,e,t){return i??e??t}function jr(i,e){let t=e.api.getGridOption("locale")??{};return{view:re(i.labels?.view,t.actionView,E.actionView),edit:re(i.labels?.edit,t.actionEdit,E.actionEdit),delete:re(i.labels?.delete,t.actionDelete,E.actionDelete),confirm:re(i.labels?.confirm,t.actionConfirm,E.actionConfirm),save:re(i.labels?.save,t.actionSave,E.actionSave),cancel:re(i.labels?.cancel,t.actionCancel,E.actionCancel)}}function Yr(i,e,t){let o=async()=>{if(!await e.api.stopEditingRow(!1)||!i.onSave)return;let s=e.api.getChanges().filter(a=>a.rowId===e.node.id);try{await i.onSave(e,s),e.api.markChangesSaved([e.node.id])}catch(a){throw e.api.startEditingRow(e.rowIndex),a}},r=i.onSave?t.save:i.labels?.confirm??i.labels?.save??t.confirm;return ne({actions:[{icon:"check",title:r,variant:"primary",onClick:o},{icon:"close",title:t.cancel,onClick:()=>e.api.stopEditingRow(!0).then(()=>{})}],overflow:"inline"})(e)}function Xr(i,e,t){let o=[];return i.onView&&o.push({id:"view",icon:"view",title:t.view,variant:"primary",...i.permissions?.view?{permission:i.permissions.view}:{},onClick:i.onView}),i.edit!==!1&&o.push({id:"edit",icon:"edit",title:t.edit,variant:"warning",...i.permissions?.edit?{permission:i.permissions.edit}:{},onClick:()=>{e.api.startEditingRow(e.rowIndex)}}),i.onDelete&&o.push({id:"delete",icon:"delete",title:t.delete,variant:"danger",...i.permissions?.delete?{permission:i.permissions.delete}:{},...i.confirmDelete?{confirm:i.confirmDelete===!0?t.delete:i.confirmDelete}:{},onClick:i.onDelete}),o.push(...i.extraActions??[]),o}function pt(i={}){return e=>{let t=jr(i,e);if(e.api.isRowEditing(e.rowIndex))return Yr(i,e,t);let o=Xr(i,e,t);return ne({actions:o,max:i.max,overflow:i.overflow??"drawer",moreLabel:i.moreLabel,drawerTitle:i.drawerTitle})(e)}}var Zr=Vt(),Qr=zt();function ft(i){i("statusTag",Zr),i("progressBar",Qr),i("link",Wt)}var F=new Map,q=new Map;function To(i,e){let t=F.get(i);return F.set(i,e),()=>{F.get(i)===e&&(t?F.set(i,t):F.delete(i))}}function me(i){return F.get(i)}function Ro(i,e){let t=q.get(i);return q.set(i,e),()=>{q.get(i)===e&&(t?q.set(i,t):q.delete(i))}}function mt(i){return q.get(i)}function Eo(i,e){F.has(i)||F.set(i,e)}function Do(){F.clear(),q.clear()}function So(i){if(!i||i.length===0)return[];let e=[],t=new Map,o=0,r=(n,s)=>{for(let a of n){if(J(a)){if(!Array.isArray(a.children)||a.children.length===0){e.push(`\u5217\u5206\u7EC4 "${a.headerName??a.groupId??"?"}" \u7684 children \u4E3A\u7A7A`);continue}r(a.children,s+1);continue}o++;let l=a.colId??a.field??`col_${o}`;t.set(l,(t.get(l)??0)+1),a.field&&!X(a.field)&&e.push(`\u5217 "${l}" \u7684 field \u8DEF\u5F84\u4E0D\u5B89\u5168\u6216\u65E0\u6548\uFF0C\u5DF2\u7981\u6B62\u8BFB\u53D6\u548C\u5199\u5165`),!a.field&&!a.valueGetter&&!a.checkboxSelection&&!a.autoRowSpan&&!a.rowSpan&&e.push(`\u5217 "${l}" \u65E2\u65E0 field \u4E5F\u65E0 valueGetter\uFF0C\u5C06\u59CB\u7EC8\u663E\u793A\u7A7A\u503C\uFF08\u7EAF\u5DE5\u5177\u5217\u8BF7\u5FFD\u7565\u6B64\u63D0\u793A\uFF09`),a.width!=null&&a.minWidth!=null&&a.width<a.minWidth&&e.push(`\u5217 "${l}" \u7684 width(${a.width}) \u5C0F\u4E8E minWidth(${a.minWidth})\uFF0C\u5C06\u6309 minWidth \u6E32\u67D3`),a.width!=null&&a.maxWidth!=null&&a.width>a.maxWidth&&e.push(`\u5217 "${l}" \u7684 width(${a.width}) \u5927\u4E8E maxWidth(${a.maxWidth})\uFF0C\u5C06\u6309 maxWidth \u6E32\u67D3`)}};r(i,0);for(let[n,s]of t)s>1&&e.push(`\u5B58\u5728 ${s} \u4E2A\u91CD\u590D\u7684 colId/field "${n}"\uFF0C\u5DF2\u81EA\u52A8\u52A0\u540E\u7F00\u533A\u5206\uFF0C\u5EFA\u8BAE\u663E\u5F0F\u547D\u540D colId`);return e}var gt={columnDefs:{kind:"array",update:"columnDefs"},rowData:{kind:"array",update:"rowData"},defaultColDef:{kind:"object",update:"options"},columnTypes:{kind:"object",update:"options"},getRowId:{kind:"function",update:"options"},rowKey:{kind:"unknown",update:"options"},rowHeight:{kind:"number",update:"options"},headerHeight:{kind:"number",update:"options"},rowBuffer:{kind:"number",update:"options"},columnLayout:{kind:"string",update:"options"},domLayout:{kind:"string",update:"options"},rowSelection:{kind:"string",update:"options"},multiSort:{kind:"boolean",update:"options"},size:{kind:"string",update:"options"},stripedRows:{kind:"boolean",update:"options"},showCellBorders:{kind:"boolean",update:"options"},theme:{kind:"string",update:"options"},quickFilterText:{kind:"string",update:"quickFilter"},masterDetail:{kind:"boolean",update:"options"},detailRowHeight:{kind:"number",update:"options"},detailRowRenderer:{kind:"function",update:"options"},isRowExpandable:{kind:"function",update:"options"},detailToggleColumn:{kind:"boolean",update:"options"},columnMenu:{kind:"boolean",update:"options"},columnStateKey:{kind:"string",update:"options"},columnStateStore:{kind:"object",update:"options"},aggFuncs:{kind:"object",update:"options"},components:{kind:"object",update:"options"},actionPolicy:{kind:"object",update:"options"},features:{kind:"array",update:"options"},initialState:{kind:"object",update:"options"},stateKey:{kind:"string",update:"options"},stateStore:{kind:"object",update:"options"},stateSaveDebounceMs:{kind:"number",update:"options"},locale:{kind:"object",update:"options"},editType:{kind:"string",update:"options"},editableIndicator:{kind:"string",update:"options"},rowEditValidator:{kind:"function",update:"options"},singleClickEdit:{kind:"boolean",update:"options"},manualSorting:{kind:"boolean",update:"options"},manualFiltering:{kind:"boolean",update:"options"},showSummary:{kind:"boolean",update:"options"},summaryMethod:{kind:"function",update:"options"},treeData:{kind:"boolean",update:"options"},childrenKey:{kind:"string",update:"options"},isTreeRowExpandable:{kind:"function",update:"options"},loadTreeChildren:{kind:"function",update:"options"},autoCheckedChildren:{kind:"boolean",update:"options"},defaultExpandAll:{kind:"boolean",update:"options"},indexOffset:{kind:"number",update:"options"},applyRowDrag:{kind:"boolean",update:"options"},undoStackSize:{kind:"number",update:"options"},asyncTransactionWaitMillis:{kind:"number",update:"options"},getRowHeight:{kind:"function",update:"options"},pinnedTopRowData:{kind:"array",update:"options"},pinnedBottomRowData:{kind:"array",update:"options"},pagination:{kind:"boolean-object",update:"options"},watermark:{kind:"boolean-object",update:"options"},suppressWarnings:{kind:"boolean",update:"options"},enableRangeSelection:{kind:"boolean",update:"options"},suppressClipboard:{kind:"boolean",update:"options"},contextMenu:{kind:"boolean",update:"options"},getContextMenuItems:{kind:"function",update:"options"},tooltipComponent:{kind:"function",update:"options"},tooltipShowDelay:{kind:"number",update:"options"},flashCells:{kind:"boolean",update:"options"},fillHandle:{kind:"boolean",update:"options"},statusBar:{kind:"boolean-object",update:"options"},datasource:{kind:"object",update:"options"},blockSize:{kind:"number",update:"options"},infiniteBufferRows:{kind:"number",update:"options"},datasourceRetryCount:{kind:"number",update:"options"},datasourceRetryDelay:{kind:"number",update:"options"},suppressCellFocus:{kind:"boolean",update:"options"},suppressRowHoverHighlight:{kind:"boolean",update:"options"},suppressNoRowsOverlay:{kind:"boolean",update:"options"},suppressHeaderFocus:{kind:"boolean",update:"options"},ariaLabel:{kind:"string",update:"options"},ariaLabelledBy:{kind:"string",update:"options"},ariaDescribedBy:{kind:"string",update:"options"},loading:{kind:"boolean",update:"options"},error:{kind:"unknown",update:"options"},overlayNoRowsTemplate:{kind:"unknown",update:"options"},overlayLoadingTemplate:{kind:"unknown",update:"options"},overlayErrorTemplate:{kind:"unknown",update:"options"},allowUnsafeOverlayHtml:{kind:"boolean",update:"options"},className:{kind:"string",update:"options"}},ge=Object.freeze(Object.keys(gt)),xo=Object.freeze(ge.filter(i=>gt[i].update==="options"));var Jr=oe.map(i=>`on${i.charAt(0).toUpperCase()}${i.slice(1)}`),Mo=new Set([...ge,...Jr]);function en(i,e){if(i===e)return 0;if(i.length===0)return e.length;if(e.length===0)return i.length;let t=Array.from({length:e.length+1},(o,r)=>r);for(let o=1;o<=i.length;o++){let r=[o];for(let n=1;n<=e.length;n++)r[n]=Math.min(r[n-1]+1,t[n]+1,t[n-1]+(i[o-1]===e[n-1]?0:1));t=r}return t[e.length]}function tn(i){let e,t=Number.POSITIVE_INFINITY;for(let r of Mo){let n=en(i.toLowerCase(),r.toLowerCase());n<t&&(t=n,e=r)}let o=Math.max(2,Math.floor(i.length*.3));return t<=o?e:void 0}function on(i){let e=[];return i.rowKey!=null&&typeof i.rowKey!="string"&&typeof i.rowKey!="function"&&e.push({code:"INVALID_OPTION_VALUE",option:"rowKey",message:"rowKey \u5FC5\u987B\u662F\u5B57\u6BB5\u8DEF\u5F84\u6216\u8FD4\u56DE\u7A33\u5B9A\u4E1A\u52A1\u4E3B\u952E\u7684\u51FD\u6570"}),i.domLayout==="autoHeight"&&i.datasource!=null&&e.push({code:"OPTION_CONFLICT",option:"domLayout",message:"autoHeight \u4F1A\u6E32\u67D3\u5168\u90E8\u5DF2\u52A0\u8F7D\u884C\uFF0C\u4E0D\u9002\u7528\u4E8E datasource \u65E0\u9650\u6EDA\u52A8\u6A21\u5F0F"}),e}function rn(i){return typeof i.getRowId=="function"||i.rowKey!=null}function yt(i){let e=i,t=[];for(let r of Object.keys(e)){if(Mo.has(r))continue;let n=tn(r);t.push({code:"UNKNOWN_OPTION",option:r,...n?{suggestion:n}:{},message:n?`\u672A\u77E5 GridOption "${r}"\uFF0C\u662F\u5426\u60F3\u4F7F\u7528 "${n}"\uFF1F`:`\u672A\u77E5 GridOption "${r}"\uFF0C\u8BE5\u503C\u4E0D\u4F1A\u751F\u6548`})}let o=e.pagination;if(o!=null&&typeof o!="boolean"&&typeof o!="object"&&t.push({code:"INVALID_OPTION_VALUE",option:"pagination",message:"pagination \u5FC5\u987B\u662F boolean \u6216\u914D\u7F6E\u5BF9\u8C61"}),e.datasource!=null&&o!==void 0&&o!==!1&&t.push({code:"OPTION_CONFLICT",option:"pagination",message:"datasource \u987A\u5E8F\u65E0\u9650\u6A21\u5F0F\u4E0E pagination \u4E0D\u80FD\u540C\u65F6\u542F\u7528\uFF1B\u666E\u901A\u670D\u52A1\u7AEF\u5206\u9875\u8BF7\u4F7F\u7528 pagination.mode='server'"}),o&&typeof o=="object"){let r=o;r.mode==="server"&&!rn(e)&&t.push({code:"MISSING_STABLE_ROW_ID",option:"getRowId",message:"\u670D\u52A1\u7AEF\u5206\u9875\u5EFA\u8BAE\u63D0\u4F9B\u7A33\u5B9A getRowId\uFF0C\u5426\u5219\u8DE8\u9875\u9009\u62E9\u4E0E\u589E\u91CF\u66F4\u65B0\u65E0\u6CD5\u53EF\u9760\u4FDD\u6301"}),r.mode==="server"&&r.total!==void 0&&(typeof r.total!="number"||!Number.isFinite(r.total)||r.total<0)&&t.push({code:"INVALID_OPTION_VALUE",option:"pagination.total",message:"\u670D\u52A1\u7AEF\u5206\u9875 total \u5FC5\u987B\u662F\u975E\u8D1F\u6709\u9650\u6570"})}return e.treeData===!0&&e.masterDetail===!0&&t.push({code:"OPTION_CONFLICT",option:"masterDetail",message:"treeData \u4E0E masterDetail \u4E0D\u80FD\u540C\u65F6\u542F\u7528\uFF0C\u4E3B\u4ECE\u660E\u7EC6\u5C06\u88AB\u5FFD\u7565"}),t.push(...on(e)),t}var nn=["datasource","treeData"],sn=["columnState.","gridState."],an=0;function Io(){ft(Eo)}var ie=class{constructor(e,t){this.destroyed=!1;this.autoIdCounter=0;this.readyRafId=0;this.readySettled=!1;this.lastColumnLayoutSignature="";this.activeFeatures=new Map;this.recentErrors=[];this.stateSaveTimer=null;this.gridStateLoadToken=0;this.columnStateLoadToken=0;this.lastValidatedDefs=null;this.issuedWarningSignatures=new Set;let o;this.readyPromise=new Promise(r=>{o=r}),this.resolveReady=o,this.gridId=++an,Io(),this.options=Yt(t),this.eventBus=new Y((r,n)=>{n==="gridError"?console.error("[mach-table] error in gridError listener",r):this.reportError(r,"eventBus.listener",{eventType:n})}),this.columnModel=new Re(this),this.rowModel=new xe(this),this.selectionService=new Me(this),this.skeleton=new Qe(this),this.headerRenderer=new et(this),this.bodyRenderer=new rt(this),this.resizeService=new Ie(this),this.columnDragService=new ke(this),this.keyboardService=new Ge(this),this.editingService=new Ve(this),this.undoService=new je(this),this.filterPopup=new Ke(this),this.columnMenu=new _e(this),this.contextMenuService=new $e(this),this.tooltipService=new Ue(this),this.watermarkService=new qe(this),this.paginationBar=new it(this),this.pinnedRowsRenderer=new st(this),this.summaryRenderer=new nt(this),this.statusBarService=new at(this),this.api=new Ze(this),this.changeTracker=new Ye(this);try{this.changeTracker.init(),this.skeleton.init(e,this.options),this.watermarkService.init(),this.bodyRenderer.init(),this.keyboardService.init(),this.tooltipService.init(),this.paginationBar.init(),this.summaryRenderer.init(),this.statusBarService.init(),this.pinnedRowsRenderer.init(),this.rowModel.restorePagination(this.options.paginationPage,this.options.paginationPageSize),this.columnModel.setColumnDefs(this.options.columnDefs),this.refreshAriaState(),this.validateDefs(this.options.columnDefs),this.checkWarnings(t),this.loadPersistedColumnState(),this.headerRenderer.build(),this.options.datasource?this.rowModel.startInfinite():this.rowModel.setRowData(this.options.rowData),this.options.initialState&&this.api.applyState(this.options.initialState,{emitEvents:!1}),this.loadPersistedGridState(),this.relayout(),this.pinnedRowsRenderer.setData(this.options.pinnedTopRowData,this.options.pinnedBottomRowData),this.setFeatures(this.options.features),this.readyRafId=requestAnimationFrame(()=>{this.readyRafId=0,this.destroyed||this.emit("gridReady",{}),this.settleReady()})}catch(r){throw this.reportError(r,"grid.constructor"),this.destroy(),r}}getApi(){return this.api}whenReady(){return this.readyPromise}settleReady(){this.readySettled||(this.readySettled=!0,this.resolveReady(this.api))}resolveCellRenderer(e){let t=this.options.components?.cellRenderers?.[e];if(t)return t;let o=me(e);return o||(Io(),o=me(e)),o}resolveCellEditor(e){return this.options.components?.cellEditors?.[e]??mt(e)}setFeatures(e){if(this.destroyFeatures(),!this.destroyed)for(let t of e??[]){let o=typeof t?.key=="string"?t.key.trim():"";if(!o){this.reportError(new Error("GridFeature.key must be a non-empty string"),"feature.setup");continue}if(this.activeFeatures.has(o)){this.reportError(new Error(`Duplicate GridFeature key: ${o}`),"feature.setup",{key:o});continue}let r=[],n=a=>{let l=!0,d=()=>{l&&(l=!1,a())};return r.push(d),d},s={api:this.api,root:this.skeleton.root,getOptions:()=>this.options,addEventListener:(a,l)=>n(this.eventBus.on(a,l)),onCleanup:a=>{n(a)},addManagedDomListener:(a,l,d,c)=>(a.addEventListener(l,d,c),n(()=>a.removeEventListener(l,d,c))),setManagedTimeout:(a,l)=>{let d=setTimeout(a,Math.max(0,l));return n(()=>clearTimeout(d)),d},createAbortController:()=>{let a=new AbortController;return n(()=>a.abort()),a},reportError:(a,l,d)=>this.reportError(a,`feature.${l}`,d)};try{let a=t.setup(s);typeof a=="function"&&n(a),this.activeFeatures.set(o,{feature:t,cleanups:r})}catch(a){for(let l of r.reverse())try{l()}catch(d){this.reportError(d,"feature.cleanup",{key:o})}this.reportError(a,"feature.setup",{key:o})}}}destroyFeatures(){let e=[...this.activeFeatures.entries()].reverse();this.activeFeatures.clear();for(let[t,o]of e){for(let r of o.cleanups.reverse())try{r()}catch(n){this.reportError(n,"feature.cleanup",{key:t})}try{o.feature.destroy?.()}catch(r){this.reportError(r,"feature.destroy",{key:t})}}}isDestroyed(){return this.destroyed}nextId(){return++this.autoIdCounter}getCellValue(e,t){let o=t.colDef;if(o.valueGetter)try{return o.valueGetter({api:this.api,colDef:o,column:t,node:e,data:e.data})}catch(r){this.reportError(r,"valueGetter",{colId:t.id,rowId:e.id});return}if(o.field)return Z(e.data,o.field)}getLocaleText(e){return this.options.locale[e]??E[e]}writeValue(e,t,o,r){let n=t.colDef;if(n.valueSetter)try{return n.valueSetter({oldValue:r,newValue:o,data:e.data,node:e,colDef:n,column:t,api:this.api})}catch(s){return this.reportError(s,"valueSetter",{colId:t.id,rowId:e.id}),!1}return n.field?W(e.data,n.field,o):!1}setCellValue(e,t,o,r){if(o===void 0||o===r)return!1;let n=t.colDef,s;if(n.valueSetter)try{s=n.valueSetter({oldValue:r,newValue:o,data:e.data,node:e,colDef:n,column:t,api:this.api})}catch(a){return this.reportError(a,"valueSetter",{colId:t.id,rowId:e.id}),!1}else if(n.field)s=W(e.data,n.field,o);else return!1;return s&&this.notifyCellValueChanged(e,t,r,o),s}notifyCellValueChanged(e,t,o,r){this.bodyRenderer.invalidateRowHeight(e),this.bodyRenderer.queueFlash([e.rowIndex],[t.id]),this.emit("cellValueChanged",{oldValue:o,newValue:r,rowNode:e,rowIndex:e.rowIndex,column:t,colDef:t.colDef,data:e.data}),this.undoService.record({nodeId:e.id,columnId:t.id,oldValue:o,newValue:r})}buildRangeTsv(e){let o=this.columnModel.getOrderedVisible().slice(e.c1,e.c2+1),r=[];for(let n=e.r1;n<=e.r2;n++){let s=this.rowModel.getDisplayedRow(n);r.push(o.map(a=>!s||s.isDetail||s.isGroup?"":ue(this,s,a,this.getCellValue(s,a))))}return te(r)}copyActiveRange(){let e=this.bodyRenderer.getNormalizedRangeOrFocus();return e?de(this.buildRangeTsv(e)):Promise.resolve(!1)}clearRangeValues(e){if(this.destroyed)return;let t=this.columnModel.getOrderedVisible(),o=new Set;this.undoService.beginBatch();try{for(let r=e.r1;r<=e.r2;r++){let n=this.rowModel.getDisplayedRow(r);if(!(!n||n.isDetail||n.isGroup))for(let s=e.c1;s<=e.c2;s++){let a=t[s];if(!a||a.hasCheckbox||a.isDetailToggle||a.colDef.rowDrag||!this.editingService.isEditable(n,a))continue;let l=this.getCellValue(n,a);this.setCellValue(n,a,null,l)&&o.add(r)}}}finally{this.undoService.endBatch()}o.size>0&&(this.bodyRenderer.refreshRows([...o]),this.summaryRenderer.refresh())}pasteText(e,t,o){if(this.destroyed)return;let r=Le(e);if(r.length===0)return;let n=this.columnModel.getOrderedVisible(),s=this.rowModel.getDisplayedRowCount(),a=new Set,l=t;this.undoService.beginBatch();try{for(let d of r){for(;l<s;){let h=this.rowModel.getDisplayedRow(l);if(h&&!h.isDetail&&!h.isGroup)break;l++}if(l>=s)break;let c=this.rowModel.getDisplayedRow(l),u=o;for(let h of d){for(;u<n.length&&(n[u]&&(n[u].hasCheckbox||n[u].isDetailToggle||n[u].colDef.rowDrag));)u++;if(u>=n.length)break;let p=n[u];if(this.editingService.isEditable(c,p)){let m=this.getCellValue(c,p),f=h;h===""?f=null:typeof m=="number"&&!isNaN(Number(h))&&(f=Number(h)),this.setCellValue(c,p,f,m)&&a.add(l)}u++}l++}}finally{this.undoService.endBatch()}a.size>0&&(this.bodyRenderer.refreshRows([...a]),this.summaryRenderer.refresh())}pasteFromSystemClipboard(){let e=this.bodyRenderer.getPasteStart();if(!e)return Promise.resolve();try{if(typeof navigator<"u"&&navigator.clipboard?.readText)return navigator.clipboard.readText().then(t=>{t&&this.pasteText(t,e.row,e.colIdx)}).catch(()=>{})}catch{}return Promise.resolve()}refreshSummary(){this.summaryRenderer.refresh()}emit(e,t){let o={type:e,api:this.api,...t};this.eventBus.emit(e,o);let r="on"+e.charAt(0).toUpperCase()+e.slice(1),n=this.options[r];if(typeof n=="function")try{n(o)}catch(s){e==="gridError"?console.error("[mach-table] error in onGridError",s):this.reportError(s,`eventHandler.${String(r)}`,{eventType:e})}return(e==="selectionChanged"||e==="sortChanged"||e==="filterChanged"||e==="columnResized"||e==="columnMoved"||e==="columnVisibilityChanged"||e==="displayedColumnsChanged"||e==="paginationChanged"||e==="detailToggled")&&this.scheduleGridStateSave(),o}reportError(e,t,o){let r=this.errorCodeFor(t,e),n=e instanceof Error?e.message:String(e);this.recentErrors.push({code:r,source:t,message:n,timestamp:Date.now(),...o?{context:o}:{}}),this.recentErrors.length>50&&this.recentErrors.splice(0,this.recentErrors.length-50),console.error(`[mach-table] ${r} (${t})`,e),!this.destroyed&&this.emit("gridError",{code:r,error:e,source:t,context:o})}errorCodeFor(e,t){if(nn.some(r=>e.startsWith(r)))return"DATA_SOURCE_ERROR";let o=t instanceof Error?t.message:String(t);return e==="getRowId"||o.includes("Duplicate row id")?"DATA_INTEGRITY_ERROR":e==="validate"?"VALIDATION_ERROR":e.toLowerCase().includes("renderer")||e==="valueFormatter"||e==="cellStyle"||e==="cellClass"?"RENDERER_ERROR":e.toLowerCase().includes("editor")||e==="editable"?"EDITOR_ERROR":e.startsWith("feature.")?"FEATURE_ERROR":sn.some(r=>e.startsWith(r))?"STATE_ERROR":e.startsWith("eventBus.")||e.startsWith("eventHandler.")?"EVENT_HANDLER_ERROR":"GRID_ERROR"}getDiagnostics(){return{gridId:this.gridId,version:Ce.version,destroyed:this.destroyed,infinite:this.rowModel.isInfinite,loading:this.rowModel.isLoadingInfinite()||this.options.loading,rowCount:this.rowModel.getDisplayTotalCount(),renderedRowCount:this.skeleton.bodyEl.querySelectorAll(".mach-row[data-index]").length,columnCount:this.columnModel.getColumns().length,selectedRowCount:this.selectionService.getSelectedNodes().length,dirtyRowCount:this.changeTracker.getDirtyRowIds().length,recentErrors:this.recentErrors.map(e=>({...e,...e.context?{context:{...e.context}}:{}}))}}cycleSort(e,t){this.columnModel.cycleSort(e,t),this.applySortModel()}applySortModel(){if(this.headerRenderer.refreshSortIndicators(),this.emit("sortChanged",{sortModel:this.columnModel.getSortModel()}),this.persistColumnState(),this.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.bodyRenderer.onDataChanged()}applyColumnFilter(e,t){let o=this.rowModel.getFilterModel();if(t?o[e.id]=t:delete o[e.id],this.rowModel.setFilterModel(o),this.headerRenderer.refreshFilterIcons(),this.emit("filterChanged",{filterModel:this.rowModel.getFilterModel()}),this.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.bodyRenderer.onDataChanged()}applyQuickFilter(){if(this.emit("filterChanged",{filterModel:this.rowModel.getFilterModel()}),this.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.bodyRenderer.onDataChanged()}moveColumn(e,t){this.columnModel.moveColumn(e,t)&&(this.onColumnsStructureChanged(),this.emit("columnMoved",{colId:e,toIndex:t}),this.persistColumnState())}toggleDetail(e){return this.rowModel.toggleDetail(e)}loadPersistedColumnState(){let e=++this.columnStateLoadToken;if(!this.options.columnStateKey)return;let t;try{t=this.options.columnStateStore?this.options.columnStateStore.load(this.options.columnStateKey):dt(this.options.columnStateKey)}catch(o){this.reportError(o,"columnState.load");return}if(t!=null){if(!Array.isArray(t)){Promise.resolve(t).then(o=>{this.destroyed||e!==this.columnStateLoadToken||!o||o.length===0||(this.columnModel.applyColumnState(o),this.rowModel.isInfinite?this.rowModel.onServerParamsChanged():this.rowModel.refreshPipeline(),this.onColumnsStructureChanged())}).catch(o=>this.reportError(o,"columnState.load"));return}t.length>0&&this.columnModel.applyColumnState(t)}}persistColumnState(){if(!this.options.columnStateKey||this.destroyed)return;let e=this.columnModel.getColumnState();try{let t=this.options.columnStateStore?this.options.columnStateStore.save(this.options.columnStateKey,e):lt(this.options.columnStateKey,e);t&&typeof t.catch=="function"&&t.catch(o=>this.reportError(o,"columnState.save"))}catch(t){this.reportError(t,"columnState.save")}}loadPersistedGridState(){let e=++this.gridStateLoadToken,t=this.options.stateKey;if(!t)return;let o;try{o=this.options.stateStore?this.options.stateStore.load(t):ut(t)}catch(n){this.reportError(n,"gridState.load");return}let r=n=>{this.destroyed||e!==this.gridStateLoadToken||!n||this.api.applyState(n,{emitEvents:!1})};o&&typeof o.then=="function"?Promise.resolve(o).then(r).catch(n=>this.reportError(n,"gridState.load")):r(o)}scheduleGridStateSave(){!this.options.stateKey||this.destroyed||(this.stateSaveTimer&&clearTimeout(this.stateSaveTimer),this.stateSaveTimer=setTimeout(()=>{this.stateSaveTimer=null,this.persistGridState()},this.options.stateSaveDebounceMs))}persistGridState(){let e=this.options.stateKey;if(!(!e||this.destroyed))try{let t=this.options.stateStore?this.options.stateStore.save(e,this.api.getState()):ct(e,this.api.getState());t&&typeof t.catch=="function"&&t.catch(o=>this.reportError(o,"gridState.save"))}catch(t){this.reportError(t,"gridState.save")}}buildDefaultErrorState(){let e=document.createElement("div");e.className="mach-empty mach-empty--error";let t=document.createElement("div");t.className="mach-empty__title",t.textContent=this.getLocaleText("requestFailed");let o=document.createElement("div");return o.className="mach-empty__hint",o.textContent=this.getLocaleText("requestFailedHint"),e.append(t,o),e}buildDefaultEmptyState(){let e=this.options.locale??{},t=e.emptyRows??E.emptyRows,o=e.emptyRowsHint??E.emptyRowsHint,r=document.createElement("div");r.className="mach-empty";let n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("class","mach-empty__icon"),n.setAttribute("viewBox","0 0 96 84"),n.setAttribute("width","96"),n.setAttribute("height","84"),n.setAttribute("fill","none"),n.setAttribute("aria-hidden","true"),n.innerHTML='<rect x="8" y="10" width="68" height="56" rx="6" fill="#eaf3fe"/><rect x="8" y="10" width="68" height="12" rx="6" fill="#d5e8fd"/><rect x="8" y="19" width="68" height="3" fill="#d5e8fd"/><g stroke="#bcd7f8" stroke-width="2.4" stroke-linecap="round"><line x1="16" y1="32" x2="68" y2="32"/><line x1="16" y1="42" x2="60" y2="42"/><line x1="16" y1="52" x2="64" y2="52"/></g><circle cx="66" cy="52" r="15" fill="#ffffff" stroke="#8fbdf5" stroke-width="3"/><line x1="77" y1="63" x2="86" y2="72" stroke="#8fbdf5" stroke-width="4" stroke-linecap="round"/><line x1="60" y1="52" x2="72" y2="52" stroke="#bcd7f8" stroke-width="2.6" stroke-linecap="round"/>';let s=document.createElement("div");s.className="mach-empty__title",s.textContent=t;let a=document.createElement("div");return a.className="mach-empty__hint",a.textContent=o,r.append(n,s,a),r}checkWarnings(e){if(!(this.options.suppressWarnings||this.destroyed)){if(e)for(let t of yt(e)){let o=`${t.code}:${t.option??""}:${t.message}`;this.issuedWarningSignatures.has(o)||(this.issuedWarningSignatures.add(o),console.warn(`[mach-table:${t.code}] ${t.message}`))}this.options.treeData&&this.columnModel.getRowGroupColumns().length>0&&console.warn("[mach-table] treeData \u4E0E rowGroup \u4E0D\u652F\u6301\u540C\u65F6\u542F\u7528\uFF0C\u884C\u5206\u7EC4\u5DF2\u88AB\u5FFD\u7565")}}validateDefs(e){if(!(this.options.suppressWarnings||this.destroyed)&&this.lastValidatedDefs!==e){this.lastValidatedDefs=e;for(let t of So(e))this.issuedWarningSignatures.has(t)||(this.issuedWarningSignatures.add(t),console.warn(`[mach-table] ${t}`))}}onColumnsStructureChanged(){this.checkWarnings(),this.validateDefs(this.columnModel.getColumnDefs()),this.bodyRenderer.invalidateAllRowHeights(),this.headerRenderer.build(),this.bodyRenderer.rebuildPool(),this.relayout(),this.pinnedRowsRenderer.rebuild(),this.summaryRenderer.refresh(),this.emit("displayedColumnsChanged",{})}relayout(){if(this.destroyed)return;this.refreshAriaState(),this.columnModel.computeLayout(this.skeleton.measureViewportWidth());let e=this.columnModel.getOrderedVisible().map(t=>`${t.id}:${t.currentWidth}`).join("|");this.lastColumnLayoutSignature&&e!==this.lastColumnLayoutSignature&&this.bodyRenderer.invalidateAllRowHeights(),this.lastColumnLayoutSignature=e,this.skeleton.root.setAttribute("aria-colcount",String(this.columnModel.getOrderedVisible().length)),this.headerRenderer.applyLayout(),this.bodyRenderer.relayout(),this.pinnedRowsRenderer.applyLayout(),this.summaryRenderer.refresh()}refreshAriaState(){if(!this.skeleton.root)return;let e=this.options.treeData||this.columnModel.getRowGroupColumns().length>0;this.skeleton.root.setAttribute("role",e?"treegrid":"grid"),this.options.rowSelection==="multiple"?this.skeleton.root.setAttribute("aria-multiselectable","true"):this.skeleton.root.removeAttribute("aria-multiselectable"),this.columnModel.getOrderedVisible().some(o=>!!o.colDef.editable)?this.skeleton.root.removeAttribute("aria-readonly"):this.skeleton.root.setAttribute("aria-readonly","true")}relayoutColumns(e=!0){this.destroyed||(this.columnModel.computeLayout(this.skeleton.measureViewportWidth()),e&&this.bodyRenderer.invalidateAllRowHeights(),this.headerRenderer.applyLayout(),this.bodyRenderer.applyContainerSizes(),this.bodyRenderer.applyCellLayout(),this.bodyRenderer.updateRange(!0),this.pinnedRowsRenderer.applyLayout(),this.summaryRenderer.refresh())}destroy(){if(this.destroyed)return;this.stateSaveTimer&&(clearTimeout(this.stateSaveTimer),this.stateSaveTimer=null,this.persistGridState()),this.destroyed=!0,this.readyRafId&&cancelAnimationFrame(this.readyRafId),this.readyRafId=0,this.settleReady();let e=(t,o)=>{try{o()}catch(r){console.error(`[mach-table] ${t} destroy error`,r)}};e("grid event",()=>this.emit("gridDestroyed",{})),e("features",()=>this.destroyFeatures()),e("changeTracker",()=>this.changeTracker.destroy()),e("rowModel",()=>this.rowModel.destroy()),e("editingService",()=>this.editingService.destroy()),e("keyboardService",()=>this.keyboardService.destroy()),e("filterPopup",()=>this.filterPopup.destroy()),e("columnMenu",()=>this.columnMenu.destroy()),e("contextMenu",()=>this.contextMenuService.destroy()),e("tooltip",()=>this.tooltipService.destroy()),e("watermark",()=>this.watermarkService.destroy()),e("pagination",()=>this.paginationBar.destroy()),e("columnDrag",()=>this.columnDragService.destroy()),e("resize",()=>this.resizeService.destroy()),e("bodyRenderer",()=>this.bodyRenderer.destroy()),e("headerRenderer",()=>this.headerRenderer.destroy()),e("pinnedRowsRenderer",()=>this.pinnedRowsRenderer.destroy()),e("summaryRenderer",()=>this.summaryRenderer.destroy()),e("statusBar",()=>this.statusBarService.destroy()),e("skeleton",()=>this.skeleton.destroy()),this.eventBus.clear()}};function ko(i,e={}){if(!i)throw new Error("[mach-table] createGrid requires a container element");if(typeof document>"u")throw new Error("[mach-table] createGrid can only be used in a browser environment");return new ie(i,e).getApi()}function ln(i){return i.value===!0?"\u662F":i.value===!1?"\u5426":""}function dn(i){return e=>{if(e.value==null||e.value==="")return"";let t=e.value instanceof Date?e.value.toISOString():String(e.value);return i==="datetime"?t.slice(0,16).replace("T"," "):t.slice(0,10)}}function cn(i){return e=>{if(e.value==null)return"";let t=i.find(o=>o.value===e.value);return t?t.label:String(e.value)}}function Lo(i){let e=i.type??"string",t={colId:i.field,field:i.field,headerName:i.title??i.field,width:i.width,minWidth:i.minWidth,maxWidth:i.maxWidth,flex:i.flex,pinned:i.pinned??void 0,hide:i.hidden??!1,editable:i.editable??!1,sortable:i.sortable??!0,resizable:i.resizable??!0,filter:i.filterable===!1?!1:e==="number"?"number":e==="date"?"date":e==="select"?"set":"text",cellClass:i.cellClass};if(e==="number")t.type="rightAligned";else if(e==="date")t.valueFormatter=dn(i.format);else if(e==="boolean")t.valueFormatter=ln,t.filter=i.filterable===!1?!1:"set";else if(e==="select"){let o=i.options??[];t.valueFormatter=cn(o),i.editable&&(t.cellEditor="select",t.cellEditorParams={values:o.map(r=>r.value)})}return t}function Po(i){let e=new Map(i.fields.map(r=>[r.field,r])),t=new Set,o=[];for(let r of i.fields){if(t.has(r.field))continue;(i.groups??[]).some(s=>s.fields.includes(r.field))||(o.push(Lo(r)),t.add(r.field))}for(let r of i.groups??[]){let n=[];for(let s of r.fields){let a=e.get(s);!a||t.has(s)||(n.push(Lo(a)),t.add(s))}n.length>0&&o.push({headerName:r.title,children:n})}return o}function P(i){let e=i();return e&&!e.isDestroyed()?e:null}function Ao(i){let e=()=>i.getApi();return{search(t){P(e)?.setQuickFilter(t)},async refresh(){if(i.reload){await i.reload();return}let t=P(e);t&&(t.isInfinite()?await t.reload():t.refreshCells())},openColumns(t){P(e)?.openColumnWorkbench(t)},setDensity(t){P(e)?.setGridOption("size",t)},resetColumns(){P(e)?.resetColumnState()},undo(){return P(e)?.undo()??!1},redo(){return P(e)?.redo()??!1},canUndo(){return P(e)?.canUndo()??!1},canRedo(){return P(e)?.canRedo()??!1},exportCsv(t="mach-table.csv"){let o=P(e);return o?Xe(t,o.getDataAsCsv({prependBOM:!0}),"text/csv;charset=utf-8"):!1},async toggleFullscreen(){if(typeof document>"u")return!1;if(document.fullscreenElement)return await document.exitFullscreen?.(),!1;let o=P(e)?.getRootElement(),r=i.getFullscreenElement?.()??o?.parentElement??o;return r?.requestFullscreen?(await r.requestFullscreen(),!0):!1}}}var ye={sortable:!1,resizable:!1,movable:!1,filter:!1,suppressSizeToFit:!0};function Go(i={}){return{colId:"sel",headerName:"",width:46,pinned:"left",checkboxSelection:!0,...ye,...i}}function Oo(i={}){return{colId:"idx",headerName:"#",type:"index",width:60,pinned:"left",...ye,...i}}function No(i={}){return{colId:"drag",headerName:"",rowDrag:!0,width:40,...ye,...i}}function Fo(i={actions:[]}){let{width:e,pinned:t,...o}=i,r=o.actions?.length??0,n=o.overflow==="inline"?r:Math.min(r,o.max??3),s=o.overflow!=="inline"&&r>n,a=Math.max(1,n)*26+(s?26:0)+10;return{colId:"op",headerName:"\u64CD\u4F5C",width:e??Math.max(64,a),pinned:t??"right",cellRenderer:ne(o),...ye,cellRendererParams:void 0}}function Ho(i={}){let{width:e,pinned:t,...o}=i,r=(o.onView?1:0)+(o.edit===!1?0:1)+(o.onDelete?1:0)+(o.extraActions?.length??0),n=o.overflow==="inline"?r:Math.min(r,o.max??3),s=o.overflow!=="inline"&&r>n,a=Math.max(2,n)*26+(s?26:0)+10;return{colId:"op",headerName:"\u64CD\u4F5C",width:e??Math.max(72,a),pinned:t??"right",cellRenderer:pt(o),...ye,cellRendererParams:void 0}}function Bo(){return{accessor:(i,e={})=>({...e,field:i}),display:i=>({...i}),group:i=>({...i,children:[...i.children]})}}function Vo(i){return[...i]}function Ut(i,e){return e===void 0?i:typeof e!="object"||e===null||typeof i!="object"||i===null?e:{...i,...e}}function un(i,e){return typeof i!="function"?e:typeof e!="function"?i:(...t)=>{let o;try{i(...t)}catch(r){o=r}try{e(...t)}catch(r){o??(o=r)}if(o!==void 0)throw o}}function hn(i,e){let t={...i,...e,features:e.features??i.features};if((i.defaultColDef||e.defaultColDef)&&(t.defaultColDef={...i.defaultColDef,...e.defaultColDef}),(i.locale||e.locale)&&(t.locale={...i.locale,...e.locale}),(i.components||e.components)&&(t.components={cellRenderers:{...i.components?.cellRenderers,...e.components?.cellRenderers},cellEditors:{...i.components?.cellEditors,...e.components?.cellEditors}}),i.columnTypes||e.columnTypes){let o={};for(let r of new Set([...Object.keys(i.columnTypes??{}),...Object.keys(e.columnTypes??{})]))o[r]={...i.columnTypes?.[r],...e.columnTypes?.[r]};t.columnTypes=o}(i.aggFuncs||e.aggFuncs)&&(t.aggFuncs={...i.aggFuncs,...e.aggFuncs}),t.pagination=Ut(i.pagination,e.pagination),t.statusBar=Ut(i.statusBar,e.statusBar),t.watermark=Ut(i.watermark,e.watermark);for(let o of new Set([...Object.keys(i),...Object.keys(e)])){if(!/^on[A-Z]/.test(o))continue;let r=i[o],n=e[o];typeof r=="function"&&typeof n=="function"&&(t[o]=un(r,n))}return t}function H(...i){return i.reduce(hn,{})}function zo(i={}){return H({defaultColDef:{sortable:!0,resizable:!0,movable:!0,filter:!0},rowSelection:"multiple",columnMenu:!0,contextMenu:!0,enableRangeSelection:!0,fillHandle:!0,statusBar:!0,stripedRows:!0},i)}function Wo(i){return i}function Ko(i){return i}function _o(i){return i}function pn(i){return i?(Array.isArray(i)?i:[i]).filter(e=>typeof e=="string"&&e.trim().length>0):[]}function qt(i={}){return{defaults:H({columnTypes:i.columnTypes,components:i.components},i.defaults??{}),presets:Object.fromEntries(Object.entries(i.presets??{}).map(([e,t])=>[e,H(t)])),defaultPreset:i.defaultPreset??!1,...i.onConfigWarning?{onConfigWarning:i.onConfigWarning}:{}}}function $o(i,e){let t=qt(e),o={...i.presets};for(let[r,n]of Object.entries(e.presets??{}))o[r]=H(i.presets[r]??{},n);return{defaults:H(i.defaults,t.defaults),presets:o,defaultPreset:e.defaultPreset===void 0?i.defaultPreset:e.defaultPreset,...e.onConfigWarning??i.onConfigWarning?{onConfigWarning:e.onConfigWarning??i.onConfigWarning}:{}}}function Uo(i,e,t,o){let r=e===void 0?i.defaultPreset:e,n=[{name:"application defaults",options:i.defaults}];for(let a of pn(r)){let l=i.presets[a];if(!l){let d={code:"UNKNOWN_PRESET",preset:a,message:`[MachTable] Unknown preset "${a}". Register it in mach-table.config.ts or remove the preset.`};o?o(d):i.onConfigWarning?i.onConfigWarning(d):console.warn(d.message);continue}n.push({name:`preset:${a}`,options:l})}n.push({name:"table props",options:t});let s=H(...n.map(a=>a.options));return{options:s,explain(a){let l=n.filter(c=>Object.prototype.hasOwnProperty.call(c.options,a)).map(c=>({name:c.name,value:c.options[a]})),d=l[l.length-1];return{key:a,value:s[a],source:d?.name??"MachTable built-in",layers:l}}}}function ve(i){return i!=null&&i!==""}function fn(i){if(!ve(i))return null;let e=typeof i=="number"?i:Number(i);return Number.isFinite(e)?e:null}function vt(i,e){try{return new Intl.NumberFormat(i,e)}catch{return new Intl.NumberFormat(void 0,e)}}function qo(i,e){try{return new Intl.DateTimeFormat(i,e)}catch{let t={...e};return delete t.timeZone,new Intl.DateTimeFormat(void 0,t)}}function mn(i){if(!ve(i))return null;let e=i instanceof Date?i:new Date(i);return Number.isFinite(e.getTime())?e:null}function jo(i={}){let e=i.emptyText??"",t=i.invalidText??"\u2014",o=vt(i.locale,{maximumFractionDigits:i.maximumFractionDigits??2}),r=vt(i.locale,{maximumFractionDigits:0}),n=vt(i.locale,{style:"currency",currency:i.currency??"CNY",currencyDisplay:i.currencyDisplay??"symbol",maximumFractionDigits:i.maximumFractionDigits??2}),s=vt(i.locale,{style:"percent",maximumFractionDigits:i.maximumFractionDigits??2}),a=qo(i.locale,{year:"numeric",month:"2-digit",day:"2-digit",...i.timeZone?{timeZone:i.timeZone}:{}}),l=qo(i.locale,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,...i.timeZone?{timeZone:i.timeZone}:{}}),d=(u,h=1)=>({value:p})=>{if(!ve(p))return e;let m=fn(p);return m==null?t:u.format(m*h)},c=u=>({value:h})=>{if(!ve(h))return e;let p=mn(h);return p==null?t:u.format(p)};return Object.freeze({text:{align:"left",filter:"text"},number:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(o)},integer:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(r)},money:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(n)},percent:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(s)},percentage:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(s,.01)},date:{align:"center",filter:"date",cellEditor:"date",valueFormatter:c(a)},datetime:{align:"center",filter:"date",valueFormatter:c(l)},boolean:{align:"center",filter:"set",valueFormatter:({value:u})=>u===!0?i.trueText??"\u662F":u===!1?i.falseText??"\u5426":e},status:{filter:"set",cellRenderer:"statusTag"},link:{filter:"text",cellRenderer:"link"}})}function wt(i){return`${typeof i}:${String(i)}`}function Yo(i){let e=Math.max(0,i.ttlMs??3e5),t=Math.max(1,Math.floor(i.maxSize??2e3)),o=Math.max(0,i.batchDelayMs??0),r=new Map,n=new Map,s=new Map,a=null,l=null,d=!1,c=m=>{let f=wt(m),y=r.get(f);if(y){if(y.expiresAt<Date.now()){r.delete(f);return}return r.delete(f),r.set(f,y),y.label}},u=m=>{let f=e===0?Number.POSITIVE_INFINITY:Date.now()+e;for(let y of m){let v=wt(y.value);r.delete(v),r.set(v,{key:y.value,label:String(y.label),expiresAt:f})}for(;r.size>t;)r.delete(r.keys().next().value)},h=async()=>{if(a=null,d||n.size===0)return;let m=[...n.entries()];n.clear();let f=m.map(([,v])=>v),y=new AbortController;l=y;try{let v=await i.load(f,y.signal);if(d||y.signal.aborted)return;u(v);for(let[w,C]of m){let T=c(C);for(let R of s.get(w)??[])R.resolve(T);s.delete(w)}}catch(v){y.signal.aborted||i.onError?.(v,f);for(let[w]of m){for(let C of s.get(w)??[])C.reject(v);s.delete(w)}}finally{l===y&&(l=null),!d&&n.size>0&&a==null&&(a=setTimeout(()=>{h()},o))}},p=m=>{let f=c(m);if(f!==void 0)return Promise.resolve(f);if(d)return Promise.reject(new Error("[MachTable] Dictionary resolver has been destroyed."));let y=wt(m);n.set(y,m);let v=new Promise((w,C)=>{let T=s.get(y)??[];T.push({resolve:w,reject:C}),s.set(y,T)});return a==null&&l==null&&(a=setTimeout(()=>{h()},o)),v};return{get:c,resolve:p,async resolveMany(m){let f=await Promise.all(m.map(async y=>[y,await p(y)]));return new Map(f.filter(y=>y[1]!==void 0))},prime:u,invalidate(m){if(!m)r.clear();else for(let f of m)r.delete(wt(f))},destroy(){d=!0,a!=null&&clearTimeout(a),a=null,l?.abort(),l=null;let m=new Error("[MachTable] Dictionary resolver has been destroyed.");for(let f of s.values())for(let y of f)y.reject(m);s.clear(),n.clear(),r.clear()},get size(){return r.size}}}function Xo(i,e={}){return t=>{if(!ve(t.value))return e.emptyText??"";let o=t.value,r=e.fallback?.(o)??String(o),n=i.get(o);if(n!==void 0)return n;let s=document.createElement("span");s.className="mach-dictionary-value mach-dictionary-value--loading",s.textContent=e.loadingText??r;let a=!0;return i.resolve(o).then(l=>{!a||!s.isConnected||(s.textContent=l??r,s.classList.remove("mach-dictionary-value--loading"))}).catch(()=>{!a||!s.isConnected||(s.textContent=r,s.classList.remove("mach-dictionary-value--loading"),s.classList.add("mach-dictionary-value--error"))}),{el:s,destroy:()=>{a=!1}}}}var gn=Ce.version;0&&(module.exports={BUILTIN_AGG_FUNCS,Column,DEFAULT_LOCALE,DIRECT_GRID_OPTION_KEYS,EVENT_TYPES,EventBus,GRID_OPTION_KEYS,GRID_OPTION_META,GRID_SIZE_PRESETS,GridCore,LOCALE_EN,actionsColumn,buildColDefsFromSchema,clearColumnState,clearComponentRegistries,clearGridState,computeColumnWidths,createActionButtonsRenderer,createAggResolver,createBusinessColumnTypes,createCachedDictionary,createColumnHelper,createColumnStateKey,createDictionaryRenderer,createEnterprisePreset,createGrid,createLocalColumnStateStore,createLocalGridStateStore,createMachTableCommands,createMachTablePreset,createProgressBarRenderer,createRowActionsRenderer,createStatusTagRenderer,defaultComparator,defineColumns,defineGridOptions,defineMachTableConfig,defineMachTablePreset,describeFilter,downloadFile,dragColumn,escapeHtml,evaluateColumnFilter,fitColumnWidths,formatText,formatTwo,getByPath,getCellEditor,getCellRenderer,indexColumn,isColDefGroup,isSafePath,linkRenderer,loadColumnState,loadGridState,matchLocaleKey,mergeMachTableConfig,normalizeMachTableConfig,parseCsv,parseDelimited,parseTsv,registerBuiltinRenderers,registerCellEditor,registerCellRenderer,resolveMachTableGridOptions,resolveTagVariant,rowActionsColumn,sanitizeFormulaCell,saveColumnState,saveGridState,selectionColumn,setByPath,sortNodes,toTsv,validateGridOptions,version});
7
7
  //# sourceMappingURL=index.cjs.map