@agile-team/mach-table 0.25.0 → 0.28.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,6 +1,6 @@
1
- "use strict";var St=Object.defineProperty;var _o=Object.getOwnPropertyDescriptor;var Wo=Object.getOwnPropertyNames;var qo=Object.prototype.hasOwnProperty;var $o=(i,e)=>{for(var t in e)St(i,t,{get:e[t],enumerable:!0})},Uo=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Wo(e))!qo.call(i,o)&&o!==t&&St(i,o,{get:()=>e[o],enumerable:!(r=_o(e,o))||r.enumerable});return i};var Ko=i=>Uo(St({},"__esModule",{value:!0}),i);var Hn={};$o(Hn,{BUILTIN_AGG_FUNCS:()=>Lt,DEFAULT_LOCALE:()=>D,EVENT_TYPES:()=>V,LOCALE_EN:()=>Lr,actionsColumn:()=>So,advancedFilterCondition:()=>ur,advancedFilterGroup:()=>hr,applyGridViewState:()=>sr,buildColDefsFromSchema:()=>Co,captureGridViewState:()=>nr,clearGridState:()=>so,createActionButtonsRenderer:()=>ie,createAggResolver:()=>xe,createBusinessColumnTypes:()=>Fo,createCachedDictionary:()=>No,createColumnHelper:()=>Mo,createDictionaryRenderer:()=>Oo,createEnterprisePreset:()=>Io,createGrid:()=>wo,createGridViewManager:()=>zo,createLocalGridStateStore:()=>Kt,createLocalGridViewStore:()=>ar,createMachTableCommands:()=>Ro,createMachTablePreset:()=>ir,createProgressBarRenderer:()=>Qt,createRowActionsRenderer:()=>vt,createStatusTagRenderer:()=>Xt,defineColumns:()=>ko,defineGridOptions:()=>Po,defineMachTableConfig:()=>Lo,defineMachTablePreset:()=>Ao,describeFilter:()=>nt,downloadFile:()=>rt,dragColumn:()=>Eo,escapeHtml:()=>U,formatText:()=>I,formatTwo:()=>$e,getByPath:()=>B,indexColumn:()=>Do,isColDefGroup:()=>J,isSafePath:()=>Y,linkRenderer:()=>Jt,loadGridState:()=>gt,matchLocaleKey:()=>qe,normalizeAdvancedFilterModel:()=>L,normalizeColumnFilter:()=>be,normalizeFilterModel:()=>X,normalizeGridState:()=>G,normalizeGridViewState:()=>Et,normalizeSavedGridView:()=>ne,parseCsv:()=>Fe,parseDelimited:()=>Ne,parseTsv:()=>Ge,resolveGridFeatures:()=>Ct,resolveSaveConflict:()=>Wr,resolveTagVariant:()=>Yt,rowActionsColumn:()=>xo,sanitizeFormulaCell:()=>le,saveGridState:()=>mt,selectionColumn:()=>To,setByPath:()=>q,toTsv:()=>ee,validateGridOptions:()=>wt,version:()=>On});module.exports=Ko(Hn);var ve={name:"@agile-team/mach-table",version:"0.25.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"}},"./adapter":{import:{types:"./dist/adapter.d.ts",default:"./dist/adapter.js"},require:{types:"./dist/adapter.d.cts",default:"./dist/adapter.cjs"}},"./worker":{import:{types:"./dist/worker.d.ts",default:"./dist/worker.js"},require:{types:"./dist/worker.d.cts",default:"./dist/worker.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 we=class{constructor(e){this.onListenerError=e;this.listeners=new Map}on(e,t){let r=this.listeners.get(e);return r||(r=new Set,this.listeners.set(e,r)),r.add(t),()=>{r.delete(t)}}once(e,t){let r=this.on(e,o=>{r(),t(o)});return r}off(e,t){let r=this.listeners.get(e);r&&(r.delete(t),r.size===0&&this.listeners.delete(e))}emit(e,t){let r=this.listeners.get(e);if(r)for(let o of[...r])try{o(t)}catch(n){console.error(`[mach-table] error in "${e}" listener`,n),this.onListenerError?.(n,e)}}clear(){this.listeners.clear()}};var Yo=new Set(["__proto__","prototype","constructor"]);function Y(i){return typeof i!="string"||i.length===0?!1:i.split(".").every(t=>t.length>0&&!Yo.has(t))}function B(i,e){if(i==null||!Y(e))return;if(e.indexOf(".")<0)return i[e];let r=i,o=0;for(;o<e.length;){if(r==null)return;let n=e.indexOf(".",o);if(n<0){r=r[e.slice(o)];break}r=r[e.slice(o,n)],o=n+1}return r}function q(i,e,t){if(i==null||!Y(e))return!1;let r=e.split("."),o=i;for(let n=0;n<r.length-1;n++){if(typeof o!="object"&&typeof o!="function"||o===null)return!1;o[r[n]]==null&&(o[r[n]]={}),o=o[r[n]]}return typeof o!="object"&&typeof o!="function"||o===null?!1:(o[r[r.length-1]]=t,!0)}var Xo=new Set(["contains","notContains","equals","notEquals","startsWith","endsWith","blank","notBlank"]),Qo=new Set(["equals","notEquals","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","inRange","blank","notBlank"]),Jo=new Set(["equals","notEquals","lessThan","greaterThan","inRange","blank","notBlank"]);function Zo(i){return i==null||typeof i=="string"||typeof i=="number"&&Number.isFinite(i)}function ei(i){return i==="text"?Xo:i==="number"?Qo:Jo}function ti(i,e,t){if(i==null||typeof i!="object")return null;let r=i;return typeof r.match!="string"||!t.has(r.match)?null:{match:r.match,...ri(r,e)}}function ri(i,e){let t=e==="number"?dr(i.value):typeof i.value=="string"?i.value:void 0,r=e==="number"?dr(i.value2):typeof i.value2=="string"?i.value2:void 0;return{...t!==void 0?{value:t}:{},...r!==void 0?{value2:r}:{}}}function dr(i){return typeof i=="number"&&Number.isFinite(i)?i:void 0}function oi(i,e){let t=[],r=ei(e);for(let o of i.slice(0,20)){let n=ti(o,e,r);n&&t.push(n)}return t}function be(i){if(i==null||typeof i!="object")return null;let e=i;return e.type==="set"?Array.isArray(e.values)?{type:"set",values:e.values.filter(Zo).slice(0,2e3)}:null:e.type!=="text"&&e.type!=="number"&&e.type!=="date"||!Array.isArray(e.conditions)?null:{type:e.type,...e.operator==="or"||e.operator==="and"?{operator:e.operator}:{},conditions:oi(e.conditions,e.type)}}function ii(i,e){if(typeof i.colId!="string"||!i.colId.trim())return null;let t=i.colId.trim();if(e.validColumnIds?.has(t)===!1)return null;let r=be(i.filter);return r?{kind:"condition",colId:t,filter:r}:null}function ni(i,e,t){if(!Array.isArray(i.children))return null;let r=[];for(let o of i.children){let n=cr(o,e+1,t);n&&r.push(n)}return r.length===0?null:{kind:"group",operator:i.operator==="or"?"or":"and",children:r,...i.not===!0?{not:!0}:{}}}function si(i,e,t){return e<=16&&t.nodes<512&&i!=null&&typeof i=="object"}function cr(i,e,t){if(!si(i,e,t)||t.ancestors.has(i))return null;t.ancestors.add(i),t.nodes++;let r=i,o=r.kind==="condition"?ii(r,t):r.kind==="group"?ni(r,e,t):null;return t.ancestors.delete(i),o}function L(i,e){if(i==null||typeof i!="object")return null;let t=i;if(t.version!==1||t.root==null)return null;let r=cr(t.root,0,{ancestors:new WeakSet,nodes:0,validColumnIds:e});return r?{version:1,root:r}:null}function ur(i,e){return{kind:"condition",colId:i,filter:e}}function X(i,e){if(i==null||typeof i!="object"||Array.isArray(i))return{};let t={};for(let[r,o]of Object.entries(i).slice(0,2e3)){let n=r.trim();if(!n||e?.has(n)===!1)continue;let s=be(o);s&&(t[n]=s)}return t}function hr(i,e,t={}){return{kind:"group",operator:i,children:e,...t.not?{not:!0}:{}}}var xt={sortable:!0,resizable:!0,movable:!0,filter:!1,minWidth:80},se={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 T(i,e,t,r=!1){return typeof i!="number"||!Number.isFinite(i)||i<t?e:r?Math.floor(i):i}function ai(i){return i&&Object.prototype.hasOwnProperty.call(se,i)?i:"normal"}function li(i){return i.theme==="light"||i.theme==="dark"||i.theme==="auto"?i.theme:"light"}function di(i,e){let t=typeof i.pagination=="object"&&Array.isArray(i.pagination.pageSizeOptions)?i.pagination.pageSizeOptions:void 0,r=t?[...new Set(t.map(o=>T(o,0,1,!0)).filter(Boolean))]:[10,20,50,100];return r.includes(e)||r.push(e),r.sort((o,n)=>o-n)}function Mt(i,e){let t=typeof i=="function"?i(e):B(e,i);return t==null?"":String(t)}function ci(i){let e=i.rowKey,t=e?({data:r})=>Mt(e,r):void 0;return{...t?{resolveRowId:t}:{},...e?{rowKey:e}:{}}}function ui(i,e){let t=se[e];return{columnDefs:Array.isArray(i.columnDefs)?i.columnDefs:[],rowData:Array.isArray(i.rowData)?i.rowData:[],defaultColDef:{...xt,...i.defaultColDef??{}},columnTypes:i.columnTypes??{},...ci(i),rowHeight:T(i.rowHeight,t.rowHeight,1),headerHeight:T(i.headerHeight,t.headerHeight,1),rowBuffer:T(i.rowBuffer,8,0,!0),columnLayout:i.columnLayout==="fit"?"fit":"normal",enableColumnResize:i.enableColumnResize===!0,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 hi(i){return{stripedRows:i.stripedRows??!1,showCellBorders:i.showCellBorders??!1,theme:li(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 pi(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:T(i.undoStackSize,100,0,!0),asyncTransactionWaitMillis:T(i.asyncTransactionWaitMillis,16,0,!0)}}function fi(i){return{masterDetail:i.masterDetail??!1,detailRowHeight:T(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 mi(i){let e=typeof i.pagination=="object"?i.pagination:void 0,t=T(e?.pageSize,20,1,!0);return{paginationEnabled:i.pagination!==!1&&i.datasource==null,paginationMode:e?.mode==="server"?"server":"client",paginationPage:T(e?.page,1,1,!0),paginationTotal:T(e?.total,0,0,!0),paginationPageSize:t,paginationPageSizeOptions:di(i,t),paginationShowTotal:e?e.showTotal!==!1:!0,paginationShowSizeSelector:e?e.showPageSizeSelector!==!1:!0}}function gi(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 yi(i){return{columnMenu:i.columnMenu??!1,advancedFilterModel:L(i.advancedFilterModel),...vi(i),locale:i.locale??{},suppressWarnings:i.suppressWarnings??!1,enableRangeSelection:i.enableRangeSelection??!1,suppressClipboard:i.suppressClipboard??!1,contextMenu:i.contextMenu??!1,tooltipShowDelay:T(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 vi(i){let e=i.persistence;return!e||typeof e.key!="string"||!e.key.trim()?{persistence:null}:{persistence:{key:e.key.trim(),debounceMs:T(e.debounceMs,160,0,!0),...e.sections?{sections:[...new Set(e.sections)]}:{},...e.store?{store:e.store}:{}}}}function wi(i){return{datasourceMode:i.datasourceMode==="block"?"block":"sequential",blockSize:T(i.blockSize,100,1,!0),infiniteBufferRows:T(i.infiniteBufferRows,40,0,!0),maxBlocksInCache:T(i.maxBlocksInCache,12,1,!0),datasourceMaxConcurrentRequests:T(i.datasourceMaxConcurrentRequests,4,1,!0),blockPrefetch:T(i.blockPrefetch,1,0,!0),datasourceRowCount:i.datasourceRowCount==null?null:T(i.datasourceRowCount,0,0,!0),dataProcessorMinRows:T(i.dataProcessorMinRows,5e3,1,!0),datasourceRetryCount:T(i.datasourceRetryCount,2,0,!0),datasourceRetryDelay:T(i.datasourceRetryDelay,300,0,!0),datasourceRetryJitter:Math.min(1,T(i.datasourceRetryJitter,.15,0))}}function bi(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 Ci=["detailRowRenderer","isRowExpandable","aggFuncs","components","actionPolicy","summaryMethod","datasource","getRowHeight","tooltipComponent","getContextMenuItems","initialState","rowEditValidator","isTreeRowExpandable","loadTreeChildren","dataProcessor"];function Ri(i,e){for(let t of Ci)i[t]&&Object.assign(e,{[t]:i[t]})}function Ti(i,e){for(let t of Object.keys(i))t.startsWith("on")&&typeof i[t]=="function"&&Object.assign(e,{[t]:i[t]})}function pr(i){let e=ai(i.size),t={...ui(i,e),...hi(i),...pi(i),...fi(i),...mi(i),...gi(i),...yi(i),...wi(i),...bi(i),features:Array.isArray(i.features)?i.features:[]};return Ri(i,t),Ti(i,t),t}function fr(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 fr(i.type).includes(e)}function mr(i,e,t={}){let r={};for(let o of fr(i.type)){let n=t[o];n&&Object.assign(r,n)}return{...e,...r,...i}}var N=class{constructor(e,t){this.manualWidth=null;this.flex=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 r=t.pinned;this.pinned=r===!0?"left":r===!1||r==null?null:r,this.resetWidth()}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}resetWidth(){this.manualWidth=null,this.flex=typeof this.colDef.flex=="number"&&Number.isFinite(this.colDef.flex)&&this.colDef.flex>0?this.colDef.flex:null}};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 Ce(i,e){return typeof i=="number"&&Number.isFinite(i)&&i>0?i:e}function gr(i){let e=Ce(i.minWidth,80);return{min:e,max:Math.max(e,Ce(i.maxWidth,Number.MAX_SAFE_INTEGER))}}function A(i,e){let{min:t,max:r}=gr(e),o=Ce(i,Ce(e.width,150));return Math.max(t,Math.min(r,o))}function yr(i,e){let t=i.map(s=>A(s.width??150,s)),r=[],o=0;i.forEach((s,a)=>{let l=s.flex??0;l>0&&(r.push(a),o+=l)});let n=0;for(let s of t)n+=s;if(o>0&&e>n){let s=e-n;for(let a=0;a<4&&s>.5&&r.length>0;a++){let l=[],d=0;for(let p of r){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;r.length=0;for(let p of h)r.push(p)}}return t}function vr(i,e){let t=i.map(s=>A(s.width??150,s));if(!Number.isFinite(e)||e<=0||i.length===0)return t;let r=new Set(i.map((s,a)=>a)),o=e;for(let s=0;s<i.length+1&&r.size>0;s++){let a=0;for(let d of r)a+=Math.max(1,t[d]);if(a<=0)break;let l=!1;for(let d of[...r]){let c=o*(Math.max(1,t[d])/a),u=A(c,i[d]),{min:h,max:p}=gr(i[d]);(c<h||c>p)&&(t[d]=u,o-=u,r.delete(d),l=!0)}if(!l){for(let d of r)t[d]=A(o*(Math.max(1,t[d])/a),i[d]);break}o=Math.max(0,o)}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 kt="__rg_detail_toggle__";function Re(i){return typeof i=="number"&&Number.isFinite(i)&&i>0}var Te=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])),r=this.core.options.defaultColDef,o=new Set(this.core.options.masterDetail&&this.core.options.detailToggleColumn?[kt]:[]),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(;o.has(p);)p=`${h}_${m++}`;o.add(p);let f=new N(p,mr(u,r,this.core.options.columnTypes));f.parentGroup=a,f.level=l;let y=t.get(p);return y&&(f.manualWidth=y.manualWidth,f.flex=y.flex,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 N(kt,{colId:kt,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 r of e)r instanceof $?this.collectLeaves(r.children,t):t.push(r);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,r)=>this.flatIndexById.set(t.id,r))}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 r=Math.max(0,e-t),o=[],n=[];for(let c of this.center)(c.colDef.suppressSizeToFit||c.manualWidth!=null?n:o).push(c);let s=0;for(let c of n)c.currentWidth=A(c.manualWidth??c.colDef.width??150,this.widthInputOf(c)),s+=c.currentWidth;let a=o.map(c=>this.widthInputOf(c)),l=Math.max(0,r-s),d=this.core.options.columnLayout==="fit"?vr(a,l):yr(a,l);o.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,...e.flex!=null?{flex:e.flex}:{}}}setColumnWidth(e,t){return Re(t)?(e.manualWidth=A(t,this.widthInputOf(e)),e.flex=null,!0):!1}setColumnVisibility(e,t){let r=this.getColumn(e);!r||r.hide===!t||(r.hide=!t,this.regroup())}moveColumn(e,t){let r=this.getColumn(e);if(!r)return!1;let o=this.paneOf(r),n=u=>r.parentGroup?!0:this.paneOf(u)===o,s=r.parentGroup?r.parentGroup.children:this.rootChildren,a=s.filter(u=>u instanceof N&&!u.hide&&n(u)),l=a.indexOf(r);if(l<0)return!1;a.splice(l,1);let d=Math.max(0,Math.min(t,a.length));a.splice(d,0,r);let c=[];return s.forEach((u,h)=>{u instanceof N&&!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 r=this.getColumn(e);r&&(r.pinned=t,this.regroup())}getColumnState(){return this.columns.map(e=>({colId:e.id,hide:e.hide,width:e.manualWidth??e.currentWidth,flex:e.flex,widthMode:e.manualWidth==null?"auto":"manual",pinned:e.pinned}))}applyColumnState(e){let t=new Map(e.map(r=>[r.colId,r]));for(let r of this.columns){let o=t.get(r.id);o&&this.applyColumnViewState(r,o)}this.applyStateOrder(e),this.regroup()}applyColumnViewState(e,t){typeof t.hide=="boolean"&&(e.hide=t.hide),t.widthMode==="auto"?(e.resetWidth(),Re(t.flex)&&(e.flex=t.flex)):Re(t.flex)?(e.flex=t.flex,e.manualWidth=null):Re(t.width)&&(e.manualWidth=A(t.width,this.widthInputOf(e)),e.flex=null),(t.pinned==="left"||t.pinned==="right"||t.pinned===null)&&(e.pinned=t.pinned)}applyStateOrder(e){let t=new Map;e.forEach((o,n)=>t.set(o.colId,n));let r=o=>o.pinned==="left"?"left":o.pinned==="right"?"right":"center";for(let o of["left","center","right"]){let n=this.rootChildren.filter(l=>l instanceof N&&!l.hide&&l.parentGroup===null&&r(l)===o);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 N&&!l.hide&&l.parentGroup===null&&r(l)===o&&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.resetWidth(),e.hide=e.colDef.hide??!1;let t=e.colDef.pinned;e.pinned=t===!0?"left":t===!1||t==null?null:t}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(r=>r.id===t.colId)&&(t.direction==="asc"||t.direction==="desc")).map(t=>({colId:t.colId,direction:t.direction}))}cycleSort(e,t){let r=[...this.sortModel],o=r.findIndex(l=>l.colId===e.id),n=o>=0?r[o].direction:null,s=n===null?"asc":n==="asc"?"desc":null;t&&this.core.options.multiSort?s===null?o>=0&&r.splice(o,1):o>=0?r[o]={colId:e.id,direction:s}:r.push({colId:e.id,direction:s}):(r.length=0,s&&r.push({colId:e.id,direction:s})),this.sortModel=r}};function br(i){return i==null?"":String(i).toLowerCase()}function Di(i,e,t){let r=br(i),o=e.map(n=>{let s=(n.value??"").toLowerCase();switch(n.match){case"contains":return r.includes(s);case"notContains":return!r.includes(s);case"equals":return r===s;case"notEquals":return r!==s;case"startsWith":return r.startsWith(s);case"endsWith":return r.endsWith(s);case"blank":return r==="";case"notBlank":return r!=="";default:return!0}});return o.length===0?!0:t==="or"?o.some(Boolean):o.every(Boolean)}function Ei(i,e,t){let r=e.map(o=>{let n=i==null||i==="";if(o.match==="blank")return n;if(o.match==="notBlank")return!n;if(n)return!1;let s=typeof i=="number"?i:Number(i);if(isNaN(s))return!1;let a=o.value;if(a==null||isNaN(a))return!1;switch(o.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<=(o.value2??a);default:return!0}});return r.length===0?!0:t==="or"?r.some(Boolean):r.every(Boolean)}function De(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 Si(i,e,t){let r=e.map(o=>{let n=De(i)==null;if(o.match==="blank")return n;if(o.match==="notBlank")return!n;if(n)return!1;let s=De(i),a=o.value!=null?De(o.value):null;if(a==null)return!1;switch(o.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=o.value2!=null?De(o.value2):null;return l!=null?s>=a&&s<=l:s>=a}default:return!0}});return r.length===0?!0:t==="or"?r.some(Boolean):r.every(Boolean)}function xi(i,e){return e.length===0?!0:e.some(t=>t==null&&i==null||t===i)}function Cr(i,e){let t=e.type!=="set"&&e.operator==="or"?"or":"and";switch(e.type){case"text":return Di(i,e.conditions,t);case"number":return Ei(i,e.conditions,t);case"date":return Si(i,e.conditions,t);case"set":return xi(i,e.values);default:return!0}}function It(i,e,t,r){if(i.kind==="condition"){let n=e.get(i.colId);return!n||Cr(r(t,n),i.filter)}let o=i.operator==="or"?i.children.some(n=>It(n,e,t,r)):i.children.every(n=>It(n,e,t,r));return i.not?!o:o}function Mi(i,e,t,r){return t?It(t.root,new Map(e.map(o=>[o.id,o])),i,r):!0}function At(i,e,t,r,o,n){for(let s of Object.keys(t)){let a=t[s],l=e.find(c=>c.id===s);if(!l)continue;let d=n(i,l);if(!Cr(d,a))return!1}if(!Mi(i,e,r,n))return!1;if(o&&o.trim()!==""){let s=o.trim().toLowerCase().split(/\s+/);for(let a of s)if(!e.some(d=>br(n(i,d)).includes(a)))return!1}return!0}var Rr=typeof Intl<"u"?new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"}):null;function Ee(i,e){let t=i==null||i==="",r=e==null||e==="";if(t&&r)return 0;if(t)return 1;if(r)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 o=String(i),n=String(e);return Rr?Rr.compare(o,n):o.localeCompare(n)}function Pt(i,e,t,r){let o=new Map;for(let l of t)o.set(l.id,l);let n=[],s=[];for(let l of e){let d=o.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=>r(l,o.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 Se(i){return i.filter(e=>typeof e=="number"&&!isNaN(e))}var Lt={sum:i=>Se(i).reduce((e,t)=>e+t,0),avg:i=>{let e=Se(i);return e.length===0?null:e.reduce((t,r)=>t+r,0)/e.length},count:i=>i.length,min:i=>{let e=Se(i);return e.length===0?null:Math.min(...e)},max:i=>{let e=Se(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 xe(i){let e={...Lt,...i??{}};return t=>e[t]}function Z(i){if(i.reason instanceof Error)return i.reason;let e=new Error(typeof i.reason=="string"?i.reason:"Block request aborted");return e.name="AbortError",e}function Me(i){return Number.isFinite(i)?Math.max(1,Math.trunc(i)):1}var ke=class{constructor(e,t,r=4){this.maxBlocks=e;this.onEvict=t;this.maxConcurrentRequests=r;this.blocks=new Map;this.inflight=new Map;this.clock=0;this.generation=0;this.hitCount=0;this.missCount=0;this.evictionCount=0;this.activeRequests=0;this.maxBlocks=Me(e),this.maxConcurrentRequests=Me(r)}configure(e,t=this.maxConcurrentRequests){this.maxBlocks=Me(e),this.maxConcurrentRequests=Me(t),this.evictOverflow(),this.drainQueue()}peek(e){let t=this.blocks.get(e);if(t)return t.touchedAt=++this.clock,t}has(e){return this.blocks.has(e)}load(e,t,r,o=0){if(r?.aborted)return Promise.reject(Z(r));let n=this.peek(e);if(n)return this.hitCount++,Promise.resolve(n);let s=this.inflight.get(e);if(s)return this.hitCount++,s.priority=Math.max(s.priority,o),this.drainQueue(),this.attachConsumer(e,s,r);this.missCount++;let a=new AbortController,l,d,c=new Promise((p,m)=>{l=p,d=m}),u={controller:a,promise:c,consumers:0,loader:t,priority:o,state:"queued",resolve:l,reject:d};this.inflight.set(e,u);let h=this.attachConsumer(e,u,r);return this.drainQueue(),h}purge(){this.generation++;for(let e of this.inflight.values())e.controller.abort(),e.state==="queued"&&e.reject(Z(e.controller.signal));this.inflight.clear();for(let[e,t]of this.blocks)this.onEvict?.(e,t);this.blocks.clear()}snapshot(){let e=0,t=0;for(let r of this.blocks.values())e+=r.rows.length;for(let r of this.inflight.values())r.state==="active"&&t++;return{cachedBlockCount:this.blocks.size,loadingBlockCount:this.inflight.size,activeRequestCount:t,queuedRequestCount:Math.max(0,this.inflight.size-t),cachedRowCount:e,hitCount:this.hitCount,missCount:this.missCount,evictionCount:this.evictionCount}}drainQueue(){for(;this.activeRequests<this.maxConcurrentRequests;){let e,t;for(let[r,o]of this.inflight)o.state!=="queued"||o.controller.signal.aborted||(!t||o.priority>t.priority)&&(e=r,t=o);if(e==null||!t)return;this.startEntry(e,t)}}startEntry(e,t){t.state="active",this.activeRequests++;let r=this.generation;this.runLoader(t).then(o=>{r===this.generation&&!t.controller.signal.aborted&&(this.blocks.set(e,{rows:o.rows,...o.lastRow==null?{}:{lastRow:o.lastRow},touchedAt:++this.clock}),this.evictOverflow()),t.resolve(o)},t.reject).finally(()=>{this.activeRequests=Math.max(0,this.activeRequests-1),this.inflight.get(e)===t&&this.inflight.delete(e),this.drainQueue()})}runLoader(e){let{signal:t}=e.controller;return t.aborted?Promise.reject(Z(t)):new Promise((r,o)=>{let n=()=>o(Z(t));t.addEventListener("abort",n,{once:!0}),Promise.resolve().then(()=>e.loader(t)).then(r,o).finally(()=>{t.removeEventListener("abort",n)})})}attachConsumer(e,t,r){return t.consumers++,new Promise((o,n)=>{let s=!1,a=d=>{s||(s=!0,r?.removeEventListener("abort",l),t.consumers=Math.max(0,t.consumers-1),d())},l=()=>a(()=>{t.consumers===0&&this.inflight.get(e)===t&&(this.inflight.delete(e),t.controller.abort(r?.reason),t.state==="queued"&&t.reject(Z(t.controller.signal))),n(Z(r))});r?.addEventListener("abort",l,{once:!0}),t.promise.then(d=>a(()=>o(d)),d=>a(()=>n(d instanceof Error?d:new Error(String(d??"Block request failed")))))})}evictOverflow(){for(;this.blocks.size>this.maxBlocks;){let e=-1,t=Number.POSITIVE_INFINITY;for(let[o,n]of this.blocks)n.touchedAt<t&&(e=o,t=n.touchedAt);if(e<0)return;let r=this.blocks.get(e);this.blocks.delete(e),this.evictionCount++,r&&this.onEvict?.(e,r)}}};function ae(i,e){if(i==null||typeof i!="object")return;let t=i[e];return Array.isArray(t)?t:void 0}var Ie=class{constructor(e){this.core=e;this.all=[];this.roots=[];this.childIds=new Map;this.displayed=[];this.nodesById=new Map;this.filterModel={};this.advancedFilterModel=null;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.displayRevision=0;this.blockNodes=new Map;this.blockPlaceholders=new Map;this.installedBlocks=new Set;this.blockCache=new ke(12,e=>this.evictBlock(e));this.dataProcessorSeq=0;this.dataProcessorAbort=null;this.skipDataProcessorOnce=!1;this.lastRequestedBlock=0;this.pipelineRows=[];this.page=1;this.pageSize=20;this.advancedFilterModel=L(e.options.advancedFilterModel)}resolveRowId(e,t,r){let o=this.core.options.resolveRowId;if(!o)return r;try{let n=o({data:e,index:t,api:this.core.getApi()});if(typeof n=="string"&&n.length>0)return n;this.core.reportError(new Error("rowKey must resolve to a non-empty identifier"),"rowKey",{index:t})}catch(n){this.core.reportError(n,"rowKey",{index:t})}return r}get isTree(){return this.core.options.treeData}get isInfinite(){return this.core.options.datasource!=null}get isBlockDatasource(){return this.isInfinite&&this.core.options.datasourceMode==="block"}getDisplayTotalCount(){if(this.isInfinite){if(this.isBlockDatasource)return this.resolveBlockRowCount();let e=Math.max(0,this.displayed.length-this.all.length);return(this.infiniteLastRow??this.all.length)+e}return this.displayed.length}getDisplayRevision(){return this.displayRevision}isLoadingInfinite(){return this.infiniteLoading}startInfinite(e){return!this.isInfinite||e?.aborted?Promise.resolve():(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.requestUpdate({data:!0}),this.isBlockDatasource?(this.blockCache.configure(this.core.options.maxBlocksInCache,this.core.options.datasourceMaxConcurrentRequests),this.loadRandomBlock(0,e)):this.loadBlock(0,void 0,e))}reloadInfinite(e){return this.isInfinite?this.startInfinite(e):Promise.resolve()}setInfiniteLoading(e){this.infiniteLoading=e,this.core.skeleton.setInfiniteLoading(e,this.core.getLocaleText("loading"))}loadBlock(e,t,r){if(!this.isInfinite||this.infiniteRequested||this.infiniteLastRow!=null&&e>=this.infiniteLastRow)return Promise.resolve();let o=this.core.options.datasource,n=this.core.options.blockSize,s=t??e+n;if(s<=e)return Promise.resolve();let a=++this.infiniteSeq,l=new AbortController,d=()=>l.abort(r?.reason);return r?.addEventListener("abort",d,{once:!0}),this.infiniteAbort=l,this.infiniteRequested=!0,this.setInfiniteLoading(!0),new Promise(c=>{let u=!1,h=0;this.infinitePendingResolve=c;let p=f=>{u||(u=!0,r?.removeEventListener("abort",d),a===this.infiniteSeq&&(this.infiniteRequested=!1,this.infiniteAbort=null,this.infinitePendingResolve=null,this.setInfiniteLoading(!1),f!=null&&f?.name!=="AbortError"&&this.core.reportError(f,"datasource.getRows",{startRow:e,endRow:s})),c())},m=()=>{if(u||a!==this.infiniteSeq||l.signal.aborted||this.core.isDestroyed()){p();return}h++;let f=!1,y=v=>{if(!(f||u)){if(f=!0,a!==this.infiniteSeq||l.signal.aborted||this.core.isDestroyed()){p();return}if(h<=this.core.options.datasourceRetryCount){let w=this.retryDelay(h);this.infiniteRetryTimer=setTimeout(()=>{this.infiniteRetryTimer=null,m()},w);return}p(v??new Error("Datasource request failed"))}};try{let v=o.getRows({startRow:e,endRow:s,sortModel:this.core.columnModel.getSortModel(),filterModel:this.getFilterModel(),advancedFilterModel:this.getAdvancedFilterModel(),quickFilterText:this.quickFilter,signal:l.signal,onSuccess:(w,C)=>{if(f||u)return;if(f=!0,a!==this.infiniteSeq||this.core.isDestroyed()||l.signal.aborted){p();return}let E=w??[];typeof C=="number"&&C>=0?this.infiniteLastRow=C:E.length<s-e&&(this.infiniteLastRow=e+E.length);let R=this.all.length===0;this.appendInfiniteRows(E),p(),this.refreshPipeline(),this.core.requestUpdate({data:!0}),R&&this.core.relayout(),this.core.headerRenderer.refreshSelectAllCheckbox()},fail:y});v&&typeof v.catch=="function"&&v.catch(y)}catch(v){y(v)}};m()})}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,this.blockCache.purge(),this.blockNodes.clear(),this.blockPlaceholders.clear(),this.installedBlocks.clear()}appendInfiniteRows(e){for(let t of e){if(t==null)continue;let r=this.all.length,o=this.resolveRowId(t,r,`inf-${this.core.nextId()}`);if(this.nodesById.has(o)){this.core.reportError(new Error(`Duplicate row id: ${o}`),"datasource.getRows",{rowId:o});continue}let n={id:o,data:t,rowIndex:-1,selected:this.core.selectionService.isSelected(o)};this.all.push(n),this.nodesById.set(o,n),this.roots.push(n)}}loadRandomBlock(e,t,r=0){if(!this.isBlockDatasource||e<0)return Promise.resolve();if(t?.aborted)return Promise.reject(this.abortError(t.reason));let o=this.core.options.blockSize,n=e*o;if(n>=this.resolveBlockRowCount())return Promise.resolve();let s=this.infiniteLastRow==null?n+o:Math.min(this.infiniteLastRow,n+o),a=this.blockCache.load(e,l=>this.requestDatasourceRange(n,s,l),t,r);return this.setInfiniteLoading(this.all.length===0&&this.blockCache.snapshot().loadingBlockCount>0),a.then(l=>{t?.aborted||this.core.isDestroyed()||!this.isBlockDatasource||this.installedBlocks.has(e)||(this.installBlock(e,l),this.refreshPipeline(),this.core.requestUpdate({data:!0}),this.core.headerRenderer.refreshSelectAllCheckbox())}).catch(l=>{throw l?.name!=="AbortError"&&this.core.reportError(l,"datasource.getRows",{startRow:n,endRow:s}),l}).finally(()=>{this.setInfiniteLoading(this.all.length===0&&this.blockCache.snapshot().loadingBlockCount>0)})}requestDatasourceRange(e,t,r){let o=this.core.options.datasource;return new Promise((n,s)=>{let a=0,l=null,d=!1,c=p=>{d||(d=!0,l!=null&&clearTimeout(l),r.removeEventListener("abort",u),s(p instanceof Error?p:new Error(typeof p=="string"?p:"Datasource request failed")))},u=()=>c(this.abortError(r.reason));r.addEventListener("abort",u,{once:!0});let h=()=>{if(d)return;if(r.aborted||this.core.isDestroyed()){u();return}a++;let p=!1,m=f=>{if(!(p||d)){if(p=!0,r.aborted||this.core.isDestroyed()){u();return}if(a<=this.core.options.datasourceRetryCount){let y=this.retryDelay(a);l=setTimeout(()=>{l=null,h()},y)}else c(f)}};try{let f=o.getRows({startRow:e,endRow:t,sortModel:this.core.columnModel.getSortModel(),filterModel:this.getFilterModel(),advancedFilterModel:this.getAdvancedFilterModel(),quickFilterText:this.quickFilter,signal:r,onSuccess:(y,v)=>{p||d||(p=!0,d=!0,r.removeEventListener("abort",u),n({rows:y??[],...typeof v=="number"&&v>=0?{lastRow:v}:{}}))},fail:m});f&&typeof f.catch=="function"&&f.catch(m)}catch(f){m(f)}};h()})}installBlock(e,t){let r=this.core.options.blockSize,o=e*r;this.evictBlock(e),typeof t.lastRow=="number"&&t.lastRow>=0?this.infiniteLastRow=t.lastRow:t.rows.length<r&&(this.infiniteLastRow=o+t.rows.length),t.rows.forEach((n,s)=>{if(n==null)return;let a=o+s;if(this.infiniteLastRow!=null&&a>=this.infiniteLastRow)return;let l=this.resolveRowId(n,a,`block-${a}`),d=this.nodesById.get(l);if(d&&d.rowIndex!==a){this.core.reportError(new Error(`Duplicate row id: ${l}`),"datasource.getRows",{rowId:l});return}let c={id:l,data:n,rowIndex:a,selected:this.core.selectionService.isSelected(l)};this.blockNodes.set(a,c),this.blockPlaceholders.delete(a),this.nodesById.set(l,c),this.rowSequence.set(c,a+1)}),this.rebuildLoadedBlockRows(),this.installedBlocks.add(e)}evictBlock(e){this.installedBlocks.delete(e);let t=this.core.options.blockSize,r=e*t;for(let o=r;o<r+t;o++){let n=this.blockNodes.get(o);n&&(this.blockNodes.delete(o),this.nodesById.get(n.id)===n&&this.nodesById.delete(n.id))}this.rebuildLoadedBlockRows()}rebuildLoadedBlockRows(){this.all=[...this.blockNodes.entries()].sort(([e],[t])=>e-t).map(([,e])=>e),this.roots=this.all}resolveBlockRowCount(){if(this.infiniteLastRow!=null)return this.infiniteLastRow;if(this.core.options.datasourceRowCount!=null)return this.core.options.datasourceRowCount;if(this.blockNodes.size===0)return this.core.options.blockSize;let e=0;for(let t of this.blockNodes.keys())e=Math.max(e,t+1);return e+this.core.options.blockSize}blockPlaceholder(e){let t=this.blockPlaceholders.get(e);if(!t&&(t={id:`__mach_loading_${e}`,data:null,rowIndex:e,selected:!1,loading:!0},this.blockPlaceholders.set(e,t),this.blockPlaceholders.size>2e3)){let r=this.blockPlaceholders.keys().next().value;r!=null&&this.blockPlaceholders.delete(r)}return t}abortError(e){if(e instanceof Error)return e;let t=new Error(typeof e=="string"?e:"Operation aborted");return t.name="AbortError",t}retryDelay(e){let t=Math.min(this.core.options.datasourceRetryDelay*2**Math.max(0,e-1),3e4),r=this.core.options.datasourceRetryJitter;return Math.max(0,Math.round(t*(1+(Math.random()*2-1)*r)))}checkInfiniteScroll(e){if(this.isBlockDatasource){this.prefetchVisibleBlocks(e);return}if(!this.isInfinite||this.infiniteRequested)return;let t=this.all.length;if(this.infiniteLastRow!=null&&t>=this.infiniteLastRow)return;let r=this.core.options.infiniteBufferRows;if(e+r<t&&e<t)return;let o=this.core.options.blockSize,n=this.infiniteLastRow==null?t+o:Math.min(this.infiniteLastRow,t+o);this.loadBlock(t,n)}prefetchVisibleBlocks(e){if(e<0)return;let t=this.core.options.blockSize,r=Math.floor(e/t),o=this.core.options.blockPrefetch,n=r<this.lastRequestedBlock?-1:1;this.lastRequestedBlock=r;for(let s=0;s<=o;s++){let a=s===0?[r]:[r+n*s,r-n*s];for(let l of a)l<0||l*t>=this.resolveBlockRowCount()||this.loadRandomBlock(l,void 0,o-s+1).catch(()=>{})}}onServerParamsChanged(){return this.reloadInfinite().catch(()=>{})}onDatasourceChanged(){return this.cancelInfiniteRequest(),this.isInfinite?this.startInfinite().catch(()=>{}):(this.infiniteLastRow=null,this.setRowData(this.core.options.rowData),this.core.requestUpdate({data:!0}),Promise.resolve())}destroy(){this.cancelInfiniteRequest(),this.cancelTreeLoads(),this.cancelDataProcessor(),this.core.options.dataProcessor?.destroy?.()}ensureRowsLoaded(e,t,r){if(!this.isBlockDatasource)return Promise.resolve();let o=this.core.options.blockSize,n=Math.max(0,Math.trunc(e)),s=Math.min(this.resolveBlockRowCount(),Math.max(n,Math.trunc(t))),a=Math.floor(n/o),l=Math.max(a,Math.floor(Math.max(n,s-1)/o)),d=[];for(let c=a;c<=l;c++)d.push(this.loadRandomBlock(c,r,100));return Promise.all(d).then(()=>{})}purgeDatasourceCache(){this.isBlockDatasource&&(this.blockCache.purge(),this.blockNodes.clear(),this.blockPlaceholders.clear(),this.installedBlocks.clear(),this.all=[],this.roots=[],this.nodesById.clear(),this.refreshPipeline(),this.core.requestUpdate({data:!0}))}getDatasourceCacheSnapshot(){return this.blockCache.snapshot()}setRowData(e){this.cancelTreeLoads(),this.core.changeTracker.clear();let t=this.core.options.resolveRowId,r=this.core.options.childrenKey,o=[],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,r):void 0,y={id:m,data:c,rowIndex:-1,selected:!1,treeChildrenLoaded:Array.isArray(f)};if(this.treeDepth.set(y,u),o.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=o,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 o)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 r=this.nodesById.get(e),o=this.core.options.loadTreeChildren;if(!this.isTree||!r?.data||!o)return Promise.resolve([]);if(!t&&r.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),r.treeLoading=!0,r.treeLoadError=void 0,this.core.requestUpdate({data:!0});let a=Promise.resolve().then(()=>o({data:r.data,node:r,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(r,l),r.treeChildrenLoaded=!0,r.treeLoadError=void 0,this.core.emit("treeChildrenLoaded",{rowId:e,rowNode:r,children:l}),l}).catch(l=>{if(s.signal.aborted||l?.name==="AbortError")return[];throw r.treeLoadError=l,r.treeChildrenLoaded=!1,this.core.reportError(l,"treeData.loadChildren",{rowId:e}),this.core.emit("treeChildrenLoadFailed",{rowId:e,rowNode:r,error:l}),l}).finally(()=>{this.treeLoadControllers.get(e)===s&&(this.treeLoadControllers.delete(e),this.treeLoadPromises.delete(e),r.treeLoading=!1,this.core.requestUpdate({data:!0}))});return this.treeLoadPromises.set(e,a),a}replaceTreeChildren(e,t){let r=new Set,o=[...this.getChildrenIds(e.id)];for(;o.length>0;){let s=o.pop();r.has(s)||(r.add(s),o.push(...this.getChildrenIds(s)))}this.validateTreeChildren(t,r);for(let s of r)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.resolveRowId!=null),this.refreshPipeline(),this.core.requestUpdate({data:!0})}validateTreeChildren(e,t){let r=this.core.options.resolveRowId,o=r?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(r&&o){let c=r({data:l,index:a++,api:this.core.getApi()});if(typeof c!="string"||c.length===0)throw new TypeError("[MachTable] rowKey must resolve to a non-empty identifier for lazy tree children.");if(o.has(c))throw new Error(`Duplicate row id: ${c}`);o.add(c)}let d=ae(l,this.core.options.childrenKey);d&&s.push(...d)}}applyTransaction(e,t=!0){let r=this.core.options.resolveRowId,o=[],n=[];if(e.remove?.length){let a=new Set,l=new Set,d=u=>{if(r){let p=[this.resolveRowId(u,-1,`__missing_remove_${this.core.nextId()}`)];for(;p.length>0;){let m=p.pop();if(!a.has(m)){a.add(m);for(let f of this.childIds.get(m)??[])p.push(f)}}}else{let h=[u];for(;h.length>0;){let p=h.pop();l.add(p);let m=this.isTree?ae(p,this.core.options.childrenKey):void 0;if(m)for(let f of m)h.push(f)}}};e.remove.forEach(d),this.all=this.all.filter(u=>{let h=a.has(u.id)||u.data!=null&&l.has(u.data);return h&&(n.push(u.id),this.nodesById.delete(u.id),this.childIds.delete(u.id)),!h});let c=new Set(this.all);this.roots=this.roots.filter(u=>c.has(u))}if(e.update?.length)for(let a of e.update){let l;r?l=this.nodesById.get(this.resolveRowId(a,-1,`__missing_update_${this.core.nextId()}`)):l=this.all.find(d=>d.data===a),l&&(l.data=a,n.push(l.id),this.core.bodyRenderer.invalidateRowHeight(l),o.push(l))}if(e.add?.length){let a=e.addIndex!=null?Math.max(0,Math.min(e.addIndex,this.roots.length)):this.roots.length,l=[];e.add.forEach((d,c)=>{let u=this.resolveRowId(d,a+c,`add-${this.core.nextId()}`);if(this.nodesById.has(u)){this.core.reportError(new Error(`Duplicate row id: ${u}`),"transaction.add",{rowId:u});return}let h={id:u,data:d,rowIndex:-1,selected:!1};this.nodesById.set(u,h),this.treeDepth.set(h,0);let p=this.isTree?ae(d,this.core.options.childrenKey):void 0;if(p)for(let m of p)m!=null&&this.buildChildNodes(h,m,1);l.push(h)}),this.roots.splice(a,0,...l),this.reindexAll()}let s=this.transactionNeedsPipeline(e);return t&&(s?this.refreshPipeline():o.length>0&&this.emitIncrementalModelUpdate()),this.core.changeTracker.clearRows(n),{pipelineChanged:s,updatedRowIds:o.map(a=>a.id)}}applyTransactions(e){if(e.length===0)return{pipelineChanged:!1,updatedRowIds:[]};let t=!1,r=new Set;for(let o of e){let n=this.applyTransaction(o,!1);t||(t=n.pipelineChanged);for(let s of n.updatedRowIds)r.add(s)}return t?this.refreshPipeline():r.size>0&&this.emitIncrementalModelUpdate(),{pipelineChanged:t,updatedRowIds:[...r]}}transactionNeedsPipeline(e){return e.add?.length||e.remove?.length?!0:e.update?.length?this.isTree||this.core.options.masterDetail||this.core.columnModel.getRowGroupColumns().length>0||!this.core.options.manualFiltering&&this.isFilterPresent()||!this.core.options.manualSorting&&this.core.columnModel.getSortModel().length>0||this.core.options.getRowHeight?!0:this.core.columnModel.getOrderedVisible().some(t=>t.colDef.autoHeight===!0||t.colDef.autoRowSpan===!0||t.colDef.rowSpan!=null):!1}emitIncrementalModelUpdate(){this.core.emit("modelUpdated",{rowCount:this.pipelineRows.length})}buildChildNodes(e,t,r){let o=this.resolveRowId(t,-1,`add-${this.core.nextId()}`);if(this.nodesById.has(o)){this.core.reportError(new Error(`Duplicate row id: ${o}`),"transaction.add",{rowId:o});return}let n=ae(t,this.core.options.childrenKey),s={id:o,data:t,rowIndex:-1,selected:!1,treeChildrenLoaded:Array.isArray(n)};this.nodesById.set(o,s),this.treeDepth.set(s,r);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,r+1)}reindexAll(){this.all=[];let e=t=>{this.all.push(t),this.nodesById.has(t.id)||this.nodesById.set(t.id,t);for(let r of this.childIds.get(t.id)??[]){let o=this.nodesById.get(r);o&&e(o)}};for(let t of this.roots)e(t)}setFilterModel(e){let t=JSON.stringify(this.filterModel),r=new Set(this.core.columnModel.getColumns().map(o=>o.id));return this.filterModel=X(e,r),JSON.stringify(this.filterModel)!==t}getFilterModel(){return{...this.filterModel}}setAdvancedFilterModel(e){let t=new Set(this.core.columnModel.getColumns().map(n=>n.id)),r=L(e,t),o=JSON.stringify(this.advancedFilterModel);return this.advancedFilterModel=r,this.core.options.advancedFilterModel=r,JSON.stringify(r)!==o}getAdvancedFilterModel(){return L(this.advancedFilterModel)}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.advancedFilterModel!=null||this.quickFilter!=null}refreshPipeline(){let e=this.core.performanceMonitor.start(),t=this.core.columnModel.getOrderedVisible(),r=(s,a)=>this.core.getCellValue(s,a);if(this.isInfinite){this.refreshInfinitePipeline(e);return}if(this.startDataProcessorIfNeeded(e))return;let o;if(this.isTree)o=this.buildTreeDisplay(t,r);else{o=this.all,this.isFilterPresent()&&!this.core.options.manualFiltering&&(o=o.filter(d=>At(d,t,this.filterModel,this.advancedFilterModel,this.quickFilter,r)));let a=this.core.columnModel.getSortModel();if(a.length>0&&!this.core.options.manualSorting)try{o=Pt(o,a,t,r)}catch(d){this.core.reportError(d,"comparator",{sortModel:a})}let l=this.core.columnModel.getRowGroupColumns();if(l.length>0)o=this.buildGrouped(o,l);else if(this.core.options.masterDetail){let d=[];for(let c of o)d.push(c),this.expandedIds.has(c.id)&&this.isRowExpandable(c)&&d.push({id:`__detail__${c.id}`,data:c.data,rowIndex:-1,selected:!1,isDetail:!0,masterId:c.id});o=d}}for(let s of this.all)s.rowIndex=-1;let n=0;o.forEach((s,a)=>{s.rowIndex=a,!s.isDetail&&!s.isGroup&&(n++,this.rowSequence.set(s,n))}),this.pipelineRows=o,this.applyPagination(),this.computeSpans(r),this.core.emit("modelUpdated",{rowCount:o.length}),this.core.performanceMonitor.recordModel(e)}refreshInfinitePipeline(e){this.all.forEach((t,r)=>{this.isBlockDatasource||(t.rowIndex=r),this.rowSequence.set(t,this.isBlockDatasource?t.rowIndex+1:r+1)}),this.displayed=this.all,this.pipelineRows=this.all,this.spanInfo.clear(),this.displayRevision++,this.core.emit("modelUpdated",{rowCount:this.all.length}),this.core.performanceMonitor.recordModel(e)}startDataProcessorIfNeeded(e){let t=this.skipDataProcessorOnce;return this.skipDataProcessorOnce=!1,!t&&this.shouldUseDataProcessor()?(this.refreshWithDataProcessor(e),!0):(this.cancelDataProcessor(),!1)}shouldUseDataProcessor(){if(!this.core.options.dataProcessor||this.all.length<this.core.options.dataProcessorMinRows||this.isTree||this.core.options.masterDetail||this.core.columnModel.getRowGroupColumns().length>0)return!1;let e=!this.core.options.manualFiltering&&this.isFilterPresent(),t=!this.core.options.manualSorting&&this.core.columnModel.getSortModel().length>0;return e||t}refreshWithDataProcessor(e){this.cancelDataProcessor();let t=this.core.options.dataProcessor;if(!t)return;let r=++this.dataProcessorSeq,o=new AbortController;this.dataProcessorAbort=o;let n=this.core.columnModel.getOrderedVisible(),s=this.all.flatMap(d=>d.data==null?[]:[{id:d.id,data:d.data}]),a=!this.core.options.manualFiltering,l=!this.core.options.manualSorting;Promise.resolve().then(()=>t.process({rows:s,columns:n.map(d=>({colId:d.id,...d.colDef.field?{field:d.colDef.field}:{}})),sortModel:l?this.core.columnModel.getSortModel():[],filterModel:a?this.getFilterModel():{},advancedFilterModel:a?this.getAdvancedFilterModel():null,quickFilterText:a?this.quickFilter:null,signal:o.signal})).then(d=>{if(r!==this.dataProcessorSeq||o.signal.aborted||this.core.isDestroyed())return;let c=new Set,u=[];for(let p of d.rowIds){if(c.has(p))continue;c.add(p);let m=this.nodesById.get(p);m&&!m.isDetail&&!m.isGroup&&u.push(m)}for(let p of this.all)p.rowIndex=-1;u.forEach((p,m)=>{p.rowIndex=m,this.rowSequence.set(p,m+1)}),this.pipelineRows=u,this.applyPagination();let h=(p,m)=>this.core.getCellValue(p,m);this.computeSpans(h),this.core.emit("modelUpdated",{rowCount:u.length}),this.core.performanceMonitor.recordModel(e),this.core.requestUpdate({data:!0})}).catch(d=>{r!==this.dataProcessorSeq||o.signal.aborted||this.core.isDestroyed()||(this.core.reportError(d,"dataProcessor.process"),this.skipDataProcessorOnce=!0,this.refreshPipeline(),this.core.requestUpdate({data:!0}))}).finally(()=>{r===this.dataProcessorSeq&&(this.dataProcessorAbort=null)})}cancelDataProcessor(){this.dataProcessorSeq++,this.dataProcessorAbort?.abort(),this.dataProcessorAbort=null}get paginationActive(){return this.core.options.paginationEnabled&&!this.isInfinite}applyPagination(){if(!this.paginationActive){this.displayed=this.pipelineRows,this.displayRevision++;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,this.displayRevision++;return}let r=(this.page-1)*e,o=this.pipelineRows.slice(r,r+e);o.forEach((n,s)=>{n.rowIndex=s}),this.displayed=o,this.displayRevision++}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 r=this.getPageCount(),o=Math.max(1,Math.min(Math.round(e)||1,r));o!==this.page&&(this.page=o,this.core.options.paginationPage=o,this.applyPagination(),this.core.requestUpdate({data:!0}),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()),r=(this.page-1)*this.effectivePageSize();this.core.options.paginationPageSize=t,this.pageSize=t,this.page=Math.floor(r/t)+1,this.core.options.paginationPage=this.page,this.applyPagination(),this.core.requestUpdate({data:!0}),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.requestUpdate({data:!0}),this.emitPaginationChanged())}onPaginationOptionsChanged(){this.paginationActive&&(this.page=this.core.options.paginationMode==="server"?this.core.options.paginationPage:1,this.applyPagination(),this.core.requestUpdate({data:!0}),this.emitPaginationChanged())}emitPaginationChanged(){this.core.emit("paginationChanged",{page:this.getCurrentPage(),pageSize:this.effectivePageSize(),pageCount:this.getPageCount(),total:this.getTotalRowCount()})}buildTreeDisplay(e,t){let r=this.core.options.manualSorting?[]:this.core.columnModel.getSortModel(),o=new Map,n=this.isFilterPresent()&&!this.core.options.manualFiltering,s=d=>{let c=o.get(d.id);if(c!==void 0)return c;let u=!0;if(n){u=At(d,e,this.filterModel,this.advancedFilterModel,this.quickFilter,t);for(let h of this.childIds.get(d.id)??[]){let p=this.nodesById.get(h);p&&s(p)&&(u=!0)}}return o.set(d.id,u),u},a=[],l=d=>{let c=d;r.length>0&&(c=Pt(d,r,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 r=this.mastersBuf,o=0;for(let s of this.displayed)!s.isDetail&&!s.isGroup&&(r[o++]=s);r.length=o;let n=o;if(n!==0)for(let s of t){let a=new Int32Array(n),l=0;for(;l<n;){let d=r[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(r[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 r=xe(this.core.options.aggFuncs),o=this.core.columnModel.getAggColumns();this.knownGroupIds=[];let n=a=>{let l={};for(let d of o){let c=r(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 r=this.core.options.isTreeRowExpandable;if(!r)return!1;try{return r({data:e.data,node:e,api:this.core.getApi()})}catch(o){return this.core.reportError(o,"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(r){return this.core.reportError(r,"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(r=>this.nodesById.has(r))),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 r=this.nodesById.get(e);return!r||t&&!this.isRowExpandable(r)?!1:(t===this.expandedIds.has(e)||(t?this.expandedIds.add(e):this.expandedIds.delete(e),this.refreshPipeline(),this.core.requestUpdate({data:!0}),this.core.emit("detailToggled",{rowId:e,rowNode:r,expanded:t}),t&&this.isTree&&!this.hasChildren(e)&&!r.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.requestUpdate({data:!0}))}collapseAllDetails(){this.expandedIds.size!==0&&(this.expandedIds.clear(),this.refreshPipeline(),this.core.requestUpdate({data:!0}))}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.requestUpdate({data:!0}))}collapseAllGroups(){this.groupExpandedIds.size!==0&&(this.groupExpandedIds.clear(),this.refreshPipeline(),this.core.requestUpdate({data:!0}))}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.requestUpdate({data:!0})),t}reorderRowsByDisplayed(e,t){if(this.isTree)return!1;let r=this.getDisplayedRow(e),o=this.getDisplayedRow(t);if(!r||!o||r.isDetail||o.isDetail||r.isGroup||o.isGroup)return!1;let n=this.all.indexOf(r),s=this.all.indexOf(o);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(o);return this.all.splice(s>n?a+1:a,0,r),this.refreshPipeline(),this.core.requestUpdate({data:!0}),!0}getAllNodes(){return this.all}getRootNodes(){return this.roots}getDisplayedRows(){return this.displayed}getDisplayedRowCount(){return this.isBlockDatasource?this.resolveBlockRowCount():this.displayed.length}getDisplayedRow(e){return this.isBlockDatasource?e<0||e>=this.resolveBlockRowCount()?void 0:this.blockNodes.get(e)??this.blockPlaceholder(e):this.displayed[e]}getNodeById(e){return this.nodesById.get(e)}forEachNode(e){this.all.forEach(e)}forEachNodeAfterFilterAndSort(e){let t=0;for(let r of this.pipelineRows)r.isDetail||r.isGroup||e(r,t++)}};var Ae=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){if(e.loading)return!1;let t=this.findSelectableColumn(e),r=t?.colDef.selectable;if(!t||!r)return!0;try{return r({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:e.rowIndex})}catch(o){return this.core.reportError(o,"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),r=this.core.rowModel.getAllNodes().filter(o=>t.has(o.id)&&!o.isDetail&&!o.isGroup).map(o=>({node:o,selected:!0}));this.applySelection(r,!0)}onRowsRebuilt(e){if(!e)this.selectedIds.clear(),this.anchorId=null;else{let t=new Set(this.core.rowModel.getAllNodes().map(r=>r.id));for(let r of[...this.selectedIds])t.has(r)||this.selectedIds.delete(r);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 r=0,o=0;for(let n of t)this.isSelectable(n)&&(r++,this.selectedIds.has(n.id)&&o++);return r===0?{all:!1,some:!1}:{all:o===r,some:o>0}}setGroupSelected(e,t){let r=(e.leafNodes??[]).filter(o=>this.isSelectable(o));r.length!==0&&this.applySelection(r.map(o=>({node:o,selected:t})))}setNodeSelected(e,t,r=!1){this.applySelection([{node:e,selected:t,clearOthers:r}])}selectNodeById(e,t=!0,r=!0){let o=this.core.rowModel.getNodeById(e);o&&this.setNodeSelected(o,t,r)}onRowClick(e,t,r){let o=this.core.options.rowSelection;if(o==="none"||!this.isSelectable(e))return;if(r){let s=o==="single";this.applySelection([{node:e,selected:s?!0:!e.selected,clearOthers:s}]),this.anchorId=e.id;return}let n=o==="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 o=(e?this.core.rowModel.getDisplayedRows():this.core.rowModel.getAllNodes()).filter(n=>!n.isDetail&&!n.isGroup&&this.isSelectable(n));if(o.length!==0){if(t==="single"){this.applySelection([{node:o[0],selected:!0,clearOthers:!0}]);return}this.applySelection(o.map(n=>({node:n,selected:!0})))}}deselectAll(){this.applySelection([],!0)}isSelectAllActive(){let t=this.core.rowModel.getDisplayedRows().filter(r=>!r.isDetail&&!r.isGroup).filter(r=>this.isSelectable(r));if(t.length===0)return!1;if(this.core.rowModel.isInfinite){let r=this.core.rowModel.getDisplayTotalCount();if(t.length<r)return!1}return t.every(r=>this.selectedIds.has(r.id))}isSelectAllIndeterminate(){let t=this.core.rowModel.getDisplayedRows().filter(o=>!o.isDetail&&!o.isGroup).filter(o=>this.isSelectable(o)),r=t.reduce((o,n)=>o+(this.selectedIds.has(n.id)?1:0),0);if(r===0)return!1;if(this.core.rowModel.isInfinite){let o=this.core.rowModel.getDisplayTotalCount();if(t.length<o)return!0}return r>0&&r<t.length}applySelectionPublic(e,t=!1){this.applySelection(e,t)}applySelection(e,t=!1){let r=new Set(this.selectedIds),o=t||e.some(u=>u.clearOthers),n=this.core.rowModel.isTree&&this.core.options.autoCheckedChildren;if(o){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([...r,...this.selectedIds]))r.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],r=o=>{for(let n of this.core.rowModel.getChildrenIds(o))t.push(n),r(n)};return r(e.id),t}recomputeTriState(){if(this.indeterminateIds.clear(),!this.core.rowModel.isTree)return;let e=t=>{let r=this.core.rowModel.getChildrenIds(t);if(r.length===0)return{all:this.selectedIds.has(t),some:this.selectedIds.has(t)};let o=!0,n=!1;for(let s of r){let a=e(s);a.all?n=!0:(a.some&&(n=!0),o=!1)}return n&&!o&&this.indeterminateIds.add(t),o?this.selectedIds.add(t):this.selectedIds.delete(t),{all:o,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)}};var Pe=class{constructor(e){this.core=e;this.active=null;this.rafId=0;this.pendingWidth=0;this.onMove=e=>{let t=this.matchActivePointer(e);t&&(this.pendingWidth=this.widthFromPointer(t,e.clientX),t.didResize||(t.didResize=Math.abs(this.pendingWidth-t.startWidth)>=.5),!this.rafId&&(this.rafId=requestAnimationFrame(()=>{this.rafId=0,this.applyPendingWidth()})))};this.onUp=e=>{let t=this.matchActivePointer(e);t&&(this.pendingWidth=this.widthFromPointer(t,e.clientX),t.didResize||(t.didResize=Math.abs(this.pendingWidth-t.startWidth)>=.5),this.finishResize(t))};this.onCancel=e=>{this.matchActivePointer(e)&&this.cancelResize()};this.onLostPointerCapture=()=>{this.cancelResize()}}startResize(e,t){if(!this.core.options.enableColumnResize||!t.resizable||e.isPrimary===!1)return;this.cancelResize();let r=e.currentTarget,o=t.currentWidth;this.pendingWidth=o,this.active={column:t,didResize:!1,handle:r,pointerId:e.pointerId,startFlex:t.flex,startManualWidth:t.manualWidth,startWidth:o,startX:e.clientX},window.addEventListener("pointermove",this.onMove),window.addEventListener("pointerup",this.onUp,!0),window.addEventListener("pointercancel",this.onCancel,!0),r.addEventListener("lostpointercapture",this.onLostPointerCapture);try{r.setPointerCapture?.(e.pointerId)}catch{}this.core.skeleton.root.classList.add("mach-root--resizing")}cancelResize(e=!0){let t=this.active;t&&(this.active=null,this.clearFrame(),this.removeListeners(t),e&&(t.column.manualWidth=t.startManualWidth,t.column.flex=t.startFlex,this.core.relayoutColumns()),this.core.skeleton.root.classList.remove("mach-root--resizing"))}finishResize(e){this.active=null,this.clearFrame(),e.didResize&&(Math.abs(this.pendingWidth-e.startWidth)<.5?(e.column.manualWidth=e.startManualWidth,e.column.flex=e.startFlex):this.core.columnModel.setColumnWidth(e.column,this.pendingWidth),this.core.relayoutColumns()),this.removeListeners(e);try{e.handle.releasePointerCapture?.(e.pointerId)}catch{}this.core.skeleton.root.classList.remove("mach-root--resizing"),e.didResize&&this.core.commitColumnWidths([e.column])}applyPendingWidth(){let e=this.active;!e||!this.core.columnModel.setColumnWidth(e.column,this.pendingWidth)||(this.core.relayoutColumns(),this.core.emitColumnResize(e.column,!1))}widthFromPointer(e,t){let r=Number.isFinite(t)?t:e.startX;return e.startWidth+r-e.startX}matchActivePointer(e){let t=this.active;return t&&e.pointerId===t.pointerId?t:null}clearFrame(){this.rafId&&cancelAnimationFrame(this.rafId),this.rafId=0}removeListeners(e){window.removeEventListener("pointermove",this.onMove),window.removeEventListener("pointerup",this.onUp,!0),window.removeEventListener("pointercancel",this.onCancel,!0),e.handle.removeEventListener("lostpointercapture",this.onLostPointerCapture)}destroy(){this.cancelResize(!1),this.clearFrame(),this.core.skeleton.root?.classList.remove("mach-root--resizing")}};function g(i,e,t){let r=document.createElement(i);if(e&&(r.className=e),t)for(let o of Object.keys(t))r.setAttribute(o,t[o]);return r}function M(i,e,t){return i<e?e:i>t?t:i}var Tr='<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>',Dr='<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor"><path d="M8 3l4 5H4l4-5z"/></svg>',Er='<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor"><path d="M8 13l4-5H4l4 5z"/></svg>';var Sr=6,Le=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)<Sr&&Math.abs(e.clientY-t.startY)<Sr||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 r=this.findHeaderCell(t.column);if(!r||!r.parentElement){this.cleanup();return}this.suppressClick=!0;let o=g("div","mach-drop-indicator");r.parentElement.appendChild(o),r.classList.add("mach-header-cell--dragging"),this.core.skeleton.root.classList.add("mach-root--dragging"),this.dragging={column:t.column,cellEl:r,indicator:o,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="${ki(e.id)}"]`)}updateIndicator(e){let t=this.dragging;if(!t)return;let r=this.core.bodyRenderer.paneForColumn(t.column),n=this.core.skeleton.headerRowContainers[r].getBoundingClientRect(),s=this.core.columnModel.getPaneColumns(r),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 ki(i){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(i):i.replace(/[^a-zA-Z0-9_-]/g,"\\$&")}function xr(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 Gt(i,e={}){let t=e.columnSeparator??",",r=e.includeHeader??!0,o=e.protectFormulas??!0,n=[];r&&n.push(i.getHeaderLabels().map(a=>xr(a,t)).join(t));for(let a of i.getRowValues())n.push(a.map(l=>xr(o?le(l):l,t)).join(t));let s=n.join(`\r
3
- `);return e.prependBOM?"\uFEFF"+s:s}function Ii(i,e){let t=e?le(i):i,r=t==null?"":String(t);return/["\t\n\r]/.test(r)?'"'+r.replace(/"/g,'""')+'"':r}function ee(i,e=!0){return i.map(t=>t.map(r=>Ii(r,e)).join(" ")).join(`
4
- `)}function Ge(i){return Ne(i," ")}function Fe(i,e=","){return Ne(i,e)}function Ne(i,e){let t=[],r=[],o="",n=!1,s=0;for(;s<i.length;){let a=i[s];if(n){if(a==='"'){if(i[s+1]==='"'){o+='"',s+=2;continue}n=!1,s++;continue}o+=a,s++;continue}if(a==='"'&&o===""){n=!0,s++;continue}if(a===e){r.push(o),o="",s++;continue}if(a===`
5
- `||a==="\r"){r.push(o),t.push(r),r=[],o="",a==="\r"&&i[s+1]===`
6
- `?s+=2:s++;continue}o+=a,s++}return(o!==""||r.length>0)&&(r.push(o),t.push(r)),t}function Ai(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 Ai(i)}var Pi=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Enter","F2","Home","End","PageUp","PageDown","Tab"," ","Escape","Delete","Backspace"]),Li=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown"]),Oe=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 r=this.core.buildRangeTsv(t),o=e.clipboardData;o&&typeof o.setData=="function"?o.setData("text/plain",r):de(r),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 r=this.core.buildRangeTsv(t),o=e.clipboardData;o&&typeof o.setData=="function"?o.setData("text/plain",r):de(r),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 r=e.clipboardData,o=r&&typeof r.getData=="function"?r.getData("text/plain"):null;typeof o!="string"||o===""||(e.preventDefault(),this.core.pasteText(o,t.row,t.colIdx))};this.onKeyDown=e=>{this.core.isDestroyed()||this.core.editingService.isEditing()||this.handleSelectAll(e)||this.handleHistoryShortcut(e)||Pi.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,r){let o=this.core.columnModel.getOrderedVisible(),n=o.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<(o.length+1)*(s+1);d++){if(a+=r,a>=o.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=o.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,o[a]))return{rowIndex:l,column:o[a]}}return null}skipDetailRows(e,t){let r=this.core.rowModel.getDisplayedRowCount(),o=0;for(;e>=0&&e<r;){let n=this.core.rowModel.getDisplayedRow(e);if(!n||!n.isDetail)return e;if(e+=t,o++,o>r+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 r=t.normalizedRange();return r&&!(r.r1===r.r2&&r.c1===r.c2)&&(e.preventDefault(),this.core.clearRangeValues(r)),!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,r=t.focusedCell;if(!r)return;let o=this.core.columnModel.getOrderedVisible(),n=o.findIndex(c=>c.id===r.colId),s=this.core.rowModel.getDisplayedRowCount();if(n<0||s===0)return;let a={row:r.rowIndex,colIdx:n},l=this.resolveKeyPosition(e,a,o,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,o[l.colIdx].id)}resolveKeyPosition(e,t,r,o){return Li.has(e.key)?this.movePosition(e,t,r.length,o):e.key==="Enter"||e.key==="F2"?this.activateEditor(e,t,r,o):e.key===" "?(this.toggleFocusedRow(t.row),t):e.key==="Tab"?this.moveToEditable(e,t,r):null}movePosition(e,t,r,o){let{row:n,colIdx:s}=t;switch(e.key){case"ArrowUp":n=this.validSkippedRow(n,this.skipDetailRows(n-1,-1),o);break;case"ArrowDown":n=this.validSkippedRow(n,this.skipDetailRows(n+1,1),o);break;case"ArrowLeft":s=Math.max(0,s-1);break;case"ArrowRight":s=Math.min(r-1,s+1);break;case"Home":s=0,e.ctrlKey&&(n=0);break;case"End":s=r-1,e.ctrlKey&&(n=Math.max(0,this.skipDetailRows(o-1,-1)));break;case"PageUp":case"PageDown":n=this.movePage(e.key,n,o);break}return{row:n,colIdx:s}}validSkippedRow(e,t,r){return t>=0&&t<r?t:e}movePage(e,t,r){let o=this.core.skeleton.bodyViewports.center,n=Math.max(1,Math.floor(o.clientHeight/this.core.options.rowHeight)),s=e==="PageUp"?-1:1,a=Math.max(0,Math.min(r-1,t+n*s));return this.validSkippedRow(t,this.skipDetailRows(a,s),r)}activateEditor(e,t,r,o){let n=this.core.rowModel.getDisplayedRow(t.row),s=r[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,o)}}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,r){let o=this.nextEditable(t.row,r[t.colIdx].id,e.shiftKey?-1:1);return o?(this.core.bodyRenderer.setFocusedCell(o.rowIndex,o.column.id),this.core.editingService.start(o.rowIndex,o.column),t):null}};function Ft(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 Gi(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 Nt(i,e,t){let r=i.colDef,o=typeof r.cellEditor=="string"?r.cellEditor:Gi(e,r.cellEditorParams?.values);if(o==="number"){let s=Ft("number",e);return{el:s,getValue:()=>s.value===""?null:Number(s.value),focus:()=>{s.focus(),s.select()}}}if(o==="date"){let s=Ft("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(o==="select"){let s=r.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=Ft("text",e);return t&&t.length===1&&(n.value=t),{el:n,getValue:()=>n.value,focus:()=>{n.focus(),n.select()}}}var Ot=new WeakMap,He=new WeakMap,Be=new WeakMap;function ce(i){let e=Ot.get(i);return e||(e={},Ot.set(i,e)),e}function Ht(i){return Ot.get(i)}function Mr(i,e){e?He.set(i,e):He.delete(i)}function kr(i){let e=He.get(i);return He.delete(i),e}function Ir(i,e){e?Be.set(i,e):Be.delete(i)}function Bt(i){let e=Be.get(i);return Be.delete(i),e}function Ve(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 S(i,e){let t=Ht(e);if(!t)return;t.flashTimer&&clearTimeout(t.flashTimer),t.flashTimer=void 0;let r=t.destroy;if(t.destroy=void 0,t.refresh=void 0,t.rendererDefinition=void 0,t.rendererRowId=void 0,t.rendererColumnId=void 0,!!r)try{r()}catch(o){i.reportError(o,"cellRenderer.destroy",{colId:e.dataset.colId})}}function Ar(i,e,t,r,o,n){let s=i.options.tooltipComponent?"":n,a=r.colDef.tooltipValueGetter;if(a)try{s=a({api:i.getApi(),colDef:r.colDef,column:r,node:t,data:t.data,value:o})??n}catch(l){i.reportError(l,"tooltipValueGetter",{colId:r.id,rowId:t.id})}s?e.setAttribute("title",s):e.removeAttribute("title")}function Fi(i,e,t,r,o,n){let s=Ht(e);if(!s?.refresh||s.rendererDefinition!==o||s.rendererRowId!==t.id||s.rendererColumnId!==r.id)return!1;try{return e.querySelector(":scope > .mach-cell-edit-trigger")?.remove(),s.refresh(n)!==!1}catch(a){return i.reportError(a,"cellRenderer.refresh",{colId:r.id,rowId:t.id}),!1}}function O(i,e,t){let r=i.getCellValue(e,t),o=t.colDef.valueFormatter;if(o)try{let n=o({api:i.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:r});return n==null?"":String(n)}catch(n){i.reportError(n,"valueFormatter",{colId:t.id,rowId:e.id})}return Ve(r)}function ue(i,e,t,r){let o=t.colDef.valueFormatter;if(o)try{let n=o({api:i.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:r});return n==null?"":String(n)}catch(n){i.reportError(n,"valueFormatter",{colId:t.id,rowId:e.id})}return Ve(r)}function ze(i,e,t,r){let o=r.colDef.cellStyle,n=ce(e),s=n.styleKeys;if(s)for(let d of s)Reflect.set(e.style,d,"");if(!o){n.styleKeys=void 0;return}let a;if(typeof o=="function"){let d=i.getCellValue(t,r);try{a=o({api:i.getApi(),colDef:r.colDef,column:r,node:t,data:t.data,value:d,rowIndex:t.rowIndex})}catch(c){i.reportError(c,"cellStyle",{colId:r.id,rowId:t.id}),a=null}}else a=o;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 _e(i,e,t,r){let o=i.getCellValue(t,r),n=O(i,t,r),s=r.colDef.cellRenderer,a=typeof s=="string"?i.resolveCellRenderer(s):s;if(a){let l={api:i.getApi(),colDef:r.colDef,column:r,node:t,data:t.data,value:o,formatted:n,rowIndex:t.rowIndex,rendererParams:r.colDef.cellRendererParams};if(Fi(i,e,t,r,a,l)){Ar(i,e,t,r,o,n);return}S(i,e);let d;try{d=a(l)}catch(c){i.reportError(c,"cellRenderer",{colId:r.id,rowId:t.id}),e.textContent=n;return}if(typeof d=="string")e.textContent=d;else if(d instanceof HTMLElement)e.replaceChildren(d);else if(d&&typeof d=="object"&&d.el instanceof HTMLElement){let c=d;e.replaceChildren(c.el);let u=ce(e);u.destroy=c.destroy,c.refresh&&(u.refresh=h=>c.refresh(h),u.rendererDefinition=a,u.rendererRowId=t.id,u.rendererColumnId=r.id)}else e.textContent=""}else S(i,e),e.textContent=n;Ar(i,e,t,r,o,n)}function he(i,e,t,r){let o=i.getCellValue(t,r),n=["mach-cell"],s=r.colDef.align;s==="center"?n.push("mach-cell--center"):s==="right"?n.push("mach-cell--right"):(Q(r.colDef,"rightAligned")||Q(r.colDef,"numericColumn")||typeof o=="number"&&o!=null)&&n.push("mach-cell--num");let a=r.colDef.cellClass;if(a)if(typeof a=="function"){let u={api:i.getApi(),colDef:r.colDef,column:r,node:t,data:t.data,value:o,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:r.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"),r.colDef.wrapText&&n.push("mach-cell--wrap");let c=n.join(" ");e.className!==c&&(e.className=c)}var Ni='<path d="M3 8.5 6.4 12 13.5 4"/>',Oi='<path d="m4 4 8 8m0-8-8 8"/>';function Pr(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"?Ni:Oi}</svg>`,t.addEventListener("mousedown",r=>{r.preventDefault(),r.stopPropagation()}),t}var We=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,r=this.core.keyboardService.nextEditable(t.rowIndex,t.column.id,e.shiftKey?-1:1);this.stopAsync(!1).then(o=>{o&&r&&(this.core.bodyRenderer.scrollToIndex(r.rowIndex,"nearest"),this.core.bodyRenderer.setFocusedCell(r.rowIndex,r.column.id),this.start(r.rowIndex,r.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 r=t.colDef.editable;if(!r)return!1;if(typeof r=="function")try{return r({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:e.rowIndex})}catch(o){return this.core.reportError(o,"editable",{colId:t.id,rowId:e.id}),!1}return!0}start(e,t,r){if(this.core.options.editType==="fullRow")return this.startRow(e,t.id);if(this.cellEditing||this.rowEditing)return!1;let o=this.core.rowModel.getDisplayedRow(e);if(!o||o.data==null||!this.isEditable(o,t))return!1;let n=this.core.bodyRenderer.getCellElement(e,t.id);if(!n)return!1;let s=this.core.getCellValue(o,t),a=this.createCellEditor(o,t,e,s,r);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=Pr("confirm","Confirm edit"),u=Pr("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:o,column:t,editor:a,rowIndex:e,oldValue:s,cell:n,shell:l,keydown:h,confirmButton:c,cancelButton:u},this.focusEditor(a,t,o),this.core.emit("cellEditingStarted",{rowIndex:e,colId:t.id,rowNode:o}),!0}startRow(e,t){if(this.cellEditing||this.rowEditing)return!1;let r=this.core.rowModel.getDisplayedRow(e);if(!r||r.data==null||r.isDetail||r.isGroup)return!1;let o=new Map;for(let l of this.core.columnModel.getOrderedVisible()){if(!this.isEditable(r,l))continue;let d=this.core.getCellValue(r,l);o.set(l.id,{column:l,oldValue:d,value:d,mounted:null})}if(o.size===0)return!1;let n={node:r,rowIndex:e,drafts:o,validating:!1};if(this.rowEditing=n,this.core.bodyRenderer.refreshRows([e]),o.size===0)return this.rowEditing=null,this.core.bodyRenderer.refreshRows([e]),!1;let s=o.values().next().value,a=(t?o.get(t):void 0)??s;return a?.mounted&&this.focusEditor(a.mounted.editor,a.column,r),this.core.emit("rowEditingStarted",{rowIndex:e,rowNode:r,data:r.data}),!0}renderEditor(e,t,r,o){if(this.cellEditing)return this.cellEditing.node===t&&this.cellEditing.column.id===r.id;let n=this.rowEditing;if(!n||n.node!==t)return!1;let s=n.drafts.get(r.id);return s?s.mounted?.cell!==o&&(s.mounted&&this.unmountRowDraft(s),!this.mountRowDraft(e,n,s,o))?(n.drafts.delete(r.id),!1):!0:!1}releaseCell(e,t,r){let o=this.rowEditing;if(o&&this.currentRowIndex(o)===e){let n=o.drafts.get(t);n?.mounted?.cell===r&&this.unmountRowDraft(n);return}if(this.cellEditing?.cell===r){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 r;try{r=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?.(r))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 o=this.validateValue(t.node,t.column,t.oldValue,r);if(o&&typeof o.then=="function"){let n=++this.stopToken;this.setCellBusy(t,!0);let s=Promise.resolve(o).then(a=>n!==this.stopToken||this.cellEditing!==t?!1:typeof a=="string"?(this.showError(t.editor,a),!1):this.finishCellStop(t,!1,r)).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 o=="string"?(this.showError(t.editor,o),Promise.resolve(!1)):Promise.resolve(this.finishCellStop(t,!1,r))}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 r=[...t.drafts.values()].filter(s=>!Object.is(s.oldValue,s.value));if(r.length===0)return Promise.resolve(this.finishRowStop(t,!1));let o=++this.stopToken;for(let s of r)s.error=void 0;t.validating=!0,this.setRowBusy(t,!0);let n=Promise.all(r.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(o!==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,r);return o!==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,r){if(this.cellEditing!==e)return!1;this.cellEditing=null;let o=!t&&this.applyValue(e.node,e.column,e.oldValue,r);return this.destroyMountedEditor(e,!0),this.core.emit("cellEditingStopped",{rowIndex:e.rowIndex,colId:e.column.id,rowNode:e.node,oldValue:e.oldValue,newValue:o?r: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 r=t?[]:this.commitRowDrafts(e);if(r==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 o=this.currentRowIndex(e);return this.core.emit("rowEditingStopped",{rowIndex:o,rowNode:e.node,data:e.node.data,cancelled:t,changes:r}),o>=0&&this.core.bodyRenderer.refreshRows([o]),this.core.summaryRenderer.refresh(),this.core.statusBarService.refresh(),!0}commitRowDrafts(e){let t=[...e.drafts.values()].filter(o=>!Object.is(o.oldValue,o.value));if(t.length===0)return[];let r=[];this.core.undoService.beginBatch();for(let o of t){if(!this.core.writeValue(e.node,o.column,o.value,o.oldValue)){let n=!1;for(let s of[...r].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:o.column.id}),this.showRowErrors(e,[{draft:o,message:"Value was rejected by the column setter"}]),null}r.push(o)}for(let o of r)this.core.notifyCellValueChanged(e.node,o.column,o.oldValue,o.value);return this.core.undoService.endBatch(),r.map(o=>({colId:o.column.id,oldValue:o.oldValue,newValue:o.value}))}mountRowDraft(e,t,r,o){let n=this.createCellEditor(t.node,r.column,e,r.value,null);if(!n)return!1;S(this.core,o);let s=document.createElement("div");s.className="mach-row-editor-shell",s.appendChild(n.el),o.replaceChildren(s),o.classList.add("mach-cell--editing","mach-cell--row-editing"),o.removeAttribute("title");let a=d=>this.onRowEditorKeyDown(d,t,r),l=()=>{try{r.value=n.getValue(),r.error=void 0}catch{}};return n.el.addEventListener("keydown",a),n.el.addEventListener("input",l),r.mounted={editor:n,cell:o,shell:s,keydown:a,input:l},r.error&&this.showError(n,r.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,r,o,n){let s=t.colDef,a;try{let l={api:this.core.getApi(),colDef:s,column:t,node:e,data:e.data,value:o,rowIndex:r,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)??Nt(t,o,n):a=Nt(t,o,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,r,o){let n=t.colDef.validate;if(!n)return!0;try{return n(o,{oldValue:r,newValue:o,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 r=this.core.options.rowEditValidator;if(!r)return[];let o=Object.create(null);for(let[l,d]of e.drafts)o[l]=d.value;let n=t.map(l=>({colId:l.column.id,oldValue:l.oldValue,newValue:l.value})),s;try{s=await r({data:e.node.data,node:e.node,values:o,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:r,message:o}of t)r.error=o,r.mounted&&this.showError(r.mounted.editor,o);t[0].draft.mounted?.editor.focus?.()}showError(e,t){let r=e.el;r.classList.add("mach-editor-invalid"),r.setAttribute("title",t),r.setAttribute("aria-invalid","true"),r.classList.remove("mach-editor-validating"),r.removeAttribute("aria-busy"),r.inert=!1,(r.querySelector("input, select, textarea")??r).focus?.();let n=()=>{r.classList.remove("mach-editor-invalid"),r.removeAttribute("title"),r.removeAttribute("aria-invalid")};r.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 r of e.drafts.values()){let o=r.mounted?.editor.el;o&&(o.classList.toggle("mach-editor-validating",t),t?o.setAttribute("aria-busy","true"):o.removeAttribute("aria-busy"),o.inert=t)}}applyValue(e,t,r,o){return o===void 0?!1:this.core.setCellValue(e,t,o,r)}focusEditor(e,t,r){try{e.focus?.()}catch(o){this.core.reportError(o,"cellEditor.focus",{colId:t.id,rowId:r.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(r){this.core.reportError(r,"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,r){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(r);let o=[...t.drafts.values()],n=o.indexOf(r),s=e.shiftKey?-1:1;for(let a=1;a<=o.length;a++){let l=o[(n+s*a+o.length)%o.length];if(l.mounted){this.focusEditor(l.mounted.editor,l.column,t.node);break}}}destroy(){(this.cellEditing||this.rowEditing)&&this.stopAsync(!0)}};var D={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"},Lr={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"},Hi={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 qe(i){return Hi[i]??"matchEquals"}function I(i,e){return i.replace("{n}",String(e))}function $e(i,e,t){return i.replace("{a}",String(e)).replace("{b}",String(t))}var Bi=["contains","notContains","equals","notEquals","startsWith","endsWith","blank","notBlank"],Vi=["equals","notEquals","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","inRange","blank","notBlank"],zi=["equals","notEquals","lessThan","greaterThan","inRange","blank","notBlank"],Ue=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 r=this.core.rowModel.getFilterModel()[e.id]??null,o=r?.type??e.filterType,n=g("div","mach-filter-panel");n.setAttribute("role","dialog"),n.setAttribute("aria-label",`${e.id} filter`),o==="set"?this.buildSetBody(n,e,r):this.buildConditionBody(n,e,o,r);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=M(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,r,o){let n=r==="text"?Bi:r==="number"?Vi:zi,s=o&&o.type!=="set"&&o.conditions.length>0?o.conditions[0]:null,a=s?.match??(r==="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(qe(m)),d.appendChild(f)}d.value=a;let c=g("input","mach-filter-input");r==="number"&&(c.type="number"),r==="date"&&(c.type="date"),s&&s.value!=null&&!l&&(c.value=r==="date"?String(s.value).slice(0,10):String(s.value));let u=g("input","mach-filter-input mach-filter-input--second");r==="number"&&(u.type="number"),r==="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=r}buildSetBody(e,t,r){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),E=C==null?"__null__":String(C);f.has(E)||(f.add(E),s.push(C))}}let a=new Set(r?.type==="set"?r.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 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 H=g("span");H.textContent=w,E.append(R,H),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 r=e.querySelector(".mach-filter-select"),o=e.querySelectorAll(".mach-filter-input"),n=o[0],s=o[1];if(!r||!n)return null;let a=r.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 Ke=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 o=this.core.skeleton.root.getBoundingClientRect(),n=document.createElement("div");return n.style.position="fixed",n.style.left=`${o.right-16}px`,n.style.top=`${o.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 r=this.core.getApi(),o=g("div","mach-filter-panel mach-column-panel");o.setAttribute("role",e?"menu":"dialog"),e||(o.setAttribute("aria-modal","false"),o.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"),o.appendChild(n),e&&e.sortable){let R=g("div","mach-column-panel-actions"),H=(j,lr)=>{let ye=g("button","mach-column-panel-btn");return ye.type="button",ye.textContent=this.core.getLocaleText(j),ye.addEventListener("click",()=>{r.sorting.setModel(lr?[{colId:e.id,direction:lr}]:[]),this.close()}),ye};R.append(H("sortAsc","asc"),H("sortDesc","desc"),H("clearSort",null)),o.appendChild(R)}let s=g("div","mach-column-panel-actions"),a=(R,H)=>{let j=g("button","mach-column-panel-btn");return j.type="button",j.textContent=this.core.getLocaleText(R),j.addEventListener("click",()=>{e&&r.columns.setPinned(e.id,H),this.close()}),j};e&&(s.append(a("pinLeft","left"),a("pinRight","right"),a("clearPin",null)),o.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?r.columns.autoSize(e.id):r.columns.autoSizeAll(),this.close()});let c=g("button","mach-column-panel-btn");c.type="button",c.textContent=this.core.getLocaleText("hideColumn"),c.addEventListener("click",()=>{e&&r.columns.setVisible(e.id,!1),this.close()}),e&&(l.append(d,c),o.appendChild(l));let u=g("div","mach-column-panel-divider");o.appendChild(u);let h=g("div","mach-column-panel-subtitle");if(h.textContent=this.core.getLocaleText("columnVisibility"),o.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)}),o.appendChild(R)}let p=g("div","mach-column-panel-list");this.renderColumnList(p,!e),o.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",()=>{r.columns.resetState(),this.close()});let y=g("button","mach-filter-btn-apply");y.type="button",y.textContent=this.core.getLocaleText("autoSizeAll"),y.addEventListener("click",()=>{r.columns.autoSizeAll(),this.close()}),m.append(f,y),o.appendChild(m),document.body.appendChild(o),this.panel=o,this.openColId=e?e.id:"__standalone__";let v=t.getBoundingClientRect(),w=o.getBoundingClientRect(),C=M(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)),o.style.left=`${C}px`,o.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 r=this.core.getApi();e.replaceChildren();let o=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 o){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",()=>{r.columns.setVisible(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",()=>{r.columns.setPinned(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",()=>{r.columns.move(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 je=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,r){this.close();let o=this.core,n,s;if(r)n=o.rowModel.getDisplayedRow(r.rowIndex),s=o.columnModel.getColumn(r.colId);else{let u=o.bodyRenderer.getNormalizedRangeOrFocus();if(!u)return;let h=o.columnModel.getOrderedVisible();n=o.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=o.options.getContextMenuItems;if(d){let u;try{u=d({data:n.data,node:n,api:o.getApi(),colId:s.id,value:o.getCellValue(n,s),rowIndex:a})}catch(p){o.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){o.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=o.getLocaleText("menuCopy"),c.addEventListener("click",()=>{o.copyActiveRange(),this.close()}),l.appendChild(c),!o.options.suppressClipboard){let u=g("button","mach-context-menu-item");u.type="button",u.textContent=o.getLocaleText("menuPaste"),u.addEventListener("click",()=>{o.pasteFromSystemClipboard(),this.close()}),l.appendChild(u);let h=g("button","mach-context-menu-item");h.type="button",h.textContent=o.getLocaleText("menuClearContents"),h.addEventListener("click",()=>{let p=o.bodyRenderer.getNormalizedRangeOrFocus();p&&o.clearRangeValues(p),this.close()}),l.appendChild(h)}this.attach(l,e,t)}attach(e,t,r){document.body.appendChild(e),this.panel=e;let o=e.getBoundingClientRect(),n=M(t,8,Math.max(8,window.innerWidth-o.width-8)),s=M(r,8,Math.max(8,window.innerHeight-o.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 Ye=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 r=e.target.closest(".mach-cell");if(!r||r===this.currentCell)return;this.clearTimers(),this.removePanel(),this.currentCell=r;let o=r.dataset.colId??"",n=r.closest(".mach-row"),s=Number(n?.dataset.index),a=Number.isNaN(s)?void 0:this.core.rowModel.getDisplayedRow(s),l=o?this.core.columnModel.getColumn(o):void 0;if(!a||!l||a.isDetail||a.isGroup||r.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:O(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!==r||this.showPanel(r,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 r=this.core.options.tooltipComponent;if(!r)return;let o=g("div","mach-tooltip");o.setAttribute("role","tooltip");let n;try{n=r(t)}catch(c){this.core.reportError(c,"tooltipComponent",{colId:t.colId,rowIndex:t.rowIndex});return}typeof n=="string"?o.textContent=n:o.appendChild(n),document.body.appendChild(o),this.panel=o;let s=e.getBoundingClientRect(),a=o.getBoundingClientRect(),l=M(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)),o.style.left=`${l}px`,o.style.top=`${d}px`}};var Xe=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"),r=t.getContext("2d");if(!r)return null;let o=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;r.font=`500 ${o}px sans-serif`;let d=r.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 ${o}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 Qe=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 r=this.core,o=[];for(let n of e){let s=r.rowModel.getNodeById(n.nodeId),a=r.columnModel.getColumn(n.columnId);if(!s||!a||s.data==null)continue;let l=t?n.newValue:n.oldValue,d=t?n.oldValue:n.newValue;r.writeValue(s,a,l,d)&&(r.bodyRenderer.invalidateRowHeight(s),r.bodyRenderer.queueFlash([s.rowIndex],[a.id]),s.rowIndex>=0&&o.push(s.rowIndex),r.emit("cellValueChanged",{oldValue:d,newValue:l,rowNode:s,rowIndex:s.rowIndex,column:a,colDef:a.colDef,data:s.data}))}o.length>0&&r.bodyRenderer.refreshRows(o),r.summaryRenderer.refresh(),r.statusBarService.refresh()}clear(){this.stack=[],this.pointer=-1,this.pending=null}};var Je=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}`,o=this.changes.get(t)?.originalValue??e.oldValue;Object.is(e.newValue,o)?this.changes.delete(t):this.changes.set(t,{rowId:e.rowNode.id,colId:e.column.id,originalValue:o,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 r=this.core.rowModel.getNodeById(t.rowId);if(!r?.data)continue;let o=e.get(t.rowId);o||(o={rowId:t.rowId,data:r.data,cells:[]},e.set(t.rowId,o)),o.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[r,o]of this.changes)t.has(o.rowId)&&this.changes.delete(r)}this.emitChanged()}acknowledge(e){for(let t of e)for(let r of t.cells){let o=`${t.rowId}\0${r.colId}`,n=this.changes.get(o);if(n){Object.is(n.value,r.value)?this.changes.delete(o):n.originalValue=r.value;continue}let s=this.core.rowModel.getNodeById(t.rowId),a=this.core.columnModel.getColumn(r.colId);if(!s||!a||s.data==null)continue;let l=this.core.getCellValue(s,a);Object.is(l,r.value)||this.changes.set(o,{rowId:t.rowId,colId:r.colId,originalValue:r.value,value:l})}this.emitChanged()}rollback(e){let t=e?new Set(e):null,r=[...this.changes.entries()].filter(([,s])=>!t||t.has(s.rowId));if(r.length===0)return!1;let o=new Set,n=new Set;this.rollingBack=!0;try{for(let[s,a]of r){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&&o.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 o.size>0&&this.core.bodyRenderer.refreshRows([...o]),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[r,o]of this.changes)t.has(o.rowId)&&this.changes.delete(r);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 zt=class{constructor(){this.observer=null;this.subscribers=0;this.count=0;this.totalMs=0}acquire(){this.subscribers++,this.ensureObserver();let e=!1;return()=>{e||(e=!0,this.subscribers=Math.max(0,this.subscribers-1),this.subscribers===0&&(this.observer?.disconnect(),this.observer=null))}}snapshot(){return{count:this.count,totalMs:this.totalMs}}ensureObserver(){if(!(this.observer||typeof PerformanceObserver>"u"))try{this.observer=new PerformanceObserver(e=>{for(let t of e.getEntries())this.count++,this.totalMs+=t.duration}),this.observer.observe({entryTypes:["longtask"]})}catch{this.observer=null}}},Ze=new zt;function Vt(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var et=class{constructor(){this.samples=[];this.layoutSamples=[];this.modelSamples=[];this.releaseLongTaskHub=Ze.acquire(),this.longTaskBaseline=Ze.snapshot()}start(){return Vt()}recordRender(e,t,r){this.samples.push({duration:Math.max(0,Vt()-e),rows:t,columns:r}),this.samples.length>120&&this.samples.shift()}recordLayout(e){this.pushDuration(this.layoutSamples,e)}recordModel(e){this.pushDuration(this.modelSamples,e)}snapshot(){let e=this.samples.map(n=>n.duration),t=this.samples[this.samples.length-1],r=[...e].sort((n,s)=>n-s),o=Ze.snapshot();return{sampleCount:e.length,lastRenderMs:t?.duration??0,averageRenderMs:this.average(e),maxRenderMs:r[r.length-1]??0,p95RenderMs:this.percentile(r,!0),longRenderCount:e.filter(n=>n>16.7).length,renderedRows:t?.rows??0,renderedColumns:t?.columns??0,renderedCells:(t?.rows??0)*(t?.columns??0),layoutSampleCount:this.layoutSamples.length,p95LayoutMs:this.percentile(this.layoutSamples),modelSampleCount:this.modelSamples.length,p95ModelMs:this.percentile(this.modelSamples),longTaskCount:Math.max(0,o.count-this.longTaskBaseline.count),longTaskTotalMs:Math.max(0,o.totalMs-this.longTaskBaseline.totalMs),usedHeapBytes:this.usedHeapBytes()}}reset(){this.samples=[],this.layoutSamples=[],this.modelSamples=[],this.longTaskBaseline=Ze.snapshot()}destroy(){this.releaseLongTaskHub?.(),this.releaseLongTaskHub=null}pushDuration(e,t){e.push(Math.max(0,Vt()-t)),e.length>120&&e.shift()}average(e){return e.length===0?0:e.reduce((t,r)=>t+r,0)/e.length}usedHeapBytes(){let e=typeof performance>"u"?void 0:performance.memory?.usedJSHeapSize;return typeof e=="number"&&Number.isFinite(e)?e:null}percentile(e,t=!1){if(e.length===0)return 0;let r=t?e:[...e].sort((o,n)=>o-n);return r[Math.max(0,Math.ceil(r.length*.95)-1)]??0}};function Gr(i,e){if(!(i==null||e==null))return[...new Set([...i,...e])]}function _i(i,e){return i===!0||e===!0?!0:i?e?{rowIds:Gr(i.rowIds,e.rowIds),rowIndexes:i.rowIndexes==null||e.rowIndexes==null?void 0:[...new Set([...i.rowIndexes,...e.rowIndexes])],columns:Gr(i.columns,e.columns),force:i.force===!0||e.force===!0,includePinned:i.includePinned===!0||e.includePinned===!0}:i:e}function Wi(i,e){return{columns:i.columns===!0||e.columns===!0,header:i.header===!0||e.header===!0,pool:i.pool===!0||e.pool===!0,data:i.data===!0||e.data===!0,layout:i.layout===!0||e.layout===!0,cells:_i(i.cells,e.cells),pinned:i.pinned===!0||e.pinned===!0,summary:i.summary===!0||e.summary===!0,overlays:i.overlays===!0||e.overlays===!0}}var tt=class{constructor(e){this.apply=e;this.depth=0;this.pending=null;this.flushCount=0;this.requestCount=0;this.coalescedRequestCount=0;this.destroyed=!1}batch(e){if(this.destroyed)return e();this.depth++;try{return e()}finally{this.depth--,this.depth===0&&this.flush()}}schedule(e){this.destroyed||(this.requestCount++,this.pending&&this.coalescedRequestCount++,this.pending=Wi(this.pending??{},e),this.depth===0&&this.flush())}flush(){if(this.destroyed||this.depth>0||!this.pending)return;let e=this.pending;this.pending=null,this.flushCount++,this.apply(e)}snapshot(){return{batchDepth:this.depth,flushCount:this.flushCount,requestCount:this.requestCount,coalescedRequestCount:this.coalescedRequestCount,pending:this.pending!=null}}destroy(){this.destroyed=!0,this.pending=null,this.depth=0}};var V=["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 U(i){return(i==null?"":String(i)).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function rt(i,e,t="text/plain;charset=utf-8"){try{if(typeof document>"u"||typeof Blob>"u")return!1;let r=document.createElement("a");if(typeof URL<"u"&&typeof URL.createObjectURL=="function"){let o=new Blob([e],{type:t}),n=URL.createObjectURL(o);r.href=n,r.download=i,r.click();let s=typeof URL.revokeObjectURL=="function"?URL.revokeObjectURL.bind(URL):null;s&&setTimeout(()=>{try{s(n)}catch{}},0)}else r.href=`data:${t},${encodeURIComponent(e)}`,r.download=i,r.click();return!0}catch{return!1}}var te={columnDefs:{kind:"array",update:"columnDefs"},rowData:{kind:"array",update:"rowData"},defaultColDef:{kind:"object",update:"options"},columnTypes:{kind:"object",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"},enableColumnResize:{kind:"boolean",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"},advancedFilterModel:{kind:"object",update:"options"},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"},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"},persistence:{kind:"boolean-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"},datasourceMode:{kind:"string",update:"options"},blockSize:{kind:"number",update:"options"},infiniteBufferRows:{kind:"number",update:"options"},maxBlocksInCache:{kind:"number",update:"options"},datasourceMaxConcurrentRequests:{kind:"number",update:"options"},blockPrefetch:{kind:"number",update:"options"},datasourceRowCount:{kind:"number",update:"options"},dataProcessor:{kind:"object",update:"options"},dataProcessorMinRows:{kind:"number",update:"options"},datasourceRetryCount:{kind:"number",update:"options"},datasourceRetryDelay:{kind:"number",update:"options"},datasourceRetryJitter:{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"}},ot=Object.freeze(Object.keys(te)),Js=Object.freeze(ot.filter(i=>te[i].update==="options"));var qi=new Set(V.map(i=>`on${i.charAt(0).toUpperCase()}${i.slice(1)}`));function _t(i,e){return i==null||e==="unknown"?!0:e==="array"?Array.isArray(i):e==="boolean-object"?typeof i=="boolean"||typeof i=="object"&&!Array.isArray(i):e==="object"?typeof i=="object"&&!Array.isArray(i):e==="number"?typeof i=="number"&&Number.isFinite(i):typeof i===e}function Fr(i){let e={};for(let[t,r]of Object.entries(i)){if(qi.has(t)){(r==null||typeof r=="function")&&(e[t]=r);continue}let o=te[t];!o||!_t(r,o.kind)||(e[t]=r)}return e}var Hr=2e3,$i=1e5,qt=512,Ui=1e4;function Wt(i){return Array.isArray(i)?[...new Set(i.slice(0,$i).filter(e=>typeof e=="string"&&e.length>0&&e.length<=qt))]:[]}function Nr(i,e){return typeof i=="number"&&Number.isFinite(i)&&i>=1?Math.floor(i):e}function Or(i){return typeof i=="number"&&Number.isFinite(i)&&i>0?i:void 0}function Ki(i,e){let t=Or(e.width),r=Or(e.flex);t!==void 0&&(i.width=t),e.flex===null?i.flex=null:r!==void 0&&(i.flex=r),(e.widthMode==="auto"||e.widthMode==="manual")&&(i.widthMode=e.widthMode)}function ji(i,e){typeof e.hide=="boolean"&&(i.hide=e.hide),(e.pinned===null||e.pinned==="left"||e.pinned==="right")&&(i.pinned=e.pinned)}function Yi(i,e){if(i==null||typeof i!="object")return null;let t=i,r=typeof t.colId=="string"?t.colId.trim():"";if(!r||r.length>qt||e.has(r))return null;e.add(r);let o={colId:r};return ji(o,t),Ki(o,t),o}function Xi(i){if(!Array.isArray(i))return[];let e=[],t=new Set;for(let r of i.slice(0,Hr)){let o=Yi(r,t);o&&e.push(o)}return e}function Qi(i){if(!Array.isArray(i))return[];let e=[],t=new Set;for(let r of i.slice(0,Hr)){if(r==null||typeof r!="object")continue;let o=r,n=typeof o.colId=="string"?o.colId.trim():"";!n||n.length>qt||t.has(n)||o.direction!=="asc"&&o.direction!=="desc"||(t.add(n),e.push({colId:n,direction:o.direction}))}return e}function G(i){if(i==null||typeof i!="object")return null;let e=i;if(e.version!==2||!Array.isArray(e.columns)||!Array.isArray(e.sortModel))return null;let t=e.pagination!=null&&typeof e.pagination=="object"?e.pagination:{};return{version:2,columns:Xi(e.columns),sortModel:Qi(e.sortModel),filterModel:X(e.filterModel),advancedFilterModel:L(e.advancedFilterModel),quickFilterText:typeof e.quickFilterText=="string"&&e.quickFilterText.trim()?e.quickFilterText.slice(0,Ui):null,pagination:{enabled:t.enabled===!0,page:Nr(t.page,1),pageSize:Nr(t.pageSize,20)},selectedRowIds:Wt(e.selectedRowIds),expandedRowIds:Wt(e.expandedRowIds),expandedGroupIds:Wt(e.expandedGroupIds)}}function Br(i,e){let t=G(i);if(!t)throw new TypeError("[MachTable] Cannot persist an invalid GridState snapshot.");let r=new Set(e);return{version:2,columns:r.has("columns")?t.columns:[],sortModel:r.has("sort")?t.sortModel:[],filterModel:r.has("filter")?t.filterModel:{},advancedFilterModel:r.has("filter")?t.advancedFilterModel:null,quickFilterText:r.has("filter")?t.quickFilterText:null,pagination:r.has("pagination")?t.pagination:{enabled:!1,page:1,pageSize:20},selectedRowIds:r.has("selection")?t.selectedRowIds:[],expandedRowIds:r.has("expansion")?t.expandedRowIds:[],expandedGroupIds:r.has("expansion")?t.expandedGroupIds:[]}}function Ji(i){try{if(typeof structuredClone=="function")return structuredClone(i)}catch{}return Array.isArray(i)?[...i]:i!=null&&typeof i=="object"?{...i}:i}function zr(i,e){let t=e?new Set(e.map(String)):null;return i.filter(r=>!t||t.has(r.rowId)).map(r=>({...r,data:Ji(r.data),cells:r.cells.map(o=>({...o}))}))}function Zi(i,e){let t=typeof i?.rowId=="string"?i.rowId:"";return!e.has(t)||typeof i.message!="string"||!i.message.trim()?null:{...i,rowId:t,message:i.message.trim(),...typeof i.code=="string"&&i.code.trim()?{code:i.code.trim()}:{},...Array.isArray(i.colIds)?{colIds:[...new Set(i.colIds.filter(r=>typeof r=="string"&&r.length>0))]}:{}}}function Vr(i,e){let t=new Map;for(let r of i??[]){let o=Zi(r,e);o&&!t.has(o.rowId)&&t.set(o.rowId,o)}return[...t.values()]}function _r(i,e){let t=new Set(i.map(d=>d.rowId)),r=Vr(e?.conflicts,t),o=new Set(r.map(d=>d.rowId)),n=Vr(e?.failures,t).filter(d=>!o.has(d.rowId)),s=new Set([...n,...r].map(d=>d.rowId)),a=e?.savedRowIds==null?null:new Set(e.savedRowIds.map(String).filter(d=>t.has(d))),l=i.filter(d=>!s.has(d.rowId)&&(a==null||a.has(d.rowId)));return{submitted:i,saved:l,failures:n,conflicts:r}}function en(i,e){if(e.serverData===void 0)return null;let t=i.rows.getById(e.rowId);if(!t||t.data==null)return null;let r=i.getOption("rowKey");if(r){let s=typeof r=="function"?r(e.serverData):B(e.serverData,r);return String(s)===e.rowId?{data:e.serverData,mergeIntoCurrent:!1}:null}let o=t.data;return o!=null&&e.serverData!=null&&typeof o=="object"&&typeof e.serverData=="object"?{data:o,mergeIntoCurrent:!0}:null}function Wr(i,e,t){if(i.isDestroyed())return!1;if(t==="keepLocal")return!0;let r=en(i,e);return r?(i.editing.rollback([e.rowId]),r.mergeIntoCurrent&&Object.assign(r.data,e.serverData),i.rows.transact({update:[r.data]}),i.editing.markSaved([e.rowId]),!0):!1}function qr(i){return{setData:e=>i.setRowData(e),transact:e=>i.applyTransaction(e),transactAsync:(e,t)=>i.applyTransactionAsync(e,t),flushTransactions:()=>i.flushAsyncTransactions(),getCount:()=>i.getDisplayedRowCount(),getAt:e=>i.getRowNode(e),getById:e=>i.getNodeById(e),forEach:e=>i.forEachNode(e),forEachDisplayed:e=>i.forEachNodeAfterFilterAndSort(e),reorder:(e,t)=>i.reorderRows(e,t),isRemote:()=>i.isInfinite(),reload:e=>i.reload(e),ensureLoaded:(e,t,r)=>i.ensureRowsLoaded(e,t,r),purgeCache:()=>i.purgeDatasourceCache(),getCacheSnapshot:()=>i.getDatasourceCacheSnapshot()}}function $r(i){return{getDefinitions:()=>i.getColumnDefs(),setDefinitions:e=>i.setColumnDefs(e),getState:()=>i.getColumnState(),setState:e=>i.setColumnState(e),resetState:()=>i.resetColumnState(),setVisible:(e,t)=>i.setColumnVisibility(e,t),setPinned:(e,t)=>i.setColumnPinned(e,t),move:(e,t)=>i.moveColumn(e,t),setWidth:(e,t)=>i.setColumnWidth(e,t),fit:e=>i.sizeColumnsToFit(e),autoSize:(e,t)=>i.autoSizeColumn(e,t),autoSizeAll:e=>i.autoSizeAllColumns(e),getWorkbenchItems:()=>i.getColumnWorkbenchItems(),openWorkbench:e=>i.openColumnWorkbench(e),closeWorkbench:()=>i.closeColumnWorkbench()}}function Ur(i){return{getRows:()=>i.getSelectedRows(),getVisibleRows:()=>i.getVisibleSelection(),getNodes:()=>i.getSelectedNodes(),getIds:()=>i.getSelectedIds(),setRows:(e,t)=>i.setSelection(e,t),setById:(e,t,r)=>i.selectNodeById(e,t,r),selectAll:e=>i.selectAll(e),clear:()=>i.deselectAll(),getMode:()=>i.getRowSelection(),setMode:e=>i.setRowSelection(e),getRange:()=>i.getRangeSelection(),clearRange:()=>i.clearRangeSelection()}}function Kr(i){return{startCell:e=>i.startEditingCell(e),startRow:e=>i.startEditingRow(e),isRowActive:e=>i.isRowEditing(e),stop:e=>i.stopEditing(e?.cancel===!0),getChanges:()=>i.getChanges(),getDirtyRowIds:()=>i.getDirtyRowIds(),markSaved:e=>i.markChangesSaved(e),rollback:e=>i.rollbackChanges(e),save:(e,t)=>i.saveEditingChanges(e,t),undo:()=>i.undo(),redo:()=>i.redo(),canUndo:()=>i.canUndo(),canRedo:()=>i.canRedo()}}function jr(i){return{get:()=>i.getState(),apply:(e,t)=>i.applyState(e,t)}}function Yr(i){return{get:()=>i.getDiagnostics(),getPerformance:()=>i.getPerformanceSnapshot(),resetPerformance:()=>i.resetPerformanceMetrics()}}function Xr(i){return{getModel:()=>i.getFilterModel(),setModel:e=>i.setFilterModel(e),getAdvancedModel:()=>i.getAdvancedFilterModel(),setAdvancedModel:e=>i.setAdvancedFilterModel(e),getQuickText:()=>i.getQuickFilter(),setQuickText:e=>i.setQuickFilter(e),isPresent:e=>e==null?Object.keys(i.getFilterModel()).length>0||i.getAdvancedFilterModel()!=null||i.getQuickFilter()!=null:i.isColumnFilterPresent(e)}}function Qr(i){return{getModel:()=>i.getSortModel(),setModel:e=>i.setSortModel(e)}}function Jr(i){return{isEnabled:()=>i.paginationEnabled(),setEnabled:e=>i.setPaginationEnabled(e),getPage:()=>i.getPage(),setPage:e=>i.setPage(e),getPageSize:()=>i.getPageSize(),setPageSize:e=>i.setPageSize(e),getPageCount:()=>i.getPageCount(),getTotalRowCount:()=>i.getTotalRowCount()}}function Zr(i){return{isRowExpanded:e=>i.isRowExpanded(e),setRowExpanded:(e,t)=>i.isRowExpanded(e)===t?!1:(t?i.expandRow(e):i.collapseRow(e),i.isRowExpanded(e)===t),isTreeRowLoading:e=>i.isTreeRowLoading(e),loadTreeChildren:(e,t)=>i.loadTreeChildren(e,t),isGroupExpanded:e=>i.isGroupExpanded(e),setGroupExpanded:(e,t)=>i.isGroupExpanded(e)===t?!1:(i.toggleRowGroup(e),i.isGroupExpanded(e)===t),setAllGroupsExpanded:e=>e?i.expandAllGroups():i.collapseAllGroups(),setAllDetailsExpanded:e=>e?i.expandAllDetails():i.collapseAllDetails()}}function eo(i){return{getRoot:()=>i.getRootElement(),scrollToRow:(e,t)=>i.scrollToIndex(e,t),refreshCells:e=>i.refreshCells(e),refreshLayout:()=>i.refreshLayout(),flush:()=>i.flushUpdates(),setOverlay:e=>i.setOverlay(e),getPinnedRows:e=>e==="top"?i.getPinnedTopRowData():i.getPinnedBottomRowData(),setPinnedRows:(e,t)=>e==="top"?i.setPinnedTopRowData(t):i.setPinnedBottomRowData(t)}}function to(i){return{exportCsv:e=>i.getDataAsCsv(e),importCsv:(e,t)=>i.importCsv(e,t),print:e=>i.print(e),copyRange:()=>i.copyRangeToClipboard()}}function fe(i){if(i?.reason instanceof Error)return i.reason;let e=new Error(typeof i?.reason=="string"?i.reason:"The operation was aborted");return e.name="AbortError",e}function ro(i,e){return e?e.aborted?Promise.reject(fe(e)):new Promise((t,r)=>{let o=()=>r(fe(e));e.addEventListener("abort",o,{once:!0}),i.then(t,r).finally(()=>e.removeEventListener("abort",o))}):i}function tn(){return{datasourceChanged:!1,filterChanged:!1,needsCellRefresh:!1,needsColumnRebuild:!1,needsHeaderRebuild:!1,needsPoolRebuild:!1,needsRelayout:!1,needsRowRebuild:!1,needsStateLoad:!1,needsSummaryRefresh:!1,needsFeatureReload:!1}}function b(i,e){return Object.prototype.hasOwnProperty.call(i,e)}function x(i,e,t=!1){if(!(typeof i!="number"||!Number.isFinite(i)||i<e))return t?Math.floor(i):i}function pe(i,e,t,r=!1){let o=x(i,t,r);return o===void 0||o===e?void 0:o}var $t=class{constructor(e){this.core=e;this.measureCanvas=null;this.asyncTransactions=[];this.asyncTransactionTimer=null}connectPublicApi(e){if(this.publicApi)throw new Error("[MachTable] Grid API is already connected.");this.publicApi=e}batch(e){let t=this.publicApi;if(!t)throw new Error("[MachTable] Grid API is not connected.");return this.core.batchUpdates(()=>e(t))}flushUpdates(){this.core.updateScheduler.flush()}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.requestUpdate({data:!0})))}applyTransaction(e){if(this.core.isDestroyed()||this.core.rowModel.isInfinite)return;let t=this.core.rowModel.applyTransaction(e);this.requestTransactionRefresh(t)}applyTransactionAsync(e,t={}){if(this.core.isDestroyed()||this.core.rowModel.isInfinite)return Promise.resolve();if(t.signal?.aborted)return Promise.reject(fe(t.signal));let r=new Promise((o,n)=>{let s={transaction:e,resolve:o,reject:n,signal:t.signal,aborted:!1};t.signal&&(s.onAbort=()=>{s.aborted||(s.aborted=!0,n(fe(t.signal)))},t.signal.addEventListener("abort",s.onAbort,{once:!0})),this.asyncTransactions.push(s)});return this.asyncTransactionTimer==null&&(this.asyncTransactionTimer=setTimeout(()=>this.flushAsyncTransactions(),this.core.options.asyncTransactionWaitMillis)),r}flushAsyncTransactions(){this.asyncTransactionTimer!=null&&clearTimeout(this.asyncTransactionTimer),this.asyncTransactionTimer=null;let e=this.asyncTransactions;this.asyncTransactions=[];let t=e.filter(r=>!r.aborted).map(r=>r.transaction);if(t.length>0&&!this.core.isDestroyed()&&!this.core.rowModel.isInfinite){let r=this.core.rowModel.applyTransactions(t);this.requestTransactionRefresh(r)}for(let r of e)r.signal&&r.onAbort&&r.signal.removeEventListener("abort",r.onAbort),r.aborted||r.resolve()}requestTransactionRefresh(e){if(e.pipelineChanged){this.core.requestUpdate({data:!0});return}e.updatedRowIds.length!==0&&this.core.requestUpdate({cells:{rowIds:e.updatedRowIds},summary:!0,overlays:!0})}getColumnDefs(){return this.core.columnModel.getColumnDefs()}setColumnDefs(e){this.core.isDestroyed()||(this.core.options.columnDefs=e??[],this.core.columnModel.setColumnDefs(e),this.core.loadPersistedGridState(),this.core.onColumnsStructureChanged(),this.core.rowModel.isInfinite?this.core.rowModel.onServerParamsChanged():(this.core.rowModel.refreshPipeline(),this.core.requestUpdate({data:!0})))}getColumnState(){return this.core.columnModel.getColumnState()}setColumnState(e){this.core.isDestroyed()||(this.core.columnModel.applyColumnState(e),this.core.onColumnsStructureChanged())}resetColumnState(){this.core.isDestroyed()||(this.core.columnModel.resetColumnState(),this.core.onColumnsStructureChanged())}setColumnVisibility(e,t){this.core.isDestroyed()||(this.core.columnModel.setColumnVisibility(e,t),this.core.onColumnsStructureChanged(),this.core.emit("columnVisibilityChanged",{colId:e,visible:t}))}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())}setColumnWidth(e,t){if(this.core.isDestroyed())return!1;let r=this.core.columnModel.getColumn(e);return!r||!this.core.columnModel.setColumnWidth(r,t)?!1:(this.core.relayoutColumns(),this.core.commitColumnWidths([r]),!0)}sizeColumnsToFit(e){if(this.core.isDestroyed())return;let t=this.core.columnModel.getOrderedVisible();if(t.length===0)return;let r=e??this.core.skeleton.measureViewportWidth();if(r<=0)return;let o=t.reduce((s,a)=>s+a.currentWidth,0);if(o<=0)return;let n=t.filter(s=>this.core.columnModel.setColumnWidth(s,Math.max(30,Math.floor(s.currentWidth*r/o))));this.core.relayoutColumns(),this.core.commitColumnWidths(n)}autoSizeColumn(e,t=!1){if(this.core.isDestroyed())return;let r=this.core.columnModel.getColumn(e);r&&this.autoSizeColumnInternal(r,t)&&(this.core.relayoutColumns(),this.core.commitColumnWidths([r]))}autoSizeColumnInternal(e,t){if(e.hasCheckbox||e.isDetailToggle)return this.core.columnModel.setColumnWidth(e,e.isDetailToggle?38:46);this.measureCanvas??(this.measureCanvas=document.createElement("canvas"));let r=this.measureCanvas.getContext("2d");if(!r)return!1;let o=window.getComputedStyle(this.core.skeleton.root);r.font=`${o.fontStyle} ${o.fontWeight} ${o.fontSize} ${o.fontFamily}`;let n=0,s=c=>{if(!c)return;let u=r.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(O(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)}autoSizeAllColumns(e){if(this.core.isDestroyed())return;let t=[];for(let r of this.core.columnModel.getOrderedVisible())this.autoSizeColumnInternal(r,e??!1)&&t.push(r);t.length>0&&(this.core.relayoutColumns(),this.core.commitColumnWidths(t))}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.emitFilterChanged(),this.core.rowModel.isInfinite){this.core.rowModel.onServerParamsChanged();return}this.core.rowModel.refreshPipeline(),this.core.requestUpdate({data:!0})}}getAdvancedFilterModel(){return this.core.rowModel.getAdvancedFilterModel()}setAdvancedFilterModel(e){if(!(this.core.isDestroyed()||!this.core.rowModel.setAdvancedFilterModel(e))){if(this.emitFilterChanged(),this.core.rowModel.isInfinite){this.core.rowModel.onServerParamsChanged();return}this.core.rowModel.refreshPipeline(),this.core.requestUpdate({data:!0})}}emitFilterChanged(){this.core.emit("filterChanged",{filterModel:this.core.rowModel.getFilterModel(),advancedFilterModel:this.core.rowModel.getAdvancedFilterModel()})}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,r=!0){this.core.selectionService.selectNodeById(e,t,r)}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)}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 r=this.core.options.resolveRowId,o=[];for(let n of e){let s=r?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&&o.push({node:s,selected:!0})}o.length>0?this.core.selectionService.applySelectionPublic(o,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 saveEditingChanges(e,t){let r=zr(this.core.changeTracker.getChanges(),t);if(r.length===0)return{submitted:[],saved:[],failures:[],conflicts:[]};let o=_r(r,await e(r));return this.core.isDestroyed()||this.core.changeTracker.acknowledge(o.saved),o}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()}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(e={}){return this.core.isDestroyed()?Promise.resolve():e.signal?.aborted?Promise.reject(fe(e.signal)):this.core.rowModel.isInfinite?ro(this.core.rowModel.reloadInfinite(e.signal),e.signal):(this.core.rowModel.setRowData(this.core.options.rowData),this.core.requestUpdate({data:!0}),Promise.resolve())}ensureRowsLoaded(e,t,r={}){return this.core.isDestroyed()?Promise.resolve():ro(this.core.rowModel.ensureRowsLoaded(e,t,r.signal),r.signal)}purgeDatasourceCache(){this.core.isDestroyed()||this.core.rowModel.purgeDatasourceCache()}getDatasourceCacheSnapshot(){return this.core.rowModel.getDatasourceCacheSnapshot()}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 r=Fe(e,t.separator??",");if(r.length===0)return!1;let o=r[t.headerRowIndex??0]??[],n=r.slice((t.headerRowIndex??0)+1).filter(c=>c.some(u=>u!=="")),s=t.mode??"replace";if(s==="paste")return this.core.pasteText(ee(n,!1),0,0),!0;let a=this.core.columnModel.getOrderedVisible().filter(c=>c.colDef.field),l=this.resolveCsvFieldOrder(o,a),d=this.buildCsvRecords(n,l,t);return s==="append"?this.core.rowModel.applyTransaction({add:d}):this.core.rowModel.setRowData(d),this.core.requestUpdate({data:!0}),!0}resolveCsvFieldOrder(e,t){let r=new Map;for(let n of t){let s=n.colDef.field;s&&(r.set(String(n.colDef.headerName??s),s),r.set(s,s))}e.length>0&&(e[0]=e[0].replace(/^\uFEFF/,""));let o=e.map((n,s)=>({field:r.get(String(n).trim())??null,index:s})).filter(n=>n.field!=null);return o.length>0?o:t.map((n,s)=>({field:n.colDef.field,index:s}))}buildCsvRecords(e,t,r){return e.map((o,n)=>{let s={};return t.forEach(({field:a,index:l})=>{let d=o[l];if(d===void 0)return;let c=this.parseCsvValue(d,a,n,l,r);q(s,a,c)||this.core.reportError(new Error(`Unsafe CSV field: ${a}`),"csv.import",{field:a})}),s})}parseCsvValue(e,t,r,o,n){if(n.parseValue)try{return n.parseValue({value:e,field:t,rowIndex:r,columnIndex:o})}catch(l){return this.core.reportError(l,"csv.parseValue",{field:t,rowIndex:r,columnIndex:o}),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 r=this.core.columnModel.getOrderedVisible().filter(d=>!d.hasCheckbox&&!d.isDetailToggle&&!d.colDef.rowDrag),o=this.core.rowModel.getPipelineRows().filter(d=>!d.isDetail&&!d.isGroup),s=e.includeHeader!==!1?`<tr>${r.map(d=>`<th>${U(d.colDef.headerName??d.colDef.field??d.id)}</th>`).join("")}</tr>`:"",a=o.map(d=>`<tr>${r.map(c=>{let u=O(this.core,d,c);return`<td>${U(u)}</td>`}).join("")}</tr>`).join(""),l=`<!doctype html><html><head><meta charset="utf-8"><title>${U(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>${U(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){return this.core.editingService.stopAsync(e??!1)}refreshCells(e){let t=e==null||e.rowIds==null&&e.rowIndexes==null&&e.columns==null;this.core.requestUpdate({cells:e??!0,pinned:e?.includePinned??t,summary:t})}getOption(e){return this.core.options[e]}updateOptions(e){this.core.isDestroyed()||(this.core.checkWarnings(e),e=Fr(e),Object.keys(e).length!==0&&this.core.batchUpdates(()=>{let t=tn(),r=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,r)}))}updateSourceOptions(e,t){let r=this.core.options;b(e,"columnDefs")&&e.columnDefs!==r.columnDefs&&(r.columnDefs=Array.isArray(e.columnDefs)?e.columnDefs:[],t.needsColumnRebuild=!0,t.needsRowRebuild=!0),b(e,"rowData")&&(r.rowData=Array.isArray(e.rowData)?e.rowData:[],t.needsRowRebuild=!0),b(e,"initialState")&&e.initialState&&(r.initialState=e.initialState,t.stateToApply=e.initialState),this.updateEventHandlers(e)}updateEventHandlers(e){for(let t of V){let r=`on${t.charAt(0).toUpperCase()}${t.slice(1)}`;b(e,r)&&Object.assign(this.core.options,{[r]:e[r]})}}updateDimensionOptions(e,t){let r=this.core.options,o=pe(e.rowHeight,r.rowHeight,1),n=pe(e.headerHeight,r.headerHeight,1),s=pe(e.rowBuffer,r.rowBuffer,0,!0),a=pe(e.detailRowHeight,r.detailRowHeight,1);o!==void 0&&(r.rowHeight=o,t.needsRelayout=!0),n!==void 0&&(r.headerHeight=n,t.needsRelayout=!0,t.needsHeaderRebuild=!0),s!==void 0&&(r.rowBuffer=s,t.needsRelayout=!0),e.columnLayout!=null&&e.columnLayout!==r.columnLayout&&(r.columnLayout=e.columnLayout==="fit"?"fit":"normal",t.needsRelayout=!0),e.domLayout!=null&&e.domLayout!==r.domLayout&&(r.domLayout=e.domLayout==="autoHeight"?"autoHeight":"normal",this.core.skeleton.applyDomLayout(r.domLayout),t.needsPoolRebuild=!0),e.multiSort!=null&&(r.multiSort=e.multiSort),a!==void 0&&(r.detailRowHeight=a,this.core.bodyRenderer.applyContainerSizes(),this.core.bodyRenderer.updateRange(!0))}updateEditingOptions(e,t){let r=this.core.options;e.editType!=null&&e.editType!==r.editType&&(this.core.editingService.stop(!0),r.editType=e.editType==="fullRow"?"fullRow":"cell",t.needsCellRefresh=!0),e.editableIndicator!=null&&e.editableIndicator!==r.editableIndicator&&(r.editableIndicator=e.editableIndicator==="always"||e.editableIndicator==="none"?e.editableIndicator:"hover",t.needsCellRefresh=!0),b(e,"rowEditValidator")&&(r.rowEditValidator=e.rowEditValidator),e.singleClickEdit!=null&&(r.singleClickEdit=e.singleClickEdit),e.manualSorting!=null&&(r.manualSorting=e.manualSorting),e.manualFiltering!=null&&(r.manualFiltering=e.manualFiltering)}updateInteractionOptions(e,t){let r=this.core.options;typeof e.enableColumnResize=="boolean"&&e.enableColumnResize!==r.enableColumnResize&&(this.core.resizeService.cancelResize(),r.enableColumnResize=e.enableColumnResize,t.needsHeaderRebuild=!0),e.locale!=null&&e.locale!==r.locale&&(r.locale=e.locale,t.needsHeaderRebuild=!0,t.needsCellRefresh=!0,this.core.paginationBar.rebuild(),this.core.statusBarService.rebuild()),e.indexOffset!=null&&e.indexOffset!==r.indexOffset&&(r.indexOffset=e.indexOffset,t.needsCellRefresh=!0),e.showSummary!=null&&e.showSummary!==r.showSummary&&(r.showSummary=e.showSummary,t.needsSummaryRefresh=!0,t.needsRelayout=!0);let o=pe(e.undoStackSize,r.undoStackSize,0,!0);o!==void 0&&(r.undoStackSize=o,this.core.undoService.trimToSize());let n=x(e.asyncTransactionWaitMillis,0,!0);n!==void 0&&(r.asyncTransactionWaitMillis=n),this.updateDynamicRowHeight(e,t),this.updateRangeAndFeedbackOptions(e)}updateDynamicRowHeight(e,t){if(!b(e,"getRowHeight"))return;let r=this.core.options.getRowHeight!==e.getRowHeight;this.core.options.getRowHeight=e.getRowHeight,r&&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 r=x(e.tooltipShowDelay,0);r!==void 0&&(t.tooltipShowDelay=r),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,r=e.pagination,o=r!==!1&&t.datasource==null;o!==t.paginationEnabled&&this.core.rowModel.setPaginationEnabled(o),typeof r=="object"&&r&&this.updatePaginationConfig(r),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 r=x(e.page,1,!0),o=x(e.total,0,!0);r!==void 0&&(t.paginationPage=r),o!==void 0&&(t.paginationTotal=o),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 r=this.core.options;e.stripedRows!=null&&e.stripedRows!==r.stripedRows&&(r.stripedRows=e.stripedRows,this.core.skeleton.setStriped(e.stripedRows)),e.showCellBorders!=null&&e.showCellBorders!==r.showCellBorders&&(r.showCellBorders=e.showCellBorders,this.core.skeleton.setCellBorders(e.showCellBorders))}updateWatermarkAndStatus(e,t){let r=this.core.options;e.watermark!==void 0&&(r.watermarkEnabled=e.watermark!=null&&e.watermark!==!1,r.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")&&(r.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:r}=e;if(r==null||!b(se,r)||r===this.core.options.size)return;let o=se[r];this.core.options.size=r,this.core.options.rowHeight=e.rowHeight??o.rowHeight,this.core.options.headerHeight=e.headerHeight??o.headerHeight,this.core.skeleton.applySize(r),t.needsRelayout=!0,t.needsHeaderRebuild=!0}updateAccessibilityOptions(e,t){let r=this.core.options;e.suppressCellFocus!=null&&(r.suppressCellFocus=e.suppressCellFocus),e.suppressRowHoverHighlight!=null&&(r.suppressRowHoverHighlight=e.suppressRowHoverHighlight),e.suppressNoRowsOverlay!=null&&(r.suppressNoRowsOverlay=e.suppressNoRowsOverlay),e.suppressHeaderFocus!=null&&e.suppressHeaderFocus!==r.suppressHeaderFocus&&(r.suppressHeaderFocus=e.suppressHeaderFocus,t.needsHeaderRebuild=!0),this.updateAriaLabels(e),this.updateOverlayOptions(e)}updateAriaLabels(e){let t=this.core.options,r=!1;b(e,"ariaLabel")&&(t.ariaLabel=e.ariaLabel??"MachTable data grid",r=!0),b(e,"ariaLabelledBy")&&(t.ariaLabelledBy=e.ariaLabelledBy??"",r=!0),b(e,"ariaDescribedBy")&&(t.ariaDescribedBy=e.ariaDescribedBy??"",r=!0),r&&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 r=this.core.options;e.autoCheckedChildren!=null&&(r.autoCheckedChildren=e.autoCheckedChildren),e.defaultExpandAll!=null&&e.defaultExpandAll!==r.defaultExpandAll&&(r.defaultExpandAll=e.defaultExpandAll,t.needsRowRebuild=!0),b(e,"advancedFilterModel")&&(t.filterChanged=this.core.rowModel.setAdvancedFilterModel(e.advancedFilterModel)||t.filterChanged),e.applyRowDrag!=null&&(r.applyRowDrag=e.applyRowDrag),e.suppressWarnings!=null&&(r.suppressWarnings=e.suppressWarnings)}updateSelectionAndColumns(e,t){let r=this.core.options;if(e.rowSelection!=null&&e.rowSelection!==r.rowSelection&&(r.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!==r.defaultColDef&&(r.defaultColDef={...xt,...e.defaultColDef},t.needsColumnRebuild=!0),b(e,"columnTypes")&&e.columnTypes!==r.columnTypes&&(r.columnTypes=e.columnTypes??{},t.needsColumnRebuild=!0),b(e,"rowKey")){r.rowKey=e.rowKey;let o=e.rowKey;r.resolveRowId=o?({data:n})=>Mt(o,n):void 0,t.needsRowRebuild=!0}}updateHierarchyOptions(e,t){let r=this.core.options;e.masterDetail!=null&&e.masterDetail!==r.masterDetail&&(r.masterDetail=e.masterDetail,t.needsColumnRebuild=!0,t.needsRowRebuild=!0),e.detailToggleColumn!=null&&e.detailToggleColumn!==r.detailToggleColumn&&(r.detailToggleColumn=e.detailToggleColumn,t.needsColumnRebuild=!0),e.treeData!=null&&e.treeData!==r.treeData&&(r.treeData=e.treeData,t.needsRowRebuild=!0,t.needsColumnRebuild=!0,this.core.refreshAriaState()),e.childrenKey!=null&&e.childrenKey!==r.childrenKey&&(r.childrenKey=e.childrenKey,t.needsRowRebuild=!0),b(e,"isTreeRowExpandable")&&(r.isTreeRowExpandable=e.isTreeRowExpandable,t.needsCellRefresh=!0),b(e,"loadTreeChildren")&&(r.loadTreeChildren=e.loadTreeChildren,t.needsCellRefresh=!0)}updateExtensionOptions(e,t){let r=this.core.options;b(e,"aggFuncs")&&(r.aggFuncs=e.aggFuncs,t.needsRowRebuild=!0),b(e,"components")&&(r.components=e.components,t.needsCellRefresh=!0),b(e,"actionPolicy")&&(r.actionPolicy=e.actionPolicy,t.needsCellRefresh=!0),b(e,"features")&&(r.features=Array.isArray(e.features)?e.features:[],t.needsFeatureReload=!0),this.updateProcessorOptions(e,t),this.updatePersistenceOptions(e,t)}updateProcessorOptions(e,t){let r=this.core.options;b(e,"dataProcessor")&&e.dataProcessor!==r.dataProcessor&&(r.dataProcessor?.destroy?.(),r.dataProcessor=e.dataProcessor,t.needsRowRebuild=!0);let o=x(e.dataProcessorMinRows,1,!0);o!==void 0&&o!==r.dataProcessorMinRows&&(r.dataProcessorMinRows=o,t.needsRowRebuild=!0)}updatePersistenceOptions(e,t){let r=this.core.options;if(!b(e,"persistence"))return;let o=e.persistence;!o||typeof o.key!="string"||!o.key.trim()?r.persistence=null:r.persistence={key:o.key.trim(),debounceMs:x(o.debounceMs,0,!0)??160,...o.sections?{sections:[...new Set(o.sections)]}:{},...o.store?{store:o.store}:{}},t.needsStateLoad=!0}updateDatasourceOptions(e,t){this.updateDatasourceTuning(e,t),this.updateDatasourceMode(e,t),this.updateDatasourceReference(e,t),this.updatePinnedRows(e)}updateDatasourceTuning(e,t){let r=this.core.options,o=x(e.blockSize,1,!0),n=x(e.infiniteBufferRows,0,!0),s=x(e.maxBlocksInCache,1,!0),a=x(e.datasourceMaxConcurrentRequests,1,!0),l=x(e.blockPrefetch,0,!0),d=x(e.datasourceRetryCount,0,!0),c=x(e.datasourceRetryDelay,0,!0),u=x(e.datasourceRetryJitter,0);o!==void 0&&o!==r.blockSize&&(r.blockSize=o,t.datasourceChanged=t.datasourceChanged||r.datasourceMode==="block"),n!==void 0&&(r.infiniteBufferRows=n),s!==void 0&&s!==r.maxBlocksInCache&&(r.maxBlocksInCache=s,t.datasourceChanged=t.datasourceChanged||r.datasourceMode==="block"),a!==void 0&&a!==r.datasourceMaxConcurrentRequests&&(r.datasourceMaxConcurrentRequests=a,t.datasourceChanged=t.datasourceChanged||r.datasourceMode==="block"),l!==void 0&&(r.blockPrefetch=l),d!==void 0&&(r.datasourceRetryCount=d),c!==void 0&&(r.datasourceRetryDelay=c),u!==void 0&&(r.datasourceRetryJitter=Math.min(1,u))}updateDatasourceMode(e,t){let r=this.core.options;if(b(e,"datasourceMode")){let o=e.datasourceMode==="block"?"block":"sequential";o!==r.datasourceMode&&(r.datasourceMode=o,t.datasourceChanged=!0)}if(b(e,"datasourceRowCount")){let o=e.datasourceRowCount==null?null:x(e.datasourceRowCount,0,!0)??null;o!==r.datasourceRowCount&&(r.datasourceRowCount=o,t.datasourceChanged=!0)}}updateDatasourceReference(e,t){let r=this.core.options;b(e,"datasource")&&e.datasource!==r.datasource&&(r.datasource=e.datasource,r.paginationEnabled=e.datasource==null&&r.paginationEnabled,t.datasourceChanged=!0,this.core.paginationBar.rebuild()),b(e,"detailRowRenderer")&&(r.detailRowRenderer=e.detailRowRenderer,t.needsCellRefresh=!0),b(e,"isRowExpandable")&&(r.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,r){let o=this.core.options;t.needsColumnRebuild&&(this.core.columnModel.setColumnDefs(o.columnDefs),this.core.onColumnsStructureChanged(),t.needsHeaderRebuild=!1,t.needsPoolRebuild=!1),t.needsStateLoad&&(this.core.loadPersistedGridState(),this.core.onColumnsStructureChanged()),t.needsFeatureReload&&this.core.setFeatures(o.features),this.applyRowUpdateEffect(t),t.filterChanged&&(this.emitFilterChanged(),!t.datasourceChanged&&!t.needsRowRebuild&&(this.core.rowModel.isInfinite?this.core.rowModel.onServerParamsChanged():(this.core.rowModel.refreshPipeline(),this.core.requestUpdate({data:!0})))),t.needsRelayout&&this.core.skeleton.updateHeights(o.rowHeight,o.headerHeight),e.columnMenu!=null&&e.columnMenu!==r&&(t.needsHeaderRebuild=!0),t.stateToApply&&this.applyState(t.stateToApply),this.core.requestUpdate({layout:t.needsRelayout,header:t.needsHeaderRebuild,pool:t.needsPoolRebuild,cells:t.needsCellRefresh&&!t.needsPoolRebuild?!0:void 0,summary:t.needsSummaryRefresh,overlays:!0})}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.requestUpdate({data:!0})}}getDataAsCsv(e={}){let t=this.core.columnModel.getOrderedVisible().filter(o=>!o.hasCheckbox&&!o.isDetailToggle);if(e.headersOnly)return Gt({getHeaderLabels:()=>t.map(o=>o.colDef.headerName??o.colDef.field??o.id),getRowValues:()=>[]},e);let r=e.onlySelected?this.core.selectionService.getSelectedNodes().slice().sort((o,n)=>o.rowIndex-n.rowIndex):e.onlyAllDisplayed?this.core.rowModel.getDisplayedRows().filter(o=>!o.isDetail&&!o.isGroup):this.core.rowModel.getPipelineRows().filter(o=>!o.isDetail&&!o.isGroup);return Gt({getHeaderLabels:()=>t.map(o=>o.colDef.headerName??o.colDef.field??o.id),getRowValues:()=>r.map(o=>t.map(n=>{let s=this.core.getCellValue(o,n);return typeof s=="number"?s:O(this.core,o,n)}))},e)}getState(){return{version:2,columns:this.getColumnState(),sortModel:this.getSortModel(),filterModel:this.getFilterModel(),advancedFilterModel:this.getAdvancedFilterModel(),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())return;let r=G(e);if(!r){this.core.reportError(new TypeError("[MachTable] GridState must use the current version 2 schema."),"gridState.apply");return}let o=["columns","sort","filter","pagination","selection","expansion"],n=new Set(t.sections??o);this.core.editingService.stop(!0),this.restoreStateSections(r,n),this.refreshAfterStateRestore(r,n),t.emitEvents!==!1&&this.emitStateEvents(n)}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.setAdvancedFilterModel(e.advancedFilterModel),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.requestUpdate({data:!0})),this.core.headerRenderer.refreshSortIndicators(),this.core.headerRenderer.refreshFilterIcons(),t.has("selection")&&this.core.selectionService.restoreSelection(e.selectedRowIds??[])}emitStateEvents(e){e.has("sort")&&this.core.emit("sortChanged",{sortModel:this.getSortModel()}),e.has("filter")&&this.emitFilterChanged(),e.has("pagination")&&this.core.emit("paginationChanged",{page:this.getPage(),pageSize:this.getPageSize(),pageCount:this.getPageCount(),total:this.getTotalRowCount()})}getDiagnostics(){return this.core.getDiagnostics()}getPerformanceSnapshot(){return this.core.performanceMonitor.snapshot()}resetPerformanceMetrics(){this.core.performanceMonitor.reset()}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()}on(e,t){return this.core.eventBus.on(e,t)}destroy(){this.asyncTransactionTimer!=null&&clearTimeout(this.asyncTransactionTimer),this.asyncTransactionTimer=null;let e=this.asyncTransactions;this.asyncTransactions=[];for(let t of e)t.signal&&t.onAbort&&t.signal.removeEventListener("abort",t.onAbort),t.aborted||t.resolve();this.core.destroy()}isDestroyed(){return this.core.isDestroyed()}};function oo(i){let e=new $t(i),t,r,o,n,s,a,l,d,c,u,h,p,m={get rows(){return t??(t=Object.freeze(qr(e)))},get columns(){return r??(r=Object.freeze($r(e)))},get selection(){return o??(o=Object.freeze(Ur(e)))},get editing(){return n??(n=Object.freeze(Kr(e)))},get filtering(){return s??(s=Object.freeze(Xr(e)))},get sorting(){return a??(a=Object.freeze(Qr(e)))},get pagination(){return l??(l=Object.freeze(Jr(e)))},get hierarchy(){return d??(d=Object.freeze(Zr(e)))},get view(){return c??(c=Object.freeze(eo(e)))},get state(){return u??(u=Object.freeze(jr(e)))},get io(){return h??(h=Object.freeze(to(e)))},get diagnostics(){return p??(p=Object.freeze(Yr(e)))},batch:f=>e.batch(f),whenReady:()=>e.whenReady(),getOption:f=>e.getOption(f),updateOptions:f=>e.updateOptions(f),on:(f,y)=>e.on(f,y),destroy:()=>e.destroy(),isDestroyed:()=>e.isDestroyed()};return e.connectPublicApi(m),Object.freeze(m)}var rn=["compact","normal","large"],it=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 r=["mach-root",`mach-size--${t.size}`];t.stripedRows&&r.push("mach-striped"),t.showCellBorders&&r.push("mach-cell-borders"),t.domLayout==="autoHeight"&&r.push("mach-dom-layout--auto-height"),this.root=g("div",r.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 o of["left","center","right"]){let n=g("div",`mach-pane mach-pane--${o} mach-header-pane`),s=g("div","mach-header-rows");if(o==="center"){let a=g("div","mach-header-viewport");a.appendChild(s),n.appendChild(a)}else n.appendChild(s);this.headerEl.appendChild(n),this.headerPanes[o]=n,this.headerRowContainers[o]=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 o of["left","center","right"]){let n=g("div",`mach-pane mach-pane--${o} mach-body-pane`),s=g("div",`mach-body-viewport${o==="center"?" mach-body-viewport--scroll":""}`),a=g("div","mach-row-container");s.appendChild(a),n.appendChild(s),this.bodyEl.appendChild(n),this.bodyPanes[o]=n,this.bodyViewports[o]=s,this.rowContainers[o]=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 r=this.headerRowContainers[t],o=this.headerRows[t];for(;o.length<e;){let n=g("div","mach-header-row");n.setAttribute("role","row"),n.setAttribute("aria-rowindex",String(o.length+1)),n.style.top=`${o.length*this.core.options.headerHeight}px`,n.style.height=`${this.core.options.headerHeight}px`,r.appendChild(n),o.push(n)}for(;o.length>e;)o.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((r,o)=>{r.style.top=`${o*this.core.options.headerHeight}px`,r.style.height=`${this.core.options.headerHeight}px`})}setPaneWidths(e,t){this.applyPaneWidth("left",e),this.applyPaneWidth("right",t)}applyPaneWidth(e,t){let r=this.headerPanes[e],o=this.bodyPanes[e];r.style.width=`${t}px`,o.style.width=`${t}px`;let n=t<=0;r.classList.toggle("mach-pane--hidden",n),o.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 rn)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 r=window.matchMedia("(prefers-color-scheme: dark)"),o=()=>this.root.classList.toggle("mach-theme-dark",r.matches);typeof r.addEventListener=="function"?(r.addEventListener("change",o),this.themeUnsub=()=>r.removeEventListener("change",o)):typeof r.addListener=="function"&&(r.addListener(o),this.themeUnsub=()=>r.removeListener(o))}}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,r=!1){if(this.currentOverlay===e&&this.currentOverlayContent===t&&this.currentOverlayAllowsHtml===r)return;this.currentOverlay=e,this.currentOverlayContent=t,this.currentOverlayAllowsHtml=r,this.cleanupOverlayContent(),this.overlayContent.replaceChildren();let o;try{o=typeof t=="function"?t():t}catch(n){this.core.reportError(n,"overlayTemplate"),o=""}if(typeof o=="object"&&o!=null&&"el"in o)this.overlayContent.appendChild(o.el),this.overlayCleanup=o.destroy??null;else if(o instanceof HTMLElement)this.overlayContent.appendChild(o);else if(o&&r)this.overlayContent.innerHTML=o;else if(o)this.overlayContent.textContent=o;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 on={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 nt(i){if(!i)return"";if(i.type==="set")return`\u5DF2\u9009 ${i.values.length} \u9879`;let e=[];for(let r of i.conditions){let o=on[r.match]??r.match,n=r.value,s="value2"in r?r.value2:void 0;r.match==="blank"||r.match==="notBlank"?e.push(o):r.match==="inRange"&&n!=null?e.push(`${o} ${n}~${s??n}`):n!=null&&String(n)!==""?e.push(`${o} ${n}`):e.push(o)}let t=i.operator==="or"?" \u6216 ":" \u4E14 ";return e.join(t)}function io(i,e){let t=0,r=i.length;for(;t<r;){let o=t+r>>1;i[o]<=e?t=o+1:r=o}return t}function nn(i,e){let t=0,r=i.length;for(;t<r;){let o=t+r>>1;i[o]<e?t=o+1:r=o}return t}var re=class{constructor(){this.offsets=new Float64Array(1);this.signature=""}update(e){let t=e.map(r=>`${r.id}:${r.currentWidth}`).join("|");if(t===this.signature)return!1;this.signature=t,this.offsets=new Float64Array(e.length+1);for(let r=0;r<e.length;r++)this.offsets[r+1]=this.offsets[r]+e[r].currentWidth;return!0}totalWidth(){return this.offsets[this.offsets.length-1]??0}offsetAt(e){let t=Math.max(0,Math.min(Math.trunc(e),this.offsets.length-1));return this.offsets[t]??0}indexAt(e){let t=Math.max(0,this.offsets.length-1);return t===0?-1:Math.min(t-1,Math.max(0,io(this.offsets,Math.max(0,e))-1))}visibleRange(e,t,r=2){let o=Math.max(0,this.offsets.length-1);if(o===0||t<=0||this.totalWidth()<=t)return{first:0,lastExcl:o};let n=Math.max(0,e),s=n+t,a=Math.max(0,io(this.offsets,n)-1),l=Math.min(o,nn(this.offsets,s));return{first:Math.max(0,a-r),lastExcl:Math.min(o,l+r)}}};var st=class{constructor(e){this.core=e;this.leafCells=[];this.groupCells=[];this.paneTrees={left:[],center:[],right:[]};this.columnViewport=new re;this.centerFirst=0;this.centerLastExcl=Number.MAX_SAFE_INTEGER}build(){this.updateColumnWindowState(),this.core.resizeService.cancelResize();for(let l of this.leafCells){let d=Bt(l.el);if(d)try{d()}catch(c){this.core.reportError(c,"headerComponent.destroy",{colId:l.column.id})}}this.leafCells=[],this.groupCells=[];let e=this.core.columnModel.getHeaderDepth();this.core.skeleton.setHeaderRowCount(e);let t=l=>l.pinned==="left"?"left":l.pinned==="right"?"right":"center",r=(l,d,c)=>{let u=[];for(let h of l)if(h instanceof $){let p=r(h.children,d+1,c);p.length>0&&u.push({group:h,level:d,children:p})}else!h.hide&&t(h)===c&&u.push({column:h,level:d,children:[]});return u},o=this.core.columnModel.getRootChildren(),n=this.core.columnModel.getPaneColumns("center"),s=new Set(n.slice(this.centerFirst,this.centerLastExcl));for(let l of["left","center","right"]){let d=r(o,0,l);this.paneTrees[l]=l==="center"?this.filterTreeColumns(d,s):d}let a=this.core.options.headerHeight;for(let l of["left","center","right"]){let d=this.core.skeleton.headerRows[l];for(let u of d)u.textContent="";let c=u=>{let h=d[Math.min(u.level,d.length-1)];if(u.column){let p=this.createLeafCell(u.column,e-u.level,a);h.appendChild(p.el),this.leafCells.push(p)}else if(u.group){let p=this.createGroupCell(u.group);h.appendChild(p),this.groupCells.push({group:u.group,el:p})}for(let p of u.children)c(p)};for(let u of this.paneTrees[l])c(u)}this.core.options.suppressHeaderFocus||this.leafCells.forEach((l,d)=>{l.el.tabIndex=d===0?0:-1}),this.applyLayout(),this.refreshSortIndicators(),this.refreshFilterIcons(),this.refreshSelectAllCheckbox()}updateColumnWindow(){let e=this.centerFirst,t=this.centerLastExcl;this.updateColumnWindowState(),(e!==this.centerFirst||t!==this.centerLastExcl)&&this.build()}updateColumnWindowState(){let e=this.core.columnModel.getPaneColumns("center"),t=this.core.skeleton.bodyViewports.center;this.columnViewport.update(e);let r=e.length>20?this.columnViewport.visibleRange(t.scrollLeft,t.clientWidth,2):{first:0,lastExcl:e.length};this.centerFirst=r.first,this.centerLastExcl=r.lastExcl}filterTreeColumns(e,t){let r=[];for(let o of e){if(o.column){t.has(o.column)&&r.push(o);continue}let n=this.filterTreeColumns(o.children,t);n.length>0&&r.push({...o,children:n})}return r}createLeafCell(e,t,r){let o=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*r}px`,typeof o.headerClass=="string"?n.classList.add(o.headerClass):Array.isArray(o.headerClass)&&n.classList.add(...o.headerClass),o.headerTooltip&&n.setAttribute("title",o.headerTooltip);let s=o.headerAlign??o.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=o.headerComponent;if(l){let h;try{h=l({colDef:o,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),Ir(n,h.destroy)}else{let p=g("span","mach-header-label");p.textContent=o.headerName??o.field??e.id,n.appendChild(p)}}else{let h=g("span","mach-header-label");h.textContent=o.headerName??o.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=Tr,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(this.canResizeColumn(e)){let h=g("div","mach-header-resize");h.setAttribute("aria-hidden","true"),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().columns.autoSize(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 r=e.def;typeof r.headerClass=="string"?t.classList.add(r.headerClass):Array.isArray(r.headerClass)&&t.classList.add(...r.headerClass);let o=g("span","mach-header-label mach-header-label--group");return o.textContent=e.headerName,t.appendChild(o),t}applyLayout(){let e={left:0,center:0,right:0};for(let t of["left","center","right"]){let r=this.core.skeleton.headerRows[t],o=0,n=new Map;for(let a of this.core.columnModel.getPaneColumns(t))n.set(a.id,o),o+=a.currentWidth;let s=this.core.options.headerHeight;for(let a of this.leafCells){if(this.core.columnModel.paneOf(a.column)!==t)continue;let l=n.get(a.column.id)??0;a.el.style.width=`${a.column.currentWidth}px`,a.el.style.left=`${l}px`,a.el.setAttribute("aria-colindex",String(this.core.columnModel.getFlatIndex(a.column.id)+1))}for(let a of this.groupCells){let l=this.visiblePaneLeaves(a.group,t);if(l.length===0)continue;let d=n.get(l[0].id)??0,c=0;for(let u of l)c+=u.currentWidth;a.el.style.left=`${d}px`,a.el.style.width=`${c}px`,a.el.style.height=`${s}px`,a.el.setAttribute("aria-colspan",String(l.length))}for(let a of r)a.style.width=`${o}px`;e[t]=o}this.core.skeleton.setPaneWidths(e.left,e.right)}visiblePaneLeaves(e,t){return e.getLeafColumns().filter(r=>!r.hide&&this.core.columnModel.paneOf(r)===t)}onHeaderKeyDown(e,t){if(this.core.isDestroyed())return;let r=o=>{let n=Math.max(t.colDef.minWidth??40,t.currentWidth+o);this.core.columnModel.setColumnWidth(t,n),this.core.relayoutColumns(),this.core.commitColumnWidths([t]),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(!this.canResizeColumn(t))return;r(e.key==="ArrowRight"?24:-24);return;case(e.ctrlKey&&(e.key==="ArrowLeft"||e.key==="ArrowRight")):if(!t.movable)return;e.preventDefault();{let n=this.core.columnModel.paneOf(t),s=this.core.columnModel.getPaneColumns(n),a=s.indexOf(t),l=e.key==="ArrowRight"?Math.min(s.length-1,a+1):Math.max(0,a-1);l!==a&&this.core.moveColumn(t.id,l)}return;case(!e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.key==="ArrowLeft"||e.key==="ArrowRight")):e.preventDefault();{let n=this.core.columnModel.getOrderedVisible(),s=n.indexOf(t),a=e.key==="ArrowRight"?Math.min(n.length-1,s+1):Math.max(0,s-1);s>=0&&this.focusHeaderCell(n[a])}return;case(e.key==="Home"||e.key==="End"):e.preventDefault();let o=this.core.columnModel.getOrderedVisible();o.length>0&&this.focusHeaderCell(e.key==="Home"?o[0]:o[o.length-1]);return}}focusHeaderCell(e){let t=this.leafCells.find(r=>r.column.id===e.id);if(!t&&!e.pinned&&(this.scrollColumnIntoView(e),this.updateColumnWindow(),t=this.leafCells.find(r=>r.column.id===e.id)),!!t){for(let r of this.leafCells)r.el.tabIndex=r===t?0:-1;t.el.focus({preventScroll:!0})}}scrollColumnIntoView(e){let t=this.core.columnModel.getPaneColumns("center"),r=t.indexOf(e);if(r<0)return;let o=this.core.skeleton.bodyViewports.center;this.columnViewport.update(t);let n=this.columnViewport.offsetAt(r),s=n+e.currentWidth;n<o.scrollLeft?o.scrollLeft=n:s>o.scrollLeft+o.clientWidth&&(o.scrollLeft=s-o.clientWidth)}canResizeColumn(e){return this.core.options.enableColumnResize&&e.resizable}refreshSortIndicators(){let e=this.core.columnModel.getSortModel(),t=e.length>1;for(let r of this.leafCells){let o=e.findIndex(n=>n.colId===r.column.id);if(o>=0){let n=e[o].direction,s=t?`<span class="mach-sort-badge">${o+1}</span>`:"";r.sortEl.innerHTML=(n==="asc"?Dr:Er)+s,r.el.setAttribute("aria-sort",n==="asc"?"ascending":"descending"),r.el.classList.add("mach-header-cell--sorted")}else r.sortEl.innerHTML="",r.el.removeAttribute("aria-sort"),r.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 r=e[t.column.id],o=r!=null;if(t.filterBtn.classList.toggle("mach-filter-btn--active",o),t.filterTagEl){let n=o?nt(r):"";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=Bt(e.el);if(t)try{t()}catch(r){console.error("[mach-table] headerComponent destroy error",r)}}this.leafCells=[],this.groupCells=[]}};var at=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 lt=class{constructor(e,t,r){this.core=e;this.getRowTop=t;this.findRowAt=r;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 r=this.core.skeleton.rowContainers.center,o=e.clientY-r.getBoundingClientRect().top,n=this.core.rowModel.getDisplayedRowCount(),s=Math.max(0,Math.min(this.findRowAt(o),n));for(;s<n;){let c=this.core.rowModel.getDisplayedRow(s);if(c&&!c.isDetail&&!c.isGroup)break;s++}let a=this.getRowTop(s),l=this.getRowTop(Math.min(n,s+1));s<n&&o>=a+(l-a)/2&&s++;let d=this.getRowTop(s);t.targetIndex=s,t.indicator.style.top=`${d}px`};this.onUp=()=>{let e=this.takeState();if(!e||!e.active||e.targetIndex<0)return;let t=e.node.rowIndex,r=Math.max(0,Math.min(e.targetIndex,this.core.rowModel.getDisplayedRowCount()));t===r||t===r-1||(this.core.emit("rowDragEnd",{rowNode:e.node,fromIndex:t,toIndex:r}),this.core.options.applyRowDrag&&!this.core.rowModel.isTree&&this.core.rowModel.reorderRowsByDisplayed(t,r>t?r-1:r))}}start(e,t){this.destroy();let r=g("div","mach-row-drop-indicator");this.core.skeleton.rowContainers.center.appendChild(r),this.state={node:t,startY:e.clientY,indicator:r,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 dt=class{constructor(){this.sizes=new Float64Array(0);this.tree=new Float64Array(1);this.indexes=new WeakMap;this.sizeCounts=new Map;this.minimum=0}reset(e,t){this.sizes=new Float64Array(e.length),this.tree=new Float64Array(e.length+1),this.indexes=new WeakMap,this.sizeCounts=new Map,this.minimum=0;for(let r=0;r<e.length;r++){this.indexes.set(e[r],r);let o=Math.max(1,t(e[r],r));this.sizes[r]=o,this.changeSizeCount(o,1),this.add(r,o)}}get length(){return this.sizes.length}indexOf(e){return this.indexes.get(e)??-1}sizeAt(e){return this.sizes[e]??0}update(e,t){if(e<0||e>=this.sizes.length)return!1;let r=Math.max(1,t),o=r-this.sizes[e];return Math.abs(o)<.01?!1:(this.changeSizeCount(this.sizes[e],-1),this.sizes[e]=r,this.changeSizeCount(r,1),this.add(e,o),!0)}offsetAt(e){let t=Math.max(0,Math.min(Math.trunc(e),this.sizes.length)),r=0;for(;t>0;)r+=this.tree[t],t-=t&-t;return r}totalSize(){return this.offsetAt(this.sizes.length)}minimumSize(){return this.minimum}findIndex(e){if(this.sizes.length===0)return 0;let t=Math.max(0,e),r=0,o=0,n=1;for(;n<<1<=this.sizes.length;)n<<=1;for(;n>0;){let s=r+n;s<=this.sizes.length&&o+this.tree[s]<=t&&(r=s,o+=this.tree[s]),n>>=1}return Math.min(r,this.sizes.length-1)}add(e,t){for(let r=e+1;r<this.tree.length;r+=r&-r)this.tree[r]+=t}changeSizeCount(e,t){let r=(this.sizeCounts.get(e)??0)+t;if(r<=0?this.sizeCounts.delete(e):this.sizeCounts.set(e,r),this.sizeCounts.size===0)this.minimum=0;else if(t>0&&(this.minimum===0||e<this.minimum))this.minimum=e;else if(t<0&&e===this.minimum&&!this.sizeCounts.has(e)){let o=Number.POSITIVE_INFINITY;for(let n of this.sizeCounts.keys())o=Math.min(o,n);this.minimum=Number.isFinite(o)?o:0}}};var k=["left","center","right"],ct=class{constructor(e){this.core=e;this.pool=[];this.poolSize=0;this.first=0;this.lastExcl=-1;this.rafId=0;this.hoverIndex=-1;this.rowSizes=new dt;this.columnViewport=new re;this.rangeSelection=new at;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.lastMinRowHeight=0;this.rowHeightCache=new WeakMap;this.dirtyHeightNodes=new Set;this.rowLayoutSignature="";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 r=e;if(typeof r.clientX!="number")return;if(!t.active){let s=Math.abs(r.clientX-t.startX),a=Math.abs(r.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(r),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 o=Math.max(t.c2+1,this.fillTargetCol(r)),n=this.rangeSelection.getEnd();if(n&&n.colIdx!==o){let s=this.normalizedRange();this.rangeSelection.setEnd({row:n.row,colIdx:o}),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 r=e,o=()=>{this.cancelFillDrag()};if(!t.active){o();return}if(t.axis==="h"){let s=typeof r.clientX=="number"?Math.max(t.c2+1,this.fillTargetCol(r)):t.c2+1;if(o(),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 r.clientY=="number"?this.fillTargetRow(r):t.r2;if(o(),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:r,index:o,cellEl:n}=t;if(r.isGroup){if(this.focusGridRoot(),e.target.closest?.(".mach-row-checkbox")){this.core.selectionService.setGroupSelected(r,!this.core.selectionService.getGroupSelectionState(r).all);return}let p=this.core.columnModel.getGroupLabelColumn();(!p||!n||n.dataset.colId===p.id)&&this.core.rowModel.toggleGroup(r.id);return}let s=e.target;if(this.handleTreeToggleClick(s,r,n))return;let a=n?.dataset.colId??"",l=a?this.core.columnModel.getColumn(a):void 0;if(l?.isDetailToggle&&!r.isDetail){this.focusGridRoot(),this.core.toggleDetail(r.id);return}if(r.isDetail)return;if(s.closest?.(".mach-row-checkbox")){this.focusGridRoot(),this.core.options.suppressCellFocus||this.setFocusedCell(o,this.firstCheckboxColId()),this.core.selectionService.onRowClick(r,e,!0);return}if(!n||!l)return;this.focusGridRoot(),this.core.options.suppressCellFocus||this.setFocusedCell(o,a),this.core.selectionService.onRowClick(r,e,!1);let d=this.core.getCellValue(r,l),c=this.core.emit("cellClicked",{event:e,rowNode:r,rowIndex:o,column:l,colDef:l.colDef,value:d});l.colDef.onCellClick?.(c),this.core.emit("rowClicked",{event:e,rowNode:r,rowIndex:o}),(this.core.options.singleClickEdit||l.colDef.singleClickEdit===!0)&&!r.isGroup&&this.core.editingService.isEditable(r,l)&&this.core.editingService.start(o,l)};this.onBodyDblClick=e=>{if(this.core.isDestroyed())return;let t=this.resolveEventTarget(e);if(!t)return;let{node:r,index:o,cellEl:n}=t;if(r.isDetail||r.isGroup||!n)return;let s=n.dataset.colId??"",a=this.core.columnModel.getColumn(s);if(!a)return;let l=this.core.getCellValue(r,a),d=this.core.emit("cellDoubleClicked",{event:e,rowNode:r,rowIndex:o,column:a,colDef:a.colDef,value:l});a.colDef.onCellDoubleClick?.(d),this.core.emit("rowDoubleClicked",{event:e,rowNode:r,rowIndex:o}),this.core.editingService.isEditable(r,a)&&this.core.editingService.start(o,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:r,index:o,cellEl:n}=t,s=n.dataset.colId??"",a=this.core.columnModel.getColumn(s);if(a&&(this.core.emit("cellContextMenu",{event:e,rowNode:r,rowIndex:o,column:a,colDef:a.colDef,value:this.core.getCellValue(r,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(o,l,!1)}this.core.contextMenuService.open(e.clientX,e.clientY,{rowIndex:o,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 r=this.core.columnModel.getFlatIndex(t.cellEl.dataset.colId??"");r>=0&&(this.startRange(t.index,r,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 r=this.core.columnModel.getFlatIndex(t.cellEl.dataset.colId??""),o=this.rangeSelection.getEnd();r>=0&&o&&(o.row!==t.index||o.colIdx!==r)&&this.startRange(t.index,r,!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 r=this.resolveEventTarget(e);!r||r.node.isDetail||r.node.isGroup||(this.rowDragController.start(e,r.node),e.preventDefault())};this.rowDragController=new lt(e,t=>this.rowTop(t),t=>this.rowAtOffset(t,this.core.rowModel.getDisplayedRowCount()))}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 r of this.pool){r.detailRow&&this.cleanupDetail(r.detailRow);for(let o of k)for(let n of r.cells[o]??[])r.index>=0&&this.core.editingService.releaseCell(r.index,n.dataset.colId??"",n),S(this.core,n)}this.fillHandleEl?.remove(),this.fillDragIndicator?.remove(),this.pool=[],this.poolSize=0,this.pendingFlash=[],this.dirtyHeightNodes.clear(),this.rowSizes.reset([],()=>this.core.options.rowHeight),this.columnViewport.update([]),this.measureCanvas=null}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)`,this.core.headerRenderer.updateColumnWindow(),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 k)e[t]=this.core.columnModel.getPaneColumns(t).reduce((r,o)=>r+o.currentWidth,0);return e}applyContainerSizes(){let e=this.core.skeleton,t=this.paneWidths();this.columnViewport.update(this.core.columnModel.getPaneColumns("center")),t.center=this.columnViewport.totalWidth();let r=e.bodyViewports.center,o=this.core.rowModel.getDisplayedRows(),n=this.core.rowModel.getDisplayTotalCount(),s=Math.min(n,o.length),a=this.core.options.rowHeight,l=this.core.options.masterDetail?[]:this.collectAutoHeightColumns(),d=this.core.options.datasourceMode!=="block"&&(this.core.options.masterDetail||this.core.options.getRowHeight!=null||l.length>0),c=d?`${this.core.rowModel.getDisplayRevision()}|${a}|${this.core.options.detailRowHeight}|${l.map(f=>`${f.id}:${f.currentWidth}`).join(",")}`:`fixed|${a}`;if(!d)this.rowSizes.length>0&&this.rowSizes.reset([],()=>a),this.rowLayoutSignature=c,this.dirtyHeightNodes.clear(),this.lastMinRowHeight=a;else if(c!==this.rowLayoutSignature||this.rowSizes.length!==s){let f=o.slice(0,s);this.rowSizes.reset(f,y=>this.resolveRowHeight(y,l)),this.rowLayoutSignature=c,this.dirtyHeightNodes.clear(),this.lastMinRowHeight=this.rowSizes.minimumSize()||a}else if(this.dirtyHeightNodes.size>0){for(let f of this.dirtyHeightNodes){let y=this.rowSizes.indexOf(f);y>=0&&this.rowSizes.update(y,this.resolveRowHeight(f,l))}this.dirtyHeightNodes.clear(),this.lastMinRowHeight=this.rowSizes.minimumSize()||a}let h=(d?this.rowSizes.totalSize():s*a)+Math.max(0,n-s)*a,p=Math.max(0,r.clientWidth-t.left-t.right),m=Math.max(t.center,p);for(let f of k){let y=e.rowContainers[f];y.style.height=`${h}px`,f==="center"&&(y.style.width=`${m}px`)}this.applyDomLayoutHeight(h),e.root.setAttribute("aria-rowcount",String(n+e.getHeaderRowCount()))}invalidateRowHeight(e){this.rowHeightCache.delete(e),this.dirtyHeightNodes.add(e)}applyDomLayoutHeight(e){this.core.skeleton.bodyEl.style.height=this.core.options.domLayout==="autoHeight"?`${e}px`:""}invalidateAllRowHeights(){this.rowHeightCache=new WeakMap,this.dirtyHeightNodes.clear(),this.rowLayoutSignature=""}resolveRowHeight(e,t){if(e.isDetail)return this.core.options.detailRowHeight;let r=this.rowHeightCache.get(e);if(r!==void 0)return r;let o=this.core.options.rowHeight,n=this.core.options.getRowHeight;if(n)try{let s=n({data:e.data,node:e,api:this.core.getApi()});o=Number.isFinite(s)?Math.max(1,s||o):o}catch(s){this.core.reportError(s,"getRowHeight",{rowId:e.id})}return t.length>0&&(o=Math.max(o,this.measureAutoHeight(e,t))),this.rowHeightCache.set(e,o),o}rowTop(e){let t=this.rowSizes.length;return t===0?Math.max(0,e)*this.core.options.rowHeight:e<=t?this.rowSizes.offsetAt(e):this.rowSizes.totalSize()+(e-t)*this.core.options.rowHeight}rowAtOffset(e,t){if(t<=0)return 0;let r=this.rowSizes.length,o=this.rowSizes.totalSize();if(r>0&&e<o)return this.rowSizes.findIndex(e);let n=r+Math.floor(Math.max(0,e-o)/this.core.options.rowHeight);return Math.max(0,Math.min(n,t-1))}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 r=this.measureCanvas.getContext("2d");if(!r)return 0;let o=window.getComputedStyle(this.core.skeleton.root),n=parseFloat(o.fontSize)||13;r.font=`${o.fontStyle} ${o.fontWeight} ${n}px ${o.fontFamily}`;let s=parseFloat(o.getPropertyValue("--mach-cell-padding"))||9,a=Math.round(n*1.45),l=1;for(let d of t){let c=O(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=r.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 r of e)for(let o of t)this.pendingFlash.push([r,o])}flushFlash(){if(this.pendingFlash.length===0)return;let e=this.pendingFlash;this.pendingFlash=[];for(let[t,r]of e){let o=this.getCellElement(t,r);if(!o)continue;o.classList.remove("mach-cell--flash"),o.offsetWidth,o.classList.add("mach-cell--flash");let n=ce(o),s=n.flashTimer;s&&clearTimeout(s),n.flashTimer=setTimeout(()=>{o.classList.remove("mach-cell--flash"),n.flashTimer=void 0},800)}}relayout(){this.applyContainerSizes();let e=this.core.skeleton.bodyViewports.center,r=this.core.options.rowHeight;this.core.options.masterDetail&&(r=Math.min(r,this.core.options.detailRowHeight)),this.lastMinRowHeight>0&&(r=Math.min(r,this.lastMinRowHeight));let o=Math.ceil(e.clientHeight/Math.max(1,r)),n=this.core.options.domLayout==="autoHeight"?this.core.rowModel.getDisplayedRowCount():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:{}},r=this.core.skeleton;for(let o of k){if(this.core.columnModel.getPaneColumns(o).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",r.rowContainers[o].appendChild(s),t.rows[o]=s,t.cells[o]=[],t.cellColIds[o]=[],this.reconcilePaneCells(t,o)}if(this.core.options.masterDetail){let o=g("div","mach-row mach-detail-row");o.style.height=`${this.core.options.detailRowHeight}px`,o.setAttribute("role","row"),o.style.display="none",r.rowContainers.center.appendChild(o),t.detailRow=o}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 r=document.createElement("input");r.type=this.core.options.rowSelection==="single"?"radio":"checkbox",r.className="mach-row-checkbox",r.type==="radio"&&(r.name=`mach-radio-${this.core.gridId}`),r.setAttribute("aria-label","select row"),t.appendChild(r),t.classList.add("mach-cell--selection")}return t}reconcilePaneCells(e,t){let r=e.rows[t];if(!r)return;let o=this.activePaneColumns(t),n=e.cells[t]??[],s=e.cellColIds[t]??[];if(s.length===o.length&&s.every((c,u)=>c===o[u].id))return;let a=new Map;s.forEach((c,u)=>a.set(c,n[u]));let l=[],d=[];for(let c of o){let u=a.get(c.id)??this.createCell(c);a.delete(c.id),r.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 k){for(let r of e.cells[t]??[])S(this.core,r);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 k){let r=this.core.columnModel.getPaneColumns(t),o=this.activePaneColumns(t),n=0,s=[];if(t==="center"&&o.length>0){let a=r.indexOf(o[0]);this.columnViewport.update(r),n=this.columnViewport.offsetAt(a)}for(let a of o)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<o.length&&c<l.length;c++)l[c].style.width=`${o[c].currentWidth}px`,l[c].style.left=`${s[c]}px`,l[c].setAttribute("aria-colindex",String(this.core.columnModel.getFlatIndex(o[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"),r=this.colFirst,o=this.colLastExcl;this.columnViewport.update(t);let n=t.length>20?this.columnViewport.visibleRange(e.scrollLeft,e.clientWidth,2):{first:0,lastExcl:t.length};return this.colFirst=n.first,this.colLastExcl=n.lastExcl,n.first!==r||n.lastExcl!==o}updateRange(e=!1){let t=this.core.performanceMonitor.start();if(!this.updateRangeInner(e))return;let r=Math.max(0,this.lastExcl-this.first),o=this.core.columnModel.getPaneColumns("left").length+this.activePaneColumns("center").length+this.core.columnModel.getPaneColumns("right").length;this.core.performanceMonitor.recordRender(t,r,o)}updateRangeInner(e){let t=this.core.skeleton.bodyViewports.center,r=this.core.rowModel.getDisplayedRowCount(),o=this.core.options.rowBuffer,n=this.computeColWindow();if(this.reconcileColumnWindow(n),r===0){for(let l of this.pool)this.hideSlot(l);return this.first=0,this.lastExcl=0,!0}if(this.renderAutoHeightRange(r,e))return!0;let{first:s,lastExcl:a}=this.calculateVisibleRange(t,r,o);return!e&&s===this.first&&a===this.lastExcl?n:(this.first=s,this.lastExcl=a,this.hideOutsideRange(s,a),this.renderVirtualRange(s,a,e,n),!0)}calculateVisibleRange(e,t,r){let o=this.rowAtOffset(e.scrollTop,t),n=e.scrollTop+e.clientHeight,s=Math.min(t,this.rowAtOffset(n,t)+1);return{first:M(o-r,0,t-1),lastExcl:M(s+r,1,t)}}hideOutsideRange(e,t){for(let r of this.pool)r.index!==-1&&(r.index<e||r.index>=t)&&this.hideSlot(r)}renderVirtualRange(e,t,r,o){for(let n=e;n<t;n++){let s=this.core.rowModel.getDisplayedRow(n),a=this.pool[n%this.poolSize];if(!(!a||!s)){if(!r&&a.index===n&&a.nodeId===s.id){o&&a.kind==="master"&&this.renderPaneCells(a,s,"center");continue}this.assignSlot(a,n)}}}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 r=0;r<e;r++){let o=this.core.rowModel.getDisplayedRow(r),n=this.pool[r];!n||!o||(t||n.index!==r||n.nodeId!==o.id)&&this.assignSlot(n,r)}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 k){let r=e.rows[t];r&&(r.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 r=this.core.rowModel.getDisplayedRow(t);if(!r){this.hideSlot(e);return}e.index=t,e.nodeId=r.id;let o=this.rowTop(t),n=this.rowTop(t+1)-o;if(r.isDetail){e.kind="detail";for(let p of k){let m=e.rows[p];m&&(m.style.display="none")}let h=e.detailRow;h&&(h.style.display="",h.style.transform=`translateY(${o}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,r));return}e.kind="master",e.detailRow&&(e.detailRow.style.display="none");let s=this.core.rowModel.isTree,a=r.isGroup===!0,l=s&&this.core.rowModel.hasChildren(r.id),d=a||l||this.core.options.masterDetail&&this.core.rowModel.isRowExpandable(r),c=a?this.core.rowModel.isGroupExpanded(r.id):this.core.rowModel.isRowExpanded(r.id),u=a?(r.groupLevel??0)+1:s?this.core.rowModel.getTreeDepth(r)+1:null;for(let h of k){let p=e.rows[h];p&&(p.style.display="",p.style.transform=`translateY(${o}px)`,p.style.height=`${n}px`,p.dataset.index=String(t),p.dataset.id=r.id,p.setAttribute("aria-rowindex",String(t+this.core.skeleton.getHeaderRowCount()+1)),p.classList.toggle("mach-row--selected",r.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",r.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,r,h))}this.focusedCell&&this.focusedCell.rowIndex===t&&this.applyFocusClass()}renderPaneCells(e,t,r){let o=this.activePaneColumns(r),n=e.cells[r];if(!n)return;let s=e.index,a=r==="center"&&this.core.columnModel.hasColSpan(),l=0;e.rows[r]?.classList.toggle("mach-row--editing",this.core.editingService.isRowEditing(s));for(let d=0;d<o.length;d++){let c=o[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,s,o.length-d);h>1?(l=h-1,this.applySpanWidth(u,o,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,r,o){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:r});return Math.max(1,Math.min(Math.round(s)||1,o))}catch(s){return this.core.reportError(s,"colSpan",{colId:t.id,rowId:e.id}),1}}applySpanWidth(e,t,r,o){let n=0;for(let s=r;s<r+o&&s<t.length;s++)n+=t[s].currentWidth;e.style.width=`${n}px`,e.setAttribute("aria-colspan",String(o))}renderDetailContent(e,t){this.cleanupDetail(e);let r=t.masterId!=null?this.core.rowModel.getNodeById(t.masterId):t,o=g("div","mach-detail");e.appendChild(o);let n=this.core.options.detailRowRenderer;if(n){let s={data:t.data,node:r??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"?o.textContent=a:a instanceof HTMLElement?o.appendChild(a):a&&typeof a=="object"&&a.el instanceof HTMLElement&&(o.appendChild(a.el),Mr(e,a.destroy))}}cleanupDetail(e){let t=kr(e);if(t)try{t()}catch(r){this.core.reportError(r,"detailRowRenderer.destroy")}e.textContent=""}renderCell(e,t,r){if(t.loading){S(this.core,e),e.className="mach-cell mach-cell--loading",e.setAttribute("aria-readonly","true"),e.setAttribute("aria-busy","true");let n=document.createElement("span");n.className="mach-cell-loading-bar",n.style.width=`${34+(r.id.length*13+t.rowIndex*7)%44}%`,e.replaceChildren(n),this.resetSpanStyle(e);return}e.removeAttribute("aria-busy"),e.setAttribute("aria-readonly",this.core.editingService.isEditable(t,r)?"false":"true"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-level");let o=this.cellRenderKind(t,r);if(o!=="standard"){S(this.core,e),this.renderStructuralCell(o,e,t,r);return}_e(this.core,e,t,r),he(this.core,e,t,r),ze(this.core,e,t,r),this.applyCellSpanStyle(e,t,r),this.appendEditableIndicator(e,t,r)}cellRenderKind(e,t){return e.isGroup?"group":t.isDetailToggle?"detail":t.hasCheckbox?"checkbox":t.colDef.rowDrag?"drag":Q(t.colDef,"index")?"index":this.core.rowModel.isTree&&this.getTreeColumn()?.id===t.id?"tree":"standard"}renderStructuralCell(e,t,r,o){if(e==="group")this.renderGroupCell(t,r,o);else if(e==="detail"){let n=this.core.rowModel.isRowExpanded(r.id),s=g("span",`mach-detail-toggle${n?" mach-detail-toggle--open":""}`);s.textContent="\u25B6",t.replaceChildren(s),t.classList.add("mach-cell--detail-toggle"),this.resetSpanStyle(t)}else if(e==="checkbox"){let n=t.querySelector(".mach-row-checkbox");n&&(n.checked=r.selected,n.indeterminate=this.core.selectionService.isIndeterminate(r.id),n.disabled=!this.core.selectionService.isSelectable(r)),t.className!=="mach-cell mach-cell--selection"&&(t.className="mach-cell mach-cell--selection"),this.resetSpanStyle(t)}else if(e==="drag"){let n=g("span","mach-row-drag-handle");n.textContent="\u283F",t.replaceChildren(n),t.className!=="mach-cell mach-cell--drag"&&(t.className="mach-cell mach-cell--drag"),this.resetSpanStyle(t)}else e==="index"?(t.textContent=String(this.core.rowModel.getRowSeq(r)+this.core.options.indexOffset),t.className!=="mach-cell mach-cell--index"&&(t.className="mach-cell mach-cell--index"),this.applyCellSpanStyle(t,r,o)):this.renderTreeCell(t,r,o)}appendEditableIndicator(e,t,r){if(this.core.options.editType!=="cell"||this.core.options.editableIndicator==="none"||!this.core.editingService.isEditable(t,r))return;let o=document.createElement("button");o.type="button",o.className=`mach-cell-edit-trigger mach-cell-edit-trigger--${this.core.options.editableIndicator}`,o.tabIndex=-1,o.title="Edit cell",o.setAttribute("aria-label","Edit cell"),o.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>',o.addEventListener("mousedown",n=>{n.preventDefault(),n.stopPropagation()}),o.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),this.setFocusedCell(t.rowIndex,r.id),this.core.editingService.start(t.rowIndex,r)}),e.appendChild(o)}releaseSlotEditors(e){if(!(e.index<0))for(let t of k)for(let r of e.cells[t]??[])this.core.editingService.releaseCell(e.index,r.dataset.colId??"",r)}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,r){let o=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),o){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,r,this.core.getCellValue(t,r)),a.appendChild(l),e.replaceChildren(a),he(this.core,e,t,r)}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,r){let o=this.core.rowModel.getSpanInfo(r.id);if(!o||t.isDetail){this.resetSpanStyle(e);return}let n=this.core.rowModel.getRowSeq(t)-1;if(n<0||n>=o.length){this.resetSpanStyle(e);return}let s=o[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.core.rowModel.getDisplayedRowCount()),l=this.rowTop(a)-this.rowTop(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,r){let o="mach-cell";if(r.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!==`${o} mach-cell--selection`&&(e.className=`${o} mach-cell--selection`);return}if(r.isDetailToggle){e.textContent="",e.className!==o&&(e.className=o);return}let n=this.core.columnModel.getGroupLabelColumn();if(n&&r.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!==`${o} mach-cell--group`&&(e.className=`${o} mach-cell--group`);return}if(r.colDef.aggFunc&&t.aggValues&&Object.prototype.hasOwnProperty.call(t.aggValues,r.id)){let s=t.aggValues[r.id],a=r.colDef.valueFormatter!=null?ue(this.core,t,r,s):Ve(s);e.textContent=a,e.className!==`${o} mach-cell--num`&&(e.className=`${o} mach-cell--num`);return}e.textContent="",e.className!==o&&(e.className=o)}refreshRows(e){if(this.core.isDestroyed())return;let t=new Set;for(let r of e){if(r<0||t.has(r))continue;t.add(r);let o=this.pool[r%this.poolSize];if(!o||o.index!==r)continue;let n=this.core.rowModel.getDisplayedRow(r);if(n){if(o.kind==="detail"){o.detailRow&&this.renderDetailContent(o.detailRow,n);continue}for(let s of k)o.cells[s]&&this.renderPaneCells(o,n,s)}}this.applyFocusClass(),this.flushFlash()}refreshAllCells(){this.refreshCells()}refreshCells(e={}){if(this.core.isDestroyed())return;let t=e.rowIds==null?null:new Set(e.rowIds),r=e.rowIndexes==null?null:new Set(e.rowIndexes),o=e.columns==null?null:new Set(e.columns);for(let n of this.pool){let s=this.core.rowModel.getDisplayedRow(n.index);!s||!this.matchesRefreshRow(n,s,t,r)||this.refreshSlotCells(n,s,o,e.force===!0)}this.applyFocusClass(),this.flushFlash()}matchesRefreshRow(e,t,r,o){return e.index<0?!1:r==null&&o==null?!0:r?.has(t.id)===!0||o?.has(e.index)===!0}refreshSlotCells(e,t,r,o){if(e.kind==="detail"){r==null&&e.detailRow&&this.renderDetailContent(e.detailRow,t);return}let n=r==null||this.core.columnModel.hasColSpan();for(let s of k)n?this.renderPaneCells(e,t,s):this.refreshPaneCells(e,t,s,r,o)}refreshPaneCells(e,t,r,o,n){let s=this.activePaneColumns(r),a=e.cells[r];if(a)for(let l=0;l<s.length;l++){let d=s[l];if(!o.has(d.id))continue;let c=a[l];c&&(this.core.editingService.renderEditor(e.index,t,d,c)||(n&&S(this.core,c),this.renderCell(c,t,d),this.applyRangeClass(c,e.index,d)))}}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 r=this.core.columnModel.getColumn(t);if(!r)return null;let o=this.paneForColumn(r),n=this.pool[e%Math.max(1,this.poolSize)]?.cellColIds[o]?.indexOf(r.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[o]?.[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 r=this.core.columnModel.getFlatIndex(t.colId);if(r>=0)return{r1:t.rowIndex,c1:r,r2:t.rowIndex,c2:r}}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 r=[],o=n=>{if(n)for(let s=n.r1;s<=n.r2;s++)r.push(s)};o(e),o(t),r.length>0&&this.refreshRows(r)}startRange(e,t,r){let o=this.normalizedRange();this.rangeSelection.start({row:e,colIdx:t},r);let n=this.normalizedRange();this.refreshRowRange(o,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 r=this.core.rowModel.getDisplayedRowCount(),o=this.core.columnModel.getOrderedVisible().length,n=this.normalizedRange();this.rangeSelection.setEnd({row:Math.max(0,Math.min(e,r-1)),colIdx:Math.max(0,Math.min(t,o-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,r){let o=this.normalizedRange();if(!o){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(r.id);if(n<0)return;let s=t>=o.r1&&t<=o.r2&&n>=o.c1&&n<=o.c2;e.classList.toggle("mach-cell--range",s),s?(e.classList.toggle("mach-cell--range-top",t===o.r1),e.classList.toggle("mach-cell--range-bottom",t===o.r2),e.classList.toggle("mach-cell--range-left",n===o.c1),e.classList.toggle("mach-cell--range-right",n===o.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 r=this.core.columnModel,o=r.getPaneColumns("left").length,n=r.getPaneColumns("center");if(t.c2<o||t.c2>=o+n.length){e.style.display="none";return}let s=t.c2-o;this.columnViewport.update(n);let a=this.columnViewport.offsetAt(s+1),l=this.rowTop(Math.min(t.r2+1,this.core.rowModel.getDisplayedRowCount()));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 r=this.core.skeleton.rowContainers.center.getBoundingClientRect(),o=e.clientY-r.top,n=this.core.rowModel.getDisplayedRowCount(),s=this.rowAtOffset(o,n);return Math.max(this.fillDrag.r2,Math.min(s,n-1))}fillTargetCol(e){let r=this.core.skeleton.rowContainers.center.getBoundingClientRect(),o=e.clientX-r.left,n=this.core.columnModel,s=n.getPaneColumns("left").length,a=n.getPaneColumns("center");this.columnViewport.update(a);let l=this.columnViewport.indexAt(o);if(l<0)return s;let d=this.columnViewport.offsetAt(l)+a[l].currentWidth/2;return o<d?s+l:l+1<a.length?s+l+1: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,r,o,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=r;f<=o;f++){let y=s[f];c.push(y?this.core.getCellValue(d,y):void 0)}let u=o-r+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=o+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-r,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,r,o,n){let s=this.core.columnModel.getOrderedVisible(),a=new Set;this.core.undoService.beginBatch();try{this.fillValuesInner(e,t,r,o,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,r,o,n,s,a){for(let l=r;l<=o;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,r=this.core.columnModel.getPaneColumns("center");this.columnViewport.update(r);let o=this.columnViewport.offsetAt(r.indexOf(e)),n=t.scrollLeft,s=t.clientWidth;o<n?t.scrollLeft=o:o+e.currentWidth>n+s&&(t.scrollLeft=o+e.currentWidth-s)}scrollToIndex(e,t="top"){let r=this.core.skeleton.bodyViewports.center,o=this.core.rowModel.getDisplayedRowCount();if(o===0)return;let n=M(e,0,o-1),s=r.clientHeight,a=r.scrollTop,l=this.rowTop(n),d=this.rowTop(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.rowTop(o)-s);r.scrollTop=M(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 r=this.pool[e%this.poolSize];if(!(!r||r.index!==e||r.kind!=="master"))for(let o of k)r.rows[o]?.classList.toggle("mach-row--hover",t)}focusGridRoot(){this.core.skeleton.root.focus({preventScroll:!0})}resolveEventTarget(e){let t=e.target,r=t.closest(".mach-row");if(!r)return null;let o=Number(r.dataset.index);if(Number.isNaN(o))return null;let n=this.core.rowModel.getDisplayedRow(o);if(!n)return null;let s=t.closest(".mach-cell");return{node:n,index:o,cellEl:s}}handleTreeToggleClick(e,t,r){if(!this.core.rowModel.isTree||!e.closest(".mach-detail-toggle"))return!1;let o=this.getTreeColumn();return!o||r?.dataset.colId!==o.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 ut=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,r=this.core.rowModel.getDisplayedRows().filter(n=>!n.isDetail&&!n.isGroup),o={...D,...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:r.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=I(o.totalRowsLabel,r.length):u.textContent=""})}}destroy(){this.footerEl?.remove(),this.footerEl=null}};var ht=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,r,o)=>{let n=g("button",`mach-pagination-btn ${t}`);return n.type="button",n.title=r,n.setAttribute("aria-label",r),n.textContent=o,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((r,o)=>r-o)),this.sizeSelect.textContent="";for(let r of e){let o=document.createElement("option");o.value=String(r),o.textContent=I(this.t("perPage"),r),r===t&&(o.selected=!0),this.sizeSelect.appendChild(o)}}t(e){return this.core.options.locale?.[e]??D[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,r=e.getTotalRowCount(),o=t&&r>0;if(this.barEl.style.display=o?"":"none",!o)return;let n=e.getCurrentPage(),s=e.getPageCount();if(this.totalEl&&this.core.options.paginationShowTotal){let a=I(this.t("paginationTotal"),r);this.totalEl.textContent!==a&&(this.totalEl.textContent=a)}if(this.pageEl){let a=$e(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 K=["left","center","right"],pt=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 r of K)t.segments[r].className=`mach-pinned-seg mach-pinned-seg--${r}`,r!=="center"&&t.segments[r].classList.add("mach-pane--hidden"),r==="center"&&t.centerViewport.appendChild(t.segments[r]);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 K)for(let a of n[s])S(this.core,a);for(let n of K){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 r=this.core.options.rowHeight,o=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 K){let c=g("div","mach-pinned-row");c.style.height=`${r}px`,c.setAttribute("role","row"),l[d]=[];for(let u of o.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{_e(this.core,h,a,u),he(this.core,h,a,u),ze(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},r={left:[],center:[],right:[]};for(let o of K){let n=0;for(let s of e.getPaneColumns(o))r[o].push(n),n+=s.currentWidth;t[o]=n}for(let o of[this.top,this.bottom]){let n=o.data.length===0;o.segments.left.classList.toggle("mach-pane--hidden",n||t.left<=0),o.segments.right.classList.toggle("mach-pane--hidden",n||t.right<=0),o.segments.left.style.width=`${t.left}px`,o.segments.right.style.width=`${t.right}px`,o.segments.center.style.width=`${t.center}px`,o.cells.forEach(s=>{let a=0;for(let l of K){let d=e.getPaneColumns(l);s[l].forEach((c,u)=>{c.style.width=`${d[u].currentWidth}px`,c.style.left=`${r[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 r of K)for(let o of t[r])S(this.core,o);this.top=null,this.bottom=null}};var ft=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 r=g("span",`mach-statusbar-item mach-statusbar-item--${t}`);this.barEl.appendChild(r),this.items[t]=r}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={...D,...e.locale},r=(o,n)=>{let s=t[o]??D[o];return n===void 0?s:I(s,typeof n=="number"?n:parseFloat(String(n))||0)};if(this.items.rowCount){let o=this.core.rowModel,n=o.getDisplayTotalCount(),s=o.paginationActive?o.getTotalRowCount():o.getDisplayedRowCount(),a=o.isInfinite&&n>s?`${I(r("totalRowsLabel"),s)} / ${n}`:I(r("totalRowsLabel"),s);this.items.rowCount.textContent!==a&&(this.items.rowCount.textContent=a)}if(this.items.selectedRowCount){let o=this.core.selectionService.getSelectedNodes().length,n=I(r("statusSelected"),o);this.items.selectedRowCount.textContent!==n&&(this.items.selectedRowCount.textContent=n)}if(this.items.rangeAggregate){let o=this.core.bodyRenderer.normalizedRange(),n="";if(o){let s=this.core.columnModel.getOrderedVisible(),a=0,l=0;for(let d=o.r1;d<=o.r2;d++){let c=this.core.rowModel.getDisplayedRow(d);if(!(!c||c.isDetail||c.isGroup))for(let u=o.c1;u<=o.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=`${r("statusSum",c)} \xB7 ${r("statusAvg",String(d))} \xB7 ${r("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 Ut(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}function no(i){return typeof TextEncoder>"u"?i.length*2:new TextEncoder().encode(i).byteLength}function Kt(i={}){let e=(i.namespace??"mach-table:grid-state").replace(/:+$/,""),t=Math.max(1024,Math.floor(i.maxBytes??512*1024)),r=n=>`${e}:${n}`,o=(n,s,a)=>{try{i.onError?.(n,s,a)}catch{}};return{storageKey:r,load(n){try{let s=(i.storage??Ut())?.getItem(r(n));if(!s)return null;if(no(s)>t)throw new RangeError(`[MachTable] Stored grid state for "${n}" exceeds ${t} bytes.`);let a=JSON.parse(s);if(a?.schemaVersion!==2)throw new TypeError(`[MachTable] Stored grid state for "${n}" uses an unsupported schema.`);let l=G(a.state);if(!l)throw new TypeError(`[MachTable] Stored grid state for "${n}" is invalid.`);return l}catch(s){return o(s,"load",n),null}},save(n,s){try{let a=G(s);if(!a)throw new TypeError(`[MachTable] Invalid grid state for "${n}".`);let l=JSON.stringify({schemaVersion:2,savedAt:Date.now(),state:a});if(no(l)>t)throw new RangeError(`[MachTable] Grid state for "${n}" exceeds ${t} bytes.`);(i.storage??Ut())?.setItem(r(n),l)}catch(a){o(a,"save",n)}},clear(n){try{(i.storage??Ut())?.removeItem(r(n))}catch(s){o(s,"clear",n)}}}}var jt=Kt();function mt(i,e){jt.save(i,e)}function gt(i){return jt.load(i)}function so(i){jt.clear(i)}var sn=[[/^(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 Yt(i,e){let t=String(i??"");if(e){let r=e[t];if(r)return r;let o=e[t.toLowerCase()];if(o)return o}for(let[r,o]of sn)if(r.test(t))return o;return"neutral"}function Xt(i={}){return e=>{if(e.value==null||e.value==="")return"";let t=Yt(e.value,i.variantMap),r=i.labelMap?.[String(e.value)]??(e.formatted||String(e.value)),o=document.createElement("span");return o.className=`mach-tag mach-tag--${t}`,o.textContent=r,o}}function Qt(i={}){return e=>{let t=Number(e.value);if(isNaN(t))return e.formatted;let r=Math.max(0,Math.min(100,t)),o=document.createElement("div");o.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=`${r}%`,i.color&&(s.style.background=i.color),n.appendChild(s),o.appendChild(n),i.showValue!==!1){let a=document.createElement("span");a.className="mach-progress__label",a.textContent=`${Math.round(r)}${i.unit??"%"}`,o.appendChild(a)}return o}}function Jt(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 Zt={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 yt(i,e=14){let t=Zt[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 W=null,F=null;function _(i=!1){W?.remove(),W=null,F&&(F.setAttribute("aria-expanded","false"),i&&F.isConnected&&F.focus({preventScroll:!0})),F=null,document.removeEventListener("mousedown",lo,!0),document.removeEventListener("keydown",er,!0)}function lo(i){W&&!W.contains(i.target)&&!F?.contains(i.target)&&_()}function er(i){if(!W)return;if(i.key==="Escape"){i.preventDefault(),_(!0);return}let e=[...W.querySelectorAll("button:not(:disabled)")];if(e.length===0)return;if(i.key==="Tab"){let o=e.indexOf(document.activeElement);(!i.shiftKey&&o===e.length-1||i.shiftKey&&o<=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),r=i.key==="ArrowDown"?1:-1;e[(t+r+e.length)%e.length].focus()}function co(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&&Zt[i.icon]?t.innerHTML=`${yt(i.icon,16)}<span>${i.label}</span>`:t.textContent=i.label,t.addEventListener("click",()=>i.pick(t)),t}function an(i,e){_();let t=document.createElement("div");t.className="mach-context-menu mach-action-menu",t.setAttribute("role","menu");for(let n of e){let s=co(n,"mach-context-menu-item");s.setAttribute("role","menuitem"),t.appendChild(s)}document.body.appendChild(t);let r=i.getBoundingClientRect(),o=t.getBoundingClientRect();t.style.left=`${Math.min(Math.max(8,r.left),window.innerWidth-o.width-8)}px`,t.style.top=`${Math.min(r.bottom+4,window.innerHeight-o.height-8)}px`,W=t,F=i,i.setAttribute("aria-expanded","true"),document.addEventListener("mousedown",lo,!0),document.addEventListener("keydown",er,!0),t.querySelector("button:not(:disabled)")?.focus({preventScroll:!0})}function ln(i,e,t){_();let r=document.createElement("div");r.className="mach-action-drawer-backdrop";let o=document.createElement("section");o.className="mach-action-drawer",o.setAttribute("role","dialog"),o.setAttribute("aria-modal","true"),o.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=yt("close",16),a.addEventListener("click",()=>_(!0)),n.append(s,a);let l=document.createElement("div");l.className="mach-action-drawer__body";for(let d of t)l.appendChild(co(d,"mach-action-drawer__item"));o.append(n,l),r.appendChild(o),r.addEventListener("mousedown",d=>{d.target===r&&_(!0)}),document.body.appendChild(r),W=r,F=i,i.setAttribute("aria-expanded","true"),document.addEventListener("keydown",er,!0),o.querySelector("button:not(:disabled)")?.focus({preventScroll:!0})}function z(i,e){if(typeof i=="function")try{return i(e)}catch{return!1}return i===!0}function ao(i){return i.variant??"default"}function uo(i){return i.permission?typeof i.permission=="string"?[i.permission]:i.permission:[]}function tr(i,e,t){return{...i.id?{actionId:i.id}:{},permissions:uo(i),...t?{message:t}:{},params:e}}function ho(i,e,t){let r=t.api.getOption("actionPolicy");try{r?.onError?r.onError(i,tr(e,t)):console.error("[mach-table] action handler failed",i)}catch(o){console.error("[mach-table] action error policy failed",o,i)}}function dn(i,e){if(uo(i).length===0)return!0;let r=e.api.getOption("actionPolicy");if(!r?.canAccess)return!0;try{return r.canAccess(tr(i,e))}catch(o){return ho(o,i,e),!1}}function cn(i,e){return i.filter(t=>{if(!dn(t,e))return!1;if(!t.show)return!0;try{return t.show(e)}catch{return!1}})}function ie(i){let e=Math.max(0,i.max??3),t=i.overflow??"menu";return r=>{let o=cn(i.actions,r);if(o.length===0)return"";let n=document.createElement("div");n.className="mach-actions";let s=t==="inline"?o:o.slice(0,e),a=t==="inline"?[]:o.slice(e),l=(d,c)=>{if(z(d.disabled,r))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(r):d.confirm;if(h===!1)return;let p=typeof h=="string"?h:d.label??d.title??"Confirm action",m=r.api.getOption("actionPolicy");if(!(m?.confirm?await m.confirm(tr(d,r,p)):typeof window<"u"&&typeof window.confirm=="function"?window.confirm(p):!1))return}await d.onClick(r)})().catch(h=>ho(h,d,r)).finally(()=>{c.isConnected&&(c.disabled=z(d.disabled,r)||z(d.loading,r),c.classList.toggle("mach-action-btn--loading",z(d.loading,r)))})};for(let d of s){let c=document.createElement("button");c.type="button",c.className="mach-action-btn";let u=ao(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=z(d.disabled,r),z(d.loading,r)&&(c.disabled=!0,c.classList.add("mach-action-btn--loading")),d.icon&&Zt[d.icon]?(c.innerHTML=yt(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=r.api.getOption("locale")??{},u=i.moreLabel??c.actionMore??D.actionMore;d.title=u,d.setAttribute("aria-label",u),d.setAttribute("aria-haspopup",t==="drawer"?"dialog":"menu"),d.setAttribute("aria-expanded","false"),d.innerHTML=`${yt("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:ao(m),disabled:z(m.disabled,r)||z(m.loading,r),pick:f=>{_(),l(m,f)}}));t==="drawer"?ln(d,i.drawerTitle??u,p):an(d,p)}),n.appendChild(d)}return{el:n,destroy:()=>{F&&n.contains(F)&&_()}}}}function oe(i,e,t){return i??e??t}function un(i,e){let t=e.api.getOption("locale")??{};return{view:oe(i.labels?.view,t.actionView,D.actionView),edit:oe(i.labels?.edit,t.actionEdit,D.actionEdit),delete:oe(i.labels?.delete,t.actionDelete,D.actionDelete),confirm:oe(i.labels?.confirm,t.actionConfirm,D.actionConfirm),save:oe(i.labels?.save,t.actionSave,D.actionSave),cancel:oe(i.labels?.cancel,t.actionCancel,D.actionCancel)}}function hn(i,e,t){let r=async()=>{if(!await e.api.editing.stop()||!i.onSave)return;let s=e.api.editing.getChanges().filter(a=>a.rowId===e.node.id);try{await i.onSave(e,s),e.api.editing.markSaved([e.node.id])}catch(a){throw e.api.editing.startRow(e.rowIndex),a}},o=i.onSave?t.save:i.labels?.confirm??i.labels?.save??t.confirm;return ie({actions:[{icon:"check",title:o,variant:"primary",onClick:r},{icon:"close",title:t.cancel,onClick:()=>e.api.editing.stop({cancel:!0}).then(()=>{})}],overflow:"inline"})(e)}function pn(i,e,t){let r=[];return i.onView&&r.push({id:"view",icon:"view",title:t.view,variant:"primary",...i.permissions?.view?{permission:i.permissions.view}:{},onClick:i.onView}),i.edit!==!1&&r.push({id:"edit",icon:"edit",title:t.edit,variant:"warning",...i.permissions?.edit?{permission:i.permissions.edit}:{},onClick:()=>{e.api.editing.startRow(e.rowIndex)}}),i.onDelete&&r.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}),r.push(...i.extraActions??[]),r}function vt(i={}){return e=>{let t=un(i,e);if(e.api.editing.isRowActive(e.rowIndex))return hn(i,e,t);let r=pn(i,e,t);return ie({actions:r,max:i.max,overflow:i.overflow??"drawer",moreLabel:i.moreLabel,drawerTitle:i.drawerTitle})(e)}}var fn=Xt(),mn=Qt(),po=Object.freeze({statusTag:fn,progressBar:mn,link:Jt});function fo(i){if(!i||i.length===0)return[];let e=[],t=new Map,r=0,o=(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}o(a.children,s+1);continue}r++;let l=a.colId??a.field??`col_${r}`;t.set(l,(t.get(l)??0)+1),a.field&&!Y(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`)}};o(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 gn=V.map(i=>`on${i.charAt(0).toUpperCase()}${i.slice(1)}`),mo=new Set([...ot,...gn]);function yn(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},(r,o)=>o);for(let r=1;r<=i.length;r++){let o=[r];for(let n=1;n<=e.length;n++)o[n]=Math.min(o[n-1]+1,t[n]+1,t[n-1]+(i[r-1]===e[n-1]?0:1));t=o}return t[e.length]}function vn(i){let e,t=Number.POSITIVE_INFINITY;for(let o of mo){let n=yn(i.toLowerCase(),o.toLowerCase());n<t&&(t=n,e=o)}let r=Math.max(2,Math.floor(i.length*.3));return t<=r?e:void 0}function wn(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.push(...bn(i)),i.enableColumnResize!=null&&typeof i.enableColumnResize!="boolean"&&e.push({code:"INVALID_OPTION_VALUE",option:"enableColumnResize",message:"enableColumnResize \u5FC5\u987B\u662F boolean\uFF1B\u672A\u914D\u7F6E\u65F6\u9ED8\u8BA4\u5173\u95ED"}),e}function bn(i){if(i.datasourceMode!=="block")return[];let e=[];return i.datasource==null&&e.push({code:"OPTION_CONFLICT",option:"datasourceMode",message:"datasourceMode='block' requires a datasource"}),typeof i.getRowHeight=="function"&&e.push({code:"OPTION_CONFLICT",option:"getRowHeight",message:"Random-access block rows require fixed rowHeight so unloaded offsets remain deterministic"}),i.masterDetail===!0&&e.push({code:"OPTION_CONFLICT",option:"masterDetail",message:"masterDetail is not supported by the sparse random-access block row model"}),i.treeData===!0&&e.push({code:"OPTION_CONFLICT",option:"treeData",message:"treeData requires the local/tree row model and cannot use random-access blocks"}),go(i)||e.push({code:"MISSING_STABLE_ROW_ID",option:"rowKey",message:"Random-access blocks require rowKey to preserve selection and identity after eviction"}),e}function go(i){return i.rowKey!=null}function Cn(i){let e=new Set(["enableColumnResize","pagination","rowKey"]),t=[];for(let r of ot){if(e.has(r)||!Object.prototype.hasOwnProperty.call(i,r))continue;let o=i[r],n=te[r].kind;_t(o,n)||t.push({code:"INVALID_OPTION_VALUE",option:r,message:`${r} \u503C\u7C7B\u578B\u65E0\u6548\uFF0C\u671F\u671B ${n}`})}return t}function wt(i){let e=i,t=[];for(let o of Object.keys(e)){if(mo.has(o))continue;let n=vn(o);t.push({code:"UNKNOWN_OPTION",option:o,...n?{suggestion:n}:{},message:n?`\u672A\u77E5 GridOption "${o}"\uFF0C\u662F\u5426\u60F3\u4F7F\u7528 "${n}"\uFF1F`:`\u672A\u77E5 GridOption "${o}"\uFF0C\u8BE5\u503C\u4E0D\u4F1A\u751F\u6548`})}let r=e.pagination;if(r!=null&&typeof r!="boolean"&&typeof r!="object"&&t.push({code:"INVALID_OPTION_VALUE",option:"pagination",message:"pagination \u5FC5\u987B\u662F boolean \u6216\u914D\u7F6E\u5BF9\u8C61"}),e.datasource!=null&&r!==void 0&&r!==!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'"}),r&&typeof r=="object"){let o=r;o.mode==="server"&&!go(e)&&t.push({code:"MISSING_STABLE_ROW_ID",option:"rowKey",message:"\u670D\u52A1\u7AEF\u5206\u9875\u5EFA\u8BAE\u63D0\u4F9B\u7A33\u5B9A rowKey\uFF0C\u5426\u5219\u8DE8\u9875\u9009\u62E9\u4E0E\u589E\u91CF\u66F4\u65B0\u65E0\u6CD5\u53EF\u9760\u4FDD\u6301"}),o.mode==="server"&&o.total!==void 0&&(typeof o.total!="number"||!Number.isFinite(o.total)||o.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(...Cn(e)),t.push(...wn(e)),t}function yo(i){let e=/^v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:[-+].*)?$/.exec(i.trim());return e?[Number(e[1]),Number(e[2]??0),Number(e[3]??0)]:null}function rr(i,e){for(let t=0;t<3;t++)if(i[t]!==e[t])return i[t]<e[t]?-1:1;return 0}function Rn(i){return i[0]>0?[i[0]+1,0,0]:i[1]>0?[0,i[1]+1,0]:[0,0,i[2]+1]}function Tn(i,e){if(e==="*"||e.toLowerCase()==="latest")return!0;let t=/^(\^|~|>=|<=|>|<|=)?\s*(.+)$/.exec(e);if(!t)return!1;let r=yo(t[2]);if(!r)return!1;let o=rr(i,r);switch(t[1]??"="){case">=":return o>=0;case"<=":return o<=0;case">":return o>0;case"<":return o<0;case"^":return o>=0&&rr(i,Rn(r))<0;case"~":return o>=0&&rr(i,[r[0],r[1]+1,0])<0;default:return o===0}}function vo(i,e){if(!e?.trim())return!0;let t=i?yo(i):null;return t?e.split("||").some(r=>{let o=r.trim().split(/\s+/).filter(Boolean);return o.length>0&&o.every(n=>Tn(t,n))}):!1}function Dn(i){return[...new Set((i??[]).map(e=>e.trim()).filter(Boolean))]}function bt(i){let e=new Map;for(let t of i??[]){let r=(typeof t=="string"?t:t?.key??"").trim();if(!r||e.has(r))continue;let o=typeof t=="object"?t.version?.trim():void 0;e.set(r,{key:r,...o?{version:o}:{}})}return[...e.values()]}function Ct(i){let e=[],t=new Map;for(let l of i){let d=typeof l?.key=="string"?l.key.trim():"";if(!d){e.push({code:"INVALID_FEATURE_KEY",message:"GridFeature.key must be a non-empty string"});continue}if(t.has(d)){e.push({code:"DUPLICATE_FEATURE",feature:d,message:`Duplicate GridFeature key: ${d}`});continue}t.set(d,l)}let r=new Set;for(let[l,d]of t){for(let c of bt(d.requires)){let u=t.get(c.key);u?vo(u.version,c.version)||(r.add(l),e.push({code:"UNSUPPORTED_FEATURE_VERSION",feature:l,dependency:c.key,message:`GridFeature "${l}" requires "${c.key}" ${c.version}, received ${u.version??"unversioned"}`})):(r.add(l),e.push({code:"MISSING_FEATURE_DEPENDENCY",feature:l,dependency:c.key,message:`GridFeature "${l}" requires missing feature "${c.key}"`}))}for(let c of Dn(d.conflicts))if(t.has(c)){r.add(l),e.push({code:"FEATURE_CONFLICT",feature:l,dependency:c,message:`GridFeature "${l}" conflicts with "${c}"`});break}}let o=[],n=new Set,s=new Set,a=l=>{if(s.has(l))return!r.has(l);if(n.has(l))return r.add(l),e.push({code:"FEATURE_CYCLE",feature:l,message:`GridFeature dependency cycle includes "${l}"`}),!1;let d=t.get(l);if(!d||r.has(l))return!1;n.add(l);let c=!0;for(let u of bt(d.requires))a(u.key)||(c=!1);return n.delete(l),s.add(l),c?(o.push(d),!0):(r.add(l),!1)};for(let l of t.keys())a(l);return{features:o.filter(l=>!r.has(l.key.trim())),issues:e}}var En=["datasource","treeData"],Sn=["columnState.","gridState."],xn=new Set(["selectionChanged","sortChanged","filterChanged","columnMoved","columnVisibilityChanged","displayedColumnsChanged","paginationChanged","detailToggled"]),Mn=0,Rt=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.gridStateMutationVersion=0;this.applyingPersistedGridState=!1;this.stateSaveInFlight=!1;this.pendingStateSave=null;this.lastValidatedDefs=null;this.issuedWarningSignatures=new Set;let r;this.readyPromise=new Promise(o=>{r=o}),this.resolveReady=r,this.gridId=++Mn,this.options=pr(t),this.eventBus=new we((o,n)=>{n==="gridError"?console.error("[mach-table] error in gridError listener",o):this.reportError(o,"eventBus.listener",{eventType:n})}),this.columnModel=new Te(this),this.rowModel=new Ie(this),this.selectionService=new Ae(this),this.skeleton=new it(this),this.headerRenderer=new st(this),this.bodyRenderer=new ct(this),this.resizeService=new Pe(this),this.columnDragService=new Le(this),this.keyboardService=new Oe(this),this.editingService=new We(this),this.undoService=new Qe(this),this.performanceMonitor=new et,this.updateScheduler=new tt(o=>this.applyScheduledUpdate(o)),this.filterPopup=new Ue(this),this.columnMenu=new Ke(this),this.contextMenuService=new je(this),this.tooltipService=new Ye(this),this.watermarkService=new Xe(this),this.paginationBar=new ht(this),this.pinnedRowsRenderer=new pt(this),this.summaryRenderer=new ut(this),this.statusBarService=new ft(this),this.api=oo(this),this.changeTracker=new Je(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.rowModel.setAdvancedFilterModel(this.options.advancedFilterModel),this.rowModel.setQuickFilter(this.options.quickFilterText),this.refreshAriaState(),this.validateDefs(this.options.columnDefs),this.checkWarnings(t),this.headerRenderer.build(),this.options.datasource?this.rowModel.startInfinite().catch(()=>{}):this.rowModel.setRowData(this.options.rowData),this.options.initialState&&this.api.state.apply(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(o){throw this.reportError(o,"grid.constructor"),this.destroy(),o}}getApi(){return this.api}whenReady(){return this.readyPromise}settleReady(){this.readySettled||(this.readySettled=!0,this.resolveReady(this.api))}resolveCellRenderer(e){return this.options.components?.cellRenderers?.[e]??po[e]}resolveCellEditor(e){return this.options.components?.cellEditors?.[e]}inactiveFeatureDependency(e){return bt(e.requires).map(t=>t.key).find(t=>!this.activeFeatures.has(t))}setFeatures(e){if(this.destroyFeatures(),this.destroyed)return;let t=Ct(e??[]);for(let r of t.issues)this.reportError(new Error(r.message),"feature.manifest",{code:r.code,...r.feature?{key:r.feature}:{},...r.dependency?{dependency:r.dependency}:{}});for(let r of t.features){let o=r.key.trim(),n=this.inactiveFeatureDependency(r);if(n){this.reportError(new Error(`GridFeature "${o}" dependency "${n}" did not initialise`),"feature.manifest",{code:"FEATURE_DEPENDENCY_SETUP_FAILED",key:o,dependency:n});continue}let s=[],a=d=>{let c=!0,u=()=>{c&&(c=!1,d())};return s.push(u),u},l={api:this.api,root:this.skeleton.root,getOptions:()=>this.options,addEventListener:(d,c)=>a(this.eventBus.on(d,c)),onCleanup:d=>{a(d)},addManagedDomListener:(d,c,u,h)=>(d.addEventListener(c,u,h),a(()=>d.removeEventListener(c,u,h))),setManagedTimeout:(d,c)=>{let u=setTimeout(d,Math.max(0,c));return a(()=>clearTimeout(u)),u},createAbortController:()=>{let d=new AbortController;return a(()=>d.abort()),d},reportError:(d,c,u)=>this.reportError(d,`feature.${c}`,u)};try{let d=r.setup(l);typeof d=="function"&&a(d),this.activeFeatures.set(o,{feature:r,cleanups:s})}catch(d){for(let c of s.reverse())try{c()}catch(u){this.reportError(u,"feature.cleanup",{key:o})}this.reportError(d,"feature.setup",{key:o})}}}destroyFeatures(){let e=[...this.activeFeatures.entries()].reverse();this.activeFeatures.clear();for(let[t,r]of e){for(let o of r.cleanups.reverse())try{o()}catch(n){this.reportError(n,"feature.cleanup",{key:t})}try{r.feature.destroy?.()}catch(o){this.reportError(o,"feature.destroy",{key:t})}}}isDestroyed(){return this.destroyed}nextId(){return++this.autoIdCounter}getCellValue(e,t){let r=t.colDef;if(r.valueGetter)try{return r.valueGetter({api:this.api,colDef:r,column:t,node:e,data:e.data})}catch(o){this.reportError(o,"valueGetter",{colId:t.id,rowId:e.id});return}if(r.field)return B(e.data,r.field)}getLocaleText(e){return this.options.locale[e]??D[e]}writeValue(e,t,r,o){let n=t.colDef;if(n.valueSetter)try{return n.valueSetter({oldValue:o,newValue:r,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?q(e.data,n.field,r):!1}setCellValue(e,t,r,o){if(r===void 0||r===o)return!1;let n=t.colDef,s;if(n.valueSetter)try{s=n.valueSetter({oldValue:o,newValue:r,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=q(e.data,n.field,r);else return!1;return s&&this.notifyCellValueChanged(e,t,o,r),s}notifyCellValueChanged(e,t,r,o){this.bodyRenderer.invalidateRowHeight(e),this.bodyRenderer.queueFlash([e.rowIndex],[t.id]),this.emit("cellValueChanged",{oldValue:r,newValue:o,rowNode:e,rowIndex:e.rowIndex,column:t,colDef:t.colDef,data:e.data}),this.undoService.record({nodeId:e.id,columnId:t.id,oldValue:r,newValue:o})}buildRangeTsv(e){let r=this.columnModel.getOrderedVisible().slice(e.c1,e.c2+1),o=[];for(let n=e.r1;n<=e.r2;n++){let s=this.rowModel.getDisplayedRow(n);o.push(r.map(a=>!s||s.isDetail||s.isGroup?"":ue(this,s,a,this.getCellValue(s,a))))}return ee(o)}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(),r=new Set;this.undoService.beginBatch();try{for(let o=e.r1;o<=e.r2;o++){let n=this.rowModel.getDisplayedRow(o);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)&&r.add(o)}}}finally{this.undoService.endBatch()}r.size>0&&(this.bodyRenderer.refreshRows([...r]),this.summaryRenderer.refresh())}pasteText(e,t,r){if(this.destroyed)return;let o=Ge(e);if(o.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 o){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=r;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 r={type:e,api:this.api,...t};this.eventBus.emit(e,r);let o="on"+e.charAt(0).toUpperCase()+e.slice(1),n=this.options[o];if(typeof n=="function")try{n(r)}catch(a){e==="gridError"?console.error("[mach-table] error in onGridError",a):this.reportError(a,`eventHandler.${String(o)}`,{eventType:e})}return(e==="columnResized"&&r.finished||xn.has(e))&&this.scheduleGridStateSave(),r}reportError(e,t,r){let o=this.errorCodeFor(t,e),n=e instanceof Error?e.message:String(e);this.recentErrors.push({code:o,source:t,message:n,timestamp:Date.now(),...r?{context:r}:{}}),this.recentErrors.length>50&&this.recentErrors.splice(0,this.recentErrors.length-50),console.error(`[mach-table] ${o} (${t})`,e),!this.destroyed&&this.emit("gridError",{code:o,error:e,source:t,context:r})}errorCodeFor(e,t){if(En.some(o=>e.startsWith(o)))return"DATA_SOURCE_ERROR";let r=t instanceof Error?t.message:String(t);return e==="rowKey"||r.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(o=>e.startsWith(o))?"STATE_ERROR":e.startsWith("eventBus.")||e.startsWith("eventHandler.")?"EVENT_HANDLER_ERROR":"GRID_ERROR"}getDiagnostics(){return{gridId:this.gridId,version:ve.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,activeFeatures:[...this.activeFeatures].map(([e,t])=>({key:e,...t.feature.version?{version:t.feature.version}:{}})),performance:this.performanceMonitor.snapshot(),updates:this.updateScheduler.snapshot(),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.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.requestUpdate({data:!0})}applyColumnFilter(e,t){let r=this.rowModel.getFilterModel();if(t?r[e.id]=t:delete r[e.id],this.rowModel.setFilterModel(r),this.headerRenderer.refreshFilterIcons(),this.emit("filterChanged",{filterModel:this.rowModel.getFilterModel(),advancedFilterModel:this.rowModel.getAdvancedFilterModel()}),this.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.requestUpdate({data:!0})}applyQuickFilter(){if(this.emit("filterChanged",{filterModel:this.rowModel.getFilterModel(),advancedFilterModel:this.rowModel.getAdvancedFilterModel()}),this.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.requestUpdate({data:!0})}moveColumn(e,t){this.columnModel.moveColumn(e,t)&&(this.onColumnsStructureChanged(),this.emit("columnMoved",{colId:e,toIndex:t}))}toggleDetail(e){return this.rowModel.toggleDetail(e)}emitColumnResize(e,t){this.emit("columnResized",{colId:e.id,width:e.currentWidth,finished:t})}commitColumnWidths(e){if(!(this.destroyed||e.length===0))for(let t of e){if(this.destroyed)break;this.emitColumnResize(t,!0)}}loadPersistedGridState(){let e=++this.gridStateLoadToken,t=this.gridStateMutationVersion,r=this.options.persistence;if(!r)return;let{key:o,store:n,sections:s}=r,a;try{a=n?n.load(o):gt(o)}catch(d){this.reportError(d,"gridState.load");return}let l=d=>{if(!(this.destroyed||e!==this.gridStateLoadToken||t!==this.gridStateMutationVersion||!d)){this.applyingPersistedGridState=!0;try{this.api.state.apply(d,{emitEvents:!1,...s?{sections:s}:{}})}finally{this.applyingPersistedGridState=!1}}};a&&typeof a.then=="function"?Promise.resolve(a).then(l).catch(d=>this.reportError(d,"gridState.load")):l(a)}scheduleGridStateSave(){let e=this.options.persistence;if(!(!e||this.destroyed||this.applyingPersistedGridState)){if(this.gridStateMutationVersion++,this.stateSaveTimer&&clearTimeout(this.stateSaveTimer),e.debounceMs===0){this.stateSaveTimer=null,this.persistGridState();return}this.stateSaveTimer=setTimeout(()=>{this.stateSaveTimer=null,this.persistGridState()},e.debounceMs)}}persistGridState(){let e=this.options.persistence;if(!e||this.destroyed)return;let{key:t,store:r,sections:o}=e,n=this.api.state.get(),s=o?Br(n,o):n,a={key:t,...r?{store:r}:{},state:s};if(this.stateSaveInFlight){this.pendingStateSave=a;return}this.writeGridState(a)}writeGridState(e){try{let t=e.store?e.store.save(e.key,e.state):mt(e.key,e.state);if(!t||typeof t.then!="function")return;this.stateSaveInFlight=!0,Promise.resolve(t).catch(r=>this.reportError(r,"gridState.save")).finally(()=>{this.stateSaveInFlight=!1;let r=this.pendingStateSave;this.pendingStateSave=null,r&&this.writeGridState(r)})}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 r=document.createElement("div");return r.className="mach-empty__hint",r.textContent=this.getLocaleText("requestFailedHint"),e.append(t,r),e}buildDefaultEmptyState(){let e=this.options.locale??{},t=e.emptyRows??D.emptyRows,r=e.emptyRowsHint??D.emptyRowsHint,o=document.createElement("div");o.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=r,o.append(n,s,a),o}checkWarnings(e){if(!(this.options.suppressWarnings||this.destroyed)){if(e)for(let t of wt(e)){let r=`${t.code}:${t.option??""}:${t.message}`;this.issuedWarningSignatures.has(r)||(this.issuedWarningSignatures.add(r),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 fo(e))this.issuedWarningSignatures.has(t)||(this.issuedWarningSignatures.add(t),console.warn(`[mach-table] ${t}`))}}onColumnsStructureChanged(){this.updateScheduler.schedule({columns:!0})}requestUpdate(e){this.updateScheduler.schedule(e)}batchUpdates(e){return this.updateScheduler.batch(e)}applyScheduledUpdate(e){this.destroyed||(e.columns?this.applyColumnsStructureChanged():(e.header&&this.headerRenderer.build(),e.pool?this.bodyRenderer.rebuildPool():e.layout&&this.relayout()),e.data&&!e.pool&&!e.columns?this.bodyRenderer.onDataChanged():e.cells&&this.bodyRenderer.refreshCells(e.cells===!0?void 0:e.cells),e.pinned&&this.pinnedRowsRenderer.refresh(),e.summary&&this.summaryRenderer.refresh(),e.overlays&&this.bodyRenderer.refreshOverlays())}applyColumnsStructureChanged(){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;let e=this.performanceMonitor.start();this.refreshAriaState(),this.columnModel.computeLayout(this.skeleton.measureViewportWidth());let t=this.columnModel.getOrderedVisible().map(r=>`${r.id}:${r.currentWidth}`).join("|");this.lastColumnLayoutSignature&&t!==this.lastColumnLayoutSignature&&this.bodyRenderer.invalidateAllRowHeights(),this.lastColumnLayoutSignature=t,this.skeleton.root.setAttribute("aria-colcount",String(this.columnModel.getOrderedVisible().length)),this.headerRenderer.applyLayout(),this.bodyRenderer.relayout(),this.pinnedRowsRenderer.applyLayout(),this.summaryRenderer.refresh(),this.performanceMonitor.recordLayout(e)}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(r=>!!r.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,r)=>{try{r()}catch(o){console.error(`[mach-table] ${t} destroy error`,o)}};e("grid event",()=>this.emit("gridDestroyed",{})),e("updateScheduler",()=>this.updateScheduler.destroy()),e("performanceMonitor",()=>this.performanceMonitor.destroy()),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(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 Rt(i,e).getApi()}function kn(i){return i.value===!0?"\u662F":i.value===!1?"\u5426":""}function In(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 An(i){return e=>{if(e.value==null)return"";let t=i.find(r=>r.value===e.value);return t?t.label:String(e.value)}}function bo(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=In(i.format);else if(e==="boolean")t.valueFormatter=kn,t.filter=i.filterable===!1?!1:"set";else if(e==="select"){let r=i.options??[];t.valueFormatter=An(r),i.editable&&(t.cellEditor="select",t.cellEditorParams={values:r.map(o=>o.value)})}return t}function Co(i){let e=new Map(i.fields.map(o=>[o.field,o])),t=new Set,r=[];for(let o of i.fields){if(t.has(o.field))continue;(i.groups??[]).some(s=>s.fields.includes(o.field))||(r.push(bo(o)),t.add(o.field))}for(let o of i.groups??[]){let n=[];for(let s of o.fields){let a=e.get(s);!a||t.has(s)||(n.push(bo(a)),t.add(s))}n.length>0&&r.push({headerName:o.title,children:n})}return r}function P(i){let e=i();return e&&!e.isDestroyed()?e:null}function Ro(i){let e=()=>i.getApi();return{search(t){P(e)?.filtering.setQuickText(t)},async refresh(){if(i.reload){await i.reload();return}let t=P(e);t&&(t.rows.isRemote()?await t.rows.reload():t.view.refreshCells())},openColumns(t){P(e)?.columns.openWorkbench(t)},setDensity(t){P(e)?.updateOptions({size:t})},resetColumns(){P(e)?.columns.resetState()},undo(){return P(e)?.editing.undo()??!1},redo(){return P(e)?.editing.redo()??!1},canUndo(){return P(e)?.editing.canUndo()??!1},canRedo(){return P(e)?.editing.canRedo()??!1},exportCsv(t="mach-table.csv"){let r=P(e);return r?rt(t,r.io.exportCsv({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 r=P(e)?.view.getRoot(),o=i.getFullscreenElement?.()??r?.parentElement??r;return o?.requestFullscreen?(await o.requestFullscreen(),!0):!1}}}var me={sortable:!1,resizable:!1,movable:!1,filter:!1,suppressSizeToFit:!0};function To(i={}){return{colId:"sel",headerName:"",width:46,pinned:"left",checkboxSelection:!0,...me,...i}}function Do(i={}){return{colId:"idx",headerName:"#",type:"index",width:60,pinned:"left",...me,...i}}function Eo(i={}){return{colId:"drag",headerName:"",rowDrag:!0,width:40,...me,...i}}function So(i={actions:[]}){let{width:e,pinned:t,...r}=i,o=r.actions?.length??0,n=r.overflow==="inline"?o:Math.min(o,r.max??3),s=r.overflow!=="inline"&&o>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:ie(r),...me,cellRendererParams:void 0}}function xo(i={}){let{width:e,pinned:t,...r}=i,o=(r.onView?1:0)+(r.edit===!1?0:1)+(r.onDelete?1:0)+(r.extraActions?.length??0),n=r.overflow==="inline"?o:Math.min(o,r.max??3),s=r.overflow!=="inline"&&o>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:vt(r),...me,cellRendererParams:void 0}}function Mo(){return{accessor:(i,e={})=>({...e,field:i}),display:i=>({...i}),group:i=>({...i,children:[...i.children]})}}function ko(i){return[...i]}function or(i,e){return e===void 0?i:typeof e!="object"||e===null||typeof i!="object"||i===null?e:{...i,...e}}function Pn(i,e){return typeof i!="function"?e:typeof e!="function"?i:(...t)=>{let r;try{i(...t)}catch(o){r=o}try{e(...t)}catch(o){r??(r=o)}if(r!==void 0)throw r}}function Ln(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 r={};for(let o of new Set([...Object.keys(i.columnTypes??{}),...Object.keys(e.columnTypes??{})]))r[o]={...i.columnTypes?.[o],...e.columnTypes?.[o]};t.columnTypes=r}(i.aggFuncs||e.aggFuncs)&&(t.aggFuncs={...i.aggFuncs,...e.aggFuncs}),t.pagination=or(i.pagination,e.pagination),t.statusBar=or(i.statusBar,e.statusBar),t.watermark=or(i.watermark,e.watermark);for(let r of new Set([...Object.keys(i),...Object.keys(e)])){if(!/^on[A-Z]/.test(r))continue;let o=i[r],n=e[r];typeof o=="function"&&typeof n=="function"&&(t[r]=Pn(o,n))}return t}function ir(...i){return i.reduce(Ln,{})}function Io(i={}){return ir({defaultColDef:{sortable:!0,resizable:!0,movable:!0,filter:!0},enableColumnResize:!0,rowSelection:"multiple",columnMenu:!0,contextMenu:!0,enableRangeSelection:!0,fillHandle:!0,statusBar:!0,stripedRows:!0},i)}function Ao(i){return i}function Po(i){return i}function Lo(i){return i}function ge(i){return i!=null&&i!==""}function Gn(i){if(!ge(i))return null;let e=typeof i=="number"?i:Number(i);return Number.isFinite(e)?e:null}function Tt(i,e){try{return new Intl.NumberFormat(i,e)}catch{return new Intl.NumberFormat(void 0,e)}}function Go(i,e){try{return new Intl.DateTimeFormat(i,e)}catch{let t={...e};return delete t.timeZone,new Intl.DateTimeFormat(void 0,t)}}function Fn(i){if(!ge(i))return null;let e=i instanceof Date?i:new Date(i);return Number.isFinite(e.getTime())?e:null}function Fo(i={}){let e=i.emptyText??"",t=i.invalidText??"\u2014",r=Tt(i.locale,{maximumFractionDigits:i.maximumFractionDigits??2}),o=Tt(i.locale,{maximumFractionDigits:0}),n=Tt(i.locale,{style:"currency",currency:i.currency??"CNY",currencyDisplay:i.currencyDisplay??"symbol",maximumFractionDigits:i.maximumFractionDigits??2}),s=Tt(i.locale,{style:"percent",maximumFractionDigits:i.maximumFractionDigits??2}),a=Go(i.locale,{year:"numeric",month:"2-digit",day:"2-digit",...i.timeZone?{timeZone:i.timeZone}:{}}),l=Go(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(!ge(p))return e;let m=Gn(p);return m==null?t:u.format(m*h)},c=u=>({value:h})=>{if(!ge(h))return e;let p=Fn(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(r)},integer:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(o)},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 Dt(i){return`${typeof i}:${String(i)}`}function No(i){let e=Math.max(0,i.ttlMs??3e5),t=Math.max(1,Math.floor(i.maxSize??2e3)),r=Math.max(0,i.batchDelayMs??0),o=new Map,n=new Map,s=new Map,a=null,l=null,d=!1,c=m=>{let f=Dt(m),y=o.get(f);if(y){if(y.expiresAt<Date.now()){o.delete(f);return}return o.delete(f),o.set(f,y),y.label}},u=m=>{let f=e===0?Number.POSITIVE_INFINITY:Date.now()+e;for(let y of m){let v=Dt(y.value);o.delete(v),o.set(v,{key:y.value,label:String(y.label),expiresAt:f})}for(;o.size>t;)o.delete(o.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 E=c(C);for(let R of s.get(w)??[])R.resolve(E);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()},r))}},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=Dt(m);n.set(y,m);let v=new Promise((w,C)=>{let E=s.get(y)??[];E.push({resolve:w,reject:C}),s.set(y,E)});return a==null&&l==null&&(a=setTimeout(()=>{h()},r)),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)o.clear();else for(let f of m)o.delete(Dt(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(),o.clear()},get size(){return o.size}}}function Oo(i,e={}){return t=>{if(!ge(t.value))return e.emptyText??"";let r=t.value,o=e.fallback?.(r)??String(r),n=i.get(r);if(n!==void 0)return n;let s=document.createElement("span");s.className="mach-dictionary-value mach-dictionary-value--loading",s.textContent=e.loadingText??o;let a=!0;return i.resolve(r).then(l=>{!a||!s.isConnected||(s.textContent=l??o,s.classList.remove("mach-dictionary-value--loading"))}).catch(()=>{!a||!s.isConnected||(s.textContent=o,s.classList.remove("mach-dictionary-value--loading"),s.classList.add("mach-dictionary-value--error"))}),{el:s,destroy:()=>{a=!1}}}}function Ho(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}function Bo(i){return typeof TextEncoder>"u"?i.length*2:new TextEncoder().encode(i).byteLength}function Vo(i){if(typeof i!="string")return null;let e=i.trim();return e&&e.length<=256?e:null}function Et(i){if(i==null||typeof i!="object")return null;let e=i;if(e.version!==1)return null;let t=G({version:2,columns:e.columns,sortModel:e.sortModel,filterModel:e.filterModel,advancedFilterModel:e.advancedFilterModel,quickFilterText:e.quickFilterText,pagination:{enabled:!0,page:1,pageSize:e.pageSize},selectedRowIds:[],expandedRowIds:[],expandedGroupIds:[]});return t?{version:1,columns:t.columns,sortModel:t.sortModel,filterModel:t.filterModel,advancedFilterModel:t.advancedFilterModel,quickFilterText:t.quickFilterText,pageSize:t.pagination.pageSize}:null}function ne(i){if(i==null||typeof i!="object")return null;let e=i,t=Vo(e.id),r=typeof e.name=="string"?e.name.trim().slice(0,120):"",o=Et(e.state);if(e.schemaVersion!==1||!t||!r||!o)return null;let n=typeof e.createdAt=="number"&&Number.isFinite(e.createdAt)?e.createdAt:Date.now(),s=typeof e.updatedAt=="number"&&Number.isFinite(e.updatedAt)?e.updatedAt:n;return{schemaVersion:1,id:t,name:r,createdAt:n,updatedAt:s,state:o}}function nr(i){let e=i.state.get();return{version:1,columns:e.columns,sortModel:e.sortModel,filterModel:e.filterModel,advancedFilterModel:e.advancedFilterModel,quickFilterText:e.quickFilterText,pageSize:e.pagination.pageSize}}function sr(i,e,t={}){let r=Et(e);if(!r||i.isDestroyed())return!1;let o=i.state.get();return i.state.apply({...o,columns:r.columns,sortModel:r.sortModel,filterModel:r.filterModel,advancedFilterModel:r.advancedFilterModel,quickFilterText:r.quickFilterText,pagination:{...o.pagination,page:1,pageSize:r.pageSize}},{sections:["columns","sort","filter","pagination"],emitEvents:t.emitEvents}),!0}function ar(i={}){let e=(i.namespace??"mach-table:views").replace(/:+$/,""),t=Math.max(1,Math.floor(i.maxViews??50)),r=Math.max(4096,Math.floor(i.maxBytes??512*1024)),o=l=>`${e}:${encodeURIComponent(l)}`,n=(l,d,c)=>{try{i.onError?.(l,d,c)}catch{}},s=l=>{let d=(i.storage??Ho())?.getItem(o(l));if(!d||Bo(d)>r)return[];let c=JSON.parse(d);return c.schemaVersion!==1||!Array.isArray(c.views)?[]:c.views.flatMap(u=>{let h=ne(u);return h?[h]:[]}).slice(0,t)},a=(l,d)=>{let c=JSON.stringify({schemaVersion:1,savedAt:Date.now(),views:d});if(Bo(c)>r)throw new RangeError(`[MachTable] Saved views for "${l}" exceed ${r} bytes.`);let u=i.storage??Ho();if(!u)throw new Error("[MachTable] Saved view storage is unavailable.");u.setItem(o(l),c)};return{list(l){try{return s(l)}catch(d){return n(d,"list",l),[]}},save(l,d){try{let c=ne(d);if(!c)throw new TypeError(`[MachTable] Invalid saved view for "${l}".`);let u=s(l).filter(h=>h.id!==c.id);u.unshift(c),a(l,u.slice(0,t))}catch(c){throw n(c,"save",l),c}},remove(l,d){try{a(l,s(l).filter(c=>c.id!==d))}catch(c){throw n(c,"remove",l),c}}}}function Nn(){try{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID()}catch{}return`view-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function zo(i,e){let t=e.scope.trim();if(!t||t.length>512)throw new TypeError("[MachTable] Grid view scope must contain between 1 and 512 characters.");let r=e.store??ar(),o=async()=>(await r.list(t)).flatMap(s=>{let a=ne(s);return a?[a]:[]}).sort((s,a)=>a.updatedAt-s.updatedAt);return{list:o,async save(n,s){let a=n.trim().slice(0,120);if(!a)throw new TypeError("[MachTable] Grid view name must be a non-empty string.");let l=Vo(s)??Nn(),d=(await o()).find(h=>h.id===l),c=Date.now(),u={schemaVersion:1,id:l,name:a,createdAt:d?.createdAt??c,updatedAt:c,state:nr(i)};return await r.save(t,u),u},async apply(n,s){let a=typeof n=="string"?(await o()).find(d=>d.id===n):ne(n),l=typeof n=="string"?n:"provided view";if(!a)throw new Error(`[MachTable] Grid view "${l}" was not found.`);if(!sr(i,a.state,s))throw new Error(`[MachTable] Grid view "${a.id}" could not be applied.`);return a},async remove(n){await r.remove(t,n)}}}var On=ve.version;0&&(module.exports={BUILTIN_AGG_FUNCS,DEFAULT_LOCALE,EVENT_TYPES,LOCALE_EN,actionsColumn,advancedFilterCondition,advancedFilterGroup,applyGridViewState,buildColDefsFromSchema,captureGridViewState,clearGridState,createActionButtonsRenderer,createAggResolver,createBusinessColumnTypes,createCachedDictionary,createColumnHelper,createDictionaryRenderer,createEnterprisePreset,createGrid,createGridViewManager,createLocalGridStateStore,createLocalGridViewStore,createMachTableCommands,createMachTablePreset,createProgressBarRenderer,createRowActionsRenderer,createStatusTagRenderer,defineColumns,defineGridOptions,defineMachTableConfig,defineMachTablePreset,describeFilter,downloadFile,dragColumn,escapeHtml,formatText,formatTwo,getByPath,indexColumn,isColDefGroup,isSafePath,linkRenderer,loadGridState,matchLocaleKey,normalizeAdvancedFilterModel,normalizeColumnFilter,normalizeFilterModel,normalizeGridState,normalizeGridViewState,normalizeSavedGridView,parseCsv,parseDelimited,parseTsv,resolveGridFeatures,resolveSaveConflict,resolveTagVariant,rowActionsColumn,sanitizeFormulaCell,saveGridState,selectionColumn,setByPath,toTsv,validateGridOptions,version});
1
+ "use strict";var Mt=Object.defineProperty;var Qo=Object.getOwnPropertyDescriptor;var Zo=Object.getOwnPropertyNames;var en=Object.prototype.hasOwnProperty;var tn=(n,e)=>{for(var t in e)Mt(n,t,{get:e[t],enumerable:!0})},rn=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Zo(e))!en.call(n,o)&&o!==t&&Mt(n,o,{get:()=>e[o],enumerable:!(r=Qo(e,o))||r.enumerable});return n};var on=n=>rn(Mt({},"__esModule",{value:!0}),n);var Ss={};tn(Ss,{BUILTIN_AGG_FUNCS:()=>Ft,DEFAULT_LOCALE:()=>D,EVENT_TYPES:()=>V,LOCALE_EN:()=>Vr,actionsColumn:()=>No,advancedFilterCondition:()=>vr,advancedFilterGroup:()=>wr,applyGridViewState:()=>pr,buildColDefsFromSchema:()=>Ao,captureGridViewState:()=>hr,clearGridState:()=>yo,createActionButtonsRenderer:()=>ne,createAggResolver:()=>xe,createBusinessColumnTypes:()=>Uo,createCachedDictionary:()=>qo,createColumnHelper:()=>Ho,createDictionaryRenderer:()=>$o,createEnterprisePreset:()=>Vo,createGrid:()=>Io,createGridViewManager:()=>Jo,createLocalGridStateStore:()=>Qt,createLocalGridViewStore:()=>fr,createMachTableCommands:()=>Po,createMachTablePreset:()=>ur,createProgressBarRenderer:()=>or,createRowActionsRenderer:()=>bt,createStatusTagRenderer:()=>rr,defineColumns:()=>Bo,defineGridOptions:()=>Wo,defineMachTableConfig:()=>_o,defineMachTablePreset:()=>zo,describeFilter:()=>st,downloadFile:()=>ot,dragColumn:()=>Fo,escapeHtml:()=>q,formatText:()=>P,formatTwo:()=>Ue,getByPath:()=>B,indexColumn:()=>Go,isColDefGroup:()=>Q,isSafePath:()=>Y,linkRenderer:()=>nr,loadGridState:()=>yt,matchLocaleKey:()=>Ke,normalizeAdvancedFilterModel:()=>G,normalizeColumnFilter:()=>be,normalizeFilterModel:()=>X,normalizeGridState:()=>F,normalizeGridViewState:()=>xt,normalizeSavedGridView:()=>ie,parseCsv:()=>Fe,parseDelimited:()=>Ne,parseTsv:()=>Ge,resolveGridFeatures:()=>Tt,resolveSaveConflict:()=>Xr,resolveTagVariant:()=>tr,rowActionsColumn:()=>Oo,sanitizeFormulaCell:()=>le,saveGridState:()=>gt,selectionColumn:()=>Lo,setByPath:()=>K,toTsv:()=>ee,validateGridOptions:()=>Ct,version:()=>Ds});module.exports=on(Ss);var ve={name:"@agile-team/mach-table",version:"0.28.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"}},"./adapter":{import:{types:"./dist/adapter.d.ts",default:"./dist/adapter.js"},require:{types:"./dist/adapter.d.cts",default:"./dist/adapter.cjs"}},"./worker":{import:{types:"./dist/worker.d.ts",default:"./dist/worker.js"},require:{types:"./dist/worker.d.cts",default:"./dist/worker.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 we=class{constructor(e){this.onListenerError=e;this.listeners=new Map}on(e,t){let r=this.listeners.get(e);return r||(r=new Set,this.listeners.set(e,r)),r.add(t),()=>{r.delete(t)}}once(e,t){let r=this.on(e,o=>{r(),t(o)});return r}off(e,t){let r=this.listeners.get(e);r&&(r.delete(t),r.size===0&&this.listeners.delete(e))}emit(e,t){let r=this.listeners.get(e);if(r)for(let o of[...r])try{o(t)}catch(i){console.error(`[mach-table] error in "${e}" listener`,i),this.onListenerError?.(i,e)}}clear(){this.listeners.clear()}};var sn=new Set(["__proto__","prototype","constructor"]);function Y(n){return typeof n!="string"||n.length===0?!1:n.split(".").every(t=>t.length>0&&!sn.has(t))}function B(n,e){if(n==null||!Y(e))return;if(e.indexOf(".")<0)return n[e];let r=n,o=0;for(;o<e.length;){if(r==null)return;let i=e.indexOf(".",o);if(i<0){r=r[e.slice(o)];break}r=r[e.slice(o,i)],o=i+1}return r}function K(n,e,t){if(n==null||!Y(e))return!1;let r=e.split("."),o=n;for(let i=0;i<r.length-1;i++){if(typeof o!="object"&&typeof o!="function"||o===null)return!1;o[r[i]]==null&&(o[r[i]]={}),o=o[r[i]]}return typeof o!="object"&&typeof o!="function"||o===null?!1:(o[r[r.length-1]]=t,!0)}var an=new Set(["contains","notContains","equals","notEquals","startsWith","endsWith","blank","notBlank"]),ln=new Set(["equals","notEquals","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","inRange","blank","notBlank"]),dn=new Set(["equals","notEquals","lessThan","greaterThan","inRange","blank","notBlank"]);function cn(n){return n==null||typeof n=="string"||typeof n=="number"&&Number.isFinite(n)}function un(n){return n==="text"?an:n==="number"?ln:dn}function hn(n,e,t){if(n==null||typeof n!="object")return null;let r=n;return typeof r.match!="string"||!t.has(r.match)?null:{match:r.match,...pn(r,e)}}function pn(n,e){let t=e==="number"?gr(n.value):typeof n.value=="string"?n.value:void 0,r=e==="number"?gr(n.value2):typeof n.value2=="string"?n.value2:void 0;return{...t!==void 0?{value:t}:{},...r!==void 0?{value2:r}:{}}}function gr(n){return typeof n=="number"&&Number.isFinite(n)?n:void 0}function fn(n,e){let t=[],r=un(e);for(let o of n.slice(0,20)){let i=hn(o,e,r);i&&t.push(i)}return t}function be(n){if(n==null||typeof n!="object")return null;let e=n;return e.type==="set"?Array.isArray(e.values)?{type:"set",values:e.values.filter(cn).slice(0,2e3)}:null:e.type!=="text"&&e.type!=="number"&&e.type!=="date"||!Array.isArray(e.conditions)?null:{type:e.type,...e.operator==="or"||e.operator==="and"?{operator:e.operator}:{},conditions:fn(e.conditions,e.type)}}function mn(n,e){if(typeof n.colId!="string"||!n.colId.trim())return null;let t=n.colId.trim();if(e.validColumnIds?.has(t)===!1)return null;let r=be(n.filter);return r?{kind:"condition",colId:t,filter:r}:null}function gn(n,e,t){if(!Array.isArray(n.children))return null;let r=[];for(let o of n.children){let i=yr(o,e+1,t);i&&r.push(i)}return r.length===0?null:{kind:"group",operator:n.operator==="or"?"or":"and",children:r,...n.not===!0?{not:!0}:{}}}function yn(n,e,t){return e<=16&&t.nodes<512&&n!=null&&typeof n=="object"}function yr(n,e,t){if(!yn(n,e,t)||t.ancestors.has(n))return null;t.ancestors.add(n),t.nodes++;let r=n,o=r.kind==="condition"?mn(r,t):r.kind==="group"?gn(r,e,t):null;return t.ancestors.delete(n),o}function G(n,e){if(n==null||typeof n!="object")return null;let t=n;if(t.version!==1||t.root==null)return null;let r=yr(t.root,0,{ancestors:new WeakSet,nodes:0,validColumnIds:e});return r?{version:1,root:r}:null}function vr(n,e){return{kind:"condition",colId:n,filter:e}}function X(n,e){if(n==null||typeof n!="object"||Array.isArray(n))return{};let t={};for(let[r,o]of Object.entries(n).slice(0,2e3)){let i=r.trim();if(!i||e?.has(i)===!1)continue;let s=be(o);s&&(t[i]=s)}return t}function wr(n,e,t={}){return{kind:"group",operator:n,children:e,...t.not?{not:!0}:{}}}var It={sortable:!0,resizable:!0,movable:!0,filter:!1,minWidth:80},se={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 T(n,e,t,r=!1){return typeof n!="number"||!Number.isFinite(n)||n<t?e:r?Math.floor(n):n}function vn(n){return n&&Object.prototype.hasOwnProperty.call(se,n)?n:"normal"}function wn(n){return n.theme==="light"||n.theme==="dark"||n.theme==="auto"?n.theme:"light"}function bn(n,e){let t=typeof n.pagination=="object"&&Array.isArray(n.pagination.pageSizeOptions)?n.pagination.pageSizeOptions:void 0,r=t?[...new Set(t.map(o=>T(o,0,1,!0)).filter(Boolean))]:[10,20,50,100];return r.includes(e)||r.push(e),r.sort((o,i)=>o-i)}function kt(n,e){let t=typeof n=="function"?n(e):B(e,n);return t==null?"":String(t)}function Cn(n){let e=n.rowKey,t=e?({data:r})=>kt(e,r):void 0;return{...t?{resolveRowId:t}:{},...e?{rowKey:e}:{}}}function Rn(n,e){let t=se[e];return{columnDefs:Array.isArray(n.columnDefs)?n.columnDefs:[],rowData:Array.isArray(n.rowData)?n.rowData:[],defaultColDef:{...It,...n.defaultColDef??{}},columnTypes:n.columnTypes??{},...Cn(n),rowHeight:T(n.rowHeight,t.rowHeight,1),headerHeight:T(n.headerHeight,t.headerHeight,1),rowBuffer:T(n.rowBuffer,8,0,!0),columnLayout:n.columnLayout==="fit"?"fit":"normal",enableColumnResize:n.enableColumnResize===!0,domLayout:n.domLayout==="autoHeight"?"autoHeight":"normal",rowSelection:n.rowSelection==="single"||n.rowSelection==="multiple"?n.rowSelection:"none",multiSort:n.multiSort??!0,size:e,pinnedTopRowData:Array.isArray(n.pinnedTopRowData)?n.pinnedTopRowData:[],pinnedBottomRowData:Array.isArray(n.pinnedBottomRowData)?n.pinnedBottomRowData:[]}}function Tn(n){return{stripedRows:n.stripedRows??!1,showCellBorders:n.showCellBorders??!1,theme:wn(n),quickFilterText:n.quickFilterText??null,suppressCellFocus:n.suppressCellFocus??!1,suppressRowHoverHighlight:n.suppressRowHoverHighlight??!1,suppressNoRowsOverlay:n.suppressNoRowsOverlay??!1,suppressHeaderFocus:n.suppressHeaderFocus??!1,loading:n.loading??!1,error:n.error??null,className:n.className??""}}function Dn(n){return{editType:n.editType==="fullRow"?"fullRow":"cell",editableIndicator:n.editableIndicator==="always"||n.editableIndicator==="none"?n.editableIndicator:"hover",singleClickEdit:n.singleClickEdit??!1,manualSorting:n.manualSorting??!1,manualFiltering:n.manualFiltering??!1,showSummary:n.showSummary??!1,indexOffset:n.indexOffset??0,applyRowDrag:n.applyRowDrag??!0,undoStackSize:T(n.undoStackSize,100,0,!0),asyncTransactionWaitMillis:T(n.asyncTransactionWaitMillis,16,0,!0)}}function Sn(n){return{masterDetail:n.masterDetail??!1,detailRowHeight:T(n.detailRowHeight,240,1),detailToggleColumn:n.detailToggleColumn??!0,treeData:n.treeData??!1,childrenKey:n.childrenKey??"children",autoCheckedChildren:n.autoCheckedChildren??!0,defaultExpandAll:n.defaultExpandAll??!1}}function En(n){let e=typeof n.pagination=="object"?n.pagination:void 0,t=T(e?.pageSize,20,1,!0);return{paginationEnabled:n.pagination!==!1&&n.datasource==null,paginationMode:e?.mode==="server"?"server":"client",paginationPage:T(e?.page,1,1,!0),paginationTotal:T(e?.total,0,0,!0),paginationPageSize:t,paginationPageSizeOptions:bn(n,t),paginationShowTotal:e?e.showTotal!==!1:!0,paginationShowSizeSelector:e?e.showPageSizeSelector!==!1:!0}}function xn(n){return{watermarkEnabled:n.watermark!=null&&n.watermark!==!1,watermarkConfig:n.watermark==null||n.watermark===!1?null:n.watermark===!0?{text:"MachTable"}:n.watermark}}function Mn(n){return{columnMenu:n.columnMenu??!1,advancedFilterModel:G(n.advancedFilterModel),...In(n),locale:n.locale??{},suppressWarnings:n.suppressWarnings??!1,enableRangeSelection:n.enableRangeSelection??!1,suppressClipboard:n.suppressClipboard??!1,contextMenu:n.contextMenu??!1,tooltipShowDelay:T(n.tooltipShowDelay,600,0),flashCells:n.flashCells??!0,fillHandle:n.fillHandle??!0,statusBarEnabled:n.statusBar===!0||typeof n.statusBar=="object"&&n.statusBar!=null,statusBarPanels:typeof n.statusBar=="object"&&n.statusBar?.panels?n.statusBar.panels:["rowCount","selectedRowCount","rangeAggregate"]}}function In(n){let e=n.persistence;return!e||typeof e.key!="string"||!e.key.trim()?{persistence:null}:{persistence:{key:e.key.trim(),debounceMs:T(e.debounceMs,160,0,!0),...e.sections?{sections:[...new Set(e.sections)]}:{},...e.store?{store:e.store}:{}}}}function kn(n){return{datasourceMode:n.datasourceMode==="block"?"block":"sequential",blockSize:T(n.blockSize,100,1,!0),infiniteBufferRows:T(n.infiniteBufferRows,40,0,!0),maxBlocksInCache:T(n.maxBlocksInCache,12,1,!0),datasourceMaxConcurrentRequests:T(n.datasourceMaxConcurrentRequests,4,1,!0),blockPrefetch:T(n.blockPrefetch,1,0,!0),datasourceRowCount:n.datasourceRowCount==null?null:T(n.datasourceRowCount,0,0,!0),dataProcessorMinRows:T(n.dataProcessorMinRows,5e3,1,!0),datasourceRetryCount:T(n.datasourceRetryCount,2,0,!0),datasourceRetryDelay:T(n.datasourceRetryDelay,300,0,!0),datasourceRetryJitter:Math.min(1,T(n.datasourceRetryJitter,.15,0))}}function An(n){return{ariaLabel:n.ariaLabel??"MachTable data grid",ariaLabelledBy:n.ariaLabelledBy??"",ariaDescribedBy:n.ariaDescribedBy??"",overlayNoRowsTemplate:n.overlayNoRowsTemplate??"",overlayLoadingTemplate:n.overlayLoadingTemplate??"",overlayErrorTemplate:n.overlayErrorTemplate??"",allowUnsafeOverlayHtml:n.allowUnsafeOverlayHtml??!1}}var Pn=["detailRowRenderer","isRowExpandable","aggFuncs","components","actionPolicy","summaryMethod","datasource","getRowHeight","tooltipComponent","getContextMenuItems","initialState","rowEditValidator","isTreeRowExpandable","loadTreeChildren","dataProcessor"];function Ln(n,e){for(let t of Pn)n[t]&&Object.assign(e,{[t]:n[t]})}function Gn(n,e){for(let t of Object.keys(n))t.startsWith("on")&&typeof n[t]=="function"&&Object.assign(e,{[t]:n[t]})}function br(n){let e=vn(n.size),t={...Rn(n,e),...Tn(n),...Dn(n),...Sn(n),...En(n),...xn(n),...Mn(n),...kn(n),...An(n),features:Array.isArray(n.features)?n.features:[]};return Ln(n,t),Gn(n,t),t}function Cr(n){return Array.isArray(n)?n.filter(e=>typeof e=="string"&&e.length>0):typeof n=="string"&&n.length>0?[n]:[]}function J(n,e){return Cr(n.type).includes(e)}function Rr(n,e,t={}){let r={};for(let o of Cr(n.type)){let i=t[o];i&&Object.assign(r,i)}return{...e,...r,...n}}var O=class{constructor(e,t){this.manualWidth=null;this.flex=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 r=t.pinned;this.pinned=r===!0?"left":r===!1||r==null?null:r,this.resetWidth()}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}resetWidth(){this.manualWidth=null,this.flex=typeof this.colDef.flex=="number"&&Number.isFinite(this.colDef.flex)&&this.colDef.flex>0?this.colDef.flex:null}};var U=class n{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 n?t.getLeafColumns(e):e.push(t);return e}};function Q(n){return Array.isArray(n.children)}function Ce(n,e){return typeof n=="number"&&Number.isFinite(n)&&n>0?n:e}function Tr(n){let e=Ce(n.minWidth,80);return{min:e,max:Math.max(e,Ce(n.maxWidth,Number.MAX_SAFE_INTEGER))}}function A(n,e){let{min:t,max:r}=Tr(e),o=Ce(n,Ce(e.width,150));return Math.max(t,Math.min(r,o))}function Dr(n,e){let t=n.map(s=>A(s.width??150,s)),r=[],o=0;n.forEach((s,a)=>{let l=s.flex??0;l>0&&(r.push(a),o+=l)});let i=0;for(let s of t)i+=s;if(o>0&&e>i){let s=e-i;for(let a=0;a<4&&s>.5&&r.length>0;a++){let l=[],d=0;for(let p of r){let m=n[p].flex??0;l.push(p),d+=m}let c=[];for(let p=0;p<l.length;p++){let m=l[p],g=n[m].flex??0,v=s*g/d,y=t[m];t[m]=A(y+v,n[m]),c.push(t[m]-y)}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;r.length=0;for(let p of h)r.push(p)}}return t}function Fn(n,e,t){let r=new Set(n.map((i,s)=>s)),o=t;for(let i=0;i<n.length+1&&r.size>0;i++){let s=0;for(let l of r)s+=Math.max(1,e[l]);if(s<=0)break;let a=!1;for(let l of[...r]){let d=o*(Math.max(1,e[l])/s),c=A(d,n[l]),{min:u,max:h}=Tr(n[l]);(d<u||d>h)&&(e[l]=c,o-=c,r.delete(l),a=!0)}if(!a){for(let l of r)e[l]=A(o*(Math.max(1,e[l])/s),n[l]);break}o=Math.max(0,o)}}function Nn(n,e,t){let r=t-e.reduce((o,i)=>o+i,0);if(!(Math.abs(r)<=.01))for(let o=e.length-1;o>=0;o--){let i=A(e[o]+r,n[o]);if(Math.abs(i-e[o])>.01){e[o]=i;return}}}function Sr(n,e){let t=n.map(r=>A(r.width??150,r));return!Number.isFinite(e)||e<=0||n.length===0||(Fn(n,t,e),Nn(n,t,e)),t}var At="__rg_detail_toggle__";function Re(n){return typeof n=="number"&&Number.isFinite(n)&&n>0}var Te=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])),r=this.core.options.defaultColDef,o=new Set(this.core.options.masterDetail&&this.core.options.detailToggleColumn?[At]:[]),i=(s,a,l)=>s.map((d,c)=>{if(Q(d)){let y=d.groupId??d.headerName??`group_${c}_${l}`,w=new U(y,d);return w.parent=a,w.children=i(d.children,w,l+1),w}let u=d,h=u.colId??u.field??`col_${c}`,p=h,m=2;for(;o.has(p);)p=`${h}_${m++}`;o.add(p);let g=new O(p,Rr(u,r,this.core.options.columnTypes));g.parentGroup=a,g.level=l;let v=t.get(p);return v&&(g.manualWidth=v.manualWidth,g.flex=v.flex,g.hide=v.hide,g.pinned=v.pinned),g});if(this.rootChildren=i(this.defs,null,0),this.core.options.masterDetail&&this.core.options.detailToggleColumn){let s=new O(At,{colId:At,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 r of e)r instanceof U?this.collectLeaves(r.children,t):t.push(r);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,r)=>this.flatIndexById.set(t.id,r))}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 r=Math.max(0,e-t),o=[],i=[];for(let c of this.center)(c.colDef.suppressSizeToFit||c.manualWidth!=null?i:o).push(c);let s=0;for(let c of i)c.currentWidth=A(c.manualWidth??c.colDef.width??150,this.widthInputOf(c)),s+=c.currentWidth;let a=o.map(c=>this.widthInputOf(c)),l=Math.max(0,r-s),d=this.core.options.columnLayout==="fit"?Sr(a,l):Dr(a,l);o.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,...e.flex!=null?{flex:e.flex}:{}}}setColumnWidth(e,t){return Re(t)?(e.manualWidth=A(t,this.widthInputOf(e)),e.flex=null,!0):!1}setColumnVisibility(e,t){let r=this.getColumn(e);!r||r.hide===!t||(r.hide=!t,this.regroup())}moveColumn(e,t){let r=this.getColumn(e);if(!r)return!1;let o=this.paneOf(r),i=u=>r.parentGroup?!0:this.paneOf(u)===o,s=r.parentGroup?r.parentGroup.children:this.rootChildren,a=s.filter(u=>u instanceof O&&!u.hide&&i(u)),l=a.indexOf(r);if(l<0)return!1;a.splice(l,1);let d=Math.max(0,Math.min(t,a.length));a.splice(d,0,r);let c=[];return s.forEach((u,h)=>{u instanceof O&&!u.hide&&i(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 r=this.getColumn(e);r&&(r.pinned=t,this.regroup())}getColumnState(){return this.columns.map(e=>({colId:e.id,hide:e.hide,width:e.manualWidth??e.currentWidth,flex:e.flex,widthMode:e.manualWidth==null?"auto":"manual",pinned:e.pinned}))}applyColumnState(e){let t=new Map(e.map(r=>[r.colId,r]));for(let r of this.columns){let o=t.get(r.id);o&&this.applyColumnViewState(r,o)}this.applyStateOrder(e),this.regroup()}applyColumnViewState(e,t){typeof t.hide=="boolean"&&(e.hide=t.hide),t.widthMode==="auto"?(e.resetWidth(),Re(t.flex)&&(e.flex=t.flex)):Re(t.flex)?(e.flex=t.flex,e.manualWidth=null):Re(t.width)&&(e.manualWidth=A(t.width,this.widthInputOf(e)),e.flex=null),(t.pinned==="left"||t.pinned==="right"||t.pinned===null)&&(e.pinned=t.pinned)}applyStateOrder(e){let t=new Map;e.forEach((o,i)=>t.set(o.colId,i));let r=o=>o.pinned==="left"?"left":o.pinned==="right"?"right":"center";for(let o of["left","center","right"]){let i=this.rootChildren.filter(l=>l instanceof O&&!l.hide&&l.parentGroup===null&&r(l)===o);if(i.length<2)continue;let s=i.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===i[d]))continue;let a=[];this.rootChildren.forEach((l,d)=>{l instanceof O&&!l.hide&&l.parentGroup===null&&r(l)===o&&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.resetWidth(),e.hide=e.colDef.hide??!1;let t=e.colDef.pinned;e.pinned=t===!0?"left":t===!1||t==null?null:t}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(r=>r.id===t.colId)&&(t.direction==="asc"||t.direction==="desc")).map(t=>({colId:t.colId,direction:t.direction}))}cycleSort(e,t){let r=[...this.sortModel],o=r.findIndex(l=>l.colId===e.id),i=o>=0?r[o].direction:null,s=i===null?"asc":i==="asc"?"desc":null;t&&this.core.options.multiSort?s===null?o>=0&&r.splice(o,1):o>=0?r[o]={colId:e.id,direction:s}:r.push({colId:e.id,direction:s}):(r.length=0,s&&r.push({colId:e.id,direction:s})),this.sortModel=r}};function xr(n){return n==null?"":String(n).toLowerCase()}function On(n,e,t){let r=xr(n),o=e.map(i=>{let s=(i.value??"").toLowerCase();switch(i.match){case"contains":return r.includes(s);case"notContains":return!r.includes(s);case"equals":return r===s;case"notEquals":return r!==s;case"startsWith":return r.startsWith(s);case"endsWith":return r.endsWith(s);case"blank":return r==="";case"notBlank":return r!=="";default:return!0}});return o.length===0?!0:t==="or"?o.some(Boolean):o.every(Boolean)}function Hn(n,e,t){switch(t.match){case"equals":return n===e;case"notEquals":return n!==e;case"lessThan":return n<e;case"lessThanOrEqual":return n<=e;case"greaterThan":return n>e;case"greaterThanOrEqual":return n>=e;case"inRange":return n>=e&&n<=(t.value2??e);default:return!0}}function Bn(n,e){let t=n==null||n==="";if(e.match==="blank")return t;if(e.match==="notBlank")return!t;if(t)return!1;let r=typeof n=="number"?n:Number(n);if(Number.isNaN(r))return!1;let o=e.value;return o==null||Number.isNaN(o)?!1:Hn(r,o,e)}function Vn(n,e,t){let r=e.map(o=>Bn(n,o));return r.length===0?!0:t==="or"?r.some(Boolean):r.every(Boolean)}function De(n){if(n==null||n==="")return null;if(n instanceof Date)return isNaN(n.getTime())?null:n.getTime();if(typeof n=="number")return n;let e=Date.parse(String(n));return isNaN(e)?null:e}function zn(n,e,t){let r=e.map(o=>{let i=De(n)==null;if(o.match==="blank")return i;if(o.match==="notBlank")return!i;if(i)return!1;let s=De(n),a=o.value!=null?De(o.value):null;if(a==null)return!1;switch(o.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=o.value2!=null?De(o.value2):null;return l!=null?s>=a&&s<=l:s>=a}default:return!0}});return r.length===0?!0:t==="or"?r.some(Boolean):r.every(Boolean)}function Wn(n,e){return e.length===0?!0:e.some(t=>t==null&&n==null||t===n)}function Mr(n,e){let t=e.type!=="set"&&e.operator==="or"?"or":"and";switch(e.type){case"text":return On(n,e.conditions,t);case"number":return Vn(n,e.conditions,t);case"date":return zn(n,e.conditions,t);case"set":return Wn(n,e.values);default:return!0}}function Pt(n,e,t,r){if(n.kind==="condition"){let i=e.get(n.colId);return!i||Mr(r(t,i),n.filter)}let o=n.operator==="or"?n.children.some(i=>Pt(i,e,t,r)):n.children.every(i=>Pt(i,e,t,r));return n.not?!o:o}function _n(n,e,t,r){return t?Pt(t.root,new Map(e.map(o=>[o.id,o])),n,r):!0}function Lt(n,e,t,r,o,i){for(let s of Object.keys(t)){let a=t[s],l=e.find(c=>c.id===s);if(!l)continue;let d=i(n,l);if(!Mr(d,a))return!1}if(!_n(n,e,r,i))return!1;if(o&&o.trim()!==""){let s=o.trim().toLowerCase().split(/\s+/);for(let a of s)if(!e.some(d=>xr(i(n,d)).includes(a)))return!1}return!0}var Ir=typeof Intl<"u"?new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"}):null;function Kn(n,e){let t=n==null||n==="",r=e==null||e==="";return!t&&!r?null:t&&r?0:t?1:-1}function Un(n,e){let t=Number.isNaN(n),r=Number.isNaN(e);return t||r?t===r?0:t?1:-1:n-e}function qn(n,e){return n===e?0:n?1:-1}function Se(n,e){let t=Kn(n,e);if(t!==null)return t;if(typeof n=="number"&&typeof e=="number")return Un(n,e);if(n instanceof Date&&e instanceof Date)return n.getTime()-e.getTime();if(typeof n=="boolean"&&typeof e=="boolean")return qn(n,e);let r=String(n),o=String(e);return Ir?Ir.compare(r,o):r.localeCompare(o)}function Gt(n,e,t,r){let o=new Map;for(let l of t)o.set(l.id,l);let i=[],s=[];for(let l of e){let d=o.get(l.colId);d&&(i.push(d.colDef.comparator??Se),s.push(l.direction))}let a=n.map(l=>({node:l,values:e.map(d=>r(l,o.get(d.colId)))}));return a.sort((l,d)=>{for(let c=0;c<i.length;c++){let u=i[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 Ee(n){return n.filter(e=>typeof e=="number"&&!isNaN(e))}var Ft={sum:n=>Ee(n).reduce((e,t)=>e+t,0),avg:n=>{let e=Ee(n);return e.length===0?null:e.reduce((t,r)=>t+r,0)/e.length},count:n=>n.length,min:n=>{let e=Ee(n);return e.length===0?null:Math.min(...e)},max:n=>{let e=Ee(n);return e.length===0?null:Math.max(...e)},first:n=>n.length>0?n[0]:null,last:n=>n.length>0?n[n.length-1]:null};function xe(n){let e={...Ft,...n??{}};return t=>e[t]}function Z(n){if(n.reason instanceof Error)return n.reason;let e=new Error(typeof n.reason=="string"?n.reason:"Block request aborted");return e.name="AbortError",e}function Me(n){return Number.isFinite(n)?Math.max(1,Math.trunc(n)):1}var Ie=class{constructor(e,t,r=4){this.maxBlocks=e;this.onEvict=t;this.maxConcurrentRequests=r;this.blocks=new Map;this.inflight=new Map;this.clock=0;this.generation=0;this.hitCount=0;this.missCount=0;this.evictionCount=0;this.activeRequests=0;this.maxBlocks=Me(e),this.maxConcurrentRequests=Me(r)}configure(e,t=this.maxConcurrentRequests){this.maxBlocks=Me(e),this.maxConcurrentRequests=Me(t),this.evictOverflow(),this.drainQueue()}peek(e){let t=this.blocks.get(e);if(t)return t.touchedAt=++this.clock,t}has(e){return this.blocks.has(e)}load(e,t,r,o=0){if(r?.aborted)return Promise.reject(Z(r));let i=this.peek(e);if(i)return this.hitCount++,Promise.resolve(i);let s=this.inflight.get(e);if(s)return this.hitCount++,s.priority=Math.max(s.priority,o),this.drainQueue(),this.attachConsumer(e,s,r);this.missCount++;let a=new AbortController,l,d,c=new Promise((p,m)=>{l=p,d=m}),u={controller:a,promise:c,consumers:0,loader:t,priority:o,state:"queued",resolve:l,reject:d};this.inflight.set(e,u);let h=this.attachConsumer(e,u,r);return this.drainQueue(),h}purge(){this.generation++;for(let e of this.inflight.values())e.controller.abort(),e.state==="queued"&&e.reject(Z(e.controller.signal));this.inflight.clear();for(let[e,t]of this.blocks)this.onEvict?.(e,t);this.blocks.clear()}snapshot(){let e=0,t=0;for(let r of this.blocks.values())e+=r.rows.length;for(let r of this.inflight.values())r.state==="active"&&t++;return{cachedBlockCount:this.blocks.size,loadingBlockCount:this.inflight.size,activeRequestCount:t,queuedRequestCount:Math.max(0,this.inflight.size-t),cachedRowCount:e,hitCount:this.hitCount,missCount:this.missCount,evictionCount:this.evictionCount}}drainQueue(){for(;this.activeRequests<this.maxConcurrentRequests;){let e,t;for(let[r,o]of this.inflight)o.state!=="queued"||o.controller.signal.aborted||(!t||o.priority>t.priority)&&(e=r,t=o);if(e==null||!t)return;this.startEntry(e,t)}}startEntry(e,t){t.state="active",this.activeRequests++;let r=this.generation;this.runLoader(t).then(o=>{r===this.generation&&!t.controller.signal.aborted&&(this.blocks.set(e,{rows:o.rows,...o.lastRow==null?{}:{lastRow:o.lastRow},touchedAt:++this.clock}),this.evictOverflow()),t.resolve(o)},t.reject).finally(()=>{this.activeRequests=Math.max(0,this.activeRequests-1),this.inflight.get(e)===t&&this.inflight.delete(e),this.drainQueue()})}runLoader(e){let{signal:t}=e.controller;return t.aborted?Promise.reject(Z(t)):new Promise((r,o)=>{let i=()=>o(Z(t));t.addEventListener("abort",i,{once:!0}),Promise.resolve().then(()=>e.loader(t)).then(r,o).finally(()=>{t.removeEventListener("abort",i)})})}attachConsumer(e,t,r){return t.consumers++,new Promise((o,i)=>{let s=!1,a=d=>{s||(s=!0,r?.removeEventListener("abort",l),t.consumers=Math.max(0,t.consumers-1),d())},l=()=>a(()=>{t.consumers===0&&this.inflight.get(e)===t&&(this.inflight.delete(e),t.controller.abort(r?.reason),t.state==="queued"&&t.reject(Z(t.controller.signal))),i(Z(r))});r?.addEventListener("abort",l,{once:!0}),t.promise.then(d=>a(()=>o(d)),d=>a(()=>i(d instanceof Error?d:new Error(String(d??"Block request failed")))))})}evictOverflow(){for(;this.blocks.size>this.maxBlocks;){let e=-1,t=Number.POSITIVE_INFINITY;for(let[o,i]of this.blocks)i.touchedAt<t&&(e=o,t=i.touchedAt);if(e<0)return;let r=this.blocks.get(e);this.blocks.delete(e),this.evictionCount++,r&&this.onEvict?.(e,r)}}};function ae(n,e){if(n==null||typeof n!="object")return;let t=n[e];return Array.isArray(t)?t:void 0}var ke=class{constructor(e){this.core=e;this.all=[];this.roots=[];this.childIds=new Map;this.displayed=[];this.nodesById=new Map;this.filterModel={};this.advancedFilterModel=null;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.displayRevision=0;this.blockNodes=new Map;this.blockPlaceholders=new Map;this.installedBlocks=new Set;this.blockCache=new Ie(12,e=>this.evictBlock(e));this.dataProcessorSeq=0;this.dataProcessorAbort=null;this.skipDataProcessorOnce=!1;this.lastRequestedBlock=0;this.pipelineRows=[];this.page=1;this.pageSize=20;this.advancedFilterModel=G(e.options.advancedFilterModel)}resolveRowId(e,t,r){let o=this.core.options.resolveRowId;if(!o)return r;try{let i=o({data:e,index:t,api:this.core.getApi()});if(typeof i=="string"&&i.length>0)return i;this.core.reportError(new Error("rowKey must resolve to a non-empty identifier"),"rowKey",{index:t})}catch(i){this.core.reportError(i,"rowKey",{index:t})}return r}get isTree(){return this.core.options.treeData}get isInfinite(){return this.core.options.datasource!=null}get isBlockDatasource(){return this.isInfinite&&this.core.options.datasourceMode==="block"}getDisplayTotalCount(){if(this.isInfinite){if(this.isBlockDatasource)return this.resolveBlockRowCount();let e=Math.max(0,this.displayed.length-this.all.length);return(this.infiniteLastRow??this.all.length)+e}return this.displayed.length}getDisplayRevision(){return this.displayRevision}isLoadingInfinite(){return this.infiniteLoading}startInfinite(e){return!this.isInfinite||e?.aborted?Promise.resolve():(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.requestUpdate({data:!0}),this.isBlockDatasource?(this.blockCache.configure(this.core.options.maxBlocksInCache,this.core.options.datasourceMaxConcurrentRequests),this.loadRandomBlock(0,e)):this.loadBlock(0,void 0,e))}reloadInfinite(e){return this.isInfinite?this.startInfinite(e):Promise.resolve()}setInfiniteLoading(e){this.infiniteLoading=e,this.core.skeleton.setInfiniteLoading(e,this.core.getLocaleText("loading"))}loadBlock(e,t,r){if(!this.isInfinite||this.infiniteRequested||this.infiniteLastRow!=null&&e>=this.infiniteLastRow)return Promise.resolve();let o=this.core.options.datasource,i=this.core.options.blockSize,s=t??e+i;if(s<=e)return Promise.resolve();let a=++this.infiniteSeq,l=new AbortController,d=()=>l.abort(r?.reason);return r?.addEventListener("abort",d,{once:!0}),this.infiniteAbort=l,this.infiniteRequested=!0,this.setInfiniteLoading(!0),new Promise(c=>{let u=!1,h=0;this.infinitePendingResolve=c;let p=g=>{u||(u=!0,r?.removeEventListener("abort",d),a===this.infiniteSeq&&(this.infiniteRequested=!1,this.infiniteAbort=null,this.infinitePendingResolve=null,this.setInfiniteLoading(!1),g!=null&&g?.name!=="AbortError"&&this.core.reportError(g,"datasource.getRows",{startRow:e,endRow:s})),c())},m=()=>{if(u||a!==this.infiniteSeq||l.signal.aborted||this.core.isDestroyed()){p();return}h++;let g=!1,v=y=>{if(!(g||u)){if(g=!0,a!==this.infiniteSeq||l.signal.aborted||this.core.isDestroyed()){p();return}if(h<=this.core.options.datasourceRetryCount){let w=this.retryDelay(h);this.infiniteRetryTimer=setTimeout(()=>{this.infiniteRetryTimer=null,m()},w);return}p(y??new Error("Datasource request failed"))}};try{let y=o.getRows({startRow:e,endRow:s,sortModel:this.core.columnModel.getSortModel(),filterModel:this.getFilterModel(),advancedFilterModel:this.getAdvancedFilterModel(),quickFilterText:this.quickFilter,signal:l.signal,onSuccess:(w,C)=>{if(g||u)return;if(g=!0,a!==this.infiniteSeq||this.core.isDestroyed()||l.signal.aborted){p();return}let S=w??[];typeof C=="number"&&C>=0?this.infiniteLastRow=C:S.length<s-e&&(this.infiniteLastRow=e+S.length);let R=this.all.length===0;this.appendInfiniteRows(S),p(),this.refreshPipeline(),this.core.requestUpdate({data:!0}),R&&this.core.relayout(),this.core.headerRenderer.refreshSelectAllCheckbox()},fail:v});y&&typeof y.catch=="function"&&y.catch(v)}catch(y){v(y)}};m()})}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,this.blockCache.purge(),this.blockNodes.clear(),this.blockPlaceholders.clear(),this.installedBlocks.clear()}appendInfiniteRows(e){for(let t of e){if(t==null)continue;let r=this.all.length,o=this.resolveRowId(t,r,`inf-${this.core.nextId()}`);if(this.nodesById.has(o)){this.core.reportError(new Error(`Duplicate row id: ${o}`),"datasource.getRows",{rowId:o});continue}let i={id:o,data:t,rowIndex:-1,selected:this.core.selectionService.isSelected(o)};this.all.push(i),this.nodesById.set(o,i),this.roots.push(i)}}loadRandomBlock(e,t,r=0){if(!this.isBlockDatasource||e<0)return Promise.resolve();if(t?.aborted)return Promise.reject(this.abortError(t.reason));let o=this.core.options.blockSize,i=e*o;if(i>=this.resolveBlockRowCount())return Promise.resolve();let s=this.infiniteLastRow==null?i+o:Math.min(this.infiniteLastRow,i+o),a=this.blockCache.load(e,l=>this.requestDatasourceRange(i,s,l),t,r);return this.setInfiniteLoading(this.all.length===0&&this.blockCache.snapshot().loadingBlockCount>0),a.then(l=>{t?.aborted||this.core.isDestroyed()||!this.isBlockDatasource||this.installedBlocks.has(e)||(this.installBlock(e,l),this.refreshPipeline(),this.core.requestUpdate({data:!0}),this.core.headerRenderer.refreshSelectAllCheckbox())}).catch(l=>{throw l?.name!=="AbortError"&&this.core.reportError(l,"datasource.getRows",{startRow:i,endRow:s}),l}).finally(()=>{this.setInfiniteLoading(this.all.length===0&&this.blockCache.snapshot().loadingBlockCount>0)})}requestDatasourceRange(e,t,r){let o=this.core.options.datasource;return new Promise((i,s)=>{let a=0,l=null,d=!1,c=p=>{d||(d=!0,l!=null&&clearTimeout(l),r.removeEventListener("abort",u),s(p instanceof Error?p:new Error(typeof p=="string"?p:"Datasource request failed")))},u=()=>c(this.abortError(r.reason));r.addEventListener("abort",u,{once:!0});let h=()=>{if(d)return;if(r.aborted||this.core.isDestroyed()){u();return}a++;let p=!1,m=g=>{if(!(p||d)){if(p=!0,r.aborted||this.core.isDestroyed()){u();return}if(a<=this.core.options.datasourceRetryCount){let v=this.retryDelay(a);l=setTimeout(()=>{l=null,h()},v)}else c(g)}};try{let g=o.getRows({startRow:e,endRow:t,sortModel:this.core.columnModel.getSortModel(),filterModel:this.getFilterModel(),advancedFilterModel:this.getAdvancedFilterModel(),quickFilterText:this.quickFilter,signal:r,onSuccess:(v,y)=>{p||d||(p=!0,d=!0,r.removeEventListener("abort",u),i({rows:v??[],...typeof y=="number"&&y>=0?{lastRow:y}:{}}))},fail:m});g&&typeof g.catch=="function"&&g.catch(m)}catch(g){m(g)}};h()})}installBlock(e,t){let r=this.core.options.blockSize,o=e*r;this.evictBlock(e),typeof t.lastRow=="number"&&t.lastRow>=0?this.infiniteLastRow=t.lastRow:t.rows.length<r&&(this.infiniteLastRow=o+t.rows.length),t.rows.forEach((i,s)=>{if(i==null)return;let a=o+s;if(this.infiniteLastRow!=null&&a>=this.infiniteLastRow)return;let l=this.resolveRowId(i,a,`block-${a}`),d=this.nodesById.get(l);if(d&&d.rowIndex!==a){this.core.reportError(new Error(`Duplicate row id: ${l}`),"datasource.getRows",{rowId:l});return}let c={id:l,data:i,rowIndex:a,selected:this.core.selectionService.isSelected(l)};this.blockNodes.set(a,c),this.blockPlaceholders.delete(a),this.nodesById.set(l,c),this.rowSequence.set(c,a+1)}),this.rebuildLoadedBlockRows(),this.installedBlocks.add(e)}evictBlock(e){this.installedBlocks.delete(e);let t=this.core.options.blockSize,r=e*t;for(let o=r;o<r+t;o++){let i=this.blockNodes.get(o);i&&(this.blockNodes.delete(o),this.nodesById.get(i.id)===i&&this.nodesById.delete(i.id))}this.rebuildLoadedBlockRows()}rebuildLoadedBlockRows(){this.all=[...this.blockNodes.entries()].sort(([e],[t])=>e-t).map(([,e])=>e),this.roots=this.all}resolveBlockRowCount(){if(this.infiniteLastRow!=null)return this.infiniteLastRow;if(this.core.options.datasourceRowCount!=null)return this.core.options.datasourceRowCount;if(this.blockNodes.size===0)return this.core.options.blockSize;let e=0;for(let t of this.blockNodes.keys())e=Math.max(e,t+1);return e+this.core.options.blockSize}blockPlaceholder(e){let t=this.blockPlaceholders.get(e);if(!t&&(t={id:`__mach_loading_${e}`,data:null,rowIndex:e,selected:!1,loading:!0},this.blockPlaceholders.set(e,t),this.blockPlaceholders.size>2e3)){let r=this.blockPlaceholders.keys().next().value;r!=null&&this.blockPlaceholders.delete(r)}return t}abortError(e){if(e instanceof Error)return e;let t=new Error(typeof e=="string"?e:"Operation aborted");return t.name="AbortError",t}retryDelay(e){let t=Math.min(this.core.options.datasourceRetryDelay*2**Math.max(0,e-1),3e4),r=this.core.options.datasourceRetryJitter;return Math.max(0,Math.round(t*(1+(Math.random()*2-1)*r)))}checkInfiniteScroll(e){if(this.isBlockDatasource){this.prefetchVisibleBlocks(e);return}if(!this.isInfinite||this.infiniteRequested)return;let t=this.all.length;if(this.infiniteLastRow!=null&&t>=this.infiniteLastRow)return;let r=this.core.options.infiniteBufferRows;if(e+r<t&&e<t)return;let o=this.core.options.blockSize,i=this.infiniteLastRow==null?t+o:Math.min(this.infiniteLastRow,t+o);this.loadBlock(t,i)}prefetchVisibleBlocks(e){if(e<0)return;let t=this.core.options.blockSize,r=Math.floor(e/t),o=this.core.options.blockPrefetch,i=r<this.lastRequestedBlock?-1:1;this.lastRequestedBlock=r;for(let s=0;s<=o;s++){let a=s===0?[r]:[r+i*s,r-i*s];for(let l of a)l<0||l*t>=this.resolveBlockRowCount()||this.loadRandomBlock(l,void 0,o-s+1).catch(()=>{})}}onServerParamsChanged(){return this.reloadInfinite().catch(()=>{})}onDatasourceChanged(){return this.cancelInfiniteRequest(),this.isInfinite?this.startInfinite().catch(()=>{}):(this.infiniteLastRow=null,this.setRowData(this.core.options.rowData),this.core.requestUpdate({data:!0}),Promise.resolve())}destroy(){this.cancelInfiniteRequest(),this.cancelTreeLoads(),this.cancelDataProcessor(),this.core.options.dataProcessor?.destroy?.()}ensureRowsLoaded(e,t,r){if(!this.isBlockDatasource)return Promise.resolve();let o=this.core.options.blockSize,i=Math.max(0,Math.trunc(e)),s=Math.min(this.resolveBlockRowCount(),Math.max(i,Math.trunc(t))),a=Math.floor(i/o),l=Math.max(a,Math.floor(Math.max(i,s-1)/o)),d=[];for(let c=a;c<=l;c++)d.push(this.loadRandomBlock(c,r,100));return Promise.all(d).then(()=>{})}purgeDatasourceCache(){this.isBlockDatasource&&(this.blockCache.purge(),this.blockNodes.clear(),this.blockPlaceholders.clear(),this.installedBlocks.clear(),this.all=[],this.roots=[],this.nodesById.clear(),this.refreshPipeline(),this.core.requestUpdate({data:!0}))}getDatasourceCacheSnapshot(){return this.blockCache.snapshot()}setRowData(e){this.cancelTreeLoads(),this.core.changeTracker.clear();let t=this.core.options.resolveRowId,r=this.core.options.childrenKey,o=[],i=[],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 g=this.isTree?ae(c,r):void 0,v={id:m,data:c,rowIndex:-1,selected:!1,treeChildrenLoaded:Array.isArray(g)};if(this.treeDepth.set(v,u),o.push(v),s.set(m,v),h!=null){let y=a.get(h)??[];y.push(m),a.set(h,y)}else i.push(v);if(this.isTree&&Array.isArray(g))for(let y of g)y!=null&&d(y,u+1,m);return v};(e??[]).forEach(c=>{c!=null&&d(c,0,null)}),this.all=o,this.roots=i,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 o)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 r=this.nodesById.get(e),o=this.core.options.loadTreeChildren;if(!this.isTree||!r?.data||!o)return Promise.resolve([]);if(!t&&r.treeChildrenLoaded)return Promise.resolve(this.getChildrenIds(e).flatMap(l=>{let d=this.nodesById.get(l)?.data;return d==null?[]:[d]}));let i=this.treeLoadPromises.get(e);if(i&&!t)return i;this.treeLoadControllers.get(e)?.abort();let s=new AbortController;this.treeLoadControllers.set(e,s),r.treeLoading=!0,r.treeLoadError=void 0,this.core.requestUpdate({data:!0});let a=Promise.resolve().then(()=>o({data:r.data,node:r,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(r,l),r.treeChildrenLoaded=!0,r.treeLoadError=void 0,this.core.emit("treeChildrenLoaded",{rowId:e,rowNode:r,children:l}),l}).catch(l=>{if(s.signal.aborted||l?.name==="AbortError")return[];throw r.treeLoadError=l,r.treeChildrenLoaded=!1,this.core.reportError(l,"treeData.loadChildren",{rowId:e}),this.core.emit("treeChildrenLoadFailed",{rowId:e,rowNode:r,error:l}),l}).finally(()=>{this.treeLoadControllers.get(e)===s&&(this.treeLoadControllers.delete(e),this.treeLoadPromises.delete(e),r.treeLoading=!1,this.core.requestUpdate({data:!0}))});return this.treeLoadPromises.set(e,a),a}replaceTreeChildren(e,t){let r=new Set,o=[...this.getChildrenIds(e.id)];for(;o.length>0;){let s=o.pop();r.has(s)||(r.add(s),o.push(...this.getChildrenIds(s)))}this.validateTreeChildren(t,r);for(let s of r)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 i=this.getTreeDepth(e)+1;for(let s of t)s!=null&&this.buildChildNodes(e,s,i);this.reindexAll(),this.core.selectionService.onRowsRebuilt(this.core.options.resolveRowId!=null),this.refreshPipeline(),this.core.requestUpdate({data:!0})}validateTreeChildren(e,t){let r=this.core.options.resolveRowId,o=r?new Set([...this.nodesById.keys()].filter(l=>!t.has(l))):null,i=new WeakSet,s=[...e],a=0;for(;s.length>0;){let l=s.pop();if(l==null)continue;if(typeof l=="object"){if(i.has(l))throw new TypeError("[MachTable] Lazy tree children contain a cyclic object graph.");i.add(l)}if(r&&o){let c=r({data:l,index:a++,api:this.core.getApi()});if(typeof c!="string"||c.length===0)throw new TypeError("[MachTable] rowKey must resolve to a non-empty identifier for lazy tree children.");if(o.has(c))throw new Error(`Duplicate row id: ${c}`);o.add(c)}let d=ae(l,this.core.options.childrenKey);d&&s.push(...d)}}applyTransaction(e,t=!0){let r=this.core.options.resolveRowId,o=[],i=[];if(e.remove?.length){let a=new Set,l=new Set,d=u=>{if(r){let p=[this.resolveRowId(u,-1,`__missing_remove_${this.core.nextId()}`)];for(;p.length>0;){let m=p.pop();if(!a.has(m)){a.add(m);for(let g of this.childIds.get(m)??[])p.push(g)}}}else{let h=[u];for(;h.length>0;){let p=h.pop();l.add(p);let m=this.isTree?ae(p,this.core.options.childrenKey):void 0;if(m)for(let g of m)h.push(g)}}};e.remove.forEach(d),this.all=this.all.filter(u=>{let h=a.has(u.id)||u.data!=null&&l.has(u.data);return h&&(i.push(u.id),this.nodesById.delete(u.id),this.childIds.delete(u.id)),!h});let c=new Set(this.all);this.roots=this.roots.filter(u=>c.has(u))}if(e.update?.length)for(let a of e.update){let l;r?l=this.nodesById.get(this.resolveRowId(a,-1,`__missing_update_${this.core.nextId()}`)):l=this.all.find(d=>d.data===a),l&&(l.data=a,i.push(l.id),this.core.bodyRenderer.invalidateRowHeight(l),o.push(l))}if(e.add?.length){let a=e.addIndex!=null?Math.max(0,Math.min(e.addIndex,this.roots.length)):this.roots.length,l=[];e.add.forEach((d,c)=>{let u=this.resolveRowId(d,a+c,`add-${this.core.nextId()}`);if(this.nodesById.has(u)){this.core.reportError(new Error(`Duplicate row id: ${u}`),"transaction.add",{rowId:u});return}let h={id:u,data:d,rowIndex:-1,selected:!1};this.nodesById.set(u,h),this.treeDepth.set(h,0);let p=this.isTree?ae(d,this.core.options.childrenKey):void 0;if(p)for(let m of p)m!=null&&this.buildChildNodes(h,m,1);l.push(h)}),this.roots.splice(a,0,...l),this.reindexAll()}let s=this.transactionNeedsPipeline(e);return t&&(s?this.refreshPipeline():o.length>0&&this.emitIncrementalModelUpdate()),this.core.changeTracker.clearRows(i),{pipelineChanged:s,updatedRowIds:o.map(a=>a.id)}}applyTransactions(e){if(e.length===0)return{pipelineChanged:!1,updatedRowIds:[]};let t=!1,r=new Set;for(let o of e){let i=this.applyTransaction(o,!1);t||(t=i.pipelineChanged);for(let s of i.updatedRowIds)r.add(s)}return t?this.refreshPipeline():r.size>0&&this.emitIncrementalModelUpdate(),{pipelineChanged:t,updatedRowIds:[...r]}}transactionNeedsPipeline(e){return e.add?.length||e.remove?.length?!0:e.update?.length?this.isTree||this.core.options.masterDetail||this.core.columnModel.getRowGroupColumns().length>0||!this.core.options.manualFiltering&&this.isFilterPresent()||!this.core.options.manualSorting&&this.core.columnModel.getSortModel().length>0||this.core.options.getRowHeight?!0:this.core.columnModel.getOrderedVisible().some(t=>t.colDef.autoHeight===!0||t.colDef.autoRowSpan===!0||t.colDef.rowSpan!=null):!1}emitIncrementalModelUpdate(){this.core.emit("modelUpdated",{rowCount:this.pipelineRows.length})}buildChildNodes(e,t,r){let o=this.resolveRowId(t,-1,`add-${this.core.nextId()}`);if(this.nodesById.has(o)){this.core.reportError(new Error(`Duplicate row id: ${o}`),"transaction.add",{rowId:o});return}let i=ae(t,this.core.options.childrenKey),s={id:o,data:t,rowIndex:-1,selected:!1,treeChildrenLoaded:Array.isArray(i)};this.nodesById.set(o,s),this.treeDepth.set(s,r);let a=this.childIds.get(e.id)??[];if(a.push(s.id),this.childIds.set(e.id,a),!!i)for(let l of i)l!=null&&this.buildChildNodes(s,l,r+1)}reindexAll(){this.all=[];let e=t=>{this.all.push(t),this.nodesById.has(t.id)||this.nodesById.set(t.id,t);for(let r of this.childIds.get(t.id)??[]){let o=this.nodesById.get(r);o&&e(o)}};for(let t of this.roots)e(t)}setFilterModel(e){let t=JSON.stringify(this.filterModel),r=new Set(this.core.columnModel.getColumns().map(o=>o.id));return this.filterModel=X(e,r),JSON.stringify(this.filterModel)!==t}getFilterModel(){return{...this.filterModel}}setAdvancedFilterModel(e){let t=new Set(this.core.columnModel.getColumns().map(i=>i.id)),r=G(e,t),o=JSON.stringify(this.advancedFilterModel);return this.advancedFilterModel=r,this.core.options.advancedFilterModel=r,JSON.stringify(r)!==o}getAdvancedFilterModel(){return G(this.advancedFilterModel)}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.advancedFilterModel!=null||this.quickFilter!=null}refreshPipeline(){let e=this.core.performanceMonitor.start(),t=this.core.columnModel.getOrderedVisible(),r=(s,a)=>this.core.getCellValue(s,a);if(this.isInfinite){this.refreshInfinitePipeline(e);return}if(this.startDataProcessorIfNeeded(e))return;let o;if(this.isTree)o=this.buildTreeDisplay(t,r);else{o=this.all,this.isFilterPresent()&&!this.core.options.manualFiltering&&(o=o.filter(d=>Lt(d,t,this.filterModel,this.advancedFilterModel,this.quickFilter,r)));let a=this.core.columnModel.getSortModel();if(a.length>0&&!this.core.options.manualSorting)try{o=Gt(o,a,t,r)}catch(d){this.core.reportError(d,"comparator",{sortModel:a})}let l=this.core.columnModel.getRowGroupColumns();if(l.length>0)o=this.buildGrouped(o,l);else if(this.core.options.masterDetail){let d=[];for(let c of o)d.push(c),this.expandedIds.has(c.id)&&this.isRowExpandable(c)&&d.push({id:`__detail__${c.id}`,data:c.data,rowIndex:-1,selected:!1,isDetail:!0,masterId:c.id});o=d}}for(let s of this.all)s.rowIndex=-1;let i=0;o.forEach((s,a)=>{s.rowIndex=a,!s.isDetail&&!s.isGroup&&(i++,this.rowSequence.set(s,i))}),this.pipelineRows=o,this.applyPagination(),this.computeSpans(r),this.core.emit("modelUpdated",{rowCount:o.length}),this.core.performanceMonitor.recordModel(e)}refreshInfinitePipeline(e){this.all.forEach((t,r)=>{this.isBlockDatasource||(t.rowIndex=r),this.rowSequence.set(t,this.isBlockDatasource?t.rowIndex+1:r+1)}),this.displayed=this.all,this.pipelineRows=this.all,this.spanInfo.clear(),this.displayRevision++,this.core.emit("modelUpdated",{rowCount:this.all.length}),this.core.performanceMonitor.recordModel(e)}startDataProcessorIfNeeded(e){let t=this.skipDataProcessorOnce;return this.skipDataProcessorOnce=!1,!t&&this.shouldUseDataProcessor()?(this.refreshWithDataProcessor(e),!0):(this.cancelDataProcessor(),!1)}shouldUseDataProcessor(){if(!this.core.options.dataProcessor||this.all.length<this.core.options.dataProcessorMinRows||this.isTree||this.core.options.masterDetail||this.core.columnModel.getRowGroupColumns().length>0)return!1;let e=!this.core.options.manualFiltering&&this.isFilterPresent(),t=!this.core.options.manualSorting&&this.core.columnModel.getSortModel().length>0;return e||t}refreshWithDataProcessor(e){this.cancelDataProcessor();let t=this.core.options.dataProcessor;if(!t)return;let r=++this.dataProcessorSeq,o=new AbortController;this.dataProcessorAbort=o;let i=this.core.columnModel.getOrderedVisible(),s=this.all.flatMap(d=>d.data==null?[]:[{id:d.id,data:d.data}]),a=!this.core.options.manualFiltering,l=!this.core.options.manualSorting;Promise.resolve().then(()=>t.process({rows:s,columns:i.map(d=>({colId:d.id,...d.colDef.field?{field:d.colDef.field}:{}})),sortModel:l?this.core.columnModel.getSortModel():[],filterModel:a?this.getFilterModel():{},advancedFilterModel:a?this.getAdvancedFilterModel():null,quickFilterText:a?this.quickFilter:null,signal:o.signal})).then(d=>{if(r!==this.dataProcessorSeq||o.signal.aborted||this.core.isDestroyed())return;let c=new Set,u=[];for(let p of d.rowIds){if(c.has(p))continue;c.add(p);let m=this.nodesById.get(p);m&&!m.isDetail&&!m.isGroup&&u.push(m)}for(let p of this.all)p.rowIndex=-1;u.forEach((p,m)=>{p.rowIndex=m,this.rowSequence.set(p,m+1)}),this.pipelineRows=u,this.applyPagination();let h=(p,m)=>this.core.getCellValue(p,m);this.computeSpans(h),this.core.emit("modelUpdated",{rowCount:u.length}),this.core.performanceMonitor.recordModel(e),this.core.requestUpdate({data:!0})}).catch(d=>{r!==this.dataProcessorSeq||o.signal.aborted||this.core.isDestroyed()||(this.core.reportError(d,"dataProcessor.process"),this.skipDataProcessorOnce=!0,this.refreshPipeline(),this.core.requestUpdate({data:!0}))}).finally(()=>{r===this.dataProcessorSeq&&(this.dataProcessorAbort=null)})}cancelDataProcessor(){this.dataProcessorSeq++,this.dataProcessorAbort?.abort(),this.dataProcessorAbort=null}get paginationActive(){return this.core.options.paginationEnabled&&!this.isInfinite}applyPagination(){if(!this.paginationActive){this.displayed=this.pipelineRows,this.displayRevision++;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((i,s)=>{i.rowIndex=s}),this.displayed=this.pipelineRows,this.displayRevision++;return}let r=(this.page-1)*e,o=this.pipelineRows.slice(r,r+e);o.forEach((i,s)=>{i.rowIndex=s}),this.displayed=o,this.displayRevision++}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 r=this.getPageCount(),o=Math.max(1,Math.min(Math.round(e)||1,r));o!==this.page&&(this.page=o,this.core.options.paginationPage=o,this.applyPagination(),this.core.requestUpdate({data:!0}),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()),r=(this.page-1)*this.effectivePageSize();this.core.options.paginationPageSize=t,this.pageSize=t,this.page=Math.floor(r/t)+1,this.core.options.paginationPage=this.page,this.applyPagination(),this.core.requestUpdate({data:!0}),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.requestUpdate({data:!0}),this.emitPaginationChanged())}onPaginationOptionsChanged(){this.paginationActive&&(this.page=this.core.options.paginationMode==="server"?this.core.options.paginationPage:1,this.applyPagination(),this.core.requestUpdate({data:!0}),this.emitPaginationChanged())}emitPaginationChanged(){this.core.emit("paginationChanged",{page:this.getCurrentPage(),pageSize:this.effectivePageSize(),pageCount:this.getPageCount(),total:this.getTotalRowCount()})}buildTreeDisplay(e,t){let r=this.core.options.manualSorting?[]:this.core.columnModel.getSortModel(),o=new Map,i=this.isFilterPresent()&&!this.core.options.manualFiltering,s=d=>{let c=o.get(d.id);if(c!==void 0)return c;let u=!0;if(i){u=Lt(d,e,this.filterModel,this.advancedFilterModel,this.quickFilter,t);for(let h of this.childIds.get(d.id)??[]){let p=this.nodesById.get(h);p&&s(p)&&(u=!0)}}return o.set(d.id,u),u},a=[],l=d=>{let c=d;r.length>0&&(c=Gt(d,r,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}collectSpanMasters(){let e=this.mastersBuf,t=0;for(let r of this.displayed)!r.isDetail&&!r.isGroup&&(e[t++]=r);return e.length=t,e}explicitRowSpan(e,t,r,o){let i=t.colDef.rowSpan;if(!i)return 1;try{let s=i({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:r,rowIndex:e.rowIndex});return Math.max(1,Math.min(Math.round(s)||1,o))}catch(s){return this.core.reportError(s,"rowSpan",{colId:t.id,rowId:e.id}),1}}automaticRowSpan(e,t,r,o,i){if(!r.colDef.autoRowSpan||o==null||o==="")return 1;let s=1;for(;t+s<e.length&&Se(o,i(e[t+s],r))===0;)s++;return s}computeColumnSpans(e,t,r){let o=new Int32Array(e.length),i=0;for(;i<e.length;){let s=e[i],a=r(s,t),l=t.colDef.rowSpan?this.explicitRowSpan(s,t,a,e.length-i):this.automaticRowSpan(e,i,t,a,r);o[i]=l;for(let d=1;d<l;d++)o[i+d]=-1;i+=l}return o}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(o=>o.colDef.rowSpan!=null||o.colDef.autoRowSpan===!0);if(t.length===0)return;let r=this.collectSpanMasters();if(r.length!==0)for(let o of t)this.spanInfo.set(o.id,this.computeColumnSpans(r,o,e))}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 r=xe(this.core.options.aggFuncs),o=this.core.columnModel.getAggColumns();this.knownGroupIds=[];let i=a=>{let l={};for(let d of o){let c=r(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 g of a){let v=this.core.getCellValue(g,c),y=v==null?"(\u7A7A)":String(v),w=u.get(y);w||(w=[],u.set(y,w),h.push(y)),w.push(g)}h.sort((g,v)=>g.localeCompare(v,void 0,{numeric:!0,sensitivity:"base"}));let p=[],m=[];for(let g of h){let v=u.get(g),y=`${d}/g${l}:${g}`;this.knownGroupIds.push(y);let w=s(v,l+1,y),C={id:y,data:null,rowIndex:-1,selected:!1,isGroup:!0,groupLevel:l,groupKey:g,leafNodes:w.leaves,aggValues:i(w.leaves)};p.push(C),this.groupExpandedIds.has(y)&&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 r=this.core.options.isTreeRowExpandable;if(!r)return!1;try{return r({data:e.data,node:e,api:this.core.getApi()})}catch(o){return this.core.reportError(o,"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(r){return this.core.reportError(r,"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(r=>this.nodesById.has(r))),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 r=this.nodesById.get(e);return!r||t&&!this.isRowExpandable(r)?!1:(t===this.expandedIds.has(e)||(t?this.expandedIds.add(e):this.expandedIds.delete(e),this.refreshPipeline(),this.core.requestUpdate({data:!0}),this.core.emit("detailToggled",{rowId:e,rowNode:r,expanded:t}),t&&this.isTree&&!this.hasChildren(e)&&!r.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.requestUpdate({data:!0}))}collapseAllDetails(){this.expandedIds.size!==0&&(this.expandedIds.clear(),this.refreshPipeline(),this.core.requestUpdate({data:!0}))}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.requestUpdate({data:!0}))}collapseAllGroups(){this.groupExpandedIds.size!==0&&(this.groupExpandedIds.clear(),this.refreshPipeline(),this.core.requestUpdate({data:!0}))}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.requestUpdate({data:!0})),t}reorderRowsByDisplayed(e,t){if(this.isTree)return!1;let r=this.getDisplayedRow(e),o=this.getDisplayedRow(t);if(!r||!o||r.isDetail||o.isDetail||r.isGroup||o.isGroup)return!1;let i=this.all.indexOf(r),s=this.all.indexOf(o);if(i<0||s<0)return!1;if(s>i){let l=s;for(;l+1<this.all.length&&this.all[l+1].isDetail;)l++;s=l}if(i===s)return!1;this.all.splice(i,1);let a=this.all.indexOf(o);return this.all.splice(s>i?a+1:a,0,r),this.refreshPipeline(),this.core.requestUpdate({data:!0}),!0}getAllNodes(){return this.all}getRootNodes(){return this.roots}getDisplayedRows(){return this.displayed}getDisplayedRowCount(){return this.isBlockDatasource?this.resolveBlockRowCount():this.displayed.length}getDisplayedRow(e){return this.isBlockDatasource?e<0||e>=this.resolveBlockRowCount()?void 0:this.blockNodes.get(e)??this.blockPlaceholder(e):this.displayed[e]}getNodeById(e){return this.nodesById.get(e)}forEachNode(e){this.all.forEach(e)}forEachNodeAfterFilterAndSort(e){let t=0;for(let r of this.pipelineRows)r.isDetail||r.isGroup||e(r,t++)}};var Ae=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){if(e.loading)return!1;let t=this.findSelectableColumn(e),r=t?.colDef.selectable;if(!t||!r)return!0;try{return r({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:e.rowIndex})}catch(o){return this.core.reportError(o,"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),r=this.core.rowModel.getAllNodes().filter(o=>t.has(o.id)&&!o.isDetail&&!o.isGroup).map(o=>({node:o,selected:!0}));this.applySelection(r,!0)}onRowsRebuilt(e){if(!e)this.selectedIds.clear(),this.anchorId=null;else{let t=new Set(this.core.rowModel.getAllNodes().map(r=>r.id));for(let r of[...this.selectedIds])t.has(r)||this.selectedIds.delete(r);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 r=0,o=0;for(let i of t)this.isSelectable(i)&&(r++,this.selectedIds.has(i.id)&&o++);return r===0?{all:!1,some:!1}:{all:o===r,some:o>0}}setGroupSelected(e,t){let r=(e.leafNodes??[]).filter(o=>this.isSelectable(o));r.length!==0&&this.applySelection(r.map(o=>({node:o,selected:t})))}setNodeSelected(e,t,r=!1){this.applySelection([{node:e,selected:t,clearOthers:r}])}selectNodeById(e,t=!0,r=!0){let o=this.core.rowModel.getNodeById(e);o&&this.setNodeSelected(o,t,r)}selectFromCheckbox(e,t){let r=t==="single";this.applySelection([{node:e,selected:r?!0:!e.selected,clearOthers:r}]),this.anchorId=e.id}toggleFromModifier(e,t,r){return!r||!t.ctrlKey&&!t.metaKey?!1:(this.applySelection([{node:e,selected:!e.selected}]),this.anchorId=e.id,!0)}selectAnchorRange(e,t,r){if(!r||!t.shiftKey||this.anchorId==null)return!1;let o=this.core.rowModel.getNodeById(this.anchorId);if(!o||o.rowIndex<0||e.rowIndex<0)return!1;let i=Math.min(o.rowIndex,e.rowIndex),s=Math.max(o.rowIndex,e.rowIndex),a=[];for(let l=i;l<=s;l++){let d=this.core.rowModel.getDisplayedRow(l);d&&!d.isDetail&&!d.isGroup&&this.isSelectable(d)&&a.push({node:d,selected:!0})}return this.applySelection(a),!0}onRowClick(e,t,r){let o=this.core.options.rowSelection;if(o==="none"||!this.isSelectable(e))return;if(r){this.selectFromCheckbox(e,o);return}let i=o==="multiple";this.toggleFromModifier(e,t,i)||this.selectAnchorRange(e,t,i)||(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 o=(e?this.core.rowModel.getDisplayedRows():this.core.rowModel.getAllNodes()).filter(i=>!i.isDetail&&!i.isGroup&&this.isSelectable(i));if(o.length!==0){if(t==="single"){this.applySelection([{node:o[0],selected:!0,clearOthers:!0}]);return}this.applySelection(o.map(i=>({node:i,selected:!0})))}}deselectAll(){this.applySelection([],!0)}isSelectAllActive(){let t=this.core.rowModel.getDisplayedRows().filter(r=>!r.isDetail&&!r.isGroup).filter(r=>this.isSelectable(r));if(t.length===0)return!1;if(this.core.rowModel.isInfinite){let r=this.core.rowModel.getDisplayTotalCount();if(t.length<r)return!1}return t.every(r=>this.selectedIds.has(r.id))}isSelectAllIndeterminate(){let t=this.core.rowModel.getDisplayedRows().filter(o=>!o.isDetail&&!o.isGroup).filter(o=>this.isSelectable(o)),r=t.reduce((o,i)=>o+(this.selectedIds.has(i.id)?1:0),0);if(r===0)return!1;if(this.core.rowModel.isInfinite){let o=this.core.rowModel.getDisplayTotalCount();if(t.length<o)return!0}return r>0&&r<t.length}applySelectionPublic(e,t=!1){this.applySelection(e,t)}replaceSelection(e,t,r){!t&&!e.some(o=>o.clearOthers)||(this.selectedIds=t?new Set:new Set(e.filter(o=>o.selected).flatMap(o=>r?this.subtreeIds(o.node):[o.node.id])))}applySelectionChanges(e,t){for(let r of e){if(!this.isSelectable(r.node))continue;let o=t?this.subtreeIds(r.node):[r.node.id];for(let i of o)r.selected?this.selectedIds.add(i):this.selectedIds.delete(i)}}changedSelectionIds(e){let t=new Set;for(let r of new Set([...e,...this.selectedIds]))e.has(r)!==this.selectedIds.has(r)&&t.add(r);return t}synchronizeNodeSelection(e,t,r){let o=[],i=new Set([...e,...r,...this.indeterminateIds]);for(let s of this.core.rowModel.getAllNodes()){let a=this.selectedIds.has(s.id);s.selected=a,(i.has(s.id)||t.get(s.id)!==a)&&s.rowIndex>=0&&o.push(s.rowIndex)}return o}applySelection(e,t=!1){let r=new Set(this.selectedIds),o=this.core.rowModel.isTree&&this.core.options.autoCheckedChildren;this.replaceSelection(e,t,o),this.applySelectionChanges(e,o);let i=this.changedSelectionIds(r),s=new Map;for(let d of this.core.rowModel.getAllNodes())s.set(d.id,d.selected);let a=new Set(this.indeterminateIds);this.recomputeTriState();let l=this.synchronizeNodeSelection(i,s,a);i.size>0&&(this.core.bodyRenderer.refreshRows(l),this.core.headerRenderer.refreshSelectAllCheckbox(),this.core.emit("selectionChanged",{selectedNodes:this.getSelectedNodes(),selectedRows:this.getSelectedRows()}))}subtreeIds(e){let t=[e.id],r=o=>{for(let i of this.core.rowModel.getChildrenIds(o))t.push(i),r(i)};return r(e.id),t}recomputeTriState(){if(this.indeterminateIds.clear(),!this.core.rowModel.isTree)return;let e=t=>{let r=this.core.rowModel.getChildrenIds(t);if(r.length===0)return{all:this.selectedIds.has(t),some:this.selectedIds.has(t)};let o=!0,i=!1;for(let s of r){let a=e(s);a.all?i=!0:(a.some&&(i=!0),o=!1)}return i&&!o&&this.indeterminateIds.add(t),o?this.selectedIds.add(t):this.selectedIds.delete(t),{all:o,some:i}};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)}};var Pe=class{constructor(e){this.core=e;this.active=null;this.rafId=0;this.pendingWidth=0;this.onMove=e=>{let t=this.matchActivePointer(e);t&&(this.pendingWidth=this.widthFromPointer(t,e.clientX),t.didResize||(t.didResize=Math.abs(this.pendingWidth-t.startWidth)>=.5),!this.rafId&&(this.rafId=requestAnimationFrame(()=>{this.rafId=0,this.applyPendingWidth()})))};this.onUp=e=>{let t=this.matchActivePointer(e);t&&(this.pendingWidth=this.widthFromPointer(t,e.clientX),t.didResize||(t.didResize=Math.abs(this.pendingWidth-t.startWidth)>=.5),this.finishResize(t))};this.onCancel=e=>{this.matchActivePointer(e)&&this.cancelResize()};this.onLostPointerCapture=()=>{this.cancelResize()}}startResize(e,t){if(!this.core.options.enableColumnResize||!t.resizable||e.isPrimary===!1)return;this.cancelResize();let r=e.currentTarget,o=t.currentWidth;this.pendingWidth=o,this.active={column:t,didResize:!1,handle:r,pointerId:e.pointerId,startFlex:t.flex,startManualWidth:t.manualWidth,startWidth:o,startX:e.clientX},window.addEventListener("pointermove",this.onMove),window.addEventListener("pointerup",this.onUp,!0),window.addEventListener("pointercancel",this.onCancel,!0),r.addEventListener("lostpointercapture",this.onLostPointerCapture);try{r.setPointerCapture?.(e.pointerId)}catch{}this.core.skeleton.root.classList.add("mach-root--resizing")}cancelResize(e=!0){let t=this.active;t&&(this.active=null,this.clearFrame(),this.removeListeners(t),e&&(t.column.manualWidth=t.startManualWidth,t.column.flex=t.startFlex,this.core.relayoutColumns()),this.core.skeleton.root.classList.remove("mach-root--resizing"))}finishResize(e){this.active=null,this.clearFrame(),e.didResize&&(Math.abs(this.pendingWidth-e.startWidth)<.5?(e.column.manualWidth=e.startManualWidth,e.column.flex=e.startFlex):this.core.columnModel.setColumnWidth(e.column,this.pendingWidth),this.core.relayoutColumns()),this.removeListeners(e);try{e.handle.releasePointerCapture?.(e.pointerId)}catch{}this.core.skeleton.root.classList.remove("mach-root--resizing"),e.didResize&&this.core.commitColumnWidths([e.column])}applyPendingWidth(){let e=this.active;!e||!this.core.columnModel.setColumnWidth(e.column,this.pendingWidth)||(this.core.relayoutColumns(),this.core.emitColumnResize(e.column,!1))}widthFromPointer(e,t){let r=Number.isFinite(t)?t:e.startX;return e.startWidth+r-e.startX}matchActivePointer(e){let t=this.active;return t&&e.pointerId===t.pointerId?t:null}clearFrame(){this.rafId&&cancelAnimationFrame(this.rafId),this.rafId=0}removeListeners(e){window.removeEventListener("pointermove",this.onMove),window.removeEventListener("pointerup",this.onUp,!0),window.removeEventListener("pointercancel",this.onCancel,!0),e.handle.removeEventListener("lostpointercapture",this.onLostPointerCapture)}destroy(){this.cancelResize(!1),this.clearFrame(),this.core.skeleton.root?.classList.remove("mach-root--resizing")}};function f(n,e,t){let r=document.createElement(n);if(e&&(r.className=e),t)for(let o of Object.keys(t))r.setAttribute(o,t[o]);return r}function M(n,e,t){return n<e?e:n>t?t:n}var kr='<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>',Ar='<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor"><path d="M8 3l4 5H4l4-5z"/></svg>',Pr='<svg viewBox="0 0 16 16" width="12" height="12" fill="currentColor"><path d="M8 13l4-5H4l4 5z"/></svg>';var Lr=6,Le=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)<Lr&&Math.abs(e.clientY-t.startY)<Lr||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 r=this.findHeaderCell(t.column);if(!r||!r.parentElement){this.cleanup();return}this.suppressClick=!0;let o=f("div","mach-drop-indicator");r.parentElement.appendChild(o),r.classList.add("mach-header-cell--dragging"),this.core.skeleton.root.classList.add("mach-root--dragging"),this.dragging={column:t.column,cellEl:r,indicator:o,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="${$n(e.id)}"]`)}updateIndicator(e){let t=this.dragging;if(!t)return;let r=this.core.bodyRenderer.paneForColumn(t.column),i=this.core.skeleton.headerRowContainers[r].getBoundingClientRect(),s=this.core.columnModel.getPaneColumns(r),a=s.indexOf(t.column),l=e.clientX-i.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 $n(n){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(n):n.replace(/[^a-zA-Z0-9_-]/g,"\\$&")}function Gr(n,e){let t=n==null?"":String(n);return t.includes(e)||t.includes('"')||t.includes(`
2
+ `)||t.includes("\r")?'"'+t.replace(/"/g,'""')+'"':t}function le(n){return typeof n!="string"||n===""||/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(n)?n:/^[\s\u0000-\u001f]*[=+\-@]/.test(n)?"'"+n:n}function Nt(n,e={}){let t=e.columnSeparator??",",r=e.includeHeader??!0,o=e.protectFormulas??!0,i=[];r&&i.push(n.getHeaderLabels().map(a=>Gr(a,t)).join(t));for(let a of n.getRowValues())i.push(a.map(l=>Gr(o?le(l):l,t)).join(t));let s=i.join(`\r
3
+ `);return e.prependBOM?"\uFEFF"+s:s}function jn(n,e){let t=e?le(n):n,r=t==null?"":String(t);return/["\t\n\r]/.test(r)?'"'+r.replace(/"/g,'""')+'"':r}function ee(n,e=!0){return n.map(t=>t.map(r=>jn(r,e)).join(" ")).join(`
4
+ `)}function Ge(n){return Ne(n," ")}function Fe(n,e=","){return Ne(n,e)}function Ne(n,e){let t=[],r=[],o="",i=!1,s=0;for(;s<n.length;){let a=n[s];if(i){if(a==='"'){if(n[s+1]==='"'){o+='"',s+=2;continue}i=!1,s++;continue}o+=a,s++;continue}if(a==='"'&&o===""){i=!0,s++;continue}if(a===e){r.push(o),o="",s++;continue}if(a===`
5
+ `||a==="\r"){r.push(o),t.push(r),r=[],o="",a==="\r"&&n[s+1]===`
6
+ `?s+=2:s++;continue}o+=a,s++}return(o!==""||r.length>0)&&(r.push(o),t.push(r)),t}function Yn(n){let e=null;try{return e=document.createElement("textarea"),e.value=n,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(n){try{if(typeof navigator<"u"&&navigator.clipboard?.writeText)return await navigator.clipboard.writeText(n),!0}catch{}return Yn(n)}var Xn=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Enter","F2","Home","End","PageUp","PageDown","Tab"," ","Escape","Delete","Backspace"]),Jn=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown"]),Oe=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 r=this.core.buildRangeTsv(t),o=e.clipboardData;o&&typeof o.setData=="function"?o.setData("text/plain",r):de(r),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 r=this.core.buildRangeTsv(t),o=e.clipboardData;o&&typeof o.setData=="function"?o.setData("text/plain",r):de(r),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 r=e.clipboardData,o=r&&typeof r.getData=="function"?r.getData("text/plain"):null;typeof o!="string"||o===""||(e.preventDefault(),this.core.pasteText(o,t.row,t.colIdx))};this.onKeyDown=e=>{this.core.isDestroyed()||this.core.editingService.isEditing()||this.handleSelectAll(e)||this.handleHistoryShortcut(e)||Xn.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,r){let o=this.core.columnModel.getOrderedVisible(),i=o.findIndex(d=>d.id===t);if(i<0)return null;let s=this.core.rowModel.getDisplayedRowCount(),a=i,l=e;for(let d=0;d<(o.length+1)*(s+1);d++){if(a+=r,a>=o.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=o.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,o[a]))return{rowIndex:l,column:o[a]}}return null}skipDetailRows(e,t){let r=this.core.rowModel.getDisplayedRowCount(),o=0;for(;e>=0&&e<r;){let i=this.core.rowModel.getDisplayedRow(e);if(!i||!i.isDetail)return e;if(e+=t,o++,o>r+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 r=t.normalizedRange();return r&&!(r.r1===r.r2&&r.c1===r.c2)&&(e.preventDefault(),this.core.clearRangeValues(r)),!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,r=t.focusedCell;if(!r)return;let o=this.core.columnModel.getOrderedVisible(),i=o.findIndex(c=>c.id===r.colId),s=this.core.rowModel.getDisplayedRowCount();if(i<0||s===0)return;let a={row:r.rowIndex,colIdx:i},l=this.resolveKeyPosition(e,a,o,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,o[l.colIdx].id)}resolveKeyPosition(e,t,r,o){return Jn.has(e.key)?this.movePosition(e,t,r.length,o):e.key==="Enter"||e.key==="F2"?this.activateEditor(e,t,r,o):e.key===" "?(this.toggleFocusedRow(t.row),t):e.key==="Tab"?this.moveToEditable(e,t,r):null}movePosition(e,t,r,o){let{row:i,colIdx:s}=t;switch(e.key){case"ArrowUp":i=this.validSkippedRow(i,this.skipDetailRows(i-1,-1),o);break;case"ArrowDown":i=this.validSkippedRow(i,this.skipDetailRows(i+1,1),o);break;case"ArrowLeft":s=Math.max(0,s-1);break;case"ArrowRight":s=Math.min(r-1,s+1);break;case"Home":s=0,e.ctrlKey&&(i=0);break;case"End":s=r-1,e.ctrlKey&&(i=Math.max(0,this.skipDetailRows(o-1,-1)));break;case"PageUp":case"PageDown":i=this.movePage(e.key,i,o);break}return{row:i,colIdx:s}}validSkippedRow(e,t,r){return t>=0&&t<r?t:e}movePage(e,t,r){let o=this.core.skeleton.bodyViewports.center,i=Math.max(1,Math.floor(o.clientHeight/this.core.options.rowHeight)),s=e==="PageUp"?-1:1,a=Math.max(0,Math.min(r-1,t+i*s));return this.validSkippedRow(t,this.skipDetailRows(a,s),r)}activateEditor(e,t,r,o){let i=this.core.rowModel.getDisplayedRow(t.row),s=r[t.colIdx];if(i&&!i.isDetail&&s&&this.core.editingService.isEditable(i,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,o)}}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,r){let o=this.nextEditable(t.row,r[t.colIdx].id,e.shiftKey?-1:1);return o?(this.core.bodyRenderer.setFocusedCell(o.rowIndex,o.column.id),this.core.editingService.start(o.rowIndex,o.column),t):null}};function Ot(n,e){let t=document.createElement("input");return t.type=n,t.className="mach-editor-input",e!=null&&e!==""&&(t.value=n==="date"?String(e).slice(0,10):String(e)),t}function Qn(n,e){return e&&e.length>0?"select":typeof n=="number"?"number":n instanceof Date||typeof n=="string"&&/^\d{4}-\d{2}-\d{2}/.test(n)?"date":"text"}function Ht(n,e,t){let r=n.colDef,o=typeof r.cellEditor=="string"?r.cellEditor:Qn(e,r.cellEditorParams?.values);if(o==="number"){let s=Ot("number",e);return{el:s,getValue:()=>s.value===""?null:Number(s.value),focus:()=>{s.focus(),s.select()}}}if(o==="date"){let s=Ot("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(o==="select"){let s=r.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 i=Ot("text",e);return t&&t.length===1&&(i.value=t),{el:i,getValue:()=>i.value,focus:()=>{i.focus(),i.select()}}}var Bt=new WeakMap,He=new WeakMap,Be=new WeakMap;function ce(n){let e=Bt.get(n);return e||(e={},Bt.set(n,e)),e}function Vt(n){return Bt.get(n)}function Fr(n,e){e?He.set(n,e):He.delete(n)}function Nr(n){let e=He.get(n);return He.delete(n),e}function Or(n,e){e?Be.set(n,e):Be.delete(n)}function zt(n){let e=Be.get(n);return Be.delete(n),e}function Ve(n){if(n==null)return"";if(n instanceof Date)return n.toLocaleDateString();if(typeof n=="object")try{return JSON.stringify(n)}catch{return String(n)}return String(n)}function E(n,e){let t=Vt(e);if(!t)return;t.flashTimer&&clearTimeout(t.flashTimer),t.flashTimer=void 0;let r=t.destroy;if(t.destroy=void 0,t.refresh=void 0,t.rendererDefinition=void 0,t.rendererRowId=void 0,t.rendererColumnId=void 0,!!r)try{r()}catch(o){n.reportError(o,"cellRenderer.destroy",{colId:e.dataset.colId})}}function Hr(n,e,t,r,o,i){let s=n.options.tooltipComponent?"":i,a=r.colDef.tooltipValueGetter;if(a)try{s=a({api:n.getApi(),colDef:r.colDef,column:r,node:t,data:t.data,value:o})??i}catch(l){n.reportError(l,"tooltipValueGetter",{colId:r.id,rowId:t.id})}s?e.setAttribute("title",s):e.removeAttribute("title")}function Zn(n,e,t,r,o,i){let s=Vt(e);if(!s?.refresh||s.rendererDefinition!==o||s.rendererRowId!==t.id||s.rendererColumnId!==r.id)return!1;try{return e.querySelector(":scope > .mach-cell-edit-trigger")?.remove(),s.refresh(i)!==!1}catch(a){return n.reportError(a,"cellRenderer.refresh",{colId:r.id,rowId:t.id}),!1}}function H(n,e,t){let r=n.getCellValue(e,t),o=t.colDef.valueFormatter;if(o)try{let i=o({api:n.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:r});return i==null?"":String(i)}catch(i){n.reportError(i,"valueFormatter",{colId:t.id,rowId:e.id})}return Ve(r)}function ue(n,e,t,r){let o=t.colDef.valueFormatter;if(o)try{let i=o({api:n.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:r});return i==null?"":String(i)}catch(i){n.reportError(i,"valueFormatter",{colId:t.id,rowId:e.id})}return Ve(r)}function ze(n,e,t,r){let o=r.colDef.cellStyle,i=ce(e),s=i.styleKeys;if(s)for(let d of s)Reflect.set(e.style,d,"");if(!o){i.styleKeys=void 0;return}let a;if(typeof o=="function"){let d=n.getCellValue(t,r);try{a=o({api:n.getApi(),colDef:r.colDef,column:r,node:t,data:t.data,value:d,rowIndex:t.rowIndex})}catch(c){n.reportError(c,"cellStyle",{colId:r.id,rowId:t.id}),a=null}}else a=o;if(!a){i.styleKeys=void 0;return}let l=Object.keys(a);for(let d of l)Reflect.set(e.style,d,Reflect.get(a,d));i.styleKeys=l}function We(n,e,t,r){let o=n.getCellValue(t,r),i=H(n,t,r),s=r.colDef.cellRenderer,a=typeof s=="string"?n.resolveCellRenderer(s):s;if(a){let l={api:n.getApi(),colDef:r.colDef,column:r,node:t,data:t.data,value:o,formatted:i,rowIndex:t.rowIndex,rendererParams:r.colDef.cellRendererParams};if(Zn(n,e,t,r,a,l)){Hr(n,e,t,r,o,i);return}E(n,e);let d;try{d=a(l)}catch(c){n.reportError(c,"cellRenderer",{colId:r.id,rowId:t.id}),e.textContent=i;return}if(typeof d=="string")e.textContent=d;else if(d instanceof HTMLElement)e.replaceChildren(d);else if(d&&typeof d=="object"&&d.el instanceof HTMLElement){let c=d;e.replaceChildren(c.el);let u=ce(e);u.destroy=c.destroy,c.refresh&&(u.refresh=h=>c.refresh(h),u.rendererDefinition=a,u.rendererRowId=t.id,u.rendererColumnId=r.id)}else e.textContent=""}else E(n,e),e.textContent=i;Hr(n,e,t,r,o,i)}function ei(n,e,t){let r=e.colDef.align;if(r==="center"){n.push("mach-cell--center");return}if(r==="right"){n.push("mach-cell--right");return}(J(e.colDef,"rightAligned")||J(e.colDef,"numericColumn")||typeof t=="number")&&n.push("mach-cell--num")}function ti(n,e,t,r,o){let i=r.colDef.cellClass;if(!i)return;if(typeof i=="string"){e.push(i);return}if(Array.isArray(i)){e.push(...i);return}let s={api:n.getApi(),colDef:r.colDef,column:r,node:t,data:t.data,value:o,rowIndex:t.rowIndex};try{let a=i(s);typeof a=="string"?e.push(a):Array.isArray(a)&&e.push(...a)}catch(a){n.reportError(a,"cellClass",{colId:r.id,rowId:t.id})}}function ri(n,e,t){e.classList.contains("mach-cell--focus")&&n.push("mach-cell--focus"),e.classList.contains("mach-cell--editing")&&n.push("mach-cell--editing"),t.colDef.wrapText&&n.push("mach-cell--wrap")}function he(n,e,t,r){let o=n.getCellValue(t,r),i=["mach-cell"];ei(i,r,o),ti(n,i,t,r,o),ri(i,e,r);let s=i.join(" ");e.className!==s&&(e.className=s)}var oi='<path d="M3 8.5 6.4 12 13.5 4"/>',ni='<path d="m4 4 8 8m0-8-8 8"/>';function Br(n,e){let t=document.createElement("button");return t.type="button",t.className=`mach-edit-control mach-edit-control--${n}`,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">${n==="confirm"?oi:ni}</svg>`,t.addEventListener("mousedown",r=>{r.preventDefault(),r.stopPropagation()}),t}var _e=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,r=this.core.keyboardService.nextEditable(t.rowIndex,t.column.id,e.shiftKey?-1:1);this.stopAsync(!1).then(o=>{o&&r&&(this.core.bodyRenderer.scrollToIndex(r.rowIndex,"nearest"),this.core.bodyRenderer.setFocusedCell(r.rowIndex,r.column.id),this.start(r.rowIndex,r.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 r=t.colDef.editable;if(!r)return!1;if(typeof r=="function")try{return r({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:e.rowIndex})}catch(o){return this.core.reportError(o,"editable",{colId:t.id,rowId:e.id}),!1}return!0}start(e,t,r){if(this.core.options.editType==="fullRow")return this.startRow(e,t.id);if(this.cellEditing||this.rowEditing)return!1;let o=this.core.rowModel.getDisplayedRow(e);if(!o||o.data==null||!this.isEditable(o,t))return!1;let i=this.core.bodyRenderer.getCellElement(e,t.id);if(!i)return!1;let s=this.core.getCellValue(o,t),a=this.createCellEditor(o,t,e,s,r);if(!a)return!1;E(this.core,i);let l=document.createElement("div");l.className="mach-cell-editor-shell";let d=document.createElement("div");d.className="mach-cell-editor-controls";let c=Br("confirm","Confirm edit"),u=Br("cancel","Cancel edit");d.append(c,u),l.append(a.el,d),i.replaceChildren(l),i.classList.add("mach-cell--editing"),i.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:o,column:t,editor:a,rowIndex:e,oldValue:s,cell:i,shell:l,keydown:h,confirmButton:c,cancelButton:u},this.focusEditor(a,t,o),this.core.emit("cellEditingStarted",{rowIndex:e,colId:t.id,rowNode:o}),!0}startRow(e,t){if(this.cellEditing||this.rowEditing)return!1;let r=this.core.rowModel.getDisplayedRow(e);if(!r||r.data==null||r.isDetail||r.isGroup)return!1;let o=new Map;for(let l of this.core.columnModel.getOrderedVisible()){if(!this.isEditable(r,l))continue;let d=this.core.getCellValue(r,l);o.set(l.id,{column:l,oldValue:d,value:d,mounted:null})}if(o.size===0)return!1;let i={node:r,rowIndex:e,drafts:o,validating:!1};if(this.rowEditing=i,this.core.bodyRenderer.refreshRows([e]),o.size===0)return this.rowEditing=null,this.core.bodyRenderer.refreshRows([e]),!1;let s=o.values().next().value,a=(t?o.get(t):void 0)??s;return a?.mounted&&this.focusEditor(a.mounted.editor,a.column,r),this.core.emit("rowEditingStarted",{rowIndex:e,rowNode:r,data:r.data}),!0}renderEditor(e,t,r,o){if(this.cellEditing)return this.cellEditing.node===t&&this.cellEditing.column.id===r.id;let i=this.rowEditing;if(!i||i.node!==t)return!1;let s=i.drafts.get(r.id);return s?s.mounted?.cell!==o&&(s.mounted&&this.unmountRowDraft(s),!this.mountRowDraft(e,i,s,o))?(i.drafts.delete(r.id),!1):!0:!1}releaseCell(e,t,r){let o=this.rowEditing;if(o&&this.currentRowIndex(o)===e){let i=o.drafts.get(t);i?.mounted?.cell===r&&this.unmountRowDraft(i);return}if(this.cellEditing?.cell===r){let i=this.cellEditing;this.stopAsync(!1),this.cellEditing===i&&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 r;try{r=t.editor.getValue()}catch(i){return this.core.reportError(i,"cellEditor.getValue",{colId:t.column.id,rowId:t.node.id}),Promise.resolve(this.finishCellStop(t,!0,t.oldValue))}try{if(t.editor.isCancelAfterEnd?.(r))return Promise.resolve(this.finishCellStop(t,!0,t.oldValue))}catch(i){return this.core.reportError(i,"cellEditor.isCancelAfterEnd",{colId:t.column.id,rowId:t.node.id}),Promise.resolve(this.finishCellStop(t,!0,t.oldValue))}let o=this.validateValue(t.node,t.column,t.oldValue,r);if(o&&typeof o.then=="function"){let i=++this.stopToken;this.setCellBusy(t,!0);let s=Promise.resolve(o).then(a=>i!==this.stopToken||this.cellEditing!==t?!1:typeof a=="string"?(this.showError(t.editor,a),!1):this.finishCellStop(t,!1,r)).catch(a=>(i!==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 o=="string"?(this.showError(t.editor,o),Promise.resolve(!1)):Promise.resolve(this.finishCellStop(t,!1,r))}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 r=[...t.drafts.values()].filter(s=>!Object.is(s.oldValue,s.value));if(r.length===0)return Promise.resolve(this.finishRowStop(t,!1));let o=++this.stopToken;for(let s of r)s.error=void 0;t.validating=!0,this.setRowBusy(t,!0);let i=Promise.all(r.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(o!==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,r);return o!==this.stopToken||this.rowEditing!==t?!1:l.length>0?(this.showRowErrors(t,l),!1):this.finishRowStop(t,!1)}).finally(()=>{this.stopPromise===i&&(this.stopPromise=null)});return this.stopPromise=i,i}finishCellStop(e,t,r){if(this.cellEditing!==e)return!1;this.cellEditing=null;let o=!t&&this.applyValue(e.node,e.column,e.oldValue,r);return this.destroyMountedEditor(e,!0),this.core.emit("cellEditingStopped",{rowIndex:e.rowIndex,colId:e.column.id,rowNode:e.node,oldValue:e.oldValue,newValue:o?r: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 r=t?[]:this.commitRowDrafts(e);if(r==null)return!1;for(let i of e.drafts.values())t||this.captureRowDraft(i),i.mounted&&this.destroyMountedEditor(i.mounted,!0),i.mounted=null;this.rowEditing=null;let o=this.currentRowIndex(e);return this.core.emit("rowEditingStopped",{rowIndex:o,rowNode:e.node,data:e.node.data,cancelled:t,changes:r}),o>=0&&this.core.bodyRenderer.refreshRows([o]),this.core.summaryRenderer.refresh(),this.core.statusBarService.refresh(),!0}commitRowDrafts(e){let t=[...e.drafts.values()].filter(o=>!Object.is(o.oldValue,o.value));if(t.length===0)return[];let r=[];this.core.undoService.beginBatch();for(let o of t){if(!this.core.writeValue(e.node,o.column,o.value,o.oldValue)){let i=!1;for(let s of[...r].reverse())this.core.writeValue(e.node,s.column,s.oldValue,s.value)||(i=!0);return this.core.undoService.cancelBatch(),i&&this.core.reportError(new Error("A valueSetter rejected full-row rollback"),"rowEditRollback",{rowId:e.node.id,colId:o.column.id}),this.showRowErrors(e,[{draft:o,message:"Value was rejected by the column setter"}]),null}r.push(o)}for(let o of r)this.core.notifyCellValueChanged(e.node,o.column,o.oldValue,o.value);return this.core.undoService.endBatch(),r.map(o=>({colId:o.column.id,oldValue:o.oldValue,newValue:o.value}))}mountRowDraft(e,t,r,o){let i=this.createCellEditor(t.node,r.column,e,r.value,null);if(!i)return!1;E(this.core,o);let s=document.createElement("div");s.className="mach-row-editor-shell",s.appendChild(i.el),o.replaceChildren(s),o.classList.add("mach-cell--editing","mach-cell--row-editing"),o.removeAttribute("title");let a=d=>this.onRowEditorKeyDown(d,t,r),l=()=>{try{r.value=i.getValue(),r.error=void 0}catch{}};return i.el.addEventListener("keydown",a),i.el.addEventListener("input",l),r.mounted={editor:i,cell:o,shell:s,keydown:a,input:l},r.error&&this.showError(i,r.error),t.validating&&(i.el.classList.add("mach-editor-validating"),i.el.setAttribute("aria-busy","true"),i.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,r,o,i){let s=t.colDef,a;try{let l={api:this.core.getApi(),colDef:s,column:t,node:e,data:e.data,value:o,rowIndex:r,keyPress:i};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)??Ht(t,o,i):a=Ht(t,o,i)}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,r,o){let i=t.colDef.validate;if(!i)return!0;try{return i(o,{oldValue:r,newValue:o,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 r=this.core.options.rowEditValidator;if(!r)return[];let o=Object.create(null);for(let[l,d]of e.drafts)o[l]=d.value;let i=t.map(l=>({colId:l.column.id,oldValue:l.oldValue,newValue:l.value})),s;try{s=await r({data:e.node.data,node:e.node,values:o,changes:i,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:r,message:o}of t)r.error=o,r.mounted&&this.showError(r.mounted.editor,o);t[0].draft.mounted?.editor.focus?.()}showError(e,t){let r=e.el;r.classList.add("mach-editor-invalid"),r.setAttribute("title",t),r.setAttribute("aria-invalid","true"),r.classList.remove("mach-editor-validating"),r.removeAttribute("aria-busy"),r.inert=!1,(r.querySelector("input, select, textarea")??r).focus?.();let i=()=>{r.classList.remove("mach-editor-invalid"),r.removeAttribute("title"),r.removeAttribute("aria-invalid")};r.addEventListener("input",i,{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 r of e.drafts.values()){let o=r.mounted?.editor.el;o&&(o.classList.toggle("mach-editor-validating",t),t?o.setAttribute("aria-busy","true"):o.removeAttribute("aria-busy"),o.inert=t)}}applyValue(e,t,r,o){return o===void 0?!1:this.core.setCellValue(e,t,o,r)}focusEditor(e,t,r){try{e.focus?.()}catch(o){this.core.reportError(o,"cellEditor.focus",{colId:t.id,rowId:r.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(r){this.core.reportError(r,"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,r){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(r);let o=[...t.drafts.values()],i=o.indexOf(r),s=e.shiftKey?-1:1;for(let a=1;a<=o.length;a++){let l=o[(i+s*a+o.length)%o.length];if(l.mounted){this.focusEditor(l.mounted.editor,l.column,t.node);break}}}destroy(){(this.cellEditing||this.rowEditing)&&this.stopAsync(!0)}};var D={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"},Vr={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"},ii={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 Ke(n){return ii[n]??"matchEquals"}function P(n,e){return n.replace("{n}",String(e))}function Ue(n,e,t){return n.replace("{a}",String(e)).replace("{b}",String(t))}var si=["contains","notContains","equals","notEquals","startsWith","endsWith","blank","notBlank"],ai=["equals","notEquals","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","inRange","blank","notBlank"],li=["equals","notEquals","lessThan","greaterThan","inRange","blank","notBlank"];function Wt(n){return n==="blank"||n==="notBlank"}function di(n){return n==="number"?ai:n==="date"?li:si}function qe(n){return n===null?"null:":`${typeof n}:${String(n)}`}var $e=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 r=this.core.rowModel.getFilterModel()[e.id]??null,o=r?.type??e.filterType,i=f("div","mach-filter-panel");i.setAttribute("role","dialog"),i.setAttribute("aria-label",`${e.id} filter`),o==="set"?this.buildSetBody(i,e,r):this.buildConditionBody(i,e,o,r);let s=f("div","mach-filter-footer"),a=f("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=f("button","mach-filter-btn-apply");l.type="button",l.textContent=this.core.getLocaleText("apply"),l.addEventListener("click",()=>{let m=this.readFilter(i);this.core.applyColumnFilter(e,m),this.close()}),s.append(a,l),i.appendChild(s),document.body.appendChild(i),this.panel=i,this.openColId=e.id;let d=t.getBoundingClientRect(),c=i.getBoundingClientRect(),u=M(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)),i.style.left=`${u}px`,i.style.top=`${h}px`,document.addEventListener("mousedown",this.docMouseDown,!0),document.addEventListener("keydown",this.docKeyDown,!0),i.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,r,o){let i=o&&o.type!=="set"&&o.conditions.length>0?o.conditions[0]:null,s=i?.match??(r==="text"?"contains":"equals"),a=this.createConditionSelect(r,s),l=this.createConditionInput(r),d=this.createConditionInput(r,!0);this.populateConditionInputs(r,s,i,l,d),this.updateConditionInputVisibility(s,l,d),a.addEventListener("change",()=>{this.updateConditionInputVisibility(a.value,l,d)}),this.attachEnterApply(t,e,l,d);let c=f("div","mach-filter-body");c.append(a,l,d),e.appendChild(c),e.dataset.filterType=r}createConditionSelect(e,t){let r=f("select","mach-filter-select");for(let o of di(e)){let i=document.createElement("option");i.value=o,i.textContent=this.core.getLocaleText(Ke(o)),r.appendChild(i)}return r.value=t,r}createConditionInput(e,t=!1){let o=f("input",`mach-filter-input${t?" mach-filter-input--second":""}`);return e==="number"&&(o.type="number"),e==="date"&&(o.type="date"),o}populateConditionInputs(e,t,r,o,i){r?.value!=null&&!Wt(t)&&(o.value=e==="date"?String(r.value).slice(0,10):String(r.value)),r&&"value2"in r&&r.value2!=null&&(i.value=e==="date"?String(r.value2).slice(0,10):String(r.value2))}updateConditionInputVisibility(e,t,r){t.style.display=Wt(e)?"none":"",r.style.display=e==="inRange"?"":"none"}attachEnterApply(e,t,r,o){let i=s=>{s.key==="Enter"&&(this.core.applyColumnFilter(e,this.readFilter(t)),this.close())};r.addEventListener("keydown",i),o.addEventListener("keydown",i)}buildSetBody(e,t,r){let i=t.colDef.filterParams,s;if(i?.values)s=i.values;else{let g=new Set;s=[];let v=this.core.rowModel.getAllNodes(),y=Math.min(v.length,i?.maxValues??500);for(let w=0;w<y;w++){let C=this.core.getCellValue(v[w],t),S=qe(C??null);g.has(S)||(g.add(S),s.push(C))}}let a=new Set(r?.type==="set"?r.values.map(qe):s.map(qe)),l=f("input","mach-filter-input mach-filter-input--search");l.type="text",l.placeholder=this.core.getLocaleText("search");let d=f("div","mach-filter-set-list"),c=[],u=new Map,h=g=>{d.textContent="",c.length=0;let v=g.trim().toLowerCase();for(let y of s){let w=y==null?this.core.getLocaleText("emptySetLabel"):String(y);if(v&&!w.toLowerCase().includes(v))continue;let C=qe(y);u.set(C,y);let S=f("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),e.dataset.setSelected=JSON.stringify([...a])});let k=f("span");k.textContent=w,S.append(R,k),d.appendChild(S),c.push(R)}};l.addEventListener("input",()=>h(l.value)),h(""),e.dataset.filterType="set",e.dataset.setValues=JSON.stringify([...u.entries()]),e.dataset.setSelected=JSON.stringify([...a]),(()=>{let g=[...u.entries()];e.dataset.setValues=JSON.stringify(g)})();let m=f("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")return this.readSetFilter(e);if(t!=="text"&&t!=="number"&&t!=="date")return null;let r=e.querySelector(".mach-filter-select"),o=e.querySelectorAll(".mach-filter-input"),i=o[0],s=o[1];if(!r||!i)return null;let a=r.value;if(Wt(a))return{type:t,conditions:[{match:a}]};let l=i.value;return l===""&&a!=="inRange"?null:t==="number"?this.readNumberFilter(a,l,s):t==="date"?this.readDateFilter(a,l,s):{type:"text",conditions:[{match:a,value:l}]}}readSetFilter(e){let t=[],r=[];try{t=JSON.parse(e.dataset.setValues??"[]"),r=JSON.parse(e.dataset.setSelected??"[]")}catch{return null}let o=new Set(r),i=t.filter(([s])=>o.has(s)).map(([,s])=>s);return i.length===t.length||i.length===0?null:{type:"set",values:i}}readNumberFilter(e,t,r){let o=Number(t);if(Number.isNaN(o))return null;if(e!=="inRange")return{type:"number",conditions:[{match:e,value:o}]};let i=r?.value?Number(r.value):o;return Number.isNaN(i)?null:{type:"number",conditions:[{match:"inRange",value:o,value2:i}]}}readDateFilter(e,t,r){return e!=="inRange"?{type:"date",conditions:[{match:e,value:t}]}:{type:"date",conditions:[{match:"inRange",value:t,value2:r?.value||t}]}}};var je=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 o=this.core.skeleton.root.getBoundingClientRect(),i=document.createElement("div");return i.style.position="fixed",i.style.left=`${o.right-16}px`,i.style.top=`${o.top+this.core.options.headerHeight}px`,i.style.width="1px",i.style.height="1px",document.body.appendChild(i),this.standaloneAnchor=i,i})();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 r=this.core.getApi(),o=f("div","mach-filter-panel mach-column-panel");o.setAttribute("role",e?"menu":"dialog"),e||(o.setAttribute("aria-modal","false"),o.setAttribute("aria-label",this.core.getLocaleText("columnSettings")));let i=f("div","mach-column-panel-title");if(i.textContent=e?e.colDef.headerName??e.colDef.field??e.id:this.core.getLocaleText("columnSettings"),o.appendChild(i),e&&e.sortable){let R=f("div","mach-column-panel-actions"),k=(j,mr)=>{let ye=f("button","mach-column-panel-btn");return ye.type="button",ye.textContent=this.core.getLocaleText(j),ye.addEventListener("click",()=>{r.sorting.setModel(mr?[{colId:e.id,direction:mr}]:[]),this.close()}),ye};R.append(k("sortAsc","asc"),k("sortDesc","desc"),k("clearSort",null)),o.appendChild(R)}let s=f("div","mach-column-panel-actions"),a=(R,k)=>{let j=f("button","mach-column-panel-btn");return j.type="button",j.textContent=this.core.getLocaleText(R),j.addEventListener("click",()=>{e&&r.columns.setPinned(e.id,k),this.close()}),j};e&&(s.append(a("pinLeft","left"),a("pinRight","right"),a("clearPin",null)),o.appendChild(s));let l=f("div","mach-column-panel-actions"),d=f("button","mach-column-panel-btn");d.type="button",d.textContent=this.core.getLocaleText("autoSize"),d.addEventListener("click",()=>{e?r.columns.autoSize(e.id):r.columns.autoSizeAll(),this.close()});let c=f("button","mach-column-panel-btn");c.type="button",c.textContent=this.core.getLocaleText("hideColumn"),c.addEventListener("click",()=>{e&&r.columns.setVisible(e.id,!1),this.close()}),e&&(l.append(d,c),o.appendChild(l));let u=f("div","mach-column-panel-divider");o.appendChild(u);let h=f("div","mach-column-panel-subtitle");if(h.textContent=this.core.getLocaleText("columnVisibility"),o.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)}),o.appendChild(R)}let p=f("div","mach-column-panel-list");this.renderColumnList(p,!e),o.appendChild(p);let m=f("div","mach-filter-footer"),g=f("button","mach-filter-btn-reset");g.type="button",g.textContent=this.core.getLocaleText("resetAll"),g.addEventListener("click",()=>{r.columns.resetState(),this.close()});let v=f("button","mach-filter-btn-apply");v.type="button",v.textContent=this.core.getLocaleText("autoSizeAll"),v.addEventListener("click",()=>{r.columns.autoSizeAll(),this.close()}),m.append(g,v),o.appendChild(m),document.body.appendChild(o),this.panel=o,this.openColId=e?e.id:"__standalone__";let y=t.getBoundingClientRect(),w=o.getBoundingClientRect(),C=M(y.left,8,window.innerWidth-w.width-8),S=y.bottom+4;S+w.height>window.innerHeight-8&&(S=Math.max(8,y.top-w.height-4)),o.style.left=`${C}px`,o.style.top=`${S}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 r=this.core.getApi();e.replaceChildren();let o=this.core.columnModel.getColumns().filter(i=>i.isDetailToggle?!1:!t||!this.searchText?!0:`${i.colDef.headerName??i.colDef.field??i.id} ${i.id}`.toLocaleLowerCase().includes(this.searchText));for(let i of o){let s=f("div",t?"mach-column-workbench-item":"mach-filter-set-item"),a=f("label","mach-column-workbench-label"),l=document.createElement("input");l.type="checkbox",l.checked=!i.hide,l.disabled=i.hasCheckbox,l.addEventListener("change",()=>{r.columns.setVisible(i.id,l.checked),this.rebuildListStates()});let d=f("span","mach-column-workbench-name");if(d.textContent=i.colDef.headerName??i.colDef.field??i.id,d.title=`${d.textContent} (${i.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,g]of[["",this.core.getLocaleText("clearPin")],["left",this.core.getLocaleText("pinLeft")],["right",this.core.getLocaleText("pinRight")]]){let v=document.createElement("option");v.value=m,v.textContent=g,c.appendChild(v)}c.value=i.pinned??"",c.addEventListener("change",()=>{r.columns.setPinned(i.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===i.parentGroup&&(i.parentGroup!=null||m.pinned===i.pinned)),h=u.indexOf(i),p=(m,g,v)=>{let y=f("button","mach-column-workbench-move");return y.type="button",y.textContent=m,y.disabled=v||i.hide||!i.movable,y.addEventListener("click",()=>{r.columns.move(i.id,g),this.rebuildListStates()}),y};s.append(p("\u2191",h-1,h<=0),p("\u2193",h+1,h<0||h>=u.length-1))}e.appendChild(s)}}};var Ye=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()}}resolveAnchor(e){if(e){let i=this.core.rowModel.getDisplayedRow(e.rowIndex),s=this.core.columnModel.getColumn(e.colId);return i&&s?{node:i,column:s}:null}let t=this.core.bodyRenderer.getNormalizedRangeOrFocus();if(!t)return null;let r=this.core.rowModel.getDisplayedRow(t.r1),o=this.core.columnModel.getOrderedVisible()[t.c1];return r&&o?{node:r,column:o}:null}readCustomItems(e,t){let r=this.core.options.getContextMenuItems;if(!r)return null;try{return r({data:e.data,node:e,api:this.core.getApi(),colId:t.id,value:this.core.getCellValue(e,t),rowIndex:e.rowIndex})??null}catch(o){return this.core.reportError(o,"getContextMenuItems",{colId:t.id,rowId:e.id}),null}}populateCustomPanel(e,t,r,o){let i=!1;for(let s of t){if(s.separator){e.appendChild(f("div","mach-context-menu-separator"));continue}let a=f("button","mach-context-menu-item");a.type="button",a.textContent=s.label??"",s.danger&&a.classList.add("mach-context-menu-item--danger"),a.disabled=s.disabled===!0,a.disabled||(i=!0,a.addEventListener("click",()=>this.runCustomItem(s,r,o))),e.appendChild(a)}return i}runCustomItem(e,t,r){this.close();try{e.action?.()}catch(o){this.core.reportError(o,"contextMenu.action",{colId:r.id,rowId:t.id})}}appendDefaultButton(e,t,r){let o=f("button","mach-context-menu-item");o.type="button",o.textContent=t,o.addEventListener("click",r),e.appendChild(o)}populateDefaultPanel(e){let t=this.core;this.appendDefaultButton(e,t.getLocaleText("menuCopy"),()=>{t.copyActiveRange(),this.close()}),!t.options.suppressClipboard&&(this.appendDefaultButton(e,t.getLocaleText("menuPaste"),()=>{t.pasteFromSystemClipboard(),this.close()}),this.appendDefaultButton(e,t.getLocaleText("menuClearContents"),()=>{let r=t.bodyRenderer.getNormalizedRangeOrFocus();r&&t.clearRangeValues(r),this.close()}))}open(e,t,r){this.close();let o=this.resolveAnchor(r);if(!o)return;let i=f("div","mach-context-menu");if(i.setAttribute("role","menu"),this.core.options.getContextMenuItems){let s=this.readCustomItems(o.node,o.column);if(!s||!this.populateCustomPanel(i,s,o.node,o.column))return;this.attach(i,e,t);return}this.populateDefaultPanel(i),this.attach(i,e,t)}attach(e,t,r){document.body.appendChild(e),this.panel=e;let o=e.getBoundingClientRect(),i=M(t,8,Math.max(8,window.innerWidth-o.width-8)),s=M(r,8,Math.max(8,window.innerHeight-o.height-8));e.style.left=`${i}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 Xe=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 r=e.target.closest(".mach-cell");if(!r||r===this.currentCell)return;this.clearTimers(),this.removePanel(),this.currentCell=r;let o=this.resolveCell(r);if(!o||r.classList.contains("mach-cell--editing"))return;let i=this.createParams(o.node,o.column,o.index);this.hasTooltipValue(i,o.column)&&(this.showTimer=setTimeout(()=>{this.core.isDestroyed()||this.currentCell!==r||this.showPanel(r,i)},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)}resolveCell(e){let t=e.dataset.colId??"",r=Number(e.closest(".mach-row")?.dataset.index);if(Number.isNaN(r))return null;let o=this.core.rowModel.getDisplayedRow(r),i=t?this.core.columnModel.getColumn(t):void 0;return!o||!i||o.isDetail||o.isGroup?null:{node:o,column:i,index:r}}createParams(e,t,r){return{data:e.data,node:e,api:this.core.getApi(),colId:t.id,value:this.core.getCellValue(e,t),formatted:H(this.core,e,t),rowIndex:r}}hasTooltipValue(e,t){let r=t.colDef.tooltipValueGetter;if(!r)return!!e.formatted;try{r({...e,colDef:t.colDef,column:t})}catch(o){this.core.reportError(o,"tooltipValueGetter",{colId:t.id,rowId:e.node.id})}return!0}showPanel(e,t){this.removePanel();let r=this.core.options.tooltipComponent;if(!r)return;let o=f("div","mach-tooltip");o.setAttribute("role","tooltip");let i;try{i=r(t)}catch(c){this.core.reportError(c,"tooltipComponent",{colId:t.colId,rowIndex:t.rowIndex});return}typeof i=="string"?o.textContent=i:o.appendChild(i),document.body.appendChild(o),this.panel=o;let s=e.getBoundingClientRect(),a=o.getBoundingClientRect(),l=M(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)),o.style.left=`${l}px`,o.style.top=`${d}px`}};var Je=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"),r=t.getContext("2d");if(!r)return null;let o=e.fontSize??14,i=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;r.font=`500 ${o}px sans-serif`;let d=r.measureText(e.text),c=Math.ceil(d.width),u=Math.max(i,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 ${o}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 Qe=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 r=this.core,o=[];for(let i of e){let s=r.rowModel.getNodeById(i.nodeId),a=r.columnModel.getColumn(i.columnId);if(!s||!a||s.data==null)continue;let l=t?i.newValue:i.oldValue,d=t?i.oldValue:i.newValue;r.writeValue(s,a,l,d)&&(r.bodyRenderer.invalidateRowHeight(s),r.bodyRenderer.queueFlash([s.rowIndex],[a.id]),s.rowIndex>=0&&o.push(s.rowIndex),r.emit("cellValueChanged",{oldValue:d,newValue:l,rowNode:s,rowIndex:s.rowIndex,column:a,colDef:a.colDef,data:s.data}))}o.length>0&&r.bodyRenderer.refreshRows(o),r.summaryRenderer.refresh(),r.statusBarService.refresh()}clear(){this.stack=[],this.pointer=-1,this.pending=null}};var Ze=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}`,o=this.changes.get(t)?.originalValue??e.oldValue;Object.is(e.newValue,o)?this.changes.delete(t):this.changes.set(t,{rowId:e.rowNode.id,colId:e.column.id,originalValue:o,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 r=this.core.rowModel.getNodeById(t.rowId);if(!r?.data)continue;let o=e.get(t.rowId);o||(o={rowId:t.rowId,data:r.data,cells:[]},e.set(t.rowId,o)),o.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[r,o]of this.changes)t.has(o.rowId)&&this.changes.delete(r)}this.emitChanged()}acknowledge(e){for(let t of e)for(let r of t.cells){let o=`${t.rowId}\0${r.colId}`,i=this.changes.get(o);if(i){Object.is(i.value,r.value)?this.changes.delete(o):i.originalValue=r.value;continue}let s=this.core.rowModel.getNodeById(t.rowId),a=this.core.columnModel.getColumn(r.colId);if(!s||!a||s.data==null)continue;let l=this.core.getCellValue(s,a);Object.is(l,r.value)||this.changes.set(o,{rowId:t.rowId,colId:r.colId,originalValue:r.value,value:l})}this.emitChanged()}rollback(e){let t=e?new Set(e):null,r=[...this.changes.entries()].filter(([,s])=>!t||t.has(s.rowId));if(r.length===0)return!1;let o=new Set,i=new Set;this.rollingBack=!0;try{for(let[s,a]of r){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)){i.add(s);continue}this.core.writeValue(l,d,a.originalValue,c)&&(i.add(s),this.core.bodyRenderer.invalidateRowHeight(l),l.rowIndex>=0&&o.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 i)this.changes.delete(s);return o.size>0&&this.core.bodyRenderer.refreshRows([...o]),this.core.summaryRenderer.refresh(),this.core.statusBarService.refresh(),this.emitChanged(),i.size>0}clearRows(e){if(e.length===0)return;let t=new Set(e);for(let[r,o]of this.changes)t.has(o.rowId)&&this.changes.delete(r);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 Kt=class{constructor(){this.observer=null;this.subscribers=0;this.count=0;this.totalMs=0}acquire(){this.subscribers++,this.ensureObserver();let e=!1;return()=>{e||(e=!0,this.subscribers=Math.max(0,this.subscribers-1),this.subscribers===0&&(this.observer?.disconnect(),this.observer=null))}}snapshot(){return{count:this.count,totalMs:this.totalMs}}ensureObserver(){if(!(this.observer||typeof PerformanceObserver>"u"))try{this.observer=new PerformanceObserver(e=>{for(let t of e.getEntries())this.count++,this.totalMs+=t.duration}),this.observer.observe({entryTypes:["longtask"]})}catch{this.observer=null}}},et=new Kt;function _t(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var tt=class{constructor(){this.samples=[];this.layoutSamples=[];this.modelSamples=[];this.releaseLongTaskHub=et.acquire(),this.longTaskBaseline=et.snapshot()}start(){return _t()}recordRender(e,t,r){this.samples.push({duration:Math.max(0,_t()-e),rows:t,columns:r}),this.samples.length>120&&this.samples.shift()}recordLayout(e){this.pushDuration(this.layoutSamples,e)}recordModel(e){this.pushDuration(this.modelSamples,e)}snapshot(){let e=this.samples.map(i=>i.duration),t=this.samples[this.samples.length-1],r=[...e].sort((i,s)=>i-s),o=et.snapshot();return{sampleCount:e.length,lastRenderMs:t?.duration??0,averageRenderMs:this.average(e),maxRenderMs:r[r.length-1]??0,p95RenderMs:this.percentile(r,!0),longRenderCount:e.filter(i=>i>16.7).length,renderedRows:t?.rows??0,renderedColumns:t?.columns??0,renderedCells:(t?.rows??0)*(t?.columns??0),layoutSampleCount:this.layoutSamples.length,p95LayoutMs:this.percentile(this.layoutSamples),modelSampleCount:this.modelSamples.length,p95ModelMs:this.percentile(this.modelSamples),longTaskCount:Math.max(0,o.count-this.longTaskBaseline.count),longTaskTotalMs:Math.max(0,o.totalMs-this.longTaskBaseline.totalMs),usedHeapBytes:this.usedHeapBytes()}}reset(){this.samples=[],this.layoutSamples=[],this.modelSamples=[],this.longTaskBaseline=et.snapshot()}destroy(){this.releaseLongTaskHub?.(),this.releaseLongTaskHub=null}pushDuration(e,t){e.push(Math.max(0,_t()-t)),e.length>120&&e.shift()}average(e){return e.length===0?0:e.reduce((t,r)=>t+r,0)/e.length}usedHeapBytes(){let e=typeof performance>"u"?void 0:performance.memory?.usedJSHeapSize;return typeof e=="number"&&Number.isFinite(e)?e:null}percentile(e,t=!1){if(e.length===0)return 0;let r=t?e:[...e].sort((o,i)=>o-i);return r[Math.max(0,Math.ceil(r.length*.95)-1)]??0}};function zr(n,e){if(!(n==null||e==null))return[...new Set([...n,...e])]}function ci(n,e){return n===!0||e===!0?!0:n?e?{rowIds:zr(n.rowIds,e.rowIds),rowIndexes:n.rowIndexes==null||e.rowIndexes==null?void 0:[...new Set([...n.rowIndexes,...e.rowIndexes])],columns:zr(n.columns,e.columns),force:n.force===!0||e.force===!0,includePinned:n.includePinned===!0||e.includePinned===!0}:n:e}function ui(n,e){return{columns:n.columns===!0||e.columns===!0,header:n.header===!0||e.header===!0,pool:n.pool===!0||e.pool===!0,data:n.data===!0||e.data===!0,layout:n.layout===!0||e.layout===!0,cells:ci(n.cells,e.cells),pinned:n.pinned===!0||e.pinned===!0,summary:n.summary===!0||e.summary===!0,overlays:n.overlays===!0||e.overlays===!0}}var rt=class{constructor(e){this.apply=e;this.depth=0;this.pending=null;this.flushCount=0;this.requestCount=0;this.coalescedRequestCount=0;this.destroyed=!1}batch(e){if(this.destroyed)return e();this.depth++;try{return e()}finally{this.depth--,this.depth===0&&this.flush()}}schedule(e){this.destroyed||(this.requestCount++,this.pending&&this.coalescedRequestCount++,this.pending=ui(this.pending??{},e),this.depth===0&&this.flush())}flush(){if(this.destroyed||this.depth>0||!this.pending)return;let e=this.pending;this.pending=null,this.flushCount++,this.apply(e)}snapshot(){return{batchDepth:this.depth,flushCount:this.flushCount,requestCount:this.requestCount,coalescedRequestCount:this.coalescedRequestCount,pending:this.pending!=null}}destroy(){this.destroyed=!0,this.pending=null,this.depth=0}};var V=["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 q(n){return(n==null?"":String(n)).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function ot(n,e,t="text/plain;charset=utf-8"){try{if(typeof document>"u"||typeof Blob>"u")return!1;let r=document.createElement("a");if(typeof URL<"u"&&typeof URL.createObjectURL=="function"){let o=new Blob([e],{type:t}),i=URL.createObjectURL(o);r.href=i,r.download=n,r.click();let s=typeof URL.revokeObjectURL=="function"?URL.revokeObjectURL.bind(URL):null;s&&setTimeout(()=>{try{s(i)}catch{}},0)}else r.href=`data:${t},${encodeURIComponent(e)}`,r.download=n,r.click();return!0}catch{return!1}}var te={columnDefs:{kind:"array",update:"columnDefs"},rowData:{kind:"array",update:"rowData"},defaultColDef:{kind:"object",update:"options"},columnTypes:{kind:"object",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"},enableColumnResize:{kind:"boolean",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"},advancedFilterModel:{kind:"object",update:"options"},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"},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"},persistence:{kind:"boolean-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"},datasourceMode:{kind:"string",update:"options"},blockSize:{kind:"number",update:"options"},infiniteBufferRows:{kind:"number",update:"options"},maxBlocksInCache:{kind:"number",update:"options"},datasourceMaxConcurrentRequests:{kind:"number",update:"options"},blockPrefetch:{kind:"number",update:"options"},datasourceRowCount:{kind:"number",update:"options"},dataProcessor:{kind:"object",update:"options"},dataProcessorMinRows:{kind:"number",update:"options"},datasourceRetryCount:{kind:"number",update:"options"},datasourceRetryDelay:{kind:"number",update:"options"},datasourceRetryJitter:{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"}},nt=Object.freeze(Object.keys(te)),Ba=Object.freeze(nt.filter(n=>te[n].update==="options"));var hi=new Set(V.map(n=>`on${n.charAt(0).toUpperCase()}${n.slice(1)}`));function Ut(n,e){return n==null||e==="unknown"?!0:e==="array"?Array.isArray(n):e==="boolean-object"?typeof n=="boolean"||typeof n=="object"&&!Array.isArray(n):e==="object"?typeof n=="object"&&!Array.isArray(n):e==="number"?typeof n=="number"&&Number.isFinite(n):typeof n===e}function Wr(n){let e={};for(let[t,r]of Object.entries(n)){if(hi.has(t)){(r==null||typeof r=="function")&&(e[t]=r);continue}let o=te[t];!o||!Ut(r,o.kind)||(e[t]=r)}return e}var Ur=2e3,pi=1e5,$t=512,fi=1e4;function qt(n){return Array.isArray(n)?[...new Set(n.slice(0,pi).filter(e=>typeof e=="string"&&e.length>0&&e.length<=$t))]:[]}function _r(n,e){return typeof n=="number"&&Number.isFinite(n)&&n>=1?Math.floor(n):e}function Kr(n){return typeof n=="number"&&Number.isFinite(n)&&n>0?n:void 0}function mi(n,e){let t=Kr(e.width),r=Kr(e.flex);t!==void 0&&(n.width=t),e.flex===null?n.flex=null:r!==void 0&&(n.flex=r),(e.widthMode==="auto"||e.widthMode==="manual")&&(n.widthMode=e.widthMode)}function gi(n,e){typeof e.hide=="boolean"&&(n.hide=e.hide),(e.pinned===null||e.pinned==="left"||e.pinned==="right")&&(n.pinned=e.pinned)}function yi(n,e){if(n==null||typeof n!="object")return null;let t=n,r=typeof t.colId=="string"?t.colId.trim():"";if(!r||r.length>$t||e.has(r))return null;e.add(r);let o={colId:r};return gi(o,t),mi(o,t),o}function vi(n){if(!Array.isArray(n))return[];let e=[],t=new Set;for(let r of n.slice(0,Ur)){let o=yi(r,t);o&&e.push(o)}return e}function wi(n){if(!Array.isArray(n))return[];let e=[],t=new Set;for(let r of n.slice(0,Ur)){if(r==null||typeof r!="object")continue;let o=r,i=typeof o.colId=="string"?o.colId.trim():"";!i||i.length>$t||t.has(i)||o.direction!=="asc"&&o.direction!=="desc"||(t.add(i),e.push({colId:i,direction:o.direction}))}return e}function F(n){if(n==null||typeof n!="object")return null;let e=n;if(e.version!==2||!Array.isArray(e.columns)||!Array.isArray(e.sortModel))return null;let t=e.pagination!=null&&typeof e.pagination=="object"?e.pagination:{};return{version:2,columns:vi(e.columns),sortModel:wi(e.sortModel),filterModel:X(e.filterModel),advancedFilterModel:G(e.advancedFilterModel),quickFilterText:typeof e.quickFilterText=="string"&&e.quickFilterText.trim()?e.quickFilterText.slice(0,fi):null,pagination:{enabled:t.enabled===!0,page:_r(t.page,1),pageSize:_r(t.pageSize,20)},selectedRowIds:qt(e.selectedRowIds),expandedRowIds:qt(e.expandedRowIds),expandedGroupIds:qt(e.expandedGroupIds)}}function qr(n,e){let t=F(n);if(!t)throw new TypeError("[MachTable] Cannot persist an invalid GridState snapshot.");let r=new Set(e);return{version:2,columns:r.has("columns")?t.columns:[],sortModel:r.has("sort")?t.sortModel:[],filterModel:r.has("filter")?t.filterModel:{},advancedFilterModel:r.has("filter")?t.advancedFilterModel:null,quickFilterText:r.has("filter")?t.quickFilterText:null,pagination:r.has("pagination")?t.pagination:{enabled:!1,page:1,pageSize:20},selectedRowIds:r.has("selection")?t.selectedRowIds:[],expandedRowIds:r.has("expansion")?t.expandedRowIds:[],expandedGroupIds:r.has("expansion")?t.expandedGroupIds:[]}}function bi(n){try{if(typeof structuredClone=="function")return structuredClone(n)}catch{}return Array.isArray(n)?[...n]:n!=null&&typeof n=="object"?{...n}:n}function jr(n,e){let t=e?new Set(e.map(String)):null;return n.filter(r=>!t||t.has(r.rowId)).map(r=>({...r,data:bi(r.data),cells:r.cells.map(o=>({...o}))}))}function Ci(n,e){let t=typeof n?.rowId=="string"?n.rowId:"";return!e.has(t)||typeof n.message!="string"||!n.message.trim()?null:{...n,rowId:t,message:n.message.trim(),...typeof n.code=="string"&&n.code.trim()?{code:n.code.trim()}:{},...Array.isArray(n.colIds)?{colIds:[...new Set(n.colIds.filter(r=>typeof r=="string"&&r.length>0))]}:{}}}function $r(n,e){let t=new Map;for(let r of n??[]){let o=Ci(r,e);o&&!t.has(o.rowId)&&t.set(o.rowId,o)}return[...t.values()]}function Yr(n,e){let t=new Set(n.map(d=>d.rowId)),r=$r(e?.conflicts,t),o=new Set(r.map(d=>d.rowId)),i=$r(e?.failures,t).filter(d=>!o.has(d.rowId)),s=new Set([...i,...r].map(d=>d.rowId)),a=e?.savedRowIds==null?null:new Set(e.savedRowIds.map(String).filter(d=>t.has(d))),l=n.filter(d=>!s.has(d.rowId)&&(a==null||a.has(d.rowId)));return{submitted:n,saved:l,failures:i,conflicts:r}}function Ri(n,e){if(e.serverData===void 0)return null;let t=n.rows.getById(e.rowId);if(!t||t.data==null)return null;let r=n.getOption("rowKey");if(r){let s=typeof r=="function"?r(e.serverData):B(e.serverData,r);return String(s)===e.rowId?{data:e.serverData,mergeIntoCurrent:!1}:null}let o=t.data;return o!=null&&e.serverData!=null&&typeof o=="object"&&typeof e.serverData=="object"?{data:o,mergeIntoCurrent:!0}:null}function Xr(n,e,t){if(n.isDestroyed())return!1;if(t==="keepLocal")return!0;let r=Ri(n,e);return r?(n.editing.rollback([e.rowId]),r.mergeIntoCurrent&&Object.assign(r.data,e.serverData),n.rows.transact({update:[r.data]}),n.editing.markSaved([e.rowId]),!0):!1}function Jr(n){return{setData:e=>n.setRowData(e),transact:e=>n.applyTransaction(e),transactAsync:(e,t)=>n.applyTransactionAsync(e,t),flushTransactions:()=>n.flushAsyncTransactions(),getCount:()=>n.getDisplayedRowCount(),getAt:e=>n.getRowNode(e),getById:e=>n.getNodeById(e),forEach:e=>n.forEachNode(e),forEachDisplayed:e=>n.forEachNodeAfterFilterAndSort(e),reorder:(e,t)=>n.reorderRows(e,t),isRemote:()=>n.isInfinite(),reload:e=>n.reload(e),ensureLoaded:(e,t,r)=>n.ensureRowsLoaded(e,t,r),purgeCache:()=>n.purgeDatasourceCache(),getCacheSnapshot:()=>n.getDatasourceCacheSnapshot()}}function Qr(n){return{getDefinitions:()=>n.getColumnDefs(),setDefinitions:e=>n.setColumnDefs(e),getState:()=>n.getColumnState(),setState:e=>n.setColumnState(e),resetState:()=>n.resetColumnState(),setVisible:(e,t)=>n.setColumnVisibility(e,t),setPinned:(e,t)=>n.setColumnPinned(e,t),move:(e,t)=>n.moveColumn(e,t),setWidth:(e,t)=>n.setColumnWidth(e,t),fit:e=>n.sizeColumnsToFit(e),autoSize:(e,t)=>n.autoSizeColumn(e,t),autoSizeAll:e=>n.autoSizeAllColumns(e),getWorkbenchItems:()=>n.getColumnWorkbenchItems(),openWorkbench:e=>n.openColumnWorkbench(e),closeWorkbench:()=>n.closeColumnWorkbench()}}function Zr(n){return{getRows:()=>n.getSelectedRows(),getVisibleRows:()=>n.getVisibleSelection(),getNodes:()=>n.getSelectedNodes(),getIds:()=>n.getSelectedIds(),setRows:(e,t)=>n.setSelection(e,t),setById:(e,t,r)=>n.selectNodeById(e,t,r),selectAll:e=>n.selectAll(e),clear:()=>n.deselectAll(),getMode:()=>n.getRowSelection(),setMode:e=>n.setRowSelection(e),getRange:()=>n.getRangeSelection(),clearRange:()=>n.clearRangeSelection()}}function eo(n){return{startCell:e=>n.startEditingCell(e),startRow:e=>n.startEditingRow(e),isRowActive:e=>n.isRowEditing(e),stop:e=>n.stopEditing(e?.cancel===!0),getChanges:()=>n.getChanges(),getDirtyRowIds:()=>n.getDirtyRowIds(),markSaved:e=>n.markChangesSaved(e),rollback:e=>n.rollbackChanges(e),save:(e,t)=>n.saveEditingChanges(e,t),undo:()=>n.undo(),redo:()=>n.redo(),canUndo:()=>n.canUndo(),canRedo:()=>n.canRedo()}}function to(n){return{get:()=>n.getState(),apply:(e,t)=>n.applyState(e,t)}}function ro(n){return{get:()=>n.getDiagnostics(),getPerformance:()=>n.getPerformanceSnapshot(),resetPerformance:()=>n.resetPerformanceMetrics()}}function oo(n){return{getModel:()=>n.getFilterModel(),setModel:e=>n.setFilterModel(e),getAdvancedModel:()=>n.getAdvancedFilterModel(),setAdvancedModel:e=>n.setAdvancedFilterModel(e),getQuickText:()=>n.getQuickFilter(),setQuickText:e=>n.setQuickFilter(e),isPresent:e=>e==null?Object.keys(n.getFilterModel()).length>0||n.getAdvancedFilterModel()!=null||n.getQuickFilter()!=null:n.isColumnFilterPresent(e)}}function no(n){return{getModel:()=>n.getSortModel(),setModel:e=>n.setSortModel(e)}}function io(n){return{isEnabled:()=>n.paginationEnabled(),setEnabled:e=>n.setPaginationEnabled(e),getPage:()=>n.getPage(),setPage:e=>n.setPage(e),getPageSize:()=>n.getPageSize(),setPageSize:e=>n.setPageSize(e),getPageCount:()=>n.getPageCount(),getTotalRowCount:()=>n.getTotalRowCount()}}function so(n){return{isRowExpanded:e=>n.isRowExpanded(e),setRowExpanded:(e,t)=>n.isRowExpanded(e)===t?!1:(t?n.expandRow(e):n.collapseRow(e),n.isRowExpanded(e)===t),isTreeRowLoading:e=>n.isTreeRowLoading(e),loadTreeChildren:(e,t)=>n.loadTreeChildren(e,t),isGroupExpanded:e=>n.isGroupExpanded(e),setGroupExpanded:(e,t)=>n.isGroupExpanded(e)===t?!1:(n.toggleRowGroup(e),n.isGroupExpanded(e)===t),setAllGroupsExpanded:e=>e?n.expandAllGroups():n.collapseAllGroups(),setAllDetailsExpanded:e=>e?n.expandAllDetails():n.collapseAllDetails()}}function ao(n){return{getRoot:()=>n.getRootElement(),scrollToRow:(e,t)=>n.scrollToIndex(e,t),refreshCells:e=>n.refreshCells(e),refreshLayout:()=>n.refreshLayout(),flush:()=>n.flushUpdates(),setOverlay:e=>n.setOverlay(e),getPinnedRows:e=>e==="top"?n.getPinnedTopRowData():n.getPinnedBottomRowData(),setPinnedRows:(e,t)=>e==="top"?n.setPinnedTopRowData(t):n.setPinnedBottomRowData(t)}}function lo(n){return{exportCsv:e=>n.getDataAsCsv(e),importCsv:(e,t)=>n.importCsv(e,t),print:e=>n.print(e),copyRange:()=>n.copyRangeToClipboard()}}function fe(n){if(n?.reason instanceof Error)return n.reason;let e=new Error(typeof n?.reason=="string"?n.reason:"The operation was aborted");return e.name="AbortError",e}function co(n,e){return e?e.aborted?Promise.reject(fe(e)):new Promise((t,r)=>{let o=()=>r(fe(e));e.addEventListener("abort",o,{once:!0}),n.then(t,r).finally(()=>e.removeEventListener("abort",o))}):n}function Ti(){return{datasourceChanged:!1,filterChanged:!1,needsCellRefresh:!1,needsColumnRebuild:!1,needsHeaderRebuild:!1,needsPoolRebuild:!1,needsRelayout:!1,needsRowRebuild:!1,needsStateLoad:!1,needsSummaryRefresh:!1,needsFeatureReload:!1}}function b(n,e){return Object.prototype.hasOwnProperty.call(n,e)}function x(n,e,t=!1){if(!(typeof n!="number"||!Number.isFinite(n)||n<e))return t?Math.floor(n):n}function pe(n,e,t,r=!1){let o=x(n,t,r);return o===void 0||o===e?void 0:o}var jt=class{constructor(e){this.core=e;this.measureCanvas=null;this.asyncTransactions=[];this.asyncTransactionTimer=null}connectPublicApi(e){if(this.publicApi)throw new Error("[MachTable] Grid API is already connected.");this.publicApi=e}batch(e){let t=this.publicApi;if(!t)throw new Error("[MachTable] Grid API is not connected.");return this.core.batchUpdates(()=>e(t))}flushUpdates(){this.core.updateScheduler.flush()}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.requestUpdate({data:!0})))}applyTransaction(e){if(this.core.isDestroyed()||this.core.rowModel.isInfinite)return;let t=this.core.rowModel.applyTransaction(e);this.requestTransactionRefresh(t)}applyTransactionAsync(e,t={}){if(this.core.isDestroyed()||this.core.rowModel.isInfinite)return Promise.resolve();if(t.signal?.aborted)return Promise.reject(fe(t.signal));let r=new Promise((o,i)=>{let s={transaction:e,resolve:o,reject:i,signal:t.signal,aborted:!1};t.signal&&(s.onAbort=()=>{s.aborted||(s.aborted=!0,i(fe(t.signal)))},t.signal.addEventListener("abort",s.onAbort,{once:!0})),this.asyncTransactions.push(s)});return this.asyncTransactionTimer==null&&(this.asyncTransactionTimer=setTimeout(()=>this.flushAsyncTransactions(),this.core.options.asyncTransactionWaitMillis)),r}flushAsyncTransactions(){this.asyncTransactionTimer!=null&&clearTimeout(this.asyncTransactionTimer),this.asyncTransactionTimer=null;let e=this.asyncTransactions;this.asyncTransactions=[];let t=e.filter(r=>!r.aborted).map(r=>r.transaction);if(t.length>0&&!this.core.isDestroyed()&&!this.core.rowModel.isInfinite){let r=this.core.rowModel.applyTransactions(t);this.requestTransactionRefresh(r)}for(let r of e)r.signal&&r.onAbort&&r.signal.removeEventListener("abort",r.onAbort),r.aborted||r.resolve()}requestTransactionRefresh(e){if(e.pipelineChanged){this.core.requestUpdate({data:!0});return}e.updatedRowIds.length!==0&&this.core.requestUpdate({cells:{rowIds:e.updatedRowIds},summary:!0,overlays:!0})}getColumnDefs(){return this.core.columnModel.getColumnDefs()}setColumnDefs(e){this.core.isDestroyed()||(this.core.options.columnDefs=e??[],this.core.columnModel.setColumnDefs(e),this.core.loadPersistedGridState(),this.core.onColumnsStructureChanged(),this.core.rowModel.isInfinite?this.core.rowModel.onServerParamsChanged():(this.core.rowModel.refreshPipeline(),this.core.requestUpdate({data:!0})))}getColumnState(){return this.core.columnModel.getColumnState()}setColumnState(e){this.core.isDestroyed()||(this.core.columnModel.applyColumnState(e),this.core.onColumnsStructureChanged())}resetColumnState(){this.core.isDestroyed()||(this.core.columnModel.resetColumnState(),this.core.onColumnsStructureChanged())}setColumnVisibility(e,t){this.core.isDestroyed()||(this.core.columnModel.setColumnVisibility(e,t),this.core.onColumnsStructureChanged(),this.core.emit("columnVisibilityChanged",{colId:e,visible:t}))}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())}setColumnWidth(e,t){if(this.core.isDestroyed())return!1;let r=this.core.columnModel.getColumn(e);return!r||!this.core.columnModel.setColumnWidth(r,t)?!1:(this.core.relayoutColumns(),this.core.commitColumnWidths([r]),!0)}sizeColumnsToFit(e){if(this.core.isDestroyed())return;let t=this.core.columnModel.getOrderedVisible();if(t.length===0)return;let r=e??this.core.skeleton.measureViewportWidth();if(r<=0)return;let o=t.reduce((s,a)=>s+a.currentWidth,0);if(o<=0)return;let i=t.filter(s=>this.core.columnModel.setColumnWidth(s,Math.max(30,Math.floor(s.currentWidth*r/o))));this.core.relayoutColumns(),this.core.commitColumnWidths(i)}autoSizeColumn(e,t=!1){if(this.core.isDestroyed())return;let r=this.core.columnModel.getColumn(e);r&&this.autoSizeColumnInternal(r,t)&&(this.core.relayoutColumns(),this.core.commitColumnWidths([r]))}autoSizeColumnInternal(e,t){if(e.hasCheckbox||e.isDetailToggle)return this.core.columnModel.setColumnWidth(e,e.isDetailToggle?38:46);this.measureCanvas??(this.measureCanvas=document.createElement("canvas"));let r=this.measureCanvas.getContext("2d");if(!r)return!1;let o=window.getComputedStyle(this.core.skeleton.root);r.font=`${o.fontStyle} ${o.fontWeight} ${o.fontSize} ${o.fontFamily}`;let i=0,s=c=>{if(!c)return;let u=r.measureText(c).width;u>i&&(i=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(H(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(i)+d)}autoSizeAllColumns(e){if(this.core.isDestroyed())return;let t=[];for(let r of this.core.columnModel.getOrderedVisible())this.autoSizeColumnInternal(r,e??!1)&&t.push(r);t.length>0&&(this.core.relayoutColumns(),this.core.commitColumnWidths(t))}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.emitFilterChanged(),this.core.rowModel.isInfinite){this.core.rowModel.onServerParamsChanged();return}this.core.rowModel.refreshPipeline(),this.core.requestUpdate({data:!0})}}getAdvancedFilterModel(){return this.core.rowModel.getAdvancedFilterModel()}setAdvancedFilterModel(e){if(!(this.core.isDestroyed()||!this.core.rowModel.setAdvancedFilterModel(e))){if(this.emitFilterChanged(),this.core.rowModel.isInfinite){this.core.rowModel.onServerParamsChanged();return}this.core.rowModel.refreshPipeline(),this.core.requestUpdate({data:!0})}}emitFilterChanged(){this.core.emit("filterChanged",{filterModel:this.core.rowModel.getFilterModel(),advancedFilterModel:this.core.rowModel.getAdvancedFilterModel()})}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,r=!0){this.core.selectionService.selectNodeById(e,t,r)}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)}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 r=this.core.options.resolveRowId,o=[];for(let i of e){let s=r?this.core.rowModel.getNodeById(this.core.rowModel.resolveRowId(i,-1,`__missing_selection_${this.core.nextId()}`)):this.core.rowModel.getAllNodes().find(a=>a.data===i);s&&o.push({node:s,selected:!0})}o.length>0?this.core.selectionService.applySelectionPublic(o,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 saveEditingChanges(e,t){let r=jr(this.core.changeTracker.getChanges(),t);if(r.length===0)return{submitted:[],saved:[],failures:[],conflicts:[]};let o=Yr(r,await e(r));return this.core.isDestroyed()||this.core.changeTracker.acknowledge(o.saved),o}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()}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(e={}){return this.core.isDestroyed()?Promise.resolve():e.signal?.aborted?Promise.reject(fe(e.signal)):this.core.rowModel.isInfinite?co(this.core.rowModel.reloadInfinite(e.signal),e.signal):(this.core.rowModel.setRowData(this.core.options.rowData),this.core.requestUpdate({data:!0}),Promise.resolve())}ensureRowsLoaded(e,t,r={}){return this.core.isDestroyed()?Promise.resolve():co(this.core.rowModel.ensureRowsLoaded(e,t,r.signal),r.signal)}purgeDatasourceCache(){this.core.isDestroyed()||this.core.rowModel.purgeDatasourceCache()}getDatasourceCacheSnapshot(){return this.core.rowModel.getDatasourceCacheSnapshot()}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 r=Fe(e,t.separator??",");if(r.length===0)return!1;let o=r[t.headerRowIndex??0]??[],i=r.slice((t.headerRowIndex??0)+1).filter(c=>c.some(u=>u!=="")),s=t.mode??"replace";if(s==="paste")return this.core.pasteText(ee(i,!1),0,0),!0;let a=this.core.columnModel.getOrderedVisible().filter(c=>c.colDef.field),l=this.resolveCsvFieldOrder(o,a),d=this.buildCsvRecords(i,l,t);return s==="append"?this.core.rowModel.applyTransaction({add:d}):this.core.rowModel.setRowData(d),this.core.requestUpdate({data:!0}),!0}resolveCsvFieldOrder(e,t){let r=new Map;for(let i of t){let s=i.colDef.field;s&&(r.set(String(i.colDef.headerName??s),s),r.set(s,s))}e.length>0&&(e[0]=e[0].replace(/^\uFEFF/,""));let o=e.map((i,s)=>({field:r.get(String(i).trim())??null,index:s})).filter(i=>i.field!=null);return o.length>0?o:t.map((i,s)=>({field:i.colDef.field,index:s}))}buildCsvRecords(e,t,r){return e.map((o,i)=>{let s={};return t.forEach(({field:a,index:l})=>{let d=o[l];if(d===void 0)return;let c=this.parseCsvValue(d,a,i,l,r);K(s,a,c)||this.core.reportError(new Error(`Unsafe CSV field: ${a}`),"csv.import",{field:a})}),s})}parseCsvValue(e,t,r,o,i){if(i.parseValue)try{return i.parseValue({value:e,field:t,rowIndex:r,columnIndex:o})}catch(l){return this.core.reportError(l,"csv.parseValue",{field:t,rowIndex:r,columnIndex:o}),e}if(e==="")return null;let s=/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(e),a=/^[+-]?0\d/.test(e);return i.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 r=this.core.columnModel.getOrderedVisible().filter(d=>!d.hasCheckbox&&!d.isDetailToggle&&!d.colDef.rowDrag),o=this.core.rowModel.getPipelineRows().filter(d=>!d.isDetail&&!d.isGroup),s=e.includeHeader!==!1?`<tr>${r.map(d=>`<th>${q(d.colDef.headerName??d.colDef.field??d.id)}</th>`).join("")}</tr>`:"",a=o.map(d=>`<tr>${r.map(c=>{let u=H(this.core,d,c);return`<td>${q(u)}</td>`}).join("")}</tr>`).join(""),l=`<!doctype html><html><head><meta charset="utf-8"><title>${q(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>${q(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){return this.core.editingService.stopAsync(e??!1)}refreshCells(e){let t=e==null||e.rowIds==null&&e.rowIndexes==null&&e.columns==null;this.core.requestUpdate({cells:e??!0,pinned:e?.includePinned??t,summary:t})}getOption(e){return this.core.options[e]}updateOptions(e){this.core.isDestroyed()||(this.core.checkWarnings(e),e=Wr(e),Object.keys(e).length!==0&&this.core.batchUpdates(()=>{let t=Ti(),r=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,r)}))}updateSourceOptions(e,t){let r=this.core.options;b(e,"columnDefs")&&e.columnDefs!==r.columnDefs&&(r.columnDefs=Array.isArray(e.columnDefs)?e.columnDefs:[],t.needsColumnRebuild=!0,t.needsRowRebuild=!0),b(e,"rowData")&&(r.rowData=Array.isArray(e.rowData)?e.rowData:[],t.needsRowRebuild=!0),b(e,"initialState")&&e.initialState&&(r.initialState=e.initialState,t.stateToApply=e.initialState),this.updateEventHandlers(e)}updateEventHandlers(e){for(let t of V){let r=`on${t.charAt(0).toUpperCase()}${t.slice(1)}`;b(e,r)&&Object.assign(this.core.options,{[r]:e[r]})}}updateDimensionOptions(e,t){let r=this.core.options,o=pe(e.rowHeight,r.rowHeight,1),i=pe(e.headerHeight,r.headerHeight,1),s=pe(e.rowBuffer,r.rowBuffer,0,!0),a=pe(e.detailRowHeight,r.detailRowHeight,1);o!==void 0&&(r.rowHeight=o,t.needsRelayout=!0),i!==void 0&&(r.headerHeight=i,t.needsRelayout=!0,t.needsHeaderRebuild=!0),s!==void 0&&(r.rowBuffer=s,t.needsRelayout=!0),e.columnLayout!=null&&e.columnLayout!==r.columnLayout&&(r.columnLayout=e.columnLayout==="fit"?"fit":"normal",t.needsRelayout=!0),e.domLayout!=null&&e.domLayout!==r.domLayout&&(r.domLayout=e.domLayout==="autoHeight"?"autoHeight":"normal",this.core.skeleton.applyDomLayout(r.domLayout),t.needsPoolRebuild=!0),e.multiSort!=null&&(r.multiSort=e.multiSort),a!==void 0&&(r.detailRowHeight=a,this.core.bodyRenderer.applyContainerSizes(),this.core.bodyRenderer.updateRange(!0))}updateEditingOptions(e,t){let r=this.core.options;e.editType!=null&&e.editType!==r.editType&&(this.core.editingService.stop(!0),r.editType=e.editType==="fullRow"?"fullRow":"cell",t.needsCellRefresh=!0),e.editableIndicator!=null&&e.editableIndicator!==r.editableIndicator&&(r.editableIndicator=e.editableIndicator==="always"||e.editableIndicator==="none"?e.editableIndicator:"hover",t.needsCellRefresh=!0),b(e,"rowEditValidator")&&(r.rowEditValidator=e.rowEditValidator),e.singleClickEdit!=null&&(r.singleClickEdit=e.singleClickEdit),e.manualSorting!=null&&(r.manualSorting=e.manualSorting),e.manualFiltering!=null&&(r.manualFiltering=e.manualFiltering)}updateInteractionOptions(e,t){let r=this.core.options;typeof e.enableColumnResize=="boolean"&&e.enableColumnResize!==r.enableColumnResize&&(this.core.resizeService.cancelResize(),r.enableColumnResize=e.enableColumnResize,t.needsHeaderRebuild=!0),e.locale!=null&&e.locale!==r.locale&&(r.locale=e.locale,t.needsHeaderRebuild=!0,t.needsCellRefresh=!0,this.core.paginationBar.rebuild(),this.core.statusBarService.rebuild()),e.indexOffset!=null&&e.indexOffset!==r.indexOffset&&(r.indexOffset=e.indexOffset,t.needsCellRefresh=!0),e.showSummary!=null&&e.showSummary!==r.showSummary&&(r.showSummary=e.showSummary,t.needsSummaryRefresh=!0,t.needsRelayout=!0);let o=pe(e.undoStackSize,r.undoStackSize,0,!0);o!==void 0&&(r.undoStackSize=o,this.core.undoService.trimToSize());let i=x(e.asyncTransactionWaitMillis,0,!0);i!==void 0&&(r.asyncTransactionWaitMillis=i),this.updateDynamicRowHeight(e,t),this.updateRangeAndFeedbackOptions(e)}updateDynamicRowHeight(e,t){if(!b(e,"getRowHeight"))return;let r=this.core.options.getRowHeight!==e.getRowHeight;this.core.options.getRowHeight=e.getRowHeight,r&&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 r=x(e.tooltipShowDelay,0);r!==void 0&&(t.tooltipShowDelay=r),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,r=e.pagination,o=r!==!1&&t.datasource==null;o!==t.paginationEnabled&&this.core.rowModel.setPaginationEnabled(o),typeof r=="object"&&r&&this.updatePaginationConfig(r),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 r=x(e.page,1,!0),o=x(e.total,0,!0);r!==void 0&&(t.paginationPage=r),o!==void 0&&(t.paginationTotal=o),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 r=this.core.options;e.stripedRows!=null&&e.stripedRows!==r.stripedRows&&(r.stripedRows=e.stripedRows,this.core.skeleton.setStriped(e.stripedRows)),e.showCellBorders!=null&&e.showCellBorders!==r.showCellBorders&&(r.showCellBorders=e.showCellBorders,this.core.skeleton.setCellBorders(e.showCellBorders))}updateWatermarkAndStatus(e,t){let r=this.core.options;e.watermark!==void 0&&(r.watermarkEnabled=e.watermark!=null&&e.watermark!==!1,r.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")&&(r.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:r}=e;if(r==null||!b(se,r)||r===this.core.options.size)return;let o=se[r];this.core.options.size=r,this.core.options.rowHeight=e.rowHeight??o.rowHeight,this.core.options.headerHeight=e.headerHeight??o.headerHeight,this.core.skeleton.applySize(r),t.needsRelayout=!0,t.needsHeaderRebuild=!0}updateAccessibilityOptions(e,t){let r=this.core.options;e.suppressCellFocus!=null&&(r.suppressCellFocus=e.suppressCellFocus),e.suppressRowHoverHighlight!=null&&(r.suppressRowHoverHighlight=e.suppressRowHoverHighlight),e.suppressNoRowsOverlay!=null&&(r.suppressNoRowsOverlay=e.suppressNoRowsOverlay),e.suppressHeaderFocus!=null&&e.suppressHeaderFocus!==r.suppressHeaderFocus&&(r.suppressHeaderFocus=e.suppressHeaderFocus,t.needsHeaderRebuild=!0),this.updateAriaLabels(e),this.updateOverlayOptions(e)}updateAriaLabels(e){let t=this.core.options,r=!1;b(e,"ariaLabel")&&(t.ariaLabel=e.ariaLabel??"MachTable data grid",r=!0),b(e,"ariaLabelledBy")&&(t.ariaLabelledBy=e.ariaLabelledBy??"",r=!0),b(e,"ariaDescribedBy")&&(t.ariaDescribedBy=e.ariaDescribedBy??"",r=!0),r&&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 r=this.core.options;e.autoCheckedChildren!=null&&(r.autoCheckedChildren=e.autoCheckedChildren),e.defaultExpandAll!=null&&e.defaultExpandAll!==r.defaultExpandAll&&(r.defaultExpandAll=e.defaultExpandAll,t.needsRowRebuild=!0),b(e,"advancedFilterModel")&&(t.filterChanged=this.core.rowModel.setAdvancedFilterModel(e.advancedFilterModel)||t.filterChanged),e.applyRowDrag!=null&&(r.applyRowDrag=e.applyRowDrag),e.suppressWarnings!=null&&(r.suppressWarnings=e.suppressWarnings)}updateSelectionAndColumns(e,t){let r=this.core.options;if(e.rowSelection!=null&&e.rowSelection!==r.rowSelection&&(r.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!==r.defaultColDef&&(r.defaultColDef={...It,...e.defaultColDef},t.needsColumnRebuild=!0),b(e,"columnTypes")&&e.columnTypes!==r.columnTypes&&(r.columnTypes=e.columnTypes??{},t.needsColumnRebuild=!0),b(e,"rowKey")){r.rowKey=e.rowKey;let o=e.rowKey;r.resolveRowId=o?({data:i})=>kt(o,i):void 0,t.needsRowRebuild=!0}}updateHierarchyOptions(e,t){let r=this.core.options;e.masterDetail!=null&&e.masterDetail!==r.masterDetail&&(r.masterDetail=e.masterDetail,t.needsColumnRebuild=!0,t.needsRowRebuild=!0),e.detailToggleColumn!=null&&e.detailToggleColumn!==r.detailToggleColumn&&(r.detailToggleColumn=e.detailToggleColumn,t.needsColumnRebuild=!0),e.treeData!=null&&e.treeData!==r.treeData&&(r.treeData=e.treeData,t.needsRowRebuild=!0,t.needsColumnRebuild=!0,this.core.refreshAriaState()),e.childrenKey!=null&&e.childrenKey!==r.childrenKey&&(r.childrenKey=e.childrenKey,t.needsRowRebuild=!0),b(e,"isTreeRowExpandable")&&(r.isTreeRowExpandable=e.isTreeRowExpandable,t.needsCellRefresh=!0),b(e,"loadTreeChildren")&&(r.loadTreeChildren=e.loadTreeChildren,t.needsCellRefresh=!0)}updateExtensionOptions(e,t){let r=this.core.options;b(e,"aggFuncs")&&(r.aggFuncs=e.aggFuncs,t.needsRowRebuild=!0),b(e,"components")&&(r.components=e.components,t.needsCellRefresh=!0),b(e,"actionPolicy")&&(r.actionPolicy=e.actionPolicy,t.needsCellRefresh=!0),b(e,"features")&&(r.features=Array.isArray(e.features)?e.features:[],t.needsFeatureReload=!0),this.updateProcessorOptions(e,t),this.updatePersistenceOptions(e,t)}updateProcessorOptions(e,t){let r=this.core.options;b(e,"dataProcessor")&&e.dataProcessor!==r.dataProcessor&&(r.dataProcessor?.destroy?.(),r.dataProcessor=e.dataProcessor,t.needsRowRebuild=!0);let o=x(e.dataProcessorMinRows,1,!0);o!==void 0&&o!==r.dataProcessorMinRows&&(r.dataProcessorMinRows=o,t.needsRowRebuild=!0)}updatePersistenceOptions(e,t){let r=this.core.options;if(!b(e,"persistence"))return;let o=e.persistence;!o||typeof o.key!="string"||!o.key.trim()?r.persistence=null:r.persistence={key:o.key.trim(),debounceMs:x(o.debounceMs,0,!0)??160,...o.sections?{sections:[...new Set(o.sections)]}:{},...o.store?{store:o.store}:{}},t.needsStateLoad=!0}updateDatasourceOptions(e,t){this.updateDatasourceTuning(e,t),this.updateDatasourceMode(e,t),this.updateDatasourceReference(e,t),this.updatePinnedRows(e)}updateDatasourceTuning(e,t){let r=this.core.options,o=x(e.blockSize,1,!0),i=x(e.infiniteBufferRows,0,!0),s=x(e.maxBlocksInCache,1,!0),a=x(e.datasourceMaxConcurrentRequests,1,!0),l=x(e.blockPrefetch,0,!0),d=x(e.datasourceRetryCount,0,!0),c=x(e.datasourceRetryDelay,0,!0),u=x(e.datasourceRetryJitter,0);o!==void 0&&o!==r.blockSize&&(r.blockSize=o,t.datasourceChanged=t.datasourceChanged||r.datasourceMode==="block"),i!==void 0&&(r.infiniteBufferRows=i),s!==void 0&&s!==r.maxBlocksInCache&&(r.maxBlocksInCache=s,t.datasourceChanged=t.datasourceChanged||r.datasourceMode==="block"),a!==void 0&&a!==r.datasourceMaxConcurrentRequests&&(r.datasourceMaxConcurrentRequests=a,t.datasourceChanged=t.datasourceChanged||r.datasourceMode==="block"),l!==void 0&&(r.blockPrefetch=l),d!==void 0&&(r.datasourceRetryCount=d),c!==void 0&&(r.datasourceRetryDelay=c),u!==void 0&&(r.datasourceRetryJitter=Math.min(1,u))}updateDatasourceMode(e,t){let r=this.core.options;if(b(e,"datasourceMode")){let o=e.datasourceMode==="block"?"block":"sequential";o!==r.datasourceMode&&(r.datasourceMode=o,t.datasourceChanged=!0)}if(b(e,"datasourceRowCount")){let o=e.datasourceRowCount==null?null:x(e.datasourceRowCount,0,!0)??null;o!==r.datasourceRowCount&&(r.datasourceRowCount=o,t.datasourceChanged=!0)}}updateDatasourceReference(e,t){let r=this.core.options;b(e,"datasource")&&e.datasource!==r.datasource&&(r.datasource=e.datasource,r.paginationEnabled=e.datasource==null&&r.paginationEnabled,t.datasourceChanged=!0,this.core.paginationBar.rebuild()),b(e,"detailRowRenderer")&&(r.detailRowRenderer=e.detailRowRenderer,t.needsCellRefresh=!0),b(e,"isRowExpandable")&&(r.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,r){let o=this.core.options;t.needsColumnRebuild&&(this.core.columnModel.setColumnDefs(o.columnDefs),this.core.onColumnsStructureChanged(),t.needsHeaderRebuild=!1,t.needsPoolRebuild=!1),t.needsStateLoad&&(this.core.loadPersistedGridState(),this.core.onColumnsStructureChanged()),t.needsFeatureReload&&this.core.setFeatures(o.features),this.applyRowUpdateEffect(t),t.filterChanged&&(this.emitFilterChanged(),!t.datasourceChanged&&!t.needsRowRebuild&&(this.core.rowModel.isInfinite?this.core.rowModel.onServerParamsChanged():(this.core.rowModel.refreshPipeline(),this.core.requestUpdate({data:!0})))),t.needsRelayout&&this.core.skeleton.updateHeights(o.rowHeight,o.headerHeight),e.columnMenu!=null&&e.columnMenu!==r&&(t.needsHeaderRebuild=!0),t.stateToApply&&this.applyState(t.stateToApply),this.core.requestUpdate({layout:t.needsRelayout,header:t.needsHeaderRebuild,pool:t.needsPoolRebuild,cells:t.needsCellRefresh&&!t.needsPoolRebuild?!0:void 0,summary:t.needsSummaryRefresh,overlays:!0})}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.requestUpdate({data:!0})}}getDataAsCsv(e={}){let t=this.core.columnModel.getOrderedVisible().filter(o=>!o.hasCheckbox&&!o.isDetailToggle);if(e.headersOnly)return Nt({getHeaderLabels:()=>t.map(o=>o.colDef.headerName??o.colDef.field??o.id),getRowValues:()=>[]},e);let r=e.onlySelected?this.core.selectionService.getSelectedNodes().slice().sort((o,i)=>o.rowIndex-i.rowIndex):e.onlyAllDisplayed?this.core.rowModel.getDisplayedRows().filter(o=>!o.isDetail&&!o.isGroup):this.core.rowModel.getPipelineRows().filter(o=>!o.isDetail&&!o.isGroup);return Nt({getHeaderLabels:()=>t.map(o=>o.colDef.headerName??o.colDef.field??o.id),getRowValues:()=>r.map(o=>t.map(i=>{let s=this.core.getCellValue(o,i);return typeof s=="number"?s:H(this.core,o,i)}))},e)}getState(){return{version:2,columns:this.getColumnState(),sortModel:this.getSortModel(),filterModel:this.getFilterModel(),advancedFilterModel:this.getAdvancedFilterModel(),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())return;let r=F(e);if(!r){this.core.reportError(new TypeError("[MachTable] GridState must use the current version 2 schema."),"gridState.apply");return}let o=["columns","sort","filter","pagination","selection","expansion"],i=new Set(t.sections??o);this.core.editingService.stop(!0),this.restoreStateSections(r,i),this.refreshAfterStateRestore(r,i),t.emitEvents!==!1&&this.emitStateEvents(i)}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.setAdvancedFilterModel(e.advancedFilterModel),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.requestUpdate({data:!0})),this.core.headerRenderer.refreshSortIndicators(),this.core.headerRenderer.refreshFilterIcons(),t.has("selection")&&this.core.selectionService.restoreSelection(e.selectedRowIds??[])}emitStateEvents(e){e.has("sort")&&this.core.emit("sortChanged",{sortModel:this.getSortModel()}),e.has("filter")&&this.emitFilterChanged(),e.has("pagination")&&this.core.emit("paginationChanged",{page:this.getPage(),pageSize:this.getPageSize(),pageCount:this.getPageCount(),total:this.getTotalRowCount()})}getDiagnostics(){return this.core.getDiagnostics()}getPerformanceSnapshot(){return this.core.performanceMonitor.snapshot()}resetPerformanceMetrics(){this.core.performanceMonitor.reset()}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()}on(e,t){return this.core.eventBus.on(e,t)}destroy(){this.asyncTransactionTimer!=null&&clearTimeout(this.asyncTransactionTimer),this.asyncTransactionTimer=null;let e=this.asyncTransactions;this.asyncTransactions=[];for(let t of e)t.signal&&t.onAbort&&t.signal.removeEventListener("abort",t.onAbort),t.aborted||t.resolve();this.core.destroy()}isDestroyed(){return this.core.isDestroyed()}};function uo(n){let e=new jt(n),t,r,o,i,s,a,l,d,c,u,h,p,m={get rows(){return t??(t=Object.freeze(Jr(e)))},get columns(){return r??(r=Object.freeze(Qr(e)))},get selection(){return o??(o=Object.freeze(Zr(e)))},get editing(){return i??(i=Object.freeze(eo(e)))},get filtering(){return s??(s=Object.freeze(oo(e)))},get sorting(){return a??(a=Object.freeze(no(e)))},get pagination(){return l??(l=Object.freeze(io(e)))},get hierarchy(){return d??(d=Object.freeze(so(e)))},get view(){return c??(c=Object.freeze(ao(e)))},get state(){return u??(u=Object.freeze(to(e)))},get io(){return h??(h=Object.freeze(lo(e)))},get diagnostics(){return p??(p=Object.freeze(ro(e)))},batch:g=>e.batch(g),whenReady:()=>e.whenReady(),getOption:g=>e.getOption(g),updateOptions:g=>e.updateOptions(g),on:(g,v)=>e.on(g,v),destroy:()=>e.destroy(),isDestroyed:()=>e.isDestroyed()};return e.connectPublicApi(m),Object.freeze(m)}var Di=["compact","normal","large"],it=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 r=["mach-root",`mach-size--${t.size}`];t.stripedRows&&r.push("mach-striped"),t.showCellBorders&&r.push("mach-cell-borders"),t.domLayout==="autoHeight"&&r.push("mach-dom-layout--auto-height"),this.root=f("div",r.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=f("div","mach-header"),this.headerEl.setAttribute("role","rowgroup"),this.headerRows={left:[],center:[],right:[]},this.headerPanes={},this.headerRowContainers={};for(let o of["left","center","right"]){let i=f("div",`mach-pane mach-pane--${o} mach-header-pane`),s=f("div","mach-header-rows");if(o==="center"){let a=f("div","mach-header-viewport");a.appendChild(s),i.appendChild(a)}else i.appendChild(s);this.headerEl.appendChild(i),this.headerPanes[o]=i,this.headerRowContainers[o]=s}this.setHeaderRowCount(1),this.bodyEl=f("div","mach-body"),this.pinnedTopEl=f("div","mach-pinned-rows mach-pinned-rows--top"),this.pinnedTopEl.style.display="none",this.pinnedBottomEl=f("div","mach-pinned-rows mach-pinned-rows--bottom"),this.pinnedBottomEl.style.display="none",this.bodyViewports={},this.rowContainers={},this.bodyPanes={};for(let o of["left","center","right"]){let i=f("div",`mach-pane mach-pane--${o} mach-body-pane`),s=f("div",`mach-body-viewport${o==="center"?" mach-body-viewport--scroll":""}`),a=f("div","mach-row-container");s.appendChild(a),i.appendChild(s),this.bodyEl.appendChild(i),this.bodyPanes[o]=i,this.bodyViewports[o]=s,this.rowContainers[o]=a}this.overlayWrapper=f("div","mach-overlay"),this.overlayWrapper.style.display="none",this.overlayWrapper.setAttribute("role","status"),this.overlayWrapper.setAttribute("aria-live","polite"),this.overlayContent=f("div","mach-overlay-content"),this.overlayWrapper.appendChild(this.overlayContent),this.infiniteLoadingEl=f("div","mach-infinite-loading"),this.infiniteLoadingEl.style.display="none",this.infiniteLoadingEl.appendChild(f("div","mach-spinner")),this.infiniteLoadingText=f("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 r=this.headerRowContainers[t],o=this.headerRows[t];for(;o.length<e;){let i=f("div","mach-header-row");i.setAttribute("role","row"),i.setAttribute("aria-rowindex",String(o.length+1)),i.style.top=`${o.length*this.core.options.headerHeight}px`,i.style.height=`${this.core.options.headerHeight}px`,r.appendChild(i),o.push(i)}for(;o.length>e;)o.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((r,o)=>{r.style.top=`${o*this.core.options.headerHeight}px`,r.style.height=`${this.core.options.headerHeight}px`})}setPaneWidths(e,t){this.applyPaneWidth("left",e),this.applyPaneWidth("right",t)}applyPaneWidth(e,t){let r=this.headerPanes[e],o=this.bodyPanes[e];r.style.width=`${t}px`,o.style.width=`${t}px`;let i=t<=0;r.classList.toggle("mach-pane--hidden",i),o.classList.toggle("mach-pane--hidden",i)}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 Di)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 r=window.matchMedia("(prefers-color-scheme: dark)"),o=()=>this.root.classList.toggle("mach-theme-dark",r.matches);typeof r.addEventListener=="function"?(r.addEventListener("change",o),this.themeUnsub=()=>r.removeEventListener("change",o)):typeof r.addListener=="function"&&(r.addListener(o),this.themeUnsub=()=>r.removeListener(o))}}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))}resolveOverlayContent(e){try{return typeof e=="function"?e():e}catch(t){return this.core.reportError(t,"overlayTemplate"),""}}renderOverlayContent(e,t,r){if(typeof t=="object"&&t!=null&&"el"in t){this.overlayContent.appendChild(t.el),this.overlayCleanup=t.destroy??null;return}if(t instanceof HTMLElement){this.overlayContent.appendChild(t);return}if(t){r?this.overlayContent.innerHTML=t:this.overlayContent.textContent=t;return}if(e!=="loading")return;let o=f("div","mach-spinner");o.setAttribute("aria-label","loading"),this.overlayContent.appendChild(o)}showOverlay(e,t,r=!1){this.currentOverlay===e&&this.currentOverlayContent===t&&this.currentOverlayAllowsHtml===r||(this.currentOverlay=e,this.currentOverlayContent=t,this.currentOverlayAllowsHtml=r,this.cleanupOverlayContent(),this.overlayContent.replaceChildren(),this.renderOverlayContent(e,this.resolveOverlayContent(t),r),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 Si={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 st(n){if(!n)return"";if(n.type==="set")return`\u5DF2\u9009 ${n.values.length} \u9879`;let e=[];for(let r of n.conditions){let o=Si[r.match]??r.match,i=r.value,s="value2"in r?r.value2:void 0;r.match==="blank"||r.match==="notBlank"?e.push(o):r.match==="inRange"&&i!=null?e.push(`${o} ${i}~${s??i}`):i!=null&&String(i)!==""?e.push(`${o} ${i}`):e.push(o)}let t=n.operator==="or"?" \u6216 ":" \u4E14 ";return e.join(t)}function ho(n,e){let t=0,r=n.length;for(;t<r;){let o=t+r>>1;n[o]<=e?t=o+1:r=o}return t}function Ei(n,e){let t=0,r=n.length;for(;t<r;){let o=t+r>>1;n[o]<e?t=o+1:r=o}return t}var re=class{constructor(){this.offsets=new Float64Array(1);this.signature=""}update(e){let t=e.map(r=>`${r.id}:${r.currentWidth}`).join("|");if(t===this.signature)return!1;this.signature=t,this.offsets=new Float64Array(e.length+1);for(let r=0;r<e.length;r++)this.offsets[r+1]=this.offsets[r]+e[r].currentWidth;return!0}totalWidth(){return this.offsets[this.offsets.length-1]??0}offsetAt(e){let t=Math.max(0,Math.min(Math.trunc(e),this.offsets.length-1));return this.offsets[t]??0}indexAt(e){let t=Math.max(0,this.offsets.length-1);return t===0?-1:Math.min(t-1,Math.max(0,ho(this.offsets,Math.max(0,e))-1))}visibleRange(e,t,r=2){let o=Math.max(0,this.offsets.length-1);if(o===0||t<=0||this.totalWidth()<=t)return{first:0,lastExcl:o};let i=Math.max(0,e),s=i+t,a=Math.max(0,ho(this.offsets,i)-1),l=Math.min(o,Ei(this.offsets,s));return{first:Math.max(0,a-r),lastExcl:Math.min(o,l+r)}}};var xi=".mach-header-resize, .mach-filter-btn, .mach-menu-btn, .mach-select-all";function Yt(n){return n instanceof HTMLElement&&n.closest(xi)!=null}function Xt(n){return n==="ArrowLeft"||n==="ArrowRight"}var at=class{constructor(e){this.core=e;this.leafCells=[];this.groupCells=[];this.paneTrees={left:[],center:[],right:[]};this.columnViewport=new re;this.centerFirst=0;this.centerLastExcl=Number.MAX_SAFE_INTEGER}build(){this.updateColumnWindowState(),this.core.resizeService.cancelResize();for(let l of this.leafCells){let d=zt(l.el);if(d)try{d()}catch(c){this.core.reportError(c,"headerComponent.destroy",{colId:l.column.id})}}this.leafCells=[],this.groupCells=[];let e=this.core.columnModel.getHeaderDepth();this.core.skeleton.setHeaderRowCount(e);let t=l=>l.pinned==="left"?"left":l.pinned==="right"?"right":"center",r=(l,d,c)=>{let u=[];for(let h of l)if(h instanceof U){let p=r(h.children,d+1,c);p.length>0&&u.push({group:h,level:d,children:p})}else!h.hide&&t(h)===c&&u.push({column:h,level:d,children:[]});return u},o=this.core.columnModel.getRootChildren(),i=this.core.columnModel.getPaneColumns("center"),s=new Set(i.slice(this.centerFirst,this.centerLastExcl));for(let l of["left","center","right"]){let d=r(o,0,l);this.paneTrees[l]=l==="center"?this.filterTreeColumns(d,s):d}let a=this.core.options.headerHeight;for(let l of["left","center","right"]){let d=this.core.skeleton.headerRows[l];for(let u of d)u.textContent="";let c=u=>{let h=d[Math.min(u.level,d.length-1)];if(u.column){let p=this.createLeafCell(u.column,e-u.level,a);h.appendChild(p.el),this.leafCells.push(p)}else if(u.group){let p=this.createGroupCell(u.group);h.appendChild(p),this.groupCells.push({group:u.group,el:p})}for(let p of u.children)c(p)};for(let u of this.paneTrees[l])c(u)}this.core.options.suppressHeaderFocus||this.leafCells.forEach((l,d)=>{l.el.tabIndex=d===0?0:-1}),this.applyLayout(),this.refreshSortIndicators(),this.refreshFilterIcons(),this.refreshSelectAllCheckbox()}updateColumnWindow(){let e=this.centerFirst,t=this.centerLastExcl;this.updateColumnWindowState(),(e!==this.centerFirst||t!==this.centerLastExcl)&&this.build()}updateColumnWindowState(){let e=this.core.columnModel.getPaneColumns("center"),t=this.core.skeleton.bodyViewports.center;this.columnViewport.update(e);let r=e.length>20?this.columnViewport.visibleRange(t.scrollLeft,t.clientWidth,2):{first:0,lastExcl:e.length};this.centerFirst=r.first,this.centerLastExcl=r.lastExcl}filterTreeColumns(e,t){let r=[];for(let o of e){if(o.column){t.has(o.column)&&r.push(o);continue}let i=this.filterTreeColumns(o.children,t);i.length>0&&r.push({...o,children:i})}return r}createLeafCell(e,t,r){let o=f("div","mach-header-cell mach-header-cell--leaf");o.dataset.colId=e.id,o.setAttribute("role","columnheader"),o.style.height=`${t*r}px`,this.applyLeafPresentation(o,e),this.attachHeaderFocus(o,e);let i=this.appendSelectAll(o,e);this.appendHeaderContent(o,e);let s=f("span","mach-sort-indicator");o.appendChild(s);let{filterBtn:a,filterTagEl:l}=this.appendFilterControls(o,e);return this.appendColumnMenu(o,e),this.appendResizeHandle(o,e),this.attachLeafInteractions(o,e),{column:e,el:o,sortEl:s,filterBtn:a,filterTagEl:l,selectAllEl:i}}applyLeafPresentation(e,t){let r=t.colDef;typeof r.headerClass=="string"?e.classList.add(r.headerClass):Array.isArray(r.headerClass)&&e.classList.add(...r.headerClass),r.headerTooltip&&e.setAttribute("title",r.headerTooltip);let o=r.headerAlign??r.align;o==="center"?e.classList.add("mach-header-cell--center"):o==="right"&&e.classList.add("mach-header-cell--right")}attachHeaderFocus(e,t){this.core.options.suppressHeaderFocus||(e.tabIndex=-1,e.addEventListener("mousedown",()=>this.focusHeaderCell(t)),e.addEventListener("keydown",r=>this.onHeaderKeyDown(r,t)))}appendSelectAll(e,t){if(!t.hasCheckbox||this.core.options.rowSelection!=="multiple")return;let r=document.createElement("input");return r.type="checkbox",r.className="mach-select-all",r.setAttribute("aria-label","select all rows"),r.addEventListener("click",o=>o.stopPropagation()),r.addEventListener("change",()=>{r.checked?this.core.selectionService.selectAll(!0):this.core.selectionService.deselectAll()}),e.appendChild(r),r}appendHeaderContent(e,t){let r=t.colDef,o=r.headerComponent,i;if(!o){this.appendHeaderLabel(e,r.headerName??r.field??t.id);return}try{i=o({colDef:r,column:t,api:this.core.getApi()})}catch(s){this.core.reportError(s,"headerComponent",{colId:t.id}),i=null}this.appendHeaderComponentOutput(e,t,i)}appendHeaderComponentOutput(e,t,r){if(typeof r=="string"){this.appendHeaderLabel(e,r);return}if(r instanceof HTMLElement){this.appendCustomHeader(e,r);return}if(r&&typeof r=="object"&&r.el instanceof HTMLElement){this.appendCustomHeader(e,r.el),Or(e,r.destroy);return}let o=t.colDef;this.appendHeaderLabel(e,o.headerName??o.field??t.id)}appendHeaderLabel(e,t){let r=f("span","mach-header-label");r.textContent=t,e.appendChild(r)}appendCustomHeader(e,t){let r=f("span","mach-header-label mach-header-label--custom");r.appendChild(t),e.appendChild(r)}appendFilterControls(e,t){if(!t.filterable)return{};let r=document.createElement("button");r.type="button",r.className="mach-filter-btn",r.setAttribute("aria-label",`filter ${t.id}`),r.innerHTML=kr,r.addEventListener("click",i=>{i.stopPropagation(),this.core.filterPopup.toggle(t,r)}),e.appendChild(r);let o=f("span","mach-filter-tag");return e.appendChild(o),{filterBtn:r,filterTagEl:o}}appendColumnMenu(e,t){if(!this.core.options.columnMenu)return;let r=document.createElement("button");r.type="button",r.className="mach-menu-btn",r.setAttribute("aria-label","column menu"),r.textContent="\u22EF",r.addEventListener("click",o=>{o.stopPropagation(),this.core.columnMenu.toggle(t,r)}),e.appendChild(r)}appendResizeHandle(e,t){if(!this.canResizeColumn(t))return;let r=f("div","mach-header-resize");r.setAttribute("aria-hidden","true"),r.addEventListener("pointerdown",o=>{o.button===0&&(o.preventDefault(),o.stopPropagation(),this.core.resizeService.startResize(o,t))}),r.addEventListener("dblclick",o=>{o.stopPropagation(),this.core.getApi().columns.autoSize(t.id)}),r.addEventListener("click",o=>o.stopPropagation()),e.appendChild(r)}attachLeafInteractions(e,t){e.addEventListener("click",r=>{this.core.columnDragService.didDrag()||Yt(r.target)||t.sortable&&this.core.cycleSort(t,r.shiftKey)}),e.addEventListener("pointerdown",r=>{r.button!==0||Yt(r.target)||this.core.columnDragService.onPointerDown(r,t)})}createGroupCell(e){let t=f("div","mach-header-cell mach-header-cell--group");e.groupId&&(t.dataset.groupId=e.groupId),t.setAttribute("role","columnheader");let r=e.def;typeof r.headerClass=="string"?t.classList.add(r.headerClass):Array.isArray(r.headerClass)&&t.classList.add(...r.headerClass);let o=f("span","mach-header-label mach-header-label--group");return o.textContent=e.headerName,t.appendChild(o),t}applyLayout(){let e={left:0,center:0,right:0};for(let t of["left","center","right"]){let r=this.core.skeleton.headerRows[t],o=0,i=new Map;for(let a of this.core.columnModel.getPaneColumns(t))i.set(a.id,o),o+=a.currentWidth;let s=this.core.options.headerHeight;for(let a of this.leafCells){if(this.core.columnModel.paneOf(a.column)!==t)continue;let l=i.get(a.column.id)??0;a.el.style.width=`${a.column.currentWidth}px`,a.el.style.left=`${l}px`,a.el.setAttribute("aria-colindex",String(this.core.columnModel.getFlatIndex(a.column.id)+1))}for(let a of this.groupCells){let l=this.visiblePaneLeaves(a.group,t);if(l.length===0)continue;let d=i.get(l[0].id)??0,c=0;for(let u of l)c+=u.currentWidth;a.el.style.left=`${d}px`,a.el.style.width=`${c}px`,a.el.style.height=`${s}px`,a.el.setAttribute("aria-colspan",String(l.length))}for(let a of r)a.style.width=`${o}px`;e[t]=o}this.core.skeleton.setPaneWidths(e.left,e.right)}visiblePaneLeaves(e,t){return e.getLeafColumns().filter(r=>!r.hide&&this.core.columnModel.paneOf(r)===t)}onHeaderKeyDown(e,t){this.core.isDestroyed()||this.activateHeaderFromKeyboard(e,t)||this.resizeColumnFromKeyboard(e,t)||this.moveColumnFromKeyboard(e,t)||this.focusAdjacentHeader(e,t)||this.focusBoundaryHeader(e)}activateHeaderFromKeyboard(e,t){return e.key!=="Enter"&&e.key!==" "?!1:(Yt(e.target)||(e.preventDefault(),t.sortable&&this.core.cycleSort(t,e.shiftKey)),!0)}resizeColumnFromKeyboard(e,t){if(!e.altKey||!Xt(e.key))return!1;if(!this.canResizeColumn(t))return!0;let r=e.key==="ArrowRight"?24:-24,o=Math.max(t.colDef.minWidth??40,t.currentWidth+r);return this.core.columnModel.setColumnWidth(t,o),this.core.relayoutColumns(),this.core.commitColumnWidths([t]),e.preventDefault(),!0}moveColumnFromKeyboard(e,t){if(!e.ctrlKey||!Xt(e.key))return!1;if(!t.movable)return!0;e.preventDefault();let r=this.core.columnModel.paneOf(t),o=this.core.columnModel.getPaneColumns(r),i=o.indexOf(t),s=e.key==="ArrowRight"?1:-1,a=Math.max(0,Math.min(o.length-1,i+s));return a!==i&&this.core.moveColumn(t.id,a),!0}focusAdjacentHeader(e,t){if(e.altKey||e.ctrlKey||e.metaKey||!Xt(e.key))return!1;e.preventDefault();let r=this.core.columnModel.getOrderedVisible(),o=r.indexOf(t);if(o<0)return!0;let i=e.key==="ArrowRight"?1:-1,s=Math.max(0,Math.min(r.length-1,o+i));return this.focusHeaderCell(r[s]),!0}focusBoundaryHeader(e){if(e.key!=="Home"&&e.key!=="End")return!1;e.preventDefault();let t=this.core.columnModel.getOrderedVisible();if(t.length===0)return!0;let r=e.key==="Home"?0:t.length-1;return this.focusHeaderCell(t[r]),!0}focusHeaderCell(e){let t=this.leafCells.find(r=>r.column.id===e.id);if(!t&&!e.pinned&&(this.scrollColumnIntoView(e),this.updateColumnWindow(),t=this.leafCells.find(r=>r.column.id===e.id)),!!t){for(let r of this.leafCells)r.el.tabIndex=r===t?0:-1;t.el.focus({preventScroll:!0})}}scrollColumnIntoView(e){let t=this.core.columnModel.getPaneColumns("center"),r=t.indexOf(e);if(r<0)return;let o=this.core.skeleton.bodyViewports.center;this.columnViewport.update(t);let i=this.columnViewport.offsetAt(r),s=i+e.currentWidth;i<o.scrollLeft?o.scrollLeft=i:s>o.scrollLeft+o.clientWidth&&(o.scrollLeft=s-o.clientWidth)}canResizeColumn(e){return this.core.options.enableColumnResize&&e.resizable}refreshSortIndicators(){let e=this.core.columnModel.getSortModel(),t=e.length>1;for(let r of this.leafCells){let o=e.findIndex(i=>i.colId===r.column.id);if(o>=0){let i=e[o].direction,s=t?`<span class="mach-sort-badge">${o+1}</span>`:"";r.sortEl.innerHTML=(i==="asc"?Ar:Pr)+s,r.el.setAttribute("aria-sort",i==="asc"?"ascending":"descending"),r.el.classList.add("mach-header-cell--sorted")}else r.sortEl.innerHTML="",r.el.removeAttribute("aria-sort"),r.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 r=e[t.column.id],o=r!=null;if(t.filterBtn.classList.toggle("mach-filter-btn--active",o),t.filterTagEl){let i=o?st(r):"";t.filterTagEl.style.display=i?"":"none",i&&(t.filterTagEl.textContent=i)}}}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=zt(e.el);if(t)try{t()}catch(r){console.error("[mach-table] headerComponent destroy error",r)}}this.leafCells=[],this.groupCells=[]}};var lt=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 dt=class{constructor(e,t,r){this.core=e;this.getRowTop=t;this.findRowAt=r;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 r=this.core.skeleton.rowContainers.center,o=e.clientY-r.getBoundingClientRect().top,i=this.core.rowModel.getDisplayedRowCount(),s=Math.max(0,Math.min(this.findRowAt(o),i));for(;s<i;){let c=this.core.rowModel.getDisplayedRow(s);if(c&&!c.isDetail&&!c.isGroup)break;s++}let a=this.getRowTop(s),l=this.getRowTop(Math.min(i,s+1));s<i&&o>=a+(l-a)/2&&s++;let d=this.getRowTop(s);t.targetIndex=s,t.indicator.style.top=`${d}px`};this.onUp=()=>{let e=this.takeState();if(!e||!e.active||e.targetIndex<0)return;let t=e.node.rowIndex,r=Math.max(0,Math.min(e.targetIndex,this.core.rowModel.getDisplayedRowCount()));t===r||t===r-1||(this.core.emit("rowDragEnd",{rowNode:e.node,fromIndex:t,toIndex:r}),this.core.options.applyRowDrag&&!this.core.rowModel.isTree&&this.core.rowModel.reorderRowsByDisplayed(t,r>t?r-1:r))}}start(e,t){this.destroy();let r=f("div","mach-row-drop-indicator");this.core.skeleton.rowContainers.center.appendChild(r),this.state={node:t,startY:e.clientY,indicator:r,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 ct=class{constructor(){this.sizes=new Float64Array(0);this.tree=new Float64Array(1);this.indexes=new WeakMap;this.sizeCounts=new Map;this.minimum=0}reset(e,t){this.sizes=new Float64Array(e.length),this.tree=new Float64Array(e.length+1),this.indexes=new WeakMap,this.sizeCounts=new Map,this.minimum=0;for(let r=0;r<e.length;r++){this.indexes.set(e[r],r);let o=Math.max(1,t(e[r],r));this.sizes[r]=o,this.changeSizeCount(o,1),this.add(r,o)}}get length(){return this.sizes.length}indexOf(e){return this.indexes.get(e)??-1}sizeAt(e){return this.sizes[e]??0}update(e,t){if(e<0||e>=this.sizes.length)return!1;let r=Math.max(1,t),o=r-this.sizes[e];return Math.abs(o)<.01?!1:(this.changeSizeCount(this.sizes[e],-1),this.sizes[e]=r,this.changeSizeCount(r,1),this.add(e,o),!0)}offsetAt(e){let t=Math.max(0,Math.min(Math.trunc(e),this.sizes.length)),r=0;for(;t>0;)r+=this.tree[t],t-=t&-t;return r}totalSize(){return this.offsetAt(this.sizes.length)}minimumSize(){return this.minimum}findIndex(e){if(this.sizes.length===0)return 0;let t=Math.max(0,e),r=0,o=0,i=1;for(;i<<1<=this.sizes.length;)i<<=1;for(;i>0;){let s=r+i;s<=this.sizes.length&&o+this.tree[s]<=t&&(r=s,o+=this.tree[s]),i>>=1}return Math.min(r,this.sizes.length-1)}add(e,t){for(let r=e+1;r<this.tree.length;r+=r&-r)this.tree[r]+=t}changeSizeCount(e,t){let r=(this.sizeCounts.get(e)??0)+t;if(r<=0?this.sizeCounts.delete(e):this.sizeCounts.set(e,r),this.sizeCounts.size===0)this.minimum=0;else if(t>0&&(this.minimum===0||e<this.minimum))this.minimum=e;else if(t<0&&e===this.minimum&&!this.sizeCounts.has(e)){let o=Number.POSITIVE_INFINITY;for(let i of this.sizeCounts.keys())o=Math.min(o,i);this.minimum=Number.isFinite(o)?o:0}}};var I=["left","center","right"];function po(n){return!!n&&!n.hasCheckbox&&!n.isDetailToggle&&!n.colDef.rowDrag}function fo(n){let e=n.length>1&&n.every(o=>typeof o=="number"&&!Number.isNaN(o)),t=e?(n[n.length-1]-n[0])/(n.length-1):0,r=!e||n.every(o=>Number.isInteger(o));return{difference:t,integer:r,numeric:e,values:n}}function mo(n,e){let t=n.values.length;if(t===1)return n.values[0];if(!n.numeric)return n.values[e%t];let r=n.values[t-1]+n.difference*(e-t+1);return n.integer?Math.round(r):Math.round(r*1e6)/1e6}var ut=class{constructor(e){this.core=e;this.pool=[];this.poolSize=0;this.first=0;this.lastExcl=-1;this.rafId=0;this.hoverIndex=-1;this.rowSizes=new ct;this.columnViewport=new re;this.rangeSelection=new lt;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.lastMinRowHeight=0;this.rowHeightCache=new WeakMap;this.dirtyHeightNodes=new Set;this.rowLayoutSignature="";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 r=e;if(typeof r.clientX!="number")return;if(!t.active){let s=Math.abs(r.clientX-t.startX),a=Math.abs(r.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(r),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 o=Math.max(t.c2+1,this.fillTargetCol(r)),i=this.rangeSelection.getEnd();if(i&&i.colIdx!==o){let s=this.normalizedRange();this.rangeSelection.setEnd({row:i.row,colIdx:o}),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 r=e,o=()=>{this.cancelFillDrag()};if(!t.active){o();return}if(t.axis==="h"){let s=typeof r.clientX=="number"?Math.max(t.c2+1,this.fillTargetCol(r)):t.c2+1;if(o(),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 i=typeof r.clientY=="number"?this.fillTargetRow(r):t.r2;if(o(),i>t.r2)this.fillValues(t.r1,t.r2,t.c1,t.c2,i),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:r,index:o,cellEl:i}=t,s=e.target;if(this.handleGroupRowClick(s,r,i)||this.handleTreeToggleClick(s,r,i))return;let a=i?.dataset.colId??"",l=a?this.core.columnModel.getColumn(a):void 0;this.handleDetailToggleClick(r,l)||r.isDetail||this.handleSelectionCheckboxClick(s,r,o,e)||!i||!l||(this.focusGridRoot(),this.core.options.suppressCellFocus||this.setFocusedCell(o,a),this.core.selectionService.onRowClick(r,e,!1),this.emitCellClick(e,r,o,l),this.maybeStartSingleClickEdit(r,o,l))};this.onBodyDblClick=e=>{if(this.core.isDestroyed())return;let t=this.resolveEventTarget(e);if(!t)return;let{node:r,index:o,cellEl:i}=t;if(r.isDetail||r.isGroup||!i)return;let s=i.dataset.colId??"",a=this.core.columnModel.getColumn(s);if(!a)return;let l=this.core.getCellValue(r,a),d=this.core.emit("cellDoubleClicked",{event:e,rowNode:r,rowIndex:o,column:a,colDef:a.colDef,value:l});a.colDef.onCellDoubleClick?.(d),this.core.emit("rowDoubleClicked",{event:e,rowNode:r,rowIndex:o}),this.core.editingService.isEditable(r,a)&&this.core.editingService.start(o,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:r,index:o,cellEl:i}=t,s=i.dataset.colId??"",a=this.core.columnModel.getColumn(s);if(a&&(this.core.emit("cellContextMenu",{event:e,rowNode:r,rowIndex:o,column:a,colDef:a.colDef,value:this.core.getCellValue(r,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(o,l,!1)}this.core.contextMenuService.open(e.clientX,e.clientY,{rowIndex:o,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 r=this.core.columnModel.getFlatIndex(t.cellEl.dataset.colId??"");r>=0&&(this.startRange(t.index,r,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 r=this.core.columnModel.getFlatIndex(t.cellEl.dataset.colId??""),o=this.rangeSelection.getEnd();r>=0&&o&&(o.row!==t.index||o.colIdx!==r)&&this.startRange(t.index,r,!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 r=this.resolveEventTarget(e);!r||r.node.isDetail||r.node.isGroup||(this.rowDragController.start(e,r.node),e.preventDefault())};this.rowDragController=new dt(e,t=>this.rowTop(t),t=>this.rowAtOffset(t,this.core.rowModel.getDisplayedRowCount()))}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 r of this.pool){r.detailRow&&this.cleanupDetail(r.detailRow);for(let o of I)for(let i of r.cells[o]??[])r.index>=0&&this.core.editingService.releaseCell(r.index,i.dataset.colId??"",i),E(this.core,i)}this.fillHandleEl?.remove(),this.fillDragIndicator?.remove(),this.pool=[],this.poolSize=0,this.pendingFlash=[],this.dirtyHeightNodes.clear(),this.rowSizes.reset([],()=>this.core.options.rowHeight),this.columnViewport.update([]),this.measureCanvas=null}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)`,this.core.headerRenderer.updateColumnWindow(),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((r,o)=>r+o.currentWidth,0);return e}applyContainerSizes(){let e=this.core.skeleton,t=this.paneWidths();this.columnViewport.update(this.core.columnModel.getPaneColumns("center")),t.center=this.columnViewport.totalWidth();let r=this.core.rowModel.getDisplayedRows(),o=this.resolveRowLayout(r.length);this.syncRowSizeIndex(r,o);let i=this.totalRowLayoutHeight(o);this.applyRowContainerDimensions(t,i),this.applyDomLayoutHeight(i),e.root.setAttribute("aria-rowcount",String(o.rowCount+e.getHeaderRowCount()))}resolveRowLayout(e){let t=this.core.rowModel.getDisplayTotalCount(),r=this.core.options.rowHeight,o=this.core.options.masterDetail?[]:this.collectAutoHeightColumns(),i=this.core.options.datasourceMode!=="block"&&(this.core.options.masterDetail||this.core.options.getRowHeight!=null||o.length>0),s=i?this.variableRowLayoutSignature(r,o):`fixed|${r}`;return{autoHeightColumns:o,positionedCount:Math.min(t,e),rowCount:t,rowHeight:r,signature:s,variable:i}}variableRowLayoutSignature(e,t){let r=t.map(o=>`${o.id}:${o.currentWidth}`).join(",");return`${this.core.rowModel.getDisplayRevision()}|${e}|${this.core.options.detailRowHeight}|${r}`}syncRowSizeIndex(e,t){if(!t.variable){this.resetFixedRowSizes(t);return}if(t.signature!==this.rowLayoutSignature||this.rowSizes.length!==t.positionedCount){let r=e.slice(0,t.positionedCount);this.rowSizes.reset(r,o=>this.resolveRowHeight(o,t.autoHeightColumns)),this.completeRowSizeSync(t);return}if(this.dirtyHeightNodes.size!==0){for(let r of this.dirtyHeightNodes){let o=this.rowSizes.indexOf(r);o>=0&&this.rowSizes.update(o,this.resolveRowHeight(r,t.autoHeightColumns))}this.completeRowSizeSync(t)}}resetFixedRowSizes(e){this.rowSizes.length>0&&this.rowSizes.reset([],()=>e.rowHeight),this.rowLayoutSignature=e.signature,this.dirtyHeightNodes.clear(),this.lastMinRowHeight=e.rowHeight}completeRowSizeSync(e){this.rowLayoutSignature=e.signature,this.dirtyHeightNodes.clear(),this.lastMinRowHeight=this.rowSizes.minimumSize()||e.rowHeight}totalRowLayoutHeight(e){return(e.variable?this.rowSizes.totalSize():e.positionedCount*e.rowHeight)+Math.max(0,e.rowCount-e.positionedCount)*e.rowHeight}applyRowContainerDimensions(e,t){let r=this.core.skeleton,o=r.bodyViewports.center,i=Math.max(0,o.clientWidth-e.left-e.right),s=Math.max(e.center,i);for(let a of I){let l=r.rowContainers[a];l.style.height=`${t}px`,a==="center"&&(l.style.width=`${s}px`)}}invalidateRowHeight(e){this.rowHeightCache.delete(e),this.dirtyHeightNodes.add(e)}applyDomLayoutHeight(e){this.core.skeleton.bodyEl.style.height=this.core.options.domLayout==="autoHeight"?`${e}px`:""}invalidateAllRowHeights(){this.rowHeightCache=new WeakMap,this.dirtyHeightNodes.clear(),this.rowLayoutSignature=""}resolveRowHeight(e,t){if(e.isDetail)return this.core.options.detailRowHeight;let r=this.rowHeightCache.get(e);if(r!==void 0)return r;let o=this.core.options.rowHeight,i=this.core.options.getRowHeight;if(i)try{let s=i({data:e.data,node:e,api:this.core.getApi()});o=Number.isFinite(s)?Math.max(1,s||o):o}catch(s){this.core.reportError(s,"getRowHeight",{rowId:e.id})}return t.length>0&&(o=Math.max(o,this.measureAutoHeight(e,t))),this.rowHeightCache.set(e,o),o}rowTop(e){let t=this.rowSizes.length;return t===0?Math.max(0,e)*this.core.options.rowHeight:e<=t?this.rowSizes.offsetAt(e):this.rowSizes.totalSize()+(e-t)*this.core.options.rowHeight}rowAtOffset(e,t){if(t<=0)return 0;let r=this.rowSizes.length,o=this.rowSizes.totalSize();if(r>0&&e<o)return this.rowSizes.findIndex(e);let i=r+Math.floor(Math.max(0,e-o)/this.core.options.rowHeight);return Math.max(0,Math.min(i,t-1))}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 r=this.measureCanvas.getContext("2d");if(!r)return 0;let o=window.getComputedStyle(this.core.skeleton.root),i=parseFloat(o.fontSize)||13;r.font=`${o.fontStyle} ${o.fontWeight} ${i}px ${o.fontFamily}`;let s=parseFloat(o.getPropertyValue("--mach-cell-padding"))||9,a=Math.round(i*1.45),l=1;for(let d of t){let c=H(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 g=r.measureText(m).width;if(p>0&&p+g>u?(h++,p=g):p+=g,h>=12)break}h>l&&(l=h)}return l*a+Math.round(s*.9)}queueFlash(e,t){if(this.core.options.flashCells)for(let r of e)for(let o of t)this.pendingFlash.push([r,o])}flushFlash(){if(this.pendingFlash.length===0)return;let e=this.pendingFlash;this.pendingFlash=[];for(let[t,r]of e){let o=this.getCellElement(t,r);if(!o)continue;o.classList.remove("mach-cell--flash"),o.offsetWidth,o.classList.add("mach-cell--flash");let i=ce(o),s=i.flashTimer;s&&clearTimeout(s),i.flashTimer=setTimeout(()=>{o.classList.remove("mach-cell--flash"),i.flashTimer=void 0},800)}}relayout(){this.applyContainerSizes();let e=this.core.skeleton.bodyViewports.center,r=this.core.options.rowHeight;this.core.options.masterDetail&&(r=Math.min(r,this.core.options.detailRowHeight)),this.lastMinRowHeight>0&&(r=Math.min(r,this.lastMinRowHeight));let o=Math.ceil(e.clientHeight/Math.max(1,r)),i=this.core.options.domLayout==="autoHeight"?this.core.rowModel.getDisplayedRowCount():o+this.core.options.rowBuffer*2+1;if(this.computeColWindow())for(let a of this.pool)this.reconcilePaneCells(a,"center");i>this.poolSize&&this.growPool(i),this.applyCellLayout(),this.updateRange(!0),this.refreshOverlays()}growPool(e){for(;this.poolSize<e;){let t={index:-1,nodeId:"",kind:"master",rows:{},cells:{},cellColIds:{}},r=this.core.skeleton;for(let o of I){if(this.core.columnModel.getPaneColumns(o).length===0)continue;let s=f("div","mach-row");s.style.height=`${this.core.options.rowHeight}px`,s.setAttribute("role","row"),s.style.display="none",r.rowContainers[o].appendChild(s),t.rows[o]=s,t.cells[o]=[],t.cellColIds[o]=[],this.reconcilePaneCells(t,o)}if(this.core.options.masterDetail){let o=f("div","mach-row mach-detail-row");o.style.height=`${this.core.options.detailRowHeight}px`,o.setAttribute("role","row"),o.style.display="none",r.rowContainers.center.appendChild(o),t.detailRow=o}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=f("div","mach-cell");if(t.dataset.colId=e.id,t.setAttribute("role","gridcell"),e.hasCheckbox){let r=document.createElement("input");r.type=this.core.options.rowSelection==="single"?"radio":"checkbox",r.className="mach-row-checkbox",r.type==="radio"&&(r.name=`mach-radio-${this.core.gridId}`),r.setAttribute("aria-label","select row"),t.appendChild(r),t.classList.add("mach-cell--selection")}return t}reconcilePaneCells(e,t){let r=e.rows[t];if(!r)return;let o=this.activePaneColumns(t),i=e.cells[t]??[],s=e.cellColIds[t]??[];if(s.length===o.length&&s.every((c,u)=>c===o[u].id))return;let a=new Map;s.forEach((c,u)=>a.set(c,i[u]));let l=[],d=[];for(let c of o){let u=a.get(c.id)??this.createCell(c);a.delete(c.id),r.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),E(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 r of e.cells[t]??[])E(this.core,r);e.rows[t]?.remove()}e.detailRow?.remove()}this.pool=[],this.poolSize=0,this.first=0,this.lastExcl=-1,this.relayout()}applyCellLayout(){let e=this.hasVariableRowHeights();for(let t of I){let r=this.core.columnModel.getPaneColumns(t),o=this.activePaneColumns(t),i=this.paneColumnLefts(t,o,r);this.layoutPoolPane(t,o,i,e)}this.applyDetailRowHeight()}hasVariableRowHeights(){return this.core.options.masterDetail||this.core.options.getRowHeight!=null||this.hasAnyAutoHeight}paneColumnLefts(e,t,r){let o=0;e==="center"&&t.length>0&&(this.columnViewport.update(r),o=this.columnViewport.offsetAt(r.indexOf(t[0])));let i=[];for(let s of t)i.push(o),o+=s.currentWidth;return i}layoutPoolPane(e,t,r,o){for(let i of this.pool){let s=i.cells[e],a=i.rows[e];if(!s||!a)continue;o||(a.style.height=`${this.core.options.rowHeight}px`);let l=Math.min(t.length,s.length);for(let d=0;d<l;d++){let c=t[d];s[d].style.width=`${c.currentWidth}px`,s[d].style.left=`${r[d]}px`,s[d].setAttribute("aria-colindex",String(this.core.columnModel.getFlatIndex(c.id)+1))}}}applyDetailRowHeight(){if(!this.core.options.masterDetail)return;let e=`${this.core.options.detailRowHeight}px`;for(let t of this.pool)t.detailRow?.style.setProperty("--mach-detail-h",e)}computeColWindow(){let e=this.core.skeleton.bodyViewports.center,t=this.core.columnModel.getPaneColumns("center"),r=this.colFirst,o=this.colLastExcl;this.columnViewport.update(t);let i=t.length>20?this.columnViewport.visibleRange(e.scrollLeft,e.clientWidth,2):{first:0,lastExcl:t.length};return this.colFirst=i.first,this.colLastExcl=i.lastExcl,i.first!==r||i.lastExcl!==o}updateRange(e=!1){let t=this.core.performanceMonitor.start();if(!this.updateRangeInner(e))return;let r=Math.max(0,this.lastExcl-this.first),o=this.core.columnModel.getPaneColumns("left").length+this.activePaneColumns("center").length+this.core.columnModel.getPaneColumns("right").length;this.core.performanceMonitor.recordRender(t,r,o)}updateRangeInner(e){let t=this.core.skeleton.bodyViewports.center,r=this.core.rowModel.getDisplayedRowCount(),o=this.core.options.rowBuffer,i=this.computeColWindow();if(this.reconcileColumnWindow(i),r===0){for(let l of this.pool)this.hideSlot(l);return this.first=0,this.lastExcl=0,!0}if(this.renderAutoHeightRange(r,e))return!0;let{first:s,lastExcl:a}=this.calculateVisibleRange(t,r,o);return!e&&s===this.first&&a===this.lastExcl?i:(this.first=s,this.lastExcl=a,this.hideOutsideRange(s,a),this.renderVirtualRange(s,a,e,i),!0)}calculateVisibleRange(e,t,r){let o=this.rowAtOffset(e.scrollTop,t),i=e.scrollTop+e.clientHeight,s=Math.min(t,this.rowAtOffset(i,t)+1);return{first:M(o-r,0,t-1),lastExcl:M(s+r,1,t)}}hideOutsideRange(e,t){for(let r of this.pool)r.index!==-1&&(r.index<e||r.index>=t)&&this.hideSlot(r)}renderVirtualRange(e,t,r,o){for(let i=e;i<t;i++){let s=this.core.rowModel.getDisplayedRow(i),a=this.pool[i%this.poolSize];if(!(!a||!s)){if(!r&&a.index===i&&a.nodeId===s.id){o&&a.kind==="master"&&this.renderPaneCells(a,s,"center");continue}this.assignSlot(a,i)}}}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 r=0;r<e;r++){let o=this.core.rowModel.getDisplayedRow(r),i=this.pool[r];!i||!o||(t||i.index!==r||i.nodeId!==o.id)&&this.assignSlot(i,r)}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 r=e.rows[t];r&&(r.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 r=this.core.rowModel.getDisplayedRow(t);if(!r){this.hideSlot(e);return}e.index=t,e.nodeId=r.id;let o=this.rowTop(t),i=this.rowTop(t+1)-o;if(r.isDetail){this.assignDetailSlot(e,r,t,o,i);return}this.assignMasterSlot(e,r,t,o,i)}assignDetailSlot(e,t,r,o,i){e.kind="detail";for(let a of I){let l=e.rows[a];l&&(l.style.display="none")}let s=e.detailRow;s&&(s.style.display="",s.style.transform=`translateY(${o}px)`,s.style.height=`${i}px`,s.dataset.index=String(r),s.setAttribute("aria-rowindex",String(r+this.core.skeleton.getHeaderRowCount()+1)),this.renderDetailContent(s,t))}assignMasterSlot(e,t,r,o,i){e.kind="master",e.detailRow&&(e.detailRow.style.display="none");let s=this.resolveMasterRowState(t);for(let a of I){let l=e.rows[a];l&&(this.applyMasterRowState(l,t,r,o,i,s),this.renderPaneCells(e,t,a))}this.focusedCell&&this.focusedCell.rowIndex===r&&this.applyFocusClass()}resolveMasterRowState(e){let t=this.core.rowModel.isTree,r=e.isGroup===!0,o=t&&this.core.rowModel.hasChildren(e.id),i=r||o||this.core.options.masterDetail&&this.core.rowModel.isRowExpandable(e),s=r?this.core.rowModel.isGroupExpanded(e.id):this.core.rowModel.isRowExpanded(e.id),a=null;return r?a=(e.groupLevel??0)+1:t&&(a=this.core.rowModel.getTreeDepth(e)+1),{expanded:s,expandable:i,level:a}}applyMasterRowState(e,t,r,o,i,s){e.style.display="",e.style.transform=`translateY(${o}px)`,e.style.height=`${i}px`,e.dataset.index=String(r),e.dataset.id=t.id,e.setAttribute("aria-rowindex",String(r+this.core.skeleton.getHeaderRowCount()+1)),e.classList.toggle("mach-row--selected",t.selected);let a=this.hoverIndex===r&&!this.core.options.suppressRowHoverHighlight;e.classList.toggle("mach-row--hover",a),e.classList.toggle("mach-row--odd",r%2===1),e.setAttribute("aria-selected",t.selected?"true":"false"),this.applyExpandableRowState(e,s)}applyExpandableRowState(e,t){t.expandable?e.setAttribute("aria-expanded",t.expanded?"true":"false"):e.removeAttribute("aria-expanded"),t.level!=null?e.setAttribute("aria-level",String(t.level)):e.removeAttribute("aria-level")}renderPaneCells(e,t,r){let o=this.activePaneColumns(r),i=e.cells[r];if(!i)return;let s=e.index,a=r==="center"&&this.core.columnModel.hasColSpan(),l=0;e.rows[r]?.classList.toggle("mach-row--editing",this.core.editingService.isRowEditing(s));for(let d=0;d<o.length;d++){let c=o[d],u=i[d];if(a&&l>0){l--,E(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,o.length-d);h>1?(l=h-1,this.applySpanWidth(u,o,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,r,o){let i=t.colDef.colSpan;if(!i)return 1;try{let s=i({api:this.core.getApi(),colDef:t.colDef,column:t,node:e,data:e.data,value:this.core.getCellValue(e,t),rowIndex:r});return Math.max(1,Math.min(Math.round(s)||1,o))}catch(s){return this.core.reportError(s,"colSpan",{colId:t.id,rowId:e.id}),1}}applySpanWidth(e,t,r,o){let i=0;for(let s=r;s<r+o&&s<t.length;s++)i+=t[s].currentWidth;e.style.width=`${i}px`,e.setAttribute("aria-colspan",String(o))}renderDetailContent(e,t){this.cleanupDetail(e);let r=t.masterId!=null?this.core.rowModel.getNodeById(t.masterId):t,o=f("div","mach-detail");e.appendChild(o);let i=this.core.options.detailRowRenderer;if(i){let s={data:t.data,node:r??t,api:this.core.getApi()},a;try{a=i(s)}catch(l){this.core.reportError(l,"detailRowRenderer",{rowId:t.id}),a=null}typeof a=="string"?o.textContent=a:a instanceof HTMLElement?o.appendChild(a):a&&typeof a=="object"&&a.el instanceof HTMLElement&&(o.appendChild(a.el),Fr(e,a.destroy))}}cleanupDetail(e){let t=Nr(e);if(t)try{t()}catch(r){this.core.reportError(r,"detailRowRenderer.destroy")}e.textContent=""}renderCell(e,t,r){if(t.loading){E(this.core,e),e.className="mach-cell mach-cell--loading",e.setAttribute("aria-readonly","true"),e.setAttribute("aria-busy","true");let i=document.createElement("span");i.className="mach-cell-loading-bar",i.style.width=`${34+(r.id.length*13+t.rowIndex*7)%44}%`,e.replaceChildren(i),this.resetSpanStyle(e);return}e.removeAttribute("aria-busy"),e.setAttribute("aria-readonly",this.core.editingService.isEditable(t,r)?"false":"true"),e.removeAttribute("aria-expanded"),e.removeAttribute("aria-level");let o=this.cellRenderKind(t,r);if(o!=="standard"){E(this.core,e),this.renderStructuralCell(o,e,t,r);return}We(this.core,e,t,r),he(this.core,e,t,r),ze(this.core,e,t,r),this.applyCellSpanStyle(e,t,r),this.appendEditableIndicator(e,t,r)}cellRenderKind(e,t){return e.isGroup?"group":t.isDetailToggle?"detail":t.hasCheckbox?"checkbox":t.colDef.rowDrag?"drag":J(t.colDef,"index")?"index":this.core.rowModel.isTree&&this.getTreeColumn()?.id===t.id?"tree":"standard"}renderStructuralCell(e,t,r,o){if(e==="group")this.renderGroupCell(t,r,o);else if(e==="detail"){let i=this.core.rowModel.isRowExpanded(r.id),s=f("span",`mach-detail-toggle${i?" mach-detail-toggle--open":""}`);s.textContent="\u25B6",t.replaceChildren(s),t.classList.add("mach-cell--detail-toggle"),this.resetSpanStyle(t)}else if(e==="checkbox"){let i=t.querySelector(".mach-row-checkbox");i&&(i.checked=r.selected,i.indeterminate=this.core.selectionService.isIndeterminate(r.id),i.disabled=!this.core.selectionService.isSelectable(r)),t.className!=="mach-cell mach-cell--selection"&&(t.className="mach-cell mach-cell--selection"),this.resetSpanStyle(t)}else if(e==="drag"){let i=f("span","mach-row-drag-handle");i.textContent="\u283F",t.replaceChildren(i),t.className!=="mach-cell mach-cell--drag"&&(t.className="mach-cell mach-cell--drag"),this.resetSpanStyle(t)}else e==="index"?(t.textContent=String(this.core.rowModel.getRowSeq(r)+this.core.options.indexOffset),t.className!=="mach-cell mach-cell--index"&&(t.className="mach-cell mach-cell--index"),this.applyCellSpanStyle(t,r,o)):this.renderTreeCell(t,r,o)}appendEditableIndicator(e,t,r){if(this.core.options.editType!=="cell"||this.core.options.editableIndicator==="none"||!this.core.editingService.isEditable(t,r))return;let o=document.createElement("button");o.type="button",o.className=`mach-cell-edit-trigger mach-cell-edit-trigger--${this.core.options.editableIndicator}`,o.tabIndex=-1,o.title="Edit cell",o.setAttribute("aria-label","Edit cell"),o.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>',o.addEventListener("mousedown",i=>{i.preventDefault(),i.stopPropagation()}),o.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),this.setFocusedCell(t.rowIndex,r.id),this.core.editingService.start(t.rowIndex,r)}),e.appendChild(o)}releaseSlotEditors(e){if(!(e.index<0))for(let t of I)for(let r of e.cells[t]??[])this.core.editingService.releaseCell(e.index,r.dataset.colId??"",r)}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,r){let o=this.core.rowModel.isRowExpandable(t),i=this.getNodeDepth(t),s=f("span","mach-tree-indent");s.style.width=`${i*16}px`;let a=f("span","mach-tree-cell");if(a.appendChild(s),o){let d=this.core.rowModel.isRowExpanded(t.id);e.setAttribute("aria-expanded",d?"true":"false"),e.setAttribute("aria-level",String(i+1));let c=t.treeLoading?" mach-detail-toggle--loading":t.treeLoadError?" mach-detail-toggle--error":"",u=f("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=f("span","mach-tree-toggle-spacer");a.appendChild(d)}let l=f("span","mach-tree-text");l.textContent=ue(this.core,t,r,this.core.getCellValue(t,r)),a.appendChild(l),e.replaceChildren(a),he(this.core,e,t,r)}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,r){let o=this.core.rowModel.getSpanInfo(r.id);if(!o||t.isDetail){this.resetSpanStyle(e);return}let i=this.core.rowModel.getRowSeq(t)-1;if(i<0||i>=o.length){this.resetSpanStyle(e);return}let s=o[i];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(i+s,this.core.rowModel.getDisplayedRowCount()),l=this.rowTop(a)-this.rowTop(i);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,r){if(r.hasCheckbox){this.renderGroupCheckbox(e,t);return}if(r.isDetailToggle){this.clearGroupCell(e);return}let o=this.core.columnModel.getGroupLabelColumn();if(o&&r.id===o.id){this.renderGroupLabel(e,t);return}this.renderGroupAggregate(e,t,r)||this.clearGroupCell(e)}renderGroupCheckbox(e,t){let r=e.querySelector(".mach-row-checkbox");if(r){let o=this.core.selectionService.getGroupSelectionState(t);r.checked=o.all,r.indeterminate=o.some&&!o.all}e.className!=="mach-cell mach-cell--selection"&&(e.className="mach-cell mach-cell--selection")}renderGroupLabel(e,t){let r=this.core.rowModel.isGroupExpanded(t.id),o=t.groupLevel??0;e.setAttribute("aria-expanded",r?"true":"false"),e.setAttribute("aria-level",String(o+1));let i=f("span","mach-group-label");i.style.paddingLeft=`${o*16}px`;let s=f("span",`mach-detail-toggle${r?" mach-detail-toggle--open":""}`);s.textContent="\u25B6";let a=f("span","mach-group-text"),l=this.core.columnModel.getRowGroupColumns()[o],d=l?.colDef.headerName?`${l.colDef.headerName}: `:"";a.textContent=`${d}${t.groupKey??""}`;let c=f("span","mach-group-count");c.textContent=`(${t.leafNodes?.length??0})`,i.append(s,a,c),e.replaceChildren(i),e.className!=="mach-cell mach-cell--group"&&(e.className="mach-cell mach-cell--group")}renderGroupAggregate(e,t,r){if(!r.colDef.aggFunc||!t.aggValues||!Object.prototype.hasOwnProperty.call(t.aggValues,r.id))return!1;let o=t.aggValues[r.id];return e.textContent=r.colDef.valueFormatter!=null?ue(this.core,t,r,o):Ve(o),e.className!=="mach-cell mach-cell--num"&&(e.className="mach-cell mach-cell--num"),!0}clearGroupCell(e){e.textContent="",e.className!=="mach-cell"&&(e.className="mach-cell")}refreshRows(e){if(this.core.isDestroyed())return;let t=new Set;for(let r of e){if(r<0||t.has(r))continue;t.add(r);let o=this.pool[r%this.poolSize];if(!o||o.index!==r)continue;let i=this.core.rowModel.getDisplayedRow(r);if(i){if(o.kind==="detail"){o.detailRow&&this.renderDetailContent(o.detailRow,i);continue}for(let s of I)o.cells[s]&&this.renderPaneCells(o,i,s)}}this.applyFocusClass(),this.flushFlash()}refreshAllCells(){this.refreshCells()}refreshCells(e={}){if(this.core.isDestroyed())return;let t=e.rowIds==null?null:new Set(e.rowIds),r=e.rowIndexes==null?null:new Set(e.rowIndexes),o=e.columns==null?null:new Set(e.columns);for(let i of this.pool){let s=this.core.rowModel.getDisplayedRow(i.index);!s||!this.matchesRefreshRow(i,s,t,r)||this.refreshSlotCells(i,s,o,e.force===!0)}this.applyFocusClass(),this.flushFlash()}matchesRefreshRow(e,t,r,o){return e.index<0?!1:r==null&&o==null?!0:r?.has(t.id)===!0||o?.has(e.index)===!0}refreshSlotCells(e,t,r,o){if(e.kind==="detail"){r==null&&e.detailRow&&this.renderDetailContent(e.detailRow,t);return}let i=r==null||this.core.columnModel.hasColSpan();for(let s of I)i?this.renderPaneCells(e,t,s):this.refreshPaneCells(e,t,s,r,o)}refreshPaneCells(e,t,r,o,i){let s=this.activePaneColumns(r),a=e.cells[r];if(a)for(let l=0;l<s.length;l++){let d=s[l];if(!o.has(d.id))continue;let c=a[l];c&&(this.core.editingService.renderEditor(e.index,t,d,c)||(i&&E(this.core,c),this.renderCell(c,t,d),this.applyRangeClass(c,e.index,d)))}}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 r=this.core.columnModel.getColumn(t);if(!r)return null;let o=this.paneForColumn(r),i=this.pool[e%Math.max(1,this.poolSize)]?.cellColIds[o]?.indexOf(r.id)??-1;if(i<0)return null;let s=this.pool[e%this.poolSize];return!s||s.index!==e||s.kind!=="master"?null:s.cells[o]?.[i]??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 r=this.core.columnModel.getFlatIndex(t.colId);if(r>=0)return{r1:t.rowIndex,c1:r,r2:t.rowIndex,c2:r}}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 r=[],o=i=>{if(i)for(let s=i.r1;s<=i.r2;s++)r.push(s)};o(e),o(t),r.length>0&&this.refreshRows(r)}startRange(e,t,r){let o=this.normalizedRange();this.rangeSelection.start({row:e,colIdx:t},r);let i=this.normalizedRange();this.refreshRowRange(o,i),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 r=this.core.rowModel.getDisplayedRowCount(),o=this.core.columnModel.getOrderedVisible().length,i=this.normalizedRange();this.rangeSelection.setEnd({row:Math.max(0,Math.min(e,r-1)),colIdx:Math.max(0,Math.min(t,o-1))});let s=this.normalizedRange();this.refreshRowRange(i,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,r){let o=this.normalizedRange();if(!o){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 i=this.core.columnModel.getFlatIndex(r.id);if(i<0)return;let s=t>=o.r1&&t<=o.r2&&i>=o.c1&&i<=o.c2;e.classList.toggle("mach-cell--range",s),s?(e.classList.toggle("mach-cell--range-top",t===o.r1),e.classList.toggle("mach-cell--range-bottom",t===o.r2),e.classList.toggle("mach-cell--range-left",i===o.c1),e.classList.toggle("mach-cell--range-right",i===o.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=f("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 r=this.core.columnModel,o=r.getPaneColumns("left").length,i=r.getPaneColumns("center");if(t.c2<o||t.c2>=o+i.length){e.style.display="none";return}let s=t.c2-o;this.columnViewport.update(i);let a=this.columnViewport.offsetAt(s+1),l=this.rowTop(Math.min(t.r2+1,this.core.rowModel.getDisplayedRowCount()));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 r=this.core.skeleton.rowContainers.center.getBoundingClientRect(),o=e.clientY-r.top,i=this.core.rowModel.getDisplayedRowCount(),s=this.rowAtOffset(o,i);return Math.max(this.fillDrag.r2,Math.min(s,i-1))}fillTargetCol(e){let r=this.core.skeleton.rowContainers.center.getBoundingClientRect(),o=e.clientX-r.left,i=this.core.columnModel,s=i.getPaneColumns("left").length,a=i.getPaneColumns("center");this.columnViewport.update(a);let l=this.columnViewport.indexAt(o);if(l<0)return s;let d=this.columnViewport.offsetAt(l)+a[l].currentWidth/2;return o<d?s+l:l+1<a.length?s+l+1: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,r,o,i){let s=this.core.columnModel.getOrderedVisible(),a=new Set;this.core.undoService.beginBatch();try{for(let l=e;l<=t;l++)this.fillHorizontalRow(l,r,o,i,s,a)}finally{this.core.undoService.endBatch()}a.size>0&&(this.refreshRows([...a]),this.core.summaryRenderer.refresh(),this.core.emit("rangeSelectionChanged",{range:this.getRangeSelection()}))}fillHorizontalRow(e,t,r,o,i,s){let a=this.core.rowModel.getDisplayedRow(e);if(!a||a.isDetail||a.isGroup)return;let l=[];for(let c=t;c<=r;c++){let u=i[c];l.push(u?this.core.getCellValue(a,u):void 0)}let d=fo(l);for(let c=r+1;c<=o;c++){let u=i[c];if(!po(u)||!this.core.editingService.isEditable(a,u))continue;let h=mo(d,c-t),p=this.core.getCellValue(a,u);this.core.setCellValue(a,u,h,p)&&s.add(e)}}fillValues(e,t,r,o,i){let s=this.core.columnModel.getOrderedVisible(),a=new Set;this.core.undoService.beginBatch();try{this.fillValuesInner(e,t,r,o,i,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,r,o,i,s,a){for(let l=r;l<=o;l++){let d=s[l];po(d)&&this.fillColumnDown(d,e,t,i,a)}}fillColumnDown(e,t,r,o,i){let s=this.verticalSourceValues(e,t,r);if(s.length===1&&s[0]===void 0)return;let a=fo(s);for(let l=r+1;l<=o;l++){let d=this.core.rowModel.getDisplayedRow(l);if(!d||d.isDetail||d.isGroup||!this.core.editingService.isEditable(d,e))continue;let c=mo(a,l-t),u=this.core.getCellValue(d,e);this.core.setCellValue(d,e,c,u)&&i.add(l)}}verticalSourceValues(e,t,r){let o=[];for(let i=t;i<=r;i++){let s=this.core.rowModel.getDisplayedRow(i);o.push(s?this.core.getCellValue(s,e):void 0)}return o}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,r=this.core.columnModel.getPaneColumns("center");this.columnViewport.update(r);let o=this.columnViewport.offsetAt(r.indexOf(e)),i=t.scrollLeft,s=t.clientWidth;o<i?t.scrollLeft=o:o+e.currentWidth>i+s&&(t.scrollLeft=o+e.currentWidth-s)}scrollToIndex(e,t="top"){let r=this.core.skeleton.bodyViewports.center,o=this.core.rowModel.getDisplayedRowCount();if(o===0)return;let i=M(e,0,o-1),s=r.clientHeight,a=r.scrollTop,l=this.rowTop(i),d=this.rowTop(i+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.rowTop(o)-s);r.scrollTop=M(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 r=this.pool[e%this.poolSize];if(!(!r||r.index!==e||r.kind!=="master"))for(let o of I)r.rows[o]?.classList.toggle("mach-row--hover",t)}focusGridRoot(){this.core.skeleton.root.focus({preventScroll:!0})}resolveEventTarget(e){let t=e.target,r=t.closest(".mach-row");if(!r)return null;let o=Number(r.dataset.index);if(Number.isNaN(o))return null;let i=this.core.rowModel.getDisplayedRow(o);if(!i)return null;let s=t.closest(".mach-cell");return{node:i,index:o,cellEl:s}}handleGroupRowClick(e,t,r){if(!t.isGroup)return!1;if(this.focusGridRoot(),e.closest(".mach-row-checkbox")){let i=this.core.selectionService.getGroupSelectionState(t).all;return this.core.selectionService.setGroupSelected(t,!i),!0}let o=this.core.columnModel.getGroupLabelColumn();return(!o||!r||r.dataset.colId===o.id)&&this.core.rowModel.toggleGroup(t.id),!0}handleDetailToggleClick(e,t){return!t?.isDetailToggle||e.isDetail?!1:(this.focusGridRoot(),this.core.toggleDetail(e.id),!0)}handleSelectionCheckboxClick(e,t,r,o){return e.closest(".mach-row-checkbox")?(this.focusGridRoot(),this.core.options.suppressCellFocus||this.setFocusedCell(r,this.firstCheckboxColId()),this.core.selectionService.onRowClick(t,o,!0),!0):!1}emitCellClick(e,t,r,o){let i=this.core.getCellValue(t,o),s=this.core.emit("cellClicked",{event:e,rowNode:t,rowIndex:r,column:o,colDef:o.colDef,value:i});o.colDef.onCellClick?.(s),this.core.emit("rowClicked",{event:e,rowNode:t,rowIndex:r})}maybeStartSingleClickEdit(e,t,r){(this.core.options.singleClickEdit||r.colDef.singleClickEdit===!0)&&this.core.editingService.isEditable(e,r)&&this.core.editingService.start(t,r)}handleTreeToggleClick(e,t,r){if(!this.core.rowModel.isTree||!e.closest(".mach-detail-toggle"))return!1;let o=this.getTreeColumn();return!o||r?.dataset.colId!==o.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 ht=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=f("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=f("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,r=this.core.rowModel.getDisplayedRows().filter(i=>!i.isDetail&&!i.isGroup),o={...D,...this.core.options.locale};for(let i of["left","center","right"]){let s=this.core.columnModel.getPaneColumns(i),a=this.rows[i];this.cellsByPane[i].length!==s.length&&(a.textContent="",this.cellsByPane[i]=s.map(()=>{let d=f("div","mach-footer-cell");return d.setAttribute("role","cell"),a.appendChild(d),d}));let l=0;s.forEach((d,c)=>{let u=this.cellsByPane[i][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:r.map(h=>this.core.getCellValue(h,d))})}catch(h){this.core.reportError(h,"summaryMethod",{colId:d.id}),u.textContent=""}else c===0&&i==="left"?u.textContent=P(o.totalRowsLabel,r.length):u.textContent=""})}}destroy(){this.footerEl?.remove(),this.footerEl=null}};var pt=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=f("div","mach-pagination"),this.barEl.style.display="none",this.barEl.setAttribute("role","navigation");let e=(t,r,o)=>{let i=f("button",`mach-pagination-btn ${t}`);return i.type="button",i.title=r,i.setAttribute("aria-label",r),i.textContent=o,i};this.totalEl=f("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=f("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((r,o)=>r-o)),this.sizeSelect.textContent="";for(let r of e){let o=document.createElement("option");o.value=String(r),o.textContent=P(this.t("perPage"),r),r===t&&(o.selected=!0),this.sizeSelect.appendChild(o)}}t(e){return this.core.options.locale?.[e]??D[e]}rebuild(){this.barEl&&(this.sizeSelect&&this.core.options.paginationShowSizeSelector&&this.buildSizeOptions(),this.refresh())}setText(e,t){e&&e.textContent!==t&&(e.textContent=t)}refreshNavigation(e,t){let r=e<=1,o=e>=t;this.firstBtn&&(this.firstBtn.disabled=r),this.prevBtn&&(this.prevBtn.disabled=r),this.nextBtn&&(this.nextBtn.disabled=o),this.lastBtn&&(this.lastBtn.disabled=o)}refresh(){if(!this.barEl||this.core.isDestroyed())return;let e=this.core.rowModel,t=e.paginationActive,r=e.getTotalRowCount(),o=t&&r>0;if(this.barEl.style.display=o?"":"none",!o)return;let i=e.getCurrentPage(),s=e.getPageCount();this.totalEl&&this.core.options.paginationShowTotal&&this.setText(this.totalEl,P(this.t("paginationTotal"),r)),this.setText(this.pageEl,Ue(this.t("paginationPage"),i,s)),this.refreshNavigation(i,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 $=["left","center","right"],ft=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:f("div"),center:f("div"),right:f("div")},centerViewport:f("div","mach-pinned-viewport"),rowWrappers:{left:[],center:[],right:[]},cells:[],data:[]};for(let r of $)t.segments[r].className=`mach-pinned-seg mach-pinned-seg--${r}`,r!=="center"&&t.segments[r].classList.add("mach-pane--hidden"),r==="center"&&t.centerViewport.appendChild(t.segments[r]);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 i of e.cells)for(let s of $)for(let a of i[s])E(this.core,a);for(let i of $){for(let s of e.rowWrappers[i])s.remove();e.rowWrappers[i]=[]}if(e.cells=[],e.root.style.display=e.data.length>0?"":"none",e.data.length===0)return;let r=this.core.options.rowHeight,o=this.core.columnModel;e.data.forEach((i,s)=>{let a={id:`__pinned_${t}_${s}`,data:i,rowIndex:-1,selected:!1},l={};for(let d of $){let c=f("div","mach-pinned-row");c.style.height=`${r}px`,c.setAttribute("role","row"),l[d]=[];for(let u of o.getPaneColumns(d)){let h=f("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{We(this.core,h,a,u),he(this.core,h,a,u),ze(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},r={left:[],center:[],right:[]};for(let o of $){let i=0;for(let s of e.getPaneColumns(o))r[o].push(i),i+=s.currentWidth;t[o]=i}for(let o of[this.top,this.bottom]){let i=o.data.length===0;o.segments.left.classList.toggle("mach-pane--hidden",i||t.left<=0),o.segments.right.classList.toggle("mach-pane--hidden",i||t.right<=0),o.segments.left.style.width=`${t.left}px`,o.segments.right.style.width=`${t.right}px`,o.segments.center.style.width=`${t.center}px`,o.cells.forEach(s=>{let a=0;for(let l of $){let d=e.getPaneColumns(l);s[l].forEach((c,u)=>{c.style.width=`${d[u].currentWidth}px`,c.style.left=`${r[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 r of $)for(let o of t[r])E(this.core,o);this.top=null,this.bottom=null}};var mt=class{constructor(e){this.core=e;this.barEl=null;this.items={};this.offs=[]}init(){this.barEl=f("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 r=f("span",`mach-statusbar-item mach-statusbar-item--${t}`);this.barEl.appendChild(r),this.items[t]=r}this.refresh()}text(e,t,r){let o=e[t]??D[t];if(r===void 0)return o;let i=typeof r=="number"?r:parseFloat(String(r))||0;return P(o,i)}updateItem(e,t){let r=this.items[e];r&&r.textContent!==t&&(r.textContent=t)}rowCountText(e){let t=this.core.rowModel,r=t.getDisplayTotalCount(),o=t.paginationActive?t.getTotalRowCount():t.getDisplayedRowCount(),i=P(this.text(e,"totalRowsLabel"),o);return t.isInfinite&&r>o?`${i} / ${r}`:i}rangeAggregateText(e){let t=this.core.bodyRenderer.normalizedRange();if(!t)return"";let r=this.core.columnModel.getOrderedVisible(),o=0,i=0;for(let l=t.r1;l<=t.r2;l++){let d=this.core.rowModel.getDisplayedRow(l);if(!(!d||d.isDetail||d.isGroup))for(let c=t.c1;c<=t.c2;c++){let u=r[c];if(!u)continue;let h=this.core.getCellValue(d,u);typeof h!="number"||Number.isNaN(h)||(o+=h,i++)}}if(i===0)return"";let s=Math.round(o/i*100)/100,a=Number.isInteger(o)?String(o):String(Math.round(o*100)/100);return`${this.text(e,"statusSum",a)} \xB7 ${this.text(e,"statusAvg",String(s))} \xB7 ${this.text(e,"statusCount",String(i))}`}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={...D,...e.locale};if(this.items.rowCount&&this.updateItem("rowCount",this.rowCountText(t)),this.items.selectedRowCount){let r=this.core.selectionService.getSelectedNodes().length;this.updateItem("selectedRowCount",P(this.text(t,"statusSelected"),r))}this.items.rangeAggregate&&this.updateItem("rangeAggregate",this.rangeAggregateText(t))}destroy(){for(let e of this.offs)e();this.offs=[],this.barEl?.remove(),this.barEl=null}};function Jt(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}function go(n){return typeof TextEncoder>"u"?n.length*2:new TextEncoder().encode(n).byteLength}function Qt(n={}){let e=(n.namespace??"mach-table:grid-state").replace(/:+$/,""),t=Math.max(1024,Math.floor(n.maxBytes??512*1024)),r=i=>`${e}:${i}`,o=(i,s,a)=>{try{n.onError?.(i,s,a)}catch{}};return{storageKey:r,load(i){try{let s=(n.storage??Jt())?.getItem(r(i));if(!s)return null;if(go(s)>t)throw new RangeError(`[MachTable] Stored grid state for "${i}" exceeds ${t} bytes.`);let a=JSON.parse(s);if(a?.schemaVersion!==2)throw new TypeError(`[MachTable] Stored grid state for "${i}" uses an unsupported schema.`);let l=F(a.state);if(!l)throw new TypeError(`[MachTable] Stored grid state for "${i}" is invalid.`);return l}catch(s){return o(s,"load",i),null}},save(i,s){try{let a=F(s);if(!a)throw new TypeError(`[MachTable] Invalid grid state for "${i}".`);let l=JSON.stringify({schemaVersion:2,savedAt:Date.now(),state:a});if(go(l)>t)throw new RangeError(`[MachTable] Grid state for "${i}" exceeds ${t} bytes.`);(n.storage??Jt())?.setItem(r(i),l)}catch(a){o(a,"save",i)}},clear(i){try{(n.storage??Jt())?.removeItem(r(i))}catch(s){o(s,"clear",i)}}}}var Zt=Qt();function gt(n,e){Zt.save(n,e)}function yt(n){return Zt.load(n)}function yo(n){Zt.clear(n)}var Mi=[[/^(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 tr(n,e){let t=String(n??"");if(e){let r=e[t];if(r)return r;let o=e[t.toLowerCase()];if(o)return o}for(let[r,o]of Mi)if(r.test(t))return o;return"neutral"}function rr(n={}){return e=>{if(e.value==null||e.value==="")return"";let t=tr(e.value,n.variantMap),r=n.labelMap?.[String(e.value)]??(e.formatted||String(e.value)),o=document.createElement("span");return o.className=`mach-tag mach-tag--${t}`,o.textContent=r,o}}function or(n={}){return e=>{let t=Number(e.value);if(isNaN(t))return e.formatted;let r=Math.max(0,Math.min(100,t)),o=document.createElement("div");o.className="mach-progress";let i=document.createElement("div");i.className="mach-progress__track";let s=document.createElement("div");if(s.className="mach-progress__bar",s.style.width=`${r}%`,n.color&&(s.style.background=n.color),i.appendChild(s),o.appendChild(i),n.showValue!==!1){let a=document.createElement("span");a.className="mach-progress__label",a.textContent=`${Math.round(r)}${n.unit??"%"}`,o.appendChild(a)}return o}}function nr(n){if(n.value==null||n.value==="")return"";let e=document.createElement("span");return e.className="mach-link",e.textContent=n.formatted||String(n.value),e}var ir={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 vt(n,e=14){let t=ir[n]??"";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 _=null,N=null;function z(n=!1){_?.remove(),_=null,N&&(N.setAttribute("aria-expanded","false"),n&&N.isConnected&&N.focus({preventScroll:!0})),N=null,document.removeEventListener("mousedown",vo,!0),document.removeEventListener("keydown",sr,!0)}function vo(n){_&&!_.contains(n.target)&&!N?.contains(n.target)&&z()}function sr(n){if(!_)return;if(n.key==="Escape"){n.preventDefault(),z(!0);return}let e=[..._.querySelectorAll("button:not(:disabled)")];if(e.length===0)return;if(n.key==="Tab"){let o=e.indexOf(document.activeElement);(!n.shiftKey&&o===e.length-1||n.shiftKey&&o<=0)&&(n.preventDefault(),e[n.shiftKey?e.length-1:0].focus());return}if(n.key!=="ArrowDown"&&n.key!=="ArrowUp")return;n.preventDefault();let t=e.indexOf(document.activeElement),r=n.key==="ArrowDown"?1:-1;e[(t+r+e.length)%e.length].focus()}function wo(n,e){let t=document.createElement("button");return t.type="button",t.className=e,n.variant&&n.variant!=="default"&&t.classList.add(`${e}--${n.variant}`),t.disabled=n.disabled===!0,n.icon&&ir[n.icon]?t.innerHTML=`${vt(n.icon,16)}<span>${n.label}</span>`:t.textContent=n.label,t.addEventListener("click",()=>n.pick(t)),t}function Ii(n,e){z();let t=document.createElement("div");t.className="mach-context-menu mach-action-menu",t.setAttribute("role","menu");for(let i of e){let s=wo(i,"mach-context-menu-item");s.setAttribute("role","menuitem"),t.appendChild(s)}document.body.appendChild(t);let r=n.getBoundingClientRect(),o=t.getBoundingClientRect();t.style.left=`${Math.min(Math.max(8,r.left),window.innerWidth-o.width-8)}px`,t.style.top=`${Math.min(r.bottom+4,window.innerHeight-o.height-8)}px`,_=t,N=n,n.setAttribute("aria-expanded","true"),document.addEventListener("mousedown",vo,!0),document.addEventListener("keydown",sr,!0),t.querySelector("button:not(:disabled)")?.focus({preventScroll:!0})}function ki(n,e,t){z();let r=document.createElement("div");r.className="mach-action-drawer-backdrop";let o=document.createElement("section");o.className="mach-action-drawer",o.setAttribute("role","dialog"),o.setAttribute("aria-modal","true"),o.setAttribute("aria-label",e);let i=document.createElement("header");i.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=vt("close",16),a.addEventListener("click",()=>z(!0)),i.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"));o.append(i,l),r.appendChild(o),r.addEventListener("mousedown",d=>{d.target===r&&z(!0)}),document.body.appendChild(r),_=r,N=n,n.setAttribute("aria-expanded","true"),document.addEventListener("keydown",sr,!0),o.querySelector("button:not(:disabled)")?.focus({preventScroll:!0})}function W(n,e){if(typeof n=="function")try{return n(e)}catch{return!1}return n===!0}function bo(n){return n.variant??"default"}function Co(n){return n.permission?typeof n.permission=="string"?[n.permission]:n.permission:[]}function ar(n,e,t){return{...n.id?{actionId:n.id}:{},permissions:Co(n),...t?{message:t}:{},params:e}}function wt(n,e,t){let r=t.api.getOption("actionPolicy");try{r?.onError?r.onError(n,ar(e,t)):console.error("[mach-table] action handler failed",n)}catch(o){console.error("[mach-table] action error policy failed",o,n)}}function Ai(n,e){if(Co(n).length===0)return!0;let r=e.api.getOption("actionPolicy");if(!r?.canAccess)return!0;try{return r.canAccess(ar(n,e))}catch(o){return wt(o,n,e),!1}}function Pi(n,e){return n.filter(t=>{if(!Ai(t,e))return!1;if(!t.show)return!0;try{return t.show(e)}catch{return!1}})}function lr(n,e,t){t.isConnected&&(t.disabled=W(n.disabled,e)||W(n.loading,e),t.classList.toggle("mach-action-btn--loading",W(n.loading,e)))}function Li(n,e,t,r){Promise.resolve(n).catch(o=>wt(o,e,t)).finally(()=>lr(e,t,r))}function Gi(n,e,t){try{Li(n.onClick(e),n,e,t)}catch(r){wt(r,n,e),lr(n,e,t)}}function er(n,e,t){if(n===!1)return!1;let r=typeof n=="string"?n:e.label??e.title??"Confirm action",o=t.api.getOption("actionPolicy");return o?.confirm?o.confirm(ar(e,t,r)):typeof window>"u"||typeof window.confirm!="function"?!1:window.confirm(r)}function Fi(n,e){if(n.confirm==null||n.confirm===!1)return!0;if(typeof n.confirm!="function")return er(n.confirm,n,e);let t=n.confirm(e);return t instanceof Promise?t.then(r=>er(r,n,e)):er(t,n,e)}function Ni(n){return(e,t)=>{if(W(e.disabled,n))return;if(t.disabled=!0,t.classList.add("mach-action-btn--loading"),e.confirm==null||e.confirm===!1){Gi(e,n,t);return}(async()=>{await Fi(e,n)&&await e.onClick(n)})().catch(o=>wt(o,e,n)).finally(()=>{lr(e,n,t)})}}function Oi(n,e,t){let r=document.createElement("button");r.type="button",r.className="mach-action-btn";let o=bo(n);o!=="default"&&r.classList.add(`mach-action-btn--${o}`);let i=n.title??n.label??"Action";return r.title=i,r.setAttribute("aria-label",i),r.disabled=W(n.disabled,e),W(n.loading,e)&&(r.disabled=!0,r.classList.add("mach-action-btn--loading")),n.icon&&ir[n.icon]?(r.innerHTML=vt(n.icon),r.classList.add("mach-action-btn--icon")):r.textContent=n.label??i,r.addEventListener("mousedown",s=>s.stopPropagation()),r.addEventListener("click",s=>{s.stopPropagation(),t(n,r)}),r}function Hi(n,e,t,r,o){let i=document.createElement("button");i.type="button",i.className="mach-action-btn mach-action-btn--icon";let s=r.api.getOption("locale")??{},a=t.moreLabel??s.actionMore??D.actionMore;return i.title=a,i.setAttribute("aria-label",a),i.setAttribute("aria-haspopup",e==="drawer"?"dialog":"menu"),i.setAttribute("aria-expanded","false"),i.innerHTML=`${vt("more",16)}<span class="mach-sr-only">\u22EF</span>`,i.addEventListener("mousedown",l=>l.stopPropagation()),i.addEventListener("click",l=>{l.stopPropagation();let d=n.map(c=>({label:c.label??c.title??"Action",icon:c.icon,variant:bo(c),disabled:W(c.disabled,r)||W(c.loading,r),pick:u=>{z(),o(c,u)}}));e==="drawer"?ki(i,t.drawerTitle??a,d):Ii(i,d)}),i}function ne(n){let e=Math.max(0,n.max??3),t=n.overflow??"menu";return r=>{let o=Pi(n.actions,r);if(o.length===0)return"";let i=document.createElement("div");i.className="mach-actions";let s=t==="inline"?o:o.slice(0,e),a=t==="inline"?[]:o.slice(e),l=Ni(r);for(let d of s)i.appendChild(Oi(d,r,l));return a.length>0&&i.appendChild(Hi(a,t,n,r,l)),{el:i,destroy:()=>{N&&i.contains(N)&&z()}}}}function oe(n,e,t){return n??e??t}function Bi(n,e){let t=e.api.getOption("locale")??{};return{view:oe(n.labels?.view,t.actionView,D.actionView),edit:oe(n.labels?.edit,t.actionEdit,D.actionEdit),delete:oe(n.labels?.delete,t.actionDelete,D.actionDelete),confirm:oe(n.labels?.confirm,t.actionConfirm,D.actionConfirm),save:oe(n.labels?.save,t.actionSave,D.actionSave),cancel:oe(n.labels?.cancel,t.actionCancel,D.actionCancel)}}function Vi(n,e,t){let r=async()=>{if(!await e.api.editing.stop()||!n.onSave)return;let s=e.api.editing.getChanges().filter(a=>a.rowId===e.node.id);try{await n.onSave(e,s),e.api.editing.markSaved([e.node.id])}catch(a){throw e.api.editing.startRow(e.rowIndex),a}},o=n.onSave?t.save:n.labels?.confirm??n.labels?.save??t.confirm;return ne({actions:[{icon:"check",title:o,variant:"primary",onClick:r},{icon:"close",title:t.cancel,onClick:()=>e.api.editing.stop({cancel:!0}).then(()=>{})}],overflow:"inline"})(e)}function zi(n,e,t){let r=[];return n.onView&&r.push({id:"view",icon:"view",title:t.view,variant:"primary",...n.permissions?.view?{permission:n.permissions.view}:{},onClick:n.onView}),n.edit!==!1&&r.push({id:"edit",icon:"edit",title:t.edit,variant:"warning",...n.permissions?.edit?{permission:n.permissions.edit}:{},onClick:()=>{e.api.editing.startRow(e.rowIndex)}}),n.onDelete&&r.push({id:"delete",icon:"delete",title:t.delete,variant:"danger",...n.permissions?.delete?{permission:n.permissions.delete}:{},...n.confirmDelete?{confirm:n.confirmDelete===!0?t.delete:n.confirmDelete}:{},onClick:n.onDelete}),r.push(...n.extraActions??[]),r}function bt(n={}){return e=>{let t=Bi(n,e);if(e.api.editing.isRowActive(e.rowIndex))return Vi(n,e,t);let r=zi(n,e,t);return ne({actions:r,max:n.max,overflow:n.overflow??"drawer",moreLabel:n.moreLabel,drawerTitle:n.drawerTitle})(e)}}var Wi=rr(),_i=or(),Ro=Object.freeze({statusTag:Wi,progressBar:_i,link:nr});function Ki(n){return!!(n.field||n.valueGetter||n.checkboxSelection||n.autoRowSpan||n.rowSpan)}function Ui(n,e,t){n.width!=null&&n.minWidth!=null&&n.width<n.minWidth&&t.push(`\u5217 "${e}" \u7684 width(${n.width}) \u5C0F\u4E8E minWidth(${n.minWidth})\uFF0C\u5C06\u6309 minWidth \u6E32\u67D3`),n.width!=null&&n.maxWidth!=null&&n.width>n.maxWidth&&t.push(`\u5217 "${e}" \u7684 width(${n.width}) \u5927\u4E8E maxWidth(${n.maxWidth})\uFF0C\u5C06\u6309 maxWidth \u6E32\u67D3`)}function qi(n,e){let t=n.colId??n.field??`col_${e.leafIndex}`;e.seenIds.set(t,(e.seenIds.get(t)??0)+1),n.field&&!Y(n.field)&&e.issues.push(`\u5217 "${t}" \u7684 field \u8DEF\u5F84\u4E0D\u5B89\u5168\u6216\u65E0\u6548\uFF0C\u5DF2\u7981\u6B62\u8BFB\u53D6\u548C\u5199\u5165`),Ki(n)||e.issues.push(`\u5217 "${t}" \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`),Ui(n,t,e.issues)}function To(n,e){for(let t of n){if(Q(t)){!Array.isArray(t.children)||t.children.length===0?e.issues.push(`\u5217\u5206\u7EC4 "${t.headerName??t.groupId??"?"}" \u7684 children \u4E3A\u7A7A`):To(t.children,e);continue}e.leafIndex++,qi(t,e)}}function Do(n){if(!n||n.length===0)return[];let e={issues:[],seenIds:new Map,leafIndex:0};To(n,e);for(let[t,r]of e.seenIds)r>1&&e.issues.push(`\u5B58\u5728 ${r} \u4E2A\u91CD\u590D\u7684 colId/field "${t}"\uFF0C\u5DF2\u81EA\u52A8\u52A0\u540E\u7F00\u533A\u5206\uFF0C\u5EFA\u8BAE\u663E\u5F0F\u547D\u540D colId`);return e.issues}var $i=V.map(n=>`on${n.charAt(0).toUpperCase()}${n.slice(1)}`),So=new Set([...nt,...$i]);function ji(n,e){if(n===e)return 0;if(n.length===0)return e.length;if(e.length===0)return n.length;let t=Array.from({length:e.length+1},(r,o)=>o);for(let r=1;r<=n.length;r++){let o=[r];for(let i=1;i<=e.length;i++)o[i]=Math.min(o[i-1]+1,t[i]+1,t[i-1]+(n[r-1]===e[i-1]?0:1));t=o}return t[e.length]}function Yi(n){let e,t=Number.POSITIVE_INFINITY;for(let o of So){let i=ji(n.toLowerCase(),o.toLowerCase());i<t&&(t=i,e=o)}let r=Math.max(2,Math.floor(n.length*.3));return t<=r?e:void 0}function Xi(n){let e=[];return n.rowKey!=null&&typeof n.rowKey!="string"&&typeof n.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"}),n.domLayout==="autoHeight"&&n.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.push(...Ji(n)),n.enableColumnResize!=null&&typeof n.enableColumnResize!="boolean"&&e.push({code:"INVALID_OPTION_VALUE",option:"enableColumnResize",message:"enableColumnResize \u5FC5\u987B\u662F boolean\uFF1B\u672A\u914D\u7F6E\u65F6\u9ED8\u8BA4\u5173\u95ED"}),e}function Ji(n){if(n.datasourceMode!=="block")return[];let e=[];return n.datasource==null&&e.push({code:"OPTION_CONFLICT",option:"datasourceMode",message:"datasourceMode='block' requires a datasource"}),typeof n.getRowHeight=="function"&&e.push({code:"OPTION_CONFLICT",option:"getRowHeight",message:"Random-access block rows require fixed rowHeight so unloaded offsets remain deterministic"}),n.masterDetail===!0&&e.push({code:"OPTION_CONFLICT",option:"masterDetail",message:"masterDetail is not supported by the sparse random-access block row model"}),n.treeData===!0&&e.push({code:"OPTION_CONFLICT",option:"treeData",message:"treeData requires the local/tree row model and cannot use random-access blocks"}),Eo(n)||e.push({code:"MISSING_STABLE_ROW_ID",option:"rowKey",message:"Random-access blocks require rowKey to preserve selection and identity after eviction"}),e}function Eo(n){return n.rowKey!=null}function Qi(n){let e=new Set(["enableColumnResize","pagination","rowKey"]),t=[];for(let r of nt){if(e.has(r)||!Object.prototype.hasOwnProperty.call(n,r))continue;let o=n[r],i=te[r].kind;Ut(o,i)||t.push({code:"INVALID_OPTION_VALUE",option:r,message:`${r} \u503C\u7C7B\u578B\u65E0\u6548\uFF0C\u671F\u671B ${i}`})}return t}function Zi(n){let e=[];for(let t of Object.keys(n)){if(So.has(t))continue;let r=Yi(t);e.push({code:"UNKNOWN_OPTION",option:t,...r?{suggestion:r}:{},message:r?`\u672A\u77E5 GridOption "${t}"\uFF0C\u662F\u5426\u60F3\u4F7F\u7528 "${r}"\uFF1F`:`\u672A\u77E5 GridOption "${t}"\uFF0C\u8BE5\u503C\u4E0D\u4F1A\u751F\u6548`})}return e}function es(n,e){if(e.mode!=="server")return[];let t=[];Eo(n)||t.push({code:"MISSING_STABLE_ROW_ID",option:"rowKey",message:"\u670D\u52A1\u7AEF\u5206\u9875\u5EFA\u8BAE\u63D0\u4F9B\u7A33\u5B9A rowKey\uFF0C\u5426\u5219\u8DE8\u9875\u9009\u62E9\u4E0E\u589E\u91CF\u66F4\u65B0\u65E0\u6CD5\u53EF\u9760\u4FDD\u6301"});let r=e.total;return r!==void 0&&(typeof r!="number"||!Number.isFinite(r)||r<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"}),t}function ts(n){let e=[],t=n.pagination;return t!=null&&typeof t!="boolean"&&typeof t!="object"&&e.push({code:"INVALID_OPTION_VALUE",option:"pagination",message:"pagination \u5FC5\u987B\u662F boolean \u6216\u914D\u7F6E\u5BF9\u8C61"}),n.datasource!=null&&t!==void 0&&t!==!1&&e.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'"}),t&&typeof t=="object"&&e.push(...es(n,t)),e}function rs(n){return n.treeData!==!0||n.masterDetail!==!0?[]:[{code:"OPTION_CONFLICT",option:"masterDetail",message:"treeData \u4E0E masterDetail \u4E0D\u80FD\u540C\u65F6\u542F\u7528\uFF0C\u4E3B\u4ECE\u660E\u7EC6\u5C06\u88AB\u5FFD\u7565"}]}function Ct(n){let e=n,t=Zi(e);return t.push(...ts(e)),t.push(...rs(e)),t.push(...Qi(e)),t.push(...Xi(e)),t}function xo(n){let e=/^v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:[-+].*)?$/.exec(n.trim());return e?[Number(e[1]),Number(e[2]??0),Number(e[3]??0)]:null}function dr(n,e){for(let t=0;t<3;t++)if(n[t]!==e[t])return n[t]<e[t]?-1:1;return 0}function os(n){return n[0]>0?[n[0]+1,0,0]:n[1]>0?[0,n[1]+1,0]:[0,0,n[2]+1]}function ns(n,e){if(e==="*"||e.toLowerCase()==="latest")return!0;let t=/^(\^|~|>=|<=|>|<|=)?\s*(.+)$/.exec(e);if(!t)return!1;let r=xo(t[2]);if(!r)return!1;let o=dr(n,r);switch(t[1]??"="){case">=":return o>=0;case"<=":return o<=0;case">":return o>0;case"<":return o<0;case"^":return o>=0&&dr(n,os(r))<0;case"~":return o>=0&&dr(n,[r[0],r[1]+1,0])<0;default:return o===0}}function Mo(n,e){if(!e?.trim())return!0;let t=n?xo(n):null;return t?e.split("||").some(r=>{let o=r.trim().split(/\s+/).filter(Boolean);return o.length>0&&o.every(i=>ns(t,i))}):!1}function is(n){return[...new Set((n??[]).map(e=>e.trim()).filter(Boolean))]}function Rt(n){let e=new Map;for(let t of n??[]){let r=(typeof t=="string"?t:t?.key??"").trim();if(!r||e.has(r))continue;let o=typeof t=="object"?t.version?.trim():void 0;e.set(r,{key:r,...o?{version:o}:{}})}return[...e.values()]}function Tt(n){let e=[],t=new Map;for(let l of n){let d=typeof l?.key=="string"?l.key.trim():"";if(!d){e.push({code:"INVALID_FEATURE_KEY",message:"GridFeature.key must be a non-empty string"});continue}if(t.has(d)){e.push({code:"DUPLICATE_FEATURE",feature:d,message:`Duplicate GridFeature key: ${d}`});continue}t.set(d,l)}let r=new Set;for(let[l,d]of t){for(let c of Rt(d.requires)){let u=t.get(c.key);u?Mo(u.version,c.version)||(r.add(l),e.push({code:"UNSUPPORTED_FEATURE_VERSION",feature:l,dependency:c.key,message:`GridFeature "${l}" requires "${c.key}" ${c.version}, received ${u.version??"unversioned"}`})):(r.add(l),e.push({code:"MISSING_FEATURE_DEPENDENCY",feature:l,dependency:c.key,message:`GridFeature "${l}" requires missing feature "${c.key}"`}))}for(let c of is(d.conflicts))if(t.has(c)){r.add(l),e.push({code:"FEATURE_CONFLICT",feature:l,dependency:c,message:`GridFeature "${l}" conflicts with "${c}"`});break}}let o=[],i=new Set,s=new Set,a=l=>{if(s.has(l))return!r.has(l);if(i.has(l))return r.add(l),e.push({code:"FEATURE_CYCLE",feature:l,message:`GridFeature dependency cycle includes "${l}"`}),!1;let d=t.get(l);if(!d||r.has(l))return!1;i.add(l);let c=!0;for(let u of Rt(d.requires))a(u.key)||(c=!1);return i.delete(l),s.add(l),c?(o.push(d),!0):(r.add(l),!1)};for(let l of t.keys())a(l);return{features:o.filter(l=>!r.has(l.key.trim())),issues:e}}var ss=["datasource","treeData"],as=["columnState.","gridState."],ls=new Set(["valueFormatter","cellStyle","cellClass"]),ds=new Set(["selectionChanged","sortChanged","filterChanged","columnMoved","columnVisibilityChanged","displayedColumnsChanged","paginationChanged","detailToggled"]),cs=0,Dt=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.gridStateMutationVersion=0;this.applyingPersistedGridState=!1;this.stateSaveInFlight=!1;this.pendingStateSave=null;this.lastValidatedDefs=null;this.issuedWarningSignatures=new Set;let r;this.readyPromise=new Promise(o=>{r=o}),this.resolveReady=r,this.gridId=++cs,this.options=br(t),this.eventBus=new we((o,i)=>{i==="gridError"?console.error("[mach-table] error in gridError listener",o):this.reportError(o,"eventBus.listener",{eventType:i})}),this.columnModel=new Te(this),this.rowModel=new ke(this),this.selectionService=new Ae(this),this.skeleton=new it(this),this.headerRenderer=new at(this),this.bodyRenderer=new ut(this),this.resizeService=new Pe(this),this.columnDragService=new Le(this),this.keyboardService=new Oe(this),this.editingService=new _e(this),this.undoService=new Qe(this),this.performanceMonitor=new tt,this.updateScheduler=new rt(o=>this.applyScheduledUpdate(o)),this.filterPopup=new $e(this),this.columnMenu=new je(this),this.contextMenuService=new Ye(this),this.tooltipService=new Xe(this),this.watermarkService=new Je(this),this.paginationBar=new pt(this),this.pinnedRowsRenderer=new ft(this),this.summaryRenderer=new ht(this),this.statusBarService=new mt(this),this.api=uo(this),this.changeTracker=new Ze(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.rowModel.setAdvancedFilterModel(this.options.advancedFilterModel),this.rowModel.setQuickFilter(this.options.quickFilterText),this.refreshAriaState(),this.validateDefs(this.options.columnDefs),this.checkWarnings(t),this.headerRenderer.build(),this.options.datasource?this.rowModel.startInfinite().catch(()=>{}):this.rowModel.setRowData(this.options.rowData),this.options.initialState&&this.api.state.apply(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(o){throw this.reportError(o,"grid.constructor"),this.destroy(),o}}getApi(){return this.api}whenReady(){return this.readyPromise}settleReady(){this.readySettled||(this.readySettled=!0,this.resolveReady(this.api))}resolveCellRenderer(e){return this.options.components?.cellRenderers?.[e]??Ro[e]}resolveCellEditor(e){return this.options.components?.cellEditors?.[e]}inactiveFeatureDependency(e){return Rt(e.requires).map(t=>t.key).find(t=>!this.activeFeatures.has(t))}setFeatures(e){if(this.destroyFeatures(),this.destroyed)return;let t=Tt(e??[]);for(let r of t.issues)this.reportError(new Error(r.message),"feature.manifest",{code:r.code,...r.feature?{key:r.feature}:{},...r.dependency?{dependency:r.dependency}:{}});for(let r of t.features){let o=r.key.trim(),i=this.inactiveFeatureDependency(r);if(i){this.reportError(new Error(`GridFeature "${o}" dependency "${i}" did not initialise`),"feature.manifest",{code:"FEATURE_DEPENDENCY_SETUP_FAILED",key:o,dependency:i});continue}let s=[],a=d=>{let c=!0,u=()=>{c&&(c=!1,d())};return s.push(u),u},l={api:this.api,root:this.skeleton.root,getOptions:()=>this.options,addEventListener:(d,c)=>a(this.eventBus.on(d,c)),onCleanup:d=>{a(d)},addManagedDomListener:(d,c,u,h)=>(d.addEventListener(c,u,h),a(()=>d.removeEventListener(c,u,h))),setManagedTimeout:(d,c)=>{let u=setTimeout(d,Math.max(0,c));return a(()=>clearTimeout(u)),u},createAbortController:()=>{let d=new AbortController;return a(()=>d.abort()),d},reportError:(d,c,u)=>this.reportError(d,`feature.${c}`,u)};try{let d=r.setup(l);typeof d=="function"&&a(d),this.activeFeatures.set(o,{feature:r,cleanups:s})}catch(d){for(let c of s.reverse())try{c()}catch(u){this.reportError(u,"feature.cleanup",{key:o})}this.reportError(d,"feature.setup",{key:o})}}}destroyFeatures(){let e=[...this.activeFeatures.entries()].reverse();this.activeFeatures.clear();for(let[t,r]of e){for(let o of r.cleanups.reverse())try{o()}catch(i){this.reportError(i,"feature.cleanup",{key:t})}try{r.feature.destroy?.()}catch(o){this.reportError(o,"feature.destroy",{key:t})}}}isDestroyed(){return this.destroyed}nextId(){return++this.autoIdCounter}getCellValue(e,t){let r=t.colDef;if(r.valueGetter)try{return r.valueGetter({api:this.api,colDef:r,column:t,node:e,data:e.data})}catch(o){this.reportError(o,"valueGetter",{colId:t.id,rowId:e.id});return}if(r.field)return B(e.data,r.field)}getLocaleText(e){return this.options.locale[e]??D[e]}writeValue(e,t,r,o){let i=t.colDef;if(i.valueSetter)try{return i.valueSetter({oldValue:o,newValue:r,data:e.data,node:e,colDef:i,column:t,api:this.api})}catch(s){return this.reportError(s,"valueSetter",{colId:t.id,rowId:e.id}),!1}return i.field?K(e.data,i.field,r):!1}setCellValue(e,t,r,o){if(r===void 0||r===o)return!1;let i=t.colDef,s;if(i.valueSetter)try{s=i.valueSetter({oldValue:o,newValue:r,data:e.data,node:e,colDef:i,column:t,api:this.api})}catch(a){return this.reportError(a,"valueSetter",{colId:t.id,rowId:e.id}),!1}else if(i.field)s=K(e.data,i.field,r);else return!1;return s&&this.notifyCellValueChanged(e,t,o,r),s}notifyCellValueChanged(e,t,r,o){this.bodyRenderer.invalidateRowHeight(e),this.bodyRenderer.queueFlash([e.rowIndex],[t.id]),this.emit("cellValueChanged",{oldValue:r,newValue:o,rowNode:e,rowIndex:e.rowIndex,column:t,colDef:t.colDef,data:e.data}),this.undoService.record({nodeId:e.id,columnId:t.id,oldValue:r,newValue:o})}buildRangeTsv(e){let r=this.columnModel.getOrderedVisible().slice(e.c1,e.c2+1),o=[];for(let i=e.r1;i<=e.r2;i++){let s=this.rowModel.getDisplayedRow(i);o.push(r.map(a=>!s||s.isDetail||s.isGroup?"":ue(this,s,a,this.getCellValue(s,a))))}return ee(o)}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(),r=new Set;this.undoService.beginBatch();try{for(let o=e.r1;o<=e.r2;o++){let i=this.rowModel.getDisplayedRow(o);if(!(!i||i.isDetail||i.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(i,a))continue;let l=this.getCellValue(i,a);this.setCellValue(i,a,null,l)&&r.add(o)}}}finally{this.undoService.endBatch()}r.size>0&&(this.bodyRenderer.refreshRows([...r]),this.summaryRenderer.refresh())}pasteText(e,t,r){if(this.destroyed)return;let o=Ge(e);if(o.length===0)return;let i=this.columnModel.getOrderedVisible(),s=this.rowModel.getDisplayedRowCount(),a=new Set,l=t;this.undoService.beginBatch();try{for(let d of o){let c=this.nextPasteRow(l,s);if(!c)break;this.pasteLine(c.node,c.index,d,i,r,a),l=c.index+1}}finally{this.undoService.endBatch()}a.size>0&&(this.bodyRenderer.refreshRows([...a]),this.summaryRenderer.refresh())}nextPasteRow(e,t){for(let r=e;r<t;r++){let o=this.rowModel.getDisplayedRow(r);if(o&&!o.isDetail&&!o.isGroup)return{index:r,node:o}}return null}nextPasteColumn(e,t){let r=t;for(;r<e.length;){let o=e[r];if(!o.hasCheckbox&&!o.isDetailToggle&&!o.colDef.rowDrag)break;r++}return r}pasteLine(e,t,r,o,i,s){let a=i;for(let l of r){if(a=this.nextPasteColumn(o,a),a>=o.length)return;this.pasteCell(e,o[a],l)&&s.add(t),a++}}pasteCell(e,t,r){if(!this.editingService.isEditable(e,t))return!1;let o=this.getCellValue(e,t),i=typeof o=="number"&&r!==""&&!Number.isNaN(Number(r)),s=r===""?null:i?Number(r):r;return this.setCellValue(e,t,s,o)}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 r={type:e,api:this.api,...t};this.eventBus.emit(e,r);let o="on"+e.charAt(0).toUpperCase()+e.slice(1),i=this.options[o];if(typeof i=="function")try{i(r)}catch(a){e==="gridError"?console.error("[mach-table] error in onGridError",a):this.reportError(a,`eventHandler.${String(o)}`,{eventType:e})}return(e==="columnResized"&&r.finished||ds.has(e))&&this.scheduleGridStateSave(),r}reportError(e,t,r){let o=this.errorCodeFor(t,e),i=e instanceof Error?e.message:String(e);this.recentErrors.push({code:o,source:t,message:i,timestamp:Date.now(),...r?{context:r}:{}}),this.recentErrors.length>50&&this.recentErrors.splice(0,this.recentErrors.length-50),console.error(`[mach-table] ${o} (${t})`,e),!this.destroyed&&this.emit("gridError",{code:o,error:e,source:t,context:r})}errorCodeFor(e,t){if(ss.some(o=>e.startsWith(o)))return"DATA_SOURCE_ERROR";let r=t instanceof Error?t.message:String(t);return e==="rowKey"||r.includes("Duplicate row id")?"DATA_INTEGRITY_ERROR":e==="validate"?"VALIDATION_ERROR":e.toLowerCase().includes("renderer")||ls.has(e)?"RENDERER_ERROR":e.toLowerCase().includes("editor")||e==="editable"?"EDITOR_ERROR":e.startsWith("feature.")?"FEATURE_ERROR":as.some(o=>e.startsWith(o))?"STATE_ERROR":e.startsWith("eventBus.")||e.startsWith("eventHandler.")?"EVENT_HANDLER_ERROR":"GRID_ERROR"}getDiagnostics(){return{gridId:this.gridId,version:ve.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,activeFeatures:[...this.activeFeatures].map(([e,t])=>({key:e,...t.feature.version?{version:t.feature.version}:{}})),performance:this.performanceMonitor.snapshot(),updates:this.updateScheduler.snapshot(),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.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.requestUpdate({data:!0})}applyColumnFilter(e,t){let r=this.rowModel.getFilterModel();if(t?r[e.id]=t:delete r[e.id],this.rowModel.setFilterModel(r),this.headerRenderer.refreshFilterIcons(),this.emit("filterChanged",{filterModel:this.rowModel.getFilterModel(),advancedFilterModel:this.rowModel.getAdvancedFilterModel()}),this.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.requestUpdate({data:!0})}applyQuickFilter(){if(this.emit("filterChanged",{filterModel:this.rowModel.getFilterModel(),advancedFilterModel:this.rowModel.getAdvancedFilterModel()}),this.rowModel.isInfinite){this.rowModel.onServerParamsChanged();return}this.rowModel.refreshPipeline(),this.requestUpdate({data:!0})}moveColumn(e,t){this.columnModel.moveColumn(e,t)&&(this.onColumnsStructureChanged(),this.emit("columnMoved",{colId:e,toIndex:t}))}toggleDetail(e){return this.rowModel.toggleDetail(e)}emitColumnResize(e,t){this.emit("columnResized",{colId:e.id,width:e.currentWidth,finished:t})}commitColumnWidths(e){if(!(this.destroyed||e.length===0))for(let t of e){if(this.destroyed)break;this.emitColumnResize(t,!0)}}loadPersistedGridState(){let e=++this.gridStateLoadToken,t=this.gridStateMutationVersion,r=this.options.persistence;if(!r)return;let{key:o,store:i,sections:s}=r,a;try{a=i?i.load(o):yt(o)}catch(d){this.reportError(d,"gridState.load");return}let l=d=>{if(!(this.destroyed||e!==this.gridStateLoadToken||t!==this.gridStateMutationVersion||!d)){this.applyingPersistedGridState=!0;try{this.api.state.apply(d,{emitEvents:!1,...s?{sections:s}:{}})}finally{this.applyingPersistedGridState=!1}}};a&&typeof a.then=="function"?Promise.resolve(a).then(l).catch(d=>this.reportError(d,"gridState.load")):l(a)}scheduleGridStateSave(){let e=this.options.persistence;if(!(!e||this.destroyed||this.applyingPersistedGridState)){if(this.gridStateMutationVersion++,this.stateSaveTimer&&clearTimeout(this.stateSaveTimer),e.debounceMs===0){this.stateSaveTimer=null,this.persistGridState();return}this.stateSaveTimer=setTimeout(()=>{this.stateSaveTimer=null,this.persistGridState()},e.debounceMs)}}persistGridState(){let e=this.options.persistence;if(!e||this.destroyed)return;let{key:t,store:r,sections:o}=e,i=this.api.state.get(),s=o?qr(i,o):i,a={key:t,...r?{store:r}:{},state:s};if(this.stateSaveInFlight){this.pendingStateSave=a;return}this.writeGridState(a)}writeGridState(e){try{let t=e.store?e.store.save(e.key,e.state):gt(e.key,e.state);if(!t||typeof t.then!="function")return;this.stateSaveInFlight=!0,Promise.resolve(t).catch(r=>this.reportError(r,"gridState.save")).finally(()=>{this.stateSaveInFlight=!1;let r=this.pendingStateSave;this.pendingStateSave=null,r&&this.writeGridState(r)})}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 r=document.createElement("div");return r.className="mach-empty__hint",r.textContent=this.getLocaleText("requestFailedHint"),e.append(t,r),e}buildDefaultEmptyState(){let e=this.options.locale??{},t=e.emptyRows??D.emptyRows,r=e.emptyRowsHint??D.emptyRowsHint,o=document.createElement("div");o.className="mach-empty";let i=document.createElementNS("http://www.w3.org/2000/svg","svg");i.setAttribute("class","mach-empty__icon"),i.setAttribute("viewBox","0 0 96 84"),i.setAttribute("width","96"),i.setAttribute("height","84"),i.setAttribute("fill","none"),i.setAttribute("aria-hidden","true"),i.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=r,o.append(i,s,a),o}checkWarnings(e){if(!(this.options.suppressWarnings||this.destroyed)){if(e)for(let t of Ct(e)){let r=`${t.code}:${t.option??""}:${t.message}`;this.issuedWarningSignatures.has(r)||(this.issuedWarningSignatures.add(r),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 Do(e))this.issuedWarningSignatures.has(t)||(this.issuedWarningSignatures.add(t),console.warn(`[mach-table] ${t}`))}}onColumnsStructureChanged(){this.updateScheduler.schedule({columns:!0})}requestUpdate(e){this.updateScheduler.schedule(e)}batchUpdates(e){return this.updateScheduler.batch(e)}applyScheduledUpdate(e){this.destroyed||(e.columns?this.applyColumnsStructureChanged():(e.header&&this.headerRenderer.build(),e.pool?this.bodyRenderer.rebuildPool():e.layout&&this.relayout()),e.data&&!e.pool&&!e.columns?this.bodyRenderer.onDataChanged():e.cells&&this.bodyRenderer.refreshCells(e.cells===!0?void 0:e.cells),e.pinned&&this.pinnedRowsRenderer.refresh(),e.summary&&this.summaryRenderer.refresh(),e.overlays&&this.bodyRenderer.refreshOverlays())}applyColumnsStructureChanged(){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;let e=this.performanceMonitor.start();this.refreshAriaState(),this.columnModel.computeLayout(this.skeleton.measureViewportWidth());let t=this.columnModel.getOrderedVisible().map(r=>`${r.id}:${r.currentWidth}`).join("|");this.lastColumnLayoutSignature&&t!==this.lastColumnLayoutSignature&&this.bodyRenderer.invalidateAllRowHeights(),this.lastColumnLayoutSignature=t,this.skeleton.root.setAttribute("aria-colcount",String(this.columnModel.getOrderedVisible().length)),this.headerRenderer.applyLayout(),this.bodyRenderer.relayout(),this.pinnedRowsRenderer.applyLayout(),this.summaryRenderer.refresh(),this.performanceMonitor.recordLayout(e)}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(r=>!!r.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,r)=>{try{r()}catch(o){console.error(`[mach-table] ${t} destroy error`,o)}};e("grid event",()=>this.emit("gridDestroyed",{})),e("updateScheduler",()=>this.updateScheduler.destroy()),e("performanceMonitor",()=>this.performanceMonitor.destroy()),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 Io(n,e={}){if(!n)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 Dt(n,e).getApi()}function us(n){return n.value===!0?"\u662F":n.value===!1?"\u5426":""}function hs(n){return e=>{if(e.value==null||e.value==="")return"";let t=e.value instanceof Date?e.value.toISOString():String(e.value);return n==="datetime"?t.slice(0,16).replace("T"," "):t.slice(0,10)}}function ps(n){return e=>{if(e.value==null)return"";let t=n.find(r=>r.value===e.value);return t?t.label:String(e.value)}}function fs(n,e){return n.filterable===!1?!1:e==="number"?"number":e==="date"?"date":e==="select"||e==="boolean"?"set":"text"}function ms(n,e,t){if(t==="number"){n.type="rightAligned";return}if(t==="date"){n.valueFormatter=hs(e.format);return}if(t==="boolean"){n.valueFormatter=us;return}if(t!=="select")return;let r=e.options??[];n.valueFormatter=ps(r),e.editable&&(n.cellEditor="select",n.cellEditorParams={values:r.map(o=>o.value)})}function ko(n){let e=n.type??"string",t={colId:n.field,field:n.field,headerName:n.title??n.field,width:n.width,minWidth:n.minWidth,maxWidth:n.maxWidth,flex:n.flex,pinned:n.pinned??void 0,hide:n.hidden??!1,editable:n.editable??!1,sortable:n.sortable??!0,resizable:n.resizable??!0,filter:fs(n,e),cellClass:n.cellClass};return ms(t,n,e),t}function Ao(n){let e=new Map(n.fields.map(o=>[o.field,o])),t=new Set,r=[];for(let o of n.fields){if(t.has(o.field))continue;(n.groups??[]).some(s=>s.fields.includes(o.field))||(r.push(ko(o)),t.add(o.field))}for(let o of n.groups??[]){let i=[];for(let s of o.fields){let a=e.get(s);!a||t.has(s)||(i.push(ko(a)),t.add(s))}i.length>0&&r.push({headerName:o.title,children:i})}return r}function L(n){let e=n();return e&&!e.isDestroyed()?e:null}function Po(n){let e=()=>n.getApi();return{search(t){L(e)?.filtering.setQuickText(t)},async refresh(){if(n.reload){await n.reload();return}let t=L(e);t&&(t.rows.isRemote()?await t.rows.reload():t.view.refreshCells())},openColumns(t){L(e)?.columns.openWorkbench(t)},setDensity(t){L(e)?.updateOptions({size:t})},resetColumns(){L(e)?.columns.resetState()},undo(){return L(e)?.editing.undo()??!1},redo(){return L(e)?.editing.redo()??!1},canUndo(){return L(e)?.editing.canUndo()??!1},canRedo(){return L(e)?.editing.canRedo()??!1},exportCsv(t="mach-table.csv"){let r=L(e);return r?ot(t,r.io.exportCsv({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 r=L(e)?.view.getRoot(),o=n.getFullscreenElement?.()??r?.parentElement??r;return o?.requestFullscreen?(await o.requestFullscreen(),!0):!1}}}var me={sortable:!1,resizable:!1,movable:!1,filter:!1,suppressSizeToFit:!0};function Lo(n={}){return{colId:"sel",headerName:"",width:46,pinned:"left",checkboxSelection:!0,...me,...n}}function Go(n={}){return{colId:"idx",headerName:"#",type:"index",width:60,pinned:"left",...me,...n}}function Fo(n={}){return{colId:"drag",headerName:"",rowDrag:!0,width:40,...me,...n}}function No(n={actions:[]}){let{width:e,pinned:t,...r}=n,o=r.actions?.length??0,i=r.overflow==="inline"?o:Math.min(o,r.max??3),s=r.overflow!=="inline"&&o>i,a=Math.max(1,i)*26+(s?26:0)+10;return{colId:"op",headerName:"\u64CD\u4F5C",width:e??Math.max(64,a),pinned:t??"right",cellRenderer:ne(r),...me,cellRendererParams:void 0}}function Oo(n={}){let{width:e,pinned:t,...r}=n,o=(r.onView?1:0)+(r.edit===!1?0:1)+(r.onDelete?1:0)+(r.extraActions?.length??0),i=r.overflow==="inline"?o:Math.min(o,r.max??3),s=r.overflow!=="inline"&&o>i,a=Math.max(2,i)*26+(s?26:0)+10;return{colId:"op",headerName:"\u64CD\u4F5C",width:e??Math.max(72,a),pinned:t??"right",cellRenderer:bt(r),...me,cellRendererParams:void 0}}function Ho(){return{accessor:(n,e={})=>({...e,field:n}),display:n=>({...n}),group:n=>({...n,children:[...n.children]})}}function Bo(n){return[...n]}function cr(n,e){return e===void 0?n:typeof e!="object"||e===null||typeof n!="object"||n===null?e:{...n,...e}}function gs(n,e){return typeof n!="function"?e:typeof e!="function"?n:(...t)=>{let r;try{n(...t)}catch(o){r=o}try{e(...t)}catch(o){r??(r=o)}if(r!==void 0)throw r}}function ys(n,e){if(!(!n.components&&!e.components))return{cellRenderers:{...n.components?.cellRenderers,...e.components?.cellRenderers},cellEditors:{...n.components?.cellEditors,...e.components?.cellEditors}}}function vs(n,e){if(!n.columnTypes&&!e.columnTypes)return;let t={},r=new Set([...Object.keys(n.columnTypes??{}),...Object.keys(e.columnTypes??{})]);for(let o of r)t[o]={...n.columnTypes?.[o],...e.columnTypes?.[o]};return t}function ws(n,e,t){for(let r of new Set([...Object.keys(e),...Object.keys(t)])){if(!/^on[A-Z]/.test(r))continue;let o=e[r],i=t[r];typeof o!="function"||typeof i!="function"||(n[r]=gs(o,i))}}function bs(n,e){let t={...n,...e,features:e.features??n.features};(n.defaultColDef||e.defaultColDef)&&(t.defaultColDef={...n.defaultColDef,...e.defaultColDef}),(n.locale||e.locale)&&(t.locale={...n.locale,...e.locale});let r=ys(n,e);r&&(t.components=r);let o=vs(n,e);return o&&(t.columnTypes=o),(n.aggFuncs||e.aggFuncs)&&(t.aggFuncs={...n.aggFuncs,...e.aggFuncs}),t.pagination=cr(n.pagination,e.pagination),t.statusBar=cr(n.statusBar,e.statusBar),t.watermark=cr(n.watermark,e.watermark),ws(t,n,e),t}function ur(...n){return n.reduce(bs,{})}function Vo(n={}){return ur({defaultColDef:{sortable:!0,resizable:!0,movable:!0,filter:!0},enableColumnResize:!0,rowSelection:"multiple",columnMenu:!0,contextMenu:!0,enableRangeSelection:!0,fillHandle:!0,statusBar:!0,stripedRows:!0},n)}function zo(n){return n}function Wo(n){return n}function _o(n){return n}function ge(n){return n!=null&&n!==""}function Cs(n){if(!ge(n))return null;let e=typeof n=="number"?n:Number(n);return Number.isFinite(e)?e:null}function St(n,e){try{return new Intl.NumberFormat(n,e)}catch{return new Intl.NumberFormat(void 0,e)}}function Ko(n,e){try{return new Intl.DateTimeFormat(n,e)}catch{let t={...e};return delete t.timeZone,new Intl.DateTimeFormat(void 0,t)}}function Rs(n){if(!ge(n))return null;let e=n instanceof Date?n:new Date(n);return Number.isFinite(e.getTime())?e:null}function Uo(n={}){let e=n.emptyText??"",t=n.invalidText??"\u2014",r=St(n.locale,{maximumFractionDigits:n.maximumFractionDigits??2}),o=St(n.locale,{maximumFractionDigits:0}),i=St(n.locale,{style:"currency",currency:n.currency??"CNY",currencyDisplay:n.currencyDisplay??"symbol",maximumFractionDigits:n.maximumFractionDigits??2}),s=St(n.locale,{style:"percent",maximumFractionDigits:n.maximumFractionDigits??2}),a=Ko(n.locale,{year:"numeric",month:"2-digit",day:"2-digit",...n.timeZone?{timeZone:n.timeZone}:{}}),l=Ko(n.locale,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,...n.timeZone?{timeZone:n.timeZone}:{}}),d=(u,h=1)=>({value:p})=>{if(!ge(p))return e;let m=Cs(p);return m==null?t:u.format(m*h)},c=u=>({value:h})=>{if(!ge(h))return e;let p=Rs(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(r)},integer:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(o)},money:{align:"right",filter:"number",cellEditor:"number",valueFormatter:d(i)},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?n.trueText??"\u662F":u===!1?n.falseText??"\u5426":e},status:{filter:"set",cellRenderer:"statusTag"},link:{filter:"text",cellRenderer:"link"}})}function Et(n){return`${typeof n}:${String(n)}`}function qo(n){let e=Math.max(0,n.ttlMs??3e5),t=Math.max(1,Math.floor(n.maxSize??2e3)),r=Math.max(0,n.batchDelayMs??0),o=new Map,i=new Map,s=new Map,a=null,l=null,d=!1,c=v=>{let y=Et(v),w=o.get(y);if(w){if(w.expiresAt<Date.now()){o.delete(y);return}return o.delete(y),o.set(y,w),w.label}},u=v=>{let y=e===0?Number.POSITIVE_INFINITY:Date.now()+e;for(let w of v){let C=Et(w.value);o.delete(C),o.set(C,{key:w.value,label:String(w.label),expiresAt:y})}for(;o.size>t;)o.delete(o.keys().next().value)},h=v=>{for(let[y,w]of v){let C=c(w);for(let S of s.get(y)??[])S.resolve(C);s.delete(y)}},p=(v,y)=>{for(let[w]of v){for(let C of s.get(w)??[])C.reject(y);s.delete(w)}},m=async()=>{if(a=null,d||i.size===0)return;let v=[...i.entries()];i.clear();let y=v.map(([,C])=>C),w=new AbortController;l=w;try{let C=await n.load(y,w.signal);if(d||w.signal.aborted)return;u(C),h(v)}catch(C){w.signal.aborted||n.onError?.(C,y),p(v,C)}finally{l===w&&(l=null),!d&&i.size>0&&a==null&&(a=setTimeout(()=>{m()},r))}},g=v=>{let y=c(v);if(y!==void 0)return Promise.resolve(y);if(d)return Promise.reject(new Error("[MachTable] Dictionary resolver has been destroyed."));let w=Et(v);i.set(w,v);let C=new Promise((S,R)=>{let k=s.get(w)??[];k.push({resolve:S,reject:R}),s.set(w,k)});return a==null&&l==null&&(a=setTimeout(()=>{m()},r)),C};return{get:c,resolve:g,async resolveMany(v){let y=await Promise.all(v.map(async w=>[w,await g(w)]));return new Map(y.filter(w=>w[1]!==void 0))},prime:u,invalidate(v){if(!v)o.clear();else for(let y of v)o.delete(Et(y))},destroy(){d=!0,a!=null&&clearTimeout(a),a=null,l?.abort(),l=null;let v=new Error("[MachTable] Dictionary resolver has been destroyed.");for(let y of s.values())for(let w of y)w.reject(v);s.clear(),i.clear(),o.clear()},get size(){return o.size}}}function $o(n,e={}){return t=>{if(!ge(t.value))return e.emptyText??"";let r=t.value,o=e.fallback?.(r)??String(r),i=n.get(r);if(i!==void 0)return i;let s=document.createElement("span");s.className="mach-dictionary-value mach-dictionary-value--loading",s.textContent=e.loadingText??o;let a=!0;return n.resolve(r).then(l=>{!a||!s.isConnected||(s.textContent=l??o,s.classList.remove("mach-dictionary-value--loading"))}).catch(()=>{!a||!s.isConnected||(s.textContent=o,s.classList.remove("mach-dictionary-value--loading"),s.classList.add("mach-dictionary-value--error"))}),{el:s,destroy:()=>{a=!1}}}}function jo(){try{return typeof localStorage>"u"?null:localStorage}catch{return null}}function Yo(n){return typeof TextEncoder>"u"?n.length*2:new TextEncoder().encode(n).byteLength}function Xo(n){if(typeof n!="string")return null;let e=n.trim();return e&&e.length<=256?e:null}function xt(n){if(n==null||typeof n!="object")return null;let e=n;if(e.version!==1)return null;let t=F({version:2,columns:e.columns,sortModel:e.sortModel,filterModel:e.filterModel,advancedFilterModel:e.advancedFilterModel,quickFilterText:e.quickFilterText,pagination:{enabled:!0,page:1,pageSize:e.pageSize},selectedRowIds:[],expandedRowIds:[],expandedGroupIds:[]});return t?{version:1,columns:t.columns,sortModel:t.sortModel,filterModel:t.filterModel,advancedFilterModel:t.advancedFilterModel,quickFilterText:t.quickFilterText,pageSize:t.pagination.pageSize}:null}function ie(n){if(n==null||typeof n!="object")return null;let e=n,t=Xo(e.id),r=typeof e.name=="string"?e.name.trim().slice(0,120):"",o=xt(e.state);if(e.schemaVersion!==1||!t||!r||!o)return null;let i=typeof e.createdAt=="number"&&Number.isFinite(e.createdAt)?e.createdAt:Date.now(),s=typeof e.updatedAt=="number"&&Number.isFinite(e.updatedAt)?e.updatedAt:i;return{schemaVersion:1,id:t,name:r,createdAt:i,updatedAt:s,state:o}}function hr(n){let e=n.state.get();return{version:1,columns:e.columns,sortModel:e.sortModel,filterModel:e.filterModel,advancedFilterModel:e.advancedFilterModel,quickFilterText:e.quickFilterText,pageSize:e.pagination.pageSize}}function pr(n,e,t={}){let r=xt(e);if(!r||n.isDestroyed())return!1;let o=n.state.get();return n.state.apply({...o,columns:r.columns,sortModel:r.sortModel,filterModel:r.filterModel,advancedFilterModel:r.advancedFilterModel,quickFilterText:r.quickFilterText,pagination:{...o.pagination,page:1,pageSize:r.pageSize}},{sections:["columns","sort","filter","pagination"],emitEvents:t.emitEvents}),!0}function fr(n={}){let e=(n.namespace??"mach-table:views").replace(/:+$/,""),t=Math.max(1,Math.floor(n.maxViews??50)),r=Math.max(4096,Math.floor(n.maxBytes??512*1024)),o=l=>`${e}:${encodeURIComponent(l)}`,i=(l,d,c)=>{try{n.onError?.(l,d,c)}catch{}},s=l=>{let d=(n.storage??jo())?.getItem(o(l));if(!d||Yo(d)>r)return[];let c=JSON.parse(d);return c.schemaVersion!==1||!Array.isArray(c.views)?[]:c.views.flatMap(u=>{let h=ie(u);return h?[h]:[]}).slice(0,t)},a=(l,d)=>{let c=JSON.stringify({schemaVersion:1,savedAt:Date.now(),views:d});if(Yo(c)>r)throw new RangeError(`[MachTable] Saved views for "${l}" exceed ${r} bytes.`);let u=n.storage??jo();if(!u)throw new Error("[MachTable] Saved view storage is unavailable.");u.setItem(o(l),c)};return{list(l){try{return s(l)}catch(d){return i(d,"list",l),[]}},save(l,d){try{let c=ie(d);if(!c)throw new TypeError(`[MachTable] Invalid saved view for "${l}".`);let u=s(l).filter(h=>h.id!==c.id);u.unshift(c),a(l,u.slice(0,t))}catch(c){throw i(c,"save",l),c}},remove(l,d){try{a(l,s(l).filter(c=>c.id!==d))}catch(c){throw i(c,"remove",l),c}}}}function Ts(){try{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID()}catch{}return`view-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function Jo(n,e){let t=e.scope.trim();if(!t||t.length>512)throw new TypeError("[MachTable] Grid view scope must contain between 1 and 512 characters.");let r=e.store??fr(),o=async()=>(await r.list(t)).flatMap(s=>{let a=ie(s);return a?[a]:[]}).sort((s,a)=>a.updatedAt-s.updatedAt);return{list:o,async save(i,s){let a=i.trim().slice(0,120);if(!a)throw new TypeError("[MachTable] Grid view name must be a non-empty string.");let l=Xo(s)??Ts(),d=(await o()).find(h=>h.id===l),c=Date.now(),u={schemaVersion:1,id:l,name:a,createdAt:d?.createdAt??c,updatedAt:c,state:hr(n)};return await r.save(t,u),u},async apply(i,s){let a=typeof i=="string"?(await o()).find(d=>d.id===i):ie(i),l=typeof i=="string"?i:"provided view";if(!a)throw new Error(`[MachTable] Grid view "${l}" was not found.`);if(!pr(n,a.state,s))throw new Error(`[MachTable] Grid view "${a.id}" could not be applied.`);return a},async remove(i){await r.remove(t,i)}}}var Ds=ve.version;0&&(module.exports={BUILTIN_AGG_FUNCS,DEFAULT_LOCALE,EVENT_TYPES,LOCALE_EN,actionsColumn,advancedFilterCondition,advancedFilterGroup,applyGridViewState,buildColDefsFromSchema,captureGridViewState,clearGridState,createActionButtonsRenderer,createAggResolver,createBusinessColumnTypes,createCachedDictionary,createColumnHelper,createDictionaryRenderer,createEnterprisePreset,createGrid,createGridViewManager,createLocalGridStateStore,createLocalGridViewStore,createMachTableCommands,createMachTablePreset,createProgressBarRenderer,createRowActionsRenderer,createStatusTagRenderer,defineColumns,defineGridOptions,defineMachTableConfig,defineMachTablePreset,describeFilter,downloadFile,dragColumn,escapeHtml,formatText,formatTwo,getByPath,indexColumn,isColDefGroup,isSafePath,linkRenderer,loadGridState,matchLocaleKey,normalizeAdvancedFilterModel,normalizeColumnFilter,normalizeFilterModel,normalizeGridState,normalizeGridViewState,normalizeSavedGridView,parseCsv,parseDelimited,parseTsv,resolveGridFeatures,resolveSaveConflict,resolveTagVariant,rowActionsColumn,sanitizeFormulaCell,saveGridState,selectionColumn,setByPath,toTsv,validateGridOptions,version});