@opencorestack/opengridx 3.4.0 → 3.5.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.
Files changed (76) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +6 -0
  3. package/dist/ai.cjs +2 -1
  4. package/dist/ai.cjs.map +1 -1
  5. package/dist/ai.d.ts +203 -3
  6. package/dist/ai.es.js +2 -1
  7. package/dist/ai.es.js.map +1 -1
  8. package/dist/index.d.ts +248 -4
  9. package/dist/opengridx.css +1 -1
  10. package/dist/opengridx.es.js +7104 -5726
  11. package/dist/opengridx.es.js.map +1 -1
  12. package/dist/opengridx.umd.js +16 -16
  13. package/dist/opengridx.umd.js.map +1 -1
  14. package/docs/API_REFERENCE.md +88 -7
  15. package/docs/README.md +3 -1
  16. package/docs/architecture/datagrid-orchestration.md +9 -4
  17. package/docs/components/filter-panel.md +1 -0
  18. package/docs/components/header.md +4 -1
  19. package/docs/components/toolbar.md +7 -0
  20. package/docs/customization/theming.md +3 -1
  21. package/docs/features/ai-toolkit.md +99 -5
  22. package/docs/features/cell-selection.md +8 -2
  23. package/docs/features/fill-handle.md +125 -0
  24. package/docs/features/filtering.md +3 -0
  25. package/docs/features/header-filters.md +138 -0
  26. package/docs/features/keyboard-navigation.md +20 -2
  27. package/docs/roadmap.md +2 -3
  28. package/lib/ai/agentTools.ts +160 -0
  29. package/lib/ai/index.ts +19 -2
  30. package/lib/ai/promptHandler.ts +109 -0
  31. package/lib/ai/types.ts +89 -25
  32. package/lib/ai/validate.ts +10 -0
  33. package/lib/components/AiAssistant/GridAiAssistantArea.tsx +26 -0
  34. package/lib/components/AiAssistant/GridAiAssistantPanel.css +171 -0
  35. package/lib/components/AiAssistant/GridAiAssistantPanel.tsx +145 -0
  36. package/lib/components/AiAssistant/useSpeechInput.ts +74 -0
  37. package/lib/components/Cell/Cell.css +28 -0
  38. package/lib/components/Cell/Cell.tsx +6 -2
  39. package/lib/components/DataGrid/DataGrid.tsx +76 -3
  40. package/lib/components/DataGrid/GridLiveRegion.tsx +5 -2
  41. package/lib/components/DataGrid/GridPinnedRows.tsx +5 -1
  42. package/lib/components/DataGrid/GridVirtualRows.tsx +5 -1
  43. package/lib/components/FilterPanel/FilterPanel.tsx +2 -9
  44. package/lib/components/Header/Header.tsx +44 -23
  45. package/lib/components/Header/headerColumnStyle.ts +28 -0
  46. package/lib/components/HeaderFilter/HeaderFilter.css +160 -0
  47. package/lib/components/HeaderFilter/HeaderFilterCell.tsx +370 -0
  48. package/lib/components/HeaderFilter/HeaderFilterOperatorMenu.tsx +124 -0
  49. package/lib/components/HeaderFilter/HeaderFilterRow.tsx +157 -0
  50. package/lib/components/Toolbar/GridToolbar.tsx +51 -0
  51. package/lib/hooks/core/gridApiPlaceholder.ts +8 -0
  52. package/lib/hooks/core/gridToolbarHostContext.ts +5 -0
  53. package/lib/hooks/core/useGridApiMethods.ts +39 -0
  54. package/lib/hooks/core/useGridAriaRows.ts +5 -3
  55. package/lib/hooks/core/useGridCellSelection.ts +77 -11
  56. package/lib/hooks/core/useGridColumnsPanel.ts +24 -1
  57. package/lib/hooks/core/useGridControlledState.ts +27 -0
  58. package/lib/hooks/core/useGridFillHandle.ts +323 -0
  59. package/lib/hooks/core/useGridKeyboardNavigation.ts +29 -10
  60. package/lib/hooks/core/useGridToolbarProps.ts +19 -0
  61. package/lib/hooks/features/useGridAiAssistant.ts +284 -0
  62. package/lib/hooks/features/useGridBatchEdit.ts +2 -2
  63. package/lib/index.ts +3 -0
  64. package/lib/styles/opengridx.css +2 -0
  65. package/lib/theme/DataGridThemeProvider.tsx +2 -0
  66. package/lib/theme/types.ts +2 -0
  67. package/lib/types/index.ts +219 -1
  68. package/lib/utils/aiAssistant.ts +205 -0
  69. package/lib/utils/aiBrand.ts +17 -0
  70. package/lib/utils/cellSelection.ts +25 -5
  71. package/lib/utils/editing/fill.ts +238 -0
  72. package/lib/utils/filtering/index.ts +14 -0
  73. package/lib/utils/focus/index.ts +9 -3
  74. package/lib/utils/headerFilters.ts +189 -0
  75. package/llms.txt +44 -4
  76. package/package.json +1 -1
@@ -1,18 +1,18 @@
1
- (function(xe,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("react/jsx-runtime"),require("react"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","react-dom"],c):(xe=typeof globalThis<"u"?globalThis:xe||self,c(xe.OpenGridX={},xe.ReactJSXRuntime,xe.React,xe.ReactDOM))})(this,(function(xe,c,s,xt){"use strict";function uo(e,t,n){return Math.max(t??0,Math.min(n??1/0,e))}function bt(e,t,n=100){if(e.isSpacer)return typeof e.width=="number"?e.width:0;const o=t[e.field]??e.width,r=typeof o=="number"&&Number.isFinite(o)?o:n;return uo(r,e.minWidth,e.maxWidth)}const Ze=48;function lt(e,t){return t?t.left?.includes(e)?"left":t.right?.includes(e)?"right":null:null}function Ps(e,t){const n=[],o=[],r=[];return t?(e.forEach(i=>{const l=lt(i.field,t);l==="left"?n.push(i):l==="right"?r.push(i):o.push(i)}),t.left&&n.sort((i,l)=>{const d=t.left.indexOf(i.field),a=t.left.indexOf(l.field);return d-a}),t.right&&r.sort((i,l)=>{const d=t.right.indexOf(i.field),a=t.right.indexOf(l.field);return d-a}),{left:n,center:o,right:r}):{left:n,center:e,right:r}}function fo(e,t,n,o,r,i,l,d){const a={};if(!n)return a;let f=(d?Ze:0)+(i&&l?Ze:0)+(o&&r?Ze:0);const p=[];e.forEach(b=>{if(b.isSpacer)return;const C=lt(b.field,n);C==="left"?(a[b.field]=f,f+=bt(b,t)):C==="right"&&p.push(b)});let w=0;for(let b=p.length-1;b>=0;b--)a[p[b].field]=w,w+=bt(p[b],t);return a}function go(e,t){let n=null,o=null;if(!t)return{lastLeft:n,firstRight:o};for(const r of e){if(r.isSpacer)continue;const i=lt(r.field,t);i==="left"?n=r.field:i==="right"&&o===null&&(o=r.field)}return{lastLeft:n,firstRight:o}}function Lr(e,t){return t?t.top?.includes(e)?"top":t.bottom?.includes(e)?"bottom":null:null}function Ls(e,t,n=o=>o.id){const o=[],r=[],i=[];return t?(e.forEach(l=>{const d=Lr(n(l),t);d==="top"?o.push(l):d==="bottom"?i.push(l):r.push(l)}),t.top&&o.sort((l,d)=>{const a=t.top.indexOf(n(l)),f=t.top.indexOf(n(d));return a-f}),t.bottom&&i.sort((l,d)=>{const a=t.bottom.indexOf(n(l)),f=t.bottom.indexOf(n(d));return a-f}),{top:o,center:r,bottom:i}):{top:o,center:e,bottom:i}}function Ts(e,t,n){const o=(e?.left??[]).filter(i=>i!==t),r=(e?.right??[]).filter(i=>i!==t);return n==="left"?{left:[...o,t],right:r}:n==="right"?{left:o,right:[...r,t]}:{left:o,right:r}}const Tr=new Set;function ln(e,t,n){process.env.NODE_ENV==="production"||Tr.has(e)||(Tr.add(e),console.warn(`[OpenGridX] ${t}.`,n))}function Pn(e,t,n,o){try{return e()}catch(r){return ln(n,o,r),t}}function Fr(e,t,n){const o=e[t];if(!n?.valueGetter)return{value:o};try{return{value:n.valueGetter({row:e,field:t,value:o})}}catch(r){return{value:void 0,error:r??new Error("valueGetter failed")}}}function ke(e,t,n){const{value:o,error:r}=Fr(e,t,n);return r!==void 0&&ln(`valueGetter:${t}`,`valueGetter for column "${t}" threw; the value is read as undefined`,r),o}function po(e,t,n,o){const r=o?.valueFormatter;if(r)return Pn(()=>r({value:n,row:e,field:t}),void 0,`valueFormatter:${t}`,`valueFormatter for column "${t}" threw; the value is shown unformatted`)}function Ct(e){if(e==null)return null;if(typeof e=="number")return Number.isNaN(e)?null:e;if(typeof e=="string"){const t=e.trim();if(t==="")return null;const n=Number(t);return Number.isNaN(n)?null:n}if(typeof e=="boolean")return null;if(e instanceof Date){const t=e.getTime();return Number.isNaN(t)?null:t}return typeof e=="bigint"?Number(e):null}const Fs=/^(\d{4})-(\d{2})-(\d{2})$/;function sn(e){if(e==null)return null;let t;if(e instanceof Date)t=e;else if(typeof e=="number")t=new Date(e);else if(typeof e=="string"){const n=e.trim();if(n==="")return null;const o=Fs.exec(n);if(o){const r=Number(o[1]),i=Number(o[2])-1,l=Number(o[3]);if(t=new Date(r,i,l),t.getMonth()!==i||t.getDate()!==l)return null}else t=new Date(n)}else return null;return Number.isNaN(t.getTime())?null:t}function Ln(e){const t=sn(e);return t?t.getFullYear()*1e4+(t.getMonth()+1)*100+t.getDate():null}function Ar(e){const t=sn(e);if(!t)return"";const n=String(t.getFullYear()).padStart(4,"0"),o=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${n}-${o}-${r}`}let Dr=null;function Or(e){return Dr??=new Intl.DateTimeFormat,Dr.format(e)}function As(e,t){if(!e)return;const n=i=>typeof i=="object"?i.value:i,o=i=>typeof i=="object"?i.label:String(i),r=e.find(i=>Object.is(n(i),t))??e.find(i=>String(n(i))===String(t));return r===void 0?void 0:o(r)}function ho(e,t){if(e==null)return"";switch(t?.type){case"date":{const n=sn(e);return n?Or(n):String(e)}case"boolean":return e===!0?"Yes":e===!1?"No":String(e);case"singleSelect":return As(t.valueOptions,e)??String(e);default:return String(e)}}const mo=200;function wo(e){if(e==="auto")return"auto";const t=typeof e=="string"?Number.parseFloat(e):e;return typeof t=="number"&&Number.isFinite(t)&&t>=0?t:mo}function xo(e,t){if(e)return Pn(()=>e(t),void 0,"getDetailPanelHeight","getDetailPanelHeight threw; the panel uses the default height")}function Ds(e,t){const n=wo(e);return n==="auto"?t??mo:n}function Os(e,t){if(t.size===0||e.size===0)return e;let n=!1;const o=new Set;for(const r of e)t.get(r)?.isGroupRow?n=!0:o.add(r);return n?o:e}const $s=e=>e.id;function Gs(e){if(e===void 0)return{type:"auto",value:0};if(typeof e=="number")return{type:"fixed",value:e};if(typeof e=="string"){if(e.toLowerCase()==="auto")return{type:"auto",value:0};if(e.endsWith("%"))return{type:"percentage",value:parseFloat(e)};const t=parseFloat(e);if(!isNaN(t))return{type:"fixed",value:t}}return{type:"fixed",value:100}}function Ws(e,t,n){const o=new Map;e.forEach(u=>{if(!Object.prototype.hasOwnProperty.call(t,u.field)&&u.flex&&u.flex>0){o.set(u.field,{kind:"flex",flex:u.flex});return}const x=Gs(t[u.field]??u.width);x.type==="fixed"?o.set(u.field,{kind:"fixed",width:uo(x.value,u.minWidth,u.maxWidth)}):x.type==="percentage"?o.set(u.field,{kind:"percentage",percentage:x.value}):o.set(u.field,{kind:"flex",flex:1})});const r=e.reduce((u,h)=>{const x=o.get(h.field);if(x.kind==="fixed")return u+x.width;if(x.kind==="percentage")return u+100;if(h.flex&&h.flex>0){const m=h.minWidth??150;return u+(m||(typeof h.width=="number"?h.width:150))}return u+(h.minWidth??150)},0),i=Math.max(n,r),l=e.reduce((u,h)=>{const x=o.get(h.field);return x.kind==="fixed"?u+x.width:u},0),d=new Map,a=Math.max(0,i-l);let f=0;e.forEach(u=>{const h=o.get(u.field);if(h.kind==="fixed")d.set(u.field,h.width);else if(h.kind==="percentage"){const x=h.percentage/100*a,m=uo(x>0?x:100,u.minWidth??50,u.maxWidth);d.set(u.field,m),f+=m}});const p=Math.max(0,a-f),w=new Map,b=e.flatMap(u=>{const h=o.get(u.field);return h.kind!=="flex"?[]:(w.set(u.field,h.flex),[{field:u.field,flex:h.flex,minWidth:u.minWidth??50,maxWidth:u.maxWidth??1/0,frozen:!1,computedWidth:0}])});let C=0;const g=b.length*2;for(;C<g;){C++;const u=b.filter(N=>!N.frozen);if(u.length===0)break;const h=u.reduce((N,P)=>N+P.flex,0),x=b.reduce((N,P)=>P.frozen?N+P.computedWidth:N,0),m=Math.max(0,p-x);if(h<=0){u.forEach(N=>{N.computedWidth=N.minWidth,N.frozen=!0});break}const y=m/h;let E=0;const v=[],M=[];if(u.forEach(N=>{const P=y*N.flex;P<N.minWidth?(E+=N.minWidth-P,v.push(N)):P>N.maxWidth?(E+=N.maxWidth-P,M.push(N)):N.computedWidth=P}),v.length===0&&M.length===0){u.forEach(N=>{N.frozen=!0});break}E>0?v.forEach(N=>{N.computedWidth=N.minWidth,N.frozen=!0}):E<0?M.forEach(N=>{N.computedWidth=N.maxWidth,N.frozen=!0}):(v.forEach(N=>{N.computedWidth=N.minWidth,N.frozen=!0}),M.forEach(N=>{N.computedWidth=N.maxWidth,N.frozen=!0}))}return b.forEach(u=>d.set(u.field,u.computedWidth)),{widths:d,flexByField:w}}function Bs(e){const{rowHeight:t,pagination:n,paginatedUnpinnedRows:o,sortedUnpinnedRows:r,expandedRowIds:i,getDetailPanelHeight:l,detailPanelHeights:d,pinnedTopRowsLength:a,pinnedBottomRowsLength:f,pinnedTopRows:p,pinnedBottomRows:w,visibleOrderedColumns:b,pinnedColumns:C,columnWidths:g,viewportWidth:u,checkboxSelection:h,hasDetailPanel:x,rowReordering:m,pinCheckboxColumn:y,pinExpandColumn:E,paginationMode:v,isLoading:M,pageSize:N,getRowId:P=$s}=e;return s.useMemo(()=>{const z=n?o:r,F=(L,A)=>{const V=P(L);if(!i.has(V))return t;const R=xo(l,{row:L,id:V,rowIndex:A});return t+Ds(R,d?.get(V))},$=z.map((L,A)=>F(L,a+A)),_=$.reduce((L,A,V)=>(L.push((L[V-1]||0)+A),L),[]),T=v==="infinite"&&M&&z.length>0?Math.min(N,20):0,O=(_[_.length-1]||0)+T*t,S=(L,A)=>L?L.reduce((V,R,B)=>V+F(R,B),0):A*t,j=S(p,a),q=S(w,f),{left:Z,center:W,right:U}=Ps(b,C),Q=(h?Ze:0)+(x?Ze:0)+(m?Ze:0),ie=(m?Ze:0)+(x&&E?Ze:0)+(h&&y?Ze:0),{widths:oe,flexByField:ge}=Ws([...Z,...W,...U],g,u-Q),le=L=>oe.get(L.field)??100,ue=L=>({...L,width:le(L),flex:ge.get(L.field)??L.flex}),te=11,ae=Z.map((L,A)=>({...ue(L),zIndex:te+A})),Y=11,re=U.map((L,A)=>({...ue(L),zIndex:Y+(U.length-1-A)})),K=W.map(ue),J=K.map(L=>L.width),ne=ae.reduce((L,A)=>L+A.width,0),de=re.reduce((L,A)=>L+A.width,0),G=J.reduce((L,A)=>L+A,0),I=ne+G+de+Q,D=J.reduce((L,A,V)=>(L.push((L[V-1]||0)+A),L),[]);return{rowHeights:$,cumulativeHeights:_,unpinnedRowsHeight:O,pinnedTopHeight:j,pinnedBottomHeight:q,leftPinnedCols:ae,rightPinnedCols:re,unpinnedColsWithWidth:K,unpinnedColWidths:J,unpinnedAccWidths:D,totalWidth:I,leftWidth:ne,rightWidth:de,unpinnedTotalWidth:G,systemColumnsWidth:Q,pinnedSystemColumnsWidth:ie,pinnedTopRowsLength:a,pinnedBottomRowsLength:f,unpinnedRowsLength:z.length}},[t,n,o,r,i,l,d,a,f,p,w,b,C,g,u,h,x,m,y,E,v,M,N,P])}function Hs(e){const t=e.querySelector(".ogx__sticky-bottom");return t?t.getBoundingClientRect().height:0}function Tn(e,t,n,o,r){if(t<0||t>=n.length)return;const i=e.querySelector(".ogx__virtual-container");if(!i)return;const{scrollTop:l,clientHeight:d}=e,a=i.getBoundingClientRect().top-e.getBoundingClientRect().top+l,f=Math.max(o,Hs(e)),p=a+(t===0?0:n[t-1]),w=r!==void 0?Math.min(p+r,a+n[t]):a+n[t];p<l+a?e.scrollTop=Math.max(0,p-a):w>l+d-f&&(e.scrollTop=w-d+f)}function bo(e,t,n){const{unpinnedAccWidths:o,leftWidth:r,rightWidth:i,systemColumnsWidth:l,pinnedSystemColumnsWidth:d}=n;if(t<0||t>=o.length)return;const a=l+r,f=a+(t>0?o[t-1]:0),p=a+o[t],w=d+r,{scrollLeft:b,clientWidth:C}=e;f<b+w?e.scrollLeft=Math.max(0,f-w):p>b+C-i&&(e.scrollLeft=p-C+i)}function Co(e,t){const{row:n,field:o,value:r,colDef:i,rowIndex:l,colIndex:d,rowMeta:a}=e;if(!i.editable||a?.isGroupRow||n._isSkeleton)return!1;if(!t)return!0;try{return!!t({row:n,field:o,value:r,colDef:i,rowIndex:l,colIndex:d})}catch{return!1}}const zs={},yo=e=>e==null||typeof e=="string"&&e.trim()==="",$r=e=>{const t=[];for(const n of e){const o=Ct(n);o!==null&&t.push(o)}return t},Gr=(e,t)=>{let n=null,o=null;for(const r of e){const i=Ct(r);i!==null&&(n===null||t(i,n))&&(n=i,o=r)}return n===null?null:o instanceof Date?o:n},yt={sum:e=>$r(e).reduce((t,n)=>t+n,0),avg:e=>{const t=$r(e);return t.length?t.reduce((n,o)=>n+o,0)/t.length:null},count:e=>e.filter(t=>!yo(t)).length,min:e=>Gr(e,(t,n)=>t<n),max:e=>Gr(e,(t,n)=>t>n),unique:e=>new Set(e.filter(t=>!yo(t))).size};function vo(e,t){return e?e.aggregable===!1?!1:!e.availableAggregationFunctions||e.availableAggregationFunctions.includes(t):!0}function Fn(e,t,n,o){const r={};for(const[i,l]of Object.entries(t)){const d=n.get(i);if(!vo(d,l))continue;const a=yt[l];if(!a){console.warn(`[${o}] Unknown aggregation function: "${l}"`);continue}r[i]=a(e.map(f=>ke(f,i,d)))}return r}function an(e,t){return e==null?"—":typeof e=="number"?t==="avg"?e.toLocaleString(void 0,{maximumFractionDigits:2}):e.toLocaleString():String(e)}const Vs=new Set(["count","unique"]);function Wr(e){return e!==void 0&&Vs.has(e)}function Br(e,t,n){return e?.type==="date"&&(t==="min"||t==="max")&&typeof n=="number"&&Number.isFinite(n)?new Date(n):n}function An(e,t,n,o){if(e==null)return"—";if(Wr(t))return an(e,t);const r=Br(n,t,e);if(n?.valueFormatter)try{return String(n.valueFormatter({value:r,row:o??{},field:n.field})??"")}catch{}return r instanceof Date?Number.isNaN(r.getTime())?"":Or(r):an(r,t)}const So=new Set(["isEmpty","isNotEmpty"]);function Hr(e){return e==null?!0:typeof e=="string"?e.trim()==="":Array.isArray(e)?e.length===0:!1}function Ks(e){return e==null?!0:typeof e=="number"?Number.isNaN(e):typeof e=="string"&&e.trim()===""}const cn=e=>(t,n)=>{const o=Ct(t),r=Ct(n);return o===null||r===null?!1:e(o,r)},dn=e=>(t,n)=>{const o=Ln(t),r=Ln(n);return o===null||r===null?!1:e(o,r)},zr=dn((e,t)=>e===t),Vr=(e,t)=>{const n=Ln(e),o=Ln(t);return n===null||o===null?!0:n!==o},Kr={contains:(e,t)=>e==null||t==null?!1:String(e).toLowerCase().includes(String(t).toLowerCase()),equals:(e,t)=>e==null&&t==null?!0:e==null||t==null?!1:String(e).toLowerCase()===String(t).toLowerCase(),startsWith:(e,t)=>e==null||t==null?!1:String(e).toLowerCase().startsWith(String(t).toLowerCase()),endsWith:(e,t)=>e==null||t==null?!1:String(e).toLowerCase().endsWith(String(t).toLowerCase()),isEmpty:e=>e==null||String(e).trim()==="",isNotEmpty:e=>e!=null&&String(e).trim()!=="","=":cn((e,t)=>e===t),">":cn((e,t)=>e>t),">=":cn((e,t)=>e>=t),"<":cn((e,t)=>e<t),"<=":cn((e,t)=>e<=t),"!=":(e,t)=>{if(Hr(t))return!0;const n=Ct(e),o=Ct(t);return n!==null&&o!==null?n!==o:Ks(e)?!0:String(e).toLowerCase()!==String(t).toLowerCase()},isAnyOf:(e,t)=>{if(e==null)return!1;const n=Array.isArray(t)?t:[t],o=String(e).toLowerCase();return n.some(r=>r!=null&&String(r).toLowerCase()===o)},not:(e,t)=>e instanceof Date?Vr(e,t):e==null&&t==null?!1:e==null||t==null?!0:String(e).toLowerCase()!==String(t).toLowerCase(),is:(e,t)=>t==null||t===""?!0:e instanceof Date?zr(e,t):String(e).toLowerCase()===String(t).toLowerCase(),after:dn((e,t)=>e>t),onOrAfter:dn((e,t)=>e>=t),before:dn((e,t)=>e<t),onOrBefore:dn((e,t)=>e<=t)},Us={is:zr,not:Vr};function js(e,t){if(!Object.prototype.hasOwnProperty.call(Kr,e))return;const n=e;if(t?.type==="date"){const o=Us[n];if(o)return o}return Kr[n]}function Rs(e){return"items"in e&&Array.isArray(e.items)}function qs(e,t){const{field:n,operator:o,value:r}=e;if(!So.has(o)&&Hr(r))return null;const i=t.columns?.byField.get(n),l=js(o,i);return l?d=>l(ke(d,n,i),r):(t.warned.has(o)||(t.warned.add(o),console.warn(`Unknown filter operator: ${o}`)),null)}function Ur(e,t,n){const o=[];for(const r of e){const i=Rs(r)?Ur(r.items,r.logicOperator,n):qs(r,n);i&&o.push(i)}return o.length===0?null:o.length===1?o[0]:t==="or"?r=>o.some(i=>i(r)):r=>o.every(i=>i(r))}function _o(e,t){if(t!=null){switch(typeof t){case"string":e.push(t.toLowerCase());return;case"number":Number.isNaN(t)||e.push(String(t));return;case"boolean":case"bigint":e.push(String(t));return}if(t instanceof Date){const n=Ar(t);n&&e.push(n);return}if(Array.isArray(t))for(const n of t)(n==null||typeof n!="object")&&_o(e,n)}}function jr(e,t){const n=[];if(!t){for(const o of Object.values(e))_o(n,o);return n}for(const o of t.quickFilterColumns){const r=ke(e,o.field,o),i=po(e,o.field,r,o);i!=null&&i!==""&&n.push(String(i).toLowerCase()),_o(n,r)}return n}const Rr=new WeakMap;function Xs(e,t){if(!t)return jr(e,t);let n=Rr.get(t);n||(n=new WeakMap,Rr.set(t,n));let o=n.get(e);return o||(o=jr(e,t),n.set(e,o)),o}function Ys(e,t){const n=(e??[]).map(o=>String(o??"").trim().toLowerCase()).filter(o=>o!=="");return n.length===0?null:o=>{const r=Xs(o,t);return n.every(i=>r.some(l=>l.includes(i)))}}function Dn(e,t){if(!e)return null;const n={columns:t,warned:new Set},o="quickFilterValues"in e?e.quickFilterValues:void 0,r=Ys(o,t),i=Ur(e.items??[],e.logicOperator??"and",n);return r&&i?l=>r(l)&&i(l):r??i}function ko(e,t,n){const o=Dn(t,n);return o?e.filter(r=>o(r)):e}function Js(e){switch(e){case"number":return["=","!=",">",">=","<","<=","isEmpty","isNotEmpty"];case"date":return["is","not","after","onOrAfter","before","onOrBefore","isEmpty","isNotEmpty"];case"boolean":return["is"];case"singleSelect":return["isAnyOf","is","not"];default:return["contains","equals","startsWith","endsWith","isEmpty","isNotEmpty"]}}const Zs=new Intl.Collator(void 0,{numeric:!0,sensitivity:"accent"}),Eo=0,qr=1,Qs=2,Xr=3,Yr=4;function Ot(e,t){return{rank:e,num:t,str:""}}function Mo(e,t){if(e==null)return null;if(t==="number"){const n=Ct(e);return n===null?null:Ot(Eo,n)}if(t==="date"){const n=sn(e);return n?Ot(qr,n.getTime()):null}switch(typeof e){case"number":return Number.isNaN(e)?null:Ot(Eo,e);case"bigint":return Ot(Eo,Number(e));case"boolean":return Ot(Qs,e?1:0);case"string":return{rank:Xr,num:0,str:e}}if(e instanceof Date){const n=e.getTime();return Number.isNaN(n)?null:Ot(qr,n)}return{rank:Yr,num:0,str:String(e)}}function Jr(e,t){return e===null&&t===null?0:e===null?1:t===null?-1:e.rank!==t.rank?e.rank-t.rank:e.rank===Xr||e.rank===Yr?Zs.compare(e.str,t.str):e.num<t.num?-1:e.num>t.num?1:0}function No(e,t){return e===0?0:t==="asc"?e:-e}function ea(e,t,n,o){return No(Jr(Mo(e,o),Mo(t,o)),n)}function Zr(e,t,n){let o;try{o=e(t.value,n.value,t,n)}catch(r){return ln(`sortComparator:${t.field}`,`sortComparator for column "${t.field}" threw; the values are treated as equal`,r),0}return typeof o!="number"||Number.isNaN(o)?(ln(`sortComparator:${t.field}:nan`,`sortComparator for column "${t.field}" returned ${String(o)}; the values are treated as equal`,void 0),0):o}const ta=e=>e.id;function na(e,t,n,o=ta){return t.length===0?e:Io(e,t,(r,i)=>{const l=n?.byField.get(i.field),d=ke(r,i.field,l);return{value:d,type:l?.type,comparator:l?.sortComparator,params:l?.sortComparator?{id:o(r),field:i.field,row:r,value:d}:void 0}})}function Io(e,t,n){if(t.length===0||e.length<2)return[...e];const o=t.map(l=>e.map(d=>n(d,l))),r=o.map(l=>l.map(({value:d,type:a})=>Mo(d,a))),i=e.map((l,d)=>d);return i.sort((l,d)=>{for(let a=0;a<t.length;a++){const f=o[a][l],p=o[a][d],w=f.comparator&&f.comparator===p.comparator&&f.params&&p.params?Zr(f.comparator,f.params,p.params):Jr(r[a][l],r[a][d]),b=No(w,t[a].sort);if(b!==0)return b}return l-d}),i.map(l=>e[l])}function oa(e,t,n){if(!n)return e.filter(r=>r.field!==t);const o=e.findIndex(r=>r.field===t);return o===-1?[...e,{field:t,sort:n}]:e.map((r,i)=>i===o?{field:t,sort:n}:r)}function Po(e,t={}){const n=new Map,o=[];for(const r of e)n.set(r.field,r),!(r.isSpacer||r.field.startsWith("__"))&&r.filterable!==!1&&t[r.field]!==!1&&o.push(r);return{byField:n,quickFilterColumns:o}}const $t="__pivot_grand_total__",ra="__pivot_row__:",Qr=e=>`${ra}${JSON.stringify(e.split(ei))}`,ia="Grand Total",ei="\0",Gt="",Lo=`${Gt}id`,ti=e=>e==="id"?Lo:e,To={pivotRows:[],pivotColumns:[],colKeys:[],isValid:!1},ni=e=>e.map(t=>String(t??"")).join(ei),oi=e=>e===void 0||e===""?null:e;function la(e,t){const n=e==null,o=t==null;return n||o?n===o?0:n?1:-1:typeof e=="number"&&typeof t=="number"?e-t:e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():typeof e=="boolean"&&typeof t=="boolean"?Number(e)-Number(t):String(e).localeCompare(String(t),void 0,{numeric:!0})}function sa(e,t){for(let n=0;n<e.length;n++){const o=la(e[n],t[n]);if(o!==0)return o}return 0}function ri(e,t){if(!e||e.length===0)return null;const n=yt[t](e);return typeof n=="number"||n instanceof Date?n:null}const aa=e=>"logicOperator"in e&&"items"in e,ca=e=>!!(e&&e.items&&e.items.length>0);function da(e,t){const n=l=>!t.has(l)&&l.includes(Gt),o=l=>aa(l)?l.items.length>0&&l.items.every(o):n(l.field),r=[],i=[];for(const l of e.items??[])(o(l)?i:r).push(l);return{source:{...e,items:r},output:{items:i,logicOperator:e.logicOperator}}}function ii(e,t,n,o={}){const r=new Map(t.map(_=>[_.field,_])),i=_=>r.get(_)?.groupable!==!1,l=n.rowFields.filter(i),d=n.columnFields.filter(i),a=new Set,f=n.valueFields.filter(_=>{if(!vo(r.get(_.field),_.aggFn))return!1;const T=`${_.field}${Gt}${_.aggFn}`;return a.has(T)?!1:(a.add(T),!0)});if(l.length===0||f.length===0)return To;const p=d.length>0,w=Array.from(new Set(f.map(_=>_.field))),b=(_,T)=>ke(_,T,r.get(T)),C=new Map,g=new Map(p?[]:[["",{values:[]}]]);for(const _ of e){const T=l.map(U=>b(_,U)),O=ni(T);let S=C.get(O);S||(S={labels:T.map(oi),sample:_,cells:new Map},C.set(O,S));const j=d.map(U=>b(_,U)),q=p?ni(j):"",Z=g.get(q);Z?Z.sample||(Z.sample=_):g.set(q,{values:j.map(oi),sample:_});let W=S.cells.get(q);W||(W=new Map,S.cells.set(q,W));for(const U of w){const Q=b(_,U);if(yo(Q))continue;let ie=W.get(U);ie||(ie=[],W.set(U,ie)),ie.push(Q)}}const u=Array.from(g.keys()).sort((_,T)=>sa(g.get(_).values,g.get(T).values)),h=(_,T)=>p?`${_}${Gt}${T.field}${Gt}${T.aggFn}`:`${T.field}${Gt}${T.aggFn}`,x=new Map;let m=[];for(const[_,T]of C){const O={id:Qr(_)};l.forEach((S,j)=>{O[ti(S)]=T.labels[j]}),O.id=Qr(_);for(const S of u){const j=T.cells.get(S);for(const q of f)O[h(S,q)]=ri(j?.get(q.field),q.aggFn)}x.set(O.id,T),m.push({row:O,entry:T})}const y=_=>l.includes(_),E=_=>y(_)?r.get(_)?.type:"number",{outputFilterModel:v,sortModel:M}=o;if(ca(v)){const _=[];for(const O of u)for(const S of f)_.push({field:h(O,S),type:"number"});const T=Dn(v,Po(_));T&&(m=m.filter(({row:O})=>T(O)))}const N=(_,T)=>T==="id"&&y("id")?_[Lo]:_[T];M&&M.length>0&&(m=[...m].sort((_,T)=>{for(const O of M){const S=N(_.row,O.field),j=N(T.row,O.field),q=y(O.field)?r.get(O.field)?.sortComparator:void 0,Z=q?No(Zr(q,{id:_.row.id,field:O.field,row:_.row,value:S},{id:T.row.id,field:O.field,row:T.row,value:j}),O.sort):ea(S,j,O.sort,E(O.field));if(Z!==0)return Z}return 0}));const P=m.map(_=>_.row);if(m.length>0){const _={id:$t};l.forEach((T,O)=>{_[ti(T)]=O===0?ia:""}),_.id=$t;for(const T of u)for(const O of w){const S=[];for(const{entry:j}of m){const q=j.cells.get(T)?.get(O);if(q)for(const Z of q)S.push(Z)}for(const j of f)j.field===O&&(_[h(T,j)]=ri(S,j.aggFn))}P.push(_)}const z=m[0]?.entry.sample,F=_=>_===$t?z:_===void 0?void 0:x.get(_)?.sample,$=l.map(_=>fa(_,r.get(_),F));for(const _ of u){const T=g.get(_),O=p?d.map((S,j)=>{const q=r.get(S),Z=ua(q,S,T.values[j],T.sample);return q?.headerName?`${q.headerName}: ${Z}`:Z}).join(" / "):"";for(const S of f){const j=r.get(S.field),q=S.headerName??j?.headerName??S.field;$.push({field:h(_,S),headerName:O?`${O} — ${q} (${S.aggFn})`:`${q} (${S.aggFn})`,width:140,type:"number",align:"right",headerAlign:"right",sortable:!0,valueFormatter:({value:Z,row:W})=>An(Z,S.aggFn,j,W)})}}return{pivotRows:P,pivotColumns:$,colKeys:u,isValid:!0}}function ua(e,t,n,o){const r=o?po(o,t,n,e):void 0;return r!==void 0?r:n==null?"":String(n)}function fa(e,t,n){const o={field:e,headerName:t?.headerName??e,width:t?.width??140,sortable:!0,hideable:!1};t&&(t.type!==void 0&&(o.type=t.type),t.align!==void 0&&(o.align=t.align),t.headerAlign!==void 0&&(o.headerAlign=t.headerAlign),t.description!==void 0&&(o.description=t.description),t.minWidth!==void 0&&(o.minWidth=t.minWidth),t.maxWidth!==void 0&&(o.maxWidth=t.maxWidth),t.valueOptions!==void 0&&(o.valueOptions=t.valueOptions)),e==="id"&&(o.valueGetter=({row:d})=>d[Lo]);const r=d=>d?.id===$t,i=t?.valueFormatter;i&&(o.valueFormatter=({value:d,row:a})=>r(a)?String(d??""):i({value:d,row:n(a?.id)??a,field:e}));const l=t?.renderCell;return l&&(o.renderCell=d=>r(d.row)?d.formattedValue??String(d.value??""):l({...d,row:n(d.row.id)??d.row})),o}function Ue(e,t){return e===$t||t?.get(e)?.isGroupRow===!0}const un="__reorder_col__",fn="__expand_col__",st="__checkbox_col__",Qe=e=>e===un||e===fn||e===st,Fo=(e,t)=>e===t||e!==null&&t!==null&&e.id===t.id&&e.field===t.field,ga=new Set(["checkbox","radio","button","submit","reset","image","file","color"]),pa=new Set(["textbox","searchbox","combobox","listbox","slider","spinbutton"]);function li(e){const t=e.tagName;if(t==="INPUT")return!ga.has(e.type);if(t==="TEXTAREA"||t==="SELECT"||e.isContentEditable||e.closest('[contenteditable]:not([contenteditable="false"])'))return!0;const n=e.getAttribute("role");return n!==null&&pa.has(n)}const si=e=>e!==null&&e.nodeType===1;function ai(e,t){const n=e.closest(".ogx__detail-panel");if(n&&t.contains(n))return null;const o=e.closest('[role="gridcell"], [role="columnheader"]');return!o||o.closest(".ogx__viewport")!==t?null:o}function Ao(e,t){if(e===t)return"grid";if(!si(e)||!t.contains(e))return"foreign";const n=ai(e,t);return n?n.classList.contains("ogx__cell--editing")?"editor":n===e?"grid":li(e)?"foreign":n.classList.contains("ogx__header-cell--checkbox")?"grid":"control":"foreign"}function ha(e,t,n,o){if(!si(e))return null;const r=ai(e,t),i=r?.dataset.field;if(!r||!i)return null;if(r.getAttribute("role")==="columnheader")return r.parentElement?.classList.contains("ogx__header")?{id:null,field:i}:null;const l=Number(r.parentElement?.getAttribute("data-rowindex")),d=Number.isInteger(l)?n[l]:void 0;return d?{id:o(d),field:i,rowIndex:l}:null}function ci(e,t){if(!e)return null;for(const n of Array.from(e.children))if(n.dataset.field===t)return n;return null}function Do(e,t,n){if(t.id===null){const r=e.querySelector(":scope > .ogx__content > .ogx__sticky-top > .ogx__header-wrap > .ogx__header"),i=ci(r,t.field);return i&&t.field===st?i.querySelector("input")??i:i}if(n<0)return null;const o=e.querySelector(`:scope > .ogx__content > .ogx__virtual-container > .ogx__rows > [data-rowindex="${n}"],:scope > .ogx__content > .ogx__sticky-top > .ogx__pinned-rows > [data-rowindex="${n}"],:scope > .ogx__content > .ogx__sticky-bottom > .ogx__pinned-rows > [data-rowindex="${n}"]`);return ci(o,t.field)}const di="__group__";function je(e){return!Qe(e)&&e!==di}const at=(e,t)=>e===t||!!e&&!!t&&e.id===t.id&&e.field===t.field;function ma(e,t){return e===t?!0:e.length!==t.length?!1:e.every((n,o)=>at(n.anchor,t[o].anchor)&&at(n.head,t[o].head))}function On(e,t,n){const{rowIds:o,fields:r,rowIndexById:i,colIndexByField:l,spans:d}=n,a={top:e,bottom:e,left:t,right:t};if(!d)return a;const f=o[e],p=r[t],w=d.getSpanOrigin(f,p)??{rowId:f,field:p},b=i.get(w.rowId),C=l.get(w.field);if(b===void 0||C===void 0)return a;const g=Math.max(1,d.getRowSpan(w.rowId,w.field)),u=Math.max(1,d.getColSpan(w.rowId,w.field));return{top:b,bottom:Math.min(o.length-1,b+g-1),left:C,right:Math.min(r.length-1,C+u-1)}}function wa(e,t){if(!t.spans)return e;let{top:n,bottom:o,left:r,right:i}=e,l=!0;const d=a=>{a.top<n&&(n=a.top,l=!0),a.bottom>o&&(o=a.bottom,l=!0),a.left<r&&(r=a.left,l=!0),a.right>i&&(i=a.right,l=!0)};for(;l;){l=!1;for(let a=n;a<=o;a++)d(On(a,r,t)),i!==r&&d(On(a,i,t));for(let a=r+1;a<i;a++)d(On(n,a,t)),o!==n&&d(On(o,a,t))}return{top:n,bottom:o,left:r,right:i}}function $n(e,t){const n=t.rowIndexById.get(e.anchor.id),o=t.rowIndexById.get(e.head.id),r=t.colIndexByField.get(e.anchor.field),i=t.colIndexByField.get(e.head.field);return n===void 0||o===void 0||r===void 0||i===void 0?null:{...wa({top:Math.min(n,o),bottom:Math.max(n,o),left:Math.min(r,i),right:Math.max(r,i)},t),anchorRow:n,anchorCol:r,headRow:o,headCol:i}}const vt=e=>(e.bottom-e.top+1)*(e.right-e.left+1);function xa(e,t,n,o,r,i){const{headRow:l,headCol:d,anchorRow:a,anchorCol:f,top:p,bottom:w,left:b,right:C}=e;let g=l,u=d;switch(t){case"ArrowRight":u=d>=f?C+1:d+1;break;case"ArrowLeft":u=d<=f?b-1:d-1;break;case"ArrowDown":g=l>=a?w+1:l+1;break;case"ArrowUp":g=l<=a?p-1:l-1;break;case"Home":u=0,n&&(g=0);break;case"End":u=i,n&&(g=r);break;case"PageUp":g=l-o;break;case"PageDown":g=l+o;break;default:return null}return g=Math.min(Math.max(g,0),r),u=Math.min(Math.max(u,0),i),g===l&&u===d?null:{row:g,col:u}}function ui(e,t,n){return!e||t<e.top||t>e.bottom?null:{left:e.left,right:e.right,isTop:t===e.top,isBottom:t===e.bottom,bottomOffset:n?e.bottom-t:0}}const ba=(e,t)=>e===t||!!e&&!!t&&e.left===t.left&&e.right===t.right&&e.isTop===t.isTop&&e.isBottom===t.isBottom&&e.bottomOffset===t.bottomOffset,Oo=1,fi=2,gi=4,pi=8,hi=16;function Ca(e,t,n,o){if(!e)return 0;const r=t+Math.max(1,n)-1;if(t<e.left||r>e.right)return 0;let i=Oo;return e.isTop&&(i|=fi),(e.isBottom||o>1&&o-1>=e.bottomOffset)&&(i|=gi),t===e.left&&(i|=pi),r===e.right&&(i|=hi),i}function ya(e,t,n){const o=(r,i,l)=>`${r} ${r===1?i:l}`;return`${o(e,"cell","cells")} selected, ${o(t,"row","rows")} by ${o(n,"column","columns")}`}const va=1e5,Sa=e=>e.id,mi=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown"]);function _a(e,t,n,o){if(!e||n.length===0)return{cell:null,rowIndex:-1};const r=(n.find(a=>!Qe(a.field))??n[0]).field,i=n.some(a=>a.field===e.field)?e.field:r;if(e.id===null)return{cell:i===e.field?e:{id:null,field:i},rowIndex:-1};const l=e.rowIndex;let d=l!==void 0&&t[l]&&o(t[l])===e.id?l:t.findIndex(a=>o(a)===e.id);return d===-1?t.length===0?{cell:{id:null,field:i},rowIndex:-1}:(d=Math.min(Math.max(l??0,0),t.length-1),{cell:{id:o(t[d]),field:i,rowIndex:d},rowIndex:d}):{cell:i===e.field?e:{...e,field:i},rowIndex:d}}function ka(e){const{allRenderableRows:t,navigationColumns:n,checkboxSelection:o,selectedRowIds:r,handleSelectionChange:i,handleDetailPanelToggle:l,editingHandlers:d,setKeyboardMode:a,sortModel:f,handleSort:p,handleSortAdd:w,multiSort:b=!1,isCellEditable:C,pagination:g,pageSize:u,virtualization:h,viewportRef:x,pinnedTopRowCount:m=0,getRowId:y=Sa,rowMetaMap:E,onRowActivate:v,toggleRowExpansion:M,handleSelectAll:N,rowSelectionEnabled:P=!0,multipleRowSelectionEnabled:z=!0,pinCheckboxColumn:F=!0,pinExpandColumn:$=!0,rowHeight:_,getSpanOrigin:T,cellSelection:O}=e,[S,j]=s.useState(null),[q,Z]=s.useState(!1),W=s.useMemo(()=>_a(S,t,n,y),[S,t,n,y]),U=W.cell,Q=W.rowIndex,ie=s.useRef(!1),oe=s.useRef(!1),ge=s.useRef(!1),le=s.useRef(null),ue=s.useCallback(G=>{oe.current=!0,G.focus({preventScroll:!0}),oe.current=!1},[]),te=s.useCallback(()=>{const G=x.current;G&&!G.contains(G.ownerDocument.activeElement)&&ue(G)},[x,ue]),ae=s.useMemo(()=>n.find(G=>!Qe(G.field))??n[0],[n]),Y=s.useCallback(()=>{if(o)return{id:null,field:st};if(!ae)return null;const G=t[0];return G?{id:y(G),field:ae.field,rowIndex:0}:{id:null,field:ae.field}},[o,ae,t,y]),re=s.useCallback((G,I)=>{const D=x.current;if(!D)return;const{cumulativeHeights:L,pinnedBottomHeight:A,columnMetrics:V}=h;if(G>=0&&Tn(D,G-m,L,A,_),Qe(I)){!(I===un||I===fn&&$||I===st&&F)&&D.scrollLeft>0&&(D.scrollLeft=0);return}if(!V)return;const{clientWidth:R,scrollLeft:B}=D,{leftPinnedWidth:k,rightPinnedWidth:H,unpinnedAccWidths:X,unpinnedCols:ee,totalSpecialsWidth:ce,pinnedSpecialsWidth:pe}=V,me=ee.findIndex(be=>be.field===I);if(me===-1)return;const ye=ce+k+(me>0?X[me-1]:0),_e=ce+k+X[me],Ce=B+pe+k,Ee=B+R-H;let se=B;ye<Ce?se=Math.max(0,ye-pe-k):_e>Ee&&(se=_e-R+H),se!==B&&(D.scrollLeft=se)},[x,h,m,_,F,$]);s.useLayoutEffect(()=>{const G=x.current,I=!Fo(le.current,U);if(le.current=U,!G||!U)return;const D=G.ownerDocument,L=D.activeElement;let A;if(L===G?A=!0:!L||L===D.body?A=ie.current:G.contains(L)?A=I:A=!1,!A)return;const V=Do(G,U,Q);V?V.contains(L)||V.focus({preventScroll:!0}):L!==G&&ue(G)});const K=s.useCallback(()=>{ge.current=!0,a(!1)},[a]),J=s.useCallback(G=>{const I=G.currentTarget,D=G.relatedTarget,L=!(D instanceof Node&&I.contains(D)),A=ge.current;if(ge.current=!1,ie.current=!0,Z(!0),oe.current)return;if(G.target===I){if(!L)return;if(A||a(!0),U){const B=Do(I,U,Q);B?B.focus({preventScroll:!0}):re(Q,U.field);return}const R=Y();R&&(j(B=>B??R),re(R.rowIndex??-1,R.field));return}const V=ha(G.target,I,t,y);V&&!Fo(V,U)&&j(V)},[U,Q,Y,re,a,t,y]),ne=s.useCallback(G=>{const I=G.relatedTarget;I instanceof Node&&G.currentTarget.contains(I)||(ie.current=!1,ge.current=!1,Z(!1),a(!1))},[a]),de=s.useCallback(G=>{const I=G.currentTarget,D=Ao(G.target,I);if(D==="foreign"||(a(!0),G.nativeEvent?.isComposing||G.keyCode===229))return;const{key:L}=G,A=L===" "||L==="Spacebar",V=!!d.editingCell,R=(fe,we)=>{const Se=n[we];!Se||fe<-1||fe>=t.length||(j(fe===-1?{id:null,field:Se.field}:{id:y(t[fe]),field:Se.field,rowIndex:fe}),re(fe,Se.field))};if(!U){if(!mi.has(L))return;const fe=Y();if(!fe)return;G.preventDefault(),j(fe),re(fe.rowIndex??-1,fe.field);return}const{id:B,field:k}=U,H=Q,X=n.findIndex(fe=>fe.field===k),ee=n.filter(fe=>Qe(fe.field)).length,ce=fe=>Ue(fe,E),pe=(fe,we,Se)=>{const Ne=n[Se];return Qe(Ne.field)?!1:Co({row:fe,field:Ne.field,value:ke(fe,Ne.field,Ne),colDef:Ne,rowIndex:we,colIndex:Se-ee,rowMeta:E?.get(y(fe))},C)},me=fe=>{let we=H,Se=X;const Ne=(t.length+1)*n.length;for(let tt=0;tt<Ne;tt++){if(Se+=fe,Se>=n.length?(Se=0,we++):Se<0&&(Se=n.length-1,we--),we<0||we>=t.length)return null;const $e=t[we];if(!T?.(y($e),n[Se].field)&&pe($e,we,Se))return{r:we,c:Se}}return null};if(V){if(L==="Enter")G.preventDefault(),d.stopCellEdit();else if(L==="Escape")G.preventDefault(),d.stopCellEdit({cancel:!0});else if(L==="Tab"&&B!==null){const fe=me(G.shiftKey?-1:1);fe&&(G.preventDefault(),d.stopCellEdit(),R(fe.r,fe.c))}return}if(L==="Escape"&&O?.collapseSelection()){G.preventDefault();return}if(L==="Tab"||L==="Escape"||D==="control"&&(L==="Enter"||A))return;if((G.ctrlKey||G.metaKey)&&(L==="a"||L==="A")){if(O){O.selectAllCells()&&G.preventDefault();return}if(!P||!z||!N)return;G.preventDefault(),N(!0);return}if(B===null){if(L==="Enter"||A){if(G.preventDefault(),k===st){Do(I,U,-1)?.click();return}const fe=n[X];if(!fe||Qe(k)||fe.sortable===!1)return;const we=f.find(Ne=>Ne.field===k),Se=we?we.sort==="asc"?"desc":null:"asc";(b||G.shiftKey)&&w?w(k,Se):p(k,Se);return}}else if(L==="Enter"||A){G.preventDefault();const fe=t[H];if(k===st){i(B,!r.has(B));return}if(k===fn){G.shiftKey||l(B);return}if(A){G.shiftKey&&P&&!ce(B)&&i(B,!r.has(B));return}if(k===un)return;if(pe(fe,H,X)){d.startCellEdit({id:B,field:k,value:ke(fe,k,n[X])});return}if(M&&E?.get(B)?.hasChildren){M(B);return}v?.({row:fe,id:B,rowIndex:H});return}if(G.altKey&&(L==="ArrowRight"||L==="ArrowLeft")&&M&&B!==null){G.preventDefault();const fe=E?.get(B);fe?.hasChildren&&!!fe.isExpanded!=(L==="ArrowRight")&&M(B);return}if(!mi.has(L))return;G.preventDefault();const ye=t.length-1,_e=n.length-1,Ce=G.ctrlKey||G.metaKey,Ee=g?u:10;if(O&&G.shiftKey&&B!==null&&je(k)&&O.extendSelection(L,Ce,Ee,U))return;const se=(fe,we)=>{switch(L){case"ArrowRight":return we+1>_e?{r:fe+1,c:0}:{r:fe,c:we+1};case"ArrowLeft":return we-1<0?{r:fe-1,c:_e}:{r:fe,c:we-1};case"ArrowDown":return{r:fe+1,c:we};case"ArrowUp":return{r:fe-1,c:we};case"Home":return{r:Ce?-1:fe,c:0};case"End":return{r:Ce?ye:fe,c:_e};case"PageUp":return{r:Math.max(-1,fe-Ee),c:we};default:return{r:Math.min(ye,fe+Ee),c:we}}},be=({r:fe,c:we})=>fe>=-1&&fe<=ye&&we>=0&&we<=_e,Me=({r:fe,c:we})=>fe>=0?T?.(y(t[fe]),n[we].field)??null:null;let ve=se(H,X);if(L.startsWith("Arrow"))for(let fe=be(ve)?Me(ve):null;fe&&fe.rowId===B&&fe.field===k;fe=be(ve)?Me(ve):null)ve=se(ve.r,ve.c);if(!be(ve))return;const he=Me(ve);if(he){const fe=t.findIndex(Se=>y(Se)===he.rowId),we=n.findIndex(Se=>Se.field===he.field);fe!==-1&&we!==-1&&(ve={r:fe,c:we})}ve.r===H&&ve.c===X||R(ve.r,ve.c)},[U,Q,t,n,d,r,i,l,a,f,p,w,b,C,g,u,E,v,M,N,P,z,Y,re,T,y,O]);return{focusedCell:U,setFocusedCell:j,viewportTabIndex:q?-1:0,ensureGridFocus:te,handleFocus:J,handleBlur:ne,handleKeyDown:de,handleMouseDownCapture:K}}const Ea=[],Ma={rowFields:[],columnFields:[],valueFields:[]},wi=100;function Na(e){return!e||e.length===0||e.includes(wi)?wi:e[0]}function Ia(e){const{initialState:t,sortModel:n,onSortModelChange:o,filterModel:r,onFilterModelChange:i,aggregationModel:l,onAggregationModelChange:d,columnVisibilityModel:a,onColumnVisibilityModelChange:f,pinnedColumns:p,onPinnedColumnsChange:w,pivotModel:b,onPivotModelChange:C,paginationModel:g,onPaginationModelChange:u,pageSizeOptions:h,rowSelectionModel:x,onRowSelectionModelChange:m,density:y,cellSelectionModel:E,onCellSelectionModelChange:v}=e,[M,N]=s.useState(()=>t?.sorting?.sortModel??[]),P=n!==void 0,z=P?n:M,F=s.useCallback(he=>{P||N(he),o?.(he)},[P,o]),[$,_]=s.useState(()=>t?.filter?.filterModel??{items:[]}),T=r!=null,O=T?r:$,S=s.useCallback(he=>{T||_(he),i?.(he)},[T,i]),j=l!==void 0,[q,Z]=s.useState(()=>l??{}),W=JSON.stringify(j?l:q),U=s.useMemo(()=>JSON.parse(W),[W]),Q=s.useCallback(he=>{j||Z(he),d?.(he)},[j,d]),ie=a!==void 0,[oe,ge]=s.useState(()=>t?.columns?.columnVisibilityModel??{}),le=ie?a:oe,ue=s.useCallback(he=>{ie||ge(he),f?.(he)},[ie,f]),te=p!==void 0,[ae,Y]=s.useState(()=>t?.columns?.pinnedColumns??{}),re=te?p:ae,K=s.useCallback(he=>{te||Y(he),w?.(he)},[te,w]),[J,ne]=s.useState(()=>b??Ma),de=b??J,G=s.useCallback(he=>{ne(he),C?.(he)},[C]),I=g!==void 0,[D,L]=s.useState(()=>t?.pagination?.paginationModel??g??{page:0,pageSize:Na(h)}),A=I?g:D,V=s.useCallback(he=>{I||L(he),u?.(he)},[I,u]),R=x!==void 0,[B,k]=s.useState([]),H=R?x:B,X=s.useMemo(()=>new Set(H),[H]),ee=s.useRef(null);s.useLayoutEffect(()=>{ee.current=null});const ce=s.useCallback(()=>ee.current,[]),pe=s.useCallback(he=>{ee.current=he,R||k(he),m?.(he)},[R,m]),[me]=s.useState(()=>t?.density?.density??"standard"),ye=y??me,_e=E!==void 0,[Ce,Ee]=s.useState(Ea),se=_e?E:Ce,be=s.useRef(null);s.useLayoutEffect(()=>{be.current=null});const Me=s.useCallback(()=>be.current,[]),ve=s.useCallback((he,fe)=>{be.current=he,_e||Ee(he),v?.(he,{reason:fe})},[_e,v]);return{sortModel:z,isSortControlled:P,setInternalSortModel:N,handleSortModelChange:F,filterModel:O,isFilterControlled:T,handleFilterModelChange:S,aggregationModel:U,handleAggregationModelChange:Q,columnVisibilityModel:le,handleColumnVisibilityModelChange:ue,pinnedColumns:re,handlePinnedColumnsChange:K,currentPivotModel:de,handlePivotModelChange:G,effectivePaginationModel:A,handlePaginationModelChange:V,rowSelectionModel:H,selectedRowIds:X,isSelectionControlled:R,setInternalRowSelectionModel:k,handleRowSelectionModelChange:pe,getPendingRowSelectionModel:ce,density:ye,cellSelectionModel:se,handleCellSelectionModelChange:ve,getPendingCellSelectionModel:Me}}const xi=s.createContext(null),Pa=52,La=56,Ta=32,Fa=72;function Gn(e){if(e===void 0)return;const t=/^(\d+(?:\.\d+)?)(?:\s*px)?$/.exec(e.trim());if(!t)return;const n=Number(t[1]);return n>0?n:void 0}function Aa(e){const{rowHeight:t,headerHeight:n,density:o}=e,r=s.useContext(xi)?.grid;let i;return o==="compact"?i=Gn(r?.rowHeightCompact)??Ta:o==="comfortable"?i=Gn(r?.rowHeightComfortable)??Fa:i=t??Gn(r?.rowHeightStandard)??Pa,{rowHeight:i,headerHeight:n??Gn(r?.headerHeight)??La}}function Wn(e){return e>=1?Math.floor(e):1}function $o(e,t){return Math.max(1,Math.ceil(Math.max(0,e)/Wn(t)))}function Da(e){const{paginationMode:t,hasDataSource:n,dataSourceRowCount:o,rowCountProp:r,clientRowCount:i}=e;return t!=="server"?i:(n?o??r:r)??i}function bi(e){return e?{paginationRowsPerPage:e.paginationRowsPerPage,paginationOf:e.paginationOf,paginationPage:e.paginationPage}:void 0}function Ci(e,t){return Number.isFinite(e)?Math.min(Math.max(0,Math.floor(e)),Math.max(0,t-1)):0}function Oa(e){const{effectiveRows:t,activeHierarchyHandlers:n,filterMode:o,filterModel:r,sortModel:i,sortingMode:l,pagination:d,paginationMode:a,effectivePaginationModel:f,pinnedRows:p,getRowId:w,columnLookup:b,hierarchyField:C}=e,g=s.useMemo(()=>n?n.getVisibleRows({labelField:C})||[]:o==="server"?t:ko(t,r,b),[t,r,n,C,o,b]),u=s.useMemo(()=>n?o==="server"?t:ko(t,r,b):g,[n,g,o,t,r,b]),{top:h,center:x,bottom:m}=s.useMemo(()=>n?{top:[],center:g,bottom:[]}:Ls(g,p,w),[g,p,n,w]),y=s.useMemo(()=>n||l==="server"?x:na(x,i,b,w),[x,i,n,l,b,w]),E=d&&a!=="server",v=Wn(f.pageSize),M=E?Ci(f.page,$o(y.length,v)):f.page,N=s.useMemo(()=>{if(!E)return y;const z=M*v;return y.slice(z,z+v)},[y,E,M,v]),P=s.useMemo(()=>{const z=d?N:y;return[...h,...z,...m]},[h,N,y,m,d]);return{filteredRows:g,dataRows:u,pinnedTopRows:h,unpinnedRows:x,pinnedBottomRows:m,sortedUnpinnedRows:y,paginatedUnpinnedRows:N,currentPage:M,allRenderableRows:P}}function $a(e){const{layout:t,scrollTop:n,scrollLeft:o,viewportWidth:r,viewportHeight:i,autoHeight:l,rowReordering:d,hasDetailPanel:a,checkboxSelection:f,pinCheckboxColumn:p,pinExpandColumn:w,overscanRows:b=5}=e;return s.useMemo(()=>{const{unpinnedAccWidths:C,unpinnedColsWithWidth:g,leftPinnedCols:u,rightPinnedCols:h,totalWidth:x,leftWidth:m,rightWidth:y,unpinnedTotalWidth:E,systemColumnsWidth:v,cumulativeHeights:M,pinnedTopHeight:N,pinnedBottomHeight:P,unpinnedRowsHeight:z,rowHeights:F,unpinnedRowsLength:$}=t,_=r||1e3,T=l?N+z+P+50:i||600,O=6,S=Math.max(0,o-m),j=o+_-m;let q=0,Z=g.length-1,W=0,U=C.length-1;for(;W<=U;){const ne=W+U>>>1;C[ne]<S?W=ne+1:U=ne-1}q=Math.max(0,W-O);for(let ne=q;ne<C.length;ne++){if((ne===0?0:C[ne-1])>j){Z=Math.min(g.length-1,ne+O);break}Z=Math.min(g.length-1,ne+O)}const Q=q>0?C[q-1]:0,ie=E-C[Z],oe=[...u,...Q>0?[{field:"__spacer_left__",width:Q,isSpacer:!0}]:[],...g.slice(q,Z+1),...ie>0?[{field:"__spacer_right__",width:ie,isSpacer:!0}]:[],...h],le=_>0&&x>_?16:0,ue=N+z+P+le+2;let te=0,ae=$-1,Y=0,re=0,K=M.length-1;for(;re<=K;){const ne=re+K>>>1;M[ne]<n?re=ne+1:K=ne-1}te=Math.max(0,re-b),Y=te>0?M[te-1]:0;for(let ne=te;ne<M.length;ne++)if(M[ne]>=n+T){ae=Math.min($-1,ne+b);break}const J=(d?48:0)+(a&&w?48:0)+(f&&p?48:0);return{renderContext:{firstRowIndex:te,lastRowIndex:ae,firstColumnIndex:q,lastColumnIndex:Z},offsetTop:Y,offsetLeft:0,totalHeight:ue,pinnedTopHeight:N,pinnedBottomHeight:P,totalWidth:x,rowHeights:F,cumulativeHeights:M,virtualColumns:oe,columnMetrics:{leftPinnedWidth:m,rightPinnedWidth:y,unpinnedAccWidths:C,unpinnedCols:g,totalSpecialsWidth:v,pinnedSpecialsWidth:J}}},[t,n,o,r,i,l,d,a,f,p,w,b])}const Go="application/x-ogx-row",Wo="application/x-ogx-column";function yi(e,t,n){const o=e.dataTransfer;!o||typeof o.setData!="function"||(o.setData(t,n),o.setData("text/plain",n))}function Bn(e,t){const n=e.dataTransfer?.types;return n?Array.from(n).includes(t):!0}function vi(e,t){if(!e||typeof e.addEventListener!="function")return()=>{};const n=()=>t();return e.addEventListener("dragend",n,{once:!0}),()=>e.removeEventListener("dragend",n)}function Ga(e){const{columns:t,onColumnOrderChange:n,disableColumnReorder:o=!1}=e,[r,i]=s.useState(null),[l,d]=s.useState(null),a=s.useRef(()=>{}),f=s.useCallback(()=>{a.current(),a.current=()=>{},i(null),d(null)},[]);s.useEffect(()=>()=>a.current(),[]);const p=s.useCallback(C=>g=>{if(!o){if(!t.some(u=>u.field===C)){g.preventDefault();return}a.current(),a.current=vi(g.currentTarget,f),i(C),g.dataTransfer&&(g.dataTransfer.effectAllowed="move",yi(g,Wo,C))}},[t,o,f]),w=s.useCallback(C=>g=>{if(!(o||r===null)){if(!Bn(g,Wo)){f();return}g.preventDefault(),g.dataTransfer&&(g.dataTransfer.dropEffect="move"),d(C)}},[r,o,f]),b=s.useCallback(C=>g=>{if(g.preventDefault(),o||r===null||!Bn(g,Wo)){f();return}const u=t.findIndex(x=>x.field===r),h=t.findIndex(x=>x.field===C);f(),!(u===-1||h===-1||u===h)&&n?.({column:t[u],oldIndex:u,targetIndex:h})},[t,r,o,n,f]);return{draggedColumn:r,dragOverColumn:l,onDragStart:o?void 0:p,onDragOver:o?void 0:w,onDragEnd:o?void 0:f,onDrop:o?void 0:b}}function Bo({isExpanded:e,onClick:t,variant:n="chevron",tabIndex:o}){return c.jsx("button",{className:`ogx-expand-icon ${e?"ogx-expand-icon--expanded":""}`,onClick:r=>{t&&t(r)},"aria-label":e?"Collapse row":"Expand row",type:"button",tabIndex:o,children:n==="plus-minus"?c.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[c.jsx("path",{d:"M4 8H12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),c.jsx("path",{d:"M8 4V12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{opacity:e?0:1,transition:"opacity 0.2s ease",transformOrigin:"center"}})]}):c.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{transform:e?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.2s ease"},children:c.jsx("path",{d:"M6 4L10 8L6 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})}function Wa({renderFn:e}){"use no memo";return c.jsx(c.Fragment,{children:e()})}function Ba(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((n,o)=>Object.is(n,t[o])):Object.is(e,t)}class St extends s.Component{constructor(t){super(t),this.state={hasError:!1,error:null,resetKey:t.resetKey}}static getDerivedStateFromProps(t,n){return Ba(t.resetKey,n.resetKey)?null:n.hasError?{hasError:!1,error:null,resetKey:t.resetKey}:{resetKey:t.resetKey}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,n){process.env.NODE_ENV!=="production"&&console.warn(`[CellErrorBoundary] field="${this.props.field}"`,t,n.componentStack)}render(){return this.state.hasError?c.jsx("div",{className:"ogx__cell-error",role:"img","aria-label":`Error in cell: ${this.props.field}`,title:this.state.error?.message??"Render error",children:"⚠"}):c.jsx(Wa,{renderFn:this.props.renderFn})}}function Ha(e,t,n){if(!t||!n)return{valueGetter:e.valueGetter,valueFormatter:e.valueFormatter};const o=l=>n.has(l.id),r=e.valueGetter,i=e.valueFormatter;return{valueGetter:r?l=>o(l.row)?l.value:r(l):void 0,valueFormatter:l=>o(l.row)?An(l.value,t,e,l.row):i?i(l):l.value==null?"":String(l.value)}}function Si(e,t){if(!t)return e;const n=t.left??[],o=t.right??[],r=i=>{const l=lt(i.field,t);return l==="left"?n.indexOf(i.field)-n.length:l==="right"?1+o.indexOf(i.field):0};return[...e].sort((i,l)=>r(i)-r(l))}const Hn=e=>e.formattedValue??e.value;function _i(e,t,n){const o=e.renderCell;if(!o)return{useDefault:!0};const r=!!t.rowMeta?.isGroupRow;if(!n){const l=o(t);return r&&l===void 0?{useDefault:!0}:{useDefault:!1,content:l}}let i;try{i=o(t)}catch(l){return{useDefault:!1,content:c.jsx(St,{field:e.field,resetKey:t.row,renderFn:()=>{throw l}})}}return r&&i===void 0?{useDefault:!0}:{useDefault:!1,content:c.jsx(St,{field:e.field,resetKey:t.row,renderFn:()=>i})}}function za(e,t,n){const o=e.rowMeta;if(!o?.isGroupRow)return Hn(e);if(o.isGroupFooter)return null;const r=o.descendantCount;if(t&&o.hasChildren){const i=o.groupLabel??`${o.groupingField}: ${String(o.groupingValue)}`;return c.jsxs("div",{className:"ogx__group-cell-content",children:[i,r!==void 0?` (${r})`:""]})}return n?c.jsxs("div",{className:"ogx__group-cell-content",children:[o.groupLabel,r!==void 0&&r>0?` (${r})`:""]}):Hn(e)}const Va=e=>e.id;function Ka(e){const{activeColumns:t,isHierarchyEnabled:n,isRowGrouping:o,isTreeData:r,activeHierarchyHandlers:i,columnVisibilityModel:l,columnOrder:d,onColumnOrderChange:a,onColumnOrderModelChange:f,disableColumnReorder:p,pivotMode:w,checkboxSelection:b,hasDetailPanel:C,rowReordering:g,initialState:u,setColumns:h,pinnedColumns:x,getRowId:m=Va,aggregationModel:y,groupingRows:E}=e,v=s.useMemo(()=>t.map(K=>K.field),[t]),[M,N]=s.useState(()=>u?.columns?.columnOrder??null),P=w?v.join("\0"):"",[z,F]=s.useState(null),$=z&&z.key===P?z.order:v,T=w?$:d??(M??v),O=s.useCallback(K=>{if(w){F(J=>{const ne=J&&J.key===P?J.order:v;return{key:P,order:typeof K=="function"?K(ne):K}});return}N(J=>typeof K=="function"?K(J??v):K)},[w,P,v]),S=s.useCallback(K=>w&&K.hideable===!1||l[K.field]!==!1,[w,l]),j=s.useMemo(()=>{if(!n)return;const K=new Map(T.map((G,I)=>[G,I])),J=G=>K.get(G.field)??t.indexOf(G),ne=[...t].sort((G,I)=>J(G)-J(I));return(Si(ne.filter(G=>l[G.field]!==!1),x)[0]??t[0])?.field},[n,T,t,l,x]),q=s.useMemo(()=>{if(!n)return t;const K=o?E:void 0;return t.map(J=>{const ne=Ha(J,y?.[J.field],K);return J.field===j?{...J,...ne,renderCell:de=>{const G=de.rowMeta,I=G?.treeDepth??0,D=!!G?.hasChildren,L=!!G?.isExpanded,A=_i(J,de,!0),V=A.useDefault?za(de,o,r):A.content;return c.jsxs("div",{style:{display:"flex",alignItems:"center",paddingLeft:I*24,width:"100%",height:"100%"},children:[c.jsx("div",{style:{marginRight:4,width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",cursor:D?"pointer":"default",flexShrink:0},children:D?c.jsx("div",{onClick:R=>{R.stopPropagation(),R.preventDefault(),i?.toggleExpansion(m(de.row))},onMouseDown:R=>{R.stopPropagation()},style:{cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto",zIndex:10,position:"relative"},children:c.jsx(Bo,{isExpanded:L,tabIndex:-1,onClick:R=>{R.stopPropagation(),R.preventDefault(),i?.toggleExpansion(m(de.row))}})}):null}),c.jsx("div",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:V})]})}}:{...J,...ne,renderCell:de=>{const G=de.rowMeta;if(!G?.isGroupRow)return J.renderCell?J.renderCell(de):Hn(de);const I=_i(J,de,!1);return I.useDefault?J.field===G.groupingField&&!G.isGroupFooter||de.value==null?null:Hn(de):I.content}}})},[t,n,o,r,i,j,m,y,E]),[Z,W]=s.useState(()=>u?.columns?.columnWidths??{}),U=s.useCallback((K,J)=>{W(ne=>({...ne,[K]:J}))},[]);s.useEffect(()=>{h(t)},[t,h]);const Q=s.useMemo(()=>{const K=new Map(T.map((J,ne)=>[J,ne]));return[...q].sort((J,ne)=>{const de=K.get(J.field)??q.indexOf(J),G=K.get(ne.field)??q.indexOf(ne);return de-G})},[q,T]),ie=s.useMemo(()=>Q.filter(S),[Q,S]),oe=s.useCallback((K,J)=>{(w||!d)&&O(K),J&&a?.(J),w||f?.(K)},[w,d,O,a,f]),ge=s.useCallback((K,J)=>{const ne=Q.map(G=>G.field),[de]=ne.splice(K,1);ne.splice(J,0,de),oe(ne,{column:Q[K],oldIndex:K,targetIndex:J})},[Q,oe]),le=Ga({columns:Q,onColumnOrderChange:s.useCallback(({oldIndex:K,targetIndex:J})=>ge(K,J),[ge]),disableColumnReorder:p}),ue=s.useCallback((K,J)=>{const ne=Q.findIndex(G=>G.field===K),de=Q.findIndex(G=>G.field===J);ne===-1||de===-1||ne===de||ge(ne,de)},[Q,ge]),te=s.useCallback(()=>{oe(v)},[oe,v]),ae=s.useMemo(()=>Si(ie,x),[ie,x]),Y=s.useMemo(()=>{const K=[];return g&&K.push({field:un,sortable:!1,editable:!1}),C&&K.push({field:fn,sortable:!1,editable:!1}),b&&K.push({field:st,sortable:!1,editable:!1}),[...K,...ae]},[ae,b,C,g]),re=s.useMemo(()=>new Map(ae.map((K,J)=>[K.field,J])),[ae]);return{effectiveColumns:q,hierarchyField:j,orderedColumns:Q,visibleOrderedColumns:ie,renderOrderedColumns:ae,navigationColumns:Y,columnIndexMap:re,columnWidths:Z,effectiveColumnOrder:T,setInternalColumnOrder:O,columnReorderHandlers:le,moveColumn:ue,resetColumnOrder:te,handleColumnResize:U}}const Ua=e=>e.id;function ja(e){const{renderContext:t,pinnedTopRows:n,pinnedBottomRows:o,paginatedUnpinnedRows:r,sortedUnpinnedRows:i,pagination:l,getRowId:d=Ua}=e;return s.useMemo(()=>{const{firstRowIndex:a,lastRowIndex:f}=t,p=l?r:i,w=n.length,b=n.map((y,E)=>({row:y,id:d(y),rowIndex:E,pinned:"top"})),C=o.map((y,E)=>({row:y,id:d(y),rowIndex:w+p.length+E,pinned:"bottom"})),g=Math.max(0,a),u=Math.min(p.length,f+1),h=p.slice(g,u).map((y,E)=>({row:y,id:d(y),rowIndex:w+g+E})),x=[...b,...h,...C],m=new Set;return x.filter(y=>m.has(y.id)?!1:(m.add(y.id),!0))},[t,n,o,r,i,l,d])}const Ra=100;function ki(e){const{scrollTop:t,scrollHeight:n,clientHeight:o}=e;return n-t-o>=Ra?null:{visibleTop:t,visibleBottom:t+o,viewportHeight:o}}function qa(e){return e<.5?3:e<3?5:e<15?12:e<40?20:30}function Xa(e){const{onRowsScrollEnd:t,overscanRowCount:n=3,rowCount:o=0,autoHeight:r=!1}=e,i=s.useRef({scrollTop:0,scrollLeft:0,velocity:0}),l=s.useRef({scrollTop:0,scrollLeft:0,time:0}),d=s.useRef(null),a=s.useRef(null),f=s.useRef(null),p=s.useRef(!0),w=s.useRef(t),[b,C]=s.useState({scrollTop:0,scrollLeft:0,velocityOverscan:0});s.useEffect(()=>{w.current=t},[t]),s.useEffect(()=>()=>{d.current!==null&&cancelAnimationFrame(d.current),a.current!==null&&clearTimeout(a.current)},[]);const g=s.useCallback(x=>{const m=ki(x);if(!m){p.current=!0;return}if(!p.current)return;const y=w.current;y&&(p.current=!1,y(m))},[]),u=s.useCallback(x=>{const m=x.currentTarget,y=performance.now(),E=Math.abs(m.scrollTop-l.current.scrollTop)+Math.abs(m.scrollLeft-l.current.scrollLeft),v=y-l.current.time,M=v>0?E/v:0,N=m.scrollTop!==l.current.scrollTop;l.current={scrollTop:m.scrollTop,scrollLeft:m.scrollLeft,time:y},i.current={scrollTop:m.scrollTop,scrollLeft:m.scrollLeft,velocity:M},d.current!==null&&cancelAnimationFrame(d.current),d.current=requestAnimationFrame(()=>{d.current=null;const{scrollTop:P,scrollLeft:z,velocity:F}=i.current;C({scrollTop:P,scrollLeft:z,velocityOverscan:qa(F)})}),a.current!==null&&clearTimeout(a.current),a.current=setTimeout(()=>{a.current=null,C(P=>P.velocityOverscan===0?P:{...P,velocityOverscan:0})},200),N&&g(m)},[g]);s.useEffect(()=>{p.current=!0;const x=f.current;!x||r||o<=0||x.clientHeight===0||g(x)},[o,r,g]);const h=s.useCallback(x=>{if(f.current=x,!x)return;const{scrollTop:m,scrollLeft:y}=i.current;if(m===0&&y===0)return;x.scrollTop=m,x.scrollLeft=y;const E={scrollTop:x.scrollTop,scrollLeft:x.scrollLeft};(E.scrollTop!==m||E.scrollLeft!==y)&&(i.current={...i.current,...E},l.current={...l.current,...E},C(v=>({...v,...E})))},[]);return{scrollTop:b.scrollTop,scrollLeft:b.scrollLeft,overscanRows:Math.max(b.velocityOverscan,n),handleScroll:u,attachViewport:h}}function Ya(e){const t=s.useRef(null);return s.useCallback(n=>{if(t.current?.disconnect(),t.current=null,!n||typeof ResizeObserver>"u")return;const o=new ResizeObserver(r=>{for(const i of r){const{width:l,height:d}=i.contentRect;e(l,d)}});o.observe(n),t.current=o},[e])}function Ja(e){const{setDimensions:t,viewportRef:n,...o}=e,{scrollTop:r,scrollLeft:i,overscanRows:l,handleScroll:d,attachViewport:a}=Xa(o),f=Ya(t),p=s.useCallback(w=>{n.current=w,f(w),a(w)},[n,f,a]);return{scrollTop:r,scrollLeft:i,overscanRows:l,handleScroll:d,setViewportElement:p}}function Za(){const[e,t]=s.useState(()=>new Map),n=s.useCallback((o,r)=>{t(i=>{if(i.get(o)===r)return i;const l=new Map(i);return l.set(o,r),l})},[]);return{detailPanelHeights:e,reportDetailPanelHeight:n}}function Qa(e){const{hasDetailPanel:t,controlledExpandedRowIds:n,onDetailPanelExpandedRowIdsChange:o,rowMetaMap:r}=e,[i,l]=s.useState(new Set),d=n??i,a=s.useMemo(()=>Os(d,r),[d,r]),f=s.useCallback(b=>{if(r.get(b)?.isGroupRow)return;const C=new Set(d);C.has(b)?C.delete(b):C.add(b),n===void 0&&l(C),o?.(C)},[d,r,n,o]),{detailPanelHeights:p,reportDetailPanelHeight:w}=Za();return{hasDetailPanel:t,expandedRowIds:a,handleDetailPanelToggle:f,detailPanelHeights:p,reportDetailPanelHeight:w}}const ec=new Set(["__group__"]),gn=e=>!ec.has(e);function Ei(e){return Object.keys(e).every(gn)?e:Object.fromEntries(Object.entries(e).filter(([n])=>gn(n)))}function tc(e){const t={...e};return e.left&&(t.left=e.left.filter(gn)),e.right&&(t.right=e.right.filter(gn)),t}function nc(e){const{onStateChange:t,sortModel:n,filterModel:o,effectivePaginationModel:r,columnWidths:i,effectiveColumnOrder:l,columnVisibilityModel:d,pinnedColumns:a,density:f}=e,p=s.useRef(t);s.useLayoutEffect(()=>{p.current=t});const w=s.useRef(null);s.useEffect(()=>{if(!p.current)return;const b={sorting:{sortModel:n},filter:{filterModel:o},pagination:{paginationModel:r},columns:{columnWidths:Ei(i),columnOrder:l.filter(gn),columnVisibilityModel:Ei(d),pinnedColumns:tc(a)},density:{density:f}},C=JSON.stringify(b);C!==w.current&&(w.current=C,p.current(b))},[n,o,r,i,l,d,a,f])}const oc=200,rc=2e3,ic=178e5;function lc(e){const{paginationRequested:t,isRowGrouping:n,autoHeight:o,viewportHeight:r,renderedRowCount:i,totalRowCount:l,pinnedRowsIgnored:d=!1,scrollHeight:a=0,listViewWithoutColumn:f=!1,listViewRowCount:p=0}=e,w=s.useRef(!1),b=s.useRef(!1),C=s.useRef(!1),g=s.useRef(!1),u=s.useRef(!1),h=s.useRef(!1);s.useEffect(()=>{process.env.NODE_ENV==="production"||h.current||p<=rc||(h.current=!0,console.warn(`[OpenGridX] The list view is rendering all ${p} items: it does not virtualize. Above a few thousand items use \`pagination\`, server-side loading, or the grid view. See docs/features/list-view.md.`))},[p]),s.useEffect(()=>{process.env.NODE_ENV==="production"||u.current||!f||(u.current=!0,console.warn("[OpenGridX] `listView` is set without a `listViewColumn`, so the grid view is shown instead. Pass `listViewColumn` to render list items. See docs/features/list-view.md."))},[f]),s.useEffect(()=>{process.env.NODE_ENV==="production"||C.current||!d||(C.current=!0,console.warn("[OpenGridX] `pinnedRows` is ignored while treeData or rowGroupingModel is active: the rows stay in their place in the hierarchy. See docs/features/pinning.md."))},[d]),s.useEffect(()=>{process.env.NODE_ENV==="production"||g.current||a<=ic||(g.current=!0,console.warn(`[OpenGridX] The grid content is ${Math.round(a)}px tall. Browsers cap element heights (about 17.9M px in Firefox, 33.5M px in Chrome and Safari), so the last rows may not be reachable by scrolling. Use pagination, server-side or infinite loading, or a smaller rowHeight. See docs/features/virtualization.md.`))},[a]),s.useEffect(()=>{process.env.NODE_ENV==="production"||w.current||t&&n&&(w.current=!0,console.warn("[OpenGridX] `pagination` is ignored while `rowGroupingModel` is active — all group rows render in one scrollable view. Give the grid a bounded height so it virtualizes. See docs/features/tree-data-grouping.md."))},[t,n]),s.useEffect(()=>{process.env.NODE_ENV==="production"||b.current||o||r>0&&l>oc&&i>=l&&r>=a&&(b.current=!0,console.warn(`[OpenGridX] The grid viewport is ${Math.round(r)}px tall and is rendering all ${l} rows, so row virtualization is effectively off: the grid fills its container, and the container grows to fit every row. Give the container a definite height (for example \`height: 600px\` or \`100vh\`). If the container, or any ancestor up to the sized one, is a flex or grid item, add \`min-height: 0\` to it. Alternatively pass a \`height\` prop, or \`autoHeight\` if rendering every row is intended. See docs/features/virtualization.md.`))},[o,r,i,l,a])}function sc(e){return typeof window>"u"||typeof window.getComputedStyle!="function"||typeof navigator<"u"&&/jsdom/i.test(navigator.userAgent)?!1:window.getComputedStyle(e).display!=="flex"}let Mi=!1;function ac(e){s.useEffect(()=>{if(process.env.NODE_ENV==="production"||Mi)return;const t=e.current;!t||!sc(t)||(Mi=!0,console.warn("[OpenGridX] The grid stylesheet is not loaded, so the grid is unstyled and renders every row (its viewport does not scroll). Add `import '@opencorestack/opengridx/styles'` once in your app root. See README.md, Getting Started."))},[e])}function zn(e,t,n,o){if(n&&o)return t.length>0?[t[t.length-1]]:Array.from(e);const r=new Set(e);return t.forEach(i=>n?r.add(i):r.delete(i)),Array.from(r)}function cc(e,t,n){return n?e.has(t)?[]:[t]:zn(e,[t],!e.has(t),!1)}function Ni(e,t){return t.length===e.size&&t.every(n=>e.has(n))}function dc(e){const{selectedRowIds:t,onSelectionModelChange:n,disableMultipleRowSelection:o,selectableRowIds:r}=e,i=s.useCallback(w=>{Ni(t,w)||n(w)},[t,n]),l=s.useCallback((w,b)=>{i(zn(t,[w],b,o))},[i,t,o]),d=s.useCallback(w=>{i(cc(t,w,o))},[i,t,o]),a=s.useCallback(w=>{i(zn(t,r,w,!1))},[i,t,r]),{allSelected:f,someSelected:p}=s.useMemo(()=>{let w=0;for(const C of r)t.has(C)&&w++;const b=r.length>0&&w===r.length;return{allSelected:b,someSelected:!b&&w>0}},[r,t]);return{toggleRow:l,clickRow:d,selectAll:o?void 0:a,allSelected:f,someSelected:p}}function uc(e){const{dataRows:t,getRowId:n,isPivotActive:o,selectedRowIds:r,onSelectionModelChange:i,disableMultipleRowSelection:l,disableRowSelectionOnClick:d,isHierarchyEnabled:a,rowMetaMap:f,activeHierarchyHandlers:p,onRowClick:w}=e,b=s.useMemo(()=>{const m=t.map(n);return o?m.filter(y=>y!==$t):m},[t,n,o]),C=dc({selectedRowIds:r,onSelectionModelChange:i,disableMultipleRowSelection:l,selectableRowIds:b}),{clickRow:g,toggleRow:u}=C,h=s.useCallback(m=>{const{id:y}=m,E=a?f.get(y):void 0;if(E?.isGroupRow){E.hasChildren&&p?.toggleExpansion(y);return}w?.(m),!d&&!Ue(y,f)&&g(y)},[a,p,w,f,d,g]),x=s.useCallback((m,y)=>{Ue(m,f)||u(m,y)},[f,u]);return{rowSelection:C,handleRowClick:h,handleSelectionChange:x}}const Ii=e=>JSON.stringify(Array.from(e,t=>typeof t=="number"?["n",t]:["s",t]));function fc(e){const{selectedRowIds:t,rowsLookup:n,rowMetaMap:o,enabled:r,onSelectionModelChange:i}=e,l=s.useMemo(()=>{if(!r||t.size===0)return t;let f=!1;const p=new Set;for(const w of t)n.has(w)||o.has(w)?p.add(w):f=!0;return f?p:t},[r,t,n,o]),d=s.useRef(i);s.useLayoutEffect(()=>{d.current=i});const a=s.useRef(null);return s.useEffect(()=>{if(l===t){a.current=null;return}const f=`${Ii(t)}|${Ii(l)}`;a.current!==f&&(a.current=f,d.current(Array.from(l)))},[l,t]),l}function Ho(e,t,n,o){return o?oa(e,t,n):n?[{field:t,sort:n}]:e.filter(r=>r.field!==t)}function gc(e){const{sortModel:t,onSortModelChange:n}=e,o=s.useCallback((i,l)=>{n(Ho(t,i,l,!1))},[t,n]),r=s.useCallback((i,l)=>{n(Ho(t,i,l,!0))},[t,n]);return{handleSort:o,handleSortAdd:r}}function pc(e){const{columnVisibilityModel:t,onColumnVisibilityModelChange:n,pinnedColumns:o,onPinnedColumnsChange:r}=e,i=s.useRef({columnVisibilityModel:t,pinnedColumns:o});s.useLayoutEffect(()=>{i.current={columnVisibilityModel:t,pinnedColumns:o}});const l=s.useCallback(a=>{const f={...i.current.columnVisibilityModel,[a]:!1};i.current={...i.current,columnVisibilityModel:f},n(f)},[n]),d=s.useCallback((a,f)=>{const p=Ts(i.current.pinnedColumns,a,f);i.current={...i.current,pinnedColumns:p},r(p)},[r]);return{handleHideColumn:l,handlePinColumn:d}}function hc(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e}),s.useLayoutEffect(()=>{const o=t.current,r=()=>n.current;o.getSortModel=()=>r().sortModel,o.sortColumn=(a,f)=>{const{sortModel:p,multiSort:w,onSortModelChange:b}=r(),C=Ho(p,a,f,w);n.current={...r(),sortModel:C},b(C)},o.getFilterModel=()=>r().filterModel,o.setFilterModel=a=>{n.current={...r(),filterModel:a},r().onFilterModelChange(a)};const i=a=>{n.current={...r(),paginationModel:a},r().onPaginationModelChange(a)};o.setPage=a=>i({...r().paginationModel,page:a}),o.setPageSize=a=>i({...r().paginationModel,pageSize:a,page:0});const l=()=>{const a=r().getPendingRowSelectionModel?.();return a?new Set(a):r().selectedRowIds},d=(a,f)=>{const{disableMultipleRowSelection:p,onRowSelectionModelChange:w,isSyntheticRowId:b}=r(),C=b?a.filter(h=>!b(h)):a;if(C.length===0)return;const g=l(),u=zn(g,C,f,p);Ni(g,u)||(n.current={...r(),selectedRowIds:new Set(u)},w(u))};o.getSelectedRows=()=>Array.from(l()),o.selectRow=(a,f=!0)=>d([a],f),o.selectRows=(a,f=!0)=>d(a,f),o.getVisibleRows=()=>r().getVisibleRows(),o.getAllFilteredRows=()=>r().getAllFilteredRows(),o.getVisibleColumns=()=>r().visibleColumns},[t])}const Pi="\0";function mc(e,t){const n=e.filter(o=>t[o.field]===!1).map(o=>o.field).join(Pi);return s.useMemo(()=>{const o={};if(n)for(const r of n.split(Pi))o[r]=!1;return Po(e,o)},[e,n])}function wc({paginationModel:e,currentPage:t,enabled:n,onPaginationModelChange:o}){const r=s.useRef({paginationModel:e,onPaginationModelChange:o});s.useLayoutEffect(()=>{r.current={paginationModel:e,onPaginationModelChange:o}});const i=e.page,l=s.useRef(null);s.useEffect(()=>{if(!n)return;if(t===i){l.current=null;return}const d=`${i}>${t}`;if(l.current===d)return;l.current=d;const{paginationModel:a,onPaginationModelChange:f}=r.current;f({...a,page:t})},[n,t,i])}function xc(){const[e,t]=s.useState(!1),[n,o]=s.useState(!1),r=s.useRef(null),i=s.useRef(0),l=s.useMemo(()=>({registerColumnsPanel:()=>(i.current+=1,()=>{i.current-=1})}),[]),d=s.useCallback(()=>{i.current>0?t(!0):o(!0)},[]),a=s.useCallback(()=>t(!1),[]),f=s.useCallback(()=>o(!1),[]);return s.useEffect(()=>{if(!n)return;function p(b){r.current&&!r.current.contains(b.target)&&o(!1)}function w(b){b.key==="Escape"&&o(!1)}return document.addEventListener("mousedown",p),document.addEventListener("keydown",w),()=>{document.removeEventListener("mousedown",p),document.removeEventListener("keydown",w)}},[n]),{toolbarHost:l,toolbarPanelRequested:e,closeToolbarPanel:a,standalonePanelOpen:n,closeStandalonePanel:f,standalonePanelRef:r,openColumnsPanel:d}}const Li=s.createContext(null);function bc(e){if(typeof e!="function")return!1;const t=e.prototype;return!(typeof t=="object"&&t!==null&&"isReactComponent"in t)}function Cc({render:e,toolbarProps:t}){"use no memo";return c.jsx(c.Fragment,{children:e(t)})}function yc({component:e,toolbarProps:t}){if(bc(e))return c.jsx(Cc,{render:e,toolbarProps:t},`fn:${e.toString()}`);const n=e;return c.jsx(n,{...t})}const Ti=48;function vc({columns:e,aggregationModel:t,aggregationResult:n,columnWidths:o,rowHeight:r,checkboxSelection:i,hasDetailPanel:l,rowReordering:d,pinCheckboxColumn:a=!0,pinExpandColumn:f=!0,pinnedColumns:p,loading:w=!1}){const b=s.useMemo(()=>fo(e,o,p,i,a,l,f,d),[e,o,p,i,a,l,f,d]),{lastLeft:C,firstRight:g}=s.useMemo(()=>go(e,p),[e,p]),u=d?Ti:0,h=u+(l&&f?Ti:0),x=(m,y,E)=>c.jsx("div",{className:`ogx__aggregation-spacer${y?" ogx__aggregation-spacer--pinned":""}`,style:y?{left:E}:void 0,"aria-hidden":"true"},m);return c.jsxs("div",{className:`ogx__aggregation-footer${w?" ogx__aggregation-footer--loading":""}`,role:"row","aria-label":"Aggregation totals","aria-live":"polite","aria-busy":w||void 0,style:{minHeight:`${r}px`},children:[d&&x("__reorder_col__",!0,0),l&&x("__expand_col__",f,u),i&&x("__checkbox_col__",a,h),e.map(m=>{if(m.isSpacer){const $=typeof m.width=="number"?m.width:0;return c.jsx("div",{style:{width:$,minWidth:$,flexShrink:0},"aria-hidden":"true"},m.field)}const y=t[m.field],E=y&&vo(m,y)?y:void 0,v=n[m.field],M=bt(m,o,120),N=lt(m.field,p),P=N?b[m.field]:void 0,z=["ogx__aggregation-cell",N==="left"&&"ogx__aggregation-cell--pinned-left",N==="right"&&"ogx__aggregation-cell--pinned-right",N==="left"&&m.field===C&&"ogx__aggregation-cell--pinned-left-last",N==="right"&&m.field===g&&"ogx__aggregation-cell--pinned-right-first"].filter(Boolean).join(" "),F={width:M,minWidth:M,maxWidth:M,textAlign:m.align||"left"};return N==="left"&&P!==void 0&&(F.left=P),N==="right"&&P!==void 0&&(F.right=P),c.jsx("div",{className:z,role:"gridcell",style:F,children:E?c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"ogx__aggregation-label",children:E}),c.jsx("span",{className:"ogx__aggregation-value",children:An(v,E,m,n)})]}):null},m.field)})]})}function Sc({noRowsLabel:e,width:t,overlay:n}){return n?c.jsx("div",{className:"ogx__empty",style:{width:t},children:n}):c.jsxs("div",{className:"ogx__empty",style:{width:t},children:[c.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[c.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),c.jsx("path",{d:"M3 9h18M9 21V9"})]}),c.jsx("span",{children:e})]})}function Fi({dataSource:e,paginationMode:t,sortingMode:n,filterMode:o}){return!!e&&(t==="server"||t==="infinite"||n==="server"||o==="server")}const Ai=Number.MAX_SAFE_INTEGER,_c="An unexpected error occurred while loading the data.";function Di(e){return typeof e=="string"&&e?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"&&e.message?e.message:_c}function kc({error:e,onRetry:t}){if(!e)return null;const n=Di(e);return c.jsxs("div",{className:"ogx-error-overlay","aria-live":"assertive",role:"alert",children:[c.jsxs("svg",{width:"56",height:"56",viewBox:"0 0 24 24",fill:"none",stroke:"var(--ogx-color-error)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[c.jsx("circle",{cx:"12",cy:"12",r:"10"}),c.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),c.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),c.jsx("div",{className:"ogx-error-overlay__title",children:"Oops! Something went wrong"}),c.jsx("div",{className:"ogx-error-overlay__message",children:n}),t&&c.jsx("button",{type:"button",onClick:t,className:"ogx-button ogx-button--primary",children:"Retry"})]})}function Oi(e,t){typeof e=="function"?e(t):e&&(e.current=t)}const ct=s.forwardRef(function({indeterminate:t=!1,label:n,className:o="",inputClassName:r="",inputRef:i,...l},d){const a=s.useRef(null),f=s.useCallback(w=>{a.current=w,Oi(i,w),Oi(d,w)},[i,d]);s.useEffect(()=>{a.current&&(a.current.indeterminate=t)},[t]);const p=["ogx-checkbox-wrapper",l.disabled&&"ogx-checkbox-wrapper--disabled",o].filter(Boolean).join(" ");return c.jsxs("label",{className:p,children:[c.jsx("input",{ref:f,type:"checkbox",className:["ogx-checkbox__input",r].filter(Boolean).join(" "),...l}),c.jsxs("span",{className:"ogx-checkbox__box",children:[l.checked&&!t&&c.jsx("svg",{className:"ogx-checkbox__icon",viewBox:"0 0 24 24","aria-hidden":"true",children:c.jsx("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})}),t&&c.jsx("svg",{className:"ogx-checkbox__icon",viewBox:"0 0 24 24","aria-hidden":"true",children:c.jsx("path",{d:"M19 13H5v-2h14v2z"})})]}),n&&c.jsx("span",{className:"ogx-checkbox__label",children:n})]})});ct.displayName="Checkbox";const $i=50;function zo(e,t,n,o){const r=Math.min(n??$i,t),i=Math.max(o??1/0,t);return Math.max(r,Math.min(i,e))}const Ec=16;function Mc(e){e.preventDefault(),e.stopPropagation()}function Nc(){const e=t=>{t.stopPropagation(),t.preventDefault()};window.addEventListener("click",e,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",e,{capture:!0}),0)}function Ic(e){const{field:t,currentWidth:n,onResize:o,onAutosize:r,minWidth:i,maxWidth:l,edge:d="end"}=e,[a,f]=s.useState(!1),p=s.useRef(null);s.useEffect(()=>()=>{p.current=null},[]);const w=s.useCallback((m,y)=>{const E=y-m.startX,v=m.startWidth+(d==="start"?-E:E);return zo(v,m.startWidth,i,l)},[d,i,l]),b=s.useCallback(m=>{if(m.button===0){m.stopPropagation(),p.current={pointerId:m.pointerId,startX:m.clientX,startWidth:n,lastUpdate:0,moved:!1},f(!0);try{m.currentTarget.setPointerCapture(m.pointerId)}catch{}}},[n]),C=s.useCallback(m=>{const y=p.current;if(!y||m.pointerId!==y.pointerId||(m.clientX!==y.startX&&(y.moved=!0),!y.moved))return;const E=Date.now();E-y.lastUpdate>=Ec&&(y.lastUpdate=E,o(t,w(y,m.clientX)))},[t,o,w]),g=s.useCallback((m,y)=>{const E=p.current;!E||m.pointerId!==E.pointerId||(p.current=null,f(!1),(E.moved||m.clientX!==E.startX)&&(Nc(),y&&o(t,w(E,m.clientX))))},[t,o,w]),u=s.useCallback(m=>{if(m.key==="Enter"&&r){m.preventDefault(),m.stopPropagation(),r(t);return}if(m.key!=="ArrowLeft"&&m.key!=="ArrowRight")return;m.preventDefault(),m.stopPropagation();const y=(m.shiftKey?50:10)*(m.key==="ArrowRight"?1:-1);o(t,zo(n+y,n,i,l))},[t,n,o,r,i,l]),h=s.useCallback(m=>{m.preventDefault(),m.stopPropagation(),r?.(t)},[t,r]),x=["ogx-column-resize-handle",d==="start"&&"ogx-column-resize-handle--start",a&&"ogx-column-resize-handle--dragging"].filter(Boolean).join(" ");return c.jsx("div",{className:x,onPointerDown:b,onMouseDown:Mc,onPointerMove:C,onPointerUp:m=>g(m,!0),onPointerCancel:m=>g(m,!1),onClick:m=>m.stopPropagation(),onDragStart:m=>{m.preventDefault(),m.stopPropagation()},onDoubleClick:h,onKeyDown:u,role:"separator","aria-orientation":"vertical","aria-label":`Resize ${t} column`,"aria-valuenow":Math.round(n),"aria-valuemin":Math.round(Math.min(i??50,n)),"aria-valuemax":l,tabIndex:-1,children:c.jsx("div",{className:"ogx-column-resize-handle__line"})})}function Gi(e){if(!e)return 0;let t=0;const n=(o,r)=>{t=Math.max(t,r);for(const i of o.children)typeof i!="string"&&n(i,r+1)};return e.forEach(o=>n(o,1)),t}function Wi(e){const t=new Map;if(!e)return t;const n=(o,r)=>{const i=[...r,o];for(const l of o.children)typeof l=="string"?t.has(l)||t.set(l,i):n(l,i)};return e.forEach(o=>n(o,[])),t}function Vo(e,t,n){if(!e||e.length===0)return!0;const o=Wi(e),r=o.get(t),i=o.get(n);return(r?.[r.length-1]??null)===(i?.[i.length-1]??null)}function Pc(e,t,n){const o=[];let r=0,i=null,l=null;for(const d of e){const a=d.isSpacer?null:t.get(d.field)?.[n]??null;(i===null||l!==a||i.pinned!==d.pinned)&&(i={key:`${a?a.groupId:"filler"}-${n}-${d.field}`,isGroup:a!==null,label:a?.headerName??"",headerClassName:a?.headerClassName,width:0,flexGrow:0,fields:[],firstDataIndex:r,pinned:d.pinned},l=a,o.push(i)),i.width+=d.width,i.flexGrow+=d.flex??0,d.isSpacer||(i.fields.push(d.field),r++)}return o}function Wt(){return document.documentElement.clientWidth||window.innerWidth}function Lc(){return document.documentElement.clientHeight||window.innerHeight}function Bt(){return c.jsx("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"currentColor",children:c.jsx("circle",{cx:"4",cy:"4",r:"4"})})}function Ht(){return c.jsx("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:c.jsx("circle",{cx:"4",cy:"4",r:"3"})})}function Tc(){return c.jsxs("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"13",height:"13",fill:"none",children:[c.jsx("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("rect",{x:"8.5",y:"4",width:"7",height:"16",fill:"currentColor",opacity:"0.3"}),c.jsx("line",{x1:"8.5",y1:"4",x2:"8.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("line",{x1:"15.5",y1:"4",x2:"15.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("line",{x1:"2",y1:"9",x2:"22",y2:"9",stroke:"currentColor",strokeWidth:"1.2"}),c.jsx("line",{x1:"2",y1:"14",x2:"22",y2:"14",stroke:"currentColor",strokeWidth:"1.2"})]})}function Fc(){return c.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"12",y1:"19",x2:"12",y2:"5"}),c.jsx("polyline",{points:"5 12 12 5 19 12"})]})}function Ac(){return c.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),c.jsx("polyline",{points:"19 12 12 19 5 12"})]})}function Dc(){return c.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",children:c.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})})}function Oc(){return c.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"}),c.jsx("path",{d:"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"}),c.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]})}function $c(){return c.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"4",y1:"2",x2:"4",y2:"22"}),c.jsx("polyline",{points:"11 8 4 12 11 16"}),c.jsx("line",{x1:"4",y1:"12",x2:"20",y2:"12"})]})}function Gc(){return c.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"20",y1:"2",x2:"20",y2:"22"}),c.jsx("polyline",{points:"13 8 20 12 13 16"}),c.jsx("line",{x1:"20",y1:"12",x2:"4",y2:"12"})]})}function Wc(){return c.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"2",y1:"2",x2:"22",y2:"22"}),c.jsx("line",{x1:"4",y1:"4",x2:"4",y2:"20"}),c.jsx("line",{x1:"4",y1:"12",x2:"20",y2:"12"})]})}const Bi=e=>e?Array.from(e.querySelectorAll('[role="menuitem"], [role="menuitemradio"]')):[];function Bc({colDef:e,sortModel:t,onSort:n,onHide:o,onPin:r,pinnedColumns:i,onManageColumns:l,onClose:d,anchorEl:a}){const f=s.useRef(null),p=s.useCallback(F=>{F&&(a?.closest('[role="columnheader"]')??a)?.focus({preventScroll:!0}),d()},[a,d]),w=F=>{const $=Bi(f.current),_=$.indexOf(F.target);let T=-1;if(F.key==="ArrowDown")T=_+1>=$.length?0:_+1;else if(F.key==="ArrowUp")T=_<=0?$.length-1:_-1;else if(F.key==="Home")T=0;else if(F.key==="End")T=$.length-1;else if(F.key==="Tab"){F.preventDefault(),p(!0);return}else return;F.preventDefault(),$[T]?.focus()},[b,C]=s.useState({position:"fixed",zIndex:1300,top:0,left:0,visibility:"hidden"});s.useLayoutEffect(()=>{if(!a||!f.current)return;const F=a.getBoundingClientRect(),$=f.current.getBoundingClientRect(),_=Wt(),T=Lc(),O=8;let S=F.left;S+$.width+O>_&&(S=_-$.width-O),S<O&&(S=O);let j=F.bottom+4;j+$.height+O>T&&(j=F.top-$.height-4),C({position:"fixed",zIndex:1300,top:j,left:S,visibility:"visible"})},[a]);const g=b.visibility==="visible";s.useLayoutEffect(()=>{g&&Bi(f.current)[0]?.focus({preventScroll:!0})},[g]),s.useEffect(()=>{function F(_){f.current&&!f.current.contains(_.target)&&a&&!a.contains(_.target)&&d()}function $(_){_.key==="Escape"&&p(!0)}return document.addEventListener("mousedown",F),document.addEventListener("keydown",$),window.addEventListener("scroll",d,!0),window.addEventListener("resize",d),()=>{document.removeEventListener("mousedown",F),document.removeEventListener("keydown",$),window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d)}},[a,d,p]);const u=F=>{n?.(e.field,F),p(!0)},h=!!o&&e.hideable!==!1,x=!!r&&e.pinnable!==!1,m=()=>{h&&o?.(e.field),p(!0)},y=F=>{x&&r?.(e.field,F),p(!0)},E=t?.find(F=>F.field===e.field)?.sort,v=E==null,M=i?.left?.includes(e.field)??!1,N=i?.right?.includes(e.field)??!1,P=!M&&!N,z=e.headerName||e.field;return xt.createPortal(c.jsxs("div",{ref:f,className:"ogx-column-menu",style:b,role:"menu","aria-label":`Column options for ${z}`,onKeyDown:w,children:[n&&e.sortable!==!1&&c.jsxs(c.Fragment,{children:[c.jsxs("button",{type:"button",className:`ogx-menu-item${E==="asc"?" ogx-menu-item--active":""}`,onClick:()=>u("asc"),role:"menuitemradio","aria-checked":E==="asc",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:E==="asc"?c.jsx(Bt,{}):c.jsx(Ht,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(Fc,{})}),"Sort Ascending"]}),c.jsxs("button",{type:"button",className:`ogx-menu-item${E==="desc"?" ogx-menu-item--active":""}`,onClick:()=>u("desc"),role:"menuitemradio","aria-checked":E==="desc",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:E==="desc"?c.jsx(Bt,{}):c.jsx(Ht,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(Ac,{})}),"Sort Descending"]}),c.jsxs("button",{type:"button",className:`ogx-menu-item${v?" ogx-menu-item--active":""}`,onClick:()=>u(null),role:"menuitemradio","aria-checked":v,children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:v?c.jsx(Bt,{}):c.jsx(Ht,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(Dc,{})}),"Unsort"]}),c.jsx("div",{className:"ogx-menu-divider"})]}),x&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"ogx-menu-section-label","aria-hidden":"true",children:"Pin column"}),c.jsxs("button",{type:"button",className:`ogx-menu-item${M?" ogx-menu-item--active":""}`,onClick:()=>y("left"),role:"menuitemradio","aria-checked":M,"aria-label":"Pin to left",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:M?c.jsx(Bt,{}):c.jsx(Ht,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx($c,{})}),"Pin to Left"]}),c.jsxs("button",{type:"button",className:`ogx-menu-item${N?" ogx-menu-item--active":""}`,onClick:()=>y("right"),role:"menuitemradio","aria-checked":N,"aria-label":"Pin to right",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:N?c.jsx(Bt,{}):c.jsx(Ht,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(Gc,{})}),"Pin to Right"]}),c.jsxs("button",{type:"button",className:`ogx-menu-item${P?" ogx-menu-item--active":""}`,onClick:()=>y(null),role:"menuitemradio","aria-checked":P,"aria-label":"Unpin column",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:P?c.jsx(Bt,{}):c.jsx(Ht,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(Wc,{})}),"Unpin"]}),c.jsx("div",{className:"ogx-menu-divider"})]}),h&&c.jsxs(c.Fragment,{children:[c.jsxs("button",{type:"button",className:"ogx-menu-item",onClick:m,role:"menuitem","aria-label":`Hide ${z} column`,children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true"}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(Oc,{})}),"Hide Column"]}),c.jsx("div",{className:"ogx-menu-divider"})]}),c.jsxs("button",{type:"button",className:"ogx-menu-item",onClick:()=>{l?.(),p(!1)},role:"menuitem","aria-label":"Manage all columns",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true"}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(Tc,{})}),"Manage columns"]})]}),a?.closest(".ogx-theme-provider")||document.body)}const Hc=16,zc=16;function Vc(e,t=!1){const n=Number.isFinite(e)?e-zc:0,o=Math.floor(n/Hc)-(t?1:0);return Math.max(1,o)}function Kc(e,t){return e??t??!1}function Uc(){return c.jsx("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",fill:"currentColor",width:"18",height:"18",children:c.jsx("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})}function jc(){return c.jsx("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"18",height:"18",fill:"currentColor",children:c.jsx("path",{d:"M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z"})})}function Hi(e){const{columns:t,allColumns:n,columnGroupingModel:o,checkboxSelection:r=!1,allSelected:i=!1,someSelected:l=!1,onSelectAll:d,onSort:a,sortModel:f=[],onColumnResize:p,onColumnAutosize:w,columnWidths:b={},pinnedColumns:C,hasDetailPanel:g=!1,pinCheckboxColumn:u=!0,pinExpandColumn:h=!0,rowReordering:x=!1,aggregationModel:m,draggedColumn:y,dragOverColumn:E,onDragStart:v,onDragOver:M,onDragEnd:N,onDrop:P,focusedCell:z,onHeaderClick:F,onSortAdd:$,multiSort:_=!1,onHideColumn:T,onPinColumn:O,onManageColumns:S,columnIndexMap:j,wrapHeaderText:q=!1,headerHeight:Z=56}=e,W=s.useId(),[U,Q]=s.useState(null),ie=k=>H=>{H.stopPropagation(),Q({colDef:k,anchorEl:H.currentTarget})},oe=s.useCallback(()=>{Q(null)},[]),ge=k=>H=>{if(H.altKey&&(H.key==="ArrowLeft"||H.key==="ArrowRight")&&H.target===H.currentTarget){if(k.resizable===!1||!p)return;H.preventDefault(),H.stopPropagation();const pe=bt(k,b),me=(H.shiftKey?50:10)*(H.key==="ArrowRight"?1:-1);p(k.field,zo(pe+me,pe,k.minWidth,k.maxWidth));return}if(!(H.altKey&&H.key==="ArrowDown"||(H.ctrlKey||H.metaKey)&&H.key==="Enter")||k.disableColumnMenu||H.target!==H.currentTarget)return;H.preventDefault(),H.stopPropagation();const ce=H.currentTarget.querySelector(".ogx__menu-icon-btn")??H.currentTarget;Q({colDef:k,anchorEl:ce})},le=k=>z?.id===null&&z.field===k,ue=x?1:0,te=g?ue+1:ue,ae=r?te+1:te,Y=k=>H=>{if(k.sortable===!1)return;const X=f.find(ce=>ce.field===k.field);let ee="asc";X&&(X.sort==="asc"?ee="desc":ee=null),(H.shiftKey||_)&&$?$(k.field,ee):a&&a(k.field,ee)},re=(k,H)=>{const X=f.some(ce=>ce.field===k);$&&(H===null||X||_||!a)?$(k,H):a?.(k,H)},K=k=>{const H=f.find(ee=>ee.field===k);if(!H)return null;const X=f.length>1?f.indexOf(H)+1:null;return c.jsx("span",{className:`ogx__sort-icon ogx__sort-icon--${H.sort}`,"aria-hidden":"true",children:X!==null&&c.jsx("span",{className:"ogx__sort-badge",children:X})})},J=s.useMemo(()=>fo(t,b,C,r,u,g,h,x),[t,b,C,r,u,g,h,x]),ne=s.useMemo(()=>go(t,C),[t,C]),de=Gi(o),G=s.useMemo(()=>Wi(o),[o]),I=s.useMemo(()=>de===0?[]:(n??t).map(k=>({field:k.field,width:bt(k,b),flex:k.isSpacer?0:k.flex,pinned:k.isSpacer?null:lt(k.field,C),isSpacer:k.isSpacer})),[de,n,t,b,C]),V=(x?48:0)+(g?48:0)+(r?48:0),R=(x||g||r)&&(!g||h)&&(!r||u),B=(x?1:0)+(g?1:0)+(r?1:0);return c.jsxs("div",{className:"ogx__header-wrap",children:[de>0&&Array.from({length:de},(k,H)=>{const X=Pc(I,G,H);return c.jsxs("div",{className:"ogx-col-group-row",role:"row","aria-rowindex":H+1,children:[V>0&&c.jsx("div",{className:`ogx-col-group-cell ogx-col-group-cell--filler${R?" ogx-col-group-cell--pinned ogx-col-group-cell--pinned-left":""}`,style:{width:V,minWidth:V,flexShrink:0,position:R?"sticky":void 0,left:R?0:void 0},"aria-hidden":"true"}),X.map((ee,ce)=>{const pe=ee.pinned?` ogx-col-group-cell--pinned ogx-col-group-cell--pinned-${ee.pinned}`:"",me={width:ee.width,minWidth:ee.width,flexShrink:0,flexGrow:ee.flexGrow};return ee.pinned==="left"?(me.position="sticky",me.left=J[ee.fields[0]]):ee.pinned==="right"&&(me.position="sticky",me.right=J[ee.fields[ee.fields.length-1]],X[ce-1]?.pinned!=="right"&&(me.marginLeft="auto")),ee.isGroup?c.jsx("div",{role:"columnheader","aria-colspan":ee.fields.length,"aria-colindex":B+ee.firstDataIndex+1,className:`ogx-col-group-cell ogx-col-group-cell--group${pe}${ee.headerClassName?` ${ee.headerClassName}`:""}`,style:me,title:ee.label,children:c.jsx("span",{className:"ogx-col-group-cell__label",children:ee.label})},ee.key):c.jsx("div",{className:`ogx-col-group-cell ogx-col-group-cell--filler${pe}`,style:me,"aria-hidden":"true"},ee.key)})]},`ogx-grp-${H}`)}),c.jsxs("div",{className:"ogx__header",role:"row","aria-rowindex":de+1,children:[x&&c.jsx("div",{className:`ogx__header-cell ogx__header-cell--pinned ogx__header-cell--pinned-left ${le("__reorder_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-label":"Row reorder handle","aria-colindex":ue,"data-field":"__reorder_col__",tabIndex:-1,title:"Drag to reorder rows",style:{minWidth:48,maxWidth:48,position:"sticky",left:0}}),g&&c.jsx("div",{className:`ogx__header-cell ogx__header-cell--expand ${h?"ogx__header-cell--pinned ogx__header-cell--pinned-left":""} ${le("__expand_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-label":"Expand row details","aria-colindex":te,"data-field":"__expand_col__",tabIndex:-1,style:{minWidth:48,maxWidth:48,position:h?"sticky":void 0,left:h?x?48:0:void 0}}),r&&c.jsx("div",{className:`ogx__header-cell ogx__header-cell--checkbox ${u?"ogx__header-cell--pinned ogx__header-cell--pinned-left":""} ${le("__checkbox_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-colindex":ae,"data-field":"__checkbox_col__",style:{position:u?"sticky":void 0,left:u?(x?48:0)+(g&&h?48:0):void 0},children:d&&c.jsx(ct,{id:W,name:W,checked:i,indeterminate:l,onChange:k=>d(k.target.checked),"aria-label":i?"Deselect all rows":"Select all rows",tabIndex:-1,onMouseDown:k=>k.preventDefault()})}),t.map((k,H)=>{if(k.isSpacer)return c.jsx("div",{style:{width:k.width,minWidth:k.width,flexShrink:0},"aria-hidden":"true"},k.field);const X=k.sortable!==!1,ee=f.findIndex(Ge=>Ge.field===k.field),ce=ee!==-1,pe=ce?f[ee].sort:null,me=j?.get(k.field)??H,ye=X?ee===0?pe==="asc"?"ascending":"descending":"none":void 0,_e=ce&&f.length>1?`Sorted ${pe==="asc"?"ascending":"descending"}, sort priority ${ee+1} of ${f.length}`:void 0,Ce=k.resizable!==!1,Ee=lt(k.field,C),se=Ee!==null,be=y===k.field,Me=E===k.field,ve=Kc(k.wrapHeaderText,q),he=m?.[k.field],fe=["ogx__header-cell",`ogx__header-cell--align-${k.headerAlign||k.align||"left"}`,X&&"ogx__header-cell--sortable",ce&&"ogx__header-cell--sorted",se&&"ogx__header-cell--pinned",se&&`ogx__header-cell--pinned-${Ee}`,Ee==="left"&&k.field===ne.lastLeft&&"ogx__header-cell--pinned-left-last",Ee==="right"&&k.field===ne.firstRight&&"ogx__header-cell--pinned-right-first",be&&"ogx__header-cell--dragging",Me&&"ogx__header-cell--drag-over",ve&&"ogx__header-cell--wrap",le(k.field)&&"ogx__header-cell--focused",k.headerClassName].filter(Boolean).join(" "),Se={width:b[k.field]??k.width??100,minWidth:k.minWidth,maxWidth:k.maxWidth,flexGrow:k.flex??0,flexShrink:0,flexBasis:(k.flex,"auto"),boxSizing:"border-box",position:se?"sticky":"relative",zIndex:k.zIndex,opacity:be?.5:1};if(se&&Ee){const Ge=J[k.field];Ee==="left"?Se.left=Ge:Se.right=Ge}const Ne=k.renderHeader?k.renderHeader({field:k.field,colDef:k,colIndex:me}):k.headerName||k.field,tt=Ge=>{if(Ge.target.closest(".ogx-column-resize-handle")){Ge.stopPropagation();return}F?.(k.field),X&&Y(k)(Ge)},$e=v&&!se?v(k.field):void 0,Ve=M&&!se?M(k.field):void 0,Yt=P&&!se?P(k.field):void 0;return c.jsxs("div",{className:fe,style:Se,title:k.description??(ve&&typeof Ne=="string"?Ne:void 0),onClick:tt,role:"columnheader",draggable:!!$e,onDragStart:$e,onDragOver:Ve,onDragEnd:N,onDrop:Yt,onKeyDown:ge(k),"aria-sort":ye,"aria-description":_e,"aria-colindex":B+me+1,"data-field":k.field,tabIndex:-1,children:[c.jsxs("div",{className:"ogx__header-cell-content",children:[be&&c.jsx("div",{className:"ogx__header-drag-icon",children:c.jsx(jc,{})}),c.jsxs("div",{className:"ogx__header-cell-title-wrapper",children:[c.jsx("span",{className:"ogx__header-cell-title",style:ve?{WebkitLineClamp:Vc(Z,!!he)}:void 0,children:Ne}),he&&c.jsx("span",{className:"ogx__header-cell-aggregation",children:he})]}),X&&K(k.field),!k.disableColumnMenu&&c.jsx("button",{type:"button",className:"ogx__menu-icon-btn",onClick:ie(k),"aria-label":`Open column menu for ${k.headerName||k.field}`,"aria-haspopup":"menu",tabIndex:-1,children:c.jsx(Uc,{})})]}),Ce&&p&&c.jsx(Ic,{field:k.field,currentWidth:bt(k,b),onResize:p,onAutosize:w,minWidth:k.minWidth,maxWidth:k.maxWidth,edge:Ee==="right"?"start":"end"})]},k.field)}),U&&c.jsx(Bc,{colDef:U.colDef,sortModel:f,onSort:a||$?re:void 0,onHide:T,onPin:O,pinnedColumns:C,onManageColumns:S,onClose:oe,anchorEl:U.anchorEl})]})]})}const Oe=()=>{},Ko=()=>Promise.resolve({updated:[],failed:[],skipped:[]});function zi(){return{getRow:()=>null,getAllRows:()=>[],getVisibleRows:()=>[],getAllFilteredRows:()=>[],getGroupedExportRows:()=>null,getAggregationResult:()=>null,getAggregationModel:()=>null,getColumn:()=>null,getAllColumns:()=>[],getVisibleColumns:()=>[],selectRow:Oe,selectRows:Oe,getSelectedRows:()=>[],sortColumn:Oe,getSortModel:()=>[],setFilterModel:Oe,getFilterModel:()=>({items:[]}),setPage:Oe,setPageSize:Oe,scrollToIndexes:Oe,autosizeColumn:Oe,autosizeColumns:Oe,copySelectedRows:()=>Promise.resolve(),getCellSelectionModel:()=>[],setCellSelectionModel:Oe,selectCellRange:Oe,clearCellSelection:Oe,getSelectedCells:()=>[],copySelectedCells:()=>Promise.resolve(),pasteText:Ko,undo:Ko,redo:Ko,canUndo:()=>!1,canRedo:()=>!1,clearHistory:Oe}}const Rc=e=>e.id;let Vi=!1;function Ki(e,t,n){const o=new Map,r=new Map,i=[],l=[];return e.forEach(d=>{const a=n?.get(d)??t(d);if(o.has(a)){l.push(a);return}o.set(a,d),r.set(d,a),i.push(a)}),l.length>0&&!Vi&&process.env.NODE_ENV!=="production"&&(Vi=!0,console.warn(`[OpenGridX] ${l.length} row(s) reuse the id of an earlier row and were ignored (ids: ${l.slice(0,5).map(String).join(", ")}${l.length>5?", …":""}). Every row needs a unique id; pass getRowId if the unique key lives in another field.`)),{idRowsLookup:o,allRows:i,idByRow:r}}function qc(e,t,n,o={}){const r=new Map,i=[];return n.forEach(l=>{r.set(l.field,l),i.push(l.field)}),{rows:Ki(e,t),columns:{all:n,lookup:r,orderedFields:i,columnVisibilityModel:o},pagination:{rowCount:void 0},pinning:{pinnedColumns:{},pinnedRows:{}},dimensions:{rowHeight:52,headerHeight:56,viewportWidth:0,viewportHeight:0},dataSource:{loading:!1,error:null}}}function Xc(e,t){switch(t.type){case"SET_ROWS":{const n=e.rows.allRows.map(r=>e.rows.idRowsLookup.get(r)),o=typeof t.payload=="function"?t.payload(n):t.payload;return{...e,rows:Ki(o,t.getRowId,e.rows.idByRow)}}case"REPLACE_ROW":{const n=e.rows.idRowsLookup.get(t.id);if(n===void 0)return e;const o=new Map(e.rows.idRowsLookup);o.set(t.id,t.row);const r=new Map(e.rows.idByRow);return r.delete(n),r.set(t.row,t.id),{...e,rows:{...e.rows,idRowsLookup:o,idByRow:r}}}case"REPLACE_ROWS":{let n=!1;const o=new Map(e.rows.idRowsLookup),r=new Map(e.rows.idByRow);for(const[i,l]of t.rows){const d=o.get(i);d!==void 0&&(n=!0,o.set(i,l),r.delete(d),r.set(l,i))}return n?{...e,rows:{...e.rows,idRowsLookup:o,idByRow:r}}:e}case"SET_COLUMNS":{const n=new Map,o=[];return t.payload.forEach(r=>{n.set(r.field,r),o.push(r.field)}),{...e,columns:{all:t.payload,lookup:n,orderedFields:o,columnVisibilityModel:e.columns.columnVisibilityModel}}}case"SET_DIMENSIONS":return{...e,dimensions:{...e.dimensions,viewportWidth:t.payload.viewportWidth,viewportHeight:t.payload.viewportHeight}};case"SET_DATASOURCE_LOADING":return{...e,dataSource:{...e.dataSource,loading:t.payload}};case"SET_DATASOURCE_ERROR":return{...e,dataSource:{...e.dataSource,error:t.payload}};case"SET_ROW_COUNT":return{...e,pagination:{...e.pagination,rowCount:t.payload}};default:return e}}function Yc(e){const{rows:t,columns:n,rowHeight:o=52,headerHeight:r=56,columnVisibilityModel:i,initialState:l,syncRows:d=!1}=e,a=e.getRowId??Rc,f=s.useRef(a);s.useLayoutEffect(()=>{f.current=a});const[p]=s.useState(()=>qc(t,a,n,i)),[w,b]=s.useReducer(Xc,{...p,dataSource:l?.dataSource?{...p.dataSource,...l.dataSource}:p.dataSource,pagination:{rowCount:l?.pagination?.rowCount},dimensions:{...p.dimensions,rowHeight:o,headerHeight:r}}),[C,g]=s.useState({rows:t,syncRows:d});(C.rows!==t||C.syncRows!==d)&&(g({rows:t,syncRows:d}),d&&b({type:"SET_ROWS",payload:t,getRowId:a}));const u=s.useRef(w);s.useLayoutEffect(()=>{u.current=w});const h=s.useCallback((F,$)=>{b({type:"SET_ROWS",payload:F,getRowId:f.current})},[]),x=s.useCallback((F,$)=>{b({type:"REPLACE_ROW",id:F,row:$})},[]),m=s.useCallback(F=>{F.size>0&&b({type:"REPLACE_ROWS",rows:F})},[]),y=s.useCallback(F=>{b({type:"SET_COLUMNS",payload:F})},[]),E=s.useCallback((F,$)=>{b({type:"SET_DIMENSIONS",payload:{viewportWidth:F,viewportHeight:$}})},[]),v=s.useCallback(F=>{b({type:"SET_DATASOURCE_LOADING",payload:F})},[]),M=s.useCallback(F=>{b({type:"SET_DATASOURCE_ERROR",payload:F})},[]),N=s.useCallback(F=>{b({type:"SET_ROW_COUNT",payload:F})},[]),[P]=s.useState(()=>({...zi(),getRow:F=>u.current.rows.idRowsLookup.get(F)||null,getAllRows:()=>u.current.rows.allRows.map(F=>u.current.rows.idRowsLookup.get(F)),getColumn:F=>u.current.columns.lookup.get(F)||null,getAllColumns:()=>u.current.columns.all})),z=s.useRef(P);return{state:w,dispatch:b,apiRef:z,setRows:h,replaceRow:x,replaceRows:m,setColumns:y,setDimensions:E,setDataSourceLoading:v,setDataSourceError:M,setRowCount:N}}function Jc(e){const{onRowOrderChange:t,rows:n,getRowId:o,rowReordering:r=!1}=e,[i,l]=s.useState(null),[d,a]=s.useState(null),f=s.useRef(()=>{}),p=s.useMemo(()=>{const h=new Map;return n.forEach((x,m)=>h.set(o?o(x):x.id,m)),h},[n,o]),w=s.useCallback(h=>p.has(h),[p]),b=s.useCallback(()=>{f.current(),f.current=()=>{},l(null),a(null)},[]);s.useEffect(()=>()=>f.current(),[]);const C=s.useCallback(h=>x=>{if(r){if(!p.has(h)){x.preventDefault();return}f.current(),f.current=vi(x.currentTarget,b),l(h),x.dataTransfer&&(x.dataTransfer.effectAllowed="move",yi(x,Go,String(h)))}},[r,p,b]),g=s.useCallback(h=>x=>{if(!(!r||i===null)){if(!Bn(x,Go)){b();return}p.has(h)&&(x.preventDefault(),x.dataTransfer&&(x.dataTransfer.dropEffect="move"),d!==h&&a(h))}},[r,i,d,p,b]),u=s.useCallback(h=>x=>{if(x.preventDefault(),i===null||!Bn(x,Go)){b();return}const m=p.get(i),y=p.get(h);b(),t&&m!==void 0&&y!==void 0&&m!==y&&t({row:n[m],oldIndex:m,targetIndex:y})},[i,t,n,p,b]);return{draggedRowId:i,dragOverRowId:d,canReorderRow:w,onDragStart:r?C:void 0,onDragOver:r?g:void 0,onDragEnd:r?b:void 0,onDrop:r?u:void 0}}const Ui=new Map,ji=e=>JSON.stringify(e),Zc=e=>`auto-group-${e}`,Ri=5,qi=e=>e.slice(0,Ri).map(t=>JSON.stringify(t)).join(", ")+(e.length>Ri?", …":""),Qc={treeNodes:new Map,rootIds:[],groupingRows:[],syntheticIds:new Set,rowLookup:new Map,issues:[]};function ed(e,t,n){const o=new Map,r=[],i=[],l=new Set,d=new Map,a=new Map,f=[],p=new Array(e.length),w=new Array(e.length),b=[],C=new Map;e.forEach((u,h)=>{const x=t(u),m=n(u),y=Array.isArray(m)?m.map(E=>String(E)):[];if(p[h]=x,w[h]=y,d.set(x,u),y.length===0)b.push(x);else{const E=ji(y),v=a.get(E);if(v===void 0)a.set(E,x);else{const M=C.get(E)??[v];M.push(x),C.set(E,M)}}o.set(x,{id:x,parentId:null,depth:Math.max(y.length-1,0),groupingKey:y[y.length-1]??"",isExpanded:!1,children:[],serverChildrenCount:u.serverChildrenCount})});const g=u=>{const h=ji(u),x=a.get(h);if(x!==void 0)return x;const m=Zc(h),y=u[u.length-1],E={id:m,parentId:null,depth:u.length-1,groupingKey:y,isExpanded:!1,children:[],label:y};o.set(m,E),a.set(h,m),l.add(m);const v={id:m};if(i.push(v),d.set(m,v),u.length===1)r.push(m);else{const M=g(u.slice(0,-1));E.parentId=M,o.get(M)?.children?.push(m)}return m};return e.forEach((u,h)=>{const x=p[h],m=w[h];if(m.length<=1){r.push(x);return}const y=g(m.slice(0,-1)),E=o.get(x);E&&(E.parentId=y),o.get(y)?.children?.push(x)}),b.length>0&&f.push(`[OpenGridX] treeData: getTreeDataPath returned an empty path for row(s) ${qi(b)}. They are shown as top-level rows.`),C.forEach((u,h)=>{f.push(`[OpenGridX] treeData: rows ${qi(u)} have the same path ${h}. Rows under that path are attached to row ${JSON.stringify(u[0])}.`)}),{treeNodes:o,rootIds:r,groupingRows:i,syntheticIds:l,rowLookup:d,issues:f}}function td(e,t){const{treeNodes:n,rootIds:o,syntheticIds:r,rowLookup:i}=e,l=new Set,d=new Map,a=new Map,f=p=>{const w=n.get(p);if(!w)return!1;const b=[];let C=0;for(const x of w.children??[])f(x)&&(b.push(x),C+=(r.has(x)?0:1)+(a.get(x)??0));d.set(p,b),a.set(p,C);const g=i.get(p),h=!r.has(p)&&g!==void 0&&(t?t(g):!0)||b.length>0;return h&&l.add(p),h};return o.forEach(f),{visible:l,visibleChildren:d,descendantCounts:a}}function nd(e){const{rows:t,getRowId:n,getTreeDataPath:o,treeData:r=!1,defaultGroupingExpansionDepth:i=0,filterModel:l,sortModel:d,onRowExpansionChange:a,columnLookup:f,filterMode:p="client",sortingMode:w="client"}=e,b=r&&!!o,C=s.useMemo(()=>!r||!o?Qc:ed(t,n,o),[t,o,r,n]),{treeNodes:g,rootIds:u,groupingRows:h,syntheticIds:x,rowLookup:m}=C,y=C.issues.join(`
2
- `);s.useEffect(()=>{process.env.NODE_ENV==="production"||!y||y.split(`
3
- `).forEach(U=>console.warn(U))},[y]);const E=r&&!o;s.useEffect(()=>{process.env.NODE_ENV==="production"||!E||console.warn("[OpenGridX] treeData is set without getTreeDataPath, so the rows are shown as a flat list. Pass getTreeDataPath={(row) => row.path} to build the tree.")},[E]);const v=s.useMemo(()=>p==="server"?null:Dn(l,f),[p,l,f]),M=s.useMemo(()=>td(C,v),[C,v]),N=`${r}|${i}`,[P,z]=s.useState(()=>({configKey:N,overrides:new Map})),F=P.configKey===N?P.overrides:Ui,$=s.useCallback(U=>((U?.children?.length??0)>0||(U?.serverChildrenCount??0)>0)&&(i===-1||(U?.depth??0)<i),[i]),_=s.useMemo(()=>{const U=new Set;return b&&g.forEach((Q,ie)=>{(F.get(ie)??$(Q))&&U.add(ie)}),U},[b,g,F,$]),T=s.useCallback(U=>{const Q=!_.has(U);if(z(ie=>{const oe=ie.configKey===N?ie.overrides:Ui,ge=new Map(oe);return ge.set(U,Q),{configKey:N,overrides:ge}}),Q&&a){const ie=g.get(U);ie&&a(ie)}},[_,N,g,a]),O=w!=="server"&&!!(d&&d.length>0),S=s.useCallback(U=>{if(!b)return null;const Q=U?.labelField,ie=U?.expandAll??!1,{visible:oe,visibleChildren:ge}=M,le=O&&d?d:[],ue=(re,K)=>{if(x.has(re))return{value:K.field===Q?g.get(re)?.label:void 0};const J=m.get(re),ne=f?.byField.get(K.field),de=J?ke(J,K.field,ne):void 0,G=ne?.sortComparator;return{value:de,type:ne?.type,comparator:G,params:G&&J?{id:re,field:K.field,row:J,value:de}:void 0}},te=[],ae=new Set,Y=re=>{const K=re.filter(ne=>oe.has(ne)),J=le.length>0?Io(K,le,ue):K;for(const ne of J){if(ae.has(ne))continue;const de=m.get(ne);if(!de)continue;ae.add(ne),te.push(de);const G=ge.get(ne);G&&G.length>0&&(ie||_.has(ne))&&Y(G)}};return Y(u),te},[b,M,O,d,x,g,m,f,u,_]),j=s.useCallback(U=>_.has(U),[_]),q=s.useCallback(U=>g.get(U),[g]),Z=s.useCallback(U=>{const Q=[];let ie=U;for(;ie!==null;){const oe=g.get(ie);if(!oe)break;Q.unshift(oe.groupingKey),ie=oe.parentId}return Q},[g]),W=s.useMemo(()=>{const U=new Map,{visibleChildren:Q,descendantCounts:ie}=M;return g.forEach((oe,ge)=>{const le=(oe.children?.length??0)===0&&(oe.serverChildrenCount??0)>0,ue=x.has(ge),te={hasChildren:(Q.get(ge)?.length??0)>0||le,treeDepth:oe.depth,descendantCount:le?void 0:ie.get(ge)??0,isGroupRow:ue,isExpanded:_.has(ge)};ue&&(te.groupLabel=oe.label),U.set(ge,te)}),U},[g,x,M,_]);return s.useMemo(()=>({treeNodes:g,groupingRows:h,toggleExpansion:T,isGroupExpanded:j,getVisibleRows:S,getNode:q,getNodePath:Z,rowMetaMap:W}),[g,h,T,j,S,q,Z,W])}const Xi=e=>e===null?"footer":"inline";function Yi(e,t){return Pn(()=>e(t),Xi(t),"getAggregationPosition","getAggregationPosition threw; the default position is used")}function od(e,t,n){const o=`${t}: ${String(n)}`,r=e?.groupingValueFormatter;return r?Pn(()=>r({field:t,value:n}),o,`groupingValueFormatter:${t}`,`groupingValueFormatter for column "${t}" threw; the group is labelled "${t}: value"`):o}const rd=[],id={},Ji=new Map,Re="";function ld(e){if(typeof e=="string")return e;if(e===null)return`${Re}null`;if(e===void 0)return`${Re}undefined`;if(e instanceof Date)return`${Re}date:${e.getTime()}`;if(typeof e=="object")try{return`${Re}object:${JSON.stringify(e)}`}catch{return`${Re}object:${String(e)}`}return`${Re}${typeof e}:${String(e)}`}const sd=(e,t,n)=>`auto-group-${e}-${t}-${n??"root"}`,ad=e=>`${e}${Re}footer`,cd=e=>e==="footer"?"f":e===null?"n":"i",dd=e=>e==="f"?"footer":e==="n"?null:"inline";function ud(e){const{rows:t,getRowId:n,columns:o,rowGroupingModel:r=rd,aggregationModel:i=id,defaultGroupingExpansionDepth:l=0,filterModel:d,sortModel:a,getAggregationPosition:f=Xi,columnLookup:p,filterMode:w="client",sortingMode:b="client"}=e,C=r.join(Re),g=s.useMemo(()=>C===""?[]:C.split(Re),[C]),u=JSON.stringify(Object.entries(i)),h=s.useMemo(()=>Object.fromEntries(JSON.parse(u)),[u]),x=Object.keys(h).length>0,m=s.useMemo(()=>{const Y=new Map;return(o??[]).forEach(re=>Y.set(re.field,re)),Y},[o]),y=g.length>0,E=s.useMemo(()=>g.filter(Y=>m.get(Y)?.groupable!==!1),[g,m]),M=`${E.join(Re)}|${l}`,[N,P]=s.useState(()=>({configKey:M,overrides:new Map})),z=N.configKey===M?N.overrides:Ji,F=s.useMemo(()=>{if(!y||w==="server")return null;const Y=Dn(d,p);return Y?new Set(t.filter(re=>Y(re))):null},[y,t,w,d,p]),$=s.useMemo(()=>{const Y=new Map,re=[],K=[],J=new Map,ne=new Map,de=new Map;if(!y)return{treeNodes:Y,rootIds:re,groupIds:K,groupRowVariants:J,groupingRows:ne,rowLookup:de};const G=(I,D,L)=>{if(D>=E.length)return(F?I.filter(H=>F.has(H)):I).map(H=>{const X=n(H);return de.set(X,H),Y.set(X,{id:X,parentId:L,depth:D,groupingKey:"",isExpanded:!1}),X});const A=E[D],V=m.get(A),R=new Map;for(const k of I){const H=ke(k,A,V),X=ld(H);let ee=R.get(X);ee||(ee={value:H,rows:[]},R.set(X,ee)),ee.rows.push(k)}const B=[];return R.forEach((k,H)=>{const X=F?k.rows.filter(Ce=>F.has(Ce)):k.rows;if(X.length===0)return;const ee=sd(A,H,L);B.push(ee),K.push(ee);const ce=x?Fn(X,h,m,"useRowGrouping"):{},pe={[A]:k.value,...ce,id:ee},me={[A]:k.value,id:ee},ye=x?{...ce,id:ad(ee)}:null;J.set(ee,{inline:pe,bare:me,footer:ye}),ne.set(ee,pe),ye&&ne.set(ye.id,ye);const _e={id:ee,parentId:L,depth:D,groupingKey:String(k.value),groupingField:A,groupingValue:k.value,aggregatedValues:ce,isExpanded:!1,children:[],label:od(V,A,k.value),descendantCount:X.length};Y.set(ee,_e),_e.children=G(k.rows,D+1,ee)}),B};return re.push(...G(t,0,null)),{treeNodes:Y,rootIds:re,groupIds:K,groupRowVariants:J,groupingRows:ne,rowLookup:de}},[y,t,F,E,x,h,n,m]),{treeNodes:_,rootIds:T,groupIds:O,groupRowVariants:S,groupingRows:j,rowLookup:q}=$,Z=s.useCallback(Y=>!!(Y?.children&&Y.children.length>0)&&(l===-1||(Y?.depth??0)<l),[l]),W=s.useMemo(()=>{const Y=new Set;return _.forEach((re,K)=>{!re.children||re.children.length===0||(z.get(K)??Z(re))&&Y.add(K)}),Y},[_,z,Z]),U=s.useCallback(Y=>{P(re=>{const K=re.configKey===M?re.overrides:Ji,J=K.get(Y)??Z(_.get(Y)),ne=new Map(K);return ne.set(Y,!J),{configKey:M,overrides:ne}})},[M,_,Z]),Q=s.useCallback(Y=>W.has(Y),[W]),ie=x?O.map(Y=>{const re=_.get(Y);return re?cd(Yi(f,{...re,isExpanded:W.has(Y)})):"i"}).join(""):"",oe=s.useMemo(()=>{const Y=new Map;return O.forEach((re,K)=>Y.set(re,dd(ie[K]))),Y},[O,ie]),ge=x?Yi(f,null):"footer",le=b!=="server"&&!!(a&&a.length>0),ue=s.useCallback(Y=>{if(!y)return null;const re=Y?.labelField,K=Y?.expandAll??!1,J=le&&a?a:[],ne=(D,L)=>{const A=_.get(D),V=S.get(D);if(A&&V){const X=A.groupingField??"";if(L.field===X||L.field===re){const ee=p?.byField.get(X),ce=ee?.sortComparator;return{value:A.groupingValue,type:ee?.type,comparator:ce,params:ce?{id:D,field:X,row:V.inline,value:A.groupingValue}:void 0}}return A.aggregatedValues&&Object.prototype.hasOwnProperty.call(A.aggregatedValues,L.field)?{value:A.aggregatedValues[L.field],type:p?.byField.get(L.field)?.type}:{value:void 0}}const R=q.get(D),B=p?.byField.get(L.field),k=R?ke(R,L.field,B):void 0,H=B?.sortComparator;return{value:k,type:B?.type,comparator:H,params:H&&R?{id:D,field:L.field,row:R,value:k}:void 0}},de=[],G=new Set,I=D=>{const L=J.length>0?Io(D,J,ne):D;for(const A of L){if(G.has(A))continue;G.add(A);const V=S.get(A);if(!V){const X=q.get(A);X&&de.push(X);continue}const R=_.get(A),B=W.has(A),k=oe.has(A)?oe.get(A)??null:"inline",H=k==="inline"||k==="footer"&&!B;de.push(H?V.inline:V.bare),(B||K)&&R?.children&&(I(R.children),B&&!K&&k==="footer"&&V.footer&&de.push(V.footer))}};return I(T),de},[y,le,a,_,S,q,p,W,oe,T]),te=s.useCallback(Y=>_.get(Y),[_]),ae=s.useMemo(()=>{const Y=new Map;return _.forEach((re,K)=>{const J=S.get(K);if(!J){Y.set(K,{hasChildren:!1,treeDepth:re.depth,isGroupRow:!1});return}const ne={hasChildren:!0,treeDepth:re.depth,groupingField:re.groupingField,groupingValue:re.groupingValue,groupLabel:re.label,descendantCount:re.descendantCount,isGroupRow:!0,isExpanded:W.has(K)};Y.set(K,ne),J.footer&&oe.get(K)==="footer"&&Y.set(J.footer.id,{...ne,hasChildren:!1,treeDepth:re.depth+1,isExpanded:void 0,isGroupFooter:!0})}),Y},[_,S,W,oe]);return s.useMemo(()=>({treeNodes:_,groupingRows:j,toggleExpansion:U,isGroupExpanded:Q,getVisibleRows:ue,getNode:te,rowMetaMap:ae,aggregationPositions:oe,rootAggregationPosition:ge}),[_,j,U,Q,ue,te,ae,oe,ge])}const fd=new Map;function gd(e){const{rows:t,getRowId:n,getTreeDataPath:o,isTreeDataRequested:r,isTreeData:i,columns:l,rowGroupingModel:d,isRowGrouping:a,aggregationModel:f,defaultGroupingExpansionDepth:p,filterModel:w,sortModel:b,getAggregationPosition:C,columnLookup:g,filterMode:u,sortingMode:h}=e,x=nd({rows:t,getRowId:n,getTreeDataPath:o,treeData:r,defaultGroupingExpansionDepth:p,filterModel:w,sortModel:b,columnLookup:g,filterMode:u,sortingMode:h}),m=ud({rows:t,getRowId:n,columns:l,rowGroupingModel:d,aggregationModel:f,defaultGroupingExpansionDepth:p,filterModel:w,sortModel:b,getAggregationPosition:C,columnLookup:g,filterMode:u,sortingMode:h}),y=i?x:a?m:null,E=s.useMemo(()=>i?x.rowMetaMap:a?m.rowMetaMap:fd,[i,x.rowMetaMap,a,m.rowMetaMap]);return{treeDataHandlers:x,rowGroupingHandlers:m,activeHierarchyHandlers:y,rowMetaMap:E}}function pn(e){try{return{ok:!0,value:e()}}catch(t){return{ok:!1,error:t}}}class Zi extends Error{}function dt(e,t){return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Object.is(e,t)}function Qi(e){return typeof e=="object"&&e!==null&&typeof e.then=="function"}function el(e,t){t?t(e):process.env.NODE_ENV!=="production"&&e instanceof Zi&&console.error(e.message)}function tl(e,t){return new Zi(`[OpenGridX] processRowUpdate must return the updated row object (or a Promise of it); it returned ${e===null?"null":typeof e}. ${t}`)}function nl(e,t,n,o){return n?.valueSetter?n.valueSetter({value:t.value,row:e,field:t.field}):(n?.valueGetter&&process.env.NODE_ENV!=="production"&&!o.has(t.field)&&(o.add(t.field),console.warn(`[OpenGridX] Column "${t.field}" is editable and has a valueGetter but no valueSetter. The edited value was written to row["${t.field}"], which the valueGetter may ignore, so the cell can keep showing the old value. Add a valueSetter that maps the value back onto the row.`)),{...e,[t.field]:t.value})}const zt=Promise.resolve();function pd(e){const[t,n]=s.useState(null),o=s.useRef(null),r=s.useRef(0),i=s.useRef(new Map),l=s.useRef(new Set),d=s.useRef(!1),a=s.useRef(e);s.useLayoutEffect(()=>{a.current=e}),s.useEffect(()=>(d.current=!0,()=>{d.current=!1}),[]);const f=s.useCallback(u=>{o.current=u,n(u)},[]),p=s.useRef(null),w=s.useCallback((u,h)=>{const x=i.current.get(u);if(x)return dt(x.value,h.value)?x.promise:x.promise.then(()=>{const W=o.current;if(!(r.current!==u||!W||dt(W.value,x.value)))return p.current?.(u,W)});const m=()=>r.current===u&&o.current!==null;if(dt(h.value,h.originalValue))return m()&&f(null),zt;const{rows:y,getRowId:E,columns:v,processRowUpdate:M}=a.current,N=y.find(W=>E(W)===h.id);if(!N)return m()&&f(null),zt;const P=W=>el(W,a.current.onProcessRowUpdateError),z=v?.find(W=>W.field===h.field),F=W=>{if(typeof W!="object"||W===null){P(tl(W,"The edit was not saved and the editor stays open."));return}a.current.onRowChange?.(W,h.id);const{onCommitted:U}=a.current;if(U){const ie=ke(N,h.field,z),oe=ke(W,h.field,z);dt(ie,oe)||U([{id:h.id,field:h.field,before:ie,after:oe}])}const Q=o.current;r.current!==u||!Q||(dt(Q.value,h.value)?f(null):f({...Q,originalValue:h.value}))};let $,_;const T=new Promise((W,U)=>{$=W,_=U}),O={value:h.value,promise:T};i.current.set(u,O);const S=()=>{i.current.get(u)===O&&i.current.delete(u)},j=pn(()=>{const W=nl(N,h,z,l.current);return M?M(W,N):W});if(!j.ok)return S(),P(j.error),$(),T;const q=j.value,Z=W=>{S();try{F(W),$()}catch(U){_(U)}};return Qi(q)?Promise.resolve(q).then(Z,W=>{S(),P(W),$()}):Z(q),T},[f]);s.useLayoutEffect(()=>{p.current=w},[w]);const b=s.useCallback(u=>{const h=o.current;if(h){if(h.id===u.id&&h.field===u.field)return;w(r.current,h)}r.current+=1,f({id:u.id,field:u.field,value:u.value,originalValue:u.value})},[w,f]),C=s.useCallback(u=>{const h=o.current;return!h||!d.current||u?.id!==void 0&&u.id!==h.id||u?.field!==void 0&&u.field!==h.field?zt:u?.cancel?(f(null),zt):w(r.current,h)},[w,f]),g=s.useCallback(u=>{const h=o.current;!h||h.id!==u.id||h.field!==u.field||f({...h,value:u.value})},[f]);return s.useMemo(()=>({editingCell:t,startCellEdit:b,stopCellEdit:C,setEditCellValue:g}),[t,b,C,g])}function hd(e){const t=s.useRef(e),n=s.useRef(new Map),o=s.useRef(new Set);s.useLayoutEffect(()=>{t.current=e,n.current.clear()});const r=s.useCallback(a=>{const f=n.current.get(a);return f===void 0?t.current.rowsLookup.get(a):f},[]),i=s.useCallback(a=>{a.size!==0&&(a.forEach((f,p)=>{n.current.set(p,f)}),t.current.replaceRows(a))},[]),l=s.useCallback((a,f)=>{i(new Map([[a,f]]))},[i]),d=s.useCallback((a,f)=>{const{columns:p,processRowUpdate:w}=t.current,b=v=>el(v,t.current.onProcessRowUpdateError),C=new Map,g=new Map;p.forEach((v,M)=>{C.set(v.field,M),g.set(v.field,v)});const u=[],h=new Map;for(const v of a){const M=r(v.id);if(M===void 0){u.push({id:v.id,field:v.field,reason:"missing"});continue}const N=g.get(v.field);if(v.expect&&!dt(ke(M,v.field,N),v.expect.value)){u.push({id:v.id,field:v.field,reason:"changed"});continue}let P=h.get(v.id);P||(P={id:v.id,row:M,cells:[]},h.set(v.id,P));const z=C.get(v.field)??Number.MAX_SAFE_INTEGER,F=P.cells.findIndex(_=>_.field===v.field),$={field:v.field,value:v.value,colDef:N,order:z};F===-1?P.cells.push($):P.cells[F]=$}const x=[],m=[],y=o.current;h.forEach(v=>{const{id:M,row:N}=v,P=v.cells.filter($=>!dt(ke(N,$.field,$.colDef),$.value)).sort(($,_)=>$.order-_.order);if(v.cells=P,P.length===0)return;const z=pn(()=>{let $=N;for(const _ of P)$=nl($,_,_.colDef,y);return w?w($,N):$});if(!z.ok){x.push({id:M,ok:!1,error:z.error});return}const F=z.value;Qi(F)?m.push(Promise.resolve(F).then($=>({id:M,ok:!0,processed:$}),$=>({id:M,ok:!1,error:$}))):x.push({id:M,ok:!0,processed:F})});const E=v=>{const M=new Map;v.forEach($=>{M.set($.id,$)});const N=[],P=[],z=[],F=new Map;return h.forEach($=>{const _=M.get($.id);if(!_)return;if(!_.ok){P.push({id:$.id,error:_.error}),b(_.error);return}const T=_.processed;if(typeof T!="object"||T===null){const S=tl(T,"The row was not saved.");P.push({id:$.id,error:S}),b(S);return}const O=T;F.set($.id,O),N.push($.id);for(const S of $.cells){const j=ke($.row,S.field,S.colDef),q=ke(O,S.field,S.colDef);dt(j,q)||z.push({id:$.id,field:S.field,before:j,after:q})}}),i(F),z.length>0&&f!=="undo"&&f!=="redo"&&t.current.onCommitted?.(z,f),{result:{updated:N,failed:P,skipped:u},committed:z}};return m.length===0?Promise.resolve(E(x)):Promise.all(m).then(v=>E([...x,...v]))},[r,i]);return s.useMemo(()=>({applyEdits:d,getRow:r,storeRow:l}),[d,r,l])}const et={ok:!1},Fe=e=>({ok:!0,value:e});function md(e){const t=[];if(e==="")return t;let n=[],o="",r=0;const i=e.length;let l=!0;for(;r<i;){const d=e[r];if(l&&d==='"'){let a=r+1,f="",p=!1;for(;a<i;){const w=e[a];if(w==='"'){if(e[a+1]==='"'){f+='"',a+=2;continue}p=!0,a+=1;break}f+=w,a+=1}if(!p){o+=d,r+=1,l=!1;continue}o+=f,r=a,l=!1;continue}l=!1,d===" "?(n.push(o),o="",l=!0,r+=1):d===`
1
+ (function(_e,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("react/jsx-runtime"),require("react"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","react-dom"],c):(_e=typeof globalThis<"u"?globalThis:_e||self,c(_e.OpenGridX={},_e.ReactJSXRuntime,_e.React,_e.ReactDOM))})(this,(function(_e,c,s,mt){"use strict";function ko(e,t,n){return Math.max(t??0,Math.min(n??1/0,e))}function Nt(e,t,n=100){if(e.isSpacer)return typeof e.width=="number"?e.width:0;const o=t[e.field]??e.width,r=typeof o=="number"&&Number.isFinite(o)?o:n;return ko(r,e.minWidth,e.maxWidth)}const He=48;function ct(e,t){return t?t.left?.includes(e)?"left":t.right?.includes(e)?"right":null:null}function wa(e,t){const n=[],o=[],r=[];return t?(e.forEach(i=>{const l=ct(i.field,t);l==="left"?n.push(i):l==="right"?r.push(i):o.push(i)}),t.left&&n.sort((i,l)=>{const d=t.left.indexOf(i.field),a=t.left.indexOf(l.field);return d-a}),t.right&&r.sort((i,l)=>{const d=t.right.indexOf(i.field),a=t.right.indexOf(l.field);return d-a}),{left:n,center:o,right:r}):{left:n,center:e,right:r}}function Eo(e,t,n,o,r,i,l,d){const a={};if(!n)return a;let u=(d?He:0)+(i&&l?He:0)+(o&&r?He:0);const g=[];e.forEach(w=>{if(w.isSpacer)return;const y=ct(w.field,n);y==="left"?(a[w.field]=u,u+=Nt(w,t)):y==="right"&&g.push(w)});let m=0;for(let w=g.length-1;w>=0;w--)a[g[w].field]=m,m+=Nt(g[w],t);return a}function Mo(e,t){let n=null,o=null;if(!t)return{lastLeft:n,firstRight:o};for(const r of e){if(r.isSpacer)continue;const i=ct(r.field,t);i==="left"?n=r.field:i==="right"&&o===null&&(o=r.field)}return{lastLeft:n,firstRight:o}}function ni(e,t){return t?t.top?.includes(e)?"top":t.bottom?.includes(e)?"bottom":null:null}function ba(e,t,n=o=>o.id){const o=[],r=[],i=[];return t?(e.forEach(l=>{const d=ni(n(l),t);d==="top"?o.push(l):d==="bottom"?i.push(l):r.push(l)}),t.top&&o.sort((l,d)=>{const a=t.top.indexOf(n(l)),u=t.top.indexOf(n(d));return a-u}),t.bottom&&i.sort((l,d)=>{const a=t.bottom.indexOf(n(l)),u=t.bottom.indexOf(n(d));return a-u}),{top:o,center:r,bottom:i}):{top:o,center:e,bottom:i}}function xa(e,t,n){const o=(e?.left??[]).filter(i=>i!==t),r=(e?.right??[]).filter(i=>i!==t);return n==="left"?{left:[...o,t],right:r}:n==="right"?{left:o,right:[...r,t]}:{left:o,right:r}}const oi=new Set;function Wt(e,t,n){process.env.NODE_ENV==="production"||oi.has(e)||(oi.add(e),console.warn(`[OpenGridX] ${t}.`,n))}function Dn(e,t,n,o){try{return e()}catch(r){return Wt(n,o,r),t}}function ri(e,t,n){const o=e[t];if(!n?.valueGetter)return{value:o};try{return{value:n.valueGetter({row:e,field:t,value:o})}}catch(r){return{value:void 0,error:r??new Error("valueGetter failed")}}}function Le(e,t,n){const{value:o,error:r}=ri(e,t,n);return r!==void 0&&Wt(`valueGetter:${t}`,`valueGetter for column "${t}" threw; the value is read as undefined`,r),o}function No(e,t,n,o){const r=o?.valueFormatter;if(r)return Dn(()=>r({value:n,row:e,field:t}),void 0,`valueFormatter:${t}`,`valueFormatter for column "${t}" threw; the value is shown unformatted`)}function It(e){if(e==null)return null;if(typeof e=="number")return Number.isNaN(e)?null:e;if(typeof e=="string"){const t=e.trim();if(t==="")return null;const n=Number(t);return Number.isNaN(n)?null:n}if(typeof e=="boolean")return null;if(e instanceof Date){const t=e.getTime();return Number.isNaN(t)?null:t}return typeof e=="bigint"?Number(e):null}const ya=/^(\d{4})-(\d{2})-(\d{2})$/;function gn(e){if(e==null)return null;let t;if(e instanceof Date)t=e;else if(typeof e=="number")t=new Date(e);else if(typeof e=="string"){const n=e.trim();if(n==="")return null;const o=ya.exec(n);if(o){const r=Number(o[1]),i=Number(o[2])-1,l=Number(o[3]);if(t=new Date(r,i,l),t.getMonth()!==i||t.getDate()!==l)return null}else t=new Date(n)}else return null;return Number.isNaN(t.getTime())?null:t}function $n(e){const t=gn(e);return t?t.getFullYear()*1e4+(t.getMonth()+1)*100+t.getDate():null}function ii(e){const t=gn(e);if(!t)return"";const n=String(t.getFullYear()).padStart(4,"0"),o=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${n}-${o}-${r}`}let li=null;function si(e){return li??=new Intl.DateTimeFormat,li.format(e)}function va(e,t){if(!e)return;const n=i=>typeof i=="object"?i.value:i,o=i=>typeof i=="object"?i.label:String(i),r=e.find(i=>Object.is(n(i),t))??e.find(i=>String(n(i))===String(t));return r===void 0?void 0:o(r)}function Io(e,t){if(e==null)return"";switch(t?.type){case"date":{const n=gn(e);return n?si(n):String(e)}case"boolean":return e===!0?"Yes":e===!1?"No":String(e);case"singleSelect":return va(t.valueOptions,e)??String(e);default:return String(e)}}const Lo=200;function Ao(e){if(e==="auto")return"auto";const t=typeof e=="string"?Number.parseFloat(e):e;return typeof t=="number"&&Number.isFinite(t)&&t>=0?t:Lo}function Po(e,t){if(e)return Dn(()=>e(t),void 0,"getDetailPanelHeight","getDetailPanelHeight threw; the panel uses the default height")}function Ca(e,t){const n=Ao(e);return n==="auto"?t??Lo:n}function _a(e,t){if(t.size===0||e.size===0)return e;let n=!1;const o=new Set;for(const r of e)t.get(r)?.isGroupRow?n=!0:o.add(r);return n?o:e}const Sa=e=>e.id;function ka(e){if(e===void 0)return{type:"auto",value:0};if(typeof e=="number")return{type:"fixed",value:e};if(typeof e=="string"){if(e.toLowerCase()==="auto")return{type:"auto",value:0};if(e.endsWith("%"))return{type:"percentage",value:parseFloat(e)};const t=parseFloat(e);if(!isNaN(t))return{type:"fixed",value:t}}return{type:"fixed",value:100}}function Ea(e,t,n){const o=new Map;e.forEach(f=>{if(!Object.prototype.hasOwnProperty.call(t,f.field)&&f.flex&&f.flex>0){o.set(f.field,{kind:"flex",flex:f.flex});return}const x=ka(t[f.field]??f.width);x.type==="fixed"?o.set(f.field,{kind:"fixed",width:ko(x.value,f.minWidth,f.maxWidth)}):x.type==="percentage"?o.set(f.field,{kind:"percentage",percentage:x.value}):o.set(f.field,{kind:"flex",flex:1})});const r=e.reduce((f,h)=>{const x=o.get(h.field);if(x.kind==="fixed")return f+x.width;if(x.kind==="percentage")return f+100;if(h.flex&&h.flex>0){const b=h.minWidth??150;return f+(b||(typeof h.width=="number"?h.width:150))}return f+(h.minWidth??150)},0),i=Math.max(n,r),l=e.reduce((f,h)=>{const x=o.get(h.field);return x.kind==="fixed"?f+x.width:f},0),d=new Map,a=Math.max(0,i-l);let u=0;e.forEach(f=>{const h=o.get(f.field);if(h.kind==="fixed")d.set(f.field,h.width);else if(h.kind==="percentage"){const x=h.percentage/100*a,b=ko(x>0?x:100,f.minWidth??50,f.maxWidth);d.set(f.field,b),u+=b}});const g=Math.max(0,a-u),m=new Map,w=e.flatMap(f=>{const h=o.get(f.field);return h.kind!=="flex"?[]:(m.set(f.field,h.flex),[{field:f.field,flex:h.flex,minWidth:f.minWidth??50,maxWidth:f.maxWidth??1/0,frozen:!1,computedWidth:0}])});let y=0;const p=w.length*2;for(;y<p;){y++;const f=w.filter(M=>!M.frozen);if(f.length===0)break;const h=f.reduce((M,S)=>M+S.flex,0),x=w.reduce((M,S)=>S.frozen?M+S.computedWidth:M,0),b=Math.max(0,g-x);if(h<=0){f.forEach(M=>{M.computedWidth=M.minWidth,M.frozen=!0});break}const v=b/h;let E=0;const k=[],N=[];if(f.forEach(M=>{const S=v*M.flex;S<M.minWidth?(E+=M.minWidth-S,k.push(M)):S>M.maxWidth?(E+=M.maxWidth-S,N.push(M)):M.computedWidth=S}),k.length===0&&N.length===0){f.forEach(M=>{M.frozen=!0});break}E>0?k.forEach(M=>{M.computedWidth=M.minWidth,M.frozen=!0}):E<0?N.forEach(M=>{M.computedWidth=M.maxWidth,M.frozen=!0}):(k.forEach(M=>{M.computedWidth=M.minWidth,M.frozen=!0}),N.forEach(M=>{M.computedWidth=M.maxWidth,M.frozen=!0}))}return w.forEach(f=>d.set(f.field,f.computedWidth)),{widths:d,flexByField:m}}function Ma(e){const{rowHeight:t,pagination:n,paginatedUnpinnedRows:o,sortedUnpinnedRows:r,expandedRowIds:i,getDetailPanelHeight:l,detailPanelHeights:d,pinnedTopRowsLength:a,pinnedBottomRowsLength:u,pinnedTopRows:g,pinnedBottomRows:m,visibleOrderedColumns:w,pinnedColumns:y,columnWidths:p,viewportWidth:f,checkboxSelection:h,hasDetailPanel:x,rowReordering:b,pinCheckboxColumn:v,pinExpandColumn:E,paginationMode:k,isLoading:N,pageSize:M,getRowId:S=Sa}=e;return s.useMemo(()=>{const D=n?o:r,I=(P,T)=>{const X=S(P);if(!i.has(X))return t;const B=Po(l,{row:P,id:X,rowIndex:T});return t+Ca(B,d?.get(X))},A=D.map((P,T)=>I(P,a+T)),C=A.reduce((P,T,X)=>(P.push((P[X-1]||0)+T),P),[]),L=k==="infinite"&&N&&D.length>0?Math.min(M,20):0,F=(C[C.length-1]||0)+L*t,_=(P,T)=>P?P.reduce((X,B,ee)=>X+I(B,ee),0):T*t,z=_(g,a),K=_(m,u),{left:Q,center:G,right:j}=wa(w,y),H=(h?He:0)+(x?He:0)+(b?He:0),ie=(b?He:0)+(x&&E?He:0)+(h&&v?He:0),{widths:re,flexByField:ue}=Ea([...Q,...G,...j],p,f-H),ae=P=>re.get(P.field)??100,R=P=>({...P,width:ae(P),flex:ue.get(P.field)??P.flex}),te=11,ce=Q.map((P,T)=>({...R(P),zIndex:te+T})),W=11,le=j.map((P,T)=>({...R(P),zIndex:W+(j.length-1-T)})),V=G.map(R),J=V.map(P=>P.width),ne=ce.reduce((P,T)=>P+T.width,0),fe=le.reduce((P,T)=>P+T.width,0),Z=J.reduce((P,T)=>P+T,0),$=ne+Z+fe+H,O=J.reduce((P,T,X)=>(P.push((P[X-1]||0)+T),P),[]);return{rowHeights:A,cumulativeHeights:C,unpinnedRowsHeight:F,pinnedTopHeight:z,pinnedBottomHeight:K,leftPinnedCols:ce,rightPinnedCols:le,unpinnedColsWithWidth:V,unpinnedColWidths:J,unpinnedAccWidths:O,totalWidth:$,leftWidth:ne,rightWidth:fe,unpinnedTotalWidth:Z,systemColumnsWidth:H,pinnedSystemColumnsWidth:ie,pinnedTopRowsLength:a,pinnedBottomRowsLength:u,unpinnedRowsLength:D.length}},[t,n,o,r,i,l,d,a,u,g,m,w,y,p,f,h,x,b,v,E,k,N,M,S])}function Na(e){const t=e.querySelector(".ogx__sticky-bottom");return t?t.getBoundingClientRect().height:0}function Gn(e,t,n,o,r){if(t<0||t>=n.length)return;const i=e.querySelector(".ogx__virtual-container");if(!i)return;const{scrollTop:l,clientHeight:d}=e,a=i.getBoundingClientRect().top-e.getBoundingClientRect().top+l,u=Math.max(o,Na(e)),g=a+(t===0?0:n[t-1]),m=r!==void 0?Math.min(g+r,a+n[t]):a+n[t];g<l+a?e.scrollTop=Math.max(0,g-a):m>l+d-u&&(e.scrollTop=m-d+u)}function To(e,t,n){const{unpinnedAccWidths:o,leftWidth:r,rightWidth:i,systemColumnsWidth:l,pinnedSystemColumnsWidth:d}=n;if(t<0||t>=o.length)return;const a=l+r,u=a+(t>0?o[t-1]:0),g=a+o[t],m=d+r,{scrollLeft:w,clientWidth:y}=e;u<w+m?e.scrollLeft=Math.max(0,u-m):g>w+y-i&&(e.scrollLeft=g-y+i)}function Fo(e,t){const{row:n,field:o,value:r,colDef:i,rowIndex:l,colIndex:d,rowMeta:a}=e;if(!i.editable||a?.isGroupRow||n._isSkeleton)return!1;if(!t)return!0;try{return!!t({row:n,field:o,value:r,colDef:i,rowIndex:l,colIndex:d})}catch{return!1}}const Ia={},Oo=e=>e==null||typeof e=="string"&&e.trim()==="",ai=e=>{const t=[];for(const n of e){const o=It(n);o!==null&&t.push(o)}return t},ci=(e,t)=>{let n=null,o=null;for(const r of e){const i=It(r);i!==null&&(n===null||t(i,n))&&(n=i,o=r)}return n===null?null:o instanceof Date?o:n},Lt={sum:e=>ai(e).reduce((t,n)=>t+n,0),avg:e=>{const t=ai(e);return t.length?t.reduce((n,o)=>n+o,0)/t.length:null},count:e=>e.filter(t=>!Oo(t)).length,min:e=>ci(e,(t,n)=>t<n),max:e=>ci(e,(t,n)=>t>n),unique:e=>new Set(e.filter(t=>!Oo(t))).size};function Do(e,t){return e?e.aggregable===!1?!1:!e.availableAggregationFunctions||e.availableAggregationFunctions.includes(t):!0}function Hn(e,t,n,o){const r={};for(const[i,l]of Object.entries(t)){const d=n.get(i);if(!Do(d,l))continue;const a=Lt[l];if(!a){console.warn(`[${o}] Unknown aggregation function: "${l}"`);continue}r[i]=a(e.map(u=>Le(u,i,d)))}return r}function pn(e,t){return e==null?"—":typeof e=="number"?t==="avg"?e.toLocaleString(void 0,{maximumFractionDigits:2}):e.toLocaleString():String(e)}const La=new Set(["count","unique"]);function di(e){return e!==void 0&&La.has(e)}function ui(e,t,n){return e?.type==="date"&&(t==="min"||t==="max")&&typeof n=="number"&&Number.isFinite(n)?new Date(n):n}function Bn(e,t,n,o){if(e==null)return"—";if(di(t))return pn(e,t);const r=ui(n,t,e);if(n?.valueFormatter)try{return String(n.valueFormatter({value:r,row:o??{},field:n.field})??"")}catch{}return r instanceof Date?Number.isNaN(r.getTime())?"":si(r):pn(r,t)}const Vt=new Set(["isEmpty","isNotEmpty"]);function $o(e){return e==null?!0:typeof e=="string"?e.trim()==="":Array.isArray(e)?e.length===0:!1}function Aa(e){return e==null?!0:typeof e=="number"?Number.isNaN(e):typeof e=="string"&&e.trim()===""}const hn=e=>(t,n)=>{const o=It(t),r=It(n);return o===null||r===null?!1:e(o,r)},mn=e=>(t,n)=>{const o=$n(t),r=$n(n);return o===null||r===null?!1:e(o,r)},fi=mn((e,t)=>e===t),gi=(e,t)=>{const n=$n(e),o=$n(t);return n===null||o===null?!0:n!==o},pi={contains:(e,t)=>e==null||t==null?!1:String(e).toLowerCase().includes(String(t).toLowerCase()),equals:(e,t)=>e==null&&t==null?!0:e==null||t==null?!1:String(e).toLowerCase()===String(t).toLowerCase(),startsWith:(e,t)=>e==null||t==null?!1:String(e).toLowerCase().startsWith(String(t).toLowerCase()),endsWith:(e,t)=>e==null||t==null?!1:String(e).toLowerCase().endsWith(String(t).toLowerCase()),isEmpty:e=>e==null||String(e).trim()==="",isNotEmpty:e=>e!=null&&String(e).trim()!=="","=":hn((e,t)=>e===t),">":hn((e,t)=>e>t),">=":hn((e,t)=>e>=t),"<":hn((e,t)=>e<t),"<=":hn((e,t)=>e<=t),"!=":(e,t)=>{if($o(t))return!0;const n=It(e),o=It(t);return n!==null&&o!==null?n!==o:Aa(e)?!0:String(e).toLowerCase()!==String(t).toLowerCase()},isAnyOf:(e,t)=>{if(e==null)return!1;const n=Array.isArray(t)?t:[t],o=String(e).toLowerCase();return n.some(r=>r!=null&&String(r).toLowerCase()===o)},not:(e,t)=>e instanceof Date?gi(e,t):e==null&&t==null?!1:e==null||t==null?!0:String(e).toLowerCase()!==String(t).toLowerCase(),is:(e,t)=>t==null||t===""?!0:e instanceof Date?fi(e,t):String(e).toLowerCase()===String(t).toLowerCase(),after:mn((e,t)=>e>t),onOrAfter:mn((e,t)=>e>=t),before:mn((e,t)=>e<t),onOrBefore:mn((e,t)=>e<=t)},Pa={is:fi,not:gi};function Ta(e,t){if(!Object.prototype.hasOwnProperty.call(pi,e))return;const n=e;if(t?.type==="date"){const o=Pa[n];if(o)return o}return pi[n]}function Fa(e){return"items"in e&&Array.isArray(e.items)}function Oa(e,t){const{field:n,operator:o,value:r}=e;if(!Vt.has(o)&&$o(r))return null;const i=t.columns?.byField.get(n),l=Ta(o,i);return l?d=>l(Le(d,n,i),r):(t.warned.has(o)||(t.warned.add(o),console.warn(`Unknown filter operator: ${o}`)),null)}function hi(e,t,n){const o=[];for(const r of e){const i=Fa(r)?hi(r.items,r.logicOperator,n):Oa(r,n);i&&o.push(i)}return o.length===0?null:o.length===1?o[0]:t==="or"?r=>o.some(i=>i(r)):r=>o.every(i=>i(r))}function Go(e,t){if(t!=null){switch(typeof t){case"string":e.push(t.toLowerCase());return;case"number":Number.isNaN(t)||e.push(String(t));return;case"boolean":case"bigint":e.push(String(t));return}if(t instanceof Date){const n=ii(t);n&&e.push(n);return}if(Array.isArray(t))for(const n of t)(n==null||typeof n!="object")&&Go(e,n)}}function mi(e,t){const n=[];if(!t){for(const o of Object.values(e))Go(n,o);return n}for(const o of t.quickFilterColumns){const r=Le(e,o.field,o),i=No(e,o.field,r,o);i!=null&&i!==""&&n.push(String(i).toLowerCase()),Go(n,r)}return n}const wi=new WeakMap;function Da(e,t){if(!t)return mi(e,t);let n=wi.get(t);n||(n=new WeakMap,wi.set(t,n));let o=n.get(e);return o||(o=mi(e,t),n.set(e,o)),o}function $a(e,t){const n=(e??[]).map(o=>String(o??"").trim().toLowerCase()).filter(o=>o!=="");return n.length===0?null:o=>{const r=Da(o,t);return n.every(i=>r.some(l=>l.includes(i)))}}function Wn(e,t){if(!e)return null;const n={columns:t,warned:new Set},o="quickFilterValues"in e?e.quickFilterValues:void 0,r=$a(o,t),i=hi(e.items??[],e.logicOperator??"and",n);return r&&i?l=>r(l)&&i(l):r??i}function Ho(e,t,n){const o=Wn(t,n);return o?e.filter(r=>o(r)):e}function bi(e){switch(e){case"number":return["=","!=",">",">=","<","<=","isEmpty","isNotEmpty"];case"date":return["is","not","after","onOrAfter","before","onOrBefore","isEmpty","isNotEmpty"];case"boolean":return["is"];case"singleSelect":return["isAnyOf","is","not"];default:return["contains","equals","startsWith","endsWith","isEmpty","isNotEmpty"]}}function Bo(e,t){return e==null?"":t==="date"||e instanceof Date?ii(e)||(typeof e=="string"?e:""):Array.isArray(e)?e.map(n=>String(n)).join(", "):String(e)}const Ga=new Intl.Collator(void 0,{numeric:!0,sensitivity:"accent"}),Wo=0,xi=1,Ha=2,yi=3,vi=4;function zt(e,t){return{rank:e,num:t,str:""}}function Vo(e,t){if(e==null)return null;if(t==="number"){const n=It(e);return n===null?null:zt(Wo,n)}if(t==="date"){const n=gn(e);return n?zt(xi,n.getTime()):null}switch(typeof e){case"number":return Number.isNaN(e)?null:zt(Wo,e);case"bigint":return zt(Wo,Number(e));case"boolean":return zt(Ha,e?1:0);case"string":return{rank:yi,num:0,str:e}}if(e instanceof Date){const n=e.getTime();return Number.isNaN(n)?null:zt(xi,n)}return{rank:vi,num:0,str:String(e)}}function Ci(e,t){return e===null&&t===null?0:e===null?1:t===null?-1:e.rank!==t.rank?e.rank-t.rank:e.rank===yi||e.rank===vi?Ga.compare(e.str,t.str):e.num<t.num?-1:e.num>t.num?1:0}function zo(e,t){return e===0?0:t==="asc"?e:-e}function Ba(e,t,n,o){return zo(Ci(Vo(e,o),Vo(t,o)),n)}function _i(e,t,n){let o;try{o=e(t.value,n.value,t,n)}catch(r){return Wt(`sortComparator:${t.field}`,`sortComparator for column "${t.field}" threw; the values are treated as equal`,r),0}return typeof o!="number"||Number.isNaN(o)?(Wt(`sortComparator:${t.field}:nan`,`sortComparator for column "${t.field}" returned ${String(o)}; the values are treated as equal`,void 0),0):o}const Wa=e=>e.id;function Va(e,t,n,o=Wa){return t.length===0?e:Ko(e,t,(r,i)=>{const l=n?.byField.get(i.field),d=Le(r,i.field,l);return{value:d,type:l?.type,comparator:l?.sortComparator,params:l?.sortComparator?{id:o(r),field:i.field,row:r,value:d}:void 0}})}function Ko(e,t,n){if(t.length===0||e.length<2)return[...e];const o=t.map(l=>e.map(d=>n(d,l))),r=o.map(l=>l.map(({value:d,type:a})=>Vo(d,a))),i=e.map((l,d)=>d);return i.sort((l,d)=>{for(let a=0;a<t.length;a++){const u=o[a][l],g=o[a][d],m=u.comparator&&u.comparator===g.comparator&&u.params&&g.params?_i(u.comparator,u.params,g.params):Ci(r[a][l],r[a][d]),w=zo(m,t[a].sort);if(w!==0)return w}return l-d}),i.map(l=>e[l])}function za(e,t,n){if(!n)return e.filter(r=>r.field!==t);const o=e.findIndex(r=>r.field===t);return o===-1?[...e,{field:t,sort:n}]:e.map((r,i)=>i===o?{field:t,sort:n}:r)}function jo(e,t={}){const n=new Map,o=[];for(const r of e)n.set(r.field,r),!(r.isSpacer||r.field.startsWith("__"))&&r.filterable!==!1&&t[r.field]!==!1&&o.push(r);return{byField:n,quickFilterColumns:o}}const Kt="__pivot_grand_total__",Ka="__pivot_row__:",Si=e=>`${Ka}${JSON.stringify(e.split(ki))}`,ja="Grand Total",ki="\0",jt="",Uo=`${jt}id`,Ei=e=>e==="id"?Uo:e,Ro={pivotRows:[],pivotColumns:[],colKeys:[],isValid:!1},Mi=e=>e.map(t=>String(t??"")).join(ki),Ni=e=>e===void 0||e===""?null:e;function Ua(e,t){const n=e==null,o=t==null;return n||o?n===o?0:n?1:-1:typeof e=="number"&&typeof t=="number"?e-t:e instanceof Date&&t instanceof Date?e.getTime()-t.getTime():typeof e=="boolean"&&typeof t=="boolean"?Number(e)-Number(t):String(e).localeCompare(String(t),void 0,{numeric:!0})}function Ra(e,t){for(let n=0;n<e.length;n++){const o=Ua(e[n],t[n]);if(o!==0)return o}return 0}function Ii(e,t){if(!e||e.length===0)return null;const n=Lt[t](e);return typeof n=="number"||n instanceof Date?n:null}const qa=e=>"logicOperator"in e&&"items"in e,Xa=e=>!!(e&&e.items&&e.items.length>0);function Ya(e,t){const n=l=>!t.has(l)&&l.includes(jt),o=l=>qa(l)?l.items.length>0&&l.items.every(o):n(l.field),r=[],i=[];for(const l of e.items??[])(o(l)?i:r).push(l);return{source:{...e,items:r},output:{items:i,logicOperator:e.logicOperator}}}function Li(e,t,n,o={}){const r=new Map(t.map(C=>[C.field,C])),i=C=>r.get(C)?.groupable!==!1,l=n.rowFields.filter(i),d=n.columnFields.filter(i),a=new Set,u=n.valueFields.filter(C=>{if(!Do(r.get(C.field),C.aggFn))return!1;const L=`${C.field}${jt}${C.aggFn}`;return a.has(L)?!1:(a.add(L),!0)});if(l.length===0||u.length===0)return Ro;const g=d.length>0,m=Array.from(new Set(u.map(C=>C.field))),w=(C,L)=>Le(C,L,r.get(L)),y=new Map,p=new Map(g?[]:[["",{values:[]}]]);for(const C of e){const L=l.map(j=>w(C,j)),F=Mi(L);let _=y.get(F);_||(_={labels:L.map(Ni),sample:C,cells:new Map},y.set(F,_));const z=d.map(j=>w(C,j)),K=g?Mi(z):"",Q=p.get(K);Q?Q.sample||(Q.sample=C):p.set(K,{values:z.map(Ni),sample:C});let G=_.cells.get(K);G||(G=new Map,_.cells.set(K,G));for(const j of m){const H=w(C,j);if(Oo(H))continue;let ie=G.get(j);ie||(ie=[],G.set(j,ie)),ie.push(H)}}const f=Array.from(p.keys()).sort((C,L)=>Ra(p.get(C).values,p.get(L).values)),h=(C,L)=>g?`${C}${jt}${L.field}${jt}${L.aggFn}`:`${L.field}${jt}${L.aggFn}`,x=new Map;let b=[];for(const[C,L]of y){const F={id:Si(C)};l.forEach((_,z)=>{F[Ei(_)]=L.labels[z]}),F.id=Si(C);for(const _ of f){const z=L.cells.get(_);for(const K of u)F[h(_,K)]=Ii(z?.get(K.field),K.aggFn)}x.set(F.id,L),b.push({row:F,entry:L})}const v=C=>l.includes(C),E=C=>v(C)?r.get(C)?.type:"number",{outputFilterModel:k,sortModel:N}=o;if(Xa(k)){const C=[];for(const F of f)for(const _ of u)C.push({field:h(F,_),type:"number"});const L=Wn(k,jo(C));L&&(b=b.filter(({row:F})=>L(F)))}const M=(C,L)=>L==="id"&&v("id")?C[Uo]:C[L];N&&N.length>0&&(b=[...b].sort((C,L)=>{for(const F of N){const _=M(C.row,F.field),z=M(L.row,F.field),K=v(F.field)?r.get(F.field)?.sortComparator:void 0,Q=K?zo(_i(K,{id:C.row.id,field:F.field,row:C.row,value:_},{id:L.row.id,field:F.field,row:L.row,value:z}),F.sort):Ba(_,z,F.sort,E(F.field));if(Q!==0)return Q}return 0}));const S=b.map(C=>C.row);if(b.length>0){const C={id:Kt};l.forEach((L,F)=>{C[Ei(L)]=F===0?ja:""}),C.id=Kt;for(const L of f)for(const F of m){const _=[];for(const{entry:z}of b){const K=z.cells.get(L)?.get(F);if(K)for(const Q of K)_.push(Q)}for(const z of u)z.field===F&&(C[h(L,z)]=Ii(_,z.aggFn))}S.push(C)}const D=b[0]?.entry.sample,I=C=>C===Kt?D:C===void 0?void 0:x.get(C)?.sample,A=l.map(C=>Za(C,r.get(C),I));for(const C of f){const L=p.get(C),F=g?d.map((_,z)=>{const K=r.get(_),Q=Ja(K,_,L.values[z],L.sample);return K?.headerName?`${K.headerName}: ${Q}`:Q}).join(" / "):"";for(const _ of u){const z=r.get(_.field),K=_.headerName??z?.headerName??_.field;A.push({field:h(C,_),headerName:F?`${F} — ${K} (${_.aggFn})`:`${K} (${_.aggFn})`,width:140,type:"number",align:"right",headerAlign:"right",sortable:!0,valueFormatter:({value:Q,row:G})=>Bn(Q,_.aggFn,z,G)})}}return{pivotRows:S,pivotColumns:A,colKeys:f,isValid:!0}}function Ja(e,t,n,o){const r=o?No(o,t,n,e):void 0;return r!==void 0?r:n==null?"":String(n)}function Za(e,t,n){const o={field:e,headerName:t?.headerName??e,width:t?.width??140,sortable:!0,hideable:!1};t&&(t.type!==void 0&&(o.type=t.type),t.align!==void 0&&(o.align=t.align),t.headerAlign!==void 0&&(o.headerAlign=t.headerAlign),t.description!==void 0&&(o.description=t.description),t.minWidth!==void 0&&(o.minWidth=t.minWidth),t.maxWidth!==void 0&&(o.maxWidth=t.maxWidth),t.valueOptions!==void 0&&(o.valueOptions=t.valueOptions)),e==="id"&&(o.valueGetter=({row:d})=>d[Uo]);const r=d=>d?.id===Kt,i=t?.valueFormatter;i&&(o.valueFormatter=({value:d,row:a})=>r(a)?String(d??""):i({value:d,row:n(a?.id)??a,field:e}));const l=t?.renderCell;return l&&(o.renderCell=d=>r(d.row)?d.formattedValue??String(d.value??""):l({...d,row:n(d.row.id)??d.row})),o}function qe(e,t){return e===Kt||t?.get(e)?.isGroupRow===!0}const At="__reorder_col__",Pt="__expand_col__",Je="__checkbox_col__",Ze=e=>e===At||e===Pt||e===Je,qo=(e,t)=>e===t||e!==null&&t!==null&&e.id===t.id&&e.field===t.field&&!e.headerFilter==!t.headerFilter,Qa=new Set(["checkbox","radio","button","submit","reset","image","file","color"]),ec=new Set(["textbox","searchbox","combobox","listbox","slider","spinbutton"]);function Ai(e){const t=e.tagName;if(t==="INPUT")return!Qa.has(e.type);if(t==="TEXTAREA"||t==="SELECT"||e.isContentEditable||e.closest('[contenteditable]:not([contenteditable="false"])'))return!0;const n=e.getAttribute("role");return n!==null&&ec.has(n)}const Pi=e=>e!==null&&e.nodeType===1;function Ti(e,t){const n=e.closest(".ogx__detail-panel");if(n&&t.contains(n))return null;const o=e.closest('[role="gridcell"], [role="columnheader"]');return!o||o.closest(".ogx__viewport")!==t?null:o}function Vn(e,t){if(e===t)return"grid";if(!Pi(e)||!t.contains(e))return"foreign";const n=Ti(e,t);return n?n.classList.contains("ogx__cell--editing")?"editor":n===e?"grid":Ai(e)?"foreign":n.classList.contains("ogx__header-cell--checkbox")?"grid":"control":"foreign"}function tc(e,t,n,o){if(!Pi(e))return null;const r=Ti(e,t),i=r?.dataset.field;if(!r||!i)return null;if(r.getAttribute("role")==="columnheader"){const a=r.parentElement;return a?.classList.contains("ogx__header")?{id:null,field:i}:a?.classList.contains("ogx__header-filter-row")?{id:null,field:i,headerFilter:!0}:null}const l=Number(r.parentElement?.getAttribute("data-rowindex")),d=Number.isInteger(l)?n[l]:void 0;return d?{id:o(d),field:i,rowIndex:l}:null}function Fi(e,t){if(!e)return null;for(const n of Array.from(e.children))if(n.dataset.field===t)return n;return null}function Xo(e,t,n){if(t.id===null){const r=e.querySelector(`:scope > .ogx__content > .ogx__sticky-top > .ogx__header-wrap > ${t.headerFilter?".ogx__header-filter-row":".ogx__header"}`),i=Fi(r,t.field);return i&&t.field===Je?i.querySelector("input")??i:i}if(n<0)return null;const o=e.querySelector(`:scope > .ogx__content > .ogx__virtual-container > .ogx__rows > [data-rowindex="${n}"],:scope > .ogx__content > .ogx__sticky-top > .ogx__pinned-rows > [data-rowindex="${n}"],:scope > .ogx__content > .ogx__sticky-bottom > .ogx__pinned-rows > [data-rowindex="${n}"]`);return Fi(o,t.field)}const Oi="__group__";function Xe(e){return!Ze(e)&&e!==Oi}const wt=(e,t)=>e===t||!!e&&!!t&&e.id===t.id&&e.field===t.field;function nc(e,t){return e===t?!0:e.length!==t.length?!1:e.every((n,o)=>wt(n.anchor,t[o].anchor)&&wt(n.head,t[o].head))}function zn(e,t,n){const{rowIds:o,fields:r,rowIndexById:i,colIndexByField:l,spans:d}=n,a={top:e,bottom:e,left:t,right:t};if(!d)return a;const u=o[e],g=r[t],m=d.getSpanOrigin(u,g)??{rowId:u,field:g},w=i.get(m.rowId),y=l.get(m.field);if(w===void 0||y===void 0)return a;const p=Math.max(1,d.getRowSpan(m.rowId,m.field)),f=Math.max(1,d.getColSpan(m.rowId,m.field));return{top:w,bottom:Math.min(o.length-1,w+p-1),left:y,right:Math.min(r.length-1,y+f-1)}}function oc(e,t){if(!t.spans)return e;let{top:n,bottom:o,left:r,right:i}=e,l=!0;const d=a=>{a.top<n&&(n=a.top,l=!0),a.bottom>o&&(o=a.bottom,l=!0),a.left<r&&(r=a.left,l=!0),a.right>i&&(i=a.right,l=!0)};for(;l;){l=!1;for(let a=n;a<=o;a++)d(zn(a,r,t)),i!==r&&d(zn(a,i,t));for(let a=r+1;a<i;a++)d(zn(n,a,t)),o!==n&&d(zn(o,a,t))}return{top:n,bottom:o,left:r,right:i}}function Kn(e,t){const n=t.rowIndexById.get(e.anchor.id),o=t.rowIndexById.get(e.head.id),r=t.colIndexByField.get(e.anchor.field),i=t.colIndexByField.get(e.head.field);return n===void 0||o===void 0||r===void 0||i===void 0?null:{...oc({top:Math.min(n,o),bottom:Math.max(n,o),left:Math.min(r,i),right:Math.max(r,i)},t),anchorRow:n,anchorCol:r,headRow:o,headCol:i}}const Tt=e=>(e.bottom-e.top+1)*(e.right-e.left+1);function rc(e,t,n,o,r,i){const{headRow:l,headCol:d,anchorRow:a,anchorCol:u,top:g,bottom:m,left:w,right:y}=e;let p=l,f=d;switch(t){case"ArrowRight":f=d>=u?y+1:d+1;break;case"ArrowLeft":f=d<=u?w-1:d-1;break;case"ArrowDown":p=l>=a?m+1:l+1;break;case"ArrowUp":p=l<=a?g-1:l-1;break;case"Home":f=0,n&&(p=0);break;case"End":f=i,n&&(p=r);break;case"PageUp":p=l-o;break;case"PageDown":p=l+o;break;default:return null}return p=Math.min(Math.max(p,0),r),f=Math.min(Math.max(f,0),i),p===l&&f===d?null:{row:p,col:f}}function Di(e,t,n,o){const r=o&&o.row===t?o.col:void 0;if(!e||t<e.top||t>e.bottom)return r===void 0?null:{left:0,right:-1,isTop:!1,isBottom:!1,bottomOffset:0,fillHandleCol:r};const i={left:e.left,right:e.right,isTop:t===e.top,isBottom:t===e.bottom,bottomOffset:n?e.bottom-t:0};return r!==void 0&&(i.fillHandleCol=r),i}const ic=(e,t)=>e===t||!!e&&!!t&&e.left===t.left&&e.right===t.right&&e.isTop===t.isTop&&e.isBottom===t.isBottom&&e.bottomOffset===t.bottomOffset&&e.fillHandleCol===t.fillHandleCol,Yo=1,$i=2,Gi=4,Hi=8,Bi=16,Wi=32;function lc(e,t,n,o){if(!e)return 0;const r=e.fillHandleCol===t?Wi:0,i=t+Math.max(1,n)-1;if(t<e.left||i>e.right)return r;let l=Yo|r;return e.isTop&&(l|=$i),(e.isBottom||o>1&&o-1>=e.bottomOffset)&&(l|=Gi),t===e.left&&(l|=Hi),i===e.right&&(l|=Bi),l}function sc(e,t,n){const o=(r,i,l)=>`${r} ${r===1?i:l}`;return`${o(e,"cell","cells")} selected, ${o(t,"row","rows")} by ${o(n,"column","columns")}`}const ac=1e5,cc=e=>e.id,Vi=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown"]);function dc(e,t,n,o,r){if(!e||n.length===0)return{cell:null,rowIndex:-1};const i=(n.find(u=>!Ze(u.field))??n[0]).field,l=n.some(u=>u.field===e.field)?e.field:i;if(e.id===null){const u=!!e.headerFilter&&r;return l===e.field&&u===!!e.headerFilter?{cell:e,rowIndex:-1}:{cell:u?{id:null,field:l,headerFilter:u}:{id:null,field:l},rowIndex:-1}}const d=e.rowIndex;let a=d!==void 0&&t[d]&&o(t[d])===e.id?d:t.findIndex(u=>o(u)===e.id);return a===-1?t.length===0?{cell:{id:null,field:l},rowIndex:-1}:(a=Math.min(Math.max(d??0,0),t.length-1),{cell:{id:o(t[a]),field:l,rowIndex:a},rowIndex:a}):{cell:l===e.field?e:{...e,field:l},rowIndex:a}}function uc(e){const{allRenderableRows:t,navigationColumns:n,checkboxSelection:o,selectedRowIds:r,handleSelectionChange:i,handleDetailPanelToggle:l,editingHandlers:d,setKeyboardMode:a,sortModel:u,handleSort:g,handleSortAdd:m,multiSort:w=!1,isCellEditable:y,pagination:p,pageSize:f,virtualization:h,viewportRef:x,pinnedTopRowCount:b=0,getRowId:v=cc,rowMetaMap:E,onRowActivate:k,toggleRowExpansion:N,handleSelectAll:M,rowSelectionEnabled:S=!0,multipleRowSelectionEnabled:D=!0,pinCheckboxColumn:I=!0,pinExpandColumn:A=!0,rowHeight:C,getSpanOrigin:L,cellSelection:F,headerFilters:_=!1}=e,[z,K]=s.useState(null),[Q,G]=s.useState(!1),j=s.useMemo(()=>dc(z,t,n,v,_),[z,t,n,v,_]),H=j.cell,ie=j.rowIndex,re=s.useRef(!1),ue=s.useRef(!1),ae=s.useRef(!1),R=s.useRef(null),te=s.useCallback($=>{ue.current=!0,$.focus({preventScroll:!0}),ue.current=!1},[]),ce=s.useCallback(()=>{const $=x.current;$&&!$.contains($.ownerDocument.activeElement)&&te($)},[x,te]),W=s.useMemo(()=>n.find($=>!Ze($.field))??n[0],[n]),le=s.useCallback(()=>{if(o)return{id:null,field:Je};if(!W)return null;const $=t[0];return $?{id:v($),field:W.field,rowIndex:0}:{id:null,field:W.field}},[o,W,t,v]),V=s.useCallback(($,O)=>{const P=x.current;if(!P)return;const{cumulativeHeights:T,pinnedBottomHeight:X,columnMetrics:B}=h;if($>=0&&Gn(P,$-b,T,X,C),Ze(O)){!(O===At||O===Pt&&A||O===Je&&I)&&P.scrollLeft>0&&(P.scrollLeft=0);return}if(!B)return;const{clientWidth:ee,scrollLeft:q}=P,{leftPinnedWidth:Y,rightPinnedWidth:oe,unpinnedAccWidths:me,unpinnedCols:U,totalSpecialsWidth:se,pinnedSpecialsWidth:we}=B,pe=U.findIndex(Ee=>Ee.field===O);if(pe===-1)return;const he=se+Y+(pe>0?me[pe-1]:0),ve=se+Y+me[pe],be=q+we+Y,de=q+ee-oe;let ye=q;he<be?ye=Math.max(0,he-we-Y):ve>de&&(ye=ve-ee+oe),ye!==q&&(P.scrollLeft=ye)},[x,h,b,C,I,A]);s.useLayoutEffect(()=>{const $=x.current,O=!qo(R.current,H);if(R.current=H,!$||!H)return;const P=$.ownerDocument,T=P.activeElement;let X;if(T===$?X=!0:!T||T===P.body?X=re.current:$.contains(T)?X=O:X=!1,!X)return;const B=Xo($,H,ie);B?B.contains(T)||B.focus({preventScroll:!0}):T!==$&&te($)});const J=s.useCallback(()=>{ae.current=!0,a(!1)},[a]),ne=s.useCallback($=>{const O=$.currentTarget,P=$.relatedTarget,T=!(P instanceof Node&&O.contains(P)),X=ae.current;if(ae.current=!1,re.current=!0,G(!0),ue.current)return;if($.target===O){if(!T)return;if(X||a(!0),H){const q=Xo(O,H,ie);q?q.focus({preventScroll:!0}):V(ie,H.field);return}const ee=le();ee&&(K(q=>q??ee),V(ee.rowIndex??-1,ee.field));return}const B=tc($.target,O,t,v);B&&!qo(B,H)&&K(B)},[H,ie,le,V,a,t,v]),fe=s.useCallback($=>{const O=$.relatedTarget;O instanceof Node&&$.currentTarget.contains(O)||(re.current=!1,ae.current=!1,G(!1),a(!1))},[a]),Z=s.useCallback($=>{const O=$.currentTarget,P=Vn($.target,O);if(P==="foreign"||(a(!0),$.nativeEvent?.isComposing||$.keyCode===229))return;const{key:T}=$,X=T===" "||T==="Spacebar",B=!!d.editingCell,ee=_?-2:-1,q=(ge,Ce)=>{const ke=n[Ce];!ke||ge<ee||ge>=t.length||(ge===ee?K({id:null,field:ke.field}):ge<0?K({id:null,field:ke.field,headerFilter:!0}):K({id:v(t[ge]),field:ke.field,rowIndex:ge}),V(ge,ke.field))};if(!H){if(!Vi.has(T))return;const ge=le();if(!ge)return;$.preventDefault(),K(ge),V(ge.rowIndex??-1,ge.field);return}const{id:Y,field:oe}=H,me=Y===null&&!!H.headerFilter,U=Y!==null?ie:me?-1:ee,se=n.findIndex(ge=>ge.field===oe),we=n.filter(ge=>Ze(ge.field)).length,pe=ge=>qe(ge,E),he=(ge,Ce,ke)=>{const xe=n[ke];return Ze(xe.field)?!1:Fo({row:ge,field:xe.field,value:Le(ge,xe.field,xe),colDef:xe,rowIndex:Ce,colIndex:ke-we,rowMeta:E?.get(v(ge))},y)},ve=ge=>{let Ce=U,ke=se;const xe=(t.length+1)*n.length;for(let je=0;je<xe;je++){if(ke+=ge,ke>=n.length?(ke=0,Ce++):ke<0&&(ke=n.length-1,Ce--),Ce<0||Ce>=t.length)return null;const nt=t[Ce];if(!L?.(v(nt),n[ke].field)&&he(nt,Ce,ke))return{r:Ce,c:ke}}return null};if(B){if(T==="Enter")$.preventDefault(),d.stopCellEdit();else if(T==="Escape")$.preventDefault(),d.stopCellEdit({cancel:!0});else if(T==="Tab"&&Y!==null){const ge=ve($.shiftKey?-1:1);ge&&($.preventDefault(),d.stopCellEdit(),q(ge.r,ge.c))}return}if(T==="Escape"&&F?.collapseSelection()){$.preventDefault();return}if(T==="Tab"||T==="Escape"||P==="control"&&(T==="Enter"||X))return;if(($.ctrlKey||$.metaKey)&&(T==="a"||T==="A")){if(F){F.selectAllCells()&&$.preventDefault();return}if(!S||!D||!M)return;$.preventDefault(),M(!0);return}if(me&&(T==="Enter"||X))return;if(Y===null){if(T==="Enter"||X){if($.preventDefault(),oe===Je){Xo(O,H,-1)?.click();return}const ge=n[se];if(!ge||Ze(oe)||ge.sortable===!1)return;const Ce=u.find(xe=>xe.field===oe),ke=Ce?Ce.sort==="asc"?"desc":null:"asc";(w||$.shiftKey)&&m?m(oe,ke):g(oe,ke);return}}else if(T==="Enter"||X){$.preventDefault();const ge=t[U];if(oe===Je){i(Y,!r.has(Y));return}if(oe===Pt){$.shiftKey||l(Y);return}if(X){$.shiftKey&&S&&!pe(Y)&&i(Y,!r.has(Y));return}if(oe===At)return;if(he(ge,U,se)){d.startCellEdit({id:Y,field:oe,value:Le(ge,oe,n[se])});return}if(N&&E?.get(Y)?.hasChildren){N(Y);return}k?.({row:ge,id:Y,rowIndex:U});return}if($.altKey&&(T==="ArrowRight"||T==="ArrowLeft")&&N&&Y!==null){$.preventDefault();const ge=E?.get(Y);ge?.hasChildren&&!!ge.isExpanded!=(T==="ArrowRight")&&N(Y);return}if(!Vi.has(T))return;$.preventDefault();const be=t.length-1,de=n.length-1,ye=$.ctrlKey||$.metaKey,Ee=p?f:10;if(F&&$.shiftKey&&Y!==null&&Xe(oe)&&F.extendSelection(T,ye,Ee,H))return;const Me=(ge,Ce)=>{switch(T){case"ArrowRight":return Ce+1>de?{r:ge+1,c:0}:{r:ge,c:Ce+1};case"ArrowLeft":return Ce-1<0?{r:ge-1,c:de}:{r:ge,c:Ce-1};case"ArrowDown":return{r:ge+1,c:Ce};case"ArrowUp":return{r:ge-1,c:Ce};case"Home":return{r:ye?ee:ge,c:0};case"End":return{r:ye?be:ge,c:de};case"PageUp":return{r:Math.max(ee,ge-Ee),c:Ce};default:return{r:Math.min(be,ge+Ee),c:Ce}}},Ne=({r:ge,c:Ce})=>ge>=ee&&ge<=be&&Ce>=0&&Ce<=de,Ie=({r:ge,c:Ce})=>ge>=0?L?.(v(t[ge]),n[Ce].field)??null:null;let Se=Me(U,se);if(T.startsWith("Arrow"))for(let ge=Ne(Se)?Ie(Se):null;ge&&ge.rowId===Y&&ge.field===oe;ge=Ne(Se)?Ie(Se):null)Se=Me(Se.r,Se.c);if(!Ne(Se))return;const Oe=Ie(Se);if(Oe){const ge=t.findIndex(ke=>v(ke)===Oe.rowId),Ce=n.findIndex(ke=>ke.field===Oe.field);ge!==-1&&Ce!==-1&&(Se={r:ge,c:Ce})}Se.r===U&&Se.c===se||q(Se.r,Se.c)},[H,ie,t,n,d,r,i,l,a,u,g,m,w,y,p,f,E,k,N,M,S,D,le,V,L,v,F,_]);return{focusedCell:H,setFocusedCell:K,viewportTabIndex:Q?-1:0,ensureGridFocus:ce,handleFocus:ne,handleBlur:fe,handleKeyDown:Z,handleMouseDownCapture:J}}const Jo=[];function fc(e){const{isPivotActive:t}=e,n=t?Jo:e.rowGroupingModel,o=e.treeData&&!t,r=o&&e.hasTreeDataPath,i=n.length>0;return{rowReordering:e.rowReordering&&!t,hierarchyRowGroupingModel:n,isTreeDataRequested:o,isTreeData:r,isRowGrouping:i,isHierarchyEnabled:r||i,hasGroupingColumn:e.hasGroupingColDef&&(i||r),pagination:e.pagination&&!i&&e.paginationMode!=="infinite",listView:e.listView&&e.hasListViewColumn}}const gc=[],pc={rowFields:[],columnFields:[],valueFields:[]},zi=100;function hc(e){return!e||e.length===0||e.includes(zi)?zi:e[0]}function mc(e){const{initialState:t,sortModel:n,onSortModelChange:o,filterModel:r,onFilterModelChange:i,aggregationModel:l,onAggregationModelChange:d,rowGroupingModel:a,onRowGroupingModelChange:u,columnVisibilityModel:g,onColumnVisibilityModelChange:m,pinnedColumns:w,onPinnedColumnsChange:y,pivotModel:p,onPivotModelChange:f,paginationModel:h,onPaginationModelChange:x,pageSizeOptions:b,rowSelectionModel:v,onRowSelectionModelChange:E,density:k,cellSelectionModel:N,onCellSelectionModelChange:M}=e,[S,D]=s.useState(()=>t?.sorting?.sortModel??[]),I=n!==void 0,A=I?n:S,C=s.useCallback(xe=>{I||D(xe),o?.(xe)},[I,o]),[L,F]=s.useState(()=>t?.filter?.filterModel??{items:[]}),_=r!=null,z=_?r:L,K=s.useCallback(xe=>{_||F(xe),i?.(xe)},[_,i]),Q=l!==void 0,[G,j]=s.useState(()=>l??{}),H=JSON.stringify(Q?l:G),ie=s.useMemo(()=>JSON.parse(H),[H]),re=s.useCallback(xe=>{Q||j(xe),d?.(xe)},[Q,d]),ue=a!==void 0,[ae,R]=s.useState(Jo),te=(ue?a:ae)||Jo,ce=s.useCallback(xe=>{ue||R(xe),u?.(xe)},[ue,u]),W=g!==void 0,[le,V]=s.useState(()=>t?.columns?.columnVisibilityModel??{}),J=W?g:le,ne=s.useCallback(xe=>{W||V(xe),m?.(xe)},[W,m]),fe=w!==void 0,[Z,$]=s.useState(()=>t?.columns?.pinnedColumns??{}),O=fe?w:Z,P=s.useCallback(xe=>{fe||$(xe),y?.(xe)},[fe,y]),[T,X]=s.useState(()=>p??pc),B=p??T,ee=s.useCallback(xe=>{X(xe),f?.(xe)},[f]),q=h!==void 0,[Y,oe]=s.useState(()=>t?.pagination?.paginationModel??h??{page:0,pageSize:hc(b)}),me=q?h:Y,U=s.useCallback(xe=>{q||oe(xe),x?.(xe)},[q,x]),se=v!==void 0,[we,pe]=s.useState([]),he=se?v:we,ve=s.useMemo(()=>new Set(he),[he]),be=s.useRef(null);s.useLayoutEffect(()=>{be.current=null});const de=s.useCallback(()=>be.current,[]),ye=s.useCallback(xe=>{be.current=xe,se||pe(xe),E?.(xe)},[se,E]),[Ee]=s.useState(()=>t?.density?.density??"standard"),Me=k??Ee,Ne=N!==void 0,[Ie,Se]=s.useState(gc),Oe=Ne?N:Ie,ge=s.useRef(null);s.useLayoutEffect(()=>{ge.current=null});const Ce=s.useCallback(()=>ge.current,[]),ke=s.useCallback((xe,je)=>{ge.current=xe,Ne||Se(xe),M?.(xe,{reason:je})},[Ne,M]);return{sortModel:A,isSortControlled:I,setInternalSortModel:D,handleSortModelChange:C,filterModel:z,isFilterControlled:_,handleFilterModelChange:K,aggregationModel:ie,handleAggregationModelChange:re,rowGroupingModel:te,handleRowGroupingModelChange:ce,columnVisibilityModel:J,handleColumnVisibilityModelChange:ne,pinnedColumns:O,handlePinnedColumnsChange:P,currentPivotModel:B,handlePivotModelChange:ee,effectivePaginationModel:me,handlePaginationModelChange:U,rowSelectionModel:he,selectedRowIds:ve,isSelectionControlled:se,setInternalRowSelectionModel:pe,handleRowSelectionModelChange:ye,getPendingRowSelectionModel:de,density:Me,cellSelectionModel:Oe,handleCellSelectionModelChange:ke,getPendingCellSelectionModel:Ce}}const Ki=s.createContext(null),wc=52,bc=56,xc=32,yc=72;function jn(e){if(e===void 0)return;const t=/^(\d+(?:\.\d+)?)(?:\s*px)?$/.exec(e.trim());if(!t)return;const n=Number(t[1]);return n>0?n:void 0}function vc(e){const{rowHeight:t,headerHeight:n,density:o}=e,r=s.useContext(Ki)?.grid;let i;return o==="compact"?i=jn(r?.rowHeightCompact)??xc:o==="comfortable"?i=jn(r?.rowHeightComfortable)??yc:i=t??jn(r?.rowHeightStandard)??wc,{rowHeight:i,headerHeight:n??jn(r?.headerHeight)??bc}}function Un(e){return e>=1?Math.floor(e):1}function Zo(e,t){return Math.max(1,Math.ceil(Math.max(0,e)/Un(t)))}function Cc(e){const{paginationMode:t,hasDataSource:n,dataSourceRowCount:o,rowCountProp:r,clientRowCount:i}=e;return t!=="server"?i:(n?o??r:r)??i}function ji(e){return e?{paginationRowsPerPage:e.paginationRowsPerPage,paginationOf:e.paginationOf,paginationPage:e.paginationPage}:void 0}function Ui(e,t){return Number.isFinite(e)?Math.min(Math.max(0,Math.floor(e)),Math.max(0,t-1)):0}function _c(e){const{effectiveRows:t,activeHierarchyHandlers:n,filterMode:o,filterModel:r,sortModel:i,sortingMode:l,pagination:d,paginationMode:a,effectivePaginationModel:u,pinnedRows:g,getRowId:m,columnLookup:w,hierarchyField:y}=e,p=s.useMemo(()=>n?n.getVisibleRows({labelField:y})||[]:o==="server"?t:Ho(t,r,w),[t,r,n,y,o,w]),f=s.useMemo(()=>n?o==="server"?t:Ho(t,r,w):p,[n,p,o,t,r,w]),{top:h,center:x,bottom:b}=s.useMemo(()=>n?{top:[],center:p,bottom:[]}:ba(p,g,m),[p,g,n,m]),v=s.useMemo(()=>n||l==="server"?x:Va(x,i,w,m),[x,i,n,l,w,m]),E=d&&a!=="server",k=Un(u.pageSize),N=E?Ui(u.page,Zo(v.length,k)):u.page,M=s.useMemo(()=>{if(!E)return v;const D=N*k;return v.slice(D,D+k)},[v,E,N,k]),S=s.useMemo(()=>{const D=d?M:v;return[...h,...D,...b]},[h,M,v,b,d]);return{filteredRows:p,dataRows:f,pinnedTopRows:h,unpinnedRows:x,pinnedBottomRows:b,sortedUnpinnedRows:v,paginatedUnpinnedRows:M,currentPage:N,allRenderableRows:S}}function Sc(e){const{layout:t,scrollTop:n,scrollLeft:o,viewportWidth:r,viewportHeight:i,autoHeight:l,rowReordering:d,hasDetailPanel:a,checkboxSelection:u,pinCheckboxColumn:g,pinExpandColumn:m,overscanRows:w=5}=e;return s.useMemo(()=>{const{unpinnedAccWidths:y,unpinnedColsWithWidth:p,leftPinnedCols:f,rightPinnedCols:h,totalWidth:x,leftWidth:b,rightWidth:v,unpinnedTotalWidth:E,systemColumnsWidth:k,cumulativeHeights:N,pinnedTopHeight:M,pinnedBottomHeight:S,unpinnedRowsHeight:D,rowHeights:I,unpinnedRowsLength:A}=t,C=r||1e3,L=l?M+D+S+50:i||600,F=6,_=Math.max(0,o-b),z=o+C-b;let K=0,Q=p.length-1,G=0,j=y.length-1;for(;G<=j;){const ne=G+j>>>1;y[ne]<_?G=ne+1:j=ne-1}K=Math.max(0,G-F);for(let ne=K;ne<y.length;ne++){if((ne===0?0:y[ne-1])>z){Q=Math.min(p.length-1,ne+F);break}Q=Math.min(p.length-1,ne+F)}const H=K>0?y[K-1]:0,ie=E-y[Q],re=[...f,...H>0?[{field:"__spacer_left__",width:H,isSpacer:!0}]:[],...p.slice(K,Q+1),...ie>0?[{field:"__spacer_right__",width:ie,isSpacer:!0}]:[],...h],ae=C>0&&x>C?16:0,R=M+D+S+ae+2;let te=0,ce=A-1,W=0,le=0,V=N.length-1;for(;le<=V;){const ne=le+V>>>1;N[ne]<n?le=ne+1:V=ne-1}te=Math.max(0,le-w),W=te>0?N[te-1]:0;for(let ne=te;ne<N.length;ne++)if(N[ne]>=n+L){ce=Math.min(A-1,ne+w);break}const J=(d?48:0)+(a&&m?48:0)+(u&&g?48:0);return{renderContext:{firstRowIndex:te,lastRowIndex:ce,firstColumnIndex:K,lastColumnIndex:Q},offsetTop:W,offsetLeft:0,totalHeight:R,pinnedTopHeight:M,pinnedBottomHeight:S,totalWidth:x,rowHeights:I,cumulativeHeights:N,virtualColumns:re,columnMetrics:{leftPinnedWidth:b,rightPinnedWidth:v,unpinnedAccWidths:y,unpinnedCols:p,totalSpecialsWidth:k,pinnedSpecialsWidth:J}}},[t,n,o,r,i,l,d,a,u,g,m,w])}const Qo="application/x-ogx-row",er="application/x-ogx-column";function Ri(e,t,n){const o=e.dataTransfer;!o||typeof o.setData!="function"||(o.setData(t,n),o.setData("text/plain",n))}function Rn(e,t){const n=e.dataTransfer?.types;return n?Array.from(n).includes(t):!0}function qi(e,t){if(!e||typeof e.addEventListener!="function")return()=>{};const n=()=>t();return e.addEventListener("dragend",n,{once:!0}),()=>e.removeEventListener("dragend",n)}function kc(e){const{columns:t,onColumnOrderChange:n,disableColumnReorder:o=!1}=e,[r,i]=s.useState(null),[l,d]=s.useState(null),a=s.useRef(()=>{}),u=s.useCallback(()=>{a.current(),a.current=()=>{},i(null),d(null)},[]);s.useEffect(()=>()=>a.current(),[]);const g=s.useCallback(y=>p=>{if(!o){if(!t.some(f=>f.field===y)){p.preventDefault();return}a.current(),a.current=qi(p.currentTarget,u),i(y),p.dataTransfer&&(p.dataTransfer.effectAllowed="move",Ri(p,er,y))}},[t,o,u]),m=s.useCallback(y=>p=>{if(!(o||r===null)){if(!Rn(p,er)){u();return}p.preventDefault(),p.dataTransfer&&(p.dataTransfer.dropEffect="move"),d(y)}},[r,o,u]),w=s.useCallback(y=>p=>{if(p.preventDefault(),o||r===null||!Rn(p,er)){u();return}const f=t.findIndex(x=>x.field===r),h=t.findIndex(x=>x.field===y);u(),!(f===-1||h===-1||f===h)&&n?.({column:t[f],oldIndex:f,targetIndex:h})},[t,r,o,n,u]);return{draggedColumn:r,dragOverColumn:l,onDragStart:o?void 0:g,onDragOver:o?void 0:m,onDragEnd:o?void 0:u,onDrop:o?void 0:w}}function tr({isExpanded:e,onClick:t,variant:n="chevron",tabIndex:o}){return c.jsx("button",{className:`ogx-expand-icon ${e?"ogx-expand-icon--expanded":""}`,onClick:r=>{t&&t(r)},"aria-label":e?"Collapse row":"Expand row",type:"button",tabIndex:o,children:n==="plus-minus"?c.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[c.jsx("path",{d:"M4 8H12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),c.jsx("path",{d:"M8 4V12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{opacity:e?0:1,transition:"opacity 0.2s ease",transformOrigin:"center"}})]}):c.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{transform:e?"rotate(90deg)":"rotate(0deg)",transition:"transform 0.2s ease"},children:c.jsx("path",{d:"M6 4L10 8L6 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})}function Ec({renderFn:e}){"use no memo";return c.jsx(c.Fragment,{children:e()})}function Mc(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((n,o)=>Object.is(n,t[o])):Object.is(e,t)}class Ft extends s.Component{constructor(t){super(t),this.state={hasError:!1,error:null,resetKey:t.resetKey}}static getDerivedStateFromProps(t,n){return Mc(t.resetKey,n.resetKey)?null:n.hasError?{hasError:!1,error:null,resetKey:t.resetKey}:{resetKey:t.resetKey}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,n){process.env.NODE_ENV!=="production"&&console.warn(`[CellErrorBoundary] field="${this.props.field}"`,t,n.componentStack)}render(){return this.state.hasError?c.jsx("div",{className:"ogx__cell-error",role:"img","aria-label":`Error in cell: ${this.props.field}`,title:this.state.error?.message??"Render error",children:"⚠"}):c.jsx(Ec,{renderFn:this.props.renderFn})}}function Nc(e,t,n){if(!t||!n)return{valueGetter:e.valueGetter,valueFormatter:e.valueFormatter};const o=l=>n.has(l.id),r=e.valueGetter,i=e.valueFormatter;return{valueGetter:r?l=>o(l.row)?l.value:r(l):void 0,valueFormatter:l=>o(l.row)?Bn(l.value,t,e,l.row):i?i(l):l.value==null?"":String(l.value)}}function Xi(e,t){if(!t)return e;const n=t.left??[],o=t.right??[],r=i=>{const l=ct(i.field,t);return l==="left"?n.indexOf(i.field)-n.length:l==="right"?1+o.indexOf(i.field):0};return[...e].sort((i,l)=>r(i)-r(l))}const qn=e=>e.formattedValue??e.value;function Yi(e,t,n){const o=e.renderCell;if(!o)return{useDefault:!0};const r=!!t.rowMeta?.isGroupRow;if(!n){const l=o(t);return r&&l===void 0?{useDefault:!0}:{useDefault:!1,content:l}}let i;try{i=o(t)}catch(l){return{useDefault:!1,content:c.jsx(Ft,{field:e.field,resetKey:t.row,renderFn:()=>{throw l}})}}return r&&i===void 0?{useDefault:!0}:{useDefault:!1,content:c.jsx(Ft,{field:e.field,resetKey:t.row,renderFn:()=>i})}}function Ic(e,t,n){const o=e.rowMeta;if(!o?.isGroupRow)return qn(e);if(o.isGroupFooter)return null;const r=o.descendantCount;if(t&&o.hasChildren){const i=o.groupLabel??`${o.groupingField}: ${String(o.groupingValue)}`;return c.jsxs("div",{className:"ogx__group-cell-content",children:[i,r!==void 0?` (${r})`:""]})}return n?c.jsxs("div",{className:"ogx__group-cell-content",children:[o.groupLabel,r!==void 0&&r>0?` (${r})`:""]}):qn(e)}const Lc=e=>e.id;function Ac(e){const{activeColumns:t,isHierarchyEnabled:n,isRowGrouping:o,isTreeData:r,activeHierarchyHandlers:i,columnVisibilityModel:l,columnOrder:d,onColumnOrderChange:a,onColumnOrderModelChange:u,disableColumnReorder:g,pivotMode:m,checkboxSelection:w,hasDetailPanel:y,rowReordering:p,initialState:f,setColumns:h,pinnedColumns:x,getRowId:b=Lc,aggregationModel:v,groupingRows:E}=e,k=s.useMemo(()=>t.map(V=>V.field),[t]),[N,M]=s.useState(()=>f?.columns?.columnOrder??null),S=m?k.join("\0"):"",[D,I]=s.useState(null),A=D&&D.key===S?D.order:k,L=m?A:d??(N??k),F=s.useCallback(V=>{if(m){I(J=>{const ne=J&&J.key===S?J.order:k;return{key:S,order:typeof V=="function"?V(ne):V}});return}M(J=>typeof V=="function"?V(J??k):V)},[m,S,k]),_=s.useCallback(V=>m&&V.hideable===!1||l[V.field]!==!1,[m,l]),z=s.useMemo(()=>{if(!n)return;const V=new Map(L.map((Z,$)=>[Z,$])),J=Z=>V.get(Z.field)??t.indexOf(Z),ne=[...t].sort((Z,$)=>J(Z)-J($));return(Xi(ne.filter(Z=>l[Z.field]!==!1),x)[0]??t[0])?.field},[n,L,t,l,x]),K=s.useMemo(()=>{if(!n)return t;const V=o?E:void 0;return t.map(J=>{const ne=Nc(J,v?.[J.field],V);return J.field===z?{...J,...ne,renderCell:fe=>{const Z=fe.rowMeta,$=Z?.treeDepth??0,O=!!Z?.hasChildren,P=!!Z?.isExpanded,T=Yi(J,fe,!0),X=T.useDefault?Ic(fe,o,r):T.content;return c.jsxs("div",{style:{display:"flex",alignItems:"center",paddingLeft:$*24,width:"100%",height:"100%"},children:[c.jsx("div",{style:{marginRight:4,width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",cursor:O?"pointer":"default",flexShrink:0},children:O?c.jsx("div",{onClick:B=>{B.stopPropagation(),B.preventDefault(),i?.toggleExpansion(b(fe.row))},onMouseDown:B=>{B.stopPropagation()},style:{cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto",zIndex:10,position:"relative"},children:c.jsx(tr,{isExpanded:P,tabIndex:-1,onClick:B=>{B.stopPropagation(),B.preventDefault(),i?.toggleExpansion(b(fe.row))}})}):null}),c.jsx("div",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:X})]})}}:{...J,...ne,renderCell:fe=>{const Z=fe.rowMeta;if(!Z?.isGroupRow)return J.renderCell?J.renderCell(fe):qn(fe);const $=Yi(J,fe,!1);return $.useDefault?J.field===Z.groupingField&&!Z.isGroupFooter||fe.value==null?null:qn(fe):$.content}}})},[t,n,o,r,i,z,b,v,E]),[Q,G]=s.useState(()=>f?.columns?.columnWidths??{}),j=s.useCallback((V,J)=>{G(ne=>({...ne,[V]:J}))},[]);s.useEffect(()=>{h(t)},[t,h]);const H=s.useMemo(()=>{const V=new Map(L.map((J,ne)=>[J,ne]));return[...K].sort((J,ne)=>{const fe=V.get(J.field)??K.indexOf(J),Z=V.get(ne.field)??K.indexOf(ne);return fe-Z})},[K,L]),ie=s.useMemo(()=>H.filter(_),[H,_]),re=s.useCallback((V,J)=>{(m||!d)&&F(V),J&&a?.(J),m||u?.(V)},[m,d,F,a,u]),ue=s.useCallback((V,J)=>{const ne=H.map(Z=>Z.field),[fe]=ne.splice(V,1);ne.splice(J,0,fe),re(ne,{column:H[V],oldIndex:V,targetIndex:J})},[H,re]),ae=kc({columns:H,onColumnOrderChange:s.useCallback(({oldIndex:V,targetIndex:J})=>ue(V,J),[ue]),disableColumnReorder:g}),R=s.useCallback((V,J)=>{const ne=H.findIndex(Z=>Z.field===V),fe=H.findIndex(Z=>Z.field===J);ne===-1||fe===-1||ne===fe||ue(ne,fe)},[H,ue]),te=s.useCallback(()=>{re(k)},[re,k]),ce=s.useMemo(()=>Xi(ie,x),[ie,x]),W=s.useMemo(()=>{const V=[];return p&&V.push({field:At,sortable:!1,editable:!1}),y&&V.push({field:Pt,sortable:!1,editable:!1}),w&&V.push({field:Je,sortable:!1,editable:!1}),[...V,...ce]},[ce,w,y,p]),le=s.useMemo(()=>new Map(ce.map((V,J)=>[V.field,J])),[ce]);return{effectiveColumns:K,hierarchyField:z,orderedColumns:H,visibleOrderedColumns:ie,renderOrderedColumns:ce,navigationColumns:W,columnIndexMap:le,columnWidths:Q,effectiveColumnOrder:L,setInternalColumnOrder:F,columnReorderHandlers:ae,moveColumn:R,resetColumnOrder:te,handleColumnResize:j}}const Pc=e=>e.id;function Tc(e){const{renderContext:t,pinnedTopRows:n,pinnedBottomRows:o,paginatedUnpinnedRows:r,sortedUnpinnedRows:i,pagination:l,getRowId:d=Pc}=e;return s.useMemo(()=>{const{firstRowIndex:a,lastRowIndex:u}=t,g=l?r:i,m=n.length,w=n.map((v,E)=>({row:v,id:d(v),rowIndex:E,pinned:"top"})),y=o.map((v,E)=>({row:v,id:d(v),rowIndex:m+g.length+E,pinned:"bottom"})),p=Math.max(0,a),f=Math.min(g.length,u+1),h=g.slice(p,f).map((v,E)=>({row:v,id:d(v),rowIndex:m+p+E})),x=[...w,...h,...y],b=new Set;return x.filter(v=>b.has(v.id)?!1:(b.add(v.id),!0))},[t,n,o,r,i,l,d])}const Fc=100;function Ji(e){const{scrollTop:t,scrollHeight:n,clientHeight:o}=e;return n-t-o>=Fc?null:{visibleTop:t,visibleBottom:t+o,viewportHeight:o}}function Oc(e){return e<.5?3:e<3?5:e<15?12:e<40?20:30}function Dc(e){const{onRowsScrollEnd:t,overscanRowCount:n=3,rowCount:o=0,autoHeight:r=!1}=e,i=s.useRef({scrollTop:0,scrollLeft:0,velocity:0}),l=s.useRef({scrollTop:0,scrollLeft:0,time:0}),d=s.useRef(null),a=s.useRef(null),u=s.useRef(null),g=s.useRef(!0),m=s.useRef(t),[w,y]=s.useState({scrollTop:0,scrollLeft:0,velocityOverscan:0});s.useEffect(()=>{m.current=t},[t]),s.useEffect(()=>()=>{d.current!==null&&cancelAnimationFrame(d.current),a.current!==null&&clearTimeout(a.current)},[]);const p=s.useCallback(x=>{const b=Ji(x);if(!b){g.current=!0;return}if(!g.current)return;const v=m.current;v&&(g.current=!1,v(b))},[]),f=s.useCallback(x=>{const b=x.currentTarget,v=performance.now(),E=Math.abs(b.scrollTop-l.current.scrollTop)+Math.abs(b.scrollLeft-l.current.scrollLeft),k=v-l.current.time,N=k>0?E/k:0,M=b.scrollTop!==l.current.scrollTop;l.current={scrollTop:b.scrollTop,scrollLeft:b.scrollLeft,time:v},i.current={scrollTop:b.scrollTop,scrollLeft:b.scrollLeft,velocity:N},d.current!==null&&cancelAnimationFrame(d.current),d.current=requestAnimationFrame(()=>{d.current=null;const{scrollTop:S,scrollLeft:D,velocity:I}=i.current;y({scrollTop:S,scrollLeft:D,velocityOverscan:Oc(I)})}),a.current!==null&&clearTimeout(a.current),a.current=setTimeout(()=>{a.current=null,y(S=>S.velocityOverscan===0?S:{...S,velocityOverscan:0})},200),M&&p(b)},[p]);s.useEffect(()=>{g.current=!0;const x=u.current;!x||r||o<=0||x.clientHeight===0||p(x)},[o,r,p]);const h=s.useCallback(x=>{if(u.current=x,!x)return;const{scrollTop:b,scrollLeft:v}=i.current;if(b===0&&v===0)return;x.scrollTop=b,x.scrollLeft=v;const E={scrollTop:x.scrollTop,scrollLeft:x.scrollLeft};(E.scrollTop!==b||E.scrollLeft!==v)&&(i.current={...i.current,...E},l.current={...l.current,...E},y(k=>({...k,...E})))},[]);return{scrollTop:w.scrollTop,scrollLeft:w.scrollLeft,overscanRows:Math.max(w.velocityOverscan,n),handleScroll:f,attachViewport:h}}function $c(e){const t=s.useRef(null);return s.useCallback(n=>{if(t.current?.disconnect(),t.current=null,!n||typeof ResizeObserver>"u")return;const o=new ResizeObserver(r=>{for(const i of r){const{width:l,height:d}=i.contentRect;e(l,d)}});o.observe(n),t.current=o},[e])}function Gc(e){const{setDimensions:t,viewportRef:n,...o}=e,{scrollTop:r,scrollLeft:i,overscanRows:l,handleScroll:d,attachViewport:a}=Dc(o),u=$c(t),g=s.useCallback(m=>{n.current=m,u(m),a(m)},[n,u,a]);return{scrollTop:r,scrollLeft:i,overscanRows:l,handleScroll:d,setViewportElement:g}}function Hc(){const[e,t]=s.useState(()=>new Map),n=s.useCallback((o,r)=>{t(i=>{if(i.get(o)===r)return i;const l=new Map(i);return l.set(o,r),l})},[]);return{detailPanelHeights:e,reportDetailPanelHeight:n}}function Bc(e){const{hasDetailPanel:t,controlledExpandedRowIds:n,onDetailPanelExpandedRowIdsChange:o,rowMetaMap:r}=e,[i,l]=s.useState(new Set),d=n??i,a=s.useMemo(()=>_a(d,r),[d,r]),u=s.useCallback(w=>{if(r.get(w)?.isGroupRow)return;const y=new Set(d);y.has(w)?y.delete(w):y.add(w),n===void 0&&l(y),o?.(y)},[d,r,n,o]),{detailPanelHeights:g,reportDetailPanelHeight:m}=Hc();return{hasDetailPanel:t,expandedRowIds:a,handleDetailPanelToggle:u,detailPanelHeights:g,reportDetailPanelHeight:m}}const Wc=new Set(["__group__"]),wn=e=>!Wc.has(e);function Zi(e){return Object.keys(e).every(wn)?e:Object.fromEntries(Object.entries(e).filter(([n])=>wn(n)))}function Vc(e){const t={...e};return e.left&&(t.left=e.left.filter(wn)),e.right&&(t.right=e.right.filter(wn)),t}function zc(e){const{onStateChange:t,sortModel:n,filterModel:o,effectivePaginationModel:r,columnWidths:i,effectiveColumnOrder:l,columnVisibilityModel:d,pinnedColumns:a,density:u}=e,g=s.useRef(t);s.useLayoutEffect(()=>{g.current=t});const m=s.useRef(null);s.useEffect(()=>{if(!g.current)return;const w={sorting:{sortModel:n},filter:{filterModel:o},pagination:{paginationModel:r},columns:{columnWidths:Zi(i),columnOrder:l.filter(wn),columnVisibilityModel:Zi(d),pinnedColumns:Vc(a)},density:{density:u}},y=JSON.stringify(w);y!==m.current&&(m.current=y,g.current(w))},[n,o,r,i,l,d,a,u])}const Kc=200,jc=2e3,Uc=178e5;function Rc(e){const{paginationRequested:t,isRowGrouping:n,autoHeight:o,viewportHeight:r,renderedRowCount:i,totalRowCount:l,pinnedRowsIgnored:d=!1,scrollHeight:a=0,listViewWithoutColumn:u=!1,listViewRowCount:g=0}=e,m=s.useRef(!1),w=s.useRef(!1),y=s.useRef(!1),p=s.useRef(!1),f=s.useRef(!1),h=s.useRef(!1);s.useEffect(()=>{process.env.NODE_ENV==="production"||h.current||g<=jc||(h.current=!0,console.warn(`[OpenGridX] The list view is rendering all ${g} items: it does not virtualize. Above a few thousand items use \`pagination\`, server-side loading, or the grid view. See docs/features/list-view.md.`))},[g]),s.useEffect(()=>{process.env.NODE_ENV==="production"||f.current||!u||(f.current=!0,console.warn("[OpenGridX] `listView` is set without a `listViewColumn`, so the grid view is shown instead. Pass `listViewColumn` to render list items. See docs/features/list-view.md."))},[u]),s.useEffect(()=>{process.env.NODE_ENV==="production"||y.current||!d||(y.current=!0,console.warn("[OpenGridX] `pinnedRows` is ignored while treeData or rowGroupingModel is active: the rows stay in their place in the hierarchy. See docs/features/pinning.md."))},[d]),s.useEffect(()=>{process.env.NODE_ENV==="production"||p.current||a<=Uc||(p.current=!0,console.warn(`[OpenGridX] The grid content is ${Math.round(a)}px tall. Browsers cap element heights (about 17.9M px in Firefox, 33.5M px in Chrome and Safari), so the last rows may not be reachable by scrolling. Use pagination, server-side or infinite loading, or a smaller rowHeight. See docs/features/virtualization.md.`))},[a]),s.useEffect(()=>{process.env.NODE_ENV==="production"||m.current||t&&n&&(m.current=!0,console.warn("[OpenGridX] `pagination` is ignored while `rowGroupingModel` is active — all group rows render in one scrollable view. Give the grid a bounded height so it virtualizes. See docs/features/tree-data-grouping.md."))},[t,n]),s.useEffect(()=>{process.env.NODE_ENV==="production"||w.current||o||r>0&&l>Kc&&i>=l&&r>=a&&(w.current=!0,console.warn(`[OpenGridX] The grid viewport is ${Math.round(r)}px tall and is rendering all ${l} rows, so row virtualization is effectively off: the grid fills its container, and the container grows to fit every row. Give the container a definite height (for example \`height: 600px\` or \`100vh\`). If the container, or any ancestor up to the sized one, is a flex or grid item, add \`min-height: 0\` to it. Alternatively pass a \`height\` prop, or \`autoHeight\` if rendering every row is intended. See docs/features/virtualization.md.`))},[o,r,i,l,a])}function qc(e){return typeof window>"u"||typeof window.getComputedStyle!="function"||typeof navigator<"u"&&/jsdom/i.test(navigator.userAgent)?!1:window.getComputedStyle(e).display!=="flex"}let Qi=!1;function Xc(e){s.useEffect(()=>{if(process.env.NODE_ENV==="production"||Qi)return;const t=e.current;!t||!qc(t)||(Qi=!0,console.warn("[OpenGridX] The grid stylesheet is not loaded, so the grid is unstyled and renders every row (its viewport does not scroll). Add `import '@opencorestack/opengridx/styles'` once in your app root. See README.md, Getting Started."))},[e])}function Xn(e,t,n,o){if(n&&o)return t.length>0?[t[t.length-1]]:Array.from(e);const r=new Set(e);return t.forEach(i=>n?r.add(i):r.delete(i)),Array.from(r)}function Yc(e,t,n){return n?e.has(t)?[]:[t]:Xn(e,[t],!e.has(t),!1)}function el(e,t){return t.length===e.size&&t.every(n=>e.has(n))}function Jc(e){const{selectedRowIds:t,onSelectionModelChange:n,disableMultipleRowSelection:o,selectableRowIds:r}=e,i=s.useCallback(m=>{el(t,m)||n(m)},[t,n]),l=s.useCallback((m,w)=>{i(Xn(t,[m],w,o))},[i,t,o]),d=s.useCallback(m=>{i(Yc(t,m,o))},[i,t,o]),a=s.useCallback(m=>{i(Xn(t,r,m,!1))},[i,t,r]),{allSelected:u,someSelected:g}=s.useMemo(()=>{let m=0;for(const y of r)t.has(y)&&m++;const w=r.length>0&&m===r.length;return{allSelected:w,someSelected:!w&&m>0}},[r,t]);return{toggleRow:l,clickRow:d,selectAll:o?void 0:a,allSelected:u,someSelected:g}}function Zc(e){const{dataRows:t,getRowId:n,isPivotActive:o,selectedRowIds:r,onSelectionModelChange:i,disableMultipleRowSelection:l,disableRowSelectionOnClick:d,isHierarchyEnabled:a,rowMetaMap:u,activeHierarchyHandlers:g,onRowClick:m}=e,w=s.useMemo(()=>{const b=t.map(n);return o?b.filter(v=>v!==Kt):b},[t,n,o]),y=Jc({selectedRowIds:r,onSelectionModelChange:i,disableMultipleRowSelection:l,selectableRowIds:w}),{clickRow:p,toggleRow:f}=y,h=s.useCallback(b=>{const{id:v}=b,E=a?u.get(v):void 0;if(E?.isGroupRow){E.hasChildren&&g?.toggleExpansion(v);return}m?.(b),!d&&!qe(v,u)&&p(v)},[a,g,m,u,d,p]),x=s.useCallback((b,v)=>{qe(b,u)||f(b,v)},[u,f]);return{rowSelection:y,handleRowClick:h,handleSelectionChange:x}}const tl=e=>JSON.stringify(Array.from(e,t=>typeof t=="number"?["n",t]:["s",t]));function Qc(e){const{selectedRowIds:t,rowsLookup:n,rowMetaMap:o,enabled:r,onSelectionModelChange:i}=e,l=s.useMemo(()=>{if(!r||t.size===0)return t;let u=!1;const g=new Set;for(const m of t)n.has(m)||o.has(m)?g.add(m):u=!0;return u?g:t},[r,t,n,o]),d=s.useRef(i);s.useLayoutEffect(()=>{d.current=i});const a=s.useRef(null);return s.useEffect(()=>{if(l===t){a.current=null;return}const u=`${tl(t)}|${tl(l)}`;a.current!==u&&(a.current=u,d.current(Array.from(l)))},[l,t]),l}function nr(e,t,n,o){return o?za(e,t,n):n?[{field:t,sort:n}]:e.filter(r=>r.field!==t)}function ed(e){const{sortModel:t,onSortModelChange:n}=e,o=s.useCallback((i,l)=>{n(nr(t,i,l,!1))},[t,n]),r=s.useCallback((i,l)=>{n(nr(t,i,l,!0))},[t,n]);return{handleSort:o,handleSortAdd:r}}function td(e){const{columnVisibilityModel:t,onColumnVisibilityModelChange:n,pinnedColumns:o,onPinnedColumnsChange:r}=e,i=s.useRef({columnVisibilityModel:t,pinnedColumns:o});s.useLayoutEffect(()=>{i.current={columnVisibilityModel:t,pinnedColumns:o}});const l=s.useCallback(a=>{const u={...i.current.columnVisibilityModel,[a]:!1};i.current={...i.current,columnVisibilityModel:u},n(u)},[n]),d=s.useCallback((a,u)=>{const g=xa(i.current.pinnedColumns,a,u);i.current={...i.current,pinnedColumns:g},r(g)},[r]);return{handleHideColumn:l,handlePinColumn:d}}function nd(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e}),s.useLayoutEffect(()=>{const o=t.current,r=()=>n.current;o.getSortModel=()=>r().sortModel,o.sortColumn=(a,u)=>{const{sortModel:g,multiSort:m,onSortModelChange:w}=r(),y=nr(g,a,u,m);n.current={...r(),sortModel:y},w(y)},o.getFilterModel=()=>r().filterModel,o.setFilterModel=a=>{n.current={...r(),filterModel:a},r().onFilterModelChange(a)};const i=a=>{n.current={...r(),paginationModel:a},r().onPaginationModelChange(a)};o.setPage=a=>i({...r().paginationModel,page:a}),o.setPageSize=a=>i({...r().paginationModel,pageSize:a,page:0});const l=()=>{const a=r().getPendingRowSelectionModel?.();return a?new Set(a):r().selectedRowIds},d=(a,u)=>{const{disableMultipleRowSelection:g,onRowSelectionModelChange:m,isSyntheticRowId:w}=r(),y=w?a.filter(h=>!w(h)):a;if(y.length===0)return;const p=l(),f=Xn(p,y,u,g);el(p,f)||(n.current={...r(),selectedRowIds:new Set(f)},m(f))};o.getSelectedRows=()=>Array.from(l()),o.selectRow=(a,u=!0)=>d([a],u),o.selectRows=(a,u=!0)=>d(a,u),o.getVisibleRows=()=>r().getVisibleRows(),o.getAllFilteredRows=()=>r().getAllFilteredRows(),o.getVisibleColumns=()=>r().visibleColumns,o.setSortModel=a=>{n.current={...r(),sortModel:a},r().onSortModelChange(a)},o.setRowGroupingModel=a=>{n.current={...r(),rowGroupingModel:a},r().onRowGroupingModelChange(a)},o.setAggregationModel=a=>{n.current={...r(),aggregationModel:a},r().onAggregationModelChange(a)},o.setColumnVisibilityModel=a=>{n.current={...r(),columnVisibilityModel:a},r().onColumnVisibilityModelChange(a)},o.setPivotModel=a=>{n.current={...r(),pivotModel:a},r().onPivotModelChange(a)},o.getGridAiState=()=>{const{filterModel:a,sortModel:u,rowGroupingModel:g,aggregationModel:m,pivotModel:w,columnVisibilityModel:y}=r();return{filterModel:a,sortModel:u,rowGroupingModel:g,aggregationModel:m,pivotModel:w,columnVisibilityModel:y}}},[t])}const nl="\0";function od(e,t){const n=e.filter(o=>t[o.field]===!1).map(o=>o.field).join(nl);return s.useMemo(()=>{const o={};if(n)for(const r of n.split(nl))o[r]=!1;return jo(e,o)},[e,n])}function rd({paginationModel:e,currentPage:t,enabled:n,onPaginationModelChange:o}){const r=s.useRef({paginationModel:e,onPaginationModelChange:o});s.useLayoutEffect(()=>{r.current={paginationModel:e,onPaginationModelChange:o}});const i=e.page,l=s.useRef(null);s.useEffect(()=>{if(!n)return;if(t===i){l.current=null;return}const d=`${i}>${t}`;if(l.current===d)return;l.current=d;const{paginationModel:a,onPaginationModelChange:u}=r.current;u({...a,page:t})},[n,t,i])}function id(){const[e,t]=s.useState(!1),[n,o]=s.useState(!1),r=s.useRef(null),i=s.useRef(0),[l,d]=s.useState(0),[a,u]=s.useState(!1),g=s.useMemo(()=>({registerColumnsPanel:()=>(i.current+=1,()=>{i.current-=1}),registerFiltersPanel:()=>(d(h=>h+1),()=>d(h=>h-1))}),[]),m=s.useCallback(()=>u(!0),[]),w=s.useCallback(()=>u(!1),[]),y=s.useCallback(()=>{i.current>0?t(!0):o(!0)},[]),p=s.useCallback(()=>t(!1),[]),f=s.useCallback(()=>o(!1),[]);return s.useEffect(()=>{if(!n)return;function h(b){r.current&&!r.current.contains(b.target)&&o(!1)}function x(b){b.key==="Escape"&&o(!1)}return document.addEventListener("mousedown",h),document.addEventListener("keydown",x),()=>{document.removeEventListener("mousedown",h),document.removeEventListener("keydown",x)}},[n]),{toolbarHost:g,toolbarPanelRequested:e,closeToolbarPanel:p,standalonePanelOpen:n,closeStandalonePanel:f,standalonePanelRef:r,openColumnsPanel:y,toolbarFiltersRequested:a,closeToolbarFiltersPanel:w,openFiltersPanel:l>0?m:void 0}}const ol=s.createContext(null);function ld(e){if(typeof e!="function")return!1;const t=e.prototype;return!(typeof t=="object"&&t!==null&&"isReactComponent"in t)}function sd({render:e,toolbarProps:t}){"use no memo";return c.jsx(c.Fragment,{children:e(t)})}function ad({component:e,toolbarProps:t}){if(ld(e))return c.jsx(sd,{render:e,toolbarProps:t},`fn:${e.toString()}`);const n=e;return c.jsx(n,{...t})}const rl=48;function cd({columns:e,aggregationModel:t,aggregationResult:n,columnWidths:o,rowHeight:r,checkboxSelection:i,hasDetailPanel:l,rowReordering:d,pinCheckboxColumn:a=!0,pinExpandColumn:u=!0,pinnedColumns:g,loading:m=!1}){const w=s.useMemo(()=>Eo(e,o,g,i,a,l,u,d),[e,o,g,i,a,l,u,d]),{lastLeft:y,firstRight:p}=s.useMemo(()=>Mo(e,g),[e,g]),f=d?rl:0,h=f+(l&&u?rl:0),x=(b,v,E)=>c.jsx("div",{className:`ogx__aggregation-spacer${v?" ogx__aggregation-spacer--pinned":""}`,style:v?{left:E}:void 0,"aria-hidden":"true"},b);return c.jsxs("div",{className:`ogx__aggregation-footer${m?" ogx__aggregation-footer--loading":""}`,role:"row","aria-label":"Aggregation totals","aria-live":"polite","aria-busy":m||void 0,style:{minHeight:`${r}px`},children:[d&&x("__reorder_col__",!0,0),l&&x("__expand_col__",u,f),i&&x("__checkbox_col__",a,h),e.map(b=>{if(b.isSpacer){const A=typeof b.width=="number"?b.width:0;return c.jsx("div",{style:{width:A,minWidth:A,flexShrink:0},"aria-hidden":"true"},b.field)}const v=t[b.field],E=v&&Do(b,v)?v:void 0,k=n[b.field],N=Nt(b,o,120),M=ct(b.field,g),S=M?w[b.field]:void 0,D=["ogx__aggregation-cell",M==="left"&&"ogx__aggregation-cell--pinned-left",M==="right"&&"ogx__aggregation-cell--pinned-right",M==="left"&&b.field===y&&"ogx__aggregation-cell--pinned-left-last",M==="right"&&b.field===p&&"ogx__aggregation-cell--pinned-right-first"].filter(Boolean).join(" "),I={width:N,minWidth:N,maxWidth:N,textAlign:b.align||"left"};return M==="left"&&S!==void 0&&(I.left=S),M==="right"&&S!==void 0&&(I.right=S),c.jsx("div",{className:D,role:"gridcell",style:I,children:E?c.jsxs(c.Fragment,{children:[c.jsx("span",{className:"ogx__aggregation-label",children:E}),c.jsx("span",{className:"ogx__aggregation-value",children:Bn(k,E,b,n)})]}):null},b.field)})]})}function dd({noRowsLabel:e,width:t,overlay:n}){return n?c.jsx("div",{className:"ogx__empty",style:{width:t},children:n}):c.jsxs("div",{className:"ogx__empty",style:{width:t},children:[c.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[c.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),c.jsx("path",{d:"M3 9h18M9 21V9"})]}),c.jsx("span",{children:e})]})}function il({dataSource:e,paginationMode:t,sortingMode:n,filterMode:o}){return!!e&&(t==="server"||t==="infinite"||n==="server"||o==="server")}const ll=Number.MAX_SAFE_INTEGER,ud="An unexpected error occurred while loading the data.";function sl(e){return typeof e=="string"&&e?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"&&e.message?e.message:ud}function fd({error:e,onRetry:t}){if(!e)return null;const n=sl(e);return c.jsxs("div",{className:"ogx-error-overlay","aria-live":"assertive",role:"alert",children:[c.jsxs("svg",{width:"56",height:"56",viewBox:"0 0 24 24",fill:"none",stroke:"var(--ogx-color-error)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[c.jsx("circle",{cx:"12",cy:"12",r:"10"}),c.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),c.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),c.jsx("div",{className:"ogx-error-overlay__title",children:"Oops! Something went wrong"}),c.jsx("div",{className:"ogx-error-overlay__message",children:n}),t&&c.jsx("button",{type:"button",onClick:t,className:"ogx-button ogx-button--primary",children:"Retry"})]})}function al(e,t){typeof e=="function"?e(t):e&&(e.current=t)}const bt=s.forwardRef(function({indeterminate:t=!1,label:n,className:o="",inputClassName:r="",inputRef:i,...l},d){const a=s.useRef(null),u=s.useCallback(m=>{a.current=m,al(i,m),al(d,m)},[i,d]);s.useEffect(()=>{a.current&&(a.current.indeterminate=t)},[t]);const g=["ogx-checkbox-wrapper",l.disabled&&"ogx-checkbox-wrapper--disabled",o].filter(Boolean).join(" ");return c.jsxs("label",{className:g,children:[c.jsx("input",{ref:u,type:"checkbox",className:["ogx-checkbox__input",r].filter(Boolean).join(" "),...l}),c.jsxs("span",{className:"ogx-checkbox__box",children:[l.checked&&!t&&c.jsx("svg",{className:"ogx-checkbox__icon",viewBox:"0 0 24 24","aria-hidden":"true",children:c.jsx("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})}),t&&c.jsx("svg",{className:"ogx-checkbox__icon",viewBox:"0 0 24 24","aria-hidden":"true",children:c.jsx("path",{d:"M19 13H5v-2h14v2z"})})]}),n&&c.jsx("span",{className:"ogx-checkbox__label",children:n})]})});bt.displayName="Checkbox";const cl=50;function or(e,t,n,o){const r=Math.min(n??cl,t),i=Math.max(o??1/0,t);return Math.max(r,Math.min(i,e))}const gd=16;function pd(e){e.preventDefault(),e.stopPropagation()}function hd(){const e=t=>{t.stopPropagation(),t.preventDefault()};window.addEventListener("click",e,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",e,{capture:!0}),0)}function md(e){const{field:t,currentWidth:n,onResize:o,onAutosize:r,minWidth:i,maxWidth:l,edge:d="end"}=e,[a,u]=s.useState(!1),g=s.useRef(null);s.useEffect(()=>()=>{g.current=null},[]);const m=s.useCallback((b,v)=>{const E=v-b.startX,k=b.startWidth+(d==="start"?-E:E);return or(k,b.startWidth,i,l)},[d,i,l]),w=s.useCallback(b=>{if(b.button===0){b.stopPropagation(),g.current={pointerId:b.pointerId,startX:b.clientX,startWidth:n,lastUpdate:0,moved:!1},u(!0);try{b.currentTarget.setPointerCapture(b.pointerId)}catch{}}},[n]),y=s.useCallback(b=>{const v=g.current;if(!v||b.pointerId!==v.pointerId||(b.clientX!==v.startX&&(v.moved=!0),!v.moved))return;const E=Date.now();E-v.lastUpdate>=gd&&(v.lastUpdate=E,o(t,m(v,b.clientX)))},[t,o,m]),p=s.useCallback((b,v)=>{const E=g.current;!E||b.pointerId!==E.pointerId||(g.current=null,u(!1),(E.moved||b.clientX!==E.startX)&&(hd(),v&&o(t,m(E,b.clientX))))},[t,o,m]),f=s.useCallback(b=>{if(b.key==="Enter"&&r){b.preventDefault(),b.stopPropagation(),r(t);return}if(b.key!=="ArrowLeft"&&b.key!=="ArrowRight")return;b.preventDefault(),b.stopPropagation();const v=(b.shiftKey?50:10)*(b.key==="ArrowRight"?1:-1);o(t,or(n+v,n,i,l))},[t,n,o,r,i,l]),h=s.useCallback(b=>{b.preventDefault(),b.stopPropagation(),r?.(t)},[t,r]),x=["ogx-column-resize-handle",d==="start"&&"ogx-column-resize-handle--start",a&&"ogx-column-resize-handle--dragging"].filter(Boolean).join(" ");return c.jsx("div",{className:x,onPointerDown:w,onMouseDown:pd,onPointerMove:y,onPointerUp:b=>p(b,!0),onPointerCancel:b=>p(b,!1),onClick:b=>b.stopPropagation(),onDragStart:b=>{b.preventDefault(),b.stopPropagation()},onDoubleClick:h,onKeyDown:f,role:"separator","aria-orientation":"vertical","aria-label":`Resize ${t} column`,"aria-valuenow":Math.round(n),"aria-valuemin":Math.round(Math.min(i??50,n)),"aria-valuemax":l,tabIndex:-1,children:c.jsx("div",{className:"ogx-column-resize-handle__line"})})}function dl(e){if(!e)return 0;let t=0;const n=(o,r)=>{t=Math.max(t,r);for(const i of o.children)typeof i!="string"&&n(i,r+1)};return e.forEach(o=>n(o,1)),t}function ul(e){const t=new Map;if(!e)return t;const n=(o,r)=>{const i=[...r,o];for(const l of o.children)typeof l=="string"?t.has(l)||t.set(l,i):n(l,i)};return e.forEach(o=>n(o,[])),t}function rr(e,t,n){if(!e||e.length===0)return!0;const o=ul(e),r=o.get(t),i=o.get(n);return(r?.[r.length-1]??null)===(i?.[i.length-1]??null)}function wd(e,t,n){const o=[];let r=0,i=null,l=null;for(const d of e){const a=d.isSpacer?null:t.get(d.field)?.[n]??null;(i===null||l!==a||i.pinned!==d.pinned)&&(i={key:`${a?a.groupId:"filler"}-${n}-${d.field}`,isGroup:a!==null,label:a?.headerName??"",headerClassName:a?.headerClassName,width:0,flexGrow:0,fields:[],firstDataIndex:r,pinned:d.pinned},l=a,o.push(i)),i.width+=d.width,i.flexGrow+=d.flex??0,d.isSpacer||(i.fields.push(d.field),r++)}return o}function Ot(){return document.documentElement.clientWidth||window.innerWidth}function fl(){return document.documentElement.clientHeight||window.innerHeight}function Ut(){return c.jsx("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"currentColor",children:c.jsx("circle",{cx:"4",cy:"4",r:"4"})})}function Rt(){return c.jsx("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:c.jsx("circle",{cx:"4",cy:"4",r:"3"})})}function bd(){return c.jsxs("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"13",height:"13",fill:"none",children:[c.jsx("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("rect",{x:"8.5",y:"4",width:"7",height:"16",fill:"currentColor",opacity:"0.3"}),c.jsx("line",{x1:"8.5",y1:"4",x2:"8.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("line",{x1:"15.5",y1:"4",x2:"15.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("line",{x1:"2",y1:"9",x2:"22",y2:"9",stroke:"currentColor",strokeWidth:"1.2"}),c.jsx("line",{x1:"2",y1:"14",x2:"22",y2:"14",stroke:"currentColor",strokeWidth:"1.2"})]})}function xd(){return c.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"12",y1:"19",x2:"12",y2:"5"}),c.jsx("polyline",{points:"5 12 12 5 19 12"})]})}function yd(){return c.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),c.jsx("polyline",{points:"19 12 12 19 5 12"})]})}function vd(){return c.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",children:c.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})})}function Cd(){return c.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"}),c.jsx("path",{d:"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"}),c.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]})}function _d(){return c.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"4",y1:"2",x2:"4",y2:"22"}),c.jsx("polyline",{points:"11 8 4 12 11 16"}),c.jsx("line",{x1:"4",y1:"12",x2:"20",y2:"12"})]})}function Sd(){return c.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"20",y1:"2",x2:"20",y2:"22"}),c.jsx("polyline",{points:"13 8 20 12 13 16"}),c.jsx("line",{x1:"20",y1:"12",x2:"4",y2:"12"})]})}function kd(){return c.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"2",y1:"2",x2:"22",y2:"22"}),c.jsx("line",{x1:"4",y1:"4",x2:"4",y2:"20"}),c.jsx("line",{x1:"4",y1:"12",x2:"20",y2:"12"})]})}const gl=e=>e?Array.from(e.querySelectorAll('[role="menuitem"], [role="menuitemradio"]')):[];function Ed({colDef:e,sortModel:t,onSort:n,onHide:o,onPin:r,pinnedColumns:i,onManageColumns:l,onClose:d,anchorEl:a}){const u=s.useRef(null),g=s.useCallback(I=>{I&&(a?.closest('[role="columnheader"]')??a)?.focus({preventScroll:!0}),d()},[a,d]),m=I=>{const A=gl(u.current),C=A.indexOf(I.target);let L=-1;if(I.key==="ArrowDown")L=C+1>=A.length?0:C+1;else if(I.key==="ArrowUp")L=C<=0?A.length-1:C-1;else if(I.key==="Home")L=0;else if(I.key==="End")L=A.length-1;else if(I.key==="Tab"){I.preventDefault(),g(!0);return}else return;I.preventDefault(),A[L]?.focus()},[w,y]=s.useState({position:"fixed",zIndex:1300,top:0,left:0,visibility:"hidden"});s.useLayoutEffect(()=>{if(!a||!u.current)return;const I=a.getBoundingClientRect(),A=u.current.getBoundingClientRect(),C=Ot(),L=fl(),F=8;let _=I.left;_+A.width+F>C&&(_=C-A.width-F),_<F&&(_=F);let z=I.bottom+4;z+A.height+F>L&&(z=I.top-A.height-4),y({position:"fixed",zIndex:1300,top:z,left:_,visibility:"visible"})},[a]);const p=w.visibility==="visible";s.useLayoutEffect(()=>{p&&gl(u.current)[0]?.focus({preventScroll:!0})},[p]),s.useEffect(()=>{function I(C){u.current&&!u.current.contains(C.target)&&a&&!a.contains(C.target)&&d()}function A(C){C.key==="Escape"&&g(!0)}return document.addEventListener("mousedown",I),document.addEventListener("keydown",A),window.addEventListener("scroll",d,!0),window.addEventListener("resize",d),()=>{document.removeEventListener("mousedown",I),document.removeEventListener("keydown",A),window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d)}},[a,d,g]);const f=I=>{n?.(e.field,I),g(!0)},h=!!o&&e.hideable!==!1,x=!!r&&e.pinnable!==!1,b=()=>{h&&o?.(e.field),g(!0)},v=I=>{x&&r?.(e.field,I),g(!0)},E=t?.find(I=>I.field===e.field)?.sort,k=E==null,N=i?.left?.includes(e.field)??!1,M=i?.right?.includes(e.field)??!1,S=!N&&!M,D=e.headerName||e.field;return mt.createPortal(c.jsxs("div",{ref:u,className:"ogx-column-menu",style:w,role:"menu","aria-label":`Column options for ${D}`,onKeyDown:m,children:[n&&e.sortable!==!1&&c.jsxs(c.Fragment,{children:[c.jsxs("button",{type:"button",className:`ogx-menu-item${E==="asc"?" ogx-menu-item--active":""}`,onClick:()=>f("asc"),role:"menuitemradio","aria-checked":E==="asc",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:E==="asc"?c.jsx(Ut,{}):c.jsx(Rt,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(xd,{})}),"Sort Ascending"]}),c.jsxs("button",{type:"button",className:`ogx-menu-item${E==="desc"?" ogx-menu-item--active":""}`,onClick:()=>f("desc"),role:"menuitemradio","aria-checked":E==="desc",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:E==="desc"?c.jsx(Ut,{}):c.jsx(Rt,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(yd,{})}),"Sort Descending"]}),c.jsxs("button",{type:"button",className:`ogx-menu-item${k?" ogx-menu-item--active":""}`,onClick:()=>f(null),role:"menuitemradio","aria-checked":k,children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:k?c.jsx(Ut,{}):c.jsx(Rt,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(vd,{})}),"Unsort"]}),c.jsx("div",{className:"ogx-menu-divider"})]}),x&&c.jsxs(c.Fragment,{children:[c.jsx("div",{className:"ogx-menu-section-label","aria-hidden":"true",children:"Pin column"}),c.jsxs("button",{type:"button",className:`ogx-menu-item${N?" ogx-menu-item--active":""}`,onClick:()=>v("left"),role:"menuitemradio","aria-checked":N,"aria-label":"Pin to left",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:N?c.jsx(Ut,{}):c.jsx(Rt,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(_d,{})}),"Pin to Left"]}),c.jsxs("button",{type:"button",className:`ogx-menu-item${M?" ogx-menu-item--active":""}`,onClick:()=>v("right"),role:"menuitemradio","aria-checked":M,"aria-label":"Pin to right",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:M?c.jsx(Ut,{}):c.jsx(Rt,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(Sd,{})}),"Pin to Right"]}),c.jsxs("button",{type:"button",className:`ogx-menu-item${S?" ogx-menu-item--active":""}`,onClick:()=>v(null),role:"menuitemradio","aria-checked":S,"aria-label":"Unpin column",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:S?c.jsx(Ut,{}):c.jsx(Rt,{})}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(kd,{})}),"Unpin"]}),c.jsx("div",{className:"ogx-menu-divider"})]}),h&&c.jsxs(c.Fragment,{children:[c.jsxs("button",{type:"button",className:"ogx-menu-item",onClick:b,role:"menuitem","aria-label":`Hide ${D} column`,children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true"}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(Cd,{})}),"Hide Column"]}),c.jsx("div",{className:"ogx-menu-divider"})]}),c.jsxs("button",{type:"button",className:"ogx-menu-item",onClick:()=>{l?.(),g(!1)},role:"menuitem","aria-label":"Manage all columns",children:[c.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true"}),c.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:c.jsx(bd,{})}),"Manage columns"]})]}),a?.closest(".ogx-theme-provider")||document.body)}const Md=16,Nd=16;function Id(e,t=!1){const n=Number.isFinite(e)?e-Nd:0,o=Math.floor(n/Md)-(t?1:0);return Math.max(1,o)}function Ld(e,t){return e??t??!1}function pl(e,t,n,o){const r={width:t[e.field]??e.width??100,minWidth:e.minWidth,maxWidth:e.maxWidth,flexGrow:e.flex??0,flexShrink:0,flexBasis:"auto",boxSizing:"border-box",position:n?"sticky":"relative"};return n==="left"?r.left=o:n==="right"&&(r.right=o),r}const Ad="header:",Pd=40,Td=300,Fd="__group__",hl=[];function ir(e){return`${Ad}${e}`}function lr(e){return"items"in e&&Array.isArray(e.items)}function Od(e){return e.isSpacer||Ze(e.field)||e.field===Fd?!1:e.headerFilter!==!1&&e.filterable!==!1&&e.type!=="image"}function Yn(e){if(e.headerFilterOperator)return e.headerFilterOperator;switch(e.type){case"number":return"=";case"date":case"boolean":case"singleSelect":return"is";default:return"contains"}}function Dd(e){const t=bi(e.type),n=Yn(e);return t.includes(n)?t:[n,...t]}function ml(e,t){return e.items.some(n=>lr(n)?ml(n,t):n.field===t)}function $d(e){return(e?.logicOperator??"and")==="or"&&(e?.items?.length??0)>0}function wl(e,t){const n=e?.items??hl;if($d(e))return{kind:"custom"};const o=ir(t);let r;for(const i of n){if(lr(i)){if(ml(i,t))return{kind:"custom"};continue}if(i.field===t){if(i.id!==o||r)return{kind:"custom"};r=i}}return{kind:"editable",item:r}}function Gd(e,t,n){const o=e??{items:[]};if(wl(o,t).kind!=="editable")return o;const r=ir(t),i=o.items??hl,l=i.findIndex(u=>!lr(u)&&u.id===r),d=n?{...n,id:r,field:t}:null;let a;if(l===-1){if(!d)return o;if(i.length===0&&o.logicOperator==="or")return{...o,logicOperator:"and",items:[d]};a=[...i,d]}else d?a=i.map((u,g)=>g===l?d:u):a=i.filter((u,g)=>g!==l);return{...o,items:a}}function sr(e,t,n){const o=Vt.has(t);return!o&&$o(n)&&t===Yn(e)?null:{id:ir(e.field),field:e.field,operator:t,value:o?void 0:n}}function bl(e,t){if(!Vt.has(t))return t==="isAnyOf"?e==null||e===""?[]:Array.isArray(e)?e:[e]:Array.isArray(e)?e.length>0?e[0]:"":e??""}const Hd={contains:"∋",equals:"=",startsWith:"a…",endsWith:"…a",isEmpty:"∅",isNotEmpty:"!∅",isAnyOf:"∈","=":"=","!=":"≠",">":">",">=":"≥","<":"<","<=":"≤",is:"=",not:"≠",after:">",onOrAfter:"≥",before:"<",onOrBefore:"≤"},ar={contains:"Contains",equals:"Equals",startsWith:"Starts with",endsWith:"Ends with",isEmpty:"Is empty",isNotEmpty:"Is not empty",isAnyOf:"Is any of","=":"Equals","!=":"Does not equal",">":"Greater than",">=":"Greater than or equal","<":"Less than","<=":"Less than or equal",is:"Is",not:"Is not",after:"After",onOrAfter:"On or after",before:"Before",onOrBefore:"On or before"},Qe=s.forwardRef(function({fullWidth:t=!1,error:n=!1,startAdornment:o,endAdornment:r,className:i="",inputClassName:l="",variant:d="field",...a},u){const g=["ogx-input-wrapper",d==="cell"&&"ogx-input-wrapper--cell",t&&"ogx-input-wrapper--full-width",n&&"ogx-input-wrapper--error",a.disabled&&"ogx-input-wrapper--disabled",i].filter(Boolean).join(" "),m=["ogx-input",l].filter(Boolean).join(" ");return c.jsxs("div",{className:g,children:[o&&c.jsx("div",{className:"ogx-input__adornment ogx-input__adornment--start",children:o}),c.jsx("input",{ref:u,className:m,"aria-invalid":n?!0:void 0,...a}),r&&c.jsx("div",{className:"ogx-input__adornment ogx-input__adornment--end",children:r})]})});Qe.displayName="Input";const Bd={position:"fixed",zIndex:1300,top:0,left:0,visibility:"hidden"},xl=e=>e?Array.from(e.querySelectorAll('[role="menuitemradio"]')):[];function Wd({anchorEl:e,columnLabel:t,operators:n,current:o,onSelect:r,onClose:i}){const l=s.useRef(null),[d,a]=s.useState(Bd);s.useLayoutEffect(()=>{const w=l.current;if(!w)return;const y=e.getBoundingClientRect(),p=w.getBoundingClientRect(),f=8;let h=Math.min(y.left,Ot()-p.width-f);h<f&&(h=f);let x=y.bottom+4;x+p.height+f>fl()&&(x=y.top-p.height-4),a({position:"fixed",zIndex:1300,top:x,left:h,visibility:"visible"})},[e]);const u=d.visibility==="visible";s.useLayoutEffect(()=>{if(!u)return;const w=xl(l.current);(w.find(y=>y.getAttribute("aria-checked")==="true")??w[0])?.focus({preventScroll:!0})},[u]);const g=s.useRef(i);s.useLayoutEffect(()=>{g.current=i}),s.useEffect(()=>{const w=e.ownerDocument,y=w.defaultView;function p(x){const b=x.target;l.current?.contains(b)||e.contains(b)||g.current(!1)}function f(x){l.current?.contains(x.target)||g.current(!1)}function h(){g.current(!1)}return w.addEventListener("mousedown",p),y?.addEventListener("scroll",f,!0),y?.addEventListener("resize",h),()=>{w.removeEventListener("mousedown",p),y?.removeEventListener("scroll",f,!0),y?.removeEventListener("resize",h)}},[e]);const m=w=>{w.stopPropagation();const y=xl(l.current),p=y.indexOf(w.target);let f=-1;switch(w.key){case"ArrowDown":f=p+1>=y.length?0:p+1;break;case"ArrowUp":f=p<=0?y.length-1:p-1;break;case"Home":f=0;break;case"End":f=y.length-1;break;case"Escape":case"Tab":w.preventDefault(),i(!0);return;default:return}w.preventDefault(),y[f]?.focus()};return mt.createPortal(c.jsx("div",{ref:l,className:"ogx-column-menu ogx__header-filter-menu",style:d,role:"menu","aria-label":`Filter operator for ${t}`,onKeyDown:m,children:n.map(w=>c.jsx("button",{type:"button",role:"menuitemradio","aria-checked":w===o,tabIndex:-1,className:`ogx-menu-item${w===o?" ogx-menu-item--active":""}`,onClick:()=>r(w),children:ar[w]??w},w))}),e.closest(".ogx-theme-provider")??e.ownerDocument.body)}function Vd(e){return(e.valueOptions??[]).map((t,n)=>t!==null&&typeof t=="object"?{key:String(n),value:t.value,label:t.label}:{key:String(n),value:t,label:String(t)})}function zd(e,t){const n=Array.isArray(t)?t[0]:t;return Object.is(e.value,n)?!0:n!=null&&String(e.value).toLowerCase()===String(n).toLowerCase()}function yl(e,t){return t==="isAnyOf"?e.split(",").map(n=>n.trim()).filter(n=>n!==""):e}function vl(e,t){return Object.is(e,t)?!0:Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((n,o)=>vl(n,t[o])):!1}function Cl(e,t){return e===t?!0:!e||!t?!1:e.operator===t.operator&&vl(e.value,t.value)}function Kd(){return c.jsxs("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"2.2",strokeLinecap:"round",children:[c.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"}),c.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"})]})}function jd({colDef:e,state:t,style:n,className:o,ariaColIndex:r,onItemChange:i,onOpenFilterPanel:l}){const d=e.headerName||e.field,a=t.kind==="editable"?t.item:void 0,u=a?.operator??Yn(e),g=Vd(e),m=e.type==="boolean"||e.type==="singleSelect"&&g.length>0,w=!Vt.has(u),[y,p]=s.useState(null),[f,h]=s.useState(null),[x,b]=s.useState(void 0),[v,E]=s.useState(a);if(v!==a){E(a);const R=x!==void 0&&Cl(x??void 0,a);!Cl(v,a)&&!R&&p(null)}const k=s.useRef(null),N=s.useRef(null),M=s.useRef(null),S=s.useRef(null),D=s.useRef(null),I=s.useRef({item:a,colDef:e,onItemChange:i});s.useLayoutEffect(()=>{I.current={item:a,colDef:e,onItemChange:i}});const A=s.useCallback(R=>{const{item:te,colDef:ce,onItemChange:W}=I.current;if(te?R===Bo(te.value,ce.type):R.trim()==="")return;const V=te?.operator??Yn(ce),J=sr(ce,V,yl(R,V));b(J),W(ce.field,J)},[]),C=s.useRef(null);s.useLayoutEffect(()=>{C.current=y}),s.useEffect(()=>()=>{const R=C.current;C.current=null,R!==null&&A(R)},[A]),s.useEffect(()=>{if(y===null)return;const R=setTimeout(()=>{C.current=null,A(y),p(null)},Td);return()=>clearTimeout(R)},[y,A]);const L=()=>k.current?.focus({preventScroll:!0}),F=()=>(N.current??M.current)?.focus({preventScroll:!0}),_=R=>{b(R),i(e.field,R)},z=R=>{p(null),_(sr(e,u,R))},K=()=>{p(null),_(null)},Q=()=>{D.current&&h(D.current)},G=R=>{h(null),R&&(N.current||M.current?F():L())},j=R=>{const te=y!==null?yl(y,R):a?.value;p(null),h(null),_(sr(e,R,bl(te,R))),requestAnimationFrame(()=>{N.current||M.current?F():L()})},H=t.kind==="custom",ie=!H&&w&&!m,re=R=>{const te=R.currentTarget,ce=R.target;if(!te.contains(ce)||R.nativeEvent.isComposing)return;const{key:W}=R,le=ce===te;if((R.altKey&&W==="ArrowDown"||(R.ctrlKey||R.metaKey)&&W==="Enter")&&!H&&ce!==M.current){R.preventDefault(),R.stopPropagation(),Q();return}if(!le){W==="Escape"&&(R.preventDefault(),R.stopPropagation(),L());return}if(W==="Enter"||W===" "||W==="Spacebar"){R.preventDefault(),R.stopPropagation(),H?S.current?.click():N.current||M.current?F():Q();return}if((W==="Delete"||W==="Backspace")&&a){R.preventDefault(),R.stopPropagation(),K();return}ie&&e.type!=="date"&&W.length===1&&!R.ctrlKey&&!R.metaKey&&!R.altKey&&(R.preventDefault(),R.stopPropagation(),N.current?.focus({preventScroll:!0}),p(W))};let ue=null;if(H)ue=l?c.jsx("button",{ref:S,type:"button",className:"ogx__header-filter-custom",tabIndex:-1,onClick:l,title:"Set in the filter panel",children:"Custom filter"}):c.jsx("span",{className:"ogx__header-filter-custom",title:"Set in the filter panel",children:"Custom filter"});else{let R;if(!w)R=c.jsx("span",{className:"ogx__header-filter-operator-label",children:ar[u]??u});else if(e.type==="boolean")R=c.jsxs("select",{ref:M,className:"ogx__header-filter-select",tabIndex:-1,value:a?.value==null||a.value===""?"":String(a.value),onChange:ce=>z(ce.target.value===""?"":ce.target.value==="true"),"aria-label":`Filter value for ${d}`,children:[c.jsx("option",{value:"",children:"Any"}),c.jsx("option",{value:"true",children:"Yes"}),c.jsx("option",{value:"false",children:"No"})]});else if(m){const ce=g.find(W=>zd(W,a?.value));R=c.jsxs("select",{ref:M,className:"ogx__header-filter-select",tabIndex:-1,value:ce?.key??"",onChange:W=>{const le=g.find(V=>V.key===W.target.value);z(bl(le?le.value:"",u))},"aria-label":`Filter value for ${d}`,children:[c.jsx("option",{value:"",children:"Any"}),g.map(W=>c.jsx("option",{value:W.key,children:W.label},W.key))]})}else R=c.jsx(Qe,{ref:N,className:"ogx__header-filter-input-wrapper",inputClassName:"ogx__header-filter-input",type:e.type==="date"?"date":"text",inputMode:e.type==="number"?"decimal":void 0,tabIndex:-1,autoComplete:"off",value:y??Bo(a?.value,e.type),onChange:ce=>p(ce.target.value),"aria-label":`Filter value for ${d}`});const te=ar[u]??u;ue=c.jsxs(c.Fragment,{children:[c.jsx("button",{ref:D,type:"button",className:`ogx__header-filter-operator${f?" ogx__header-filter-operator--open":""}`,tabIndex:-1,"aria-haspopup":"menu","aria-expanded":f!==null,"aria-label":`Filter operator for ${d}: ${te}`,title:te,onClick:()=>f?h(null):Q(),children:Hd[u]??"?"}),R,a&&c.jsx("button",{type:"button",className:"ogx__header-filter-clear",tabIndex:-1,"aria-label":`Clear filter for ${d}`,title:"Clear",onClick:()=>{K(),L()},children:c.jsx(Kd,{})}),f&&c.jsx(Wd,{anchorEl:f,columnLabel:d,operators:Dd(e),current:u,onSelect:j,onClose:G})]})}const ae=["ogx__header-filter-cell",a&&"ogx__header-filter-cell--active",H&&"ogx__header-filter-cell--custom",o].filter(Boolean).join(" ");return c.jsx("div",{ref:k,className:ae,style:n,role:"columnheader","aria-label":`Filter ${d}`,"aria-colindex":r,"data-field":e.field,tabIndex:-1,onKeyDown:re,children:ue})}function cr({field:e,ariaColIndex:t,sticky:n,left:o,focused:r}){return c.jsx("div",{className:["ogx__header-filter-cell","ogx__header-filter-cell--system",n&&"ogx__header-filter-cell--pinned ogx__header-filter-cell--pinned-left",r&&"ogx__header-filter-cell--focused"].filter(Boolean).join(" "),style:{width:He,minWidth:He,maxWidth:He,position:n?"sticky":void 0,left:n?o:void 0},role:"columnheader","aria-colindex":t,"data-field":e,tabIndex:-1})}function Ud(e){const{columns:t,columnWidths:n,pinnedColumns:o,pinnedPositions:r,pinnedEdges:i,rowReordering:l,hasDetailPanel:d,checkboxSelection:a,pinExpandColumn:u,pinCheckboxColumn:g,columnIndexMap:m,ariaRowIndex:w,filterModel:y,onFilterModelChange:p,onOpenFilterPanel:f,focusedField:h}=e,x=s.useRef({filterModel:y,onFilterModelChange:p});s.useLayoutEffect(()=>{x.current={filterModel:y,onFilterModelChange:p}});const b=s.useCallback((D,I)=>{const{filterModel:A,onFilterModelChange:C}=x.current;if(!C)return;const L=Gd(A,D,I);L!==A&&(x.current={filterModel:L,onFilterModelChange:C},C(L))},[]),v=l?1:0,E=d?v+1:v,k=a?E+1:E,N=k,M=l?He:0,S=M+(d&&u?He:0);return c.jsxs("div",{className:"ogx__header-filter-row",role:"row","aria-rowindex":w,children:[l&&c.jsx(cr,{field:At,ariaColIndex:v,sticky:!0,left:0,focused:h===At}),d&&c.jsx(cr,{field:Pt,ariaColIndex:E,sticky:u,left:M,focused:h===Pt}),a&&c.jsx(cr,{field:Je,ariaColIndex:k,sticky:g,left:S,focused:h===Je}),t.map((D,I)=>{if(D.isSpacer)return c.jsx("div",{style:{width:D.width,minWidth:D.width,flexShrink:0},"aria-hidden":"true"},D.field);const A=ct(D.field,o),C=pl(D,n,A,A?r[D.field]:void 0),L=N+(m?.get(D.field)??I)+1,F=[A&&"ogx__header-filter-cell--pinned",A&&`ogx__header-filter-cell--pinned-${A}`,A==="left"&&D.field===i.lastLeft&&"ogx__header-filter-cell--pinned-left-last",A==="right"&&D.field===i.firstRight&&"ogx__header-filter-cell--pinned-right-first",h===D.field&&"ogx__header-filter-cell--focused"].filter(Boolean).join(" ");return Od(D)?c.jsx(jd,{colDef:D,state:wl(y,D.field),style:C,className:F,ariaColIndex:L,onItemChange:b,onOpenFilterPanel:f},D.field):c.jsx("div",{className:`ogx__header-filter-cell ogx__header-filter-cell--empty ${F}`,style:C,role:"columnheader","aria-label":`No filter for ${D.headerName||D.field}`,"aria-colindex":L,"data-field":D.field,tabIndex:-1},D.field)})]})}function Rd(){return c.jsx("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",fill:"currentColor",width:"18",height:"18",children:c.jsx("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})}function qd(){return c.jsx("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"18",height:"18",fill:"currentColor",children:c.jsx("path",{d:"M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z"})})}function _l(e){const{columns:t,allColumns:n,columnGroupingModel:o,checkboxSelection:r=!1,allSelected:i=!1,someSelected:l=!1,onSelectAll:d,onSort:a,sortModel:u=[],onColumnResize:g,onColumnAutosize:m,columnWidths:w={},pinnedColumns:y,hasDetailPanel:p=!1,pinCheckboxColumn:f=!0,pinExpandColumn:h=!0,rowReordering:x=!1,aggregationModel:b,draggedColumn:v,dragOverColumn:E,onDragStart:k,onDragOver:N,onDragEnd:M,onDrop:S,focusedCell:D,onHeaderClick:I,onSortAdd:A,multiSort:C=!1,onHideColumn:L,onPinColumn:F,onManageColumns:_,columnIndexMap:z,wrapHeaderText:K=!1,headerHeight:Q=56,headerFilters:G=!1,filterModel:j,onFilterModelChange:H,onOpenFilterPanel:ie}=e,re=s.useId(),[ue,ae]=s.useState(null),R=U=>se=>{se.stopPropagation(),ae({colDef:U,anchorEl:se.currentTarget})},te=s.useCallback(()=>{ae(null)},[]),ce=U=>se=>{if(se.altKey&&(se.key==="ArrowLeft"||se.key==="ArrowRight")&&se.target===se.currentTarget){if(U.resizable===!1||!g)return;se.preventDefault(),se.stopPropagation();const ve=Nt(U,w),be=(se.shiftKey?50:10)*(se.key==="ArrowRight"?1:-1);g(U.field,or(ve+be,ve,U.minWidth,U.maxWidth));return}if(!(se.altKey&&se.key==="ArrowDown"||(se.ctrlKey||se.metaKey)&&se.key==="Enter")||U.disableColumnMenu||se.target!==se.currentTarget)return;se.preventDefault(),se.stopPropagation();const he=se.currentTarget.querySelector(".ogx__menu-icon-btn")??se.currentTarget;ae({colDef:U,anchorEl:he})},W=U=>D?.id===null&&!D.headerFilter&&D.field===U,le=x?1:0,V=p?le+1:le,J=r?V+1:V,ne=U=>se=>{if(U.sortable===!1)return;const we=u.find(he=>he.field===U.field);let pe="asc";we&&(we.sort==="asc"?pe="desc":pe=null),(se.shiftKey||C)&&A?A(U.field,pe):a&&a(U.field,pe)},fe=(U,se)=>{const we=u.some(he=>he.field===U);A&&(se===null||we||C||!a)?A(U,se):a?.(U,se)},Z=U=>{const se=u.find(pe=>pe.field===U);if(!se)return null;const we=u.length>1?u.indexOf(se)+1:null;return c.jsx("span",{className:`ogx__sort-icon ogx__sort-icon--${se.sort}`,"aria-hidden":"true",children:we!==null&&c.jsx("span",{className:"ogx__sort-badge",children:we})})},$=s.useMemo(()=>Eo(t,w,y,r,f,p,h,x),[t,w,y,r,f,p,h,x]),O=s.useMemo(()=>Mo(t,y),[t,y]),P=dl(o),T=s.useMemo(()=>ul(o),[o]),X=s.useMemo(()=>P===0?[]:(n??t).map(U=>({field:U.field,width:Nt(U,w),flex:U.isSpacer?0:U.flex,pinned:U.isSpacer?null:ct(U.field,y),isSpacer:U.isSpacer})),[P,n,t,w,y]),Y=(x?48:0)+(p?48:0)+(r?48:0),oe=(x||p||r)&&(!p||h)&&(!r||f),me=(x?1:0)+(p?1:0)+(r?1:0);return c.jsxs("div",{className:"ogx__header-wrap",children:[P>0&&Array.from({length:P},(U,se)=>{const we=wd(X,T,se);return c.jsxs("div",{className:"ogx-col-group-row",role:"row","aria-rowindex":se+1,children:[Y>0&&c.jsx("div",{className:`ogx-col-group-cell ogx-col-group-cell--filler${oe?" ogx-col-group-cell--pinned ogx-col-group-cell--pinned-left":""}`,style:{width:Y,minWidth:Y,flexShrink:0,position:oe?"sticky":void 0,left:oe?0:void 0},"aria-hidden":"true"}),we.map((pe,he)=>{const ve=pe.pinned?` ogx-col-group-cell--pinned ogx-col-group-cell--pinned-${pe.pinned}`:"",be={width:pe.width,minWidth:pe.width,flexShrink:0,flexGrow:pe.flexGrow};return pe.pinned==="left"?(be.position="sticky",be.left=$[pe.fields[0]]):pe.pinned==="right"&&(be.position="sticky",be.right=$[pe.fields[pe.fields.length-1]],we[he-1]?.pinned!=="right"&&(be.marginLeft="auto")),pe.isGroup?c.jsx("div",{role:"columnheader","aria-colspan":pe.fields.length,"aria-colindex":me+pe.firstDataIndex+1,className:`ogx-col-group-cell ogx-col-group-cell--group${ve}${pe.headerClassName?` ${pe.headerClassName}`:""}`,style:be,title:pe.label,children:c.jsx("span",{className:"ogx-col-group-cell__label",children:pe.label})},pe.key):c.jsx("div",{className:`ogx-col-group-cell ogx-col-group-cell--filler${ve}`,style:be,"aria-hidden":"true"},pe.key)})]},`ogx-grp-${se}`)}),c.jsxs("div",{className:"ogx__header",role:"row","aria-rowindex":P+1,children:[x&&c.jsx("div",{className:`ogx__header-cell ogx__header-cell--pinned ogx__header-cell--pinned-left ${W("__reorder_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-label":"Row reorder handle","aria-colindex":le,"data-field":"__reorder_col__",tabIndex:-1,title:"Drag to reorder rows",style:{minWidth:48,maxWidth:48,position:"sticky",left:0}}),p&&c.jsx("div",{className:`ogx__header-cell ogx__header-cell--expand ${h?"ogx__header-cell--pinned ogx__header-cell--pinned-left":""} ${W("__expand_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-label":"Expand row details","aria-colindex":V,"data-field":"__expand_col__",tabIndex:-1,style:{minWidth:48,maxWidth:48,position:h?"sticky":void 0,left:h?x?48:0:void 0}}),r&&c.jsx("div",{className:`ogx__header-cell ogx__header-cell--checkbox ${f?"ogx__header-cell--pinned ogx__header-cell--pinned-left":""} ${W("__checkbox_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-colindex":J,"data-field":"__checkbox_col__",style:{position:f?"sticky":void 0,left:f?(x?48:0)+(p&&h?48:0):void 0},children:d&&c.jsx(bt,{id:re,name:re,checked:i,indeterminate:l,onChange:U=>d(U.target.checked),"aria-label":i?"Deselect all rows":"Select all rows",tabIndex:-1,onMouseDown:U=>U.preventDefault()})}),t.map((U,se)=>{if(U.isSpacer)return c.jsx("div",{style:{width:U.width,minWidth:U.width,flexShrink:0},"aria-hidden":"true"},U.field);const we=U.sortable!==!1,pe=u.findIndex(ot=>ot.field===U.field),he=pe!==-1,ve=he?u[pe].sort:null,be=z?.get(U.field)??se,de=we?pe===0?ve==="asc"?"ascending":"descending":"none":void 0,ye=he&&u.length>1?`Sorted ${ve==="asc"?"ascending":"descending"}, sort priority ${pe+1} of ${u.length}`:void 0,Ee=U.resizable!==!1,Me=ct(U.field,y),Ne=Me!==null,Ie=v===U.field,Se=E===U.field,Oe=Ld(U.wrapHeaderText,K),ge=b?.[U.field],Ce=["ogx__header-cell",`ogx__header-cell--align-${U.headerAlign||U.align||"left"}`,we&&"ogx__header-cell--sortable",he&&"ogx__header-cell--sorted",Ne&&"ogx__header-cell--pinned",Ne&&`ogx__header-cell--pinned-${Me}`,Me==="left"&&U.field===O.lastLeft&&"ogx__header-cell--pinned-left-last",Me==="right"&&U.field===O.firstRight&&"ogx__header-cell--pinned-right-first",Ie&&"ogx__header-cell--dragging",Se&&"ogx__header-cell--drag-over",Oe&&"ogx__header-cell--wrap",W(U.field)&&"ogx__header-cell--focused",U.headerClassName].filter(Boolean).join(" "),ke={...pl(U,w,Me,Me?$[U.field]:void 0),zIndex:U.zIndex,opacity:Ie?.5:1},xe=U.renderHeader?U.renderHeader({field:U.field,colDef:U,colIndex:be}):U.headerName||U.field,je=ot=>{if(ot.target.closest(".ogx-column-resize-handle")){ot.stopPropagation();return}I?.(U.field),we&&ne(U)(ot)},nt=k&&!Ne?k(U.field):void 0,nn=N&&!Ne?N(U.field):void 0,Mn=S&&!Ne?S(U.field):void 0;return c.jsxs("div",{className:Ce,style:ke,title:U.description??(Oe&&typeof xe=="string"?xe:void 0),onClick:je,role:"columnheader",draggable:!!nt,onDragStart:nt,onDragOver:nn,onDragEnd:M,onDrop:Mn,onKeyDown:ce(U),"aria-sort":de,"aria-description":ye,"aria-colindex":me+be+1,"data-field":U.field,tabIndex:-1,children:[c.jsxs("div",{className:"ogx__header-cell-content",children:[Ie&&c.jsx("div",{className:"ogx__header-drag-icon",children:c.jsx(qd,{})}),c.jsxs("div",{className:"ogx__header-cell-title-wrapper",children:[c.jsx("span",{className:"ogx__header-cell-title",style:Oe?{WebkitLineClamp:Id(Q,!!ge)}:void 0,children:xe}),ge&&c.jsx("span",{className:"ogx__header-cell-aggregation",children:ge})]}),we&&Z(U.field),!U.disableColumnMenu&&c.jsx("button",{type:"button",className:"ogx__menu-icon-btn",onClick:R(U),"aria-label":`Open column menu for ${U.headerName||U.field}`,"aria-haspopup":"menu",tabIndex:-1,children:c.jsx(Rd,{})})]}),Ee&&g&&c.jsx(md,{field:U.field,currentWidth:Nt(U,w),onResize:g,onAutosize:m,minWidth:U.minWidth,maxWidth:U.maxWidth,edge:Me==="right"?"start":"end"})]},U.field)}),ue&&c.jsx(Ed,{colDef:ue.colDef,sortModel:u,onSort:a||A?fe:void 0,onHide:L,onPin:F,pinnedColumns:y,onManageColumns:_,onClose:te,anchorEl:ue.anchorEl})]}),G&&c.jsx(Ud,{columns:t,columnWidths:w,pinnedColumns:y,pinnedPositions:$,pinnedEdges:O,rowReordering:x,hasDetailPanel:p,checkboxSelection:r,pinExpandColumn:h,pinCheckboxColumn:f,columnIndexMap:z,ariaRowIndex:P+2,filterModel:j,onFilterModelChange:H,onOpenFilterPanel:ie,focusedField:D?.id===null&&D.headerFilter?D.field:null})]})}const Ae=()=>{},dr=()=>Promise.resolve({updated:[],failed:[],skipped:[]});function Sl(){return{getRow:()=>null,getAllRows:()=>[],getVisibleRows:()=>[],getAllFilteredRows:()=>[],getGroupedExportRows:()=>null,getAggregationResult:()=>null,getAggregationModel:()=>null,getColumn:()=>null,getAllColumns:()=>[],getVisibleColumns:()=>[],selectRow:Ae,selectRows:Ae,getSelectedRows:()=>[],sortColumn:Ae,getSortModel:()=>[],setFilterModel:Ae,getFilterModel:()=>({items:[]}),setPage:Ae,setPageSize:Ae,scrollToIndexes:Ae,autosizeColumn:Ae,autosizeColumns:Ae,copySelectedRows:()=>Promise.resolve(),getCellSelectionModel:()=>[],setCellSelectionModel:Ae,selectCellRange:Ae,clearCellSelection:Ae,getSelectedCells:()=>[],copySelectedCells:()=>Promise.resolve(),pasteText:dr,undo:dr,redo:dr,canUndo:()=>!1,canRedo:()=>!1,clearHistory:Ae,setSortModel:Ae,setRowGroupingModel:Ae,setAggregationModel:Ae,setColumnVisibilityModel:Ae,setPivotModel:Ae,getGridAiState:()=>({}),openAiAssistant:Ae,closeAiAssistant:Ae}}const Xd=e=>e.id;let kl=!1;function El(e,t,n){const o=new Map,r=new Map,i=[],l=[];return e.forEach(d=>{const a=n?.get(d)??t(d);if(o.has(a)){l.push(a);return}o.set(a,d),r.set(d,a),i.push(a)}),l.length>0&&!kl&&process.env.NODE_ENV!=="production"&&(kl=!0,console.warn(`[OpenGridX] ${l.length} row(s) reuse the id of an earlier row and were ignored (ids: ${l.slice(0,5).map(String).join(", ")}${l.length>5?", …":""}). Every row needs a unique id; pass getRowId if the unique key lives in another field.`)),{idRowsLookup:o,allRows:i,idByRow:r}}function Yd(e,t,n,o={}){const r=new Map,i=[];return n.forEach(l=>{r.set(l.field,l),i.push(l.field)}),{rows:El(e,t),columns:{all:n,lookup:r,orderedFields:i,columnVisibilityModel:o},pagination:{rowCount:void 0},pinning:{pinnedColumns:{},pinnedRows:{}},dimensions:{rowHeight:52,headerHeight:56,viewportWidth:0,viewportHeight:0},dataSource:{loading:!1,error:null}}}function Jd(e,t){switch(t.type){case"SET_ROWS":{const n=e.rows.allRows.map(r=>e.rows.idRowsLookup.get(r)),o=typeof t.payload=="function"?t.payload(n):t.payload;return{...e,rows:El(o,t.getRowId,e.rows.idByRow)}}case"REPLACE_ROW":{const n=e.rows.idRowsLookup.get(t.id);if(n===void 0)return e;const o=new Map(e.rows.idRowsLookup);o.set(t.id,t.row);const r=new Map(e.rows.idByRow);return r.delete(n),r.set(t.row,t.id),{...e,rows:{...e.rows,idRowsLookup:o,idByRow:r}}}case"REPLACE_ROWS":{let n=!1;const o=new Map(e.rows.idRowsLookup),r=new Map(e.rows.idByRow);for(const[i,l]of t.rows){const d=o.get(i);d!==void 0&&(n=!0,o.set(i,l),r.delete(d),r.set(l,i))}return n?{...e,rows:{...e.rows,idRowsLookup:o,idByRow:r}}:e}case"SET_COLUMNS":{const n=new Map,o=[];return t.payload.forEach(r=>{n.set(r.field,r),o.push(r.field)}),{...e,columns:{all:t.payload,lookup:n,orderedFields:o,columnVisibilityModel:e.columns.columnVisibilityModel}}}case"SET_DIMENSIONS":return{...e,dimensions:{...e.dimensions,viewportWidth:t.payload.viewportWidth,viewportHeight:t.payload.viewportHeight}};case"SET_DATASOURCE_LOADING":return{...e,dataSource:{...e.dataSource,loading:t.payload}};case"SET_DATASOURCE_ERROR":return{...e,dataSource:{...e.dataSource,error:t.payload}};case"SET_ROW_COUNT":return{...e,pagination:{...e.pagination,rowCount:t.payload}};default:return e}}function Zd(e){const{rows:t,columns:n,rowHeight:o=52,headerHeight:r=56,columnVisibilityModel:i,initialState:l,syncRows:d=!1}=e,a=e.getRowId??Xd,u=s.useRef(a);s.useLayoutEffect(()=>{u.current=a});const[g]=s.useState(()=>Yd(t,a,n,i)),[m,w]=s.useReducer(Jd,{...g,dataSource:l?.dataSource?{...g.dataSource,...l.dataSource}:g.dataSource,pagination:{rowCount:l?.pagination?.rowCount},dimensions:{...g.dimensions,rowHeight:o,headerHeight:r}}),[y,p]=s.useState({rows:t,syncRows:d});(y.rows!==t||y.syncRows!==d)&&(p({rows:t,syncRows:d}),d&&w({type:"SET_ROWS",payload:t,getRowId:a}));const f=s.useRef(m);s.useLayoutEffect(()=>{f.current=m});const h=s.useCallback((I,A)=>{w({type:"SET_ROWS",payload:I,getRowId:u.current})},[]),x=s.useCallback((I,A)=>{w({type:"REPLACE_ROW",id:I,row:A})},[]),b=s.useCallback(I=>{I.size>0&&w({type:"REPLACE_ROWS",rows:I})},[]),v=s.useCallback(I=>{w({type:"SET_COLUMNS",payload:I})},[]),E=s.useCallback((I,A)=>{w({type:"SET_DIMENSIONS",payload:{viewportWidth:I,viewportHeight:A}})},[]),k=s.useCallback(I=>{w({type:"SET_DATASOURCE_LOADING",payload:I})},[]),N=s.useCallback(I=>{w({type:"SET_DATASOURCE_ERROR",payload:I})},[]),M=s.useCallback(I=>{w({type:"SET_ROW_COUNT",payload:I})},[]),[S]=s.useState(()=>({...Sl(),getRow:I=>f.current.rows.idRowsLookup.get(I)||null,getAllRows:()=>f.current.rows.allRows.map(I=>f.current.rows.idRowsLookup.get(I)),getColumn:I=>f.current.columns.lookup.get(I)||null,getAllColumns:()=>f.current.columns.all})),D=s.useRef(S);return{state:m,dispatch:w,apiRef:D,setRows:h,replaceRow:x,replaceRows:b,setColumns:v,setDimensions:E,setDataSourceLoading:k,setDataSourceError:N,setRowCount:M}}function Qd(e){const{onRowOrderChange:t,rows:n,getRowId:o,rowReordering:r=!1}=e,[i,l]=s.useState(null),[d,a]=s.useState(null),u=s.useRef(()=>{}),g=s.useMemo(()=>{const h=new Map;return n.forEach((x,b)=>h.set(o?o(x):x.id,b)),h},[n,o]),m=s.useCallback(h=>g.has(h),[g]),w=s.useCallback(()=>{u.current(),u.current=()=>{},l(null),a(null)},[]);s.useEffect(()=>()=>u.current(),[]);const y=s.useCallback(h=>x=>{if(r){if(!g.has(h)){x.preventDefault();return}u.current(),u.current=qi(x.currentTarget,w),l(h),x.dataTransfer&&(x.dataTransfer.effectAllowed="move",Ri(x,Qo,String(h)))}},[r,g,w]),p=s.useCallback(h=>x=>{if(!(!r||i===null)){if(!Rn(x,Qo)){w();return}g.has(h)&&(x.preventDefault(),x.dataTransfer&&(x.dataTransfer.dropEffect="move"),d!==h&&a(h))}},[r,i,d,g,w]),f=s.useCallback(h=>x=>{if(x.preventDefault(),i===null||!Rn(x,Qo)){w();return}const b=g.get(i),v=g.get(h);w(),t&&b!==void 0&&v!==void 0&&b!==v&&t({row:n[b],oldIndex:b,targetIndex:v})},[i,t,n,g,w]);return{draggedRowId:i,dragOverRowId:d,canReorderRow:m,onDragStart:r?y:void 0,onDragOver:r?p:void 0,onDragEnd:r?w:void 0,onDrop:r?f:void 0}}const Ml=new Map,Nl=e=>JSON.stringify(e),eu=e=>`auto-group-${e}`,Il=5,Ll=e=>e.slice(0,Il).map(t=>JSON.stringify(t)).join(", ")+(e.length>Il?", …":""),tu={treeNodes:new Map,rootIds:[],groupingRows:[],syntheticIds:new Set,rowLookup:new Map,issues:[]};function nu(e,t,n){const o=new Map,r=[],i=[],l=new Set,d=new Map,a=new Map,u=[],g=new Array(e.length),m=new Array(e.length),w=[],y=new Map;e.forEach((f,h)=>{const x=t(f),b=n(f),v=Array.isArray(b)?b.map(E=>String(E)):[];if(g[h]=x,m[h]=v,d.set(x,f),v.length===0)w.push(x);else{const E=Nl(v),k=a.get(E);if(k===void 0)a.set(E,x);else{const N=y.get(E)??[k];N.push(x),y.set(E,N)}}o.set(x,{id:x,parentId:null,depth:Math.max(v.length-1,0),groupingKey:v[v.length-1]??"",isExpanded:!1,children:[],serverChildrenCount:f.serverChildrenCount})});const p=f=>{const h=Nl(f),x=a.get(h);if(x!==void 0)return x;const b=eu(h),v=f[f.length-1],E={id:b,parentId:null,depth:f.length-1,groupingKey:v,isExpanded:!1,children:[],label:v};o.set(b,E),a.set(h,b),l.add(b);const k={id:b};if(i.push(k),d.set(b,k),f.length===1)r.push(b);else{const N=p(f.slice(0,-1));E.parentId=N,o.get(N)?.children?.push(b)}return b};return e.forEach((f,h)=>{const x=g[h],b=m[h];if(b.length<=1){r.push(x);return}const v=p(b.slice(0,-1)),E=o.get(x);E&&(E.parentId=v),o.get(v)?.children?.push(x)}),w.length>0&&u.push(`[OpenGridX] treeData: getTreeDataPath returned an empty path for row(s) ${Ll(w)}. They are shown as top-level rows.`),y.forEach((f,h)=>{u.push(`[OpenGridX] treeData: rows ${Ll(f)} have the same path ${h}. Rows under that path are attached to row ${JSON.stringify(f[0])}.`)}),{treeNodes:o,rootIds:r,groupingRows:i,syntheticIds:l,rowLookup:d,issues:u}}function ou(e,t){const{treeNodes:n,rootIds:o,syntheticIds:r,rowLookup:i}=e,l=new Set,d=new Map,a=new Map,u=g=>{const m=n.get(g);if(!m)return!1;const w=[];let y=0;for(const x of m.children??[])u(x)&&(w.push(x),y+=(r.has(x)?0:1)+(a.get(x)??0));d.set(g,w),a.set(g,y);const p=i.get(g),h=!r.has(g)&&p!==void 0&&(t?t(p):!0)||w.length>0;return h&&l.add(g),h};return o.forEach(u),{visible:l,visibleChildren:d,descendantCounts:a}}function ru(e){const{rows:t,getRowId:n,getTreeDataPath:o,treeData:r=!1,defaultGroupingExpansionDepth:i=0,filterModel:l,sortModel:d,onRowExpansionChange:a,columnLookup:u,filterMode:g="client",sortingMode:m="client"}=e,w=r&&!!o,y=s.useMemo(()=>!r||!o?tu:nu(t,n,o),[t,o,r,n]),{treeNodes:p,rootIds:f,groupingRows:h,syntheticIds:x,rowLookup:b}=y,v=y.issues.join(`
2
+ `);s.useEffect(()=>{process.env.NODE_ENV==="production"||!v||v.split(`
3
+ `).forEach(j=>console.warn(j))},[v]);const E=r&&!o;s.useEffect(()=>{process.env.NODE_ENV==="production"||!E||console.warn("[OpenGridX] treeData is set without getTreeDataPath, so the rows are shown as a flat list. Pass getTreeDataPath={(row) => row.path} to build the tree.")},[E]);const k=s.useMemo(()=>g==="server"?null:Wn(l,u),[g,l,u]),N=s.useMemo(()=>ou(y,k),[y,k]),M=`${r}|${i}`,[S,D]=s.useState(()=>({configKey:M,overrides:new Map})),I=S.configKey===M?S.overrides:Ml,A=s.useCallback(j=>((j?.children?.length??0)>0||(j?.serverChildrenCount??0)>0)&&(i===-1||(j?.depth??0)<i),[i]),C=s.useMemo(()=>{const j=new Set;return w&&p.forEach((H,ie)=>{(I.get(ie)??A(H))&&j.add(ie)}),j},[w,p,I,A]),L=s.useCallback(j=>{const H=!C.has(j);if(D(ie=>{const re=ie.configKey===M?ie.overrides:Ml,ue=new Map(re);return ue.set(j,H),{configKey:M,overrides:ue}}),H&&a){const ie=p.get(j);ie&&a(ie)}},[C,M,p,a]),F=m!=="server"&&!!(d&&d.length>0),_=s.useCallback(j=>{if(!w)return null;const H=j?.labelField,ie=j?.expandAll??!1,{visible:re,visibleChildren:ue}=N,ae=F&&d?d:[],R=(le,V)=>{if(x.has(le))return{value:V.field===H?p.get(le)?.label:void 0};const J=b.get(le),ne=u?.byField.get(V.field),fe=J?Le(J,V.field,ne):void 0,Z=ne?.sortComparator;return{value:fe,type:ne?.type,comparator:Z,params:Z&&J?{id:le,field:V.field,row:J,value:fe}:void 0}},te=[],ce=new Set,W=le=>{const V=le.filter(ne=>re.has(ne)),J=ae.length>0?Ko(V,ae,R):V;for(const ne of J){if(ce.has(ne))continue;const fe=b.get(ne);if(!fe)continue;ce.add(ne),te.push(fe);const Z=ue.get(ne);Z&&Z.length>0&&(ie||C.has(ne))&&W(Z)}};return W(f),te},[w,N,F,d,x,p,b,u,f,C]),z=s.useCallback(j=>C.has(j),[C]),K=s.useCallback(j=>p.get(j),[p]),Q=s.useCallback(j=>{const H=[];let ie=j;for(;ie!==null;){const re=p.get(ie);if(!re)break;H.unshift(re.groupingKey),ie=re.parentId}return H},[p]),G=s.useMemo(()=>{const j=new Map,{visibleChildren:H,descendantCounts:ie}=N;return p.forEach((re,ue)=>{const ae=(re.children?.length??0)===0&&(re.serverChildrenCount??0)>0,R=x.has(ue),te={hasChildren:(H.get(ue)?.length??0)>0||ae,treeDepth:re.depth,descendantCount:ae?void 0:ie.get(ue)??0,isGroupRow:R,isExpanded:C.has(ue)};R&&(te.groupLabel=re.label),j.set(ue,te)}),j},[p,x,N,C]);return s.useMemo(()=>({treeNodes:p,groupingRows:h,toggleExpansion:L,isGroupExpanded:z,getVisibleRows:_,getNode:K,getNodePath:Q,rowMetaMap:G}),[p,h,L,z,_,K,Q,G])}const Al=e=>e===null?"footer":"inline";function Pl(e,t){return Dn(()=>e(t),Al(t),"getAggregationPosition","getAggregationPosition threw; the default position is used")}function iu(e,t,n){const o=`${t}: ${String(n)}`,r=e?.groupingValueFormatter;return r?Dn(()=>r({field:t,value:n}),o,`groupingValueFormatter:${t}`,`groupingValueFormatter for column "${t}" threw; the group is labelled "${t}: value"`):o}const lu=[],su={},Tl=new Map,et="";function au(e){if(typeof e=="string")return e;if(e===null)return`${et}null`;if(e===void 0)return`${et}undefined`;if(e instanceof Date)return`${et}date:${e.getTime()}`;if(typeof e=="object")try{return`${et}object:${JSON.stringify(e)}`}catch{return`${et}object:${String(e)}`}return`${et}${typeof e}:${String(e)}`}const cu=(e,t,n)=>`auto-group-${e}-${t}-${n??"root"}`,du=e=>`${e}${et}footer`,uu=e=>e==="footer"?"f":e===null?"n":"i",fu=e=>e==="f"?"footer":e==="n"?null:"inline";function gu(e){const{rows:t,getRowId:n,columns:o,rowGroupingModel:r=lu,aggregationModel:i=su,defaultGroupingExpansionDepth:l=0,filterModel:d,sortModel:a,getAggregationPosition:u=Al,columnLookup:g,filterMode:m="client",sortingMode:w="client"}=e,y=r.join(et),p=s.useMemo(()=>y===""?[]:y.split(et),[y]),f=JSON.stringify(Object.entries(i)),h=s.useMemo(()=>Object.fromEntries(JSON.parse(f)),[f]),x=Object.keys(h).length>0,b=s.useMemo(()=>{const W=new Map;return(o??[]).forEach(le=>W.set(le.field,le)),W},[o]),v=p.length>0,E=s.useMemo(()=>p.filter(W=>b.get(W)?.groupable!==!1),[p,b]),N=`${E.join(et)}|${l}`,[M,S]=s.useState(()=>({configKey:N,overrides:new Map})),D=M.configKey===N?M.overrides:Tl,I=s.useMemo(()=>{if(!v||m==="server")return null;const W=Wn(d,g);return W?new Set(t.filter(le=>W(le))):null},[v,t,m,d,g]),A=s.useMemo(()=>{const W=new Map,le=[],V=[],J=new Map,ne=new Map,fe=new Map;if(!v)return{treeNodes:W,rootIds:le,groupIds:V,groupRowVariants:J,groupingRows:ne,rowLookup:fe};const Z=($,O,P)=>{if(O>=E.length)return(I?$.filter(Y=>I.has(Y)):$).map(Y=>{const oe=n(Y);return fe.set(oe,Y),W.set(oe,{id:oe,parentId:P,depth:O,groupingKey:"",isExpanded:!1}),oe});const T=E[O],X=b.get(T),B=new Map;for(const q of $){const Y=Le(q,T,X),oe=au(Y);let me=B.get(oe);me||(me={value:Y,rows:[]},B.set(oe,me)),me.rows.push(q)}const ee=[];return B.forEach((q,Y)=>{const oe=I?q.rows.filter(ve=>I.has(ve)):q.rows;if(oe.length===0)return;const me=cu(T,Y,P);ee.push(me),V.push(me);const U=x?Hn(oe,h,b,"useRowGrouping"):{},se={[T]:q.value,...U,id:me},we={[T]:q.value,id:me},pe=x?{...U,id:du(me)}:null;J.set(me,{inline:se,bare:we,footer:pe}),ne.set(me,se),pe&&ne.set(pe.id,pe);const he={id:me,parentId:P,depth:O,groupingKey:String(q.value),groupingField:T,groupingValue:q.value,aggregatedValues:U,isExpanded:!1,children:[],label:iu(X,T,q.value),descendantCount:oe.length};W.set(me,he),he.children=Z(q.rows,O+1,me)}),ee};return le.push(...Z(t,0,null)),{treeNodes:W,rootIds:le,groupIds:V,groupRowVariants:J,groupingRows:ne,rowLookup:fe}},[v,t,I,E,x,h,n,b]),{treeNodes:C,rootIds:L,groupIds:F,groupRowVariants:_,groupingRows:z,rowLookup:K}=A,Q=s.useCallback(W=>!!(W?.children&&W.children.length>0)&&(l===-1||(W?.depth??0)<l),[l]),G=s.useMemo(()=>{const W=new Set;return C.forEach((le,V)=>{!le.children||le.children.length===0||(D.get(V)??Q(le))&&W.add(V)}),W},[C,D,Q]),j=s.useCallback(W=>{S(le=>{const V=le.configKey===N?le.overrides:Tl,J=V.get(W)??Q(C.get(W)),ne=new Map(V);return ne.set(W,!J),{configKey:N,overrides:ne}})},[N,C,Q]),H=s.useCallback(W=>G.has(W),[G]),ie=x?F.map(W=>{const le=C.get(W);return le?uu(Pl(u,{...le,isExpanded:G.has(W)})):"i"}).join(""):"",re=s.useMemo(()=>{const W=new Map;return F.forEach((le,V)=>W.set(le,fu(ie[V]))),W},[F,ie]),ue=x?Pl(u,null):"footer",ae=w!=="server"&&!!(a&&a.length>0),R=s.useCallback(W=>{if(!v)return null;const le=W?.labelField,V=W?.expandAll??!1,J=ae&&a?a:[],ne=(O,P)=>{const T=C.get(O),X=_.get(O);if(T&&X){const oe=T.groupingField??"";if(P.field===oe||P.field===le){const me=g?.byField.get(oe),U=me?.sortComparator;return{value:T.groupingValue,type:me?.type,comparator:U,params:U?{id:O,field:oe,row:X.inline,value:T.groupingValue}:void 0}}return T.aggregatedValues&&Object.prototype.hasOwnProperty.call(T.aggregatedValues,P.field)?{value:T.aggregatedValues[P.field],type:g?.byField.get(P.field)?.type}:{value:void 0}}const B=K.get(O),ee=g?.byField.get(P.field),q=B?Le(B,P.field,ee):void 0,Y=ee?.sortComparator;return{value:q,type:ee?.type,comparator:Y,params:Y&&B?{id:O,field:P.field,row:B,value:q}:void 0}},fe=[],Z=new Set,$=O=>{const P=J.length>0?Ko(O,J,ne):O;for(const T of P){if(Z.has(T))continue;Z.add(T);const X=_.get(T);if(!X){const oe=K.get(T);oe&&fe.push(oe);continue}const B=C.get(T),ee=G.has(T),q=re.has(T)?re.get(T)??null:"inline",Y=q==="inline"||q==="footer"&&!ee;fe.push(Y?X.inline:X.bare),(ee||V)&&B?.children&&($(B.children),ee&&!V&&q==="footer"&&X.footer&&fe.push(X.footer))}};return $(L),fe},[v,ae,a,C,_,K,g,G,re,L]),te=s.useCallback(W=>C.get(W),[C]),ce=s.useMemo(()=>{const W=new Map;return C.forEach((le,V)=>{const J=_.get(V);if(!J){W.set(V,{hasChildren:!1,treeDepth:le.depth,isGroupRow:!1});return}const ne={hasChildren:!0,treeDepth:le.depth,groupingField:le.groupingField,groupingValue:le.groupingValue,groupLabel:le.label,descendantCount:le.descendantCount,isGroupRow:!0,isExpanded:G.has(V)};W.set(V,ne),J.footer&&re.get(V)==="footer"&&W.set(J.footer.id,{...ne,hasChildren:!1,treeDepth:le.depth+1,isExpanded:void 0,isGroupFooter:!0})}),W},[C,_,G,re]);return s.useMemo(()=>({treeNodes:C,groupingRows:z,toggleExpansion:j,isGroupExpanded:H,getVisibleRows:R,getNode:te,rowMetaMap:ce,aggregationPositions:re,rootAggregationPosition:ue}),[C,z,j,H,R,te,ce,re,ue])}const pu=new Map;function hu(e){const{rows:t,getRowId:n,getTreeDataPath:o,isTreeDataRequested:r,isTreeData:i,columns:l,rowGroupingModel:d,isRowGrouping:a,aggregationModel:u,defaultGroupingExpansionDepth:g,filterModel:m,sortModel:w,getAggregationPosition:y,columnLookup:p,filterMode:f,sortingMode:h}=e,x=ru({rows:t,getRowId:n,getTreeDataPath:o,treeData:r,defaultGroupingExpansionDepth:g,filterModel:m,sortModel:w,columnLookup:p,filterMode:f,sortingMode:h}),b=gu({rows:t,getRowId:n,columns:l,rowGroupingModel:d,aggregationModel:u,defaultGroupingExpansionDepth:g,filterModel:m,sortModel:w,getAggregationPosition:y,columnLookup:p,filterMode:f,sortingMode:h}),v=i?x:a?b:null,E=s.useMemo(()=>i?x.rowMetaMap:a?b.rowMetaMap:pu,[i,x.rowMetaMap,a,b.rowMetaMap]);return{treeDataHandlers:x,rowGroupingHandlers:b,activeHierarchyHandlers:v,rowMetaMap:E}}function We(e){try{return{ok:!0,value:e()}}catch(t){return{ok:!1,error:t}}}class Fl extends Error{}function xt(e,t){return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Object.is(e,t)}function Ol(e){return typeof e=="object"&&e!==null&&typeof e.then=="function"}function Dl(e,t){t?t(e):process.env.NODE_ENV!=="production"&&e instanceof Fl&&console.error(e.message)}function $l(e,t){return new Fl(`[OpenGridX] processRowUpdate must return the updated row object (or a Promise of it); it returned ${e===null?"null":typeof e}. ${t}`)}function Gl(e,t,n,o){return n?.valueSetter?n.valueSetter({value:t.value,row:e,field:t.field}):(n?.valueGetter&&process.env.NODE_ENV!=="production"&&!o.has(t.field)&&(o.add(t.field),console.warn(`[OpenGridX] Column "${t.field}" is editable and has a valueGetter but no valueSetter. The edited value was written to row["${t.field}"], which the valueGetter may ignore, so the cell can keep showing the old value. Add a valueSetter that maps the value back onto the row.`)),{...e,[t.field]:t.value})}const qt=Promise.resolve();function mu(e){const[t,n]=s.useState(null),o=s.useRef(null),r=s.useRef(0),i=s.useRef(new Map),l=s.useRef(new Set),d=s.useRef(!1),a=s.useRef(e);s.useLayoutEffect(()=>{a.current=e}),s.useEffect(()=>(d.current=!0,()=>{d.current=!1}),[]);const u=s.useCallback(f=>{o.current=f,n(f)},[]),g=s.useRef(null),m=s.useCallback((f,h)=>{const x=i.current.get(f);if(x)return xt(x.value,h.value)?x.promise:x.promise.then(()=>{const G=o.current;if(!(r.current!==f||!G||xt(G.value,x.value)))return g.current?.(f,G)});const b=()=>r.current===f&&o.current!==null;if(xt(h.value,h.originalValue))return b()&&u(null),qt;const{rows:v,getRowId:E,columns:k,processRowUpdate:N}=a.current,M=v.find(G=>E(G)===h.id);if(!M)return b()&&u(null),qt;const S=G=>Dl(G,a.current.onProcessRowUpdateError),D=k?.find(G=>G.field===h.field),I=G=>{if(typeof G!="object"||G===null){S($l(G,"The edit was not saved and the editor stays open."));return}a.current.onRowChange?.(G,h.id);const{onCommitted:j}=a.current;if(j){const ie=Le(M,h.field,D),re=Le(G,h.field,D);xt(ie,re)||j([{id:h.id,field:h.field,before:ie,after:re}])}const H=o.current;r.current!==f||!H||(xt(H.value,h.value)?u(null):u({...H,originalValue:h.value}))};let A,C;const L=new Promise((G,j)=>{A=G,C=j}),F={value:h.value,promise:L};i.current.set(f,F);const _=()=>{i.current.get(f)===F&&i.current.delete(f)},z=We(()=>{const G=Gl(M,h,D,l.current);return N?N(G,M):G});if(!z.ok)return _(),S(z.error),A(),L;const K=z.value,Q=G=>{_();try{I(G),A()}catch(j){C(j)}};return Ol(K)?Promise.resolve(K).then(Q,G=>{_(),S(G),A()}):Q(K),L},[u]);s.useLayoutEffect(()=>{g.current=m},[m]);const w=s.useCallback(f=>{const h=o.current;if(h){if(h.id===f.id&&h.field===f.field)return;m(r.current,h)}r.current+=1,u({id:f.id,field:f.field,value:f.value,originalValue:f.value})},[m,u]),y=s.useCallback(f=>{const h=o.current;return!h||!d.current||f?.id!==void 0&&f.id!==h.id||f?.field!==void 0&&f.field!==h.field?qt:f?.cancel?(u(null),qt):m(r.current,h)},[m,u]),p=s.useCallback(f=>{const h=o.current;!h||h.id!==f.id||h.field!==f.field||u({...h,value:f.value})},[u]);return s.useMemo(()=>({editingCell:t,startCellEdit:w,stopCellEdit:y,setEditCellValue:p}),[t,w,y,p])}function wu(e){const t=s.useRef(e),n=s.useRef(new Map),o=s.useRef(new Set);s.useLayoutEffect(()=>{t.current=e,n.current.clear()});const r=s.useCallback(a=>{const u=n.current.get(a);return u===void 0?t.current.rowsLookup.get(a):u},[]),i=s.useCallback(a=>{a.size!==0&&(a.forEach((u,g)=>{n.current.set(g,u)}),t.current.replaceRows(a))},[]),l=s.useCallback((a,u)=>{i(new Map([[a,u]]))},[i]),d=s.useCallback((a,u)=>{const{columns:g,processRowUpdate:m}=t.current,w=k=>Dl(k,t.current.onProcessRowUpdateError),y=new Map,p=new Map;g.forEach((k,N)=>{y.set(k.field,N),p.set(k.field,k)});const f=[],h=new Map;for(const k of a){const N=r(k.id);if(N===void 0){f.push({id:k.id,field:k.field,reason:"missing"});continue}const M=p.get(k.field);if(k.expect&&!xt(Le(N,k.field,M),k.expect.value)){f.push({id:k.id,field:k.field,reason:"changed"});continue}let S=h.get(k.id);S||(S={id:k.id,row:N,cells:[]},h.set(k.id,S));const D=y.get(k.field)??Number.MAX_SAFE_INTEGER,I=S.cells.findIndex(C=>C.field===k.field),A={field:k.field,value:k.value,colDef:M,order:D};I===-1?S.cells.push(A):S.cells[I]=A}const x=[],b=[],v=o.current;h.forEach(k=>{const{id:N,row:M}=k,S=k.cells.filter(A=>!xt(Le(M,A.field,A.colDef),A.value)).sort((A,C)=>A.order-C.order);if(k.cells=S,S.length===0)return;const D=We(()=>{let A=M;for(const C of S)A=Gl(A,C,C.colDef,v);return m?m(A,M):A});if(!D.ok){x.push({id:N,ok:!1,error:D.error});return}const I=D.value;Ol(I)?b.push(Promise.resolve(I).then(A=>({id:N,ok:!0,processed:A}),A=>({id:N,ok:!1,error:A}))):x.push({id:N,ok:!0,processed:I})});const E=k=>{const N=new Map;k.forEach(A=>{N.set(A.id,A)});const M=[],S=[],D=[],I=new Map;return h.forEach(A=>{const C=N.get(A.id);if(!C)return;if(!C.ok){S.push({id:A.id,error:C.error}),w(C.error);return}const L=C.processed;if(typeof L!="object"||L===null){const _=$l(L,"The row was not saved.");S.push({id:A.id,error:_}),w(_);return}const F=L;I.set(A.id,F),M.push(A.id);for(const _ of A.cells){const z=Le(A.row,_.field,_.colDef),K=Le(F,_.field,_.colDef);xt(z,K)||D.push({id:A.id,field:_.field,before:z,after:K})}}),i(I),D.length>0&&u!=="undo"&&u!=="redo"&&t.current.onCommitted?.(D,u),{result:{updated:M,failed:S,skipped:f},committed:D}};return b.length===0?Promise.resolve(E(x)):Promise.all(b).then(k=>E([...x,...k]))},[r,i]);return s.useMemo(()=>({applyEdits:d,getRow:r,storeRow:l}),[d,r,l])}const dt={ok:!1},$e=e=>({ok:!0,value:e});function bu(e){const t=[];if(e==="")return t;let n=[],o="",r=0;const i=e.length;let l=!0;for(;r<i;){const d=e[r];if(l&&d==='"'){let a=r+1,u="",g=!1;for(;a<i;){const m=e[a];if(m==='"'){if(e[a+1]==='"'){u+='"',a+=2;continue}g=!0,a+=1;break}u+=m,a+=1}if(!g){o+=d,r+=1,l=!1;continue}o+=u,r=a,l=!1;continue}l=!1,d===" "?(n.push(o),o="",l=!0,r+=1):d===`
4
4
  `||d==="\r"?(n.push(o),t.push(n),n=[],o="",l=!0,r+=d==="\r"&&e[r+1]===`
5
- `?2:1):(o+=d,r+=1)}return(!l||n.length>0||o!=="")&&(n.push(o),t.push(n)),t}const wd=/^\d+(?:\.\d*)?(?:e[+-]?\d+)?$/i,xd=/^\.\d+(?:e[+-]?\d+)?$/i,bd=/^\d{1,3}(?:,\d{3})+(?:\.\d*)?$/,Cd=/[\p{Sc}\s]/gu;function yd(e){let t=e.replace(Cd,"");if(t==="")return e.trim()===""?Fe(null):et;let n=!1;t.startsWith("(")&&t.endsWith(")")&&(n=!0,t=t.slice(1,-1)),(t.startsWith("-")||t.startsWith("+")||t.startsWith("−"))&&(t[0]!=="+"&&(n=!n),t=t.slice(1));let o=!1;if(t.endsWith("%")&&(o=!0,t=t.slice(0,-1)),bd.test(t))t=t.split(",").join("");else if(!wd.test(t)&&!xd.test(t))return et;let r=Number(t);return Number.isFinite(r)?(o&&(r/=100),n&&(r=-r),Fe(r)):et}const vd=/^(\d{4}-\d{2}-\d{2})/,ol=e=>String(e).padStart(2,"0"),Sd=e=>`${e.getFullYear()}-${ol(e.getMonth()+1)}-${ol(e.getDate())}`;function _d(e,t){const n=e.trim();if(n==="")return Fe(null);const o=sn(n);if(!o)return et;if(typeof t=="number")return Fe(o.getTime());if(typeof t=="string"){const r=Sd(o);return Fe(vd.test(t)&&t.length>10?r+t.slice(10):r)}return Fe(o)}const kd=new Set(["true","yes","1"]),Ed=new Set(["false","no","0"]);function Md(e,t){const n=e.trim().toLowerCase();return n===""?Fe(null):t?.trueLabel!==void 0&&n===t.trueLabel.trim().toLowerCase()?Fe(!0):t?.falseLabel!==void 0&&n===t.falseLabel.trim().toLowerCase()?Fe(!1):kd.has(n)?Fe(!0):Ed.has(n)?Fe(!1):et}function Nd(e,t){const n=e.trim();if(n==="")return Fe(null);if(!t||t.length===0)return et;const o=n.toLowerCase();for(const r of t){const i=typeof r=="object"?r.value:r;if(String(i).toLowerCase()===o)return Fe(i)}for(const r of t)if(typeof r=="object"&&r.label.toLowerCase()===o)return Fe(r.value);return et}function Id(e,t,n){switch(t?.type){case"number":return yd(e);case"date":return _d(e,n?.current);case"boolean":return Md(e,n?.booleanLabels);case"singleSelect":return Nd(e,t.valueOptions);default:return Fe(e)}}function Pd(e,t,n,o){const{valueParser:r}=t;if(!r)return Id(e,t,o);let i;try{i=r(e,{row:n,field:t.field,colDef:t})}catch{return et}return i===void 0?et:Fe(i)}function rl(e,t,n){const o=e.map(t),r=new Map;o.forEach((a,f)=>{r.has(a)||r.set(a,f)});const i=n.filter(a=>je(a.field)),l=new Map;i.forEach((a,f)=>{l.set(a.field,f)});const d=n.filter(a=>Qe(a.field)).length;return{rows:e,rowIds:o,rowIndexById:r,columns:i,colIndexByField:l,dataColumnOffset:d}}function il(e,t,n,o,r){const i=e.rowIds[o],l=e.columns[r];if(!l||Ue(i,t.rowMetaMap))return!1;const d=t.getSpanOrigin?.(i,l.field);return d&&(d.rowId!==i||d.field!==l.field)?!1:Co({row:n,field:l.field,value:ke(n,l.field,l),colDef:l,rowIndex:o,colIndex:e.dataColumnOffset+r,rowMeta:t.rowMetaMap?.get(i)},t.isCellEditable)}function Ld(e,t){let n=1/0,o=-1/0,r=1/0,i=-1/0;for(const l of t){const d=e.rowIndexById.get(l.id),a=e.colIndexByField.get(l.field);d===void 0||a===void 0||(d<n&&(n=d),d>o&&(o=d),a<r&&(r=a),a>i&&(i=a))}return n===1/0?null:{top:n,bottom:o,left:r,right:i}}function ll(e,t){return{anchor:{id:e.rowIds[t.top],field:e.columns[t.left].field},head:{id:e.rowIds[t.bottom],field:e.columns[t.right].field}}}function Td(e){const t=e?.type;return t===void 0||t==="string"||t==="image"}const sl=1e4,Vn=()=>({updated:[],failed:[],skipped:[]});function Fd(e){process.env.NODE_ENV!=="production"&&console.warn(`[OpenGridX] Pasting ${e} cells. Pastes above ${sl} cells can be slow; consider importing the data instead.`)}function Ad(e){const{apiRef:t,containerRef:n,selection:o,disableClipboardPaste:r,disableRangeClear:i}=e,l=s.useRef(e);s.useLayoutEffect(()=>{l.current=e});const d=s.useCallback(()=>{const{allRenderableRows:g,getRowId:u,navigationColumns:h}=l.current;return rl(g,u,h)},[]),a=s.useCallback(()=>{const{selection:g}=l.current;return g.enabled?g.getCurrentRange().resolved:null},[]),f=s.useCallback(g=>{const u=a();if(u&&g.rowIds[u.top]!==void 0&&g.columns[u.left])return{id:g.rowIds[u.top],field:g.columns[u.left].field};const h=l.current.focusedCell;return h&&h.id!==null&&je(h.field)?{id:h.id,field:h.field}:null},[a]),p=s.useCallback(async(g,u,h)=>{const x=d(),m=u??f(x);let y=g;const{onBeforeClipboardPaste:E}=l.current;if(E){const le=pn(()=>E({text:y,anchor:m}));if(!le.ok)return ln("onBeforeClipboardPaste","onBeforeClipboardPaste threw; the paste was cancelled",le.error),Vn();if(le.value===!1)return Vn();typeof le.value=="string"&&(y=le.value)}if(!m)return Vn();const v=md(y),M=x.rowIndexById.get(m.id),N=x.colIndexByField.get(m.field);if(v.length===0||M===void 0||N===void 0)return Vn();const P=x.rowIds.length-1,z=x.columns.length-1,F=u?null:a(),$=F&&vt(F)>1?F:null,_=v.length===1&&v[0].length===1,T=v.reduce((le,ue)=>Math.max(le,ue.length),0);let O;_&&$?O=$:O={top:M,left:N,bottom:Math.min(M+v.length-1,P,$?$.bottom:P),right:Math.min(N+T-1,z,$?$.right:z)};const S=vt(O);S>sl&&Fd(S);const{batchEdit:j,isCellEditable:q,rowMetaMap:Z,getSpanOrigin:W}=l.current,U={isCellEditable:q,rowMetaMap:Z,getSpanOrigin:W},Q=[],ie=[];for(let le=O.top;le<=O.bottom;le++){const ue=x.rowIds[le],te=j.getRow(ue)??x.rows[le],ae=_?v[0]:v[le-O.top];for(let Y=O.left;Y<=O.right;Y++){const re=_?v[0][0]:ae?.[Y-O.left];if(re===void 0)continue;const K=x.columns[Y];if(!il(x,U,te,le,Y)){ie.push({id:ue,field:K.field,reason:"notEditable"});continue}const J=Pd(re,K,te,{current:ke(te,K.field,K)});if(!J.ok){ie.push({id:ue,field:K.field,reason:"invalidValue"});continue}Q.push({id:ue,field:K.field,value:J.value})}}if(l.current.selection.enabled){const{anchor:le,head:ue}=ll(x,O);l.current.selection.setModel([{anchor:le,head:ue}],h?"keyboard":"api")}const oe=await j.applyEdits(Q,"paste"),ge={updated:oe.result.updated,failed:oe.result.failed,skipped:[...ie,...oe.result.skipped]};return l.current.onClipboardPaste?.({...ge,text:y}),ge},[d,f,a]),w=s.useCallback(()=>{const g=a();if(!g||vt(g)<=1)return!1;const u=d(),{batchEdit:h,isCellEditable:x,rowMetaMap:m,getSpanOrigin:y}=l.current,E={isCellEditable:x,rowMetaMap:m,getSpanOrigin:y},v=[];for(let M=g.top;M<=g.bottom;M++){const N=u.rowIds[M];if(N===void 0)continue;const P=h.getRow(N)??u.rows[M];for(let z=g.left;z<=g.right;z++){const F=u.columns[z];!F||!il(u,E,P,M,z)||v.push({id:N,field:F.field,value:Td(F)?"":null})}}return h.applyEdits(v,"clear"),!0},[a,d]),b=o.enabled&&!r,C=o.enabled&&!i;s.useEffect(()=>{const g=n.current;if(!g||!b&&!C)return;const u=M=>{const N=l.current.viewportRef.current;if(!N||M.defaultPrevented||l.current.isEditing)return!1;const P=Ao(M.target,N);return P==="grid"||P==="control"};let h=null;const x=()=>{if(!h)return;const{textarea:M,restore:N,timer:P}=h;h=null,window.clearTimeout(P);const z=document.activeElement===M;M.remove(),z&&N&&N.isConnected&&N.focus({preventScroll:!0})},m=()=>{x();const M=document.createElement("textarea");M.setAttribute("aria-hidden","true"),M.tabIndex=-1,M.className="ogx__paste-capture",M.style.cssText="position:fixed;top:0;left:-10000px;width:1px;height:1px;opacity:0;",g.appendChild(M);const N=document.activeElement instanceof HTMLElement?document.activeElement:null;h={textarea:M,restore:N,timer:window.setTimeout(x,250)},M.focus({preventScroll:!0})},y=M=>h!==null&&M.target===h.textarea,E=M=>{if(y(M)){const P=M.clipboardData?M.clipboardData.getData("text/plain"):"";M.preventDefault(),x(),P!==""&&p(P,void 0,!0);return}if(!b||!u(M)||!l.current.navigationColumns.some(P=>P.editable))return;const N=M.clipboardData?M.clipboardData.getData("text/plain"):"";N!==""&&(M.preventDefault(),p(N,void 0,!0))},v=M=>{if((M.ctrlKey||M.metaKey)&&!M.altKey&&!M.shiftKey&&(M.key==="v"||M.key==="V"||M.code==="KeyV")){b&&u(M)&&l.current.navigationColumns.some(N=>N.editable)&&m();return}!C||M.key!=="Delete"&&M.key!=="Backspace"||M.ctrlKey||M.metaKey||M.altKey||M.shiftKey||u(M)&&w()&&M.preventDefault()};return g.addEventListener("paste",E),g.addEventListener("keydown",v),()=>{x(),g.removeEventListener("paste",E),g.removeEventListener("keydown",v)}},[n,b,C,p,w]),s.useLayoutEffect(()=>{t.current.pasteText=(g,u)=>p(g,u,!1)},[t,p])}const Dd=100;function Od(){const e=s.useRef(null),t=s.useCallback((o,r)=>{const i=e.current;i&&i(o,r)},[]),n=s.useCallback(o=>{e.current=o},[]);return s.useMemo(()=>({emit:t,setListener:n}),[t,n])}const al=()=>({updated:[],failed:[],skipped:[]});function $d(e){if(e.altKey||!(e.ctrlKey||e.metaKey))return null;const t=(e.key??"").toLowerCase(),n=/^[a-z]$/.test(t),o=t==="z"||!n&&e.code==="KeyZ",r=t==="y"||!n&&e.code==="KeyY";return o?e.shiftKey?"redo":"undo":r&&e.ctrlKey&&!e.shiftKey?"redo":null}function Gd(e){const{apiRef:t,enabled:n,channel:o,containerRef:r}=e,i=s.useRef(e);s.useLayoutEffect(()=>{i.current=e});const l=s.useRef([]),d=s.useRef([]),a=s.useRef({canUndo:!1,canRedo:!1,size:0}),f=s.useRef(Promise.resolve()),p=s.useCallback(()=>{const x={canUndo:l.current.length>0,canRedo:d.current.length>0,size:l.current.length},m=a.current;m.canUndo===x.canUndo&&m.canRedo===x.canRedo&&m.size===x.size||(a.current=x,i.current.onHistoryChange?.(x))},[]),w=s.useCallback(x=>{if(!i.current.enabled||x.length===0)return;const m=l.current;m.push(x);const y=Math.max(1,i.current.limit);m.length>y&&m.splice(0,m.length-y),d.current=[],p()},[p]);s.useLayoutEffect(()=>(o.setListener(n?w:null),()=>o.setListener(null)),[o,n,w]);const b=s.useCallback(()=>{l.current=[],d.current=[],p()},[p]);s.useEffect(()=>{n||b()},[n,b]);const C=s.useCallback(x=>{const m=i.current,y=rl(m.allRenderableRows,m.getRowId,m.navigationColumns),E=Ld(y,x);if(!E)return;const{anchor:v,head:M}=ll(y,E);m.selection.enabled?m.selection.setModel([{anchor:v,head:M}],"keyboard"):m.setFocusedCell({id:v.id,field:v.field,rowIndex:E.top});const N=m.viewportRef.current;N&&(Tn(N,E.top-m.pinnedTopRowCount,m.layout.cumulativeHeights,m.layout.pinnedBottomHeight,m.rowHeight),bo(N,m.layout.unpinnedColsWithWidth.findIndex(P=>P.field===v.field),m.layout))},[]),g=s.useCallback(x=>{const m=async()=>{if(!i.current.enabled)return al();const E=x==="undo"?l:d,v=x==="undo"?d:l,M=E.current.pop();if(!M)return al();p();const N=M.map(F=>x==="undo"?{id:F.id,field:F.field,value:F.before,expect:{value:F.after}}:{id:F.id,field:F.field,value:F.after,expect:{value:F.before}}),P=await i.current.batchEdit.applyEdits(N,x);P.committed.length>0&&v.current.push(x==="undo"?P.committed.map(F=>({id:F.id,field:F.field,before:F.after,after:F.before})):P.committed);const z=new Set(P.result.failed.map(F=>F.id));if(z.size>0){const F=M.filter($=>z.has($.id));F.length>0&&E.current.push(F)}return p(),P.committed.length>0&&C(P.committed),P.result},y=f.current.then(m,m);return f.current=y,y},[p,C]),u=s.useCallback(()=>g("undo"),[g]),h=s.useCallback(()=>g("redo"),[g]);s.useEffect(()=>{const x=r.current;if(!x||!n)return;const m=y=>{if(y.defaultPrevented)return;const E=$d(y);if(!E)return;const v=i.current.viewportRef.current;if(!v||i.current.isEditing)return;const M=Ao(y.target,v);M!=="grid"&&M!=="control"||(y.preventDefault(),E==="undo"?u():h())};return x.addEventListener("keydown",m),()=>x.removeEventListener("keydown",m)},[r,n,u,h]),s.useLayoutEffect(()=>{const x=t.current;x.undo=u,x.redo=h,x.canUndo=()=>i.current.enabled&&l.current.length>0,x.canRedo=()=>i.current.enabled&&d.current.length>0,x.clearHistory=b},[t,u,h,b])}const Wd=e=>e.id,Bd={hasColSpan:!1,hasRowSpan:!1,colspanMap:new Map,rowSpanningCaches:{spannedCells:{},hiddenCells:{},hiddenCellOriginMap:{}},getSpanOrigin:()=>null,getUnpinnedColSpanRanges:()=>{},getCenterRowSpanStart:e=>e},cl="\0",dl="";function ul(e){if(typeof e!="number"||Number.isNaN(e))return 1;if(e===1/0)return Number.MAX_SAFE_INTEGER;if(!Number.isFinite(e))return 1;const t=Math.floor(e);return t<1?1:t}function Hd(e){return e.map(t=>t.field).join(cl)}function zd(e){const{pinnedTopRows:t,centerRows:n,pinnedBottomRows:o,columns:r,leftPinnedColumns:i,unpinnedColumns:l,rightPinnedColumns:d,expandedRowIds:a,rowMetaMap:f,getRowId:p=Wd}=e,w=s.useMemo(()=>r.some(x=>x.colSpan!==void 0&&x.colSpan!==null),[r]),b=s.useMemo(()=>r.some(x=>x.rowSpan!==void 0&&x.rowSpan!==null),[r]),C=w||b,g=C?[i,l,d].map(Hd).join(dl):"",u=s.useMemo(()=>{if(!g)return{columns:[],leftCount:0,unpinnedCount:0};const x=new Map(r.map(v=>[v.field,v])),m=g.split(dl).map(v=>v?v.split(cl):[]),y=[];let E=0;for(const v of m){E+=v.length;for(const M of v){const N=x.get(M)??{field:M};y.push({colDef:N,field:M,sectionEnd:E,hasColSpan:N.colSpan!==void 0&&N.colSpan!==null,hasRowSpan:N.rowSpan!==void 0&&N.rowSpan!==null})}}return{columns:y,leftCount:m[0].length,unpinnedCount:m[1].length}},[g,r]),h=s.useMemo(()=>{if(!C||u.columns.length===0)return null;const x={colspanMap:new Map,rowSpanningCaches:{spannedCells:{},hiddenCells:{},hiddenCellOriginMap:{}},hiddenOriginFields:new Map,unpinnedRanges:new Map,centerRowSpanStart:new Map},y={spanColumns:u,expandedRowIds:a,rowMetaMap:f,getRowId:p,warned:new Set,out:x};return Uo(t,0,!1,y),Uo(n,t.length,!0,y),Uo(o,t.length+n.length,!1,y),x},[C,u,t,n,o,a,f,p]);return s.useMemo(()=>{if(!h)return Bd;const{colspanMap:x,rowSpanningCaches:m,hiddenOriginFields:y,unpinnedRanges:E,centerRowSpanStart:v}=h,M=u.columns;return{hasColSpan:w,hasRowSpan:b,colspanMap:x,rowSpanningCaches:m,getSpanOrigin:(N,P)=>{const z=x.get(N)?.[P];if(z?.spannedByColSpan)return{rowId:N,field:M[z.leftVisibleCellIndex].field};const F=m.hiddenCellOriginMap[N]?.[P];return F===void 0?null:{rowId:F,field:y.get(N)?.[P]??P}},getUnpinnedColSpanRanges:N=>E.get(N),getCenterRowSpanStart:N=>v.get(N)??N}},[h,w,b,u])}function Uo(e,t,n,o){const{spanColumns:r,expandedRowIds:i,rowMetaMap:l,getRowId:d,warned:a,out:f}=o,{columns:p,leftCount:w,unpinnedCount:b}=r,C=p.length,{colspanMap:g,rowSpanningCaches:u,hiddenOriginFields:h,unpinnedRanges:x,centerRowSpanStart:m}=f,y=new Int32Array(C),E=new Array(C),v=new Array(C),M=new Int32Array(C);let N=0;const P=[];p.forEach(($,_)=>{($.hasColSpan||$.hasRowSpan)&&P.push(_)});const z=($,_,T)=>{const O=p[T].field;if(Vt(u.hiddenCells,$,O,!0),Vt(u.hiddenCellOriginMap,$,O,E[T]),v[T]!==O&&Vt(h,$,O,v[T]),n){const S=m.get(_);(S===void 0||M[T]<S)&&m.set(_,M[T])}},F=($,_,T)=>{const O=p[T],S=d($),j=Vd($,S,O.colDef,t+_,T,l,a);let q=1;if(O.hasColSpan){const W=Math.min(fl(O.colDef.colSpan,j,"colSpan",O.field,a),O.sectionEnd-T);for(;q<W&&y[T+q]<=_;)q++}let Z=1;if(O.hasRowSpan){Z=Math.min(fl(O.colDef.rowSpan,j,"rowSpan",O.field,a),e.length-_);for(let W=1;W<Z;W++)if(Ue(d(e[_+W]),l)){Z=W;break}if(Z>1&&i&&i.size>0){for(let W=0;W<Z-1;W++)if(i.has(d(e[_+W]))){Z=W+1;break}}}if(q>1){Vt(g,S,O.field,{spannedByColSpan:!1,cellProps:{colSpan:q}});for(let W=1;W<q;W++){const U=p[T+W];Vt(g,S,U.field,{spannedByColSpan:!0,leftVisibleCellIndex:T,rightVisibleCellIndex:T+q-1})}if(T>=w&&T<w+b){let W=x.get(S);W||(W=[],x.set(S,W)),W.push(T-w,T+q-1-w)}}if(Z>1){Vt(u.spannedCells,S,O.field,Z);for(let W=T;W<T+q;W++)y[W]=_+Z,E[W]=S,v[W]=O.field,M[W]=_;_+Z>N&&(N=_+Z)}return q};for(let $=0;$<e.length;$++){const _=e[$];if(!_||_._isSkeleton||Ue(d(_),l))continue;if(N<=$){let O=0;for(const S of P)S>=O&&(O=S+F(_,$,S));continue}let T=0;for(;T<C;)y[T]>$?(z(d(_),$,T),T++):p[T].hasColSpan||p[T].hasRowSpan?T+=F(_,$,T):T++}}function Vd(e,t,n,o,r,i,l){const d=e[n.field];let a=d;if(n.valueGetter)try{a=n.valueGetter({row:e,field:n.field,value:d})}catch(f){gl(l,`valueGetter:${n.field}`,`valueGetter for column "${n.field}" threw while computing its span`,f),a=void 0}return{row:e,value:a,field:n.field,colDef:n,rowIndex:o,colIndex:r,rowMeta:i?.get(t)}}function fl(e,t,n,o,r){if(typeof e=="number")return ul(e);if(typeof e!="function")return 1;try{return ul(e(t))}catch(i){return gl(r,`${n}:${o}`,`${n} for column "${o}" threw; the cell is rendered without a span`,i),1}}function gl(e,t,n,o){process.env.NODE_ENV==="production"||e.has(t)||(e.add(t),console.warn(`[OpenGridX] ${n}.`,o))}function Vt(e,t,n,o){if(e instanceof Map){let i=e.get(t);i||(i={},e.set(t,i)),i[n]=o;return}let r=e[t];r||(r={},e[t]=r),r[n]=o}function Kd(e){const{spanning:t,renderContext:n,offsetTop:o,cumulativeHeights:r}=e;return s.useMemo(()=>{if(!t.hasRowSpan)return{renderContext:n,offsetTop:o};let i=Math.max(0,n.firstRowIndex);for(let l=t.getCenterRowSpanStart(i);l<i;l=t.getCenterRowSpanStart(i))i=l;return i>=n.firstRowIndex?{renderContext:n,offsetTop:o}:{renderContext:{...n,firstRowIndex:i},offsetTop:i>0?r[i-1]??0:0}},[t,n,o,r])}function Ud(e){const{spanning:t,firstColumnIndex:n,lastColumnIndex:o,virtualColumns:r,layout:i,rows:l}=e;return s.useMemo(()=>{if(!t.hasColSpan||i.unpinnedColsWithWidth.length===0)return r;let d=n,a=o,f=!0;for(;f;){f=!1;for(const{row:x,id:m}of l){const y=t.getUnpinnedColSpanRanges(m??x.id);if(y)for(let E=0;E<y.length;E+=2){const v=y[E],M=y[E+1];M<d||v>a||(v<d&&(d=v,f=!0),M>a&&(a=M,f=!0))}}}if(d===n&&a===o)return r;const{leftPinnedCols:p,unpinnedColsWithWidth:w,rightPinnedCols:b,unpinnedAccWidths:C,unpinnedTotalWidth:g}=i,u=d>0?C[d-1]:0,h=g-C[a];return[...p,...u>0?[{field:"__spacer_left__",width:u,isSpacer:!0}]:[],...w.slice(d,a+1),...h>0?[{field:"__spacer_right__",width:h,isSpacer:!0}]:[],...b]},[t,n,o,r,i,l])}function jd(e,t){const{draggedColumn:n,onDragOver:o,onDrop:r,onDragEnd:i}=t,l=s.useMemo(()=>{if(!e||e.length===0)return null;const d=a=>n===null||Vo(e,n,a);return{onDragOver:o&&(a=>d(a)?o(a):()=>{}),onDrop:r&&(a=>d(a)?r(a):f=>{f.preventDefault(),i?.()})}},[e,n,o,r,i]);return l?{...t,...l}:t}const Rd=300,pl=e=>e.id;function qd(e,t){return e==="infinite"?"infinite":e==="server"?t?"all":"page":"all"}function hl(e,t){const n=new Set,o=[];return e.forEach(r=>{const i=t(r);n.has(i)||(n.add(i),o.push({id:i,row:r}))}),o}function ml(e,t,n){const o=new Set(e.map(n)),r=t.filter(i=>!o.has(i.id)).map(i=>i.row);return r.length===0?e:[...e,...r]}function Xd(e){const{dataSource:t,sortModel:n,filterModel:o,paginationModel:r,paginationMode:i,sortingMode:l,filterMode:d,aggregationModel:a,rowGroupingActive:f=!1}=e,p=qd(i,f),w=!!t&&i==="server"&&f,b=s.useRef(!1);s.useEffect(()=>{process.env.NODE_ENV==="production"||b.current||!w||(b.current=!0,console.warn("[OpenGridX] `rowGroupingModel` turns pagination off, so the dataSource with `paginationMode: 'server'` is asked for every row (startRow 0, endRow Number.MAX_SAFE_INTEGER) instead of one page. See docs/features/data-source.md."))},[w]);const C=t?.getRows,g=Fi({dataSource:t,paginationMode:i,sortingMode:l,filterMode:d}),u=JSON.stringify([p,p!=="all"||l==="server"?n:null,p!=="all"||d==="server"?o:null,g?a??null:null,p==="all"?null:r.pageSize]),h=p==="all"?0:r.page,x=p==="all"?0:r.pageSize,m=s.useRef({params:e,kind:p});s.useLayoutEffect(()=>{m.current={params:e,kind:p}});const y=s.useRef(0),E=s.useRef(0),v=s.useRef(null),M=s.useRef({page:0,loadedEnd:0,inFlightEnd:null}),N=s.useRef(null),P=s.useRef(!1),z=s.useRef(0),F=s.useRef(!1),$=s.useRef(new Set),_=s.useCallback(()=>{const U=P.current||z.current>0;U!==F.current&&(F.current=U,m.current.params.setDataSourceLoading(U))},[]),T=s.useCallback(()=>{N.current!==null&&(clearTimeout(N.current),N.current=null)},[]),O=s.useCallback(()=>{y.current++,M.current.inFlightEnd=null,P.current=!1},[]),S=s.useCallback(()=>{E.current++,$.current.clear(),z.current=0},[]),j=s.useCallback(async()=>{const{params:U,kind:Q}=m.current,ie=U.dataSource;if(!ie)return!1;const oe=M.current,ge=U.paginationModel.pageSize;let le,ue;if(Q==="infinite"){if(oe.inFlightEnd!==null)return!1;if(le=oe.loadedEnd,ue=(oe.page+1)*ge,ue<=le)return P.current=!1,_(),!1;oe.inFlightEnd=ue}else Q==="page"?(le=U.paginationModel.page*ge,ue=le+ge):(le=0,ue=Ai);const te=++y.current;P.current=!0,_(),U.setDataSourceError(null);let ae;try{ae=await ie.getRows({startRow:le,endRow:ue,sortModel:U.sortModel,filterModel:U.filterModel,groupKeys:[],aggregationModel:U.aggregationModel})}catch(Y){return te!==y.current||(oe.inFlightEnd=null,P.current=!1,m.current.params.setDataSourceError(Y),console.error("Data Source Error:",Y),_()),!1}if(te!==y.current)return!1;try{const{params:Y}=m.current,re=Y.getRowId??pl,K=hl(ae.rows,re);if(Q==="infinite"&&le>0?Y.setRows(J=>ml(J,K,re),!0):(Y.setRows(K.map(J=>J.row),!0),S()),ae.aggregationResults&&Y.onAggregationResults?.(ae.aggregationResults),ae.rowCount!==void 0&&Y.setRowCount(ae.rowCount),Q==="infinite"&&(oe.inFlightEnd=null,oe.loadedEnd=le+ae.rows.length,ae.rows.length>=ue-le&&(oe.page+1)*ge>ue))return!0}catch(Y){return oe.inFlightEnd=null,P.current=!1,m.current.params.setDataSourceError(Y),console.error("Data Source Error:",Y),_(),!1}return P.current=!1,_(),!1},[_,S]),q=s.useCallback(async()=>{for(;await j(););},[j]);s.useLayoutEffect(()=>{if(!C){v.current&&(v.current=null,T(),O(),S(),m.current.params.setDataSourceError(null),_());return}const U=v.current,Q=M.current;if(!U||U.key!==u||U.getRows!==C){v.current={key:u,getRows:C},O(),S();const ie=p==="infinite"&&U!==null&&h!==0;if(Q.page=ie?0:h,Q.loadedEnd=0,ie){const{params:oe}=m.current;oe.onPaginationModelChange?.({...oe.paginationModel,page:0})}}else p==="infinite"?(h<Q.page&&(O(),Q.loadedEnd=0),Q.page=h):O();if(p==="infinite"){const ie=Q.inFlightEnd!==null;if(ie||(Q.page+1)*x<=Q.loadedEnd){P.current=ie,_();return}}return P.current=!0,_(),N.current=setTimeout(()=>{N.current=null,q()},Rd),T},[C,u,p,h,x,T,O,S,_,q]),s.useEffect(()=>()=>{O(),S()},[O,S]);const Z=s.useCallback(()=>(T(),q()),[T,q]),W=s.useCallback(async(U,Q,ie)=>{const{params:oe}=m.current,ge=oe.dataSource;if(!ge)return;const le=JSON.stringify(Q),ue=$.current;if(ue.has(le))return;const te=E.current;ue.add(le),z.current++,_();try{const ae=await ge.getRows({startRow:0,endRow:Ai,sortModel:oe.sortModel,filterModel:oe.filterModel,groupKeys:Q,aggregationModel:oe.aggregationModel});if(te!==E.current)return;if(ae.rows.length>0){const{params:Y}=m.current,re=Y.getRowId??pl,K=hl(ae.rows,re);Y.setRows(J=>ml(J,K,re),!0)}}catch(ae){if(te!==E.current)return;ue.delete(le),console.error("Failed to fetch children:",ae),ie?.(ae)}finally{te===E.current&&(z.current--,_())}},[_]);return{fetchRows:Z,fetchChildren:W}}function Yd(e){return(e.serverChildrenCount??0)>0&&(e.children?.length??0)===0}function Jd({enabled:e,treeNodes:t,isGroupExpanded:n,getNodePath:o,toggleExpansion:r,fetchChildren:i}){const l=s.useRef({isGroupExpanded:n,toggleExpansion:r});s.useLayoutEffect(()=>{l.current={isGroupExpanded:n,toggleExpansion:r}}),s.useEffect(()=>{e&&t.forEach((d,a)=>{!Yd(d)||!n(a)||i(a,o(a),()=>{const{isGroupExpanded:f,toggleExpansion:p}=l.current;f(a)&&p(a)})})},[e,t,n,o,i])}const wl={};function Zd(e){const t=JSON.stringify(e),[n,o]=s.useState(null),r=s.useCallback(i=>o({modelKey:t,results:i}),[t]);return[n&&n.modelKey===t?n.results:null,r]}function xl(e){const{rows:t,columns:n,aggregationModel:o,isServerSide:r,dataSource:i,filterModel:l,sortModel:d,serverAggregationResults:a}=e,f=Object.keys(o).length>0,p=s.useMemo(()=>{const v=new Map;return(n??[]).forEach(M=>v.set(M.field,M)),v},[n]),w=s.useMemo(()=>r||!f?wl:Fn(t,o,p,"useAggregation"),[t,p,o,r,f]),b=JSON.stringify([o,l??null,d??[]]),C=r&&f&&!!i?.getAggregations&&!a,g=s.useRef({aggregationModel:o,filterModel:l,sortModel:d});s.useEffect(()=>{g.current={aggregationModel:o,filterModel:l,sortModel:d}});const[u,h]=s.useState(null);s.useEffect(()=>{const v=i?.getAggregations;if(!C||!v)return;let M=!1;const N=g.current,P={sortModel:N.sortModel??[],filterModel:N.filterModel??{items:[]},groupKeys:[],aggregationModel:N.aggregationModel};let z;try{z=Promise.resolve(v(P))}catch(F){z=Promise.reject(F)}return z.then(F=>{M||h({key:b,result:F,error:null})},F=>{M||(console.error("[useAggregation] Server aggregation error:",F),h({key:b,result:null,error:F}))}),()=>{M=!0}},[C,i,b]);const x=u&&u.key===b?u:null,m=C&&x===null,y=C?x?.error??null:null;return{aggregationResult:s.useMemo(()=>r?a&&Object.keys(a).length>0?a:x?.result??wl:w,[r,w,a,x]),isLoading:m,error:y}}const Qd={items:[]},eu=[];function tu(e){const{rows:t,columns:n,pivotMode:o,pivotModel:r,filterModel:i,sortModel:l,hasDataSource:d,hierarchyRequested:a}=e,f=o&&!d,p=s.useMemo(()=>new Set(n.map(x=>x.field)),[n]),w=s.useMemo(()=>Po(n),[n]),b=s.useMemo(()=>da(i,p),[i,p]),C=s.useMemo(()=>f?ko(t,b.source,w):t,[f,t,b.source,w]),g=s.useMemo(()=>f?ii(C,n,r,{outputFilterModel:b.output,sortModel:l}):To,[f,C,n,r,b.output,l]),u=f&&g.isValid,h=s.useRef({dataSource:!1,hierarchy:!1});return s.useEffect(()=>{process.env.NODE_ENV!=="production"&&(o&&d&&!h.current.dataSource&&(h.current.dataSource=!0,console.warn("[OpenGridX] `pivotMode` is ignored when a `dataSource` is set: pivoting is client-side and the grid only holds the rows of one server page. Pivot on the server, or pass the full dataset as `rows`.")),u&&a&&!h.current.hierarchy&&(h.current.hierarchy=!0,console.warn("[OpenGridX] `treeData` and `rowGroupingModel` are turned off while `pivotMode` is active: the pivot rows are already grouped by the pivot row fields.")))},[o,d,u,a]),{isActive:u,rows:u?g.pivotRows:t,columns:u?g.pivotColumns:n,pipelineFilterModel:u?Qd:i,pipelineSortModel:u?eu:l}}const hn=({variant:e="text",size:t="medium",color:n="default",disabled:o=!1,className:r="",type:i="button",children:l,...d})=>{const a=["ogx-button",`ogx-button--${e}`,`ogx-button--${t}`,`ogx-button--${n}`,o&&"ogx-button--disabled",r].filter(Boolean).join(" ");return c.jsx("button",{type:i,className:a,disabled:o,...d,children:l})};function jo(e){const t=s.useId(),{page:n,pageSize:o,rowCount:r,onPageChange:i,onPageSizeChange:l,pageSizeOptions:d=[10,25,50,100],showFirstButton:a=!0,showLastButton:f=!0,localeText:p}=e,w=Wn(o),b=$o(r,w),C=Ci(n,b),g=d.includes(w)?d:[...d,w].sort((_,T)=>_-T),u=C*w,h=Math.min(u+w,r),x=r===0?0:`${u+1}–${h}`,m=p?.paginationRowsPerPage??"Rows per page:",y=p?.paginationOf?p.paginationOf(r===0?0:u+1,h,r):`${x} of ${r}`,E=p?.paginationPage?p.paginationPage(C+1,b):`Page ${C+1} of ${b}`,v=()=>{i(0)},M=()=>{i(Math.max(0,C-1))},N=()=>{i(Math.min(b-1,C+1))},P=()=>{i(b-1)},z=_=>{const T=parseInt(_.target.value,10);l(T)},F=C===0,$=C>=b-1;return c.jsxs("div",{className:"ogx-pagination",role:"navigation","aria-label":"Pagination",children:[c.jsxs("div",{className:"ogx-pagination__page-size",children:[c.jsx("label",{htmlFor:t,className:"ogx-pagination__label",children:m}),c.jsx("select",{id:t,className:"ogx-pagination__select",value:w,onChange:z,children:g.map(_=>c.jsx("option",{value:_,children:_},_))})]}),c.jsx("div",{className:"ogx-pagination__info","aria-live":"polite","aria-atomic":"true",children:y}),c.jsxs("div",{className:"ogx-pagination__actions",children:[a&&c.jsx(hn,{variant:"text",size:"small",onClick:v,disabled:F,"aria-label":"Go to first page",title:"First page",children:c.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:c.jsx("path",{d:"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"})})}),c.jsx(hn,{variant:"text",size:"small",onClick:M,disabled:F,"aria-label":"Go to previous page",title:"Previous page",children:c.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:c.jsx("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})})}),c.jsx("div",{className:"ogx-pagination__page-info","aria-current":"page",children:E}),c.jsx(hn,{variant:"text",size:"small",onClick:N,disabled:$,"aria-label":"Go to next page",title:"Next page",children:c.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:c.jsx("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})})}),f&&c.jsx(hn,{variant:"text",size:"small",onClick:P,disabled:$,"aria-label":"Go to last page",title:"Last page",children:c.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:c.jsx("path",{d:"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"})})})]})]})}function nu({row:e,rowId:t,rowIndex:n,ariaRowIndex:o,listViewColumn:r,gridColumn:i,rowMeta:l,isSelected:d=!1,checkboxSelection:a=!1,rowHeight:f,onRowClick:p,onRowDoubleClick:w,onSelectionChange:b,tabIndex:C=-1,onFocus:g,onToggleExpansion:u}){const h=t??e.id,x=r.field,m=ke(e,x,i),y=po(e,x,m,i)??ho(m,i),E=l?.isGroupRow===!0||Ue(h),v={row:e,value:m,formattedValue:y,field:x,colDef:i??r,rowIndex:n,colIndex:0,rowMeta:l},M=N=>{N.stopPropagation(),b?.(h,N.target.checked)};return c.jsxs("div",{className:`ogx-list-view__row${d?" ogx-list-view__row--selected":""}`,style:f?{minHeight:f}:void 0,onClick:()=>p?.(e),onDoubleClick:w?()=>w(e):void 0,role:"row","aria-rowindex":o??n+1,"aria-selected":d,"aria-level":l?.treeDepth!==void 0?l.treeDepth+1:void 0,"aria-expanded":l?.hasChildren?l.isExpanded===!0:void 0,"data-rowindex":n,tabIndex:C,onFocus:g?N=>{N.target===N.currentTarget&&g(n)}:void 0,children:[a&&c.jsx("div",{className:"ogx-list-view__checkbox",onClick:N=>N.stopPropagation(),children:!E&&c.jsx(ct,{checked:d,onChange:M,"aria-label":`Select row ${h}`,tabIndex:-1})}),l&&u&&c.jsx("div",{className:"ogx-list-view__expand",style:{paddingLeft:(l.treeDepth??0)*16},onClick:N=>N.stopPropagation(),onDoubleClick:N=>N.stopPropagation(),children:l.hasChildren&&c.jsx(Bo,{isExpanded:l.isExpanded===!0,onClick:()=>u(h),tabIndex:-1})}),c.jsx("div",{className:"ogx-list-view__cell",role:"gridcell",children:c.jsx(St,{field:x,resetKey:e,renderFn:()=>{const N=r.renderCell(v);return N===void 0&&E?l?.groupLabel:N}})})]})}function ou(e,t){const n=s.useRef(!0),o=s.useRef(e);s.useEffect(()=>{o.current=e},[e]),s.useEffect(()=>{n.current=!0},[t]);const r=s.useCallback(i=>{const l=ki(i.currentTarget);if(!l){n.current=!0;return}if(!n.current)return;const d=o.current;d&&(n.current=!1,d(l))},[]);return e?r:void 0}const ru=e=>e.id;function iu({ariaLabel:e,allRenderableRows:t,dataRowCount:n,pinnedTopRowCount:o,pinnedBottomRowCount:r,unpinnedRowCount:i,pagination:l,effectivePaginationModel:d,currentPage:a,pageSizeOptions:f,selectedRowIds:p,listViewColumn:w,columnsByField:b,rowMetaMap:C,noRowsLabel:g,rowHeight:u,checkboxSelection:h,paginationMode:x,serverRowCount:m,paginationSlot:y,paginationSlotProps:E,localeText:v,onRowClick:M,onRowDoubleClick:N,onSelectionChange:P,onPaginationModelChange:z,onRowsScrollEnd:F,getRowId:$=ru,multiselectable:_=!1,loading:T=!1,loadingOverlay:O,noRowsOverlay:S,showPaginationControls:j=!0,selectable:q=!1,onToggleExpansion:Z}){const W=y||jo,U=s.useRef(null),[Q,ie]=s.useState(null),oe=Q===null?-1:t.findIndex(I=>$(I)===Q),ge=oe===-1?0:oe,le=I=>{const D=t[I];D&&(ie($(D)),U.current?.querySelector(`:scope > [role="row"][data-rowindex="${I}"]`)?.focus())},ue=I=>{const D=I.target;if(D.getAttribute("role")!=="row"||D.parentElement!==U.current)return;const L=Number(D.getAttribute("data-rowindex")),A=t[L];if(!A)return;const V=$(A),R=t.length-1,B=C.get(V),k=!!(B?.hasChildren&&Z);if(I.altKey&&(I.key==="ArrowRight"||I.key==="ArrowLeft")){I.preventDefault(),k&&I.key==="ArrowRight"!=(B?.isExpanded===!0)&&Z?.(V);return}switch(I.key){case"ArrowDown":I.preventDefault(),le(Math.min(L+1,R));return;case"ArrowUp":I.preventDefault(),le(Math.max(L-1,0));return;case"Home":I.preventDefault(),le(0);return;case"End":I.preventDefault(),le(R);return;case"PageDown":I.preventDefault(),le(Math.min(L+10,R));return;case"PageUp":I.preventDefault(),le(Math.max(L-10,0));return;case"Enter":case" ":if(I.preventDefault(),I.key===" "&&I.shiftKey){q&&!B?.isGroupRow&&P(V,!p.has(V));return}k?Z?.(V):M({row:A,id:V,rowIndex:L});return}},te=x==="server",ae=te?m||0:i,Y=te?m||0:n,re=Wn(d.pageSize),K=$o(ae,re),J=l?a*re:0,ne=t.length-o-r,de=I=>{if(I<o)return I+1;const D=I-o;return D<ne?o+J+D+1:o+ae+(D-ne)+1},G=ou(F,t.length);return c.jsxs("div",{className:"ogx-list-view",role:"grid","aria-label":e||"Data grid list view","aria-rowcount":Y,"aria-multiselectable":_,children:[c.jsx("div",{className:"ogx-list-view__toolbar",children:c.jsxs("span",{children:[Y," ",Y===1?"item":"items",l?` · page ${a+1} of ${K}`:"",p.size>0?` · ${p.size} selected`:""]})}),c.jsx("div",{className:"ogx-list-view__rows",tabIndex:-1,onScroll:G,onKeyDown:ue,ref:U,children:t.length===0&&T?c.jsx("div",{className:"ogx-list-view__loading",children:O??c.jsx("div",{className:"ogx__loading-bar",role:"progressbar","aria-label":"Loading data"})}):t.length===0&&S?c.jsx("div",{className:"ogx-list-view__empty",children:S}):t.length===0?c.jsxs("div",{className:"ogx-list-view__empty",children:[c.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[c.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),c.jsx("path",{d:"M3 9h18M9 21V9"})]}),g]}):t.map((I,D)=>{const L=$(I);return c.jsx(nu,{row:I,rowId:L,rowIndex:D,ariaRowIndex:de(D),listViewColumn:w,gridColumn:b.get(w.field),rowMeta:C.get(L),isSelected:p.has(L),checkboxSelection:h,rowHeight:u,onRowClick:A=>M({row:A,id:L,rowIndex:D}),onRowDoubleClick:N?A=>N({row:A,id:L,rowIndex:D}):void 0,onSelectionChange:P,tabIndex:D===ge?0:-1,onToggleExpansion:Z,onFocus:A=>ie($(t[A]))},L)})}),l&&j&&c.jsx(W,{page:a,pageSize:d.pageSize,rowCount:ae,pageSizeOptions:f,onPageChange:I=>z({...d,page:I}),onPageSizeChange:I=>z({...d,pageSize:I,page:0}),localeText:v,...E})]})}function lu({overlay:e}){return e?c.jsx("div",{className:"ogx__loading-overlay ogx__loading-overlay--over-rows ogx__loading-overlay--custom",children:e}):c.jsx("div",{className:"ogx__loading-overlay ogx__loading-overlay--over-rows",children:c.jsx("div",{className:"ogx__loading-bar",role:"progressbar","aria-label":"Loading data"})})}const ut=s.forwardRef(function({fullWidth:t=!1,error:n=!1,startAdornment:o,endAdornment:r,className:i="",inputClassName:l="",variant:d="field",...a},f){const p=["ogx-input-wrapper",d==="cell"&&"ogx-input-wrapper--cell",t&&"ogx-input-wrapper--full-width",n&&"ogx-input-wrapper--error",a.disabled&&"ogx-input-wrapper--disabled",i].filter(Boolean).join(" "),w=["ogx-input",l].filter(Boolean).join(" ");return c.jsxs("div",{className:p,children:[o&&c.jsx("div",{className:"ogx-input__adornment ogx-input__adornment--start",children:o}),c.jsx("input",{ref:f,className:w,"aria-invalid":n?!0:void 0,...a}),r&&c.jsx("div",{className:"ogx-input__adornment ogx-input__adornment--end",children:r})]})});ut.displayName="Input";function mn(e){return e.headerName||e.field}function su(e){return e.nativeEvent.isComposing||e.keyCode===229}function wn(e,t,n=!0){return o=>{if(su(o)){o.stopPropagation();return}n&&o.key==="Enter"&&(o.stopPropagation(),e()),o.key==="Escape"&&(o.stopPropagation(),t())}}function au({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const[i,l]=s.useState(String(e??"")),d=s.useRef(null);return s.useEffect(()=>{d.current?.focus(),d.current?.select()},[]),c.jsx(ut,{ref:d,variant:"cell",type:"text",inputClassName:"ogx__edit-input","aria-label":mn(t),value:i,onChange:a=>{l(a.target.value),n(a.target.value)},onBlur:o,onKeyDown:wn(o,r)})}function cu({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const[i,l]=s.useState(typeof e=="number"?e:""),d=s.useRef(null);return s.useEffect(()=>{d.current?.focus(),d.current?.select()},[]),c.jsx(ut,{ref:d,variant:"cell",type:"number",inputClassName:"ogx__edit-input ogx__edit-input--number","aria-label":mn(t),value:i,onChange:a=>{const f=a.target.value===""?"":Number(a.target.value);l(f),n(f===""?null:f)},onBlur:o,onKeyDown:wn(o,r)})}function du({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const i=s.useRef(null);s.useEffect(()=>{i.current?.focus()},[]);const l=()=>{n(!e),o()};return c.jsx("div",{className:"ogx__edit-boolean",onMouseDown:d=>d.preventDefault(),children:c.jsx(ct,{ref:i,inputClassName:"ogx__edit-checkbox","aria-label":mn(t),checked:!!e,onChange:l,onMouseDown:d=>d.preventDefault(),onBlur:o,onKeyDown:wn(o,r,!1)})})}const Ro=e=>typeof e=="object"?e.value:e,uu=e=>typeof e=="object"?e.label:String(e);function fu(e,t){return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Object.is(e,t)}function gu({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const i=s.useRef(null);s.useEffect(()=>{i.current?.focus()},[]);const l=t.valueOptions??[],d=l.map(p=>String(Ro(p)));let a=l.findIndex(p=>fu(Ro(p),e));a===-1&&e!==null&&e!==void 0&&(a=d.indexOf(String(e)));const f=a===-1;return c.jsxs("select",{ref:i,className:"ogx__edit-select","aria-label":mn(t),value:f?"":d[a],onChange:p=>{const w=d.indexOf(p.target.value);n(w===-1?null:Ro(l[w]))},onBlur:o,onKeyDown:wn(o,r),children:[f&&c.jsx("option",{value:""}),l.map((p,w)=>c.jsx("option",{value:d[w],children:uu(p)},w))]})}const bl=e=>String(e).padStart(2,"0"),Cl=/^(\d{4}-\d{2}-\d{2})/;function qo(e){if(e instanceof Date)return Number.isNaN(e.getTime())?"":`${e.getFullYear()}-${bl(e.getMonth()+1)}-${bl(e.getDate())}`;if(typeof e=="string"){const t=Cl.exec(e);return t?t[1]:e===""?"":qo(new Date(e))}return typeof e=="number"?qo(new Date(e)):""}function pu(e,t){if(e==="")return null;const[n,o,r]=e.split("-").map(Number),i=l=>{const d=new Date(l.getTime());return d.setFullYear(n,o-1,r),d};return t instanceof Date&&!Number.isNaN(t.getTime())?i(t):typeof t=="number"&&Number.isFinite(t)?i(new Date(t)).getTime():typeof t=="string"&&Cl.test(t)&&t.length>10?e+t.slice(10):e}function hu({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const[i]=s.useState(e),[l,d]=s.useState(()=>qo(e)),a=s.useRef(null);return s.useEffect(()=>{a.current?.focus()},[]),c.jsx(ut,{ref:a,variant:"cell",type:"date",inputClassName:"ogx__edit-input","aria-label":mn(t),value:l,onChange:f=>{d(f.target.value),n(pu(f.target.value,i))},onBlur:o,onKeyDown:wn(o,r)})}function mu(e){const{colDef:t}=e;switch(t.type){case"number":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(cu,{...e})});case"boolean":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(du,{...e})});case"singleSelect":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(gu,{...e})});case"date":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(hu,{...e})});default:return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(au,{...e})})}}function wu(e){const{onCellClick:t,onCellEditStart:n,onCellValueChange:o,value:r,row:i,colDef:l,rowIndex:d,colIndex:a,ariaColIndex:f,isSelected:p,onClick:w,width:b,pinnedPosition:C,pinnedOffset:g,isPinnedEdge:u,isFocused:h,isFocusVisible:x,isEditable:m,isEditing:y,onEditStart:E,onEditStop:v,onValueChange:M,colSpanInfo:N,rowSpan:P,isHiddenByRowSpan:z,rowMeta:F,valueError:$,rangeFlags:_=0}=e,T=s.useCallback(G=>{o?o(l.field,G):M?.(G)},[o,M,l.field]),O=F?.isGroupRow===!0,{formattedValue:S,error:j}=s.useMemo(()=>{const G=l.valueFormatter;if(G&&!(O&&r==null)){const I=pn(()=>G({value:r,row:i,field:l.field}));return I.ok?{formattedValue:I.value}:{formattedValue:"",error:I.error??new Error("valueFormatter failed")}}return{formattedValue:ho(r,l)}},[r,i,l,O]),q=s.useMemo(()=>{if(!l.cellClassName)return"";const G=l.cellClassName;if(typeof G=="function"){const I=pn(()=>G({value:r,formattedValue:S,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:F}));return I.ok&&I.value||""}return l.cellClassName},[l,r,S,i,d,a,F]),Z=$??j,W=l.field,U=s.useCallback(()=>{v?.(!1,W)},[v,W]),Q=s.useCallback(()=>{v?.(!0,W)},[v,W]),ie=s.useMemo(()=>[i,l.renderCell,r],[i,l.renderCell,r]),oe=s.useRef(!1);if(s.useEffect(()=>{if(!(!y||!v))return oe.current=!0,()=>{oe.current=!1,queueMicrotask(()=>{oe.current||v(!1,W)})}},[y,v,W]),N?.spannedByColSpan)return null;const ge=N?.cellProps.colSpan??1,le=ge>1,ue=(le?N?.cellProps.width:void 0)??b??l.width??100,te={width:"var(--width)","--width":typeof ue=="number"?`${ue}px`:ue,flexGrow:(le?N?.cellProps.flexGrow:void 0)??l.flex??0,flexShrink:0,flexBasis:"auto",boxSizing:"border-box",minWidth:le?void 0:l.minWidth,maxWidth:le?void 0:l.maxWidth};if(z)return c.jsx("div",{className:"ogx__cell ogx__cell--hidden",style:te,role:"presentation","data-field":l.field,"data-colindex":a});const ae=G=>{y||(t&&t({row:i,field:l.field,value:r,colDef:l,rowIndex:d,colIndex:a}),w?.(G))},Y=()=>{y||!m||(n?n(l.field,r):E?.())},re=l.renderEditCell,K=C!=null,J=["ogx__cell",`ogx__cell--align-${l.align||"left"}`,p&&"ogx__cell--selected",h&&"ogx__cell--focused",h&&x&&"ogx__cell--focus-visible",l.type&&`ogx__cell--type-${l.type}`,K&&"ogx__cell--pinned",K&&`ogx__cell--pinned-${C}`,K&&u&&`ogx__cell--pinned-${C}-${C==="left"?"last":"first"}`,y&&"ogx__cell--editing",P&&P>1&&"ogx__cell--spanned",(_&Oo)!==0&&"ogx__cell--range",(_&fi)!==0&&"ogx__cell--range-top",(_&gi)!==0&&"ogx__cell--range-bottom",(_&pi)!==0&&"ogx__cell--range-left",(_&hi)!==0&&"ogx__cell--range-right",q].filter(Boolean).join(" "),ne=P||1,de={...te,position:K?"sticky":void 0,zIndex:l.zIndex??(K?3:void 0),padding:y?0:void 0};return ne>1&&(de.height=`calc(var(--height) * ${ne} - var(--border-width, 1px))`,de.zIndex=10,K&&(de.zIndex=40)),K&&g!==void 0&&(C==="left"?de.left=g:de.right=g),c.jsx("div",{className:J,style:de,onClick:ae,onDoubleClick:Y,role:"gridcell","aria-colindex":f??a+1,"aria-readonly":!m||void 0,tabIndex:-1,"data-field":l.field,"data-colindex":a,...ge>1?{"aria-colspan":ge}:{},...ne>1?{"aria-rowspan":ne}:{},...(_&Oo)!==0?{"aria-selected":!0}:{},children:c.jsx("div",{className:"ogx__cell-content",children:y&&(o||M)&&v?re?c.jsx(St,{field:l.field,resetKey:i,renderFn:()=>re({value:r,formattedValue:S,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:F,onValueChange:T,onCommit:U,onCancel:Q})}):c.jsx(mu,{value:r,formattedValue:S,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:F,onValueChange:T,onCommit:U,onCancel:Q}):Z!==void 0?c.jsx(St,{field:l.field,resetKey:i,renderFn:()=>{throw Z}}):l.renderCell?c.jsx(St,{field:l.field,resetKey:ie,renderFn:()=>l.renderCell({value:r,formattedValue:S,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:F})}):l.type==="image"&&typeof r=="string"&&r!==""?c.jsx("img",{className:"ogx__cell-image",src:r,alt:l.headerName??l.field,loading:"lazy"}):S})})}const yl=s.memo(wu),xu=({className:e="",...t})=>c.jsx("button",{type:"button",className:`ogx-drag-handle ${e}`,"aria-label":"Drag to reorder row",...t,children:c.jsx("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"currentColor","aria-hidden":"true",children:c.jsx("path",{d:"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})});function bu(e){const{rowId:t,content:n,height:o,isExpanded:r,onHeightChange:i,id:l,colSpan:d}=e,a=s.useRef(null),f=o==="auto";if(s.useLayoutEffect(()=>{const w=a.current;if(!w||!f||!r||!i)return;const b=()=>{w.getClientRects().length!==0&&i(t,w.offsetHeight)};if(b(),typeof ResizeObserver>"u")return;const C=new ResizeObserver(b);return C.observe(w),()=>C.disconnect()},[f,r,i,t]),!r)return null;const p={height:f?"auto":`${o}px`,overflow:f?"visible":"auto"};return c.jsx("div",{ref:a,className:"ogx__detail-panel",style:p,role:"row",id:l,children:c.jsx("div",{className:"ogx__detail-panel-content",role:"gridcell","aria-colspan":d,children:n})})}const Xo=12;function Cu(e,t,n,o){let r=0,i=0,l=0;for(let d=t;d<e.length&&l<n;d++){const a=e[d];if(a.isSpacer)break;r+=bt(a,o),i+=a.flex??0,l++}return{spannedByColSpan:!1,cellProps:{colSpan:l,width:r,flexGrow:i}}}function yu(e){const{row:t,rowId:n,columns:o,rowIndex:r,isSelected:i=!1,checkboxSelection:l=!1,onRowClick:d,onRowDoubleClick:a,onCellClick:f,onSelectionChange:p,columnWidths:w={},pinnedColumns:b,pinnedRows:C,hasDetailPanel:g=!1,isDetailPanelExpanded:u=!1,onDetailPanelToggle:h,detailPanelContent:x,detailPanelHeight:m=mo,onDetailPanelHeightChange:y,pinCheckboxColumn:E=!0,pinExpandColumn:v=!0,rowReordering:M=!1,onDragStart:N,onDragOver:P,onDragEnd:z,onDrop:F,isDragging:$,isDragOver:_,editingCell:T,onEditStart:O,onEditStop:S,onEditCellValueChange:j,isCellEditable:q,focusedCellField:Z,isFocusVisible:W,colspanMap:U,rowSpanningCaches:Q,rowHeight:ie=52,rowMeta:oe,columnIndexMap:ge,ariaRowIndex:le,cellRange:ue}=e,te=n??t.id,ae=s.useId(),Y=s.useId(),re=s.useMemo(()=>fo(o,w,b,l,E,g,v,M),[o,w,b,l,E,g,v,M]),K=s.useMemo(()=>go(o,b),[o,b]),J=oe?.hasChildren===!0,ne=oe?.isGroupRow===!0,de=g&&!ne,G=!ne&&!Ue(te),I=s.useCallback((se,be)=>{O?.({id:te,field:se,value:be})},[te,O]),D=s.useCallback((se,be)=>{j?.({id:te,field:se,value:be})},[j,te]),L=s.useCallback((se,be)=>{S?.({cancel:se,id:te,field:be})},[S,te]);if(t._isSkeleton){const se=Math.max(o.length,5);return c.jsx("div",{className:"ogx__row ogx__row--skeleton",role:"row","aria-hidden":"true",style:{height:ie,minHeight:ie},children:Array.from({length:se}).map((be,Me)=>c.jsx("div",{className:"ogx__skeleton-cell",children:c.jsx("div",{className:"ogx__skeleton-bar"})},Me))})}const A=se=>{se.target.closest(".ogx-checkbox-wrapper, .ogx-expand-icon, .ogx-drag-handle, .ogx__edit-cell, .ogx__cell--editing")||d?.({row:t,id:te,rowIndex:r})},V=se=>{se.target.closest(".ogx-checkbox-wrapper, .ogx-expand-icon, .ogx-drag-handle, .ogx__edit-cell, .ogx__cell--editing")||a?.({row:t,id:te,rowIndex:r})},R=se=>{se.stopPropagation(),p?.(te,se.target.checked)},B=se=>{se.stopPropagation(),h?.(te)},k=M?1:0,H=g?k+1:k,X=l?H+1:H,ee=X,ce=ge?.size??o.filter(se=>!se.isSpacer).length,pe=oe!==void 0,me=oe?.hasChildren===!0,ye=Lr(te,C),_e=ye==="top",Ce=ye==="bottom",Ee=["ogx__row",i&&"ogx__row--selected",r%2===0&&"ogx__row--even",r%2===1&&"ogx__row--odd",_e&&"ogx__row--pinned-top",Ce&&"ogx__row--pinned-bottom",$&&"ogx__row--dragging",_&&"ogx__row--drag-over",J&&"ogx__row--group",oe?.isGroupFooter&&"ogx__row--group-footer"].filter(Boolean).join(" ");return c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:Ee,onClick:A,onDoubleClick:a?V:void 0,role:"row","aria-rowindex":le??r+2,"aria-selected":i,"aria-level":pe?(oe?.treeDepth??0)+1:void 0,"aria-expanded":me?oe?.isExpanded===!0:void 0,"data-rowindex":r,onDragOver:P?P(te):void 0,onDrop:F?F(te):void 0,style:{maxHeight:`${ie}px`,minHeight:`${ie}px`,"--height":`${ie}px`,"--border-width":"1px"},children:[M&&c.jsx("div",{className:`ogx__cell ogx__cell--drag-handle ${Z==="__reorder_col__"?"ogx__cell--focused":""} ${Z==="__reorder_col__"&&W?"ogx__cell--focus-visible":""}`,role:"gridcell","aria-label":N?"Drag to reorder row":void 0,"aria-colindex":k,"data-field":"__reorder_col__",tabIndex:-1,style:{position:"sticky",left:0,zIndex:Xo},draggable:!!N,onDragStart:N?N(te):void 0,onDragEnd:z,onClick:se=>se.stopPropagation(),children:N&&c.jsx(xu,{})}),g&&c.jsx("div",{className:`ogx__cell ogx__cell--expand ${v?"ogx__cell--pinned-left":""} ${Z==="__expand_col__"?"ogx__cell--focused":""} ${Z==="__expand_col__"&&W?"ogx__cell--focus-visible":""}`,role:"gridcell","aria-label":de?u?"Collapse row details":"Expand row details":void 0,"aria-expanded":de?u:void 0,"aria-controls":de&&u?Y:void 0,"aria-colindex":H,"data-field":"__expand_col__",style:{position:v?"sticky":void 0,left:v?M?48:0:void 0,zIndex:v?Xo:void 0},tabIndex:-1,onClick:se=>{se.stopPropagation(),f?.({row:t,field:"__expand_col__",value:u,colDef:{field:"__expand_col__",width:48},rowIndex:r,colIndex:-1})},children:de&&c.jsx(Bo,{isExpanded:u,onClick:B,variant:"plus-minus",tabIndex:-1})}),l&&c.jsx("div",{className:`ogx__cell ogx__cell--checkbox ${E?"ogx__cell--pinned-left":""} ${Z==="__checkbox_col__"?"ogx__cell--focused":""} ${Z==="__checkbox_col__"&&W?"ogx__cell--focus-visible":""}`,role:"gridcell","aria-colindex":X,"data-field":"__checkbox_col__",style:{position:E?"sticky":void 0,left:E?(M?48:0)+(g&&v?48:0):void 0,zIndex:E?Xo:void 0},tabIndex:-1,onClick:se=>{se.stopPropagation(),f?.({row:t,field:"__checkbox_col__",value:i,colDef:{field:"__checkbox_col__",width:48},rowIndex:r,colIndex:-1})},children:G&&c.jsx(ct,{id:ae,name:`ogx-select-row-${te}`,checked:i,onChange:R,onClick:se=>se.stopPropagation(),"aria-label":i?`Deselect row ${te}`:`Select row ${te}`,tabIndex:-1,onMouseDown:se=>se.preventDefault()})}),o.map((se,be)=>{if(se.isSpacer)return c.jsx("div",{style:{width:se.width,minWidth:se.width,flexShrink:0},"aria-hidden":"true"},se.field);let Me,ve;ne?Me=t[se.field]:{value:Me,error:ve}=Fr(t,se.field,se);const he=ge?.get(se.field)??be,fe=w[se.field]??se.width,we=lt(se.field,b),Se=!!O&&Co({row:t,field:se.field,value:Me,colDef:se,rowIndex:r,colIndex:he,rowMeta:oe},q),Ne=T?.id===te&&T?.field===se.field,tt=Ne?T?.value:Me,$e=U?.get(te)?.[se.field],Ve=$e&&!$e.spannedByColSpan&&$e.cellProps.colSpan>1?Cu(o,he,$e.cellProps.colSpan,w):$e,Yt=Ve&&!Ve.spannedByColSpan?o[he+Ve.cellProps.colSpan-1]?.field??se.field:se.field,Ge=we==="right"?Yt:se.field,kt=we?re[Ge]:void 0,Et=we==="left"&&Yt===K.lastLeft||we==="right"&&se.field===K.firstRight,Yn=Q?.spannedCells[te]?.[se.field],Mt=Q?.hiddenCells[te]?.[se.field]||!1,rr=ue&&!Mt&&se.field!==di?Ca(ue,he,Ve&&!Ve.spannedByColSpan?Ve.cellProps.colSpan:1,Yn??1):void 0;return c.jsx(yl,{value:tt,row:t,colDef:se,rowIndex:r,colIndex:he,ariaColIndex:ee+he+1,isSelected:i,onCellClick:f,width:fe,pinnedPosition:we,pinnedOffset:kt,isPinnedEdge:Et,isFocused:Z===se.field,isFocusVisible:W,isEditable:Se,isEditing:Ne,onCellEditStart:I,onEditStop:L,onCellValueChange:D,colSpanInfo:Ve,rowSpan:Yn,isHiddenByRowSpan:Mt,rowMeta:oe,valueError:ve,rangeFlags:rr},se.field)})]}),de&&c.jsx(bu,{id:Y,colSpan:ee+ce,row:t,rowId:te,rowIndex:r,content:x,height:m,isExpanded:u,onHeightChange:y})]})}function vu(e,t){const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(const o of n)if(o==="cellRange"){if(!ba(e.cellRange,t.cellRange))return!1}else if(!Object.is(e[o],t[o]))return!1;return!0}const Kn=s.memo(yu,vu);function vl({getContent:e,params:t}){return c.jsx(St,{field:"detail panel",renderFn:()=>e(t),resetKey:t.row})}const Su=e=>e.id;function Sl({rows:e,position:t,columns:n,selectedRowIds:o,checkboxSelection:r,onRowClick:i,onRowDoubleClick:l,onCellClick:d,onSelectionChange:a,columnWidths:f,pinnedColumns:p,pinnedRows:w,hasDetailPanel:b,expandedRowIds:C,getDetailPanelContent:g,getDetailPanelHeight:u,onDetailPanelToggle:h,onDetailPanelHeightChange:x,pinCheckboxColumn:m,pinExpandColumn:y,focusedCell:E,colspanMap:v,rowSpanningCaches:M,rowHeight:N,rowMetaMap:P,getRowId:z=Su,rowIndexOffset:F=0,ariaRowIndexBase:$,columnIndexMap:_,editingHandlers:T,isCellEditable:O,rowReordering:S=!1,cellRange:j,cellRangeHasRowSpan:q=!1}){return e.length===0?null:c.jsx("div",{className:`ogx__pinned-rows ogx__pinned-rows--${t}`,role:"rowgroup",children:e.map((Z,W)=>{const U=z(Z),Q=F+W;return c.jsx(Kn,{row:Z,rowId:U,columns:n,rowIndex:Q,ariaRowIndex:$!==void 0?$+W:void 0,columnIndexMap:_,isSelected:o.has(U),checkboxSelection:r,onRowClick:i,onRowDoubleClick:l,onCellClick:d,onSelectionChange:a,columnWidths:f,pinnedColumns:p,pinnedRows:w,hasDetailPanel:b,isDetailPanelExpanded:C.has(U),detailPanelContent:C.has(U)&&g?c.jsx(vl,{getContent:g,params:{row:Z,id:U,rowIndex:Q}}):null,detailPanelHeight:C.has(U)?wo(xo(u,{row:Z,id:U,rowIndex:Q})):void 0,onDetailPanelHeightChange:x,onDetailPanelToggle:h,pinCheckboxColumn:m,pinExpandColumn:y,focusedCellField:E?.id===U?E.field:null,colspanMap:v,rowSpanningCaches:M,rowHeight:N,rowMeta:P.get(U),editingCell:T?.editingCell,onEditStart:T?.startCellEdit,onEditStop:T?.stopCellEdit,onEditCellValueChange:T?.setEditCellValue,isCellEditable:O,rowReordering:S,cellRange:ui(j,Q,q)},U)})})}const _u=({columns:e,rowHeight:t,checkboxSelection:n=!1,hasDetailPanel:o=!1,rowReordering:r=!1})=>c.jsxs("div",{className:"ogx__row ogx__skeleton-row",style:{height:t},role:"row",children:[n&&c.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:48,minWidth:48},children:c.jsx("div",{className:"ogx-skeleton-box",style:{width:18,height:18,borderRadius:2}})}),o&&c.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:48,minWidth:48},children:c.jsx("div",{className:"ogx-skeleton-box",style:{width:18,height:18,borderRadius:2}})}),r&&c.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:48,minWidth:48},children:c.jsx("div",{className:"ogx-skeleton-box",style:{width:18,height:18,borderRadius:2}})}),e.map((i,l)=>{const d=typeof i.width=="number"?i.width:150,a=Math.min(d*.7,d-20);return c.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:d,minWidth:i.minWidth,maxWidth:i.maxWidth,left:i.left,right:i.right,position:i.isSpacer?"relative":i.pinned?"sticky":"relative",zIndex:i.zIndex},children:!i.isSpacer&&c.jsx("div",{className:"ogx-skeleton-box",style:{width:a,height:16,borderRadius:4}})},i.field||l)})]});function ku({virtualContainerHeight:e,offsetTop:t,effectiveLoading:n,visibleRows:o,baseColumns:r,virtualColumns:i,viewportWidth:l,checkboxSelection:d,hasDetailPanel:a,rowReordering:f,rowHeight:p,selectedRowIds:w,onRowClick:b,onRowDoubleClick:C,onCellClick:g,onSelectionChange:u,columnWidths:h,pinnedColumns:x,expandedRowIds:m,getDetailPanelContent:y,getDetailPanelHeight:E,onDetailPanelToggle:v,onDetailPanelHeightChange:M,pinCheckboxColumn:N,pinExpandColumn:P,rowReorderHandlers:z,editingHandlers:F,isCellEditable:$,focusedCell:_,colspanMap:T,rowSpanningCaches:O,paginationMode:S,dataSourceLoading:j,sortedUnpinnedRowCount:q,infiniteScrollSkeletonCount:Z,unpinnedRowsLength:W,lastRenderedRowIndex:U,rowMetaMap:Q,loadingOverlay:ie,ariaRowIndexOffset:oe,columnIndexMap:ge,cellRange:le,cellRangeHasRowSpan:ue=!1}){const te=r.length>0?r:(()=>{const re=(l||1e3)-(d?48:0)-(a?48:0)-(f?48:0),K=150,J=Math.max(1,Math.ceil(re/K));return Array.from({length:J},(ne,de)=>({field:`placeholder_${de}`,headerName:"",width:K}))})(),ae=o.filter(re=>!re.pinned),Y=S==="infinite"&&j&&q>0&&U>=W-1;return c.jsx("div",{className:"ogx__virtual-container",style:{height:`${e}px`},role:"presentation",children:c.jsxs("div",{className:"ogx__rows",style:{transform:`translateY(${t}px)`},role:"rowgroup",children:[n&&o.length===0&&ie?c.jsx("div",{className:"ogx__loading-overlay",style:{width:l||void 0},children:ie}):n&&o.length===0?Array.from({length:10}).map((re,K)=>c.jsx(_u,{columns:te,rowHeight:p,checkboxSelection:d,hasDetailPanel:a,rowReordering:f},`skeleton-${K}`)):ae.map(({row:re,id:K,rowIndex:J})=>c.jsx(Kn,{row:re,rowId:K,columns:i,rowIndex:J,ariaRowIndex:oe!==void 0?J+oe:void 0,columnIndexMap:ge,isSelected:w.has(K),checkboxSelection:d,onRowClick:b,onRowDoubleClick:C,onCellClick:g,onSelectionChange:u,columnWidths:h,pinnedColumns:x,hasDetailPanel:a,isDetailPanelExpanded:m.has(K),detailPanelContent:m.has(K)&&y?c.jsx(vl,{getContent:y,params:{row:re,id:K,rowIndex:J}}):null,detailPanelHeight:m.has(K)?wo(xo(E,{row:re,id:K,rowIndex:J})):void 0,onDetailPanelHeightChange:M,onDetailPanelToggle:v,pinCheckboxColumn:N,pinExpandColumn:P,rowReordering:f,onDragStart:z.canReorderRow(K)?z.onDragStart:void 0,onDragOver:z.onDragOver,onDragEnd:z.onDragEnd,onDrop:z.onDrop,isDragging:z.draggedRowId===K,isDragOver:z.dragOverRowId===K,editingCell:F.editingCell,onEditStart:F.startCellEdit,onEditStop:F.stopCellEdit,onEditCellValueChange:F.setEditCellValue,isCellEditable:$,focusedCellField:_!=null&&_.id===K?_.field:null,colspanMap:T,rowSpanningCaches:O,rowHeight:p,rowMeta:Q.get(K),cellRange:ui(le,J,ue)},K)),Y&&c.jsx("div",{className:"ogx__skeleton-group",children:Array.from({length:Z}).map((re,K)=>c.jsx(Kn,{row:{id:`__skeleton_${K}__`,_isSkeleton:!0},columns:i,rowIndex:W+K,rowHeight:p},`__skeleton_${K}__`))})]})})}function Eu(){return c.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("circle",{cx:"11",cy:"11",r:"8"}),c.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]})}function Mu(){return c.jsxs("svg",{className:"ogx-column-visibility-panel__drag-handle",width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:[c.jsx("circle",{cx:"9",cy:"5",r:"1.5"}),c.jsx("circle",{cx:"15",cy:"5",r:"1.5"}),c.jsx("circle",{cx:"9",cy:"12",r:"1.5"}),c.jsx("circle",{cx:"15",cy:"12",r:"1.5"}),c.jsx("circle",{cx:"9",cy:"19",r:"1.5"}),c.jsx("circle",{cx:"15",cy:"19",r:"1.5"})]})}function Yo(e){const{columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:d,showNonHideableColumns:a}=e,[f,p]=s.useState(""),w=s.useId(),[b,C]=s.useState(null),g=s.useRef(null),u=s.useMemo(()=>t.filter(P=>P.hideable!==!1),[t]),h=u.every(P=>n.has(P.field)),x=s.useMemo(()=>{const P=a?t:u;if(!f)return P;const z=f.toLowerCase();return P.filter(F=>(F.headerName||F.field).toLowerCase().includes(z))},[t,u,f,a]),m=P=>{P.target.checked?r():i()},y=P=>z=>{g.current=P,z.dataTransfer.effectAllowed="move",z.dataTransfer.setDragImage(z.currentTarget.closest(".ogx-column-visibility-panel__item"),20,20)},E=P=>z=>{z.preventDefault(),z.dataTransfer.dropEffect="move",P!==g.current&&C(P)},v=()=>{C(null)},M=P=>z=>{z.preventDefault();const F=g.current;C(null),g.current=null,F&&F!==P&&l&&l(F,P)},N=()=>{C(null),g.current=null};return c.jsxs("div",{className:"ogx-column-visibility-panel",children:[c.jsx("div",{className:"ogx-column-visibility-panel__search-section",children:c.jsxs("div",{className:"ogx-column-visibility-panel__search-container",children:[c.jsx(Eu,{}),c.jsx(ut,{autoComplete:"off",inputClassName:"ogx-column-visibility-panel__search-input",placeholder:"Search",value:f,onChange:P=>p(P.target.value)})]})}),c.jsx("div",{className:"ogx-column-visibility-panel__list",children:x.map((P,z)=>{const F=`${w}-col-${z}`,$=n.has(P.field),_=P.hideable!==!1,T=b===P.field,O=!!l&&!f;return c.jsxs("div",{className:["ogx-column-visibility-panel__item",!_&&"ogx-column-visibility-panel__item--disabled",T&&"ogx-column-visibility-panel__item--drag-over"].filter(Boolean).join(" "),draggable:O,onDragOver:O?E(P.field):void 0,onDragLeave:O?v:void 0,onDrop:O?M(P.field):void 0,onDragEnd:O?N:void 0,children:[O&&c.jsx("span",{className:"ogx-column-visibility-panel__drag-handle-wrapper",draggable:!0,onDragStart:y(P.field),title:"Drag to reorder",children:c.jsx(Mu,{})}),c.jsxs("div",{className:"ogx-column-visibility-panel__item-label",style:{display:"flex",alignItems:"center",gap:"var(--ogx-spacing-md)",flex:1,cursor:_?"pointer":"not-allowed"},children:[c.jsx(ct,{id:F,checked:$,onChange:S=>o(P.field,S.target.checked),disabled:!_}),c.jsx("label",{htmlFor:F,className:"ogx-column-visibility-panel__label",children:P.headerName||P.field})]})]},P.field)})}),c.jsxs("div",{className:"ogx-column-visibility-panel__footer",children:[c.jsxs("div",{className:"ogx-column-visibility-panel__item",children:[c.jsx(ct,{id:`${w}-all`,checked:h,onChange:m}),c.jsx("label",{htmlFor:`${w}-all`,className:"ogx-column-visibility-panel__label",children:"Show/Hide All"})]}),c.jsx("button",{type:"button",className:"ogx-column-visibility-panel__reset-btn",onClick:()=>{r(),d?.()},children:"Reset"})]})]})}function Nu({isOpen:e,containerRef:t,panelRef:n,columns:o,columnVisibilityModel:r,disableColumnReorder:i,onClose:l,onColumnVisibilityChange:d,onColumnMove:a,onColumnOrderReset:f,columnGroupingModel:p}){const[w,b]=s.useState(null);if(s.useLayoutEffect(()=>{if(!e||!t.current)return;const g=t.current.getBoundingClientRect();b({top:g.top+8,right:Wt()-g.right+8,target:t.current.closest(".ogx-theme-provider")||document.body})},[e,t]),!e||!w)return null;const C=i?void 0:(g,u)=>{Vo(p,g,u)&&a(g,u)};return xt.createPortal(c.jsxs("div",{ref:n,style:{position:"fixed",top:w.top,right:w.right,zIndex:9999,display:"inline-block"},children:[c.jsx("button",{type:"button",onClick:l,style:{position:"absolute",top:-12,right:-12,width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",background:"#334155",color:"#fff",border:"none",borderRadius:"50%",cursor:"pointer",fontSize:14,lineHeight:1,zIndex:1,boxShadow:"0 1px 4px rgba(0,0,0,0.2)"},"aria-label":"Close",children:"×"}),c.jsx(Yo,{columns:o,visibleColumns:new Set(o.filter(g=>r[g.field]!==!1).map(g=>g.field)),onVisibilityChange:(g,u)=>{d({...r,[g]:u})},onShowAll:()=>{const g={...r};o.forEach(u=>{u.hideable!==!1&&(g[u.field]=!0)}),d(g)},onHideAll:()=>{const g={...r};o.forEach(u=>{u.hideable!==!1&&(g[u.field]=!1)}),d(g)},onColumnReorder:C,onColumnOrderReset:i?void 0:f})]}),w.target)}const _l=[];function Iu(e){const{isPivotActive:t}=e,n=t?_l:e.rowGroupingModel,o=e.treeData&&!t,r=o&&e.hasTreeDataPath,i=n.length>0;return{rowReordering:e.rowReordering&&!t,hierarchyRowGroupingModel:n,isTreeDataRequested:o,isTreeData:r,isRowGrouping:i,isHierarchyEnabled:r||i,hasGroupingColumn:e.hasGroupingColDef&&(i||r),pagination:e.pagination&&!i&&e.paginationMode!=="infinite",listView:e.listView&&e.hasListViewColumn}}function Pu(e){const{baseColumns:t,pinnedColumns:n,hasGroupingColumn:o,groupingColDef:r,isTreeData:i,getTreeDataPath:l}=e,d=s.useMemo(()=>o?{...n,left:["__group__",...(n?.left??[]).filter(f=>f!=="__group__")]}:n,[o,n]);return{activeColumns:s.useMemo(()=>o?[{headerName:"Group",width:220,...i&&l?{valueGetter:({row:f})=>{const p=l(f);return p[p.length-1]}}:{},...r,field:"__group__",hideable:!1,sortable:!1,filterable:!1,pinnable:!1,exportable:!1},...t]:t,[r,o,i,l,t]),effectivePinnedColumns:d}}function Lu(e){return e.id}function Tu(e){const t=s.useCallback(r=>e.get(r)??r.id,[e]),n=s.useRef(t);s.useLayoutEffect(()=>{n.current=t});const o=s.useCallback(r=>n.current(r),[]);return{getRowIdOf:t,getRowIdOfInEvents:o}}function Fu(e,t){s.useLayoutEffect(()=>{e&&(e.current=t.current)},[e,t])}function Au(e){const{hierarchyHandlers:t,pinnedTopRows:n,sortedUnpinnedRows:o,pinnedBottomRows:r,rowMetaMap:i,getRowId:l,hierarchyField:d,dataRows:a}=e,f=t?.getVisibleRows({expandAll:!0,labelField:d});if(!f)return[...n,...o,...r];const p=a?new Set(a):null;return f.filter(w=>!i.get(l(w))?.isGroupRow&&(!p||p.has(w)))}function Du(e,t){if(e===t)return!0;const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;const o=e,r=t;return n.every(i=>Object.prototype.hasOwnProperty.call(t,i)&&Object.is(o[i],r[i]))}function Ou(e,t){return e===t?!0:e.length!==t.length?!1:e.every((n,o)=>Du(n,t[o]))}function $u(e){const[t,n]=s.useState(e),o=Ou(t,e);return o||n(e),o?t:e}function Gu(e){const{rows:t,getRowId:n,rowMetaMap:o,columns:r,aggregationModel:i,aggregationResult:l,isSubtotalHidden:d}=e,a=Object.keys(i).length>0,f=new Map(r.map(C=>[C.field,C])),p=[],w=[],b=C=>{for(;w.length>0&&w[w.length-1].header.depth>=C;){const g=w.pop();a&&!d?.(g.id)&&p.push({type:"group-subtotal",depth:g.header.depth,groupField:g.header.groupField,groupValue:g.header.groupValue,groupLabel:g.header.groupLabel,aggregatedValues:Fn(g.leaves,i,f,"getGroupedExportRows")})}};for(const C of t){const g=n(C),u=o.get(g);if(!u?.isGroupFooter)if(u?.isGroupRow){const h=u.treeDepth??0;b(h);const x={type:"group-header",depth:h,groupField:u.groupingField,groupValue:u.groupingValue,groupLabel:u.groupLabel};p.push(x),w.push({id:g,header:x,leaves:[]})}else p.push({type:"leaf",depth:u?.treeDepth??w.length,row:C}),w.forEach(h=>h.leaves.push(C))}return b(0),a&&l&&p.push({type:"grand-total",depth:0,aggregatedValues:l}),p}function Wu(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e}),s.useLayoutEffect(()=>{const o=()=>n.current;t.current.getAggregationResult=()=>o().hasAggregation?o().aggregationResult:null,t.current.getAggregationModel=()=>o().hasAggregation?o().aggregationModel:null,t.current.getGroupedExportRows=()=>{const{hasAggregation:r,aggregationResult:i,aggregationModel:l,isRowGrouping:d,rowGroupingHandlers:a,rowMetaMap:f,columns:p,getRowId:w,hierarchyField:b}=o();return d?Gu({rows:a.getVisibleRows({expandAll:!0,labelField:b})??[],getRowId:w,rowMetaMap:f,columns:p,aggregationModel:l,aggregationResult:r&&a.rootAggregationPosition!==null?i:null,isSubtotalHidden:C=>a.aggregationPositions.get(C)===null}):null}},[t])}const Bu=new Set(["__group__","__check__","__actions__"]);function _t(e){return e.filter(t=>t.exportable!==!1&&!t.isSpacer&&!Qe(t.field)&&!Bu.has(t.field))}function ft(e){return!!e&&e.length>0}function kl(e,t,n=o=>o.id){const o=new Set(t);return e.filter(r=>o.has(n(r)))}function xn(e,t,n){return ft(t)?kl(e,t,n):e}function bn(e,t){return!!e&&e.length>0&&!ft(t)}function Kt(e,t,n,o,r){if(!o)return null;if(!t||!r||Object.keys(r).length===0)return o;const i=new Map(n.map(l=>[l.field,l]));return Fn(e,r,i,"export")}function Cn(e,t){const n=e[t.field];return t.valueGetter?t.valueGetter({row:e,field:t.field,value:n}):n}function yn(e,t,n){if(!t.valueFormatter)return ho(n,t);if(n==null)try{return String(t.valueFormatter({value:n,row:e,field:t.field})??"")}catch{return""}return String(t.valueFormatter({value:n,row:e,field:t.field})??"")}function Jo(e,t,n,o){return n==null?"":An(n,t??"",e,o)}function Ut(e,t){return t?`${e}: ${t}`:e}function El(e,t){const n={};return t.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o.field)&&(n[o.field]=e[o.field])}),n}const Hu=/^[=+\-@\t\r]/,zu=/^[-+]?(?=[\d.,\s]*\d)[\d.,\s]*%?$/;function Un(e,t=!1){return t||!Hu.test(e)||zu.test(e)?e:`'${e}`}function gt(e){return typeof e=="number"||typeof e=="bigint"||typeof e=="boolean"||e instanceof Date}function Pe(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function Vu(e){let t=0,n=e.length;for(;t<n&&e[t]==="'";)t++;for(;n>t&&e[n-1]==="'";)n--;return e.slice(t,n)}const Ku=/[\\/?*:[\]]/g,Ml=31;function Zo(e,t=new Set){let n=Vu(String(e??"").replace(Ku,"-").trim()).trim();n||(n="Sheet"),n=n.slice(0,Ml).trim();const o=i=>t.has(i.toLowerCase())||i.toLowerCase()==="history";let r=n;for(let i=2;o(r);i++){const l=` (${i})`;r=`${n.slice(0,Ml-l.length).trim()}${l}`}return t.add(r.toLowerCase()),r}const Uu=new Set([st,fn,un]),ju=/[\t\n\r"]/;function Qo(e){return ju.test(e)?`"${e.replace(/"/g,'""')}"`:e}function Ru(e){return _t(e).filter(t=>!Uu.has(t.field))}function qu(e,t){const n=t.map(r=>Qo(r.headerName||r.field)).join(" "),o=e.map(r=>t.map(i=>Qo(yn(r,i,ke(r,i.field,i)))).join(" "));return[n,...o].join(`
6
- `)}function Xu(e,t){const n=ke(e,t.field,t);try{return yn(e,t,n)}catch{return n==null?"":String(n)}}function Yu(e,t,n){const o=new Array(e.length);for(let r=0;r<e.length;r++){const i=e[r],l=new Array(t.length);for(let d=0;d<t.length;d++){const a=t[d];l[d]=n?.(i,a)?"":Qo(Xu(i,a))}o[r]=l.join(" ")}return o.join(`
7
- `)}function Nl(e){if(typeof document.execCommand!="function")return!1;const t=document.activeElement instanceof HTMLElement?document.activeElement:null,n=document.getSelection(),o=[];if(n)for(let l=0;l<n.rangeCount;l++)o.push(n.getRangeAt(l));const r=document.createElement("textarea");r.value=e,r.setAttribute("readonly",""),r.setAttribute("aria-hidden","true"),r.style.cssText="position:fixed;top:-9999px;left:-9999px;opacity:0;",document.body.appendChild(r);let i=!1;try{r.focus({preventScroll:!0}),r.select(),i=document.execCommand("copy")}finally{document.body.removeChild(r),t&&t.isConnected&&t.focus({preventScroll:!0}),n&&(n.removeAllRanges(),o.forEach(l=>n.addRange(l)))}return i}async function er(e){const t=typeof navigator<"u"?navigator.clipboard:void 0;if(t&&typeof t.writeText=="function")try{await t.writeText(e);return}catch(n){if(Nl(e))return;throw n}if(!Nl(e))throw new Error("Clipboard API not available and fallback failed.")}function Ju(e){if(!(e.ctrlKey||e.metaKey)||e.altKey||e.shiftKey)return!1;const t=e.key??"";return t.toLowerCase()==="c"?!0:e.code==="KeyC"&&!/^[a-z]$/i.test(t)}function Zu(e){const t=s.useRef(e);s.useLayoutEffect(()=>{t.current=e});const n=s.useCallback(async()=>{const{getSelectedRowIds:r,getColumns:i,getRows:l,getRowId:d}=t.current,a=new Set(r());if(a.size===0)return;const f=l().filter(w=>a.has(d(w)));if(f.length===0)return;const p=qu(f,Ru(i()));await er(p)},[]),o=!!e.disableKeyboardShortcut;return s.useEffect(()=>{if(o)return;const r=i=>{if(i.defaultPrevented||!Ju(i))return;const l=document.activeElement,d=l?.tagName.toLowerCase(),a=l?.type;if(d==="input"&&a!=="checkbox"&&a!=="radio"||d==="textarea"||d==="select"||l?.isContentEditable)return;const{getRootElement:f}=t.current;if(f){const C=f();if(!C||!l||!C.contains(l))return}const p=window.getSelection();if(p&&!p.isCollapsed&&p.toString()!=="")return;const{getShortcutText:w}=t.current;(w?()=>{const C=w();return C===null?Promise.resolve():er(C)}:n)().catch(C=>{console.error("[OpenGridX] Failed to copy to clipboard:",C)})};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[n,o]),{copySelectedRows:n}}function Qu(e){const{apiRef:t,columns:n,getRowId:o,containerRef:r,disableKeyboardShortcut:i,getCellRangeCopyText:l}=e,d=s.useCallback(()=>r.current,[r]),{copySelectedRows:a}=Zu({getSelectedRowIds:()=>t.current.getSelectedRows(),getColumns:()=>n,getRows:()=>t.current.getAllFilteredRows(),getRowId:o,getRootElement:d,disableKeyboardShortcut:i,getShortcutText:l});s.useLayoutEffect(()=>{t.current.copySelectedRows=a},[a,t])}function ef(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e}),s.useLayoutEffect(()=>{t.current.scrollToIndexes=({rowIndex:o,colIndex:r})=>{const{viewportRef:i,layout:l,rowHeight:d}=n.current,a=i.current;if(a&&(o!==void 0&&o>=0&&Tn(a,o,l.cumulativeHeights,l.pinnedBottomHeight,d),r!==void 0&&r>=0)){const p=[...l.leftPinnedCols,...l.unpinnedColsWithWidth,...l.rightPinnedCols][r];if(!p)return;bo(a,l.unpinnedColsWithWidth.findIndex(w=>w.field===p.field),l)}}},[t])}const tf=".ogx";function Il(e,t){const n=t.style.cssText;t.style.width="max-content",t.style.minWidth="0",t.style.maxWidth="none",t.style.flex="none";const o=t.getBoundingClientRect().width;t.style.cssText=n;const r=getComputedStyle(e),i=[r.paddingLeft,r.paddingRight,r.borderLeftWidth,r.borderRightWidth].reduce((l,d)=>l+(parseFloat(d)||0),0);return o+i}function nf(e,t){const n=typeof CSS<"u"&&CSS.escape?CSS.escape(t):t.replace(/["\\]/g,"\\$&"),o=l=>l.closest(tf)===e;let r=null;const i=l=>{r=r===null?l:Math.max(r,l)};return e.querySelectorAll(`[role="columnheader"][data-field="${n}"]`).forEach(l=>{if(!o(l))return;const d=l.querySelector(".ogx__header-cell-content");d&&i(Il(l,d))}),e.querySelectorAll(`[role="gridcell"][data-field="${n}"]`).forEach(l=>{if(!o(l)||l.hasAttribute("aria-colspan"))return;const d=l.querySelector(":scope > .ogx__cell-content");d&&i(Il(l,d))}),r===null?null:Math.ceil(r)}function of(e,t,n){return Math.max(t??$i,Math.min(n??1/0,e))}function rf(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e});const o=s.useCallback(i=>{const{containerRef:l,columns:d,onColumnResize:a}=n.current,f=l.current;if(!f)return;const p=[];for(const w of i??d.map(b=>b.field)){const b=d.find(g=>g.field===w);if(!b||b.resizable===!1)continue;const C=nf(f,w);C!==null&&p.push([w,of(C,b.minWidth,b.maxWidth)])}for(const[w,b]of p)a(w,b)},[]),r=s.useCallback(i=>o([i]),[o]);return s.useLayoutEffect(()=>{t.current.autosizeColumn=r,t.current.autosizeColumns=o},[t,r,o]),r}const Pl="ogx--range-dragging",pt=32,lf=40,sf=300;function Ll(e,t){if(!e||e.nodeType!==1)return null;const n=e.closest(".ogx__cell[data-field]");if(!n||n.closest(".ogx__viewport")!==t)return null;const o=n.closest(".ogx__detail-panel");if(o&&t.contains(o))return null;const r=n.closest('[role="row"][data-rowindex]');if(!r)return null;const i=Number(r.getAttribute("data-rowindex")),l=n.dataset.field;return!Number.isInteger(i)||!l?null:{rowIndex:i,field:l,element:n}}function tr(e){const t=e.getSelection();t&&t.rangeCount>0&&t.removeAllRanges()}const Tl=(e,t,n)=>Math.min(Math.max(e,t),n),jn=e=>Math.min(lf,Math.max(2,Math.round(e/2)));function af(e){process.env.NODE_ENV!=="production"&&console.warn(`[OpenGridX] Copying ${e} cells. For ranges this large, exportToCsv or exportToExcel is the better tool.`)}function cf(e){const{enabled:t,model:n,allRenderableRows:o,getRowId:r,navigationColumns:i,columnIndexMap:l,spanning:d,rowMetaMap:a,localeText:f,showStats:p}=e,w=t&&n.length>0?n[0]:null,b=s.useMemo(()=>t?i.filter(I=>je(I.field)):[],[t,i]),C=s.useMemo(()=>{if(!d.hasColSpan&&!d.hasRowSpan)return;const{colspanMap:I,rowSpanningCaches:D,getSpanOrigin:L}=d;return{getSpanOrigin:L,getColSpan:(A,V)=>{const R=I.get(A)?.[V];return R&&!R.spannedByColSpan?R.cellProps.colSpan:1},getRowSpan:(A,V)=>D.spannedCells[A]?.[V]??1}},[d]),g=s.useMemo(()=>{if(!t)return null;const I=o.map(r),D=new Map;I.forEach((A,V)=>{D.has(A)||D.set(A,V)});const L=b.map(A=>A.field);return{rowIds:I,rowIndexById:D,fields:L,colIndexByField:new Map(L.map((A,V)=>[A,V])),spans:C}},[t,o,r,b,C]),u=s.useMemo(()=>w&&g?$n(w,g):null,[w,g]),h=u!==null&&vt(u)>1,x=s.useMemo(()=>{if(!u||!h||!g)return null;const I=l.get(g.fields[u.left]),D=l.get(g.fields[u.right]);return I===void 0||D===void 0?null:{top:u.top,bottom:u.bottom,left:I,right:D}},[u,h,g,l]),m=s.useCallback(I=>Ue(I,a),[a]),y=s.useCallback((I,D,L)=>{if(g)for(let A=I.top;A<=I.bottom;A++){const V=o[A],R=g.rowIds[A];if(!(!V||m(R))){D(V,R);for(let B=I.left;B<=I.right;B++){const k=b[B],H=C?.getSpanOrigin(R,k.field);L(V,R,k,H!=null&&(H.rowId!==R||H.field!==k.field))}}}},[g,o,b,C,m]),E={...e,range:w,resolved:u,context:g,rangeColumns:b,forEachCell:y},v=s.useRef(E);s.useLayoutEffect(()=>{v.current=E});const M=s.useRef(null),N=s.useCallback(I=>{M.current=I},[]),P=s.useCallback(()=>{const{getPendingModel:I,model:D}=v.current;return I()??D},[]),z=s.useCallback(()=>{const{context:I,range:D,resolved:L,enabled:A}=v.current,V=A?P()[0]??null:null;return!V||!I?{range:null,resolved:null}:V===D?{range:V,resolved:L}:{range:V,resolved:$n(V,I)}},[P]),F=s.useCallback((I,D)=>{if(!v.current.enabled)return;const L=I.length>1?I.slice(0,1):I;ma(L,P())||v.current.onModelChange(L,D)},[P]),$=s.useCallback((I,D,L)=>{F([{anchor:I,head:D}],L)},[F]),_=s.useCallback((I,D)=>{const{viewportRef:L,layout:A,rowHeight:V,pinnedTopRowCount:R}=v.current,B=L.current;B&&(Tn(B,I-R,A.cumulativeHeights,A.pinnedBottomHeight,V),bo(B,A.unpinnedColsWithWidth.findIndex(k=>k.field===D),A))},[]),T=s.useCallback((I,D,L,A)=>{const{context:V}=v.current,{range:R,resolved:B}=z();if(!V||A.id===null||!je(A.field))return!1;const k=V.rowIndexById.get(A.id),H=V.colIndexByField.get(A.field);if(k===void 0||H===void 0)return!1;const X=R&&B&&at(R.anchor,{id:A.id,field:A.field})?{range:R,resolved:B}:null,ee=X?X.range.anchor:{id:A.id,field:A.field},ce=X?.resolved??$n({anchor:ee,head:ee},V);if(!ce)return!1;const pe=xa(ce,I,D,L,V.rowIds.length-1,V.fields.length-1);if(!pe)return!0;const me={id:V.rowIds[pe.row],field:V.fields[pe.col]};return $(ee,me,"keyboard"),_(pe.row,me.field),!0},[z,$,_]),O=s.useCallback(()=>{const{range:I,resolved:D}=z();return!I||!D||vt(D)<=1?!1:($(I.anchor,I.anchor,"keyboard"),!0)},[z,$]),S=s.useCallback(()=>{const{context:I}=v.current;return!I||I.rowIds.length===0||I.fields.length===0?!1:($({id:I.rowIds[0],field:I.fields[0]},{id:I.rowIds[I.rowIds.length-1],field:I.fields[I.fields.length-1]},"selectAll"),!0)},[$]),j=s.useCallback(()=>{const{context:I}=v.current,{range:D,resolved:L}=z();if(!I)return null;if(L)return L;if(D)return null;const A=M.current;return!A||A.id===null||!je(A.field)?null:$n({anchor:{id:A.id,field:A.field},head:{id:A.id,field:A.field}},I)},[z]),q=s.useCallback(()=>{const I=j();if(!I)return null;const{rangeColumns:D,forEachCell:L}=v.current,A=vt(I);A>va&&af(A);const V=[];if(L(I,X=>{V.push(X)},()=>{}),V.length===0)return null;const R=D.slice(I.left,I.right+1),B=v.current.context?.spans,k=v.current.getRowId;return Yu(V,R,B?(X,ee)=>{const ce=k(X),pe=B.getSpanOrigin(ce,ee.field);return pe!==null&&(pe.rowId!==ce||pe.field!==ee.field)}:void 0)},[j]),Z=s.useCallback(()=>{const{forEachCell:I}=v.current,{resolved:D}=z();if(!D)return[];const L=[];return I(D,()=>{},(A,V,R,B)=>{B||L.push({id:V,field:R.field,value:ke(A,R.field,R)})}),L},[z]),W=s.useRef(null),U=s.useRef(!1);s.useEffect(()=>()=>W.current?.stop(),[]);const Q=s.useCallback((I,D,L)=>{const A=v.current.context;if(!A)return null;const V=I.ownerDocument;if(typeof V.elementFromPoint!="function")return null;const R=Ll(V.elementFromPoint(D,L),I);if(!R)return null;const B=A.rowIds[R.rowIndex];if(B===void 0)return null;const k=je(R.field)?R.field:A.fields[0];return k===void 0?null:{id:B,field:k}},[]),ie=s.useCallback((I,D)=>{const{context:L,layout:A,pinnedTopRowCount:V}=v.current,R=A.cumulativeHeights;if(!L||R.length===0||I<0)return null;let B=0,k=R.length-1;for(;B<k;){const X=B+k>>1;R[X]>I?k=X:B=X+1}const H=L.rowIds[B+V];return H===void 0?null:{id:H,field:D}},[]),oe=s.useRef(()=>{}),ge=s.useCallback(I=>{const D=W.current,L=v.current.viewportRef.current;if(!D||!L)return;D.frame=0;const{layout:A}=v.current,V=L.getBoundingClientRect(),R=L.clientWidth,B=L.clientHeight,k=L.querySelector(":scope > .ogx__content > .ogx__sticky-top"),H=L.querySelector(":scope > .ogx__content > .ogx__sticky-bottom"),X=k?.querySelector(":scope > .ogx__header-wrap"),ee=k?k.getBoundingClientRect().bottom:V.top,ce=Math.min(V.top+B,H?H.getBoundingClientRect().top:V.top+B),pe=X?X.getBoundingClientRect().bottom:ee,me=V.left+A.pinnedSystemColumnsWidth+A.leftWidth,ye=V.left+R-A.rightWidth,_e=Tl(D.x,V.left+1,V.left+R-2);let Ce=D.y;(Ce<V.top||Ce>V.top+B||Ce<pe)&&(Ce=Tl(Ce,ee+1,Math.max(ee+1,ce-2)));const Ee=typeof L.ownerDocument.elementFromPoint=="function",be=Q(L,_e,Ce)??(Ee&&D.moved?ie(Ce-V.top-(k?k.getBoundingClientRect().height:0)+L.scrollTop,D.head.field):null);if(be&&!at(be,D.head)&&(D.head=be,!D.moved&&!at(be,D.anchor)&&(D.moved=!0,v.current.containerRef.current?.classList.add(Pl),tr(L.ownerDocument)),$(D.anchor,be,"pointer")),!I)return;const Me=D.y<ee||D.y>ce||D.x<V.left||D.x>V.left+R;if(!D.moved&&!Me)return;let ve=0,he=0;D.y<ee+pt?ve=-jn(ee+pt-D.y):D.y>ce-pt&&(ve=jn(D.y-(ce-pt))),D.x<me+pt?he=-jn(me+pt-D.x):D.x>ye-pt&&(he=jn(D.x-(ye-pt)));const fe=ve<0&&L.scrollTop>0||ve>0&&L.scrollTop+B<L.scrollHeight-1,we=he<0&&L.scrollLeft>0||he>0&&L.scrollLeft+R<L.scrollWidth-1;!fe&&!we||(fe&&(L.scrollTop+=ve),we&&(L.scrollLeft+=he),D.frame=requestAnimationFrame(()=>oe.current(!0)))},[Q,ie,$]);s.useLayoutEffect(()=>{oe.current=ge},[ge]);const le=s.useCallback((I,D,L,A,V)=>{W.current?.stop();const R=ee=>{const ce=W.current;if(ce){if(ee.buttons===0){ce.stop();return}ce.x=ee.clientX,ce.y=ee.clientY,ce.moved&&(ee.preventDefault(),tr(V)),ce.frame||(ce.frame=requestAnimationFrame(()=>ge(!0)))}},B=ee=>{const ce=W.current;if(!ce)return;ce.x=ee.clientX,ce.y=ee.clientY,ge(!1);const pe=ce.moved;ce.stop(),pe&&tr(V),pe&&(U.current=!0,setTimeout(()=>{U.current=!1},0))},k=V.defaultView,H=()=>W.current?.stop(),X={anchor:I,head:D,x:L,y:A,frame:0,moved:!1,stop:()=>{X.frame&&cancelAnimationFrame(X.frame),X.frame=0,V.removeEventListener("mousemove",R,!0),V.removeEventListener("mouseup",B,!0),k?.removeEventListener("blur",H),v.current.containerRef.current?.classList.remove(Pl),W.current===X&&(W.current=null)}};W.current=X,V.addEventListener("mousemove",R,!0),V.addEventListener("mouseup",B,!0),k?.addEventListener("blur",H)},[ge]),ue=s.useCallback(I=>{if(I.button!==0||I.defaultPrevented)return;const{context:D}=v.current;if(!D)return;const L=I.currentTarget,A=Ll(I.target,L);if(!A||!je(A.field)||A.element.classList.contains("ogx__cell--editing")||li(I.target))return;const V=D.rowIds[A.rowIndex];if(V===void 0)return;const R={id:V,field:A.field};let B=R;if(I.shiftKey){const k=P()[0],H=M.current;k&&D.rowIndexById.has(k.anchor.id)&&D.colIndexByField.has(k.anchor.field)?B=k.anchor:H&&H.id!==null&&je(H.field)&&(B={id:H.id,field:H.field}),I.preventDefault(),U.current=!0;const X=L.ownerDocument;L.contains(X.activeElement)||L.focus({preventScroll:!0})}if($(B,R,"pointer"),le(B,R,I.clientX,I.clientY,L.ownerDocument),I.shiftKey){const k=W.current;k&&!at(B,R)&&(k.moved=!0)}},[P,$,le]),te=s.useCallback(I=>{U.current&&(U.current=!1,I.stopPropagation(),I.preventDefault())},[]),ae=u?u.right-u.left+1:0,Y=u?u.bottom-u.top+1:0,re=f?.cellSelectionAnnouncement??ya,K=h?re(Y*ae,Y,ae):"",[J,ne]=s.useState("");s.useEffect(()=>{if(!t)return;const I=setTimeout(()=>ne(K),sf);return()=>clearTimeout(I)},[t,K]);const de=s.useMemo(()=>{if(!p||!u||!h)return null;const I=[];y(u,()=>{},(L,A,V,R)=>{R||I.push(ke(L,V.field,V))});const D=I.filter(L=>typeof L=="number"&&!Number.isNaN(L));return{cellCount:vt(u),rowCount:u.bottom-u.top+1,columnCount:u.right-u.left+1,count:yt.count(I),numericCount:D.length,sum:D.length?yt.sum(D):null,average:D.length?yt.avg(D):null}},[p,u,h,y]),G=s.useMemo(()=>t?{extendSelection:T,collapseSelection:O,selectAllCells:S}:void 0,[t,T,O,S]);return{enabled:t,range:w,resolved:u,displayRange:x,hasRowSpan:d.hasRowSpan,handleMouseDown:t?ue:void 0,handleClickCapture:t?te:void 0,extendSelection:T,collapseSelection:O,selectAllCells:S,keyboard:G,getCopyText:q,getSelectedCells:Z,announcement:t?J:"",stats:de,reportFocus:N,setModel:F,getCurrentRange:z}}function df(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e});const o=s.useRef(null),r=s.useRef(null),i=s.useRef(null),{selection:l,model:d,focusedCell:a,setFocusedCell:f,containerRef:p}=e,w=l.range?.anchor??null,b=l.resolved?.anchorRow;s.useLayoutEffect(()=>{l.reportFocus(a);const C=!at(o.current,w),g=!Fo(r.current,a);if(o.current=w,r.current=a,!!l.enabled){if(l.range&&!l.resolved){i.current!==d&&(i.current=d,l.setModel([],"dataChange"));return}if(C&&w){(!a||a.id!==w.id||a.field!==w.field)&&f({id:w.id,field:w.field,rowIndex:b});return}if(g&&a&&a.id!==null&&je(a.field)&&!at(w,{id:a.id,field:a.field})){const u={id:a.id,field:a.field},h=p.current?.classList.contains("ogx--kb")??!1;l.setModel([{anchor:u,head:u}],h?"keyboard":"pointer")}}},[l,d,w,b,a,f,p]),s.useLayoutEffect(()=>{const C=t.current,g=()=>n.current;C.getCellSelectionModel=()=>{const{selection:u,getPendingModel:h,model:x}=g();return u.enabled?h()??x:[]},C.setCellSelectionModel=u=>{g().selection.setModel(u,"api")},C.selectCellRange=(u,h)=>{g().selection.setModel([{anchor:u,head:h}],"api")},C.clearCellSelection=()=>{g().selection.setModel([],"clear")},C.getSelectedCells=()=>g().selection.getSelectedCells(),C.copySelectedCells=async()=>{const{selection:u}=g();if(!u.enabled)return;const h=u.getCopyText();h!==null&&await er(h)}},[t])}function Fl({count:e,sum:t,average:n}){return c.jsxs("div",{className:"ogx__cell-selection-stats",children:[c.jsxs("span",{className:"ogx__cell-selection-stat",children:[c.jsx("span",{className:"ogx__cell-selection-stat-label",children:"Count"}),c.jsx("span",{className:"ogx__cell-selection-stat-value","data-stat":"count",children:e.toLocaleString()})]}),t!==null&&c.jsxs("span",{className:"ogx__cell-selection-stat",children:[c.jsx("span",{className:"ogx__cell-selection-stat-label",children:"Sum"}),c.jsx("span",{className:"ogx__cell-selection-stat-value","data-stat":"sum",children:an(t,"sum")})]}),n!==null&&c.jsxs("span",{className:"ogx__cell-selection-stat",children:[c.jsx("span",{className:"ogx__cell-selection-stat-label",children:"Average"}),c.jsx("span",{className:"ogx__cell-selection-stat-value","data-stat":"average",children:an(n,"avg")})]})]})}function uf({stats:e,apiRef:t,slot:n,slotProps:o}){const r=n??Fl;return c.jsx("div",{className:"ogx__cell-selection-stats-area","aria-hidden":e?void 0:!0,children:e&&c.jsx(r,{apiRef:t,...e,...o})})}function ff(e){return s.useCallback(t=>{e.current?.classList.toggle("ogx--kb",t)},[e])}function gf(e){const{ensureGridFocus:t,setKeyboardMode:n,setFocusedCell:o,getRowId:r,onCellClick:i}=e,l=s.useCallback(a=>{t(),n(!1),o({id:r(a.row),field:a.field,rowIndex:a.rowIndex}),i?.(a)},[i,n,o,t,r]),d=s.useCallback(a=>{t(),o({id:null,field:a}),n(!1)},[t,o,n]);return{handleCellClick:l,handleHeaderClick:d}}function pf({paginationSlot:e,paginationSlotProps:t,page:n,paginationModel:o,rowCount:r,pageSizeOptions:i,onPaginationModelChange:l,localeText:d}){const a=e||jo;return c.jsx(a,{page:n,pageSize:o.pageSize,rowCount:r,pageSizeOptions:i,onPageChange:f=>l({...o,page:f}),onPageSizeChange:f=>l({...o,pageSize:f,page:0}),localeText:bi(d),...t})}function hf({loading:e,error:t,noRowsLabel:n,filteredRowCount:o,dataRowCount:r,filterModel:i,cellSelectionAnnouncement:l}){return c.jsxs("div",{className:"ogx-aria-live-status",role:"status","aria-live":"polite",children:[e?"Loading data...":"",t?`Error: ${Di(t)}`:"",!e&&!t&&(o===0?n:i&&((i.quickFilterValues?.length||0)>0||(i.items?.length||0)>0)?`${r} ${r===1?"row":"rows"} found`:""),l?c.jsxs("span",{className:"ogx-aria-live-status__cells",children:[" ",l]}):null]})}function mf(e){const{headerRowCount:t,pinnedTopCount:n,pinnedBottomCount:o,pageRowCount:r,totalCenterRowCount:i,pageOffset:l}=e;return{rowCount:t+n+i+o,topBase:t+1,centerOffset:t+l+1,bottomBase:t+n+i+1,bottomRowIndexOffset:n+r}}function wf(e){const{columnGroupingModel:t,pinnedTopCount:n,pinnedBottomCount:o,pagination:r,paginationMode:i,paginationModel:l,paginationRowCount:d,paginatedUnpinnedRowCount:a,sortedUnpinnedRowCount:f}=e,{page:p,pageSize:w}=l;return s.useMemo(()=>mf({headerRowCount:1+Gi(t),pinnedTopCount:n,pinnedBottomCount:o,pageRowCount:r?a:f,totalCenterRowCount:r&&i==="server"?Math.max(d,a):f,pageOffset:r?p*w:0}),[t,n,o,r,a,f,i,d,p,w])}function xf(e){const{toolbar:t,toolbarSlotProps:n,apiRef:o,orderedColumns:r,baseColumns:i,aggregationModel:l,onAggregationModelChange:d,pivotMode:a,pivotModelProp:f,onPivotModelChangeProp:p,pivotModel:w,onPivotModelChange:b,filterModel:C,onFilterModelChange:g,columnVisibilityModel:u,onColumnVisibilityModelChange:h,disableColumnReorder:x,columnGroupingModel:m,moveColumn:y,resetColumnOrder:E,forceColumnsOpen:v,onColumnsPanelClose:M}=e;return s.useMemo(()=>t?{apiRef:o,columns:r,baseColumns:i,aggregationModel:l,onAggregationModelChange:d,...a||f||p?{pivotModel:w,onPivotModelChange:b}:{},filterModel:C,onFilterModelChange:g,columnVisibilityModel:u,onColumnVisibilityModelChange:h,onColumnReorder:x?void 0:(P,z)=>{Vo(m,P,z)&&y(P,z)},onColumnOrderReset:x?void 0:E,forceColumnsOpen:v,onColumnsPanelClose:M,...n}:null,[t,x,y,E,r,o,i,l,d,a,f,p,w,b,C,g,u,h,v,M,n,m])}function bf(e){const{rows:t,columns:n,getRowId:o,rowHeight:r,headerHeight:i,wrapHeaderText:l=!1,autoHeight:d=!1,density:a,checkboxSelection:f=!1,disableRowSelectionOnClick:p=!1,disableMultipleRowSelection:w=!1,disableClipboardCopy:b=!1,cellSelection:C=!1,cellSelectionModel:g,onCellSelectionModelChange:u,showCellSelectionStats:h=!1,disableClipboardPaste:x=!1,disableRangeClear:m=!1,onClipboardPaste:y,onBeforeClipboardPaste:E,undoRedo:v=!1,onHistoryChange:M,rowSelectionModel:N,onRowSelectionModelChange:P,onRowClick:z,onRowDoubleClick:F,onCellClick:$,filterModel:_,onFilterModelChange:T,sortModel:O,onSortModelChange:S,pagination:j=!1,paginationModel:q,onPaginationModelChange:Z,pageSizeOptions:W=[10,25,50,100],pinnedColumns:U,onPinnedColumnsChange:Q,pinnedRows:ie,getDetailPanelContent:oe,getDetailPanelHeight:ge,detailPanelExpandedRowIds:le,onDetailPanelExpandedRowIdsChange:ue,pinCheckboxColumn:te=!0,pinExpandColumn:ae=!0,disableColumnReorder:Y=!1,columnOrder:re,onColumnOrderChange:K,onColumnOrderModelChange:J,height:ne,rowReordering:de=!1,onRowOrderChange:G,loading:I=!1,treeData:D=!1,getTreeDataPath:L,defaultGroupingExpansionDepth:A,groupingColDef:V,rowGroupingModel:R,aggregationModel:B,onAggregationModelChange:k,getAggregationPosition:H,isCellEditable:X,processRowUpdate:ee,onProcessRowUpdateError:ce,dataSource:pe,multiSort:me=!1,sortingMode:ye="client",filterMode:_e="client",paginationMode:Ce="client",rowCount:Ee,slots:se,slotProps:be,pivotMode:Me=!1,pivotModel:ve,onPivotModelChange:he,className:fe="",style:we,onRowsScrollEnd:Se,ariaLabel:Ne,initialState:tt,onStateChange:$e,columnVisibilityModel:Ve,onColumnVisibilityModelChange:Yt,listView:Ge=!1,listViewColumn:kt,columnGroupingModel:Et,noRowsLabel:Yn="No Data",localeText:Mt,apiRef:rr,overscanRowCount:$g=3}=e,ir=$u(n),lr=Mt?.noRowsLabel??Yn,as=R||_l,Nt=Ia({initialState:tt,sortModel:O,onSortModelChange:S,filterModel:_,onFilterModelChange:T,aggregationModel:B,onAggregationModelChange:k,columnVisibilityModel:Ve,onColumnVisibilityModelChange:Yt,pinnedColumns:U,onPinnedColumnsChange:Q,pivotModel:ve,onPivotModelChange:he,paginationModel:q,onPaginationModelChange:Z,pageSizeOptions:W,rowSelectionModel:N,onRowSelectionModelChange:P,density:a,cellSelectionModel:g,onCellSelectionModelChange:u}),{sortModel:nt,handleSortModelChange:cs,filterModel:ht,handleFilterModelChange:ds,aggregationModel:Ke,handleAggregationModelChange:Gg,columnVisibilityModel:It,handleColumnVisibilityModelChange:sr,pinnedColumns:ar,handlePinnedColumnsChange:Wg,currentPivotModel:us,handlePivotModelChange:Bg,effectivePaginationModel:He,handlePaginationModelChange:Jt,selectedRowIds:Hg,handleRowSelectionModelChange:cr,density:fs}=Nt,kn=tu({rows:t,columns:ir,pivotMode:Me,pivotModel:us,filterModel:ht,sortModel:nt,hasDataSource:!!pe,hierarchyRequested:D||as.length>0}),Pt=kn.isActive,{rowReordering:Lt,hierarchyRowGroupingModel:zg,isTreeDataRequested:Vg,isTreeData:Jn,isRowGrouping:Zt,isHierarchyEnabled:Zn,hasGroupingColumn:Kg,pagination:qe,listView:Qt}=Iu({rowGroupingModel:as,treeData:D,hasTreeDataPath:!!L,isPivotActive:Pt,rowReordering:de,hasGroupingColDef:!!V,pagination:j,paginationMode:Ce,listView:Ge,hasListViewColumn:!!kt}),{rowHeight:Xe,headerHeight:dr}=Aa({rowHeight:r,headerHeight:i,density:fs}),Ug=kn.rows,jg=kn.columns,{activeColumns:mt,effectivePinnedColumns:en}=Pu({baseColumns:jg,pinnedColumns:ar,hasGroupingColumn:Kg,groupingColDef:V,isTreeData:Jn,getTreeDataPath:L}),ur=mc(mt,It),[Rg,qg]=Zd(Ke),Ye=s.useRef(null),tn=s.useRef(null),gs=!Pt&&o||Lu,fr=ff(Ye),Qn=Yc({rows:Ug,getRowId:gs,columns:mt,rowHeight:Xe,headerHeight:dr,columnVisibilityModel:It,initialState:e.initialState,syncRows:!pe}),{state:Le,apiRef:ot,setRows:Xg,replaceRows:Yg,setColumns:Jg,setDimensions:Zg,setDataSourceLoading:Qg,setDataSourceError:ep,setRowCount:tp}=Qn,{getRowIdOf:Ie,getRowIdOfInEvents:np}=Tu(Le.rows.idByRow);Fu(rr,ot);const op=Le.dataSource.loading,wt=I||op,eo=s.useMemo(()=>Le.rows.allRows.map(it=>Le.rows.idRowsLookup.get(it)),[Le.rows]),{treeDataHandlers:to,rowGroupingHandlers:gr,activeHierarchyHandlers:nn,rowMetaMap:ze}=gd({rows:eo,getRowId:Ie,getTreeDataPath:L,isTreeDataRequested:Vg,isTreeData:Jn,columns:mt,rowGroupingModel:zg,isRowGrouping:Zt,aggregationModel:Ke,defaultGroupingExpansionDepth:A,filterModel:ht,sortModel:nt,getAggregationPosition:H,columnLookup:ur,filterMode:_e,sortingMode:ye}),pr=Od(),hr=hd({rowsLookup:Le.rows.idRowsLookup,columns:mt,processRowUpdate:ee,onProcessRowUpdateError:ce,replaceRows:Yg,onCommitted:pr.emit}),no=pd({rows:eo,getRowId:Ie,columns:mt,processRowUpdate:ee,onProcessRowUpdateError:ce,onRowChange:(it,Lp)=>{hr.storeRow(Lp,it)},onCommitted:it=>pr.emit(it,"edit")}),En=fc({selectedRowIds:Hg,rowsLookup:Le.rows.idRowsLookup,rowMetaMap:ze,enabled:!pe&&!Pt&&Ce==="client"&&_e==="client",onSelectionModelChange:cr}),ps=Xd({dataSource:pe,sortModel:nt,filterModel:ht,paginationModel:He,paginationMode:Ce,sortingMode:ye,filterMode:_e,aggregationModel:Ke,rowGroupingActive:Zt,getRowId:gs,setRows:Xg,setRowCount:tp,setDataSourceLoading:Qg,setDataSourceError:ep,onAggregationResults:qg,onPaginationModelChange:Jt});Jd({enabled:Jn&&!!pe,treeNodes:to.treeNodes,isGroupExpanded:to.isGroupExpanded,getNodePath:to.getNodePath,toggleExpansion:to.toggleExpansion,fetchChildren:ps.fetchChildren});const{hasDetailPanel:Tt,expandedRowIds:mr,handleDetailPanelToggle:hs,detailPanelHeights:rp,reportDetailPanelHeight:ip}=Qa({hasDetailPanel:!!oe,controlledExpandedRowIds:le,onDetailPanelExpandedRowIdsChange:ue,rowMetaMap:ze}),{effectiveColumns:ms,hierarchyField:wr,orderedColumns:xr,visibleOrderedColumns:ws,renderOrderedColumns:lp,navigationColumns:Mn,columnIndexMap:br,columnWidths:Nn,effectiveColumnOrder:sp,columnReorderHandlers:ap,moveColumn:xs,resetColumnOrder:bs,handleColumnResize:Cs}=Ka({activeColumns:mt,isHierarchyEnabled:Zn,isRowGrouping:Zt,isTreeData:Jn,activeHierarchyHandlers:nn,columnVisibilityModel:It,columnOrder:re,onColumnOrderChange:K,onColumnOrderModelChange:J,disableColumnReorder:Y,pivotMode:Pt,checkboxSelection:f,hasDetailPanel:Tt,rowReordering:Lt,initialState:tt,setColumns:Jg,pinnedColumns:en,getRowId:np,aggregationModel:Ke,groupingRows:Zt?gr.groupingRows:void 0});nc({onStateChange:$e,sortModel:nt,filterModel:ht,effectivePaginationModel:He,columnWidths:Nn,effectiveColumnOrder:sp,columnVisibilityModel:It,pinnedColumns:ar,density:fs});const oo=Oa({effectiveRows:eo,activeHierarchyHandlers:nn,filterMode:_e,filterModel:kn.pipelineFilterModel,sortModel:kn.pipelineSortModel,sortingMode:ye,pagination:qe,paginationMode:Ce,effectivePaginationModel:He,pinnedRows:ie,getRowId:Ie,columnLookup:ur,hierarchyField:wr}),{filteredRows:ys,dataRows:on,pinnedTopRows:We,pinnedBottomRows:Je,sortedUnpinnedRows:rt,paginatedUnpinnedRows:ro,allRenderableRows:Ft}=oo,Cr=qe?ro:rt;wc({paginationModel:He,currentPage:oo.currentPage,enabled:qe&&!wt&&rt.length>0,onPaginationModelChange:Jt});const io=Da({paginationMode:Ce,hasDataSource:!!pe,dataSourceRowCount:Le.pagination.rowCount,rowCountProp:Ee,clientRowCount:rt.length}),{rowSelection:yr,handleRowClick:vr,handleSelectionChange:Sr}=uc({dataRows:on,getRowId:Ie,isPivotActive:Pt,selectedRowIds:En,onSelectionModelChange:cr,disableMultipleRowSelection:w,disableRowSelectionOnClick:p,isHierarchyEnabled:Zn,rowMetaMap:ze,activeHierarchyHandlers:nn,onRowClick:z});hc({apiRef:Qn.apiRef,sortModel:nt,multiSort:me,onSortModelChange:cs,filterModel:ht,onFilterModelChange:ds,paginationModel:He,onPaginationModelChange:Jt,selectedRowIds:En,getPendingRowSelectionModel:Nt.getPendingRowSelectionModel,onRowSelectionModelChange:cr,disableMultipleRowSelection:w,isSyntheticRowId:it=>Ue(it,ze),getVisibleRows:()=>[...We,...Cr,...Je],getAllFilteredRows:()=>Au({hierarchyHandlers:nn,pinnedTopRows:We,sortedUnpinnedRows:rt,pinnedBottomRows:Je,rowMetaMap:ze,getRowId:Ie,hierarchyField:wr,dataRows:on}),visibleColumns:lp});const cp=Jc({rows:eo,getRowId:Ie,onRowOrderChange:G,rowReordering:Lt}),{aggregationResult:_r,isLoading:dp}=xl({rows:on,columns:mt,aggregationModel:Pt?zs:Ke,isServerSide:Fi({dataSource:pe,paginationMode:Ce,sortingMode:ye,filterMode:_e}),dataSource:pe,filterModel:ht,sortModel:nt,serverAggregationResults:Rg}),kr=Object.keys(Ke).length>0&&!Pt;Wu({apiRef:ot,hasAggregation:kr,aggregationResult:_r,aggregationModel:Ke,isRowGrouping:Zt,rowGroupingHandlers:gr,rowMetaMap:ze,columns:mt,getRowId:Ie,hierarchyField:wr});const Te=Bs({rowHeight:Xe,pagination:qe,paginatedUnpinnedRows:ro,sortedUnpinnedRows:rt,expandedRowIds:mr,getDetailPanelHeight:ge,detailPanelHeights:rp,pinnedTopRowsLength:We.length,pinnedBottomRowsLength:Je.length,pinnedTopRows:We,pinnedBottomRows:Je,visibleOrderedColumns:ws,pinnedColumns:en,columnWidths:Nn,viewportWidth:Le.dimensions.viewportWidth||1e3,checkboxSelection:f,hasDetailPanel:Tt,rowReordering:Lt,pinCheckboxColumn:te,pinExpandColumn:ae,paginationMode:Ce,isLoading:Le.dataSource.loading,pageSize:He.pageSize,getRowId:Ie}),At=zd({pinnedTopRows:We,centerRows:Cr,pinnedBottomRows:Je,columns:ws,leftPinnedColumns:Te.leftPinnedCols,unpinnedColumns:Te.unpinnedColsWithWidth,rightPinnedColumns:Te.rightPinnedCols,expandedRowIds:Tt?mr:void 0,rowMetaMap:ze,getRowId:Ie}),vs=s.useMemo(()=>[...Te.leftPinnedCols,...Te.unpinnedColsWithWidth,...Te.rightPinnedCols],[Te.leftPinnedCols,Te.unpinnedColsWithWidth,Te.rightPinnedCols]),Ae=cf({enabled:C&&!Qt,model:Nt.cellSelectionModel,onModelChange:Nt.handleCellSelectionModelChange,getPendingModel:Nt.getPendingCellSelectionModel,allRenderableRows:Ft,getRowId:Ie,navigationColumns:Mn,columnIndexMap:br,spanning:At,rowMetaMap:ze,layout:Te,rowHeight:Xe,pinnedTopRowCount:We.length,viewportRef:tn,containerRef:Ye,localeText:Mt,showStats:h});Qu({apiRef:ot,columns:vs,getRowId:Ie,containerRef:Ye,disableKeyboardShortcut:b,getCellRangeCopyText:Ae.enabled?Ae.getCopyText:void 0}),ef({apiRef:ot,viewportRef:tn,layout:Te,rowHeight:Xe});const up=rf({apiRef:ot,containerRef:Ye,columns:xr,onColumnResize:Cs}),{scrollTop:fp,scrollLeft:gp,overscanRows:pp,handleScroll:hp,setViewportElement:mp}=Ja({onRowsScrollEnd:Se,overscanRowCount:$g,rowCount:Te.unpinnedRowsLength,autoHeight:d,setDimensions:Zg,viewportRef:tn}),De=$a({layout:Te,scrollTop:fp,scrollLeft:gp,viewportWidth:Le.dimensions.viewportWidth,viewportHeight:Le.dimensions.viewportHeight,autoHeight:d,rowReordering:Lt,hasDetailPanel:Tt,checkboxSelection:f,pinCheckboxColumn:te,pinExpandColumn:ae,overscanRows:pp}),{handleSort:Ss,handleSortAdd:_s}=gc({sortModel:nt,onSortModelChange:cs}),lo=f||!p,{focusedCell:so,setFocusedCell:Er,viewportTabIndex:wp,ensureGridFocus:xp,handleFocus:bp,handleBlur:Cp,handleKeyDown:yp,handleMouseDownCapture:vp}=ka({allRenderableRows:Ft,navigationColumns:Mn,checkboxSelection:f,selectedRowIds:En,handleSelectionChange:Sr,handleDetailPanelToggle:hs,editingHandlers:no,setKeyboardMode:fr,sortModel:nt,handleSort:Ss,handleSortAdd:_s,multiSort:me,isCellEditable:X,pagination:qe,pageSize:He.pageSize,virtualization:De,viewportRef:tn,pinnedTopRowCount:We.length,getRowId:Ie,rowMetaMap:ze,getSpanOrigin:At.getSpanOrigin,onRowActivate:vr,toggleRowExpansion:nn?.toggleExpansion,handleSelectAll:yr.selectAll,rowSelectionEnabled:lo,multipleRowSelectionEnabled:!w,pinCheckboxColumn:te,pinExpandColumn:ae,rowHeight:Xe,cellSelection:Ae.keyboard}),{handleCellClick:Sp,handleHeaderClick:_p}=gf({ensureGridFocus:xp,setKeyboardMode:fr,setFocusedCell:Er,getRowId:Ie,onCellClick:$});df({apiRef:ot,selection:Ae,model:Nt.cellSelectionModel,getPendingModel:Nt.getPendingCellSelectionModel,focusedCell:so,setFocusedCell:Er,containerRef:Ye}),Ad({apiRef:ot,containerRef:Ye,viewportRef:tn,selection:Ae,disableClipboardPaste:x,disableRangeClear:m,focusedCell:so,allRenderableRows:Ft,getRowId:Ie,navigationColumns:Mn,isCellEditable:X,rowMetaMap:ze,getSpanOrigin:At.getSpanOrigin,isEditing:no.editingCell!==null,batchEdit:hr,onClipboardPaste:y,onBeforeClipboardPaste:E}),Gd({apiRef:ot,enabled:!!v,limit:typeof v=="object"&&v.limit||Dd,onHistoryChange:M,channel:pr,batchEdit:hr,isEditing:no.editingCell!==null,containerRef:Ye,viewportRef:tn,selection:Ae,setFocusedCell:Er,allRenderableRows:Ft,getRowId:Ie,navigationColumns:Mn,layout:Te,rowHeight:Xe,pinnedTopRowCount:We.length});const{handleHideColumn:kp,handlePinColumn:Ep}=pc({columnVisibilityModel:It,onColumnVisibilityModelChange:sr,pinnedColumns:ar,onPinnedColumnsChange:Wg}),In=wf({columnGroupingModel:Et,pinnedTopCount:We.length,pinnedBottomCount:Je.length,pagination:qe,paginationMode:Ce,paginationModel:He,paginationRowCount:io,paginatedUnpinnedRowCount:ro.length,sortedUnpinnedRowCount:rt.length}),Mr=Kd({spanning:At,renderContext:De.renderContext,offsetTop:De.offsetTop,cumulativeHeights:Te.cumulativeHeights}),Nr=ja({renderContext:Mr.renderContext,pinnedTopRows:We,pinnedBottomRows:Je,paginatedUnpinnedRows:ro,sortedUnpinnedRows:rt,pagination:qe,getRowId:Ie}),ao=Ud({spanning:At,firstColumnIndex:De.renderContext.firstColumnIndex,lastColumnIndex:De.renderContext.lastColumnIndex,virtualColumns:De.virtualColumns,layout:Te,rows:Nr});lc({paginationRequested:j,isRowGrouping:Zt,autoHeight:d,viewportHeight:Le.dimensions.viewportHeight,renderedRowCount:Nr.length,totalRowCount:We.length+Cr.length+Je.length,pinnedRowsIgnored:Zn&&!!(ie?.top?.length||ie?.bottom?.length),scrollHeight:De.totalHeight,listViewWithoutColumn:Ge&&!kt,listViewRowCount:Qt&&kt?Ft.length:0});const{allSelected:Mp,someSelected:Np}=yr,rn=jd(Et,ap),Ip=s.useMemo(()=>ms.some(it=>!!it.rowSpan),[ms]),Dt=xc();ac(Ye);const ks=se?.noRowsOverlay,Es=se?.loadingOverlay,Ir=Es?c.jsx(Es,{...be?.loadingOverlay}):void 0,Ms=ks?c.jsx(ks,{...be?.noRowsOverlay}):void 0,co=se?.footer,Pp=wt&&Ft.length>0&&Ce!=="infinite",Ns=se?.toolbar,Is=xf({toolbar:se?.toolbar,toolbarSlotProps:be?.toolbar,apiRef:ot,orderedColumns:xr,baseColumns:ir,aggregationModel:Ke,onAggregationModelChange:Gg,pivotMode:Me,pivotModelProp:ve,onPivotModelChangeProp:he,pivotModel:us,onPivotModelChange:Bg,filterModel:ht,onFilterModelChange:ds,columnVisibilityModel:It,onColumnVisibilityModelChange:sr,disableColumnReorder:Y,columnGroupingModel:Et,moveColumn:xs,resetColumnOrder:bs,forceColumnsOpen:Dt.toolbarPanelRequested,onColumnsPanelClose:Dt.closeToolbarPanel}),Pr={rowReordering:Lt,columnIndexMap:br,editingHandlers:no,isCellEditable:X,selectedRowIds:En,checkboxSelection:f,onRowClick:vr,onRowDoubleClick:F,onCellClick:Sp,onSelectionChange:Sr,columnWidths:Nn,pinnedColumns:en,hasDetailPanel:Tt,expandedRowIds:mr,getDetailPanelContent:oe,getDetailPanelHeight:ge,onDetailPanelToggle:hs,onDetailPanelHeightChange:ip,pinCheckboxColumn:te,pinExpandColumn:ae,focusedCell:so,colspanMap:At.colspanMap,rowSpanningCaches:At.rowSpanningCaches,rowHeight:Xe,rowMetaMap:ze,cellRange:Ae.displayRange,cellRangeHasRowSpan:Ae.hasRowSpan};return c.jsxs("div",{ref:Ye,className:["ogx",fe,d&&"ogx--auto-height",!d&&ne===void 0&&we?.height===void 0&&"ogx--fill",Ip&&"ogx--row-spanning",Qt&&"ogx--list-view"].filter(Boolean).join(" "),style:{...we,height:ne??we?.height,"--ogx-row-height":`${Xe}px`,"--ogx-header-height":`${dr}px`},"aria-busy":wt,children:[Ns&&Is&&c.jsx(Li.Provider,{value:Dt.toolbarHost,children:c.jsx(yc,{component:Ns,toolbarProps:Is})}),c.jsx(Nu,{isOpen:Dt.standalonePanelOpen,containerRef:Ye,panelRef:Dt.standalonePanelRef,columns:xr,columnVisibilityModel:It,disableColumnReorder:Y,onClose:Dt.closeStandalonePanel,onColumnVisibilityChange:sr,onColumnMove:xs,onColumnOrderReset:bs,columnGroupingModel:Et}),Qt&&kt&&c.jsx(iu,{ariaLabel:Ne,allRenderableRows:Ft,dataRowCount:on.length,pinnedTopRowCount:We.length,pinnedBottomRowCount:Je.length,unpinnedRowCount:rt.length,pagination:qe,effectivePaginationModel:He,currentPage:oo.currentPage,pageSizeOptions:W,selectedRowIds:En,listViewColumn:kt,columnsByField:ur.byField,rowMetaMap:ze,noRowsLabel:lr,rowHeight:Xe,checkboxSelection:f,paginationMode:Ce,serverRowCount:io,paginationSlot:se?.pagination,paginationSlotProps:be?.pagination,localeText:bi(Mt),onRowClick:vr,onRowDoubleClick:F,onSelectionChange:Sr,onPaginationModelChange:Jt,onRowsScrollEnd:Se,getRowId:Ie,multiselectable:lo&&!w,selectable:lo,onToggleExpansion:nn?.toggleExpansion,loading:wt,loadingOverlay:Ir,noRowsOverlay:Ms,showPaginationControls:!co}),!Qt&&c.jsx("div",{ref:mp,className:"ogx__viewport",onScroll:hp,role:"grid","aria-label":Ne||"Data grid","aria-rowcount":In.rowCount,"aria-colcount":Mn.length,"aria-multiselectable":lo&&!w||Ae.enabled,"aria-busy":wt,tabIndex:wp,onKeyDownCapture:()=>{fr(!0)},onMouseDownCapture:vp,onMouseDown:Ae.handleMouseDown,onClickCapture:Ae.handleClickCapture,onKeyDown:yp,onFocus:bp,onBlur:Cp,children:c.jsxs("div",{className:"ogx__content",style:{width:en?.right?.length?`max(100%, ${De.totalWidth}px)`:De.totalWidth},role:"presentation",children:[c.jsxs("div",{className:"ogx__sticky-top",role:"presentation",children:[c.jsx(Hi,{columns:ao,allColumns:vs,columnGroupingModel:Et,checkboxSelection:f,allSelected:Mp,someSelected:Np,onSelectAll:yr.selectAll,sortModel:nt,onSort:Ss,onSortAdd:_s,multiSort:me,onColumnResize:Cs,onColumnAutosize:up,columnWidths:Nn,pinnedColumns:en,focusedCell:so,columnIndexMap:br,onHeaderClick:_p,onDragStart:rn.onDragStart,onDragOver:rn.onDragOver,onDragEnd:rn.onDragEnd,onDrop:rn.onDrop,draggedColumn:rn.draggedColumn,dragOverColumn:rn.dragOverColumn,rowReordering:Lt,hasDetailPanel:Tt,pinCheckboxColumn:te,pinExpandColumn:ae,aggregationModel:Ke,onHideColumn:kp,onManageColumns:Dt.openColumnsPanel,onPinColumn:Ep,wrapHeaderText:l,headerHeight:dr}),c.jsx(Sl,{...Pr,rows:We,position:"top",ariaRowIndexBase:In.topBase,columns:ao,pinnedRows:ie,getRowId:Ie})]}),!wt&&!Le.dataSource.error&&ys.length===0&&c.jsx(Sc,{noRowsLabel:lr,width:De.totalWidth,overlay:Ms}),c.jsx(ku,{...Pr,virtualContainerHeight:De.totalHeight-De.pinnedTopHeight-De.pinnedBottomHeight,offsetTop:Mr.offsetTop,effectiveLoading:wt,visibleRows:Nr,baseColumns:ir,virtualColumns:ao,viewportWidth:Le.dimensions.viewportWidth,rowReorderHandlers:cp,paginationMode:Ce,dataSourceLoading:Le.dataSource.loading,sortedUnpinnedRowCount:rt.length,infiniteScrollSkeletonCount:Math.min(He.pageSize,20),unpinnedRowsLength:Te.unpinnedRowsLength,lastRenderedRowIndex:Mr.renderContext.lastRowIndex,ariaRowIndexOffset:In.centerOffset,loadingOverlay:Ir}),c.jsxs("div",{className:"ogx__sticky-bottom",role:"presentation",children:[c.jsx(Sl,{...Pr,rows:Je,position:"bottom",rowIndexOffset:In.bottomRowIndexOffset,ariaRowIndexBase:In.bottomBase,columns:ao,pinnedRows:ie,getRowId:Ie}),kr&&gr.rootAggregationPosition!==null&&c.jsx(vc,{columns:De.virtualColumns,aggregationModel:Ke,aggregationResult:_r,columnWidths:Nn,rowHeight:Xe,checkboxSelection:f,hasDetailPanel:Tt,rowReordering:Lt,pinCheckboxColumn:te,pinExpandColumn:ae,pinnedColumns:en,loading:dp})]})]})}),Ae.enabled&&h&&c.jsx(uf,{stats:Ae.stats,apiRef:Qn.apiRef,slot:se?.cellSelectionStats,slotProps:be?.cellSelectionStats}),co&&c.jsx(co,{apiRef:Qn.apiRef,aggregationModel:Ke,aggregationResult:kr?_r:null,rowCount:Zn&&Ce!=="server"?on.length:io,pagination:qe,paginationModel:He,pageSizeOptions:W,onPaginationModelChange:Jt,...be?.footer}),!Qt&&!co&&qe&&c.jsx(pf,{paginationSlot:se?.pagination,paginationSlotProps:be?.pagination,page:oo.currentPage,paginationModel:He,rowCount:io,pageSizeOptions:W,onPaginationModelChange:Jt,localeText:Mt}),c.jsx(hf,{loading:wt,error:Le.dataSource.error,noRowsLabel:lr,filteredRowCount:ys.length,dataRowCount:on.length,filterModel:ht,cellSelectionAnnouncement:Ae.announcement}),Pp&&c.jsx(lu,{overlay:Ir}),c.jsx(kc,{error:Le.dataSource.error,onRetry:pe?ps.fetchRows:void 0})]})}function Cf({rows:e=5,columns:t=5}){return c.jsx("div",{className:"ogx__skeleton",children:Array.from({length:e}).map((n,o)=>c.jsx("div",{className:"ogx__skeleton-row",children:Array.from({length:t}).map((r,i)=>c.jsx("div",{className:"ogx__skeleton-cell",children:c.jsx("div",{className:"ogx__skeleton-content"})},i))},o))})}const yf=300;function jt(e){return"field"in e&&!("items"in e)}function Al(e,t){return e.find(n=>jt(n)&&n.field===t)}function Dl(e,t){return Object.is(e,t)?!0:e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((n,o)=>Dl(n,t[o])):!1}function vf(e,t){return e===t?!0:jt(e)&&jt(t)?e.id===t.id&&e.field===t.field&&e.operator===t.operator&&Dl(e.value,t.value):!jt(e)&&!jt(t)?e.id===t.id&&e.logicOperator===t.logicOperator&&nr(e.items,t.items):!1}function nr(e,t){return e===t?!0:e.length===t.length&&e.every((n,o)=>vf(n,t[o]))}function Sf(e){return(e.valueOptions??[]).map((t,n)=>t!==null&&typeof t=="object"?{key:String(n),value:t.value,label:t.label}:{key:String(n),value:t,label:String(t)})}function Ol(e,t){return Object.is(e.value,t)?!0:t!=null&&String(e.value).toLowerCase()===String(t).toLowerCase()}function $l(e,t){return e==null?"":t.type==="date"||e instanceof Date?Ar(e)||(typeof e=="string"?e:""):Array.isArray(e)?e.map(n=>String(n)).join(", "):String(e)}function Gl(e,t){return t==="isAnyOf"?e.split(",").map(n=>n.trim()).filter(n=>n!==""):e}function _f(e,t){if(!So.has(t))return t==="isAnyOf"?e==null||e===""?[]:Array.isArray(e)?e:[e]:Array.isArray(e)?e.length>0?e[0]:"":e??""}const kf=({col:e,item:t,resetToken:n,onChange:o})=>{const r=s.useId(),i=s.useMemo(()=>Js(e.type),[e.type]),l=i[0],d=t?.operator??l,a=i.includes(d)?i:[d,...i],f=!!t,p=e.headerName||e.field,[w,b]=s.useState(null),[C,g]=s.useState(n);C!==n&&(g(n),b(null));const u=s.useRef(o),h=s.useRef(t),x=s.useRef(e);s.useLayoutEffect(()=>{u.current=o,h.current=t,x.current=e});const m=s.useCallback((T,O)=>({id:h.current?.id??`${e.field}-${Date.now()}`,field:e.field,operator:T,value:O}),[e.field]),y=s.useCallback(T=>{const O=h.current;if(O?T===$l(O.value,x.current):T.trim()==="")return;const j=O?.operator??l;u.current(m(j,Gl(T,j)))},[l,m]),E=s.useRef(null),v=s.useRef(y);s.useLayoutEffect(()=>{E.current=w,v.current=y}),s.useEffect(()=>()=>{const T=E.current;E.current=null,T!==null&&v.current(T)},[]),s.useEffect(()=>{if(w===null)return;const T=setTimeout(()=>{E.current=null,y(w),b(null)},yf);return()=>clearTimeout(T)},[w,y]);const M=T=>{const O=w!==null?Gl(w,T):t?.value;b(null),o(m(T,_f(O,T)))},N=()=>{b(null),o(null)},P=!So.has(d),z=Sf(e),F=`ogx-filter__value-input${f?" ogx-filter__value-input--active":""}`,$=`Filter value for ${p}`;let _=null;if(P&&e.type==="boolean")_=c.jsxs("select",{id:`${r}-val`,name:`filter-val-${e.field}`,className:`${F} ogx-filter__value-select`,value:t?.value==null?"":String(t.value),onChange:T=>{T.target.value===""?o(null):o(m(d,T.target.value))},"aria-label":$,children:[c.jsx("option",{value:"",children:"Any"}),c.jsx("option",{value:"true",children:"true"}),c.jsx("option",{value:"false",children:"false"})]});else if(P&&e.type==="singleSelect"&&z.length>0&&d==="isAnyOf"){const T=Array.isArray(t?.value)?t.value:t?.value==null||t.value===""?[]:[t.value];_=c.jsx("select",{id:`${r}-val`,name:`filter-val-${e.field}`,className:`${F} ogx-filter__value-multiselect`,multiple:!0,size:Math.min(z.length,4),value:z.filter(O=>T.some(S=>Ol(O,S))).map(O=>O.key),onChange:O=>{const S=new Set(Array.from(O.target.selectedOptions,j=>j.value));o(m("isAnyOf",z.filter(j=>S.has(j.key)).map(j=>j.value)))},"aria-label":$,children:z.map(O=>c.jsx("option",{value:O.key,children:O.label},O.key))})}else if(P&&e.type==="singleSelect"&&z.length>0&&(d==="is"||d==="not")){const T=z.find(O=>Ol(O,t?.value));_=c.jsxs("select",{id:`${r}-val`,name:`filter-val-${e.field}`,className:`${F} ogx-filter__value-select`,value:T?.key??"",onChange:O=>{const S=z.find(j=>j.key===O.target.value);o(m(d,S?S.value:""))},"aria-label":$,children:[c.jsx("option",{value:"",children:"Any"}),z.map(O=>c.jsx("option",{value:O.key,children:O.label},O.key))]})}else P&&(_=c.jsx(ut,{id:`${r}-val`,name:`filter-val-${e.field}`,inputClassName:F,type:e.type==="date"?"date":"text",value:w??$l(t?.value,e),onChange:T=>b(T.target.value),placeholder:e.type==="number"?"Number…":"Value…","aria-label":$}));return c.jsxs("div",{className:`ogx-filter__row${f?" ogx-filter__row--active":""}`,children:[c.jsx("span",{className:"ogx-filter__col-label",title:e.field,children:p}),c.jsxs("div",{className:"ogx-filter__controls",children:[c.jsx("select",{id:`${r}-op`,name:`filter-op-${e.field}`,className:`ogx-filter__op-select${f?" ogx-filter__op-select--active":""}`,value:d,onChange:T=>M(T.target.value),"aria-label":`Filter operator for ${p}`,children:a.map(T=>c.jsx("option",{value:T,children:T},T))}),_,f&&c.jsx("button",{type:"button",className:"ogx-filter__row-clear",onClick:N,"aria-label":`Clear filter for ${p}`,title:"Clear",children:"×"})]})]})},Wl=({filterModel:e,columns:t,onFilterModelChange:n})=>{const o=s.useMemo(()=>e.items??[],[e.items]),r=e.logicOperator??"and",[i,l]=s.useState(null),[d,a]=s.useState(o),[f,p]=s.useState(0);if(d!==o){a(o);const h=!nr(d,o),x=i!==null&&nr(i,o);h&&!x&&p(m=>m+1)}const w=s.useCallback((h,x)=>{const m=o.findIndex(E=>jt(E)&&E.field===h);let y;if(m===-1){if(!x)return;y=[...o,x]}else x?y=o.map((E,v)=>v===m?x:E):y=o.filter((E,v)=>v!==m);l(y),n({...e,items:y})},[o,e,n]),b=s.useCallback(h=>{n({...e,logicOperator:h})},[e,n]),C=t.filter(h=>h.filterable!==!1),g=C.filter(h=>Al(o,h.field)).length,u=o.length-g;return c.jsxs(c.Fragment,{children:[o.length>1&&c.jsxs("div",{className:"ogx-filter__logic-bar",children:[c.jsx("span",{className:"ogx-filter__logic-label",children:"Match:"}),c.jsx("button",{type:"button",className:`ogx-filter__logic-pill${r==="and"?" ogx-filter__logic-pill--active":""}`,onClick:()=>b("and"),"aria-pressed":r==="and",children:"ALL (AND)"}),c.jsx("button",{type:"button",className:`ogx-filter__logic-pill${r==="or"?" ogx-filter__logic-pill--active":""}`,onClick:()=>b("or"),"aria-pressed":r==="or",children:"ANY (OR)"})]}),u>0&&c.jsx("div",{className:"ogx-filter__hidden-note",role:"note",children:u===1?"1 more condition (a filter group or a second condition on a column) is applied and not shown here.":`${u} more conditions (filter groups or further conditions on a column) are applied and not shown here.`}),C.length===0?c.jsx("div",{className:"ogx-filter__empty",children:"No filterable columns."}):C.map(h=>c.jsx(kf,{col:h,item:Al(o,h.field),resetToken:f,onChange:x=>w(h.field,x)},h.field))]})},Bl=["sum","avg","count","min","max"];function Hl(){return c.jsxs("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[c.jsx("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1"}),c.jsx("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1"}),c.jsx("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1"}),c.jsx("rect",{x:"14",y:"14",width:"7",height:"7",rx:"1",fill:"currentColor",opacity:"0.25"}),c.jsx("path",{d:"M17 14v-4M17 10l-2 2 2 2"})]})}function Ef({anchorRef:e,columns:t,model:n,onChange:o,onClose:r}){const i=s.useRef(null),[l,d]=s.useState({top:0,right:0}),[a,f]=s.useState(null);s.useLayoutEffect(()=>{f(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const p=s.useCallback(()=>{if(!e.current)return{top:0,right:0};const S=e.current.getBoundingClientRect();return{top:S.bottom+6,right:Wt()-S.right}},[e]);s.useEffect(()=>{d(p());const S=()=>d(p());return window.addEventListener("scroll",S,!0),window.addEventListener("resize",S),()=>{window.removeEventListener("scroll",S,!0),window.removeEventListener("resize",S)}},[p]),s.useEffect(()=>{function S(q){i.current&&!i.current.contains(q.target)&&e.current&&!e.current.contains(q.target)&&r()}function j(q){q.key==="Escape"&&r()}return document.addEventListener("mousedown",S),document.addEventListener("keydown",j),()=>{document.removeEventListener("mousedown",S),document.removeEventListener("keydown",j)}},[e,r]);const w=new Set(n.rowFields),b=new Set(n.columnFields),C=new Set(n.valueFields.map(S=>S.field)),g=S=>w.has(S)||b.has(S)||C.has(S),u=S=>t.find(j=>j.field===S),h=S=>u(S)?.headerName??S,x=S=>{const j=u(S)?.availableAggregationFunctions;return j?Bl.filter(q=>j.includes(q)):Bl},m=S=>S.aggregable!==!1&&(S.type==="number"||S.aggregable===!0)&&x(S.field).length>0,y=S=>S.groupable!==!1;function E(S){w.has(S)||o({...n,rowFields:[...n.rowFields,S]})}function v(S){b.has(S)||o({...n,columnFields:[...n.columnFields,S]})}function M(S){C.has(S)||o({...n,valueFields:[...n.valueFields,{field:S,aggFn:x(S)[0]??"sum"}]})}function N(S){o({...n,rowFields:n.rowFields.filter((j,q)=>q!==S)})}function P(S){o({...n,columnFields:n.columnFields.filter((j,q)=>q!==S)})}function z(S){o({...n,valueFields:n.valueFields.filter((j,q)=>q!==S)})}function F(S,j){o({...n,valueFields:n.valueFields.map((q,Z)=>Z===S?{...q,aggFn:j}:q)})}function $(){o({rowFields:[],columnFields:[],valueFields:[]})}const _=n.rowFields.length+n.columnFields.length+n.valueFields.length,T=t.filter(S=>!g(S.field)&&(y(S)||m(S))),O=c.jsxs("div",{ref:i,className:"ogx-pivot-panel",role:"dialog","aria-label":"Pivot configuration",style:{top:l.top,right:l.right},children:[c.jsxs("div",{className:"ogx-pivot-panel__header",children:[c.jsxs("span",{className:"ogx-pivot-panel__title",children:[c.jsx(Hl,{}),"Pivot Mode"]}),_>0&&c.jsx("button",{type:"button",className:"ogx-pivot-panel__reset-btn",onClick:$,title:"Reset pivot",children:"Reset"})]}),c.jsxs("div",{className:"ogx-pivot-panel__body",children:[c.jsxs("div",{className:"ogx-pivot-zone",children:[c.jsxs("span",{className:"ogx-pivot-zone__label",children:[c.jsx("span",{className:"ogx-pivot-zone__dot ogx-pivot-zone__dot--row"}),"Row Fields"]}),c.jsx("div",{className:`ogx-pivot-chips${n.rowFields.length===0?" ogx-pivot-chips--empty":""}`,"data-placeholder":"Add fields here — each becomes a row label",children:n.rowFields.map((S,j)=>c.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--row",children:[h(S),c.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>N(j),title:`Remove ${h(S)}`,"aria-label":`Remove ${h(S)} from Row Fields`,children:"×"})]},`${j}:${S}`))})]}),c.jsxs("div",{className:"ogx-pivot-zone",children:[c.jsxs("span",{className:"ogx-pivot-zone__label",children:[c.jsx("span",{className:"ogx-pivot-zone__dot ogx-pivot-zone__dot--col"}),"Column Fields"]}),c.jsx("div",{className:`ogx-pivot-chips${n.columnFields.length===0?" ogx-pivot-chips--empty":""}`,"data-placeholder":"Add fields here — unique values become column headers",children:n.columnFields.map((S,j)=>c.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--col",children:[h(S),c.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>P(j),title:`Remove ${h(S)}`,"aria-label":`Remove ${h(S)} from Column Fields`,children:"×"})]},`${j}:${S}`))})]}),c.jsxs("div",{className:"ogx-pivot-zone",children:[c.jsxs("span",{className:"ogx-pivot-zone__label",children:[c.jsx("span",{className:"ogx-pivot-zone__dot ogx-pivot-zone__dot--value"}),"Value Fields (aggregated)"]}),c.jsx("div",{className:`ogx-pivot-chips${n.valueFields.length===0?" ogx-pivot-chips--empty":""}`,"data-placeholder":"Add numeric fields here — values are aggregated",children:n.valueFields.map((S,j)=>{const q=x(S.field),Z=q.includes(S.aggFn)?q:[S.aggFn,...q];return c.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--value",children:[h(S.field),c.jsx("select",{className:"ogx-pivot-chip__fn-select",value:S.aggFn,onChange:W=>F(j,W.target.value),title:"Aggregation function","aria-label":`Aggregation function for ${h(S.field)}`,children:Z.map(W=>c.jsx("option",{value:W,children:W.toUpperCase()},W))}),c.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>z(j),title:`Remove ${h(S.field)}`,"aria-label":`Remove ${h(S.field)} (${S.aggFn.toUpperCase()}) from Value Fields`,children:"×"})]},`${j}:${S.field}:${S.aggFn}`)})})]}),c.jsx("hr",{className:"ogx-pivot-panel__divider"}),c.jsxs("div",{children:[c.jsx("div",{className:"ogx-pivot-panel__fields-label",children:"Available Fields"}),c.jsxs("div",{className:"ogx-pivot-fields",children:[T.map(S=>{const j=m(S),q=y(S),Z=S.headerName??S.field;return c.jsxs("div",{style:{display:"flex",alignItems:"center",gap:3},children:[c.jsx("span",{className:`ogx-pivot-field-btn${j?" ogx-pivot-field-btn--numeric":""}`,children:Z}),c.jsxs("div",{className:"ogx-pivot-field-actions",children:[q&&c.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--row",onClick:()=>E(S.field),title:"Add to Row Fields","aria-label":`Add ${Z} to Row Fields`,children:"Row"}),q&&c.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--col",onClick:()=>v(S.field),title:"Add to Column Fields","aria-label":`Add ${Z} to Column Fields`,children:"Col"}),j&&c.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--value",onClick:()=>M(S.field),title:"Add to Value Fields","aria-label":`Add ${Z} to Value Fields`,children:"Val"})]})]},S.field)}),T.length===0&&c.jsx("span",{style:{fontSize:12,color:"var(--ogx-color-gray-400, #94a3b8)"},children:"All fields are in use."})]})]})]})]});return a?xt.createPortal(O,a):null}function Mf(){return c.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("circle",{cx:"11",cy:"11",r:"8"}),c.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]})}function Nf(){return c.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),c.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function zl(e){return e.trim().split(/\s+/).filter(Boolean).join(" ")}function If({value:e="",onChange:t,placeholder:n="Search...",debounceMs:o=250}){const[r,i]=s.useState(()=>e.length>0),[l,d]=s.useState(e),a=s.useRef(null),f=s.useRef(null),p=s.useRef(t);s.useLayoutEffect(()=>{p.current=t},[t]);const w=s.useRef(e),b=s.useRef(e);s.useEffect(()=>{e!==b.current&&(b.current=e,zl(e)!==zl(w.current)&&(d(e),w.current=e,i(e.length>0)))},[e]),s.useEffect(()=>{const m=setTimeout(()=>{l!==w.current&&(w.current=l,p.current(l))},o);return()=>clearTimeout(m)},[l,o]);const C=s.useRef(l);s.useLayoutEffect(()=>{C.current=l}),s.useEffect(()=>()=>{const m=C.current;m!==w.current&&(w.current=m,p.current(m))},[]);const g=s.useCallback(()=>{i(!0),requestAnimationFrame(()=>a.current?.focus())},[]),u=s.useCallback(m=>{m.stopPropagation(),d(""),w.current="",p.current(""),a.current?.focus()},[]),h=s.useCallback(()=>{i(!0)},[]),x=s.useCallback(()=>{setTimeout(()=>{f.current&&document.activeElement&&f.current.contains(document.activeElement)||l||i(!1)},150)},[l]);return s.useEffect(()=>{const m=y=>{f.current&&!f.current.contains(y.target)&&(l||i(!1))};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[l]),c.jsxs("div",{ref:f,className:`ogx-global-search${r?" ogx-global-search--expanded":""}`,onClick:r?void 0:g,children:[c.jsx("div",{className:"ogx-global-search__icon-wrapper",children:c.jsx(Mf,{})}),c.jsx(ut,{ref:a,inputClassName:"ogx-global-search__input",value:l,onChange:m=>d(m.target.value),onFocus:h,onBlur:x,placeholder:n,"aria-label":"Global Search",autoComplete:"off"}),l&&c.jsx("button",{type:"button",className:"ogx-global-search__clear",onClick:u,"aria-label":"Clear search",children:c.jsx(Nf,{})})]})}const Rn=8;function vn({title:e,children:t,placement:n="top",enterDelay:o=200,leaveDelay:r=0}){const[i,l]=s.useState(!1),[d,a]=s.useState({top:0,left:0}),[f,p]=s.useState(null),w=s.useRef(null),b=s.useRef(null),C=s.useId(),g=s.useCallback(()=>{if(!b.current)return;const v=b.current.getBoundingClientRect(),M=v.left+v.width/2,N=v.top+v.height/2;switch(n){case"bottom":a({top:v.bottom+Rn,left:M});break;case"left":a({top:N,left:v.left-Rn});break;case"right":a({top:N,left:v.right+Rn});break;default:a({top:v.top-Rn,left:M})}},[n]),u=s.useCallback(()=>{w.current&&clearTimeout(w.current),w.current=null},[]);s.useLayoutEffect(()=>{if(!i)return;g();const v=M=>{M.key==="Escape"&&(u(),l(!1))};return window.addEventListener("scroll",g,!0),window.addEventListener("resize",g),document.addEventListener("keydown",v),()=>{window.removeEventListener("scroll",g,!0),window.removeEventListener("resize",g),document.removeEventListener("keydown",v)}},[i,g,u]),s.useEffect(()=>u,[u]);const h=()=>{u(),w.current=setTimeout(()=>{p(b.current?.closest(".ogx-theme-provider")??document.body),l(!0)},o)},x=()=>{u(),w.current=setTimeout(()=>{l(!1)},r)},m=s.useCallback(v=>{b.current=v?v.firstElementChild??v:null},[]),y=i&&!!e&&f!==null;let E=t;if(y&&s.isValidElement(t)){const v=t,M=v.props["aria-describedby"];E=s.cloneElement(v,{"aria-describedby":M?`${M} ${C}`:C})}return c.jsxs(c.Fragment,{children:[c.jsx("span",{ref:m,style:{display:"inline-block",lineHeight:0},onMouseEnter:h,onMouseLeave:x,onFocus:h,onBlur:x,children:E}),y&&f&&xt.createPortal(c.jsx("div",{id:C,role:"tooltip",className:`ogx-tooltip ogx-tooltip--${n}`,style:{top:d.top,left:d.left,position:"fixed",zIndex:99999},children:e}),f)]})}const Pf=Object.keys(yt);function Lf(e){return Object.prototype.hasOwnProperty.call(yt,e)}function Vl(e){return e.availableAggregationFunctions?Array.from(new Set(e.availableAggregationFunctions.filter(Lf))):Pf}function Kl(){return c.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:c.jsx("path",{d:"M18 4H6l6 8-6 8h12"})})}function Tf(){return c.jsxs("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",children:[c.jsx("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("rect",{x:"8.5",y:"4",width:"7",height:"16",fill:"currentColor",opacity:"0.25"}),c.jsx("line",{x1:"8.5",y1:"4",x2:"8.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("line",{x1:"15.5",y1:"4",x2:"15.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("line",{x1:"2",y1:"9",x2:"22",y2:"9",stroke:"currentColor",strokeWidth:"1.2"}),c.jsx("line",{x1:"2",y1:"14",x2:"22",y2:"14",stroke:"currentColor",strokeWidth:"1.2"})]})}function Ul(){return c.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:c.jsx("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"})})}function Ff({anchorRef:e,aggregationModel:t,aggregableColumns:n,onFunctionChange:o,onClearAll:r,onClose:i,activeCount:l}){const d=s.useRef(null),[a,f]=s.useState({top:0,right:0}),[p,w]=s.useState(null);s.useLayoutEffect(()=>{w(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const b=s.useCallback(()=>{if(!e.current)return{top:0,right:0};const g=e.current.getBoundingClientRect();return{top:g.bottom+6,right:Wt()-g.right}},[e]);s.useEffect(()=>{f(b());const g=()=>f(b());return window.addEventListener("scroll",g,!0),window.addEventListener("resize",g),()=>{window.removeEventListener("scroll",g,!0),window.removeEventListener("resize",g)}},[b]),s.useEffect(()=>{function g(u){d.current&&!d.current.contains(u.target)&&e.current&&!e.current.contains(u.target)&&i()}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[e,i]),s.useEffect(()=>{function g(u){u.key==="Escape"&&i()}return document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[i]);const C=c.jsxs("div",{ref:d,className:"ogx-toolbar__panel",role:"dialog","aria-label":"Summaries configuration",style:{top:a.top,right:a.right,width:400,maxWidth:"calc(100vw - 24px)"},children:[c.jsxs("div",{className:"ogx-toolbar__panel-header",children:[c.jsxs("span",{className:"ogx-toolbar__panel-title",children:[c.jsx(Kl,{}),"Summaries"]}),l>0&&c.jsx("button",{type:"button",className:"ogx-toolbar__clear-btn",onClick:r,title:"Clear all summaries",children:"Clear all"})]}),c.jsx("div",{className:"ogx-toolbar__panel-body",children:n.length===0?c.jsxs("p",{className:"ogx-toolbar__empty",children:["No aggregable columns.",c.jsx("br",{}),"Set ",c.jsx("code",{children:"aggregable: true"})," on a column to enable."]}):n.map(g=>{const u=t[g.field]||"none";return c.jsxs("div",{className:"ogx-toolbar__agg-row",children:[c.jsx("span",{className:"ogx-toolbar__agg-label",title:g.field,children:g.headerName||g.field}),c.jsx("div",{className:"ogx-toolbar__agg-pills",children:["none",...Vl(g)].map(h=>c.jsx("button",{type:"button",className:`ogx-toolbar__pill${u===h?" ogx-toolbar__pill--active":""}`,onClick:()=>o(g.field,h),"aria-pressed":u===h,children:h},h))})]},g.field)})})]});return p?xt.createPortal(C,p):null}function Af({anchorRef:e,columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:d,onClose:a,showNonHideableColumns:f}){const p=s.useRef(null),[w,b]=s.useState({top:0,right:0}),[C,g]=s.useState(null);s.useLayoutEffect(()=>{g(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const u=s.useCallback(()=>{if(!e.current)return{top:0,right:0};const x=e.current.getBoundingClientRect();return{top:x.bottom+6,right:Wt()-x.right}},[e]);s.useEffect(()=>{b(u());const x=()=>b(u());return window.addEventListener("scroll",x,!0),window.addEventListener("resize",x),()=>{window.removeEventListener("scroll",x,!0),window.removeEventListener("resize",x)}},[u]),s.useEffect(()=>{function x(m){p.current&&!p.current.contains(m.target)&&e.current&&!e.current.contains(m.target)&&a()}return document.addEventListener("mousedown",x),()=>document.removeEventListener("mousedown",x)},[e,a]),s.useEffect(()=>{function x(m){m.key==="Escape"&&a()}return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[a]);const h=c.jsx("div",{ref:p,className:"ogx-toolbar__panel",role:"dialog","aria-label":"Column visibility",style:{top:w.top,right:w.right,width:280,padding:0},children:c.jsx(Yo,{columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:d,showNonHideableColumns:f})});return C?xt.createPortal(h,C):null}function Df({anchorRef:e,columns:t,filterModel:n,onFilterModelChange:o,onClose:r}){const i=s.useRef(null),[l,d]=s.useState({top:0,right:0}),a=s.useRef(r);s.useLayoutEffect(()=>{a.current=r},[r]);const[f,p]=s.useState(null);s.useLayoutEffect(()=>{p(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const w=s.useCallback(()=>{if(!e.current)return{top:0,right:0};const u=e.current.getBoundingClientRect();return{top:u.bottom+6,right:Wt()-u.right}},[e]);s.useEffect(()=>{d(w());const u=()=>d(w());return window.addEventListener("scroll",u,!0),window.addEventListener("resize",u),()=>{window.removeEventListener("scroll",u,!0),window.removeEventListener("resize",u)}},[w]),s.useEffect(()=>{function u(h){h.key==="Escape"&&a.current()}return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[]);const b=n.items?.length??0,C=()=>{o({...n,items:[],logicOperator:"and"})},g=c.jsxs("div",{ref:i,className:"ogx-toolbar__panel ogx-toolbar__panel--filter",role:"dialog","aria-label":"Advanced filters",style:{top:l.top,right:l.right,width:540,maxWidth:"calc(100vw - 24px)"},children:[c.jsxs("div",{className:"ogx-toolbar__panel-header",children:[c.jsxs("span",{className:"ogx-toolbar__panel-title",children:[c.jsx(Ul,{}),"Filters",b>0&&c.jsx("span",{className:"ogx-toolbar__panel-count",children:b})]}),c.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[b>0&&c.jsx("button",{type:"button",className:"ogx-toolbar__clear-btn",onClick:C,title:"Clear all filters",children:"Clear all"}),c.jsx("button",{type:"button",className:"ogx-toolbar__close-btn",onClick:()=>a.current(),title:"Close filters","aria-label":"Close filters panel",children:"Close"})]})]}),c.jsx("div",{className:"ogx-toolbar__panel-body ogx-toolbar__panel-body--filter",children:c.jsx(Wl,{columns:t,filterModel:n,onFilterModelChange:o})})]});return f?xt.createPortal(g,f):null}const Of={rowFields:[],columnFields:[],valueFields:[]},$f=[];function Gf({columns:e=$f,baseColumns:t,aggregationModel:n={},onAggregationModelChange:o,pivotModel:r,onPivotModelChange:i,filterModel:l,onFilterModelChange:d,columnVisibilityModel:a={},onColumnVisibilityModelChange:f,onColumnReorder:p,onColumnOrderReset:w,forceColumnsOpen:b,onColumnsPanelClose:C,children:g,rightContent:u,style:h,renderColumnsButton:x,renderFilterButton:m,renderAggregationButton:y,renderExportButton:E,renderQuickFilter:v,className:M,showNonHideableColumns:N}){const[P,z]=s.useState(b?"columns":null),F=P==="summaries",$=P==="pivot",_=P==="columns",T=P==="filters",O=B=>{P==="columns"&&B!=="columns"&&C?.(),z(B)},S=B=>O(P===B?null:B),j=B=>{P===B&&O(null)},[q,Z]=s.useState(b);q!==b&&(Z(b),b&&z("columns"));const W=s.useContext(Li),U=b!==void 0&&!!f;s.useEffect(()=>{if(!(!W||!U))return W.registerColumnsPanel()},[W,U]);const Q=s.useRef(null),ie=s.useRef(null),oe=s.useRef(null),ge=s.useRef(null),le=s.useRef(null),ue=s.useRef(null),te=s.useRef(null),ae=r??Of,Y=ae.rowFields.length>0||ae.columnFields.length>0||ae.valueFields.length>0,re=t?new Set(t.map(B=>B.field)):null,K=e.filter(B=>B.aggregable!==!1&&(B.type==="number"||B.aggregable===!0)&&Vl(B).length>0&&(!re||re.has(B.field))),J=Object.keys(n).filter(B=>n[B]&&n[B]!=="none").length,ne=s.useCallback((B,k)=>{if(!o)return;const H={...n};k==="none"?delete H[B]:H[B]=k,o(H)},[n,o]),de=s.useCallback(()=>{o?.({})},[o]),G=s.useCallback(B=>{if(!d)return;const k=B.trim().split(/\s+/).filter(Boolean),H={...l||{},quickFilterValues:k,items:l?.items||[]};d(H)},[l,d]),I=(l?.quickFilterValues??[]).join(" "),D=l?.items?.length||0,L=new Set(e.filter(B=>a[B.field]!==!1).map(B=>B.field)),A=s.useCallback((B,k)=>{if(!f)return;const H={...a,[B]:k};f(H)},[a,f]),V=s.useCallback(()=>{if(!f)return;const B={...a};e.forEach(k=>{k.hideable!==!1&&(B[k.field]=!0)}),f(B)},[e,a,f]),R=s.useCallback(()=>{if(!f)return;const B={...a};e.forEach(k=>{k.hideable!==!1&&(B[k.field]=!1)}),f(B)},[e,a,f]);return c.jsxs("div",{className:["ogx-toolbar",M].filter(Boolean).join(" "),role:"toolbar","aria-label":"Grid toolbar",style:h,children:[g&&c.jsx("div",{className:"ogx-toolbar__left",children:g}),c.jsx("div",{className:"ogx-toolbar__spacer"}),c.jsxs("div",{className:"ogx-toolbar__actions",children:[d&&c.jsx("div",{className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:v?v({value:I,onChange:G}):c.jsx(If,{value:I,onChange:G,placeholder:"Search..."})}),f&&c.jsxs("div",{ref:le,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[x?x({onClick:()=>S("columns"),isOpen:_,activeCount:e.length-L.size}):c.jsx(vn,{title:"Columns",children:c.jsx("button",{type:"button",ref:oe,className:`ogx-toolbar__icon-btn${_?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Manage columns","aria-haspopup":"dialog","aria-expanded":_,onClick:()=>S("columns"),children:c.jsx(Tf,{})})}),_&&c.jsx(Af,{anchorRef:x?le:oe,columns:e,visibleColumns:L,onVisibilityChange:A,onShowAll:V,onHideAll:R,onColumnReorder:p,onColumnOrderReset:w,onClose:()=>j("columns"),showNonHideableColumns:N})]}),d&&c.jsxs("div",{ref:ue,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[m?m({onClick:()=>S("filters"),isOpen:T,activeCount:D}):c.jsx(vn,{title:"Filters",children:c.jsxs("button",{type:"button",ref:ge,className:`ogx-toolbar__icon-btn${T?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Advanced filters","aria-haspopup":"dialog","aria-expanded":T,onClick:()=>S("filters"),children:[c.jsx(Ul,{}),D>0&&c.jsx("span",{className:"ogx-toolbar__dot","aria-label":"Filters active"})]})}),T&&c.jsx(Df,{anchorRef:m?ue:ge,columns:e,filterModel:l||{items:[]},onFilterModelChange:d,onClose:()=>j("filters")})]}),i&&c.jsxs("div",{className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[c.jsx(vn,{title:"Pivot",children:c.jsxs("button",{type:"button",ref:ie,className:`ogx-toolbar__icon-btn${$?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Configure pivot","aria-haspopup":"dialog","aria-expanded":$,onClick:()=>S("pivot"),children:[c.jsx(Hl,{}),Y&&c.jsx("span",{className:"ogx-toolbar__dot","aria-label":"Pivot active"})]})}),$&&c.jsx(Ef,{anchorRef:ie,columns:t??e,model:ae,onChange:B=>{i?.(B)},onClose:()=>j("pivot")})]}),o&&c.jsxs("div",{ref:te,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[y?y({onClick:()=>S("summaries"),isOpen:F,activeCount:J}):c.jsx(vn,{title:"Summaries",children:c.jsxs("button",{type:"button",ref:Q,className:`ogx-toolbar__icon-btn${F?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Configure summaries","aria-haspopup":"dialog","aria-expanded":F,onClick:()=>S("summaries"),children:[c.jsx(Kl,{}),J>0&&c.jsx("span",{className:"ogx-toolbar__dot","aria-label":`${J} active summaries`})]})}),F&&c.jsx(Ff,{anchorRef:y?te:Q,aggregationModel:n,aggregableColumns:K,onFunctionChange:ne,onClearAll:de,onClose:()=>j("summaries"),activeCount:J})]}),E&&E(),u]})]})}function Wf(){const[e]=s.useState(zi);return s.useRef(e)}function Rt(e,t){if(e.groupLabel!==void 0)return e.groupLabel;const n=e.groupField??"",o=t.find(r=>r.field===n)?.groupingValueFormatter;return o?o({field:n,value:e.groupValue}):`${n}: ${String(e.groupValue??"")}`}const Bf=new Set([8364,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,381,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,382,376]);function Hf(e){return e>=8192&&e<=8202||e===8239||e===8287||e===12288?" ":e>=8203&&e<=8205||e===8288||e===65279?"":e===8208||e===8209||e===8210||e===8722?"-":null}function zf(e){let t="",n=!1;for(const o of e){const r=o.codePointAt(0)??0;if(r<=255||Bf.has(r)){t+=o;continue}const i=Hf(r);i!==null?t+=i:(t+="?",n=!0)}return{text:t,lossy:n}}const Vf={sliceMs:30,renderChunkRows:40},Kf=2e4;function jl(){return new Promise(e=>setTimeout(e,0))}function Uf(){return new DOMException("PDF export was aborted","AbortError")}const qt=()=>typeof performance<"u"?performance.now():Date.now(),Rl=e=>Math.max(2,Math.floor(e/2)*2),jf=[79,70,229],Rf=[255,255,255];function ql(e,t){const n=e.trim().replace(/^#/,""),o=/^[a-f\d]{3}$/i.test(n)?n.split("").map(i=>i+i).join(""):n,r=/^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(o);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:t}function Xl(e,t){return yn(e,t,Cn(e,t))}function Yl(e){return(typeof e.width=="number"?e.width:void 0)??(e.flex??1)*100}function qf(e,t){const n=e.reduce((r,i)=>r+Yl(i),0),o={};return e.forEach((r,i)=>{o[i]={cellWidth:Yl(r)/n*t}}),o}const Xf=new Set(["isEmpty","isNotEmpty"]);function Yf(e,t){const o=t.find(l=>l.field===e.field)?.headerName??e.field;if(Xf.has(e.operator))return`${o} ${e.operator}`;const{value:r}=e;if(r==null||r===""||Array.isArray(r)&&r.length===0)return null;const i=Array.isArray(r)?r.map(String).join(", "):String(r);return`${o} ${e.operator} "${i}"`}function Jl(e,t,n,o){const r=e.map(l=>"items"in l?Jl(l.items,l.logicOperator,n,!0):Yf(l,n)).filter(l=>!!l);if(r.length===0)return"";const i=r.join(t==="or"?" OR ":" AND ");return o&&r.length>1?`(${i})`:i}function Jf(e,t){const n=[],o=Jl(e.items??[],e.logicOperator??"and",t,!1);o&&n.push(o);const r=(e.quickFilterValues??[]).filter(i=>i.trim()!=="");return r.length>0&&n.push(`Search: ${r.map(i=>`"${i}"`).join(" ")}`),n.join(" • ")}const Zf=1.15*.3528;function Qf(e,t,n={}){return eg(e,t,n,Vf)}async function eg(e,t,n,o){const{signal:r,onProgress:i}=n,l=()=>{if(r?.aborted)throw Uf()};l();let d,a;try{const[k,H]=await Promise.all([import("jspdf"),import("jspdf-autotable")]);d=k.default,a=H.default}catch{throw new Error("exportToPdf requires 'jspdf' and 'jspdf-autotable'. Run: npm install jspdf jspdf-autotable")}const{fileName:f="export",title:p,logoUrl:w,orientation:b="landscape",selectedRows:C,getRowId:g,aggregationResult:u,aggregationModel:h,filterModel:x,alternateRowColor:m=!0,headerBackgroundColor:y="#4f46e5",headerTextColor:E="#ffffff",fontSize:v=9,groupedRows:M,font:N,maxRows:P=Kf}=n;l();let z=qt();const F=async()=>{qt()-z<o.sliceMs||(await jl(),l(),z=qt())},$=(k,H,X)=>{i?.({phase:k,done:H,total:X})},_=new d({orientation:b,unit:"mm",format:"a4"}),T=_.internal.pageSize.getWidth(),O=_.internal.pageSize.getHeight(),S=14,j=T-S*2;let q="helvetica";N&&(_.addFileToVFS(`${N.name}-normal.ttf`,N.data),_.addFont(`${N.name}-normal.ttf`,N.name,"normal"),N.boldData&&_.addFileToVFS(`${N.name}-bold.ttf`,N.boldData),_.addFont(N.boldData?`${N.name}-bold.ttf`:`${N.name}-normal.ttf`,N.name,"bold"),q=N.name);let Z=!1;const W=k=>{if(N)return k;const H=zf(k);return H.lossy&&(Z=!0),H.text},U=(k,H,X,ee,ce)=>{const pe=_.splitTextToSize(W(k),ee);return _.text(pe.length===1?pe[0]:pe,H,X),Math.max(0,pe.length-1)*ce*Zf},Q=_t(t),ie=bn(M,C),oe=xn(e,C,g);let ge=S;if(p){let k=S,H=S+8;if(w)try{_.addImage(w,"PNG",k,S,10,10),k+=14}catch{}const X=T-S-k;_.setFontSize(16),_.setFont(q,"bold"),_.setTextColor(30,41,59),H+=U(p,k,H,X,16),H+=6,_.setFontSize(8),_.setFont(q,"normal"),_.setTextColor(100,116,139);const ee=new Date().toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),ce=ie?M.filter(pe=>pe.type==="leaf").length:oe.length;if(_.text(W(`Exported: ${ee} • ${ce} row${ce!==1?"s":""}`),k,H),H+=5,x){const pe=Jf(x,t);pe&&(H+=U(`Filters: ${pe}`,k,H,X,8),H+=5)}_.setDrawColor(226,232,240),_.setLineWidth(.3),_.line(S,H+2,T-S,H+2),ge=H+6}const le=[Q.map(k=>W(k.headerName??k.field))],ue=h||{},te=k=>Q.map(H=>Jo(H,ue[H.field],k[H.field],k)),ae=[];let Y;const re=k=>{ae.push(k.map(W))};if(ie){const k=M.length;$("prepare",0,k);for(let H=0;H<k;H++){const X=M[H],ee=" ".repeat(X.depth*2);if(X.type==="group-header"){const ce=`${ee}${Rt(X,t)}`;re(Q.map((pe,me)=>me===0?ce:""))}else if(X.type==="leaf"&&X.row){const ce=X.row;re(Q.map((pe,me)=>(me===0?ee:"")+Xl(ce,pe)))}else if(X.type==="group-subtotal"&&X.aggregatedValues){const ce=te(X.aggregatedValues);re(ce.map((pe,me)=>me===0?`${ee}${Ut("Subtotal",pe)}`:pe))}else X.type==="grand-total"&&X.aggregatedValues&&(Y=[te(X.aggregatedValues).map((pe,me)=>me===0?Ut("Grand Total",pe):pe).map(W)]);(H&63)===63&&($("prepare",H+1,k),await F())}$("prepare",k,k)}else{const k=oe.length;$("prepare",0,k);for(let X=0;X<k;X++)re(Q.map(ee=>Xl(oe[X],ee))),(X&63)===63&&($("prepare",X+1,k),await F());const H=h?Kt(oe,ft(C),t,u,h):null;if(H&&h){const X=Q.some(ce=>h[ce.field]);Y=[te(H).map((ce,pe)=>pe===0&&X?Ut("TOTAL",ce):ce).map(W)]}$("prepare",k,k)}l(),ae.length>P&&process.env.NODE_ENV!=="production"&&console.warn(`[exportToPdf] Exporting ${ae.length} table rows (maxRows: ${P}). PDFs this large are slow to build and open and can reach tens of MB. Prefer exportToCsv or exportToExcelAdvanced for full-dataset exports, or pass a larger \`maxRows\` to silence this warning.`),Z&&console.warn('[exportToPdf] Some characters cannot be drawn with the built-in Helvetica font and were replaced with "?". Pass the `font` option (a Unicode .ttf, e.g. Noto Sans) to draw them.');const K=qf(Q,j),[J,ne,de]=ql(y,jf),[G,I,D]=ql(E,Rf),L={head:le,styles:{fontSize:v,cellPadding:3,font:q,overflow:"linebreak"},headStyles:{fillColor:[J,ne,de],textColor:[G,I,D],fontStyle:"bold"},...m?{alternateRowStyles:{fillColor:[248,250,252]}}:{},...Y?{footStyles:{fillColor:[241,245,249],fontStyle:"bold",textColor:[0,0,0]}}:{},columnStyles:K,showHead:"everyPage",margin:{top:S,left:S,right:S,bottom:S+6}},A=ae.length;$("render",0,A);let V=0,R=Rl(o.renderChunkRows);do{const k=ae.slice(V,V+R),H=V===0,X=V+k.length>=A,ee=H?ge:_.lastAutoTable.finalY;let ce=!0;const pe=qt();a(_,{...L,body:k,...X&&Y?{foot:Y}:{},startY:H?ge:S,showFoot:X&&Y?"lastPage":"never",...H?{}:{willDrawPage:ye=>{ce?(ce=!1,ye.settings.showHead="never",ye.cursor&&(ye.cursor.y=ee)):ye.settings.showHead="everyPage"}}}),V+=k.length,$("render",V,A);const me=qt()-pe;R=Rl(me>0?Math.min(R*4,R*(o.sliceMs/me)):R*4),X||(await jl(),l(),z=qt())}while(V<A);const B=_.getNumberOfPages();for(let k=1;k<=B;k++)_.setPage(k),_.setFontSize(8),_.setTextColor(150,150,150),_.text(`Page ${k} of ${B}`,T-S,O-8,{align:"right"}),await F();l(),$("save",0,1),_.save(`${f}.pdf`),$("save",1,1)}function Sn(e,t){const n=Cn(e,t);return{text:yn(e,t,n),raw:n}}function Xt(e,t,n){return e.map(o=>Jo(o,n[o.field],t[o.field],t))}const tg="\uFEFF";function ng(e,t,n={}){const{fileName:o="export.csv",includeHeaders:r=!0,delimiter:i=",",selectedRows:l,groupedRows:d,escapeFormulas:a=!0,bom:f=!0}=n,p=_t(t),w=n.aggregationModel||{},b=(u,h=!1)=>qn(a?Un(u,h):u,i),C=()=>p.map(u=>b(u.headerName||u.field)).join(i)+`
8
- `;let g="";if(bn(d,l))r&&(g+=C()),d.forEach(u=>{const h=" ".repeat(u.depth);if(u.type==="group-header"){const x=Rt(u,t),m=qn(h+(a?Un(x):x),i);g+=p.map((y,E)=>E===0?m:"").join(i)+`
9
- `}else if(u.type==="leaf"&&u.row){const x=u.row,m=p.map((y,E)=>{const v=Sn(x,y),M=a?Un(v.text,gt(v.raw)):v.text;return qn((E===0?h:"")+M,i)});g+=m.join(i)+`
10
- `}else if((u.type==="group-subtotal"||u.type==="grand-total")&&u.aggregatedValues){const x=u.aggregatedValues,m=u.type==="grand-total"?"Grand Total":`${h}Subtotal`,y=Xt(p,x,w),E=p.map((v,M)=>M===0?qn(Ut(m,y[0]),i):b(y[M],gt(x[v.field])));g+=E.join(i)+`
11
- `}});else{const u=xn(e,l,n.getRowId);if(u.length===0){console.warn("No rows to export");return}r&&(g+=C()),u.forEach(x=>{const m=p.map(y=>{const E=Sn(x,y);return b(E.text,gt(E.raw))});g+=m.join(i)+`
12
- `});const h=Kt(u,ft(l),t,n.aggregationResult,n.aggregationModel);if(h){const x=p.map(y=>b(w[y.field]?w[y.field].toUpperCase():""));g+=x.join(i)+`
13
- `;const m=Xt(p,h,w);g+=p.map((y,E)=>b(m[E],gt(h[y.field]))).join(i)+`
14
- `}}or((f?tg:"")+g,o,"text/csv;charset=utf-8;")}function qn(e,t){return t!==""&&e.includes(t)||e.includes('"')||e.includes(`
15
- `)||e.includes("\r")?`"${e.replace(/"/g,'""')}"`:e}const Xn="ogx-xls-text";function og(e,t){return e.type!=="number"&&e.type!=="date"&&e.type!=="boolean"&&!gt(t)}function rg(e){if(!/\.xlsx$/i.test(e))return e;const t=e.replace(/\.xlsx$/i,".xls");return console.warn(`[exportToExcel] "${e}" renamed to "${t}": exportToExcel writes an HTML table that Excel refuses to open as .xlsx. Use exportToExcelAdvanced for a real .xlsx file.`),t}function ig(e,t,n={}){const{fileName:o="export.xls",sheetName:r="Sheet1",includeHeaders:i=!0,selectedRows:l,groupedRows:d,escapeFormulas:a=!0}=n,f=_t(t),p=n.aggregationModel||{},w=(h,x=!1)=>Pe(a?Un(h,x):h),b=h=>`<td class="${Xn}">${h}</td>`;let g=`<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>${Pe(Zo(r))}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta charset="UTF-8"><style>.${Xn}{mso-number-format:"\\@";}</style></head><body><table border="1">`;i&&(g+="<thead><tr>",f.forEach(h=>{g+=`<th class="${Xn}">${w(h.headerName||h.field)}</th>`}),g+="</tr></thead>"),g+="<tbody>";const u=(h,x,m="")=>{const y=m+w(h.text,gt(h.raw));return og(x,h.raw)?b(y):`<td>${y}</td>`};if(bn(d,l))d.forEach(h=>{const x=" ".repeat(h.depth*2);if(h.type==="group-header")g+='<tr style="font-weight:bold;background:#e8eaf6;">',g+=`<td colspan="${f.length}" class="${Xn}">${Pe(x)}${w(Rt(h,t))}</td>`,g+="</tr>";else if(h.type==="leaf"&&h.row){const m=h.row;g+="<tr>",f.forEach((y,E)=>{g+=u(Sn(m,y),y,E===0?Pe(x):"")}),g+="</tr>"}else if((h.type==="group-subtotal"||h.type==="grand-total")&&h.aggregatedValues){const m=h.aggregatedValues,y=h.type==="grand-total"?"Grand Total":`${x}Subtotal`,E=Xt(f,m,p);g+='<tr style="font-weight:bold;background:#f5f5f5;">',f.forEach((v,M)=>{if(M===0){g+=b(Pe(Ut(y,E[0])));return}g+=E[M]?`<td style="text-align:right;">${w(E[M],gt(m[v.field]))}</td>`:"<td></td>"}),g+="</tr>"}});else{const h=xn(e,l,n.getRowId);if(h.length===0){console.warn("No rows to export");return}h.forEach(m=>{g+="<tr>",f.forEach(y=>{g+=u(Sn(m,y),y)}),g+="</tr>"});const x=Kt(h,ft(l),t,n.aggregationResult,n.aggregationModel);if(x){g+='<tr style="font-size: 11px; color: #666; background-color: #f5f5f5;">',f.forEach(y=>{g+=p[y.field]?`<td style="text-align:right;font-weight:bold;">${Pe(p[y.field].toUpperCase())}</td>`:"<td></td>"}),g+='</tr><tr style="font-weight:bold;background-color:#f5f5f5;">';const m=Xt(f,x,p);f.forEach((y,E)=>{g+=m[E]?`<td style="text-align:right;">${w(m[E],gt(x[y.field]))}</td>`:"<td></td>"}),g+="</tr>"}}g+="</tbody></table></body></html>",or(g,rg(o),"application/vnd.ms-excel")}function lg(e,t,n={}){const{fileName:o="export.json",pretty:r=!0,selectedRows:i,groupedRows:l}=n,d=_t(t),a=p=>{const w={};return d.forEach(b=>{w[b.field]=Cn(p,b)}),w};let f;if(bn(l,i)){const p=[],w=[];let b;l.forEach(C=>{if(C.type==="group-header"){const g={group:Rt(C,t),field:C.groupField??"",value:C.groupValue,rows:[],children:[]};for(;p.length>C.depth;)p.pop();p.length===0?w.push(g):(p[p.length-1].children??=[]).push(g),p.push(g)}else C.type==="leaf"&&C.row?p.length>0&&p[p.length-1].rows.push(a(C.row)):C.type==="group-subtotal"&&C.aggregatedValues&&p.length>0?(p[p.length-1].subtotals=El(C.aggregatedValues,d),p.pop()):C.type==="grand-total"&&C.aggregatedValues&&(b=El(C.aggregatedValues,d))}),f=b?{groups:w,grandTotal:b}:{groups:w}}else{const p=xn(e,i,n.getRowId);if(p.length===0){console.warn("No rows to export");return}const w=p.map(a),b=Kt(p,ft(i),t,n.aggregationResult,n.aggregationModel);if(b){const C=n.aggregationModel||{},g={};d.forEach(h=>{C[h.field]&&(g[h.field]=C[h.field].toUpperCase())});const u={};d.forEach(h=>{b[h.field]!==void 0&&b[h.field]!==null&&(u[h.field]=b[h.field])}),f={data:w,aggregation:{labels:g,values:u}}}else f=w}or(r?JSON.stringify(f,null,2):JSON.stringify(f),o,"application/json;charset=utf-8;")}const sg=/^(?:https?:|data:image\/|blob:)/i,ag=/^[a-z][a-z\d+.-]*:/i;function cg(e){const t=e.trim();return t?sg.test(t)?t:ag.test(t)?null:t:null}async function dg(e,t,n){const o=window.open("","_blank");if(!o){console.error("Failed to open print window. Please check your popup blocker settings.");return}o.document.write(`
5
+ `?2:1):(o+=d,r+=1)}return(!l||n.length>0||o!=="")&&(n.push(o),t.push(n)),t}const xu=/^\d+(?:\.\d*)?(?:e[+-]?\d+)?$/i,yu=/^\.\d+(?:e[+-]?\d+)?$/i,vu=/^\d{1,3}(?:,\d{3})+(?:\.\d*)?$/,Cu=/[\p{Sc}\s]/gu;function _u(e){let t=e.replace(Cu,"");if(t==="")return e.trim()===""?$e(null):dt;let n=!1;t.startsWith("(")&&t.endsWith(")")&&(n=!0,t=t.slice(1,-1)),(t.startsWith("-")||t.startsWith("+")||t.startsWith("−"))&&(t[0]!=="+"&&(n=!n),t=t.slice(1));let o=!1;if(t.endsWith("%")&&(o=!0,t=t.slice(0,-1)),vu.test(t))t=t.split(",").join("");else if(!xu.test(t)&&!yu.test(t))return dt;let r=Number(t);return Number.isFinite(r)?(o&&(r/=100),n&&(r=-r),$e(r)):dt}const Su=/^(\d{4}-\d{2}-\d{2})/,Hl=e=>String(e).padStart(2,"0"),ku=e=>`${e.getFullYear()}-${Hl(e.getMonth()+1)}-${Hl(e.getDate())}`;function Eu(e,t){const n=e.trim();if(n==="")return $e(null);const o=gn(n);if(!o)return dt;if(typeof t=="number")return $e(o.getTime());if(typeof t=="string"){const r=ku(o);return $e(Su.test(t)&&t.length>10?r+t.slice(10):r)}return $e(o)}const Mu=new Set(["true","yes","1"]),Nu=new Set(["false","no","0"]);function Iu(e,t){const n=e.trim().toLowerCase();return n===""?$e(null):t?.trueLabel!==void 0&&n===t.trueLabel.trim().toLowerCase()?$e(!0):t?.falseLabel!==void 0&&n===t.falseLabel.trim().toLowerCase()?$e(!1):Mu.has(n)?$e(!0):Nu.has(n)?$e(!1):dt}function Lu(e,t){const n=e.trim();if(n==="")return $e(null);if(!t||t.length===0)return dt;const o=n.toLowerCase();for(const r of t){const i=typeof r=="object"?r.value:r;if(String(i).toLowerCase()===o)return $e(i)}for(const r of t)if(typeof r=="object"&&r.label.toLowerCase()===o)return $e(r.value);return dt}function Au(e,t,n){switch(t?.type){case"number":return _u(e);case"date":return Eu(e,n?.current);case"boolean":return Iu(e,n?.booleanLabels);case"singleSelect":return Lu(e,t.valueOptions);default:return $e(e)}}function Pu(e,t,n,o){const{valueParser:r}=t;if(!r)return Au(e,t,o);let i;try{i=r(e,{row:n,field:t.field,colDef:t})}catch{return dt}return i===void 0?dt:$e(i)}function ur(e,t,n){const o=e.map(t),r=new Map;o.forEach((a,u)=>{r.has(a)||r.set(a,u)});const i=n.filter(a=>Xe(a.field)),l=new Map;i.forEach((a,u)=>{l.set(a.field,u)});const d=n.filter(a=>Ze(a.field)).length;return{rows:e,rowIds:o,rowIndexById:r,columns:i,colIndexByField:l,dataColumnOffset:d}}function fr(e,t,n,o,r){const i=e.rowIds[o],l=e.columns[r];if(!l||qe(i,t.rowMetaMap))return!1;const d=t.getSpanOrigin?.(i,l.field);return d&&(d.rowId!==i||d.field!==l.field)?!1:Fo({row:n,field:l.field,value:Le(n,l.field,l),colDef:l,rowIndex:o,colIndex:e.dataColumnOffset+r,rowMeta:t.rowMetaMap?.get(i)},t.isCellEditable)}function Tu(e,t){let n=1/0,o=-1/0,r=1/0,i=-1/0;for(const l of t){const d=e.rowIndexById.get(l.id),a=e.colIndexByField.get(l.field);d===void 0||a===void 0||(d<n&&(n=d),d>o&&(o=d),a<r&&(r=a),a>i&&(i=a))}return n===1/0?null:{top:n,bottom:o,left:r,right:i}}function Bl(e,t){return{anchor:{id:e.rowIds[t.top],field:e.columns[t.left].field},head:{id:e.rowIds[t.bottom],field:e.columns[t.right].field}}}function Fu(e){const t=e?.type;return t===void 0||t==="string"||t==="image"}const Wl=1e4,Jn=()=>({updated:[],failed:[],skipped:[]});function Ou(e){process.env.NODE_ENV!=="production"&&console.warn(`[OpenGridX] Pasting ${e} cells. Pastes above ${Wl} cells can be slow; consider importing the data instead.`)}function Du(e){const{apiRef:t,containerRef:n,selection:o,disableClipboardPaste:r,disableRangeClear:i}=e,l=s.useRef(e);s.useLayoutEffect(()=>{l.current=e});const d=s.useCallback(()=>{const{allRenderableRows:p,getRowId:f,navigationColumns:h}=l.current;return ur(p,f,h)},[]),a=s.useCallback(()=>{const{selection:p}=l.current;return p.enabled?p.getCurrentRange().resolved:null},[]),u=s.useCallback(p=>{const f=a();if(f&&p.rowIds[f.top]!==void 0&&p.columns[f.left])return{id:p.rowIds[f.top],field:p.columns[f.left].field};const h=l.current.focusedCell;return h&&h.id!==null&&Xe(h.field)?{id:h.id,field:h.field}:null},[a]),g=s.useCallback(async(p,f,h)=>{const x=d(),b=f??u(x);let v=p;const{onBeforeClipboardPaste:E}=l.current;if(E){const ae=We(()=>E({text:v,anchor:b}));if(!ae.ok)return Wt("onBeforeClipboardPaste","onBeforeClipboardPaste threw; the paste was cancelled",ae.error),Jn();if(ae.value===!1)return Jn();typeof ae.value=="string"&&(v=ae.value)}if(!b)return Jn();const k=bu(v),N=x.rowIndexById.get(b.id),M=x.colIndexByField.get(b.field);if(k.length===0||N===void 0||M===void 0)return Jn();const S=x.rowIds.length-1,D=x.columns.length-1,I=f?null:a(),A=I&&Tt(I)>1?I:null,C=k.length===1&&k[0].length===1,L=k.reduce((ae,R)=>Math.max(ae,R.length),0);let F;C&&A?F=A:F={top:N,left:M,bottom:Math.min(N+k.length-1,S,A?A.bottom:S),right:Math.min(M+L-1,D,A?A.right:D)};const _=Tt(F);_>Wl&&Ou(_);const{batchEdit:z,isCellEditable:K,rowMetaMap:Q,getSpanOrigin:G}=l.current,j={isCellEditable:K,rowMetaMap:Q,getSpanOrigin:G},H=[],ie=[];for(let ae=F.top;ae<=F.bottom;ae++){const R=x.rowIds[ae],te=z.getRow(R)??x.rows[ae],ce=C?k[0]:k[ae-F.top];for(let W=F.left;W<=F.right;W++){const le=C?k[0][0]:ce?.[W-F.left];if(le===void 0)continue;const V=x.columns[W];if(!fr(x,j,te,ae,W)){ie.push({id:R,field:V.field,reason:"notEditable"});continue}const J=Pu(le,V,te,{current:Le(te,V.field,V)});if(!J.ok){ie.push({id:R,field:V.field,reason:"invalidValue"});continue}H.push({id:R,field:V.field,value:J.value})}}if(l.current.selection.enabled){const{anchor:ae,head:R}=Bl(x,F);l.current.selection.setModel([{anchor:ae,head:R}],h?"keyboard":"api")}const re=await z.applyEdits(H,"paste"),ue={updated:re.result.updated,failed:re.result.failed,skipped:[...ie,...re.result.skipped]};return l.current.onClipboardPaste?.({...ue,text:v}),ue},[d,u,a]),m=s.useCallback(()=>{const p=a();if(!p||Tt(p)<=1)return!1;const f=d(),{batchEdit:h,isCellEditable:x,rowMetaMap:b,getSpanOrigin:v}=l.current,E={isCellEditable:x,rowMetaMap:b,getSpanOrigin:v},k=[];for(let N=p.top;N<=p.bottom;N++){const M=f.rowIds[N];if(M===void 0)continue;const S=h.getRow(M)??f.rows[N];for(let D=p.left;D<=p.right;D++){const I=f.columns[D];!I||!fr(f,E,S,N,D)||k.push({id:M,field:I.field,value:Fu(I)?"":null})}}return h.applyEdits(k,"clear"),!0},[a,d]),w=o.enabled&&!r,y=o.enabled&&!i;s.useEffect(()=>{const p=n.current;if(!p||!w&&!y)return;const f=N=>{const M=l.current.viewportRef.current;if(!M||N.defaultPrevented||l.current.isEditing)return!1;const S=Vn(N.target,M);return S==="grid"||S==="control"};let h=null;const x=()=>{if(!h)return;const{textarea:N,restore:M,timer:S}=h;h=null,window.clearTimeout(S);const D=document.activeElement===N;N.remove(),D&&M&&M.isConnected&&M.focus({preventScroll:!0})},b=()=>{x();const N=document.createElement("textarea");N.setAttribute("aria-hidden","true"),N.tabIndex=-1,N.className="ogx__paste-capture",N.style.cssText="position:fixed;top:0;left:-10000px;width:1px;height:1px;opacity:0;",p.appendChild(N);const M=document.activeElement instanceof HTMLElement?document.activeElement:null;h={textarea:N,restore:M,timer:window.setTimeout(x,250)},N.focus({preventScroll:!0})},v=N=>h!==null&&N.target===h.textarea,E=N=>{if(v(N)){const S=N.clipboardData?N.clipboardData.getData("text/plain"):"";N.preventDefault(),x(),S!==""&&g(S,void 0,!0);return}if(!w||!f(N)||!l.current.navigationColumns.some(S=>S.editable))return;const M=N.clipboardData?N.clipboardData.getData("text/plain"):"";M!==""&&(N.preventDefault(),g(M,void 0,!0))},k=N=>{if((N.ctrlKey||N.metaKey)&&!N.altKey&&!N.shiftKey&&(N.key==="v"||N.key==="V"||N.code==="KeyV")){w&&f(N)&&l.current.navigationColumns.some(M=>M.editable)&&b();return}!y||N.key!=="Delete"&&N.key!=="Backspace"||N.ctrlKey||N.metaKey||N.altKey||N.shiftKey||f(N)&&m()&&N.preventDefault()};return p.addEventListener("paste",E),p.addEventListener("keydown",k),()=>{x(),p.removeEventListener("paste",E),p.removeEventListener("keydown",k)}},[n,w,y,g,m]),s.useLayoutEffect(()=>{t.current.pasteText=(p,f)=>g(p,f,!1)},[t,g])}const $u=100;function Gu(){const e=s.useRef(null),t=s.useCallback((o,r)=>{const i=e.current;i&&i(o,r)},[]),n=s.useCallback(o=>{e.current=o},[]);return s.useMemo(()=>({emit:t,setListener:n}),[t,n])}const Vl=()=>({updated:[],failed:[],skipped:[]});function Hu(e){if(e.altKey||!(e.ctrlKey||e.metaKey))return null;const t=(e.key??"").toLowerCase(),n=/^[a-z]$/.test(t),o=t==="z"||!n&&e.code==="KeyZ",r=t==="y"||!n&&e.code==="KeyY";return o?e.shiftKey?"redo":"undo":r&&e.ctrlKey&&!e.shiftKey?"redo":null}function Bu(e){const{apiRef:t,enabled:n,channel:o,containerRef:r}=e,i=s.useRef(e);s.useLayoutEffect(()=>{i.current=e});const l=s.useRef([]),d=s.useRef([]),a=s.useRef({canUndo:!1,canRedo:!1,size:0}),u=s.useRef(Promise.resolve()),g=s.useCallback(()=>{const x={canUndo:l.current.length>0,canRedo:d.current.length>0,size:l.current.length},b=a.current;b.canUndo===x.canUndo&&b.canRedo===x.canRedo&&b.size===x.size||(a.current=x,i.current.onHistoryChange?.(x))},[]),m=s.useCallback(x=>{if(!i.current.enabled||x.length===0)return;const b=l.current;b.push(x);const v=Math.max(1,i.current.limit);b.length>v&&b.splice(0,b.length-v),d.current=[],g()},[g]);s.useLayoutEffect(()=>(o.setListener(n?m:null),()=>o.setListener(null)),[o,n,m]);const w=s.useCallback(()=>{l.current=[],d.current=[],g()},[g]);s.useEffect(()=>{n||w()},[n,w]);const y=s.useCallback(x=>{const b=i.current,v=ur(b.allRenderableRows,b.getRowId,b.navigationColumns),E=Tu(v,x);if(!E)return;const{anchor:k,head:N}=Bl(v,E);b.selection.enabled?b.selection.setModel([{anchor:k,head:N}],"keyboard"):b.setFocusedCell({id:k.id,field:k.field,rowIndex:E.top});const M=b.viewportRef.current;M&&(Gn(M,E.top-b.pinnedTopRowCount,b.layout.cumulativeHeights,b.layout.pinnedBottomHeight,b.rowHeight),To(M,b.layout.unpinnedColsWithWidth.findIndex(S=>S.field===k.field),b.layout))},[]),p=s.useCallback(x=>{const b=async()=>{if(!i.current.enabled)return Vl();const E=x==="undo"?l:d,k=x==="undo"?d:l,N=E.current.pop();if(!N)return Vl();g();const M=N.map(I=>x==="undo"?{id:I.id,field:I.field,value:I.before,expect:{value:I.after}}:{id:I.id,field:I.field,value:I.after,expect:{value:I.before}}),S=await i.current.batchEdit.applyEdits(M,x);S.committed.length>0&&k.current.push(x==="undo"?S.committed.map(I=>({id:I.id,field:I.field,before:I.after,after:I.before})):S.committed);const D=new Set(S.result.failed.map(I=>I.id));if(D.size>0){const I=N.filter(A=>D.has(A.id));I.length>0&&E.current.push(I)}return g(),S.committed.length>0&&y(S.committed),S.result},v=u.current.then(b,b);return u.current=v,v},[g,y]),f=s.useCallback(()=>p("undo"),[p]),h=s.useCallback(()=>p("redo"),[p]);s.useEffect(()=>{const x=r.current;if(!x||!n)return;const b=v=>{if(v.defaultPrevented)return;const E=Hu(v);if(!E)return;const k=i.current.viewportRef.current;if(!k||i.current.isEditing)return;const N=Vn(v.target,k);N!=="grid"&&N!=="control"||(v.preventDefault(),E==="undo"?f():h())};return x.addEventListener("keydown",b),()=>x.removeEventListener("keydown",b)},[r,n,f,h]),s.useLayoutEffect(()=>{const x=t.current;x.undo=f,x.redo=h,x.canUndo=()=>i.current.enabled&&l.current.length>0,x.canRedo=()=>i.current.enabled&&d.current.length>0,x.clearHistory=w},[t,f,h,w])}function Wu(e){const t=String(e);if(t.includes("e")||t.includes("E"))return null;const n=t.indexOf(".");return n===-1?0:t.length-n-1}function gr(e,t){return t===null?e:Number(e.toFixed(Math.min(t,20)))}function Vu(e,t){let n=0;for(const l of e){const d=Wu(l);n=d===null||n===null?null:Math.max(n,d)}const o=gr(e[1]-e[0],n);for(let l=2;l<e.length;l++)if(gr(e[l]-e[l-1],n)!==o)return null;const r=e[e.length-1],i=[];for(let l=1;l<=t;l++)i.push(gr(r+o*l,n));return i}const zu=864e5,zl=e=>((e.getHours()*60+e.getMinutes())*60+e.getSeconds())*1e3+e.getMilliseconds(),Ku=e=>Math.round(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())/zu),ju=e=>e.getFullYear()*12+e.getMonth(),Uu=(e,t)=>new Date(e,t+1,0).getDate();function pr(e){const t=e[1]-e[0];for(let n=2;n<e.length;n++)if(e[n]-e[n-1]!==t)return null;return t}function Ru(e,t){const n=e[e.length-1],o=e.every(l=>zl(l)===zl(n));if(o&&e.every(l=>l.getDate()===n.getDate())){const l=pr(e.map(ju));if(l!==null&&l!==0){const d=[];for(let a=1;a<=t;a++){const u=n.getMonth()+l*a,g=n.getFullYear()+Math.floor(u/12),m=(u%12+12)%12,w=new Date(n.getTime());w.setFullYear(g,m,Math.min(n.getDate(),Uu(g,m))),d.push(w)}return d}}if(o){const l=pr(e.map(Ku));if(l===null)return null;const d=[];for(let a=1;a<=t;a++){const u=new Date(n.getTime());u.setDate(n.getDate()+l*a),d.push(u)}return d}const r=pr(e.map(l=>l.getTime()));if(r===null)return null;const i=[];for(let l=1;l<=t;l++)i.push(new Date(n.getTime()+r*l));return i}const qu=e=>typeof e=="number"&&Number.isFinite(e),Xu=e=>e instanceof Date&&!Number.isNaN(e.getTime());function Yu(e,t){return e.length<2?null:e.every(qu)?Vu(e,t):e.every(Xu)?Ru(e,t):null}const Ju=e=>e instanceof Date?new Date(e.getTime()):e;function Zu(e,t,n){if(e.length===0||t<=0)return[];const o=n?Yu(e,t):null;if(o)return o;const r=[];for(let i=0;i<t;i++)r.push(Ju(e[i%e.length]));return r}function Qu(e,t,n,o){const r=t.row>e.bottom||t.row<e.top,i=t.col>e.right||t.col<e.left;return!r&&!i?null:r&&(!i||Math.abs(o)>=Math.abs(n))?t.row>e.bottom?{rect:{...e,bottom:t.row},direction:"down"}:{rect:{...e,top:t.row},direction:"up"}:t.col>e.right?{rect:{...e,right:t.col},direction:"right"}:{rect:{...e,left:t.col},direction:"left"}}function ef(e,t,n){const o=(a,u)=>{const g=[];if(a<=u)for(let m=a;m<=u;m++)g.push(m);else for(let m=a;m>=u;m--)g.push(m);return g},i=n==="down"||n==="up"?o(e.left,e.right):o(e.top,e.bottom);let l,d;switch(n){case"down":l=o(e.top,e.bottom),d=t.bottom>e.bottom?o(e.bottom+1,t.bottom):[];break;case"up":l=o(e.bottom,e.top),d=t.top<e.top?o(e.top-1,t.top):[];break;case"right":l=o(e.left,e.right),d=t.right>e.right?o(e.right+1,t.right):[];break;default:l=o(e.right,e.left),d=t.left<e.left?o(e.left-1,t.left):[]}return i.map(a=>({line:a,source:l,targets:d}))}function tf(e,t,n){const o=n.row===e.top||n.row===e.bottom,r=n.col===e.left||n.col===e.right;let i=n.row,l=n.col;return(!o||!r)&&(t==="down"||t==="up"?(i=t==="down"?e.top:e.bottom,l=n.col===e.right?e.right:e.left):(l=t==="right"?e.left:e.right,i=n.row===e.bottom?e.bottom:e.top)),{anchor:{row:i,col:l},head:{row:i===e.top?e.bottom:e.top,col:l===e.left?e.right:e.left}}}function nf(e,t,n,o){const r=t(e.bottom),i=n[e.right];if(r===void 0||i===void 0)return null;const l=o?.(r,i);if(!l||l.rowId===r&&l.field===i)return{row:e.bottom,field:i};for(let d=e.bottom;d>=Math.max(0,e.bottom-of);d--)if(t(d)===l.rowId)return{row:d,field:l.field};return null}const of=1e3,rf="ogx__cell-fill-handle";function lf(e){if(e.altKey||e.shiftKey||!(e.ctrlKey||e.metaKey))return null;const t=(e.key??"").toLowerCase(),n=/^[a-z]$/.test(t);return t==="d"||!n&&e.code==="KeyD"?"down":t==="r"||!n&&e.code==="KeyR"?"right":null}function sf(e){const{containerRef:t,viewportRef:n,selection:o,disableFillHandle:r,isEditing:i,allRenderableRows:l,getRowId:d,navigationColumns:a,columnIndexMap:u,getSpanOrigin:g}=e,m=s.useRef(e);s.useLayoutEffect(()=>{m.current=e});const w=o.enabled&&!r,y=s.useMemo(()=>a.some(S=>S.editable),[a]),p=o.resolved,f=s.useMemo(()=>{if(!w||!y||!p)return null;const S=a.filter(C=>Xe(C.field)).map(C=>C.field),I=nf(p,C=>{const L=l[C];return L===void 0?void 0:d(L)},S,g);if(!I)return null;const A=u.get(I.field);return A===void 0?null:{row:I.row,col:A}},[w,y,p,l,d,a,u,g]),h=s.useRef(!0);s.useEffect(()=>(h.current=!0,()=>{h.current=!1}),[]);const x=s.useCallback(()=>{const S=m.current;return ur(S.allRenderableRows,S.getRowId,S.navigationColumns)},[]),b=s.useCallback((S,D,I,A,C)=>{const L=tf(D,I,A),F=_=>({id:S.rowIds[_.row],field:S.columns[_.col].field});m.current.selection.setModel([{anchor:F(L.anchor),head:F(L.head)}],C)},[]),v=s.useCallback(async(S,D,I,A,C,L,F)=>{const{batchEdit:_,isCellEditable:z,rowMetaMap:K,getSpanOrigin:Q}=m.current,G={isCellEditable:z,rowMetaMap:K,getSpanOrigin:Q},j=A==="down"||A==="up",H=R=>{const te=S.rowIds[R];return te===void 0?void 0:_.getRow(te)??S.rows[R]},ie=[],re=[];for(const R of ef(D,I,A)){if(R.targets.length===0)continue;const te=le=>j?{r:le,c:R.line}:{r:R.line,c:le},ce=[];for(const le of R.source){const{r:V,c:J}=te(le),ne=H(V),fe=S.columns[J];!ne||!fe||qe(S.rowIds[V],K)||ce.push(Le(ne,fe.field,fe))}if(ce.length===0)continue;const W=Zu(ce,R.targets.length,!C);R.targets.forEach((le,V)=>{const{r:J,c:ne}=te(le),fe=H(J),Z=S.columns[ne],$=S.rowIds[J];if(!fe||!Z||$===void 0)return;if(!fr(S,G,fe,J,ne)){re.push({id:$,field:Z.field,reason:"notEditable"});return}let O=W[V];const P=Z.fillValue;if(P){const T=We(()=>P.call(Z,{row:fe,id:$,field:Z.field,colDef:Z,direction:A,sourceValues:ce.slice(),index:V,value:O,copy:C}));if(!T.ok){Wt(`fillValue:${Z.field}`,`fillValue of column "${Z.field}" threw; the cell was skipped`,T.error),re.push({id:$,field:Z.field,reason:"invalidValue"});return}O=T.value}ie.push({id:$,field:Z.field,value:O})})}b(S,I,A,L,F);const ue=await _.applyEdits(ie,"fill"),ae={updated:ue.result.updated,failed:ue.result.failed,skipped:[...re,...ue.result.skipped],direction:A};return m.current.onFill?.(ae),ae},[b]),E=s.useRef(null),k=s.useCallback((S,D,I)=>{const A=E.current,C=m.current.viewportRef.current;if(!A||!C)return;const L=A.ctx,F=L.rowIndexById.get(S.id),_=L.colIndexByField.get(S.field);if(F===void 0||_===void 0)return;const z=D-A.x+C.scrollLeft-A.scrollLeft,K=I-A.y+C.scrollTop-A.scrollTop,Q=Qu(A.source,{row:F,col:_},z,K);A.target=Q,Q?b(L,Q.rect,Q.direction,A.anchor,"pointer"):m.current.selection.setModel(A.sourceModel,"pointer")},[b]),N=s.useCallback(({cancelled:S,altKey:D})=>{const I=E.current;if(E.current=null,!I||!h.current)return;const A=I.ctx;if(S||!I.target){m.current.selection.setModel(I.sourceModel,"pointer");return}v(A,I.source,I.target.rect,I.target.direction,D,I.anchor,"pointer")},[v]),M=w&&y;return s.useEffect(()=>{const S=n.current;if(!S||!M)return;const D=I=>{if(I.button!==0||!(I.target instanceof Element))return;const A=I.target.closest(`.${rf}`);if(!A||A.closest(".ogx__viewport")!==S||m.current.isEditing)return;const{selection:C}=m.current,{range:L,resolved:F}=C.getCurrentRange();if(!L||!F)return;const _=x(),z=_.rowIds[F.bottom],K=_.columns[F.right];if(z===void 0||!K)return;I.preventDefault();const Q=S.ownerDocument;S.contains(Q.activeElement)||S.focus({preventScroll:!0}),We(()=>S.setPointerCapture(I.pointerId)),E.current={source:{top:F.top,bottom:F.bottom,left:F.left,right:F.right},sourceModel:[L],anchor:{row:F.anchorRow,col:F.anchorCol},ctx:_,x:I.clientX,y:I.clientY,scrollLeft:S.scrollLeft,scrollTop:S.scrollTop,target:null},C.startTrackedDrag({start:{id:z,field:K.field},x:I.clientX,y:I.clientY,pointerId:I.pointerId,onTrack:k,onEnd:N})};return S.addEventListener("pointerdown",D),()=>S.removeEventListener("pointerdown",D)},[n,M,x,k,N]),s.useEffect(()=>{const S=t.current;if(!S||!w)return;const D=I=>{if(I.defaultPrevented)return;const A=lf(I);if(!A)return;const C=m.current.viewportRef.current;if(!C||m.current.isEditing)return;const L=Vn(I.target,C);if(L!=="grid"&&L!=="control")return;const{range:F,resolved:_}=m.current.selection.getCurrentRange();if(!F||!_)return;I.preventDefault();const z={top:_.top,bottom:_.bottom,left:_.left,right:_.right},K=A==="down"?{...z,bottom:z.top}:{...z,right:z.left};(A==="down"?z.bottom===z.top:z.right===z.left)||v(x(),K,z,A,!0,{row:_.anchorRow,col:_.anchorCol},"keyboard")};return S.addEventListener("keydown",D),()=>S.removeEventListener("keydown",D)},[t,w,v,x]),{handle:i?null:f}}const af=e=>e.id,cf={hasColSpan:!1,hasRowSpan:!1,colspanMap:new Map,rowSpanningCaches:{spannedCells:{},hiddenCells:{},hiddenCellOriginMap:{}},getSpanOrigin:()=>null,getUnpinnedColSpanRanges:()=>{},getCenterRowSpanStart:e=>e},Kl="\0",jl="";function Ul(e){if(typeof e!="number"||Number.isNaN(e))return 1;if(e===1/0)return Number.MAX_SAFE_INTEGER;if(!Number.isFinite(e))return 1;const t=Math.floor(e);return t<1?1:t}function df(e){return e.map(t=>t.field).join(Kl)}function uf(e){const{pinnedTopRows:t,centerRows:n,pinnedBottomRows:o,columns:r,leftPinnedColumns:i,unpinnedColumns:l,rightPinnedColumns:d,expandedRowIds:a,rowMetaMap:u,getRowId:g=af}=e,m=s.useMemo(()=>r.some(x=>x.colSpan!==void 0&&x.colSpan!==null),[r]),w=s.useMemo(()=>r.some(x=>x.rowSpan!==void 0&&x.rowSpan!==null),[r]),y=m||w,p=y?[i,l,d].map(df).join(jl):"",f=s.useMemo(()=>{if(!p)return{columns:[],leftCount:0,unpinnedCount:0};const x=new Map(r.map(k=>[k.field,k])),b=p.split(jl).map(k=>k?k.split(Kl):[]),v=[];let E=0;for(const k of b){E+=k.length;for(const N of k){const M=x.get(N)??{field:N};v.push({colDef:M,field:N,sectionEnd:E,hasColSpan:M.colSpan!==void 0&&M.colSpan!==null,hasRowSpan:M.rowSpan!==void 0&&M.rowSpan!==null})}}return{columns:v,leftCount:b[0].length,unpinnedCount:b[1].length}},[p,r]),h=s.useMemo(()=>{if(!y||f.columns.length===0)return null;const x={colspanMap:new Map,rowSpanningCaches:{spannedCells:{},hiddenCells:{},hiddenCellOriginMap:{}},hiddenOriginFields:new Map,unpinnedRanges:new Map,centerRowSpanStart:new Map},v={spanColumns:f,expandedRowIds:a,rowMetaMap:u,getRowId:g,warned:new Set,out:x};return hr(t,0,!1,v),hr(n,t.length,!0,v),hr(o,t.length+n.length,!1,v),x},[y,f,t,n,o,a,u,g]);return s.useMemo(()=>{if(!h)return cf;const{colspanMap:x,rowSpanningCaches:b,hiddenOriginFields:v,unpinnedRanges:E,centerRowSpanStart:k}=h,N=f.columns;return{hasColSpan:m,hasRowSpan:w,colspanMap:x,rowSpanningCaches:b,getSpanOrigin:(M,S)=>{const D=x.get(M)?.[S];if(D?.spannedByColSpan)return{rowId:M,field:N[D.leftVisibleCellIndex].field};const I=b.hiddenCellOriginMap[M]?.[S];return I===void 0?null:{rowId:I,field:v.get(M)?.[S]??S}},getUnpinnedColSpanRanges:M=>E.get(M),getCenterRowSpanStart:M=>k.get(M)??M}},[h,m,w,f])}function hr(e,t,n,o){const{spanColumns:r,expandedRowIds:i,rowMetaMap:l,getRowId:d,warned:a,out:u}=o,{columns:g,leftCount:m,unpinnedCount:w}=r,y=g.length,{colspanMap:p,rowSpanningCaches:f,hiddenOriginFields:h,unpinnedRanges:x,centerRowSpanStart:b}=u,v=new Int32Array(y),E=new Array(y),k=new Array(y),N=new Int32Array(y);let M=0;const S=[];g.forEach((A,C)=>{(A.hasColSpan||A.hasRowSpan)&&S.push(C)});const D=(A,C,L)=>{const F=g[L].field;if(Xt(f.hiddenCells,A,F,!0),Xt(f.hiddenCellOriginMap,A,F,E[L]),k[L]!==F&&Xt(h,A,F,k[L]),n){const _=b.get(C);(_===void 0||N[L]<_)&&b.set(C,N[L])}},I=(A,C,L)=>{const F=g[L],_=d(A),z=ff(A,_,F.colDef,t+C,L,l,a);let K=1;if(F.hasColSpan){const G=Math.min(Rl(F.colDef.colSpan,z,"colSpan",F.field,a),F.sectionEnd-L);for(;K<G&&v[L+K]<=C;)K++}let Q=1;if(F.hasRowSpan){Q=Math.min(Rl(F.colDef.rowSpan,z,"rowSpan",F.field,a),e.length-C);for(let G=1;G<Q;G++)if(qe(d(e[C+G]),l)){Q=G;break}if(Q>1&&i&&i.size>0){for(let G=0;G<Q-1;G++)if(i.has(d(e[C+G]))){Q=G+1;break}}}if(K>1){Xt(p,_,F.field,{spannedByColSpan:!1,cellProps:{colSpan:K}});for(let G=1;G<K;G++){const j=g[L+G];Xt(p,_,j.field,{spannedByColSpan:!0,leftVisibleCellIndex:L,rightVisibleCellIndex:L+K-1})}if(L>=m&&L<m+w){let G=x.get(_);G||(G=[],x.set(_,G)),G.push(L-m,L+K-1-m)}}if(Q>1){Xt(f.spannedCells,_,F.field,Q);for(let G=L;G<L+K;G++)v[G]=C+Q,E[G]=_,k[G]=F.field,N[G]=C;C+Q>M&&(M=C+Q)}return K};for(let A=0;A<e.length;A++){const C=e[A];if(!C||C._isSkeleton||qe(d(C),l))continue;if(M<=A){let F=0;for(const _ of S)_>=F&&(F=_+I(C,A,_));continue}let L=0;for(;L<y;)v[L]>A?(D(d(C),A,L),L++):g[L].hasColSpan||g[L].hasRowSpan?L+=I(C,A,L):L++}}function ff(e,t,n,o,r,i,l){const d=e[n.field];let a=d;if(n.valueGetter)try{a=n.valueGetter({row:e,field:n.field,value:d})}catch(u){ql(l,`valueGetter:${n.field}`,`valueGetter for column "${n.field}" threw while computing its span`,u),a=void 0}return{row:e,value:a,field:n.field,colDef:n,rowIndex:o,colIndex:r,rowMeta:i?.get(t)}}function Rl(e,t,n,o,r){if(typeof e=="number")return Ul(e);if(typeof e!="function")return 1;try{return Ul(e(t))}catch(i){return ql(r,`${n}:${o}`,`${n} for column "${o}" threw; the cell is rendered without a span`,i),1}}function ql(e,t,n,o){process.env.NODE_ENV==="production"||e.has(t)||(e.add(t),console.warn(`[OpenGridX] ${n}.`,o))}function Xt(e,t,n,o){if(e instanceof Map){let i=e.get(t);i||(i={},e.set(t,i)),i[n]=o;return}let r=e[t];r||(r={},e[t]=r),r[n]=o}function gf(e){const{spanning:t,renderContext:n,offsetTop:o,cumulativeHeights:r}=e;return s.useMemo(()=>{if(!t.hasRowSpan)return{renderContext:n,offsetTop:o};let i=Math.max(0,n.firstRowIndex);for(let l=t.getCenterRowSpanStart(i);l<i;l=t.getCenterRowSpanStart(i))i=l;return i>=n.firstRowIndex?{renderContext:n,offsetTop:o}:{renderContext:{...n,firstRowIndex:i},offsetTop:i>0?r[i-1]??0:0}},[t,n,o,r])}function pf(e){const{spanning:t,firstColumnIndex:n,lastColumnIndex:o,virtualColumns:r,layout:i,rows:l}=e;return s.useMemo(()=>{if(!t.hasColSpan||i.unpinnedColsWithWidth.length===0)return r;let d=n,a=o,u=!0;for(;u;){u=!1;for(const{row:x,id:b}of l){const v=t.getUnpinnedColSpanRanges(b??x.id);if(v)for(let E=0;E<v.length;E+=2){const k=v[E],N=v[E+1];N<d||k>a||(k<d&&(d=k,u=!0),N>a&&(a=N,u=!0))}}}if(d===n&&a===o)return r;const{leftPinnedCols:g,unpinnedColsWithWidth:m,rightPinnedCols:w,unpinnedAccWidths:y,unpinnedTotalWidth:p}=i,f=d>0?y[d-1]:0,h=p-y[a];return[...g,...f>0?[{field:"__spacer_left__",width:f,isSpacer:!0}]:[],...m.slice(d,a+1),...h>0?[{field:"__spacer_right__",width:h,isSpacer:!0}]:[],...w]},[t,n,o,r,i,l])}function hf(e,t){const{draggedColumn:n,onDragOver:o,onDrop:r,onDragEnd:i}=t,l=s.useMemo(()=>{if(!e||e.length===0)return null;const d=a=>n===null||rr(e,n,a);return{onDragOver:o&&(a=>d(a)?o(a):()=>{}),onDrop:r&&(a=>d(a)?r(a):u=>{u.preventDefault(),i?.()})}},[e,n,o,r,i]);return l?{...t,...l}:t}const mf=300,Xl=e=>e.id;function wf(e,t){return e==="infinite"?"infinite":e==="server"?t?"all":"page":"all"}function Yl(e,t){const n=new Set,o=[];return e.forEach(r=>{const i=t(r);n.has(i)||(n.add(i),o.push({id:i,row:r}))}),o}function Jl(e,t,n){const o=new Set(e.map(n)),r=t.filter(i=>!o.has(i.id)).map(i=>i.row);return r.length===0?e:[...e,...r]}function bf(e){const{dataSource:t,sortModel:n,filterModel:o,paginationModel:r,paginationMode:i,sortingMode:l,filterMode:d,aggregationModel:a,rowGroupingActive:u=!1}=e,g=wf(i,u),m=!!t&&i==="server"&&u,w=s.useRef(!1);s.useEffect(()=>{process.env.NODE_ENV==="production"||w.current||!m||(w.current=!0,console.warn("[OpenGridX] `rowGroupingModel` turns pagination off, so the dataSource with `paginationMode: 'server'` is asked for every row (startRow 0, endRow Number.MAX_SAFE_INTEGER) instead of one page. See docs/features/data-source.md."))},[m]);const y=t?.getRows,p=il({dataSource:t,paginationMode:i,sortingMode:l,filterMode:d}),f=JSON.stringify([g,g!=="all"||l==="server"?n:null,g!=="all"||d==="server"?o:null,p?a??null:null,g==="all"?null:r.pageSize]),h=g==="all"?0:r.page,x=g==="all"?0:r.pageSize,b=s.useRef({params:e,kind:g});s.useLayoutEffect(()=>{b.current={params:e,kind:g}});const v=s.useRef(0),E=s.useRef(0),k=s.useRef(null),N=s.useRef({page:0,loadedEnd:0,inFlightEnd:null}),M=s.useRef(null),S=s.useRef(!1),D=s.useRef(0),I=s.useRef(!1),A=s.useRef(new Set),C=s.useCallback(()=>{const j=S.current||D.current>0;j!==I.current&&(I.current=j,b.current.params.setDataSourceLoading(j))},[]),L=s.useCallback(()=>{M.current!==null&&(clearTimeout(M.current),M.current=null)},[]),F=s.useCallback(()=>{v.current++,N.current.inFlightEnd=null,S.current=!1},[]),_=s.useCallback(()=>{E.current++,A.current.clear(),D.current=0},[]),z=s.useCallback(async()=>{const{params:j,kind:H}=b.current,ie=j.dataSource;if(!ie)return!1;const re=N.current,ue=j.paginationModel.pageSize;let ae,R;if(H==="infinite"){if(re.inFlightEnd!==null)return!1;if(ae=re.loadedEnd,R=(re.page+1)*ue,R<=ae)return S.current=!1,C(),!1;re.inFlightEnd=R}else H==="page"?(ae=j.paginationModel.page*ue,R=ae+ue):(ae=0,R=ll);const te=++v.current;S.current=!0,C(),j.setDataSourceError(null);let ce;try{ce=await ie.getRows({startRow:ae,endRow:R,sortModel:j.sortModel,filterModel:j.filterModel,groupKeys:[],aggregationModel:j.aggregationModel})}catch(W){return te!==v.current||(re.inFlightEnd=null,S.current=!1,b.current.params.setDataSourceError(W),console.error("Data Source Error:",W),C()),!1}if(te!==v.current)return!1;try{const{params:W}=b.current,le=W.getRowId??Xl,V=Yl(ce.rows,le);if(H==="infinite"&&ae>0?W.setRows(J=>Jl(J,V,le),!0):(W.setRows(V.map(J=>J.row),!0),_()),ce.aggregationResults&&W.onAggregationResults?.(ce.aggregationResults),ce.rowCount!==void 0&&W.setRowCount(ce.rowCount),H==="infinite"&&(re.inFlightEnd=null,re.loadedEnd=ae+ce.rows.length,ce.rows.length>=R-ae&&(re.page+1)*ue>R))return!0}catch(W){return re.inFlightEnd=null,S.current=!1,b.current.params.setDataSourceError(W),console.error("Data Source Error:",W),C(),!1}return S.current=!1,C(),!1},[C,_]),K=s.useCallback(async()=>{for(;await z(););},[z]);s.useLayoutEffect(()=>{if(!y){k.current&&(k.current=null,L(),F(),_(),b.current.params.setDataSourceError(null),C());return}const j=k.current,H=N.current;if(!j||j.key!==f||j.getRows!==y){k.current={key:f,getRows:y},F(),_();const ie=g==="infinite"&&j!==null&&h!==0;if(H.page=ie?0:h,H.loadedEnd=0,ie){const{params:re}=b.current;re.onPaginationModelChange?.({...re.paginationModel,page:0})}}else g==="infinite"?(h<H.page&&(F(),H.loadedEnd=0),H.page=h):F();if(g==="infinite"){const ie=H.inFlightEnd!==null;if(ie||(H.page+1)*x<=H.loadedEnd){S.current=ie,C();return}}return S.current=!0,C(),M.current=setTimeout(()=>{M.current=null,K()},mf),L},[y,f,g,h,x,L,F,_,C,K]),s.useEffect(()=>()=>{F(),_()},[F,_]);const Q=s.useCallback(()=>(L(),K()),[L,K]),G=s.useCallback(async(j,H,ie)=>{const{params:re}=b.current,ue=re.dataSource;if(!ue)return;const ae=JSON.stringify(H),R=A.current;if(R.has(ae))return;const te=E.current;R.add(ae),D.current++,C();try{const ce=await ue.getRows({startRow:0,endRow:ll,sortModel:re.sortModel,filterModel:re.filterModel,groupKeys:H,aggregationModel:re.aggregationModel});if(te!==E.current)return;if(ce.rows.length>0){const{params:W}=b.current,le=W.getRowId??Xl,V=Yl(ce.rows,le);W.setRows(J=>Jl(J,V,le),!0)}}catch(ce){if(te!==E.current)return;R.delete(ae),console.error("Failed to fetch children:",ce),ie?.(ce)}finally{te===E.current&&(D.current--,C())}},[C]);return{fetchRows:Q,fetchChildren:G}}function xf(e){return(e.serverChildrenCount??0)>0&&(e.children?.length??0)===0}function yf({enabled:e,treeNodes:t,isGroupExpanded:n,getNodePath:o,toggleExpansion:r,fetchChildren:i}){const l=s.useRef({isGroupExpanded:n,toggleExpansion:r});s.useLayoutEffect(()=>{l.current={isGroupExpanded:n,toggleExpansion:r}}),s.useEffect(()=>{e&&t.forEach((d,a)=>{!xf(d)||!n(a)||i(a,o(a),()=>{const{isGroupExpanded:u,toggleExpansion:g}=l.current;u(a)&&g(a)})})},[e,t,n,o,i])}const Zl={};function vf(e){const t=JSON.stringify(e),[n,o]=s.useState(null),r=s.useCallback(i=>o({modelKey:t,results:i}),[t]);return[n&&n.modelKey===t?n.results:null,r]}function Ql(e){const{rows:t,columns:n,aggregationModel:o,isServerSide:r,dataSource:i,filterModel:l,sortModel:d,serverAggregationResults:a}=e,u=Object.keys(o).length>0,g=s.useMemo(()=>{const k=new Map;return(n??[]).forEach(N=>k.set(N.field,N)),k},[n]),m=s.useMemo(()=>r||!u?Zl:Hn(t,o,g,"useAggregation"),[t,g,o,r,u]),w=JSON.stringify([o,l??null,d??[]]),y=r&&u&&!!i?.getAggregations&&!a,p=s.useRef({aggregationModel:o,filterModel:l,sortModel:d});s.useEffect(()=>{p.current={aggregationModel:o,filterModel:l,sortModel:d}});const[f,h]=s.useState(null);s.useEffect(()=>{const k=i?.getAggregations;if(!y||!k)return;let N=!1;const M=p.current,S={sortModel:M.sortModel??[],filterModel:M.filterModel??{items:[]},groupKeys:[],aggregationModel:M.aggregationModel};let D;try{D=Promise.resolve(k(S))}catch(I){D=Promise.reject(I)}return D.then(I=>{N||h({key:w,result:I,error:null})},I=>{N||(console.error("[useAggregation] Server aggregation error:",I),h({key:w,result:null,error:I}))}),()=>{N=!0}},[y,i,w]);const x=f&&f.key===w?f:null,b=y&&x===null,v=y?x?.error??null:null;return{aggregationResult:s.useMemo(()=>r?a&&Object.keys(a).length>0?a:x?.result??Zl:m,[r,m,a,x]),isLoading:b,error:v}}const Cf={items:[]},_f=[];function Sf(e){const{rows:t,columns:n,pivotMode:o,pivotModel:r,filterModel:i,sortModel:l,hasDataSource:d,hierarchyRequested:a}=e,u=o&&!d,g=s.useMemo(()=>new Set(n.map(x=>x.field)),[n]),m=s.useMemo(()=>jo(n),[n]),w=s.useMemo(()=>Ya(i,g),[i,g]),y=s.useMemo(()=>u?Ho(t,w.source,m):t,[u,t,w.source,m]),p=s.useMemo(()=>u?Li(y,n,r,{outputFilterModel:w.output,sortModel:l}):Ro,[u,y,n,r,w.output,l]),f=u&&p.isValid,h=s.useRef({dataSource:!1,hierarchy:!1});return s.useEffect(()=>{process.env.NODE_ENV!=="production"&&(o&&d&&!h.current.dataSource&&(h.current.dataSource=!0,console.warn("[OpenGridX] `pivotMode` is ignored when a `dataSource` is set: pivoting is client-side and the grid only holds the rows of one server page. Pivot on the server, or pass the full dataset as `rows`.")),f&&a&&!h.current.hierarchy&&(h.current.hierarchy=!0,console.warn("[OpenGridX] `treeData` and `rowGroupingModel` are turned off while `pivotMode` is active: the pivot rows are already grouped by the pivot row fields.")))},[o,d,f,a]),{isActive:f,rows:f?p.pivotRows:t,columns:f?p.pivotColumns:n,pipelineFilterModel:f?Cf:i,pipelineSortModel:f?_f:l}}const tt=({variant:e="text",size:t="medium",color:n="default",disabled:o=!1,className:r="",type:i="button",children:l,...d})=>{const a=["ogx-button",`ogx-button--${e}`,`ogx-button--${t}`,`ogx-button--${n}`,o&&"ogx-button--disabled",r].filter(Boolean).join(" ");return c.jsx("button",{type:i,className:a,disabled:o,...d,children:l})};function mr(e){const t=s.useId(),{page:n,pageSize:o,rowCount:r,onPageChange:i,onPageSizeChange:l,pageSizeOptions:d=[10,25,50,100],showFirstButton:a=!0,showLastButton:u=!0,localeText:g}=e,m=Un(o),w=Zo(r,m),y=Ui(n,w),p=d.includes(m)?d:[...d,m].sort((C,L)=>C-L),f=y*m,h=Math.min(f+m,r),x=r===0?0:`${f+1}–${h}`,b=g?.paginationRowsPerPage??"Rows per page:",v=g?.paginationOf?g.paginationOf(r===0?0:f+1,h,r):`${x} of ${r}`,E=g?.paginationPage?g.paginationPage(y+1,w):`Page ${y+1} of ${w}`,k=()=>{i(0)},N=()=>{i(Math.max(0,y-1))},M=()=>{i(Math.min(w-1,y+1))},S=()=>{i(w-1)},D=C=>{const L=parseInt(C.target.value,10);l(L)},I=y===0,A=y>=w-1;return c.jsxs("div",{className:"ogx-pagination",role:"navigation","aria-label":"Pagination",children:[c.jsxs("div",{className:"ogx-pagination__page-size",children:[c.jsx("label",{htmlFor:t,className:"ogx-pagination__label",children:b}),c.jsx("select",{id:t,className:"ogx-pagination__select",value:m,onChange:D,children:p.map(C=>c.jsx("option",{value:C,children:C},C))})]}),c.jsx("div",{className:"ogx-pagination__info","aria-live":"polite","aria-atomic":"true",children:v}),c.jsxs("div",{className:"ogx-pagination__actions",children:[a&&c.jsx(tt,{variant:"text",size:"small",onClick:k,disabled:I,"aria-label":"Go to first page",title:"First page",children:c.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:c.jsx("path",{d:"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"})})}),c.jsx(tt,{variant:"text",size:"small",onClick:N,disabled:I,"aria-label":"Go to previous page",title:"Previous page",children:c.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:c.jsx("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})})}),c.jsx("div",{className:"ogx-pagination__page-info","aria-current":"page",children:E}),c.jsx(tt,{variant:"text",size:"small",onClick:M,disabled:A,"aria-label":"Go to next page",title:"Next page",children:c.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:c.jsx("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})})}),u&&c.jsx(tt,{variant:"text",size:"small",onClick:S,disabled:A,"aria-label":"Go to last page",title:"Last page",children:c.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:c.jsx("path",{d:"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"})})})]})]})}function kf({row:e,rowId:t,rowIndex:n,ariaRowIndex:o,listViewColumn:r,gridColumn:i,rowMeta:l,isSelected:d=!1,checkboxSelection:a=!1,rowHeight:u,onRowClick:g,onRowDoubleClick:m,onSelectionChange:w,tabIndex:y=-1,onFocus:p,onToggleExpansion:f}){const h=t??e.id,x=r.field,b=Le(e,x,i),v=No(e,x,b,i)??Io(b,i),E=l?.isGroupRow===!0||qe(h),k={row:e,value:b,formattedValue:v,field:x,colDef:i??r,rowIndex:n,colIndex:0,rowMeta:l},N=M=>{M.stopPropagation(),w?.(h,M.target.checked)};return c.jsxs("div",{className:`ogx-list-view__row${d?" ogx-list-view__row--selected":""}`,style:u?{minHeight:u}:void 0,onClick:()=>g?.(e),onDoubleClick:m?()=>m(e):void 0,role:"row","aria-rowindex":o??n+1,"aria-selected":d,"aria-level":l?.treeDepth!==void 0?l.treeDepth+1:void 0,"aria-expanded":l?.hasChildren?l.isExpanded===!0:void 0,"data-rowindex":n,tabIndex:y,onFocus:p?M=>{M.target===M.currentTarget&&p(n)}:void 0,children:[a&&c.jsx("div",{className:"ogx-list-view__checkbox",onClick:M=>M.stopPropagation(),children:!E&&c.jsx(bt,{checked:d,onChange:N,"aria-label":`Select row ${h}`,tabIndex:-1})}),l&&f&&c.jsx("div",{className:"ogx-list-view__expand",style:{paddingLeft:(l.treeDepth??0)*16},onClick:M=>M.stopPropagation(),onDoubleClick:M=>M.stopPropagation(),children:l.hasChildren&&c.jsx(tr,{isExpanded:l.isExpanded===!0,onClick:()=>f(h),tabIndex:-1})}),c.jsx("div",{className:"ogx-list-view__cell",role:"gridcell",children:c.jsx(Ft,{field:x,resetKey:e,renderFn:()=>{const M=r.renderCell(k);return M===void 0&&E?l?.groupLabel:M}})})]})}function Ef(e,t){const n=s.useRef(!0),o=s.useRef(e);s.useEffect(()=>{o.current=e},[e]),s.useEffect(()=>{n.current=!0},[t]);const r=s.useCallback(i=>{const l=Ji(i.currentTarget);if(!l){n.current=!0;return}if(!n.current)return;const d=o.current;d&&(n.current=!1,d(l))},[]);return e?r:void 0}const Mf=e=>e.id;function Nf({ariaLabel:e,allRenderableRows:t,dataRowCount:n,pinnedTopRowCount:o,pinnedBottomRowCount:r,unpinnedRowCount:i,pagination:l,effectivePaginationModel:d,currentPage:a,pageSizeOptions:u,selectedRowIds:g,listViewColumn:m,columnsByField:w,rowMetaMap:y,noRowsLabel:p,rowHeight:f,checkboxSelection:h,paginationMode:x,serverRowCount:b,paginationSlot:v,paginationSlotProps:E,localeText:k,onRowClick:N,onRowDoubleClick:M,onSelectionChange:S,onPaginationModelChange:D,onRowsScrollEnd:I,getRowId:A=Mf,multiselectable:C=!1,loading:L=!1,loadingOverlay:F,noRowsOverlay:_,showPaginationControls:z=!0,selectable:K=!1,onToggleExpansion:Q}){const G=v||mr,j=s.useRef(null),[H,ie]=s.useState(null),re=H===null?-1:t.findIndex($=>A($)===H),ue=re===-1?0:re,ae=$=>{const O=t[$];O&&(ie(A(O)),j.current?.querySelector(`:scope > [role="row"][data-rowindex="${$}"]`)?.focus())},R=$=>{const O=$.target;if(O.getAttribute("role")!=="row"||O.parentElement!==j.current)return;const P=Number(O.getAttribute("data-rowindex")),T=t[P];if(!T)return;const X=A(T),B=t.length-1,ee=y.get(X),q=!!(ee?.hasChildren&&Q);if($.altKey&&($.key==="ArrowRight"||$.key==="ArrowLeft")){$.preventDefault(),q&&$.key==="ArrowRight"!=(ee?.isExpanded===!0)&&Q?.(X);return}switch($.key){case"ArrowDown":$.preventDefault(),ae(Math.min(P+1,B));return;case"ArrowUp":$.preventDefault(),ae(Math.max(P-1,0));return;case"Home":$.preventDefault(),ae(0);return;case"End":$.preventDefault(),ae(B);return;case"PageDown":$.preventDefault(),ae(Math.min(P+10,B));return;case"PageUp":$.preventDefault(),ae(Math.max(P-10,0));return;case"Enter":case" ":if($.preventDefault(),$.key===" "&&$.shiftKey){K&&!ee?.isGroupRow&&S(X,!g.has(X));return}q?Q?.(X):N({row:T,id:X,rowIndex:P});return}},te=x==="server",ce=te?b||0:i,W=te?b||0:n,le=Un(d.pageSize),V=Zo(ce,le),J=l?a*le:0,ne=t.length-o-r,fe=$=>{if($<o)return $+1;const O=$-o;return O<ne?o+J+O+1:o+ce+(O-ne)+1},Z=Ef(I,t.length);return c.jsxs("div",{className:"ogx-list-view",role:"grid","aria-label":e||"Data grid list view","aria-rowcount":W,"aria-multiselectable":C,children:[c.jsx("div",{className:"ogx-list-view__toolbar",children:c.jsxs("span",{children:[W," ",W===1?"item":"items",l?` · page ${a+1} of ${V}`:"",g.size>0?` · ${g.size} selected`:""]})}),c.jsx("div",{className:"ogx-list-view__rows",tabIndex:-1,onScroll:Z,onKeyDown:R,ref:j,children:t.length===0&&L?c.jsx("div",{className:"ogx-list-view__loading",children:F??c.jsx("div",{className:"ogx__loading-bar",role:"progressbar","aria-label":"Loading data"})}):t.length===0&&_?c.jsx("div",{className:"ogx-list-view__empty",children:_}):t.length===0?c.jsxs("div",{className:"ogx-list-view__empty",children:[c.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[c.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),c.jsx("path",{d:"M3 9h18M9 21V9"})]}),p]}):t.map(($,O)=>{const P=A($);return c.jsx(kf,{row:$,rowId:P,rowIndex:O,ariaRowIndex:fe(O),listViewColumn:m,gridColumn:w.get(m.field),rowMeta:y.get(P),isSelected:g.has(P),checkboxSelection:h,rowHeight:f,onRowClick:T=>N({row:T,id:P,rowIndex:O}),onRowDoubleClick:M?T=>M({row:T,id:P,rowIndex:O}):void 0,onSelectionChange:S,tabIndex:O===ue?0:-1,onToggleExpansion:Q,onFocus:T=>ie(A(t[T]))},P)})}),l&&z&&c.jsx(G,{page:a,pageSize:d.pageSize,rowCount:ce,pageSizeOptions:u,onPageChange:$=>D({...d,page:$}),onPageSizeChange:$=>D({...d,pageSize:$,page:0}),localeText:k,...E})]})}function If({overlay:e}){return e?c.jsx("div",{className:"ogx__loading-overlay ogx__loading-overlay--over-rows ogx__loading-overlay--custom",children:e}):c.jsx("div",{className:"ogx__loading-overlay ogx__loading-overlay--over-rows",children:c.jsx("div",{className:"ogx__loading-bar",role:"progressbar","aria-label":"Loading data"})})}function bn(e){return e.headerName||e.field}function Lf(e){return e.nativeEvent.isComposing||e.keyCode===229}function xn(e,t,n=!0){return o=>{if(Lf(o)){o.stopPropagation();return}n&&o.key==="Enter"&&(o.stopPropagation(),e()),o.key==="Escape"&&(o.stopPropagation(),t())}}function Af({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const[i,l]=s.useState(String(e??"")),d=s.useRef(null);return s.useEffect(()=>{d.current?.focus(),d.current?.select()},[]),c.jsx(Qe,{ref:d,variant:"cell",type:"text",inputClassName:"ogx__edit-input","aria-label":bn(t),value:i,onChange:a=>{l(a.target.value),n(a.target.value)},onBlur:o,onKeyDown:xn(o,r)})}function Pf({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const[i,l]=s.useState(typeof e=="number"?e:""),d=s.useRef(null);return s.useEffect(()=>{d.current?.focus(),d.current?.select()},[]),c.jsx(Qe,{ref:d,variant:"cell",type:"number",inputClassName:"ogx__edit-input ogx__edit-input--number","aria-label":bn(t),value:i,onChange:a=>{const u=a.target.value===""?"":Number(a.target.value);l(u),n(u===""?null:u)},onBlur:o,onKeyDown:xn(o,r)})}function Tf({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const i=s.useRef(null);s.useEffect(()=>{i.current?.focus()},[]);const l=()=>{n(!e),o()};return c.jsx("div",{className:"ogx__edit-boolean",onMouseDown:d=>d.preventDefault(),children:c.jsx(bt,{ref:i,inputClassName:"ogx__edit-checkbox","aria-label":bn(t),checked:!!e,onChange:l,onMouseDown:d=>d.preventDefault(),onBlur:o,onKeyDown:xn(o,r,!1)})})}const wr=e=>typeof e=="object"?e.value:e,Ff=e=>typeof e=="object"?e.label:String(e);function Of(e,t){return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Object.is(e,t)}function Df({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const i=s.useRef(null);s.useEffect(()=>{i.current?.focus()},[]);const l=t.valueOptions??[],d=l.map(g=>String(wr(g)));let a=l.findIndex(g=>Of(wr(g),e));a===-1&&e!==null&&e!==void 0&&(a=d.indexOf(String(e)));const u=a===-1;return c.jsxs("select",{ref:i,className:"ogx__edit-select","aria-label":bn(t),value:u?"":d[a],onChange:g=>{const m=d.indexOf(g.target.value);n(m===-1?null:wr(l[m]))},onBlur:o,onKeyDown:xn(o,r),children:[u&&c.jsx("option",{value:""}),l.map((g,m)=>c.jsx("option",{value:d[m],children:Ff(g)},m))]})}const es=e=>String(e).padStart(2,"0"),ts=/^(\d{4}-\d{2}-\d{2})/;function br(e){if(e instanceof Date)return Number.isNaN(e.getTime())?"":`${e.getFullYear()}-${es(e.getMonth()+1)}-${es(e.getDate())}`;if(typeof e=="string"){const t=ts.exec(e);return t?t[1]:e===""?"":br(new Date(e))}return typeof e=="number"?br(new Date(e)):""}function $f(e,t){if(e==="")return null;const[n,o,r]=e.split("-").map(Number),i=l=>{const d=new Date(l.getTime());return d.setFullYear(n,o-1,r),d};return t instanceof Date&&!Number.isNaN(t.getTime())?i(t):typeof t=="number"&&Number.isFinite(t)?i(new Date(t)).getTime():typeof t=="string"&&ts.test(t)&&t.length>10?e+t.slice(10):e}function Gf({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const[i]=s.useState(e),[l,d]=s.useState(()=>br(e)),a=s.useRef(null);return s.useEffect(()=>{a.current?.focus()},[]),c.jsx(Qe,{ref:a,variant:"cell",type:"date",inputClassName:"ogx__edit-input","aria-label":bn(t),value:l,onChange:u=>{d(u.target.value),n($f(u.target.value,i))},onBlur:o,onKeyDown:xn(o,r)})}function Hf(e){const{colDef:t}=e;switch(t.type){case"number":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(Pf,{...e})});case"boolean":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(Tf,{...e})});case"singleSelect":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(Df,{...e})});case"date":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(Gf,{...e})});default:return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(Af,{...e})})}}function Bf(e){const{onCellClick:t,onCellEditStart:n,onCellValueChange:o,value:r,row:i,colDef:l,rowIndex:d,colIndex:a,ariaColIndex:u,isSelected:g,onClick:m,width:w,pinnedPosition:y,pinnedOffset:p,isPinnedEdge:f,isFocused:h,isFocusVisible:x,isEditable:b,isEditing:v,onEditStart:E,onEditStop:k,onValueChange:N,colSpanInfo:M,rowSpan:S,isHiddenByRowSpan:D,rowMeta:I,valueError:A,rangeFlags:C=0}=e,L=s.useCallback(Z=>{o?o(l.field,Z):N?.(Z)},[o,N,l.field]),F=I?.isGroupRow===!0,{formattedValue:_,error:z}=s.useMemo(()=>{const Z=l.valueFormatter;if(Z&&!(F&&r==null)){const $=We(()=>Z({value:r,row:i,field:l.field}));return $.ok?{formattedValue:$.value}:{formattedValue:"",error:$.error??new Error("valueFormatter failed")}}return{formattedValue:Io(r,l)}},[r,i,l,F]),K=s.useMemo(()=>{if(!l.cellClassName)return"";const Z=l.cellClassName;if(typeof Z=="function"){const $=We(()=>Z({value:r,formattedValue:_,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:I}));return $.ok&&$.value||""}return l.cellClassName},[l,r,_,i,d,a,I]),Q=A??z,G=l.field,j=s.useCallback(()=>{k?.(!1,G)},[k,G]),H=s.useCallback(()=>{k?.(!0,G)},[k,G]),ie=s.useMemo(()=>[i,l.renderCell,r],[i,l.renderCell,r]),re=s.useRef(!1);if(s.useEffect(()=>{if(!(!v||!k))return re.current=!0,()=>{re.current=!1,queueMicrotask(()=>{re.current||k(!1,G)})}},[v,k,G]),M?.spannedByColSpan)return null;const ue=M?.cellProps.colSpan??1,ae=ue>1,R=(ae?M?.cellProps.width:void 0)??w??l.width??100,te={width:"var(--width)","--width":typeof R=="number"?`${R}px`:R,flexGrow:(ae?M?.cellProps.flexGrow:void 0)??l.flex??0,flexShrink:0,flexBasis:"auto",boxSizing:"border-box",minWidth:ae?void 0:l.minWidth,maxWidth:ae?void 0:l.maxWidth};if(D)return c.jsx("div",{className:"ogx__cell ogx__cell--hidden",style:te,role:"presentation","data-field":l.field,"data-colindex":a});const ce=Z=>{v||(t&&t({row:i,field:l.field,value:r,colDef:l,rowIndex:d,colIndex:a}),m?.(Z))},W=()=>{v||!b||(n?n(l.field,r):E?.())},le=l.renderEditCell,V=y!=null,J=["ogx__cell",`ogx__cell--align-${l.align||"left"}`,g&&"ogx__cell--selected",h&&"ogx__cell--focused",h&&x&&"ogx__cell--focus-visible",l.type&&`ogx__cell--type-${l.type}`,V&&"ogx__cell--pinned",V&&`ogx__cell--pinned-${y}`,V&&f&&`ogx__cell--pinned-${y}-${y==="left"?"last":"first"}`,v&&"ogx__cell--editing",S&&S>1&&"ogx__cell--spanned",(C&Yo)!==0&&"ogx__cell--range",(C&$i)!==0&&"ogx__cell--range-top",(C&Gi)!==0&&"ogx__cell--range-bottom",(C&Hi)!==0&&"ogx__cell--range-left",(C&Bi)!==0&&"ogx__cell--range-right",K].filter(Boolean).join(" "),ne=S||1,fe={...te,position:V?"sticky":void 0,zIndex:l.zIndex??(V?3:void 0),padding:v?0:void 0};return ne>1&&(fe.height=`calc(var(--height) * ${ne} - var(--border-width, 1px))`,fe.zIndex=10,V&&(fe.zIndex=40)),V&&p!==void 0&&(y==="left"?fe.left=p:fe.right=p),c.jsxs("div",{className:J,style:fe,onClick:ce,onDoubleClick:W,role:"gridcell","aria-colindex":u??a+1,"aria-readonly":!b||void 0,tabIndex:-1,"data-field":l.field,"data-colindex":a,...ue>1?{"aria-colspan":ue}:{},...ne>1?{"aria-rowspan":ne}:{},...(C&Yo)!==0?{"aria-selected":!0}:{},children:[c.jsx("div",{className:"ogx__cell-content",children:v&&(o||N)&&k?le?c.jsx(Ft,{field:l.field,resetKey:i,renderFn:()=>le({value:r,formattedValue:_,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:I,onValueChange:L,onCommit:j,onCancel:H})}):c.jsx(Hf,{value:r,formattedValue:_,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:I,onValueChange:L,onCommit:j,onCancel:H}):Q!==void 0?c.jsx(Ft,{field:l.field,resetKey:i,renderFn:()=>{throw Q}}):l.renderCell?c.jsx(Ft,{field:l.field,resetKey:ie,renderFn:()=>l.renderCell({value:r,formattedValue:_,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:I})}):l.type==="image"&&typeof r=="string"&&r!==""?c.jsx("img",{className:"ogx__cell-image",src:r,alt:l.headerName??l.field,loading:"lazy"}):_}),(C&Wi)!==0&&!v&&c.jsx("div",{className:"ogx__cell-fill-handle","aria-hidden":"true"})]})}const ns=s.memo(Bf),Wf=({className:e="",...t})=>c.jsx("button",{type:"button",className:`ogx-drag-handle ${e}`,"aria-label":"Drag to reorder row",...t,children:c.jsx("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"currentColor","aria-hidden":"true",children:c.jsx("path",{d:"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})});function Vf(e){const{rowId:t,content:n,height:o,isExpanded:r,onHeightChange:i,id:l,colSpan:d}=e,a=s.useRef(null),u=o==="auto";if(s.useLayoutEffect(()=>{const m=a.current;if(!m||!u||!r||!i)return;const w=()=>{m.getClientRects().length!==0&&i(t,m.offsetHeight)};if(w(),typeof ResizeObserver>"u")return;const y=new ResizeObserver(w);return y.observe(m),()=>y.disconnect()},[u,r,i,t]),!r)return null;const g={height:u?"auto":`${o}px`,overflow:u?"visible":"auto"};return c.jsx("div",{ref:a,className:"ogx__detail-panel",style:g,role:"row",id:l,children:c.jsx("div",{className:"ogx__detail-panel-content",role:"gridcell","aria-colspan":d,children:n})})}const xr=12;function zf(e,t,n,o){let r=0,i=0,l=0;for(let d=t;d<e.length&&l<n;d++){const a=e[d];if(a.isSpacer)break;r+=Nt(a,o),i+=a.flex??0,l++}return{spannedByColSpan:!1,cellProps:{colSpan:l,width:r,flexGrow:i}}}function Kf(e){const{row:t,rowId:n,columns:o,rowIndex:r,isSelected:i=!1,checkboxSelection:l=!1,onRowClick:d,onRowDoubleClick:a,onCellClick:u,onSelectionChange:g,columnWidths:m={},pinnedColumns:w,pinnedRows:y,hasDetailPanel:p=!1,isDetailPanelExpanded:f=!1,onDetailPanelToggle:h,detailPanelContent:x,detailPanelHeight:b=Lo,onDetailPanelHeightChange:v,pinCheckboxColumn:E=!0,pinExpandColumn:k=!0,rowReordering:N=!1,onDragStart:M,onDragOver:S,onDragEnd:D,onDrop:I,isDragging:A,isDragOver:C,editingCell:L,onEditStart:F,onEditStop:_,onEditCellValueChange:z,isCellEditable:K,focusedCellField:Q,isFocusVisible:G,colspanMap:j,rowSpanningCaches:H,rowHeight:ie=52,rowMeta:re,columnIndexMap:ue,ariaRowIndex:ae,cellRange:R}=e,te=n??t.id,ce=s.useId(),W=s.useId(),le=s.useMemo(()=>Eo(o,m,w,l,E,p,k,N),[o,m,w,l,E,p,k,N]),V=s.useMemo(()=>Mo(o,w),[o,w]),J=re?.hasChildren===!0,ne=re?.isGroupRow===!0,fe=p&&!ne,Z=!ne&&!qe(te),$=s.useCallback((de,ye)=>{F?.({id:te,field:de,value:ye})},[te,F]),O=s.useCallback((de,ye)=>{z?.({id:te,field:de,value:ye})},[z,te]),P=s.useCallback((de,ye)=>{_?.({cancel:de,id:te,field:ye})},[_,te]);if(t._isSkeleton){const de=Math.max(o.length,5);return c.jsx("div",{className:"ogx__row ogx__row--skeleton",role:"row","aria-hidden":"true",style:{height:ie,minHeight:ie},children:Array.from({length:de}).map((ye,Ee)=>c.jsx("div",{className:"ogx__skeleton-cell",children:c.jsx("div",{className:"ogx__skeleton-bar"})},Ee))})}const T=de=>{de.target.closest(".ogx-checkbox-wrapper, .ogx-expand-icon, .ogx-drag-handle, .ogx__edit-cell, .ogx__cell--editing")||d?.({row:t,id:te,rowIndex:r})},X=de=>{de.target.closest(".ogx-checkbox-wrapper, .ogx-expand-icon, .ogx-drag-handle, .ogx__edit-cell, .ogx__cell--editing")||a?.({row:t,id:te,rowIndex:r})},B=de=>{de.stopPropagation(),g?.(te,de.target.checked)},ee=de=>{de.stopPropagation(),h?.(te)},q=N?1:0,Y=p?q+1:q,oe=l?Y+1:Y,me=oe,U=ue?.size??o.filter(de=>!de.isSpacer).length,se=re!==void 0,we=re?.hasChildren===!0,pe=ni(te,y),he=pe==="top",ve=pe==="bottom",be=["ogx__row",i&&"ogx__row--selected",r%2===0&&"ogx__row--even",r%2===1&&"ogx__row--odd",he&&"ogx__row--pinned-top",ve&&"ogx__row--pinned-bottom",A&&"ogx__row--dragging",C&&"ogx__row--drag-over",J&&"ogx__row--group",re?.isGroupFooter&&"ogx__row--group-footer"].filter(Boolean).join(" ");return c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:be,onClick:T,onDoubleClick:a?X:void 0,role:"row","aria-rowindex":ae??r+2,"aria-selected":i,"aria-level":se?(re?.treeDepth??0)+1:void 0,"aria-expanded":we?re?.isExpanded===!0:void 0,"data-rowindex":r,onDragOver:S?S(te):void 0,onDrop:I?I(te):void 0,style:{maxHeight:`${ie}px`,minHeight:`${ie}px`,"--height":`${ie}px`,"--border-width":"1px"},children:[N&&c.jsx("div",{className:`ogx__cell ogx__cell--drag-handle ${Q==="__reorder_col__"?"ogx__cell--focused":""} ${Q==="__reorder_col__"&&G?"ogx__cell--focus-visible":""}`,role:"gridcell","aria-label":M?"Drag to reorder row":void 0,"aria-colindex":q,"data-field":"__reorder_col__",tabIndex:-1,style:{position:"sticky",left:0,zIndex:xr},draggable:!!M,onDragStart:M?M(te):void 0,onDragEnd:D,onClick:de=>de.stopPropagation(),children:M&&c.jsx(Wf,{})}),p&&c.jsx("div",{className:`ogx__cell ogx__cell--expand ${k?"ogx__cell--pinned-left":""} ${Q==="__expand_col__"?"ogx__cell--focused":""} ${Q==="__expand_col__"&&G?"ogx__cell--focus-visible":""}`,role:"gridcell","aria-label":fe?f?"Collapse row details":"Expand row details":void 0,"aria-expanded":fe?f:void 0,"aria-controls":fe&&f?W:void 0,"aria-colindex":Y,"data-field":"__expand_col__",style:{position:k?"sticky":void 0,left:k?N?48:0:void 0,zIndex:k?xr:void 0},tabIndex:-1,onClick:de=>{de.stopPropagation(),u?.({row:t,field:"__expand_col__",value:f,colDef:{field:"__expand_col__",width:48},rowIndex:r,colIndex:-1})},children:fe&&c.jsx(tr,{isExpanded:f,onClick:ee,variant:"plus-minus",tabIndex:-1})}),l&&c.jsx("div",{className:`ogx__cell ogx__cell--checkbox ${E?"ogx__cell--pinned-left":""} ${Q==="__checkbox_col__"?"ogx__cell--focused":""} ${Q==="__checkbox_col__"&&G?"ogx__cell--focus-visible":""}`,role:"gridcell","aria-colindex":oe,"data-field":"__checkbox_col__",style:{position:E?"sticky":void 0,left:E?(N?48:0)+(p&&k?48:0):void 0,zIndex:E?xr:void 0},tabIndex:-1,onClick:de=>{de.stopPropagation(),u?.({row:t,field:"__checkbox_col__",value:i,colDef:{field:"__checkbox_col__",width:48},rowIndex:r,colIndex:-1})},children:Z&&c.jsx(bt,{id:ce,name:`ogx-select-row-${te}`,checked:i,onChange:B,onClick:de=>de.stopPropagation(),"aria-label":i?`Deselect row ${te}`:`Select row ${te}`,tabIndex:-1,onMouseDown:de=>de.preventDefault()})}),o.map((de,ye)=>{if(de.isSpacer)return c.jsx("div",{style:{width:de.width,minWidth:de.width,flexShrink:0},"aria-hidden":"true"},de.field);let Ee,Me;ne?Ee=t[de.field]:{value:Ee,error:Me}=ri(t,de.field,de);const Ne=ue?.get(de.field)??ye,Ie=m[de.field]??de.width,Se=ct(de.field,w),Oe=!!F&&Fo({row:t,field:de.field,value:Ee,colDef:de,rowIndex:r,colIndex:Ne,rowMeta:re},K),ge=L?.id===te&&L?.field===de.field,Ce=ge?L?.value:Ee,ke=j?.get(te)?.[de.field],xe=ke&&!ke.spannedByColSpan&&ke.cellProps.colSpan>1?zf(o,Ne,ke.cellProps.colSpan,m):ke,je=xe&&!xe.spannedByColSpan?o[Ne+xe.cellProps.colSpan-1]?.field??de.field:de.field,nt=Se==="right"?je:de.field,nn=Se?le[nt]:void 0,Mn=Se==="left"&&je===V.lastLeft||Se==="right"&&de.field===V.firstRight,ot=H?.spannedCells[te]?.[de.field],lo=H?.hiddenCells[te]?.[de.field]||!1,so=R&&!lo&&de.field!==Oi?lc(R,Ne,xe&&!xe.spannedByColSpan?xe.cellProps.colSpan:1,ot??1):void 0;return c.jsx(ns,{value:Ce,row:t,colDef:de,rowIndex:r,colIndex:Ne,ariaColIndex:me+Ne+1,isSelected:i,onCellClick:u,width:Ie,pinnedPosition:Se,pinnedOffset:nn,isPinnedEdge:Mn,isFocused:Q===de.field,isFocusVisible:G,isEditable:Oe,isEditing:ge,onCellEditStart:$,onEditStop:P,onCellValueChange:O,colSpanInfo:xe,rowSpan:ot,isHiddenByRowSpan:lo,rowMeta:re,valueError:Me,rangeFlags:so},de.field)})]}),fe&&c.jsx(Vf,{id:W,colSpan:me+U,row:t,rowId:te,rowIndex:r,content:x,height:b,isExpanded:f,onHeightChange:v})]})}function jf(e,t){const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(const o of n)if(o==="cellRange"){if(!ic(e.cellRange,t.cellRange))return!1}else if(!Object.is(e[o],t[o]))return!1;return!0}const Zn=s.memo(Kf,jf);function os({getContent:e,params:t}){return c.jsx(Ft,{field:"detail panel",renderFn:()=>e(t),resetKey:t.row})}const Uf=e=>e.id;function rs({rows:e,position:t,columns:n,selectedRowIds:o,checkboxSelection:r,onRowClick:i,onRowDoubleClick:l,onCellClick:d,onSelectionChange:a,columnWidths:u,pinnedColumns:g,pinnedRows:m,hasDetailPanel:w,expandedRowIds:y,getDetailPanelContent:p,getDetailPanelHeight:f,onDetailPanelToggle:h,onDetailPanelHeightChange:x,pinCheckboxColumn:b,pinExpandColumn:v,focusedCell:E,colspanMap:k,rowSpanningCaches:N,rowHeight:M,rowMetaMap:S,getRowId:D=Uf,rowIndexOffset:I=0,ariaRowIndexBase:A,columnIndexMap:C,editingHandlers:L,isCellEditable:F,rowReordering:_=!1,cellRange:z,cellRangeHasRowSpan:K=!1,fillHandle:Q}){return e.length===0?null:c.jsx("div",{className:`ogx__pinned-rows ogx__pinned-rows--${t}`,role:"rowgroup",children:e.map((G,j)=>{const H=D(G),ie=I+j;return c.jsx(Zn,{row:G,rowId:H,columns:n,rowIndex:ie,ariaRowIndex:A!==void 0?A+j:void 0,columnIndexMap:C,isSelected:o.has(H),checkboxSelection:r,onRowClick:i,onRowDoubleClick:l,onCellClick:d,onSelectionChange:a,columnWidths:u,pinnedColumns:g,pinnedRows:m,hasDetailPanel:w,isDetailPanelExpanded:y.has(H),detailPanelContent:y.has(H)&&p?c.jsx(os,{getContent:p,params:{row:G,id:H,rowIndex:ie}}):null,detailPanelHeight:y.has(H)?Ao(Po(f,{row:G,id:H,rowIndex:ie})):void 0,onDetailPanelHeightChange:x,onDetailPanelToggle:h,pinCheckboxColumn:b,pinExpandColumn:v,focusedCellField:E?.id===H?E.field:null,colspanMap:k,rowSpanningCaches:N,rowHeight:M,rowMeta:S.get(H),editingCell:L?.editingCell,onEditStart:L?.startCellEdit,onEditStop:L?.stopCellEdit,onEditCellValueChange:L?.setEditCellValue,isCellEditable:F,rowReordering:_,cellRange:Di(z,ie,K,Q)},H)})})}const Rf=({columns:e,rowHeight:t,checkboxSelection:n=!1,hasDetailPanel:o=!1,rowReordering:r=!1})=>c.jsxs("div",{className:"ogx__row ogx__skeleton-row",style:{height:t},role:"row",children:[n&&c.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:48,minWidth:48},children:c.jsx("div",{className:"ogx-skeleton-box",style:{width:18,height:18,borderRadius:2}})}),o&&c.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:48,minWidth:48},children:c.jsx("div",{className:"ogx-skeleton-box",style:{width:18,height:18,borderRadius:2}})}),r&&c.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:48,minWidth:48},children:c.jsx("div",{className:"ogx-skeleton-box",style:{width:18,height:18,borderRadius:2}})}),e.map((i,l)=>{const d=typeof i.width=="number"?i.width:150,a=Math.min(d*.7,d-20);return c.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:d,minWidth:i.minWidth,maxWidth:i.maxWidth,left:i.left,right:i.right,position:i.isSpacer?"relative":i.pinned?"sticky":"relative",zIndex:i.zIndex},children:!i.isSpacer&&c.jsx("div",{className:"ogx-skeleton-box",style:{width:a,height:16,borderRadius:4}})},i.field||l)})]});function qf({virtualContainerHeight:e,offsetTop:t,effectiveLoading:n,visibleRows:o,baseColumns:r,virtualColumns:i,viewportWidth:l,checkboxSelection:d,hasDetailPanel:a,rowReordering:u,rowHeight:g,selectedRowIds:m,onRowClick:w,onRowDoubleClick:y,onCellClick:p,onSelectionChange:f,columnWidths:h,pinnedColumns:x,expandedRowIds:b,getDetailPanelContent:v,getDetailPanelHeight:E,onDetailPanelToggle:k,onDetailPanelHeightChange:N,pinCheckboxColumn:M,pinExpandColumn:S,rowReorderHandlers:D,editingHandlers:I,isCellEditable:A,focusedCell:C,colspanMap:L,rowSpanningCaches:F,paginationMode:_,dataSourceLoading:z,sortedUnpinnedRowCount:K,infiniteScrollSkeletonCount:Q,unpinnedRowsLength:G,lastRenderedRowIndex:j,rowMetaMap:H,loadingOverlay:ie,ariaRowIndexOffset:re,columnIndexMap:ue,cellRange:ae,cellRangeHasRowSpan:R=!1,fillHandle:te}){const ce=r.length>0?r:(()=>{const V=(l||1e3)-(d?48:0)-(a?48:0)-(u?48:0),J=150,ne=Math.max(1,Math.ceil(V/J));return Array.from({length:ne},(fe,Z)=>({field:`placeholder_${Z}`,headerName:"",width:J}))})(),W=o.filter(V=>!V.pinned),le=_==="infinite"&&z&&K>0&&j>=G-1;return c.jsx("div",{className:"ogx__virtual-container",style:{height:`${e}px`},role:"presentation",children:c.jsxs("div",{className:"ogx__rows",style:{transform:`translateY(${t}px)`},role:"rowgroup",children:[n&&o.length===0&&ie?c.jsx("div",{className:"ogx__loading-overlay",style:{width:l||void 0},children:ie}):n&&o.length===0?Array.from({length:10}).map((V,J)=>c.jsx(Rf,{columns:ce,rowHeight:g,checkboxSelection:d,hasDetailPanel:a,rowReordering:u},`skeleton-${J}`)):W.map(({row:V,id:J,rowIndex:ne})=>c.jsx(Zn,{row:V,rowId:J,columns:i,rowIndex:ne,ariaRowIndex:re!==void 0?ne+re:void 0,columnIndexMap:ue,isSelected:m.has(J),checkboxSelection:d,onRowClick:w,onRowDoubleClick:y,onCellClick:p,onSelectionChange:f,columnWidths:h,pinnedColumns:x,hasDetailPanel:a,isDetailPanelExpanded:b.has(J),detailPanelContent:b.has(J)&&v?c.jsx(os,{getContent:v,params:{row:V,id:J,rowIndex:ne}}):null,detailPanelHeight:b.has(J)?Ao(Po(E,{row:V,id:J,rowIndex:ne})):void 0,onDetailPanelHeightChange:N,onDetailPanelToggle:k,pinCheckboxColumn:M,pinExpandColumn:S,rowReordering:u,onDragStart:D.canReorderRow(J)?D.onDragStart:void 0,onDragOver:D.onDragOver,onDragEnd:D.onDragEnd,onDrop:D.onDrop,isDragging:D.draggedRowId===J,isDragOver:D.dragOverRowId===J,editingCell:I.editingCell,onEditStart:I.startCellEdit,onEditStop:I.stopCellEdit,onEditCellValueChange:I.setEditCellValue,isCellEditable:A,focusedCellField:C!=null&&C.id===J?C.field:null,colspanMap:L,rowSpanningCaches:F,rowHeight:g,rowMeta:H.get(J),cellRange:Di(ae,ne,R,te)},J)),le&&c.jsx("div",{className:"ogx__skeleton-group",children:Array.from({length:Q}).map((V,J)=>c.jsx(Zn,{row:{id:`__skeleton_${J}__`,_isSkeleton:!0},columns:i,rowIndex:G+J,rowHeight:g},`__skeleton_${J}__`))})]})})}function Xf(){return c.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("circle",{cx:"11",cy:"11",r:"8"}),c.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]})}function Yf(){return c.jsxs("svg",{className:"ogx-column-visibility-panel__drag-handle",width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:[c.jsx("circle",{cx:"9",cy:"5",r:"1.5"}),c.jsx("circle",{cx:"15",cy:"5",r:"1.5"}),c.jsx("circle",{cx:"9",cy:"12",r:"1.5"}),c.jsx("circle",{cx:"15",cy:"12",r:"1.5"}),c.jsx("circle",{cx:"9",cy:"19",r:"1.5"}),c.jsx("circle",{cx:"15",cy:"19",r:"1.5"})]})}function yr(e){const{columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:d,showNonHideableColumns:a}=e,[u,g]=s.useState(""),m=s.useId(),[w,y]=s.useState(null),p=s.useRef(null),f=s.useMemo(()=>t.filter(S=>S.hideable!==!1),[t]),h=f.every(S=>n.has(S.field)),x=s.useMemo(()=>{const S=a?t:f;if(!u)return S;const D=u.toLowerCase();return S.filter(I=>(I.headerName||I.field).toLowerCase().includes(D))},[t,f,u,a]),b=S=>{S.target.checked?r():i()},v=S=>D=>{p.current=S,D.dataTransfer.effectAllowed="move",D.dataTransfer.setDragImage(D.currentTarget.closest(".ogx-column-visibility-panel__item"),20,20)},E=S=>D=>{D.preventDefault(),D.dataTransfer.dropEffect="move",S!==p.current&&y(S)},k=()=>{y(null)},N=S=>D=>{D.preventDefault();const I=p.current;y(null),p.current=null,I&&I!==S&&l&&l(I,S)},M=()=>{y(null),p.current=null};return c.jsxs("div",{className:"ogx-column-visibility-panel",children:[c.jsx("div",{className:"ogx-column-visibility-panel__search-section",children:c.jsxs("div",{className:"ogx-column-visibility-panel__search-container",children:[c.jsx(Xf,{}),c.jsx(Qe,{autoComplete:"off",inputClassName:"ogx-column-visibility-panel__search-input",placeholder:"Search",value:u,onChange:S=>g(S.target.value)})]})}),c.jsx("div",{className:"ogx-column-visibility-panel__list",children:x.map((S,D)=>{const I=`${m}-col-${D}`,A=n.has(S.field),C=S.hideable!==!1,L=w===S.field,F=!!l&&!u;return c.jsxs("div",{className:["ogx-column-visibility-panel__item",!C&&"ogx-column-visibility-panel__item--disabled",L&&"ogx-column-visibility-panel__item--drag-over"].filter(Boolean).join(" "),draggable:F,onDragOver:F?E(S.field):void 0,onDragLeave:F?k:void 0,onDrop:F?N(S.field):void 0,onDragEnd:F?M:void 0,children:[F&&c.jsx("span",{className:"ogx-column-visibility-panel__drag-handle-wrapper",draggable:!0,onDragStart:v(S.field),title:"Drag to reorder",children:c.jsx(Yf,{})}),c.jsxs("div",{className:"ogx-column-visibility-panel__item-label",style:{display:"flex",alignItems:"center",gap:"var(--ogx-spacing-md)",flex:1,cursor:C?"pointer":"not-allowed"},children:[c.jsx(bt,{id:I,checked:A,onChange:_=>o(S.field,_.target.checked),disabled:!C}),c.jsx("label",{htmlFor:I,className:"ogx-column-visibility-panel__label",children:S.headerName||S.field})]})]},S.field)})}),c.jsxs("div",{className:"ogx-column-visibility-panel__footer",children:[c.jsxs("div",{className:"ogx-column-visibility-panel__item",children:[c.jsx(bt,{id:`${m}-all`,checked:h,onChange:b}),c.jsx("label",{htmlFor:`${m}-all`,className:"ogx-column-visibility-panel__label",children:"Show/Hide All"})]}),c.jsx("button",{type:"button",className:"ogx-column-visibility-panel__reset-btn",onClick:()=>{r(),d?.()},children:"Reset"})]})]})}function Jf({isOpen:e,containerRef:t,panelRef:n,columns:o,columnVisibilityModel:r,disableColumnReorder:i,onClose:l,onColumnVisibilityChange:d,onColumnMove:a,onColumnOrderReset:u,columnGroupingModel:g}){const[m,w]=s.useState(null);if(s.useLayoutEffect(()=>{if(!e||!t.current)return;const p=t.current.getBoundingClientRect();w({top:p.top+8,right:Ot()-p.right+8,target:t.current.closest(".ogx-theme-provider")||document.body})},[e,t]),!e||!m)return null;const y=i?void 0:(p,f)=>{rr(g,p,f)&&a(p,f)};return mt.createPortal(c.jsxs("div",{ref:n,style:{position:"fixed",top:m.top,right:m.right,zIndex:9999,display:"inline-block"},children:[c.jsx("button",{type:"button",onClick:l,style:{position:"absolute",top:-12,right:-12,width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",background:"#334155",color:"#fff",border:"none",borderRadius:"50%",cursor:"pointer",fontSize:14,lineHeight:1,zIndex:1,boxShadow:"0 1px 4px rgba(0,0,0,0.2)"},"aria-label":"Close",children:"×"}),c.jsx(yr,{columns:o,visibleColumns:new Set(o.filter(p=>r[p.field]!==!1).map(p=>p.field)),onVisibilityChange:(p,f)=>{d({...r,[p]:f})},onShowAll:()=>{const p={...r};o.forEach(f=>{f.hideable!==!1&&(p[f.field]=!0)}),d(p)},onHideAll:()=>{const p={...r};o.forEach(f=>{f.hideable!==!1&&(p[f.field]=!1)}),d(p)},onColumnReorder:y,onColumnOrderReset:i?void 0:u})]}),m.target)}function Zf(e){const{baseColumns:t,pinnedColumns:n,hasGroupingColumn:o,groupingColDef:r,isTreeData:i,getTreeDataPath:l}=e,d=s.useMemo(()=>o?{...n,left:["__group__",...(n?.left??[]).filter(u=>u!=="__group__")]}:n,[o,n]);return{activeColumns:s.useMemo(()=>o?[{headerName:"Group",width:220,...i&&l?{valueGetter:({row:u})=>{const g=l(u);return g[g.length-1]}}:{},...r,field:"__group__",hideable:!1,sortable:!1,filterable:!1,pinnable:!1,exportable:!1},...t]:t,[r,o,i,l,t]),effectivePinnedColumns:d}}function Qf(e){return e.id}function eg(e){const t=s.useCallback(r=>e.get(r)??r.id,[e]),n=s.useRef(t);s.useLayoutEffect(()=>{n.current=t});const o=s.useCallback(r=>n.current(r),[]);return{getRowIdOf:t,getRowIdOfInEvents:o}}function tg(e,t){s.useLayoutEffect(()=>{e&&(e.current=t.current)},[e,t])}function ng(e){const{hierarchyHandlers:t,pinnedTopRows:n,sortedUnpinnedRows:o,pinnedBottomRows:r,rowMetaMap:i,getRowId:l,hierarchyField:d,dataRows:a}=e,u=t?.getVisibleRows({expandAll:!0,labelField:d});if(!u)return[...n,...o,...r];const g=a?new Set(a):null;return u.filter(m=>!i.get(l(m))?.isGroupRow&&(!g||g.has(m)))}function og(e,t){if(e===t)return!0;const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;const o=e,r=t;return n.every(i=>Object.prototype.hasOwnProperty.call(t,i)&&Object.is(o[i],r[i]))}function rg(e,t){return e===t?!0:e.length!==t.length?!1:e.every((n,o)=>og(n,t[o]))}function ig(e){const[t,n]=s.useState(e),o=rg(t,e);return o||n(e),o?t:e}function lg(e){const{rows:t,getRowId:n,rowMetaMap:o,columns:r,aggregationModel:i,aggregationResult:l,isSubtotalHidden:d}=e,a=Object.keys(i).length>0,u=new Map(r.map(y=>[y.field,y])),g=[],m=[],w=y=>{for(;m.length>0&&m[m.length-1].header.depth>=y;){const p=m.pop();a&&!d?.(p.id)&&g.push({type:"group-subtotal",depth:p.header.depth,groupField:p.header.groupField,groupValue:p.header.groupValue,groupLabel:p.header.groupLabel,aggregatedValues:Hn(p.leaves,i,u,"getGroupedExportRows")})}};for(const y of t){const p=n(y),f=o.get(p);if(!f?.isGroupFooter)if(f?.isGroupRow){const h=f.treeDepth??0;w(h);const x={type:"group-header",depth:h,groupField:f.groupingField,groupValue:f.groupingValue,groupLabel:f.groupLabel};g.push(x),m.push({id:p,header:x,leaves:[]})}else g.push({type:"leaf",depth:f?.treeDepth??m.length,row:y}),m.forEach(h=>h.leaves.push(y))}return w(0),a&&l&&g.push({type:"grand-total",depth:0,aggregatedValues:l}),g}function sg(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e}),s.useLayoutEffect(()=>{const o=()=>n.current;t.current.getAggregationResult=()=>o().hasAggregation?o().aggregationResult:null,t.current.getAggregationModel=()=>o().hasAggregation?o().aggregationModel:null,t.current.getGroupedExportRows=()=>{const{hasAggregation:r,aggregationResult:i,aggregationModel:l,isRowGrouping:d,rowGroupingHandlers:a,rowMetaMap:u,columns:g,getRowId:m,hierarchyField:w}=o();return d?lg({rows:a.getVisibleRows({expandAll:!0,labelField:w})??[],getRowId:m,rowMetaMap:u,columns:g,aggregationModel:l,aggregationResult:r&&a.rootAggregationPosition!==null?i:null,isSubtotalHidden:y=>a.aggregationPositions.get(y)===null}):null}},[t])}const ag=new Set(["__group__","__check__","__actions__"]);function Dt(e){return e.filter(t=>t.exportable!==!1&&!t.isSpacer&&!Ze(t.field)&&!ag.has(t.field))}function yt(e){return!!e&&e.length>0}function is(e,t,n=o=>o.id){const o=new Set(t);return e.filter(r=>o.has(n(r)))}function yn(e,t,n){return yt(t)?is(e,t,n):e}function vn(e,t){return!!e&&e.length>0&&!yt(t)}function Yt(e,t,n,o,r){if(!o)return null;if(!t||!r||Object.keys(r).length===0)return o;const i=new Map(n.map(l=>[l.field,l]));return Hn(e,r,i,"export")}function Cn(e,t){const n=e[t.field];return t.valueGetter?t.valueGetter({row:e,field:t.field,value:n}):n}function _n(e,t,n){if(!t.valueFormatter)return Io(n,t);if(n==null)try{return String(t.valueFormatter({value:n,row:e,field:t.field})??"")}catch{return""}return String(t.valueFormatter({value:n,row:e,field:t.field})??"")}function vr(e,t,n,o){return n==null?"":Bn(n,t??"",e,o)}function Jt(e,t){return t?`${e}: ${t}`:e}function ls(e,t){const n={};return t.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o.field)&&(n[o.field]=e[o.field])}),n}const cg=/^[=+\-@\t\r]/,dg=/^[-+]?(?=[\d.,\s]*\d)[\d.,\s]*%?$/;function Qn(e,t=!1){return t||!cg.test(e)||dg.test(e)?e:`'${e}`}function vt(e){return typeof e=="number"||typeof e=="bigint"||typeof e=="boolean"||e instanceof Date}function Te(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function ug(e){let t=0,n=e.length;for(;t<n&&e[t]==="'";)t++;for(;n>t&&e[n-1]==="'";)n--;return e.slice(t,n)}const fg=/[\\/?*:[\]]/g,ss=31;function Cr(e,t=new Set){let n=ug(String(e??"").replace(fg,"-").trim()).trim();n||(n="Sheet"),n=n.slice(0,ss).trim();const o=i=>t.has(i.toLowerCase())||i.toLowerCase()==="history";let r=n;for(let i=2;o(r);i++){const l=` (${i})`;r=`${n.slice(0,ss-l.length).trim()}${l}`}return t.add(r.toLowerCase()),r}const gg=new Set([Je,Pt,At]),pg=/[\t\n\r"]/;function _r(e){return pg.test(e)?`"${e.replace(/"/g,'""')}"`:e}function hg(e){return Dt(e).filter(t=>!gg.has(t.field))}function mg(e,t){const n=t.map(r=>_r(r.headerName||r.field)).join(" "),o=e.map(r=>t.map(i=>_r(_n(r,i,Le(r,i.field,i)))).join(" "));return[n,...o].join(`
6
+ `)}function wg(e,t){const n=Le(e,t.field,t);try{return _n(e,t,n)}catch{return n==null?"":String(n)}}function bg(e,t,n){const o=new Array(e.length);for(let r=0;r<e.length;r++){const i=e[r],l=new Array(t.length);for(let d=0;d<t.length;d++){const a=t[d];l[d]=n?.(i,a)?"":_r(wg(i,a))}o[r]=l.join(" ")}return o.join(`
7
+ `)}function as(e){if(typeof document.execCommand!="function")return!1;const t=document.activeElement instanceof HTMLElement?document.activeElement:null,n=document.getSelection(),o=[];if(n)for(let l=0;l<n.rangeCount;l++)o.push(n.getRangeAt(l));const r=document.createElement("textarea");r.value=e,r.setAttribute("readonly",""),r.setAttribute("aria-hidden","true"),r.style.cssText="position:fixed;top:-9999px;left:-9999px;opacity:0;",document.body.appendChild(r);let i=!1;try{r.focus({preventScroll:!0}),r.select(),i=document.execCommand("copy")}finally{document.body.removeChild(r),t&&t.isConnected&&t.focus({preventScroll:!0}),n&&(n.removeAllRanges(),o.forEach(l=>n.addRange(l)))}return i}async function Sr(e){const t=typeof navigator<"u"?navigator.clipboard:void 0;if(t&&typeof t.writeText=="function")try{await t.writeText(e);return}catch(n){if(as(e))return;throw n}if(!as(e))throw new Error("Clipboard API not available and fallback failed.")}function xg(e){if(!(e.ctrlKey||e.metaKey)||e.altKey||e.shiftKey)return!1;const t=e.key??"";return t.toLowerCase()==="c"?!0:e.code==="KeyC"&&!/^[a-z]$/i.test(t)}function yg(e){const t=s.useRef(e);s.useLayoutEffect(()=>{t.current=e});const n=s.useCallback(async()=>{const{getSelectedRowIds:r,getColumns:i,getRows:l,getRowId:d}=t.current,a=new Set(r());if(a.size===0)return;const u=l().filter(m=>a.has(d(m)));if(u.length===0)return;const g=mg(u,hg(i()));await Sr(g)},[]),o=!!e.disableKeyboardShortcut;return s.useEffect(()=>{if(o)return;const r=i=>{if(i.defaultPrevented||!xg(i))return;const l=document.activeElement,d=l?.tagName.toLowerCase(),a=l?.type;if(d==="input"&&a!=="checkbox"&&a!=="radio"||d==="textarea"||d==="select"||l?.isContentEditable)return;const{getRootElement:u}=t.current;if(u){const y=u();if(!y||!l||!y.contains(l))return}const g=window.getSelection();if(g&&!g.isCollapsed&&g.toString()!=="")return;const{getShortcutText:m}=t.current;(m?()=>{const y=m();return y===null?Promise.resolve():Sr(y)}:n)().catch(y=>{console.error("[OpenGridX] Failed to copy to clipboard:",y)})};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[n,o]),{copySelectedRows:n}}function vg(e){const{apiRef:t,columns:n,getRowId:o,containerRef:r,disableKeyboardShortcut:i,getCellRangeCopyText:l}=e,d=s.useCallback(()=>r.current,[r]),{copySelectedRows:a}=yg({getSelectedRowIds:()=>t.current.getSelectedRows(),getColumns:()=>n,getRows:()=>t.current.getAllFilteredRows(),getRowId:o,getRootElement:d,disableKeyboardShortcut:i,getShortcutText:l});s.useLayoutEffect(()=>{t.current.copySelectedRows=a},[a,t])}function Cg(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e}),s.useLayoutEffect(()=>{t.current.scrollToIndexes=({rowIndex:o,colIndex:r})=>{const{viewportRef:i,layout:l,rowHeight:d}=n.current,a=i.current;if(a&&(o!==void 0&&o>=0&&Gn(a,o,l.cumulativeHeights,l.pinnedBottomHeight,d),r!==void 0&&r>=0)){const g=[...l.leftPinnedCols,...l.unpinnedColsWithWidth,...l.rightPinnedCols][r];if(!g)return;To(a,l.unpinnedColsWithWidth.findIndex(m=>m.field===g.field),l)}}},[t])}const _g=".ogx";function cs(e,t){const n=t.style.cssText;t.style.width="max-content",t.style.minWidth="0",t.style.maxWidth="none",t.style.flex="none";const o=t.getBoundingClientRect().width;t.style.cssText=n;const r=getComputedStyle(e),i=[r.paddingLeft,r.paddingRight,r.borderLeftWidth,r.borderRightWidth].reduce((l,d)=>l+(parseFloat(d)||0),0);return o+i}function Sg(e,t){const n=typeof CSS<"u"&&CSS.escape?CSS.escape(t):t.replace(/["\\]/g,"\\$&"),o=l=>l.closest(_g)===e;let r=null;const i=l=>{r=r===null?l:Math.max(r,l)};return e.querySelectorAll(`[role="columnheader"][data-field="${n}"]`).forEach(l=>{if(!o(l))return;const d=l.querySelector(".ogx__header-cell-content");d&&i(cs(l,d))}),e.querySelectorAll(`[role="gridcell"][data-field="${n}"]`).forEach(l=>{if(!o(l)||l.hasAttribute("aria-colspan"))return;const d=l.querySelector(":scope > .ogx__cell-content");d&&i(cs(l,d))}),r===null?null:Math.ceil(r)}function kg(e,t,n){return Math.max(t??cl,Math.min(n??1/0,e))}function Eg(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e});const o=s.useCallback(i=>{const{containerRef:l,columns:d,onColumnResize:a}=n.current,u=l.current;if(!u)return;const g=[];for(const m of i??d.map(w=>w.field)){const w=d.find(p=>p.field===m);if(!w||w.resizable===!1)continue;const y=Sg(u,m);y!==null&&g.push([m,kg(y,w.minWidth,w.maxWidth)])}for(const[m,w]of g)a(m,w)},[]),r=s.useCallback(i=>o([i]),[o]);return s.useLayoutEffect(()=>{t.current.autosizeColumn=r,t.current.autosizeColumns=o},[t,r,o]),r}const ds="ogx--range-dragging",Ct=32,Mg=40,Ng=300;function us(e,t){if(!e||e.nodeType!==1)return null;const n=e.closest(".ogx__cell[data-field]");if(!n||n.closest(".ogx__viewport")!==t)return null;const o=n.closest(".ogx__detail-panel");if(o&&t.contains(o))return null;const r=n.closest('[role="row"][data-rowindex]');if(!r)return null;const i=Number(r.getAttribute("data-rowindex")),l=n.dataset.field;return!Number.isInteger(i)||!l?null:{rowIndex:i,field:l,element:n}}function kr(e){const t=e.getSelection();t&&t.rangeCount>0&&t.removeAllRanges()}const fs=(e,t,n)=>Math.min(Math.max(e,t),n),eo=e=>Math.min(Mg,Math.max(2,Math.round(e/2)));function Ig(e){process.env.NODE_ENV!=="production"&&console.warn(`[OpenGridX] Copying ${e} cells. For ranges this large, exportToCsv or exportToExcel is the better tool.`)}function Lg(e){const{enabled:t,model:n,allRenderableRows:o,getRowId:r,navigationColumns:i,columnIndexMap:l,spanning:d,rowMetaMap:a,localeText:u,showStats:g}=e,m=t&&n.length>0?n[0]:null,w=s.useMemo(()=>t?i.filter(O=>Xe(O.field)):[],[t,i]),y=s.useMemo(()=>{if(!d.hasColSpan&&!d.hasRowSpan)return;const{colspanMap:O,rowSpanningCaches:P,getSpanOrigin:T}=d;return{getSpanOrigin:T,getColSpan:(X,B)=>{const ee=O.get(X)?.[B];return ee&&!ee.spannedByColSpan?ee.cellProps.colSpan:1},getRowSpan:(X,B)=>P.spannedCells[X]?.[B]??1}},[d]),p=s.useMemo(()=>{if(!t)return null;const O=o.map(r),P=new Map;O.forEach((X,B)=>{P.has(X)||P.set(X,B)});const T=w.map(X=>X.field);return{rowIds:O,rowIndexById:P,fields:T,colIndexByField:new Map(T.map((X,B)=>[X,B])),spans:y}},[t,o,r,w,y]),f=s.useMemo(()=>m&&p?Kn(m,p):null,[m,p]),h=f!==null&&Tt(f)>1,x=s.useMemo(()=>{if(!f||!h||!p)return null;const O=l.get(p.fields[f.left]),P=l.get(p.fields[f.right]);return O===void 0||P===void 0?null:{top:f.top,bottom:f.bottom,left:O,right:P}},[f,h,p,l]),b=s.useCallback(O=>qe(O,a),[a]),v=s.useCallback((O,P,T)=>{if(p)for(let X=O.top;X<=O.bottom;X++){const B=o[X],ee=p.rowIds[X];if(!(!B||b(ee))){P(B,ee);for(let q=O.left;q<=O.right;q++){const Y=w[q],oe=y?.getSpanOrigin(ee,Y.field);T(B,ee,Y,oe!=null&&(oe.rowId!==ee||oe.field!==Y.field))}}}},[p,o,w,y,b]),E={...e,range:m,resolved:f,context:p,rangeColumns:w,forEachCell:v},k=s.useRef(E);s.useLayoutEffect(()=>{k.current=E});const N=s.useRef(null),M=s.useCallback(O=>{N.current=O},[]),S=s.useCallback(()=>{const{getPendingModel:O,model:P}=k.current;return O()??P},[]),D=s.useCallback(()=>{const{context:O,range:P,resolved:T,enabled:X}=k.current,B=X?S()[0]??null:null;return!B||!O?{range:null,resolved:null}:B===P?{range:B,resolved:T}:{range:B,resolved:Kn(B,O)}},[S]),I=s.useCallback((O,P)=>{if(!k.current.enabled)return;const T=O.length>1?O.slice(0,1):O;nc(T,S())||k.current.onModelChange(T,P)},[S]),A=s.useCallback((O,P,T)=>{I([{anchor:O,head:P}],T)},[I]),C=s.useCallback((O,P)=>{const{viewportRef:T,layout:X,rowHeight:B,pinnedTopRowCount:ee}=k.current,q=T.current;q&&(Gn(q,O-ee,X.cumulativeHeights,X.pinnedBottomHeight,B),To(q,X.unpinnedColsWithWidth.findIndex(Y=>Y.field===P),X))},[]),L=s.useCallback((O,P,T,X)=>{const{context:B}=k.current,{range:ee,resolved:q}=D();if(!B||X.id===null||!Xe(X.field))return!1;const Y=B.rowIndexById.get(X.id),oe=B.colIndexByField.get(X.field);if(Y===void 0||oe===void 0)return!1;const me=ee&&q&&wt(ee.anchor,{id:X.id,field:X.field})?{range:ee,resolved:q}:null,U=me?me.range.anchor:{id:X.id,field:X.field},se=me?.resolved??Kn({anchor:U,head:U},B);if(!se)return!1;const we=rc(se,O,P,T,B.rowIds.length-1,B.fields.length-1);if(!we)return!0;const pe={id:B.rowIds[we.row],field:B.fields[we.col]};return A(U,pe,"keyboard"),C(we.row,pe.field),!0},[D,A,C]),F=s.useCallback(()=>{const{range:O,resolved:P}=D();return!O||!P||Tt(P)<=1?!1:(A(O.anchor,O.anchor,"keyboard"),!0)},[D,A]),_=s.useCallback(()=>{const{context:O}=k.current;return!O||O.rowIds.length===0||O.fields.length===0?!1:(A({id:O.rowIds[0],field:O.fields[0]},{id:O.rowIds[O.rowIds.length-1],field:O.fields[O.fields.length-1]},"selectAll"),!0)},[A]),z=s.useCallback(()=>{const{context:O}=k.current,{range:P,resolved:T}=D();if(!O)return null;if(T)return T;if(P)return null;const X=N.current;return!X||X.id===null||!Xe(X.field)?null:Kn({anchor:{id:X.id,field:X.field},head:{id:X.id,field:X.field}},O)},[D]),K=s.useCallback(()=>{const O=z();if(!O)return null;const{rangeColumns:P,forEachCell:T}=k.current,X=Tt(O);X>ac&&Ig(X);const B=[];if(T(O,me=>{B.push(me)},()=>{}),B.length===0)return null;const ee=P.slice(O.left,O.right+1),q=k.current.context?.spans,Y=k.current.getRowId;return bg(B,ee,q?(me,U)=>{const se=Y(me),we=q.getSpanOrigin(se,U.field);return we!==null&&(we.rowId!==se||we.field!==U.field)}:void 0)},[z]),Q=s.useCallback(()=>{const{forEachCell:O}=k.current,{resolved:P}=D();if(!P)return[];const T=[];return O(P,()=>{},(X,B,ee,q)=>{q||T.push({id:B,field:ee.field,value:Le(X,ee.field,ee)})}),T},[D]),G=s.useRef(null),j=s.useRef(!1);s.useEffect(()=>()=>G.current?.stop(),[]);const H=s.useCallback((O,P,T)=>{const X=k.current.context;if(!X)return null;const B=O.ownerDocument;if(typeof B.elementFromPoint!="function")return null;const ee=us(B.elementFromPoint(P,T),O);if(!ee)return null;const q=X.rowIds[ee.rowIndex];if(q===void 0)return null;const Y=Xe(ee.field)?ee.field:X.fields[0];return Y===void 0?null:{id:q,field:Y}},[]),ie=s.useCallback((O,P)=>{const{context:T,layout:X,pinnedTopRowCount:B}=k.current,ee=X.cumulativeHeights;if(!T||ee.length===0||O<0)return null;let q=0,Y=ee.length-1;for(;q<Y;){const me=q+Y>>1;ee[me]>O?Y=me:q=me+1}const oe=T.rowIds[q+B];return oe===void 0?null:{id:oe,field:P}},[]),re=s.useRef(()=>{}),ue=s.useCallback(O=>{const P=G.current,T=k.current.viewportRef.current;if(!P||!T)return;P.frame=0;const{layout:X}=k.current,B=T.getBoundingClientRect(),ee=T.clientWidth,q=T.clientHeight,Y=T.querySelector(":scope > .ogx__content > .ogx__sticky-top"),oe=T.querySelector(":scope > .ogx__content > .ogx__sticky-bottom"),me=Y?.querySelector(":scope > .ogx__header-wrap"),U=Y?Y.getBoundingClientRect().bottom:B.top,se=Math.min(B.top+q,oe?oe.getBoundingClientRect().top:B.top+q),we=me?me.getBoundingClientRect().bottom:U,pe=B.left+X.pinnedSystemColumnsWidth+X.leftWidth,he=B.left+ee-X.rightWidth,ve=fs(P.x,B.left+1,B.left+ee-2);let be=P.y;(be<B.top||be>B.top+q||be<we)&&(be=fs(be,U+1,Math.max(U+1,se-2)));const de=typeof T.ownerDocument.elementFromPoint=="function",Ee=H(T,ve,be)??(de&&P.moved?ie(be-B.top-(Y?Y.getBoundingClientRect().height:0)+T.scrollTop,P.head.field):null);if(Ee&&!wt(Ee,P.head)&&(P.head=Ee,!P.moved&&!wt(Ee,P.anchor)&&(P.moved=!0,k.current.containerRef.current?.classList.add(ds),kr(T.ownerDocument)),P.onTrack||A(P.anchor,Ee,"pointer")),P.onTrack&&P.onTrack(P.head,P.x,P.y),!O)return;const Me=P.y<U||P.y>se||P.x<B.left||P.x>B.left+ee;if(!P.moved&&!Me)return;let Ne=0,Ie=0;P.y<U+Ct?Ne=-eo(U+Ct-P.y):P.y>se-Ct&&(Ne=eo(P.y-(se-Ct))),P.x<pe+Ct?Ie=-eo(pe+Ct-P.x):P.x>he-Ct&&(Ie=eo(P.x-(he-Ct)));const Se=Ne<0&&T.scrollTop>0||Ne>0&&T.scrollTop+q<T.scrollHeight-1,Oe=Ie<0&&T.scrollLeft>0||Ie>0&&T.scrollLeft+ee<T.scrollWidth-1;!Se&&!Oe||(Se&&(T.scrollTop+=Ne),Oe&&(T.scrollLeft+=Ie),P.frame=requestAnimationFrame(()=>re.current(!0)))},[H,ie,A]);s.useLayoutEffect(()=>{re.current=ue},[ue]);const ae=s.useCallback((O,P,T,X,B,ee)=>{G.current?.stop();const q=ee?"pointermove":"mousemove",Y=ee?"pointerup":"mouseup",oe=de=>!ee||de.pointerId===ee.pointerId,me=de=>{const ye=G.current;if(!(!ye||!oe(de))){if(de.buttons===0){ye.stop();return}ye.x=de.clientX,ye.y=de.clientY,ye.moved&&(de.preventDefault(),kr(B)),ye.frame||(ye.frame=requestAnimationFrame(()=>ue(!0)))}},U=de=>{const ye=G.current;if(!ye||!oe(de))return;ye.x=de.clientX,ye.y=de.clientY,ue(!1);const Ee=ye.moved;ye.stop(!1,de.altKey),Ee&&kr(B),Ee&&(j.current=!0,setTimeout(()=>{j.current=!1},0))},se=de=>{oe(de)&&G.current?.stop()},we=de=>{de.key!=="Escape"||!G.current||(de.preventDefault(),de.stopPropagation(),G.current.stop())},pe=B.defaultView,he=()=>G.current?.stop();let ve=!1;const be={anchor:O,head:P,x:T,y:X,frame:0,moved:!1,onTrack:ee?.onTrack,stop:(de=!0,ye=!1)=>{be.frame&&cancelAnimationFrame(be.frame),be.frame=0,B.removeEventListener(q,me,!0),B.removeEventListener(Y,U,!0),ee&&(B.removeEventListener("pointercancel",se,!0),B.removeEventListener("keydown",we,!0)),pe?.removeEventListener("blur",he),k.current.containerRef.current?.classList.remove(ds),G.current===be&&(G.current=null),ve||(ve=!0,ee&&ee.onEnd({cancelled:de,altKey:ye}))}};G.current=be,B.addEventListener(q,me,!0),B.addEventListener(Y,U,!0),ee&&(B.addEventListener("pointercancel",se,!0),B.addEventListener("keydown",we,!0)),pe?.addEventListener("blur",he)},[ue]),R=s.useCallback(O=>{const P=k.current.viewportRef.current;if(!P||!k.current.enabled)return;const{start:T,x:X,y:B,pointerId:ee,onTrack:q,onEnd:Y}=O;ae(T,T,X,B,P.ownerDocument,{pointerId:ee,onTrack:q,onEnd:Y})},[ae]),te=s.useCallback(O=>{if(O.button!==0||O.defaultPrevented)return;const{context:P}=k.current;if(!P)return;const T=O.currentTarget,X=us(O.target,T);if(!X||!Xe(X.field)||O.target.closest?.(".ogx__cell-fill-handle")||X.element.classList.contains("ogx__cell--editing")||Ai(O.target))return;const B=P.rowIds[X.rowIndex];if(B===void 0)return;const ee={id:B,field:X.field};let q=ee;if(O.shiftKey){const Y=S()[0],oe=N.current;Y&&P.rowIndexById.has(Y.anchor.id)&&P.colIndexByField.has(Y.anchor.field)?q=Y.anchor:oe&&oe.id!==null&&Xe(oe.field)&&(q={id:oe.id,field:oe.field}),O.preventDefault(),j.current=!0;const me=T.ownerDocument;T.contains(me.activeElement)||T.focus({preventScroll:!0})}if(A(q,ee,"pointer"),ae(q,ee,O.clientX,O.clientY,T.ownerDocument),O.shiftKey){const Y=G.current;Y&&!wt(q,ee)&&(Y.moved=!0)}},[S,A,ae]),ce=s.useCallback(O=>{j.current&&(j.current=!1,O.stopPropagation(),O.preventDefault())},[]),W=f?f.right-f.left+1:0,le=f?f.bottom-f.top+1:0,V=u?.cellSelectionAnnouncement??sc,J=h?V(le*W,le,W):"",[ne,fe]=s.useState("");s.useEffect(()=>{if(!t)return;const O=setTimeout(()=>fe(J),Ng);return()=>clearTimeout(O)},[t,J]);const Z=s.useMemo(()=>{if(!g||!f||!h)return null;const O=[];v(f,()=>{},(T,X,B,ee)=>{ee||O.push(Le(T,B.field,B))});const P=O.filter(T=>typeof T=="number"&&!Number.isNaN(T));return{cellCount:Tt(f),rowCount:f.bottom-f.top+1,columnCount:f.right-f.left+1,count:Lt.count(O),numericCount:P.length,sum:P.length?Lt.sum(P):null,average:P.length?Lt.avg(P):null}},[g,f,h,v]),$=s.useMemo(()=>t?{extendSelection:L,collapseSelection:F,selectAllCells:_}:void 0,[t,L,F,_]);return{enabled:t,range:m,resolved:f,displayRange:x,hasRowSpan:d.hasRowSpan,handleMouseDown:t?te:void 0,handleClickCapture:t?ce:void 0,extendSelection:L,collapseSelection:F,selectAllCells:_,keyboard:$,getCopyText:K,getSelectedCells:Q,announcement:t?ne:"",stats:Z,reportFocus:M,setModel:I,getCurrentRange:D,startTrackedDrag:R}}function Ag(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e});const o=s.useRef(null),r=s.useRef(null),i=s.useRef(null),{selection:l,model:d,focusedCell:a,setFocusedCell:u,containerRef:g}=e,m=l.range?.anchor??null,w=l.resolved?.anchorRow;s.useLayoutEffect(()=>{l.reportFocus(a);const y=!wt(o.current,m),p=!qo(r.current,a);if(o.current=m,r.current=a,!!l.enabled){if(l.range&&!l.resolved){i.current!==d&&(i.current=d,l.setModel([],"dataChange"));return}if(y&&m){(!a||a.id!==m.id||a.field!==m.field)&&u({id:m.id,field:m.field,rowIndex:w});return}if(p&&a&&a.id!==null&&Xe(a.field)&&!wt(m,{id:a.id,field:a.field})){const f={id:a.id,field:a.field},h=g.current?.classList.contains("ogx--kb")??!1;l.setModel([{anchor:f,head:f}],h?"keyboard":"pointer")}}},[l,d,m,w,a,u,g]),s.useLayoutEffect(()=>{const y=t.current,p=()=>n.current;y.getCellSelectionModel=()=>{const{selection:f,getPendingModel:h,model:x}=p();return f.enabled?h()??x:[]},y.setCellSelectionModel=f=>{p().selection.setModel(f,"api")},y.selectCellRange=(f,h)=>{p().selection.setModel([{anchor:f,head:h}],"api")},y.clearCellSelection=()=>{p().selection.setModel([],"clear")},y.getSelectedCells=()=>p().selection.getSelectedCells(),y.copySelectedCells=async()=>{const{selection:f}=p();if(!f.enabled)return;const h=f.getCopyText();h!==null&&await Sr(h)}},[t])}function gs({count:e,sum:t,average:n}){return c.jsxs("div",{className:"ogx__cell-selection-stats",children:[c.jsxs("span",{className:"ogx__cell-selection-stat",children:[c.jsx("span",{className:"ogx__cell-selection-stat-label",children:"Count"}),c.jsx("span",{className:"ogx__cell-selection-stat-value","data-stat":"count",children:e.toLocaleString()})]}),t!==null&&c.jsxs("span",{className:"ogx__cell-selection-stat",children:[c.jsx("span",{className:"ogx__cell-selection-stat-label",children:"Sum"}),c.jsx("span",{className:"ogx__cell-selection-stat-value","data-stat":"sum",children:pn(t,"sum")})]}),n!==null&&c.jsxs("span",{className:"ogx__cell-selection-stat",children:[c.jsx("span",{className:"ogx__cell-selection-stat-label",children:"Average"}),c.jsx("span",{className:"ogx__cell-selection-stat-value","data-stat":"average",children:pn(n,"avg")})]})]})}function Pg({stats:e,apiRef:t,slot:n,slotProps:o}){const r=n??gs;return c.jsx("div",{className:"ogx__cell-selection-stats-area","aria-hidden":e?void 0:!0,children:e&&c.jsx(r,{apiRef:t,...e,...o})})}function Tg(e){return s.useCallback(t=>{e.current?.classList.toggle("ogx--kb",t)},[e])}function Fg(e){const{ensureGridFocus:t,setKeyboardMode:n,setFocusedCell:o,getRowId:r,onCellClick:i}=e,l=s.useCallback(a=>{t(),n(!1),o({id:r(a.row),field:a.field,rowIndex:a.rowIndex}),i?.(a)},[i,n,o,t,r]),d=s.useCallback(a=>{t(),o({id:null,field:a}),n(!1)},[t,o,n]);return{handleCellClick:l,handleHeaderClick:d}}function Og({paginationSlot:e,paginationSlotProps:t,page:n,paginationModel:o,rowCount:r,pageSizeOptions:i,onPaginationModelChange:l,localeText:d}){const a=e||mr;return c.jsx(a,{page:n,pageSize:o.pageSize,rowCount:r,pageSizeOptions:i,onPageChange:u=>l({...o,page:u}),onPageSizeChange:u=>l({...o,pageSize:u,page:0}),localeText:ji(d),...t})}function Dg({loading:e,error:t,noRowsLabel:n,filteredRowCount:o,dataRowCount:r,filterModel:i,cellSelectionAnnouncement:l,aiAssistantAnnouncement:d}){return c.jsxs("div",{className:"ogx-aria-live-status",role:"status","aria-live":"polite",children:[e?"Loading data...":"",t?`Error: ${sl(t)}`:"",!e&&!t&&(o===0?n:i&&((i.quickFilterValues?.length||0)>0||(i.items?.length||0)>0)?`${r} ${r===1?"row":"rows"} found`:""),l?c.jsxs("span",{className:"ogx-aria-live-status__cells",children:[" ",l]}):null,d?c.jsxs("span",{className:"ogx-aria-live-status__ai",children:[" ",d]}):null]})}function $g(e){const{headerRowCount:t,pinnedTopCount:n,pinnedBottomCount:o,pageRowCount:r,totalCenterRowCount:i,pageOffset:l}=e;return{rowCount:t+n+i+o,topBase:t+1,centerOffset:t+l+1,bottomBase:t+n+i+1,bottomRowIndexOffset:n+r}}function Gg(e){const{columnGroupingModel:t,headerFilterRow:n=!1,pinnedTopCount:o,pinnedBottomCount:r,pagination:i,paginationMode:l,paginationModel:d,paginationRowCount:a,paginatedUnpinnedRowCount:u,sortedUnpinnedRowCount:g}=e,{page:m,pageSize:w}=d;return s.useMemo(()=>$g({headerRowCount:1+dl(t)+(n?1:0),pinnedTopCount:o,pinnedBottomCount:r,pageRowCount:i?u:g,totalCenterRowCount:i&&l==="server"?Math.max(a,u):g,pageOffset:i?m*w:0}),[t,n,o,r,i,u,g,l,a,m,w])}function Hg(e){const{toolbar:t,toolbarSlotProps:n,apiRef:o,orderedColumns:r,baseColumns:i,aggregationModel:l,onAggregationModelChange:d,pivotMode:a,pivotModelProp:u,onPivotModelChangeProp:g,pivotModel:m,onPivotModelChange:w,filterModel:y,onFilterModelChange:p,columnVisibilityModel:f,onColumnVisibilityModelChange:h,disableColumnReorder:x,columnGroupingModel:b,moveColumn:v,resetColumnOrder:E,forceColumnsOpen:k,onColumnsPanelClose:N,aiAssistantEnabled:M=!1,aiAssistantOpen:S=!1,onAiAssistantToggle:D,aiAssistantLabel:I,forceFiltersOpen:A,onFiltersPanelClose:C}=e;return s.useMemo(()=>t?{apiRef:o,columns:r,baseColumns:i,aggregationModel:l,onAggregationModelChange:d,...a||u||g?{pivotModel:m,onPivotModelChange:w}:{},filterModel:y,onFilterModelChange:p,columnVisibilityModel:f,onColumnVisibilityModelChange:h,onColumnReorder:x?void 0:(F,_)=>{rr(b,F,_)&&v(F,_)},onColumnOrderReset:x?void 0:E,forceColumnsOpen:k,onColumnsPanelClose:N,...M&&D?{onAiAssistantToggle:D,aiAssistantOpen:S,...I?{aiAssistantLabel:I}:{}}:{},forceFiltersOpen:A,onFiltersPanelClose:C,...n}:null,[t,x,v,E,r,o,i,l,d,a,u,g,m,w,y,p,f,h,k,N,n,b,M,S,D,I,A,C])}const Bg=Symbol.for("opengridx.ai.validated");function Wg(e){return typeof e=="object"&&e!==null&&e[Bg]===!0}const to=["filter","sort","grouping","aggregation","pivot","columnVisibility"],Er={filter:"filterModel",sort:"sortModel",grouping:"rowGroupingModel",aggregation:"aggregationModel",pivot:"pivotModel",columnVisibility:"columnVisibilityModel"};function ps(e){return to.map(t=>Er[t]).filter(t=>e[t]!==void 0)}function Vg(e,t){const n={},o=[];for(const r of to){const i=Er[r];e[i]!==void 0&&(t.includes(r)?Object.assign(n,{[i]:e[i]}):o.push({path:i,message:"Part not allowed"}))}return{state:n,errors:o}}function zg(e,t){const n=e[t];if(Array.isArray(n))return n.length===0;if(t==="filterModel"){const o=e.filterModel;return!o||(o.items??[]).length===0&&(o.quickFilterValues??[]).length===0}if(t==="pivotModel"){const o=e.pivotModel;return!o||o.rowFields.length===0&&o.columnFields.length===0&&o.valueFields.length===0}return typeof n=="object"&&n!==null&&Object.keys(n).length===0}function Kg(e){let t=e.length;for(const n of[".","["]){const o=e.indexOf(n);o>=0&&o<t&&(t=o)}return e.slice(0,t)}function jg(e,t){const n=new Set(t.map(r=>Kg(typeof r.path=="string"?r.path:""))),o={};for(const r of ps(e))n.has(r)&&zg(e,r)||Object.assign(o,{[r]:e[r]});return o}function Ug(e,t){const n={};for(const o of ps(e))Object.assign(n,{[o]:t[o]});return n}function hs(e,t){const n={};for(const o of to.map(r=>Er[r]))!(o in t)&&e[o]===void 0||(e[o]===void 0?Object.assign(n,{[o]:t[o]}):o==="columnVisibilityModel"?n.columnVisibilityModel={...t.columnVisibilityModel,...e.columnVisibilityModel}:Object.assign(n,{[o]:e[o]}));return n}function Mr(e,t){t.filterModel&&e.setFilterModel(t.filterModel),t.sortModel&&e.setSortModel(t.sortModel),t.rowGroupingModel&&e.setRowGroupingModel(t.rowGroupingModel),t.aggregationModel&&e.setAggregationModel(t.aggregationModel),t.pivotModel&&e.setPivotModel(t.pivotModel),t.columnVisibilityModel&&e.setColumnVisibilityModel(t.columnVisibilityModel)}function ms(e){return Array.isArray(e)?e.map(ms).join(", "):e instanceof Date?e.toISOString().slice(0,10):e==null?"":String(e)}function ws(e,t){return"items"in e?`(${e.items.map(n=>ws(n,t)).join(` ${e.logicOperator} `)})`:[t(e.field),e.operator,ms(e.value)].filter(Boolean).join(" ")}const Rg={sum:"Sum",avg:"Average",count:"Count",min:"Min",max:"Max",unique:"Unique"};function bs(e,t){const n=[],{filterModel:o,sortModel:r,rowGroupingModel:i,aggregationModel:l,pivotModel:d,columnVisibilityModel:a}=e;if(o){const u=o.items??[];u.forEach((m,w)=>n.push({id:`filter:${w}`,part:"filter",label:ws(m,t)}));const g=o.quickFilterValues??[];g.length>0&&n.push({id:"filter:quick",part:"filter",label:`Search: ${g.join(" ")}`}),u.length===0&&g.length===0&&n.push({id:"filter:clear",part:"filter",label:"No filters"})}if(r&&(r.forEach((u,g)=>n.push({id:`sort:${g}`,part:"sort",label:`Sort: ${t(u.field)}, ${u.sort==="desc"?"descending":"ascending"}`})),r.length===0&&n.push({id:"sort:clear",part:"sort",label:"No sorting"})),i&&(i.forEach((u,g)=>n.push({id:`grouping:${g}`,part:"grouping",label:`Group: ${t(u)}`})),i.length===0&&n.push({id:"grouping:clear",part:"grouping",label:"No grouping"})),l){const u=Object.keys(l);u.forEach(g=>{const m=l[g];n.push({id:`aggregation:${g}`,part:"aggregation",label:`${Rg[m]??m}: ${t(g)}`})}),u.length===0&&n.push({id:"aggregation:clear",part:"aggregation",label:"No summaries"})}if(d){const u=[...d.rowFields,...d.columnFields,...d.valueFields.map(g=>g.field)];n.push({id:"pivot",part:"pivot",label:u.length>0?`Pivot: ${u.map(t).join(", ")}`:"No pivot"})}if(a)for(const u of Object.keys(a))n.push({id:`columnVisibility:${u}`,part:"columnVisibility",label:`${a[u]?"Show":"Hide"}: ${t(u)}`});return n}function qg(e,t){const n={...e},o=t.indexOf(":"),r=o<0?t:t.slice(0,o),i=o<0?"":t.slice(o+1),l=Number(i);if(r==="filter"&&n.filterModel){const d={...n.filterModel};i==="quick"?delete d.quickFilterValues:i==="clear"?d.items=[]:d.items=(d.items??[]).filter((a,u)=>u!==l),(d.items??[]).length===0&&(d.quickFilterValues??[]).length===0?delete n.filterModel:n.filterModel=d}else if(r==="sort"&&n.sortModel)n.sortModel=n.sortModel.filter((d,a)=>a!==l),(n.sortModel.length===0||i==="clear")&&delete n.sortModel;else if(r==="grouping"&&n.rowGroupingModel)n.rowGroupingModel=n.rowGroupingModel.filter((d,a)=>a!==l),(n.rowGroupingModel.length===0||i==="clear")&&delete n.rowGroupingModel;else if(r==="aggregation"&&n.aggregationModel){const d={...n.aggregationModel};delete d[i],Object.keys(d).length===0?delete n.aggregationModel:n.aggregationModel=d}else if(r==="columnVisibility"&&n.columnVisibilityModel){const d={...n.columnVisibilityModel};delete d[i],Object.keys(d).length===0?delete n.columnVisibilityModel:n.columnVisibilityModel=d}else r==="pivot"&&delete n.pivotModel;return n}const Xg="Ask about this table…",Yg=[],no=[],xs="The reply was not validated";function Jg(){return typeof window<"u"&&("SpeechRecognition"in window||"webkitSpeechRecognition"in window)}function Zg(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function Qg(e){return e instanceof Error&&e.message?e.message:"Unknown error"}function ep(e,t){const n=e===0?"No changes":`Applied ${e} ${e===1?"change":"changes"}`;return t>0?`${n}, ${t} ignored`:n}function ys(e,t,n){if(!e)return;const o=We(()=>e(t));!o.ok&&process.env.NODE_ENV!=="production"&&console.warn(`[OpenGridX] ${n} threw.`,o.error)}function tp(e){const{apiRef:t,options:n,columns:o}=e,r=!!n,[i,l]=s.useState(!1),[d,a]=s.useState("idle"),[u,g]=s.useState(""),[m,w]=s.useState(null),[y,p]=s.useState(no),[f,h]=s.useState(null),[x,b]=s.useState([]),v=s.useRef(null),E=s.useRef(null),k=s.useRef({params:e,applied:f,history:x,open:i});s.useLayoutEffect(()=>{k.current={params:e,applied:f,history:x,open:i}});const N=s.useMemo(()=>{const j=new Map(o.map(H=>[H.field,H.headerName||H.field]));return H=>j.get(H)??H},[o]),M=s.useMemo(()=>f?bs(f.state,N):[],[f,N]),S=s.useCallback(()=>{const j=v.current;v.current=null,j&&j.abort()},[]);s.useEffect(()=>S,[S]);const D=s.useCallback(j=>{if(!k.current.params.options)return;const H=typeof document>"u"?null:document.activeElement;E.current=j??(H instanceof HTMLElement?H:null),l(!0)},[]),I=s.useCallback(()=>{v.current&&(S(),a("stopped"),g("Stopped")),l(!1);const j=E.current;E.current=null,j&&j.isConnected&&j.focus()},[S]),A=s.useCallback(j=>{k.current.open?I():D(j)},[D,I]),C=s.useCallback((j,H)=>{a("error"),g(j),w(null),p(no),ys(k.current.params.onError,H,"onAiAssistantError")},[]),L=s.useCallback((j,H)=>{const{params:ie}=k.current;if(!(typeof H=="object"&&H!==null)||!Wg(H.state)){process.env.NODE_ENV!=="production"&&console.warn("[OpenGridX] aiAssistant: the onPrompt result was not applied because its state was not validated. Return the result of createGridAiPromptHandler, or pass the model reply through validateGridAiState (from @opencorestack/opengridx/ai) and return its state."),C(xs,new Error(xs));return}const ue=Vg(H.state,ie.options?.parts??to),ae=[...Array.isArray(H.errors)?H.errors:[],...ue.errors],R=jg(ue.state,ae),te=t.current,ce=Ug(R,te.getGridAiState());Mr(te,hs(R,ce)),h({state:R,previous:ce}),p(ae),w(typeof H.message=="string"&&H.message?H.message:null),b(W=>[...W,{prompt:j,applied:R}]),a("applied"),g(ep(bs(R,W=>W).length,ae.length)),ys(ie.onApply,H,"onAiAssistantApply")},[t,C]),F=s.useCallback(j=>{const H=j.trim(),{params:ie,history:re}=k.current,ue=ie.options?.onPrompt;if(!H||!ue)return;S();const ae=new AbortController;v.current=ae,a("running"),g("Thinking…"),w(null),p(no);const R={currentState:t.current.getGridAiState(),history:re,signal:ae.signal},te=We(()=>ue(H,R));(te.ok?Promise.resolve(te.value):Promise.reject(te.error)).then(W=>{v.current===ae&&(v.current=null,L(H,W))},W=>{if(v.current===ae){if(v.current=null,ae.signal.aborted||Zg(W)){a("stopped"),g("Stopped");return}C(`The assistant could not answer: ${Qg(W)}`,W)}})},[t,S,L,C]),_=s.useCallback(()=>{v.current&&(S(),a("stopped"),g("Stopped"))},[S]),z=s.useCallback(()=>{const j=k.current.applied;j&&(Mr(t.current,j.previous),h(null),p(no),w(null),a("idle"),g("Undone"))},[t]),K=s.useCallback(j=>{const H=k.current.applied;if(!H)return;const ie=qg(H.state,j);Mr(t.current,hs(ie,H.previous)),h({state:ie,previous:H.previous}),g("Change removed")},[t]);s.useLayoutEffect(()=>{const j=t.current;j.openAiAssistant=()=>D(),j.closeAiAssistant=()=>{k.current.open&&I()}},[t,D,I]);const Q=r&&i,G=s.useMemo(()=>!Q||!n?null:{status:d,statusText:u,message:m,errors:y,chips:M,history:x,suggestions:n.suggestions??Yg,placeholder:n.placeholder??Xg,voiceAvailable:n.voice!==!1&&Jg(),canUndo:f!==null,submit:F,stop:_,undo:z,removeChip:K,close:I},[Q,n,d,u,m,y,M,x,f,F,_,z,K,I]);return{enabled:r,open:Q,openPanel:D,togglePanel:A,closePanel:I,panelProps:G,announcement:r?u:""}}function np(){if(typeof window>"u")return null;const e=window;return e.SpeechRecognition??e.webkitSpeechRecognition??null}function op(e){const[t,n]=s.useState(!1),o=s.useRef(null),r=s.useRef(e);s.useLayoutEffect(()=>{r.current=e}),s.useEffect(()=>()=>{const l=o.current;o.current=null,l&&We(()=>l.abort())},[]);const i=s.useCallback(()=>{const l=o.current;if(l){We(()=>l.stop());return}const d=np();if(!d)return;const a=We(()=>new d);if(!a.ok)return;const u=a.value;u.lang=typeof navigator>"u"?"en-US":navigator.language,u.interimResults=!1,u.maxAlternatives=1,u.onresult=m=>{const w=m.results[0],y=w&&w[0]?w[0].transcript:"";y&&r.current(y)};const g=()=>{o.current===u&&(o.current=null),n(!1)};u.onend=g,u.onerror=g,o.current=u,n(!0),We(()=>u.start()).ok||g()},[]);return{listening:t,toggle:i}}function vs(){return c.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinejoin:"round","aria-hidden":"true",focusable:"false",children:[c.jsx("path",{d:"M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9z"}),c.jsx("path",{d:"M19 15l.8 2.2L22 18l-2.2.8L19 21l-.8-2.2L16 18l2.2-.8z"})]})}function rp(){return c.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",focusable:"false",children:[c.jsx("rect",{x:"9",y:"3",width:"6",height:"11",rx:"3"}),c.jsx("path",{d:"M5 11a7 7 0 0 0 14 0M12 18v3"})]})}function ip(e){const{status:t,statusText:n,message:o,errors:r,chips:i,history:l,suggestions:d,placeholder:a,voiceAvailable:u,canUndo:g,submit:m,stop:w,undo:y,removeChip:p,close:f}=e,[h,x]=s.useState(""),b=s.useRef(null),v=op(x),E=t==="running";s.useEffect(()=>{b.current&&b.current.focus()},[]);const k=S=>{x(S),m(S)},N=S=>()=>{S(),b.current&&b.current.focus()},M=S=>{S.preventDefault(),E||m(h)};return c.jsxs("div",{className:"ogx-ai-panel",role:"dialog","aria-label":"Ask AI",children:[c.jsxs("div",{className:"ogx-ai-panel__header",children:[c.jsxs("span",{className:"ogx-ai-panel__title",children:[c.jsx(vs,{}),"Ask AI"]}),c.jsx(tt,{size:"small",className:"ogx-ai-panel__close","aria-label":"Close",onClick:f,children:"×"})]}),c.jsxs("form",{className:"ogx-ai-panel__form",onSubmit:M,children:[c.jsx(Qe,{ref:b,className:"ogx-ai-panel__input",value:h,placeholder:a,"aria-label":"Prompt",autoComplete:"off",onChange:S=>x(S.target.value)}),u&&c.jsx(tt,{size:"small",variant:"outlined",className:`ogx-ai-panel__mic${v.listening?" ogx-ai-panel__mic--on":""}`,"aria-label":v.listening?"Stop dictation":"Dictate a prompt","aria-pressed":v.listening,onClick:v.toggle,children:c.jsx(rp,{})}),E?c.jsx(tt,{size:"small",variant:"outlined",onClick:N(w),children:"Stop"},"stop"):c.jsx(tt,{size:"small",variant:"contained",color:"primary",type:"submit",disabled:h.trim()==="",children:"Ask"},"ask")]}),d.length>0&&c.jsx("div",{className:"ogx-ai-panel__suggestions","aria-label":"Suggestions",role:"group",children:d.map(S=>c.jsx("button",{type:"button",className:"ogx-ai-panel__suggestion",disabled:E,onClick:()=>k(S),children:S},S))}),n&&c.jsx("div",{className:`ogx-ai-panel__status ogx-ai-panel__status--${t}`,children:n}),o&&c.jsx("p",{className:"ogx-ai-panel__message",children:o}),(i.length>0||g)&&c.jsxs("div",{className:"ogx-ai-panel__changes",children:[c.jsx("ul",{className:"ogx-ai-panel__chips","aria-label":"Applied changes",children:i.map(S=>c.jsxs("li",{className:"ogx-ai-chip","data-part":S.part,children:[c.jsx("span",{className:"ogx-ai-chip__label",children:S.label}),c.jsx("button",{type:"button",className:"ogx-ai-chip__remove","aria-label":`Remove ${S.label}`,onClick:N(()=>p(S.id)),children:"×"})]},S.id))}),g&&c.jsx(tt,{size:"small",variant:"outlined",className:"ogx-ai-panel__undo",onClick:N(y),children:"Undo"})]}),r.length>0&&c.jsx("ul",{className:"ogx-ai-panel__errors","aria-label":"Ignored",children:r.map((S,D)=>c.jsx("li",{children:S.path?`Ignored: ${S.message}`:S.message},`${S.path}:${D}`))}),l.length>0&&c.jsxs("div",{className:"ogx-ai-panel__history",children:[c.jsx("div",{className:"ogx-ai-panel__history-title",children:"Earlier"}),c.jsx("ul",{children:l.map((S,D)=>c.jsx("li",{children:c.jsx("button",{type:"button",className:"ogx-ai-panel__history-item",onClick:()=>x(S.prompt),children:S.prompt})},`${D}:${S.prompt}`))})]})]})}function lp({panelProps:e,slot:t,slotProps:n}){const o=r=>{r.key==="Escape"&&(r.stopPropagation(),e.close())};return c.jsx("div",{className:"ogx-ai-anchor",onKeyDown:o,children:t?c.jsx(t,{...e,...n}):c.jsx(ip,{...e})})}function sp(e){const{rows:t,columns:n,getRowId:o,rowHeight:r,headerHeight:i,wrapHeaderText:l=!1,headerFilters:d=!1,headerFilterHeight:a=Pd,autoHeight:u=!1,density:g,checkboxSelection:m=!1,disableRowSelectionOnClick:w=!1,disableMultipleRowSelection:y=!1,disableClipboardCopy:p=!1,cellSelection:f=!1,cellSelectionModel:h,onCellSelectionModelChange:x,showCellSelectionStats:b=!1,disableClipboardPaste:v=!1,disableRangeClear:E=!1,onClipboardPaste:k,onBeforeClipboardPaste:N,undoRedo:M=!1,disableFillHandle:S=!1,onFill:D,onHistoryChange:I,rowSelectionModel:A,onRowSelectionModelChange:C,onRowClick:L,onRowDoubleClick:F,onCellClick:_,filterModel:z,onFilterModelChange:K,sortModel:Q,onSortModelChange:G,pagination:j=!1,paginationModel:H,onPaginationModelChange:ie,pageSizeOptions:re=[10,25,50,100],pinnedColumns:ue,onPinnedColumnsChange:ae,pinnedRows:R,getDetailPanelContent:te,getDetailPanelHeight:ce,detailPanelExpandedRowIds:W,onDetailPanelExpandedRowIdsChange:le,pinCheckboxColumn:V=!0,pinExpandColumn:J=!0,disableColumnReorder:ne=!1,columnOrder:fe,onColumnOrderChange:Z,onColumnOrderModelChange:$,height:O,rowReordering:P=!1,onRowOrderChange:T,loading:X=!1,treeData:B=!1,getTreeDataPath:ee,defaultGroupingExpansionDepth:q,groupingColDef:Y,rowGroupingModel:oe,onRowGroupingModelChange:me,aggregationModel:U,onAggregationModelChange:se,getAggregationPosition:we,isCellEditable:pe,processRowUpdate:he,onProcessRowUpdateError:ve,dataSource:be,multiSort:de=!1,sortingMode:ye="client",filterMode:Ee="client",paginationMode:Me="client",rowCount:Ne,slots:Ie,slotProps:Se,pivotMode:Oe=!1,pivotModel:ge,onPivotModelChange:Ce,className:ke="",style:xe,onRowsScrollEnd:je,ariaLabel:nt,initialState:nn,onStateChange:Mn,columnVisibilityModel:ot,onColumnVisibilityModelChange:lo,listView:so=!1,listViewColumn:Nn,columnGroupingModel:In,noRowsLabel:kh="No Data",localeText:Ln,apiRef:Eh,overscanRowCount:Mh=3,aiAssistant:Nh,onAiAssistantApply:Ih,onAiAssistantError:Lh}=e,Lr=ig(n),Ar=Ln?.noRowsLabel??kh,$t=mc({initialState:nn,sortModel:Q,onSortModelChange:G,filterModel:z,onFilterModelChange:K,aggregationModel:U,onAggregationModelChange:se,rowGroupingModel:oe,onRowGroupingModelChange:me,columnVisibilityModel:ot,onColumnVisibilityModelChange:lo,pinnedColumns:ue,onPinnedColumnsChange:ae,pivotModel:ge,onPivotModelChange:Ce,paginationModel:H,onPaginationModelChange:ie,pageSizeOptions:re,rowSelectionModel:A,onRowSelectionModelChange:C,density:g,cellSelectionModel:h,onCellSelectionModelChange:x}),{sortModel:ut,handleSortModelChange:Ys,filterModel:ft,handleFilterModelChange:Pr,aggregationModel:Ue,handleAggregationModelChange:Js,columnVisibilityModel:_t,handleColumnVisibilityModelChange:ao,pinnedColumns:Tr,handlePinnedColumnsChange:Ah,currentPivotModel:Fr,handlePivotModelChange:Zs,effectivePaginationModel:Re,handlePaginationModelChange:on,selectedRowIds:Ph,handleRowSelectionModelChange:Or,density:Qs,rowGroupingModel:Dr,handleRowGroupingModelChange:Th}=$t,An=Sf({rows:t,columns:Lr,pivotMode:Oe,pivotModel:Fr,filterModel:ft,sortModel:ut,hasDataSource:!!be,hierarchyRequested:B||Dr.length>0}),St=An.isActive,co=d&&!St,{rowReordering:Gt,hierarchyRowGroupingModel:Fh,isTreeDataRequested:Oh,isTreeData:uo,isRowGrouping:rn,isHierarchyEnabled:fo,hasGroupingColumn:Dh,pagination:rt,listView:ln}=fc({rowGroupingModel:Dr,treeData:B,hasTreeDataPath:!!ee,isPivotActive:St,rowReordering:P,hasGroupingColDef:!!Y,pagination:j,paginationMode:Me,listView:so,hasListViewColumn:!!Nn}),{rowHeight:it,headerHeight:$r}=vc({rowHeight:r,headerHeight:i,density:Qs}),$h=An.rows,Gh=An.columns,{activeColumns:gt,effectivePinnedColumns:sn}=Zf({baseColumns:Gh,pinnedColumns:Tr,hasGroupingColumn:Dh,groupingColDef:Y,isTreeData:uo,getTreeDataPath:ee}),Gr=od(gt,_t),[Hh,Bh]=vf(Ue),Ye=s.useRef(null),Ht=s.useRef(null),ea=!St&&o||Qf,Hr=Tg(Ye),go=Zd({rows:$h,getRowId:ea,columns:gt,rowHeight:it,headerHeight:$r,columnVisibilityModel:_t,initialState:e.initialState,syncRows:!be}),{state:Fe,apiRef:lt,setRows:Wh,replaceRows:Vh,setColumns:zh,setDimensions:Kh,setDataSourceLoading:jh,setDataSourceError:Uh,setRowCount:Rh}=go,{getRowIdOf:Pe,getRowIdOfInEvents:qh}=eg(Fe.rows.idByRow);tg(Eh,lt);const Xh=Fe.dataSource.loading,kt=X||Xh,po=s.useMemo(()=>Fe.rows.allRows.map(ht=>Fe.rows.idRowsLookup.get(ht)),[Fe.rows]),{treeDataHandlers:ho,rowGroupingHandlers:Br,activeHierarchyHandlers:an,rowMetaMap:Ve}=hu({rows:po,getRowId:Pe,getTreeDataPath:ee,isTreeDataRequested:Oh,isTreeData:uo,columns:gt,rowGroupingModel:Fh,isRowGrouping:rn,aggregationModel:Ue,defaultGroupingExpansionDepth:q,filterModel:ft,sortModel:ut,getAggregationPosition:we,columnLookup:Gr,filterMode:Ee,sortingMode:ye}),Wr=Gu(),mo=wu({rowsLookup:Fe.rows.idRowsLookup,columns:gt,processRowUpdate:he,onProcessRowUpdateError:ve,replaceRows:Vh,onCommitted:Wr.emit}),Pn=mu({rows:po,getRowId:Pe,columns:gt,processRowUpdate:he,onProcessRowUpdateError:ve,onRowChange:(ht,Sm)=>{mo.storeRow(Sm,ht)},onCommitted:ht=>Wr.emit(ht,"edit")}),Tn=Qc({selectedRowIds:Ph,rowsLookup:Fe.rows.idRowsLookup,rowMetaMap:Ve,enabled:!be&&!St&&Me==="client"&&Ee==="client",onSelectionModelChange:Or}),ta=bf({dataSource:be,sortModel:ut,filterModel:ft,paginationModel:Re,paginationMode:Me,sortingMode:ye,filterMode:Ee,aggregationModel:Ue,rowGroupingActive:rn,getRowId:ea,setRows:Wh,setRowCount:Rh,setDataSourceLoading:jh,setDataSourceError:Uh,onAggregationResults:Bh,onPaginationModelChange:on});yf({enabled:uo&&!!be,treeNodes:ho.treeNodes,isGroupExpanded:ho.isGroupExpanded,getNodePath:ho.getNodePath,toggleExpansion:ho.toggleExpansion,fetchChildren:ta.fetchChildren});const{hasDetailPanel:Bt,expandedRowIds:Vr,handleDetailPanelToggle:na,detailPanelHeights:Yh,reportDetailPanelHeight:Jh}=Bc({hasDetailPanel:!!te,controlledExpandedRowIds:W,onDetailPanelExpandedRowIdsChange:le,rowMetaMap:Ve}),{effectiveColumns:oa,hierarchyField:zr,orderedColumns:Kr,visibleOrderedColumns:ra,renderOrderedColumns:Zh,navigationColumns:cn,columnIndexMap:wo,columnWidths:Fn,effectiveColumnOrder:Qh,columnReorderHandlers:em,moveColumn:ia,resetColumnOrder:la,handleColumnResize:sa}=Ac({activeColumns:gt,isHierarchyEnabled:fo,isRowGrouping:rn,isTreeData:uo,activeHierarchyHandlers:an,columnVisibilityModel:_t,columnOrder:fe,onColumnOrderChange:Z,onColumnOrderModelChange:$,disableColumnReorder:ne,pivotMode:St,checkboxSelection:m,hasDetailPanel:Bt,rowReordering:Gt,initialState:nn,setColumns:zh,pinnedColumns:sn,getRowId:qh,aggregationModel:Ue,groupingRows:rn?Br.groupingRows:void 0});zc({onStateChange:Mn,sortModel:ut,filterModel:ft,effectivePaginationModel:Re,columnWidths:Fn,effectiveColumnOrder:Qh,columnVisibilityModel:_t,pinnedColumns:Tr,density:Qs});const bo=_c({effectiveRows:po,activeHierarchyHandlers:an,filterMode:Ee,filterModel:An.pipelineFilterModel,sortModel:An.pipelineSortModel,sortingMode:ye,pagination:rt,paginationMode:Me,effectivePaginationModel:Re,pinnedRows:R,getRowId:Pe,columnLookup:Gr,hierarchyField:zr}),{filteredRows:aa,dataRows:dn,pinnedTopRows:ze,pinnedBottomRows:st,sortedUnpinnedRows:pt,paginatedUnpinnedRows:xo,allRenderableRows:Et}=bo,jr=rt?xo:pt;rd({paginationModel:Re,currentPage:bo.currentPage,enabled:rt&&!kt&&pt.length>0,onPaginationModelChange:on});const yo=Cc({paginationMode:Me,hasDataSource:!!be,dataSourceRowCount:Fe.pagination.rowCount,rowCountProp:Ne,clientRowCount:pt.length}),{rowSelection:Ur,handleRowClick:Rr,handleSelectionChange:qr}=Zc({dataRows:dn,getRowId:Pe,isPivotActive:St,selectedRowIds:Tn,onSelectionModelChange:Or,disableMultipleRowSelection:y,disableRowSelectionOnClick:w,isHierarchyEnabled:fo,rowMetaMap:Ve,activeHierarchyHandlers:an,onRowClick:L});nd({apiRef:go.apiRef,sortModel:ut,multiSort:de,onSortModelChange:Ys,filterModel:ft,onFilterModelChange:Pr,paginationModel:Re,onPaginationModelChange:on,selectedRowIds:Tn,getPendingRowSelectionModel:$t.getPendingRowSelectionModel,onRowSelectionModelChange:Or,disableMultipleRowSelection:y,isSyntheticRowId:ht=>qe(ht,Ve),getVisibleRows:()=>[...ze,...jr,...st],getAllFilteredRows:()=>ng({hierarchyHandlers:an,pinnedTopRows:ze,sortedUnpinnedRows:pt,pinnedBottomRows:st,rowMetaMap:Ve,getRowId:Pe,hierarchyField:zr,dataRows:dn}),visibleColumns:Zh,rowGroupingModel:Dr,onRowGroupingModelChange:Th,aggregationModel:Ue,onAggregationModelChange:Js,columnVisibilityModel:_t,onColumnVisibilityModelChange:ao,pivotModel:Fr,onPivotModelChange:Zs});const tm=Qd({rows:po,getRowId:Pe,onRowOrderChange:T,rowReordering:Gt}),{aggregationResult:Xr,isLoading:nm}=Ql({rows:dn,columns:gt,aggregationModel:St?Ia:Ue,isServerSide:il({dataSource:be,paginationMode:Me,sortingMode:ye,filterMode:Ee}),dataSource:be,filterModel:ft,sortModel:ut,serverAggregationResults:Hh}),Yr=Object.keys(Ue).length>0&&!St;sg({apiRef:lt,hasAggregation:Yr,aggregationResult:Xr,aggregationModel:Ue,isRowGrouping:rn,rowGroupingHandlers:Br,rowMetaMap:Ve,columns:gt,getRowId:Pe,hierarchyField:zr});const De=Ma({rowHeight:it,pagination:rt,paginatedUnpinnedRows:xo,sortedUnpinnedRows:pt,expandedRowIds:Vr,getDetailPanelHeight:ce,detailPanelHeights:Yh,pinnedTopRowsLength:ze.length,pinnedBottomRowsLength:st.length,pinnedTopRows:ze,pinnedBottomRows:st,visibleOrderedColumns:ra,pinnedColumns:sn,columnWidths:Fn,viewportWidth:Fe.dimensions.viewportWidth||1e3,checkboxSelection:m,hasDetailPanel:Bt,rowReordering:Gt,pinCheckboxColumn:V,pinExpandColumn:J,paginationMode:Me,isLoading:Fe.dataSource.loading,pageSize:Re.pageSize,getRowId:Pe}),Mt=uf({pinnedTopRows:ze,centerRows:jr,pinnedBottomRows:st,columns:ra,leftPinnedColumns:De.leftPinnedCols,unpinnedColumns:De.unpinnedColsWithWidth,rightPinnedColumns:De.rightPinnedCols,expandedRowIds:Bt?Vr:void 0,rowMetaMap:Ve,getRowId:Pe}),ca=s.useMemo(()=>[...De.leftPinnedCols,...De.unpinnedColsWithWidth,...De.rightPinnedCols],[De.leftPinnedCols,De.unpinnedColsWithWidth,De.rightPinnedCols]),Ge=Lg({enabled:f&&!ln,model:$t.cellSelectionModel,onModelChange:$t.handleCellSelectionModelChange,getPendingModel:$t.getPendingCellSelectionModel,allRenderableRows:Et,getRowId:Pe,navigationColumns:cn,columnIndexMap:wo,spanning:Mt,rowMetaMap:Ve,layout:De,rowHeight:it,pinnedTopRowCount:ze.length,viewportRef:Ht,containerRef:Ye,localeText:Ln,showStats:b});vg({apiRef:lt,columns:ca,getRowId:Pe,containerRef:Ye,disableKeyboardShortcut:p,getCellRangeCopyText:Ge.enabled?Ge.getCopyText:void 0}),Cg({apiRef:lt,viewportRef:Ht,layout:De,rowHeight:it});const om=Eg({apiRef:lt,containerRef:Ye,columns:Kr,onColumnResize:sa}),{scrollTop:rm,scrollLeft:im,overscanRows:lm,handleScroll:sm,setViewportElement:am}=Gc({onRowsScrollEnd:je,overscanRowCount:Mh,rowCount:De.unpinnedRowsLength,autoHeight:u,setDimensions:Kh,viewportRef:Ht}),Be=Sc({layout:De,scrollTop:rm,scrollLeft:im,viewportWidth:Fe.dimensions.viewportWidth,viewportHeight:Fe.dimensions.viewportHeight,autoHeight:u,rowReordering:Gt,hasDetailPanel:Bt,checkboxSelection:m,pinCheckboxColumn:V,pinExpandColumn:J,overscanRows:lm}),{handleSort:da,handleSortAdd:ua}=ed({sortModel:ut,onSortModelChange:Ys}),vo=m||!w,{focusedCell:Co,setFocusedCell:Jr,viewportTabIndex:cm,ensureGridFocus:dm,handleFocus:um,handleBlur:fm,handleKeyDown:gm,handleMouseDownCapture:pm}=uc({allRenderableRows:Et,navigationColumns:cn,checkboxSelection:m,selectedRowIds:Tn,handleSelectionChange:qr,handleDetailPanelToggle:na,editingHandlers:Pn,setKeyboardMode:Hr,sortModel:ut,handleSort:da,handleSortAdd:ua,multiSort:de,isCellEditable:pe,pagination:rt,pageSize:Re.pageSize,virtualization:Be,viewportRef:Ht,pinnedTopRowCount:ze.length,getRowId:Pe,rowMetaMap:Ve,getSpanOrigin:Mt.getSpanOrigin,onRowActivate:Rr,toggleRowExpansion:an?.toggleExpansion,handleSelectAll:Ur.selectAll,rowSelectionEnabled:vo,multipleRowSelectionEnabled:!y,pinCheckboxColumn:V,pinExpandColumn:J,rowHeight:it,cellSelection:Ge.keyboard,headerFilters:co}),{handleCellClick:hm,handleHeaderClick:mm}=Fg({ensureGridFocus:dm,setKeyboardMode:Hr,setFocusedCell:Jr,getRowId:Pe,onCellClick:_});Ag({apiRef:lt,selection:Ge,model:$t.cellSelectionModel,getPendingModel:$t.getPendingCellSelectionModel,focusedCell:Co,setFocusedCell:Jr,containerRef:Ye}),Du({apiRef:lt,containerRef:Ye,viewportRef:Ht,selection:Ge,disableClipboardPaste:v,disableRangeClear:E,focusedCell:Co,allRenderableRows:Et,getRowId:Pe,navigationColumns:cn,isCellEditable:pe,rowMetaMap:Ve,getSpanOrigin:Mt.getSpanOrigin,isEditing:Pn.editingCell!==null,batchEdit:mo,onClipboardPaste:k,onBeforeClipboardPaste:N}),Bu({apiRef:lt,enabled:!!M,limit:typeof M=="object"&&M.limit||$u,onHistoryChange:I,channel:Wr,batchEdit:mo,isEditing:Pn.editingCell!==null,containerRef:Ye,viewportRef:Ht,selection:Ge,setFocusedCell:Jr,allRenderableRows:Et,getRowId:Pe,navigationColumns:cn,layout:De,rowHeight:it,pinnedTopRowCount:ze.length});const wm=sf({containerRef:Ye,viewportRef:Ht,selection:Ge,disableFillHandle:S,isEditing:Pn.editingCell!==null,allRenderableRows:Et,getRowId:Pe,navigationColumns:cn,columnIndexMap:wo,isCellEditable:pe,rowMetaMap:Ve,getSpanOrigin:Mt.getSpanOrigin,batchEdit:mo,onFill:D}),{handleHideColumn:bm,handlePinColumn:xm}=td({columnVisibilityModel:_t,onColumnVisibilityModelChange:ao,pinnedColumns:Tr,onPinnedColumnsChange:Ah}),On=Gg({columnGroupingModel:In,headerFilterRow:co,pinnedTopCount:ze.length,pinnedBottomCount:st.length,pagination:rt,paginationMode:Me,paginationModel:Re,paginationRowCount:yo,paginatedUnpinnedRowCount:xo.length,sortedUnpinnedRowCount:pt.length}),Zr=gf({spanning:Mt,renderContext:Be.renderContext,offsetTop:Be.offsetTop,cumulativeHeights:De.cumulativeHeights}),Qr=Tc({renderContext:Zr.renderContext,pinnedTopRows:ze,pinnedBottomRows:st,paginatedUnpinnedRows:xo,sortedUnpinnedRows:pt,pagination:rt,getRowId:Pe}),_o=pf({spanning:Mt,firstColumnIndex:Be.renderContext.firstColumnIndex,lastColumnIndex:Be.renderContext.lastColumnIndex,virtualColumns:Be.virtualColumns,layout:De,rows:Qr});Rc({paginationRequested:j,isRowGrouping:rn,autoHeight:u,viewportHeight:Fe.dimensions.viewportHeight,renderedRowCount:Qr.length,totalRowCount:ze.length+jr.length+st.length,pinnedRowsIgnored:fo&&!!(R?.top?.length||R?.bottom?.length),scrollHeight:Be.totalHeight,listViewWithoutColumn:so&&!Nn,listViewRowCount:ln&&Nn?Et.length:0});const{allSelected:ym,someSelected:vm}=Ur,un=hf(In,em),Cm=s.useMemo(()=>oa.some(ht=>!!ht.rowSpan),[oa]),at=id();Xc(Ye);const fn=tp({apiRef:lt,options:Nh,columns:gt,onApply:Ih,onError:Lh}),fa=Ie?.noRowsOverlay,ga=Ie?.loadingOverlay,ei=ga?c.jsx(ga,{...Se?.loadingOverlay}):void 0,pa=fa?c.jsx(fa,{...Se?.noRowsOverlay}):void 0,So=Ie?.footer,_m=kt&&Et.length>0&&Me!=="infinite",ha=Ie?.toolbar,ma=Hg({toolbar:Ie?.toolbar,toolbarSlotProps:Se?.toolbar,apiRef:lt,orderedColumns:Kr,baseColumns:Lr,aggregationModel:Ue,onAggregationModelChange:Js,pivotMode:Oe,pivotModelProp:ge,onPivotModelChangeProp:Ce,pivotModel:Fr,onPivotModelChange:Zs,filterModel:ft,onFilterModelChange:Pr,columnVisibilityModel:_t,onColumnVisibilityModelChange:ao,disableColumnReorder:ne,columnGroupingModel:In,moveColumn:ia,resetColumnOrder:la,forceColumnsOpen:at.toolbarPanelRequested,onColumnsPanelClose:at.closeToolbarPanel,aiAssistantEnabled:fn.enabled,aiAssistantOpen:fn.open,onAiAssistantToggle:fn.togglePanel,aiAssistantLabel:Ln?.aiAssistantButton,forceFiltersOpen:at.toolbarFiltersRequested,onFiltersPanelClose:at.closeToolbarFiltersPanel}),ti={rowReordering:Gt,columnIndexMap:wo,editingHandlers:Pn,isCellEditable:pe,selectedRowIds:Tn,checkboxSelection:m,onRowClick:Rr,onRowDoubleClick:F,onCellClick:hm,onSelectionChange:qr,columnWidths:Fn,pinnedColumns:sn,hasDetailPanel:Bt,expandedRowIds:Vr,getDetailPanelContent:te,getDetailPanelHeight:ce,onDetailPanelToggle:na,onDetailPanelHeightChange:Jh,pinCheckboxColumn:V,pinExpandColumn:J,focusedCell:Co,colspanMap:Mt.colspanMap,rowSpanningCaches:Mt.rowSpanningCaches,rowHeight:it,rowMetaMap:Ve,cellRange:Ge.displayRange,cellRangeHasRowSpan:Ge.hasRowSpan,fillHandle:wm.handle};return c.jsxs("div",{ref:Ye,className:["ogx",ke,u&&"ogx--auto-height",!u&&O===void 0&&xe?.height===void 0&&"ogx--fill",Cm&&"ogx--row-spanning",ln&&"ogx--list-view"].filter(Boolean).join(" "),style:{...xe,height:O??xe?.height,"--ogx-row-height":`${it}px`,"--ogx-header-height":`${$r}px`,...co?{"--ogx-header-filter-height":`${a}px`}:void 0},"aria-busy":kt,children:[ha&&ma&&c.jsx(ol.Provider,{value:at.toolbarHost,children:c.jsx(ad,{component:ha,toolbarProps:ma})}),fn.panelProps&&c.jsx(lp,{panelProps:fn.panelProps,slot:Ie?.aiAssistantPanel,slotProps:Se?.aiAssistantPanel}),c.jsx(Jf,{isOpen:at.standalonePanelOpen,containerRef:Ye,panelRef:at.standalonePanelRef,columns:Kr,columnVisibilityModel:_t,disableColumnReorder:ne,onClose:at.closeStandalonePanel,onColumnVisibilityChange:ao,onColumnMove:ia,onColumnOrderReset:la,columnGroupingModel:In}),ln&&Nn&&c.jsx(Nf,{ariaLabel:nt,allRenderableRows:Et,dataRowCount:dn.length,pinnedTopRowCount:ze.length,pinnedBottomRowCount:st.length,unpinnedRowCount:pt.length,pagination:rt,effectivePaginationModel:Re,currentPage:bo.currentPage,pageSizeOptions:re,selectedRowIds:Tn,listViewColumn:Nn,columnsByField:Gr.byField,rowMetaMap:Ve,noRowsLabel:Ar,rowHeight:it,checkboxSelection:m,paginationMode:Me,serverRowCount:yo,paginationSlot:Ie?.pagination,paginationSlotProps:Se?.pagination,localeText:ji(Ln),onRowClick:Rr,onRowDoubleClick:F,onSelectionChange:qr,onPaginationModelChange:on,onRowsScrollEnd:je,getRowId:Pe,multiselectable:vo&&!y,selectable:vo,onToggleExpansion:an?.toggleExpansion,loading:kt,loadingOverlay:ei,noRowsOverlay:pa,showPaginationControls:!So}),!ln&&c.jsx("div",{ref:am,className:"ogx__viewport",onScroll:sm,role:"grid","aria-label":nt||"Data grid","aria-rowcount":On.rowCount,"aria-colcount":cn.length,"aria-multiselectable":vo&&!y||Ge.enabled,"aria-busy":kt,tabIndex:cm,onKeyDownCapture:()=>{Hr(!0)},onMouseDownCapture:pm,onMouseDown:Ge.handleMouseDown,onClickCapture:Ge.handleClickCapture,onKeyDown:gm,onFocus:um,onBlur:fm,children:c.jsxs("div",{className:"ogx__content",style:{width:sn?.right?.length?`max(100%, ${Be.totalWidth}px)`:Be.totalWidth},role:"presentation",children:[c.jsxs("div",{className:"ogx__sticky-top",role:"presentation",children:[c.jsx(_l,{columns:_o,allColumns:ca,columnGroupingModel:In,checkboxSelection:m,allSelected:ym,someSelected:vm,onSelectAll:Ur.selectAll,sortModel:ut,onSort:da,onSortAdd:ua,multiSort:de,onColumnResize:sa,onColumnAutosize:om,columnWidths:Fn,pinnedColumns:sn,focusedCell:Co,columnIndexMap:wo,onHeaderClick:mm,onDragStart:un.onDragStart,onDragOver:un.onDragOver,onDragEnd:un.onDragEnd,onDrop:un.onDrop,draggedColumn:un.draggedColumn,dragOverColumn:un.dragOverColumn,rowReordering:Gt,hasDetailPanel:Bt,pinCheckboxColumn:V,pinExpandColumn:J,aggregationModel:Ue,onHideColumn:bm,onManageColumns:at.openColumnsPanel,onPinColumn:xm,wrapHeaderText:l,headerHeight:$r,headerFilters:co,filterModel:ft,onFilterModelChange:Pr,onOpenFilterPanel:at.openFiltersPanel}),c.jsx(rs,{...ti,rows:ze,position:"top",ariaRowIndexBase:On.topBase,columns:_o,pinnedRows:R,getRowId:Pe})]}),!kt&&!Fe.dataSource.error&&aa.length===0&&c.jsx(dd,{noRowsLabel:Ar,width:Be.totalWidth,overlay:pa}),c.jsx(qf,{...ti,virtualContainerHeight:Be.totalHeight-Be.pinnedTopHeight-Be.pinnedBottomHeight,offsetTop:Zr.offsetTop,effectiveLoading:kt,visibleRows:Qr,baseColumns:Lr,virtualColumns:_o,viewportWidth:Fe.dimensions.viewportWidth,rowReorderHandlers:tm,paginationMode:Me,dataSourceLoading:Fe.dataSource.loading,sortedUnpinnedRowCount:pt.length,infiniteScrollSkeletonCount:Math.min(Re.pageSize,20),unpinnedRowsLength:De.unpinnedRowsLength,lastRenderedRowIndex:Zr.renderContext.lastRowIndex,ariaRowIndexOffset:On.centerOffset,loadingOverlay:ei}),c.jsxs("div",{className:"ogx__sticky-bottom",role:"presentation",children:[c.jsx(rs,{...ti,rows:st,position:"bottom",rowIndexOffset:On.bottomRowIndexOffset,ariaRowIndexBase:On.bottomBase,columns:_o,pinnedRows:R,getRowId:Pe}),Yr&&Br.rootAggregationPosition!==null&&c.jsx(cd,{columns:Be.virtualColumns,aggregationModel:Ue,aggregationResult:Xr,columnWidths:Fn,rowHeight:it,checkboxSelection:m,hasDetailPanel:Bt,rowReordering:Gt,pinCheckboxColumn:V,pinExpandColumn:J,pinnedColumns:sn,loading:nm})]})]})}),Ge.enabled&&b&&c.jsx(Pg,{stats:Ge.stats,apiRef:go.apiRef,slot:Ie?.cellSelectionStats,slotProps:Se?.cellSelectionStats}),So&&c.jsx(So,{apiRef:go.apiRef,aggregationModel:Ue,aggregationResult:Yr?Xr:null,rowCount:fo&&Me!=="server"?dn.length:yo,pagination:rt,paginationModel:Re,pageSizeOptions:re,onPaginationModelChange:on,...Se?.footer}),!ln&&!So&&rt&&c.jsx(Og,{paginationSlot:Ie?.pagination,paginationSlotProps:Se?.pagination,page:bo.currentPage,paginationModel:Re,rowCount:yo,pageSizeOptions:re,onPaginationModelChange:on,localeText:Ln}),c.jsx(Dg,{loading:kt,error:Fe.dataSource.error,noRowsLabel:Ar,filteredRowCount:aa.length,dataRowCount:dn.length,filterModel:ft,cellSelectionAnnouncement:Ge.announcement,aiAssistantAnnouncement:fn.announcement}),_m&&c.jsx(If,{overlay:ei}),c.jsx(fd,{error:Fe.dataSource.error,onRetry:be?ta.fetchRows:void 0})]})}function ap({rows:e=5,columns:t=5}){return c.jsx("div",{className:"ogx__skeleton",children:Array.from({length:e}).map((n,o)=>c.jsx("div",{className:"ogx__skeleton-row",children:Array.from({length:t}).map((r,i)=>c.jsx("div",{className:"ogx__skeleton-cell",children:c.jsx("div",{className:"ogx__skeleton-content"})},i))},o))})}const cp=300;function Zt(e){return"field"in e&&!("items"in e)}function Cs(e,t){return e.find(n=>Zt(n)&&n.field===t)}function _s(e,t){return Object.is(e,t)?!0:e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((n,o)=>_s(n,t[o])):!1}function dp(e,t){return e===t?!0:Zt(e)&&Zt(t)?e.id===t.id&&e.field===t.field&&e.operator===t.operator&&_s(e.value,t.value):!Zt(e)&&!Zt(t)?e.id===t.id&&e.logicOperator===t.logicOperator&&Nr(e.items,t.items):!1}function Nr(e,t){return e===t?!0:e.length===t.length&&e.every((n,o)=>dp(n,t[o]))}function up(e){return(e.valueOptions??[]).map((t,n)=>t!==null&&typeof t=="object"?{key:String(n),value:t.value,label:t.label}:{key:String(n),value:t,label:String(t)})}function Ss(e,t){return Object.is(e.value,t)?!0:t!=null&&String(e.value).toLowerCase()===String(t).toLowerCase()}function ks(e,t){return Bo(e,t.type)}function Es(e,t){return t==="isAnyOf"?e.split(",").map(n=>n.trim()).filter(n=>n!==""):e}function fp(e,t){if(!Vt.has(t))return t==="isAnyOf"?e==null||e===""?[]:Array.isArray(e)?e:[e]:Array.isArray(e)?e.length>0?e[0]:"":e??""}const gp=({col:e,item:t,resetToken:n,onChange:o})=>{const r=s.useId(),i=s.useMemo(()=>bi(e.type),[e.type]),l=i[0],d=t?.operator??l,a=i.includes(d)?i:[d,...i],u=!!t,g=e.headerName||e.field,[m,w]=s.useState(null),[y,p]=s.useState(n);y!==n&&(p(n),w(null));const f=s.useRef(o),h=s.useRef(t),x=s.useRef(e);s.useLayoutEffect(()=>{f.current=o,h.current=t,x.current=e});const b=s.useCallback((L,F)=>({id:h.current?.id??`${e.field}-${Date.now()}`,field:e.field,operator:L,value:F}),[e.field]),v=s.useCallback(L=>{const F=h.current;if(F?L===ks(F.value,x.current):L.trim()==="")return;const z=F?.operator??l;f.current(b(z,Es(L,z)))},[l,b]),E=s.useRef(null),k=s.useRef(v);s.useLayoutEffect(()=>{E.current=m,k.current=v}),s.useEffect(()=>()=>{const L=E.current;E.current=null,L!==null&&k.current(L)},[]),s.useEffect(()=>{if(m===null)return;const L=setTimeout(()=>{E.current=null,v(m),w(null)},cp);return()=>clearTimeout(L)},[m,v]);const N=L=>{const F=m!==null?Es(m,L):t?.value;w(null),o(b(L,fp(F,L)))},M=()=>{w(null),o(null)},S=!Vt.has(d),D=up(e),I=`ogx-filter__value-input${u?" ogx-filter__value-input--active":""}`,A=`Filter value for ${g}`;let C=null;if(S&&e.type==="boolean")C=c.jsxs("select",{id:`${r}-val`,name:`filter-val-${e.field}`,className:`${I} ogx-filter__value-select`,value:t?.value==null?"":String(t.value),onChange:L=>{L.target.value===""?o(null):o(b(d,L.target.value))},"aria-label":A,children:[c.jsx("option",{value:"",children:"Any"}),c.jsx("option",{value:"true",children:"true"}),c.jsx("option",{value:"false",children:"false"})]});else if(S&&e.type==="singleSelect"&&D.length>0&&d==="isAnyOf"){const L=Array.isArray(t?.value)?t.value:t?.value==null||t.value===""?[]:[t.value];C=c.jsx("select",{id:`${r}-val`,name:`filter-val-${e.field}`,className:`${I} ogx-filter__value-multiselect`,multiple:!0,size:Math.min(D.length,4),value:D.filter(F=>L.some(_=>Ss(F,_))).map(F=>F.key),onChange:F=>{const _=new Set(Array.from(F.target.selectedOptions,z=>z.value));o(b("isAnyOf",D.filter(z=>_.has(z.key)).map(z=>z.value)))},"aria-label":A,children:D.map(F=>c.jsx("option",{value:F.key,children:F.label},F.key))})}else if(S&&e.type==="singleSelect"&&D.length>0&&(d==="is"||d==="not")){const L=D.find(F=>Ss(F,t?.value));C=c.jsxs("select",{id:`${r}-val`,name:`filter-val-${e.field}`,className:`${I} ogx-filter__value-select`,value:L?.key??"",onChange:F=>{const _=D.find(z=>z.key===F.target.value);o(b(d,_?_.value:""))},"aria-label":A,children:[c.jsx("option",{value:"",children:"Any"}),D.map(F=>c.jsx("option",{value:F.key,children:F.label},F.key))]})}else S&&(C=c.jsx(Qe,{id:`${r}-val`,name:`filter-val-${e.field}`,inputClassName:I,type:e.type==="date"?"date":"text",value:m??ks(t?.value,e),onChange:L=>w(L.target.value),placeholder:e.type==="number"?"Number…":"Value…","aria-label":A}));return c.jsxs("div",{className:`ogx-filter__row${u?" ogx-filter__row--active":""}`,children:[c.jsx("span",{className:"ogx-filter__col-label",title:e.field,children:g}),c.jsxs("div",{className:"ogx-filter__controls",children:[c.jsx("select",{id:`${r}-op`,name:`filter-op-${e.field}`,className:`ogx-filter__op-select${u?" ogx-filter__op-select--active":""}`,value:d,onChange:L=>N(L.target.value),"aria-label":`Filter operator for ${g}`,children:a.map(L=>c.jsx("option",{value:L,children:L},L))}),C,u&&c.jsx("button",{type:"button",className:"ogx-filter__row-clear",onClick:M,"aria-label":`Clear filter for ${g}`,title:"Clear",children:"×"})]})]})},Ms=({filterModel:e,columns:t,onFilterModelChange:n})=>{const o=s.useMemo(()=>e.items??[],[e.items]),r=e.logicOperator??"and",[i,l]=s.useState(null),[d,a]=s.useState(o),[u,g]=s.useState(0);if(d!==o){a(o);const h=!Nr(d,o),x=i!==null&&Nr(i,o);h&&!x&&g(b=>b+1)}const m=s.useCallback((h,x)=>{const b=o.findIndex(E=>Zt(E)&&E.field===h);let v;if(b===-1){if(!x)return;v=[...o,x]}else x?v=o.map((E,k)=>k===b?x:E):v=o.filter((E,k)=>k!==b);l(v),n({...e,items:v})},[o,e,n]),w=s.useCallback(h=>{n({...e,logicOperator:h})},[e,n]),y=t.filter(h=>h.filterable!==!1),p=y.filter(h=>Cs(o,h.field)).length,f=o.length-p;return c.jsxs(c.Fragment,{children:[o.length>1&&c.jsxs("div",{className:"ogx-filter__logic-bar",children:[c.jsx("span",{className:"ogx-filter__logic-label",children:"Match:"}),c.jsx("button",{type:"button",className:`ogx-filter__logic-pill${r==="and"?" ogx-filter__logic-pill--active":""}`,onClick:()=>w("and"),"aria-pressed":r==="and",children:"ALL (AND)"}),c.jsx("button",{type:"button",className:`ogx-filter__logic-pill${r==="or"?" ogx-filter__logic-pill--active":""}`,onClick:()=>w("or"),"aria-pressed":r==="or",children:"ANY (OR)"})]}),f>0&&c.jsx("div",{className:"ogx-filter__hidden-note",role:"note",children:f===1?"1 more condition (a filter group or a second condition on a column) is applied and not shown here.":`${f} more conditions (filter groups or further conditions on a column) are applied and not shown here.`}),y.length===0?c.jsx("div",{className:"ogx-filter__empty",children:"No filterable columns."}):y.map(h=>c.jsx(gp,{col:h,item:Cs(o,h.field),resetToken:u,onChange:x=>m(h.field,x)},h.field))]})},Ns=["sum","avg","count","min","max"];function Is(){return c.jsxs("svg",{width:"17",height:"17",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[c.jsx("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1"}),c.jsx("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1"}),c.jsx("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1"}),c.jsx("rect",{x:"14",y:"14",width:"7",height:"7",rx:"1",fill:"currentColor",opacity:"0.25"}),c.jsx("path",{d:"M17 14v-4M17 10l-2 2 2 2"})]})}function pp({anchorRef:e,columns:t,model:n,onChange:o,onClose:r}){const i=s.useRef(null),[l,d]=s.useState({top:0,right:0}),[a,u]=s.useState(null);s.useLayoutEffect(()=>{u(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const g=s.useCallback(()=>{if(!e.current)return{top:0,right:0};const _=e.current.getBoundingClientRect();return{top:_.bottom+6,right:Ot()-_.right}},[e]);s.useEffect(()=>{d(g());const _=()=>d(g());return window.addEventListener("scroll",_,!0),window.addEventListener("resize",_),()=>{window.removeEventListener("scroll",_,!0),window.removeEventListener("resize",_)}},[g]),s.useEffect(()=>{function _(K){i.current&&!i.current.contains(K.target)&&e.current&&!e.current.contains(K.target)&&r()}function z(K){K.key==="Escape"&&r()}return document.addEventListener("mousedown",_),document.addEventListener("keydown",z),()=>{document.removeEventListener("mousedown",_),document.removeEventListener("keydown",z)}},[e,r]);const m=new Set(n.rowFields),w=new Set(n.columnFields),y=new Set(n.valueFields.map(_=>_.field)),p=_=>m.has(_)||w.has(_)||y.has(_),f=_=>t.find(z=>z.field===_),h=_=>f(_)?.headerName??_,x=_=>{const z=f(_)?.availableAggregationFunctions;return z?Ns.filter(K=>z.includes(K)):Ns},b=_=>_.aggregable!==!1&&(_.type==="number"||_.aggregable===!0)&&x(_.field).length>0,v=_=>_.groupable!==!1;function E(_){m.has(_)||o({...n,rowFields:[...n.rowFields,_]})}function k(_){w.has(_)||o({...n,columnFields:[...n.columnFields,_]})}function N(_){y.has(_)||o({...n,valueFields:[...n.valueFields,{field:_,aggFn:x(_)[0]??"sum"}]})}function M(_){o({...n,rowFields:n.rowFields.filter((z,K)=>K!==_)})}function S(_){o({...n,columnFields:n.columnFields.filter((z,K)=>K!==_)})}function D(_){o({...n,valueFields:n.valueFields.filter((z,K)=>K!==_)})}function I(_,z){o({...n,valueFields:n.valueFields.map((K,Q)=>Q===_?{...K,aggFn:z}:K)})}function A(){o({rowFields:[],columnFields:[],valueFields:[]})}const C=n.rowFields.length+n.columnFields.length+n.valueFields.length,L=t.filter(_=>!p(_.field)&&(v(_)||b(_))),F=c.jsxs("div",{ref:i,className:"ogx-pivot-panel",role:"dialog","aria-label":"Pivot configuration",style:{top:l.top,right:l.right},children:[c.jsxs("div",{className:"ogx-pivot-panel__header",children:[c.jsxs("span",{className:"ogx-pivot-panel__title",children:[c.jsx(Is,{}),"Pivot Mode"]}),C>0&&c.jsx("button",{type:"button",className:"ogx-pivot-panel__reset-btn",onClick:A,title:"Reset pivot",children:"Reset"})]}),c.jsxs("div",{className:"ogx-pivot-panel__body",children:[c.jsxs("div",{className:"ogx-pivot-zone",children:[c.jsxs("span",{className:"ogx-pivot-zone__label",children:[c.jsx("span",{className:"ogx-pivot-zone__dot ogx-pivot-zone__dot--row"}),"Row Fields"]}),c.jsx("div",{className:`ogx-pivot-chips${n.rowFields.length===0?" ogx-pivot-chips--empty":""}`,"data-placeholder":"Add fields here — each becomes a row label",children:n.rowFields.map((_,z)=>c.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--row",children:[h(_),c.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>M(z),title:`Remove ${h(_)}`,"aria-label":`Remove ${h(_)} from Row Fields`,children:"×"})]},`${z}:${_}`))})]}),c.jsxs("div",{className:"ogx-pivot-zone",children:[c.jsxs("span",{className:"ogx-pivot-zone__label",children:[c.jsx("span",{className:"ogx-pivot-zone__dot ogx-pivot-zone__dot--col"}),"Column Fields"]}),c.jsx("div",{className:`ogx-pivot-chips${n.columnFields.length===0?" ogx-pivot-chips--empty":""}`,"data-placeholder":"Add fields here — unique values become column headers",children:n.columnFields.map((_,z)=>c.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--col",children:[h(_),c.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>S(z),title:`Remove ${h(_)}`,"aria-label":`Remove ${h(_)} from Column Fields`,children:"×"})]},`${z}:${_}`))})]}),c.jsxs("div",{className:"ogx-pivot-zone",children:[c.jsxs("span",{className:"ogx-pivot-zone__label",children:[c.jsx("span",{className:"ogx-pivot-zone__dot ogx-pivot-zone__dot--value"}),"Value Fields (aggregated)"]}),c.jsx("div",{className:`ogx-pivot-chips${n.valueFields.length===0?" ogx-pivot-chips--empty":""}`,"data-placeholder":"Add numeric fields here — values are aggregated",children:n.valueFields.map((_,z)=>{const K=x(_.field),Q=K.includes(_.aggFn)?K:[_.aggFn,...K];return c.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--value",children:[h(_.field),c.jsx("select",{className:"ogx-pivot-chip__fn-select",value:_.aggFn,onChange:G=>I(z,G.target.value),title:"Aggregation function","aria-label":`Aggregation function for ${h(_.field)}`,children:Q.map(G=>c.jsx("option",{value:G,children:G.toUpperCase()},G))}),c.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>D(z),title:`Remove ${h(_.field)}`,"aria-label":`Remove ${h(_.field)} (${_.aggFn.toUpperCase()}) from Value Fields`,children:"×"})]},`${z}:${_.field}:${_.aggFn}`)})})]}),c.jsx("hr",{className:"ogx-pivot-panel__divider"}),c.jsxs("div",{children:[c.jsx("div",{className:"ogx-pivot-panel__fields-label",children:"Available Fields"}),c.jsxs("div",{className:"ogx-pivot-fields",children:[L.map(_=>{const z=b(_),K=v(_),Q=_.headerName??_.field;return c.jsxs("div",{style:{display:"flex",alignItems:"center",gap:3},children:[c.jsx("span",{className:`ogx-pivot-field-btn${z?" ogx-pivot-field-btn--numeric":""}`,children:Q}),c.jsxs("div",{className:"ogx-pivot-field-actions",children:[K&&c.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--row",onClick:()=>E(_.field),title:"Add to Row Fields","aria-label":`Add ${Q} to Row Fields`,children:"Row"}),K&&c.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--col",onClick:()=>k(_.field),title:"Add to Column Fields","aria-label":`Add ${Q} to Column Fields`,children:"Col"}),z&&c.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--value",onClick:()=>N(_.field),title:"Add to Value Fields","aria-label":`Add ${Q} to Value Fields`,children:"Val"})]})]},_.field)}),L.length===0&&c.jsx("span",{style:{fontSize:12,color:"var(--ogx-color-gray-400, #94a3b8)"},children:"All fields are in use."})]})]})]})]});return a?mt.createPortal(F,a):null}function hp(){return c.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("circle",{cx:"11",cy:"11",r:"8"}),c.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]})}function mp(){return c.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[c.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),c.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function Ls(e){return e.trim().split(/\s+/).filter(Boolean).join(" ")}function wp({value:e="",onChange:t,placeholder:n="Search...",debounceMs:o=250}){const[r,i]=s.useState(()=>e.length>0),[l,d]=s.useState(e),a=s.useRef(null),u=s.useRef(null),g=s.useRef(t);s.useLayoutEffect(()=>{g.current=t},[t]);const m=s.useRef(e),w=s.useRef(e);s.useEffect(()=>{e!==w.current&&(w.current=e,Ls(e)!==Ls(m.current)&&(d(e),m.current=e,i(e.length>0)))},[e]),s.useEffect(()=>{const b=setTimeout(()=>{l!==m.current&&(m.current=l,g.current(l))},o);return()=>clearTimeout(b)},[l,o]);const y=s.useRef(l);s.useLayoutEffect(()=>{y.current=l}),s.useEffect(()=>()=>{const b=y.current;b!==m.current&&(m.current=b,g.current(b))},[]);const p=s.useCallback(()=>{i(!0),requestAnimationFrame(()=>a.current?.focus())},[]),f=s.useCallback(b=>{b.stopPropagation(),d(""),m.current="",g.current(""),a.current?.focus()},[]),h=s.useCallback(()=>{i(!0)},[]),x=s.useCallback(()=>{setTimeout(()=>{u.current&&document.activeElement&&u.current.contains(document.activeElement)||l||i(!1)},150)},[l]);return s.useEffect(()=>{const b=v=>{u.current&&!u.current.contains(v.target)&&(l||i(!1))};return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[l]),c.jsxs("div",{ref:u,className:`ogx-global-search${r?" ogx-global-search--expanded":""}`,onClick:r?void 0:p,children:[c.jsx("div",{className:"ogx-global-search__icon-wrapper",children:c.jsx(hp,{})}),c.jsx(Qe,{ref:a,inputClassName:"ogx-global-search__input",value:l,onChange:b=>d(b.target.value),onFocus:h,onBlur:x,placeholder:n,"aria-label":"Global Search",autoComplete:"off"}),l&&c.jsx("button",{type:"button",className:"ogx-global-search__clear",onClick:f,"aria-label":"Clear search",children:c.jsx(mp,{})})]})}const oo=8;function Sn({title:e,children:t,placement:n="top",enterDelay:o=200,leaveDelay:r=0}){const[i,l]=s.useState(!1),[d,a]=s.useState({top:0,left:0}),[u,g]=s.useState(null),m=s.useRef(null),w=s.useRef(null),y=s.useId(),p=s.useCallback(()=>{if(!w.current)return;const k=w.current.getBoundingClientRect(),N=k.left+k.width/2,M=k.top+k.height/2;switch(n){case"bottom":a({top:k.bottom+oo,left:N});break;case"left":a({top:M,left:k.left-oo});break;case"right":a({top:M,left:k.right+oo});break;default:a({top:k.top-oo,left:N})}},[n]),f=s.useCallback(()=>{m.current&&clearTimeout(m.current),m.current=null},[]);s.useLayoutEffect(()=>{if(!i)return;p();const k=N=>{N.key==="Escape"&&(f(),l(!1))};return window.addEventListener("scroll",p,!0),window.addEventListener("resize",p),document.addEventListener("keydown",k),()=>{window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p),document.removeEventListener("keydown",k)}},[i,p,f]),s.useEffect(()=>f,[f]);const h=()=>{f(),m.current=setTimeout(()=>{g(w.current?.closest(".ogx-theme-provider")??document.body),l(!0)},o)},x=()=>{f(),m.current=setTimeout(()=>{l(!1)},r)},b=s.useCallback(k=>{w.current=k?k.firstElementChild??k:null},[]),v=i&&!!e&&u!==null;let E=t;if(v&&s.isValidElement(t)){const k=t,N=k.props["aria-describedby"];E=s.cloneElement(k,{"aria-describedby":N?`${N} ${y}`:y})}return c.jsxs(c.Fragment,{children:[c.jsx("span",{ref:b,style:{display:"inline-block",lineHeight:0},onMouseEnter:h,onMouseLeave:x,onFocus:h,onBlur:x,children:E}),v&&u&&mt.createPortal(c.jsx("div",{id:y,role:"tooltip",className:`ogx-tooltip ogx-tooltip--${n}`,style:{top:d.top,left:d.left,position:"fixed",zIndex:99999},children:e}),u)]})}const bp=Object.keys(Lt);function xp(e){return Object.prototype.hasOwnProperty.call(Lt,e)}function As(e){return e.availableAggregationFunctions?Array.from(new Set(e.availableAggregationFunctions.filter(xp))):bp}function Ps(){return c.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:c.jsx("path",{d:"M18 4H6l6 8-6 8h12"})})}function yp(){return c.jsxs("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",children:[c.jsx("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("rect",{x:"8.5",y:"4",width:"7",height:"16",fill:"currentColor",opacity:"0.25"}),c.jsx("line",{x1:"8.5",y1:"4",x2:"8.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("line",{x1:"15.5",y1:"4",x2:"15.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),c.jsx("line",{x1:"2",y1:"9",x2:"22",y2:"9",stroke:"currentColor",strokeWidth:"1.2"}),c.jsx("line",{x1:"2",y1:"14",x2:"22",y2:"14",stroke:"currentColor",strokeWidth:"1.2"})]})}function Ts(){return c.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:c.jsx("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"})})}function vp({anchorRef:e,aggregationModel:t,aggregableColumns:n,onFunctionChange:o,onClearAll:r,onClose:i,activeCount:l}){const d=s.useRef(null),[a,u]=s.useState({top:0,right:0}),[g,m]=s.useState(null);s.useLayoutEffect(()=>{m(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const w=s.useCallback(()=>{if(!e.current)return{top:0,right:0};const p=e.current.getBoundingClientRect();return{top:p.bottom+6,right:Ot()-p.right}},[e]);s.useEffect(()=>{u(w());const p=()=>u(w());return window.addEventListener("scroll",p,!0),window.addEventListener("resize",p),()=>{window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p)}},[w]),s.useEffect(()=>{function p(f){d.current&&!d.current.contains(f.target)&&e.current&&!e.current.contains(f.target)&&i()}return document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[e,i]),s.useEffect(()=>{function p(f){f.key==="Escape"&&i()}return document.addEventListener("keydown",p),()=>document.removeEventListener("keydown",p)},[i]);const y=c.jsxs("div",{ref:d,className:"ogx-toolbar__panel",role:"dialog","aria-label":"Summaries configuration",style:{top:a.top,right:a.right,width:400,maxWidth:"calc(100vw - 24px)"},children:[c.jsxs("div",{className:"ogx-toolbar__panel-header",children:[c.jsxs("span",{className:"ogx-toolbar__panel-title",children:[c.jsx(Ps,{}),"Summaries"]}),l>0&&c.jsx("button",{type:"button",className:"ogx-toolbar__clear-btn",onClick:r,title:"Clear all summaries",children:"Clear all"})]}),c.jsx("div",{className:"ogx-toolbar__panel-body",children:n.length===0?c.jsxs("p",{className:"ogx-toolbar__empty",children:["No aggregable columns.",c.jsx("br",{}),"Set ",c.jsx("code",{children:"aggregable: true"})," on a column to enable."]}):n.map(p=>{const f=t[p.field]||"none";return c.jsxs("div",{className:"ogx-toolbar__agg-row",children:[c.jsx("span",{className:"ogx-toolbar__agg-label",title:p.field,children:p.headerName||p.field}),c.jsx("div",{className:"ogx-toolbar__agg-pills",children:["none",...As(p)].map(h=>c.jsx("button",{type:"button",className:`ogx-toolbar__pill${f===h?" ogx-toolbar__pill--active":""}`,onClick:()=>o(p.field,h),"aria-pressed":f===h,children:h},h))})]},p.field)})})]});return g?mt.createPortal(y,g):null}function Cp({anchorRef:e,columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:d,onClose:a,showNonHideableColumns:u}){const g=s.useRef(null),[m,w]=s.useState({top:0,right:0}),[y,p]=s.useState(null);s.useLayoutEffect(()=>{p(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const f=s.useCallback(()=>{if(!e.current)return{top:0,right:0};const x=e.current.getBoundingClientRect();return{top:x.bottom+6,right:Ot()-x.right}},[e]);s.useEffect(()=>{w(f());const x=()=>w(f());return window.addEventListener("scroll",x,!0),window.addEventListener("resize",x),()=>{window.removeEventListener("scroll",x,!0),window.removeEventListener("resize",x)}},[f]),s.useEffect(()=>{function x(b){g.current&&!g.current.contains(b.target)&&e.current&&!e.current.contains(b.target)&&a()}return document.addEventListener("mousedown",x),()=>document.removeEventListener("mousedown",x)},[e,a]),s.useEffect(()=>{function x(b){b.key==="Escape"&&a()}return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[a]);const h=c.jsx("div",{ref:g,className:"ogx-toolbar__panel",role:"dialog","aria-label":"Column visibility",style:{top:m.top,right:m.right,width:280,padding:0},children:c.jsx(yr,{columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:d,showNonHideableColumns:u})});return y?mt.createPortal(h,y):null}function _p({anchorRef:e,columns:t,filterModel:n,onFilterModelChange:o,onClose:r}){const i=s.useRef(null),[l,d]=s.useState({top:0,right:0}),a=s.useRef(r);s.useLayoutEffect(()=>{a.current=r},[r]);const[u,g]=s.useState(null);s.useLayoutEffect(()=>{g(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const m=s.useCallback(()=>{if(!e.current)return{top:0,right:0};const f=e.current.getBoundingClientRect();return{top:f.bottom+6,right:Ot()-f.right}},[e]);s.useEffect(()=>{d(m());const f=()=>d(m());return window.addEventListener("scroll",f,!0),window.addEventListener("resize",f),()=>{window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f)}},[m]),s.useEffect(()=>{function f(h){h.key==="Escape"&&a.current()}return document.addEventListener("keydown",f),()=>document.removeEventListener("keydown",f)},[]);const w=n.items?.length??0,y=()=>{o({...n,items:[],logicOperator:"and"})},p=c.jsxs("div",{ref:i,className:"ogx-toolbar__panel ogx-toolbar__panel--filter",role:"dialog","aria-label":"Advanced filters",style:{top:l.top,right:l.right,width:540,maxWidth:"calc(100vw - 24px)"},children:[c.jsxs("div",{className:"ogx-toolbar__panel-header",children:[c.jsxs("span",{className:"ogx-toolbar__panel-title",children:[c.jsx(Ts,{}),"Filters",w>0&&c.jsx("span",{className:"ogx-toolbar__panel-count",children:w})]}),c.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[w>0&&c.jsx("button",{type:"button",className:"ogx-toolbar__clear-btn",onClick:y,title:"Clear all filters",children:"Clear all"}),c.jsx("button",{type:"button",className:"ogx-toolbar__close-btn",onClick:()=>a.current(),title:"Close filters","aria-label":"Close filters panel",children:"Close"})]})]}),c.jsx("div",{className:"ogx-toolbar__panel-body ogx-toolbar__panel-body--filter",children:c.jsx(Ms,{columns:t,filterModel:n,onFilterModelChange:o})})]});return u?mt.createPortal(p,u):null}const Sp={rowFields:[],columnFields:[],valueFields:[]},kp=[];function Ep({columns:e=kp,baseColumns:t,aggregationModel:n={},onAggregationModelChange:o,pivotModel:r,onPivotModelChange:i,filterModel:l,onFilterModelChange:d,columnVisibilityModel:a={},onColumnVisibilityModelChange:u,onColumnReorder:g,onColumnOrderReset:m,forceColumnsOpen:w,onColumnsPanelClose:y,forceFiltersOpen:p,onFiltersPanelClose:f,children:h,rightContent:x,style:b,renderColumnsButton:v,renderFilterButton:E,renderAggregationButton:k,renderExportButton:N,renderQuickFilter:M,className:S,showNonHideableColumns:D,onAiAssistantToggle:I,aiAssistantOpen:A=!1,aiAssistantLabel:C="Ask AI"}){const[L,F]=s.useState(w?"columns":null),_=L==="summaries",z=L==="pivot",K=L==="columns",Q=L==="filters",G=he=>{L==="columns"&&he!=="columns"&&y?.(),L==="filters"&&he!=="filters"&&f?.(),F(he)},j=he=>G(L===he?null:he),H=he=>{L===he&&G(null)},[ie,re]=s.useState(w);ie!==w&&(re(w),w&&F("columns"));const[ue,ae]=s.useState(p);ue!==p&&(ae(p),p&&d&&F("filters"));const R=s.useContext(ol),te=w!==void 0&&!!u;s.useEffect(()=>{if(!(!R||!te))return R.registerColumnsPanel()},[R,te]);const ce=p!==void 0&&!!d;s.useEffect(()=>{if(!(!R||!ce))return R.registerFiltersPanel()},[R,ce]);const W=s.useRef(null),le=s.useRef(null),V=s.useRef(null),J=s.useRef(null),ne=s.useRef(null),fe=s.useRef(null),Z=s.useRef(null),$=s.useRef(null),O=r??Sp,P=O.rowFields.length>0||O.columnFields.length>0||O.valueFields.length>0,T=t?new Set(t.map(he=>he.field)):null,X=e.filter(he=>he.aggregable!==!1&&(he.type==="number"||he.aggregable===!0)&&As(he).length>0&&(!T||T.has(he.field))),B=Object.keys(n).filter(he=>n[he]&&n[he]!=="none").length,ee=s.useCallback((he,ve)=>{if(!o)return;const be={...n};ve==="none"?delete be[he]:be[he]=ve,o(be)},[n,o]),q=s.useCallback(()=>{o?.({})},[o]),Y=s.useCallback(he=>{if(!d)return;const ve=he.trim().split(/\s+/).filter(Boolean),be={...l||{},quickFilterValues:ve,items:l?.items||[]};d(be)},[l,d]),oe=(l?.quickFilterValues??[]).join(" "),me=l?.items?.length||0,U=new Set(e.filter(he=>a[he.field]!==!1).map(he=>he.field)),se=s.useCallback((he,ve)=>{if(!u)return;const be={...a,[he]:ve};u(be)},[a,u]),we=s.useCallback(()=>{if(!u)return;const he={...a};e.forEach(ve=>{ve.hideable!==!1&&(he[ve.field]=!0)}),u(he)},[e,a,u]),pe=s.useCallback(()=>{if(!u)return;const he={...a};e.forEach(ve=>{ve.hideable!==!1&&(he[ve.field]=!1)}),u(he)},[e,a,u]);return c.jsxs("div",{className:["ogx-toolbar",S].filter(Boolean).join(" "),role:"toolbar","aria-label":"Grid toolbar",style:b,children:[h&&c.jsx("div",{className:"ogx-toolbar__left",children:h}),c.jsx("div",{className:"ogx-toolbar__spacer"}),c.jsxs("div",{className:"ogx-toolbar__actions",children:[I&&c.jsx("div",{className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:c.jsxs("button",{type:"button",ref:le,className:`ogx-toolbar__icon-btn ogx-toolbar__ai-btn${A?" ogx-toolbar__icon-btn--active":""}`,"aria-haspopup":"dialog","aria-expanded":A,onClick:()=>{G(null),I(le.current)},children:[c.jsx(vs,{}),C]})}),d&&c.jsx("div",{className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:M?M({value:oe,onChange:Y}):c.jsx(wp,{value:oe,onChange:Y,placeholder:"Search..."})}),u&&c.jsxs("div",{ref:fe,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[v?v({onClick:()=>j("columns"),isOpen:K,activeCount:e.length-U.size}):c.jsx(Sn,{title:"Columns",children:c.jsx("button",{type:"button",ref:J,className:`ogx-toolbar__icon-btn${K?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Manage columns","aria-haspopup":"dialog","aria-expanded":K,onClick:()=>j("columns"),children:c.jsx(yp,{})})}),K&&c.jsx(Cp,{anchorRef:v?fe:J,columns:e,visibleColumns:U,onVisibilityChange:se,onShowAll:we,onHideAll:pe,onColumnReorder:g,onColumnOrderReset:m,onClose:()=>H("columns"),showNonHideableColumns:D})]}),d&&c.jsxs("div",{ref:Z,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[E?E({onClick:()=>j("filters"),isOpen:Q,activeCount:me}):c.jsx(Sn,{title:"Filters",children:c.jsxs("button",{type:"button",ref:ne,className:`ogx-toolbar__icon-btn${Q?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Advanced filters","aria-haspopup":"dialog","aria-expanded":Q,onClick:()=>j("filters"),children:[c.jsx(Ts,{}),me>0&&c.jsx("span",{className:"ogx-toolbar__dot","aria-label":"Filters active"})]})}),Q&&c.jsx(_p,{anchorRef:E?Z:ne,columns:e,filterModel:l||{items:[]},onFilterModelChange:d,onClose:()=>H("filters")})]}),i&&c.jsxs("div",{className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[c.jsx(Sn,{title:"Pivot",children:c.jsxs("button",{type:"button",ref:V,className:`ogx-toolbar__icon-btn${z?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Configure pivot","aria-haspopup":"dialog","aria-expanded":z,onClick:()=>j("pivot"),children:[c.jsx(Is,{}),P&&c.jsx("span",{className:"ogx-toolbar__dot","aria-label":"Pivot active"})]})}),z&&c.jsx(pp,{anchorRef:V,columns:t??e,model:O,onChange:he=>{i?.(he)},onClose:()=>H("pivot")})]}),o&&c.jsxs("div",{ref:$,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[k?k({onClick:()=>j("summaries"),isOpen:_,activeCount:B}):c.jsx(Sn,{title:"Summaries",children:c.jsxs("button",{type:"button",ref:W,className:`ogx-toolbar__icon-btn${_?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Configure summaries","aria-haspopup":"dialog","aria-expanded":_,onClick:()=>j("summaries"),children:[c.jsx(Ps,{}),B>0&&c.jsx("span",{className:"ogx-toolbar__dot","aria-label":`${B} active summaries`})]})}),_&&c.jsx(vp,{anchorRef:k?$:W,aggregationModel:n,aggregableColumns:X,onFunctionChange:ee,onClearAll:q,onClose:()=>H("summaries"),activeCount:B})]}),N&&N(),x]})]})}function Mp(){const[e]=s.useState(Sl);return s.useRef(e)}function Qt(e,t){if(e.groupLabel!==void 0)return e.groupLabel;const n=e.groupField??"",o=t.find(r=>r.field===n)?.groupingValueFormatter;return o?o({field:n,value:e.groupValue}):`${n}: ${String(e.groupValue??"")}`}const Np=new Set([8364,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,381,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,382,376]);function Ip(e){return e>=8192&&e<=8202||e===8239||e===8287||e===12288?" ":e>=8203&&e<=8205||e===8288||e===65279?"":e===8208||e===8209||e===8210||e===8722?"-":null}function Lp(e){let t="",n=!1;for(const o of e){const r=o.codePointAt(0)??0;if(r<=255||Np.has(r)){t+=o;continue}const i=Ip(r);i!==null?t+=i:(t+="?",n=!0)}return{text:t,lossy:n}}const Ap={sliceMs:30,renderChunkRows:40},Pp=2e4;function Fs(){return new Promise(e=>setTimeout(e,0))}function Tp(){return new DOMException("PDF export was aborted","AbortError")}const en=()=>typeof performance<"u"?performance.now():Date.now(),Os=e=>Math.max(2,Math.floor(e/2)*2),Fp=[79,70,229],Op=[255,255,255];function Ds(e,t){const n=e.trim().replace(/^#/,""),o=/^[a-f\d]{3}$/i.test(n)?n.split("").map(i=>i+i).join(""):n,r=/^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(o);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:t}function $s(e,t){return _n(e,t,Cn(e,t))}function Gs(e){return(typeof e.width=="number"?e.width:void 0)??(e.flex??1)*100}function Dp(e,t){const n=e.reduce((r,i)=>r+Gs(i),0),o={};return e.forEach((r,i)=>{o[i]={cellWidth:Gs(r)/n*t}}),o}const $p=new Set(["isEmpty","isNotEmpty"]);function Gp(e,t){const o=t.find(l=>l.field===e.field)?.headerName??e.field;if($p.has(e.operator))return`${o} ${e.operator}`;const{value:r}=e;if(r==null||r===""||Array.isArray(r)&&r.length===0)return null;const i=Array.isArray(r)?r.map(String).join(", "):String(r);return`${o} ${e.operator} "${i}"`}function Hs(e,t,n,o){const r=e.map(l=>"items"in l?Hs(l.items,l.logicOperator,n,!0):Gp(l,n)).filter(l=>!!l);if(r.length===0)return"";const i=r.join(t==="or"?" OR ":" AND ");return o&&r.length>1?`(${i})`:i}function Hp(e,t){const n=[],o=Hs(e.items??[],e.logicOperator??"and",t,!1);o&&n.push(o);const r=(e.quickFilterValues??[]).filter(i=>i.trim()!=="");return r.length>0&&n.push(`Search: ${r.map(i=>`"${i}"`).join(" ")}`),n.join(" • ")}const Bp=1.15*.3528;function Wp(e,t,n={}){return Vp(e,t,n,Ap)}async function Vp(e,t,n,o){const{signal:r,onProgress:i}=n,l=()=>{if(r?.aborted)throw Tp()};l();let d,a;try{const[q,Y]=await Promise.all([import("jspdf"),import("jspdf-autotable")]);d=q.default,a=Y.default}catch{throw new Error("exportToPdf requires 'jspdf' and 'jspdf-autotable'. Run: npm install jspdf jspdf-autotable")}const{fileName:u="export",title:g,logoUrl:m,orientation:w="landscape",selectedRows:y,getRowId:p,aggregationResult:f,aggregationModel:h,filterModel:x,alternateRowColor:b=!0,headerBackgroundColor:v="#4f46e5",headerTextColor:E="#ffffff",fontSize:k=9,groupedRows:N,font:M,maxRows:S=Pp}=n;l();let D=en();const I=async()=>{en()-D<o.sliceMs||(await Fs(),l(),D=en())},A=(q,Y,oe)=>{i?.({phase:q,done:Y,total:oe})},C=new d({orientation:w,unit:"mm",format:"a4"}),L=C.internal.pageSize.getWidth(),F=C.internal.pageSize.getHeight(),_=14,z=L-_*2;let K="helvetica";M&&(C.addFileToVFS(`${M.name}-normal.ttf`,M.data),C.addFont(`${M.name}-normal.ttf`,M.name,"normal"),M.boldData&&C.addFileToVFS(`${M.name}-bold.ttf`,M.boldData),C.addFont(M.boldData?`${M.name}-bold.ttf`:`${M.name}-normal.ttf`,M.name,"bold"),K=M.name);let Q=!1;const G=q=>{if(M)return q;const Y=Lp(q);return Y.lossy&&(Q=!0),Y.text},j=(q,Y,oe,me,U)=>{const se=C.splitTextToSize(G(q),me);return C.text(se.length===1?se[0]:se,Y,oe),Math.max(0,se.length-1)*U*Bp},H=Dt(t),ie=vn(N,y),re=yn(e,y,p);let ue=_;if(g){let q=_,Y=_+8;if(m)try{C.addImage(m,"PNG",q,_,10,10),q+=14}catch{}const oe=L-_-q;C.setFontSize(16),C.setFont(K,"bold"),C.setTextColor(30,41,59),Y+=j(g,q,Y,oe,16),Y+=6,C.setFontSize(8),C.setFont(K,"normal"),C.setTextColor(100,116,139);const me=new Date().toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),U=ie?N.filter(se=>se.type==="leaf").length:re.length;if(C.text(G(`Exported: ${me} • ${U} row${U!==1?"s":""}`),q,Y),Y+=5,x){const se=Hp(x,t);se&&(Y+=j(`Filters: ${se}`,q,Y,oe,8),Y+=5)}C.setDrawColor(226,232,240),C.setLineWidth(.3),C.line(_,Y+2,L-_,Y+2),ue=Y+6}const ae=[H.map(q=>G(q.headerName??q.field))],R=h||{},te=q=>H.map(Y=>vr(Y,R[Y.field],q[Y.field],q)),ce=[];let W;const le=q=>{ce.push(q.map(G))};if(ie){const q=N.length;A("prepare",0,q);for(let Y=0;Y<q;Y++){const oe=N[Y],me=" ".repeat(oe.depth*2);if(oe.type==="group-header"){const U=`${me}${Qt(oe,t)}`;le(H.map((se,we)=>we===0?U:""))}else if(oe.type==="leaf"&&oe.row){const U=oe.row;le(H.map((se,we)=>(we===0?me:"")+$s(U,se)))}else if(oe.type==="group-subtotal"&&oe.aggregatedValues){const U=te(oe.aggregatedValues);le(U.map((se,we)=>we===0?`${me}${Jt("Subtotal",se)}`:se))}else oe.type==="grand-total"&&oe.aggregatedValues&&(W=[te(oe.aggregatedValues).map((se,we)=>we===0?Jt("Grand Total",se):se).map(G)]);(Y&63)===63&&(A("prepare",Y+1,q),await I())}A("prepare",q,q)}else{const q=re.length;A("prepare",0,q);for(let oe=0;oe<q;oe++)le(H.map(me=>$s(re[oe],me))),(oe&63)===63&&(A("prepare",oe+1,q),await I());const Y=h?Yt(re,yt(y),t,f,h):null;if(Y&&h){const oe=H.some(U=>h[U.field]);W=[te(Y).map((U,se)=>se===0&&oe?Jt("TOTAL",U):U).map(G)]}A("prepare",q,q)}l(),ce.length>S&&process.env.NODE_ENV!=="production"&&console.warn(`[exportToPdf] Exporting ${ce.length} table rows (maxRows: ${S}). PDFs this large are slow to build and open and can reach tens of MB. Prefer exportToCsv or exportToExcelAdvanced for full-dataset exports, or pass a larger \`maxRows\` to silence this warning.`),Q&&console.warn('[exportToPdf] Some characters cannot be drawn with the built-in Helvetica font and were replaced with "?". Pass the `font` option (a Unicode .ttf, e.g. Noto Sans) to draw them.');const V=Dp(H,z),[J,ne,fe]=Ds(v,Fp),[Z,$,O]=Ds(E,Op),P={head:ae,styles:{fontSize:k,cellPadding:3,font:K,overflow:"linebreak"},headStyles:{fillColor:[J,ne,fe],textColor:[Z,$,O],fontStyle:"bold"},...b?{alternateRowStyles:{fillColor:[248,250,252]}}:{},...W?{footStyles:{fillColor:[241,245,249],fontStyle:"bold",textColor:[0,0,0]}}:{},columnStyles:V,showHead:"everyPage",margin:{top:_,left:_,right:_,bottom:_+6}},T=ce.length;A("render",0,T);let X=0,B=Os(o.renderChunkRows);do{const q=ce.slice(X,X+B),Y=X===0,oe=X+q.length>=T,me=Y?ue:C.lastAutoTable.finalY;let U=!0;const se=en();a(C,{...P,body:q,...oe&&W?{foot:W}:{},startY:Y?ue:_,showFoot:oe&&W?"lastPage":"never",...Y?{}:{willDrawPage:pe=>{U?(U=!1,pe.settings.showHead="never",pe.cursor&&(pe.cursor.y=me)):pe.settings.showHead="everyPage"}}}),X+=q.length,A("render",X,T);const we=en()-se;B=Os(we>0?Math.min(B*4,B*(o.sliceMs/we)):B*4),oe||(await Fs(),l(),D=en())}while(X<T);const ee=C.getNumberOfPages();for(let q=1;q<=ee;q++)C.setPage(q),C.setFontSize(8),C.setTextColor(150,150,150),C.text(`Page ${q} of ${ee}`,L-_,F-8,{align:"right"}),await I();l(),A("save",0,1),C.save(`${u}.pdf`),A("save",1,1)}function kn(e,t){const n=Cn(e,t);return{text:_n(e,t,n),raw:n}}function tn(e,t,n){return e.map(o=>vr(o,n[o.field],t[o.field],t))}const zp="\uFEFF";function Kp(e,t,n={}){const{fileName:o="export.csv",includeHeaders:r=!0,delimiter:i=",",selectedRows:l,groupedRows:d,escapeFormulas:a=!0,bom:u=!0}=n,g=Dt(t),m=n.aggregationModel||{},w=(f,h=!1)=>ro(a?Qn(f,h):f,i),y=()=>g.map(f=>w(f.headerName||f.field)).join(i)+`
8
+ `;let p="";if(vn(d,l))r&&(p+=y()),d.forEach(f=>{const h=" ".repeat(f.depth);if(f.type==="group-header"){const x=Qt(f,t),b=ro(h+(a?Qn(x):x),i);p+=g.map((v,E)=>E===0?b:"").join(i)+`
9
+ `}else if(f.type==="leaf"&&f.row){const x=f.row,b=g.map((v,E)=>{const k=kn(x,v),N=a?Qn(k.text,vt(k.raw)):k.text;return ro((E===0?h:"")+N,i)});p+=b.join(i)+`
10
+ `}else if((f.type==="group-subtotal"||f.type==="grand-total")&&f.aggregatedValues){const x=f.aggregatedValues,b=f.type==="grand-total"?"Grand Total":`${h}Subtotal`,v=tn(g,x,m),E=g.map((k,N)=>N===0?ro(Jt(b,v[0]),i):w(v[N],vt(x[k.field])));p+=E.join(i)+`
11
+ `}});else{const f=yn(e,l,n.getRowId);if(f.length===0){console.warn("No rows to export");return}r&&(p+=y()),f.forEach(x=>{const b=g.map(v=>{const E=kn(x,v);return w(E.text,vt(E.raw))});p+=b.join(i)+`
12
+ `});const h=Yt(f,yt(l),t,n.aggregationResult,n.aggregationModel);if(h){const x=g.map(v=>w(m[v.field]?m[v.field].toUpperCase():""));p+=x.join(i)+`
13
+ `;const b=tn(g,h,m);p+=g.map((v,E)=>w(b[E],vt(h[v.field]))).join(i)+`
14
+ `}}Ir((u?zp:"")+p,o,"text/csv;charset=utf-8;")}function ro(e,t){return t!==""&&e.includes(t)||e.includes('"')||e.includes(`
15
+ `)||e.includes("\r")?`"${e.replace(/"/g,'""')}"`:e}const io="ogx-xls-text";function jp(e,t){return e.type!=="number"&&e.type!=="date"&&e.type!=="boolean"&&!vt(t)}function Up(e){if(!/\.xlsx$/i.test(e))return e;const t=e.replace(/\.xlsx$/i,".xls");return console.warn(`[exportToExcel] "${e}" renamed to "${t}": exportToExcel writes an HTML table that Excel refuses to open as .xlsx. Use exportToExcelAdvanced for a real .xlsx file.`),t}function Rp(e,t,n={}){const{fileName:o="export.xls",sheetName:r="Sheet1",includeHeaders:i=!0,selectedRows:l,groupedRows:d,escapeFormulas:a=!0}=n,u=Dt(t),g=n.aggregationModel||{},m=(h,x=!1)=>Te(a?Qn(h,x):h),w=h=>`<td class="${io}">${h}</td>`;let p=`<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>${Te(Cr(r))}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta charset="UTF-8"><style>.${io}{mso-number-format:"\\@";}</style></head><body><table border="1">`;i&&(p+="<thead><tr>",u.forEach(h=>{p+=`<th class="${io}">${m(h.headerName||h.field)}</th>`}),p+="</tr></thead>"),p+="<tbody>";const f=(h,x,b="")=>{const v=b+m(h.text,vt(h.raw));return jp(x,h.raw)?w(v):`<td>${v}</td>`};if(vn(d,l))d.forEach(h=>{const x=" ".repeat(h.depth*2);if(h.type==="group-header")p+='<tr style="font-weight:bold;background:#e8eaf6;">',p+=`<td colspan="${u.length}" class="${io}">${Te(x)}${m(Qt(h,t))}</td>`,p+="</tr>";else if(h.type==="leaf"&&h.row){const b=h.row;p+="<tr>",u.forEach((v,E)=>{p+=f(kn(b,v),v,E===0?Te(x):"")}),p+="</tr>"}else if((h.type==="group-subtotal"||h.type==="grand-total")&&h.aggregatedValues){const b=h.aggregatedValues,v=h.type==="grand-total"?"Grand Total":`${x}Subtotal`,E=tn(u,b,g);p+='<tr style="font-weight:bold;background:#f5f5f5;">',u.forEach((k,N)=>{if(N===0){p+=w(Te(Jt(v,E[0])));return}p+=E[N]?`<td style="text-align:right;">${m(E[N],vt(b[k.field]))}</td>`:"<td></td>"}),p+="</tr>"}});else{const h=yn(e,l,n.getRowId);if(h.length===0){console.warn("No rows to export");return}h.forEach(b=>{p+="<tr>",u.forEach(v=>{p+=f(kn(b,v),v)}),p+="</tr>"});const x=Yt(h,yt(l),t,n.aggregationResult,n.aggregationModel);if(x){p+='<tr style="font-size: 11px; color: #666; background-color: #f5f5f5;">',u.forEach(v=>{p+=g[v.field]?`<td style="text-align:right;font-weight:bold;">${Te(g[v.field].toUpperCase())}</td>`:"<td></td>"}),p+='</tr><tr style="font-weight:bold;background-color:#f5f5f5;">';const b=tn(u,x,g);u.forEach((v,E)=>{p+=b[E]?`<td style="text-align:right;">${m(b[E],vt(x[v.field]))}</td>`:"<td></td>"}),p+="</tr>"}}p+="</tbody></table></body></html>",Ir(p,Up(o),"application/vnd.ms-excel")}function qp(e,t,n={}){const{fileName:o="export.json",pretty:r=!0,selectedRows:i,groupedRows:l}=n,d=Dt(t),a=g=>{const m={};return d.forEach(w=>{m[w.field]=Cn(g,w)}),m};let u;if(vn(l,i)){const g=[],m=[];let w;l.forEach(y=>{if(y.type==="group-header"){const p={group:Qt(y,t),field:y.groupField??"",value:y.groupValue,rows:[],children:[]};for(;g.length>y.depth;)g.pop();g.length===0?m.push(p):(g[g.length-1].children??=[]).push(p),g.push(p)}else y.type==="leaf"&&y.row?g.length>0&&g[g.length-1].rows.push(a(y.row)):y.type==="group-subtotal"&&y.aggregatedValues&&g.length>0?(g[g.length-1].subtotals=ls(y.aggregatedValues,d),g.pop()):y.type==="grand-total"&&y.aggregatedValues&&(w=ls(y.aggregatedValues,d))}),u=w?{groups:m,grandTotal:w}:{groups:m}}else{const g=yn(e,i,n.getRowId);if(g.length===0){console.warn("No rows to export");return}const m=g.map(a),w=Yt(g,yt(i),t,n.aggregationResult,n.aggregationModel);if(w){const y=n.aggregationModel||{},p={};d.forEach(h=>{y[h.field]&&(p[h.field]=y[h.field].toUpperCase())});const f={};d.forEach(h=>{w[h.field]!==void 0&&w[h.field]!==null&&(f[h.field]=w[h.field])}),u={data:m,aggregation:{labels:p,values:f}}}else u=m}Ir(r?JSON.stringify(u,null,2):JSON.stringify(u),o,"application/json;charset=utf-8;")}const Xp=/^(?:https?:|data:image\/|blob:)/i,Yp=/^[a-z][a-z\d+.-]*:/i;function Jp(e){const t=e.trim();return t?Xp.test(t)?t:Yp.test(t)?null:t:null}async function Zp(e,t,n){const o=window.open("","_blank");if(!o){console.error("Failed to open print window. Please check your popup blocker settings.");return}o.document.write(`
16
16
  <!DOCTYPE html>
17
17
  <html>
18
18
  <head>
@@ -32,7 +32,7 @@
32
32
  </div>
33
33
  </body>
34
34
  </html>
35
- `),o.document.close(),await new Promise(r=>setTimeout(r,100));try{let r="Print",i,l,d=null,a=null,f;typeof n=="string"?r=n:typeof n=="object"&&(r=n.title||"Print",i=n.selectedRows,l=n.getRowId,d=n.aggregationResult||null,a=n.aggregationModel||null,f=n.groupedRows);const p=_t(t),w=a||{};let b=`<!DOCTYPE html><html><head><title>${Pe(r||"Print")}</title><style>
35
+ `),o.document.close(),await new Promise(r=>setTimeout(r,100));try{let r="Print",i,l,d=null,a=null,u;typeof n=="string"?r=n:typeof n=="object"&&(r=n.title||"Print",i=n.selectedRows,l=n.getRowId,d=n.aggregationResult||null,a=n.aggregationModel||null,u=n.groupedRows);const g=Dt(t),m=a||{};let w=`<!DOCTYPE html><html><head><title>${Te(r||"Print")}</title><style>
36
36
  body{font-family:Arial,sans-serif;margin:20px;}
37
37
  h1{font-size:24px;margin-bottom:20px;}
38
38
  table{border-collapse:collapse;width:100%;}
@@ -43,5 +43,5 @@
43
43
  tr.group-subtotal{background:#f0f4ff;font-style:italic;}
44
44
  tr.grand-total{background:#f5f5f5;font-weight:bold;}
45
45
  @media print{body{margin:0;}@page{margin:1cm;}}
46
- </style></head><body>`;r&&(b+=`<h1>${Pe(r)}</h1>`),b+="<table><thead><tr>",p.forEach(u=>{b+=`<th>${Pe(u.headerName||u.field)}</th>`}),b+="</tr></thead><tbody>";const C=(u,h,x="",m=!1)=>{const{text:y}=Sn(u,h),E=h.type==="image"?cg(y):null;if(E!==null){const v=`<img src="${Pe(E)}" alt="${Pe(h.headerName||h.field)}" style="max-height:40px;border-radius:4px;">`;return m?`<td><div style="display:flex;justify-content:center;">${v}</div></td>`:`<td>${v}</td>`}return`<td>${x}${Pe(y)}</td>`};if(bn(f,i))f.forEach(u=>{const h="&nbsp;".repeat(u.depth*4);if(u.type==="group-header")b+=`<tr class="group-header"><td colspan="${p.length}">${h}${Pe(Rt(u,t))}</td></tr>`;else if(u.type==="leaf"&&u.row){const x=u.row;b+="<tr>",p.forEach((m,y)=>{b+=C(x,m,y===0?h:"")}),b+="</tr>"}else if((u.type==="group-subtotal"||u.type==="grand-total")&&u.aggregatedValues){const x=u.type==="grand-total",m=Xt(p,u.aggregatedValues,w);b+=`<tr class="${x?"grand-total":"group-subtotal"}">`,p.forEach((y,E)=>{if(E===0){b+=`<td>${x?"":h}${Pe(Ut(x?"Grand Total":"Subtotal",m[0]))}</td>`;return}b+=m[E]?`<td style="text-align:right;">${Pe(m[E])}</td>`:"<td></td>"}),b+="</tr>"}});else{const u=xn(e,i,l);if(u.length===0){o.document.body.innerHTML="<h3>No rows to export</h3>";return}u.forEach(x=>{b+="<tr>",p.forEach(m=>{b+=C(x,m,"",!0)}),b+="</tr>"});const h=Kt(u,ft(i),t,d,a);h&&(b+='<tfoot><tr style="font-size:11px;color:#666;background-color:#f5f5f5;">',p.forEach(x=>{b+=w[x.field]?`<td style="text-align:right;font-weight:bold;">${Pe(w[x.field].toUpperCase())}</td>`:"<td></td>"}),b+='</tr><tr style="font-weight:bold;background-color:#f5f5f5;">',Xt(p,h,w).forEach(x=>{b+=x?`<td style="text-align:right;">${Pe(x)}</td>`:"<td></td>"}),b+="</tr></tfoot>")}b+="</tbody></table></body></html>",o.document.open(),o.document.write(b),o.document.close(),o.document.title=r||"Print Preview",o.focus();let g=!1;o.onload=()=>{g||(g=!0,o.print(),setTimeout(()=>{o.close()},100))},setTimeout(()=>{!g&&o&&!o.closed&&(g=!0,o.print(),setTimeout(()=>{o.closed||o.close()},100))},500)}catch(r){if(console.error("Print generation failed:",r),o&&!o.closed){const i=r instanceof Error?r.message:String(r);o.document.body.innerHTML=`<div style="color: red; padding: 20px;"><h3>Error Generating Print Preview</h3><p>${Pe(i)}</p></div>`}}}function or(e,t,n){const o=new Blob([e],{type:n}),r=URL.createObjectURL(o),i=document.createElement("a");i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}function ug(e,t){return e.type==="number"?"number":e.type==="boolean"?"boolean":e.type==="date"?"date":typeof t=="number"?"number":typeof t=="boolean"?"boolean":t instanceof Date?"date":"string"}function _n(e){return Number.isNaN(e.getTime())?null:new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()))}const fg=/^(\d{4})-(\d{2})-(\d{2})$/,gg=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?$/i,pg=/^[-+]?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?$/i;function hg(e){if(e instanceof Date)return _n(e);if(typeof e=="number")return Number.isFinite(e)?_n(new Date(e)):null;if(typeof e!="string")return;const t=e.trim(),n=fg.exec(t);if(n){const[o,r,i]=[Number(n[1]),Number(n[2]),Number(n[3])],l=new Date(Date.UTC(o,r-1,i));return l.getUTCMonth()===r-1&&l.getUTCDate()===i?l:void 0}if(gg.test(t)){const o=new Date(t.replace(" ","T"));return Number.isNaN(o.getTime())?void 0:_n(o)}}function mg(e,t){if(t==null||t==="")return null;if(e==="number"){if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="bigint"){const n=Number(t);return Number.isSafeInteger(n)?n:void 0}if(typeof t=="string"&&pg.test(t.trim())){const n=Number(t.trim());return Number.isFinite(n)?n:void 0}return}if(e==="boolean"){if(typeof t=="boolean")return t;if(typeof t=="string"){const n=t.trim().toLowerCase();if(n==="true")return!0;if(n==="false")return!1}return}return hg(t)}function Zl(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(e instanceof Date)return _n(e);if(typeof e=="object")try{return JSON.stringify(e)??String(e)}catch{return String(e)}return String(e)}function wg(e,t){const n=Cn(e,t),o=ug(t,n);if(o!=="string"){const r=mg(o,n);if(r!=null)return r;if(!t.valueFormatter)return r===null?null:Zl(n)}return t.valueFormatter?yn(e,t,n):Zl(n)}const Ql="#,##0",xg="#,##0.##";function bg(e){return Number.isInteger(e)?Ql:xg}function es(e,t){if(t?.numFmt)return t.numFmt;if(e.type==="date")return"yyyy-mm-dd"}function ts(e,t,n){if(!(t?.numFmt||typeof n!="number"||e.type!=="number"))return bg(n)}function Cg(e,t){if(t!=null)return t;const n=e.width??120;return Math.min(60,Math.max(8,(n-5)/7))}function yg(e){return e.length>=8&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?"png":e.length>=3&&e[0]===255&&e[1]===216&&e[2]===255?"jpeg":e.length>=6&&e[0]===71&&e[1]===73&&e[2]===70&&e[3]===56?"gif":null}function ns(e,t){const n=Cn(e,t);return typeof n=="string"&&n?n:null}async function vg(e){const t=await Promise.allSettled(e.map(async o=>{let r;if(o.startsWith("data:")){const l=o.slice(o.indexOf(",")+1),d=atob(l);r=new Uint8Array(d.length);for(let a=0;a<d.length;a++)r[a]=d.charCodeAt(a)}else{const l=await fetch(o,{mode:"cors"});if(!l.ok)throw new Error(`HTTP ${l.status}`);r=new Uint8Array(await l.arrayBuffer())}const i=yg(r);if(!i)throw new Error("unsupported image format (only PNG, JPEG and GIF can be embedded)");return{url:o,buffer:r.slice().buffer,ext:i}})),n=new Map;return t.forEach((o,r)=>{o.status==="fulfilled"?n.set(o.value.url,{buffer:o.value.buffer,extension:o.value.ext}):console.warn(`[exportToExcelAdvanced] Cannot embed image "${e[r]}" (CORS/network error or unsupported format — raw URL written as fallback):`,o.reason)}),n}async function Sg(e,t,n={}){const{fileName:o="export.xlsx",sheets:r,columnStyles:i={},headerFillColor:l="#f1f5f9",headerTextColor:d="#334155",headerFontSize:a=10,bodyFontSize:f=10,aggregationResult:p=null,aggregationModel:w=null,selectedRows:b,getRowId:C,groupedRows:g,groupHeaderFillColor:u="#e8eaf6",groupSubtotalFillColor:h="#f0f4ff"}=n,x=(await import("exceljs")).default,m=new x.Workbook;m.creator="OpenGridX",m.created=new Date;const y=t,E=_t(y),v=e,M=ft(b)?kl(v,b,C):[],N=r??[{name:"Data",rows:"all",includeHeaders:!0,includeSummary:!1}],P=new Set,z=new Map,F=(S,j)=>{const q=j[S.field],Z=w?.[S.field];if(q==null)return{value:null};const W=Br(S,Z,q);return typeof W=="number"?Number.isFinite(W)?Wr(Z)?{value:W,numFmt:Ql}:{value:W,numFmt:ts(S,i[S.field],W)}:{value:null}:W instanceof Date?{value:_n(W)}:{value:Jo(S,Z,q,j)}};for(const S of N){if("type"in S&&S.type==="summary"){if(!p||!w)continue;const G=m.addWorksheet(Zo(S.name??"Summary",P));G.addRow(["Summary / Aggregation Totals"]),G.getRow(1).font={bold:!0,size:a+2,color:{argb:Be(d)}},G.addRow([]),G.addRow(["Column","Function","Value"]).eachCell(D=>{D.fill={type:"pattern",pattern:"solid",fgColor:{argb:Be(l)}},D.font={bold:!0,size:a,color:{argb:Be(d)}},D.border=os()}),E.forEach(D=>{const L=w[D.field];if(L==null||p[D.field]==null)return;const{value:A,numFmt:V}=F(D,p),B=G.addRow([D.headerName??D.field,L.toUpperCase(),A]).getCell(3),k=V??es(D,i[D.field]);k&&(B.numFmt=k),B.alignment={horizontal:"right"},B.font={bold:!0,size:f}}),G.getColumn(1).width=20,G.getColumn(2).width=12,G.getColumn(3).width=18;continue}const j=S,{name:q="Data",rows:Z="all",includeHeaders:W=!0,includeSummary:U=!1,autoFilter:Q=!0,frozenHeader:ie=!0,alternateRowColor:oe="#f8fafc"}=j,ge=Z==="all"&&!!(g&&g.length>0),le=Z==="selected"?M:ge?g.flatMap(G=>G.type==="leaf"&&G.row?[G.row]:[]):v,ue=E.filter(G=>i[G.field]?.embedImage);if(ue.length>0){const G=[],I=new Set;if(le.forEach(D=>{ue.forEach(L=>{const A=ns(D,L);A&&!z.has(A)&&!I.has(A)&&(G.push(A),I.add(A))})}),G.length>0){const D=await vg(G);for(const[L,{buffer:A,extension:V}]of D){const R=m.addImage({buffer:A,extension:V});z.set(L,R)}}}const te=m.addWorksheet(Zo(q,P));te.columns=E.map(G=>({key:G.field,width:Cg(G,i[G.field]?.width),style:{numFmt:es(G,i[G.field])}}));const ae=(G,I)=>{E.forEach((D,L)=>I(G.getCell(L+1),D,L+1))};if(W){const G=E.map(D=>D.headerName??D.field),I=te.addRow(G);I.height=20,ae(I,(D,L)=>{D.fill={type:"pattern",pattern:"solid",fgColor:{argb:Be(l)}},D.font={bold:!0,size:a,color:{argb:Be(d)}},D.alignment={horizontal:i[L.field]?.alignment??(L.type==="number"?"right":"left"),vertical:"middle"},D.border=os()}),Q&&(te.autoFilter={from:{row:1,column:1},to:{row:1,column:E.length}}),ie?te.views=[{state:"frozen",ySplit:1,showGridLines:!1}]:te.views=[{showGridLines:!1}]}let Y=W?1:0;const re=(G,I,D)=>{const L=E.map(R=>i[R.field]?.embedImage?"":wg(G,R)),A=te.addRow(L);A.font={size:f},D>0&&(A.outlineLevel=D);const V=!!oe&&I%2===1;if(ae(A,(R,B,k)=>{const H=ts(B,i[B.field],L[k-1]);H&&(R.numFmt=H),V&&oe&&(R.fill={type:"pattern",pattern:"solid",fgColor:{argb:Be(oe)}}),R.alignment={horizontal:i[B.field]?.alignment??(B.type==="number"?"right":"left"),vertical:"middle"},R.border={bottom:{style:"thin",color:{argb:"FFf1f5f9"}}}}),ue.length>0){const R=ue.reduce((H,X)=>Math.max(H,i[X.field]?.imageHeight??40),0),B=Math.ceil(R/1.333),k=B*1.333;A.height=B,ue.forEach(H=>{const X=E.indexOf(H),ee=ns(G,H),ce=ee?z.get(ee):void 0;if(ce===void 0){A.getCell(X+1).value=ee??"";return}const pe=i[H.field],me=pe?.imageWidth??40,ye=pe?.imageHeight??40,Ce=(te.getColumn(X+1).width??8)*7+5,Ee=Math.max(0,Ce-me)/2,se=Math.max(0,k-ye)/2;te.addImage(ce,{tl:{col:X,row:Y,nativeColOff:Math.floor(Ee*9525),nativeRowOff:Math.floor(se*9525)},ext:{width:me,height:ye},editAs:"oneCell"})})}else A.height=16;Y++},K=G=>Rt(G,y),J=(G,I,D,L,A)=>{const V=E.map((B,k)=>k===0&&I[B.field]==null?{value:G}:F(B,I)),R=te.addRow(V.map(B=>B.value));R.height=18,L>0&&(R.outlineLevel=L),R.font={bold:A,italic:!A,size:f,color:{argb:Be(d)}},ae(R,(B,k,H)=>{const X=V[H-1].numFmt;X&&(B.numFmt=X),B.fill={type:"pattern",pattern:"solid",fgColor:{argb:Be(D)}},B.alignment={horizontal:H===1?"left":k.type==="number"?"right":"left",vertical:"middle"},B.border=rs()}),Y++};let ne=!1;if(ge){let G=0;g.forEach(I=>{if(I.type==="group-header"){const D=te.addRow([K(I)]);D.height=18,I.depth>0&&(D.outlineLevel=I.depth),D.font={bold:!0,size:f,color:{argb:Be(d)}};for(let L=1;L<=E.length;L++)D.getCell(L).fill={type:"pattern",pattern:"solid",fgColor:{argb:Be(u)}};D.getCell(1).alignment={horizontal:"left",vertical:"middle",indent:I.depth},Y++,G=0}else I.type==="leaf"&&I.row?re(I.row,G++,I.depth):I.type==="group-subtotal"&&I.aggregatedValues?J("Subtotal",I.aggregatedValues,h,I.depth,!1):I.type==="grand-total"&&I.aggregatedValues&&(J("Grand Total",I.aggregatedValues,l,0,!0),ne=!0)}),te.properties.outlineProperties={summaryBelow:!0,summaryRight:!1}}else le.forEach((G,I)=>re(G,I,0));const de=Kt(le,Z==="selected",y,p,w);if(U&&!ne&&de&&w){const G=E.map(A=>{const V=w[A.field];return V?V.toUpperCase():""}),I=te.addRow(G);I.height=16,I.font={size:f-1,italic:!0,color:{argb:"FF94a3b8"}},ae(I,A=>{A.alignment={horizontal:"right",vertical:"middle"},A.border={top:{style:"thin",color:{argb:"FFcbd5e1"}}}});const D=E.map(A=>w[A.field]==null?{value:null}:F(A,de)),L=te.addRow(D.map(A=>A.value));L.height=18,L.font={bold:!0,size:f,color:{argb:Be(d)}},ae(L,(A,V,R)=>{const B=D[R-1].numFmt;B&&(A.numFmt=B),A.fill={type:"pattern",pattern:"solid",fgColor:{argb:Be(l)}},A.alignment={horizontal:"right",vertical:"middle"},A.border=rs()})}}const $=await m.xlsx.writeBuffer(),_=new Blob([$],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),T=URL.createObjectURL(_),O=document.createElement("a");O.href=T,O.download=o.endsWith(".xlsx")?o:`${o}.xlsx`,document.body.appendChild(O),O.click(),document.body.removeChild(O),URL.revokeObjectURL(T)}function Be(e){const t=e.replace("#","");return t.length===3?"FF"+t.split("").map(n=>n+n).join(""):t.length===6?"FF"+t:"FF"+t.padEnd(6,"0")}function os(){return{bottom:{style:"medium",color:{argb:"FFcbd5e1"}}}}function rs(){return{top:{style:"medium",color:{argb:"FFcbd5e1"}}}}function _g(e,t,n,o){return s.useMemo(()=>o?ii(e,t,n):To,[e,t,n,o])}const is={"--ogx-grid-row-selected-background":"var(--ogx-color-primary-light)","--ogx-grid-row-selected-hover-background":"color-mix(in srgb, var(--ogx-color-primary) 14%, var(--ogx-color-primary-light))","--ogx-grid-cell-focus-border":"var(--ogx-color-primary)","--ogx-range-background":"color-mix(in srgb, var(--ogx-color-primary) 12%, transparent)","--ogx-range-border":"var(--ogx-color-primary)","--ogx-toolbar-btn-primary-bg":"var(--ogx-color-primary)","--ogx-toolbar-btn-primary-hover":"var(--ogx-color-primary-dark)","--ogx-toolbar-input-focus-border":"var(--ogx-color-primary)","--ogx-toolbar-input-focus-shadow":"0 0 0 3px color-mix(in srgb, var(--ogx-color-primary) 12%, transparent)","--ogx-toolbar-chip-active-bg":"color-mix(in srgb, var(--ogx-color-primary) 12%, transparent)","--ogx-toolbar-chip-active-text":"var(--ogx-color-primary-dark)","--ogx-overlay-item-selected-bg":"color-mix(in srgb, var(--ogx-color-primary) 8%, transparent)","--ogx-overlay-item-selected-text":"var(--ogx-color-primary-dark)"},ls={"--ogx-color-primary":"#3b82f6","--ogx-color-primary-dark":"#2563eb","--ogx-color-primary-light":"#eff6ff","--ogx-color-primary-focus":"rgba(59, 130, 246, 0.5)","--ogx-color-secondary":"#8b5cf6","--ogx-color-secondary-dark":"#7c3aed","--ogx-color-secondary-light":"#f5f3ff","--ogx-color-white":"#ffffff","--ogx-color-black":"#0f172a","--ogx-color-gray-50":"#f8fafc","--ogx-color-gray-100":"#f1f5f9","--ogx-color-gray-200":"#e2e8f0","--ogx-color-gray-300":"#cbd5e1","--ogx-color-gray-400":"#94a3b8","--ogx-color-gray-500":"#64748b","--ogx-color-gray-600":"#475569","--ogx-color-gray-700":"#334155","--ogx-color-gray-800":"#1e293b","--ogx-color-gray-900":"#0f172a","--ogx-border-color":"#e2e8f0","--ogx-border-color-hover":"#cbd5e1","--ogx-shadow-sm":"0 1px 2px 0 rgba(0, 0, 0, 0.05)","--ogx-shadow-md":"0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03)","--ogx-shadow-lg":"0 10px 15px -3px rgba(0, 0, 0, 0.05), 0 4px 6px -2px rgba(0, 0, 0, 0.02)","--ogx-grid-background":"#ffffff","--ogx-grid-border-color":"#e2e8f0","--ogx-grid-header-background":"#f8fafc","--ogx-grid-header-text":"#334155","--ogx-grid-header-hover-background":"#f1f5f9","--ogx-grid-header-sorted-background":"#f8fafc","--ogx-grid-row-text":"#1e293b","--ogx-grid-row-hover-background":"#f8fafc","--ogx-grid-row-alternate-background":"transparent","--ogx-checkbox-bg":"#ffffff","--ogx-checkbox-border":"#94a3b8","--ogx-grid-pinned-left-shadow":"4px 0 24px -4px rgba(0, 0, 0, 0.05)","--ogx-grid-pinned-right-shadow":"-4px 0 24px -4px rgba(0, 0, 0, 0.05)",...{"--ogx-toolbar-background":"var(--ogx-grid-header-background)","--ogx-toolbar-text":"var(--ogx-grid-header-text)","--ogx-toolbar-border":"var(--ogx-grid-border-color)","--ogx-toolbar-btn-bg":"transparent","--ogx-toolbar-btn-hover":"var(--ogx-grid-header-hover-background)","--ogx-toolbar-btn-text":"var(--ogx-grid-header-text)","--ogx-toolbar-input-bg":"var(--ogx-grid-background)","--ogx-toolbar-input-text":"var(--ogx-grid-row-text)","--ogx-toolbar-chip-bg":"transparent","--ogx-toolbar-chip-text":"var(--ogx-grid-row-text)"},"--ogx-toolbar-btn-primary-text":"#ffffff","--ogx-toolbar-btn-danger-bg":"rgba(239, 68, 68, 0.08)","--ogx-toolbar-btn-danger-hover":"rgba(239, 68, 68, 0.15)","--ogx-toolbar-btn-danger-text":"#ef4444","--ogx-toolbar-input-border":"#cbd5e1","--ogx-overlay-background":"#ffffff","--ogx-overlay-text":"#1e293b","--ogx-overlay-border":"#e2e8f0","--ogx-overlay-shadow":"0 4px 6px -1px rgba(0,0,0,0.08), 0 2px 4px -1px rgba(0,0,0,0.06), 0 0 0 1px rgba(0,0,0,0.06)","--ogx-overlay-item-hover-bg":"#f8fafc","--ogx-overlay-item-hover-text":"#0f172a","--ogx-overlay-item-danger-bg":"rgba(239, 68, 68, 0.08)","--ogx-overlay-item-danger-text":"#ef4444","--ogx-scrollbar-thumb":"#cbd5e1","--ogx-scrollbar-track":"transparent","--ogx-scrollbar-size":"8px","--ogx-skeleton-base":"#f1f5f9","--ogx-skeleton-highlight":"#ffffff",...is},kg={...ls,"--ogx-color-primary":"#60a5fa","--ogx-color-primary-dark":"#3b82f6","--ogx-color-primary-light":"#1e3a5f","--ogx-color-primary-focus":"rgba(96, 165, 250, 0.4)","--ogx-color-white":"#0f172a","--ogx-color-black":"#f8fafc","--ogx-color-gray-50":"#1e293b","--ogx-color-gray-100":"#334155","--ogx-color-gray-200":"#475569","--ogx-color-gray-300":"#64748b","--ogx-color-gray-400":"#94a3b8","--ogx-color-gray-500":"#cbd5e1","--ogx-color-gray-600":"#e2e8f0","--ogx-color-gray-700":"#e2e8f0","--ogx-color-gray-800":"#f1f5f9","--ogx-color-gray-900":"#f8fafc","--ogx-border-color":"#334155","--ogx-border-color-hover":"#475569","--ogx-shadow-sm":"0 1px 2px 0 rgba(0, 0, 0, 0.3)","--ogx-shadow-md":"0 4px 6px -1px rgba(0, 0, 0, 0.3)","--ogx-shadow-lg":"0 10px 15px -3px rgba(0, 0, 0, 0.3)","--ogx-grid-background":"#0f172a","--ogx-grid-border-color":"#334155","--ogx-grid-header-background":"#1e293b","--ogx-grid-header-text":"#e2e8f0","--ogx-grid-header-hover-background":"#334155","--ogx-grid-header-sorted-background":"#1e3a5f","--ogx-grid-row-text":"#cbd5e1","--ogx-grid-row-hover-background":"#1e293b","--ogx-grid-row-alternate-background":"#162032","--ogx-checkbox-bg":"#1e293b","--ogx-checkbox-border":"#64748b","--ogx-grid-pinned-left-shadow":"4px 0 24px -4px rgba(0, 0, 0, 0.3)","--ogx-grid-pinned-right-shadow":"-4px 0 24px -4px rgba(0, 0, 0, 0.3)","--ogx-toolbar-btn-danger-bg":"rgba(239, 68, 68, 0.15)","--ogx-toolbar-btn-danger-hover":"rgba(239, 68, 68, 0.25)","--ogx-toolbar-btn-danger-text":"#fca5a5","--ogx-toolbar-input-border":"#334155","--ogx-overlay-background":"#1e293b","--ogx-overlay-text":"#cbd5e1","--ogx-overlay-border":"#334155","--ogx-overlay-shadow":"0 4px 6px -1px rgba(0,0,0,0.4), 0 2px 4px -1px rgba(0,0,0,0.3), 0 0 0 1px rgba(0,0,0,0.2)","--ogx-overlay-item-hover-bg":"#334155","--ogx-overlay-item-hover-text":"#f1f5f9","--ogx-overlay-item-danger-bg":"rgba(239, 68, 68, 0.15)","--ogx-overlay-item-danger-text":"#fca5a5","--ogx-scrollbar-thumb":"#475569","--ogx-skeleton-base":"#1e293b","--ogx-skeleton-highlight":"#334155",...is,"--ogx-toolbar-chip-active-text":"var(--ogx-color-primary)","--ogx-overlay-item-selected-text":"var(--ogx-color-primary)"},Eg=[50,100,200,300,400,500,600,700,800,900];function Mg(e){const t={};function n(o,r){r!==void 0&&(t[o]=r)}if(e.colors){const o=e.colors;if(n("--ogx-color-primary",o.primary),n("--ogx-color-primary-dark",o.primaryDark),n("--ogx-color-primary-light",o.primaryLight),n("--ogx-color-primary-focus",o.primaryFocus),n("--ogx-color-secondary",o.secondary),n("--ogx-color-secondary-dark",o.secondaryDark),n("--ogx-color-secondary-light",o.secondaryLight),n("--ogx-color-success",o.success),n("--ogx-color-warning",o.warning),n("--ogx-color-error",o.error),n("--ogx-color-info",o.info),n("--ogx-color-white",o.white),n("--ogx-color-black",o.black),o.gray)for(const r of Eg)n(`--ogx-color-gray-${r}`,o.gray[r])}if(e.typography){const o=e.typography;n("--ogx-font-family",o.fontFamily),n("--ogx-font-family-mono",o.fontFamilyMono),n("--ogx-font-size-xs",o.fontSizeXs),n("--ogx-font-size-sm",o.fontSizeSm),n("--ogx-font-size-md",o.fontSizeMd),n("--ogx-font-size-lg",o.fontSizeLg),n("--ogx-font-size-xl",o.fontSizeXl)}if(e.spacing){const o=e.spacing;n("--ogx-spacing-xs",o.xs),n("--ogx-spacing-sm",o.sm),n("--ogx-spacing-md",o.md),n("--ogx-spacing-lg",o.lg),n("--ogx-spacing-xl",o.xl),n("--ogx-spacing-xxl",o.xxl)}if(e.borders){const o=e.borders;n("--ogx-border-width-thin",o.widthThin),n("--ogx-border-width-medium",o.widthMedium),n("--ogx-border-width-thick",o.widthThick),n("--ogx-border-radius-sm",o.radiusSm),n("--ogx-border-radius-md",o.radiusMd),n("--ogx-border-radius-lg",o.radiusLg),n("--ogx-border-radius-xl",o.radiusXl),n("--ogx-border-color",o.color),n("--ogx-border-color-hover",o.colorHover)}if(e.shadows){const o=e.shadows;n("--ogx-shadow-sm",o.sm),n("--ogx-shadow-md",o.md),n("--ogx-shadow-lg",o.lg),n("--ogx-shadow-xl",o.xl)}if(e.grid){const o=e.grid;n("--ogx-grid-row-height-compact",o.rowHeightCompact),n("--ogx-grid-row-height-standard",o.rowHeightStandard),n("--ogx-row-height",o.rowHeightStandard),n("--ogx-grid-row-height-comfortable",o.rowHeightComfortable),n("--ogx-grid-header-height",o.headerHeight),n("--ogx-header-height",o.headerHeight),n("--ogx-grid-cell-padding-x",o.cellPaddingX),n("--ogx-grid-cell-padding-y",o.cellPaddingY),n("--ogx-grid-cell-font-size",o.cellFontSize),n("--ogx-grid-header-font-size",o.headerFontSize),n("--ogx-grid-background",o.background),n("--ogx-grid-border-color",o.borderColor),n("--ogx-grid-header-background",o.headerBackground),n("--ogx-grid-header-text",o.headerText),n("--ogx-grid-header-hover-background",o.headerHoverBackground),n("--ogx-grid-header-sorted-background",o.headerSortedBackground),n("--ogx-grid-row-text",o.rowText),n("--ogx-grid-row-hover-background",o.rowHoverBackground),n("--ogx-grid-row-alternate-background",o.rowAlternateBackground),n("--ogx-grid-row-selected-background",o.rowSelectedBackground),n("--ogx-grid-row-selected-hover-background",o.rowSelectedHoverBackground),n("--ogx-grid-cell-focus-border",o.cellFocusBorder),n("--ogx-range-background",o.rangeBackground),n("--ogx-range-border",o.rangeBorder),n("--ogx-grid-pinned-left-shadow",o.pinnedLeftShadow),n("--ogx-grid-pinned-right-shadow",o.pinnedRightShadow),n("--ogx-checkbox-bg",o.checkboxBg),n("--ogx-checkbox-border",o.checkboxBorder)}if(e.transitions){const o=e.transitions;n("--ogx-transition-duration-fast",o.durationFast),n("--ogx-transition-duration-normal",o.durationNormal),n("--ogx-transition-duration-slow",o.durationSlow),n("--ogx-transition-easing",o.easing)}if(e.toolbar){const o=e.toolbar;n("--ogx-toolbar-background",o.background),n("--ogx-toolbar-text",o.text),n("--ogx-toolbar-border",o.border),n("--ogx-toolbar-btn-bg",o.buttonBackground),n("--ogx-toolbar-btn-hover",o.buttonHoverBackground),n("--ogx-toolbar-btn-text",o.buttonText),n("--ogx-toolbar-btn-primary-bg",o.buttonPrimaryBackground),n("--ogx-toolbar-btn-primary-hover",o.buttonPrimaryHoverBackground),n("--ogx-toolbar-btn-primary-text",o.buttonPrimaryText),n("--ogx-toolbar-btn-danger-bg",o.buttonDangerBackground),n("--ogx-toolbar-btn-danger-hover",o.buttonDangerHoverBackground),n("--ogx-toolbar-btn-danger-text",o.buttonDangerText),n("--ogx-toolbar-input-bg",o.inputBackground),n("--ogx-toolbar-input-text",o.inputText),n("--ogx-toolbar-input-border",o.inputBorder),n("--ogx-toolbar-input-focus-border",o.inputFocusBorder),n("--ogx-toolbar-input-focus-shadow",o.inputFocusShadow),n("--ogx-toolbar-chip-bg",o.chipBackground),n("--ogx-toolbar-chip-text",o.chipText),n("--ogx-toolbar-chip-active-bg",o.chipActiveBackground),n("--ogx-toolbar-chip-active-text",o.chipActiveText)}if(e.overlays){const o=e.overlays;n("--ogx-overlay-background",o.background),n("--ogx-overlay-text",o.text),n("--ogx-overlay-border",o.border),n("--ogx-overlay-shadow",o.shadow),n("--ogx-overlay-item-hover-bg",o.itemHoverBackground),n("--ogx-overlay-item-hover-text",o.itemHoverText),n("--ogx-overlay-item-selected-bg",o.itemSelectedBackground),n("--ogx-overlay-item-selected-text",o.itemSelectedText),n("--ogx-overlay-item-danger-bg",o.itemDangerBackground),n("--ogx-overlay-item-danger-text",o.itemDangerText)}if(e.scrollbar){const o=e.scrollbar;n("--ogx-scrollbar-thumb",o.thumbColor),n("--ogx-scrollbar-track",o.trackColor),n("--ogx-scrollbar-size",o.size)}if(e.skeleton){const o=e.skeleton;n("--ogx-skeleton-base",o.baseColor),n("--ogx-skeleton-highlight",o.highlightColor)}return t}function Ng({theme:e,children:t,className:n,style:o}){const r=s.useMemo(()=>({...e.mode==="dark"?kg:ls,...Mg(e)}),[e]);return c.jsx(xi.Provider,{value:e,children:c.jsx("div",{className:`ogx-theme-provider ${n||""}`.trim(),style:{...o,...r},children:t})})}const Ig={mode:"dark",colors:{primary:"#60a5fa",primaryDark:"#3b82f6",primaryLight:"#1e3a5f",primaryFocus:"rgba(96, 165, 250, 0.4)"},grid:{background:"#0f172a",headerBackground:"#1e293b",headerText:"#e2e8f0",headerHoverBackground:"#334155",headerSortedBackground:"#1e3a5f",rowText:"#cbd5e1",borderColor:"#334155",rowHoverBackground:"#1e293b",rowAlternateBackground:"#162032",rowSelectedBackground:"#1e3a5f",rowSelectedHoverBackground:"#1d4ed8",cellFocusBorder:"#60a5fa",rangeBackground:"rgba(96, 165, 250, 0.18)",rangeBorder:"#60a5fa",checkboxBg:"#1e293b",checkboxBorder:"#64748b"},borders:{color:"#334155",colorHover:"#475569"},shadows:{sm:"0 1px 2px 0 rgba(0, 0, 0, 0.3)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.3)"},toolbar:{background:"#1e293b",text:"#cbd5e1",border:"#334155",buttonBackground:"transparent",buttonHoverBackground:"#334155",buttonText:"#e2e8f0",buttonPrimaryBackground:"#3b82f6",buttonPrimaryHoverBackground:"#2563eb",buttonPrimaryText:"#ffffff",buttonDangerBackground:"rgba(239, 68, 68, 0.15)",buttonDangerHoverBackground:"rgba(239, 68, 68, 0.25)",buttonDangerText:"#fca5a5",inputBackground:"#0f172a",inputText:"#f8fafc",inputBorder:"#334155",inputFocusBorder:"#60a5fa",inputFocusShadow:"0 0 0 3px rgba(96, 165, 250, 0.2)",chipBackground:"#1e293b",chipText:"#94a3b8",chipActiveBackground:"rgba(96, 165, 250, 0.2)",chipActiveText:"#60a5fa"},overlays:{background:"#1e293b",text:"#f8fafc",border:"#334155",shadow:"0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -2px rgba(0, 0, 0, 0.3)",itemHoverBackground:"#334155",itemHoverText:"#ffffff",itemSelectedBackground:"rgba(96, 165, 250, 0.15)",itemSelectedText:"#60a5fa",itemDangerBackground:"rgba(239, 68, 68, 0.15)",itemDangerText:"#fca5a5"},scrollbar:{thumbColor:"rgba(148, 163, 184, 0.2)",trackColor:"transparent"},skeleton:{baseColor:"#1e293b",highlightColor:"#334155"}},Pg={colors:{primary:"#e11d48",primaryDark:"#be123c",primaryLight:"#fff1f2",primaryFocus:"rgba(225, 29, 72, 0.4)"},grid:{headerBackground:"#fff1f2",headerHoverBackground:"#ffe4e6",headerSortedBackground:"#fecdd3",rowAlternateBackground:"#fff8f8",rowSelectedBackground:"#ffe4e6",rowSelectedHoverBackground:"#fecdd3",cellFocusBorder:"#e11d48",rangeBackground:"rgba(225, 29, 72, 0.10)",rangeBorder:"#e11d48"}},Lg={colors:{primary:"#059669",primaryDark:"#047857",primaryLight:"#ecfdf5",primaryFocus:"rgba(5, 150, 105, 0.4)"},grid:{headerBackground:"#ecfdf5",headerHoverBackground:"#d1fae5",headerSortedBackground:"#a7f3d0",rowAlternateBackground:"#f6fdf9",rowSelectedBackground:"#d1fae5",rowSelectedHoverBackground:"#a7f3d0",cellFocusBorder:"#059669",rangeBackground:"rgba(5, 150, 105, 0.12)",rangeBorder:"#059669"}},Tg={colors:{primary:"#d97706",primaryDark:"#b45309",primaryLight:"#fffbeb",primaryFocus:"rgba(217, 119, 6, 0.4)"},grid:{headerBackground:"#fffbeb",headerHoverBackground:"#fef3c7",headerSortedBackground:"#fde68a",rowAlternateBackground:"#fffdf5",rowSelectedBackground:"#fef3c7",rowSelectedHoverBackground:"#fde68a",cellFocusBorder:"#d97706",rangeBackground:"rgba(217, 119, 6, 0.12)",rangeBorder:"#d97706"}},Fg={grid:{rowHeightCompact:"28px",rowHeightStandard:"36px",rowHeightComfortable:"48px",headerHeight:"40px",cellPaddingX:"8px",cellPaddingY:"4px",cellFontSize:"12px",headerFontSize:"12px"},typography:{fontSizeSm:"0.8rem",fontSizeMd:"0.875rem"}};function Ag(){if(!(typeof window>"u"))try{return window.localStorage}catch{return}}function ss(e,t){try{const n=t.getItem(e);return n?JSON.parse(n):void 0}catch{return}}function Dg(e,t,n,o){try{const r=n?Object.fromEntries(Object.entries(t).filter(([i])=>n.includes(i))):t;o.setItem(e,JSON.stringify(r))}catch{}}function Og(e){const t=typeof e=="string"?{key:e}:e,{key:n,debounceMs:o=300,include:r,storage:i}=t,[l]=s.useState(Ag),d=i??l,a=s.useRef(r),f=s.useRef(d);s.useLayoutEffect(()=>{a.current=r,f.current=d});const[p,w]=s.useState(()=>({key:n,state:d?ss(n,d):void 0}));let b=p.state;p.key!==n&&(b=d?ss(n,d):void 0,w({key:n,state:b}));const C=s.useRef(null),g=s.useRef(null),u=s.useCallback(()=>{C.current&&(clearTimeout(C.current),C.current=null);const m=g.current;g.current=null;const y=f.current;m&&y&&Dg(m.key,m.state,a.current,y)},[]),h=s.useCallback(m=>{g.current&&g.current.key!==n&&u(),g.current={key:n,state:m},C.current&&clearTimeout(C.current),C.current=setTimeout(u,o)},[n,u,o]);s.useEffect(()=>u,[u]);const x=s.useCallback(()=>{C.current&&(clearTimeout(C.current),C.current=null),g.current=null;const m=f.current;if(m)try{m.removeItem(n)}catch{}},[n]);return s.useMemo(()=>({initialState:b,onStateChange:h,clearState:x}),[b,h,x])}xe.Button=hn,xe.Cell=yl,xe.CellSelectionStats=Fl,xe.Checkbox=ct,xe.ColumnVisibilityPanel=Yo,xe.DataGrid=bf,xe.DataGridThemeProvider=Ng,xe.FilterPanel=Wl,xe.GridToolbar=Gf,xe.GridTooltip=vn,xe.Header=Hi,xe.Input=ut,xe.Pagination=jo,xe.Row=Kn,xe.Skeleton=Cf,xe.amberTheme=Tg,xe.compactTheme=Fg,xe.darkTheme=Ig,xe.emeraldTheme=Lg,xe.exportToCsv=ng,xe.exportToExcel=ig,xe.exportToExcelAdvanced=Sg,xe.exportToJson=lg,xe.exportToPdf=Qf,xe.formatAggregationValue=an,xe.printGrid=dg,xe.roseTheme=Pg,xe.useAggregation=xl,xe.useGridApiRef=Wf,xe.useGridStateStorage=Og,xe.usePivot=_g,Object.defineProperty(xe,Symbol.toStringTag,{value:"Module"})}));
46
+ </style></head><body>`;r&&(w+=`<h1>${Te(r)}</h1>`),w+="<table><thead><tr>",g.forEach(f=>{w+=`<th>${Te(f.headerName||f.field)}</th>`}),w+="</tr></thead><tbody>";const y=(f,h,x="",b=!1)=>{const{text:v}=kn(f,h),E=h.type==="image"?Jp(v):null;if(E!==null){const k=`<img src="${Te(E)}" alt="${Te(h.headerName||h.field)}" style="max-height:40px;border-radius:4px;">`;return b?`<td><div style="display:flex;justify-content:center;">${k}</div></td>`:`<td>${k}</td>`}return`<td>${x}${Te(v)}</td>`};if(vn(u,i))u.forEach(f=>{const h="&nbsp;".repeat(f.depth*4);if(f.type==="group-header")w+=`<tr class="group-header"><td colspan="${g.length}">${h}${Te(Qt(f,t))}</td></tr>`;else if(f.type==="leaf"&&f.row){const x=f.row;w+="<tr>",g.forEach((b,v)=>{w+=y(x,b,v===0?h:"")}),w+="</tr>"}else if((f.type==="group-subtotal"||f.type==="grand-total")&&f.aggregatedValues){const x=f.type==="grand-total",b=tn(g,f.aggregatedValues,m);w+=`<tr class="${x?"grand-total":"group-subtotal"}">`,g.forEach((v,E)=>{if(E===0){w+=`<td>${x?"":h}${Te(Jt(x?"Grand Total":"Subtotal",b[0]))}</td>`;return}w+=b[E]?`<td style="text-align:right;">${Te(b[E])}</td>`:"<td></td>"}),w+="</tr>"}});else{const f=yn(e,i,l);if(f.length===0){o.document.body.innerHTML="<h3>No rows to export</h3>";return}f.forEach(x=>{w+="<tr>",g.forEach(b=>{w+=y(x,b,"",!0)}),w+="</tr>"});const h=Yt(f,yt(i),t,d,a);h&&(w+='<tfoot><tr style="font-size:11px;color:#666;background-color:#f5f5f5;">',g.forEach(x=>{w+=m[x.field]?`<td style="text-align:right;font-weight:bold;">${Te(m[x.field].toUpperCase())}</td>`:"<td></td>"}),w+='</tr><tr style="font-weight:bold;background-color:#f5f5f5;">',tn(g,h,m).forEach(x=>{w+=x?`<td style="text-align:right;">${Te(x)}</td>`:"<td></td>"}),w+="</tr></tfoot>")}w+="</tbody></table></body></html>",o.document.open(),o.document.write(w),o.document.close(),o.document.title=r||"Print Preview",o.focus();let p=!1;o.onload=()=>{p||(p=!0,o.print(),setTimeout(()=>{o.close()},100))},setTimeout(()=>{!p&&o&&!o.closed&&(p=!0,o.print(),setTimeout(()=>{o.closed||o.close()},100))},500)}catch(r){if(console.error("Print generation failed:",r),o&&!o.closed){const i=r instanceof Error?r.message:String(r);o.document.body.innerHTML=`<div style="color: red; padding: 20px;"><h3>Error Generating Print Preview</h3><p>${Te(i)}</p></div>`}}}function Ir(e,t,n){const o=new Blob([e],{type:n}),r=URL.createObjectURL(o),i=document.createElement("a");i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}function Qp(e,t){return e.type==="number"?"number":e.type==="boolean"?"boolean":e.type==="date"?"date":typeof t=="number"?"number":typeof t=="boolean"?"boolean":t instanceof Date?"date":"string"}function En(e){return Number.isNaN(e.getTime())?null:new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()))}const eh=/^(\d{4})-(\d{2})-(\d{2})$/,th=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?$/i,nh=/^[-+]?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?$/i;function oh(e){if(e instanceof Date)return En(e);if(typeof e=="number")return Number.isFinite(e)?En(new Date(e)):null;if(typeof e!="string")return;const t=e.trim(),n=eh.exec(t);if(n){const[o,r,i]=[Number(n[1]),Number(n[2]),Number(n[3])],l=new Date(Date.UTC(o,r-1,i));return l.getUTCMonth()===r-1&&l.getUTCDate()===i?l:void 0}if(th.test(t)){const o=new Date(t.replace(" ","T"));return Number.isNaN(o.getTime())?void 0:En(o)}}function rh(e,t){if(t==null||t==="")return null;if(e==="number"){if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="bigint"){const n=Number(t);return Number.isSafeInteger(n)?n:void 0}if(typeof t=="string"&&nh.test(t.trim())){const n=Number(t.trim());return Number.isFinite(n)?n:void 0}return}if(e==="boolean"){if(typeof t=="boolean")return t;if(typeof t=="string"){const n=t.trim().toLowerCase();if(n==="true")return!0;if(n==="false")return!1}return}return oh(t)}function Bs(e){if(e==null)return null;if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:null;if(e instanceof Date)return En(e);if(typeof e=="object")try{return JSON.stringify(e)??String(e)}catch{return String(e)}return String(e)}function ih(e,t){const n=Cn(e,t),o=Qp(t,n);if(o!=="string"){const r=rh(o,n);if(r!=null)return r;if(!t.valueFormatter)return r===null?null:Bs(n)}return t.valueFormatter?_n(e,t,n):Bs(n)}const Ws="#,##0",lh="#,##0.##";function sh(e){return Number.isInteger(e)?Ws:lh}function Vs(e,t){if(t?.numFmt)return t.numFmt;if(e.type==="date")return"yyyy-mm-dd"}function zs(e,t,n){if(!(t?.numFmt||typeof n!="number"||e.type!=="number"))return sh(n)}function ah(e,t){if(t!=null)return t;const n=e.width??120;return Math.min(60,Math.max(8,(n-5)/7))}function ch(e){return e.length>=8&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?"png":e.length>=3&&e[0]===255&&e[1]===216&&e[2]===255?"jpeg":e.length>=6&&e[0]===71&&e[1]===73&&e[2]===70&&e[3]===56?"gif":null}function Ks(e,t){const n=Cn(e,t);return typeof n=="string"&&n?n:null}async function dh(e){const t=await Promise.allSettled(e.map(async o=>{let r;if(o.startsWith("data:")){const l=o.slice(o.indexOf(",")+1),d=atob(l);r=new Uint8Array(d.length);for(let a=0;a<d.length;a++)r[a]=d.charCodeAt(a)}else{const l=await fetch(o,{mode:"cors"});if(!l.ok)throw new Error(`HTTP ${l.status}`);r=new Uint8Array(await l.arrayBuffer())}const i=ch(r);if(!i)throw new Error("unsupported image format (only PNG, JPEG and GIF can be embedded)");return{url:o,buffer:r.slice().buffer,ext:i}})),n=new Map;return t.forEach((o,r)=>{o.status==="fulfilled"?n.set(o.value.url,{buffer:o.value.buffer,extension:o.value.ext}):console.warn(`[exportToExcelAdvanced] Cannot embed image "${e[r]}" (CORS/network error or unsupported format — raw URL written as fallback):`,o.reason)}),n}async function uh(e,t,n={}){const{fileName:o="export.xlsx",sheets:r,columnStyles:i={},headerFillColor:l="#f1f5f9",headerTextColor:d="#334155",headerFontSize:a=10,bodyFontSize:u=10,aggregationResult:g=null,aggregationModel:m=null,selectedRows:w,getRowId:y,groupedRows:p,groupHeaderFillColor:f="#e8eaf6",groupSubtotalFillColor:h="#f0f4ff"}=n,x=(await import("exceljs")).default,b=new x.Workbook;b.creator="OpenGridX",b.created=new Date;const v=t,E=Dt(v),k=e,N=yt(w)?is(k,w,y):[],M=r??[{name:"Data",rows:"all",includeHeaders:!0,includeSummary:!1}],S=new Set,D=new Map,I=(_,z)=>{const K=z[_.field],Q=m?.[_.field];if(K==null)return{value:null};const G=ui(_,Q,K);return typeof G=="number"?Number.isFinite(G)?di(Q)?{value:G,numFmt:Ws}:{value:G,numFmt:zs(_,i[_.field],G)}:{value:null}:G instanceof Date?{value:En(G)}:{value:vr(_,Q,K,z)}};for(const _ of M){if("type"in _&&_.type==="summary"){if(!g||!m)continue;const Z=b.addWorksheet(Cr(_.name??"Summary",S));Z.addRow(["Summary / Aggregation Totals"]),Z.getRow(1).font={bold:!0,size:a+2,color:{argb:Ke(d)}},Z.addRow([]),Z.addRow(["Column","Function","Value"]).eachCell(O=>{O.fill={type:"pattern",pattern:"solid",fgColor:{argb:Ke(l)}},O.font={bold:!0,size:a,color:{argb:Ke(d)}},O.border=js()}),E.forEach(O=>{const P=m[O.field];if(P==null||g[O.field]==null)return;const{value:T,numFmt:X}=I(O,g),ee=Z.addRow([O.headerName??O.field,P.toUpperCase(),T]).getCell(3),q=X??Vs(O,i[O.field]);q&&(ee.numFmt=q),ee.alignment={horizontal:"right"},ee.font={bold:!0,size:u}}),Z.getColumn(1).width=20,Z.getColumn(2).width=12,Z.getColumn(3).width=18;continue}const z=_,{name:K="Data",rows:Q="all",includeHeaders:G=!0,includeSummary:j=!1,autoFilter:H=!0,frozenHeader:ie=!0,alternateRowColor:re="#f8fafc"}=z,ue=Q==="all"&&!!(p&&p.length>0),ae=Q==="selected"?N:ue?p.flatMap(Z=>Z.type==="leaf"&&Z.row?[Z.row]:[]):k,R=E.filter(Z=>i[Z.field]?.embedImage);if(R.length>0){const Z=[],$=new Set;if(ae.forEach(O=>{R.forEach(P=>{const T=Ks(O,P);T&&!D.has(T)&&!$.has(T)&&(Z.push(T),$.add(T))})}),Z.length>0){const O=await dh(Z);for(const[P,{buffer:T,extension:X}]of O){const B=b.addImage({buffer:T,extension:X});D.set(P,B)}}}const te=b.addWorksheet(Cr(K,S));te.columns=E.map(Z=>({key:Z.field,width:ah(Z,i[Z.field]?.width),style:{numFmt:Vs(Z,i[Z.field])}}));const ce=(Z,$)=>{E.forEach((O,P)=>$(Z.getCell(P+1),O,P+1))};if(G){const Z=E.map(O=>O.headerName??O.field),$=te.addRow(Z);$.height=20,ce($,(O,P)=>{O.fill={type:"pattern",pattern:"solid",fgColor:{argb:Ke(l)}},O.font={bold:!0,size:a,color:{argb:Ke(d)}},O.alignment={horizontal:i[P.field]?.alignment??(P.type==="number"?"right":"left"),vertical:"middle"},O.border=js()}),H&&(te.autoFilter={from:{row:1,column:1},to:{row:1,column:E.length}}),ie?te.views=[{state:"frozen",ySplit:1,showGridLines:!1}]:te.views=[{showGridLines:!1}]}let W=G?1:0;const le=(Z,$,O)=>{const P=E.map(B=>i[B.field]?.embedImage?"":ih(Z,B)),T=te.addRow(P);T.font={size:u},O>0&&(T.outlineLevel=O);const X=!!re&&$%2===1;if(ce(T,(B,ee,q)=>{const Y=zs(ee,i[ee.field],P[q-1]);Y&&(B.numFmt=Y),X&&re&&(B.fill={type:"pattern",pattern:"solid",fgColor:{argb:Ke(re)}}),B.alignment={horizontal:i[ee.field]?.alignment??(ee.type==="number"?"right":"left"),vertical:"middle"},B.border={bottom:{style:"thin",color:{argb:"FFf1f5f9"}}}}),R.length>0){const B=R.reduce((Y,oe)=>Math.max(Y,i[oe.field]?.imageHeight??40),0),ee=Math.ceil(B/1.333),q=ee*1.333;T.height=ee,R.forEach(Y=>{const oe=E.indexOf(Y),me=Ks(Z,Y),U=me?D.get(me):void 0;if(U===void 0){T.getCell(oe+1).value=me??"";return}const se=i[Y.field],we=se?.imageWidth??40,pe=se?.imageHeight??40,ve=(te.getColumn(oe+1).width??8)*7+5,be=Math.max(0,ve-we)/2,de=Math.max(0,q-pe)/2;te.addImage(U,{tl:{col:oe,row:W,nativeColOff:Math.floor(be*9525),nativeRowOff:Math.floor(de*9525)},ext:{width:we,height:pe},editAs:"oneCell"})})}else T.height=16;W++},V=Z=>Qt(Z,v),J=(Z,$,O,P,T)=>{const X=E.map((ee,q)=>q===0&&$[ee.field]==null?{value:Z}:I(ee,$)),B=te.addRow(X.map(ee=>ee.value));B.height=18,P>0&&(B.outlineLevel=P),B.font={bold:T,italic:!T,size:u,color:{argb:Ke(d)}},ce(B,(ee,q,Y)=>{const oe=X[Y-1].numFmt;oe&&(ee.numFmt=oe),ee.fill={type:"pattern",pattern:"solid",fgColor:{argb:Ke(O)}},ee.alignment={horizontal:Y===1?"left":q.type==="number"?"right":"left",vertical:"middle"},ee.border=Us()}),W++};let ne=!1;if(ue){let Z=0;p.forEach($=>{if($.type==="group-header"){const O=te.addRow([V($)]);O.height=18,$.depth>0&&(O.outlineLevel=$.depth),O.font={bold:!0,size:u,color:{argb:Ke(d)}};for(let P=1;P<=E.length;P++)O.getCell(P).fill={type:"pattern",pattern:"solid",fgColor:{argb:Ke(f)}};O.getCell(1).alignment={horizontal:"left",vertical:"middle",indent:$.depth},W++,Z=0}else $.type==="leaf"&&$.row?le($.row,Z++,$.depth):$.type==="group-subtotal"&&$.aggregatedValues?J("Subtotal",$.aggregatedValues,h,$.depth,!1):$.type==="grand-total"&&$.aggregatedValues&&(J("Grand Total",$.aggregatedValues,l,0,!0),ne=!0)}),te.properties.outlineProperties={summaryBelow:!0,summaryRight:!1}}else ae.forEach((Z,$)=>le(Z,$,0));const fe=Yt(ae,Q==="selected",v,g,m);if(j&&!ne&&fe&&m){const Z=E.map(T=>{const X=m[T.field];return X?X.toUpperCase():""}),$=te.addRow(Z);$.height=16,$.font={size:u-1,italic:!0,color:{argb:"FF94a3b8"}},ce($,T=>{T.alignment={horizontal:"right",vertical:"middle"},T.border={top:{style:"thin",color:{argb:"FFcbd5e1"}}}});const O=E.map(T=>m[T.field]==null?{value:null}:I(T,fe)),P=te.addRow(O.map(T=>T.value));P.height=18,P.font={bold:!0,size:u,color:{argb:Ke(d)}},ce(P,(T,X,B)=>{const ee=O[B-1].numFmt;ee&&(T.numFmt=ee),T.fill={type:"pattern",pattern:"solid",fgColor:{argb:Ke(l)}},T.alignment={horizontal:"right",vertical:"middle"},T.border=Us()})}}const A=await b.xlsx.writeBuffer(),C=new Blob([A],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),L=URL.createObjectURL(C),F=document.createElement("a");F.href=L,F.download=o.endsWith(".xlsx")?o:`${o}.xlsx`,document.body.appendChild(F),F.click(),document.body.removeChild(F),URL.revokeObjectURL(L)}function Ke(e){const t=e.replace("#","");return t.length===3?"FF"+t.split("").map(n=>n+n).join(""):t.length===6?"FF"+t:"FF"+t.padEnd(6,"0")}function js(){return{bottom:{style:"medium",color:{argb:"FFcbd5e1"}}}}function Us(){return{top:{style:"medium",color:{argb:"FFcbd5e1"}}}}function fh(e,t,n,o){return s.useMemo(()=>o?Li(e,t,n):Ro,[e,t,n,o])}const Rs={"--ogx-grid-row-selected-background":"var(--ogx-color-primary-light)","--ogx-grid-row-selected-hover-background":"color-mix(in srgb, var(--ogx-color-primary) 14%, var(--ogx-color-primary-light))","--ogx-grid-cell-focus-border":"var(--ogx-color-primary)","--ogx-range-background":"color-mix(in srgb, var(--ogx-color-primary) 12%, transparent)","--ogx-range-border":"var(--ogx-color-primary)","--ogx-fill-handle-color":"var(--ogx-range-border)","--ogx-toolbar-btn-primary-bg":"var(--ogx-color-primary)","--ogx-toolbar-btn-primary-hover":"var(--ogx-color-primary-dark)","--ogx-toolbar-input-focus-border":"var(--ogx-color-primary)","--ogx-toolbar-input-focus-shadow":"0 0 0 3px color-mix(in srgb, var(--ogx-color-primary) 12%, transparent)","--ogx-toolbar-chip-active-bg":"color-mix(in srgb, var(--ogx-color-primary) 12%, transparent)","--ogx-toolbar-chip-active-text":"var(--ogx-color-primary-dark)","--ogx-overlay-item-selected-bg":"color-mix(in srgb, var(--ogx-color-primary) 8%, transparent)","--ogx-overlay-item-selected-text":"var(--ogx-color-primary-dark)"},qs={"--ogx-color-primary":"#3b82f6","--ogx-color-primary-dark":"#2563eb","--ogx-color-primary-light":"#eff6ff","--ogx-color-primary-focus":"rgba(59, 130, 246, 0.5)","--ogx-color-secondary":"#8b5cf6","--ogx-color-secondary-dark":"#7c3aed","--ogx-color-secondary-light":"#f5f3ff","--ogx-color-white":"#ffffff","--ogx-color-black":"#0f172a","--ogx-color-gray-50":"#f8fafc","--ogx-color-gray-100":"#f1f5f9","--ogx-color-gray-200":"#e2e8f0","--ogx-color-gray-300":"#cbd5e1","--ogx-color-gray-400":"#94a3b8","--ogx-color-gray-500":"#64748b","--ogx-color-gray-600":"#475569","--ogx-color-gray-700":"#334155","--ogx-color-gray-800":"#1e293b","--ogx-color-gray-900":"#0f172a","--ogx-border-color":"#e2e8f0","--ogx-border-color-hover":"#cbd5e1","--ogx-shadow-sm":"0 1px 2px 0 rgba(0, 0, 0, 0.05)","--ogx-shadow-md":"0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03)","--ogx-shadow-lg":"0 10px 15px -3px rgba(0, 0, 0, 0.05), 0 4px 6px -2px rgba(0, 0, 0, 0.02)","--ogx-grid-background":"#ffffff","--ogx-grid-border-color":"#e2e8f0","--ogx-grid-header-background":"#f8fafc","--ogx-grid-header-text":"#334155","--ogx-grid-header-hover-background":"#f1f5f9","--ogx-grid-header-sorted-background":"#f8fafc","--ogx-grid-row-text":"#1e293b","--ogx-grid-row-hover-background":"#f8fafc","--ogx-grid-row-alternate-background":"transparent","--ogx-checkbox-bg":"#ffffff","--ogx-checkbox-border":"#94a3b8","--ogx-grid-pinned-left-shadow":"4px 0 24px -4px rgba(0, 0, 0, 0.05)","--ogx-grid-pinned-right-shadow":"-4px 0 24px -4px rgba(0, 0, 0, 0.05)",...{"--ogx-toolbar-background":"var(--ogx-grid-header-background)","--ogx-toolbar-text":"var(--ogx-grid-header-text)","--ogx-toolbar-border":"var(--ogx-grid-border-color)","--ogx-toolbar-btn-bg":"transparent","--ogx-toolbar-btn-hover":"var(--ogx-grid-header-hover-background)","--ogx-toolbar-btn-text":"var(--ogx-grid-header-text)","--ogx-toolbar-input-bg":"var(--ogx-grid-background)","--ogx-toolbar-input-text":"var(--ogx-grid-row-text)","--ogx-toolbar-chip-bg":"transparent","--ogx-toolbar-chip-text":"var(--ogx-grid-row-text)"},"--ogx-toolbar-btn-primary-text":"#ffffff","--ogx-toolbar-btn-danger-bg":"rgba(239, 68, 68, 0.08)","--ogx-toolbar-btn-danger-hover":"rgba(239, 68, 68, 0.15)","--ogx-toolbar-btn-danger-text":"#ef4444","--ogx-toolbar-input-border":"#cbd5e1","--ogx-overlay-background":"#ffffff","--ogx-overlay-text":"#1e293b","--ogx-overlay-border":"#e2e8f0","--ogx-overlay-shadow":"0 4px 6px -1px rgba(0,0,0,0.08), 0 2px 4px -1px rgba(0,0,0,0.06), 0 0 0 1px rgba(0,0,0,0.06)","--ogx-overlay-item-hover-bg":"#f8fafc","--ogx-overlay-item-hover-text":"#0f172a","--ogx-overlay-item-danger-bg":"rgba(239, 68, 68, 0.08)","--ogx-overlay-item-danger-text":"#ef4444","--ogx-scrollbar-thumb":"#cbd5e1","--ogx-scrollbar-track":"transparent","--ogx-scrollbar-size":"8px","--ogx-skeleton-base":"#f1f5f9","--ogx-skeleton-highlight":"#ffffff",...Rs},gh={...qs,"--ogx-color-primary":"#60a5fa","--ogx-color-primary-dark":"#3b82f6","--ogx-color-primary-light":"#1e3a5f","--ogx-color-primary-focus":"rgba(96, 165, 250, 0.4)","--ogx-color-white":"#0f172a","--ogx-color-black":"#f8fafc","--ogx-color-gray-50":"#1e293b","--ogx-color-gray-100":"#334155","--ogx-color-gray-200":"#475569","--ogx-color-gray-300":"#64748b","--ogx-color-gray-400":"#94a3b8","--ogx-color-gray-500":"#cbd5e1","--ogx-color-gray-600":"#e2e8f0","--ogx-color-gray-700":"#e2e8f0","--ogx-color-gray-800":"#f1f5f9","--ogx-color-gray-900":"#f8fafc","--ogx-border-color":"#334155","--ogx-border-color-hover":"#475569","--ogx-shadow-sm":"0 1px 2px 0 rgba(0, 0, 0, 0.3)","--ogx-shadow-md":"0 4px 6px -1px rgba(0, 0, 0, 0.3)","--ogx-shadow-lg":"0 10px 15px -3px rgba(0, 0, 0, 0.3)","--ogx-grid-background":"#0f172a","--ogx-grid-border-color":"#334155","--ogx-grid-header-background":"#1e293b","--ogx-grid-header-text":"#e2e8f0","--ogx-grid-header-hover-background":"#334155","--ogx-grid-header-sorted-background":"#1e3a5f","--ogx-grid-row-text":"#cbd5e1","--ogx-grid-row-hover-background":"#1e293b","--ogx-grid-row-alternate-background":"#162032","--ogx-checkbox-bg":"#1e293b","--ogx-checkbox-border":"#64748b","--ogx-grid-pinned-left-shadow":"4px 0 24px -4px rgba(0, 0, 0, 0.3)","--ogx-grid-pinned-right-shadow":"-4px 0 24px -4px rgba(0, 0, 0, 0.3)","--ogx-toolbar-btn-danger-bg":"rgba(239, 68, 68, 0.15)","--ogx-toolbar-btn-danger-hover":"rgba(239, 68, 68, 0.25)","--ogx-toolbar-btn-danger-text":"#fca5a5","--ogx-toolbar-input-border":"#334155","--ogx-overlay-background":"#1e293b","--ogx-overlay-text":"#cbd5e1","--ogx-overlay-border":"#334155","--ogx-overlay-shadow":"0 4px 6px -1px rgba(0,0,0,0.4), 0 2px 4px -1px rgba(0,0,0,0.3), 0 0 0 1px rgba(0,0,0,0.2)","--ogx-overlay-item-hover-bg":"#334155","--ogx-overlay-item-hover-text":"#f1f5f9","--ogx-overlay-item-danger-bg":"rgba(239, 68, 68, 0.15)","--ogx-overlay-item-danger-text":"#fca5a5","--ogx-scrollbar-thumb":"#475569","--ogx-skeleton-base":"#1e293b","--ogx-skeleton-highlight":"#334155",...Rs,"--ogx-toolbar-chip-active-text":"var(--ogx-color-primary)","--ogx-overlay-item-selected-text":"var(--ogx-color-primary)"},ph=[50,100,200,300,400,500,600,700,800,900];function hh(e){const t={};function n(o,r){r!==void 0&&(t[o]=r)}if(e.colors){const o=e.colors;if(n("--ogx-color-primary",o.primary),n("--ogx-color-primary-dark",o.primaryDark),n("--ogx-color-primary-light",o.primaryLight),n("--ogx-color-primary-focus",o.primaryFocus),n("--ogx-color-secondary",o.secondary),n("--ogx-color-secondary-dark",o.secondaryDark),n("--ogx-color-secondary-light",o.secondaryLight),n("--ogx-color-success",o.success),n("--ogx-color-warning",o.warning),n("--ogx-color-error",o.error),n("--ogx-color-info",o.info),n("--ogx-color-white",o.white),n("--ogx-color-black",o.black),o.gray)for(const r of ph)n(`--ogx-color-gray-${r}`,o.gray[r])}if(e.typography){const o=e.typography;n("--ogx-font-family",o.fontFamily),n("--ogx-font-family-mono",o.fontFamilyMono),n("--ogx-font-size-xs",o.fontSizeXs),n("--ogx-font-size-sm",o.fontSizeSm),n("--ogx-font-size-md",o.fontSizeMd),n("--ogx-font-size-lg",o.fontSizeLg),n("--ogx-font-size-xl",o.fontSizeXl)}if(e.spacing){const o=e.spacing;n("--ogx-spacing-xs",o.xs),n("--ogx-spacing-sm",o.sm),n("--ogx-spacing-md",o.md),n("--ogx-spacing-lg",o.lg),n("--ogx-spacing-xl",o.xl),n("--ogx-spacing-xxl",o.xxl)}if(e.borders){const o=e.borders;n("--ogx-border-width-thin",o.widthThin),n("--ogx-border-width-medium",o.widthMedium),n("--ogx-border-width-thick",o.widthThick),n("--ogx-border-radius-sm",o.radiusSm),n("--ogx-border-radius-md",o.radiusMd),n("--ogx-border-radius-lg",o.radiusLg),n("--ogx-border-radius-xl",o.radiusXl),n("--ogx-border-color",o.color),n("--ogx-border-color-hover",o.colorHover)}if(e.shadows){const o=e.shadows;n("--ogx-shadow-sm",o.sm),n("--ogx-shadow-md",o.md),n("--ogx-shadow-lg",o.lg),n("--ogx-shadow-xl",o.xl)}if(e.grid){const o=e.grid;n("--ogx-grid-row-height-compact",o.rowHeightCompact),n("--ogx-grid-row-height-standard",o.rowHeightStandard),n("--ogx-row-height",o.rowHeightStandard),n("--ogx-grid-row-height-comfortable",o.rowHeightComfortable),n("--ogx-grid-header-height",o.headerHeight),n("--ogx-header-height",o.headerHeight),n("--ogx-grid-cell-padding-x",o.cellPaddingX),n("--ogx-grid-cell-padding-y",o.cellPaddingY),n("--ogx-grid-cell-font-size",o.cellFontSize),n("--ogx-grid-header-font-size",o.headerFontSize),n("--ogx-grid-background",o.background),n("--ogx-grid-border-color",o.borderColor),n("--ogx-grid-header-background",o.headerBackground),n("--ogx-grid-header-text",o.headerText),n("--ogx-grid-header-hover-background",o.headerHoverBackground),n("--ogx-grid-header-sorted-background",o.headerSortedBackground),n("--ogx-grid-row-text",o.rowText),n("--ogx-grid-row-hover-background",o.rowHoverBackground),n("--ogx-grid-row-alternate-background",o.rowAlternateBackground),n("--ogx-grid-row-selected-background",o.rowSelectedBackground),n("--ogx-grid-row-selected-hover-background",o.rowSelectedHoverBackground),n("--ogx-grid-cell-focus-border",o.cellFocusBorder),n("--ogx-range-background",o.rangeBackground),n("--ogx-range-border",o.rangeBorder),n("--ogx-fill-handle-color",o.fillHandleColor),n("--ogx-grid-pinned-left-shadow",o.pinnedLeftShadow),n("--ogx-grid-pinned-right-shadow",o.pinnedRightShadow),n("--ogx-checkbox-bg",o.checkboxBg),n("--ogx-checkbox-border",o.checkboxBorder)}if(e.transitions){const o=e.transitions;n("--ogx-transition-duration-fast",o.durationFast),n("--ogx-transition-duration-normal",o.durationNormal),n("--ogx-transition-duration-slow",o.durationSlow),n("--ogx-transition-easing",o.easing)}if(e.toolbar){const o=e.toolbar;n("--ogx-toolbar-background",o.background),n("--ogx-toolbar-text",o.text),n("--ogx-toolbar-border",o.border),n("--ogx-toolbar-btn-bg",o.buttonBackground),n("--ogx-toolbar-btn-hover",o.buttonHoverBackground),n("--ogx-toolbar-btn-text",o.buttonText),n("--ogx-toolbar-btn-primary-bg",o.buttonPrimaryBackground),n("--ogx-toolbar-btn-primary-hover",o.buttonPrimaryHoverBackground),n("--ogx-toolbar-btn-primary-text",o.buttonPrimaryText),n("--ogx-toolbar-btn-danger-bg",o.buttonDangerBackground),n("--ogx-toolbar-btn-danger-hover",o.buttonDangerHoverBackground),n("--ogx-toolbar-btn-danger-text",o.buttonDangerText),n("--ogx-toolbar-input-bg",o.inputBackground),n("--ogx-toolbar-input-text",o.inputText),n("--ogx-toolbar-input-border",o.inputBorder),n("--ogx-toolbar-input-focus-border",o.inputFocusBorder),n("--ogx-toolbar-input-focus-shadow",o.inputFocusShadow),n("--ogx-toolbar-chip-bg",o.chipBackground),n("--ogx-toolbar-chip-text",o.chipText),n("--ogx-toolbar-chip-active-bg",o.chipActiveBackground),n("--ogx-toolbar-chip-active-text",o.chipActiveText)}if(e.overlays){const o=e.overlays;n("--ogx-overlay-background",o.background),n("--ogx-overlay-text",o.text),n("--ogx-overlay-border",o.border),n("--ogx-overlay-shadow",o.shadow),n("--ogx-overlay-item-hover-bg",o.itemHoverBackground),n("--ogx-overlay-item-hover-text",o.itemHoverText),n("--ogx-overlay-item-selected-bg",o.itemSelectedBackground),n("--ogx-overlay-item-selected-text",o.itemSelectedText),n("--ogx-overlay-item-danger-bg",o.itemDangerBackground),n("--ogx-overlay-item-danger-text",o.itemDangerText)}if(e.scrollbar){const o=e.scrollbar;n("--ogx-scrollbar-thumb",o.thumbColor),n("--ogx-scrollbar-track",o.trackColor),n("--ogx-scrollbar-size",o.size)}if(e.skeleton){const o=e.skeleton;n("--ogx-skeleton-base",o.baseColor),n("--ogx-skeleton-highlight",o.highlightColor)}return t}function mh({theme:e,children:t,className:n,style:o}){const r=s.useMemo(()=>({...e.mode==="dark"?gh:qs,...hh(e)}),[e]);return c.jsx(Ki.Provider,{value:e,children:c.jsx("div",{className:`ogx-theme-provider ${n||""}`.trim(),style:{...o,...r},children:t})})}const wh={mode:"dark",colors:{primary:"#60a5fa",primaryDark:"#3b82f6",primaryLight:"#1e3a5f",primaryFocus:"rgba(96, 165, 250, 0.4)"},grid:{background:"#0f172a",headerBackground:"#1e293b",headerText:"#e2e8f0",headerHoverBackground:"#334155",headerSortedBackground:"#1e3a5f",rowText:"#cbd5e1",borderColor:"#334155",rowHoverBackground:"#1e293b",rowAlternateBackground:"#162032",rowSelectedBackground:"#1e3a5f",rowSelectedHoverBackground:"#1d4ed8",cellFocusBorder:"#60a5fa",rangeBackground:"rgba(96, 165, 250, 0.18)",rangeBorder:"#60a5fa",checkboxBg:"#1e293b",checkboxBorder:"#64748b"},borders:{color:"#334155",colorHover:"#475569"},shadows:{sm:"0 1px 2px 0 rgba(0, 0, 0, 0.3)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.3)"},toolbar:{background:"#1e293b",text:"#cbd5e1",border:"#334155",buttonBackground:"transparent",buttonHoverBackground:"#334155",buttonText:"#e2e8f0",buttonPrimaryBackground:"#3b82f6",buttonPrimaryHoverBackground:"#2563eb",buttonPrimaryText:"#ffffff",buttonDangerBackground:"rgba(239, 68, 68, 0.15)",buttonDangerHoverBackground:"rgba(239, 68, 68, 0.25)",buttonDangerText:"#fca5a5",inputBackground:"#0f172a",inputText:"#f8fafc",inputBorder:"#334155",inputFocusBorder:"#60a5fa",inputFocusShadow:"0 0 0 3px rgba(96, 165, 250, 0.2)",chipBackground:"#1e293b",chipText:"#94a3b8",chipActiveBackground:"rgba(96, 165, 250, 0.2)",chipActiveText:"#60a5fa"},overlays:{background:"#1e293b",text:"#f8fafc",border:"#334155",shadow:"0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -2px rgba(0, 0, 0, 0.3)",itemHoverBackground:"#334155",itemHoverText:"#ffffff",itemSelectedBackground:"rgba(96, 165, 250, 0.15)",itemSelectedText:"#60a5fa",itemDangerBackground:"rgba(239, 68, 68, 0.15)",itemDangerText:"#fca5a5"},scrollbar:{thumbColor:"rgba(148, 163, 184, 0.2)",trackColor:"transparent"},skeleton:{baseColor:"#1e293b",highlightColor:"#334155"}},bh={colors:{primary:"#e11d48",primaryDark:"#be123c",primaryLight:"#fff1f2",primaryFocus:"rgba(225, 29, 72, 0.4)"},grid:{headerBackground:"#fff1f2",headerHoverBackground:"#ffe4e6",headerSortedBackground:"#fecdd3",rowAlternateBackground:"#fff8f8",rowSelectedBackground:"#ffe4e6",rowSelectedHoverBackground:"#fecdd3",cellFocusBorder:"#e11d48",rangeBackground:"rgba(225, 29, 72, 0.10)",rangeBorder:"#e11d48"}},xh={colors:{primary:"#059669",primaryDark:"#047857",primaryLight:"#ecfdf5",primaryFocus:"rgba(5, 150, 105, 0.4)"},grid:{headerBackground:"#ecfdf5",headerHoverBackground:"#d1fae5",headerSortedBackground:"#a7f3d0",rowAlternateBackground:"#f6fdf9",rowSelectedBackground:"#d1fae5",rowSelectedHoverBackground:"#a7f3d0",cellFocusBorder:"#059669",rangeBackground:"rgba(5, 150, 105, 0.12)",rangeBorder:"#059669"}},yh={colors:{primary:"#d97706",primaryDark:"#b45309",primaryLight:"#fffbeb",primaryFocus:"rgba(217, 119, 6, 0.4)"},grid:{headerBackground:"#fffbeb",headerHoverBackground:"#fef3c7",headerSortedBackground:"#fde68a",rowAlternateBackground:"#fffdf5",rowSelectedBackground:"#fef3c7",rowSelectedHoverBackground:"#fde68a",cellFocusBorder:"#d97706",rangeBackground:"rgba(217, 119, 6, 0.12)",rangeBorder:"#d97706"}},vh={grid:{rowHeightCompact:"28px",rowHeightStandard:"36px",rowHeightComfortable:"48px",headerHeight:"40px",cellPaddingX:"8px",cellPaddingY:"4px",cellFontSize:"12px",headerFontSize:"12px"},typography:{fontSizeSm:"0.8rem",fontSizeMd:"0.875rem"}};function Ch(){if(!(typeof window>"u"))try{return window.localStorage}catch{return}}function Xs(e,t){try{const n=t.getItem(e);return n?JSON.parse(n):void 0}catch{return}}function _h(e,t,n,o){try{const r=n?Object.fromEntries(Object.entries(t).filter(([i])=>n.includes(i))):t;o.setItem(e,JSON.stringify(r))}catch{}}function Sh(e){const t=typeof e=="string"?{key:e}:e,{key:n,debounceMs:o=300,include:r,storage:i}=t,[l]=s.useState(Ch),d=i??l,a=s.useRef(r),u=s.useRef(d);s.useLayoutEffect(()=>{a.current=r,u.current=d});const[g,m]=s.useState(()=>({key:n,state:d?Xs(n,d):void 0}));let w=g.state;g.key!==n&&(w=d?Xs(n,d):void 0,m({key:n,state:w}));const y=s.useRef(null),p=s.useRef(null),f=s.useCallback(()=>{y.current&&(clearTimeout(y.current),y.current=null);const b=p.current;p.current=null;const v=u.current;b&&v&&_h(b.key,b.state,a.current,v)},[]),h=s.useCallback(b=>{p.current&&p.current.key!==n&&f(),p.current={key:n,state:b},y.current&&clearTimeout(y.current),y.current=setTimeout(f,o)},[n,f,o]);s.useEffect(()=>f,[f]);const x=s.useCallback(()=>{y.current&&(clearTimeout(y.current),y.current=null),p.current=null;const b=u.current;if(b)try{b.removeItem(n)}catch{}},[n]);return s.useMemo(()=>({initialState:w,onStateChange:h,clearState:x}),[w,h,x])}_e.Button=tt,_e.Cell=ns,_e.CellSelectionStats=gs,_e.Checkbox=bt,_e.ColumnVisibilityPanel=yr,_e.DataGrid=sp,_e.DataGridThemeProvider=mh,_e.FilterPanel=Ms,_e.GridToolbar=Ep,_e.GridTooltip=Sn,_e.Header=_l,_e.Input=Qe,_e.Pagination=mr,_e.Row=Zn,_e.Skeleton=ap,_e.amberTheme=yh,_e.compactTheme=vh,_e.darkTheme=wh,_e.emeraldTheme=xh,_e.exportToCsv=Kp,_e.exportToExcel=Rp,_e.exportToExcelAdvanced=uh,_e.exportToJson=qp,_e.exportToPdf=Wp,_e.formatAggregationValue=pn,_e.printGrid=Zp,_e.roseTheme=bh,_e.useAggregation=Ql,_e.useGridApiRef=Mp,_e.useGridStateStorage=Sh,_e.usePivot=fh,Object.defineProperty(_e,Symbol.toStringTag,{value:"Module"})}));
47
47
  //# sourceMappingURL=opengridx.umd.js.map