@opencorestack/opengridx 3.5.1 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README.md +2 -0
- package/dist/ai.cjs +4 -2
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.d.ts +2 -2
- package/dist/ai.es.js +4 -2
- package/dist/ai.es.js.map +1 -1
- package/dist/index.d.ts +32 -0
- package/dist/opengridx.css +1 -1
- package/dist/opengridx.es.js +6573 -6390
- package/dist/opengridx.es.js.map +1 -1
- package/dist/opengridx.umd.js +16 -16
- package/dist/opengridx.umd.js.map +1 -1
- package/docs/API_REFERENCE.md +14 -1
- package/docs/README.md +2 -0
- package/docs/features/ai-toolkit.md +2 -2
- package/docs/features/export-guide.md +2 -0
- package/docs/features/header-filters.md +34 -0
- package/docs/features/keyboard-navigation.md +2 -0
- package/docs/features/nextjs.md +241 -0
- package/docs/features/pdf-export.md +2 -0
- package/docs/features/pinning.md +2 -0
- package/docs/features/rtl.md +58 -0
- package/docs/performance.md +86 -118
- package/docs/roadmap.md +4 -2
- package/lib/ai/promptHandler.ts +12 -8
- package/lib/ai/validate.ts +5 -2
- package/lib/components/AiAssistant/GridAiAssistantPanel.css +1 -1
- package/lib/components/Cell/Cell.css +29 -9
- package/lib/components/Cell/Cell.tsx +2 -2
- package/lib/components/ColumnGroupHeader/ColumnGroupHeader.css +2 -2
- package/lib/components/ColumnResizeHandle/ColumnResizeHandle.css +3 -3
- package/lib/components/ColumnResizeHandle/ColumnResizeHandle.tsx +18 -2
- package/lib/components/DataGrid/DataGrid.css +12 -6
- package/lib/components/DataGrid/DataGrid.tsx +1 -0
- package/lib/components/DataGrid/GridAggregationFooter.tsx +3 -3
- package/lib/components/DataGrid/GridListView.tsx +3 -1
- package/lib/components/Header/ColumnMenu.css +1 -1
- package/lib/components/Header/ColumnMenu.tsx +14 -6
- package/lib/components/Header/Header.css +18 -10
- package/lib/components/Header/Header.tsx +16 -9
- package/lib/components/Header/headerColumnStyle.ts +3 -2
- package/lib/components/HeaderFilter/HeaderFilter.css +8 -2
- package/lib/components/HeaderFilter/HeaderFilterCell.tsx +21 -18
- package/lib/components/HeaderFilter/HeaderFilterOperatorMenu.tsx +5 -4
- package/lib/components/HeaderFilter/HeaderFilterRow.tsx +9 -3
- package/lib/components/ListView/ListViewRow.tsx +1 -1
- package/lib/components/Pagination/Pagination.css +4 -0
- package/lib/components/Pagination/Pagination.tsx +4 -4
- package/lib/components/Row/Row.tsx +3 -3
- package/lib/components/SkeletonRow/SkeletonRow.tsx +2 -2
- package/lib/components/Toolbar/GridToolbar.tsx +8 -28
- package/lib/components/Toolbar/PivotPanel.tsx +4 -7
- package/lib/components/ui/ExpandIcon.css +13 -0
- package/lib/components/ui/ExpandIcon.tsx +2 -4
- package/lib/hooks/core/useGridCellSelection.ts +20 -5
- package/lib/hooks/core/useGridColumns.tsx +2 -2
- package/lib/hooks/core/useGridKeyboardNavigation.ts +7 -4
- package/lib/hooks/core/useGridScrollSync.ts +28 -5
- package/lib/hooks/core/useLayout.ts +13 -6
- package/lib/hooks/useRowGrouping.ts +9 -9
- package/lib/types/index.ts +30 -0
- package/lib/utils/aggregation/index.ts +56 -1
- package/lib/utils/direction.ts +52 -0
- package/lib/utils/export/exportToExcelAdvanced.ts +9 -2
- package/lib/utils/export/exportToPdf.ts +2 -1
- package/lib/utils/filtering/index.ts +58 -6
- package/lib/utils/headerFilterLocale.ts +37 -0
- package/lib/utils/scroll/index.ts +5 -3
- package/lib/utils/sorting/index.ts +141 -26
- package/lib/utils/values.ts +10 -6
- package/llms.txt +4 -2
- package/package.json +1 -1
package/dist/opengridx.umd.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
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 Be=48;function ct(e,t){return t?t.left?.includes(e)?"left":t.right?.includes(e)?"right":null:null}function ya(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?Be:0)+(i&&l?Be:0)+(o&&r?Be: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 h=0;for(let w=g.length-1;w>=0;w--)a[g[w].field]=h,h+=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 oi(e,t){return t?t.top?.includes(e)?"top":t.bottom?.includes(e)?"bottom":null:null}function Ca(e,t,n=o=>o.id){const o=[],r=[],i=[];return t?(e.forEach(l=>{const d=oi(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 va(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 ri=new Set;function Wt(e,t,n){process.env.NODE_ENV==="production"||ri.has(e)||(ri.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 ii(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}=ii(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 _a=/^(\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=_a.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 li(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 si=null;function ai(e){return si??=new Intl.DateTimeFormat,si.format(e)}function Sa(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?ai(n):String(e)}case"boolean":return e===!0?"Yes":e===!1?"No":String(e);case"singleSelect":return Sa(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 ka(e,t){const n=Ao(e);return n==="auto"?t??Lo:n}function Ea(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 Ma=e=>e.id;function Na(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 Ia(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=Na(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,m)=>{const x=o.get(m.field);if(x.kind==="fixed")return f+x.width;if(x.kind==="percentage")return f+100;if(m.flex&&m.flex>0){const b=m.minWidth??150;return f+(b||(typeof m.width=="number"?m.width:150))}return f+(m.minWidth??150)},0),i=Math.max(n,r),l=e.reduce((f,m)=>{const x=o.get(m.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 m=o.get(f.field);if(m.kind==="fixed")d.set(f.field,m.width);else if(m.kind==="percentage"){const x=m.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),h=new Map,w=e.flatMap(f=>{const m=o.get(f.field);return m.kind!=="flex"?[]:(h.set(f.field,m.flex),[{field:f.field,flex:m.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 m=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(m<=0){f.forEach(M=>{M.computedWidth=M.minWidth,M.frozen=!0});break}const C=b/m;let E=0;const k=[],N=[];if(f.forEach(M=>{const S=C*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:h}}function La(e){const{rowHeight:t,pagination:n,paginatedUnpinnedRows:o,sortedUnpinnedRows:r,expandedRowIds:i,getDetailPanelHeight:l,detailPanelHeights:d,pinnedTopRowsLength:a,pinnedBottomRowsLength:u,pinnedTopRows:g,pinnedBottomRows:h,visibleOrderedColumns:w,pinnedColumns:y,columnWidths:p,viewportWidth:f,checkboxSelection:m,hasDetailPanel:x,rowReordering:b,pinCheckboxColumn:C,pinExpandColumn:E,paginationMode:k,isLoading:N,pageSize:M,getRowId:S=Ma}=e;return s.useMemo(()=>{const F=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+ka(B,d?.get(X))},A=F.map((P,T)=>I(P,a+T)),_=A.reduce((P,T,X)=>(P.push((P[X-1]||0)+T),P),[]),L=k==="infinite"&&N&&F.length>0?Math.min(M,20):0,D=(_[_.length-1]||0)+L*t,v=(P,T)=>P?P.reduce((X,B,ee)=>X+I(B,ee),0):T*t,V=v(g,a),R=v(h,u),{left:Q,center:G,right:W}=ya(w,y),H=(m?Be:0)+(x?Be:0)+(b?Be:0),ie=(b?Be:0)+(x&&E?Be:0)+(m&&C?Be:0),{widths:oe,flexByField:ue}=Ia([...Q,...G,...W],p,f-H),se=P=>oe.get(P.field)??100,U=P=>({...P,width:se(P),flex:ue.get(P.field)??P.flex}),te=11,ce=Q.map((P,T)=>({...U(P),zIndex:te+T})),z=11,re=W.map((P,T)=>({...U(P),zIndex:z+(W.length-1-T)})),K=G.map(U),J=K.map(P=>P.width),ae=ce.reduce((P,T)=>P+T.width,0),fe=re.reduce((P,T)=>P+T.width,0),Z=J.reduce((P,T)=>P+T,0),$=ae+Z+fe+H,O=J.reduce((P,T,X)=>(P.push((P[X-1]||0)+T),P),[]);return{rowHeights:A,cumulativeHeights:_,unpinnedRowsHeight:D,pinnedTopHeight:V,pinnedBottomHeight:R,leftPinnedCols:ce,rightPinnedCols:re,unpinnedColsWithWidth:K,unpinnedColWidths:J,unpinnedAccWidths:O,totalWidth:$,leftWidth:ae,rightWidth:fe,unpinnedTotalWidth:Z,systemColumnsWidth:H,pinnedSystemColumnsWidth:ie,pinnedTopRowsLength:a,pinnedBottomRowsLength:u,unpinnedRowsLength:F.length}},[t,n,o,r,i,l,d,a,u,g,h,w,y,p,f,m,x,b,C,E,k,N,M,S])}function Aa(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,Aa(e)),g=a+(t===0?0:n[t-1]),h=r!==void 0?Math.min(g+r,a+n[t]):a+n[t];g<l+a?e.scrollTop=Math.max(0,g-a):h>l+d-u&&(e.scrollTop=h-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],h=d+r,{scrollLeft:w,clientWidth:y}=e;u<w+h?e.scrollLeft=Math.max(0,u-h):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 Pa={},Oo=e=>e==null||typeof e=="string"&&e.trim()==="",ci=e=>{const t=[];for(const n of e){const o=It(n);o!==null&&t.push(o)}return t},di=(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=>ci(e).reduce((t,n)=>t+n,0),avg:e=>{const t=ci(e);return t.length?t.reduce((n,o)=>n+o,0)/t.length:null},count:e=>e.filter(t=>!Oo(t)).length,min:e=>di(e,(t,n)=>t<n),max:e=>di(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 Ta=new Set(["count","unique"]);function ui(e){return e!==void 0&&Ta.has(e)}function fi(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(ui(t))return pn(e,t);const r=fi(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())?"":ai(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 Fa(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)},gi=mn((e,t)=>e===t),pi=(e,t)=>{const n=$n(e),o=$n(t);return n===null||o===null?!0:n!==o},hi={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:Fa(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?pi(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?gi(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)},Oa={is:gi,not:pi};function Da(e,t){if(!Object.prototype.hasOwnProperty.call(hi,e))return;const n=e;if(t?.type==="date"){const o=Oa[n];if(o)return o}return hi[n]}function $a(e){return"items"in e&&Array.isArray(e.items)}function Ga(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=Da(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 mi(e,t,n){const o=[];for(const r of e){const i=$a(r)?mi(r.items,r.logicOperator,n):Ga(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=li(t);n&&e.push(n);return}if(Array.isArray(t))for(const n of t)(n==null||typeof n!="object")&&Go(e,n)}}function wi(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 bi=new WeakMap;function Ha(e,t){if(!t)return wi(e,t);let n=bi.get(t);n||(n=new WeakMap,bi.set(t,n));let o=n.get(e);return o||(o=wi(e,t),n.set(e,o)),o}function Ba(e,t){const n=(e??[]).map(o=>String(o??"").trim().toLowerCase()).filter(o=>o!=="");return n.length===0?null:o=>{const r=Ha(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=Ba(o,t),i=mi(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 xi(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?li(e)||(typeof e=="string"?e:""):Array.isArray(e)?e.map(n=>String(n)).join(", "):String(e)}const Wa=new Intl.Collator(void 0,{numeric:!0,sensitivity:"accent"}),Wo=0,yi=1,Va=2,Ci=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(yi,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(Va,e?1:0);case"string":return{rank:Ci,num:0,str:e}}if(e instanceof Date){const n=e.getTime();return Number.isNaN(n)?null:zt(yi,n)}return{rank:vi,num:0,str:String(e)}}function _i(e,t){return e===null&&t===null?0:e===null?1:t===null?-1:e.rank!==t.rank?e.rank-t.rank:e.rank===Ci||e.rank===vi?Wa.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 za(e,t,n,o){return zo(_i(Vo(e,o),Vo(t,o)),n)}function Si(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 Ka=e=>e.id;function ja(e,t,n,o=Ka){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],h=u.comparator&&u.comparator===g.comparator&&u.params&&g.params?Si(u.comparator,u.params,g.params):_i(r[a][l],r[a][d]),w=zo(h,t[a].sort);if(w!==0)return w}return l-d}),i.map(l=>e[l])}function Ua(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__",Ra="__pivot_row__:",ki=e=>`${Ra}${JSON.stringify(e.split(Ei))}`,qa="Grand Total",Ei="\0",jt="",Uo=`${jt}id`,Mi=e=>e==="id"?Uo:e,Ro={pivotRows:[],pivotColumns:[],colKeys:[],isValid:!1},Ni=e=>e.map(t=>String(t??"")).join(Ei),Ii=e=>e===void 0||e===""?null:e;function Xa(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 Ya(e,t){for(let n=0;n<e.length;n++){const o=Xa(e[n],t[n]);if(o!==0)return o}return 0}function Li(e,t){if(!e||e.length===0)return null;const n=Lt[t](e);return typeof n=="number"||n instanceof Date?n:null}const Ja=e=>"logicOperator"in e&&"items"in e,Za=e=>!!(e&&e.items&&e.items.length>0);function Qa(e,t){const n=l=>!t.has(l)&&l.includes(jt),o=l=>Ja(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 Ai(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,u=n.valueFields.filter(_=>{if(!Do(r.get(_.field),_.aggFn))return!1;const L=`${_.field}${jt}${_.aggFn}`;return a.has(L)?!1:(a.add(L),!0)});if(l.length===0||u.length===0)return Ro;const g=d.length>0,h=Array.from(new Set(u.map(_=>_.field))),w=(_,L)=>Le(_,L,r.get(L)),y=new Map,p=new Map(g?[]:[["",{values:[]}]]);for(const _ of e){const L=l.map(W=>w(_,W)),D=Ni(L);let v=y.get(D);v||(v={labels:L.map(Ii),sample:_,cells:new Map},y.set(D,v));const V=d.map(W=>w(_,W)),R=g?Ni(V):"",Q=p.get(R);Q?Q.sample||(Q.sample=_):p.set(R,{values:V.map(Ii),sample:_});let G=v.cells.get(R);G||(G=new Map,v.cells.set(R,G));for(const W of h){const H=w(_,W);if(Oo(H))continue;let ie=G.get(W);ie||(ie=[],G.set(W,ie)),ie.push(H)}}const f=Array.from(p.keys()).sort((_,L)=>Ya(p.get(_).values,p.get(L).values)),m=(_,L)=>g?`${_}${jt}${L.field}${jt}${L.aggFn}`:`${L.field}${jt}${L.aggFn}`,x=new Map;let b=[];for(const[_,L]of y){const D={id:ki(_)};l.forEach((v,V)=>{D[Mi(v)]=L.labels[V]}),D.id=ki(_);for(const v of f){const V=L.cells.get(v);for(const R of u)D[m(v,R)]=Li(V?.get(R.field),R.aggFn)}x.set(D.id,L),b.push({row:D,entry:L})}const C=_=>l.includes(_),E=_=>C(_)?r.get(_)?.type:"number",{outputFilterModel:k,sortModel:N}=o;if(Za(k)){const _=[];for(const D of f)for(const v of u)_.push({field:m(D,v),type:"number"});const L=Wn(k,jo(_));L&&(b=b.filter(({row:D})=>L(D)))}const M=(_,L)=>L==="id"&&C("id")?_[Uo]:_[L];N&&N.length>0&&(b=[...b].sort((_,L)=>{for(const D of N){const v=M(_.row,D.field),V=M(L.row,D.field),R=C(D.field)?r.get(D.field)?.sortComparator:void 0,Q=R?zo(Si(R,{id:_.row.id,field:D.field,row:_.row,value:v},{id:L.row.id,field:D.field,row:L.row,value:V}),D.sort):za(v,V,D.sort,E(D.field));if(Q!==0)return Q}return 0}));const S=b.map(_=>_.row);if(b.length>0){const _={id:Kt};l.forEach((L,D)=>{_[Mi(L)]=D===0?qa:""}),_.id=Kt;for(const L of f)for(const D of h){const v=[];for(const{entry:V}of b){const R=V.cells.get(L)?.get(D);if(R)for(const Q of R)v.push(Q)}for(const V of u)V.field===D&&(_[m(L,V)]=Li(v,V.aggFn))}S.push(_)}const F=b[0]?.entry.sample,I=_=>_===Kt?F:_===void 0?void 0:x.get(_)?.sample,A=l.map(_=>tc(_,r.get(_),I));for(const _ of f){const L=p.get(_),D=g?d.map((v,V)=>{const R=r.get(v),Q=ec(R,v,L.values[V],L.sample);return R?.headerName?`${R.headerName}: ${Q}`:Q}).join(" / "):"";for(const v of u){const V=r.get(v.field),R=v.headerName??V?.headerName??v.field;A.push({field:m(_,v),headerName:D?`${D} — ${R} (${v.aggFn})`:`${R} (${v.aggFn})`,width:140,type:"number",align:"right",headerAlign:"right",sortable:!0,valueFormatter:({value:Q,row:G})=>Bn(Q,v.aggFn,V,G)})}}return{pivotRows:S,pivotColumns:A,colKeys:f,isValid:!0}}function ec(e,t,n,o){const r=o?No(o,t,n,e):void 0;return r!==void 0?r:n==null?"":String(n)}function tc(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 Xe(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,nc=new Set(["checkbox","radio","button","submit","reset","image","file","color"]),oc=new Set(["textbox","searchbox","combobox","listbox","slider","spinbutton"]);function Pi(e){const t=e.tagName;if(t==="INPUT")return!nc.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&&oc.has(n)}const Ti=e=>e!==null&&e.nodeType===1;function Fi(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(!Ti(e)||!t.contains(e))return"foreign";const n=Fi(e,t);return n?n.classList.contains("ogx__cell--editing")?"editor":n===e?"grid":Pi(e)?"foreign":n.classList.contains("ogx__header-cell--checkbox")?"grid":"control":"foreign"}function rc(e,t,n,o){if(!Ti(e))return null;const r=Fi(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 Oi(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=Oi(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 Oi(o,t.field)}const Di="__group__";function Ye(e){return!Ze(e)&&e!==Di}const wt=(e,t)=>e===t||!!e&&!!t&&e.id===t.id&&e.field===t.field;function ic(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],h=d.getSpanOrigin(u,g)??{rowId:u,field:g},w=i.get(h.rowId),y=l.get(h.field);if(w===void 0||y===void 0)return a;const p=Math.max(1,d.getRowSpan(h.rowId,h.field)),f=Math.max(1,d.getColSpan(h.rowId,h.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 lc(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:{...lc({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 sc(e,t,n,o,r,i){const{headRow:l,headCol:d,anchorRow:a,anchorCol:u,top:g,bottom:h,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?h+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 $i(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 ac=(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,Gi=2,Hi=4,Bi=8,Wi=16,Vi=32;function cc(e,t,n,o){if(!e)return 0;const r=e.fillHandleCol===t?Vi: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|=Gi),(e.isBottom||o>1&&o-1>=e.bottomOffset)&&(l|=Hi),t===e.left&&(l|=Bi),i===e.right&&(l|=Wi),l}function dc(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 uc=1e5,fc=e=>e.id,zi=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown"]);function gc(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 pc(e){const{allRenderableRows:t,navigationColumns:n,checkboxSelection:o,selectedRowIds:r,handleSelectionChange:i,handleDetailPanelToggle:l,editingHandlers:d,setKeyboardMode:a,sortModel:u,handleSort:g,handleSortAdd:h,multiSort:w=!1,isCellEditable:y,pagination:p,pageSize:f,virtualization:m,viewportRef:x,pinnedTopRowCount:b=0,getRowId:C=fc,rowMetaMap:E,onRowActivate:k,toggleRowExpansion:N,handleSelectAll:M,rowSelectionEnabled:S=!0,multipleRowSelectionEnabled:F=!0,pinCheckboxColumn:I=!0,pinExpandColumn:A=!0,rowHeight:_,getSpanOrigin:L,cellSelection:D,headerFilters:v=!1}=e,[V,R]=s.useState(null),[Q,G]=s.useState(!1),W=s.useMemo(()=>gc(V,t,n,C,v),[V,t,n,C,v]),H=W.cell,ie=W.rowIndex,oe=s.useRef(!1),ue=s.useRef(!1),se=s.useRef(!1),U=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]),z=s.useMemo(()=>n.find($=>!Ze($.field))??n[0],[n]),re=s.useCallback(()=>{if(o)return{id:null,field:Je};if(!z)return null;const $=t[0];return $?{id:C($),field:z.field,rowIndex:0}:{id:null,field:z.field}},[o,z,t,C]),K=s.useCallback(($,O)=>{const P=x.current;if(!P)return;const{cumulativeHeights:T,pinnedBottomHeight:X,columnMetrics:B}=m;if($>=0&&Gn(P,$-b,T,X,_),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:ne,unpinnedAccWidths:me,unpinnedCols:j,totalSpecialsWidth:le,pinnedSpecialsWidth:we}=B,pe=j.findIndex(Ee=>Ee.field===O);if(pe===-1)return;const he=le+Y+(pe>0?me[pe-1]:0),Ce=le+Y+me[pe],be=q+we+Y,de=q+ee-ne;let ye=q;he<be?ye=Math.max(0,he-we-Y):Ce>de&&(ye=Ce-ee+ne),ye!==q&&(P.scrollLeft=ye)},[x,m,b,_,I,A]);s.useLayoutEffect(()=>{const $=x.current,O=!qo(U.current,H);if(U.current=H,!$||!H)return;const P=$.ownerDocument,T=P.activeElement;let X;if(T===$?X=!0:!T||T===P.body?X=oe.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(()=>{se.current=!0,a(!1)},[a]),ae=s.useCallback($=>{const O=$.currentTarget,P=$.relatedTarget,T=!(P instanceof Node&&O.contains(P)),X=se.current;if(se.current=!1,oe.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}):K(ie,H.field);return}const ee=re();ee&&(R(q=>q??ee),K(ee.rowIndex??-1,ee.field));return}const B=rc($.target,O,t,C);B&&!qo(B,H)&&R(B)},[H,ie,re,K,a,t,C]),fe=s.useCallback($=>{const O=$.relatedTarget;O instanceof Node&&$.currentTarget.contains(O)||(oe.current=!1,se.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=v?-2:-1,q=(ge,ve)=>{const ke=n[ve];!ke||ge<ee||ge>=t.length||(ge===ee?R({id:null,field:ke.field}):ge<0?R({id:null,field:ke.field,headerFilter:!0}):R({id:C(t[ge]),field:ke.field,rowIndex:ge}),K(ge,ke.field))};if(!H){if(!zi.has(T))return;const ge=re();if(!ge)return;$.preventDefault(),R(ge),K(ge.rowIndex??-1,ge.field);return}const{id:Y,field:ne}=H,me=Y===null&&!!H.headerFilter,j=Y!==null?ie:me?-1:ee,le=n.findIndex(ge=>ge.field===ne),we=n.filter(ge=>Ze(ge.field)).length,pe=ge=>Xe(ge,E),he=(ge,ve,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:ve,colIndex:ke-we,rowMeta:E?.get(C(ge))},y)},Ce=ge=>{let ve=j,ke=le;const xe=(t.length+1)*n.length;for(let je=0;je<xe;je++){if(ke+=ge,ke>=n.length?(ke=0,ve++):ke<0&&(ke=n.length-1,ve--),ve<0||ve>=t.length)return null;const nt=t[ve];if(!L?.(C(nt),n[ke].field)&&he(nt,ve,ke))return{r:ve,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=Ce($.shiftKey?-1:1);ge&&($.preventDefault(),d.stopCellEdit(),q(ge.r,ge.c))}return}if(T==="Escape"&&D?.collapseSelection()){$.preventDefault();return}if(T==="Tab"||T==="Escape"||P==="control"&&(T==="Enter"||X))return;if(($.ctrlKey||$.metaKey)&&(T==="a"||T==="A")){if(D){D.selectAllCells()&&$.preventDefault();return}if(!S||!F||!M)return;$.preventDefault(),M(!0);return}if(me&&(T==="Enter"||X))return;if(Y===null){if(T==="Enter"||X){if($.preventDefault(),ne===Je){Xo(O,H,-1)?.click();return}const ge=n[le];if(!ge||Ze(ne)||ge.sortable===!1)return;const ve=u.find(xe=>xe.field===ne),ke=ve?ve.sort==="asc"?"desc":null:"asc";(w||$.shiftKey)&&h?h(ne,ke):g(ne,ke);return}}else if(T==="Enter"||X){$.preventDefault();const ge=t[j];if(ne===Je){i(Y,!r.has(Y));return}if(ne===Pt){$.shiftKey||l(Y);return}if(X){$.shiftKey&&S&&!pe(Y)&&i(Y,!r.has(Y));return}if(ne===At)return;if(he(ge,j,le)){d.startCellEdit({id:Y,field:ne,value:Le(ge,ne,n[le])});return}if(N&&E?.get(Y)?.hasChildren){N(Y);return}k?.({row:ge,id:Y,rowIndex:j});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(!zi.has(T))return;$.preventDefault();const be=t.length-1,de=n.length-1,ye=$.ctrlKey||$.metaKey,Ee=p?f:10;if(D&&$.shiftKey&&Y!==null&&Ye(ne)&&D.extendSelection(T,ye,Ee,H))return;const Me=(ge,ve)=>{switch(T){case"ArrowRight":return ve+1>de?{r:ge+1,c:0}:{r:ge,c:ve+1};case"ArrowLeft":return ve-1<0?{r:ge-1,c:de}:{r:ge,c:ve-1};case"ArrowDown":return{r:ge+1,c:ve};case"ArrowUp":return{r:ge-1,c:ve};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:ve};default:return{r:Math.min(be,ge+Ee),c:ve}}},Ne=({r:ge,c:ve})=>ge>=ee&&ge<=be&&ve>=0&&ve<=de,Ie=({r:ge,c:ve})=>ge>=0?L?.(C(t[ge]),n[ve].field)??null:null;let Se=Me(j,le);if(T.startsWith("Arrow"))for(let ge=Ne(Se)?Ie(Se):null;ge&&ge.rowId===Y&&ge.field===ne;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=>C(ke)===Oe.rowId),ve=n.findIndex(ke=>ke.field===Oe.field);ge!==-1&&ve!==-1&&(Se={r:ge,c:ve})}Se.r===j&&Se.c===le||q(Se.r,Se.c)},[H,ie,t,n,d,r,i,l,a,u,g,h,w,y,p,f,E,k,N,M,S,F,re,K,L,C,D,v]);return{focusedCell:H,setFocusedCell:R,viewportTabIndex:Q?-1:0,ensureGridFocus:ce,handleFocus:ae,handleBlur:fe,handleKeyDown:Z,handleMouseDownCapture:J}}const Jo=[];function hc(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 mc=[],wc={rowFields:[],columnFields:[],valueFields:[]},Ki=100;function bc(e){return!e||e.length===0||e.includes(Ki)?Ki:e[0]}function xc(e){const{initialState:t,sortModel:n,onSortModelChange:o,filterModel:r,onFilterModelChange:i,aggregationModel:l,onAggregationModelChange:d,rowGroupingModel:a,onRowGroupingModelChange:u,columnVisibilityModel:g,onColumnVisibilityModelChange:h,pinnedColumns:w,onPinnedColumnsChange:y,pivotModel:p,onPivotModelChange:f,paginationModel:m,onPaginationModelChange:x,pageSizeOptions:b,rowSelectionModel:C,onRowSelectionModelChange:E,density:k,cellSelectionModel:N,onCellSelectionModelChange:M}=e,[S,F]=s.useState(()=>t?.sorting?.sortModel??[]),I=n!==void 0,A=I?n:S,_=s.useCallback(xe=>{I||F(xe),o?.(xe)},[I,o]),[L,D]=s.useState(()=>t?.filter?.filterModel??{items:[]}),v=r!=null,V=v?r:L,R=s.useCallback(xe=>{v||D(xe),i?.(xe)},[v,i]),Q=l!==void 0,[G,W]=s.useState(()=>l??{}),H=JSON.stringify(Q?l:G),ie=s.useMemo(()=>JSON.parse(H),[H]),oe=s.useCallback(xe=>{Q||W(xe),d?.(xe)},[Q,d]),ue=a!==void 0,[se,U]=s.useState(Jo),te=(ue?a:se)||Jo,ce=s.useCallback(xe=>{ue||U(xe),u?.(xe)},[ue,u]),z=g!==void 0,[re,K]=s.useState(()=>t?.columns?.columnVisibilityModel??{}),J=z?g:re,ae=s.useCallback(xe=>{z||K(xe),h?.(xe)},[z,h]),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??wc),B=p??T,ee=s.useCallback(xe=>{X(xe),f?.(xe)},[f]),q=m!==void 0,[Y,ne]=s.useState(()=>t?.pagination?.paginationModel??m??{page:0,pageSize:bc(b)}),me=q?m:Y,j=s.useCallback(xe=>{q||ne(xe),x?.(xe)},[q,x]),le=C!==void 0,[we,pe]=s.useState([]),he=le?C:we,Ce=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,le||pe(xe),E?.(xe)},[le,E]),[Ee]=s.useState(()=>t?.density?.density??"standard"),Me=k??Ee,Ne=N!==void 0,[Ie,Se]=s.useState(mc),Oe=Ne?N:Ie,ge=s.useRef(null);s.useLayoutEffect(()=>{ge.current=null});const ve=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:F,handleSortModelChange:_,filterModel:V,isFilterControlled:v,handleFilterModelChange:R,aggregationModel:ie,handleAggregationModelChange:oe,rowGroupingModel:te,handleRowGroupingModelChange:ce,columnVisibilityModel:J,handleColumnVisibilityModelChange:ae,pinnedColumns:O,handlePinnedColumnsChange:P,currentPivotModel:B,handlePivotModelChange:ee,effectivePaginationModel:me,handlePaginationModelChange:j,rowSelectionModel:he,selectedRowIds:Ce,isSelectionControlled:le,setInternalRowSelectionModel:pe,handleRowSelectionModelChange:ye,getPendingRowSelectionModel:de,density:Me,cellSelectionModel:Oe,handleCellSelectionModelChange:ke,getPendingCellSelectionModel:ve}}const ji=s.createContext(null),yc=52,Cc=56,vc=32,_c=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 Sc(e){const{rowHeight:t,headerHeight:n,density:o}=e,r=s.useContext(ji)?.grid;let i;return o==="compact"?i=jn(r?.rowHeightCompact)??vc:o==="comfortable"?i=jn(r?.rowHeightComfortable)??_c:i=t??jn(r?.rowHeightStandard)??yc,{rowHeight:i,headerHeight:n??jn(r?.headerHeight)??Cc}}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 kc(e){const{paginationMode:t,hasDataSource:n,dataSourceRowCount:o,rowCountProp:r,clientRowCount:i}=e;return t!=="server"?i:(n?o??r:r)??i}function Ui(e){return e?{paginationRowsPerPage:e.paginationRowsPerPage,paginationOf:e.paginationOf,paginationPage:e.paginationPage}:void 0}function Ri(e,t){return Number.isFinite(e)?Math.min(Math.max(0,Math.floor(e)),Math.max(0,t-1)):0}function Ec(e){const{effectiveRows:t,activeHierarchyHandlers:n,filterMode:o,filterModel:r,sortModel:i,sortingMode:l,pagination:d,paginationMode:a,effectivePaginationModel:u,pinnedRows:g,getRowId:h,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:m,center:x,bottom:b}=s.useMemo(()=>n?{top:[],center:p,bottom:[]}:Ca(p,g,h),[p,g,n,h]),C=s.useMemo(()=>n||l==="server"?x:ja(x,i,w,h),[x,i,n,l,w,h]),E=d&&a!=="server",k=Un(u.pageSize),N=E?Ri(u.page,Zo(C.length,k)):u.page,M=s.useMemo(()=>{if(!E)return C;const F=N*k;return C.slice(F,F+k)},[C,E,N,k]),S=s.useMemo(()=>{const F=d?M:C;return[...m,...F,...b]},[m,M,C,b,d]);return{filteredRows:p,dataRows:f,pinnedTopRows:m,unpinnedRows:x,pinnedBottomRows:b,sortedUnpinnedRows:C,paginatedUnpinnedRows:M,currentPage:N,allRenderableRows:S}}const Qo=[33554400,17895e3,1e7,5e6],qi=new WeakMap;function Mc(e){const t=e.body;if(!t)return 1/0;const n=e.createElement("div");n.setAttribute("aria-hidden","true"),n.style.cssText="position:absolute;top:0;left:-10000px;width:1px;visibility:hidden;pointer-events:none;",t.appendChild(n);try{if(n.style.height="100px",Math.abs(n.getBoundingClientRect().height-100)>1)return 1/0;for(const o of Qo)if(n.style.height=`${o}px`,Math.abs(n.getBoundingClientRect().height-o)<2)return o;return Qo[Qo.length-1]}finally{n.remove()}}function Nc(e){if(!e)return 1/0;const t=qi.get(e);if(t!==void 0)return t;const n=Mc(e);return qi.set(e,n),n}function Ic(e,t){if(!Number.isFinite(t))return e.length;let n=0,o=e.length;for(;n<o;){const r=n+o>>1;e[r]<=t?n=r+1:o=r}return n}function Lc(e){const[t,n]=s.useState(void 0);return s.useLayoutEffect(()=>{const o=Nc(e.current?.ownerDocument);n(r=>r===o?r:o)},[e]),t}function Ac(e){const{layout:t,scrollTop:n,scrollLeft:o,viewportWidth:r,viewportHeight:i,autoHeight:l,rowReordering:d,hasDetailPanel:a,checkboxSelection:u,pinCheckboxColumn:g,pinExpandColumn:h,overscanRows:w=5,maxContentHeight:y=1/0}=e;return s.useMemo(()=>{const{unpinnedAccWidths:p,unpinnedColsWithWidth:f,leftPinnedCols:m,rightPinnedCols:x,totalWidth:b,leftWidth:C,rightWidth:E,unpinnedTotalWidth:k,systemColumnsWidth:N,cumulativeHeights:M,pinnedTopHeight:S,pinnedBottomHeight:F,unpinnedRowsHeight:I,rowHeights:A,unpinnedRowsLength:_}=t,L=r||1e3,D=l?S+I+F+50:i||600,v=6,V=Math.max(0,o-C),R=o+L-C;let Q=0,G=f.length-1,W=0,H=p.length-1;for(;W<=H;){const $=W+H>>>1;p[$]<V?W=$+1:H=$-1}Q=Math.max(0,W-v);for(let $=Q;$<p.length;$++){if(($===0?0:p[$-1])>R){G=Math.min(f.length-1,$+v);break}G=Math.min(f.length-1,$+v)}const ie=Q>0?p[Q-1]:0,oe=k-p[G],ue=[...m,...ie>0?[{field:"__spacer_left__",width:ie,isSpacer:!0}]:[],...f.slice(Q,G+1),...oe>0?[{field:"__spacer_right__",width:oe,isSpacer:!0}]:[],...x],U=L>0&&b>L?16:0,te=S+I+F+U+2,ce=te-S-F,z=Number.isFinite(y)?Math.max(0,Math.min(ce,y-S-F)):ce;let re=0,K=_-1,J=0,ae=0,fe=M.length-1;for(;ae<=fe;){const $=ae+fe>>>1;M[$]<n?ae=$+1:fe=$-1}re=Math.max(0,ae-w),J=re>0?M[re-1]:0;for(let $=re;$<M.length;$++)if(M[$]>=n+D){K=Math.min(_-1,$+w);break}const Z=(d?48:0)+(a&&h?48:0)+(u&&g?48:0);return{renderContext:{firstRowIndex:re,lastRowIndex:K,firstColumnIndex:Q,lastColumnIndex:G},offsetTop:J,offsetLeft:0,totalHeight:te,virtualContainerHeight:z,pinnedTopHeight:S,pinnedBottomHeight:F,totalWidth:b,rowHeights:A,cumulativeHeights:M,virtualColumns:ue,columnMetrics:{leftPinnedWidth:C,rightPinnedWidth:E,unpinnedAccWidths:p,unpinnedCols:f,totalSpecialsWidth:N,pinnedSpecialsWidth:Z}}},[t,n,o,r,i,l,d,a,u,g,h,w,y])}const er="application/x-ogx-row",tr="application/x-ogx-column";function Xi(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 Yi(e,t){if(!e||typeof e.addEventListener!="function")return()=>{};const n=()=>t();return e.addEventListener("dragend",n,{once:!0}),()=>e.removeEventListener("dragend",n)}function Pc(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=Yi(p.currentTarget,u),i(y),p.dataTransfer&&(p.dataTransfer.effectAllowed="move",Xi(p,tr,y))}},[t,o,u]),h=s.useCallback(y=>p=>{if(!(o||r===null)){if(!Rn(p,tr)){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,tr)){u();return}const f=t.findIndex(x=>x.field===r),m=t.findIndex(x=>x.field===y);u(),!(f===-1||m===-1||f===m)&&n?.({column:t[f],oldIndex:f,targetIndex:m})},[t,r,o,n,u]);return{draggedColumn:r,dragOverColumn:l,onDragStart:o?void 0:g,onDragOver:o?void 0:h,onDragEnd:o?void 0:u,onDrop:o?void 0:w}}function nr({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 Tc({renderFn:e}){"use no memo";return c.jsx(c.Fragment,{children:e()})}function Fc(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 Fc(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(Tc,{renderFn:this.props.renderFn})}}function Oc(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 Ji(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 Zi(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 Dc(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 $c=e=>e.id;function Gc(e){const{activeColumns:t,isHierarchyEnabled:n,isRowGrouping:o,isTreeData:r,activeHierarchyHandlers:i,columnVisibilityModel:l,columnOrder:d,onColumnOrderChange:a,onColumnOrderModelChange:u,disableColumnReorder:g,pivotMode:h,checkboxSelection:w,hasDetailPanel:y,rowReordering:p,initialState:f,setColumns:m,pinnedColumns:x,getRowId:b=$c,aggregationModel:C,groupingRows:E}=e,k=s.useMemo(()=>t.map(K=>K.field),[t]),[N,M]=s.useState(()=>f?.columns?.columnOrder??null),S=h?k.join("\0"):"",[F,I]=s.useState(null),A=F&&F.key===S?F.order:k,L=h?A:d??(N??k),D=s.useCallback(K=>{if(h){I(J=>{const ae=J&&J.key===S?J.order:k;return{key:S,order:typeof K=="function"?K(ae):K}});return}M(J=>typeof K=="function"?K(J??k):K)},[h,S,k]),v=s.useCallback(K=>h&&K.hideable===!1||l[K.field]!==!1,[h,l]),V=s.useMemo(()=>{if(!n)return;const K=new Map(L.map((Z,$)=>[Z,$])),J=Z=>K.get(Z.field)??t.indexOf(Z),ae=[...t].sort((Z,$)=>J(Z)-J($));return(Ji(ae.filter(Z=>l[Z.field]!==!1),x)[0]??t[0])?.field},[n,L,t,l,x]),R=s.useMemo(()=>{if(!n)return t;const K=o?E:void 0;return t.map(J=>{const ae=Oc(J,C?.[J.field],K);return J.field===V?{...J,...ae,renderCell:fe=>{const Z=fe.rowMeta,$=Z?.treeDepth??0,O=!!Z?.hasChildren,P=!!Z?.isExpanded,T=Zi(J,fe,!0),X=T.useDefault?Dc(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(nr,{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,...ae,renderCell:fe=>{const Z=fe.rowMeta;if(!Z?.isGroupRow)return J.renderCell?J.renderCell(fe):qn(fe);const $=Zi(J,fe,!1);return $.useDefault?J.field===Z.groupingField&&!Z.isGroupFooter||fe.value==null?null:qn(fe):$.content}}})},[t,n,o,r,i,V,b,C,E]),[Q,G]=s.useState(()=>f?.columns?.columnWidths??{}),W=s.useCallback((K,J)=>{G(ae=>({...ae,[K]:J}))},[]);s.useEffect(()=>{m(t)},[t,m]);const H=s.useMemo(()=>{const K=new Map(L.map((J,ae)=>[J,ae]));return[...R].sort((J,ae)=>{const fe=K.get(J.field)??R.indexOf(J),Z=K.get(ae.field)??R.indexOf(ae);return fe-Z})},[R,L]),ie=s.useMemo(()=>H.filter(v),[H,v]),oe=s.useCallback((K,J)=>{(h||!d)&&D(K),J&&a?.(J),h||u?.(K)},[h,d,D,a,u]),ue=s.useCallback((K,J)=>{const ae=H.map(Z=>Z.field),[fe]=ae.splice(K,1);ae.splice(J,0,fe),oe(ae,{column:H[K],oldIndex:K,targetIndex:J})},[H,oe]),se=Pc({columns:H,onColumnOrderChange:s.useCallback(({oldIndex:K,targetIndex:J})=>ue(K,J),[ue]),disableColumnReorder:g}),U=s.useCallback((K,J)=>{const ae=H.findIndex(Z=>Z.field===K),fe=H.findIndex(Z=>Z.field===J);ae===-1||fe===-1||ae===fe||ue(ae,fe)},[H,ue]),te=s.useCallback(()=>{oe(k)},[oe,k]),ce=s.useMemo(()=>Ji(ie,x),[ie,x]),z=s.useMemo(()=>{const K=[];return p&&K.push({field:At,sortable:!1,editable:!1}),y&&K.push({field:Pt,sortable:!1,editable:!1}),w&&K.push({field:Je,sortable:!1,editable:!1}),[...K,...ce]},[ce,w,y,p]),re=s.useMemo(()=>new Map(ce.map((K,J)=>[K.field,J])),[ce]);return{effectiveColumns:R,hierarchyField:V,orderedColumns:H,visibleOrderedColumns:ie,renderOrderedColumns:ce,navigationColumns:z,columnIndexMap:re,columnWidths:Q,effectiveColumnOrder:L,setInternalColumnOrder:D,columnReorderHandlers:se,moveColumn:U,resetColumnOrder:te,handleColumnResize:W}}const Hc=e=>e.id;function Bc(e){const{renderContext:t,pinnedTopRows:n,pinnedBottomRows:o,paginatedUnpinnedRows:r,sortedUnpinnedRows:i,pagination:l,getRowId:d=Hc}=e;return s.useMemo(()=>{const{firstRowIndex:a,lastRowIndex:u}=t,g=l?r:i,h=n.length,w=n.map((C,E)=>({row:C,id:d(C),rowIndex:E,pinned:"top"})),y=o.map((C,E)=>({row:C,id:d(C),rowIndex:h+g.length+E,pinned:"bottom"})),p=Math.max(0,a),f=Math.min(g.length,u+1),m=g.slice(p,f).map((C,E)=>({row:C,id:d(C),rowIndex:h+p+E})),x=[...w,...m,...y],b=new Set;return x.filter(C=>b.has(C.id)?!1:(b.add(C.id),!0))},[t,n,o,r,i,l,d])}const Wc=100;function Qi(e){const{scrollTop:t,scrollHeight:n,clientHeight:o}=e;return n-t-o>=Wc?null:{visibleTop:t,visibleBottom:t+o,viewportHeight:o}}function Vc(e){return e<.5?3:e<3?5:e<15?12:e<40?20:30}function zc(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),h=s.useRef(t),[w,y]=s.useState({scrollTop:0,scrollLeft:0,velocityOverscan:0});s.useEffect(()=>{h.current=t},[t]),s.useEffect(()=>()=>{d.current!==null&&cancelAnimationFrame(d.current),a.current!==null&&clearTimeout(a.current)},[]);const p=s.useCallback(x=>{const b=Qi(x);if(!b){g.current=!0;return}if(!g.current)return;const C=h.current;C&&(g.current=!1,C(b))},[]),f=s.useCallback(x=>{const b=x.currentTarget,C=performance.now(),E=Math.abs(b.scrollTop-l.current.scrollTop)+Math.abs(b.scrollLeft-l.current.scrollLeft),k=C-l.current.time,N=k>0?E/k:0,M=b.scrollTop!==l.current.scrollTop;l.current={scrollTop:b.scrollTop,scrollLeft:b.scrollLeft,time:C},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:F,velocity:I}=i.current;y({scrollTop:S,scrollLeft:F,velocityOverscan:Vc(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 m=s.useCallback(x=>{if(u.current=x,!x)return;const{scrollTop:b,scrollLeft:C}=i.current;if(b===0&&C===0)return;x.scrollTop=b,x.scrollLeft=C;const E={scrollTop:x.scrollTop,scrollLeft:x.scrollLeft};(E.scrollTop!==b||E.scrollLeft!==C)&&(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:m}}function Kc(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 jc(e){const{setDimensions:t,viewportRef:n,...o}=e,{scrollTop:r,scrollLeft:i,overscanRows:l,handleScroll:d,attachViewport:a}=zc(o),u=Kc(t),g=s.useCallback(h=>{n.current=h,u(h),a(h)},[n,u,a]);return{scrollTop:r,scrollLeft:i,overscanRows:l,handleScroll:d,setViewportElement:g}}function Uc(){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 Rc(e){const{hasDetailPanel:t,controlledExpandedRowIds:n,onDetailPanelExpandedRowIdsChange:o,rowMetaMap:r}=e,[i,l]=s.useState(new Set),d=n??i,a=s.useMemo(()=>Ea(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:h}=Uc();return{hasDetailPanel:t,expandedRowIds:a,handleDetailPanelToggle:u,detailPanelHeights:g,reportDetailPanelHeight:h}}const qc=new Set(["__group__"]),wn=e=>!qc.has(e);function el(e){return Object.keys(e).every(wn)?e:Object.fromEntries(Object.entries(e).filter(([n])=>wn(n)))}function Xc(e){const t={...e};return e.left&&(t.left=e.left.filter(wn)),e.right&&(t.right=e.right.filter(wn)),t}function Yc(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 h=s.useRef(null);s.useEffect(()=>{if(!g.current)return;const w={sorting:{sortModel:n},filter:{filterModel:o},pagination:{paginationModel:r},columns:{columnWidths:el(i),columnOrder:l.filter(wn),columnVisibilityModel:el(d),pinnedColumns:Xc(a)},density:{density:u}},y=JSON.stringify(w);y!==h.current&&(h.current=y,g.current(w))},[n,o,r,i,l,d,a,u])}const Jc=200,Zc=2e3,Qc=178e5;function ed(e){const{paginationRequested:t,isRowGrouping:n,autoHeight:o,viewportHeight:r,renderedRowCount:i,totalRowCount:l,pinnedRowsIgnored:d=!1,scrollHeight:a=0,maxContentHeight:u,reachableRowCount:g,unpinnedRowCount:h,listViewWithoutColumn:w=!1,listViewRowCount:y=0}=e,p=s.useRef(!1),f=s.useRef(!1),m=s.useRef(!1),x=s.useRef(!1),b=s.useRef(!1),C=s.useRef(!1);s.useEffect(()=>{process.env.NODE_ENV==="production"||C.current||y<=Zc||(C.current=!0,console.warn(`[OpenGridX] The list view is rendering all ${y} 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.`))},[y]),s.useEffect(()=>{process.env.NODE_ENV==="production"||b.current||!w||(b.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."))},[w]),s.useEffect(()=>{process.env.NODE_ENV==="production"||m.current||!d||(m.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(()=>{if(process.env.NODE_ENV==="production"||x.current||u===void 0)return;const E=Number.isFinite(u);if(E?a<=u:a<=Qc)return;x.current=!0;const k=E&&g!==void 0&&h!==void 0?`Only the first ${g.toLocaleString("en-US")} of ${h.toLocaleString("en-US")} rows can be scrolled to in this browser. `:"The last rows may not be reachable by scrolling. ";console.warn(`[OpenGridX] The grid content is ${Math.round(a)}px tall, more than this browser lays out (about 17.9M px in Firefox, 33.5M px in Chrome and Safari). `+k+"Use pagination, server-side or infinite loading, or a smaller rowHeight. See docs/features/virtualization.md.")},[a,u,g,h]),s.useEffect(()=>{process.env.NODE_ENV==="production"||p.current||t&&n&&(p.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"||f.current||o||r>0&&l>Jc&&i>=l&&r>=a&&(f.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 td(e){return typeof window>"u"||typeof window.getComputedStyle!="function"||typeof navigator<"u"&&/jsdom/i.test(navigator.userAgent)?!1:window.getComputedStyle(e).display!=="flex"}let tl=!1;function nd(e){s.useEffect(()=>{if(process.env.NODE_ENV==="production"||tl)return;const t=e.current;!t||!td(t)||(tl=!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 od(e,t,n){return n?e.has(t)?[]:[t]:Xn(e,[t],!e.has(t),!1)}function nl(e,t){return t.length===e.size&&t.every(n=>e.has(n))}function rd(e){const{selectedRowIds:t,onSelectionModelChange:n,disableMultipleRowSelection:o,selectableRowIds:r}=e,i=s.useCallback(h=>{nl(t,h)||n(h)},[t,n]),l=s.useCallback((h,w)=>{i(Xn(t,[h],w,o))},[i,t,o]),d=s.useCallback(h=>{i(od(t,h,o))},[i,t,o]),a=s.useCallback(h=>{i(Xn(t,r,h,!1))},[i,t,r]),{allSelected:u,someSelected:g}=s.useMemo(()=>{let h=0;for(const y of r)t.has(y)&&h++;const w=r.length>0&&h===r.length;return{allSelected:w,someSelected:!w&&h>0}},[r,t]);return{toggleRow:l,clickRow:d,selectAll:o?void 0:a,allSelected:u,someSelected:g}}function id(e){const{dataRows:t,getRowId:n,isPivotActive:o,selectedRowIds:r,onSelectionModelChange:i,disableMultipleRowSelection:l,disableRowSelectionOnClick:d,isHierarchyEnabled:a,rowMetaMap:u,activeHierarchyHandlers:g,onRowClick:h}=e,w=s.useMemo(()=>{const b=t.map(n);return o?b.filter(C=>C!==Kt):b},[t,n,o]),y=rd({selectedRowIds:r,onSelectionModelChange:i,disableMultipleRowSelection:l,selectableRowIds:w}),{clickRow:p,toggleRow:f}=y,m=s.useCallback(b=>{const{id:C}=b,E=a?u.get(C):void 0;if(E?.isGroupRow){E.hasChildren&&g?.toggleExpansion(C);return}h?.(b),!d&&!Xe(C,u)&&p(C)},[a,g,h,u,d,p]),x=s.useCallback((b,C)=>{Xe(b,u)||f(b,C)},[u,f]);return{rowSelection:y,handleRowClick:m,handleSelectionChange:x}}const ol=e=>JSON.stringify(Array.from(e,t=>typeof t=="number"?["n",t]:["s",t]));function ld(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 h of t)n.has(h)||o.has(h)?g.add(h):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=`${ol(t)}|${ol(l)}`;a.current!==u&&(a.current=u,d.current(Array.from(l)))},[l,t]),l}function or(e,t,n,o){return o?Ua(e,t,n):n?[{field:t,sort:n}]:e.filter(r=>r.field!==t)}function sd(e){const{sortModel:t,onSortModelChange:n}=e,o=s.useCallback((i,l)=>{n(or(t,i,l,!1))},[t,n]),r=s.useCallback((i,l)=>{n(or(t,i,l,!0))},[t,n]);return{handleSort:o,handleSortAdd:r}}function ad(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=va(i.current.pinnedColumns,a,u);i.current={...i.current,pinnedColumns:g},r(g)},[r]);return{handleHideColumn:l,handlePinColumn:d}}function cd(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:h,onSortModelChange:w}=r(),y=or(g,a,u,h);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:h,isSyntheticRowId:w}=r(),y=w?a.filter(m=>!w(m)):a;if(y.length===0)return;const p=l(),f=Xn(p,y,u,g);nl(p,f)||(n.current={...r(),selectedRowIds:new Set(f)},h(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:h,pivotModel:w,columnVisibilityModel:y}=r();return{filterModel:a,sortModel:u,rowGroupingModel:g,aggregationModel:h,pivotModel:w,columnVisibilityModel:y}}},[t])}const rl="\0";function dd(e,t){const n=e.filter(o=>t[o.field]===!1).map(o=>o.field).join(rl);return s.useMemo(()=>{const o={};if(n)for(const r of n.split(rl))o[r]=!1;return jo(e,o)},[e,n])}function ud({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 fd(){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(m=>m+1),()=>d(m=>m-1))}),[]),h=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 m(b){r.current&&!r.current.contains(b.target)&&o(!1)}function x(b){b.key==="Escape"&&o(!1)}return document.addEventListener("mousedown",m),document.addEventListener("keydown",x),()=>{document.removeEventListener("mousedown",m),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?h:void 0}}const il=s.createContext(null);function gd(e){if(typeof e!="function")return!1;const t=e.prototype;return!(typeof t=="object"&&t!==null&&"isReactComponent"in t)}function pd({render:e,toolbarProps:t}){"use no memo";return c.jsx(c.Fragment,{children:e(t)})}function hd({component:e,toolbarProps:t}){if(gd(e))return c.jsx(pd,{render:e,toolbarProps:t},`fn:${e.toString()}`);const n=e;return c.jsx(n,{...t})}const ll=48;function md({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:h=!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?ll:0,m=f+(l&&u?ll:0),x=(b,C,E)=>c.jsx("div",{className:`ogx__aggregation-spacer${C?" ogx__aggregation-spacer--pinned":""}`,style:C?{left:E}:void 0,"aria-hidden":"true"},b);return c.jsxs("div",{className:`ogx__aggregation-footer${h?" ogx__aggregation-footer--loading":""}`,role:"row","aria-label":"Aggregation totals","aria-live":"polite","aria-busy":h||void 0,style:{minHeight:`${r}px`},children:[d&&x("__reorder_col__",!0,0),l&&x("__expand_col__",u,f),i&&x("__checkbox_col__",a,m),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 C=t[b.field],E=C&&Do(b,C)?C:void 0,k=n[b.field],N=Nt(b,o,120),M=ct(b.field,g),S=M?w[b.field]:void 0,F=["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:F,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 wd({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 sl({dataSource:e,paginationMode:t,sortingMode:n,filterMode:o}){return!!e&&(t==="server"||t==="infinite"||n==="server"||o==="server")}const al=Number.MAX_SAFE_INTEGER,bd="An unexpected error occurred while loading the data.";function cl(e){return typeof e=="string"&&e?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"&&e.message?e.message:bd}function xd({error:e,onRetry:t}){if(!e)return null;const n=cl(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 dl(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(h=>{a.current=h,dl(i,h),dl(d,h)},[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 ul=50;function rr(e,t,n,o){const r=Math.min(n??ul,t),i=Math.max(o??1/0,t);return Math.max(r,Math.min(i,e))}const yd=16;function Cd(e){e.preventDefault(),e.stopPropagation()}function vd(){const e=t=>{t.stopPropagation(),t.preventDefault()};window.addEventListener("click",e,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",e,{capture:!0}),0)}function _d(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 h=s.useCallback((b,C)=>{const E=C-b.startX,k=b.startWidth+(d==="start"?-E:E);return rr(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 C=g.current;if(!C||b.pointerId!==C.pointerId||(b.clientX!==C.startX&&(C.moved=!0),!C.moved))return;const E=Date.now();E-C.lastUpdate>=yd&&(C.lastUpdate=E,o(t,h(C,b.clientX)))},[t,o,h]),p=s.useCallback((b,C)=>{const E=g.current;!E||b.pointerId!==E.pointerId||(g.current=null,u(!1),(E.moved||b.clientX!==E.startX)&&(vd(),C&&o(t,h(E,b.clientX))))},[t,o,h]),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 C=(b.shiftKey?50:10)*(b.key==="ArrowRight"?1:-1);o(t,rr(n+C,n,i,l))},[t,n,o,r,i,l]),m=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:Cd,onPointerMove:y,onPointerUp:b=>p(b,!0),onPointerCancel:b=>p(b,!1),onClick:b=>b.stopPropagation(),onDragStart:b=>{b.preventDefault(),b.stopPropagation()},onDoubleClick:m,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 fl(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 gl(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 ir(e,t,n){if(!e||e.length===0)return!0;const o=gl(e),r=o.get(t),i=o.get(n);return(r?.[r.length-1]??null)===(i?.[i.length-1]??null)}function Sd(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 pl(){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 kd(){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 Ed(){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 Md(){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 Nd(){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 Id(){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 Ld(){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 Ad(){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 Pd(){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 hl=e=>e?Array.from(e.querySelectorAll('[role="menuitem"], [role="menuitemradio"]')):[];function Td({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]),h=I=>{const A=hl(u.current),_=A.indexOf(I.target);let L=-1;if(I.key==="ArrowDown")L=_+1>=A.length?0:_+1;else if(I.key==="ArrowUp")L=_<=0?A.length-1:_-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(),_=Ot(),L=pl(),D=8;let v=I.left;v+A.width+D>_&&(v=_-A.width-D),v<D&&(v=D);let V=I.bottom+4;V+A.height+D>L&&(V=I.top-A.height-4),y({position:"fixed",zIndex:1300,top:V,left:v,visibility:"visible"})},[a]);const p=w.visibility==="visible";s.useLayoutEffect(()=>{p&&hl(u.current)[0]?.focus({preventScroll:!0})},[p]),s.useEffect(()=>{function I(_){u.current&&!u.current.contains(_.target)&&a&&!a.contains(_.target)&&d()}function A(_){_.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)},m=!!o&&e.hideable!==!1,x=!!r&&e.pinnable!==!1,b=()=>{m&&o?.(e.field),g(!0)},C=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,F=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 ${F}`,onKeyDown:h,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(Ed,{})}),"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(Md,{})}),"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(Nd,{})}),"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:()=>C("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(Ld,{})}),"Pin to Left"]}),c.jsxs("button",{type:"button",className:`ogx-menu-item${M?" ogx-menu-item--active":""}`,onClick:()=>C("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(Ad,{})}),"Pin to Right"]}),c.jsxs("button",{type:"button",className:`ogx-menu-item${S?" ogx-menu-item--active":""}`,onClick:()=>C(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(Pd,{})}),"Unpin"]}),c.jsx("div",{className:"ogx-menu-divider"})]}),m&&c.jsxs(c.Fragment,{children:[c.jsxs("button",{type:"button",className:"ogx-menu-item",onClick:b,role:"menuitem","aria-label":`Hide ${F} 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(Id,{})}),"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(kd,{})}),"Manage columns"]})]}),a?.closest(".ogx-theme-provider")||document.body)}const Fd=16,Od=16;function Dd(e,t=!1){const n=Number.isFinite(e)?e-Od:0,o=Math.floor(n/Fd)-(t?1:0);return Math.max(1,o)}function $d(e,t){return e??t??!1}function ml(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 Gd="header:",Hd=40,Bd=300,Wd="__group__",wl=[];function lr(e){return`${Gd}${e}`}function sr(e){return"items"in e&&Array.isArray(e.items)}function Vd(e){return e.isSpacer||Ze(e.field)||e.field===Wd?!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 zd(e){const t=xi(e.type),n=Yn(e);return t.includes(n)?t:[n,...t]}function bl(e,t){return e.items.some(n=>sr(n)?bl(n,t):n.field===t)}function Kd(e){return(e?.logicOperator??"and")==="or"&&(e?.items?.length??0)>0}function xl(e,t){const n=e?.items??wl;if(Kd(e))return{kind:"custom"};const o=lr(t);let r;for(const i of n){if(sr(i)){if(bl(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 jd(e,t,n){const o=e??{items:[]};if(xl(o,t).kind!=="editable")return o;const r=lr(t),i=o.items??wl,l=i.findIndex(u=>!sr(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 ar(e,t,n){const o=Vt.has(t);return!o&&$o(n)&&t===Yn(e)?null:{id:lr(e.field),field:e.field,operator:t,value:o?void 0:n}}function yl(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 Ud={contains:"∋",equals:"=",startsWith:"a…",endsWith:"…a",isEmpty:"∅",isNotEmpty:"!∅",isAnyOf:"∈","=":"=","!=":"≠",">":">",">=":"≥","<":"<","<=":"≤",is:"=",not:"≠",after:">",onOrAfter:"≥",before:"<",onOrBefore:"≤"},cr={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(" "),h=["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:h,"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 Rd={position:"fixed",zIndex:1300,top:0,left:0,visibility:"hidden"},Cl=e=>e?Array.from(e.querySelectorAll('[role="menuitemradio"]')):[];function qd({anchorEl:e,columnLabel:t,operators:n,current:o,onSelect:r,onClose:i}){const l=s.useRef(null),[d,a]=s.useState(Rd);s.useLayoutEffect(()=>{const w=l.current;if(!w)return;const y=e.getBoundingClientRect(),p=w.getBoundingClientRect(),f=8;let m=Math.min(y.left,Ot()-p.width-f);m<f&&(m=f);let x=y.bottom+4;x+p.height+f>pl()&&(x=y.top-p.height-4),a({position:"fixed",zIndex:1300,top:x,left:m,visibility:"visible"})},[e]);const u=d.visibility==="visible";s.useLayoutEffect(()=>{if(!u)return;const w=Cl(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 m(){g.current(!1)}return w.addEventListener("mousedown",p),y?.addEventListener("scroll",f,!0),y?.addEventListener("resize",m),()=>{w.removeEventListener("mousedown",p),y?.removeEventListener("scroll",f,!0),y?.removeEventListener("resize",m)}},[e]);const h=w=>{w.stopPropagation();const y=Cl(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:h,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:cr[w]??w},w))}),e.closest(".ogx-theme-provider")??e.ownerDocument.body)}function Xd(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 Yd(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 vl(e,t){return t==="isAnyOf"?e.split(",").map(n=>n.trim()).filter(n=>n!==""):e}function _l(e,t){return Object.is(e,t)?!0:Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((n,o)=>_l(n,t[o])):!1}function Sl(e,t){return e===t?!0:!e||!t?!1:e.operator===t.operator&&_l(e.value,t.value)}function Jd(){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 Zd({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=Xd(e),h=e.type==="boolean"||e.type==="singleSelect"&&g.length>0,w=!Vt.has(u),[y,p]=s.useState(null),[f,m]=s.useState(null),[x,b]=s.useState(void 0),[C,E]=s.useState(a);if(C!==a){E(a);const U=x!==void 0&&Sl(x??void 0,a);!Sl(C,a)&&!U&&p(null)}const k=s.useRef(null),N=s.useRef(null),M=s.useRef(null),S=s.useRef(null),F=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(U=>{const{item:te,colDef:ce,onItemChange:z}=I.current;if(te?U===Bo(te.value,ce.type):U.trim()==="")return;const K=te?.operator??Yn(ce),J=ar(ce,K,vl(U,K));b(J),z(ce.field,J)},[]),_=s.useRef(null);s.useLayoutEffect(()=>{_.current=y}),s.useEffect(()=>()=>{const U=_.current;_.current=null,U!==null&&A(U)},[A]),s.useEffect(()=>{if(y===null)return;const U=setTimeout(()=>{_.current=null,A(y),p(null)},Bd);return()=>clearTimeout(U)},[y,A]);const L=()=>k.current?.focus({preventScroll:!0}),D=()=>(N.current??M.current)?.focus({preventScroll:!0}),v=U=>{b(U),i(e.field,U)},V=U=>{p(null),v(ar(e,u,U))},R=()=>{p(null),v(null)},Q=()=>{F.current&&m(F.current)},G=U=>{m(null),U&&(N.current||M.current?D():L())},W=U=>{const te=y!==null?vl(y,U):a?.value;p(null),m(null),v(ar(e,U,yl(te,U))),requestAnimationFrame(()=>{N.current||M.current?D():L()})},H=t.kind==="custom",ie=!H&&w&&!h,oe=U=>{const te=U.currentTarget,ce=U.target;if(!te.contains(ce)||U.nativeEvent.isComposing)return;const{key:z}=U,re=ce===te;if((U.altKey&&z==="ArrowDown"||(U.ctrlKey||U.metaKey)&&z==="Enter")&&!H&&ce!==M.current){U.preventDefault(),U.stopPropagation(),Q();return}if(!re){z==="Escape"&&(U.preventDefault(),U.stopPropagation(),L());return}if(z==="Enter"||z===" "||z==="Spacebar"){U.preventDefault(),U.stopPropagation(),H?S.current?.click():N.current||M.current?D():Q();return}if((z==="Delete"||z==="Backspace")&&a){U.preventDefault(),U.stopPropagation(),R();return}ie&&e.type!=="date"&&z.length===1&&!U.ctrlKey&&!U.metaKey&&!U.altKey&&(U.preventDefault(),U.stopPropagation(),N.current?.focus({preventScroll:!0}),p(z))};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 U;if(!w)U=c.jsx("span",{className:"ogx__header-filter-operator-label",children:cr[u]??u});else if(e.type==="boolean")U=c.jsxs("select",{ref:M,className:"ogx__header-filter-select",tabIndex:-1,value:a?.value==null||a.value===""?"":String(a.value),onChange:ce=>V(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(h){const ce=g.find(z=>Yd(z,a?.value));U=c.jsxs("select",{ref:M,className:"ogx__header-filter-select",tabIndex:-1,value:ce?.key??"",onChange:z=>{const re=g.find(K=>K.key===z.target.value);V(yl(re?re.value:"",u))},"aria-label":`Filter value for ${d}`,children:[c.jsx("option",{value:"",children:"Any"}),g.map(z=>c.jsx("option",{value:z.key,children:z.label},z.key))]})}else U=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=cr[u]??u;ue=c.jsxs(c.Fragment,{children:[c.jsx("button",{ref:F,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?m(null):Q(),children:Ud[u]??"?"}),U,a&&c.jsx("button",{type:"button",className:"ogx__header-filter-clear",tabIndex:-1,"aria-label":`Clear filter for ${d}`,title:"Clear",onClick:()=>{R(),L()},children:c.jsx(Jd,{})}),f&&c.jsx(qd,{anchorEl:f,columnLabel:d,operators:zd(e),current:u,onSelect:W,onClose:G})]})}const se=["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:se,style:n,role:"columnheader","aria-label":`Filter ${d}`,"aria-colindex":r,"data-field":e.field,tabIndex:-1,onKeyDown:oe,children:ue})}function dr({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:Be,minWidth:Be,maxWidth:Be,position:n?"sticky":void 0,left:n?o:void 0},role:"columnheader","aria-colindex":t,"data-field":e,tabIndex:-1})}function Qd(e){const{columns:t,columnWidths:n,pinnedColumns:o,pinnedPositions:r,pinnedEdges:i,rowReordering:l,hasDetailPanel:d,checkboxSelection:a,pinExpandColumn:u,pinCheckboxColumn:g,columnIndexMap:h,ariaRowIndex:w,filterModel:y,onFilterModelChange:p,onOpenFilterPanel:f,focusedField:m}=e,x=s.useRef({filterModel:y,onFilterModelChange:p});s.useLayoutEffect(()=>{x.current={filterModel:y,onFilterModelChange:p}});const b=s.useCallback((F,I)=>{const{filterModel:A,onFilterModelChange:_}=x.current;if(!_)return;const L=jd(A,F,I);L!==A&&(x.current={filterModel:L,onFilterModelChange:_},_(L))},[]),C=l?1:0,E=d?C+1:C,k=a?E+1:E,N=k,M=l?Be:0,S=M+(d&&u?Be:0);return c.jsxs("div",{className:"ogx__header-filter-row",role:"row","aria-rowindex":w,children:[l&&c.jsx(dr,{field:At,ariaColIndex:C,sticky:!0,left:0,focused:m===At}),d&&c.jsx(dr,{field:Pt,ariaColIndex:E,sticky:u,left:M,focused:m===Pt}),a&&c.jsx(dr,{field:Je,ariaColIndex:k,sticky:g,left:S,focused:m===Je}),t.map((F,I)=>{if(F.isSpacer)return c.jsx("div",{style:{width:F.width,minWidth:F.width,flexShrink:0},"aria-hidden":"true"},F.field);const A=ct(F.field,o),_=ml(F,n,A,A?r[F.field]:void 0),L=N+(h?.get(F.field)??I)+1,D=[A&&"ogx__header-filter-cell--pinned",A&&`ogx__header-filter-cell--pinned-${A}`,A==="left"&&F.field===i.lastLeft&&"ogx__header-filter-cell--pinned-left-last",A==="right"&&F.field===i.firstRight&&"ogx__header-filter-cell--pinned-right-first",m===F.field&&"ogx__header-filter-cell--focused"].filter(Boolean).join(" ");return Vd(F)?c.jsx(Zd,{colDef:F,state:xl(y,F.field),style:_,className:D,ariaColIndex:L,onItemChange:b,onOpenFilterPanel:f},F.field):c.jsx("div",{className:`ogx__header-filter-cell ogx__header-filter-cell--empty ${D}`,style:_,role:"columnheader","aria-label":`No filter for ${F.headerName||F.field}`,"aria-colindex":L,"data-field":F.field,tabIndex:-1},F.field)})]})}function eu(){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 tu(){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 kl(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:h,columnWidths:w={},pinnedColumns:y,hasDetailPanel:p=!1,pinCheckboxColumn:f=!0,pinExpandColumn:m=!0,rowReordering:x=!1,aggregationModel:b,draggedColumn:C,dragOverColumn:E,onDragStart:k,onDragOver:N,onDragEnd:M,onDrop:S,focusedCell:F,onHeaderClick:I,onSortAdd:A,multiSort:_=!1,onHideColumn:L,onPinColumn:D,onManageColumns:v,columnIndexMap:V,wrapHeaderText:R=!1,headerHeight:Q=56,headerFilters:G=!1,filterModel:W,onFilterModelChange:H,onOpenFilterPanel:ie}=e,oe=s.useId(),[ue,se]=s.useState(null),U=j=>le=>{le.stopPropagation(),se({colDef:j,anchorEl:le.currentTarget})},te=s.useCallback(()=>{se(null)},[]),ce=j=>le=>{if(le.altKey&&(le.key==="ArrowLeft"||le.key==="ArrowRight")&&le.target===le.currentTarget){if(j.resizable===!1||!g)return;le.preventDefault(),le.stopPropagation();const Ce=Nt(j,w),be=(le.shiftKey?50:10)*(le.key==="ArrowRight"?1:-1);g(j.field,rr(Ce+be,Ce,j.minWidth,j.maxWidth));return}if(!(le.altKey&&le.key==="ArrowDown"||(le.ctrlKey||le.metaKey)&&le.key==="Enter")||j.disableColumnMenu||le.target!==le.currentTarget)return;le.preventDefault(),le.stopPropagation();const he=le.currentTarget.querySelector(".ogx__menu-icon-btn")??le.currentTarget;se({colDef:j,anchorEl:he})},z=j=>F?.id===null&&!F.headerFilter&&F.field===j,re=x?1:0,K=p?re+1:re,J=r?K+1:K,ae=j=>le=>{if(j.sortable===!1)return;const we=u.find(he=>he.field===j.field);let pe="asc";we&&(we.sort==="asc"?pe="desc":pe=null),(le.shiftKey||_)&&A?A(j.field,pe):a&&a(j.field,pe)},fe=(j,le)=>{const we=u.some(he=>he.field===j);A&&(le===null||we||_||!a)?A(j,le):a?.(j,le)},Z=j=>{const le=u.find(pe=>pe.field===j);if(!le)return null;const we=u.length>1?u.indexOf(le)+1:null;return c.jsx("span",{className:`ogx__sort-icon ogx__sort-icon--${le.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,m,x),[t,w,y,r,f,p,m,x]),O=s.useMemo(()=>Mo(t,y),[t,y]),P=fl(o),T=s.useMemo(()=>gl(o),[o]),X=s.useMemo(()=>P===0?[]:(n??t).map(j=>({field:j.field,width:Nt(j,w),flex:j.isSpacer?0:j.flex,pinned:j.isSpacer?null:ct(j.field,y),isSpacer:j.isSpacer})),[P,n,t,w,y]),Y=(x?48:0)+(p?48:0)+(r?48:0),ne=(x||p||r)&&(!p||m)&&(!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},(j,le)=>{const we=Sd(X,T,le);return c.jsxs("div",{className:"ogx-col-group-row",role:"row","aria-rowindex":le+1,children:[Y>0&&c.jsx("div",{className:`ogx-col-group-cell ogx-col-group-cell--filler${ne?" ogx-col-group-cell--pinned ogx-col-group-cell--pinned-left":""}`,style:{width:Y,minWidth:Y,flexShrink:0,position:ne?"sticky":void 0,left:ne?0:void 0},"aria-hidden":"true"}),we.map((pe,he)=>{const Ce=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${Ce}${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${Ce}`,style:be,"aria-hidden":"true"},pe.key)})]},`ogx-grp-${le}`)}),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 ${z("__reorder_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-label":"Row reorder handle","aria-colindex":re,"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 ${m?"ogx__header-cell--pinned ogx__header-cell--pinned-left":""} ${z("__expand_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-label":"Expand row details","aria-colindex":K,"data-field":"__expand_col__",tabIndex:-1,style:{minWidth:48,maxWidth:48,position:m?"sticky":void 0,left:m?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":""} ${z("__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&&m?48:0):void 0},children:d&&c.jsx(bt,{id:oe,name:oe,checked:i,indeterminate:l,onChange:j=>d(j.target.checked),"aria-label":i?"Deselect all rows":"Select all rows",tabIndex:-1,onMouseDown:j=>j.preventDefault()})}),t.map((j,le)=>{if(j.isSpacer)return c.jsx("div",{style:{width:j.width,minWidth:j.width,flexShrink:0},"aria-hidden":"true"},j.field);const we=j.sortable!==!1,pe=u.findIndex(ot=>ot.field===j.field),he=pe!==-1,Ce=he?u[pe].sort:null,be=V?.get(j.field)??le,de=we?pe===0?Ce==="asc"?"ascending":"descending":"none":void 0,ye=he&&u.length>1?`Sorted ${Ce==="asc"?"ascending":"descending"}, sort priority ${pe+1} of ${u.length}`:void 0,Ee=j.resizable!==!1,Me=ct(j.field,y),Ne=Me!==null,Ie=C===j.field,Se=E===j.field,Oe=$d(j.wrapHeaderText,R),ge=b?.[j.field],ve=["ogx__header-cell",`ogx__header-cell--align-${j.headerAlign||j.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"&&j.field===O.lastLeft&&"ogx__header-cell--pinned-left-last",Me==="right"&&j.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",z(j.field)&&"ogx__header-cell--focused",j.headerClassName].filter(Boolean).join(" "),ke={...ml(j,w,Me,Me?$[j.field]:void 0),zIndex:j.zIndex,opacity:Ie?.5:1},xe=j.renderHeader?j.renderHeader({field:j.field,colDef:j,colIndex:be}):j.headerName||j.field,je=ot=>{if(ot.target.closest(".ogx-column-resize-handle")){ot.stopPropagation();return}I?.(j.field),we&&ae(j)(ot)},nt=k&&!Ne?k(j.field):void 0,nn=N&&!Ne?N(j.field):void 0,Mn=S&&!Ne?S(j.field):void 0;return c.jsxs("div",{className:ve,style:ke,title:j.description??(Oe&&typeof xe=="string"?xe:void 0),onClick:je,role:"columnheader",draggable:!!nt,onDragStart:nt,onDragOver:nn,onDragEnd:M,onDrop:Mn,onKeyDown:ce(j),"aria-sort":de,"aria-description":ye,"aria-colindex":me+be+1,"data-field":j.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(tu,{})}),c.jsxs("div",{className:"ogx__header-cell-title-wrapper",children:[c.jsx("span",{className:"ogx__header-cell-title",style:Oe?{WebkitLineClamp:Dd(Q,!!ge)}:void 0,children:xe}),ge&&c.jsx("span",{className:"ogx__header-cell-aggregation",children:ge})]}),we&&Z(j.field),!j.disableColumnMenu&&c.jsx("button",{type:"button",className:"ogx__menu-icon-btn",onClick:U(j),"aria-label":`Open column menu for ${j.headerName||j.field}`,"aria-haspopup":"menu",tabIndex:-1,children:c.jsx(eu,{})})]}),Ee&&g&&c.jsx(_d,{field:j.field,currentWidth:Nt(j,w),onResize:g,onAutosize:h,minWidth:j.minWidth,maxWidth:j.maxWidth,edge:Me==="right"?"start":"end"})]},j.field)}),ue&&c.jsx(Td,{colDef:ue.colDef,sortModel:u,onSort:a||A?fe:void 0,onHide:L,onPin:D,pinnedColumns:y,onManageColumns:v,onClose:te,anchorEl:ue.anchorEl})]}),G&&c.jsx(Qd,{columns:t,columnWidths:w,pinnedColumns:y,pinnedPositions:$,pinnedEdges:O,rowReordering:x,hasDetailPanel:p,checkboxSelection:r,pinExpandColumn:m,pinCheckboxColumn:f,columnIndexMap:V,ariaRowIndex:P+2,filterModel:W,onFilterModelChange:H,onOpenFilterPanel:ie,focusedField:F?.id===null&&F.headerFilter?F.field:null})]})}const Ae=()=>{},ur=()=>Promise.resolve({updated:[],failed:[],skipped:[]});function El(){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:ur,undo:ur,redo:ur,canUndo:()=>!1,canRedo:()=>!1,clearHistory:Ae,setSortModel:Ae,setRowGroupingModel:Ae,setAggregationModel:Ae,setColumnVisibilityModel:Ae,setPivotModel:Ae,getGridAiState:()=>({}),openAiAssistant:Ae,closeAiAssistant:Ae}}const nu=e=>e.id;let Ml=!1;function Nl(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&&!Ml&&process.env.NODE_ENV!=="production"&&(Ml=!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 ou(e,t,n,o={}){const r=new Map,i=[];return n.forEach(l=>{r.set(l.field,l),i.push(l.field)}),{rows:Nl(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 ru(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:Nl(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 iu(e){const{rows:t,columns:n,rowHeight:o=52,headerHeight:r=56,columnVisibilityModel:i,initialState:l,syncRows:d=!1}=e,a=e.getRowId??nu,u=s.useRef(a);s.useLayoutEffect(()=>{u.current=a});const[g]=s.useState(()=>ou(t,a,n,i)),[h,w]=s.useReducer(ru,{...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(h);s.useLayoutEffect(()=>{f.current=h});const m=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})},[]),C=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(()=>({...El(),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})),F=s.useRef(S);return{state:h,dispatch:w,apiRef:F,setRows:m,replaceRow:x,replaceRows:b,setColumns:C,setDimensions:E,setDataSourceLoading:k,setDataSourceError:N,setRowCount:M}}function lu(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 m=new Map;return n.forEach((x,b)=>m.set(o?o(x):x.id,b)),m},[n,o]),h=s.useCallback(m=>g.has(m),[g]),w=s.useCallback(()=>{u.current(),u.current=()=>{},l(null),a(null)},[]);s.useEffect(()=>()=>u.current(),[]);const y=s.useCallback(m=>x=>{if(r){if(!g.has(m)){x.preventDefault();return}u.current(),u.current=Yi(x.currentTarget,w),l(m),x.dataTransfer&&(x.dataTransfer.effectAllowed="move",Xi(x,er,String(m)))}},[r,g,w]),p=s.useCallback(m=>x=>{if(!(!r||i===null)){if(!Rn(x,er)){w();return}g.has(m)&&(x.preventDefault(),x.dataTransfer&&(x.dataTransfer.dropEffect="move"),d!==m&&a(m))}},[r,i,d,g,w]),f=s.useCallback(m=>x=>{if(x.preventDefault(),i===null||!Rn(x,er)){w();return}const b=g.get(i),C=g.get(m);w(),t&&b!==void 0&&C!==void 0&&b!==C&&t({row:n[b],oldIndex:b,targetIndex:C})},[i,t,n,g,w]);return{draggedRowId:i,dragOverRowId:d,canReorderRow:h,onDragStart:r?y:void 0,onDragOver:r?p:void 0,onDragEnd:r?w:void 0,onDrop:r?f:void 0}}const Il=new Map,Ll=e=>JSON.stringify(e),su=e=>`auto-group-${e}`,Al=5,Pl=e=>e.slice(0,Al).map(t=>JSON.stringify(t)).join(", ")+(e.length>Al?", …":""),au={treeNodes:new Map,rootIds:[],groupingRows:[],syntheticIds:new Set,rowLookup:new Map,issues:[]};function cu(e,t,n){const o=new Map,r=[],i=[],l=new Set,d=new Map,a=new Map,u=[],g=new Array(e.length),h=new Array(e.length),w=[],y=new Map;e.forEach((f,m)=>{const x=t(f),b=n(f),C=Array.isArray(b)?b.map(E=>String(E)):[];if(g[m]=x,h[m]=C,d.set(x,f),C.length===0)w.push(x);else{const E=Ll(C),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(C.length-1,0),groupingKey:C[C.length-1]??"",isExpanded:!1,children:[],serverChildrenCount:f.serverChildrenCount})});const p=f=>{const m=Ll(f),x=a.get(m);if(x!==void 0)return x;const b=su(m),C=f[f.length-1],E={id:b,parentId:null,depth:f.length-1,groupingKey:C,isExpanded:!1,children:[],label:C};o.set(b,E),a.set(m,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,m)=>{const x=g[m],b=h[m];if(b.length<=1){r.push(x);return}const C=p(b.slice(0,-1)),E=o.get(x);E&&(E.parentId=C),o.get(C)?.children?.push(x)}),w.length>0&&u.push(`[OpenGridX] treeData: getTreeDataPath returned an empty path for row(s) ${Pl(w)}. They are shown as top-level rows.`),y.forEach((f,m)=>{u.push(`[OpenGridX] treeData: rows ${Pl(f)} have the same path ${m}. 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 du(e,t){const{treeNodes:n,rootIds:o,syntheticIds:r,rowLookup:i}=e,l=new Set,d=new Map,a=new Map,u=g=>{const h=n.get(g);if(!h)return!1;const w=[];let y=0;for(const x of h.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),m=!r.has(g)&&p!==void 0&&(t?t(p):!0)||w.length>0;return m&&l.add(g),m};return o.forEach(u),{visible:l,visibleChildren:d,descendantCounts:a}}function uu(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:h="client"}=e,w=r&&!!o,y=s.useMemo(()=>!r||!o?au:cu(t,n,o),[t,o,r,n]),{treeNodes:p,rootIds:f,groupingRows:m,syntheticIds:x,rowLookup:b}=y,C=y.issues.join(`
|
|
1
|
+
(function(_e,d){typeof exports=="object"&&typeof module<"u"?d(exports,require("react/jsx-runtime"),require("react"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","react-dom"],d):(_e=typeof globalThis<"u"?globalThis:_e||self,d(_e.OpenGridX={},_e.ReactJSXRuntime,_e.React,_e.ReactDOM))})(this,(function(_e,d,s,bt){"use strict";"use client";function Po(e,t,n){return Math.max(t??0,Math.min(n??1/0,e))}function At(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 Po(r,e.minWidth,e.maxWidth)}const We=48;function ct(e,t){return t?t.left?.includes(e)?"left":t.right?.includes(e)?"right":null:null}function Fa(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 a=t.left.indexOf(i.field),c=t.left.indexOf(l.field);return a-c}),t.right&&r.sort((i,l)=>{const a=t.right.indexOf(i.field),c=t.right.indexOf(l.field);return a-c}),{left:n,center:o,right:r}):{left:n,center:e,right:r}}function Fo(e,t,n,o,r,i,l,a){const c={};if(!n)return c;let u=(a?We:0)+(i&&l?We:0)+(o&&r?We:0);const g=[];e.forEach(x=>{if(x.isSpacer)return;const y=ct(x.field,n);y==="left"?(c[x.field]=u,u+=At(x,t)):y==="right"&&g.push(x)});let h=0;for(let x=g.length-1;x>=0;x--)c[g[x].field]=h,h+=At(g[x],t);return c}function Oo(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 ui(e,t){return t?t.top?.includes(e)?"top":t.bottom?.includes(e)?"bottom":null:null}function Oa(e,t,n=o=>o.id){const o=[],r=[],i=[];return t?(e.forEach(l=>{const a=ui(n(l),t);a==="top"?o.push(l):a==="bottom"?i.push(l):r.push(l)}),t.top&&o.sort((l,a)=>{const c=t.top.indexOf(n(l)),u=t.top.indexOf(n(a));return c-u}),t.bottom&&i.sort((l,a)=>{const c=t.bottom.indexOf(n(l)),u=t.bottom.indexOf(n(a));return c-u}),{top:o,center:r,bottom:i}):{top:o,center:e,bottom:i}}function Da(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 fi=new Set;function Tt(e,t,n){process.env.NODE_ENV==="production"||fi.has(e)||(fi.add(e),console.warn(`[OpenGridX] ${t}.`,n))}function Do(e,t,n,o){try{return e()}catch(r){return Tt(n,o,r),t}}function gi(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 Me(e,t,n){if(!n?.valueGetter)return e[t];const{value:o,error:r}=gi(e,t,n);return r!==void 0&&Tt(`valueGetter:${t}`,`valueGetter for column "${t}" threw; the value is read as undefined`,r),o}function $o(e,t,n,o){const r=o?.valueFormatter;if(r)try{return r({value:n,row:e,field:t})}catch(i){Tt(`valueFormatter:${t}`,`valueFormatter for column "${t}" threw; the value is shown unformatted`,i);return}}function dt(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 $a=/^(\d{4})-(\d{2})-(\d{2})$/;function wn(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=$a.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 Wn(e){const t=wn(e);return t?t.getFullYear()*1e4+(t.getMonth()+1)*100+t.getDate():null}function pi(e){const t=wn(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 hi=null;function mi(e){return hi??=new Intl.DateTimeFormat,hi.format(e)}function Ga(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 Go(e,t){if(e==null)return"";switch(t?.type){case"date":{const n=wn(e);return n?mi(n):String(e)}case"boolean":return e===!0?"Yes":e===!1?"No":String(e);case"singleSelect":return Ga(t.valueOptions,e)??String(e);default:return String(e)}}const Ho=200;function Bo(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:Ho}function Wo(e,t){if(e)return Do(()=>e(t),void 0,"getDetailPanelHeight","getDetailPanelHeight threw; the panel uses the default height")}function Ha(e,t){const n=Bo(e);return n==="auto"?t??Ho:n}function Ba(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 Wa=e=>e.id;function Va(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 za(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 b=Va(t[f.field]??f.width);b.type==="fixed"?o.set(f.field,{kind:"fixed",width:Po(b.value,f.minWidth,f.maxWidth)}):b.type==="percentage"?o.set(f.field,{kind:"percentage",percentage:b.value}):o.set(f.field,{kind:"flex",flex:1})});const r=e.reduce((f,m)=>{const b=o.get(m.field);if(b.kind==="fixed")return f+b.width;if(b.kind==="percentage")return f+100;if(m.flex&&m.flex>0){const w=m.minWidth??150;return f+(w||(typeof m.width=="number"?m.width:150))}return f+(m.minWidth??150)},0),i=Math.max(n,r),l=e.reduce((f,m)=>{const b=o.get(m.field);return b.kind==="fixed"?f+b.width:f},0),a=new Map,c=Math.max(0,i-l);let u=0;e.forEach(f=>{const m=o.get(f.field);if(m.kind==="fixed")a.set(f.field,m.width);else if(m.kind==="percentage"){const b=m.percentage/100*c,w=Po(b>0?b:100,f.minWidth??50,f.maxWidth);a.set(f.field,w),u+=w}});const g=Math.max(0,c-u),h=new Map,x=e.flatMap(f=>{const m=o.get(f.field);return m.kind!=="flex"?[]:(h.set(f.field,m.flex),[{field:f.field,flex:m.flex,minWidth:f.minWidth??50,maxWidth:f.maxWidth??1/0,frozen:!1,computedWidth:0}])});let y=0;const p=x.length*2;for(;y<p;){y++;const f=x.filter(M=>!M.frozen);if(f.length===0)break;const m=f.reduce((M,_)=>M+_.flex,0),b=x.reduce((M,_)=>_.frozen?M+_.computedWidth:M,0),w=Math.max(0,g-b);if(m<=0){f.forEach(M=>{M.computedWidth=M.minWidth,M.frozen=!0});break}const C=w/m;let E=0;const S=[],N=[];if(f.forEach(M=>{const _=C*M.flex;_<M.minWidth?(E+=M.minWidth-_,S.push(M)):_>M.maxWidth?(E+=M.maxWidth-_,N.push(M)):M.computedWidth=_}),S.length===0&&N.length===0){f.forEach(M=>{M.frozen=!0});break}E>0?S.forEach(M=>{M.computedWidth=M.minWidth,M.frozen=!0}):E<0?N.forEach(M=>{M.computedWidth=M.maxWidth,M.frozen=!0}):(S.forEach(M=>{M.computedWidth=M.minWidth,M.frozen=!0}),N.forEach(M=>{M.computedWidth=M.maxWidth,M.frozen=!0}))}return x.forEach(f=>a.set(f.field,f.computedWidth)),{widths:a,flexByField:h}}function Ka(e){const{rowHeight:t,pagination:n,paginatedUnpinnedRows:o,sortedUnpinnedRows:r,expandedRowIds:i,getDetailPanelHeight:l,detailPanelHeights:a,pinnedTopRowsLength:c,pinnedBottomRowsLength:u,pinnedTopRows:g,pinnedBottomRows:h,visibleOrderedColumns:x,pinnedColumns:y,columnWidths:p,viewportWidth:f,checkboxSelection:m,hasDetailPanel:b,rowReordering:w,pinCheckboxColumn:C,pinExpandColumn:E,paginationMode:S,isLoading:N,pageSize:M,getRowId:_=Wa}=e;return s.useMemo(()=>{const O=n?o:r,L=(G,Y)=>{const j=_(G);if(!i.has(j))return t;const q=Wo(l,{row:G,id:j,rowIndex:Y});return t+Ha(q,a?.get(j))},A=O.length,k=new Array(A),I=new Array(A),P=i.size>0;let v=0;for(let G=0;G<A;G++){const Y=P?L(O[G],c+G):t;k[G]=Y,v=(v||0)+Y,I[G]=v}const B=S==="infinite"&&N&&O.length>0?Math.min(M,20):0,V=(I[I.length-1]||0)+B*t,Q=(G,Y)=>G?G.reduce((j,q,ne)=>j+L(q,ne),0):Y*t,H=Q(g,c),z=Q(h,u),{left:W,center:re,right:oe}=Fa(x,y),fe=(m?We:0)+(b?We:0)+(w?We:0),le=(w?We:0)+(b&&E?We:0)+(m&&C?We:0),{widths:ce,flexByField:K}=za([...W,...re,...oe],p,f-fe),de=G=>ce.get(G.field)??100,X=G=>({...G,width:de(G),flex:K.get(G.field)??G.flex}),te=11,U=W.map((G,Y)=>({...X(G),zIndex:te+Y})),J=11,se=oe.map((G,Y)=>({...X(G),zIndex:J+(oe.length-1-Y)})),ue=re.map(X),ee=ue.map(G=>G.width),D=U.reduce((G,Y)=>G+Y.width,0),T=se.reduce((G,Y)=>G+Y.width,0),$=ee.reduce((G,Y)=>G+Y,0),F=D+$+T+fe,Z=ee.reduce((G,Y,j)=>(G.push((G[j-1]||0)+Y),G),[]);return{rowHeights:k,cumulativeHeights:I,unpinnedRowsHeight:V,pinnedTopHeight:H,pinnedBottomHeight:z,leftPinnedCols:U,rightPinnedCols:se,unpinnedColsWithWidth:ue,unpinnedColWidths:ee,unpinnedAccWidths:Z,totalWidth:F,leftWidth:D,rightWidth:T,unpinnedTotalWidth:$,systemColumnsWidth:fe,pinnedSystemColumnsWidth:le,pinnedTopRowsLength:c,pinnedBottomRowsLength:u,unpinnedRowsLength:O.length}},[t,n,o,r,i,l,a,c,u,g,h,x,y,p,f,m,b,w,C,E,S,N,M,_])}function Je(e){if(!e)return!1;const t=e.ownerDocument.defaultView;return t?t.getComputedStyle(e).direction==="rtl":!1}function Vn(e,t){return t?e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e:e}function Kt(e){return Je(e)?-e.scrollLeft:e.scrollLeft}function bn(e,t){e.scrollLeft=Je(e)?-t:t}function zn(e,t){if(!e)return{top:0,right:0};const n=e.getBoundingClientRect();return Je(e)?{top:n.bottom+6,left:n.left}:{top:n.bottom+6,right:t-n.right}}function ja(e){const t=e.querySelector(".ogx__sticky-bottom");return t?t.getBoundingClientRect().height:0}function Kn(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:a}=e,c=i.getBoundingClientRect().top-e.getBoundingClientRect().top+l,u=Math.max(o,ja(e)),g=c+(t===0?0:n[t-1]),h=r!==void 0?Math.min(g+r,c+n[t]):c+n[t];g<l+c?e.scrollTop=Math.max(0,g-c):h>l+a-u&&(e.scrollTop=h-a+u)}function Vo(e,t,n){const{unpinnedAccWidths:o,leftWidth:r,rightWidth:i,systemColumnsWidth:l,pinnedSystemColumnsWidth:a}=n;if(t<0||t>=o.length)return;const c=l+r,u=c+(t>0?o[t-1]:0),g=c+o[t],h=a+r,{clientWidth:x}=e,y=Kt(e);u<y+h?bn(e,Math.max(0,u-h)):g>y+x-i&&bn(e,g-x+i)}function zo(e,t){const{row:n,field:o,value:r,colDef:i,rowIndex:l,colIndex:a,rowMeta:c}=e;if(!i.editable||c?.isGroupRow||n._isSkeleton)return!1;if(!t)return!0;try{return!!t({row:n,field:o,value:r,colDef:i,rowIndex:l,colIndex:a})}catch{return!1}}const Ua={},xn=e=>e==null||typeof e=="string"&&e.trim()==="",wi=e=>{const t=[];for(const n of e){const o=dt(n);o!==null&&t.push(o)}return t},bi=(e,t)=>{let n=null,o=null;for(const r of e){const i=dt(r);i!==null&&(n===null||t(i,n))&&(n=i,o=r)}return n===null?null:o instanceof Date?o:n},xt={sum:e=>wi(e).reduce((t,n)=>t+n,0),avg:e=>{const t=wi(e);return t.length?t.reduce((n,o)=>n+o,0)/t.length:null},count:e=>e.filter(t=>!xn(t)).length,min:e=>bi(e,(t,n)=>t<n),max:e=>bi(e,(t,n)=>t>n),unique:e=>new Set(e.filter(t=>!xn(t))).size};function Ko(e,t){return e?e.aggregable===!1?!1:!e.availableAggregationFunctions||e.availableAggregationFunctions.includes(t):!0}function jn(e,t,n,o){const r={};for(const[i,l]of Object.entries(t)){const a=n.get(i);if(!Ko(a,l))continue;const c=xt[l];if(!c){console.warn(`[${o}] Unknown aggregation function: "${l}"`);continue}r[i]=Object.prototype.hasOwnProperty.call(xt,l)?Ra(e,i,a,l):c(e.map(u=>Me(u,i,a)))}return r}function Ra(e,t,n,o){switch(o){case"sum":case"avg":{let r=0,i=0;for(const l of e){const a=dt(Me(l,t,n));a!==null&&(r+=a,i++)}return o==="sum"?r:i?r/i:null}case"count":{let r=0;for(const i of e)xn(Me(i,t,n))||r++;return r}case"min":case"max":{const r=o==="min";let i=null,l=null;for(const a of e){const c=Me(a,t,n),u=dt(c);u!==null&&(i===null||(r?u<i:u>i))&&(i=u,l=c)}return i===null?null:l instanceof Date?l:i}case"unique":{const r=new Set;for(const i of e){const l=Me(i,t,n);xn(l)||r.add(l)}return r.size}}}function yn(e,t){return e==null?"—":typeof e=="number"?t==="avg"?e.toLocaleString(void 0,{maximumFractionDigits:2}):e.toLocaleString():String(e)}const qa=new Set(["count","unique"]);function xi(e){return e!==void 0&&qa.has(e)}function yi(e,t,n){return e?.type==="date"&&(t==="min"||t==="max")&&typeof n=="number"&&Number.isFinite(n)?new Date(n):n}function Un(e,t,n,o){if(e==null)return"—";if(xi(t))return yn(e,t);const r=yi(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())?"":mi(r):yn(r,t)}const jt=new Set(["isEmpty","isNotEmpty"]);function jo(e){return e==null?!0:typeof e=="string"?e.trim()==="":Array.isArray(e)?e.length===0:!1}function Xa(e){return e==null?!0:typeof e=="number"?Number.isNaN(e):typeof e=="string"&&e.trim()===""}const Cn=e=>(t,n)=>{const o=dt(t),r=dt(n);return o===null||r===null?!1:e(o,r)},vn=e=>(t,n)=>{const o=Wn(t),r=Wn(n);return o===null||r===null?!1:e(o,r)},Ci=vn((e,t)=>e===t),vi=(e,t)=>{const n=Wn(e),o=Wn(t);return n===null||o===null?!0:n!==o},_i={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(jo(t))return!0;const n=dt(e),o=dt(t);return n!==null&&o!==null?n!==o:Xa(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?vi(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?Ci(e,t):String(e).toLowerCase()===String(t).toLowerCase(),after:vn((e,t)=>e>t),onOrAfter:vn((e,t)=>e>=t),before:vn((e,t)=>e<t),onOrBefore:vn((e,t)=>e<=t)},Ya={is:Ci,not:vi};function Ja(e,t){if(!Object.prototype.hasOwnProperty.call(_i,e))return;const n=e;if(t?.type==="date"){const o=Ya[n];if(o)return o}return _i[n]}function Za(e){return"items"in e&&Array.isArray(e.items)}function Qa(e,t){const{field:n,operator:o,value:r}=e;if(!jt.has(o)&&jo(r))return null;const i=t.columns?.byField.get(n),l=Ja(o,i);return l?a=>l(Me(a,n,i),r):(t.warned.has(o)||(t.warned.add(o),console.warn(`Unknown filter operator: ${o}`)),null)}function Uo(e,t,n){const o=[];for(const r of e){const i=Za(r)?Uo(r.items,r.logicOperator,n):Qa(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 Ro(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=pi(t);n&&e.push(n);return}if(Array.isArray(t))for(const n of t)(n==null||typeof n!="object")&&Ro(e,n)}}function qo(e,t){const n=[];if(!t){for(const o of Object.values(e))Ro(n,o);return n}for(const o of t.quickFilterColumns){const r=Me(e,o.field,o),i=$o(e,o.field,r,o);i!=null&&i!==""&&n.push(String(i).toLowerCase()),Ro(n,r)}return n}const Si=new WeakMap;function ec(e,t){if(!t)return qo(e,t);let n=Si.get(t);n||(n=new WeakMap,Si.set(t,n));let o=n.get(e);return o||(o=qo(e,t),n.set(e,o)),o}function ki(e){return(e??[]).map(t=>String(t??"").trim().toLowerCase()).filter(t=>t!=="")}function Ei(e,t){for(let n=0;n<t.length;n++){const o=t[n];let r=!1;for(let i=0;i<e.length;i++)if(e[i].includes(o)){r=!0;break}if(!r)return!1}return!0}function tc(e,t){const n=ki(e);return n.length===0?null:o=>Ei(ec(o,t),n)}const Mi=new WeakMap;function nc(e,t){const n=Mi.get(t);if(n&&n.rows===e)return n.texts;const o=new Array(e.length);for(let r=0;r<e.length;r++){const i=e[r];o[r]=n&&r<n.rows.length&&n.rows[r]===i?n.texts[r]:qo(i,t)}return Mi.set(t,{rows:e,texts:o}),o}function Rn(e,t){if(!e)return null;const n={columns:t,warned:new Set},o="quickFilterValues"in e?e.quickFilterValues:void 0,r=tc(o,t),i=Uo(e.items??[],e.logicOperator??"and",n);return r&&i?l=>r(l)&&i(l):r??i}function Xo(e,t,n){const o=n&&t?ki(t.quickFilterValues):[];if(n&&o.length>0){const i=Uo(t.items??[],t.logicOperator??"and",{columns:n,warned:new Set}),l=nc(e,n),a=[];for(let c=0;c<e.length;c++)Ei(l[c],o)&&(!i||i(e[c]))&&a.push(e[c]);return a}const r=Rn(t,n);return r?e.filter(i=>r(i)):e}function Ni(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 Yo(e,t){return e==null?"":t==="date"||e instanceof Date?pi(e)||(typeof e=="string"?e:""):Array.isArray(e)?e.map(n=>String(n)).join(", "):String(e)}const Jo=new Intl.Collator(void 0,{numeric:!0,sensitivity:"accent"}),qn=0,Ii=1,oc=2,Zo=3,Xn=4;function Ut(e,t){return{rank:e,num:t,str:""}}function Yn(e,t){if(e==null)return null;if(t==="number"){const n=dt(e);return n===null?null:Ut(qn,n)}if(t==="date"){const n=wn(e);return n?Ut(Ii,n.getTime()):null}switch(typeof e){case"number":return Number.isNaN(e)?null:Ut(qn,e);case"bigint":return Ut(qn,Number(e));case"boolean":return Ut(oc,e?1:0);case"string":return{rank:Zo,num:0,str:e}}if(e instanceof Date){const n=e.getTime();return Number.isNaN(n)?null:Ut(Ii,n)}return{rank:Xn,num:0,str:String(e)}}function Li(e,t){return e===null&&t===null?0:e===null?1:t===null?-1:e.rank!==t.rank?e.rank-t.rank:e.rank===Zo||e.rank===Xn?Jo.compare(e.str,t.str):e.num<t.num?-1:e.num>t.num?1:0}function Qo(e,t){return e===0?0:t==="asc"?e:-e}function rc(e,t,n,o){return Qo(Li(Yn(e,o),Yn(t,o)),n)}function Ai(e,t,n){let o;try{o=e(t.value,n.value,t,n)}catch(r){return Tt(`sortComparator:${t.field}`,`sortComparator for column "${t.field}" threw; the values are treated as equal`,r),0}return typeof o!="number"||Number.isNaN(o)?(Tt(`sortComparator:${t.field}:nan`,`sortComparator for column "${t.field}" returned ${String(o)}; the values are treated as equal`,void 0),0):o}const ic=e=>e.id;function lc(e,t,n,o=ic){if(t.length===0)return e;if(e.length<2)return[...e];const r=t.map(i=>{const l=n?.byField.get(i.field),a=l?.sortComparator;if(a)return $i(e.map(u=>{const g=Me(u,i.field,l);return{value:g,type:l.type,comparator:a,params:{id:o(u),field:i.field,row:u,value:g}}}));const c=l?.type;return Di(e.length,u=>Me(e[u],i.field,l),()=>c)});return Gi(e,t,r)}function Ti(e,t,n){if(t.length===0||e.length<2)return[...e];const o=t.map(r=>{const i=e.map(l=>n(l,r));return i.some(l=>l.comparator&&l.params)?$i(i):Di(i.length,l=>i[l].value,l=>i[l].type)});return Gi(e,t,o)}const Pi=Xn+1;function Fi(e,t){const n=[...e.keys()].sort(Jo.compare);let o=0;for(let r=0;r<n.length;r++){r>0&&Jo.compare(n[r-1],n[r])!==0&&o++;for(const i of e.get(n[r])??[])t[i]=o}}function Oi(e,t,n){const o=e.get(t);o?o.push(n):e.set(t,[n])}function Di(e,t,n){const o=new Uint8Array(e),r=new Float64Array(e),i=new Map,l=new Map;for(let a=0;a<e;a++){const c=t(a),u=n(a);if(typeof c=="number"&&u!=="date"){Number.isNaN(c)?o[a]=Pi:(o[a]=qn,r[a]=c);continue}const g=Yn(c,u);g===null?o[a]=Pi:(o[a]=g.rank,g.rank===Zo?Oi(i,g.str,a):g.rank===Xn?Oi(l,g.str,a):r[a]=g.num)}return Fi(i,r),Fi(l,r),{kind:"encoded",group:o,num:r}}function $i(e){return{kind:"generic",values:e,keys:e.map(({value:t,type:n})=>Yn(t,n))}}function sc(e,t,n){if(e.kind==="encoded"){const i=e.group[t],l=e.group[n];if(i!==l)return i-l;const a=e.num[t],c=e.num[n];return a<c?-1:a>c?1:0}const o=e.values[t],r=e.values[n];return o.comparator&&o.comparator===r.comparator&&o.params&&r.params?Ai(o.comparator,o.params,r.params):Li(e.keys[t],e.keys[n])}function Gi(e,t,n){const o=e.length,r=new Array(o);for(let a=0;a<o;a++)r[a]=a;const i=n[0];if(n.length===1&&i.kind==="encoded"){const{group:a,num:c}=i,u=t[0].sort==="asc"?1:-1;r.sort((g,h)=>{const x=a[g],y=a[h];if(x!==y)return(x-y)*u;const p=c[g],f=c[h];return p<f?-u:p>f?u:g-h})}else r.sort((a,c)=>{for(let u=0;u<n.length;u++){const g=Qo(sc(n[u],a,c),t[u].sort);if(g!==0)return g}return a-c});const l=new Array(o);for(let a=0;a<o;a++)l[a]=e[r[a]];return l}function ac(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 er(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 Rt="__pivot_grand_total__",cc="__pivot_row__:",Hi=e=>`${cc}${JSON.stringify(e.split(Bi))}`,dc="Grand Total",Bi="\0",qt="",tr=`${qt}id`,Wi=e=>e==="id"?tr:e,nr={pivotRows:[],pivotColumns:[],colKeys:[],isValid:!1},Vi=e=>e.map(t=>String(t??"")).join(Bi),zi=e=>e===void 0||e===""?null:e;function uc(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 fc(e,t){for(let n=0;n<e.length;n++){const o=uc(e[n],t[n]);if(o!==0)return o}return 0}function Ki(e,t){if(!e||e.length===0)return null;const n=xt[t](e);return typeof n=="number"||n instanceof Date?n:null}const gc=e=>"logicOperator"in e&&"items"in e,pc=e=>!!(e&&e.items&&e.items.length>0);function hc(e,t){const n=l=>!t.has(l)&&l.includes(qt),o=l=>gc(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 ji(e,t,n,o={}){const r=new Map(t.map(k=>[k.field,k])),i=k=>r.get(k)?.groupable!==!1,l=n.rowFields.filter(i),a=n.columnFields.filter(i),c=new Set,u=n.valueFields.filter(k=>{if(!Ko(r.get(k.field),k.aggFn))return!1;const I=`${k.field}${qt}${k.aggFn}`;return c.has(I)?!1:(c.add(I),!0)});if(l.length===0||u.length===0)return nr;const g=a.length>0,h=Array.from(new Set(u.map(k=>k.field))),x=(k,I)=>Me(k,I,r.get(I)),y=new Map,p=new Map(g?[]:[["",{values:[]}]]);for(const k of e){const I=l.map(z=>x(k,z)),P=Vi(I);let v=y.get(P);v||(v={labels:I.map(zi),sample:k,cells:new Map},y.set(P,v));const B=a.map(z=>x(k,z)),V=g?Vi(B):"",Q=p.get(V);Q?Q.sample||(Q.sample=k):p.set(V,{values:B.map(zi),sample:k});let H=v.cells.get(V);H||(H=new Map,v.cells.set(V,H));for(const z of h){const W=x(k,z);if(xn(W))continue;let re=H.get(z);re||(re=[],H.set(z,re)),re.push(W)}}const f=Array.from(p.keys()).sort((k,I)=>fc(p.get(k).values,p.get(I).values)),m=(k,I)=>g?`${k}${qt}${I.field}${qt}${I.aggFn}`:`${I.field}${qt}${I.aggFn}`,b=new Map;let w=[];for(const[k,I]of y){const P={id:Hi(k)};l.forEach((v,B)=>{P[Wi(v)]=I.labels[B]}),P.id=Hi(k);for(const v of f){const B=I.cells.get(v);for(const V of u)P[m(v,V)]=Ki(B?.get(V.field),V.aggFn)}b.set(P.id,I),w.push({row:P,entry:I})}const C=k=>l.includes(k),E=k=>C(k)?r.get(k)?.type:"number",{outputFilterModel:S,sortModel:N}=o;if(pc(S)){const k=[];for(const P of f)for(const v of u)k.push({field:m(P,v),type:"number"});const I=Rn(S,er(k));I&&(w=w.filter(({row:P})=>I(P)))}const M=(k,I)=>I==="id"&&C("id")?k[tr]:k[I];N&&N.length>0&&(w=[...w].sort((k,I)=>{for(const P of N){const v=M(k.row,P.field),B=M(I.row,P.field),V=C(P.field)?r.get(P.field)?.sortComparator:void 0,Q=V?Qo(Ai(V,{id:k.row.id,field:P.field,row:k.row,value:v},{id:I.row.id,field:P.field,row:I.row,value:B}),P.sort):rc(v,B,P.sort,E(P.field));if(Q!==0)return Q}return 0}));const _=w.map(k=>k.row);if(w.length>0){const k={id:Rt};l.forEach((I,P)=>{k[Wi(I)]=P===0?dc:""}),k.id=Rt;for(const I of f)for(const P of h){const v=[];for(const{entry:B}of w){const V=B.cells.get(I)?.get(P);if(V)for(const Q of V)v.push(Q)}for(const B of u)B.field===P&&(k[m(I,B)]=Ki(v,B.aggFn))}_.push(k)}const O=w[0]?.entry.sample,L=k=>k===Rt?O:k===void 0?void 0:b.get(k)?.sample,A=l.map(k=>wc(k,r.get(k),L));for(const k of f){const I=p.get(k),P=g?a.map((v,B)=>{const V=r.get(v),Q=mc(V,v,I.values[B],I.sample);return V?.headerName?`${V.headerName}: ${Q}`:Q}).join(" / "):"";for(const v of u){const B=r.get(v.field),V=v.headerName??B?.headerName??v.field;A.push({field:m(k,v),headerName:P?`${P} — ${V} (${v.aggFn})`:`${V} (${v.aggFn})`,width:140,type:"number",align:"right",headerAlign:"right",sortable:!0,valueFormatter:({value:Q,row:H})=>Un(Q,v.aggFn,B,H)})}}return{pivotRows:_,pivotColumns:A,colKeys:f,isValid:!0}}function mc(e,t,n,o){const r=o?$o(o,t,n,e):void 0;return r!==void 0?r:n==null?"":String(n)}function wc(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:a})=>a[tr]);const r=a=>a?.id===Rt,i=t?.valueFormatter;i&&(o.valueFormatter=({value:a,row:c})=>r(c)?String(a??""):i({value:a,row:n(c?.id)??c,field:e}));const l=t?.renderCell;return l&&(o.renderCell=a=>r(a.row)?a.formattedValue??String(a.value??""):l({...a,row:n(a.row.id)??a.row})),o}function Xe(e,t){return e===Rt||t?.get(e)?.isGroupRow===!0}const Pt="__reorder_col__",Ft="__expand_col__",Ze="__checkbox_col__",Qe=e=>e===Pt||e===Ft||e===Ze,or=(e,t)=>e===t||e!==null&&t!==null&&e.id===t.id&&e.field===t.field&&!e.headerFilter==!t.headerFilter,bc=new Set(["checkbox","radio","button","submit","reset","image","file","color"]),xc=new Set(["textbox","searchbox","combobox","listbox","slider","spinbutton"]);function Ui(e){const t=e.tagName;if(t==="INPUT")return!bc.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&&xc.has(n)}const Ri=e=>e!==null&&e.nodeType===1;function qi(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 Jn(e,t){if(e===t)return"grid";if(!Ri(e)||!t.contains(e))return"foreign";const n=qi(e,t);return n?n.classList.contains("ogx__cell--editing")?"editor":n===e?"grid":Ui(e)?"foreign":n.classList.contains("ogx__header-cell--checkbox")?"grid":"control":"foreign"}function yc(e,t,n,o){if(!Ri(e))return null;const r=qi(e,t),i=r?.dataset.field;if(!r||!i)return null;if(r.getAttribute("role")==="columnheader"){const c=r.parentElement;return c?.classList.contains("ogx__header")?{id:null,field:i}:c?.classList.contains("ogx__header-filter-row")?{id:null,field:i,headerFilter:!0}:null}const l=Number(r.parentElement?.getAttribute("data-rowindex")),a=Number.isInteger(l)?n[l]:void 0;return a?{id:o(a),field:i,rowIndex:l}:null}function Xi(e,t){if(!e)return null;for(const n of Array.from(e.children))if(n.dataset.field===t)return n;return null}function rr(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=Xi(r,t.field);return i&&t.field===Ze?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 Xi(o,t.field)}const Yi="__group__";function Ye(e){return!Qe(e)&&e!==Yi}const yt=(e,t)=>e===t||!!e&&!!t&&e.id===t.id&&e.field===t.field;function Cc(e,t){return e===t?!0:e.length!==t.length?!1:e.every((n,o)=>yt(n.anchor,t[o].anchor)&&yt(n.head,t[o].head))}function Zn(e,t,n){const{rowIds:o,fields:r,rowIndexById:i,colIndexByField:l,spans:a}=n,c={top:e,bottom:e,left:t,right:t};if(!a)return c;const u=o[e],g=r[t],h=a.getSpanOrigin(u,g)??{rowId:u,field:g},x=i.get(h.rowId),y=l.get(h.field);if(x===void 0||y===void 0)return c;const p=Math.max(1,a.getRowSpan(h.rowId,h.field)),f=Math.max(1,a.getColSpan(h.rowId,h.field));return{top:x,bottom:Math.min(o.length-1,x+p-1),left:y,right:Math.min(r.length-1,y+f-1)}}function vc(e,t){if(!t.spans)return e;let{top:n,bottom:o,left:r,right:i}=e,l=!0;const a=c=>{c.top<n&&(n=c.top,l=!0),c.bottom>o&&(o=c.bottom,l=!0),c.left<r&&(r=c.left,l=!0),c.right>i&&(i=c.right,l=!0)};for(;l;){l=!1;for(let c=n;c<=o;c++)a(Zn(c,r,t)),i!==r&&a(Zn(c,i,t));for(let c=r+1;c<i;c++)a(Zn(n,c,t)),o!==n&&a(Zn(o,c,t))}return{top:n,bottom:o,left:r,right:i}}function Qn(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:{...vc({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 Ot=e=>(e.bottom-e.top+1)*(e.right-e.left+1);function _c(e,t,n,o,r,i){const{headRow:l,headCol:a,anchorRow:c,anchorCol:u,top:g,bottom:h,left:x,right:y}=e;let p=l,f=a;switch(t){case"ArrowRight":f=a>=u?y+1:a+1;break;case"ArrowLeft":f=a<=u?x-1:a-1;break;case"ArrowDown":p=l>=c?h+1:l+1;break;case"ArrowUp":p=l<=c?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===a?null:{row:p,col:f}}function Ji(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 Sc=(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,ir=1,Zi=2,Qi=4,el=8,tl=16,nl=32;function kc(e,t,n,o){if(!e)return 0;const r=e.fillHandleCol===t?nl:0,i=t+Math.max(1,n)-1;if(t<e.left||i>e.right)return r;let l=ir|r;return e.isTop&&(l|=Zi),(e.isBottom||o>1&&o-1>=e.bottomOffset)&&(l|=Qi),t===e.left&&(l|=el),i===e.right&&(l|=tl),l}function Ec(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 Mc=1e5,Nc=e=>e.id,ol=new Set(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End","PageUp","PageDown"]);function Ic(e,t,n,o,r){if(!e||n.length===0)return{cell:null,rowIndex:-1};const i=(n.find(u=>!Qe(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 a=e.rowIndex;let c=a!==void 0&&t[a]&&o(t[a])===e.id?a:t.findIndex(u=>o(u)===e.id);return c===-1?t.length===0?{cell:{id:null,field:l},rowIndex:-1}:(c=Math.min(Math.max(a??0,0),t.length-1),{cell:{id:o(t[c]),field:l,rowIndex:c},rowIndex:c}):{cell:l===e.field?e:{...e,field:l},rowIndex:c}}function Lc(e){const{allRenderableRows:t,navigationColumns:n,checkboxSelection:o,selectedRowIds:r,handleSelectionChange:i,handleDetailPanelToggle:l,editingHandlers:a,setKeyboardMode:c,sortModel:u,handleSort:g,handleSortAdd:h,multiSort:x=!1,isCellEditable:y,pagination:p,pageSize:f,virtualization:m,viewportRef:b,pinnedTopRowCount:w=0,getRowId:C=Nc,rowMetaMap:E,onRowActivate:S,toggleRowExpansion:N,handleSelectAll:M,rowSelectionEnabled:_=!0,multipleRowSelectionEnabled:O=!0,pinCheckboxColumn:L=!0,pinExpandColumn:A=!0,rowHeight:k,getSpanOrigin:I,cellSelection:P,headerFilters:v=!1}=e,[B,V]=s.useState(null),[Q,H]=s.useState(!1),z=s.useMemo(()=>Ic(B,t,n,C,v),[B,t,n,C,v]),W=z.cell,re=z.rowIndex,oe=s.useRef(!1),fe=s.useRef(!1),le=s.useRef(!1),ce=s.useRef(null),K=s.useCallback(D=>{fe.current=!0,D.focus({preventScroll:!0}),fe.current=!1},[]),de=s.useCallback(()=>{const D=b.current;D&&!D.contains(D.ownerDocument.activeElement)&&K(D)},[b,K]),X=s.useMemo(()=>n.find(D=>!Qe(D.field))??n[0],[n]),te=s.useCallback(()=>{if(o)return{id:null,field:Ze};if(!X)return null;const D=t[0];return D?{id:C(D),field:X.field,rowIndex:0}:{id:null,field:X.field}},[o,X,t,C]),U=s.useCallback((D,T)=>{const $=b.current;if(!$)return;const{cumulativeHeights:F,pinnedBottomHeight:Z,columnMetrics:G}=m;if(D>=0&&Kn($,D-w,F,Z,k),Qe(T)){!(T===Pt||T===Ft&&A||T===Ze&&L)&&Kt($)>0&&bn($,0);return}if(!G)return;const{clientWidth:Y}=$,j=Kt($),{leftPinnedWidth:q,rightPinnedWidth:ne,unpinnedAccWidths:he,unpinnedCols:me,totalSpecialsWidth:R,pinnedSpecialsWidth:ge}=G,we=me.findIndex(Ee=>Ee.field===T);if(we===-1)return;const ae=R+q+(we>0?he[we-1]:0),ye=R+q+he[we],xe=j+ge+q,ie=j+Y-ne;let Ce=j;ae<xe?Ce=Math.max(0,ae-ge-q):ye>ie&&(Ce=ye-Y+ne),Ce!==j&&bn($,Ce)},[b,m,w,k,L,A]);s.useLayoutEffect(()=>{const D=b.current,T=!or(ce.current,W);if(ce.current=W,!D||!W)return;const $=D.ownerDocument,F=$.activeElement;let Z;if(F===D?Z=!0:!F||F===$.body?Z=oe.current:D.contains(F)?Z=T:Z=!1,!Z)return;const G=rr(D,W,re);G?G.contains(F)||G.focus({preventScroll:!0}):F!==D&&K(D)});const J=s.useCallback(()=>{le.current=!0,c(!1)},[c]),se=s.useCallback(D=>{const T=D.currentTarget,$=D.relatedTarget,F=!($ instanceof Node&&T.contains($)),Z=le.current;if(le.current=!1,oe.current=!0,H(!0),fe.current)return;if(D.target===T){if(!F)return;if(Z||c(!0),W){const j=rr(T,W,re);j?j.focus({preventScroll:!0}):U(re,W.field);return}const Y=te();Y&&(V(j=>j??Y),U(Y.rowIndex??-1,Y.field));return}const G=yc(D.target,T,t,C);G&&!or(G,W)&&V(G)},[W,re,te,U,c,t,C]),ue=s.useCallback(D=>{const T=D.relatedTarget;T instanceof Node&&D.currentTarget.contains(T)||(oe.current=!1,le.current=!1,H(!1),c(!1))},[c]),ee=s.useCallback(D=>{const T=D.currentTarget,$=Jn(D.target,T);if($==="foreign"||(c(!0),D.nativeEvent?.isComposing||D.keyCode===229))return;const F=Vn(D.key,Je(T)),Z=F===" "||F==="Spacebar",G=!!a.editingCell,Y=v?-2:-1,j=(pe,ve)=>{const Se=n[ve];!Se||pe<Y||pe>=t.length||(pe===Y?V({id:null,field:Se.field}):pe<0?V({id:null,field:Se.field,headerFilter:!0}):V({id:C(t[pe]),field:Se.field,rowIndex:pe}),U(pe,Se.field))};if(!W){if(!ol.has(F))return;const pe=te();if(!pe)return;D.preventDefault(),V(pe),U(pe.rowIndex??-1,pe.field);return}const{id:q,field:ne}=W,he=q===null&&!!W.headerFilter,me=q!==null?re:he?-1:Y,R=n.findIndex(pe=>pe.field===ne),ge=n.filter(pe=>Qe(pe.field)).length,we=pe=>Xe(pe,E),ae=(pe,ve,Se)=>{const be=n[Se];return Qe(be.field)?!1:zo({row:pe,field:be.field,value:Me(pe,be.field,be),colDef:be,rowIndex:ve,colIndex:Se-ge,rowMeta:E?.get(C(pe))},y)},ye=pe=>{let ve=me,Se=R;const be=(t.length+1)*n.length;for(let De=0;De<be;De++){if(Se+=pe,Se>=n.length?(Se=0,ve++):Se<0&&(Se=n.length-1,ve--),ve<0||ve>=t.length)return null;const ft=t[ve];if(!I?.(C(ft),n[Se].field)&&ae(ft,ve,Se))return{r:ve,c:Se}}return null};if(G){if(F==="Enter")D.preventDefault(),a.stopCellEdit();else if(F==="Escape")D.preventDefault(),a.stopCellEdit({cancel:!0});else if(F==="Tab"&&q!==null){const pe=ye(D.shiftKey?-1:1);pe&&(D.preventDefault(),a.stopCellEdit(),j(pe.r,pe.c))}return}if(F==="Escape"&&P?.collapseSelection()){D.preventDefault();return}if(F==="Tab"||F==="Escape"||$==="control"&&(F==="Enter"||Z))return;if((D.ctrlKey||D.metaKey)&&(F==="a"||F==="A")){if(P){P.selectAllCells()&&D.preventDefault();return}if(!_||!O||!M)return;D.preventDefault(),M(!0);return}if(he&&(F==="Enter"||Z))return;if(q===null){if(F==="Enter"||Z){if(D.preventDefault(),ne===Ze){rr(T,W,-1)?.click();return}const pe=n[R];if(!pe||Qe(ne)||pe.sortable===!1)return;const ve=u.find(be=>be.field===ne),Se=ve?ve.sort==="asc"?"desc":null:"asc";(x||D.shiftKey)&&h?h(ne,Se):g(ne,Se);return}}else if(F==="Enter"||Z){D.preventDefault();const pe=t[me];if(ne===Ze){i(q,!r.has(q));return}if(ne===Ft){D.shiftKey||l(q);return}if(Z){D.shiftKey&&_&&!we(q)&&i(q,!r.has(q));return}if(ne===Pt)return;if(ae(pe,me,R)){a.startCellEdit({id:q,field:ne,value:Me(pe,ne,n[R])});return}if(N&&E?.get(q)?.hasChildren){N(q);return}S?.({row:pe,id:q,rowIndex:me});return}if(D.altKey&&(F==="ArrowRight"||F==="ArrowLeft")&&N&&q!==null){D.preventDefault();const pe=E?.get(q);pe?.hasChildren&&!!pe.isExpanded!=(F==="ArrowRight")&&N(q);return}if(!ol.has(F))return;D.preventDefault();const xe=t.length-1,ie=n.length-1,Ce=D.ctrlKey||D.metaKey,Ee=p?f:10;if(P&&D.shiftKey&&q!==null&&Ye(ne)&&P.extendSelection(F,Ce,Ee,W))return;const Le=(pe,ve)=>{switch(F){case"ArrowRight":return ve+1>ie?{r:pe+1,c:0}:{r:pe,c:ve+1};case"ArrowLeft":return ve-1<0?{r:pe-1,c:ie}:{r:pe,c:ve-1};case"ArrowDown":return{r:pe+1,c:ve};case"ArrowUp":return{r:pe-1,c:ve};case"Home":return{r:Ce?Y:pe,c:0};case"End":return{r:Ce?xe:pe,c:ie};case"PageUp":return{r:Math.max(Y,pe-Ee),c:ve};default:return{r:Math.min(xe,pe+Ee),c:ve}}},Ie=({r:pe,c:ve})=>pe>=Y&&pe<=xe&&ve>=0&&ve<=ie,Ne=({r:pe,c:ve})=>pe>=0?I?.(C(t[pe]),n[ve].field)??null:null;let ke=Le(me,R);if(F.startsWith("Arrow"))for(let pe=Ie(ke)?Ne(ke):null;pe&&pe.rowId===q&&pe.field===ne;pe=Ie(ke)?Ne(ke):null)ke=Le(ke.r,ke.c);if(!Ie(ke))return;const Fe=Ne(ke);if(Fe){const pe=t.findIndex(Se=>C(Se)===Fe.rowId),ve=n.findIndex(Se=>Se.field===Fe.field);pe!==-1&&ve!==-1&&(ke={r:pe,c:ve})}ke.r===me&&ke.c===R||j(ke.r,ke.c)},[W,re,t,n,a,r,i,l,c,u,g,h,x,y,p,f,E,S,N,M,_,O,te,U,I,C,P,v]);return{focusedCell:W,setFocusedCell:V,viewportTabIndex:Q?-1:0,ensureGridFocus:de,handleFocus:se,handleBlur:ue,handleKeyDown:ee,handleMouseDownCapture:J}}const lr=[];function Ac(e){const{isPivotActive:t}=e,n=t?lr: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 Tc=[],Pc={rowFields:[],columnFields:[],valueFields:[]},rl=100;function Fc(e){return!e||e.length===0||e.includes(rl)?rl:e[0]}function Oc(e){const{initialState:t,sortModel:n,onSortModelChange:o,filterModel:r,onFilterModelChange:i,aggregationModel:l,onAggregationModelChange:a,rowGroupingModel:c,onRowGroupingModelChange:u,columnVisibilityModel:g,onColumnVisibilityModelChange:h,pinnedColumns:x,onPinnedColumnsChange:y,pivotModel:p,onPivotModelChange:f,paginationModel:m,onPaginationModelChange:b,pageSizeOptions:w,rowSelectionModel:C,onRowSelectionModelChange:E,density:S,cellSelectionModel:N,onCellSelectionModelChange:M}=e,[_,O]=s.useState(()=>t?.sorting?.sortModel??[]),L=n!==void 0,A=L?n:_,k=s.useCallback(be=>{L||O(be),o?.(be)},[L,o]),[I,P]=s.useState(()=>t?.filter?.filterModel??{items:[]}),v=r!=null,B=v?r:I,V=s.useCallback(be=>{v||P(be),i?.(be)},[v,i]),Q=l!==void 0,[H,z]=s.useState(()=>l??{}),W=JSON.stringify(Q?l:H),re=s.useMemo(()=>JSON.parse(W),[W]),oe=s.useCallback(be=>{Q||z(be),a?.(be)},[Q,a]),fe=c!==void 0,[le,ce]=s.useState(lr),K=(fe?c:le)||lr,de=s.useCallback(be=>{fe||ce(be),u?.(be)},[fe,u]),X=g!==void 0,[te,U]=s.useState(()=>t?.columns?.columnVisibilityModel??{}),J=X?g:te,se=s.useCallback(be=>{X||U(be),h?.(be)},[X,h]),ue=x!==void 0,[ee,D]=s.useState(()=>t?.columns?.pinnedColumns??{}),T=ue?x:ee,$=s.useCallback(be=>{ue||D(be),y?.(be)},[ue,y]),[F,Z]=s.useState(()=>p??Pc),G=p??F,Y=s.useCallback(be=>{Z(be),f?.(be)},[f]),j=m!==void 0,[q,ne]=s.useState(()=>t?.pagination?.paginationModel??m??{page:0,pageSize:Fc(w)}),he=j?m:q,me=s.useCallback(be=>{j||ne(be),b?.(be)},[j,b]),R=C!==void 0,[ge,we]=s.useState([]),ae=R?C:ge,ye=s.useMemo(()=>new Set(ae),[ae]),xe=s.useRef(null);s.useLayoutEffect(()=>{xe.current=null});const ie=s.useCallback(()=>xe.current,[]),Ce=s.useCallback(be=>{xe.current=be,R||we(be),E?.(be)},[R,E]),[Ee]=s.useState(()=>t?.density?.density??"standard"),Le=S??Ee,Ie=N!==void 0,[Ne,ke]=s.useState(Tc),Fe=Ie?N:Ne,pe=s.useRef(null);s.useLayoutEffect(()=>{pe.current=null});const ve=s.useCallback(()=>pe.current,[]),Se=s.useCallback((be,De)=>{pe.current=be,Ie||ke(be),M?.(be,{reason:De})},[Ie,M]);return{sortModel:A,isSortControlled:L,setInternalSortModel:O,handleSortModelChange:k,filterModel:B,isFilterControlled:v,handleFilterModelChange:V,aggregationModel:re,handleAggregationModelChange:oe,rowGroupingModel:K,handleRowGroupingModelChange:de,columnVisibilityModel:J,handleColumnVisibilityModelChange:se,pinnedColumns:T,handlePinnedColumnsChange:$,currentPivotModel:G,handlePivotModelChange:Y,effectivePaginationModel:he,handlePaginationModelChange:me,rowSelectionModel:ae,selectedRowIds:ye,isSelectionControlled:R,setInternalRowSelectionModel:we,handleRowSelectionModelChange:Ce,getPendingRowSelectionModel:ie,density:Le,cellSelectionModel:Fe,handleCellSelectionModelChange:Se,getPendingCellSelectionModel:ve}}const il=s.createContext(null),Dc=52,$c=56,Gc=32,Hc=72;function eo(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 Bc(e){const{rowHeight:t,headerHeight:n,density:o}=e,r=s.useContext(il)?.grid;let i;return o==="compact"?i=eo(r?.rowHeightCompact)??Gc:o==="comfortable"?i=eo(r?.rowHeightComfortable)??Hc:i=t??eo(r?.rowHeightStandard)??Dc,{rowHeight:i,headerHeight:n??eo(r?.headerHeight)??$c}}function to(e){return e>=1?Math.floor(e):1}function sr(e,t){return Math.max(1,Math.ceil(Math.max(0,e)/to(t)))}function Wc(e){const{paginationMode:t,hasDataSource:n,dataSourceRowCount:o,rowCountProp:r,clientRowCount:i}=e;return t!=="server"?i:(n?o??r:r)??i}function ll(e){return e?{paginationRowsPerPage:e.paginationRowsPerPage,paginationOf:e.paginationOf,paginationPage:e.paginationPage}:void 0}function sl(e,t){return Number.isFinite(e)?Math.min(Math.max(0,Math.floor(e)),Math.max(0,t-1)):0}function Vc(e){const{effectiveRows:t,activeHierarchyHandlers:n,filterMode:o,filterModel:r,sortModel:i,sortingMode:l,pagination:a,paginationMode:c,effectivePaginationModel:u,pinnedRows:g,getRowId:h,columnLookup:x,hierarchyField:y}=e,p=s.useMemo(()=>n?n.getVisibleRows({labelField:y})||[]:o==="server"?t:Xo(t,r,x),[t,r,n,y,o,x]),f=s.useMemo(()=>n?o==="server"?t:Xo(t,r,x):p,[n,p,o,t,r,x]),{top:m,center:b,bottom:w}=s.useMemo(()=>n?{top:[],center:p,bottom:[]}:Oa(p,g,h),[p,g,n,h]),C=s.useMemo(()=>n||l==="server"?b:lc(b,i,x,h),[b,i,n,l,x,h]),E=a&&c!=="server",S=to(u.pageSize),N=E?sl(u.page,sr(C.length,S)):u.page,M=s.useMemo(()=>{if(!E)return C;const O=N*S;return C.slice(O,O+S)},[C,E,N,S]),_=s.useMemo(()=>{const O=a?M:C;return[...m,...O,...w]},[m,M,C,w,a]);return{filteredRows:p,dataRows:f,pinnedTopRows:m,unpinnedRows:b,pinnedBottomRows:w,sortedUnpinnedRows:C,paginatedUnpinnedRows:M,currentPage:N,allRenderableRows:_}}const ar=[33554400,17895e3,1e7,5e6],al=new WeakMap;function zc(e){const t=e.body;if(!t)return 1/0;const n=e.createElement("div");n.setAttribute("aria-hidden","true"),n.style.cssText="position:absolute;top:0;left:-10000px;width:1px;visibility:hidden;pointer-events:none;",t.appendChild(n);try{if(n.style.height="100px",Math.abs(n.getBoundingClientRect().height-100)>1)return 1/0;for(const o of ar)if(n.style.height=`${o}px`,Math.abs(n.getBoundingClientRect().height-o)<2)return o;return ar[ar.length-1]}finally{n.remove()}}function Kc(e){if(!e)return 1/0;const t=al.get(e);if(t!==void 0)return t;const n=zc(e);return al.set(e,n),n}function jc(e,t){if(!Number.isFinite(t))return e.length;let n=0,o=e.length;for(;n<o;){const r=n+o>>1;e[r]<=t?n=r+1:o=r}return n}function Uc(e){const[t,n]=s.useState(void 0);return s.useLayoutEffect(()=>{const o=Kc(e.current?.ownerDocument);n(r=>r===o?r:o)},[e]),t}function Rc(e){const{layout:t,scrollTop:n,scrollLeft:o,viewportWidth:r,viewportHeight:i,autoHeight:l,rowReordering:a,hasDetailPanel:c,checkboxSelection:u,pinCheckboxColumn:g,pinExpandColumn:h,overscanRows:x=5,maxContentHeight:y=1/0}=e;return s.useMemo(()=>{const{unpinnedAccWidths:p,unpinnedColsWithWidth:f,leftPinnedCols:m,rightPinnedCols:b,totalWidth:w,leftWidth:C,rightWidth:E,unpinnedTotalWidth:S,systemColumnsWidth:N,cumulativeHeights:M,pinnedTopHeight:_,pinnedBottomHeight:O,unpinnedRowsHeight:L,rowHeights:A,unpinnedRowsLength:k}=t,I=r||1e3,P=l?_+L+O+50:i||600,v=6,B=Math.max(0,o-C),V=o+I-C;let Q=0,H=f.length-1,z=0,W=p.length-1;for(;z<=W;){const D=z+W>>>1;p[D]<B?z=D+1:W=D-1}Q=Math.max(0,z-v);for(let D=Q;D<p.length;D++){if((D===0?0:p[D-1])>V){H=Math.min(f.length-1,D+v);break}H=Math.min(f.length-1,D+v)}const re=Q>0?p[Q-1]:0,oe=S-p[H],fe=[...m,...re>0?[{field:"__spacer_left__",width:re,isSpacer:!0}]:[],...f.slice(Q,H+1),...oe>0?[{field:"__spacer_right__",width:oe,isSpacer:!0}]:[],...b],ce=I>0&&w>I?16:0,K=_+L+O+ce+2,de=K-_-O,X=Number.isFinite(y)?Math.max(0,Math.min(de,y-_-O)):de;let te=0,U=k-1,J=0,se=0,ue=M.length-1;for(;se<=ue;){const D=se+ue>>>1;M[D]<n?se=D+1:ue=D-1}te=Math.max(0,se-x),J=te>0?M[te-1]:0;for(let D=te;D<M.length;D++)if(M[D]>=n+P){U=Math.min(k-1,D+x);break}const ee=(a?48:0)+(c&&h?48:0)+(u&&g?48:0);return{renderContext:{firstRowIndex:te,lastRowIndex:U,firstColumnIndex:Q,lastColumnIndex:H},offsetTop:J,offsetLeft:0,totalHeight:K,virtualContainerHeight:X,pinnedTopHeight:_,pinnedBottomHeight:O,totalWidth:w,rowHeights:A,cumulativeHeights:M,virtualColumns:fe,columnMetrics:{leftPinnedWidth:C,rightPinnedWidth:E,unpinnedAccWidths:p,unpinnedCols:f,totalSpecialsWidth:N,pinnedSpecialsWidth:ee}}},[t,n,o,r,i,l,a,c,u,g,h,x,y])}const cr="application/x-ogx-row",dr="application/x-ogx-column";function cl(e,t,n){const o=e.dataTransfer;!o||typeof o.setData!="function"||(o.setData(t,n),o.setData("text/plain",n))}function no(e,t){const n=e.dataTransfer?.types;return n?Array.from(n).includes(t):!0}function dl(e,t){if(!e||typeof e.addEventListener!="function")return()=>{};const n=()=>t();return e.addEventListener("dragend",n,{once:!0}),()=>e.removeEventListener("dragend",n)}function qc(e){const{columns:t,onColumnOrderChange:n,disableColumnReorder:o=!1}=e,[r,i]=s.useState(null),[l,a]=s.useState(null),c=s.useRef(()=>{}),u=s.useCallback(()=>{c.current(),c.current=()=>{},i(null),a(null)},[]);s.useEffect(()=>()=>c.current(),[]);const g=s.useCallback(y=>p=>{if(!o){if(!t.some(f=>f.field===y)){p.preventDefault();return}c.current(),c.current=dl(p.currentTarget,u),i(y),p.dataTransfer&&(p.dataTransfer.effectAllowed="move",cl(p,dr,y))}},[t,o,u]),h=s.useCallback(y=>p=>{if(!(o||r===null)){if(!no(p,dr)){u();return}p.preventDefault(),p.dataTransfer&&(p.dataTransfer.dropEffect="move"),a(y)}},[r,o,u]),x=s.useCallback(y=>p=>{if(p.preventDefault(),o||r===null||!no(p,dr)){u();return}const f=t.findIndex(b=>b.field===r),m=t.findIndex(b=>b.field===y);u(),!(f===-1||m===-1||f===m)&&n?.({column:t[f],oldIndex:f,targetIndex:m})},[t,r,o,n,u]);return{draggedColumn:r,dragOverColumn:l,onDragStart:o?void 0:g,onDragOver:o?void 0:h,onDragEnd:o?void 0:u,onDrop:o?void 0:x}}function ur({isExpanded:e,onClick:t,variant:n="chevron",tabIndex:o}){return d.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"?d.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[d.jsx("path",{d:"M4 8H12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),d.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"}})]}):d.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"ogx-expand-icon__chevron","aria-hidden":"true",children:d.jsx("path",{d:"M6 4L10 8L6 12",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})}function Xc({renderFn:e}){"use no memo";return d.jsx(d.Fragment,{children:e()})}function Yc(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 Dt extends s.Component{constructor(t){super(t),this.state={hasError:!1,error:null,resetKey:t.resetKey}}static getDerivedStateFromProps(t,n){return Yc(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?d.jsx("div",{className:"ogx__cell-error",role:"img","aria-label":`Error in cell: ${this.props.field}`,title:this.state.error?.message??"Render error",children:"⚠"}):d.jsx(Xc,{renderFn:this.props.renderFn})}}function Jc(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)?Un(l.value,t,e,l.row):i?i(l):l.value==null?"":String(l.value)}}function ul(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 oo=e=>e.formattedValue??e.value;function fl(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:d.jsx(Dt,{field:e.field,resetKey:t.row,renderFn:()=>{throw l}})}}return r&&i===void 0?{useDefault:!0}:{useDefault:!1,content:d.jsx(Dt,{field:e.field,resetKey:t.row,renderFn:()=>i})}}function Zc(e,t,n){const o=e.rowMeta;if(!o?.isGroupRow)return oo(e);if(o.isGroupFooter)return null;const r=o.descendantCount;if(t&&o.hasChildren){const i=o.groupLabel??`${o.groupingField}: ${String(o.groupingValue)}`;return d.jsxs("div",{className:"ogx__group-cell-content",children:[i,r!==void 0?` (${r})`:""]})}return n?d.jsxs("div",{className:"ogx__group-cell-content",children:[o.groupLabel,r!==void 0&&r>0?` (${r})`:""]}):oo(e)}const Qc=e=>e.id;function ed(e){const{activeColumns:t,isHierarchyEnabled:n,isRowGrouping:o,isTreeData:r,activeHierarchyHandlers:i,columnVisibilityModel:l,columnOrder:a,onColumnOrderChange:c,onColumnOrderModelChange:u,disableColumnReorder:g,pivotMode:h,checkboxSelection:x,hasDetailPanel:y,rowReordering:p,initialState:f,setColumns:m,pinnedColumns:b,getRowId:w=Qc,aggregationModel:C,groupingRows:E}=e,S=s.useMemo(()=>t.map(U=>U.field),[t]),[N,M]=s.useState(()=>f?.columns?.columnOrder??null),_=h?S.join("\0"):"",[O,L]=s.useState(null),A=O&&O.key===_?O.order:S,I=h?A:a??(N??S),P=s.useCallback(U=>{if(h){L(J=>{const se=J&&J.key===_?J.order:S;return{key:_,order:typeof U=="function"?U(se):U}});return}M(J=>typeof U=="function"?U(J??S):U)},[h,_,S]),v=s.useCallback(U=>h&&U.hideable===!1||l[U.field]!==!1,[h,l]),B=s.useMemo(()=>{if(!n)return;const U=new Map(I.map((ee,D)=>[ee,D])),J=ee=>U.get(ee.field)??t.indexOf(ee),se=[...t].sort((ee,D)=>J(ee)-J(D));return(ul(se.filter(ee=>l[ee.field]!==!1),b)[0]??t[0])?.field},[n,I,t,l,b]),V=s.useMemo(()=>{if(!n)return t;const U=o?E:void 0;return t.map(J=>{const se=Jc(J,C?.[J.field],U);return J.field===B?{...J,...se,renderCell:ue=>{const ee=ue.rowMeta,D=ee?.treeDepth??0,T=!!ee?.hasChildren,$=!!ee?.isExpanded,F=fl(J,ue,!0),Z=F.useDefault?Zc(ue,o,r):F.content;return d.jsxs("div",{style:{display:"flex",alignItems:"center",paddingInlineStart:D*24,width:"100%",height:"100%"},children:[d.jsx("div",{style:{marginInlineEnd:4,width:24,height:24,display:"flex",alignItems:"center",justifyContent:"center",cursor:T?"pointer":"default",flexShrink:0},children:T?d.jsx("div",{onClick:G=>{G.stopPropagation(),G.preventDefault(),i?.toggleExpansion(w(ue.row))},onMouseDown:G=>{G.stopPropagation()},style:{cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"auto",zIndex:10,position:"relative"},children:d.jsx(ur,{isExpanded:$,tabIndex:-1,onClick:G=>{G.stopPropagation(),G.preventDefault(),i?.toggleExpansion(w(ue.row))}})}):null}),d.jsx("div",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Z})]})}}:{...J,...se,renderCell:ue=>{const ee=ue.rowMeta;if(!ee?.isGroupRow)return J.renderCell?J.renderCell(ue):oo(ue);const D=fl(J,ue,!1);return D.useDefault?J.field===ee.groupingField&&!ee.isGroupFooter||ue.value==null?null:oo(ue):D.content}}})},[t,n,o,r,i,B,w,C,E]),[Q,H]=s.useState(()=>f?.columns?.columnWidths??{}),z=s.useCallback((U,J)=>{H(se=>({...se,[U]:J}))},[]);s.useEffect(()=>{m(t)},[t,m]);const W=s.useMemo(()=>{const U=new Map(I.map((J,se)=>[J,se]));return[...V].sort((J,se)=>{const ue=U.get(J.field)??V.indexOf(J),ee=U.get(se.field)??V.indexOf(se);return ue-ee})},[V,I]),re=s.useMemo(()=>W.filter(v),[W,v]),oe=s.useCallback((U,J)=>{(h||!a)&&P(U),J&&c?.(J),h||u?.(U)},[h,a,P,c,u]),fe=s.useCallback((U,J)=>{const se=W.map(ee=>ee.field),[ue]=se.splice(U,1);se.splice(J,0,ue),oe(se,{column:W[U],oldIndex:U,targetIndex:J})},[W,oe]),le=qc({columns:W,onColumnOrderChange:s.useCallback(({oldIndex:U,targetIndex:J})=>fe(U,J),[fe]),disableColumnReorder:g}),ce=s.useCallback((U,J)=>{const se=W.findIndex(ee=>ee.field===U),ue=W.findIndex(ee=>ee.field===J);se===-1||ue===-1||se===ue||fe(se,ue)},[W,fe]),K=s.useCallback(()=>{oe(S)},[oe,S]),de=s.useMemo(()=>ul(re,b),[re,b]),X=s.useMemo(()=>{const U=[];return p&&U.push({field:Pt,sortable:!1,editable:!1}),y&&U.push({field:Ft,sortable:!1,editable:!1}),x&&U.push({field:Ze,sortable:!1,editable:!1}),[...U,...de]},[de,x,y,p]),te=s.useMemo(()=>new Map(de.map((U,J)=>[U.field,J])),[de]);return{effectiveColumns:V,hierarchyField:B,orderedColumns:W,visibleOrderedColumns:re,renderOrderedColumns:de,navigationColumns:X,columnIndexMap:te,columnWidths:Q,effectiveColumnOrder:I,setInternalColumnOrder:P,columnReorderHandlers:le,moveColumn:ce,resetColumnOrder:K,handleColumnResize:z}}const td=e=>e.id;function nd(e){const{renderContext:t,pinnedTopRows:n,pinnedBottomRows:o,paginatedUnpinnedRows:r,sortedUnpinnedRows:i,pagination:l,getRowId:a=td}=e;return s.useMemo(()=>{const{firstRowIndex:c,lastRowIndex:u}=t,g=l?r:i,h=n.length,x=n.map((C,E)=>({row:C,id:a(C),rowIndex:E,pinned:"top"})),y=o.map((C,E)=>({row:C,id:a(C),rowIndex:h+g.length+E,pinned:"bottom"})),p=Math.max(0,c),f=Math.min(g.length,u+1),m=g.slice(p,f).map((C,E)=>({row:C,id:a(C),rowIndex:h+p+E})),b=[...x,...m,...y],w=new Set;return b.filter(C=>w.has(C.id)?!1:(w.add(C.id),!0))},[t,n,o,r,i,l,a])}const od=100;function gl(e){const{scrollTop:t,scrollHeight:n,clientHeight:o}=e;return n-t-o>=od?null:{visibleTop:t,visibleBottom:t+o,viewportHeight:o}}function rd(e){return e<.5?3:e<3?5:e<15?12:e<40?20:30}function id(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}),a=s.useRef(null),c=s.useRef(null),u=s.useRef(null),g=s.useRef(!0),h=s.useRef(t),[x,y]=s.useState({scrollTop:0,scrollLeft:0,velocityOverscan:0});s.useEffect(()=>{h.current=t},[t]),s.useEffect(()=>()=>{a.current!==null&&cancelAnimationFrame(a.current),c.current!==null&&clearTimeout(c.current)},[]);const p=s.useCallback(b=>{const w=gl(b);if(!w){g.current=!0;return}if(!g.current)return;const C=h.current;C&&(g.current=!1,C(w))},[]),f=s.useCallback(b=>{const w=b.currentTarget,C=performance.now(),E=Kt(w),S=Math.abs(w.scrollTop-l.current.scrollTop)+Math.abs(E-l.current.scrollLeft),N=C-l.current.time,M=N>0?S/N:0,_=w.scrollTop!==l.current.scrollTop;l.current={scrollTop:w.scrollTop,scrollLeft:E,time:C},i.current={scrollTop:w.scrollTop,scrollLeft:E,velocity:M},a.current!==null&&cancelAnimationFrame(a.current),a.current=requestAnimationFrame(()=>{a.current=null;const{scrollTop:O,scrollLeft:L,velocity:A}=i.current;y({scrollTop:O,scrollLeft:L,velocityOverscan:rd(A)})}),c.current!==null&&clearTimeout(c.current),c.current=setTimeout(()=>{c.current=null,y(O=>O.velocityOverscan===0?O:{...O,velocityOverscan:0})},200),_&&p(w)},[p]);s.useEffect(()=>{g.current=!0;const b=u.current;!b||r||o<=0||b.clientHeight===0||p(b)},[o,r,p]),s.useEffect(()=>{const b=u.current?.ownerDocument??(typeof document>"u"?null:document);if(!b||typeof MutationObserver>"u")return;const w=new MutationObserver(()=>{const C=u.current;if(!C)return;const E={scrollTop:C.scrollTop,scrollLeft:Kt(C)},S=i.current;E.scrollTop===S.scrollTop&&E.scrollLeft===S.scrollLeft||(i.current={...S,...E},l.current={...l.current,...E},y(N=>({...N,...E})))});return w.observe(b.documentElement,{attributes:!0,attributeFilter:["dir"],subtree:!0}),()=>w.disconnect()},[]);const m=s.useCallback(b=>{if(u.current=b,!b)return;const{scrollTop:w,scrollLeft:C}=i.current;if(w===0&&C===0)return;b.scrollTop=w,bn(b,C);const E={scrollTop:b.scrollTop,scrollLeft:Kt(b)};(E.scrollTop!==w||E.scrollLeft!==C)&&(i.current={...i.current,...E},l.current={...l.current,...E},y(S=>({...S,...E})))},[]);return{scrollTop:x.scrollTop,scrollLeft:x.scrollLeft,overscanRows:Math.max(x.velocityOverscan,n),handleScroll:f,attachViewport:m}}function ld(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:a}=i.contentRect;e(l,a)}});o.observe(n),t.current=o},[e])}function sd(e){const{setDimensions:t,viewportRef:n,...o}=e,{scrollTop:r,scrollLeft:i,overscanRows:l,handleScroll:a,attachViewport:c}=id(o),u=ld(t),g=s.useCallback(h=>{n.current=h,u(h),c(h)},[n,u,c]);return{scrollTop:r,scrollLeft:i,overscanRows:l,handleScroll:a,setViewportElement:g}}function ad(){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 cd(e){const{hasDetailPanel:t,controlledExpandedRowIds:n,onDetailPanelExpandedRowIdsChange:o,rowMetaMap:r}=e,[i,l]=s.useState(new Set),a=n??i,c=s.useMemo(()=>Ba(a,r),[a,r]),u=s.useCallback(x=>{if(r.get(x)?.isGroupRow)return;const y=new Set(a);y.has(x)?y.delete(x):y.add(x),n===void 0&&l(y),o?.(y)},[a,r,n,o]),{detailPanelHeights:g,reportDetailPanelHeight:h}=ad();return{hasDetailPanel:t,expandedRowIds:c,handleDetailPanelToggle:u,detailPanelHeights:g,reportDetailPanelHeight:h}}const dd=new Set(["__group__"]),_n=e=>!dd.has(e);function pl(e){return Object.keys(e).every(_n)?e:Object.fromEntries(Object.entries(e).filter(([n])=>_n(n)))}function ud(e){const t={...e};return e.left&&(t.left=e.left.filter(_n)),e.right&&(t.right=e.right.filter(_n)),t}function fd(e){const{onStateChange:t,sortModel:n,filterModel:o,effectivePaginationModel:r,columnWidths:i,effectiveColumnOrder:l,columnVisibilityModel:a,pinnedColumns:c,density:u}=e,g=s.useRef(t);s.useLayoutEffect(()=>{g.current=t});const h=s.useRef(null);s.useEffect(()=>{if(!g.current)return;const x={sorting:{sortModel:n},filter:{filterModel:o},pagination:{paginationModel:r},columns:{columnWidths:pl(i),columnOrder:l.filter(_n),columnVisibilityModel:pl(a),pinnedColumns:ud(c)},density:{density:u}},y=JSON.stringify(x);y!==h.current&&(h.current=y,g.current(x))},[n,o,r,i,l,a,c,u])}const gd=200,pd=2e3,hd=178e5;function md(e){const{paginationRequested:t,isRowGrouping:n,autoHeight:o,viewportHeight:r,renderedRowCount:i,totalRowCount:l,pinnedRowsIgnored:a=!1,scrollHeight:c=0,maxContentHeight:u,reachableRowCount:g,unpinnedRowCount:h,listViewWithoutColumn:x=!1,listViewRowCount:y=0}=e,p=s.useRef(!1),f=s.useRef(!1),m=s.useRef(!1),b=s.useRef(!1),w=s.useRef(!1),C=s.useRef(!1);s.useEffect(()=>{process.env.NODE_ENV==="production"||C.current||y<=pd||(C.current=!0,console.warn(`[OpenGridX] The list view is rendering all ${y} 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.`))},[y]),s.useEffect(()=>{process.env.NODE_ENV==="production"||w.current||!x||(w.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."))},[x]),s.useEffect(()=>{process.env.NODE_ENV==="production"||m.current||!a||(m.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."))},[a]),s.useEffect(()=>{if(process.env.NODE_ENV==="production"||b.current||u===void 0)return;const E=Number.isFinite(u);if(E?c<=u:c<=hd)return;b.current=!0;const S=E&&g!==void 0&&h!==void 0?`Only the first ${g.toLocaleString("en-US")} of ${h.toLocaleString("en-US")} rows can be scrolled to in this browser. `:"The last rows may not be reachable by scrolling. ";console.warn(`[OpenGridX] The grid content is ${Math.round(c)}px tall, more than this browser lays out (about 17.9M px in Firefox, 33.5M px in Chrome and Safari). `+S+"Use pagination, server-side or infinite loading, or a smaller rowHeight. See docs/features/virtualization.md.")},[c,u,g,h]),s.useEffect(()=>{process.env.NODE_ENV==="production"||p.current||t&&n&&(p.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"||f.current||o||r>0&&l>gd&&i>=l&&r>=c&&(f.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,c])}function wd(e){return typeof window>"u"||typeof window.getComputedStyle!="function"||typeof navigator<"u"&&/jsdom/i.test(navigator.userAgent)?!1:window.getComputedStyle(e).display!=="flex"}let hl=!1;function bd(e){s.useEffect(()=>{if(process.env.NODE_ENV==="production"||hl)return;const t=e.current;!t||!wd(t)||(hl=!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 ro(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 xd(e,t,n){return n?e.has(t)?[]:[t]:ro(e,[t],!e.has(t),!1)}function ml(e,t){return t.length===e.size&&t.every(n=>e.has(n))}function yd(e){const{selectedRowIds:t,onSelectionModelChange:n,disableMultipleRowSelection:o,selectableRowIds:r}=e,i=s.useCallback(h=>{ml(t,h)||n(h)},[t,n]),l=s.useCallback((h,x)=>{i(ro(t,[h],x,o))},[i,t,o]),a=s.useCallback(h=>{i(xd(t,h,o))},[i,t,o]),c=s.useCallback(h=>{i(ro(t,r,h,!1))},[i,t,r]),{allSelected:u,someSelected:g}=s.useMemo(()=>{let h=0;for(const y of r)t.has(y)&&h++;const x=r.length>0&&h===r.length;return{allSelected:x,someSelected:!x&&h>0}},[r,t]);return{toggleRow:l,clickRow:a,selectAll:o?void 0:c,allSelected:u,someSelected:g}}function Cd(e){const{dataRows:t,getRowId:n,isPivotActive:o,selectedRowIds:r,onSelectionModelChange:i,disableMultipleRowSelection:l,disableRowSelectionOnClick:a,isHierarchyEnabled:c,rowMetaMap:u,activeHierarchyHandlers:g,onRowClick:h}=e,x=s.useMemo(()=>{const w=t.map(n);return o?w.filter(C=>C!==Rt):w},[t,n,o]),y=yd({selectedRowIds:r,onSelectionModelChange:i,disableMultipleRowSelection:l,selectableRowIds:x}),{clickRow:p,toggleRow:f}=y,m=s.useCallback(w=>{const{id:C}=w,E=c?u.get(C):void 0;if(E?.isGroupRow){E.hasChildren&&g?.toggleExpansion(C);return}h?.(w),!a&&!Xe(C,u)&&p(C)},[c,g,h,u,a,p]),b=s.useCallback((w,C)=>{Xe(w,u)||f(w,C)},[u,f]);return{rowSelection:y,handleRowClick:m,handleSelectionChange:b}}const wl=e=>JSON.stringify(Array.from(e,t=>typeof t=="number"?["n",t]:["s",t]));function vd(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 h of t)n.has(h)||o.has(h)?g.add(h):u=!0;return u?g:t},[r,t,n,o]),a=s.useRef(i);s.useLayoutEffect(()=>{a.current=i});const c=s.useRef(null);return s.useEffect(()=>{if(l===t){c.current=null;return}const u=`${wl(t)}|${wl(l)}`;c.current!==u&&(c.current=u,a.current(Array.from(l)))},[l,t]),l}function fr(e,t,n,o){return o?ac(e,t,n):n?[{field:t,sort:n}]:e.filter(r=>r.field!==t)}function _d(e){const{sortModel:t,onSortModelChange:n}=e,o=s.useCallback((i,l)=>{n(fr(t,i,l,!1))},[t,n]),r=s.useCallback((i,l)=>{n(fr(t,i,l,!0))},[t,n]);return{handleSort:o,handleSortAdd:r}}function Sd(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(c=>{const u={...i.current.columnVisibilityModel,[c]:!1};i.current={...i.current,columnVisibilityModel:u},n(u)},[n]),a=s.useCallback((c,u)=>{const g=Da(i.current.pinnedColumns,c,u);i.current={...i.current,pinnedColumns:g},r(g)},[r]);return{handleHideColumn:l,handlePinColumn:a}}function kd(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=(c,u)=>{const{sortModel:g,multiSort:h,onSortModelChange:x}=r(),y=fr(g,c,u,h);n.current={...r(),sortModel:y},x(y)},o.getFilterModel=()=>r().filterModel,o.setFilterModel=c=>{n.current={...r(),filterModel:c},r().onFilterModelChange(c)};const i=c=>{n.current={...r(),paginationModel:c},r().onPaginationModelChange(c)};o.setPage=c=>i({...r().paginationModel,page:c}),o.setPageSize=c=>i({...r().paginationModel,pageSize:c,page:0});const l=()=>{const c=r().getPendingRowSelectionModel?.();return c?new Set(c):r().selectedRowIds},a=(c,u)=>{const{disableMultipleRowSelection:g,onRowSelectionModelChange:h,isSyntheticRowId:x}=r(),y=x?c.filter(m=>!x(m)):c;if(y.length===0)return;const p=l(),f=ro(p,y,u,g);ml(p,f)||(n.current={...r(),selectedRowIds:new Set(f)},h(f))};o.getSelectedRows=()=>Array.from(l()),o.selectRow=(c,u=!0)=>a([c],u),o.selectRows=(c,u=!0)=>a(c,u),o.getVisibleRows=()=>r().getVisibleRows(),o.getAllFilteredRows=()=>r().getAllFilteredRows(),o.getVisibleColumns=()=>r().visibleColumns,o.setSortModel=c=>{n.current={...r(),sortModel:c},r().onSortModelChange(c)},o.setRowGroupingModel=c=>{n.current={...r(),rowGroupingModel:c},r().onRowGroupingModelChange(c)},o.setAggregationModel=c=>{n.current={...r(),aggregationModel:c},r().onAggregationModelChange(c)},o.setColumnVisibilityModel=c=>{n.current={...r(),columnVisibilityModel:c},r().onColumnVisibilityModelChange(c)},o.setPivotModel=c=>{n.current={...r(),pivotModel:c},r().onPivotModelChange(c)},o.getGridAiState=()=>{const{filterModel:c,sortModel:u,rowGroupingModel:g,aggregationModel:h,pivotModel:x,columnVisibilityModel:y}=r();return{filterModel:c,sortModel:u,rowGroupingModel:g,aggregationModel:h,pivotModel:x,columnVisibilityModel:y}}},[t])}const bl="\0";function Ed(e,t){const n=e.filter(o=>t[o.field]===!1).map(o=>o.field).join(bl);return s.useMemo(()=>{const o={};if(n)for(const r of n.split(bl))o[r]=!1;return er(e,o)},[e,n])}function Md({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 a=`${i}>${t}`;if(l.current===a)return;l.current=a;const{paginationModel:c,onPaginationModelChange:u}=r.current;u({...c,page:t})},[n,t,i])}function Nd(){const[e,t]=s.useState(!1),[n,o]=s.useState(!1),r=s.useRef(null),i=s.useRef(0),[l,a]=s.useState(0),[c,u]=s.useState(!1),g=s.useMemo(()=>({registerColumnsPanel:()=>(i.current+=1,()=>{i.current-=1}),registerFiltersPanel:()=>(a(m=>m+1),()=>a(m=>m-1))}),[]),h=s.useCallback(()=>u(!0),[]),x=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 m(w){r.current&&!r.current.contains(w.target)&&o(!1)}function b(w){w.key==="Escape"&&o(!1)}return document.addEventListener("mousedown",m),document.addEventListener("keydown",b),()=>{document.removeEventListener("mousedown",m),document.removeEventListener("keydown",b)}},[n]),{toolbarHost:g,toolbarPanelRequested:e,closeToolbarPanel:p,standalonePanelOpen:n,closeStandalonePanel:f,standalonePanelRef:r,openColumnsPanel:y,toolbarFiltersRequested:c,closeToolbarFiltersPanel:x,openFiltersPanel:l>0?h:void 0}}const xl=s.createContext(null);function Id(e){if(typeof e!="function")return!1;const t=e.prototype;return!(typeof t=="object"&&t!==null&&"isReactComponent"in t)}function Ld({render:e,toolbarProps:t}){"use no memo";return d.jsx(d.Fragment,{children:e(t)})}function Ad({component:e,toolbarProps:t}){if(Id(e))return d.jsx(Ld,{render:e,toolbarProps:t},`fn:${e.toString()}`);const n=e;return d.jsx(n,{...t})}const yl=48;function Td({columns:e,aggregationModel:t,aggregationResult:n,columnWidths:o,rowHeight:r,checkboxSelection:i,hasDetailPanel:l,rowReordering:a,pinCheckboxColumn:c=!0,pinExpandColumn:u=!0,pinnedColumns:g,loading:h=!1}){const x=s.useMemo(()=>Fo(e,o,g,i,c,l,u,a),[e,o,g,i,c,l,u,a]),{lastLeft:y,firstRight:p}=s.useMemo(()=>Oo(e,g),[e,g]),f=a?yl:0,m=f+(l&&u?yl:0),b=(w,C,E)=>d.jsx("div",{className:`ogx__aggregation-spacer${C?" ogx__aggregation-spacer--pinned":""}`,style:C?{insetInlineStart:E}:void 0,"aria-hidden":"true"},w);return d.jsxs("div",{className:`ogx__aggregation-footer${h?" ogx__aggregation-footer--loading":""}`,role:"row","aria-label":"Aggregation totals","aria-live":"polite","aria-busy":h||void 0,style:{minHeight:`${r}px`},children:[a&&b("__reorder_col__",!0,0),l&&b("__expand_col__",u,f),i&&b("__checkbox_col__",c,m),e.map(w=>{if(w.isSpacer){const A=typeof w.width=="number"?w.width:0;return d.jsx("div",{style:{width:A,minWidth:A,flexShrink:0},"aria-hidden":"true"},w.field)}const C=t[w.field],E=C&&Ko(w,C)?C:void 0,S=n[w.field],N=At(w,o,120),M=ct(w.field,g),_=M?x[w.field]:void 0,O=["ogx__aggregation-cell",M==="left"&&"ogx__aggregation-cell--pinned-left",M==="right"&&"ogx__aggregation-cell--pinned-right",M==="left"&&w.field===y&&"ogx__aggregation-cell--pinned-left-last",M==="right"&&w.field===p&&"ogx__aggregation-cell--pinned-right-first"].filter(Boolean).join(" "),L={width:N,minWidth:N,maxWidth:N,textAlign:w.align||"left"};return M==="left"&&_!==void 0&&(L.insetInlineStart=_),M==="right"&&_!==void 0&&(L.insetInlineEnd=_),d.jsx("div",{className:O,role:"gridcell",style:L,children:E?d.jsxs(d.Fragment,{children:[d.jsx("span",{className:"ogx__aggregation-label",children:E}),d.jsx("span",{className:"ogx__aggregation-value",children:Un(S,E,w,n)})]}):null},w.field)})]})}function Pd({noRowsLabel:e,width:t,overlay:n}){return n?d.jsx("div",{className:"ogx__empty",style:{width:t},children:n}):d.jsxs("div",{className:"ogx__empty",style:{width:t},children:[d.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[d.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),d.jsx("path",{d:"M3 9h18M9 21V9"})]}),d.jsx("span",{children:e})]})}function Cl({dataSource:e,paginationMode:t,sortingMode:n,filterMode:o}){return!!e&&(t==="server"||t==="infinite"||n==="server"||o==="server")}const vl=Number.MAX_SAFE_INTEGER,Fd="An unexpected error occurred while loading the data.";function _l(e){return typeof e=="string"&&e?e:typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"&&e.message?e.message:Fd}function Od({error:e,onRetry:t}){if(!e)return null;const n=_l(e);return d.jsxs("div",{className:"ogx-error-overlay","aria-live":"assertive",role:"alert",children:[d.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:[d.jsx("circle",{cx:"12",cy:"12",r:"10"}),d.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),d.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),d.jsx("div",{className:"ogx-error-overlay__title",children:"Oops! Something went wrong"}),d.jsx("div",{className:"ogx-error-overlay__message",children:n}),t&&d.jsx("button",{type:"button",onClick:t,className:"ogx-button ogx-button--primary",children:"Retry"})]})}function Sl(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},a){const c=s.useRef(null),u=s.useCallback(h=>{c.current=h,Sl(i,h),Sl(a,h)},[i,a]);s.useEffect(()=>{c.current&&(c.current.indeterminate=t)},[t]);const g=["ogx-checkbox-wrapper",l.disabled&&"ogx-checkbox-wrapper--disabled",o].filter(Boolean).join(" ");return d.jsxs("label",{className:g,children:[d.jsx("input",{ref:u,type:"checkbox",className:["ogx-checkbox__input",r].filter(Boolean).join(" "),...l}),d.jsxs("span",{className:"ogx-checkbox__box",children:[l.checked&&!t&&d.jsx("svg",{className:"ogx-checkbox__icon",viewBox:"0 0 24 24","aria-hidden":"true",children:d.jsx("path",{d:"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"})}),t&&d.jsx("svg",{className:"ogx-checkbox__icon",viewBox:"0 0 24 24","aria-hidden":"true",children:d.jsx("path",{d:"M19 13H5v-2h14v2z"})})]}),n&&d.jsx("span",{className:"ogx-checkbox__label",children:n})]})});Ct.displayName="Checkbox";const kl=50;function gr(e,t,n,o){const r=Math.min(n??kl,t),i=Math.max(o??1/0,t);return Math.max(r,Math.min(i,e))}const Dd=16;function $d(e){e.preventDefault(),e.stopPropagation()}function Gd(){const e=t=>{t.stopPropagation(),t.preventDefault()};window.addEventListener("click",e,{capture:!0,once:!0}),setTimeout(()=>window.removeEventListener("click",e,{capture:!0}),0)}function Hd(e){const{field:t,currentWidth:n,onResize:o,onAutosize:r,minWidth:i,maxWidth:l,edge:a="end"}=e,[c,u]=s.useState(!1),g=s.useRef(null);s.useEffect(()=>()=>{g.current=null},[]);const h=s.useCallback((w,C)=>{const E=(C-w.startX)*(w.rtl?-1:1),S=w.startWidth+(a==="start"?-E:E);return gr(S,w.startWidth,i,l)},[a,i,l]),x=s.useCallback(w=>{if(w.button===0){w.stopPropagation(),g.current={pointerId:w.pointerId,startX:w.clientX,startWidth:n,rtl:Je(w.currentTarget),lastUpdate:0,moved:!1},u(!0);try{w.currentTarget.setPointerCapture(w.pointerId)}catch{}}},[n]),y=s.useCallback(w=>{const C=g.current;if(!C||w.pointerId!==C.pointerId||(w.clientX!==C.startX&&(C.moved=!0),!C.moved))return;const E=Date.now();E-C.lastUpdate>=Dd&&(C.lastUpdate=E,o(t,h(C,w.clientX)))},[t,o,h]),p=s.useCallback((w,C)=>{const E=g.current;if(!(!E||w.pointerId!==E.pointerId)){if(g.current=null,u(!1),w.currentTarget.hasPointerCapture?.(w.pointerId))try{w.currentTarget.releasePointerCapture(w.pointerId)}catch{}(E.moved||w.clientX!==E.startX)&&(Gd(),C&&o(t,h(E,w.clientX)))}},[t,o,h]),f=s.useCallback(w=>{if(w.key==="Enter"&&r){w.preventDefault(),w.stopPropagation(),r(t);return}if(w.key!=="ArrowLeft"&&w.key!=="ArrowRight")return;w.preventDefault(),w.stopPropagation();const C=Vn(w.key,Je(w.currentTarget)),E=(w.shiftKey?50:10)*(C==="ArrowRight"?1:-1);o(t,gr(n+E,n,i,l))},[t,n,o,r,i,l]),m=s.useCallback(w=>{w.preventDefault(),w.stopPropagation(),r?.(t)},[t,r]),b=["ogx-column-resize-handle",a==="start"&&"ogx-column-resize-handle--start",c&&"ogx-column-resize-handle--dragging"].filter(Boolean).join(" ");return d.jsx("div",{className:b,onPointerDown:x,onMouseDown:$d,onPointerMove:y,onPointerUp:w=>p(w,!0),onPointerCancel:w=>p(w,!1),onClick:w=>w.stopPropagation(),onDragStart:w=>{w.preventDefault(),w.stopPropagation()},onDoubleClick:m,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:d.jsx("div",{className:"ogx-column-resize-handle__line"})})}function El(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 Ml(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 pr(e,t,n){if(!e||e.length===0)return!0;const o=Ml(e),r=o.get(t),i=o.get(n);return(r?.[r.length-1]??null)===(i?.[i.length-1]??null)}function Bd(e,t,n){const o=[];let r=0,i=null,l=null;for(const a of e){const c=a.isSpacer?null:t.get(a.field)?.[n]??null;(i===null||l!==c||i.pinned!==a.pinned)&&(i={key:`${c?c.groupId:"filler"}-${n}-${a.field}`,isGroup:c!==null,label:c?.headerName??"",headerClassName:c?.headerClassName,width:0,flexGrow:0,fields:[],firstDataIndex:r,pinned:a.pinned},l=c,o.push(i)),i.width+=a.width,i.flexGrow+=a.flex??0,a.isSpacer||(i.fields.push(a.field),r++)}return o}function $t(){return document.documentElement.clientWidth||window.innerWidth}function Nl(){return document.documentElement.clientHeight||window.innerHeight}function Xt(){return d.jsx("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"currentColor",children:d.jsx("circle",{cx:"4",cy:"4",r:"4"})})}function Yt(){return d.jsx("svg",{width:"8",height:"8",viewBox:"0 0 8 8",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:d.jsx("circle",{cx:"4",cy:"4",r:"3"})})}function Wd(){return d.jsxs("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"13",height:"13",fill:"none",children:[d.jsx("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",stroke:"currentColor",strokeWidth:"1.8"}),d.jsx("rect",{x:"8.5",y:"4",width:"7",height:"16",fill:"currentColor",opacity:"0.3"}),d.jsx("line",{x1:"8.5",y1:"4",x2:"8.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),d.jsx("line",{x1:"15.5",y1:"4",x2:"15.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),d.jsx("line",{x1:"2",y1:"9",x2:"22",y2:"9",stroke:"currentColor",strokeWidth:"1.2"}),d.jsx("line",{x1:"2",y1:"14",x2:"22",y2:"14",stroke:"currentColor",strokeWidth:"1.2"})]})}function Vd(){return d.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"12",y1:"19",x2:"12",y2:"5"}),d.jsx("polyline",{points:"5 12 12 5 19 12"})]})}function zd(){return d.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),d.jsx("polyline",{points:"19 12 12 19 5 12"})]})}function Kd(){return d.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",children:d.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})})}function jd(){return d.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.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"}),d.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"}),d.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]})}function Ud(){return d.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"4",y1:"2",x2:"4",y2:"22"}),d.jsx("polyline",{points:"11 8 4 12 11 16"}),d.jsx("line",{x1:"4",y1:"12",x2:"20",y2:"12"})]})}function Rd(){return d.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"20",y1:"2",x2:"20",y2:"22"}),d.jsx("polyline",{points:"13 8 20 12 13 16"}),d.jsx("line",{x1:"20",y1:"12",x2:"4",y2:"12"})]})}function qd(){return d.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"2",y1:"2",x2:"22",y2:"22"}),d.jsx("line",{x1:"4",y1:"4",x2:"4",y2:"20"}),d.jsx("line",{x1:"4",y1:"12",x2:"20",y2:"12"})]})}const Il=e=>e?Array.from(e.querySelectorAll('[role="menuitem"], [role="menuitemradio"]')):[];function Xd({colDef:e,sortModel:t,onSort:n,onHide:o,onPin:r,pinnedColumns:i,onManageColumns:l,onClose:a,anchorEl:c}){const u=s.useRef(null),g=s.useCallback(v=>{v&&(c?.closest('[role="columnheader"]')??c)?.focus({preventScroll:!0}),a()},[c,a]),h=v=>{const B=Il(u.current),V=B.indexOf(v.target);let Q=-1;if(v.key==="ArrowDown")Q=V+1>=B.length?0:V+1;else if(v.key==="ArrowUp")Q=V<=0?B.length-1:V-1;else if(v.key==="Home")Q=0;else if(v.key==="End")Q=B.length-1;else if(v.key==="Tab"){v.preventDefault(),g(!0);return}else return;v.preventDefault(),B[Q]?.focus()},[x,y]=s.useState({position:"fixed",zIndex:1300,top:0,left:0,visibility:"hidden"});s.useLayoutEffect(()=>{if(!c||!u.current)return;const v=c.getBoundingClientRect(),B=u.current.getBoundingClientRect(),V=$t(),Q=Nl(),H=8;let z=v.left;z+B.width+H>V&&(z=V-B.width-H),z<H&&(z=H);let W=v.bottom+4;W+B.height+H>Q&&(W=v.top-B.height-4),y({position:"fixed",zIndex:1300,top:W,left:z,visibility:"visible"})},[c]);const p=x.visibility==="visible";s.useLayoutEffect(()=>{p&&Il(u.current)[0]?.focus({preventScroll:!0})},[p]),s.useEffect(()=>{function v(V){u.current&&!u.current.contains(V.target)&&c&&!c.contains(V.target)&&a()}function B(V){V.key==="Escape"&&g(!0)}return document.addEventListener("mousedown",v),document.addEventListener("keydown",B),window.addEventListener("scroll",a,!0),window.addEventListener("resize",a),()=>{document.removeEventListener("mousedown",v),document.removeEventListener("keydown",B),window.removeEventListener("scroll",a,!0),window.removeEventListener("resize",a)}},[c,a,g]);const f=v=>{n?.(e.field,v),g(!0)},m=!!o&&e.hideable!==!1,b=!!r&&e.pinnable!==!1,w=()=>{m&&o?.(e.field),g(!0)},C=v=>{b&&r?.(e.field,v),g(!0)},E=t?.find(v=>v.field===e.field)?.sort,S=E==null,N=i?.left?.includes(e.field)??!1,M=i?.right?.includes(e.field)??!1,_=!N&&!M,O=Je(c),L=O?"right":"left",A=O?"left":"right",k=O?M:N,I=O?N:M,P=e.headerName||e.field;return bt.createPortal(d.jsxs("div",{ref:u,className:"ogx-column-menu",style:x,role:"menu","aria-label":`Column options for ${P}`,onKeyDown:h,children:[n&&e.sortable!==!1&&d.jsxs(d.Fragment,{children:[d.jsxs("button",{type:"button",className:`ogx-menu-item${E==="asc"?" ogx-menu-item--active":""}`,onClick:()=>f("asc"),role:"menuitemradio","aria-checked":E==="asc",children:[d.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:E==="asc"?d.jsx(Xt,{}):d.jsx(Yt,{})}),d.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:d.jsx(Vd,{})}),"Sort Ascending"]}),d.jsxs("button",{type:"button",className:`ogx-menu-item${E==="desc"?" ogx-menu-item--active":""}`,onClick:()=>f("desc"),role:"menuitemradio","aria-checked":E==="desc",children:[d.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:E==="desc"?d.jsx(Xt,{}):d.jsx(Yt,{})}),d.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:d.jsx(zd,{})}),"Sort Descending"]}),d.jsxs("button",{type:"button",className:`ogx-menu-item${S?" ogx-menu-item--active":""}`,onClick:()=>f(null),role:"menuitemradio","aria-checked":S,children:[d.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:S?d.jsx(Xt,{}):d.jsx(Yt,{})}),d.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:d.jsx(Kd,{})}),"Unsort"]}),d.jsx("div",{className:"ogx-menu-divider"})]}),b&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"ogx-menu-section-label","aria-hidden":"true",children:"Pin column"}),d.jsxs("button",{type:"button",className:`ogx-menu-item${k?" ogx-menu-item--active":""}`,onClick:()=>C(L),role:"menuitemradio","aria-checked":k,"aria-label":"Pin to left",children:[d.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:k?d.jsx(Xt,{}):d.jsx(Yt,{})}),d.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:d.jsx(Ud,{})}),"Pin to Left"]}),d.jsxs("button",{type:"button",className:`ogx-menu-item${I?" ogx-menu-item--active":""}`,onClick:()=>C(A),role:"menuitemradio","aria-checked":I,"aria-label":"Pin to right",children:[d.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:I?d.jsx(Xt,{}):d.jsx(Yt,{})}),d.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:d.jsx(Rd,{})}),"Pin to Right"]}),d.jsxs("button",{type:"button",className:`ogx-menu-item${_?" ogx-menu-item--active":""}`,onClick:()=>C(null),role:"menuitemradio","aria-checked":_,"aria-label":"Unpin column",children:[d.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true",children:_?d.jsx(Xt,{}):d.jsx(Yt,{})}),d.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:d.jsx(qd,{})}),"Unpin"]}),d.jsx("div",{className:"ogx-menu-divider"})]}),m&&d.jsxs(d.Fragment,{children:[d.jsxs("button",{type:"button",className:"ogx-menu-item",onClick:w,role:"menuitem","aria-label":`Hide ${P} column`,children:[d.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true"}),d.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:d.jsx(jd,{})}),"Hide Column"]}),d.jsx("div",{className:"ogx-menu-divider"})]}),d.jsxs("button",{type:"button",className:"ogx-menu-item",onClick:()=>{l?.(),g(!1)},role:"menuitem","aria-label":"Manage all columns",children:[d.jsx("span",{className:"ogx-menu-item__indicator","aria-hidden":"true"}),d.jsx("span",{className:"ogx-menu-item__icon","aria-hidden":"true",children:d.jsx(Wd,{})}),"Manage columns"]})]}),c?.closest(".ogx-theme-provider")||document.body)}const Yd=16,Jd=16;function Zd(e,t=!1){const n=Number.isFinite(e)?e-Jd:0,o=Math.floor(n/Yd)-(t?1:0);return Math.max(1,o)}function Qd(e,t){return e??t??!1}function Ll(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.insetInlineStart=o:n==="right"&&(r.insetInlineEnd=o),r}const eu="header:",tu=40,nu=300,ou="__group__",Al=[];function hr(e){return`${eu}${e}`}function mr(e){return"items"in e&&Array.isArray(e.items)}function ru(e){return e.isSpacer||Qe(e.field)||e.field===ou?!1:e.headerFilter!==!1&&e.filterable!==!1&&e.type!=="image"}function io(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 iu(e){const t=Ni(e.type),n=io(e);return t.includes(n)?t:[n,...t]}function Tl(e,t){return e.items.some(n=>mr(n)?Tl(n,t):n.field===t)}function lu(e){return(e?.logicOperator??"and")==="or"&&(e?.items?.length??0)>0}function Pl(e,t){const n=e?.items??Al;if(lu(e))return{kind:"custom"};const o=hr(t);let r;for(const i of n){if(mr(i)){if(Tl(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 su(e,t,n){const o=e??{items:[]};if(Pl(o,t).kind!=="editable")return o;const r=hr(t),i=o.items??Al,l=i.findIndex(u=>!mr(u)&&u.id===r),a=n?{...n,id:r,field:t}:null;let c;if(l===-1){if(!a)return o;if(i.length===0&&o.logicOperator==="or")return{...o,logicOperator:"and",items:[a]};c=[...i,a]}else a?c=i.map((u,g)=>g===l?a:u):c=i.filter((u,g)=>g!==l);return{...o,items:c}}function wr(e,t,n){const o=jt.has(t);return!o&&jo(n)&&t===io(e)?null:{id:hr(e.field),field:e.field,operator:t,value:o?void 0:n}}function Fl(e,t){if(!jt.has(t))return t==="isAnyOf"?e==null||e===""?[]:Array.isArray(e)?e:[e]:Array.isArray(e)?e.length>0?e[0]:"":e??""}const au={contains:"∋",equals:"=",startsWith:"a…",endsWith:"…a",isEmpty:"∅",isNotEmpty:"!∅",isAnyOf:"∈","=":"=","!=":"≠",">":">",">=":"≥","<":"<","<=":"≤",is:"=",not:"≠",after:">",onOrAfter:"≥",before:"<",onOrBefore:"≤"},cu={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"};function du(e){const t=e?.headerFilterOperators;return{custom:e?.headerFilterCustom??"Custom filter",customTooltip:e?.headerFilterCustomTooltip??"Set in the filter panel",cellLabel:e?.headerFilterCellLabel??(n=>`Filter ${n}`),valueLabel:e?.headerFilterValueLabel??(n=>`Filter value for ${n}`),operatorButtonLabel:e?.headerFilterOperatorButtonLabel??((n,o)=>`Filter operator for ${n}: ${o}`),operatorMenuLabel:e?.headerFilterOperatorMenuLabel??(n=>`Filter operator for ${n}`),clearLabel:e?.headerFilterClearLabel??(n=>`Clear filter for ${n}`),clearTooltip:e?.headerFilterClearTooltip??"Clear",any:e?.headerFilterAny??"Any",yes:e?.headerFilterTrue??"Yes",no:e?.headerFilterFalse??"No",operator:n=>t?.[n]??cu[n]??n}}const et=s.forwardRef(function({fullWidth:t=!1,error:n=!1,startAdornment:o,endAdornment:r,className:i="",inputClassName:l="",variant:a="field",...c},u){const g=["ogx-input-wrapper",a==="cell"&&"ogx-input-wrapper--cell",t&&"ogx-input-wrapper--full-width",n&&"ogx-input-wrapper--error",c.disabled&&"ogx-input-wrapper--disabled",i].filter(Boolean).join(" "),h=["ogx-input",l].filter(Boolean).join(" ");return d.jsxs("div",{className:g,children:[o&&d.jsx("div",{className:"ogx-input__adornment ogx-input__adornment--start",children:o}),d.jsx("input",{ref:u,className:h,"aria-invalid":n?!0:void 0,...c}),r&&d.jsx("div",{className:"ogx-input__adornment ogx-input__adornment--end",children:r})]})});et.displayName="Input";const uu={position:"fixed",zIndex:1300,top:0,left:0,visibility:"hidden"},Ol=e=>e?Array.from(e.querySelectorAll('[role="menuitemradio"]')):[];function fu({anchorEl:e,columnLabel:t,operators:n,current:o,onSelect:r,onClose:i,locale:l}){const a=s.useRef(null),[c,u]=s.useState(uu);s.useLayoutEffect(()=>{const y=a.current;if(!y)return;const p=e.getBoundingClientRect(),f=y.getBoundingClientRect(),m=8;let b=Math.min(p.left,$t()-f.width-m);b<m&&(b=m);let w=p.bottom+4;w+f.height+m>Nl()&&(w=p.top-f.height-4),u({position:"fixed",zIndex:1300,top:w,left:b,visibility:"visible"})},[e]);const g=c.visibility==="visible";s.useLayoutEffect(()=>{if(!g)return;const y=Ol(a.current);(y.find(p=>p.getAttribute("aria-checked")==="true")??y[0])?.focus({preventScroll:!0})},[g]);const h=s.useRef(i);s.useLayoutEffect(()=>{h.current=i}),s.useEffect(()=>{const y=e.ownerDocument,p=y.defaultView;function f(w){const C=w.target;a.current?.contains(C)||e.contains(C)||h.current(!1)}function m(w){a.current?.contains(w.target)||h.current(!1)}function b(){h.current(!1)}return y.addEventListener("mousedown",f),p?.addEventListener("scroll",m,!0),p?.addEventListener("resize",b),()=>{y.removeEventListener("mousedown",f),p?.removeEventListener("scroll",m,!0),p?.removeEventListener("resize",b)}},[e]);const x=y=>{y.stopPropagation();const p=Ol(a.current),f=p.indexOf(y.target);let m=-1;switch(y.key){case"ArrowDown":m=f+1>=p.length?0:f+1;break;case"ArrowUp":m=f<=0?p.length-1:f-1;break;case"Home":m=0;break;case"End":m=p.length-1;break;case"Escape":case"Tab":y.preventDefault(),i(!0);return;default:return}y.preventDefault(),p[m]?.focus()};return bt.createPortal(d.jsx("div",{ref:a,className:"ogx-column-menu ogx__header-filter-menu",style:c,role:"menu","aria-label":l.operatorMenuLabel(t),onKeyDown:x,children:n.map(y=>d.jsx("button",{type:"button",role:"menuitemradio","aria-checked":y===o,tabIndex:-1,className:`ogx-menu-item${y===o?" ogx-menu-item--active":""}`,onClick:()=>r(y),children:l.operator(y)},y))}),e.closest(".ogx-theme-provider")??e.ownerDocument.body)}function gu(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 pu(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 Dl(e,t){return t==="isAnyOf"?e.split(",").map(n=>n.trim()).filter(n=>n!==""):e}function $l(e,t){return Object.is(e,t)?!0:Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((n,o)=>$l(n,t[o])):!1}function Gl(e,t){return e===t?!0:!e||!t?!1:e.operator===t.operator&&$l(e.value,t.value)}function hu(){return d.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:[d.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"}),d.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"})]})}function mu({colDef:e,state:t,style:n,className:o,ariaColIndex:r,onItemChange:i,onOpenFilterPanel:l,locale:a}){const c=e.headerName||e.field,u=t.kind==="editable"?t.item:void 0,g=u?.operator??io(e),h=gu(e),x=e.type==="boolean"||e.type==="singleSelect"&&h.length>0,y=!jt.has(g),[p,f]=s.useState(null),[m,b]=s.useState(null),[w,C]=s.useState(void 0),[E,S]=s.useState(u);if(E!==u){S(u);const K=w!==void 0&&Gl(w??void 0,u);!Gl(E,u)&&!K&&f(null)}const N=s.useRef(null),M=s.useRef(null),_=s.useRef(null),O=s.useRef(null),L=s.useRef(null),A=s.useRef({item:u,colDef:e,onItemChange:i});s.useLayoutEffect(()=>{A.current={item:u,colDef:e,onItemChange:i}});const k=s.useCallback(K=>{const{item:de,colDef:X,onItemChange:te}=A.current;if(de?K===Yo(de.value,X.type):K.trim()==="")return;const J=de?.operator??io(X),se=wr(X,J,Dl(K,J));C(se),te(X.field,se)},[]),I=s.useRef(null);s.useLayoutEffect(()=>{I.current=p}),s.useEffect(()=>()=>{const K=I.current;I.current=null,K!==null&&k(K)},[k]),s.useEffect(()=>{if(p===null)return;const K=setTimeout(()=>{I.current=null,k(p),f(null)},nu);return()=>clearTimeout(K)},[p,k]);const P=()=>N.current?.focus({preventScroll:!0}),v=()=>(M.current??_.current)?.focus({preventScroll:!0}),B=K=>{C(K),i(e.field,K)},V=K=>{f(null),B(wr(e,g,K))},Q=()=>{f(null),B(null)},H=()=>{L.current&&b(L.current)},z=K=>{b(null),K&&(M.current||_.current?v():P())},W=K=>{const de=p!==null?Dl(p,K):u?.value;f(null),b(null),B(wr(e,K,Fl(de,K))),requestAnimationFrame(()=>{M.current||_.current?v():P()})},re=t.kind==="custom",oe=!re&&y&&!x,fe=K=>{const de=K.currentTarget,X=K.target;if(!de.contains(X)||K.nativeEvent.isComposing)return;const{key:te}=K,U=X===de;if((K.altKey&&te==="ArrowDown"||(K.ctrlKey||K.metaKey)&&te==="Enter")&&!re&&X!==_.current){K.preventDefault(),K.stopPropagation(),H();return}if(!U){te==="Escape"&&(K.preventDefault(),K.stopPropagation(),P());return}if(te==="Enter"||te===" "||te==="Spacebar"){K.preventDefault(),K.stopPropagation(),re?O.current?.click():M.current||_.current?v():H();return}if((te==="Delete"||te==="Backspace")&&u){K.preventDefault(),K.stopPropagation(),Q();return}oe&&e.type!=="date"&&te.length===1&&!K.ctrlKey&&!K.metaKey&&!K.altKey&&(K.preventDefault(),K.stopPropagation(),M.current?.focus({preventScroll:!0}),f(te))};let le=null;if(re)le=l?d.jsx("button",{ref:O,type:"button",className:"ogx__header-filter-custom",tabIndex:-1,onClick:l,title:a.customTooltip,children:a.custom}):d.jsx("span",{className:"ogx__header-filter-custom",title:a.customTooltip,children:a.custom});else{let K;if(!y)K=d.jsx("span",{className:"ogx__header-filter-operator-label",children:a.operator(g)});else if(e.type==="boolean")K=d.jsxs("select",{ref:_,className:"ogx__header-filter-select",tabIndex:-1,value:u?.value==null||u.value===""?"":String(u.value),onChange:X=>V(X.target.value===""?"":X.target.value==="true"),"aria-label":a.valueLabel(c),children:[d.jsx("option",{value:"",children:a.any}),d.jsx("option",{value:"true",children:a.yes}),d.jsx("option",{value:"false",children:a.no})]});else if(x){const X=h.find(te=>pu(te,u?.value));K=d.jsxs("select",{ref:_,className:"ogx__header-filter-select",tabIndex:-1,value:X?.key??"",onChange:te=>{const U=h.find(J=>J.key===te.target.value);V(Fl(U?U.value:"",g))},"aria-label":a.valueLabel(c),children:[d.jsx("option",{value:"",children:a.any}),h.map(te=>d.jsx("option",{value:te.key,children:te.label},te.key))]})}else K=d.jsx(et,{ref:M,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:p??Yo(u?.value,e.type),onChange:X=>f(X.target.value),"aria-label":a.valueLabel(c)});const de=a.operator(g);le=d.jsxs(d.Fragment,{children:[d.jsx("button",{ref:L,type:"button",className:`ogx__header-filter-operator${m?" ogx__header-filter-operator--open":""}`,tabIndex:-1,"aria-haspopup":"menu","aria-expanded":m!==null,"aria-label":a.operatorButtonLabel(c,de),title:de,onClick:()=>m?b(null):H(),children:au[g]??"?"}),K,u&&d.jsx("button",{type:"button",className:"ogx__header-filter-clear",tabIndex:-1,"aria-label":a.clearLabel(c),title:a.clearTooltip,onClick:()=>{Q(),P()},children:d.jsx(hu,{})}),m&&d.jsx(fu,{anchorEl:m,columnLabel:c,locale:a,operators:iu(e),current:g,onSelect:W,onClose:z})]})}const ce=["ogx__header-filter-cell",u&&"ogx__header-filter-cell--active",re&&"ogx__header-filter-cell--custom",o].filter(Boolean).join(" ");return d.jsx("div",{ref:N,className:ce,style:n,role:"columnheader","aria-label":a.cellLabel(c),"aria-colindex":r,"data-field":e.field,tabIndex:-1,onKeyDown:fe,children:le})}function br({field:e,ariaColIndex:t,sticky:n,left:o,focused:r}){return d.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:We,minWidth:We,maxWidth:We,position:n?"sticky":void 0,insetInlineStart:n?o:void 0},role:"columnheader","aria-colindex":t,"data-field":e,tabIndex:-1})}function wu(e){const{columns:t,columnWidths:n,pinnedColumns:o,pinnedPositions:r,pinnedEdges:i,rowReordering:l,hasDetailPanel:a,checkboxSelection:c,pinExpandColumn:u,pinCheckboxColumn:g,columnIndexMap:h,ariaRowIndex:x,filterModel:y,onFilterModelChange:p,onOpenFilterPanel:f,focusedField:m,localeText:b}=e,w=s.useRef({filterModel:y,onFilterModelChange:p});s.useLayoutEffect(()=>{w.current={filterModel:y,onFilterModelChange:p}});const C=s.useCallback((A,k)=>{const{filterModel:I,onFilterModelChange:P}=w.current;if(!P)return;const v=su(I,A,k);v!==I&&(w.current={filterModel:v,onFilterModelChange:P},P(v))},[]),E=du(b),S=l?1:0,N=a?S+1:S,M=c?N+1:N,_=M,O=l?We:0,L=O+(a&&u?We:0);return d.jsxs("div",{className:"ogx__header-filter-row",role:"row","aria-rowindex":x,children:[l&&d.jsx(br,{field:Pt,ariaColIndex:S,sticky:!0,left:0,focused:m===Pt}),a&&d.jsx(br,{field:Ft,ariaColIndex:N,sticky:u,left:O,focused:m===Ft}),c&&d.jsx(br,{field:Ze,ariaColIndex:M,sticky:g,left:L,focused:m===Ze}),t.map((A,k)=>{if(A.isSpacer)return d.jsx("div",{style:{width:A.width,minWidth:A.width,flexShrink:0},"aria-hidden":"true"},A.field);const I=ct(A.field,o),P=Ll(A,n,I,I?r[A.field]:void 0),v=_+(h?.get(A.field)??k)+1,B=[I&&"ogx__header-filter-cell--pinned",I&&`ogx__header-filter-cell--pinned-${I}`,I==="left"&&A.field===i.lastLeft&&"ogx__header-filter-cell--pinned-left-last",I==="right"&&A.field===i.firstRight&&"ogx__header-filter-cell--pinned-right-first",m===A.field&&"ogx__header-filter-cell--focused"].filter(Boolean).join(" ");return ru(A)?d.jsx(mu,{colDef:A,state:Pl(y,A.field),style:P,className:B,ariaColIndex:v,onItemChange:C,onOpenFilterPanel:f,locale:E},A.field):d.jsx("div",{className:`ogx__header-filter-cell ogx__header-filter-cell--empty ${B}`,style:P,role:"columnheader","aria-label":`No filter for ${A.headerName||A.field}`,"aria-colindex":v,"data-field":A.field,tabIndex:-1},A.field)})]})}function bu(){return d.jsx("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",fill:"currentColor",width:"18",height:"18",children:d.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 xu(){return d.jsx("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"18",height:"18",fill:"currentColor",children:d.jsx("path",{d:"M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z"})})}function Hl(e){const{columns:t,allColumns:n,columnGroupingModel:o,checkboxSelection:r=!1,allSelected:i=!1,someSelected:l=!1,onSelectAll:a,onSort:c,sortModel:u=[],onColumnResize:g,onColumnAutosize:h,columnWidths:x={},pinnedColumns:y,hasDetailPanel:p=!1,pinCheckboxColumn:f=!0,pinExpandColumn:m=!0,rowReordering:b=!1,aggregationModel:w,draggedColumn:C,dragOverColumn:E,onDragStart:S,onDragOver:N,onDragEnd:M,onDrop:_,focusedCell:O,onHeaderClick:L,onSortAdd:A,multiSort:k=!1,onHideColumn:I,onPinColumn:P,onManageColumns:v,columnIndexMap:B,wrapHeaderText:V=!1,headerHeight:Q=56,headerFilters:H=!1,filterModel:z,onFilterModelChange:W,onOpenFilterPanel:re,localeText:oe}=e,fe=s.useId(),[le,ce]=s.useState(null),K=R=>ge=>{ge.stopPropagation(),ce({colDef:R,anchorEl:ge.currentTarget})},de=s.useCallback(()=>{ce(null)},[]),X=R=>ge=>{if(ge.altKey&&(ge.key==="ArrowLeft"||ge.key==="ArrowRight")&&ge.target===ge.currentTarget){if(R.resizable===!1||!g)return;ge.preventDefault(),ge.stopPropagation();const xe=At(R,x),ie=Vn(ge.key,Je(ge.currentTarget)),Ce=(ge.shiftKey?50:10)*(ie==="ArrowRight"?1:-1);g(R.field,gr(xe+Ce,xe,R.minWidth,R.maxWidth));return}if(!(ge.altKey&&ge.key==="ArrowDown"||(ge.ctrlKey||ge.metaKey)&&ge.key==="Enter")||R.disableColumnMenu||ge.target!==ge.currentTarget)return;ge.preventDefault(),ge.stopPropagation();const ye=ge.currentTarget.querySelector(".ogx__menu-icon-btn")??ge.currentTarget;ce({colDef:R,anchorEl:ye})},te=R=>O?.id===null&&!O.headerFilter&&O.field===R,U=b?1:0,J=p?U+1:U,se=r?J+1:J,ue=R=>ge=>{if(R.sortable===!1)return;const we=u.find(ye=>ye.field===R.field);let ae="asc";we&&(we.sort==="asc"?ae="desc":ae=null),(ge.shiftKey||k)&&A?A(R.field,ae):c&&c(R.field,ae)},ee=(R,ge)=>{const we=u.some(ye=>ye.field===R);A&&(ge===null||we||k||!c)?A(R,ge):c?.(R,ge)},D=R=>{const ge=u.find(ae=>ae.field===R);if(!ge)return null;const we=u.length>1?u.indexOf(ge)+1:null;return d.jsx("span",{className:`ogx__sort-icon ogx__sort-icon--${ge.sort}`,"aria-hidden":"true",children:we!==null&&d.jsx("span",{className:"ogx__sort-badge",children:we})})},T=s.useMemo(()=>Fo(t,x,y,r,f,p,m,b),[t,x,y,r,f,p,m,b]),$=s.useMemo(()=>Oo(t,y),[t,y]),F=El(o),Z=s.useMemo(()=>Ml(o),[o]),G=s.useMemo(()=>F===0?[]:(n??t).map(R=>({field:R.field,width:At(R,x),flex:R.isSpacer?0:R.flex,pinned:R.isSpacer?null:ct(R.field,y),isSpacer:R.isSpacer})),[F,n,t,x,y]),ne=(b?48:0)+(p?48:0)+(r?48:0),he=(b||p||r)&&(!p||m)&&(!r||f),me=(b?1:0)+(p?1:0)+(r?1:0);return d.jsxs("div",{className:"ogx__header-wrap",children:[F>0&&Array.from({length:F},(R,ge)=>{const we=Bd(G,Z,ge);return d.jsxs("div",{className:"ogx-col-group-row",role:"row","aria-rowindex":ge+1,children:[ne>0&&d.jsx("div",{className:`ogx-col-group-cell ogx-col-group-cell--filler${he?" ogx-col-group-cell--pinned ogx-col-group-cell--pinned-left":""}`,style:{width:ne,minWidth:ne,flexShrink:0,position:he?"sticky":void 0,insetInlineStart:he?0:void 0},"aria-hidden":"true"}),we.map((ae,ye)=>{const xe=ae.pinned?` ogx-col-group-cell--pinned ogx-col-group-cell--pinned-${ae.pinned}`:"",ie={width:ae.width,minWidth:ae.width,flexShrink:0,flexGrow:ae.flexGrow};return ae.pinned==="left"?(ie.position="sticky",ie.insetInlineStart=T[ae.fields[0]]):ae.pinned==="right"&&(ie.position="sticky",ie.insetInlineEnd=T[ae.fields[ae.fields.length-1]],we[ye-1]?.pinned!=="right"&&(ie.marginInlineStart="auto")),ae.isGroup?d.jsx("div",{role:"columnheader","aria-colspan":ae.fields.length,"aria-colindex":me+ae.firstDataIndex+1,className:`ogx-col-group-cell ogx-col-group-cell--group${xe}${ae.headerClassName?` ${ae.headerClassName}`:""}`,style:ie,title:ae.label,children:d.jsx("span",{className:"ogx-col-group-cell__label",children:ae.label})},ae.key):d.jsx("div",{className:`ogx-col-group-cell ogx-col-group-cell--filler${xe}`,style:ie,"aria-hidden":"true"},ae.key)})]},`ogx-grp-${ge}`)}),d.jsxs("div",{className:"ogx__header",role:"row","aria-rowindex":F+1,children:[b&&d.jsx("div",{className:`ogx__header-cell ogx__header-cell--pinned ogx__header-cell--pinned-left ${te("__reorder_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-label":"Row reorder handle","aria-colindex":U,"data-field":"__reorder_col__",tabIndex:-1,title:"Drag to reorder rows",style:{minWidth:48,maxWidth:48,position:"sticky",insetInlineStart:0}}),p&&d.jsx("div",{className:`ogx__header-cell ogx__header-cell--expand ${m?"ogx__header-cell--pinned ogx__header-cell--pinned-left":""} ${te("__expand_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-label":"Expand row details","aria-colindex":J,"data-field":"__expand_col__",tabIndex:-1,style:{minWidth:48,maxWidth:48,position:m?"sticky":void 0,insetInlineStart:m?b?48:0:void 0}}),r&&d.jsx("div",{className:`ogx__header-cell ogx__header-cell--checkbox ${f?"ogx__header-cell--pinned ogx__header-cell--pinned-left":""} ${te("__checkbox_col__")?"ogx__header-cell--focused":""}`,role:"columnheader","aria-colindex":se,"data-field":"__checkbox_col__",style:{position:f?"sticky":void 0,insetInlineStart:f?(b?48:0)+(p&&m?48:0):void 0},children:a&&d.jsx(Ct,{id:fe,name:fe,checked:i,indeterminate:l,onChange:R=>a(R.target.checked),"aria-label":i?"Deselect all rows":"Select all rows",tabIndex:-1,onMouseDown:R=>R.preventDefault()})}),t.map((R,ge)=>{if(R.isSpacer)return d.jsx("div",{style:{width:R.width,minWidth:R.width,flexShrink:0},"aria-hidden":"true"},R.field);const we=R.sortable!==!1,ae=u.findIndex(ot=>ot.field===R.field),ye=ae!==-1,xe=ye?u[ae].sort:null,ie=B?.get(R.field)??ge,Ce=we?ae===0?xe==="asc"?"ascending":"descending":"none":void 0,Ee=ye&&u.length>1?`Sorted ${xe==="asc"?"ascending":"descending"}, sort priority ${ae+1} of ${u.length}`:void 0,Le=R.resizable!==!1,Ie=ct(R.field,y),Ne=Ie!==null,ke=C===R.field,Fe=E===R.field,pe=Qd(R.wrapHeaderText,V),ve=w?.[R.field],Se=["ogx__header-cell",`ogx__header-cell--align-${R.headerAlign||R.align||"left"}`,we&&"ogx__header-cell--sortable",ye&&"ogx__header-cell--sorted",Ne&&"ogx__header-cell--pinned",Ne&&`ogx__header-cell--pinned-${Ie}`,Ie==="left"&&R.field===$.lastLeft&&"ogx__header-cell--pinned-left-last",Ie==="right"&&R.field===$.firstRight&&"ogx__header-cell--pinned-right-first",ke&&"ogx__header-cell--dragging",Fe&&"ogx__header-cell--drag-over",pe&&"ogx__header-cell--wrap",te(R.field)&&"ogx__header-cell--focused",R.headerClassName].filter(Boolean).join(" "),be={...Ll(R,x,Ie,Ie?T[R.field]:void 0),zIndex:R.zIndex,opacity:ke?.5:1},De=R.renderHeader?R.renderHeader({field:R.field,colDef:R,colIndex:ie}):R.headerName||R.field,ft=ot=>{if(ot.target.closest(".ogx-column-resize-handle")){ot.stopPropagation();return}L?.(R.field),we&&ue(R)(ot)},Ht=S&&!Ne?S(R.field):void 0,Pn=N&&!Ne?N(R.field):void 0,ln=_&&!Ne?_(R.field):void 0;return d.jsxs("div",{className:Se,style:be,title:R.description??(pe&&typeof De=="string"?De:void 0),onClick:ft,role:"columnheader",draggable:!!Ht,onDragStart:Ht,onDragOver:Pn,onDragEnd:M,onDrop:ln,onKeyDown:X(R),"aria-sort":Ce,"aria-description":Ee,"aria-colindex":me+ie+1,"data-field":R.field,tabIndex:-1,children:[d.jsxs("div",{className:"ogx__header-cell-content",children:[ke&&d.jsx("div",{className:"ogx__header-drag-icon",children:d.jsx(xu,{})}),d.jsxs("div",{className:"ogx__header-cell-title-wrapper",children:[d.jsx("span",{className:"ogx__header-cell-title",style:pe?{WebkitLineClamp:Zd(Q,!!ve)}:void 0,children:De}),ve&&d.jsx("span",{className:"ogx__header-cell-aggregation",children:ve})]}),we&&D(R.field),!R.disableColumnMenu&&d.jsx("button",{type:"button",className:"ogx__menu-icon-btn",onClick:K(R),"aria-label":`Open column menu for ${R.headerName||R.field}`,"aria-haspopup":"menu",tabIndex:-1,children:d.jsx(bu,{})})]}),Le&&g&&d.jsx(Hd,{field:R.field,currentWidth:At(R,x),onResize:g,onAutosize:h,minWidth:R.minWidth,maxWidth:R.maxWidth,edge:Ie==="right"?"start":"end"})]},R.field)}),le&&d.jsx(Xd,{colDef:le.colDef,sortModel:u,onSort:c||A?ee:void 0,onHide:I,onPin:P,pinnedColumns:y,onManageColumns:v,onClose:de,anchorEl:le.anchorEl})]}),H&&d.jsx(wu,{columns:t,columnWidths:x,pinnedColumns:y,pinnedPositions:T,pinnedEdges:$,rowReordering:b,hasDetailPanel:p,checkboxSelection:r,pinExpandColumn:m,pinCheckboxColumn:f,columnIndexMap:B,ariaRowIndex:F+2,filterModel:z,onFilterModelChange:W,onOpenFilterPanel:re,localeText:oe,focusedField:O?.id===null&&O.headerFilter?O.field:null})]})}const Ae=()=>{},xr=()=>Promise.resolve({updated:[],failed:[],skipped:[]});function Bl(){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:xr,undo:xr,redo:xr,canUndo:()=>!1,canRedo:()=>!1,clearHistory:Ae,setSortModel:Ae,setRowGroupingModel:Ae,setAggregationModel:Ae,setColumnVisibilityModel:Ae,setPivotModel:Ae,getGridAiState:()=>({}),openAiAssistant:Ae,closeAiAssistant:Ae}}const yu=e=>e.id;let Wl=!1;function Vl(e,t,n){const o=new Map,r=new Map,i=[],l=[];return e.forEach(a=>{const c=n?.get(a)??t(a);if(o.has(c)){l.push(c);return}o.set(c,a),r.set(a,c),i.push(c)}),l.length>0&&!Wl&&process.env.NODE_ENV!=="production"&&(Wl=!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 Cu(e,t,n,o={}){const r=new Map,i=[];return n.forEach(l=>{r.set(l.field,l),i.push(l.field)}),{rows:Vl(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 vu(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:Vl(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 a=o.get(i);a!==void 0&&(n=!0,o.set(i,l),r.delete(a),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 _u(e){const{rows:t,columns:n,rowHeight:o=52,headerHeight:r=56,columnVisibilityModel:i,initialState:l,syncRows:a=!1}=e,c=e.getRowId??yu,u=s.useRef(c);s.useLayoutEffect(()=>{u.current=c});const[g]=s.useState(()=>Cu(t,c,n,i)),[h,x]=s.useReducer(vu,{...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:a});(y.rows!==t||y.syncRows!==a)&&(p({rows:t,syncRows:a}),a&&x({type:"SET_ROWS",payload:t,getRowId:c}));const f=s.useRef(h);s.useLayoutEffect(()=>{f.current=h});const m=s.useCallback((L,A)=>{x({type:"SET_ROWS",payload:L,getRowId:u.current})},[]),b=s.useCallback((L,A)=>{x({type:"REPLACE_ROW",id:L,row:A})},[]),w=s.useCallback(L=>{L.size>0&&x({type:"REPLACE_ROWS",rows:L})},[]),C=s.useCallback(L=>{x({type:"SET_COLUMNS",payload:L})},[]),E=s.useCallback((L,A)=>{x({type:"SET_DIMENSIONS",payload:{viewportWidth:L,viewportHeight:A}})},[]),S=s.useCallback(L=>{x({type:"SET_DATASOURCE_LOADING",payload:L})},[]),N=s.useCallback(L=>{x({type:"SET_DATASOURCE_ERROR",payload:L})},[]),M=s.useCallback(L=>{x({type:"SET_ROW_COUNT",payload:L})},[]),[_]=s.useState(()=>({...Bl(),getRow:L=>f.current.rows.idRowsLookup.get(L)||null,getAllRows:()=>f.current.rows.allRows.map(L=>f.current.rows.idRowsLookup.get(L)),getColumn:L=>f.current.columns.lookup.get(L)||null,getAllColumns:()=>f.current.columns.all})),O=s.useRef(_);return{state:h,dispatch:x,apiRef:O,setRows:m,replaceRow:b,replaceRows:w,setColumns:C,setDimensions:E,setDataSourceLoading:S,setDataSourceError:N,setRowCount:M}}function Su(e){const{onRowOrderChange:t,rows:n,getRowId:o,rowReordering:r=!1}=e,[i,l]=s.useState(null),[a,c]=s.useState(null),u=s.useRef(()=>{}),g=s.useMemo(()=>{const m=new Map;return n.forEach((b,w)=>m.set(o?o(b):b.id,w)),m},[n,o]),h=s.useCallback(m=>g.has(m),[g]),x=s.useCallback(()=>{u.current(),u.current=()=>{},l(null),c(null)},[]);s.useEffect(()=>()=>u.current(),[]);const y=s.useCallback(m=>b=>{if(r){if(!g.has(m)){b.preventDefault();return}u.current(),u.current=dl(b.currentTarget,x),l(m),b.dataTransfer&&(b.dataTransfer.effectAllowed="move",cl(b,cr,String(m)))}},[r,g,x]),p=s.useCallback(m=>b=>{if(!(!r||i===null)){if(!no(b,cr)){x();return}g.has(m)&&(b.preventDefault(),b.dataTransfer&&(b.dataTransfer.dropEffect="move"),a!==m&&c(m))}},[r,i,a,g,x]),f=s.useCallback(m=>b=>{if(b.preventDefault(),i===null||!no(b,cr)){x();return}const w=g.get(i),C=g.get(m);x(),t&&w!==void 0&&C!==void 0&&w!==C&&t({row:n[w],oldIndex:w,targetIndex:C})},[i,t,n,g,x]);return{draggedRowId:i,dragOverRowId:a,canReorderRow:h,onDragStart:r?y:void 0,onDragOver:r?p:void 0,onDragEnd:r?x:void 0,onDrop:r?f:void 0}}const zl=new Map,Kl=e=>JSON.stringify(e),ku=e=>`auto-group-${e}`,jl=5,Ul=e=>e.slice(0,jl).map(t=>JSON.stringify(t)).join(", ")+(e.length>jl?", …":""),Eu={treeNodes:new Map,rootIds:[],groupingRows:[],syntheticIds:new Set,rowLookup:new Map,issues:[]};function Mu(e,t,n){const o=new Map,r=[],i=[],l=new Set,a=new Map,c=new Map,u=[],g=new Array(e.length),h=new Array(e.length),x=[],y=new Map;e.forEach((f,m)=>{const b=t(f),w=n(f),C=Array.isArray(w)?w.map(E=>String(E)):[];if(g[m]=b,h[m]=C,a.set(b,f),C.length===0)x.push(b);else{const E=Kl(C),S=c.get(E);if(S===void 0)c.set(E,b);else{const N=y.get(E)??[S];N.push(b),y.set(E,N)}}o.set(b,{id:b,parentId:null,depth:Math.max(C.length-1,0),groupingKey:C[C.length-1]??"",isExpanded:!1,children:[],serverChildrenCount:f.serverChildrenCount})});const p=f=>{const m=Kl(f),b=c.get(m);if(b!==void 0)return b;const w=ku(m),C=f[f.length-1],E={id:w,parentId:null,depth:f.length-1,groupingKey:C,isExpanded:!1,children:[],label:C};o.set(w,E),c.set(m,w),l.add(w);const S={id:w};if(i.push(S),a.set(w,S),f.length===1)r.push(w);else{const N=p(f.slice(0,-1));E.parentId=N,o.get(N)?.children?.push(w)}return w};return e.forEach((f,m)=>{const b=g[m],w=h[m];if(w.length<=1){r.push(b);return}const C=p(w.slice(0,-1)),E=o.get(b);E&&(E.parentId=C),o.get(C)?.children?.push(b)}),x.length>0&&u.push(`[OpenGridX] treeData: getTreeDataPath returned an empty path for row(s) ${Ul(x)}. They are shown as top-level rows.`),y.forEach((f,m)=>{u.push(`[OpenGridX] treeData: rows ${Ul(f)} have the same path ${m}. Rows under that path are attached to row ${JSON.stringify(f[0])}.`)}),{treeNodes:o,rootIds:r,groupingRows:i,syntheticIds:l,rowLookup:a,issues:u}}function Nu(e,t){const{treeNodes:n,rootIds:o,syntheticIds:r,rowLookup:i}=e,l=new Set,a=new Map,c=new Map,u=g=>{const h=n.get(g);if(!h)return!1;const x=[];let y=0;for(const b of h.children??[])u(b)&&(x.push(b),y+=(r.has(b)?0:1)+(c.get(b)??0));a.set(g,x),c.set(g,y);const p=i.get(g),m=!r.has(g)&&p!==void 0&&(t?t(p):!0)||x.length>0;return m&&l.add(g),m};return o.forEach(u),{visible:l,visibleChildren:a,descendantCounts:c}}function Iu(e){const{rows:t,getRowId:n,getTreeDataPath:o,treeData:r=!1,defaultGroupingExpansionDepth:i=0,filterModel:l,sortModel:a,onRowExpansionChange:c,columnLookup:u,filterMode:g="client",sortingMode:h="client"}=e,x=r&&!!o,y=s.useMemo(()=>!r||!o?Eu:Mu(t,n,o),[t,o,r,n]),{treeNodes:p,rootIds:f,groupingRows:m,syntheticIds:b,rowLookup:w}=y,C=y.issues.join(`
|
|
2
2
|
`);s.useEffect(()=>{process.env.NODE_ENV==="production"||!C||C.split(`
|
|
3
|
-
`).forEach(W=>console.warn(W))},[C]);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(()=>du(y,k),[y,k]),M=`${r}|${i}`,[S,F]=s.useState(()=>({configKey:M,overrides:new Map})),I=S.configKey===M?S.overrides:Il,A=s.useCallback(W=>((W?.children?.length??0)>0||(W?.serverChildrenCount??0)>0)&&(i===-1||(W?.depth??0)<i),[i]),_=s.useMemo(()=>{const W=new Set;return w&&p.forEach((H,ie)=>{(I.get(ie)??A(H))&&W.add(ie)}),W},[w,p,I,A]),L=s.useCallback(W=>{const H=!_.has(W);if(F(ie=>{const oe=ie.configKey===M?ie.overrides:Il,ue=new Map(oe);return ue.set(W,H),{configKey:M,overrides:ue}}),H&&a){const ie=p.get(W);ie&&a(ie)}},[_,M,p,a]),D=h!=="server"&&!!(d&&d.length>0),v=s.useCallback(W=>{if(!w)return null;const H=W?.labelField,ie=W?.expandAll??!1,{visible:oe,visibleChildren:ue}=N,se=D&&d?d:[],U=(re,K)=>{if(x.has(re))return{value:K.field===H?p.get(re)?.label:void 0};const J=b.get(re),ae=u?.byField.get(K.field),fe=J?Le(J,K.field,ae):void 0,Z=ae?.sortComparator;return{value:fe,type:ae?.type,comparator:Z,params:Z&&J?{id:re,field:K.field,row:J,value:fe}:void 0}},te=[],ce=new Set,z=re=>{const K=re.filter(ae=>oe.has(ae)),J=se.length>0?Ko(K,se,U):K;for(const ae of J){if(ce.has(ae))continue;const fe=b.get(ae);if(!fe)continue;ce.add(ae),te.push(fe);const Z=ue.get(ae);Z&&Z.length>0&&(ie||_.has(ae))&&z(Z)}};return z(f),te},[w,N,D,d,x,p,b,u,f,_]),V=s.useCallback(W=>_.has(W),[_]),R=s.useCallback(W=>p.get(W),[p]),Q=s.useCallback(W=>{const H=[];let ie=W;for(;ie!==null;){const oe=p.get(ie);if(!oe)break;H.unshift(oe.groupingKey),ie=oe.parentId}return H},[p]),G=s.useMemo(()=>{const W=new Map,{visibleChildren:H,descendantCounts:ie}=N;return p.forEach((oe,ue)=>{const se=(oe.children?.length??0)===0&&(oe.serverChildrenCount??0)>0,U=x.has(ue),te={hasChildren:(H.get(ue)?.length??0)>0||se,treeDepth:oe.depth,descendantCount:se?void 0:ie.get(ue)??0,isGroupRow:U,isExpanded:_.has(ue)};U&&(te.groupLabel=oe.label),W.set(ue,te)}),W},[p,x,N,_]);return s.useMemo(()=>({treeNodes:p,groupingRows:m,toggleExpansion:L,isGroupExpanded:V,getVisibleRows:v,getNode:R,getNodePath:Q,rowMetaMap:G}),[p,m,L,V,v,R,Q,G])}const Tl=e=>e===null?"footer":"inline";function Fl(e,t){return Dn(()=>e(t),Tl(t),"getAggregationPosition","getAggregationPosition threw; the default position is used")}function fu(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 gu=[],pu={},Ol=new Map,et="";function hu(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 mu=(e,t,n)=>`auto-group-${e}-${t}-${n??"root"}`,wu=e=>`${e}${et}footer`,bu=e=>e==="footer"?"f":e===null?"n":"i",xu=e=>e==="f"?"footer":e==="n"?null:"inline";function yu(e){const{rows:t,getRowId:n,columns:o,rowGroupingModel:r=gu,aggregationModel:i=pu,defaultGroupingExpansionDepth:l=0,filterModel:d,sortModel:a,getAggregationPosition:u=Tl,columnLookup:g,filterMode:h="client",sortingMode:w="client"}=e,y=r.join(et),p=s.useMemo(()=>y===""?[]:y.split(et),[y]),f=JSON.stringify(Object.entries(i)),m=s.useMemo(()=>Object.fromEntries(JSON.parse(f)),[f]),x=Object.keys(m).length>0,b=s.useMemo(()=>{const z=new Map;return(o??[]).forEach(re=>z.set(re.field,re)),z},[o]),C=p.length>0,E=s.useMemo(()=>p.filter(z=>b.get(z)?.groupable!==!1),[p,b]),N=`${E.join(et)}|${l}`,[M,S]=s.useState(()=>({configKey:N,overrides:new Map})),F=M.configKey===N?M.overrides:Ol,I=s.useMemo(()=>{if(!C||h==="server")return null;const z=Wn(d,g);return z?new Set(t.filter(re=>z(re))):null},[C,t,h,d,g]),A=s.useMemo(()=>{const z=new Map,re=[],K=[],J=new Map,ae=new Map,fe=new Map;if(!C)return{treeNodes:z,rootIds:re,groupIds:K,groupRowVariants:J,groupingRows:ae,rowLookup:fe};const Z=($,O,P)=>{if(O>=E.length)return(I?$.filter(Y=>I.has(Y)):$).map(Y=>{const ne=n(Y);return fe.set(ne,Y),z.set(ne,{id:ne,parentId:P,depth:O,groupingKey:"",isExpanded:!1}),ne});const T=E[O],X=b.get(T),B=new Map;for(const q of $){const Y=Le(q,T,X),ne=hu(Y);let me=B.get(ne);me||(me={value:Y,rows:[]},B.set(ne,me)),me.rows.push(q)}const ee=[];return B.forEach((q,Y)=>{const ne=I?q.rows.filter(Ce=>I.has(Ce)):q.rows;if(ne.length===0)return;const me=mu(T,Y,P);ee.push(me),K.push(me);const j=x?Hn(ne,m,b,"useRowGrouping"):{},le={[T]:q.value,...j,id:me},we={[T]:q.value,id:me},pe=x?{...j,id:wu(me)}:null;J.set(me,{inline:le,bare:we,footer:pe}),ae.set(me,le),pe&&ae.set(pe.id,pe);const he={id:me,parentId:P,depth:O,groupingKey:String(q.value),groupingField:T,groupingValue:q.value,aggregatedValues:j,isExpanded:!1,children:[],label:fu(X,T,q.value),descendantCount:ne.length};z.set(me,he),he.children=Z(q.rows,O+1,me)}),ee};return re.push(...Z(t,0,null)),{treeNodes:z,rootIds:re,groupIds:K,groupRowVariants:J,groupingRows:ae,rowLookup:fe}},[C,t,I,E,x,m,n,b]),{treeNodes:_,rootIds:L,groupIds:D,groupRowVariants:v,groupingRows:V,rowLookup:R}=A,Q=s.useCallback(z=>!!(z?.children&&z.children.length>0)&&(l===-1||(z?.depth??0)<l),[l]),G=s.useMemo(()=>{const z=new Set;return _.forEach((re,K)=>{!re.children||re.children.length===0||(F.get(K)??Q(re))&&z.add(K)}),z},[_,F,Q]),W=s.useCallback(z=>{S(re=>{const K=re.configKey===N?re.overrides:Ol,J=K.get(z)??Q(_.get(z)),ae=new Map(K);return ae.set(z,!J),{configKey:N,overrides:ae}})},[N,_,Q]),H=s.useCallback(z=>G.has(z),[G]),ie=x?D.map(z=>{const re=_.get(z);return re?bu(Fl(u,{...re,isExpanded:G.has(z)})):"i"}).join(""):"",oe=s.useMemo(()=>{const z=new Map;return D.forEach((re,K)=>z.set(re,xu(ie[K]))),z},[D,ie]),ue=x?Fl(u,null):"footer",se=w!=="server"&&!!(a&&a.length>0),U=s.useCallback(z=>{if(!C)return null;const re=z?.labelField,K=z?.expandAll??!1,J=se&&a?a:[],ae=(O,P)=>{const T=_.get(O),X=v.get(O);if(T&&X){const ne=T.groupingField??"";if(P.field===ne||P.field===re){const me=g?.byField.get(ne),j=me?.sortComparator;return{value:T.groupingValue,type:me?.type,comparator:j,params:j?{id:O,field:ne,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=R.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,ae):O;for(const T of P){if(Z.has(T))continue;Z.add(T);const X=v.get(T);if(!X){const ne=R.get(T);ne&&fe.push(ne);continue}const B=_.get(T),ee=G.has(T),q=oe.has(T)?oe.get(T)??null:"inline",Y=q==="inline"||q==="footer"&&!ee;fe.push(Y?X.inline:X.bare),(ee||K)&&B?.children&&($(B.children),ee&&!K&&q==="footer"&&X.footer&&fe.push(X.footer))}};return $(L),fe},[C,se,a,_,v,R,g,G,oe,L]),te=s.useCallback(z=>_.get(z),[_]),ce=s.useMemo(()=>{const z=new Map;return _.forEach((re,K)=>{const J=v.get(K);if(!J){z.set(K,{hasChildren:!1,treeDepth:re.depth,isGroupRow:!1});return}const ae={hasChildren:!0,treeDepth:re.depth,groupingField:re.groupingField,groupingValue:re.groupingValue,groupLabel:re.label,descendantCount:re.descendantCount,isGroupRow:!0,isExpanded:G.has(K)};z.set(K,ae),J.footer&&oe.get(K)==="footer"&&z.set(J.footer.id,{...ae,hasChildren:!1,treeDepth:re.depth+1,isExpanded:void 0,isGroupFooter:!0})}),z},[_,v,G,oe]);return s.useMemo(()=>({treeNodes:_,groupingRows:V,toggleExpansion:W,isGroupExpanded:H,getVisibleRows:U,getNode:te,rowMetaMap:ce,aggregationPositions:oe,rootAggregationPosition:ue}),[_,V,W,H,U,te,ce,oe,ue])}const Cu=new Map;function vu(e){const{rows:t,getRowId:n,getTreeDataPath:o,isTreeDataRequested:r,isTreeData:i,columns:l,rowGroupingModel:d,isRowGrouping:a,aggregationModel:u,defaultGroupingExpansionDepth:g,filterModel:h,sortModel:w,getAggregationPosition:y,columnLookup:p,filterMode:f,sortingMode:m}=e,x=uu({rows:t,getRowId:n,getTreeDataPath:o,treeData:r,defaultGroupingExpansionDepth:g,filterModel:h,sortModel:w,columnLookup:p,filterMode:f,sortingMode:m}),b=yu({rows:t,getRowId:n,columns:l,rowGroupingModel:d,aggregationModel:u,defaultGroupingExpansionDepth:g,filterModel:h,sortModel:w,getAggregationPosition:y,columnLookup:p,filterMode:f,sortingMode:m}),C=i?x:a?b:null,E=s.useMemo(()=>i?x.rowMetaMap:a?b.rowMetaMap:Cu,[i,x.rowMetaMap,a,b.rowMetaMap]);return{treeDataHandlers:x,rowGroupingHandlers:b,activeHierarchyHandlers:C,rowMetaMap:E}}function We(e){try{return{ok:!0,value:e()}}catch(t){return{ok:!1,error:t}}}class Dl extends Error{}function xt(e,t){return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Object.is(e,t)}function $l(e){return typeof e=="object"&&e!==null&&typeof e.then=="function"}function Gl(e,t){t?t(e):process.env.NODE_ENV!=="production"&&e instanceof Dl&&console.error(e.message)}function Hl(e,t){return new Dl(`[OpenGridX] processRowUpdate must return the updated row object (or a Promise of it); it returned ${e===null?"null":typeof e}. ${t}`)}function Bl(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 _u(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),h=s.useCallback((f,m)=>{const x=i.current.get(f);if(x)return xt(x.value,m.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(m.value,m.originalValue))return b()&&u(null),qt;const{rows:C,getRowId:E,columns:k,processRowUpdate:N}=a.current,M=C.find(G=>E(G)===m.id);if(!M)return b()&&u(null),qt;const S=G=>Gl(G,a.current.onProcessRowUpdateError),F=k?.find(G=>G.field===m.field),I=G=>{if(typeof G!="object"||G===null){S(Hl(G,"The edit was not saved and the editor stays open."));return}a.current.onRowChange?.(G,m.id);const{onCommitted:W}=a.current;if(W){const ie=Le(M,m.field,F),oe=Le(G,m.field,F);xt(ie,oe)||W([{id:m.id,field:m.field,before:ie,after:oe}])}const H=o.current;r.current!==f||!H||(xt(H.value,m.value)?u(null):u({...H,originalValue:m.value}))};let A,_;const L=new Promise((G,W)=>{A=G,_=W}),D={value:m.value,promise:L};i.current.set(f,D);const v=()=>{i.current.get(f)===D&&i.current.delete(f)},V=We(()=>{const G=Bl(M,m,F,l.current);return N?N(G,M):G});if(!V.ok)return v(),S(V.error),A(),L;const R=V.value,Q=G=>{v();try{I(G),A()}catch(W){_(W)}};return $l(R)?Promise.resolve(R).then(Q,G=>{v(),S(G),A()}):Q(R),L},[u]);s.useLayoutEffect(()=>{g.current=h},[h]);const w=s.useCallback(f=>{const m=o.current;if(m){if(m.id===f.id&&m.field===f.field)return;h(r.current,m)}r.current+=1,u({id:f.id,field:f.field,value:f.value,originalValue:f.value})},[h,u]),y=s.useCallback(f=>{const m=o.current;return!m||!d.current||f?.id!==void 0&&f.id!==m.id||f?.field!==void 0&&f.field!==m.field?qt:f?.cancel?(u(null),qt):h(r.current,m)},[h,u]),p=s.useCallback(f=>{const m=o.current;!m||m.id!==f.id||m.field!==f.field||u({...m,value:f.value})},[u]);return s.useMemo(()=>({editingCell:t,startCellEdit:w,stopCellEdit:y,setEditCellValue:p}),[t,w,y,p])}function Su(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:h}=t.current,w=k=>Gl(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=[],m=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=m.get(k.id);S||(S={id:k.id,row:N,cells:[]},m.set(k.id,S));const F=y.get(k.field)??Number.MAX_SAFE_INTEGER,I=S.cells.findIndex(_=>_.field===k.field),A={field:k.field,value:k.value,colDef:M,order:F};I===-1?S.cells.push(A):S.cells[I]=A}const x=[],b=[],C=o.current;m.forEach(k=>{const{id:N,row:M}=k,S=k.cells.filter(A=>!xt(Le(M,A.field,A.colDef),A.value)).sort((A,_)=>A.order-_.order);if(k.cells=S,S.length===0)return;const F=We(()=>{let A=M;for(const _ of S)A=Bl(A,_,_.colDef,C);return h?h(A,M):A});if(!F.ok){x.push({id:N,ok:!1,error:F.error});return}const I=F.value;$l(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=[],F=[],I=new Map;return m.forEach(A=>{const _=N.get(A.id);if(!_)return;if(!_.ok){S.push({id:A.id,error:_.error}),w(_.error);return}const L=_.processed;if(typeof L!="object"||L===null){const v=Hl(L,"The row was not saved.");S.push({id:A.id,error:v}),w(v);return}const D=L;I.set(A.id,D),M.push(A.id);for(const v of A.cells){const V=Le(A.row,v.field,v.colDef),R=Le(D,v.field,v.colDef);xt(V,R)||F.push({id:A.id,field:v.field,before:V,after:R})}}),i(I),F.length>0&&u!=="undo"&&u!=="redo"&&t.current.onCommitted?.(F,u),{result:{updated:M,failed:S,skipped:f},committed:F}};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 ku(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 h=e[a];if(h==='"'){if(e[a+1]==='"'){u+='"',a+=2;continue}g=!0,a+=1;break}u+=h,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
|
-
`||
|
|
5
|
-
`?2:1):(o+=d,r+=1)}return(!l||n.length>0||o!=="")&&(n.push(o),t.push(n)),t}const Eu=/^\d+(?:\.\d*)?(?:e[+-]?\d+)?$/i,Mu=/^\.\d+(?:e[+-]?\d+)?$/i,Nu=/^\d{1,3}(?:,\d{3})+(?:\.\d*)?$/,Iu=/[\p{Sc}\s]/gu;function Lu(e){let t=e.replace(Iu,"");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)),Nu.test(t))t=t.split(",").join("");else if(!Eu.test(t)&&!Mu.test(t))return dt;let r=Number(t);return Number.isFinite(r)?(o&&(r/=100),n&&(r=-r),$e(r)):dt}const Au=/^(\d{4}-\d{2}-\d{2})/,Wl=e=>String(e).padStart(2,"0"),Pu=e=>`${e.getFullYear()}-${Wl(e.getMonth()+1)}-${Wl(e.getDate())}`;function Tu(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=Pu(o);return $e(Au.test(t)&&t.length>10?r+t.slice(10):r)}return $e(o)}const Fu=new Set(["true","yes","1"]),Ou=new Set(["false","no","0"]);function Du(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):Fu.has(n)?$e(!0):Ou.has(n)?$e(!1):dt}function $u(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 Gu(e,t,n){switch(t?.type){case"number":return Lu(e);case"date":return Tu(e,n?.current);case"boolean":return Du(e,n?.booleanLabels);case"singleSelect":return $u(e,t.valueOptions);default:return $e(e)}}function Hu(e,t,n,o){const{valueParser:r}=t;if(!r)return Gu(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 fr(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=>Ye(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 gr(e,t,n,o,r){const i=e.rowIds[o],l=e.columns[r];if(!l||Xe(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 Bu(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 Vl(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 Wu(e){const t=e?.type;return t===void 0||t==="string"||t==="image"}const zl=1e4,Jn=()=>({updated:[],failed:[],skipped:[]});function Vu(e){process.env.NODE_ENV!=="production"&&console.warn(`[OpenGridX] Pasting ${e} cells. Pastes above ${zl} cells can be slow; consider importing the data instead.`)}function zu(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:m}=l.current;return fr(p,f,m)},[]),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 m=l.current.focusedCell;return m&&m.id!==null&&Ye(m.field)?{id:m.id,field:m.field}:null},[a]),g=s.useCallback(async(p,f,m)=>{const x=d(),b=f??u(x);let C=p;const{onBeforeClipboardPaste:E}=l.current;if(E){const se=We(()=>E({text:C,anchor:b}));if(!se.ok)return Wt("onBeforeClipboardPaste","onBeforeClipboardPaste threw; the paste was cancelled",se.error),Jn();if(se.value===!1)return Jn();typeof se.value=="string"&&(C=se.value)}if(!b)return Jn();const k=ku(C),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,F=x.columns.length-1,I=f?null:a(),A=I&&Tt(I)>1?I:null,_=k.length===1&&k[0].length===1,L=k.reduce((se,U)=>Math.max(se,U.length),0);let D;_&&A?D=A:D={top:N,left:M,bottom:Math.min(N+k.length-1,S,A?A.bottom:S),right:Math.min(M+L-1,F,A?A.right:F)};const v=Tt(D);v>zl&&Vu(v);const{batchEdit:V,isCellEditable:R,rowMetaMap:Q,getSpanOrigin:G}=l.current,W={isCellEditable:R,rowMetaMap:Q,getSpanOrigin:G},H=[],ie=[];for(let se=D.top;se<=D.bottom;se++){const U=x.rowIds[se],te=V.getRow(U)??x.rows[se],ce=_?k[0]:k[se-D.top];for(let z=D.left;z<=D.right;z++){const re=_?k[0][0]:ce?.[z-D.left];if(re===void 0)continue;const K=x.columns[z];if(!gr(x,W,te,se,z)){ie.push({id:U,field:K.field,reason:"notEditable"});continue}const J=Hu(re,K,te,{current:Le(te,K.field,K)});if(!J.ok){ie.push({id:U,field:K.field,reason:"invalidValue"});continue}H.push({id:U,field:K.field,value:J.value})}}if(l.current.selection.enabled){const{anchor:se,head:U}=Vl(x,D);l.current.selection.setModel([{anchor:se,head:U}],m?"keyboard":"api")}const oe=await V.applyEdits(H,"paste"),ue={updated:oe.result.updated,failed:oe.result.failed,skipped:[...ie,...oe.result.skipped]};return l.current.onClipboardPaste?.({...ue,text:C}),ue},[d,u,a]),h=s.useCallback(()=>{const p=a();if(!p||Tt(p)<=1)return!1;const f=d(),{batchEdit:m,isCellEditable:x,rowMetaMap:b,getSpanOrigin:C}=l.current,E={isCellEditable:x,rowMetaMap:b,getSpanOrigin:C},k=[];for(let N=p.top;N<=p.bottom;N++){const M=f.rowIds[N];if(M===void 0)continue;const S=m.getRow(M)??f.rows[N];for(let F=p.left;F<=p.right;F++){const I=f.columns[F];!I||!gr(f,E,S,N,F)||k.push({id:M,field:I.field,value:Wu(I)?"":null})}}return m.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 m=null;const x=()=>{if(!m)return;const{textarea:N,restore:M,timer:S}=m;m=null,window.clearTimeout(S);const F=document.activeElement===N;N.remove(),F&&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;m={textarea:N,restore:M,timer:window.setTimeout(x,250)},N.focus({preventScroll:!0})},C=N=>m!==null&&N.target===m.textarea,E=N=>{if(C(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)&&h()&&N.preventDefault()};return p.addEventListener("paste",E),p.addEventListener("keydown",k),()=>{x(),p.removeEventListener("paste",E),p.removeEventListener("keydown",k)}},[n,w,y,g,h]),s.useLayoutEffect(()=>{t.current.pasteText=(p,f)=>g(p,f,!1)},[t,g])}const Ku=100;function ju(){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 Kl=()=>({updated:[],failed:[],skipped:[]});function Uu(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 Ru(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))},[]),h=s.useCallback(x=>{if(!i.current.enabled||x.length===0)return;const b=l.current;b.push(x);const C=Math.max(1,i.current.limit);b.length>C&&b.splice(0,b.length-C),d.current=[],g()},[g]);s.useLayoutEffect(()=>(o.setListener(n?h:null),()=>o.setListener(null)),[o,n,h]);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,C=fr(b.allRenderableRows,b.getRowId,b.navigationColumns),E=Bu(C,x);if(!E)return;const{anchor:k,head:N}=Vl(C,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 Kl();const E=x==="undo"?l:d,k=x==="undo"?d:l,N=E.current.pop();if(!N)return Kl();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 F=new Set(S.result.failed.map(I=>I.id));if(F.size>0){const I=N.filter(A=>F.has(A.id));I.length>0&&E.current.push(I)}return g(),S.committed.length>0&&y(S.committed),S.result},C=u.current.then(b,b);return u.current=C,C},[g,y]),f=s.useCallback(()=>p("undo"),[p]),m=s.useCallback(()=>p("redo"),[p]);s.useEffect(()=>{const x=r.current;if(!x||!n)return;const b=C=>{if(C.defaultPrevented)return;const E=Uu(C);if(!E)return;const k=i.current.viewportRef.current;if(!k||i.current.isEditing)return;const N=Vn(C.target,k);N!=="grid"&&N!=="control"||(C.preventDefault(),E==="undo"?f():m())};return x.addEventListener("keydown",b),()=>x.removeEventListener("keydown",b)},[r,n,f,m]),s.useLayoutEffect(()=>{const x=t.current;x.undo=f,x.redo=m,x.canUndo=()=>i.current.enabled&&l.current.length>0,x.canRedo=()=>i.current.enabled&&d.current.length>0,x.clearHistory=w},[t,f,m,w])}function qu(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 pr(e,t){return t===null?e:Number(e.toFixed(Math.min(t,20)))}function Xu(e,t){let n=0;for(const l of e){const d=qu(l);n=d===null||n===null?null:Math.max(n,d)}const o=pr(e[1]-e[0],n);for(let l=2;l<e.length;l++)if(pr(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(pr(r+o*l,n));return i}const Yu=864e5,jl=e=>((e.getHours()*60+e.getMinutes())*60+e.getSeconds())*1e3+e.getMilliseconds(),Ju=e=>Math.round(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())/Yu),Zu=e=>e.getFullYear()*12+e.getMonth(),Qu=(e,t)=>new Date(e,t+1,0).getDate();function hr(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 ef(e,t){const n=e[e.length-1],o=e.every(l=>jl(l)===jl(n));if(o&&e.every(l=>l.getDate()===n.getDate())){const l=hr(e.map(Zu));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),h=(u%12+12)%12,w=new Date(n.getTime());w.setFullYear(g,h,Math.min(n.getDate(),Qu(g,h))),d.push(w)}return d}}if(o){const l=hr(e.map(Ju));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=hr(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 tf=e=>typeof e=="number"&&Number.isFinite(e),nf=e=>e instanceof Date&&!Number.isNaN(e.getTime());function of(e,t){return e.length<2?null:e.every(tf)?Xu(e,t):e.every(nf)?ef(e,t):null}const rf=e=>e instanceof Date?new Date(e.getTime()):e;function lf(e,t,n){if(e.length===0||t<=0)return[];const o=n?of(e,t):null;if(o)return o;const r=[];for(let i=0;i<t;i++)r.push(rf(e[i%e.length]));return r}function sf(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 af(e,t,n){const o=(a,u)=>{const g=[];if(a<=u)for(let h=a;h<=u;h++)g.push(h);else for(let h=a;h>=u;h--)g.push(h);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 cf(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 df(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-uf);d--)if(t(d)===l.rowId)return{row:d,field:l.field};return null}const uf=1e3,ff="ogx__cell-fill-handle";function gf(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 pf(e){const{containerRef:t,viewportRef:n,selection:o,disableFillHandle:r,isEditing:i,allRenderableRows:l,getRowId:d,navigationColumns:a,columnIndexMap:u,getSpanOrigin:g}=e,h=s.useRef(e);s.useLayoutEffect(()=>{h.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(_=>Ye(_.field)).map(_=>_.field),I=df(p,_=>{const L=l[_];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]),m=s.useRef(!0);s.useEffect(()=>(m.current=!0,()=>{m.current=!1}),[]);const x=s.useCallback(()=>{const S=h.current;return fr(S.allRenderableRows,S.getRowId,S.navigationColumns)},[]),b=s.useCallback((S,F,I,A,_)=>{const L=cf(F,I,A),D=v=>({id:S.rowIds[v.row],field:S.columns[v.col].field});h.current.selection.setModel([{anchor:D(L.anchor),head:D(L.head)}],_)},[]),C=s.useCallback(async(S,F,I,A,_,L,D)=>{const{batchEdit:v,isCellEditable:V,rowMetaMap:R,getSpanOrigin:Q}=h.current,G={isCellEditable:V,rowMetaMap:R,getSpanOrigin:Q},W=A==="down"||A==="up",H=U=>{const te=S.rowIds[U];return te===void 0?void 0:v.getRow(te)??S.rows[U]},ie=[],oe=[];for(const U of af(F,I,A)){if(U.targets.length===0)continue;const te=re=>W?{r:re,c:U.line}:{r:U.line,c:re},ce=[];for(const re of U.source){const{r:K,c:J}=te(re),ae=H(K),fe=S.columns[J];!ae||!fe||Xe(S.rowIds[K],R)||ce.push(Le(ae,fe.field,fe))}if(ce.length===0)continue;const z=lf(ce,U.targets.length,!_);U.targets.forEach((re,K)=>{const{r:J,c:ae}=te(re),fe=H(J),Z=S.columns[ae],$=S.rowIds[J];if(!fe||!Z||$===void 0)return;if(!gr(S,G,fe,J,ae)){oe.push({id:$,field:Z.field,reason:"notEditable"});return}let O=z[K];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:K,value:O,copy:_}));if(!T.ok){Wt(`fillValue:${Z.field}`,`fillValue of column "${Z.field}" threw; the cell was skipped`,T.error),oe.push({id:$,field:Z.field,reason:"invalidValue"});return}O=T.value}ie.push({id:$,field:Z.field,value:O})})}b(S,I,A,L,D);const ue=await v.applyEdits(ie,"fill"),se={updated:ue.result.updated,failed:ue.result.failed,skipped:[...oe,...ue.result.skipped],direction:A};return h.current.onFill?.(se),se},[b]),E=s.useRef(null),k=s.useCallback((S,F,I)=>{const A=E.current,_=h.current.viewportRef.current;if(!A||!_)return;const L=A.ctx,D=L.rowIndexById.get(S.id),v=L.colIndexByField.get(S.field);if(D===void 0||v===void 0)return;const V=F-A.x+_.scrollLeft-A.scrollLeft,R=I-A.y+_.scrollTop-A.scrollTop,Q=sf(A.source,{row:D,col:v},V,R);A.target=Q,Q?b(L,Q.rect,Q.direction,A.anchor,"pointer"):h.current.selection.setModel(A.sourceModel,"pointer")},[b]),N=s.useCallback(({cancelled:S,altKey:F})=>{const I=E.current;if(E.current=null,!I||!m.current)return;const A=I.ctx;if(S||!I.target){h.current.selection.setModel(I.sourceModel,"pointer");return}C(A,I.source,I.target.rect,I.target.direction,F,I.anchor,"pointer")},[C]),M=w&&y;return s.useEffect(()=>{const S=n.current;if(!S||!M)return;const F=I=>{if(I.button!==0||!(I.target instanceof Element))return;const A=I.target.closest(`.${ff}`);if(!A||A.closest(".ogx__viewport")!==S||h.current.isEditing)return;const{selection:_}=h.current,{range:L,resolved:D}=_.getCurrentRange();if(!L||!D)return;const v=x(),V=v.rowIds[D.bottom],R=v.columns[D.right];if(V===void 0||!R)return;I.preventDefault();const Q=S.ownerDocument;S.contains(Q.activeElement)||S.focus({preventScroll:!0}),We(()=>S.setPointerCapture(I.pointerId)),E.current={source:{top:D.top,bottom:D.bottom,left:D.left,right:D.right},sourceModel:[L],anchor:{row:D.anchorRow,col:D.anchorCol},ctx:v,x:I.clientX,y:I.clientY,scrollLeft:S.scrollLeft,scrollTop:S.scrollTop,target:null},_.startTrackedDrag({start:{id:V,field:R.field},x:I.clientX,y:I.clientY,pointerId:I.pointerId,onTrack:k,onEnd:N})};return S.addEventListener("pointerdown",F),()=>S.removeEventListener("pointerdown",F)},[n,M,x,k,N]),s.useEffect(()=>{const S=t.current;if(!S||!w)return;const F=I=>{if(I.defaultPrevented)return;const A=gf(I);if(!A)return;const _=h.current.viewportRef.current;if(!_||h.current.isEditing)return;const L=Vn(I.target,_);if(L!=="grid"&&L!=="control")return;const{range:D,resolved:v}=h.current.selection.getCurrentRange();if(!D||!v)return;I.preventDefault();const V={top:v.top,bottom:v.bottom,left:v.left,right:v.right},R=A==="down"?{...V,bottom:V.top}:{...V,right:V.left};(A==="down"?V.bottom===V.top:V.right===V.left)||C(x(),R,V,A,!0,{row:v.anchorRow,col:v.anchorCol},"keyboard")};return S.addEventListener("keydown",F),()=>S.removeEventListener("keydown",F)},[t,w,C,x]),{handle:i?null:f}}const hf=e=>e.id,mf={hasColSpan:!1,hasRowSpan:!1,colspanMap:new Map,rowSpanningCaches:{spannedCells:{},hiddenCells:{},hiddenCellOriginMap:{}},getSpanOrigin:()=>null,getUnpinnedColSpanRanges:()=>{},getCenterRowSpanStart:e=>e},Ul="\0",Rl="";function ql(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 wf(e){return e.map(t=>t.field).join(Ul)}function bf(e){const{pinnedTopRows:t,centerRows:n,pinnedBottomRows:o,columns:r,leftPinnedColumns:i,unpinnedColumns:l,rightPinnedColumns:d,expandedRowIds:a,rowMetaMap:u,getRowId:g=hf}=e,h=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=h||w,p=y?[i,l,d].map(wf).join(Rl):"",f=s.useMemo(()=>{if(!p)return{columns:[],leftCount:0,unpinnedCount:0};const x=new Map(r.map(k=>[k.field,k])),b=p.split(Rl).map(k=>k?k.split(Ul):[]),C=[];let E=0;for(const k of b){E+=k.length;for(const N of k){const M=x.get(N)??{field:N};C.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:C,leftCount:b[0].length,unpinnedCount:b[1].length}},[p,r]),m=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},C={spanColumns:f,expandedRowIds:a,rowMetaMap:u,getRowId:g,warned:new Set,out:x};return mr(t,0,!1,C),mr(n,t.length,!0,C),mr(o,t.length+n.length,!1,C),x},[y,f,t,n,o,a,u,g]);return s.useMemo(()=>{if(!m)return mf;const{colspanMap:x,rowSpanningCaches:b,hiddenOriginFields:C,unpinnedRanges:E,centerRowSpanStart:k}=m,N=f.columns;return{hasColSpan:h,hasRowSpan:w,colspanMap:x,rowSpanningCaches:b,getSpanOrigin:(M,S)=>{const F=x.get(M)?.[S];if(F?.spannedByColSpan)return{rowId:M,field:N[F.leftVisibleCellIndex].field};const I=b.hiddenCellOriginMap[M]?.[S];return I===void 0?null:{rowId:I,field:C.get(M)?.[S]??S}},getUnpinnedColSpanRanges:M=>E.get(M),getCenterRowSpanStart:M=>k.get(M)??M}},[m,h,w,f])}function mr(e,t,n,o){const{spanColumns:r,expandedRowIds:i,rowMetaMap:l,getRowId:d,warned:a,out:u}=o,{columns:g,leftCount:h,unpinnedCount:w}=r,y=g.length,{colspanMap:p,rowSpanningCaches:f,hiddenOriginFields:m,unpinnedRanges:x,centerRowSpanStart:b}=u,C=new Int32Array(y),E=new Array(y),k=new Array(y),N=new Int32Array(y);let M=0;const S=[];g.forEach((A,_)=>{(A.hasColSpan||A.hasRowSpan)&&S.push(_)});const F=(A,_,L)=>{const D=g[L].field;if(Xt(f.hiddenCells,A,D,!0),Xt(f.hiddenCellOriginMap,A,D,E[L]),k[L]!==D&&Xt(m,A,D,k[L]),n){const v=b.get(_);(v===void 0||N[L]<v)&&b.set(_,N[L])}},I=(A,_,L)=>{const D=g[L],v=d(A),V=xf(A,v,D.colDef,t+_,L,l,a);let R=1;if(D.hasColSpan){const G=Math.min(Xl(D.colDef.colSpan,V,"colSpan",D.field,a),D.sectionEnd-L);for(;R<G&&C[L+R]<=_;)R++}let Q=1;if(D.hasRowSpan){Q=Math.min(Xl(D.colDef.rowSpan,V,"rowSpan",D.field,a),e.length-_);for(let G=1;G<Q;G++)if(Xe(d(e[_+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[_+G]))){Q=G+1;break}}}if(R>1){Xt(p,v,D.field,{spannedByColSpan:!1,cellProps:{colSpan:R}});for(let G=1;G<R;G++){const W=g[L+G];Xt(p,v,W.field,{spannedByColSpan:!0,leftVisibleCellIndex:L,rightVisibleCellIndex:L+R-1})}if(L>=h&&L<h+w){let G=x.get(v);G||(G=[],x.set(v,G)),G.push(L-h,L+R-1-h)}}if(Q>1){Xt(f.spannedCells,v,D.field,Q);for(let G=L;G<L+R;G++)C[G]=_+Q,E[G]=v,k[G]=D.field,N[G]=_;_+Q>M&&(M=_+Q)}return R};for(let A=0;A<e.length;A++){const _=e[A];if(!_||_._isSkeleton||Xe(d(_),l))continue;if(M<=A){let D=0;for(const v of S)v>=D&&(D=v+I(_,A,v));continue}let L=0;for(;L<y;)C[L]>A?(F(d(_),A,L),L++):g[L].hasColSpan||g[L].hasRowSpan?L+=I(_,A,L):L++}}function xf(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){Yl(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 Xl(e,t,n,o,r){if(typeof e=="number")return ql(e);if(typeof e!="function")return 1;try{return ql(e(t))}catch(i){return Yl(r,`${n}:${o}`,`${n} for column "${o}" threw; the cell is rendered without a span`,i),1}}function Yl(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 yf(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 Cf(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 C=t.getUnpinnedColSpanRanges(b??x.id);if(C)for(let E=0;E<C.length;E+=2){const k=C[E],N=C[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:h,rightPinnedCols:w,unpinnedAccWidths:y,unpinnedTotalWidth:p}=i,f=d>0?y[d-1]:0,m=p-y[a];return[...g,...f>0?[{field:"__spacer_left__",width:f,isSpacer:!0}]:[],...h.slice(d,a+1),...m>0?[{field:"__spacer_right__",width:m,isSpacer:!0}]:[],...w]},[t,n,o,r,i,l])}function vf(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||ir(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 _f=300,Jl=e=>e.id;function Sf(e,t){return e==="infinite"?"infinite":e==="server"?t?"all":"page":"all"}function Zl(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 Ql(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 kf(e){const{dataSource:t,sortModel:n,filterModel:o,paginationModel:r,paginationMode:i,sortingMode:l,filterMode:d,aggregationModel:a,rowGroupingActive:u=!1}=e,g=Sf(i,u),h=!!t&&i==="server"&&u,w=s.useRef(!1);s.useEffect(()=>{process.env.NODE_ENV==="production"||w.current||!h||(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."))},[h]);const y=t?.getRows,p=sl({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]),m=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 C=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),F=s.useRef(0),I=s.useRef(!1),A=s.useRef(new Set),_=s.useCallback(()=>{const W=S.current||F.current>0;W!==I.current&&(I.current=W,b.current.params.setDataSourceLoading(W))},[]),L=s.useCallback(()=>{M.current!==null&&(clearTimeout(M.current),M.current=null)},[]),D=s.useCallback(()=>{C.current++,N.current.inFlightEnd=null,S.current=!1},[]),v=s.useCallback(()=>{E.current++,A.current.clear(),F.current=0},[]),V=s.useCallback(async()=>{const{params:W,kind:H}=b.current,ie=W.dataSource;if(!ie)return!1;const oe=N.current,ue=W.paginationModel.pageSize;let se,U;if(H==="infinite"){if(oe.inFlightEnd!==null)return!1;if(se=oe.loadedEnd,U=(oe.page+1)*ue,U<=se)return S.current=!1,_(),!1;oe.inFlightEnd=U}else H==="page"?(se=W.paginationModel.page*ue,U=se+ue):(se=0,U=al);const te=++C.current;S.current=!0,_(),W.setDataSourceError(null);let ce;try{ce=await ie.getRows({startRow:se,endRow:U,sortModel:W.sortModel,filterModel:W.filterModel,groupKeys:[],aggregationModel:W.aggregationModel})}catch(z){return te!==C.current||(oe.inFlightEnd=null,S.current=!1,b.current.params.setDataSourceError(z),console.error("Data Source Error:",z),_()),!1}if(te!==C.current)return!1;try{const{params:z}=b.current,re=z.getRowId??Jl,K=Zl(ce.rows,re);if(H==="infinite"&&se>0?z.setRows(J=>Ql(J,K,re),!0):(z.setRows(K.map(J=>J.row),!0),v()),ce.aggregationResults&&z.onAggregationResults?.(ce.aggregationResults),ce.rowCount!==void 0&&z.setRowCount(ce.rowCount),H==="infinite"&&(oe.inFlightEnd=null,oe.loadedEnd=se+ce.rows.length,ce.rows.length>=U-se&&(oe.page+1)*ue>U))return!0}catch(z){return oe.inFlightEnd=null,S.current=!1,b.current.params.setDataSourceError(z),console.error("Data Source Error:",z),_(),!1}return S.current=!1,_(),!1},[_,v]),R=s.useCallback(async()=>{for(;await V(););},[V]);s.useLayoutEffect(()=>{if(!y){k.current&&(k.current=null,L(),D(),v(),b.current.params.setDataSourceError(null),_());return}const W=k.current,H=N.current;if(!W||W.key!==f||W.getRows!==y){k.current={key:f,getRows:y},D(),v();const ie=g==="infinite"&&W!==null&&m!==0;if(H.page=ie?0:m,H.loadedEnd=0,ie){const{params:oe}=b.current;oe.onPaginationModelChange?.({...oe.paginationModel,page:0})}}else g==="infinite"?(m<H.page&&(D(),H.loadedEnd=0),H.page=m):D();if(g==="infinite"){const ie=H.inFlightEnd!==null;if(ie||(H.page+1)*x<=H.loadedEnd){S.current=ie,_();return}}return S.current=!0,_(),M.current=setTimeout(()=>{M.current=null,R()},_f),L},[y,f,g,m,x,L,D,v,_,R]),s.useEffect(()=>()=>{D(),v()},[D,v]);const Q=s.useCallback(()=>(L(),R()),[L,R]),G=s.useCallback(async(W,H,ie)=>{const{params:oe}=b.current,ue=oe.dataSource;if(!ue)return;const se=JSON.stringify(H),U=A.current;if(U.has(se))return;const te=E.current;U.add(se),F.current++,_();try{const ce=await ue.getRows({startRow:0,endRow:al,sortModel:oe.sortModel,filterModel:oe.filterModel,groupKeys:H,aggregationModel:oe.aggregationModel});if(te!==E.current)return;if(ce.rows.length>0){const{params:z}=b.current,re=z.getRowId??Jl,K=Zl(ce.rows,re);z.setRows(J=>Ql(J,K,re),!0)}}catch(ce){if(te!==E.current)return;U.delete(se),console.error("Failed to fetch children:",ce),ie?.(ce)}finally{te===E.current&&(F.current--,_())}},[_]);return{fetchRows:Q,fetchChildren:G}}function Ef(e){return(e.serverChildrenCount??0)>0&&(e.children?.length??0)===0}function Mf({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)=>{!Ef(d)||!n(a)||i(a,o(a),()=>{const{isGroupExpanded:u,toggleExpansion:g}=l.current;u(a)&&g(a)})})},[e,t,n,o,i])}const es={};function Nf(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 ts(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]),h=s.useMemo(()=>r||!u?es: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,m]=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 F;try{F=Promise.resolve(k(S))}catch(I){F=Promise.reject(I)}return F.then(I=>{N||m({key:w,result:I,error:null})},I=>{N||(console.error("[useAggregation] Server aggregation error:",I),m({key:w,result:null,error:I}))}),()=>{N=!0}},[y,i,w]);const x=f&&f.key===w?f:null,b=y&&x===null,C=y?x?.error??null:null;return{aggregationResult:s.useMemo(()=>r?a&&Object.keys(a).length>0?a:x?.result??es:h,[r,h,a,x]),isLoading:b,error:C}}const If={items:[]},Lf=[];function Af(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]),h=s.useMemo(()=>jo(n),[n]),w=s.useMemo(()=>Qa(i,g),[i,g]),y=s.useMemo(()=>u?Ho(t,w.source,h):t,[u,t,w.source,h]),p=s.useMemo(()=>u?Ai(y,n,r,{outputFilterModel:w.output,sortModel:l}):Ro,[u,y,n,r,w.output,l]),f=u&&p.isValid,m=s.useRef({dataSource:!1,hierarchy:!1});return s.useEffect(()=>{process.env.NODE_ENV!=="production"&&(o&&d&&!m.current.dataSource&&(m.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&&!m.current.hierarchy&&(m.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?If:i,pipelineSortModel:f?Lf: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 wr(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,h=Un(o),w=Zo(r,h),y=Ri(n,w),p=d.includes(h)?d:[...d,h].sort((_,L)=>_-L),f=y*h,m=Math.min(f+h,r),x=r===0?0:`${f+1}–${m}`,b=g?.paginationRowsPerPage??"Rows per page:",C=g?.paginationOf?g.paginationOf(r===0?0:f+1,m,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)},F=_=>{const L=parseInt(_.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:h,onChange:F,children:p.map(_=>c.jsx("option",{value:_,children:_},_))})]}),c.jsx("div",{className:"ogx-pagination__info","aria-live":"polite","aria-atomic":"true",children:C}),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 Pf({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:h,onSelectionChange:w,tabIndex:y=-1,onFocus:p,onToggleExpansion:f}){const m=t??e.id,x=r.field,b=Le(e,x,i),C=No(e,x,b,i)??Io(b,i),E=l?.isGroupRow===!0||Xe(m),k={row:e,value:b,formattedValue:C,field:x,colDef:i??r,rowIndex:n,colIndex:0,rowMeta:l},N=M=>{M.stopPropagation(),w?.(m,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:h?()=>h(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 ${m}`,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(nr,{isExpanded:l.isExpanded===!0,onClick:()=>f(m),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 Tf(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=Qi(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 Ff=e=>e.id;function Of({ariaLabel:e,allRenderableRows:t,dataRowCount:n,pinnedTopRowCount:o,pinnedBottomRowCount:r,unpinnedRowCount:i,pagination:l,effectivePaginationModel:d,currentPage:a,pageSizeOptions:u,selectedRowIds:g,listViewColumn:h,columnsByField:w,rowMetaMap:y,noRowsLabel:p,rowHeight:f,checkboxSelection:m,paginationMode:x,serverRowCount:b,paginationSlot:C,paginationSlotProps:E,localeText:k,onRowClick:N,onRowDoubleClick:M,onSelectionChange:S,onPaginationModelChange:F,onRowsScrollEnd:I,getRowId:A=Ff,multiselectable:_=!1,loading:L=!1,loadingOverlay:D,noRowsOverlay:v,showPaginationControls:V=!0,selectable:R=!1,onToggleExpansion:Q}){const G=C||wr,W=s.useRef(null),[H,ie]=s.useState(null),oe=H===null?-1:t.findIndex($=>A($)===H),ue=oe===-1?0:oe,se=$=>{const O=t[$];O&&(ie(A(O)),W.current?.querySelector(`:scope > [role="row"][data-rowindex="${$}"]`)?.focus())},U=$=>{const O=$.target;if(O.getAttribute("role")!=="row"||O.parentElement!==W.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(),se(Math.min(P+1,B));return;case"ArrowUp":$.preventDefault(),se(Math.max(P-1,0));return;case"Home":$.preventDefault(),se(0);return;case"End":$.preventDefault(),se(B);return;case"PageDown":$.preventDefault(),se(Math.min(P+10,B));return;case"PageUp":$.preventDefault(),se(Math.max(P-10,0));return;case"Enter":case" ":if($.preventDefault(),$.key===" "&&$.shiftKey){R&&!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,z=te?b||0:n,re=Un(d.pageSize),K=Zo(ce,re),J=l?a*re:0,ae=t.length-o-r,fe=$=>{if($<o)return $+1;const O=$-o;return O<ae?o+J+O+1:o+ce+(O-ae)+1},Z=Tf(I,t.length);return c.jsxs("div",{className:"ogx-list-view",role:"grid","aria-label":e||"Data grid list view","aria-rowcount":z,"aria-multiselectable":_,children:[c.jsx("div",{className:"ogx-list-view__toolbar",children:c.jsxs("span",{children:[z," ",z===1?"item":"items",l?` · page ${a+1} of ${K}`:"",g.size>0?` · ${g.size} selected`:""]})}),c.jsx("div",{className:"ogx-list-view__rows",tabIndex:-1,onScroll:Z,onKeyDown:U,ref:W,children:t.length===0&&L?c.jsx("div",{className:"ogx-list-view__loading",children:D??c.jsx("div",{className:"ogx__loading-bar",role:"progressbar","aria-label":"Loading data"})}):t.length===0&&v?c.jsx("div",{className:"ogx-list-view__empty",children:v}):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(Pf,{row:$,rowId:P,rowIndex:O,ariaRowIndex:fe(O),listViewColumn:h,gridColumn:w.get(h.field),rowMeta:y.get(P),isSelected:g.has(P),checkboxSelection:m,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&&V&&c.jsx(G,{page:a,pageSize:d.pageSize,rowCount:ce,pageSizeOptions:u,onPageChange:$=>F({...d,page:$}),onPageSizeChange:$=>F({...d,pageSize:$,page:0}),localeText:k,...E})]})}function Df({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 $f(e){return e.nativeEvent.isComposing||e.keyCode===229}function xn(e,t,n=!0){return o=>{if($f(o)){o.stopPropagation();return}n&&o.key==="Enter"&&(o.stopPropagation(),e()),o.key==="Escape"&&(o.stopPropagation(),t())}}function Gf({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 Hf({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 Bf({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 br=e=>typeof e=="object"?e.value:e,Wf=e=>typeof e=="object"?e.label:String(e);function Vf(e,t){return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Object.is(e,t)}function zf({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(br(g)));let a=l.findIndex(g=>Vf(br(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 h=d.indexOf(g.target.value);n(h===-1?null:br(l[h]))},onBlur:o,onKeyDown:xn(o,r),children:[u&&c.jsx("option",{value:""}),l.map((g,h)=>c.jsx("option",{value:d[h],children:Wf(g)},h))]})}const ns=e=>String(e).padStart(2,"0"),os=/^(\d{4}-\d{2}-\d{2})/;function xr(e){if(e instanceof Date)return Number.isNaN(e.getTime())?"":`${e.getFullYear()}-${ns(e.getMonth()+1)}-${ns(e.getDate())}`;if(typeof e=="string"){const t=os.exec(e);return t?t[1]:e===""?"":xr(new Date(e))}return typeof e=="number"?xr(new Date(e)):""}function Kf(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"&&os.test(t)&&t.length>10?e+t.slice(10):e}function jf({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const[i]=s.useState(e),[l,d]=s.useState(()=>xr(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(Kf(u.target.value,i))},onBlur:o,onKeyDown:xn(o,r)})}function Uf(e){const{colDef:t}=e;switch(t.type){case"number":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(Hf,{...e})});case"boolean":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(Bf,{...e})});case"singleSelect":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(zf,{...e})});case"date":return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(jf,{...e})});default:return c.jsx("div",{className:"ogx__edit-cell",children:c.jsx(Gf,{...e})})}}function Rf(e){const{onCellClick:t,onCellEditStart:n,onCellValueChange:o,value:r,row:i,colDef:l,rowIndex:d,colIndex:a,ariaColIndex:u,isSelected:g,onClick:h,width:w,pinnedPosition:y,pinnedOffset:p,isPinnedEdge:f,isFocused:m,isFocusVisible:x,isEditable:b,isEditing:C,onEditStart:E,onEditStop:k,onValueChange:N,colSpanInfo:M,rowSpan:S,isHiddenByRowSpan:F,rowMeta:I,valueError:A,rangeFlags:_=0}=e,L=s.useCallback(Z=>{o?o(l.field,Z):N?.(Z)},[o,N,l.field]),D=I?.isGroupRow===!0,{formattedValue:v,error:V}=s.useMemo(()=>{const Z=l.valueFormatter;if(Z&&!(D&&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,D]),R=s.useMemo(()=>{if(!l.cellClassName)return"";const Z=l.cellClassName;if(typeof Z=="function"){const $=We(()=>Z({value:r,formattedValue:v,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:I}));return $.ok&&$.value||""}return l.cellClassName},[l,r,v,i,d,a,I]),Q=A??V,G=l.field,W=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]),oe=s.useRef(!1);if(s.useEffect(()=>{if(!(!C||!k))return oe.current=!0,()=>{oe.current=!1,queueMicrotask(()=>{oe.current||k(!1,G)})}},[C,k,G]),M?.spannedByColSpan)return null;const ue=M?.cellProps.colSpan??1,se=ue>1,U=(se?M?.cellProps.width:void 0)??w??l.width??100,te={width:"var(--width)","--width":typeof U=="number"?`${U}px`:U,flexGrow:(se?M?.cellProps.flexGrow:void 0)??l.flex??0,flexShrink:0,flexBasis:"auto",boxSizing:"border-box",minWidth:se?void 0:l.minWidth,maxWidth:se?void 0:l.maxWidth};if(F)return c.jsx("div",{className:"ogx__cell ogx__cell--hidden",style:te,role:"presentation","data-field":l.field,"data-colindex":a});const ce=Z=>{C||(t&&t({row:i,field:l.field,value:r,colDef:l,rowIndex:d,colIndex:a}),h?.(Z))},z=()=>{C||!b||(n?n(l.field,r):E?.())},re=l.renderEditCell,K=y!=null,J=["ogx__cell",`ogx__cell--align-${l.align||"left"}`,g&&"ogx__cell--selected",m&&"ogx__cell--focused",m&&x&&"ogx__cell--focus-visible",l.type&&`ogx__cell--type-${l.type}`,K&&"ogx__cell--pinned",K&&`ogx__cell--pinned-${y}`,K&&f&&`ogx__cell--pinned-${y}-${y==="left"?"last":"first"}`,C&&"ogx__cell--editing",S&&S>1&&"ogx__cell--spanned",(_&Yo)!==0&&"ogx__cell--range",(_&Gi)!==0&&"ogx__cell--range-top",(_&Hi)!==0&&"ogx__cell--range-bottom",(_&Bi)!==0&&"ogx__cell--range-left",(_&Wi)!==0&&"ogx__cell--range-right",R].filter(Boolean).join(" "),ae=S||1,fe={...te,position:K?"sticky":void 0,zIndex:l.zIndex??(K?3:void 0),padding:C?0:void 0};return ae>1&&(fe.height=`calc(var(--height) * ${ae} - var(--border-width, 1px))`,fe.zIndex=10,K&&(fe.zIndex=40)),K&&p!==void 0&&(y==="left"?fe.left=p:fe.right=p),c.jsxs("div",{className:J,style:fe,onClick:ce,onDoubleClick:z,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}:{},...ae>1?{"aria-rowspan":ae}:{},...(_&Yo)!==0?{"aria-selected":!0}:{},children:[c.jsx("div",{className:"ogx__cell-content",children:C&&(o||N)&&k?re?c.jsx(Ft,{field:l.field,resetKey:i,renderFn:()=>re({value:r,formattedValue:v,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:I,onValueChange:L,onCommit:W,onCancel:H})}):c.jsx(Uf,{value:r,formattedValue:v,row:i,field:l.field,colDef:l,rowIndex:d,colIndex:a,rowMeta:I,onValueChange:L,onCommit:W,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:v,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"}):v}),(_&Vi)!==0&&!C&&c.jsx("div",{className:"ogx__cell-fill-handle","aria-hidden":"true"})]})}const rs=s.memo(Rf),qf=({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 Xf(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 h=a.current;if(!h||!u||!r||!i)return;const w=()=>{h.getClientRects().length!==0&&i(t,h.offsetHeight)};if(w(),typeof ResizeObserver>"u")return;const y=new ResizeObserver(w);return y.observe(h),()=>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 yr=12;function Yf(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 Jf(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:h={},pinnedColumns:w,pinnedRows:y,hasDetailPanel:p=!1,isDetailPanelExpanded:f=!1,onDetailPanelToggle:m,detailPanelContent:x,detailPanelHeight:b=Lo,onDetailPanelHeightChange:C,pinCheckboxColumn:E=!0,pinExpandColumn:k=!0,rowReordering:N=!1,onDragStart:M,onDragOver:S,onDragEnd:F,onDrop:I,isDragging:A,isDragOver:_,editingCell:L,onEditStart:D,onEditStop:v,onEditCellValueChange:V,isCellEditable:R,focusedCellField:Q,isFocusVisible:G,colspanMap:W,rowSpanningCaches:H,rowHeight:ie=52,rowMeta:oe,columnIndexMap:ue,ariaRowIndex:se,cellRange:U}=e,te=n??t.id,ce=s.useId(),z=s.useId(),re=s.useMemo(()=>Eo(o,h,w,l,E,p,k,N),[o,h,w,l,E,p,k,N]),K=s.useMemo(()=>Mo(o,w),[o,w]),J=oe?.hasChildren===!0,ae=oe?.isGroupRow===!0,fe=p&&!ae,Z=!ae&&!Xe(te),$=s.useCallback((de,ye)=>{D?.({id:te,field:de,value:ye})},[te,D]),O=s.useCallback((de,ye)=>{V?.({id:te,field:de,value:ye})},[V,te]),P=s.useCallback((de,ye)=>{v?.({cancel:de,id:te,field:ye})},[v,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(),m?.(te)},q=N?1:0,Y=p?q+1:q,ne=l?Y+1:Y,me=ne,j=ue?.size??o.filter(de=>!de.isSpacer).length,le=oe!==void 0,we=oe?.hasChildren===!0,pe=oi(te,y),he=pe==="top",Ce=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",Ce&&"ogx__row--pinned-bottom",A&&"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:be,onClick:T,onDoubleClick:a?X:void 0,role:"row","aria-rowindex":se??r+2,"aria-selected":i,"aria-level":le?(oe?.treeDepth??0)+1:void 0,"aria-expanded":we?oe?.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:yr},draggable:!!M,onDragStart:M?M(te):void 0,onDragEnd:F,onClick:de=>de.stopPropagation(),children:M&&c.jsx(qf,{})}),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?z:void 0,"aria-colindex":Y,"data-field":"__expand_col__",style:{position:k?"sticky":void 0,left:k?N?48:0:void 0,zIndex:k?yr: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(nr,{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":ne,"data-field":"__checkbox_col__",style:{position:E?"sticky":void 0,left:E?(N?48:0)+(p&&k?48:0):void 0,zIndex:E?yr: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;ae?Ee=t[de.field]:{value:Ee,error:Me}=ii(t,de.field,de);const Ne=ue?.get(de.field)??ye,Ie=h[de.field]??de.width,Se=ct(de.field,w),Oe=!!D&&Fo({row:t,field:de.field,value:Ee,colDef:de,rowIndex:r,colIndex:Ne,rowMeta:oe},R),ge=L?.id===te&&L?.field===de.field,ve=ge?L?.value:Ee,ke=W?.get(te)?.[de.field],xe=ke&&!ke.spannedByColSpan&&ke.cellProps.colSpan>1?Yf(o,Ne,ke.cellProps.colSpan,h):ke,je=xe&&!xe.spannedByColSpan?o[Ne+xe.cellProps.colSpan-1]?.field??de.field:de.field,nt=Se==="right"?je:de.field,nn=Se?re[nt]:void 0,Mn=Se==="left"&&je===K.lastLeft||Se==="right"&&de.field===K.firstRight,ot=H?.spannedCells[te]?.[de.field],lo=H?.hiddenCells[te]?.[de.field]||!1,so=U&&!lo&&de.field!==Di?cc(U,Ne,xe&&!xe.spannedByColSpan?xe.cellProps.colSpan:1,ot??1):void 0;return c.jsx(rs,{value:ve,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:oe,valueError:Me,rangeFlags:so},de.field)})]}),fe&&c.jsx(Xf,{id:z,colSpan:me+j,row:t,rowId:te,rowIndex:r,content:x,height:b,isExpanded:f,onHeightChange:C})]})}function Zf(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(!ac(e.cellRange,t.cellRange))return!1}else if(!Object.is(e[o],t[o]))return!1;return!0}const Zn=s.memo(Jf,Zf);function is({getContent:e,params:t}){return c.jsx(Ft,{field:"detail panel",renderFn:()=>e(t),resetKey:t.row})}const Qf=e=>e.id;function ls({rows:e,position:t,columns:n,selectedRowIds:o,checkboxSelection:r,onRowClick:i,onRowDoubleClick:l,onCellClick:d,onSelectionChange:a,columnWidths:u,pinnedColumns:g,pinnedRows:h,hasDetailPanel:w,expandedRowIds:y,getDetailPanelContent:p,getDetailPanelHeight:f,onDetailPanelToggle:m,onDetailPanelHeightChange:x,pinCheckboxColumn:b,pinExpandColumn:C,focusedCell:E,colspanMap:k,rowSpanningCaches:N,rowHeight:M,rowMetaMap:S,getRowId:F=Qf,rowIndexOffset:I=0,ariaRowIndexBase:A,columnIndexMap:_,editingHandlers:L,isCellEditable:D,rowReordering:v=!1,cellRange:V,cellRangeHasRowSpan:R=!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,W)=>{const H=F(G),ie=I+W;return c.jsx(Zn,{row:G,rowId:H,columns:n,rowIndex:ie,ariaRowIndex:A!==void 0?A+W:void 0,columnIndexMap:_,isSelected:o.has(H),checkboxSelection:r,onRowClick:i,onRowDoubleClick:l,onCellClick:d,onSelectionChange:a,columnWidths:u,pinnedColumns:g,pinnedRows:h,hasDetailPanel:w,isDetailPanelExpanded:y.has(H),detailPanelContent:y.has(H)&&p?c.jsx(is,{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:m,pinCheckboxColumn:b,pinExpandColumn:C,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:D,rowReordering:v,cellRange:$i(V,ie,R,Q)},H)})})}const eg=({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 tg({virtualContainerHeight:e,offsetTop:t,effectiveLoading:n,visibleRows:o,baseColumns:r,virtualColumns:i,viewportWidth:l,checkboxSelection:d,hasDetailPanel:a,rowReordering:u,rowHeight:g,selectedRowIds:h,onRowClick:w,onRowDoubleClick:y,onCellClick:p,onSelectionChange:f,columnWidths:m,pinnedColumns:x,expandedRowIds:b,getDetailPanelContent:C,getDetailPanelHeight:E,onDetailPanelToggle:k,onDetailPanelHeightChange:N,pinCheckboxColumn:M,pinExpandColumn:S,rowReorderHandlers:F,editingHandlers:I,isCellEditable:A,focusedCell:_,colspanMap:L,rowSpanningCaches:D,paginationMode:v,dataSourceLoading:V,sortedUnpinnedRowCount:R,infiniteScrollSkeletonCount:Q,unpinnedRowsLength:G,lastRenderedRowIndex:W,rowMetaMap:H,loadingOverlay:ie,ariaRowIndexOffset:oe,columnIndexMap:ue,cellRange:se,cellRangeHasRowSpan:U=!1,fillHandle:te}){const ce=r.length>0?r:(()=>{const K=(l||1e3)-(d?48:0)-(a?48:0)-(u?48:0),J=150,ae=Math.max(1,Math.ceil(K/J));return Array.from({length:ae},(fe,Z)=>({field:`placeholder_${Z}`,headerName:"",width:J}))})(),z=o.filter(K=>!K.pinned),re=v==="infinite"&&V&&R>0&&W>=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((K,J)=>c.jsx(eg,{columns:ce,rowHeight:g,checkboxSelection:d,hasDetailPanel:a,rowReordering:u},`skeleton-${J}`)):z.map(({row:K,id:J,rowIndex:ae})=>c.jsx(Zn,{row:K,rowId:J,columns:i,rowIndex:ae,ariaRowIndex:oe!==void 0?ae+oe:void 0,columnIndexMap:ue,isSelected:h.has(J),checkboxSelection:d,onRowClick:w,onRowDoubleClick:y,onCellClick:p,onSelectionChange:f,columnWidths:m,pinnedColumns:x,hasDetailPanel:a,isDetailPanelExpanded:b.has(J),detailPanelContent:b.has(J)&&C?c.jsx(is,{getContent:C,params:{row:K,id:J,rowIndex:ae}}):null,detailPanelHeight:b.has(J)?Ao(Po(E,{row:K,id:J,rowIndex:ae})):void 0,onDetailPanelHeightChange:N,onDetailPanelToggle:k,pinCheckboxColumn:M,pinExpandColumn:S,rowReordering:u,onDragStart:F.canReorderRow(J)?F.onDragStart:void 0,onDragOver:F.onDragOver,onDragEnd:F.onDragEnd,onDrop:F.onDrop,isDragging:F.draggedRowId===J,isDragOver:F.dragOverRowId===J,editingCell:I.editingCell,onEditStart:I.startCellEdit,onEditStop:I.stopCellEdit,onEditCellValueChange:I.setEditCellValue,isCellEditable:A,focusedCellField:_!=null&&_.id===J?_.field:null,colspanMap:L,rowSpanningCaches:D,rowHeight:g,rowMeta:H.get(J),cellRange:$i(se,ae,U,te)},J)),re&&c.jsx("div",{className:"ogx__skeleton-group",children:Array.from({length:Q}).map((K,J)=>c.jsx(Zn,{row:{id:`__skeleton_${J}__`,_isSkeleton:!0},columns:i,rowIndex:G+J,rowHeight:g},`__skeleton_${J}__`))})]})})}function ng(){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 og(){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 Cr(e){const{columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:d,showNonHideableColumns:a}=e,[u,g]=s.useState(""),h=s.useId(),[w,y]=s.useState(null),p=s.useRef(null),f=s.useMemo(()=>t.filter(S=>S.hideable!==!1),[t]),m=f.every(S=>n.has(S.field)),x=s.useMemo(()=>{const S=a?t:f;if(!u)return S;const F=u.toLowerCase();return S.filter(I=>(I.headerName||I.field).toLowerCase().includes(F))},[t,f,u,a]),b=S=>{S.target.checked?r():i()},C=S=>F=>{p.current=S,F.dataTransfer.effectAllowed="move",F.dataTransfer.setDragImage(F.currentTarget.closest(".ogx-column-visibility-panel__item"),20,20)},E=S=>F=>{F.preventDefault(),F.dataTransfer.dropEffect="move",S!==p.current&&y(S)},k=()=>{y(null)},N=S=>F=>{F.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(ng,{}),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,F)=>{const I=`${h}-col-${F}`,A=n.has(S.field),_=S.hideable!==!1,L=w===S.field,D=!!l&&!u;return c.jsxs("div",{className:["ogx-column-visibility-panel__item",!_&&"ogx-column-visibility-panel__item--disabled",L&&"ogx-column-visibility-panel__item--drag-over"].filter(Boolean).join(" "),draggable:D,onDragOver:D?E(S.field):void 0,onDragLeave:D?k:void 0,onDrop:D?N(S.field):void 0,onDragEnd:D?M:void 0,children:[D&&c.jsx("span",{className:"ogx-column-visibility-panel__drag-handle-wrapper",draggable:!0,onDragStart:C(S.field),title:"Drag to reorder",children:c.jsx(og,{})}),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(bt,{id:I,checked:A,onChange:v=>o(S.field,v.target.checked),disabled:!_}),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:`${h}-all`,checked:m,onChange:b}),c.jsx("label",{htmlFor:`${h}-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 rg({isOpen:e,containerRef:t,panelRef:n,columns:o,columnVisibilityModel:r,disableColumnReorder:i,onClose:l,onColumnVisibilityChange:d,onColumnMove:a,onColumnOrderReset:u,columnGroupingModel:g}){const[h,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||!h)return null;const y=i?void 0:(p,f)=>{ir(g,p,f)&&a(p,f)};return mt.createPortal(c.jsxs("div",{ref:n,style:{position:"fixed",top:h.top,right:h.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(Cr,{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})]}),h.target)}function ig(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 lg(e){return e.id}function sg(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 ag(e,t){s.useLayoutEffect(()=>{e&&(e.current=t.current)},[e,t])}function cg(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(h=>!i.get(l(h))?.isGroupRow&&(!g||g.has(h)))}function dg(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 ug(e,t){return e===t?!0:e.length!==t.length?!1:e.every((n,o)=>dg(n,t[o]))}function fg(e){const[t,n]=s.useState(e),o=ug(t,e);return o||n(e),o?t:e}function gg(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=[],h=[],w=y=>{for(;h.length>0&&h[h.length-1].header.depth>=y;){const p=h.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 m=f.treeDepth??0;w(m);const x={type:"group-header",depth:m,groupField:f.groupingField,groupValue:f.groupingValue,groupLabel:f.groupLabel};g.push(x),h.push({id:p,header:x,leaves:[]})}else g.push({type:"leaf",depth:f?.treeDepth??h.length,row:y}),h.forEach(m=>m.leaves.push(y))}return w(0),a&&l&&g.push({type:"grand-total",depth:0,aggregatedValues:l}),g}function pg(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:h,hierarchyField:w}=o();return d?gg({rows:a.getVisibleRows({expandAll:!0,labelField:w})??[],getRowId:h,rowMetaMap:u,columns:g,aggregationModel:l,aggregationResult:r&&a.rootAggregationPosition!==null?i:null,isSubtotalHidden:y=>a.aggregationPositions.get(y)===null}):null}},[t])}const hg=new Set(["__group__","__check__","__actions__"]);function Dt(e){return e.filter(t=>t.exportable!==!1&&!t.isSpacer&&!Ze(t.field)&&!hg.has(t.field))}function yt(e){return!!e&&e.length>0}function ss(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)?ss(e,t,n):e}function Cn(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 vn(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 as(e,t){const n={};return t.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o.field)&&(n[o.field]=e[o.field])}),n}const mg=/^[=+\-@\t\r]/,wg=/^[-+]?(?=[\d.,\s]*\d)[\d.,\s]*%?$/;function Qn(e,t=!1){return t||!mg.test(e)||wg.test(e)?e:`'${e}`}function Ct(e){return typeof e=="number"||typeof e=="bigint"||typeof e=="boolean"||e instanceof Date}function Te(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function bg(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 xg=/[\\/?*:[\]]/g,cs=31;function _r(e,t=new Set){let n=bg(String(e??"").replace(xg,"-").trim()).trim();n||(n="Sheet"),n=n.slice(0,cs).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,cs-l.length).trim()}${l}`}return t.add(r.toLowerCase()),r}const yg=new Set([Je,Pt,At]),Cg=/[\t\n\r"]/;function Sr(e){return Cg.test(e)?`"${e.replace(/"/g,'""')}"`:e}function vg(e){return Dt(e).filter(t=>!yg.has(t.field))}function _g(e,t){const n=t.map(r=>Sr(r.headerName||r.field)).join(" "),o=e.map(r=>t.map(i=>Sr(_n(r,i,Le(r,i.field,i)))).join(" "));return[n,...o].join(`
|
|
6
|
-
`)}function
|
|
7
|
-
`)}function ds(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 kr(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(ds(e))return;throw n}if(!ds(e))throw new Error("Clipboard API not available and fallback failed.")}function Eg(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 Mg(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(h=>a.has(d(h)));if(u.length===0)return;const g=_g(u,vg(i()));await kr(g)},[]),o=!!e.disableKeyboardShortcut;return s.useEffect(()=>{if(o)return;const r=i=>{if(i.defaultPrevented||!Eg(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:h}=t.current;(h?()=>{const y=h();return y===null?Promise.resolve():kr(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 Ng(e){const{apiRef:t,columns:n,getRowId:o,containerRef:r,disableKeyboardShortcut:i,getCellRangeCopyText:l}=e,d=s.useCallback(()=>r.current,[r]),{copySelectedRows:a}=Mg({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 Ig(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(h=>h.field===g.field),l)}}},[t])}const Lg=".ogx";function us(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 Ag(e,t){const n=typeof CSS<"u"&&CSS.escape?CSS.escape(t):t.replace(/["\\]/g,"\\$&"),o=l=>l.closest(Lg)===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(us(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(us(l,d))}),r===null?null:Math.ceil(r)}function Pg(e,t,n){return Math.max(t??ul,Math.min(n??1/0,e))}function Tg(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 h of i??d.map(w=>w.field)){const w=d.find(p=>p.field===h);if(!w||w.resizable===!1)continue;const y=Ag(u,h);y!==null&&g.push([h,Pg(y,w.minWidth,w.maxWidth)])}for(const[h,w]of g)a(h,w)},[]),r=s.useCallback(i=>o([i]),[o]);return s.useLayoutEffect(()=>{t.current.autosizeColumn=r,t.current.autosizeColumns=o},[t,r,o]),r}const fs="ogx--range-dragging",vt=32,Fg=40,Og=300;function gs(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 Er(e){const t=e.getSelection();t&&t.rangeCount>0&&t.removeAllRanges()}const ps=(e,t,n)=>Math.min(Math.max(e,t),n),eo=e=>Math.min(Fg,Math.max(2,Math.round(e/2)));function Dg(e){process.env.NODE_ENV!=="production"&&console.warn(`[OpenGridX] Copying ${e} cells. For ranges this large, exportToCsv or exportToExcel is the better tool.`)}function $g(e){const{enabled:t,model:n,allRenderableRows:o,getRowId:r,navigationColumns:i,columnIndexMap:l,spanning:d,rowMetaMap:a,localeText:u,showStats:g}=e,h=t&&n.length>0?n[0]:null,w=s.useMemo(()=>t?i.filter(O=>Ye(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(()=>h&&p?Kn(h,p):null,[h,p]),m=f!==null&&Tt(f)>1,x=s.useMemo(()=>{if(!f||!m||!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,m,p,l]),b=s.useCallback(O=>Xe(O,a),[a]),C=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],ne=y?.getSpanOrigin(ee,Y.field);T(B,ee,Y,ne!=null&&(ne.rowId!==ee||ne.field!==Y.field))}}}},[p,o,w,y,b]),E={...e,range:h,resolved:f,context:p,rangeColumns:w,forEachCell:C},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},[]),F=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;ic(T,S())||k.current.onModelChange(T,P)},[S]),A=s.useCallback((O,P,T)=>{I([{anchor:O,head:P}],T)},[I]),_=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}=F();if(!B||X.id===null||!Ye(X.field))return!1;const Y=B.rowIndexById.get(X.id),ne=B.colIndexByField.get(X.field);if(Y===void 0||ne===void 0)return!1;const me=ee&&q&&wt(ee.anchor,{id:X.id,field:X.field})?{range:ee,resolved:q}:null,j=me?me.range.anchor:{id:X.id,field:X.field},le=me?.resolved??Kn({anchor:j,head:j},B);if(!le)return!1;const we=sc(le,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(j,pe,"keyboard"),_(we.row,pe.field),!0},[F,A,_]),D=s.useCallback(()=>{const{range:O,resolved:P}=F();return!O||!P||Tt(P)<=1?!1:(A(O.anchor,O.anchor,"keyboard"),!0)},[F,A]),v=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]),V=s.useCallback(()=>{const{context:O}=k.current,{range:P,resolved:T}=F();if(!O)return null;if(T)return T;if(P)return null;const X=N.current;return!X||X.id===null||!Ye(X.field)?null:Kn({anchor:{id:X.id,field:X.field},head:{id:X.id,field:X.field}},O)},[F]),R=s.useCallback(()=>{const O=V();if(!O)return null;const{rangeColumns:P,forEachCell:T}=k.current,X=Tt(O);X>uc&&Dg(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 kg(B,ee,q?(me,j)=>{const le=Y(me),we=q.getSpanOrigin(le,j.field);return we!==null&&(we.rowId!==le||we.field!==j.field)}:void 0)},[V]),Q=s.useCallback(()=>{const{forEachCell:O}=k.current,{resolved:P}=F();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},[F]),G=s.useRef(null),W=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=gs(B.elementFromPoint(P,T),O);if(!ee)return null;const q=X.rowIds[ee.rowIndex];if(q===void 0)return null;const Y=Ye(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 ne=T.rowIds[q+B];return ne===void 0?null:{id:ne,field:P}},[]),oe=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"),ne=T.querySelector(":scope > .ogx__content > .ogx__sticky-bottom"),me=Y?.querySelector(":scope > .ogx__header-wrap"),j=Y?Y.getBoundingClientRect().bottom:B.top,le=Math.min(B.top+q,ne?ne.getBoundingClientRect().top:B.top+q),we=me?me.getBoundingClientRect().bottom:j,pe=B.left+X.pinnedSystemColumnsWidth+X.leftWidth,he=B.left+ee-X.rightWidth,Ce=ps(P.x,B.left+1,B.left+ee-2);let be=P.y;(be<B.top||be>B.top+q||be<we)&&(be=ps(be,j+1,Math.max(j+1,le-2)));const de=typeof T.ownerDocument.elementFromPoint=="function",Ee=H(T,Ce,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(fs),Er(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<j||P.y>le||P.x<B.left||P.x>B.left+ee;if(!P.moved&&!Me)return;let Ne=0,Ie=0;P.y<j+vt?Ne=-eo(j+vt-P.y):P.y>le-vt&&(Ne=eo(P.y-(le-vt))),P.x<pe+vt?Ie=-eo(pe+vt-P.x):P.x>he-vt&&(Ie=eo(P.x-(he-vt)));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(()=>oe.current(!0)))},[H,ie,A]);s.useLayoutEffect(()=>{oe.current=ue},[ue]);const se=s.useCallback((O,P,T,X,B,ee)=>{G.current?.stop();const q=ee?"pointermove":"mousemove",Y=ee?"pointerup":"mouseup",ne=de=>!ee||de.pointerId===ee.pointerId,me=de=>{const ye=G.current;if(!(!ye||!ne(de))){if(de.buttons===0){ye.stop();return}ye.x=de.clientX,ye.y=de.clientY,ye.moved&&(de.preventDefault(),Er(B)),ye.frame||(ye.frame=requestAnimationFrame(()=>ue(!0)))}},j=de=>{const ye=G.current;if(!ye||!ne(de))return;ye.x=de.clientX,ye.y=de.clientY,ue(!1);const Ee=ye.moved;ye.stop(!1,de.altKey),Ee&&Er(B),Ee&&(W.current=!0,setTimeout(()=>{W.current=!1},0))},le=de=>{ne(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 Ce=!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,j,!0),ee&&(B.removeEventListener("pointercancel",le,!0),B.removeEventListener("keydown",we,!0)),pe?.removeEventListener("blur",he),k.current.containerRef.current?.classList.remove(fs),G.current===be&&(G.current=null),Ce||(Ce=!0,ee&&ee.onEnd({cancelled:de,altKey:ye}))}};G.current=be,B.addEventListener(q,me,!0),B.addEventListener(Y,j,!0),ee&&(B.addEventListener("pointercancel",le,!0),B.addEventListener("keydown",we,!0)),pe?.addEventListener("blur",he)},[ue]),U=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;se(T,T,X,B,P.ownerDocument,{pointerId:ee,onTrack:q,onEnd:Y})},[se]),te=s.useCallback(O=>{if(O.button!==0||O.defaultPrevented)return;const{context:P}=k.current;if(!P)return;const T=O.currentTarget,X=gs(O.target,T);if(!X||!Ye(X.field)||O.target.closest?.(".ogx__cell-fill-handle")||X.element.classList.contains("ogx__cell--editing")||Pi(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],ne=N.current;Y&&P.rowIndexById.has(Y.anchor.id)&&P.colIndexByField.has(Y.anchor.field)?q=Y.anchor:ne&&ne.id!==null&&Ye(ne.field)&&(q={id:ne.id,field:ne.field}),O.preventDefault(),W.current=!0;const me=T.ownerDocument;T.contains(me.activeElement)||T.focus({preventScroll:!0})}if(A(q,ee,"pointer"),se(q,ee,O.clientX,O.clientY,T.ownerDocument),O.shiftKey){const Y=G.current;Y&&!wt(q,ee)&&(Y.moved=!0)}},[S,A,se]),ce=s.useCallback(O=>{W.current&&(W.current=!1,O.stopPropagation(),O.preventDefault())},[]),z=f?f.right-f.left+1:0,re=f?f.bottom-f.top+1:0,K=u?.cellSelectionAnnouncement??dc,J=m?K(re*z,re,z):"",[ae,fe]=s.useState("");s.useEffect(()=>{if(!t)return;const O=setTimeout(()=>fe(J),Og);return()=>clearTimeout(O)},[t,J]);const Z=s.useMemo(()=>{if(!g||!f||!m)return null;const O=[];C(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,m,C]),$=s.useMemo(()=>t?{extendSelection:L,collapseSelection:D,selectAllCells:v}:void 0,[t,L,D,v]);return{enabled:t,range:h,resolved:f,displayRange:x,hasRowSpan:d.hasRowSpan,handleMouseDown:t?te:void 0,handleClickCapture:t?ce:void 0,extendSelection:L,collapseSelection:D,selectAllCells:v,keyboard:$,getCopyText:R,getSelectedCells:Q,announcement:t?ae:"",stats:Z,reportFocus:M,setModel:I,getCurrentRange:F,startTrackedDrag:U}}function Gg(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,h=l.range?.anchor??null,w=l.resolved?.anchorRow;s.useLayoutEffect(()=>{l.reportFocus(a);const y=!wt(o.current,h),p=!qo(r.current,a);if(o.current=h,r.current=a,!!l.enabled){if(l.range&&!l.resolved){i.current!==d&&(i.current=d,l.setModel([],"dataChange"));return}if(y&&h){(!a||a.id!==h.id||a.field!==h.field)&&u({id:h.id,field:h.field,rowIndex:w});return}if(p&&a&&a.id!==null&&Ye(a.field)&&!wt(h,{id:a.id,field:a.field})){const f={id:a.id,field:a.field},m=g.current?.classList.contains("ogx--kb")??!1;l.setModel([{anchor:f,head:f}],m?"keyboard":"pointer")}}},[l,d,h,w,a,u,g]),s.useLayoutEffect(()=>{const y=t.current,p=()=>n.current;y.getCellSelectionModel=()=>{const{selection:f,getPendingModel:m,model:x}=p();return f.enabled?m()??x:[]},y.setCellSelectionModel=f=>{p().selection.setModel(f,"api")},y.selectCellRange=(f,m)=>{p().selection.setModel([{anchor:f,head:m}],"api")},y.clearCellSelection=()=>{p().selection.setModel([],"clear")},y.getSelectedCells=()=>p().selection.getSelectedCells(),y.copySelectedCells=async()=>{const{selection:f}=p();if(!f.enabled)return;const m=f.getCopyText();m!==null&&await kr(m)}},[t])}function hs({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 Hg({stats:e,apiRef:t,slot:n,slotProps:o}){const r=n??hs;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 Bg(e){return s.useCallback(t=>{e.current?.classList.toggle("ogx--kb",t)},[e])}function Wg(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 Vg({paginationSlot:e,paginationSlotProps:t,page:n,paginationModel:o,rowCount:r,pageSizeOptions:i,onPaginationModelChange:l,localeText:d}){const a=e||wr;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:Ui(d),...t})}function zg({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: ${cl(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 Kg(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 jg(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:h,pageSize:w}=d;return s.useMemo(()=>Kg({headerRowCount:1+fl(t)+(n?1:0),pinnedTopCount:o,pinnedBottomCount:r,pageRowCount:i?u:g,totalCenterRowCount:i&&l==="server"?Math.max(a,u):g,pageOffset:i?h*w:0}),[t,n,o,r,i,u,g,l,a,h,w])}function Ug(e){const{toolbar:t,toolbarSlotProps:n,apiRef:o,orderedColumns:r,baseColumns:i,aggregationModel:l,onAggregationModelChange:d,pivotMode:a,pivotModelProp:u,onPivotModelChangeProp:g,pivotModel:h,onPivotModelChange:w,filterModel:y,onFilterModelChange:p,columnVisibilityModel:f,onColumnVisibilityModelChange:m,disableColumnReorder:x,columnGroupingModel:b,moveColumn:C,resetColumnOrder:E,forceColumnsOpen:k,onColumnsPanelClose:N,aiAssistantEnabled:M=!1,aiAssistantOpen:S=!1,onAiAssistantToggle:F,aiAssistantLabel:I,forceFiltersOpen:A,onFiltersPanelClose:_}=e;return s.useMemo(()=>t?{apiRef:o,columns:r,baseColumns:i,aggregationModel:l,onAggregationModelChange:d,...a||u||g?{pivotModel:h,onPivotModelChange:w}:{},filterModel:y,onFilterModelChange:p,columnVisibilityModel:f,onColumnVisibilityModelChange:m,onColumnReorder:x?void 0:(D,v)=>{ir(b,D,v)&&C(D,v)},onColumnOrderReset:x?void 0:E,forceColumnsOpen:k,onColumnsPanelClose:N,...M&&F?{onAiAssistantToggle:F,aiAssistantOpen:S,...I?{aiAssistantLabel:I}:{}}:{},forceFiltersOpen:A,onFiltersPanelClose:_,...n}:null,[t,x,C,E,r,o,i,l,d,a,u,g,h,w,y,p,f,m,k,N,n,b,M,S,F,I,A,_])}const Rg=Symbol.for("opengridx.ai.validated");function qg(e){return typeof e=="object"&&e!==null&&e[Rg]===!0}const to=["filter","sort","grouping","aggregation","pivot","columnVisibility"],Mr={filter:"filterModel",sort:"sortModel",grouping:"rowGroupingModel",aggregation:"aggregationModel",pivot:"pivotModel",columnVisibility:"columnVisibilityModel"};function ms(e){return to.map(t=>Mr[t]).filter(t=>e[t]!==void 0)}function Xg(e,t){const n={},o=[];for(const r of to){const i=Mr[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 Yg(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 Jg(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 Zg(e,t){const n=new Set(t.map(r=>Jg(typeof r.path=="string"?r.path:""))),o={};for(const r of ms(e))n.has(r)&&Yg(e,r)||Object.assign(o,{[r]:e[r]});return o}function Qg(e,t){const n={};for(const o of ms(e))Object.assign(n,{[o]:t[o]});return n}function ws(e,t){const n={};for(const o of to.map(r=>Mr[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 Nr(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 bs(e){return Array.isArray(e)?e.map(bs).join(", "):e instanceof Date?e.toISOString().slice(0,10):e==null?"":String(e)}function xs(e,t){return"items"in e?`(${e.items.map(n=>xs(n,t)).join(` ${e.logicOperator} `)})`:[t(e.field),e.operator,bs(e.value)].filter(Boolean).join(" ")}const ep={sum:"Sum",avg:"Average",count:"Count",min:"Min",max:"Max",unique:"Unique"};function ys(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((h,w)=>n.push({id:`filter:${w}`,part:"filter",label:xs(h,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 h=l[g];n.push({id:`aggregation:${g}`,part:"aggregation",label:`${ep[h]??h}: ${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 tp(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 np="Ask about this table…",op=[],no=[],Cs="The reply was not validated";function rp(){return typeof window<"u"&&("SpeechRecognition"in window||"webkitSpeechRecognition"in window)}function ip(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function lp(e){return e instanceof Error&&e.message?e.message:"Unknown error"}function sp(e,t){const n=e===0?"No changes":`Applied ${e} ${e===1?"change":"changes"}`;return t>0?`${n}, ${t} ignored`:n}function vs(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 ap(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(""),[h,w]=s.useState(null),[y,p]=s.useState(no),[f,m]=s.useState(null),[x,b]=s.useState([]),C=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 W=new Map(o.map(H=>[H.field,H.headerName||H.field]));return H=>W.get(H)??H},[o]),M=s.useMemo(()=>f?ys(f.state,N):[],[f,N]),S=s.useCallback(()=>{const W=C.current;C.current=null,W&&W.abort()},[]);s.useEffect(()=>S,[S]);const F=s.useCallback(W=>{if(!k.current.params.options)return;const H=typeof document>"u"?null:document.activeElement;E.current=W??(H instanceof HTMLElement?H:null),l(!0)},[]),I=s.useCallback(()=>{C.current&&(S(),a("stopped"),g("Stopped")),l(!1);const W=E.current;E.current=null,W&&W.isConnected&&W.focus()},[S]),A=s.useCallback(W=>{k.current.open?I():F(W)},[F,I]),_=s.useCallback((W,H)=>{a("error"),g(W),w(null),p(no),vs(k.current.params.onError,H,"onAiAssistantError")},[]),L=s.useCallback((W,H)=>{const{params:ie}=k.current;if(!(typeof H=="object"&&H!==null)||!qg(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."),_(Cs,new Error(Cs));return}const ue=Xg(H.state,ie.options?.parts??to),se=[...Array.isArray(H.errors)?H.errors:[],...ue.errors],U=Zg(ue.state,se),te=t.current,ce=Qg(U,te.getGridAiState());Nr(te,ws(U,ce)),m({state:U,previous:ce}),p(se),w(typeof H.message=="string"&&H.message?H.message:null),b(z=>[...z,{prompt:W,applied:U}]),a("applied"),g(sp(ys(U,z=>z).length,se.length)),vs(ie.onApply,H,"onAiAssistantApply")},[t,_]),D=s.useCallback(W=>{const H=W.trim(),{params:ie,history:oe}=k.current,ue=ie.options?.onPrompt;if(!H||!ue)return;S();const se=new AbortController;C.current=se,a("running"),g("Thinking…"),w(null),p(no);const U={currentState:t.current.getGridAiState(),history:oe,signal:se.signal},te=We(()=>ue(H,U));(te.ok?Promise.resolve(te.value):Promise.reject(te.error)).then(z=>{C.current===se&&(C.current=null,L(H,z))},z=>{if(C.current===se){if(C.current=null,se.signal.aborted||ip(z)){a("stopped"),g("Stopped");return}_(`The assistant could not answer: ${lp(z)}`,z)}})},[t,S,L,_]),v=s.useCallback(()=>{C.current&&(S(),a("stopped"),g("Stopped"))},[S]),V=s.useCallback(()=>{const W=k.current.applied;W&&(Nr(t.current,W.previous),m(null),p(no),w(null),a("idle"),g("Undone"))},[t]),R=s.useCallback(W=>{const H=k.current.applied;if(!H)return;const ie=tp(H.state,W);Nr(t.current,ws(ie,H.previous)),m({state:ie,previous:H.previous}),g("Change removed")},[t]);s.useLayoutEffect(()=>{const W=t.current;W.openAiAssistant=()=>F(),W.closeAiAssistant=()=>{k.current.open&&I()}},[t,F,I]);const Q=r&&i,G=s.useMemo(()=>!Q||!n?null:{status:d,statusText:u,message:h,errors:y,chips:M,history:x,suggestions:n.suggestions??op,placeholder:n.placeholder??np,voiceAvailable:n.voice!==!1&&rp(),canUndo:f!==null,submit:D,stop:v,undo:V,removeChip:R,close:I},[Q,n,d,u,h,y,M,x,f,D,v,V,R,I]);return{enabled:r,open:Q,openPanel:F,togglePanel:A,closePanel:I,panelProps:G,announcement:r?u:""}}function cp(){if(typeof window>"u")return null;const e=window;return e.SpeechRecognition??e.webkitSpeechRecognition??null}function dp(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=cp();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=h=>{const w=h.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 _s(){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 up(){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 fp(e){const{status:t,statusText:n,message:o,errors:r,chips:i,history:l,suggestions:d,placeholder:a,voiceAvailable:u,canUndo:g,submit:h,stop:w,undo:y,removeChip:p,close:f}=e,[m,x]=s.useState(""),b=s.useRef(null),C=dp(x),E=t==="running";s.useEffect(()=>{b.current&&b.current.focus()},[]);const k=S=>{x(S),h(S)},N=S=>()=>{S(),b.current&&b.current.focus()},M=S=>{S.preventDefault(),E||h(m)};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(_s,{}),"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:m,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${C.listening?" ogx-ai-panel__mic--on":""}`,"aria-label":C.listening?"Stop dictation":"Dictate a prompt","aria-pressed":C.listening,onClick:C.toggle,children:c.jsx(up,{})}),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:m.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,F)=>c.jsx("li",{children:S.path?`Ignored: ${S.message}`:S.message},`${S.path}:${F}`))}),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,F)=>c.jsx("li",{children:c.jsx("button",{type:"button",className:"ogx-ai-panel__history-item",onClick:()=>x(S.prompt),children:S.prompt})},`${F}:${S.prompt}`))})]})]})}function gp({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(fp,{...e})})}function pp(e){const{rows:t,columns:n,getRowId:o,rowHeight:r,headerHeight:i,wrapHeaderText:l=!1,headerFilters:d=!1,headerFilterHeight:a=Hd,autoHeight:u=!1,density:g,checkboxSelection:h=!1,disableRowSelectionOnClick:w=!1,disableMultipleRowSelection:y=!1,disableClipboardCopy:p=!1,cellSelection:f=!1,cellSelectionModel:m,onCellSelectionModelChange:x,showCellSelectionStats:b=!1,disableClipboardPaste:C=!1,disableRangeClear:E=!1,onClipboardPaste:k,onBeforeClipboardPaste:N,undoRedo:M=!1,disableFillHandle:S=!1,onFill:F,onHistoryChange:I,rowSelectionModel:A,onRowSelectionModelChange:_,onRowClick:L,onRowDoubleClick:D,onCellClick:v,filterModel:V,onFilterModelChange:R,sortModel:Q,onSortModelChange:G,pagination:W=!1,paginationModel:H,onPaginationModelChange:ie,pageSizeOptions:oe=[10,25,50,100],pinnedColumns:ue,onPinnedColumnsChange:se,pinnedRows:U,getDetailPanelContent:te,getDetailPanelHeight:ce,detailPanelExpandedRowIds:z,onDetailPanelExpandedRowIdsChange:re,pinCheckboxColumn:K=!0,pinExpandColumn:J=!0,disableColumnReorder:ae=!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:ne,onRowGroupingModelChange:me,aggregationModel:j,onAggregationModelChange:le,getAggregationPosition:we,isCellEditable:pe,processRowUpdate:he,onProcessRowUpdateError:Ce,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:ve,className:ke="",style:xe,onRowsScrollEnd:je,ariaLabel:nt,initialState:nn,onStateChange:Mn,columnVisibilityModel:ot,onColumnVisibilityModelChange:lo,listView:so=!1,listViewColumn:Nn,columnGroupingModel:In,noRowsLabel:Ph="No Data",localeText:Ln,apiRef:Th,overscanRowCount:Fh=3,aiAssistant:Oh,onAiAssistantApply:Dh,onAiAssistantError:$h}=e,Ar=fg(n),Pr=Ln?.noRowsLabel??Ph,$t=xc({initialState:nn,sortModel:Q,onSortModelChange:G,filterModel:V,onFilterModelChange:R,aggregationModel:j,onAggregationModelChange:le,rowGroupingModel:ne,onRowGroupingModelChange:me,columnVisibilityModel:ot,onColumnVisibilityModelChange:lo,pinnedColumns:ue,onPinnedColumnsChange:se,pivotModel:ge,onPivotModelChange:ve,paginationModel:H,onPaginationModelChange:ie,pageSizeOptions:oe,rowSelectionModel:A,onRowSelectionModelChange:_,density:g,cellSelectionModel:m,onCellSelectionModelChange:x}),{sortModel:ut,handleSortModelChange:Zs,filterModel:ft,handleFilterModelChange:Tr,aggregationModel:Ue,handleAggregationModelChange:Qs,columnVisibilityModel:_t,handleColumnVisibilityModelChange:ao,pinnedColumns:Fr,handlePinnedColumnsChange:Gh,currentPivotModel:Or,handlePivotModelChange:ea,effectivePaginationModel:Re,handlePaginationModelChange:on,selectedRowIds:Hh,handleRowSelectionModelChange:Dr,density:ta,rowGroupingModel:$r,handleRowGroupingModelChange:Bh}=$t,An=Af({rows:t,columns:Ar,pivotMode:Oe,pivotModel:Or,filterModel:ft,sortModel:ut,hasDataSource:!!be,hierarchyRequested:B||$r.length>0}),St=An.isActive,co=d&&!St,{rowReordering:Gt,hierarchyRowGroupingModel:Wh,isTreeDataRequested:Vh,isTreeData:uo,isRowGrouping:rn,isHierarchyEnabled:fo,hasGroupingColumn:zh,pagination:rt,listView:ln}=hc({rowGroupingModel:$r,treeData:B,hasTreeDataPath:!!ee,isPivotActive:St,rowReordering:P,hasGroupingColDef:!!Y,pagination:W,paginationMode:Me,listView:so,hasListViewColumn:!!Nn}),{rowHeight:it,headerHeight:Gr}=Sc({rowHeight:r,headerHeight:i,density:ta}),Kh=An.rows,jh=An.columns,{activeColumns:gt,effectivePinnedColumns:sn}=ig({baseColumns:jh,pinnedColumns:Fr,hasGroupingColumn:zh,groupingColDef:Y,isTreeData:uo,getTreeDataPath:ee}),Hr=dd(gt,_t),[Uh,Rh]=Nf(Ue),qe=s.useRef(null),Ht=s.useRef(null),na=!St&&o||lg,Br=Bg(qe),go=iu({rows:Kh,getRowId:na,columns:gt,rowHeight:it,headerHeight:Gr,columnVisibilityModel:_t,initialState:e.initialState,syncRows:!be}),{state:Fe,apiRef:lt,setRows:qh,replaceRows:Xh,setColumns:Yh,setDimensions:Jh,setDataSourceLoading:Zh,setDataSourceError:Qh,setRowCount:em}=go,{getRowIdOf:Pe,getRowIdOfInEvents:tm}=sg(Fe.rows.idByRow);ag(Th,lt);const nm=Fe.dataSource.loading,kt=X||nm,po=s.useMemo(()=>Fe.rows.allRows.map(ht=>Fe.rows.idRowsLookup.get(ht)),[Fe.rows]),{treeDataHandlers:ho,rowGroupingHandlers:Wr,activeHierarchyHandlers:an,rowMetaMap:Ve}=vu({rows:po,getRowId:Pe,getTreeDataPath:ee,isTreeDataRequested:Vh,isTreeData:uo,columns:gt,rowGroupingModel:Wh,isRowGrouping:rn,aggregationModel:Ue,defaultGroupingExpansionDepth:q,filterModel:ft,sortModel:ut,getAggregationPosition:we,columnLookup:Hr,filterMode:Ee,sortingMode:ye}),Vr=ju(),mo=Su({rowsLookup:Fe.rows.idRowsLookup,columns:gt,processRowUpdate:he,onProcessRowUpdateError:Ce,replaceRows:Xh,onCommitted:Vr.emit}),Pn=_u({rows:po,getRowId:Pe,columns:gt,processRowUpdate:he,onProcessRowUpdateError:Ce,onRowChange:(ht,Am)=>{mo.storeRow(Am,ht)},onCommitted:ht=>Vr.emit(ht,"edit")}),Tn=ld({selectedRowIds:Hh,rowsLookup:Fe.rows.idRowsLookup,rowMetaMap:Ve,enabled:!be&&!St&&Me==="client"&&Ee==="client",onSelectionModelChange:Dr}),oa=kf({dataSource:be,sortModel:ut,filterModel:ft,paginationModel:Re,paginationMode:Me,sortingMode:ye,filterMode:Ee,aggregationModel:Ue,rowGroupingActive:rn,getRowId:na,setRows:qh,setRowCount:em,setDataSourceLoading:Zh,setDataSourceError:Qh,onAggregationResults:Rh,onPaginationModelChange:on});Mf({enabled:uo&&!!be,treeNodes:ho.treeNodes,isGroupExpanded:ho.isGroupExpanded,getNodePath:ho.getNodePath,toggleExpansion:ho.toggleExpansion,fetchChildren:oa.fetchChildren});const{hasDetailPanel:Bt,expandedRowIds:zr,handleDetailPanelToggle:ra,detailPanelHeights:om,reportDetailPanelHeight:rm}=Rc({hasDetailPanel:!!te,controlledExpandedRowIds:z,onDetailPanelExpandedRowIdsChange:re,rowMetaMap:Ve}),{effectiveColumns:ia,hierarchyField:Kr,orderedColumns:jr,visibleOrderedColumns:la,renderOrderedColumns:im,navigationColumns:cn,columnIndexMap:wo,columnWidths:Fn,effectiveColumnOrder:lm,columnReorderHandlers:sm,moveColumn:sa,resetColumnOrder:aa,handleColumnResize:ca}=Gc({activeColumns:gt,isHierarchyEnabled:fo,isRowGrouping:rn,isTreeData:uo,activeHierarchyHandlers:an,columnVisibilityModel:_t,columnOrder:fe,onColumnOrderChange:Z,onColumnOrderModelChange:$,disableColumnReorder:ae,pivotMode:St,checkboxSelection:h,hasDetailPanel:Bt,rowReordering:Gt,initialState:nn,setColumns:Yh,pinnedColumns:sn,getRowId:tm,aggregationModel:Ue,groupingRows:rn?Wr.groupingRows:void 0});Yc({onStateChange:Mn,sortModel:ut,filterModel:ft,effectivePaginationModel:Re,columnWidths:Fn,effectiveColumnOrder:lm,columnVisibilityModel:_t,pinnedColumns:Fr,density:ta});const bo=Ec({effectiveRows:po,activeHierarchyHandlers:an,filterMode:Ee,filterModel:An.pipelineFilterModel,sortModel:An.pipelineSortModel,sortingMode:ye,pagination:rt,paginationMode:Me,effectivePaginationModel:Re,pinnedRows:U,getRowId:Pe,columnLookup:Hr,hierarchyField:Kr}),{filteredRows:da,dataRows:dn,pinnedTopRows:ze,pinnedBottomRows:st,sortedUnpinnedRows:pt,paginatedUnpinnedRows:xo,allRenderableRows:Et}=bo,Ur=rt?xo:pt;ud({paginationModel:Re,currentPage:bo.currentPage,enabled:rt&&!kt&&pt.length>0,onPaginationModelChange:on});const yo=kc({paginationMode:Me,hasDataSource:!!be,dataSourceRowCount:Fe.pagination.rowCount,rowCountProp:Ne,clientRowCount:pt.length}),{rowSelection:Rr,handleRowClick:qr,handleSelectionChange:Xr}=id({dataRows:dn,getRowId:Pe,isPivotActive:St,selectedRowIds:Tn,onSelectionModelChange:Dr,disableMultipleRowSelection:y,disableRowSelectionOnClick:w,isHierarchyEnabled:fo,rowMetaMap:Ve,activeHierarchyHandlers:an,onRowClick:L});cd({apiRef:go.apiRef,sortModel:ut,multiSort:de,onSortModelChange:Zs,filterModel:ft,onFilterModelChange:Tr,paginationModel:Re,onPaginationModelChange:on,selectedRowIds:Tn,getPendingRowSelectionModel:$t.getPendingRowSelectionModel,onRowSelectionModelChange:Dr,disableMultipleRowSelection:y,isSyntheticRowId:ht=>Xe(ht,Ve),getVisibleRows:()=>[...ze,...Ur,...st],getAllFilteredRows:()=>cg({hierarchyHandlers:an,pinnedTopRows:ze,sortedUnpinnedRows:pt,pinnedBottomRows:st,rowMetaMap:Ve,getRowId:Pe,hierarchyField:Kr,dataRows:dn}),visibleColumns:im,rowGroupingModel:$r,onRowGroupingModelChange:Bh,aggregationModel:Ue,onAggregationModelChange:Qs,columnVisibilityModel:_t,onColumnVisibilityModelChange:ao,pivotModel:Or,onPivotModelChange:ea});const am=lu({rows:po,getRowId:Pe,onRowOrderChange:T,rowReordering:Gt}),{aggregationResult:Yr,isLoading:cm}=ts({rows:dn,columns:gt,aggregationModel:St?Pa:Ue,isServerSide:sl({dataSource:be,paginationMode:Me,sortingMode:ye,filterMode:Ee}),dataSource:be,filterModel:ft,sortModel:ut,serverAggregationResults:Uh}),Jr=Object.keys(Ue).length>0&&!St;pg({apiRef:lt,hasAggregation:Jr,aggregationResult:Yr,aggregationModel:Ue,isRowGrouping:rn,rowGroupingHandlers:Wr,rowMetaMap:Ve,columns:gt,getRowId:Pe,hierarchyField:Kr});const De=La({rowHeight:it,pagination:rt,paginatedUnpinnedRows:xo,sortedUnpinnedRows:pt,expandedRowIds:zr,getDetailPanelHeight:ce,detailPanelHeights:om,pinnedTopRowsLength:ze.length,pinnedBottomRowsLength:st.length,pinnedTopRows:ze,pinnedBottomRows:st,visibleOrderedColumns:la,pinnedColumns:sn,columnWidths:Fn,viewportWidth:Fe.dimensions.viewportWidth||1e3,checkboxSelection:h,hasDetailPanel:Bt,rowReordering:Gt,pinCheckboxColumn:K,pinExpandColumn:J,paginationMode:Me,isLoading:Fe.dataSource.loading,pageSize:Re.pageSize,getRowId:Pe}),Mt=bf({pinnedTopRows:ze,centerRows:Ur,pinnedBottomRows:st,columns:la,leftPinnedColumns:De.leftPinnedCols,unpinnedColumns:De.unpinnedColsWithWidth,rightPinnedColumns:De.rightPinnedCols,expandedRowIds:Bt?zr:void 0,rowMetaMap:Ve,getRowId:Pe}),ua=s.useMemo(()=>[...De.leftPinnedCols,...De.unpinnedColsWithWidth,...De.rightPinnedCols],[De.leftPinnedCols,De.unpinnedColsWithWidth,De.rightPinnedCols]),Ge=$g({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:qe,localeText:Ln,showStats:b});Ng({apiRef:lt,columns:ua,getRowId:Pe,containerRef:qe,disableKeyboardShortcut:p,getCellRangeCopyText:Ge.enabled?Ge.getCopyText:void 0}),Ig({apiRef:lt,viewportRef:Ht,layout:De,rowHeight:it});const dm=Tg({apiRef:lt,containerRef:qe,columns:jr,onColumnResize:ca}),{scrollTop:um,scrollLeft:fm,overscanRows:gm,handleScroll:pm,setViewportElement:hm}=jc({onRowsScrollEnd:je,overscanRowCount:Fh,rowCount:De.unpinnedRowsLength,autoHeight:u,setDimensions:Jh,viewportRef:Ht}),fa=Lc(qe),He=Ac({layout:De,scrollTop:um,scrollLeft:fm,viewportWidth:Fe.dimensions.viewportWidth,viewportHeight:Fe.dimensions.viewportHeight,autoHeight:u,rowReordering:Gt,hasDetailPanel:Bt,checkboxSelection:h,pinCheckboxColumn:K,pinExpandColumn:J,overscanRows:gm,maxContentHeight:fa??1/0}),{handleSort:ga,handleSortAdd:pa}=sd({sortModel:ut,onSortModelChange:Zs}),Co=h||!w,{focusedCell:vo,setFocusedCell:Zr,viewportTabIndex:mm,ensureGridFocus:wm,handleFocus:bm,handleBlur:xm,handleKeyDown:ym,handleMouseDownCapture:Cm}=pc({allRenderableRows:Et,navigationColumns:cn,checkboxSelection:h,selectedRowIds:Tn,handleSelectionChange:Xr,handleDetailPanelToggle:ra,editingHandlers:Pn,setKeyboardMode:Br,sortModel:ut,handleSort:ga,handleSortAdd:pa,multiSort:de,isCellEditable:pe,pagination:rt,pageSize:Re.pageSize,virtualization:He,viewportRef:Ht,pinnedTopRowCount:ze.length,getRowId:Pe,rowMetaMap:Ve,getSpanOrigin:Mt.getSpanOrigin,onRowActivate:qr,toggleRowExpansion:an?.toggleExpansion,handleSelectAll:Rr.selectAll,rowSelectionEnabled:Co,multipleRowSelectionEnabled:!y,pinCheckboxColumn:K,pinExpandColumn:J,rowHeight:it,cellSelection:Ge.keyboard,headerFilters:co}),{handleCellClick:vm,handleHeaderClick:_m}=Wg({ensureGridFocus:wm,setKeyboardMode:Br,setFocusedCell:Zr,getRowId:Pe,onCellClick:v});Gg({apiRef:lt,selection:Ge,model:$t.cellSelectionModel,getPendingModel:$t.getPendingCellSelectionModel,focusedCell:vo,setFocusedCell:Zr,containerRef:qe}),zu({apiRef:lt,containerRef:qe,viewportRef:Ht,selection:Ge,disableClipboardPaste:C,disableRangeClear:E,focusedCell:vo,allRenderableRows:Et,getRowId:Pe,navigationColumns:cn,isCellEditable:pe,rowMetaMap:Ve,getSpanOrigin:Mt.getSpanOrigin,isEditing:Pn.editingCell!==null,batchEdit:mo,onClipboardPaste:k,onBeforeClipboardPaste:N}),Ru({apiRef:lt,enabled:!!M,limit:typeof M=="object"&&M.limit||Ku,onHistoryChange:I,channel:Vr,batchEdit:mo,isEditing:Pn.editingCell!==null,containerRef:qe,viewportRef:Ht,selection:Ge,setFocusedCell:Zr,allRenderableRows:Et,getRowId:Pe,navigationColumns:cn,layout:De,rowHeight:it,pinnedTopRowCount:ze.length});const Sm=pf({containerRef:qe,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:F}),{handleHideColumn:km,handlePinColumn:Em}=ad({columnVisibilityModel:_t,onColumnVisibilityModelChange:ao,pinnedColumns:Fr,onPinnedColumnsChange:Gh}),On=jg({columnGroupingModel:In,headerFilterRow:co,pinnedTopCount:ze.length,pinnedBottomCount:st.length,pagination:rt,paginationMode:Me,paginationModel:Re,paginationRowCount:yo,paginatedUnpinnedRowCount:xo.length,sortedUnpinnedRowCount:pt.length}),Qr=yf({spanning:Mt,renderContext:He.renderContext,offsetTop:He.offsetTop,cumulativeHeights:De.cumulativeHeights}),ei=Bc({renderContext:Qr.renderContext,pinnedTopRows:ze,pinnedBottomRows:st,paginatedUnpinnedRows:xo,sortedUnpinnedRows:pt,pagination:rt,getRowId:Pe}),_o=Cf({spanning:Mt,firstColumnIndex:He.renderContext.firstColumnIndex,lastColumnIndex:He.renderContext.lastColumnIndex,virtualColumns:He.virtualColumns,layout:De,rows:ei});ed({paginationRequested:W,isRowGrouping:rn,autoHeight:u,viewportHeight:Fe.dimensions.viewportHeight,renderedRowCount:ei.length,totalRowCount:ze.length+Ur.length+st.length,pinnedRowsIgnored:fo&&!!(U?.top?.length||U?.bottom?.length),scrollHeight:He.totalHeight,maxContentHeight:fa,reachableRowCount:Ic(He.cumulativeHeights,He.virtualContainerHeight),unpinnedRowCount:He.cumulativeHeights.length,listViewWithoutColumn:so&&!Nn,listViewRowCount:ln&&Nn?Et.length:0});const{allSelected:Mm,someSelected:Nm}=Rr,un=vf(In,sm),Im=s.useMemo(()=>ia.some(ht=>!!ht.rowSpan),[ia]),at=fd();nd(qe);const fn=ap({apiRef:lt,options:Oh,columns:gt,onApply:Dh,onError:$h}),ha=Ie?.noRowsOverlay,ma=Ie?.loadingOverlay,ti=ma?c.jsx(ma,{...Se?.loadingOverlay}):void 0,wa=ha?c.jsx(ha,{...Se?.noRowsOverlay}):void 0,So=Ie?.footer,Lm=kt&&Et.length>0&&Me!=="infinite",ba=Ie?.toolbar,xa=Ug({toolbar:Ie?.toolbar,toolbarSlotProps:Se?.toolbar,apiRef:lt,orderedColumns:jr,baseColumns:Ar,aggregationModel:Ue,onAggregationModelChange:Qs,pivotMode:Oe,pivotModelProp:ge,onPivotModelChangeProp:ve,pivotModel:Or,onPivotModelChange:ea,filterModel:ft,onFilterModelChange:Tr,columnVisibilityModel:_t,onColumnVisibilityModelChange:ao,disableColumnReorder:ae,columnGroupingModel:In,moveColumn:sa,resetColumnOrder:aa,forceColumnsOpen:at.toolbarPanelRequested,onColumnsPanelClose:at.closeToolbarPanel,aiAssistantEnabled:fn.enabled,aiAssistantOpen:fn.open,onAiAssistantToggle:fn.togglePanel,aiAssistantLabel:Ln?.aiAssistantButton,forceFiltersOpen:at.toolbarFiltersRequested,onFiltersPanelClose:at.closeToolbarFiltersPanel}),ni={rowReordering:Gt,columnIndexMap:wo,editingHandlers:Pn,isCellEditable:pe,selectedRowIds:Tn,checkboxSelection:h,onRowClick:qr,onRowDoubleClick:D,onCellClick:vm,onSelectionChange:Xr,columnWidths:Fn,pinnedColumns:sn,hasDetailPanel:Bt,expandedRowIds:zr,getDetailPanelContent:te,getDetailPanelHeight:ce,onDetailPanelToggle:ra,onDetailPanelHeightChange:rm,pinCheckboxColumn:K,pinExpandColumn:J,focusedCell:vo,colspanMap:Mt.colspanMap,rowSpanningCaches:Mt.rowSpanningCaches,rowHeight:it,rowMetaMap:Ve,cellRange:Ge.displayRange,cellRangeHasRowSpan:Ge.hasRowSpan,fillHandle:Sm.handle};return c.jsxs("div",{ref:qe,className:["ogx",ke,u&&"ogx--auto-height",!u&&O===void 0&&xe?.height===void 0&&"ogx--fill",Im&&"ogx--row-spanning",ln&&"ogx--list-view"].filter(Boolean).join(" "),style:{...xe,height:O??xe?.height,"--ogx-row-height":`${it}px`,"--ogx-header-height":`${Gr}px`,...co?{"--ogx-header-filter-height":`${a}px`}:void 0},"aria-busy":kt,children:[ba&&xa&&c.jsx(il.Provider,{value:at.toolbarHost,children:c.jsx(hd,{component:ba,toolbarProps:xa})}),fn.panelProps&&c.jsx(gp,{panelProps:fn.panelProps,slot:Ie?.aiAssistantPanel,slotProps:Se?.aiAssistantPanel}),c.jsx(rg,{isOpen:at.standalonePanelOpen,containerRef:qe,panelRef:at.standalonePanelRef,columns:jr,columnVisibilityModel:_t,disableColumnReorder:ae,onClose:at.closeStandalonePanel,onColumnVisibilityChange:ao,onColumnMove:sa,onColumnOrderReset:aa,columnGroupingModel:In}),ln&&Nn&&c.jsx(Of,{ariaLabel:nt,allRenderableRows:Et,dataRowCount:dn.length,pinnedTopRowCount:ze.length,pinnedBottomRowCount:st.length,unpinnedRowCount:pt.length,pagination:rt,effectivePaginationModel:Re,currentPage:bo.currentPage,pageSizeOptions:oe,selectedRowIds:Tn,listViewColumn:Nn,columnsByField:Hr.byField,rowMetaMap:Ve,noRowsLabel:Pr,rowHeight:it,checkboxSelection:h,paginationMode:Me,serverRowCount:yo,paginationSlot:Ie?.pagination,paginationSlotProps:Se?.pagination,localeText:Ui(Ln),onRowClick:qr,onRowDoubleClick:D,onSelectionChange:Xr,onPaginationModelChange:on,onRowsScrollEnd:je,getRowId:Pe,multiselectable:Co&&!y,selectable:Co,onToggleExpansion:an?.toggleExpansion,loading:kt,loadingOverlay:ti,noRowsOverlay:wa,showPaginationControls:!So}),!ln&&c.jsx("div",{ref:hm,className:"ogx__viewport",onScroll:pm,role:"grid","aria-label":nt||"Data grid","aria-rowcount":On.rowCount,"aria-colcount":cn.length,"aria-multiselectable":Co&&!y||Ge.enabled,"aria-busy":kt,tabIndex:mm,onKeyDownCapture:()=>{Br(!0)},onMouseDownCapture:Cm,onMouseDown:Ge.handleMouseDown,onClickCapture:Ge.handleClickCapture,onKeyDown:ym,onFocus:bm,onBlur:xm,children:c.jsxs("div",{className:"ogx__content",style:{width:sn?.right?.length?`max(100%, ${He.totalWidth}px)`:He.totalWidth},role:"presentation",children:[c.jsxs("div",{className:"ogx__sticky-top",role:"presentation",children:[c.jsx(kl,{columns:_o,allColumns:ua,columnGroupingModel:In,checkboxSelection:h,allSelected:Mm,someSelected:Nm,onSelectAll:Rr.selectAll,sortModel:ut,onSort:ga,onSortAdd:pa,multiSort:de,onColumnResize:ca,onColumnAutosize:dm,columnWidths:Fn,pinnedColumns:sn,focusedCell:vo,columnIndexMap:wo,onHeaderClick:_m,onDragStart:un.onDragStart,onDragOver:un.onDragOver,onDragEnd:un.onDragEnd,onDrop:un.onDrop,draggedColumn:un.draggedColumn,dragOverColumn:un.dragOverColumn,rowReordering:Gt,hasDetailPanel:Bt,pinCheckboxColumn:K,pinExpandColumn:J,aggregationModel:Ue,onHideColumn:km,onManageColumns:at.openColumnsPanel,onPinColumn:Em,wrapHeaderText:l,headerHeight:Gr,headerFilters:co,filterModel:ft,onFilterModelChange:Tr,onOpenFilterPanel:at.openFiltersPanel}),c.jsx(ls,{...ni,rows:ze,position:"top",ariaRowIndexBase:On.topBase,columns:_o,pinnedRows:U,getRowId:Pe})]}),!kt&&!Fe.dataSource.error&&da.length===0&&c.jsx(wd,{noRowsLabel:Pr,width:He.totalWidth,overlay:wa}),c.jsx(tg,{...ni,virtualContainerHeight:He.virtualContainerHeight,offsetTop:Qr.offsetTop,effectiveLoading:kt,visibleRows:ei,baseColumns:Ar,virtualColumns:_o,viewportWidth:Fe.dimensions.viewportWidth,rowReorderHandlers:am,paginationMode:Me,dataSourceLoading:Fe.dataSource.loading,sortedUnpinnedRowCount:pt.length,infiniteScrollSkeletonCount:Math.min(Re.pageSize,20),unpinnedRowsLength:De.unpinnedRowsLength,lastRenderedRowIndex:Qr.renderContext.lastRowIndex,ariaRowIndexOffset:On.centerOffset,loadingOverlay:ti}),c.jsxs("div",{className:"ogx__sticky-bottom",role:"presentation",children:[c.jsx(ls,{...ni,rows:st,position:"bottom",rowIndexOffset:On.bottomRowIndexOffset,ariaRowIndexBase:On.bottomBase,columns:_o,pinnedRows:U,getRowId:Pe}),Jr&&Wr.rootAggregationPosition!==null&&c.jsx(md,{columns:He.virtualColumns,aggregationModel:Ue,aggregationResult:Yr,columnWidths:Fn,rowHeight:it,checkboxSelection:h,hasDetailPanel:Bt,rowReordering:Gt,pinCheckboxColumn:K,pinExpandColumn:J,pinnedColumns:sn,loading:cm})]})]})}),Ge.enabled&&b&&c.jsx(Hg,{stats:Ge.stats,apiRef:go.apiRef,slot:Ie?.cellSelectionStats,slotProps:Se?.cellSelectionStats}),So&&c.jsx(So,{apiRef:go.apiRef,aggregationModel:Ue,aggregationResult:Jr?Yr:null,rowCount:fo&&Me!=="server"?dn.length:yo,pagination:rt,paginationModel:Re,pageSizeOptions:oe,onPaginationModelChange:on,...Se?.footer}),!ln&&!So&&rt&&c.jsx(Vg,{paginationSlot:Ie?.pagination,paginationSlotProps:Se?.pagination,page:bo.currentPage,paginationModel:Re,rowCount:yo,pageSizeOptions:oe,onPaginationModelChange:on,localeText:Ln}),c.jsx(zg,{loading:kt,error:Fe.dataSource.error,noRowsLabel:Pr,filteredRowCount:da.length,dataRowCount:dn.length,filterModel:ft,cellSelectionAnnouncement:Ge.announcement,aiAssistantAnnouncement:fn.announcement}),Lm&&c.jsx(Df,{overlay:ti}),c.jsx(xd,{error:Fe.dataSource.error,onRetry:be?oa.fetchRows:void 0})]})}function hp({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 mp=300;function Zt(e){return"field"in e&&!("items"in e)}function Ss(e,t){return e.find(n=>Zt(n)&&n.field===t)}function ks(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)=>ks(n,t[o])):!1}function wp(e,t){return e===t?!0:Zt(e)&&Zt(t)?e.id===t.id&&e.field===t.field&&e.operator===t.operator&&ks(e.value,t.value):!Zt(e)&&!Zt(t)?e.id===t.id&&e.logicOperator===t.logicOperator&&Ir(e.items,t.items):!1}function Ir(e,t){return e===t?!0:e.length===t.length&&e.every((n,o)=>wp(n,t[o]))}function bp(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 Es(e,t){return Object.is(e.value,t)?!0:t!=null&&String(e.value).toLowerCase()===String(t).toLowerCase()}function Ms(e,t){return Bo(e,t.type)}function Ns(e,t){return t==="isAnyOf"?e.split(",").map(n=>n.trim()).filter(n=>n!==""):e}function xp(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 yp=({col:e,item:t,resetToken:n,onChange:o})=>{const r=s.useId(),i=s.useMemo(()=>xi(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,[h,w]=s.useState(null),[y,p]=s.useState(n);y!==n&&(p(n),w(null));const f=s.useRef(o),m=s.useRef(t),x=s.useRef(e);s.useLayoutEffect(()=>{f.current=o,m.current=t,x.current=e});const b=s.useCallback((L,D)=>({id:m.current?.id??`${e.field}-${Date.now()}`,field:e.field,operator:L,value:D}),[e.field]),C=s.useCallback(L=>{const D=m.current;if(D?L===Ms(D.value,x.current):L.trim()==="")return;const V=D?.operator??l;f.current(b(V,Ns(L,V)))},[l,b]),E=s.useRef(null),k=s.useRef(C);s.useLayoutEffect(()=>{E.current=h,k.current=C}),s.useEffect(()=>()=>{const L=E.current;E.current=null,L!==null&&k.current(L)},[]),s.useEffect(()=>{if(h===null)return;const L=setTimeout(()=>{E.current=null,C(h),w(null)},mp);return()=>clearTimeout(L)},[h,C]);const N=L=>{const D=h!==null?Ns(h,L):t?.value;w(null),o(b(L,xp(D,L)))},M=()=>{w(null),o(null)},S=!Vt.has(d),F=bp(e),I=`ogx-filter__value-input${u?" ogx-filter__value-input--active":""}`,A=`Filter value for ${g}`;let _=null;if(S&&e.type==="boolean")_=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"&&F.length>0&&d==="isAnyOf"){const L=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:`${I} ogx-filter__value-multiselect`,multiple:!0,size:Math.min(F.length,4),value:F.filter(D=>L.some(v=>Es(D,v))).map(D=>D.key),onChange:D=>{const v=new Set(Array.from(D.target.selectedOptions,V=>V.value));o(b("isAnyOf",F.filter(V=>v.has(V.key)).map(V=>V.value)))},"aria-label":A,children:F.map(D=>c.jsx("option",{value:D.key,children:D.label},D.key))})}else if(S&&e.type==="singleSelect"&&F.length>0&&(d==="is"||d==="not")){const L=F.find(D=>Es(D,t?.value));_=c.jsxs("select",{id:`${r}-val`,name:`filter-val-${e.field}`,className:`${I} ogx-filter__value-select`,value:L?.key??"",onChange:D=>{const v=F.find(V=>V.key===D.target.value);o(b(d,v?v.value:""))},"aria-label":A,children:[c.jsx("option",{value:"",children:"Any"}),F.map(D=>c.jsx("option",{value:D.key,children:D.label},D.key))]})}else S&&(_=c.jsx(Qe,{id:`${r}-val`,name:`filter-val-${e.field}`,inputClassName:I,type:e.type==="date"?"date":"text",value:h??Ms(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))}),_,u&&c.jsx("button",{type:"button",className:"ogx-filter__row-clear",onClick:M,"aria-label":`Clear filter for ${g}`,title:"Clear",children:"×"})]})]})},Is=({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 m=!Ir(d,o),x=i!==null&&Ir(i,o);m&&!x&&g(b=>b+1)}const h=s.useCallback((m,x)=>{const b=o.findIndex(E=>Zt(E)&&E.field===m);let C;if(b===-1){if(!x)return;C=[...o,x]}else x?C=o.map((E,k)=>k===b?x:E):C=o.filter((E,k)=>k!==b);l(C),n({...e,items:C})},[o,e,n]),w=s.useCallback(m=>{n({...e,logicOperator:m})},[e,n]),y=t.filter(m=>m.filterable!==!1),p=y.filter(m=>Ss(o,m.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(m=>c.jsx(yp,{col:m,item:Ss(o,m.field),resetToken:u,onChange:x=>h(m.field,x)},m.field))]})},Ls=["sum","avg","count","min","max"];function As(){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 Cp({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 v=e.current.getBoundingClientRect();return{top:v.bottom+6,right:Ot()-v.right}},[e]);s.useEffect(()=>{d(g());const v=()=>d(g());return window.addEventListener("scroll",v,!0),window.addEventListener("resize",v),()=>{window.removeEventListener("scroll",v,!0),window.removeEventListener("resize",v)}},[g]),s.useEffect(()=>{function v(R){i.current&&!i.current.contains(R.target)&&e.current&&!e.current.contains(R.target)&&r()}function V(R){R.key==="Escape"&&r()}return document.addEventListener("mousedown",v),document.addEventListener("keydown",V),()=>{document.removeEventListener("mousedown",v),document.removeEventListener("keydown",V)}},[e,r]);const h=new Set(n.rowFields),w=new Set(n.columnFields),y=new Set(n.valueFields.map(v=>v.field)),p=v=>h.has(v)||w.has(v)||y.has(v),f=v=>t.find(V=>V.field===v),m=v=>f(v)?.headerName??v,x=v=>{const V=f(v)?.availableAggregationFunctions;return V?Ls.filter(R=>V.includes(R)):Ls},b=v=>v.aggregable!==!1&&(v.type==="number"||v.aggregable===!0)&&x(v.field).length>0,C=v=>v.groupable!==!1;function E(v){h.has(v)||o({...n,rowFields:[...n.rowFields,v]})}function k(v){w.has(v)||o({...n,columnFields:[...n.columnFields,v]})}function N(v){y.has(v)||o({...n,valueFields:[...n.valueFields,{field:v,aggFn:x(v)[0]??"sum"}]})}function M(v){o({...n,rowFields:n.rowFields.filter((V,R)=>R!==v)})}function S(v){o({...n,columnFields:n.columnFields.filter((V,R)=>R!==v)})}function F(v){o({...n,valueFields:n.valueFields.filter((V,R)=>R!==v)})}function I(v,V){o({...n,valueFields:n.valueFields.map((R,Q)=>Q===v?{...R,aggFn:V}:R)})}function A(){o({rowFields:[],columnFields:[],valueFields:[]})}const _=n.rowFields.length+n.columnFields.length+n.valueFields.length,L=t.filter(v=>!p(v.field)&&(C(v)||b(v))),D=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(As,{}),"Pivot Mode"]}),_>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((v,V)=>c.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--row",children:[m(v),c.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>M(V),title:`Remove ${m(v)}`,"aria-label":`Remove ${m(v)} from Row Fields`,children:"×"})]},`${V}:${v}`))})]}),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((v,V)=>c.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--col",children:[m(v),c.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>S(V),title:`Remove ${m(v)}`,"aria-label":`Remove ${m(v)} from Column Fields`,children:"×"})]},`${V}:${v}`))})]}),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((v,V)=>{const R=x(v.field),Q=R.includes(v.aggFn)?R:[v.aggFn,...R];return c.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--value",children:[m(v.field),c.jsx("select",{className:"ogx-pivot-chip__fn-select",value:v.aggFn,onChange:G=>I(V,G.target.value),title:"Aggregation function","aria-label":`Aggregation function for ${m(v.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:()=>F(V),title:`Remove ${m(v.field)}`,"aria-label":`Remove ${m(v.field)} (${v.aggFn.toUpperCase()}) from Value Fields`,children:"×"})]},`${V}:${v.field}:${v.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(v=>{const V=b(v),R=C(v),Q=v.headerName??v.field;return c.jsxs("div",{style:{display:"flex",alignItems:"center",gap:3},children:[c.jsx("span",{className:`ogx-pivot-field-btn${V?" ogx-pivot-field-btn--numeric":""}`,children:Q}),c.jsxs("div",{className:"ogx-pivot-field-actions",children:[R&&c.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--row",onClick:()=>E(v.field),title:"Add to Row Fields","aria-label":`Add ${Q} to Row Fields`,children:"Row"}),R&&c.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--col",onClick:()=>k(v.field),title:"Add to Column Fields","aria-label":`Add ${Q} to Column Fields`,children:"Col"}),V&&c.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--value",onClick:()=>N(v.field),title:"Add to Value Fields","aria-label":`Add ${Q} to Value Fields`,children:"Val"})]})]},v.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(D,a):null}function vp(){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 _p(){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 Ps(e){return e.trim().split(/\s+/).filter(Boolean).join(" ")}function Sp({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 h=s.useRef(e),w=s.useRef(e);s.useEffect(()=>{e!==w.current&&(w.current=e,Ps(e)!==Ps(h.current)&&(d(e),h.current=e,i(e.length>0)))},[e]),s.useEffect(()=>{const b=setTimeout(()=>{l!==h.current&&(h.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!==h.current&&(h.current=b,g.current(b))},[]);const p=s.useCallback(()=>{i(!0),requestAnimationFrame(()=>a.current?.focus())},[]),f=s.useCallback(b=>{b.stopPropagation(),d(""),h.current="",g.current(""),a.current?.focus()},[]),m=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=C=>{u.current&&!u.current.contains(C.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(vp,{})}),c.jsx(Qe,{ref:a,inputClassName:"ogx-global-search__input",value:l,onChange:b=>d(b.target.value),onFocus:m,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(_p,{})})]})}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),h=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(()=>{h.current&&clearTimeout(h.current),h.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 m=()=>{f(),h.current=setTimeout(()=>{g(w.current?.closest(".ogx-theme-provider")??document.body),l(!0)},o)},x=()=>{f(),h.current=setTimeout(()=>{l(!1)},r)},b=s.useCallback(k=>{w.current=k?k.firstElementChild??k:null},[]),C=i&&!!e&&u!==null;let E=t;if(C&&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:m,onMouseLeave:x,onFocus:m,onBlur:x,children:E}),C&&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 kp=Object.keys(Lt);function Ep(e){return Object.prototype.hasOwnProperty.call(Lt,e)}function Ts(e){return e.availableAggregationFunctions?Array.from(new Set(e.availableAggregationFunctions.filter(Ep))):kp}function Fs(){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 Mp(){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 Os(){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 Np({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,h]=s.useState(null);s.useLayoutEffect(()=>{h(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(Fs,{}),"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",...Ts(p)].map(m=>c.jsx("button",{type:"button",className:`ogx-toolbar__pill${f===m?" ogx-toolbar__pill--active":""}`,onClick:()=>o(p.field,m),"aria-pressed":f===m,children:m},m))})]},p.field)})})]});return g?mt.createPortal(y,g):null}function Ip({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),[h,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 m=c.jsx("div",{ref:g,className:"ogx-toolbar__panel",role:"dialog","aria-label":"Column visibility",style:{top:h.top,right:h.right,width:280,padding:0},children:c.jsx(Cr,{columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:d,showNonHideableColumns:u})});return y?mt.createPortal(m,y):null}function Lp({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 h=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(h());const f=()=>d(h());return window.addEventListener("scroll",f,!0),window.addEventListener("resize",f),()=>{window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f)}},[h]),s.useEffect(()=>{function f(m){m.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(Os,{}),"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(Is,{columns:t,filterModel:n,onFilterModelChange:o})})]});return u?mt.createPortal(p,u):null}const Ap={rowFields:[],columnFields:[],valueFields:[]},Pp=[];function Tp({columns:e=Pp,baseColumns:t,aggregationModel:n={},onAggregationModelChange:o,pivotModel:r,onPivotModelChange:i,filterModel:l,onFilterModelChange:d,columnVisibilityModel:a={},onColumnVisibilityModelChange:u,onColumnReorder:g,onColumnOrderReset:h,forceColumnsOpen:w,onColumnsPanelClose:y,forceFiltersOpen:p,onFiltersPanelClose:f,children:m,rightContent:x,style:b,renderColumnsButton:C,renderFilterButton:E,renderAggregationButton:k,renderExportButton:N,renderQuickFilter:M,className:S,showNonHideableColumns:F,onAiAssistantToggle:I,aiAssistantOpen:A=!1,aiAssistantLabel:_="Ask AI"}){const[L,D]=s.useState(w?"columns":null),v=L==="summaries",V=L==="pivot",R=L==="columns",Q=L==="filters",G=he=>{L==="columns"&&he!=="columns"&&y?.(),L==="filters"&&he!=="filters"&&f?.(),D(he)},W=he=>G(L===he?null:he),H=he=>{L===he&&G(null)},[ie,oe]=s.useState(w);ie!==w&&(oe(w),w&&D("columns"));const[ue,se]=s.useState(p);ue!==p&&(se(p),p&&d&&D("filters"));const U=s.useContext(il),te=w!==void 0&&!!u;s.useEffect(()=>{if(!(!U||!te))return U.registerColumnsPanel()},[U,te]);const ce=p!==void 0&&!!d;s.useEffect(()=>{if(!(!U||!ce))return U.registerFiltersPanel()},[U,ce]);const z=s.useRef(null),re=s.useRef(null),K=s.useRef(null),J=s.useRef(null),ae=s.useRef(null),fe=s.useRef(null),Z=s.useRef(null),$=s.useRef(null),O=r??Ap,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)&&Ts(he).length>0&&(!T||T.has(he.field))),B=Object.keys(n).filter(he=>n[he]&&n[he]!=="none").length,ee=s.useCallback((he,Ce)=>{if(!o)return;const be={...n};Ce==="none"?delete be[he]:be[he]=Ce,o(be)},[n,o]),q=s.useCallback(()=>{o?.({})},[o]),Y=s.useCallback(he=>{if(!d)return;const Ce=he.trim().split(/\s+/).filter(Boolean),be={...l||{},quickFilterValues:Ce,items:l?.items||[]};d(be)},[l,d]),ne=(l?.quickFilterValues??[]).join(" "),me=l?.items?.length||0,j=new Set(e.filter(he=>a[he.field]!==!1).map(he=>he.field)),le=s.useCallback((he,Ce)=>{if(!u)return;const be={...a,[he]:Ce};u(be)},[a,u]),we=s.useCallback(()=>{if(!u)return;const he={...a};e.forEach(Ce=>{Ce.hideable!==!1&&(he[Ce.field]=!0)}),u(he)},[e,a,u]),pe=s.useCallback(()=>{if(!u)return;const he={...a};e.forEach(Ce=>{Ce.hideable!==!1&&(he[Ce.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:[m&&c.jsx("div",{className:"ogx-toolbar__left",children:m}),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:re,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(re.current)},children:[c.jsx(_s,{}),_]})}),d&&c.jsx("div",{className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:M?M({value:ne,onChange:Y}):c.jsx(Sp,{value:ne,onChange:Y,placeholder:"Search..."})}),u&&c.jsxs("div",{ref:fe,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[C?C({onClick:()=>W("columns"),isOpen:R,activeCount:e.length-j.size}):c.jsx(Sn,{title:"Columns",children:c.jsx("button",{type:"button",ref:J,className:`ogx-toolbar__icon-btn${R?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Manage columns","aria-haspopup":"dialog","aria-expanded":R,onClick:()=>W("columns"),children:c.jsx(Mp,{})})}),R&&c.jsx(Ip,{anchorRef:C?fe:J,columns:e,visibleColumns:j,onVisibilityChange:le,onShowAll:we,onHideAll:pe,onColumnReorder:g,onColumnOrderReset:h,onClose:()=>H("columns"),showNonHideableColumns:F})]}),d&&c.jsxs("div",{ref:Z,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[E?E({onClick:()=>W("filters"),isOpen:Q,activeCount:me}):c.jsx(Sn,{title:"Filters",children:c.jsxs("button",{type:"button",ref:ae,className:`ogx-toolbar__icon-btn${Q?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Advanced filters","aria-haspopup":"dialog","aria-expanded":Q,onClick:()=>W("filters"),children:[c.jsx(Os,{}),me>0&&c.jsx("span",{className:"ogx-toolbar__dot","aria-label":"Filters active"})]})}),Q&&c.jsx(Lp,{anchorRef:E?Z:ae,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:K,className:`ogx-toolbar__icon-btn${V?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Configure pivot","aria-haspopup":"dialog","aria-expanded":V,onClick:()=>W("pivot"),children:[c.jsx(As,{}),P&&c.jsx("span",{className:"ogx-toolbar__dot","aria-label":"Pivot active"})]})}),V&&c.jsx(Cp,{anchorRef:K,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:()=>W("summaries"),isOpen:v,activeCount:B}):c.jsx(Sn,{title:"Summaries",children:c.jsxs("button",{type:"button",ref:z,className:`ogx-toolbar__icon-btn${v?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Configure summaries","aria-haspopup":"dialog","aria-expanded":v,onClick:()=>W("summaries"),children:[c.jsx(Fs,{}),B>0&&c.jsx("span",{className:"ogx-toolbar__dot","aria-label":`${B} active summaries`})]})}),v&&c.jsx(Np,{anchorRef:k?$:z,aggregationModel:n,aggregableColumns:X,onFunctionChange:ee,onClearAll:q,onClose:()=>H("summaries"),activeCount:B})]}),N&&N(),x]})]})}function Fp(){const[e]=s.useState(El);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 Op=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 Dp(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 $p(e){let t="",n=!1;for(const o of e){const r=o.codePointAt(0)??0;if(r<=255||Op.has(r)){t+=o;continue}const i=Dp(r);i!==null?t+=i:(t+="?",n=!0)}return{text:t,lossy:n}}const Gp={sliceMs:30,renderChunkRows:40},Hp=2e4;function Ds(){return new Promise(e=>setTimeout(e,0))}function Bp(){return new DOMException("PDF export was aborted","AbortError")}const en=()=>typeof performance<"u"?performance.now():Date.now(),$s=e=>Math.max(2,Math.floor(e/2)*2),Wp=[79,70,229],Vp=[255,255,255];function Gs(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 Hs(e,t){return _n(e,t,vn(e,t))}function Bs(e){return(typeof e.width=="number"?e.width:void 0)??(e.flex??1)*100}function zp(e,t){const n=e.reduce((r,i)=>r+Bs(i),0),o={};return e.forEach((r,i)=>{o[i]={cellWidth:Bs(r)/n*t}}),o}const Kp=new Set(["isEmpty","isNotEmpty"]);function jp(e,t){const o=t.find(l=>l.field===e.field)?.headerName??e.field;if(Kp.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 Ws(e,t,n,o){const r=e.map(l=>"items"in l?Ws(l.items,l.logicOperator,n,!0):jp(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 Up(e,t){const n=[],o=Ws(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 Rp=1.15*.3528;function qp(e,t,n={}){return Xp(e,t,n,Gp)}async function Xp(e,t,n,o){const{signal:r,onProgress:i}=n,l=()=>{if(r?.aborted)throw Bp()};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:h,orientation:w="landscape",selectedRows:y,getRowId:p,aggregationResult:f,aggregationModel:m,filterModel:x,alternateRowColor:b=!0,headerBackgroundColor:C="#4f46e5",headerTextColor:E="#ffffff",fontSize:k=9,groupedRows:N,font:M,maxRows:S=Hp}=n;l();let F=en();const I=async()=>{en()-F<o.sliceMs||(await Ds(),l(),F=en())},A=(q,Y,ne)=>{i?.({phase:q,done:Y,total:ne})},_=new d({orientation:w,unit:"mm",format:"a4"}),L=_.internal.pageSize.getWidth(),D=_.internal.pageSize.getHeight(),v=14,V=L-v*2;let R="helvetica";M&&(_.addFileToVFS(`${M.name}-normal.ttf`,M.data),_.addFont(`${M.name}-normal.ttf`,M.name,"normal"),M.boldData&&_.addFileToVFS(`${M.name}-bold.ttf`,M.boldData),_.addFont(M.boldData?`${M.name}-bold.ttf`:`${M.name}-normal.ttf`,M.name,"bold"),R=M.name);let Q=!1;const G=q=>{if(M)return q;const Y=$p(q);return Y.lossy&&(Q=!0),Y.text},W=(q,Y,ne,me,j)=>{const le=_.splitTextToSize(G(q),me);return _.text(le.length===1?le[0]:le,Y,ne),Math.max(0,le.length-1)*j*Rp},H=Dt(t),ie=Cn(N,y),oe=yn(e,y,p);let ue=v;if(g){let q=v,Y=v+8;if(h)try{_.addImage(h,"PNG",q,v,10,10),q+=14}catch{}const ne=L-v-q;_.setFontSize(16),_.setFont(R,"bold"),_.setTextColor(30,41,59),Y+=W(g,q,Y,ne,16),Y+=6,_.setFontSize(8),_.setFont(R,"normal"),_.setTextColor(100,116,139);const me=new Date().toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),j=ie?N.filter(le=>le.type==="leaf").length:oe.length;if(_.text(G(`Exported: ${me} • ${j} row${j!==1?"s":""}`),q,Y),Y+=5,x){const le=Up(x,t);le&&(Y+=W(`Filters: ${le}`,q,Y,ne,8),Y+=5)}_.setDrawColor(226,232,240),_.setLineWidth(.3),_.line(v,Y+2,L-v,Y+2),ue=Y+6}const se=[H.map(q=>G(q.headerName??q.field))],U=m||{},te=q=>H.map(Y=>vr(Y,U[Y.field],q[Y.field],q)),ce=[];let z;const re=q=>{ce.push(q.map(G))};if(ie){const q=N.length;A("prepare",0,q);for(let Y=0;Y<q;Y++){const ne=N[Y],me=" ".repeat(ne.depth*2);if(ne.type==="group-header"){const j=`${me}${Qt(ne,t)}`;re(H.map((le,we)=>we===0?j:""))}else if(ne.type==="leaf"&&ne.row){const j=ne.row;re(H.map((le,we)=>(we===0?me:"")+Hs(j,le)))}else if(ne.type==="group-subtotal"&&ne.aggregatedValues){const j=te(ne.aggregatedValues);re(j.map((le,we)=>we===0?`${me}${Jt("Subtotal",le)}`:le))}else ne.type==="grand-total"&&ne.aggregatedValues&&(z=[te(ne.aggregatedValues).map((le,we)=>we===0?Jt("Grand Total",le):le).map(G)]);(Y&63)===63&&(A("prepare",Y+1,q),await I())}A("prepare",q,q)}else{const q=oe.length;A("prepare",0,q);for(let ne=0;ne<q;ne++)re(H.map(me=>Hs(oe[ne],me))),(ne&63)===63&&(A("prepare",ne+1,q),await I());const Y=m?Yt(oe,yt(y),t,f,m):null;if(Y&&m){const ne=H.some(j=>m[j.field]);z=[te(Y).map((j,le)=>le===0&&ne?Jt("TOTAL",j):j).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 K=zp(H,V),[J,ae,fe]=Gs(C,Wp),[Z,$,O]=Gs(E,Vp),P={head:se,styles:{fontSize:k,cellPadding:3,font:R,overflow:"linebreak"},headStyles:{fillColor:[J,ae,fe],textColor:[Z,$,O],fontStyle:"bold"},...b?{alternateRowStyles:{fillColor:[248,250,252]}}:{},...z?{footStyles:{fillColor:[241,245,249],fontStyle:"bold",textColor:[0,0,0]}}:{},columnStyles:K,showHead:"everyPage",margin:{top:v,left:v,right:v,bottom:v+6}},T=ce.length;A("render",0,T);let X=0,B=$s(o.renderChunkRows);do{const q=ce.slice(X,X+B),Y=X===0,ne=X+q.length>=T,me=Y?ue:_.lastAutoTable.finalY;let j=!0;const le=en();a(_,{...P,body:q,...ne&&z?{foot:z}:{},startY:Y?ue:v,showFoot:ne&&z?"lastPage":"never",...Y?{}:{willDrawPage:pe=>{j?(j=!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()-le;B=$s(we>0?Math.min(B*4,B*(o.sliceMs/we)):B*4),ne||(await Ds(),l(),F=en())}while(X<T);const ee=_.getNumberOfPages();for(let q=1;q<=ee;q++)_.setPage(q),_.setFontSize(8),_.setTextColor(150,150,150),_.text(`Page ${q} of ${ee}`,L-v,D-8,{align:"right"}),await I();l(),A("save",0,1),_.save(`${u}.pdf`),A("save",1,1)}function kn(e,t){const n=vn(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 Yp="\uFEFF";function Jp(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),h=n.aggregationModel||{},w=(f,m=!1)=>ro(a?Qn(f,m):f,i),y=()=>g.map(f=>w(f.headerName||f.field)).join(i)+`
|
|
8
|
-
`;let p="";if(
|
|
9
|
-
`}else if(f.type==="leaf"&&f.row){const
|
|
10
|
-
`}else if((f.type==="group-subtotal"||f.type==="grand-total")&&f.aggregatedValues){const
|
|
11
|
-
`}});else{const f=
|
|
12
|
-
`});const m=
|
|
13
|
-
`;const
|
|
14
|
-
`}}
|
|
15
|
-
`)||e.includes("\r")?`"${e.replace(/"/g,'""')}"`:e}const
|
|
3
|
+
`).forEach(z=>console.warn(z))},[C]);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 S=s.useMemo(()=>g==="server"?null:Rn(l,u),[g,l,u]),N=s.useMemo(()=>Nu(y,S),[y,S]),M=`${r}|${i}`,[_,O]=s.useState(()=>({configKey:M,overrides:new Map})),L=_.configKey===M?_.overrides:zl,A=s.useCallback(z=>((z?.children?.length??0)>0||(z?.serverChildrenCount??0)>0)&&(i===-1||(z?.depth??0)<i),[i]),k=s.useMemo(()=>{const z=new Set;return x&&p.forEach((W,re)=>{(L.get(re)??A(W))&&z.add(re)}),z},[x,p,L,A]),I=s.useCallback(z=>{const W=!k.has(z);if(O(re=>{const oe=re.configKey===M?re.overrides:zl,fe=new Map(oe);return fe.set(z,W),{configKey:M,overrides:fe}}),W&&c){const re=p.get(z);re&&c(re)}},[k,M,p,c]),P=h!=="server"&&!!(a&&a.length>0),v=s.useCallback(z=>{if(!x)return null;const W=z?.labelField,re=z?.expandAll??!1,{visible:oe,visibleChildren:fe}=N,le=P&&a?a:[],ce=(te,U)=>{if(b.has(te))return{value:U.field===W?p.get(te)?.label:void 0};const J=w.get(te),se=u?.byField.get(U.field),ue=J?Me(J,U.field,se):void 0,ee=se?.sortComparator;return{value:ue,type:se?.type,comparator:ee,params:ee&&J?{id:te,field:U.field,row:J,value:ue}:void 0}},K=[],de=new Set,X=te=>{const U=te.filter(se=>oe.has(se)),J=le.length>0?Ti(U,le,ce):U;for(const se of J){if(de.has(se))continue;const ue=w.get(se);if(!ue)continue;de.add(se),K.push(ue);const ee=fe.get(se);ee&&ee.length>0&&(re||k.has(se))&&X(ee)}};return X(f),K},[x,N,P,a,b,p,w,u,f,k]),B=s.useCallback(z=>k.has(z),[k]),V=s.useCallback(z=>p.get(z),[p]),Q=s.useCallback(z=>{const W=[];let re=z;for(;re!==null;){const oe=p.get(re);if(!oe)break;W.unshift(oe.groupingKey),re=oe.parentId}return W},[p]),H=s.useMemo(()=>{const z=new Map,{visibleChildren:W,descendantCounts:re}=N;return p.forEach((oe,fe)=>{const le=(oe.children?.length??0)===0&&(oe.serverChildrenCount??0)>0,ce=b.has(fe),K={hasChildren:(W.get(fe)?.length??0)>0||le,treeDepth:oe.depth,descendantCount:le?void 0:re.get(fe)??0,isGroupRow:ce,isExpanded:k.has(fe)};ce&&(K.groupLabel=oe.label),z.set(fe,K)}),z},[p,b,N,k]);return s.useMemo(()=>({treeNodes:p,groupingRows:m,toggleExpansion:I,isGroupExpanded:B,getVisibleRows:v,getNode:V,getNodePath:Q,rowMetaMap:H}),[p,m,I,B,v,V,Q,H])}const Rl=e=>e===null?"footer":"inline";function ql(e,t){return Do(()=>e(t),Rl(t),"getAggregationPosition","getAggregationPosition threw; the default position is used")}function Lu(e,t,n){const o=`${t}: ${String(n)}`,r=e?.groupingValueFormatter;return r?Do(()=>r({field:t,value:n}),o,`groupingValueFormatter:${t}`,`groupingValueFormatter for column "${t}" threw; the group is labelled "${t}: value"`):o}const Au=[],Tu={},Xl=new Map,tt="";function Pu(e){if(typeof e=="string")return e;if(e===null)return`${tt}null`;if(e===void 0)return`${tt}undefined`;if(e instanceof Date)return`${tt}date:${e.getTime()}`;if(typeof e=="object")try{return`${tt}object:${JSON.stringify(e)}`}catch{return`${tt}object:${String(e)}`}return`${tt}${typeof e}:${String(e)}`}const Fu=(e,t,n)=>`auto-group-${e}-${t}-${n??"root"}`,Ou=e=>`${e}${tt}footer`,Du=e=>e==="footer"?"f":e===null?"n":"i",$u=e=>e==="f"?"footer":e==="n"?null:"inline";function Gu(e){const{rows:t,getRowId:n,columns:o,rowGroupingModel:r=Au,aggregationModel:i=Tu,defaultGroupingExpansionDepth:l=0,filterModel:a,sortModel:c,getAggregationPosition:u=Rl,columnLookup:g,filterMode:h="client",sortingMode:x="client"}=e,y=r.join(tt),p=s.useMemo(()=>y===""?[]:y.split(tt),[y]),f=JSON.stringify(Object.entries(i)),m=s.useMemo(()=>Object.fromEntries(JSON.parse(f)),[f]),b=Object.keys(m).length>0,w=s.useMemo(()=>{const X=new Map;return(o??[]).forEach(te=>X.set(te.field,te)),X},[o]),C=p.length>0,E=s.useMemo(()=>p.filter(X=>w.get(X)?.groupable!==!1),[p,w]),N=`${E.join(tt)}|${l}`,[M,_]=s.useState(()=>({configKey:N,overrides:new Map})),O=M.configKey===N?M.overrides:Xl,L=s.useMemo(()=>{if(!C||h==="server")return null;const X=Rn(a,g);return X?new Set(t.filter(te=>X(te))):null},[C,t,h,a,g]),A=s.useMemo(()=>{const X=new Map,te=[],U=[],J=new Map,se=new Map,ue=new Map;if(!C)return{treeNodes:X,rootIds:te,groupIds:U,groupRowVariants:J,groupingRows:se,rowLookup:ue};const ee=(D,T,$)=>{if(T>=E.length)return(L?D.filter(q=>L.has(q)):D).map(q=>{const ne=n(q);return ue.set(ne,q),X.set(ne,{id:ne,parentId:$,depth:T,groupingKey:"",isExpanded:!1}),ne});const F=E[T],Z=w.get(F),G=new Map;for(const j of D){const q=Me(j,F,Z),ne=Pu(q);let he=G.get(ne);he||(he={value:q,rows:[]},G.set(ne,he)),he.rows.push(j)}const Y=[];return G.forEach((j,q)=>{const ne=L?j.rows.filter(ye=>L.has(ye)):j.rows;if(ne.length===0)return;const he=Fu(F,q,$);Y.push(he),U.push(he);const me=b?jn(ne,m,w,"useRowGrouping"):{},R={[F]:j.value,...me,id:he},ge={[F]:j.value,id:he},we=b?{...me,id:Ou(he)}:null;J.set(he,{inline:R,bare:ge,footer:we}),se.set(he,R),we&&se.set(we.id,we);const ae={id:he,parentId:$,depth:T,groupingKey:String(j.value),groupingField:F,groupingValue:j.value,aggregatedValues:me,isExpanded:!1,children:[],label:Lu(Z,F,j.value),descendantCount:ne.length};X.set(he,ae),ae.children=ee(j.rows,T+1,he)}),Y};return te.push(...ee(t,0,null)),{treeNodes:X,rootIds:te,groupIds:U,groupRowVariants:J,groupingRows:se,rowLookup:ue}},[C,t,L,E,b,m,n,w]),{treeNodes:k,rootIds:I,groupIds:P,groupRowVariants:v,groupingRows:B,rowLookup:V}=A,Q=s.useCallback(X=>!!(X?.children&&X.children.length>0)&&(l===-1||(X?.depth??0)<l),[l]),H=s.useMemo(()=>{const X=new Set;for(const te of P){const U=k.get(te);!U?.children||U.children.length===0||(O.get(te)??Q(U))&&X.add(te)}return X},[P,k,O,Q]),z=s.useCallback(X=>{_(te=>{const U=te.configKey===N?te.overrides:Xl,J=U.get(X)??Q(k.get(X)),se=new Map(U);return se.set(X,!J),{configKey:N,overrides:se}})},[N,k,Q]),W=s.useCallback(X=>H.has(X),[H]),re=b?P.map(X=>{const te=k.get(X);return te?Du(ql(u,{...te,isExpanded:H.has(X)})):"i"}).join(""):"",oe=s.useMemo(()=>{const X=new Map;return P.forEach((te,U)=>X.set(te,$u(re[U]))),X},[P,re]),fe=b?ql(u,null):"footer",le=x!=="server"&&!!(c&&c.length>0),ce=s.useCallback(X=>{if(!C)return null;const te=X?.labelField,U=X?.expandAll??!1,J=le&&c?c:[],se=(T,$)=>{const F=k.get(T),Z=v.get(T);if(F&&Z){const ne=F.groupingField??"";if($.field===ne||$.field===te){const he=g?.byField.get(ne),me=he?.sortComparator;return{value:F.groupingValue,type:he?.type,comparator:me,params:me?{id:T,field:ne,row:Z.inline,value:F.groupingValue}:void 0}}return F.aggregatedValues&&Object.prototype.hasOwnProperty.call(F.aggregatedValues,$.field)?{value:F.aggregatedValues[$.field],type:g?.byField.get($.field)?.type}:{value:void 0}}const G=V.get(T),Y=g?.byField.get($.field),j=G?Me(G,$.field,Y):void 0,q=Y?.sortComparator;return{value:j,type:Y?.type,comparator:q,params:q&&G?{id:T,field:$.field,row:G,value:j}:void 0}},ue=[],ee=new Set,D=T=>{const $=J.length>0?Ti(T,J,se):T;for(const F of $){if(ee.has(F))continue;ee.add(F);const Z=v.get(F);if(!Z){const ne=V.get(F);ne&&ue.push(ne);continue}const G=k.get(F),Y=H.has(F),j=oe.has(F)?oe.get(F)??null:"inline",q=j==="inline"||j==="footer"&&!Y;ue.push(q?Z.inline:Z.bare),(Y||U)&&G?.children&&(D(G.children),Y&&!U&&j==="footer"&&Z.footer&&ue.push(Z.footer))}};return D(I),ue},[C,le,c,k,v,V,g,H,oe,I]),K=s.useCallback(X=>k.get(X),[k]),de=s.useMemo(()=>{const X=new Map;return k.forEach((te,U)=>{const J=v.get(U);if(!J){X.set(U,{hasChildren:!1,treeDepth:te.depth,isGroupRow:!1});return}const se={hasChildren:!0,treeDepth:te.depth,groupingField:te.groupingField,groupingValue:te.groupingValue,groupLabel:te.label,descendantCount:te.descendantCount,isGroupRow:!0,isExpanded:H.has(U)};X.set(U,se),J.footer&&oe.get(U)==="footer"&&X.set(J.footer.id,{...se,hasChildren:!1,treeDepth:te.depth+1,isExpanded:void 0,isGroupFooter:!0})}),X},[k,v,H,oe]);return s.useMemo(()=>({treeNodes:k,groupingRows:B,toggleExpansion:z,isGroupExpanded:W,getVisibleRows:ce,getNode:K,rowMetaMap:de,aggregationPositions:oe,rootAggregationPosition:fe}),[k,B,z,W,ce,K,de,oe,fe])}const Hu=new Map;function Bu(e){const{rows:t,getRowId:n,getTreeDataPath:o,isTreeDataRequested:r,isTreeData:i,columns:l,rowGroupingModel:a,isRowGrouping:c,aggregationModel:u,defaultGroupingExpansionDepth:g,filterModel:h,sortModel:x,getAggregationPosition:y,columnLookup:p,filterMode:f,sortingMode:m}=e,b=Iu({rows:t,getRowId:n,getTreeDataPath:o,treeData:r,defaultGroupingExpansionDepth:g,filterModel:h,sortModel:x,columnLookup:p,filterMode:f,sortingMode:m}),w=Gu({rows:t,getRowId:n,columns:l,rowGroupingModel:a,aggregationModel:u,defaultGroupingExpansionDepth:g,filterModel:h,sortModel:x,getAggregationPosition:y,columnLookup:p,filterMode:f,sortingMode:m}),C=i?b:c?w:null,E=s.useMemo(()=>i?b.rowMetaMap:c?w.rowMetaMap:Hu,[i,b.rowMetaMap,c,w.rowMetaMap]);return{treeDataHandlers:b,rowGroupingHandlers:w,activeHierarchyHandlers:C,rowMetaMap:E}}function Ve(e){try{return{ok:!0,value:e()}}catch(t){return{ok:!1,error:t}}}class Yl extends Error{}function vt(e,t){return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Object.is(e,t)}function Jl(e){return typeof e=="object"&&e!==null&&typeof e.then=="function"}function Zl(e,t){t?t(e):process.env.NODE_ENV!=="production"&&e instanceof Yl&&console.error(e.message)}function Ql(e,t){return new Yl(`[OpenGridX] processRowUpdate must return the updated row object (or a Promise of it); it returned ${e===null?"null":typeof e}. ${t}`)}function es(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 Jt=Promise.resolve();function Wu(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),a=s.useRef(!1),c=s.useRef(e);s.useLayoutEffect(()=>{c.current=e}),s.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]);const u=s.useCallback(f=>{o.current=f,n(f)},[]),g=s.useRef(null),h=s.useCallback((f,m)=>{const b=i.current.get(f);if(b)return vt(b.value,m.value)?b.promise:b.promise.then(()=>{const H=o.current;if(!(r.current!==f||!H||vt(H.value,b.value)))return g.current?.(f,H)});const w=()=>r.current===f&&o.current!==null;if(vt(m.value,m.originalValue))return w()&&u(null),Jt;const{rows:C,getRowId:E,columns:S,processRowUpdate:N}=c.current,M=C.find(H=>E(H)===m.id);if(!M)return w()&&u(null),Jt;const _=H=>Zl(H,c.current.onProcessRowUpdateError),O=S?.find(H=>H.field===m.field),L=H=>{if(typeof H!="object"||H===null){_(Ql(H,"The edit was not saved and the editor stays open."));return}c.current.onRowChange?.(H,m.id);const{onCommitted:z}=c.current;if(z){const re=Me(M,m.field,O),oe=Me(H,m.field,O);vt(re,oe)||z([{id:m.id,field:m.field,before:re,after:oe}])}const W=o.current;r.current!==f||!W||(vt(W.value,m.value)?u(null):u({...W,originalValue:m.value}))};let A,k;const I=new Promise((H,z)=>{A=H,k=z}),P={value:m.value,promise:I};i.current.set(f,P);const v=()=>{i.current.get(f)===P&&i.current.delete(f)},B=Ve(()=>{const H=es(M,m,O,l.current);return N?N(H,M):H});if(!B.ok)return v(),_(B.error),A(),I;const V=B.value,Q=H=>{v();try{L(H),A()}catch(z){k(z)}};return Jl(V)?Promise.resolve(V).then(Q,H=>{v(),_(H),A()}):Q(V),I},[u]);s.useLayoutEffect(()=>{g.current=h},[h]);const x=s.useCallback(f=>{const m=o.current;if(m){if(m.id===f.id&&m.field===f.field)return;h(r.current,m)}r.current+=1,u({id:f.id,field:f.field,value:f.value,originalValue:f.value})},[h,u]),y=s.useCallback(f=>{const m=o.current;return!m||!a.current||f?.id!==void 0&&f.id!==m.id||f?.field!==void 0&&f.field!==m.field?Jt:f?.cancel?(u(null),Jt):h(r.current,m)},[h,u]),p=s.useCallback(f=>{const m=o.current;!m||m.id!==f.id||m.field!==f.field||u({...m,value:f.value})},[u]);return s.useMemo(()=>({editingCell:t,startCellEdit:x,stopCellEdit:y,setEditCellValue:p}),[t,x,y,p])}function Vu(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(c=>{const u=n.current.get(c);return u===void 0?t.current.rowsLookup.get(c):u},[]),i=s.useCallback(c=>{c.size!==0&&(c.forEach((u,g)=>{n.current.set(g,u)}),t.current.replaceRows(c))},[]),l=s.useCallback((c,u)=>{i(new Map([[c,u]]))},[i]),a=s.useCallback((c,u)=>{const{columns:g,processRowUpdate:h}=t.current,x=S=>Zl(S,t.current.onProcessRowUpdateError),y=new Map,p=new Map;g.forEach((S,N)=>{y.set(S.field,N),p.set(S.field,S)});const f=[],m=new Map;for(const S of c){const N=r(S.id);if(N===void 0){f.push({id:S.id,field:S.field,reason:"missing"});continue}const M=p.get(S.field);if(S.expect&&!vt(Me(N,S.field,M),S.expect.value)){f.push({id:S.id,field:S.field,reason:"changed"});continue}let _=m.get(S.id);_||(_={id:S.id,row:N,cells:[]},m.set(S.id,_));const O=y.get(S.field)??Number.MAX_SAFE_INTEGER,L=_.cells.findIndex(k=>k.field===S.field),A={field:S.field,value:S.value,colDef:M,order:O};L===-1?_.cells.push(A):_.cells[L]=A}const b=[],w=[],C=o.current;m.forEach(S=>{const{id:N,row:M}=S,_=S.cells.filter(A=>!vt(Me(M,A.field,A.colDef),A.value)).sort((A,k)=>A.order-k.order);if(S.cells=_,_.length===0)return;const O=Ve(()=>{let A=M;for(const k of _)A=es(A,k,k.colDef,C);return h?h(A,M):A});if(!O.ok){b.push({id:N,ok:!1,error:O.error});return}const L=O.value;Jl(L)?w.push(Promise.resolve(L).then(A=>({id:N,ok:!0,processed:A}),A=>({id:N,ok:!1,error:A}))):b.push({id:N,ok:!0,processed:L})});const E=S=>{const N=new Map;S.forEach(A=>{N.set(A.id,A)});const M=[],_=[],O=[],L=new Map;return m.forEach(A=>{const k=N.get(A.id);if(!k)return;if(!k.ok){_.push({id:A.id,error:k.error}),x(k.error);return}const I=k.processed;if(typeof I!="object"||I===null){const v=Ql(I,"The row was not saved.");_.push({id:A.id,error:v}),x(v);return}const P=I;L.set(A.id,P),M.push(A.id);for(const v of A.cells){const B=Me(A.row,v.field,v.colDef),V=Me(P,v.field,v.colDef);vt(B,V)||O.push({id:A.id,field:v.field,before:B,after:V})}}),i(L),O.length>0&&u!=="undo"&&u!=="redo"&&t.current.onCommitted?.(O,u),{result:{updated:M,failed:_,skipped:f},committed:O}};return w.length===0?Promise.resolve(E(b)):Promise.all(w).then(S=>E([...b,...S]))},[r,i]);return s.useMemo(()=>({applyEdits:a,getRow:r,storeRow:l}),[a,r,l])}const ut={ok:!1},Ge=e=>({ok:!0,value:e});function zu(e){const t=[];if(e==="")return t;let n=[],o="",r=0;const i=e.length;let l=!0;for(;r<i;){const a=e[r];if(l&&a==='"'){let c=r+1,u="",g=!1;for(;c<i;){const h=e[c];if(h==='"'){if(e[c+1]==='"'){u+='"',c+=2;continue}g=!0,c+=1;break}u+=h,c+=1}if(!g){o+=a,r+=1,l=!1;continue}o+=u,r=c,l=!1;continue}l=!1,a===" "?(n.push(o),o="",l=!0,r+=1):a===`
|
|
4
|
+
`||a==="\r"?(n.push(o),t.push(n),n=[],o="",l=!0,r+=a==="\r"&&e[r+1]===`
|
|
5
|
+
`?2:1):(o+=a,r+=1)}return(!l||n.length>0||o!=="")&&(n.push(o),t.push(n)),t}const Ku=/^\d+(?:\.\d*)?(?:e[+-]?\d+)?$/i,ju=/^\.\d+(?:e[+-]?\d+)?$/i,Uu=/^\d{1,3}(?:,\d{3})+(?:\.\d*)?$/,Ru=/[\p{Sc}\s]/gu;function qu(e){let t=e.replace(Ru,"");if(t==="")return e.trim()===""?Ge(null):ut;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)),Uu.test(t))t=t.split(",").join("");else if(!Ku.test(t)&&!ju.test(t))return ut;let r=Number(t);return Number.isFinite(r)?(o&&(r/=100),n&&(r=-r),Ge(r)):ut}const Xu=/^(\d{4}-\d{2}-\d{2})/,ts=e=>String(e).padStart(2,"0"),Yu=e=>`${e.getFullYear()}-${ts(e.getMonth()+1)}-${ts(e.getDate())}`;function Ju(e,t){const n=e.trim();if(n==="")return Ge(null);const o=wn(n);if(!o)return ut;if(typeof t=="number")return Ge(o.getTime());if(typeof t=="string"){const r=Yu(o);return Ge(Xu.test(t)&&t.length>10?r+t.slice(10):r)}return Ge(o)}const Zu=new Set(["true","yes","1"]),Qu=new Set(["false","no","0"]);function ef(e,t){const n=e.trim().toLowerCase();return n===""?Ge(null):t?.trueLabel!==void 0&&n===t.trueLabel.trim().toLowerCase()?Ge(!0):t?.falseLabel!==void 0&&n===t.falseLabel.trim().toLowerCase()?Ge(!1):Zu.has(n)?Ge(!0):Qu.has(n)?Ge(!1):ut}function tf(e,t){const n=e.trim();if(n==="")return Ge(null);if(!t||t.length===0)return ut;const o=n.toLowerCase();for(const r of t){const i=typeof r=="object"?r.value:r;if(String(i).toLowerCase()===o)return Ge(i)}for(const r of t)if(typeof r=="object"&&r.label.toLowerCase()===o)return Ge(r.value);return ut}function nf(e,t,n){switch(t?.type){case"number":return qu(e);case"date":return Ju(e,n?.current);case"boolean":return ef(e,n?.booleanLabels);case"singleSelect":return tf(e,t.valueOptions);default:return Ge(e)}}function of(e,t,n,o){const{valueParser:r}=t;if(!r)return nf(e,t,o);let i;try{i=r(e,{row:n,field:t.field,colDef:t})}catch{return ut}return i===void 0?ut:Ge(i)}function yr(e,t,n){const o=e.map(t),r=new Map;o.forEach((c,u)=>{r.has(c)||r.set(c,u)});const i=n.filter(c=>Ye(c.field)),l=new Map;i.forEach((c,u)=>{l.set(c.field,u)});const a=n.filter(c=>Qe(c.field)).length;return{rows:e,rowIds:o,rowIndexById:r,columns:i,colIndexByField:l,dataColumnOffset:a}}function Cr(e,t,n,o,r){const i=e.rowIds[o],l=e.columns[r];if(!l||Xe(i,t.rowMetaMap))return!1;const a=t.getSpanOrigin?.(i,l.field);return a&&(a.rowId!==i||a.field!==l.field)?!1:zo({row:n,field:l.field,value:Me(n,l.field,l),colDef:l,rowIndex:o,colIndex:e.dataColumnOffset+r,rowMeta:t.rowMetaMap?.get(i)},t.isCellEditable)}function rf(e,t){let n=1/0,o=-1/0,r=1/0,i=-1/0;for(const l of t){const a=e.rowIndexById.get(l.id),c=e.colIndexByField.get(l.field);a===void 0||c===void 0||(a<n&&(n=a),a>o&&(o=a),c<r&&(r=c),c>i&&(i=c))}return n===1/0?null:{top:n,bottom:o,left:r,right:i}}function ns(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 lf(e){const t=e?.type;return t===void 0||t==="string"||t==="image"}const os=1e4,lo=()=>({updated:[],failed:[],skipped:[]});function sf(e){process.env.NODE_ENV!=="production"&&console.warn(`[OpenGridX] Pasting ${e} cells. Pastes above ${os} cells can be slow; consider importing the data instead.`)}function af(e){const{apiRef:t,containerRef:n,selection:o,disableClipboardPaste:r,disableRangeClear:i}=e,l=s.useRef(e);s.useLayoutEffect(()=>{l.current=e});const a=s.useCallback(()=>{const{allRenderableRows:p,getRowId:f,navigationColumns:m}=l.current;return yr(p,f,m)},[]),c=s.useCallback(()=>{const{selection:p}=l.current;return p.enabled?p.getCurrentRange().resolved:null},[]),u=s.useCallback(p=>{const f=c();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 m=l.current.focusedCell;return m&&m.id!==null&&Ye(m.field)?{id:m.id,field:m.field}:null},[c]),g=s.useCallback(async(p,f,m)=>{const b=a(),w=f??u(b);let C=p;const{onBeforeClipboardPaste:E}=l.current;if(E){const le=Ve(()=>E({text:C,anchor:w}));if(!le.ok)return Tt("onBeforeClipboardPaste","onBeforeClipboardPaste threw; the paste was cancelled",le.error),lo();if(le.value===!1)return lo();typeof le.value=="string"&&(C=le.value)}if(!w)return lo();const S=zu(C),N=b.rowIndexById.get(w.id),M=b.colIndexByField.get(w.field);if(S.length===0||N===void 0||M===void 0)return lo();const _=b.rowIds.length-1,O=b.columns.length-1,L=f?null:c(),A=L&&Ot(L)>1?L:null,k=S.length===1&&S[0].length===1,I=S.reduce((le,ce)=>Math.max(le,ce.length),0);let P;k&&A?P=A:P={top:N,left:M,bottom:Math.min(N+S.length-1,_,A?A.bottom:_),right:Math.min(M+I-1,O,A?A.right:O)};const v=Ot(P);v>os&&sf(v);const{batchEdit:B,isCellEditable:V,rowMetaMap:Q,getSpanOrigin:H}=l.current,z={isCellEditable:V,rowMetaMap:Q,getSpanOrigin:H},W=[],re=[];for(let le=P.top;le<=P.bottom;le++){const ce=b.rowIds[le],K=B.getRow(ce)??b.rows[le],de=k?S[0]:S[le-P.top];for(let X=P.left;X<=P.right;X++){const te=k?S[0][0]:de?.[X-P.left];if(te===void 0)continue;const U=b.columns[X];if(!Cr(b,z,K,le,X)){re.push({id:ce,field:U.field,reason:"notEditable"});continue}const J=of(te,U,K,{current:Me(K,U.field,U)});if(!J.ok){re.push({id:ce,field:U.field,reason:"invalidValue"});continue}W.push({id:ce,field:U.field,value:J.value})}}if(l.current.selection.enabled){const{anchor:le,head:ce}=ns(b,P);l.current.selection.setModel([{anchor:le,head:ce}],m?"keyboard":"api")}const oe=await B.applyEdits(W,"paste"),fe={updated:oe.result.updated,failed:oe.result.failed,skipped:[...re,...oe.result.skipped]};return l.current.onClipboardPaste?.({...fe,text:C}),fe},[a,u,c]),h=s.useCallback(()=>{const p=c();if(!p||Ot(p)<=1)return!1;const f=a(),{batchEdit:m,isCellEditable:b,rowMetaMap:w,getSpanOrigin:C}=l.current,E={isCellEditable:b,rowMetaMap:w,getSpanOrigin:C},S=[];for(let N=p.top;N<=p.bottom;N++){const M=f.rowIds[N];if(M===void 0)continue;const _=m.getRow(M)??f.rows[N];for(let O=p.left;O<=p.right;O++){const L=f.columns[O];!L||!Cr(f,E,_,N,O)||S.push({id:M,field:L.field,value:lf(L)?"":null})}}return m.applyEdits(S,"clear"),!0},[c,a]),x=o.enabled&&!r,y=o.enabled&&!i;s.useEffect(()=>{const p=n.current;if(!p||!x&&!y)return;const f=N=>{const M=l.current.viewportRef.current;if(!M||N.defaultPrevented||l.current.isEditing)return!1;const _=Jn(N.target,M);return _==="grid"||_==="control"};let m=null;const b=()=>{if(!m)return;const{textarea:N,restore:M,timer:_}=m;m=null,window.clearTimeout(_);const O=document.activeElement===N;N.remove(),O&&M&&M.isConnected&&M.focus({preventScroll:!0})},w=()=>{b();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;m={textarea:N,restore:M,timer:window.setTimeout(b,250)},N.focus({preventScroll:!0})},C=N=>m!==null&&N.target===m.textarea,E=N=>{if(C(N)){const _=N.clipboardData?N.clipboardData.getData("text/plain"):"";N.preventDefault(),b(),_!==""&&g(_,void 0,!0);return}if(!x||!f(N)||!l.current.navigationColumns.some(_=>_.editable))return;const M=N.clipboardData?N.clipboardData.getData("text/plain"):"";M!==""&&(N.preventDefault(),g(M,void 0,!0))},S=N=>{if((N.ctrlKey||N.metaKey)&&!N.altKey&&!N.shiftKey&&(N.key==="v"||N.key==="V"||N.code==="KeyV")){x&&f(N)&&l.current.navigationColumns.some(M=>M.editable)&&w();return}!y||N.key!=="Delete"&&N.key!=="Backspace"||N.ctrlKey||N.metaKey||N.altKey||N.shiftKey||f(N)&&h()&&N.preventDefault()};return p.addEventListener("paste",E),p.addEventListener("keydown",S),()=>{b(),p.removeEventListener("paste",E),p.removeEventListener("keydown",S)}},[n,x,y,g,h]),s.useLayoutEffect(()=>{t.current.pasteText=(p,f)=>g(p,f,!1)},[t,g])}const cf=100;function df(){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 rs=()=>({updated:[],failed:[],skipped:[]});function uf(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 ff(e){const{apiRef:t,enabled:n,channel:o,containerRef:r}=e,i=s.useRef(e);s.useLayoutEffect(()=>{i.current=e});const l=s.useRef([]),a=s.useRef([]),c=s.useRef({canUndo:!1,canRedo:!1,size:0}),u=s.useRef(Promise.resolve()),g=s.useCallback(()=>{const b={canUndo:l.current.length>0,canRedo:a.current.length>0,size:l.current.length},w=c.current;w.canUndo===b.canUndo&&w.canRedo===b.canRedo&&w.size===b.size||(c.current=b,i.current.onHistoryChange?.(b))},[]),h=s.useCallback(b=>{if(!i.current.enabled||b.length===0)return;const w=l.current;w.push(b);const C=Math.max(1,i.current.limit);w.length>C&&w.splice(0,w.length-C),a.current=[],g()},[g]);s.useLayoutEffect(()=>(o.setListener(n?h:null),()=>o.setListener(null)),[o,n,h]);const x=s.useCallback(()=>{l.current=[],a.current=[],g()},[g]);s.useEffect(()=>{n||x()},[n,x]);const y=s.useCallback(b=>{const w=i.current,C=yr(w.allRenderableRows,w.getRowId,w.navigationColumns),E=rf(C,b);if(!E)return;const{anchor:S,head:N}=ns(C,E);w.selection.enabled?w.selection.setModel([{anchor:S,head:N}],"keyboard"):w.setFocusedCell({id:S.id,field:S.field,rowIndex:E.top});const M=w.viewportRef.current;M&&(Kn(M,E.top-w.pinnedTopRowCount,w.layout.cumulativeHeights,w.layout.pinnedBottomHeight,w.rowHeight),Vo(M,w.layout.unpinnedColsWithWidth.findIndex(_=>_.field===S.field),w.layout))},[]),p=s.useCallback(b=>{const w=async()=>{if(!i.current.enabled)return rs();const E=b==="undo"?l:a,S=b==="undo"?a:l,N=E.current.pop();if(!N)return rs();g();const M=N.map(L=>b==="undo"?{id:L.id,field:L.field,value:L.before,expect:{value:L.after}}:{id:L.id,field:L.field,value:L.after,expect:{value:L.before}}),_=await i.current.batchEdit.applyEdits(M,b);_.committed.length>0&&S.current.push(b==="undo"?_.committed.map(L=>({id:L.id,field:L.field,before:L.after,after:L.before})):_.committed);const O=new Set(_.result.failed.map(L=>L.id));if(O.size>0){const L=N.filter(A=>O.has(A.id));L.length>0&&E.current.push(L)}return g(),_.committed.length>0&&y(_.committed),_.result},C=u.current.then(w,w);return u.current=C,C},[g,y]),f=s.useCallback(()=>p("undo"),[p]),m=s.useCallback(()=>p("redo"),[p]);s.useEffect(()=>{const b=r.current;if(!b||!n)return;const w=C=>{if(C.defaultPrevented)return;const E=uf(C);if(!E)return;const S=i.current.viewportRef.current;if(!S||i.current.isEditing)return;const N=Jn(C.target,S);N!=="grid"&&N!=="control"||(C.preventDefault(),E==="undo"?f():m())};return b.addEventListener("keydown",w),()=>b.removeEventListener("keydown",w)},[r,n,f,m]),s.useLayoutEffect(()=>{const b=t.current;b.undo=f,b.redo=m,b.canUndo=()=>i.current.enabled&&l.current.length>0,b.canRedo=()=>i.current.enabled&&a.current.length>0,b.clearHistory=x},[t,f,m,x])}function gf(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 vr(e,t){return t===null?e:Number(e.toFixed(Math.min(t,20)))}function pf(e,t){let n=0;for(const l of e){const a=gf(l);n=a===null||n===null?null:Math.max(n,a)}const o=vr(e[1]-e[0],n);for(let l=2;l<e.length;l++)if(vr(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(vr(r+o*l,n));return i}const hf=864e5,is=e=>((e.getHours()*60+e.getMinutes())*60+e.getSeconds())*1e3+e.getMilliseconds(),mf=e=>Math.round(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())/hf),wf=e=>e.getFullYear()*12+e.getMonth(),bf=(e,t)=>new Date(e,t+1,0).getDate();function _r(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 xf(e,t){const n=e[e.length-1],o=e.every(l=>is(l)===is(n));if(o&&e.every(l=>l.getDate()===n.getDate())){const l=_r(e.map(wf));if(l!==null&&l!==0){const a=[];for(let c=1;c<=t;c++){const u=n.getMonth()+l*c,g=n.getFullYear()+Math.floor(u/12),h=(u%12+12)%12,x=new Date(n.getTime());x.setFullYear(g,h,Math.min(n.getDate(),bf(g,h))),a.push(x)}return a}}if(o){const l=_r(e.map(mf));if(l===null)return null;const a=[];for(let c=1;c<=t;c++){const u=new Date(n.getTime());u.setDate(n.getDate()+l*c),a.push(u)}return a}const r=_r(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 yf=e=>typeof e=="number"&&Number.isFinite(e),Cf=e=>e instanceof Date&&!Number.isNaN(e.getTime());function vf(e,t){return e.length<2?null:e.every(yf)?pf(e,t):e.every(Cf)?xf(e,t):null}const _f=e=>e instanceof Date?new Date(e.getTime()):e;function Sf(e,t,n){if(e.length===0||t<=0)return[];const o=n?vf(e,t):null;if(o)return o;const r=[];for(let i=0;i<t;i++)r.push(_f(e[i%e.length]));return r}function kf(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=(c,u)=>{const g=[];if(c<=u)for(let h=c;h<=u;h++)g.push(h);else for(let h=c;h>=u;h--)g.push(h);return g},i=n==="down"||n==="up"?o(e.left,e.right):o(e.top,e.bottom);let l,a;switch(n){case"down":l=o(e.top,e.bottom),a=t.bottom>e.bottom?o(e.bottom+1,t.bottom):[];break;case"up":l=o(e.bottom,e.top),a=t.top<e.top?o(e.top-1,t.top):[];break;case"right":l=o(e.left,e.right),a=t.right>e.right?o(e.right+1,t.right):[];break;default:l=o(e.right,e.left),a=t.left<e.left?o(e.left-1,t.left):[]}return i.map(c=>({line:c,source:l,targets:a}))}function Mf(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 a=e.bottom;a>=Math.max(0,e.bottom-If);a--)if(t(a)===l.rowId)return{row:a,field:l.field};return null}const If=1e3,Lf="ogx__cell-fill-handle";function Af(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 Tf(e){const{containerRef:t,viewportRef:n,selection:o,disableFillHandle:r,isEditing:i,allRenderableRows:l,getRowId:a,navigationColumns:c,columnIndexMap:u,getSpanOrigin:g}=e,h=s.useRef(e);s.useLayoutEffect(()=>{h.current=e});const x=o.enabled&&!r,y=s.useMemo(()=>c.some(_=>_.editable),[c]),p=o.resolved,f=s.useMemo(()=>{if(!x||!y||!p)return null;const _=c.filter(k=>Ye(k.field)).map(k=>k.field),L=Nf(p,k=>{const I=l[k];return I===void 0?void 0:a(I)},_,g);if(!L)return null;const A=u.get(L.field);return A===void 0?null:{row:L.row,col:A}},[x,y,p,l,a,c,u,g]),m=s.useRef(!0);s.useEffect(()=>(m.current=!0,()=>{m.current=!1}),[]);const b=s.useCallback(()=>{const _=h.current;return yr(_.allRenderableRows,_.getRowId,_.navigationColumns)},[]),w=s.useCallback((_,O,L,A,k)=>{const I=Mf(O,L,A),P=v=>({id:_.rowIds[v.row],field:_.columns[v.col].field});h.current.selection.setModel([{anchor:P(I.anchor),head:P(I.head)}],k)},[]),C=s.useCallback(async(_,O,L,A,k,I,P)=>{const{batchEdit:v,isCellEditable:B,rowMetaMap:V,getSpanOrigin:Q}=h.current,H={isCellEditable:B,rowMetaMap:V,getSpanOrigin:Q},z=A==="down"||A==="up",W=ce=>{const K=_.rowIds[ce];return K===void 0?void 0:v.getRow(K)??_.rows[ce]},re=[],oe=[];for(const ce of Ef(O,L,A)){if(ce.targets.length===0)continue;const K=te=>z?{r:te,c:ce.line}:{r:ce.line,c:te},de=[];for(const te of ce.source){const{r:U,c:J}=K(te),se=W(U),ue=_.columns[J];!se||!ue||Xe(_.rowIds[U],V)||de.push(Me(se,ue.field,ue))}if(de.length===0)continue;const X=Sf(de,ce.targets.length,!k);ce.targets.forEach((te,U)=>{const{r:J,c:se}=K(te),ue=W(J),ee=_.columns[se],D=_.rowIds[J];if(!ue||!ee||D===void 0)return;if(!Cr(_,H,ue,J,se)){oe.push({id:D,field:ee.field,reason:"notEditable"});return}let T=X[U];const $=ee.fillValue;if($){const F=Ve(()=>$.call(ee,{row:ue,id:D,field:ee.field,colDef:ee,direction:A,sourceValues:de.slice(),index:U,value:T,copy:k}));if(!F.ok){Tt(`fillValue:${ee.field}`,`fillValue of column "${ee.field}" threw; the cell was skipped`,F.error),oe.push({id:D,field:ee.field,reason:"invalidValue"});return}T=F.value}re.push({id:D,field:ee.field,value:T})})}w(_,L,A,I,P);const fe=await v.applyEdits(re,"fill"),le={updated:fe.result.updated,failed:fe.result.failed,skipped:[...oe,...fe.result.skipped],direction:A};return h.current.onFill?.(le),le},[w]),E=s.useRef(null),S=s.useCallback((_,O,L)=>{const A=E.current,k=h.current.viewportRef.current;if(!A||!k)return;const I=A.ctx,P=I.rowIndexById.get(_.id),v=I.colIndexByField.get(_.field);if(P===void 0||v===void 0)return;const B=O-A.x+k.scrollLeft-A.scrollLeft,V=L-A.y+k.scrollTop-A.scrollTop,Q=kf(A.source,{row:P,col:v},B,V);A.target=Q,Q?w(I,Q.rect,Q.direction,A.anchor,"pointer"):h.current.selection.setModel(A.sourceModel,"pointer")},[w]),N=s.useCallback(({cancelled:_,altKey:O})=>{const L=E.current;if(E.current=null,!L||!m.current)return;const A=L.ctx;if(_||!L.target){h.current.selection.setModel(L.sourceModel,"pointer");return}C(A,L.source,L.target.rect,L.target.direction,O,L.anchor,"pointer")},[C]),M=x&&y;return s.useEffect(()=>{const _=n.current;if(!_||!M)return;const O=L=>{if(L.button!==0||!(L.target instanceof Element))return;const A=L.target.closest(`.${Lf}`);if(!A||A.closest(".ogx__viewport")!==_||h.current.isEditing)return;const{selection:k}=h.current,{range:I,resolved:P}=k.getCurrentRange();if(!I||!P)return;const v=b(),B=v.rowIds[P.bottom],V=v.columns[P.right];if(B===void 0||!V)return;L.preventDefault();const Q=_.ownerDocument;_.contains(Q.activeElement)||_.focus({preventScroll:!0}),Ve(()=>_.setPointerCapture(L.pointerId)),E.current={source:{top:P.top,bottom:P.bottom,left:P.left,right:P.right},sourceModel:[I],anchor:{row:P.anchorRow,col:P.anchorCol},ctx:v,x:L.clientX,y:L.clientY,scrollLeft:_.scrollLeft,scrollTop:_.scrollTop,target:null},k.startTrackedDrag({start:{id:B,field:V.field},x:L.clientX,y:L.clientY,pointerId:L.pointerId,onTrack:S,onEnd:N})};return _.addEventListener("pointerdown",O),()=>_.removeEventListener("pointerdown",O)},[n,M,b,S,N]),s.useEffect(()=>{const _=t.current;if(!_||!x)return;const O=L=>{if(L.defaultPrevented)return;const A=Af(L);if(!A)return;const k=h.current.viewportRef.current;if(!k||h.current.isEditing)return;const I=Jn(L.target,k);if(I!=="grid"&&I!=="control")return;const{range:P,resolved:v}=h.current.selection.getCurrentRange();if(!P||!v)return;L.preventDefault();const B={top:v.top,bottom:v.bottom,left:v.left,right:v.right},V=A==="down"?{...B,bottom:B.top}:{...B,right:B.left};(A==="down"?B.bottom===B.top:B.right===B.left)||C(b(),V,B,A,!0,{row:v.anchorRow,col:v.anchorCol},"keyboard")};return _.addEventListener("keydown",O),()=>_.removeEventListener("keydown",O)},[t,x,C,b]),{handle:i?null:f}}const Pf=e=>e.id,Ff={hasColSpan:!1,hasRowSpan:!1,colspanMap:new Map,rowSpanningCaches:{spannedCells:{},hiddenCells:{},hiddenCellOriginMap:{}},getSpanOrigin:()=>null,getUnpinnedColSpanRanges:()=>{},getCenterRowSpanStart:e=>e},ls="\0",ss="";function as(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 Of(e){return e.map(t=>t.field).join(ls)}function Df(e){const{pinnedTopRows:t,centerRows:n,pinnedBottomRows:o,columns:r,leftPinnedColumns:i,unpinnedColumns:l,rightPinnedColumns:a,expandedRowIds:c,rowMetaMap:u,getRowId:g=Pf}=e,h=s.useMemo(()=>r.some(b=>b.colSpan!==void 0&&b.colSpan!==null),[r]),x=s.useMemo(()=>r.some(b=>b.rowSpan!==void 0&&b.rowSpan!==null),[r]),y=h||x,p=y?[i,l,a].map(Of).join(ss):"",f=s.useMemo(()=>{if(!p)return{columns:[],leftCount:0,unpinnedCount:0};const b=new Map(r.map(S=>[S.field,S])),w=p.split(ss).map(S=>S?S.split(ls):[]),C=[];let E=0;for(const S of w){E+=S.length;for(const N of S){const M=b.get(N)??{field:N};C.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:C,leftCount:w[0].length,unpinnedCount:w[1].length}},[p,r]),m=s.useMemo(()=>{if(!y||f.columns.length===0)return null;const b={colspanMap:new Map,rowSpanningCaches:{spannedCells:{},hiddenCells:{},hiddenCellOriginMap:{}},hiddenOriginFields:new Map,unpinnedRanges:new Map,centerRowSpanStart:new Map},C={spanColumns:f,expandedRowIds:c,rowMetaMap:u,getRowId:g,warned:new Set,out:b};return Sr(t,0,!1,C),Sr(n,t.length,!0,C),Sr(o,t.length+n.length,!1,C),b},[y,f,t,n,o,c,u,g]);return s.useMemo(()=>{if(!m)return Ff;const{colspanMap:b,rowSpanningCaches:w,hiddenOriginFields:C,unpinnedRanges:E,centerRowSpanStart:S}=m,N=f.columns;return{hasColSpan:h,hasRowSpan:x,colspanMap:b,rowSpanningCaches:w,getSpanOrigin:(M,_)=>{const O=b.get(M)?.[_];if(O?.spannedByColSpan)return{rowId:M,field:N[O.leftVisibleCellIndex].field};const L=w.hiddenCellOriginMap[M]?.[_];return L===void 0?null:{rowId:L,field:C.get(M)?.[_]??_}},getUnpinnedColSpanRanges:M=>E.get(M),getCenterRowSpanStart:M=>S.get(M)??M}},[m,h,x,f])}function Sr(e,t,n,o){const{spanColumns:r,expandedRowIds:i,rowMetaMap:l,getRowId:a,warned:c,out:u}=o,{columns:g,leftCount:h,unpinnedCount:x}=r,y=g.length,{colspanMap:p,rowSpanningCaches:f,hiddenOriginFields:m,unpinnedRanges:b,centerRowSpanStart:w}=u,C=new Int32Array(y),E=new Array(y),S=new Array(y),N=new Int32Array(y);let M=0;const _=[];g.forEach((A,k)=>{(A.hasColSpan||A.hasRowSpan)&&_.push(k)});const O=(A,k,I)=>{const P=g[I].field;if(Zt(f.hiddenCells,A,P,!0),Zt(f.hiddenCellOriginMap,A,P,E[I]),S[I]!==P&&Zt(m,A,P,S[I]),n){const v=w.get(k);(v===void 0||N[I]<v)&&w.set(k,N[I])}},L=(A,k,I)=>{const P=g[I],v=a(A),B=$f(A,v,P.colDef,t+k,I,l,c);let V=1;if(P.hasColSpan){const H=Math.min(cs(P.colDef.colSpan,B,"colSpan",P.field,c),P.sectionEnd-I);for(;V<H&&C[I+V]<=k;)V++}let Q=1;if(P.hasRowSpan){Q=Math.min(cs(P.colDef.rowSpan,B,"rowSpan",P.field,c),e.length-k);for(let H=1;H<Q;H++)if(Xe(a(e[k+H]),l)){Q=H;break}if(Q>1&&i&&i.size>0){for(let H=0;H<Q-1;H++)if(i.has(a(e[k+H]))){Q=H+1;break}}}if(V>1){Zt(p,v,P.field,{spannedByColSpan:!1,cellProps:{colSpan:V}});for(let H=1;H<V;H++){const z=g[I+H];Zt(p,v,z.field,{spannedByColSpan:!0,leftVisibleCellIndex:I,rightVisibleCellIndex:I+V-1})}if(I>=h&&I<h+x){let H=b.get(v);H||(H=[],b.set(v,H)),H.push(I-h,I+V-1-h)}}if(Q>1){Zt(f.spannedCells,v,P.field,Q);for(let H=I;H<I+V;H++)C[H]=k+Q,E[H]=v,S[H]=P.field,N[H]=k;k+Q>M&&(M=k+Q)}return V};for(let A=0;A<e.length;A++){const k=e[A];if(!k||k._isSkeleton||Xe(a(k),l))continue;if(M<=A){let P=0;for(const v of _)v>=P&&(P=v+L(k,A,v));continue}let I=0;for(;I<y;)C[I]>A?(O(a(k),A,I),I++):g[I].hasColSpan||g[I].hasRowSpan?I+=L(k,A,I):I++}}function $f(e,t,n,o,r,i,l){const a=e[n.field];let c=a;if(n.valueGetter)try{c=n.valueGetter({row:e,field:n.field,value:a})}catch(u){ds(l,`valueGetter:${n.field}`,`valueGetter for column "${n.field}" threw while computing its span`,u),c=void 0}return{row:e,value:c,field:n.field,colDef:n,rowIndex:o,colIndex:r,rowMeta:i?.get(t)}}function cs(e,t,n,o,r){if(typeof e=="number")return as(e);if(typeof e!="function")return 1;try{return as(e(t))}catch(i){return ds(r,`${n}:${o}`,`${n} for column "${o}" threw; the cell is rendered without a span`,i),1}}function ds(e,t,n,o){process.env.NODE_ENV==="production"||e.has(t)||(e.add(t),console.warn(`[OpenGridX] ${n}.`,o))}function Zt(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 Hf(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 a=n,c=o,u=!0;for(;u;){u=!1;for(const{row:b,id:w}of l){const C=t.getUnpinnedColSpanRanges(w??b.id);if(C)for(let E=0;E<C.length;E+=2){const S=C[E],N=C[E+1];N<a||S>c||(S<a&&(a=S,u=!0),N>c&&(c=N,u=!0))}}}if(a===n&&c===o)return r;const{leftPinnedCols:g,unpinnedColsWithWidth:h,rightPinnedCols:x,unpinnedAccWidths:y,unpinnedTotalWidth:p}=i,f=a>0?y[a-1]:0,m=p-y[c];return[...g,...f>0?[{field:"__spacer_left__",width:f,isSpacer:!0}]:[],...h.slice(a,c+1),...m>0?[{field:"__spacer_right__",width:m,isSpacer:!0}]:[],...x]},[t,n,o,r,i,l])}function Bf(e,t){const{draggedColumn:n,onDragOver:o,onDrop:r,onDragEnd:i}=t,l=s.useMemo(()=>{if(!e||e.length===0)return null;const a=c=>n===null||pr(e,n,c);return{onDragOver:o&&(c=>a(c)?o(c):()=>{}),onDrop:r&&(c=>a(c)?r(c):u=>{u.preventDefault(),i?.()})}},[e,n,o,r,i]);return l?{...t,...l}:t}const Wf=300,us=e=>e.id;function Vf(e,t){return e==="infinite"?"infinite":e==="server"?t?"all":"page":"all"}function fs(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 gs(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 zf(e){const{dataSource:t,sortModel:n,filterModel:o,paginationModel:r,paginationMode:i,sortingMode:l,filterMode:a,aggregationModel:c,rowGroupingActive:u=!1}=e,g=Vf(i,u),h=!!t&&i==="server"&&u,x=s.useRef(!1);s.useEffect(()=>{process.env.NODE_ENV==="production"||x.current||!h||(x.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."))},[h]);const y=t?.getRows,p=Cl({dataSource:t,paginationMode:i,sortingMode:l,filterMode:a}),f=JSON.stringify([g,g!=="all"||l==="server"?n:null,g!=="all"||a==="server"?o:null,p?c??null:null,g==="all"?null:r.pageSize]),m=g==="all"?0:r.page,b=g==="all"?0:r.pageSize,w=s.useRef({params:e,kind:g});s.useLayoutEffect(()=>{w.current={params:e,kind:g}});const C=s.useRef(0),E=s.useRef(0),S=s.useRef(null),N=s.useRef({page:0,loadedEnd:0,inFlightEnd:null}),M=s.useRef(null),_=s.useRef(!1),O=s.useRef(0),L=s.useRef(!1),A=s.useRef(new Set),k=s.useCallback(()=>{const z=_.current||O.current>0;z!==L.current&&(L.current=z,w.current.params.setDataSourceLoading(z))},[]),I=s.useCallback(()=>{M.current!==null&&(clearTimeout(M.current),M.current=null)},[]),P=s.useCallback(()=>{C.current++,N.current.inFlightEnd=null,_.current=!1},[]),v=s.useCallback(()=>{E.current++,A.current.clear(),O.current=0},[]),B=s.useCallback(async()=>{const{params:z,kind:W}=w.current,re=z.dataSource;if(!re)return!1;const oe=N.current,fe=z.paginationModel.pageSize;let le,ce;if(W==="infinite"){if(oe.inFlightEnd!==null)return!1;if(le=oe.loadedEnd,ce=(oe.page+1)*fe,ce<=le)return _.current=!1,k(),!1;oe.inFlightEnd=ce}else W==="page"?(le=z.paginationModel.page*fe,ce=le+fe):(le=0,ce=vl);const K=++C.current;_.current=!0,k(),z.setDataSourceError(null);let de;try{de=await re.getRows({startRow:le,endRow:ce,sortModel:z.sortModel,filterModel:z.filterModel,groupKeys:[],aggregationModel:z.aggregationModel})}catch(X){return K!==C.current||(oe.inFlightEnd=null,_.current=!1,w.current.params.setDataSourceError(X),console.error("Data Source Error:",X),k()),!1}if(K!==C.current)return!1;try{const{params:X}=w.current,te=X.getRowId??us,U=fs(de.rows,te);if(W==="infinite"&&le>0?X.setRows(J=>gs(J,U,te),!0):(X.setRows(U.map(J=>J.row),!0),v()),de.aggregationResults&&X.onAggregationResults?.(de.aggregationResults),de.rowCount!==void 0&&X.setRowCount(de.rowCount),W==="infinite"&&(oe.inFlightEnd=null,oe.loadedEnd=le+de.rows.length,de.rows.length>=ce-le&&(oe.page+1)*fe>ce))return!0}catch(X){return oe.inFlightEnd=null,_.current=!1,w.current.params.setDataSourceError(X),console.error("Data Source Error:",X),k(),!1}return _.current=!1,k(),!1},[k,v]),V=s.useCallback(async()=>{for(;await B(););},[B]);s.useLayoutEffect(()=>{if(!y){S.current&&(S.current=null,I(),P(),v(),w.current.params.setDataSourceError(null),k());return}const z=S.current,W=N.current;if(!z||z.key!==f||z.getRows!==y){S.current={key:f,getRows:y},P(),v();const re=g==="infinite"&&z!==null&&m!==0;if(W.page=re?0:m,W.loadedEnd=0,re){const{params:oe}=w.current;oe.onPaginationModelChange?.({...oe.paginationModel,page:0})}}else g==="infinite"?(m<W.page&&(P(),W.loadedEnd=0),W.page=m):P();if(g==="infinite"){const re=W.inFlightEnd!==null;if(re||(W.page+1)*b<=W.loadedEnd){_.current=re,k();return}}return _.current=!0,k(),M.current=setTimeout(()=>{M.current=null,V()},Wf),I},[y,f,g,m,b,I,P,v,k,V]),s.useEffect(()=>()=>{P(),v()},[P,v]);const Q=s.useCallback(()=>(I(),V()),[I,V]),H=s.useCallback(async(z,W,re)=>{const{params:oe}=w.current,fe=oe.dataSource;if(!fe)return;const le=JSON.stringify(W),ce=A.current;if(ce.has(le))return;const K=E.current;ce.add(le),O.current++,k();try{const de=await fe.getRows({startRow:0,endRow:vl,sortModel:oe.sortModel,filterModel:oe.filterModel,groupKeys:W,aggregationModel:oe.aggregationModel});if(K!==E.current)return;if(de.rows.length>0){const{params:X}=w.current,te=X.getRowId??us,U=fs(de.rows,te);X.setRows(J=>gs(J,U,te),!0)}}catch(de){if(K!==E.current)return;ce.delete(le),console.error("Failed to fetch children:",de),re?.(de)}finally{K===E.current&&(O.current--,k())}},[k]);return{fetchRows:Q,fetchChildren:H}}function Kf(e){return(e.serverChildrenCount??0)>0&&(e.children?.length??0)===0}function jf({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((a,c)=>{!Kf(a)||!n(c)||i(c,o(c),()=>{const{isGroupExpanded:u,toggleExpansion:g}=l.current;u(c)&&g(c)})})},[e,t,n,o,i])}const ps={};function Uf(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 hs(e){const{rows:t,columns:n,aggregationModel:o,isServerSide:r,dataSource:i,filterModel:l,sortModel:a,serverAggregationResults:c}=e,u=Object.keys(o).length>0,g=s.useMemo(()=>{const S=new Map;return(n??[]).forEach(N=>S.set(N.field,N)),S},[n]),h=s.useMemo(()=>r||!u?ps:jn(t,o,g,"useAggregation"),[t,g,o,r,u]),x=JSON.stringify([o,l??null,a??[]]),y=r&&u&&!!i?.getAggregations&&!c,p=s.useRef({aggregationModel:o,filterModel:l,sortModel:a});s.useEffect(()=>{p.current={aggregationModel:o,filterModel:l,sortModel:a}});const[f,m]=s.useState(null);s.useEffect(()=>{const S=i?.getAggregations;if(!y||!S)return;let N=!1;const M=p.current,_={sortModel:M.sortModel??[],filterModel:M.filterModel??{items:[]},groupKeys:[],aggregationModel:M.aggregationModel};let O;try{O=Promise.resolve(S(_))}catch(L){O=Promise.reject(L)}return O.then(L=>{N||m({key:x,result:L,error:null})},L=>{N||(console.error("[useAggregation] Server aggregation error:",L),m({key:x,result:null,error:L}))}),()=>{N=!0}},[y,i,x]);const b=f&&f.key===x?f:null,w=y&&b===null,C=y?b?.error??null:null;return{aggregationResult:s.useMemo(()=>r?c&&Object.keys(c).length>0?c:b?.result??ps:h,[r,h,c,b]),isLoading:w,error:C}}const Rf={items:[]},qf=[];function Xf(e){const{rows:t,columns:n,pivotMode:o,pivotModel:r,filterModel:i,sortModel:l,hasDataSource:a,hierarchyRequested:c}=e,u=o&&!a,g=s.useMemo(()=>new Set(n.map(b=>b.field)),[n]),h=s.useMemo(()=>er(n),[n]),x=s.useMemo(()=>hc(i,g),[i,g]),y=s.useMemo(()=>u?Xo(t,x.source,h):t,[u,t,x.source,h]),p=s.useMemo(()=>u?ji(y,n,r,{outputFilterModel:x.output,sortModel:l}):nr,[u,y,n,r,x.output,l]),f=u&&p.isValid,m=s.useRef({dataSource:!1,hierarchy:!1});return s.useEffect(()=>{process.env.NODE_ENV!=="production"&&(o&&a&&!m.current.dataSource&&(m.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&&c&&!m.current.hierarchy&&(m.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,a,f,c]),{isActive:f,rows:f?p.pivotRows:t,columns:f?p.pivotColumns:n,pipelineFilterModel:f?Rf:i,pipelineSortModel:f?qf:l}}const nt=({variant:e="text",size:t="medium",color:n="default",disabled:o=!1,className:r="",type:i="button",children:l,...a})=>{const c=["ogx-button",`ogx-button--${e}`,`ogx-button--${t}`,`ogx-button--${n}`,o&&"ogx-button--disabled",r].filter(Boolean).join(" ");return d.jsx("button",{type:i,className:c,disabled:o,...a,children:l})};function kr(e){const t=s.useId(),{page:n,pageSize:o,rowCount:r,onPageChange:i,onPageSizeChange:l,pageSizeOptions:a=[10,25,50,100],showFirstButton:c=!0,showLastButton:u=!0,localeText:g}=e,h=to(o),x=sr(r,h),y=sl(n,x),p=a.includes(h)?a:[...a,h].sort((k,I)=>k-I),f=y*h,m=Math.min(f+h,r),b=r===0?0:`${f+1}–${m}`,w=g?.paginationRowsPerPage??"Rows per page:",C=g?.paginationOf?g.paginationOf(r===0?0:f+1,m,r):`${b} of ${r}`,E=g?.paginationPage?g.paginationPage(y+1,x):`Page ${y+1} of ${x}`,S=()=>{i(0)},N=()=>{i(Math.max(0,y-1))},M=()=>{i(Math.min(x-1,y+1))},_=()=>{i(x-1)},O=k=>{const I=parseInt(k.target.value,10);l(I)},L=y===0,A=y>=x-1;return d.jsxs("div",{className:"ogx-pagination",role:"navigation","aria-label":"Pagination",children:[d.jsxs("div",{className:"ogx-pagination__page-size",children:[d.jsx("label",{htmlFor:t,className:"ogx-pagination__label",children:w}),d.jsx("select",{id:t,className:"ogx-pagination__select",value:h,onChange:O,children:p.map(k=>d.jsx("option",{value:k,children:k},k))})]}),d.jsx("div",{className:"ogx-pagination__info","aria-live":"polite","aria-atomic":"true",children:C}),d.jsxs("div",{className:"ogx-pagination__actions",children:[c&&d.jsx(nt,{variant:"text",size:"small",onClick:S,disabled:L,"aria-label":"Go to first page",title:"First page",children:d.jsx("svg",{className:"ogx-pagination__icon",width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:d.jsx("path",{d:"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"})})}),d.jsx(nt,{variant:"text",size:"small",onClick:N,disabled:L,"aria-label":"Go to previous page",title:"Previous page",children:d.jsx("svg",{className:"ogx-pagination__icon",width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:d.jsx("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})})}),d.jsx("div",{className:"ogx-pagination__page-info","aria-current":"page",children:E}),d.jsx(nt,{variant:"text",size:"small",onClick:M,disabled:A,"aria-label":"Go to next page",title:"Next page",children:d.jsx("svg",{className:"ogx-pagination__icon",width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:d.jsx("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})})}),u&&d.jsx(nt,{variant:"text",size:"small",onClick:_,disabled:A,"aria-label":"Go to last page",title:"Last page",children:d.jsx("svg",{className:"ogx-pagination__icon",width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:d.jsx("path",{d:"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"})})})]})]})}function Yf({row:e,rowId:t,rowIndex:n,ariaRowIndex:o,listViewColumn:r,gridColumn:i,rowMeta:l,isSelected:a=!1,checkboxSelection:c=!1,rowHeight:u,onRowClick:g,onRowDoubleClick:h,onSelectionChange:x,tabIndex:y=-1,onFocus:p,onToggleExpansion:f}){const m=t??e.id,b=r.field,w=Me(e,b,i),C=$o(e,b,w,i)??Go(w,i),E=l?.isGroupRow===!0||Xe(m),S={row:e,value:w,formattedValue:C,field:b,colDef:i??r,rowIndex:n,colIndex:0,rowMeta:l},N=M=>{M.stopPropagation(),x?.(m,M.target.checked)};return d.jsxs("div",{className:`ogx-list-view__row${a?" ogx-list-view__row--selected":""}`,style:u?{minHeight:u}:void 0,onClick:()=>g?.(e),onDoubleClick:h?()=>h(e):void 0,role:"row","aria-rowindex":o??n+1,"aria-selected":a,"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:[c&&d.jsx("div",{className:"ogx-list-view__checkbox",onClick:M=>M.stopPropagation(),children:!E&&d.jsx(Ct,{checked:a,onChange:N,"aria-label":`Select row ${m}`,tabIndex:-1})}),l&&f&&d.jsx("div",{className:"ogx-list-view__expand",style:{paddingInlineStart:(l.treeDepth??0)*16},onClick:M=>M.stopPropagation(),onDoubleClick:M=>M.stopPropagation(),children:l.hasChildren&&d.jsx(ur,{isExpanded:l.isExpanded===!0,onClick:()=>f(m),tabIndex:-1})}),d.jsx("div",{className:"ogx-list-view__cell",role:"gridcell",children:d.jsx(Dt,{field:b,resetKey:e,renderFn:()=>{const M=r.renderCell(S);return M===void 0&&E?l?.groupLabel:M}})})]})}function Jf(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=gl(i.currentTarget);if(!l){n.current=!0;return}if(!n.current)return;const a=o.current;a&&(n.current=!1,a(l))},[]);return e?r:void 0}const Zf=e=>e.id;function Qf({ariaLabel:e,allRenderableRows:t,dataRowCount:n,pinnedTopRowCount:o,pinnedBottomRowCount:r,unpinnedRowCount:i,pagination:l,effectivePaginationModel:a,currentPage:c,pageSizeOptions:u,selectedRowIds:g,listViewColumn:h,columnsByField:x,rowMetaMap:y,noRowsLabel:p,rowHeight:f,checkboxSelection:m,paginationMode:b,serverRowCount:w,paginationSlot:C,paginationSlotProps:E,localeText:S,onRowClick:N,onRowDoubleClick:M,onSelectionChange:_,onPaginationModelChange:O,onRowsScrollEnd:L,getRowId:A=Zf,multiselectable:k=!1,loading:I=!1,loadingOverlay:P,noRowsOverlay:v,showPaginationControls:B=!0,selectable:V=!1,onToggleExpansion:Q}){const H=C||kr,z=s.useRef(null),[W,re]=s.useState(null),oe=W===null?-1:t.findIndex(D=>A(D)===W),fe=oe===-1?0:oe,le=D=>{const T=t[D];T&&(re(A(T)),z.current?.querySelector(`:scope > [role="row"][data-rowindex="${D}"]`)?.focus())},ce=D=>{const T=D.target;if(T.getAttribute("role")!=="row"||T.parentElement!==z.current)return;const $=Number(T.getAttribute("data-rowindex")),F=t[$];if(!F)return;const Z=A(F),G=t.length-1,Y=y.get(Z),j=!!(Y?.hasChildren&&Q);if(D.altKey&&(D.key==="ArrowRight"||D.key==="ArrowLeft")){D.preventDefault();const q=Vn(D.key,Je(D.currentTarget))==="ArrowRight";j&&q!==(Y?.isExpanded===!0)&&Q?.(Z);return}switch(D.key){case"ArrowDown":D.preventDefault(),le(Math.min($+1,G));return;case"ArrowUp":D.preventDefault(),le(Math.max($-1,0));return;case"Home":D.preventDefault(),le(0);return;case"End":D.preventDefault(),le(G);return;case"PageDown":D.preventDefault(),le(Math.min($+10,G));return;case"PageUp":D.preventDefault(),le(Math.max($-10,0));return;case"Enter":case" ":if(D.preventDefault(),D.key===" "&&D.shiftKey){V&&!Y?.isGroupRow&&_(Z,!g.has(Z));return}j?Q?.(Z):N({row:F,id:Z,rowIndex:$});return}},K=b==="server",de=K?w||0:i,X=K?w||0:n,te=to(a.pageSize),U=sr(de,te),J=l?c*te:0,se=t.length-o-r,ue=D=>{if(D<o)return D+1;const T=D-o;return T<se?o+J+T+1:o+de+(T-se)+1},ee=Jf(L,t.length);return d.jsxs("div",{className:"ogx-list-view",role:"grid","aria-label":e||"Data grid list view","aria-rowcount":X,"aria-multiselectable":k,children:[d.jsx("div",{className:"ogx-list-view__toolbar",children:d.jsxs("span",{children:[X," ",X===1?"item":"items",l?` · page ${c+1} of ${U}`:"",g.size>0?` · ${g.size} selected`:""]})}),d.jsx("div",{className:"ogx-list-view__rows",tabIndex:-1,onScroll:ee,onKeyDown:ce,ref:z,children:t.length===0&&I?d.jsx("div",{className:"ogx-list-view__loading",children:P??d.jsx("div",{className:"ogx__loading-bar",role:"progressbar","aria-label":"Loading data"})}):t.length===0&&v?d.jsx("div",{className:"ogx-list-view__empty",children:v}):t.length===0?d.jsxs("div",{className:"ogx-list-view__empty",children:[d.jsxs("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:[d.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),d.jsx("path",{d:"M3 9h18M9 21V9"})]}),p]}):t.map((D,T)=>{const $=A(D);return d.jsx(Yf,{row:D,rowId:$,rowIndex:T,ariaRowIndex:ue(T),listViewColumn:h,gridColumn:x.get(h.field),rowMeta:y.get($),isSelected:g.has($),checkboxSelection:m,rowHeight:f,onRowClick:F=>N({row:F,id:$,rowIndex:T}),onRowDoubleClick:M?F=>M({row:F,id:$,rowIndex:T}):void 0,onSelectionChange:_,tabIndex:T===fe?0:-1,onToggleExpansion:Q,onFocus:F=>re(A(t[F]))},$)})}),l&&B&&d.jsx(H,{page:c,pageSize:a.pageSize,rowCount:de,pageSizeOptions:u,onPageChange:D=>O({...a,page:D}),onPageSizeChange:D=>O({...a,pageSize:D,page:0}),localeText:S,...E})]})}function eg({overlay:e}){return e?d.jsx("div",{className:"ogx__loading-overlay ogx__loading-overlay--over-rows ogx__loading-overlay--custom",children:e}):d.jsx("div",{className:"ogx__loading-overlay ogx__loading-overlay--over-rows",children:d.jsx("div",{className:"ogx__loading-bar",role:"progressbar","aria-label":"Loading data"})})}function Sn(e){return e.headerName||e.field}function tg(e){return e.nativeEvent.isComposing||e.keyCode===229}function kn(e,t,n=!0){return o=>{if(tg(o)){o.stopPropagation();return}n&&o.key==="Enter"&&(o.stopPropagation(),e()),o.key==="Escape"&&(o.stopPropagation(),t())}}function ng({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const[i,l]=s.useState(String(e??"")),a=s.useRef(null);return s.useEffect(()=>{a.current?.focus(),a.current?.select()},[]),d.jsx(et,{ref:a,variant:"cell",type:"text",inputClassName:"ogx__edit-input","aria-label":Sn(t),value:i,onChange:c=>{l(c.target.value),n(c.target.value)},onBlur:o,onKeyDown:kn(o,r)})}function og({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const[i,l]=s.useState(typeof e=="number"?e:""),a=s.useRef(null);return s.useEffect(()=>{a.current?.focus(),a.current?.select()},[]),d.jsx(et,{ref:a,variant:"cell",type:"number",inputClassName:"ogx__edit-input ogx__edit-input--number","aria-label":Sn(t),value:i,onChange:c=>{const u=c.target.value===""?"":Number(c.target.value);l(u),n(u===""?null:u)},onBlur:o,onKeyDown:kn(o,r)})}function rg({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 d.jsx("div",{className:"ogx__edit-boolean",onMouseDown:a=>a.preventDefault(),children:d.jsx(Ct,{ref:i,inputClassName:"ogx__edit-checkbox","aria-label":Sn(t),checked:!!e,onChange:l,onMouseDown:a=>a.preventDefault(),onBlur:o,onKeyDown:kn(o,r,!1)})})}const Er=e=>typeof e=="object"?e.value:e,ig=e=>typeof e=="object"?e.label:String(e);function lg(e,t){return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Object.is(e,t)}function sg({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const i=s.useRef(null);s.useEffect(()=>{i.current?.focus()},[]);const l=t.valueOptions??[],a=l.map(g=>String(Er(g)));let c=l.findIndex(g=>lg(Er(g),e));c===-1&&e!==null&&e!==void 0&&(c=a.indexOf(String(e)));const u=c===-1;return d.jsxs("select",{ref:i,className:"ogx__edit-select","aria-label":Sn(t),value:u?"":a[c],onChange:g=>{const h=a.indexOf(g.target.value);n(h===-1?null:Er(l[h]))},onBlur:o,onKeyDown:kn(o,r),children:[u&&d.jsx("option",{value:""}),l.map((g,h)=>d.jsx("option",{value:a[h],children:ig(g)},h))]})}const ms=e=>String(e).padStart(2,"0"),ws=/^(\d{4}-\d{2}-\d{2})/;function Mr(e){if(e instanceof Date)return Number.isNaN(e.getTime())?"":`${e.getFullYear()}-${ms(e.getMonth()+1)}-${ms(e.getDate())}`;if(typeof e=="string"){const t=ws.exec(e);return t?t[1]:e===""?"":Mr(new Date(e))}return typeof e=="number"?Mr(new Date(e)):""}function ag(e,t){if(e==="")return null;const[n,o,r]=e.split("-").map(Number),i=l=>{const a=new Date(l.getTime());return a.setFullYear(n,o-1,r),a};return t instanceof Date&&!Number.isNaN(t.getTime())?i(t):typeof t=="number"&&Number.isFinite(t)?i(new Date(t)).getTime():typeof t=="string"&&ws.test(t)&&t.length>10?e+t.slice(10):e}function cg({value:e,colDef:t,onValueChange:n,onCommit:o,onCancel:r}){const[i]=s.useState(e),[l,a]=s.useState(()=>Mr(e)),c=s.useRef(null);return s.useEffect(()=>{c.current?.focus()},[]),d.jsx(et,{ref:c,variant:"cell",type:"date",inputClassName:"ogx__edit-input","aria-label":Sn(t),value:l,onChange:u=>{a(u.target.value),n(ag(u.target.value,i))},onBlur:o,onKeyDown:kn(o,r)})}function dg(e){const{colDef:t}=e;switch(t.type){case"number":return d.jsx("div",{className:"ogx__edit-cell",children:d.jsx(og,{...e})});case"boolean":return d.jsx("div",{className:"ogx__edit-cell",children:d.jsx(rg,{...e})});case"singleSelect":return d.jsx("div",{className:"ogx__edit-cell",children:d.jsx(sg,{...e})});case"date":return d.jsx("div",{className:"ogx__edit-cell",children:d.jsx(cg,{...e})});default:return d.jsx("div",{className:"ogx__edit-cell",children:d.jsx(ng,{...e})})}}function ug(e){const{onCellClick:t,onCellEditStart:n,onCellValueChange:o,value:r,row:i,colDef:l,rowIndex:a,colIndex:c,ariaColIndex:u,isSelected:g,onClick:h,width:x,pinnedPosition:y,pinnedOffset:p,isPinnedEdge:f,isFocused:m,isFocusVisible:b,isEditable:w,isEditing:C,onEditStart:E,onEditStop:S,onValueChange:N,colSpanInfo:M,rowSpan:_,isHiddenByRowSpan:O,rowMeta:L,valueError:A,rangeFlags:k=0}=e,I=s.useCallback(ee=>{o?o(l.field,ee):N?.(ee)},[o,N,l.field]),P=L?.isGroupRow===!0,{formattedValue:v,error:B}=s.useMemo(()=>{const ee=l.valueFormatter;if(ee&&!(P&&r==null)){const D=Ve(()=>ee({value:r,row:i,field:l.field}));return D.ok?{formattedValue:D.value}:{formattedValue:"",error:D.error??new Error("valueFormatter failed")}}return{formattedValue:Go(r,l)}},[r,i,l,P]),V=s.useMemo(()=>{if(!l.cellClassName)return"";const ee=l.cellClassName;if(typeof ee=="function"){const D=Ve(()=>ee({value:r,formattedValue:v,row:i,field:l.field,colDef:l,rowIndex:a,colIndex:c,rowMeta:L}));return D.ok&&D.value||""}return l.cellClassName},[l,r,v,i,a,c,L]),Q=A??B,H=l.field,z=s.useCallback(()=>{S?.(!1,H)},[S,H]),W=s.useCallback(()=>{S?.(!0,H)},[S,H]),re=s.useMemo(()=>[i,l.renderCell,r],[i,l.renderCell,r]),oe=s.useRef(!1);if(s.useEffect(()=>{if(!(!C||!S))return oe.current=!0,()=>{oe.current=!1,queueMicrotask(()=>{oe.current||S(!1,H)})}},[C,S,H]),M?.spannedByColSpan)return null;const fe=M?.cellProps.colSpan??1,le=fe>1,ce=(le?M?.cellProps.width:void 0)??x??l.width??100,K={width:"var(--width)","--width":typeof ce=="number"?`${ce}px`:ce,flexGrow:(le?M?.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(O)return d.jsx("div",{className:"ogx__cell ogx__cell--hidden",style:K,role:"presentation","data-field":l.field,"data-colindex":c});const de=ee=>{C||(t&&t({row:i,field:l.field,value:r,colDef:l,rowIndex:a,colIndex:c}),h?.(ee))},X=()=>{C||!w||(n?n(l.field,r):E?.())},te=l.renderEditCell,U=y!=null,J=["ogx__cell",`ogx__cell--align-${l.align||"left"}`,g&&"ogx__cell--selected",m&&"ogx__cell--focused",m&&b&&"ogx__cell--focus-visible",l.type&&`ogx__cell--type-${l.type}`,U&&"ogx__cell--pinned",U&&`ogx__cell--pinned-${y}`,U&&f&&`ogx__cell--pinned-${y}-${y==="left"?"last":"first"}`,C&&"ogx__cell--editing",_&&_>1&&"ogx__cell--spanned",(k&ir)!==0&&"ogx__cell--range",(k&Zi)!==0&&"ogx__cell--range-top",(k&Qi)!==0&&"ogx__cell--range-bottom",(k&el)!==0&&"ogx__cell--range-left",(k&tl)!==0&&"ogx__cell--range-right",V].filter(Boolean).join(" "),se=_||1,ue={...K,position:U?"sticky":void 0,zIndex:l.zIndex??(U?3:void 0),padding:C?0:void 0};return se>1&&(ue.height=`calc(var(--height) * ${se} - var(--border-width, 1px))`,ue.zIndex=10,U&&(ue.zIndex=40)),U&&p!==void 0&&(y==="left"?ue.insetInlineStart=p:ue.insetInlineEnd=p),d.jsxs("div",{className:J,style:ue,onClick:de,onDoubleClick:X,role:"gridcell","aria-colindex":u??c+1,"aria-readonly":!w||void 0,tabIndex:-1,"data-field":l.field,"data-colindex":c,...fe>1?{"aria-colspan":fe}:{},...se>1?{"aria-rowspan":se}:{},...(k&ir)!==0?{"aria-selected":!0}:{},children:[d.jsx("div",{className:"ogx__cell-content",children:C&&(o||N)&&S?te?d.jsx(Dt,{field:l.field,resetKey:i,renderFn:()=>te({value:r,formattedValue:v,row:i,field:l.field,colDef:l,rowIndex:a,colIndex:c,rowMeta:L,onValueChange:I,onCommit:z,onCancel:W})}):d.jsx(dg,{value:r,formattedValue:v,row:i,field:l.field,colDef:l,rowIndex:a,colIndex:c,rowMeta:L,onValueChange:I,onCommit:z,onCancel:W}):Q!==void 0?d.jsx(Dt,{field:l.field,resetKey:i,renderFn:()=>{throw Q}}):l.renderCell?d.jsx(Dt,{field:l.field,resetKey:re,renderFn:()=>l.renderCell({value:r,formattedValue:v,row:i,field:l.field,colDef:l,rowIndex:a,colIndex:c,rowMeta:L})}):l.type==="image"&&typeof r=="string"&&r!==""?d.jsx("img",{className:"ogx__cell-image",src:r,alt:l.headerName??l.field,loading:"lazy"}):v}),(k&nl)!==0&&!C&&d.jsx("div",{className:"ogx__cell-fill-handle","aria-hidden":"true"})]})}const bs=s.memo(ug),fg=({className:e="",...t})=>d.jsx("button",{type:"button",className:`ogx-drag-handle ${e}`,"aria-label":"Drag to reorder row",...t,children:d.jsx("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"currentColor","aria-hidden":"true",children:d.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 gg(e){const{rowId:t,content:n,height:o,isExpanded:r,onHeightChange:i,id:l,colSpan:a}=e,c=s.useRef(null),u=o==="auto";if(s.useLayoutEffect(()=>{const h=c.current;if(!h||!u||!r||!i)return;const x=()=>{h.getClientRects().length!==0&&i(t,h.offsetHeight)};if(x(),typeof ResizeObserver>"u")return;const y=new ResizeObserver(x);return y.observe(h),()=>y.disconnect()},[u,r,i,t]),!r)return null;const g={height:u?"auto":`${o}px`,overflow:u?"visible":"auto"};return d.jsx("div",{ref:c,className:"ogx__detail-panel",style:g,role:"row",id:l,children:d.jsx("div",{className:"ogx__detail-panel-content",role:"gridcell","aria-colspan":a,children:n})})}const Nr=12;function pg(e,t,n,o){let r=0,i=0,l=0;for(let a=t;a<e.length&&l<n;a++){const c=e[a];if(c.isSpacer)break;r+=At(c,o),i+=c.flex??0,l++}return{spannedByColSpan:!1,cellProps:{colSpan:l,width:r,flexGrow:i}}}function hg(e){const{row:t,rowId:n,columns:o,rowIndex:r,isSelected:i=!1,checkboxSelection:l=!1,onRowClick:a,onRowDoubleClick:c,onCellClick:u,onSelectionChange:g,columnWidths:h={},pinnedColumns:x,pinnedRows:y,hasDetailPanel:p=!1,isDetailPanelExpanded:f=!1,onDetailPanelToggle:m,detailPanelContent:b,detailPanelHeight:w=Ho,onDetailPanelHeightChange:C,pinCheckboxColumn:E=!0,pinExpandColumn:S=!0,rowReordering:N=!1,onDragStart:M,onDragOver:_,onDragEnd:O,onDrop:L,isDragging:A,isDragOver:k,editingCell:I,onEditStart:P,onEditStop:v,onEditCellValueChange:B,isCellEditable:V,focusedCellField:Q,isFocusVisible:H,colspanMap:z,rowSpanningCaches:W,rowHeight:re=52,rowMeta:oe,columnIndexMap:fe,ariaRowIndex:le,cellRange:ce}=e,K=n??t.id,de=s.useId(),X=s.useId(),te=s.useMemo(()=>Fo(o,h,x,l,E,p,S,N),[o,h,x,l,E,p,S,N]),U=s.useMemo(()=>Oo(o,x),[o,x]),J=oe?.hasChildren===!0,se=oe?.isGroupRow===!0,ue=p&&!se,ee=!se&&!Xe(K),D=s.useCallback((ie,Ce)=>{P?.({id:K,field:ie,value:Ce})},[K,P]),T=s.useCallback((ie,Ce)=>{B?.({id:K,field:ie,value:Ce})},[B,K]),$=s.useCallback((ie,Ce)=>{v?.({cancel:ie,id:K,field:Ce})},[v,K]);if(t._isSkeleton){const ie=Math.max(o.length,5);return d.jsx("div",{className:"ogx__row ogx__row--skeleton",role:"row","aria-hidden":"true",style:{height:re,minHeight:re},children:Array.from({length:ie}).map((Ce,Ee)=>d.jsx("div",{className:"ogx__skeleton-cell",children:d.jsx("div",{className:"ogx__skeleton-bar"})},Ee))})}const F=ie=>{ie.target.closest(".ogx-checkbox-wrapper, .ogx-expand-icon, .ogx-drag-handle, .ogx__edit-cell, .ogx__cell--editing")||a?.({row:t,id:K,rowIndex:r})},Z=ie=>{ie.target.closest(".ogx-checkbox-wrapper, .ogx-expand-icon, .ogx-drag-handle, .ogx__edit-cell, .ogx__cell--editing")||c?.({row:t,id:K,rowIndex:r})},G=ie=>{ie.stopPropagation(),g?.(K,ie.target.checked)},Y=ie=>{ie.stopPropagation(),m?.(K)},j=N?1:0,q=p?j+1:j,ne=l?q+1:q,he=ne,me=fe?.size??o.filter(ie=>!ie.isSpacer).length,R=oe!==void 0,ge=oe?.hasChildren===!0,we=ui(K,y),ae=we==="top",ye=we==="bottom",xe=["ogx__row",i&&"ogx__row--selected",r%2===0&&"ogx__row--even",r%2===1&&"ogx__row--odd",ae&&"ogx__row--pinned-top",ye&&"ogx__row--pinned-bottom",A&&"ogx__row--dragging",k&&"ogx__row--drag-over",J&&"ogx__row--group",oe?.isGroupFooter&&"ogx__row--group-footer"].filter(Boolean).join(" ");return d.jsxs(d.Fragment,{children:[d.jsxs("div",{className:xe,onClick:F,onDoubleClick:c?Z:void 0,role:"row","aria-rowindex":le??r+2,"aria-selected":i,"aria-level":R?(oe?.treeDepth??0)+1:void 0,"aria-expanded":ge?oe?.isExpanded===!0:void 0,"data-rowindex":r,onDragOver:_?_(K):void 0,onDrop:L?L(K):void 0,style:{maxHeight:`${re}px`,minHeight:`${re}px`,"--height":`${re}px`,"--border-width":"1px"},children:[N&&d.jsx("div",{className:`ogx__cell ogx__cell--drag-handle ${Q==="__reorder_col__"?"ogx__cell--focused":""} ${Q==="__reorder_col__"&&H?"ogx__cell--focus-visible":""}`,role:"gridcell","aria-label":M?"Drag to reorder row":void 0,"aria-colindex":j,"data-field":"__reorder_col__",tabIndex:-1,style:{position:"sticky",insetInlineStart:0,zIndex:Nr},draggable:!!M,onDragStart:M?M(K):void 0,onDragEnd:O,onClick:ie=>ie.stopPropagation(),children:M&&d.jsx(fg,{})}),p&&d.jsx("div",{className:`ogx__cell ogx__cell--expand ${S?"ogx__cell--pinned-left":""} ${Q==="__expand_col__"?"ogx__cell--focused":""} ${Q==="__expand_col__"&&H?"ogx__cell--focus-visible":""}`,role:"gridcell","aria-label":ue?f?"Collapse row details":"Expand row details":void 0,"aria-expanded":ue?f:void 0,"aria-controls":ue&&f?X:void 0,"aria-colindex":q,"data-field":"__expand_col__",style:{position:S?"sticky":void 0,insetInlineStart:S?N?48:0:void 0,zIndex:S?Nr:void 0},tabIndex:-1,onClick:ie=>{ie.stopPropagation(),u?.({row:t,field:"__expand_col__",value:f,colDef:{field:"__expand_col__",width:48},rowIndex:r,colIndex:-1})},children:ue&&d.jsx(ur,{isExpanded:f,onClick:Y,variant:"plus-minus",tabIndex:-1})}),l&&d.jsx("div",{className:`ogx__cell ogx__cell--checkbox ${E?"ogx__cell--pinned-left":""} ${Q==="__checkbox_col__"?"ogx__cell--focused":""} ${Q==="__checkbox_col__"&&H?"ogx__cell--focus-visible":""}`,role:"gridcell","aria-colindex":ne,"data-field":"__checkbox_col__",style:{position:E?"sticky":void 0,insetInlineStart:E?(N?48:0)+(p&&S?48:0):void 0,zIndex:E?Nr:void 0},tabIndex:-1,onClick:ie=>{ie.stopPropagation(),u?.({row:t,field:"__checkbox_col__",value:i,colDef:{field:"__checkbox_col__",width:48},rowIndex:r,colIndex:-1})},children:ee&&d.jsx(Ct,{id:de,name:`ogx-select-row-${K}`,checked:i,onChange:G,onClick:ie=>ie.stopPropagation(),"aria-label":i?`Deselect row ${K}`:`Select row ${K}`,tabIndex:-1,onMouseDown:ie=>ie.preventDefault()})}),o.map((ie,Ce)=>{if(ie.isSpacer)return d.jsx("div",{style:{width:ie.width,minWidth:ie.width,flexShrink:0},"aria-hidden":"true"},ie.field);let Ee,Le;se?Ee=t[ie.field]:{value:Ee,error:Le}=gi(t,ie.field,ie);const Ie=fe?.get(ie.field)??Ce,Ne=h[ie.field]??ie.width,ke=ct(ie.field,x),Fe=!!P&&zo({row:t,field:ie.field,value:Ee,colDef:ie,rowIndex:r,colIndex:Ie,rowMeta:oe},V),pe=I?.id===K&&I?.field===ie.field,ve=pe?I?.value:Ee,Se=z?.get(K)?.[ie.field],be=Se&&!Se.spannedByColSpan&&Se.cellProps.colSpan>1?pg(o,Ie,Se.cellProps.colSpan,h):Se,De=be&&!be.spannedByColSpan?o[Ie+be.cellProps.colSpan-1]?.field??ie.field:ie.field,ft=ke==="right"?De:ie.field,Ht=ke?te[ft]:void 0,Pn=ke==="left"&&De===U.lastLeft||ke==="right"&&ie.field===U.firstRight,ln=W?.spannedCells[K]?.[ie.field],ot=W?.hiddenCells[K]?.[ie.field]||!1,mo=ce&&!ot&&ie.field!==Yi?kc(ce,Ie,be&&!be.spannedByColSpan?be.cellProps.colSpan:1,ln??1):void 0;return d.jsx(bs,{value:ve,row:t,colDef:ie,rowIndex:r,colIndex:Ie,ariaColIndex:he+Ie+1,isSelected:i,onCellClick:u,width:Ne,pinnedPosition:ke,pinnedOffset:Ht,isPinnedEdge:Pn,isFocused:Q===ie.field,isFocusVisible:H,isEditable:Fe,isEditing:pe,onCellEditStart:D,onEditStop:$,onCellValueChange:T,colSpanInfo:be,rowSpan:ln,isHiddenByRowSpan:ot,rowMeta:oe,valueError:Le,rangeFlags:mo},ie.field)})]}),ue&&d.jsx(gg,{id:X,colSpan:he+me,row:t,rowId:K,rowIndex:r,content:b,height:w,isExpanded:f,onHeightChange:C})]})}function mg(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(!Sc(e.cellRange,t.cellRange))return!1}else if(!Object.is(e[o],t[o]))return!1;return!0}const so=s.memo(hg,mg);function xs({getContent:e,params:t}){return d.jsx(Dt,{field:"detail panel",renderFn:()=>e(t),resetKey:t.row})}const wg=e=>e.id;function ys({rows:e,position:t,columns:n,selectedRowIds:o,checkboxSelection:r,onRowClick:i,onRowDoubleClick:l,onCellClick:a,onSelectionChange:c,columnWidths:u,pinnedColumns:g,pinnedRows:h,hasDetailPanel:x,expandedRowIds:y,getDetailPanelContent:p,getDetailPanelHeight:f,onDetailPanelToggle:m,onDetailPanelHeightChange:b,pinCheckboxColumn:w,pinExpandColumn:C,focusedCell:E,colspanMap:S,rowSpanningCaches:N,rowHeight:M,rowMetaMap:_,getRowId:O=wg,rowIndexOffset:L=0,ariaRowIndexBase:A,columnIndexMap:k,editingHandlers:I,isCellEditable:P,rowReordering:v=!1,cellRange:B,cellRangeHasRowSpan:V=!1,fillHandle:Q}){return e.length===0?null:d.jsx("div",{className:`ogx__pinned-rows ogx__pinned-rows--${t}`,role:"rowgroup",children:e.map((H,z)=>{const W=O(H),re=L+z;return d.jsx(so,{row:H,rowId:W,columns:n,rowIndex:re,ariaRowIndex:A!==void 0?A+z:void 0,columnIndexMap:k,isSelected:o.has(W),checkboxSelection:r,onRowClick:i,onRowDoubleClick:l,onCellClick:a,onSelectionChange:c,columnWidths:u,pinnedColumns:g,pinnedRows:h,hasDetailPanel:x,isDetailPanelExpanded:y.has(W),detailPanelContent:y.has(W)&&p?d.jsx(xs,{getContent:p,params:{row:H,id:W,rowIndex:re}}):null,detailPanelHeight:y.has(W)?Bo(Wo(f,{row:H,id:W,rowIndex:re})):void 0,onDetailPanelHeightChange:b,onDetailPanelToggle:m,pinCheckboxColumn:w,pinExpandColumn:C,focusedCellField:E?.id===W?E.field:null,colspanMap:S,rowSpanningCaches:N,rowHeight:M,rowMeta:_.get(W),editingCell:I?.editingCell,onEditStart:I?.startCellEdit,onEditStop:I?.stopCellEdit,onEditCellValueChange:I?.setEditCellValue,isCellEditable:P,rowReordering:v,cellRange:Ji(B,re,V,Q)},W)})})}const bg=({columns:e,rowHeight:t,checkboxSelection:n=!1,hasDetailPanel:o=!1,rowReordering:r=!1})=>d.jsxs("div",{className:"ogx__row ogx__skeleton-row",style:{height:t},role:"row",children:[n&&d.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:48,minWidth:48},children:d.jsx("div",{className:"ogx-skeleton-box",style:{width:18,height:18,borderRadius:2}})}),o&&d.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:48,minWidth:48},children:d.jsx("div",{className:"ogx-skeleton-box",style:{width:18,height:18,borderRadius:2}})}),r&&d.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:48,minWidth:48},children:d.jsx("div",{className:"ogx-skeleton-box",style:{width:18,height:18,borderRadius:2}})}),e.map((i,l)=>{const a=typeof i.width=="number"?i.width:150,c=Math.min(a*.7,a-20);return d.jsx("div",{className:"ogx__cell ogx__skeleton-cell",style:{width:a,minWidth:i.minWidth,maxWidth:i.maxWidth,insetInlineStart:i.left,insetInlineEnd:i.right,position:i.isSpacer?"relative":i.pinned?"sticky":"relative",zIndex:i.zIndex},children:!i.isSpacer&&d.jsx("div",{className:"ogx-skeleton-box",style:{width:c,height:16,borderRadius:4}})},i.field||l)})]});function xg({virtualContainerHeight:e,offsetTop:t,effectiveLoading:n,visibleRows:o,baseColumns:r,virtualColumns:i,viewportWidth:l,checkboxSelection:a,hasDetailPanel:c,rowReordering:u,rowHeight:g,selectedRowIds:h,onRowClick:x,onRowDoubleClick:y,onCellClick:p,onSelectionChange:f,columnWidths:m,pinnedColumns:b,expandedRowIds:w,getDetailPanelContent:C,getDetailPanelHeight:E,onDetailPanelToggle:S,onDetailPanelHeightChange:N,pinCheckboxColumn:M,pinExpandColumn:_,rowReorderHandlers:O,editingHandlers:L,isCellEditable:A,focusedCell:k,colspanMap:I,rowSpanningCaches:P,paginationMode:v,dataSourceLoading:B,sortedUnpinnedRowCount:V,infiniteScrollSkeletonCount:Q,unpinnedRowsLength:H,lastRenderedRowIndex:z,rowMetaMap:W,loadingOverlay:re,ariaRowIndexOffset:oe,columnIndexMap:fe,cellRange:le,cellRangeHasRowSpan:ce=!1,fillHandle:K}){const de=r.length>0?r:(()=>{const U=(l||1e3)-(a?48:0)-(c?48:0)-(u?48:0),J=150,se=Math.max(1,Math.ceil(U/J));return Array.from({length:se},(ue,ee)=>({field:`placeholder_${ee}`,headerName:"",width:J}))})(),X=o.filter(U=>!U.pinned),te=v==="infinite"&&B&&V>0&&z>=H-1;return d.jsx("div",{className:"ogx__virtual-container",style:{height:`${e}px`},role:"presentation",children:d.jsxs("div",{className:"ogx__rows",style:{transform:`translateY(${t}px)`},role:"rowgroup",children:[n&&o.length===0&&re?d.jsx("div",{className:"ogx__loading-overlay",style:{width:l||void 0},children:re}):n&&o.length===0?Array.from({length:10}).map((U,J)=>d.jsx(bg,{columns:de,rowHeight:g,checkboxSelection:a,hasDetailPanel:c,rowReordering:u},`skeleton-${J}`)):X.map(({row:U,id:J,rowIndex:se})=>d.jsx(so,{row:U,rowId:J,columns:i,rowIndex:se,ariaRowIndex:oe!==void 0?se+oe:void 0,columnIndexMap:fe,isSelected:h.has(J),checkboxSelection:a,onRowClick:x,onRowDoubleClick:y,onCellClick:p,onSelectionChange:f,columnWidths:m,pinnedColumns:b,hasDetailPanel:c,isDetailPanelExpanded:w.has(J),detailPanelContent:w.has(J)&&C?d.jsx(xs,{getContent:C,params:{row:U,id:J,rowIndex:se}}):null,detailPanelHeight:w.has(J)?Bo(Wo(E,{row:U,id:J,rowIndex:se})):void 0,onDetailPanelHeightChange:N,onDetailPanelToggle:S,pinCheckboxColumn:M,pinExpandColumn:_,rowReordering:u,onDragStart:O.canReorderRow(J)?O.onDragStart:void 0,onDragOver:O.onDragOver,onDragEnd:O.onDragEnd,onDrop:O.onDrop,isDragging:O.draggedRowId===J,isDragOver:O.dragOverRowId===J,editingCell:L.editingCell,onEditStart:L.startCellEdit,onEditStop:L.stopCellEdit,onEditCellValueChange:L.setEditCellValue,isCellEditable:A,focusedCellField:k!=null&&k.id===J?k.field:null,colspanMap:I,rowSpanningCaches:P,rowHeight:g,rowMeta:W.get(J),cellRange:Ji(le,se,ce,K)},J)),te&&d.jsx("div",{className:"ogx__skeleton-group",children:Array.from({length:Q}).map((U,J)=>d.jsx(so,{row:{id:`__skeleton_${J}__`,_isSkeleton:!0},columns:i,rowIndex:H+J,rowHeight:g},`__skeleton_${J}__`))})]})})}function yg(){return d.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("circle",{cx:"11",cy:"11",r:"8"}),d.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]})}function Cg(){return d.jsxs("svg",{className:"ogx-column-visibility-panel__drag-handle",width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor",children:[d.jsx("circle",{cx:"9",cy:"5",r:"1.5"}),d.jsx("circle",{cx:"15",cy:"5",r:"1.5"}),d.jsx("circle",{cx:"9",cy:"12",r:"1.5"}),d.jsx("circle",{cx:"15",cy:"12",r:"1.5"}),d.jsx("circle",{cx:"9",cy:"19",r:"1.5"}),d.jsx("circle",{cx:"15",cy:"19",r:"1.5"})]})}function Ir(e){const{columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:a,showNonHideableColumns:c}=e,[u,g]=s.useState(""),h=s.useId(),[x,y]=s.useState(null),p=s.useRef(null),f=s.useMemo(()=>t.filter(_=>_.hideable!==!1),[t]),m=f.every(_=>n.has(_.field)),b=s.useMemo(()=>{const _=c?t:f;if(!u)return _;const O=u.toLowerCase();return _.filter(L=>(L.headerName||L.field).toLowerCase().includes(O))},[t,f,u,c]),w=_=>{_.target.checked?r():i()},C=_=>O=>{p.current=_,O.dataTransfer.effectAllowed="move",O.dataTransfer.setDragImage(O.currentTarget.closest(".ogx-column-visibility-panel__item"),20,20)},E=_=>O=>{O.preventDefault(),O.dataTransfer.dropEffect="move",_!==p.current&&y(_)},S=()=>{y(null)},N=_=>O=>{O.preventDefault();const L=p.current;y(null),p.current=null,L&&L!==_&&l&&l(L,_)},M=()=>{y(null),p.current=null};return d.jsxs("div",{className:"ogx-column-visibility-panel",children:[d.jsx("div",{className:"ogx-column-visibility-panel__search-section",children:d.jsxs("div",{className:"ogx-column-visibility-panel__search-container",children:[d.jsx(yg,{}),d.jsx(et,{autoComplete:"off",inputClassName:"ogx-column-visibility-panel__search-input",placeholder:"Search",value:u,onChange:_=>g(_.target.value)})]})}),d.jsx("div",{className:"ogx-column-visibility-panel__list",children:b.map((_,O)=>{const L=`${h}-col-${O}`,A=n.has(_.field),k=_.hideable!==!1,I=x===_.field,P=!!l&&!u;return d.jsxs("div",{className:["ogx-column-visibility-panel__item",!k&&"ogx-column-visibility-panel__item--disabled",I&&"ogx-column-visibility-panel__item--drag-over"].filter(Boolean).join(" "),draggable:P,onDragOver:P?E(_.field):void 0,onDragLeave:P?S:void 0,onDrop:P?N(_.field):void 0,onDragEnd:P?M:void 0,children:[P&&d.jsx("span",{className:"ogx-column-visibility-panel__drag-handle-wrapper",draggable:!0,onDragStart:C(_.field),title:"Drag to reorder",children:d.jsx(Cg,{})}),d.jsxs("div",{className:"ogx-column-visibility-panel__item-label",style:{display:"flex",alignItems:"center",gap:"var(--ogx-spacing-md)",flex:1,cursor:k?"pointer":"not-allowed"},children:[d.jsx(Ct,{id:L,checked:A,onChange:v=>o(_.field,v.target.checked),disabled:!k}),d.jsx("label",{htmlFor:L,className:"ogx-column-visibility-panel__label",children:_.headerName||_.field})]})]},_.field)})}),d.jsxs("div",{className:"ogx-column-visibility-panel__footer",children:[d.jsxs("div",{className:"ogx-column-visibility-panel__item",children:[d.jsx(Ct,{id:`${h}-all`,checked:m,onChange:w}),d.jsx("label",{htmlFor:`${h}-all`,className:"ogx-column-visibility-panel__label",children:"Show/Hide All"})]}),d.jsx("button",{type:"button",className:"ogx-column-visibility-panel__reset-btn",onClick:()=>{r(),a?.()},children:"Reset"})]})]})}function vg({isOpen:e,containerRef:t,panelRef:n,columns:o,columnVisibilityModel:r,disableColumnReorder:i,onClose:l,onColumnVisibilityChange:a,onColumnMove:c,onColumnOrderReset:u,columnGroupingModel:g}){const[h,x]=s.useState(null);if(s.useLayoutEffect(()=>{if(!e||!t.current)return;const p=t.current.getBoundingClientRect();x({top:p.top+8,right:$t()-p.right+8,target:t.current.closest(".ogx-theme-provider")||document.body})},[e,t]),!e||!h)return null;const y=i?void 0:(p,f)=>{pr(g,p,f)&&c(p,f)};return bt.createPortal(d.jsxs("div",{ref:n,style:{position:"fixed",top:h.top,right:h.right,zIndex:9999,display:"inline-block"},children:[d.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:"×"}),d.jsx(Ir,{columns:o,visibleColumns:new Set(o.filter(p=>r[p.field]!==!1).map(p=>p.field)),onVisibilityChange:(p,f)=>{a({...r,[p]:f})},onShowAll:()=>{const p={...r};o.forEach(f=>{f.hideable!==!1&&(p[f.field]=!0)}),a(p)},onHideAll:()=>{const p={...r};o.forEach(f=>{f.hideable!==!1&&(p[f.field]=!1)}),a(p)},onColumnReorder:y,onColumnOrderReset:i?void 0:u})]}),h.target)}function _g(e){const{baseColumns:t,pinnedColumns:n,hasGroupingColumn:o,groupingColDef:r,isTreeData:i,getTreeDataPath:l}=e,a=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:a}}function Sg(e){return e.id}function kg(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 Eg(e,t){s.useLayoutEffect(()=>{e&&(e.current=t.current)},[e,t])}function Mg(e){const{hierarchyHandlers:t,pinnedTopRows:n,sortedUnpinnedRows:o,pinnedBottomRows:r,rowMetaMap:i,getRowId:l,hierarchyField:a,dataRows:c}=e,u=t?.getVisibleRows({expandAll:!0,labelField:a});if(!u)return[...n,...o,...r];const g=c?new Set(c):null;return u.filter(h=>!i.get(l(h))?.isGroupRow&&(!g||g.has(h)))}function Ng(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 Ig(e,t){return e===t?!0:e.length!==t.length?!1:e.every((n,o)=>Ng(n,t[o]))}function Lg(e){const[t,n]=s.useState(e),o=Ig(t,e);return o||n(e),o?t:e}function Ag(e){const{rows:t,getRowId:n,rowMetaMap:o,columns:r,aggregationModel:i,aggregationResult:l,isSubtotalHidden:a}=e,c=Object.keys(i).length>0,u=new Map(r.map(y=>[y.field,y])),g=[],h=[],x=y=>{for(;h.length>0&&h[h.length-1].header.depth>=y;){const p=h.pop();c&&!a?.(p.id)&&g.push({type:"group-subtotal",depth:p.header.depth,groupField:p.header.groupField,groupValue:p.header.groupValue,groupLabel:p.header.groupLabel,aggregatedValues:jn(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 m=f.treeDepth??0;x(m);const b={type:"group-header",depth:m,groupField:f.groupingField,groupValue:f.groupingValue,groupLabel:f.groupLabel};g.push(b),h.push({id:p,header:b,leaves:[]})}else g.push({type:"leaf",depth:f?.treeDepth??h.length,row:y}),h.forEach(m=>m.leaves.push(y))}return x(0),c&&l&&g.push({type:"grand-total",depth:0,aggregatedValues:l}),g}function Tg(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:a,rowGroupingHandlers:c,rowMetaMap:u,columns:g,getRowId:h,hierarchyField:x}=o();return a?Ag({rows:c.getVisibleRows({expandAll:!0,labelField:x})??[],getRowId:h,rowMetaMap:u,columns:g,aggregationModel:l,aggregationResult:r&&c.rootAggregationPosition!==null?i:null,isSubtotalHidden:y=>c.aggregationPositions.get(y)===null}):null}},[t])}const Pg=new Set(["__group__","__check__","__actions__"]);function Gt(e){return e.filter(t=>t.exportable!==!1&&!t.isSpacer&&!Qe(t.field)&&!Pg.has(t.field))}function _t(e){return!!e&&e.length>0}function Cs(e,t,n=o=>o.id){const o=new Set(t);return e.filter(r=>o.has(n(r)))}function En(e,t,n){return _t(t)?Cs(e,t,n):e}function Mn(e,t){return!!e&&e.length>0&&!_t(t)}function Qt(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 jn(e,r,i,"export")}function Nn(e,t){const n=e[t.field];return t.valueGetter?t.valueGetter({row:e,field:t.field,value:n}):n}function In(e,t,n){if(!t.valueFormatter)return Go(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 Lr(e,t,n,o){return n==null?"":Un(n,t??"",e,o)}function en(e,t){return t?`${e}: ${t}`:e}function vs(e,t){const n={};return t.forEach(o=>{Object.prototype.hasOwnProperty.call(e,o.field)&&(n[o.field]=e[o.field])}),n}const Fg=/^[=+\-@\t\r]/,Og=/^[-+]?(?=[\d.,\s]*\d)[\d.,\s]*%?$/;function ao(e,t=!1){return t||!Fg.test(e)||Og.test(e)?e:`'${e}`}function St(e){return typeof e=="number"||typeof e=="bigint"||typeof e=="boolean"||e instanceof Date}function Pe(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Dg(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 $g=/[\\/?*:[\]]/g,_s=31;function Ar(e,t=new Set){let n=Dg(String(e??"").replace($g,"-").trim()).trim();n||(n="Sheet"),n=n.slice(0,_s).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,_s-l.length).trim()}${l}`}return t.add(r.toLowerCase()),r}const Gg=new Set([Ze,Ft,Pt]),Hg=/[\t\n\r"]/;function Tr(e){return Hg.test(e)?`"${e.replace(/"/g,'""')}"`:e}function Bg(e){return Gt(e).filter(t=>!Gg.has(t.field))}function Wg(e,t){const n=t.map(r=>Tr(r.headerName||r.field)).join(" "),o=e.map(r=>t.map(i=>Tr(In(r,i,Me(r,i.field,i)))).join(" "));return[n,...o].join(`
|
|
6
|
+
`)}function Vg(e,t){const n=Me(e,t.field,t);try{return In(e,t,n)}catch{return n==null?"":String(n)}}function zg(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 a=0;a<t.length;a++){const c=t[a];l[a]=n?.(i,c)?"":Tr(Vg(i,c))}o[r]=l.join(" ")}return o.join(`
|
|
7
|
+
`)}function Ss(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 Pr(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(Ss(e))return;throw n}if(!Ss(e))throw new Error("Clipboard API not available and fallback failed.")}function Kg(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 jg(e){const t=s.useRef(e);s.useLayoutEffect(()=>{t.current=e});const n=s.useCallback(async()=>{const{getSelectedRowIds:r,getColumns:i,getRows:l,getRowId:a}=t.current,c=new Set(r());if(c.size===0)return;const u=l().filter(h=>c.has(a(h)));if(u.length===0)return;const g=Wg(u,Bg(i()));await Pr(g)},[]),o=!!e.disableKeyboardShortcut;return s.useEffect(()=>{if(o)return;const r=i=>{if(i.defaultPrevented||!Kg(i))return;const l=document.activeElement,a=l?.tagName.toLowerCase(),c=l?.type;if(a==="input"&&c!=="checkbox"&&c!=="radio"||a==="textarea"||a==="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:h}=t.current;(h?()=>{const y=h();return y===null?Promise.resolve():Pr(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 Ug(e){const{apiRef:t,columns:n,getRowId:o,containerRef:r,disableKeyboardShortcut:i,getCellRangeCopyText:l}=e,a=s.useCallback(()=>r.current,[r]),{copySelectedRows:c}=jg({getSelectedRowIds:()=>t.current.getSelectedRows(),getColumns:()=>n,getRows:()=>t.current.getAllFilteredRows(),getRowId:o,getRootElement:a,disableKeyboardShortcut:i,getShortcutText:l});s.useLayoutEffect(()=>{t.current.copySelectedRows=c},[c,t])}function Rg(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:a}=n.current,c=i.current;if(c&&(o!==void 0&&o>=0&&Kn(c,o,l.cumulativeHeights,l.pinnedBottomHeight,a),r!==void 0&&r>=0)){const g=[...l.leftPinnedCols,...l.unpinnedColsWithWidth,...l.rightPinnedCols][r];if(!g)return;Vo(c,l.unpinnedColsWithWidth.findIndex(h=>h.field===g.field),l)}}},[t])}const qg=".ogx";function ks(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,a)=>l+(parseFloat(a)||0),0);return o+i}function Xg(e,t){const n=typeof CSS<"u"&&CSS.escape?CSS.escape(t):t.replace(/["\\]/g,"\\$&"),o=l=>l.closest(qg)===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 a=l.querySelector(".ogx__header-cell-content");a&&i(ks(l,a))}),e.querySelectorAll(`[role="gridcell"][data-field="${n}"]`).forEach(l=>{if(!o(l)||l.hasAttribute("aria-colspan"))return;const a=l.querySelector(":scope > .ogx__cell-content");a&&i(ks(l,a))}),r===null?null:Math.ceil(r)}function Yg(e,t,n){return Math.max(t??kl,Math.min(n??1/0,e))}function Jg(e){const{apiRef:t}=e,n=s.useRef(e);s.useLayoutEffect(()=>{n.current=e});const o=s.useCallback(i=>{const{containerRef:l,columns:a,onColumnResize:c}=n.current,u=l.current;if(!u)return;const g=[];for(const h of i??a.map(x=>x.field)){const x=a.find(p=>p.field===h);if(!x||x.resizable===!1)continue;const y=Xg(u,h);y!==null&&g.push([h,Yg(y,x.minWidth,x.maxWidth)])}for(const[h,x]of g)c(h,x)},[]),r=s.useCallback(i=>o([i]),[o]);return s.useLayoutEffect(()=>{t.current.autosizeColumn=r,t.current.autosizeColumns=o},[t,r,o]),r}const Es="ogx--range-dragging",kt=32,Zg=40,Qg=300;function Ms(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 Fr(e){const t=e.getSelection();t&&t.rangeCount>0&&t.removeAllRanges()}const Ns=(e,t,n)=>Math.min(Math.max(e,t),n),co=e=>Math.min(Zg,Math.max(2,Math.round(e/2)));function ep(e){process.env.NODE_ENV!=="production"&&console.warn(`[OpenGridX] Copying ${e} cells. For ranges this large, exportToCsv or exportToExcel is the better tool.`)}function tp(e){const{enabled:t,model:n,allRenderableRows:o,getRowId:r,navigationColumns:i,columnIndexMap:l,spanning:a,rowMetaMap:c,localeText:u,showStats:g}=e,h=t&&n.length>0?n[0]:null,x=s.useMemo(()=>t?i.filter(T=>Ye(T.field)):[],[t,i]),y=s.useMemo(()=>{if(!a.hasColSpan&&!a.hasRowSpan)return;const{colspanMap:T,rowSpanningCaches:$,getSpanOrigin:F}=a;return{getSpanOrigin:F,getColSpan:(Z,G)=>{const Y=T.get(Z)?.[G];return Y&&!Y.spannedByColSpan?Y.cellProps.colSpan:1},getRowSpan:(Z,G)=>$.spannedCells[Z]?.[G]??1}},[a]),p=s.useMemo(()=>{if(!t)return null;const T=o.map(r),$=new Map;T.forEach((Z,G)=>{$.has(Z)||$.set(Z,G)});const F=x.map(Z=>Z.field);return{rowIds:T,rowIndexById:$,fields:F,colIndexByField:new Map(F.map((Z,G)=>[Z,G])),spans:y}},[t,o,r,x,y]),f=s.useMemo(()=>h&&p?Qn(h,p):null,[h,p]),m=f!==null&&Ot(f)>1,b=s.useMemo(()=>{if(!f||!m||!p)return null;const T=l.get(p.fields[f.left]),$=l.get(p.fields[f.right]);return T===void 0||$===void 0?null:{top:f.top,bottom:f.bottom,left:T,right:$}},[f,m,p,l]),w=s.useCallback(T=>Xe(T,c),[c]),C=s.useCallback((T,$,F)=>{if(p)for(let Z=T.top;Z<=T.bottom;Z++){const G=o[Z],Y=p.rowIds[Z];if(!(!G||w(Y))){$(G,Y);for(let j=T.left;j<=T.right;j++){const q=x[j],ne=y?.getSpanOrigin(Y,q.field);F(G,Y,q,ne!=null&&(ne.rowId!==Y||ne.field!==q.field))}}}},[p,o,x,y,w]),E={...e,range:h,resolved:f,context:p,rangeColumns:x,forEachCell:C},S=s.useRef(E);s.useLayoutEffect(()=>{S.current=E});const N=s.useRef(null),M=s.useCallback(T=>{N.current=T},[]),_=s.useCallback(()=>{const{getPendingModel:T,model:$}=S.current;return T()??$},[]),O=s.useCallback(()=>{const{context:T,range:$,resolved:F,enabled:Z}=S.current,G=Z?_()[0]??null:null;return!G||!T?{range:null,resolved:null}:G===$?{range:G,resolved:F}:{range:G,resolved:Qn(G,T)}},[_]),L=s.useCallback((T,$)=>{if(!S.current.enabled)return;const F=T.length>1?T.slice(0,1):T;Cc(F,_())||S.current.onModelChange(F,$)},[_]),A=s.useCallback((T,$,F)=>{L([{anchor:T,head:$}],F)},[L]),k=s.useCallback((T,$)=>{const{viewportRef:F,layout:Z,rowHeight:G,pinnedTopRowCount:Y}=S.current,j=F.current;j&&(Kn(j,T-Y,Z.cumulativeHeights,Z.pinnedBottomHeight,G),Vo(j,Z.unpinnedColsWithWidth.findIndex(q=>q.field===$),Z))},[]),I=s.useCallback((T,$,F,Z)=>{const{context:G}=S.current,{range:Y,resolved:j}=O();if(!G||Z.id===null||!Ye(Z.field))return!1;const q=G.rowIndexById.get(Z.id),ne=G.colIndexByField.get(Z.field);if(q===void 0||ne===void 0)return!1;const he=Y&&j&&yt(Y.anchor,{id:Z.id,field:Z.field})?{range:Y,resolved:j}:null,me=he?he.range.anchor:{id:Z.id,field:Z.field},R=he?.resolved??Qn({anchor:me,head:me},G);if(!R)return!1;const ge=_c(R,T,$,F,G.rowIds.length-1,G.fields.length-1);if(!ge)return!0;const we={id:G.rowIds[ge.row],field:G.fields[ge.col]};return A(me,we,"keyboard"),k(ge.row,we.field),!0},[O,A,k]),P=s.useCallback(()=>{const{range:T,resolved:$}=O();return!T||!$||Ot($)<=1?!1:(A(T.anchor,T.anchor,"keyboard"),!0)},[O,A]),v=s.useCallback(()=>{const{context:T}=S.current;return!T||T.rowIds.length===0||T.fields.length===0?!1:(A({id:T.rowIds[0],field:T.fields[0]},{id:T.rowIds[T.rowIds.length-1],field:T.fields[T.fields.length-1]},"selectAll"),!0)},[A]),B=s.useCallback(()=>{const{context:T}=S.current,{range:$,resolved:F}=O();if(!T)return null;if(F)return F;if($)return null;const Z=N.current;return!Z||Z.id===null||!Ye(Z.field)?null:Qn({anchor:{id:Z.id,field:Z.field},head:{id:Z.id,field:Z.field}},T)},[O]),V=s.useCallback(()=>{const T=B();if(!T)return null;const{rangeColumns:$,forEachCell:F}=S.current,Z=Ot(T);Z>Mc&&ep(Z);const G=[];if(F(T,he=>{G.push(he)},()=>{}),G.length===0)return null;const Y=$.slice(T.left,T.right+1),j=S.current.context?.spans,q=S.current.getRowId;return zg(G,Y,j?(he,me)=>{const R=q(he),ge=j.getSpanOrigin(R,me.field);return ge!==null&&(ge.rowId!==R||ge.field!==me.field)}:void 0)},[B]),Q=s.useCallback(()=>{const{forEachCell:T}=S.current,{resolved:$}=O();if(!$)return[];const F=[];return T($,()=>{},(Z,G,Y,j)=>{j||F.push({id:G,field:Y.field,value:Me(Z,Y.field,Y)})}),F},[O]),H=s.useRef(null),z=s.useRef(!1);s.useEffect(()=>()=>H.current?.stop(),[]);const W=s.useCallback((T,$,F)=>{const Z=S.current.context;if(!Z)return null;const G=T.ownerDocument;if(typeof G.elementFromPoint!="function")return null;const Y=Ms(G.elementFromPoint($,F),T);if(!Y)return null;const j=Z.rowIds[Y.rowIndex];if(j===void 0)return null;const q=Ye(Y.field)?Y.field:Z.fields[0];return q===void 0?null:{id:j,field:q}},[]),re=s.useCallback((T,$)=>{const{context:F,layout:Z,pinnedTopRowCount:G}=S.current,Y=Z.cumulativeHeights;if(!F||Y.length===0||T<0)return null;let j=0,q=Y.length-1;for(;j<q;){const he=j+q>>1;Y[he]>T?q=he:j=he+1}const ne=F.rowIds[j+G];return ne===void 0?null:{id:ne,field:$}},[]),oe=s.useRef(()=>{}),fe=s.useCallback(T=>{const $=H.current,F=S.current.viewportRef.current;if(!$||!F)return;$.frame=0;const{layout:Z}=S.current,G=F.getBoundingClientRect(),Y=F.clientWidth,j=F.clientHeight,q=F.querySelector(":scope > .ogx__content > .ogx__sticky-top"),ne=F.querySelector(":scope > .ogx__content > .ogx__sticky-bottom"),he=q?.querySelector(":scope > .ogx__header-wrap"),me=q?q.getBoundingClientRect().bottom:G.top,R=Math.min(G.top+j,ne?ne.getBoundingClientRect().top:G.top+j),ge=he?he.getBoundingClientRect().bottom:me;$.rtl===void 0&&($.rtl=Je(F));const we=$.rtl,ae=we?G.right-Y:G.left,ye=Z.pinnedSystemColumnsWidth+Z.leftWidth,xe=ae+(we?Z.rightWidth:ye),ie=ae+Y-(we?ye:Z.rightWidth),Ce=Ns($.x,ae+1,ae+Y-2);let Ee=$.y;(Ee<G.top||Ee>G.top+j||Ee<ge)&&(Ee=Ns(Ee,me+1,Math.max(me+1,R-2)));const Le=typeof F.ownerDocument.elementFromPoint=="function",Ne=W(F,Ce,Ee)??(Le&&$.moved?re(Ee-G.top-(q?q.getBoundingClientRect().height:0)+F.scrollTop,$.head.field):null);if(Ne&&!yt(Ne,$.head)&&($.head=Ne,!$.moved&&!yt(Ne,$.anchor)&&($.moved=!0,S.current.containerRef.current?.classList.add(Es),Fr(F.ownerDocument)),$.onTrack||A($.anchor,Ne,"pointer")),$.onTrack&&$.onTrack($.head,$.x,$.y),!T)return;const ke=$.y<me||$.y>R||$.x<ae||$.x>ae+Y;if(!$.moved&&!ke)return;let Fe=0,pe=0;$.y<me+kt?Fe=-co(me+kt-$.y):$.y>R-kt&&(Fe=co($.y-(R-kt))),$.x<xe+kt?pe=-co(xe+kt-$.x):$.x>ie-kt&&(pe=co($.x-(ie-kt)));const ve=Fe<0&&F.scrollTop>0||Fe>0&&F.scrollTop+j<F.scrollHeight-1,Se=F.scrollWidth-Y,be=we?-Se:0,De=pe<0&&F.scrollLeft>be||pe>0&&F.scrollLeft<be+Se-1;!ve&&!De||(ve&&(F.scrollTop+=Fe),De&&(F.scrollLeft+=pe),$.frame=requestAnimationFrame(()=>oe.current(!0)))},[W,re,A]);s.useLayoutEffect(()=>{oe.current=fe},[fe]);const le=s.useCallback((T,$,F,Z,G,Y)=>{H.current?.stop();const j=Y?"pointermove":"mousemove",q=Y?"pointerup":"mouseup",ne=ie=>!Y||ie.pointerId===Y.pointerId,he=ie=>{const Ce=H.current;if(!(!Ce||!ne(ie))){if(ie.buttons===0){Ce.stop();return}Ce.x=ie.clientX,Ce.y=ie.clientY,Ce.moved&&(ie.preventDefault(),Fr(G)),Ce.frame||(Ce.frame=requestAnimationFrame(()=>fe(!0)))}},me=ie=>{const Ce=H.current;if(!Ce||!ne(ie))return;Ce.x=ie.clientX,Ce.y=ie.clientY,fe(!1);const Ee=Ce.moved;Ce.stop(!1,ie.altKey),Ee&&Fr(G),Ee&&(z.current=!0,setTimeout(()=>{z.current=!1},0))},R=ie=>{ne(ie)&&H.current?.stop()},ge=ie=>{ie.key!=="Escape"||!H.current||(ie.preventDefault(),ie.stopPropagation(),H.current.stop())},we=G.defaultView,ae=()=>H.current?.stop();let ye=!1;const xe={anchor:T,head:$,x:F,y:Z,frame:0,moved:!1,onTrack:Y?.onTrack,stop:(ie=!0,Ce=!1)=>{xe.frame&&cancelAnimationFrame(xe.frame),xe.frame=0,G.removeEventListener(j,he,!0),G.removeEventListener(q,me,!0),Y&&(G.removeEventListener("pointercancel",R,!0),G.removeEventListener("keydown",ge,!0)),we?.removeEventListener("blur",ae),S.current.containerRef.current?.classList.remove(Es),H.current===xe&&(H.current=null),ye||(ye=!0,Y&&Y.onEnd({cancelled:ie,altKey:Ce}))}};H.current=xe,G.addEventListener(j,he,!0),G.addEventListener(q,me,!0),Y&&(G.addEventListener("pointercancel",R,!0),G.addEventListener("keydown",ge,!0)),we?.addEventListener("blur",ae)},[fe]),ce=s.useCallback(T=>{const $=S.current.viewportRef.current;if(!$||!S.current.enabled)return;const{start:F,x:Z,y:G,pointerId:Y,onTrack:j,onEnd:q}=T;le(F,F,Z,G,$.ownerDocument,{pointerId:Y,onTrack:j,onEnd:q})},[le]),K=s.useCallback(T=>{if(T.button!==0||T.defaultPrevented)return;const{context:$}=S.current;if(!$)return;const F=T.currentTarget,Z=Ms(T.target,F);if(!Z||!Ye(Z.field)||T.target.closest?.(".ogx__cell-fill-handle")||Z.element.classList.contains("ogx__cell--editing")||Ui(T.target))return;const G=$.rowIds[Z.rowIndex];if(G===void 0)return;const Y={id:G,field:Z.field};let j=Y;if(T.shiftKey){const q=_()[0],ne=N.current;q&&$.rowIndexById.has(q.anchor.id)&&$.colIndexByField.has(q.anchor.field)?j=q.anchor:ne&&ne.id!==null&&Ye(ne.field)&&(j={id:ne.id,field:ne.field}),T.preventDefault(),z.current=!0;const he=F.ownerDocument;F.contains(he.activeElement)||F.focus({preventScroll:!0})}if(A(j,Y,"pointer"),le(j,Y,T.clientX,T.clientY,F.ownerDocument),T.shiftKey){const q=H.current;q&&!yt(j,Y)&&(q.moved=!0)}},[_,A,le]),de=s.useCallback(T=>{z.current&&(z.current=!1,T.stopPropagation(),T.preventDefault())},[]),X=f?f.right-f.left+1:0,te=f?f.bottom-f.top+1:0,U=u?.cellSelectionAnnouncement??Ec,J=m?U(te*X,te,X):"",[se,ue]=s.useState("");s.useEffect(()=>{if(!t)return;const T=setTimeout(()=>ue(J),Qg);return()=>clearTimeout(T)},[t,J]);const ee=s.useMemo(()=>{if(!g||!f||!m)return null;const T=[];C(f,()=>{},(F,Z,G,Y)=>{Y||T.push(Me(F,G.field,G))});const $=T.filter(F=>typeof F=="number"&&!Number.isNaN(F));return{cellCount:Ot(f),rowCount:f.bottom-f.top+1,columnCount:f.right-f.left+1,count:xt.count(T),numericCount:$.length,sum:$.length?xt.sum($):null,average:$.length?xt.avg($):null}},[g,f,m,C]),D=s.useMemo(()=>t?{extendSelection:I,collapseSelection:P,selectAllCells:v}:void 0,[t,I,P,v]);return{enabled:t,range:h,resolved:f,displayRange:b,hasRowSpan:a.hasRowSpan,handleMouseDown:t?K:void 0,handleClickCapture:t?de:void 0,extendSelection:I,collapseSelection:P,selectAllCells:v,keyboard:D,getCopyText:V,getSelectedCells:Q,announcement:t?se:"",stats:ee,reportFocus:M,setModel:L,getCurrentRange:O,startTrackedDrag:ce}}function np(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:a,focusedCell:c,setFocusedCell:u,containerRef:g}=e,h=l.range?.anchor??null,x=l.resolved?.anchorRow;s.useLayoutEffect(()=>{l.reportFocus(c);const y=!yt(o.current,h),p=!or(r.current,c);if(o.current=h,r.current=c,!!l.enabled){if(l.range&&!l.resolved){i.current!==a&&(i.current=a,l.setModel([],"dataChange"));return}if(y&&h){(!c||c.id!==h.id||c.field!==h.field)&&u({id:h.id,field:h.field,rowIndex:x});return}if(p&&c&&c.id!==null&&Ye(c.field)&&!yt(h,{id:c.id,field:c.field})){const f={id:c.id,field:c.field},m=g.current?.classList.contains("ogx--kb")??!1;l.setModel([{anchor:f,head:f}],m?"keyboard":"pointer")}}},[l,a,h,x,c,u,g]),s.useLayoutEffect(()=>{const y=t.current,p=()=>n.current;y.getCellSelectionModel=()=>{const{selection:f,getPendingModel:m,model:b}=p();return f.enabled?m()??b:[]},y.setCellSelectionModel=f=>{p().selection.setModel(f,"api")},y.selectCellRange=(f,m)=>{p().selection.setModel([{anchor:f,head:m}],"api")},y.clearCellSelection=()=>{p().selection.setModel([],"clear")},y.getSelectedCells=()=>p().selection.getSelectedCells(),y.copySelectedCells=async()=>{const{selection:f}=p();if(!f.enabled)return;const m=f.getCopyText();m!==null&&await Pr(m)}},[t])}function Is({count:e,sum:t,average:n}){return d.jsxs("div",{className:"ogx__cell-selection-stats",children:[d.jsxs("span",{className:"ogx__cell-selection-stat",children:[d.jsx("span",{className:"ogx__cell-selection-stat-label",children:"Count"}),d.jsx("span",{className:"ogx__cell-selection-stat-value","data-stat":"count",children:e.toLocaleString()})]}),t!==null&&d.jsxs("span",{className:"ogx__cell-selection-stat",children:[d.jsx("span",{className:"ogx__cell-selection-stat-label",children:"Sum"}),d.jsx("span",{className:"ogx__cell-selection-stat-value","data-stat":"sum",children:yn(t,"sum")})]}),n!==null&&d.jsxs("span",{className:"ogx__cell-selection-stat",children:[d.jsx("span",{className:"ogx__cell-selection-stat-label",children:"Average"}),d.jsx("span",{className:"ogx__cell-selection-stat-value","data-stat":"average",children:yn(n,"avg")})]})]})}function op({stats:e,apiRef:t,slot:n,slotProps:o}){const r=n??Is;return d.jsx("div",{className:"ogx__cell-selection-stats-area","aria-hidden":e?void 0:!0,children:e&&d.jsx(r,{apiRef:t,...e,...o})})}function rp(e){return s.useCallback(t=>{e.current?.classList.toggle("ogx--kb",t)},[e])}function ip(e){const{ensureGridFocus:t,setKeyboardMode:n,setFocusedCell:o,getRowId:r,onCellClick:i}=e,l=s.useCallback(c=>{t(),n(!1),o({id:r(c.row),field:c.field,rowIndex:c.rowIndex}),i?.(c)},[i,n,o,t,r]),a=s.useCallback(c=>{t(),o({id:null,field:c}),n(!1)},[t,o,n]);return{handleCellClick:l,handleHeaderClick:a}}function lp({paginationSlot:e,paginationSlotProps:t,page:n,paginationModel:o,rowCount:r,pageSizeOptions:i,onPaginationModelChange:l,localeText:a}){const c=e||kr;return d.jsx(c,{page:n,pageSize:o.pageSize,rowCount:r,pageSizeOptions:i,onPageChange:u=>l({...o,page:u}),onPageSizeChange:u=>l({...o,pageSize:u,page:0}),localeText:ll(a),...t})}function sp({loading:e,error:t,noRowsLabel:n,filteredRowCount:o,dataRowCount:r,filterModel:i,cellSelectionAnnouncement:l,aiAssistantAnnouncement:a}){return d.jsxs("div",{className:"ogx-aria-live-status",role:"status","aria-live":"polite",children:[e?"Loading data...":"",t?`Error: ${_l(t)}`:"",!e&&!t&&(o===0?n:i&&((i.quickFilterValues?.length||0)>0||(i.items?.length||0)>0)?`${r} ${r===1?"row":"rows"} found`:""),l?d.jsxs("span",{className:"ogx-aria-live-status__cells",children:[" ",l]}):null,a?d.jsxs("span",{className:"ogx-aria-live-status__ai",children:[" ",a]}):null]})}function ap(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 cp(e){const{columnGroupingModel:t,headerFilterRow:n=!1,pinnedTopCount:o,pinnedBottomCount:r,pagination:i,paginationMode:l,paginationModel:a,paginationRowCount:c,paginatedUnpinnedRowCount:u,sortedUnpinnedRowCount:g}=e,{page:h,pageSize:x}=a;return s.useMemo(()=>ap({headerRowCount:1+El(t)+(n?1:0),pinnedTopCount:o,pinnedBottomCount:r,pageRowCount:i?u:g,totalCenterRowCount:i&&l==="server"?Math.max(c,u):g,pageOffset:i?h*x:0}),[t,n,o,r,i,u,g,l,c,h,x])}function dp(e){const{toolbar:t,toolbarSlotProps:n,apiRef:o,orderedColumns:r,baseColumns:i,aggregationModel:l,onAggregationModelChange:a,pivotMode:c,pivotModelProp:u,onPivotModelChangeProp:g,pivotModel:h,onPivotModelChange:x,filterModel:y,onFilterModelChange:p,columnVisibilityModel:f,onColumnVisibilityModelChange:m,disableColumnReorder:b,columnGroupingModel:w,moveColumn:C,resetColumnOrder:E,forceColumnsOpen:S,onColumnsPanelClose:N,aiAssistantEnabled:M=!1,aiAssistantOpen:_=!1,onAiAssistantToggle:O,aiAssistantLabel:L,forceFiltersOpen:A,onFiltersPanelClose:k}=e;return s.useMemo(()=>t?{apiRef:o,columns:r,baseColumns:i,aggregationModel:l,onAggregationModelChange:a,...c||u||g?{pivotModel:h,onPivotModelChange:x}:{},filterModel:y,onFilterModelChange:p,columnVisibilityModel:f,onColumnVisibilityModelChange:m,onColumnReorder:b?void 0:(P,v)=>{pr(w,P,v)&&C(P,v)},onColumnOrderReset:b?void 0:E,forceColumnsOpen:S,onColumnsPanelClose:N,...M&&O?{onAiAssistantToggle:O,aiAssistantOpen:_,...L?{aiAssistantLabel:L}:{}}:{},forceFiltersOpen:A,onFiltersPanelClose:k,...n}:null,[t,b,C,E,r,o,i,l,a,c,u,g,h,x,y,p,f,m,S,N,n,w,M,_,O,L,A,k])}const up=Symbol.for("opengridx.ai.validated");function fp(e){return typeof e=="object"&&e!==null&&e[up]===!0}const uo=["filter","sort","grouping","aggregation","pivot","columnVisibility"],Or={filter:"filterModel",sort:"sortModel",grouping:"rowGroupingModel",aggregation:"aggregationModel",pivot:"pivotModel",columnVisibility:"columnVisibilityModel"};function Ls(e){return uo.map(t=>Or[t]).filter(t=>e[t]!==void 0)}function gp(e,t){const n={},o=[];for(const r of uo){const i=Or[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 pp(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 hp(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 mp(e,t){const n=new Set(t.map(r=>hp(typeof r.path=="string"?r.path:""))),o={};for(const r of Ls(e))n.has(r)&&pp(e,r)||Object.assign(o,{[r]:e[r]});return o}function wp(e,t){const n={};for(const o of Ls(e))Object.assign(n,{[o]:t[o]});return n}function As(e,t){const n={};for(const o of uo.map(r=>Or[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 Dr(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 Ts(e){return Array.isArray(e)?e.map(Ts).join(", "):e instanceof Date?e.toISOString().slice(0,10):e==null?"":String(e)}function Ps(e,t){return"items"in e?`(${e.items.map(n=>Ps(n,t)).join(` ${e.logicOperator} `)})`:[t(e.field),e.operator,Ts(e.value)].filter(Boolean).join(" ")}const bp={sum:"Sum",avg:"Average",count:"Count",min:"Min",max:"Max",unique:"Unique"};function Fs(e,t){const n=[],{filterModel:o,sortModel:r,rowGroupingModel:i,aggregationModel:l,pivotModel:a,columnVisibilityModel:c}=e;if(o){const u=o.items??[];u.forEach((h,x)=>n.push({id:`filter:${x}`,part:"filter",label:Ps(h,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 h=l[g];n.push({id:`aggregation:${g}`,part:"aggregation",label:`${bp[h]??h}: ${t(g)}`})}),u.length===0&&n.push({id:"aggregation:clear",part:"aggregation",label:"No summaries"})}if(a){const u=[...a.rowFields,...a.columnFields,...a.valueFields.map(g=>g.field)];n.push({id:"pivot",part:"pivot",label:u.length>0?`Pivot: ${u.map(t).join(", ")}`:"No pivot"})}if(c)for(const u of Object.keys(c))n.push({id:`columnVisibility:${u}`,part:"columnVisibility",label:`${c[u]?"Show":"Hide"}: ${t(u)}`});return n}function xp(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 a={...n.filterModel};i==="quick"?delete a.quickFilterValues:i==="clear"?a.items=[]:a.items=(a.items??[]).filter((c,u)=>u!==l),(a.items??[]).length===0&&(a.quickFilterValues??[]).length===0?delete n.filterModel:n.filterModel=a}else if(r==="sort"&&n.sortModel)n.sortModel=n.sortModel.filter((a,c)=>c!==l),(n.sortModel.length===0||i==="clear")&&delete n.sortModel;else if(r==="grouping"&&n.rowGroupingModel)n.rowGroupingModel=n.rowGroupingModel.filter((a,c)=>c!==l),(n.rowGroupingModel.length===0||i==="clear")&&delete n.rowGroupingModel;else if(r==="aggregation"&&n.aggregationModel){const a={...n.aggregationModel};delete a[i],Object.keys(a).length===0?delete n.aggregationModel:n.aggregationModel=a}else if(r==="columnVisibility"&&n.columnVisibilityModel){const a={...n.columnVisibilityModel};delete a[i],Object.keys(a).length===0?delete n.columnVisibilityModel:n.columnVisibilityModel=a}else r==="pivot"&&delete n.pivotModel;return n}const yp="Ask about this table…",Cp=[],fo=[],Os="The reply was not validated";function vp(){return typeof window<"u"&&("SpeechRecognition"in window||"webkitSpeechRecognition"in window)}function _p(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function Sp(e){return e instanceof Error&&e.message?e.message:"Unknown error"}function kp(e,t){const n=e===0?"No changes":`Applied ${e} ${e===1?"change":"changes"}`;return t>0?`${n}, ${t} ignored`:n}function Ds(e,t,n){if(!e)return;const o=Ve(()=>e(t));!o.ok&&process.env.NODE_ENV!=="production"&&console.warn(`[OpenGridX] ${n} threw.`,o.error)}function Ep(e){const{apiRef:t,options:n,columns:o}=e,r=!!n,[i,l]=s.useState(!1),[a,c]=s.useState("idle"),[u,g]=s.useState(""),[h,x]=s.useState(null),[y,p]=s.useState(fo),[f,m]=s.useState(null),[b,w]=s.useState([]),C=s.useRef(null),E=s.useRef(null),S=s.useRef({params:e,applied:f,history:b,open:i});s.useLayoutEffect(()=>{S.current={params:e,applied:f,history:b,open:i}});const N=s.useMemo(()=>{const z=new Map(o.map(W=>[W.field,W.headerName||W.field]));return W=>z.get(W)??W},[o]),M=s.useMemo(()=>f?Fs(f.state,N):[],[f,N]),_=s.useCallback(()=>{const z=C.current;C.current=null,z&&z.abort()},[]);s.useEffect(()=>_,[_]);const O=s.useCallback(z=>{if(!S.current.params.options)return;const W=typeof document>"u"?null:document.activeElement;E.current=z??(W instanceof HTMLElement?W:null),l(!0)},[]),L=s.useCallback(()=>{C.current&&(_(),c("stopped"),g("Stopped")),l(!1);const z=E.current;E.current=null,z&&z.isConnected&&z.focus()},[_]),A=s.useCallback(z=>{S.current.open?L():O(z)},[O,L]),k=s.useCallback((z,W)=>{c("error"),g(z),x(null),p(fo),Ds(S.current.params.onError,W,"onAiAssistantError")},[]),I=s.useCallback((z,W)=>{const{params:re}=S.current;if(!(typeof W=="object"&&W!==null)||!fp(W.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."),k(Os,new Error(Os));return}const fe=gp(W.state,re.options?.parts??uo),le=[...Array.isArray(W.errors)?W.errors:[],...fe.errors],ce=mp(fe.state,le),K=t.current,de=wp(ce,K.getGridAiState());Dr(K,As(ce,de)),m({state:ce,previous:de}),p(le),x(typeof W.message=="string"&&W.message?W.message:null),w(X=>[...X,{prompt:z,applied:ce}]),c("applied"),g(kp(Fs(ce,X=>X).length,le.length)),Ds(re.onApply,W,"onAiAssistantApply")},[t,k]),P=s.useCallback(z=>{const W=z.trim(),{params:re,history:oe}=S.current,fe=re.options?.onPrompt;if(!W||!fe)return;_();const le=new AbortController;C.current=le,c("running"),g("Thinking…"),x(null),p(fo);const ce={currentState:t.current.getGridAiState(),history:oe,signal:le.signal},K=Ve(()=>fe(W,ce));(K.ok?Promise.resolve(K.value):Promise.reject(K.error)).then(X=>{C.current===le&&(C.current=null,I(W,X))},X=>{if(C.current===le){if(C.current=null,le.signal.aborted||_p(X)){c("stopped"),g("Stopped");return}k(`The assistant could not answer: ${Sp(X)}`,X)}})},[t,_,I,k]),v=s.useCallback(()=>{C.current&&(_(),c("stopped"),g("Stopped"))},[_]),B=s.useCallback(()=>{const z=S.current.applied;z&&(Dr(t.current,z.previous),m(null),p(fo),x(null),c("idle"),g("Undone"))},[t]),V=s.useCallback(z=>{const W=S.current.applied;if(!W)return;const re=xp(W.state,z);Dr(t.current,As(re,W.previous)),m({state:re,previous:W.previous}),g("Change removed")},[t]);s.useLayoutEffect(()=>{const z=t.current;z.openAiAssistant=()=>O(),z.closeAiAssistant=()=>{S.current.open&&L()}},[t,O,L]);const Q=r&&i,H=s.useMemo(()=>!Q||!n?null:{status:a,statusText:u,message:h,errors:y,chips:M,history:b,suggestions:n.suggestions??Cp,placeholder:n.placeholder??yp,voiceAvailable:n.voice!==!1&&vp(),canUndo:f!==null,submit:P,stop:v,undo:B,removeChip:V,close:L},[Q,n,a,u,h,y,M,b,f,P,v,B,V,L]);return{enabled:r,open:Q,openPanel:O,togglePanel:A,closePanel:L,panelProps:H,announcement:r?u:""}}function Mp(){if(typeof window>"u")return null;const e=window;return e.SpeechRecognition??e.webkitSpeechRecognition??null}function Np(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&&Ve(()=>l.abort())},[]);const i=s.useCallback(()=>{const l=o.current;if(l){Ve(()=>l.stop());return}const a=Mp();if(!a)return;const c=Ve(()=>new a);if(!c.ok)return;const u=c.value;u.lang=typeof navigator>"u"?"en-US":navigator.language,u.interimResults=!1,u.maxAlternatives=1,u.onresult=h=>{const x=h.results[0],y=x&&x[0]?x[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),Ve(()=>u.start()).ok||g()},[]);return{listening:t,toggle:i}}function $s(){return d.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:[d.jsx("path",{d:"M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9z"}),d.jsx("path",{d:"M19 15l.8 2.2L22 18l-2.2.8L19 21l-.8-2.2L16 18l2.2-.8z"})]})}function Ip(){return d.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:[d.jsx("rect",{x:"9",y:"3",width:"6",height:"11",rx:"3"}),d.jsx("path",{d:"M5 11a7 7 0 0 0 14 0M12 18v3"})]})}function Lp(e){const{status:t,statusText:n,message:o,errors:r,chips:i,history:l,suggestions:a,placeholder:c,voiceAvailable:u,canUndo:g,submit:h,stop:x,undo:y,removeChip:p,close:f}=e,[m,b]=s.useState(""),w=s.useRef(null),C=Np(b),E=t==="running";s.useEffect(()=>{w.current&&w.current.focus()},[]);const S=_=>{b(_),h(_)},N=_=>()=>{_(),w.current&&w.current.focus()},M=_=>{_.preventDefault(),E||h(m)};return d.jsxs("div",{className:"ogx-ai-panel",role:"dialog","aria-label":"Ask AI",children:[d.jsxs("div",{className:"ogx-ai-panel__header",children:[d.jsxs("span",{className:"ogx-ai-panel__title",children:[d.jsx($s,{}),"Ask AI"]}),d.jsx(nt,{size:"small",className:"ogx-ai-panel__close","aria-label":"Close",onClick:f,children:"×"})]}),d.jsxs("form",{className:"ogx-ai-panel__form",onSubmit:M,children:[d.jsx(et,{ref:w,className:"ogx-ai-panel__input",value:m,placeholder:c,"aria-label":"Prompt",autoComplete:"off",onChange:_=>b(_.target.value)}),u&&d.jsx(nt,{size:"small",variant:"outlined",className:`ogx-ai-panel__mic${C.listening?" ogx-ai-panel__mic--on":""}`,"aria-label":C.listening?"Stop dictation":"Dictate a prompt","aria-pressed":C.listening,onClick:C.toggle,children:d.jsx(Ip,{})}),E?d.jsx(nt,{size:"small",variant:"outlined",onClick:N(x),children:"Stop"},"stop"):d.jsx(nt,{size:"small",variant:"contained",color:"primary",type:"submit",disabled:m.trim()==="",children:"Ask"},"ask")]}),a.length>0&&d.jsx("div",{className:"ogx-ai-panel__suggestions","aria-label":"Suggestions",role:"group",children:a.map(_=>d.jsx("button",{type:"button",className:"ogx-ai-panel__suggestion",disabled:E,onClick:()=>S(_),children:_},_))}),n&&d.jsx("div",{className:`ogx-ai-panel__status ogx-ai-panel__status--${t}`,children:n}),o&&d.jsx("p",{className:"ogx-ai-panel__message",children:o}),(i.length>0||g)&&d.jsxs("div",{className:"ogx-ai-panel__changes",children:[d.jsx("ul",{className:"ogx-ai-panel__chips","aria-label":"Applied changes",children:i.map(_=>d.jsxs("li",{className:"ogx-ai-chip","data-part":_.part,children:[d.jsx("span",{className:"ogx-ai-chip__label",children:_.label}),d.jsx("button",{type:"button",className:"ogx-ai-chip__remove","aria-label":`Remove ${_.label}`,onClick:N(()=>p(_.id)),children:"×"})]},_.id))}),g&&d.jsx(nt,{size:"small",variant:"outlined",className:"ogx-ai-panel__undo",onClick:N(y),children:"Undo"})]}),r.length>0&&d.jsx("ul",{className:"ogx-ai-panel__errors","aria-label":"Ignored",children:r.map((_,O)=>d.jsx("li",{children:_.path?`Ignored: ${_.message}`:_.message},`${_.path}:${O}`))}),l.length>0&&d.jsxs("div",{className:"ogx-ai-panel__history",children:[d.jsx("div",{className:"ogx-ai-panel__history-title",children:"Earlier"}),d.jsx("ul",{children:l.map((_,O)=>d.jsx("li",{children:d.jsx("button",{type:"button",className:"ogx-ai-panel__history-item",onClick:()=>b(_.prompt),children:_.prompt})},`${O}:${_.prompt}`))})]})]})}function Ap({panelProps:e,slot:t,slotProps:n}){const o=r=>{r.key==="Escape"&&(r.stopPropagation(),e.close())};return d.jsx("div",{className:"ogx-ai-anchor",onKeyDown:o,children:t?d.jsx(t,{...e,...n}):d.jsx(Lp,{...e})})}function Tp(e){const{rows:t,columns:n,getRowId:o,rowHeight:r,headerHeight:i,wrapHeaderText:l=!1,headerFilters:a=!1,headerFilterHeight:c=tu,autoHeight:u=!1,density:g,checkboxSelection:h=!1,disableRowSelectionOnClick:x=!1,disableMultipleRowSelection:y=!1,disableClipboardCopy:p=!1,cellSelection:f=!1,cellSelectionModel:m,onCellSelectionModelChange:b,showCellSelectionStats:w=!1,disableClipboardPaste:C=!1,disableRangeClear:E=!1,onClipboardPaste:S,onBeforeClipboardPaste:N,undoRedo:M=!1,disableFillHandle:_=!1,onFill:O,onHistoryChange:L,rowSelectionModel:A,onRowSelectionModelChange:k,onRowClick:I,onRowDoubleClick:P,onCellClick:v,filterModel:B,onFilterModelChange:V,sortModel:Q,onSortModelChange:H,pagination:z=!1,paginationModel:W,onPaginationModelChange:re,pageSizeOptions:oe=[10,25,50,100],pinnedColumns:fe,onPinnedColumnsChange:le,pinnedRows:ce,getDetailPanelContent:K,getDetailPanelHeight:de,detailPanelExpandedRowIds:X,onDetailPanelExpandedRowIdsChange:te,pinCheckboxColumn:U=!0,pinExpandColumn:J=!0,disableColumnReorder:se=!1,columnOrder:ue,onColumnOrderChange:ee,onColumnOrderModelChange:D,height:T,rowReordering:$=!1,onRowOrderChange:F,loading:Z=!1,treeData:G=!1,getTreeDataPath:Y,defaultGroupingExpansionDepth:j,groupingColDef:q,rowGroupingModel:ne,onRowGroupingModelChange:he,aggregationModel:me,onAggregationModelChange:R,getAggregationPosition:ge,isCellEditable:we,processRowUpdate:ae,onProcessRowUpdateError:ye,dataSource:xe,multiSort:ie=!1,sortingMode:Ce="client",filterMode:Ee="client",paginationMode:Le="client",rowCount:Ie,slots:Ne,slotProps:ke,pivotMode:Fe=!1,pivotModel:pe,onPivotModelChange:ve,className:Se="",style:be,onRowsScrollEnd:De,ariaLabel:ft,initialState:Ht,onStateChange:Pn,columnVisibilityModel:ln,onColumnVisibilityModelChange:ot,listView:mo=!1,listViewColumn:Fn,columnGroupingModel:On,noRowsLabel:Yh="No Data",localeText:sn,apiRef:Jh,overscanRowCount:Zh=3,aiAssistant:Qh,onAiAssistantApply:em,onAiAssistantError:tm}=e,Hr=Lg(n),Br=sn?.noRowsLabel??Yh,Bt=Oc({initialState:Ht,sortModel:Q,onSortModelChange:H,filterModel:B,onFilterModelChange:V,aggregationModel:me,onAggregationModelChange:R,rowGroupingModel:ne,onRowGroupingModelChange:he,columnVisibilityModel:ln,onColumnVisibilityModelChange:ot,pinnedColumns:fe,onPinnedColumnsChange:le,pivotModel:pe,onPivotModelChange:ve,paginationModel:W,onPaginationModelChange:re,pageSizeOptions:oe,rowSelectionModel:A,onRowSelectionModelChange:k,density:g,cellSelectionModel:m,onCellSelectionModelChange:b}),{sortModel:gt,handleSortModelChange:fa,filterModel:pt,handleFilterModelChange:Wr,aggregationModel:Ue,handleAggregationModelChange:ga,columnVisibilityModel:Et,handleColumnVisibilityModelChange:wo,pinnedColumns:Vr,handlePinnedColumnsChange:nm,currentPivotModel:zr,handlePivotModelChange:pa,effectivePaginationModel:Re,handlePaginationModelChange:an,selectedRowIds:om,handleRowSelectionModelChange:Kr,density:ha,rowGroupingModel:jr,handleRowGroupingModelChange:rm}=Bt,Dn=Xf({rows:t,columns:Hr,pivotMode:Fe,pivotModel:zr,filterModel:pt,sortModel:gt,hasDataSource:!!xe,hierarchyRequested:G||jr.length>0}),Mt=Dn.isActive,bo=a&&!Mt,{rowReordering:Wt,hierarchyRowGroupingModel:im,isTreeDataRequested:lm,isTreeData:xo,isRowGrouping:cn,isHierarchyEnabled:yo,hasGroupingColumn:sm,pagination:rt,listView:dn}=Ac({rowGroupingModel:jr,treeData:G,hasTreeDataPath:!!Y,isPivotActive:Mt,rowReordering:$,hasGroupingColDef:!!q,pagination:z,paginationMode:Le,listView:mo,hasListViewColumn:!!Fn}),{rowHeight:it,headerHeight:Ur}=Bc({rowHeight:r,headerHeight:i,density:ha}),am=Dn.rows,cm=Dn.columns,{activeColumns:ht,effectivePinnedColumns:un}=_g({baseColumns:cm,pinnedColumns:Vr,hasGroupingColumn:sm,groupingColDef:q,isTreeData:xo,getTreeDataPath:Y}),Rr=Ed(ht,Et),[dm,um]=Uf(Ue),qe=s.useRef(null),Vt=s.useRef(null),ma=!Mt&&o||Sg,qr=rp(qe),Co=_u({rows:am,getRowId:ma,columns:ht,rowHeight:it,headerHeight:Ur,columnVisibilityModel:Et,initialState:e.initialState,syncRows:!xe}),{state:Oe,apiRef:lt,setRows:fm,replaceRows:gm,setColumns:pm,setDimensions:hm,setDataSourceLoading:mm,setDataSourceError:wm,setRowCount:bm}=Co,{getRowIdOf:Te,getRowIdOfInEvents:xm}=kg(Oe.rows.idByRow);Eg(Jh,lt);const ym=Oe.dataSource.loading,Nt=Z||ym,vo=s.useMemo(()=>Oe.rows.allRows.map(wt=>Oe.rows.idRowsLookup.get(wt)),[Oe.rows]),{treeDataHandlers:_o,rowGroupingHandlers:Xr,activeHierarchyHandlers:fn,rowMetaMap:ze}=Bu({rows:vo,getRowId:Te,getTreeDataPath:Y,isTreeDataRequested:lm,isTreeData:xo,columns:ht,rowGroupingModel:im,isRowGrouping:cn,aggregationModel:Ue,defaultGroupingExpansionDepth:j,filterModel:pt,sortModel:gt,getAggregationPosition:ge,columnLookup:Rr,filterMode:Ee,sortingMode:Ce}),Yr=df(),So=Vu({rowsLookup:Oe.rows.idRowsLookup,columns:ht,processRowUpdate:ae,onProcessRowUpdateError:ye,replaceRows:gm,onCommitted:Yr.emit}),$n=Wu({rows:vo,getRowId:Te,columns:ht,processRowUpdate:ae,onProcessRowUpdateError:ye,onRowChange:(wt,Xm)=>{So.storeRow(Xm,wt)},onCommitted:wt=>Yr.emit(wt,"edit")}),Gn=vd({selectedRowIds:om,rowsLookup:Oe.rows.idRowsLookup,rowMetaMap:ze,enabled:!xe&&!Mt&&Le==="client"&&Ee==="client",onSelectionModelChange:Kr}),wa=zf({dataSource:xe,sortModel:gt,filterModel:pt,paginationModel:Re,paginationMode:Le,sortingMode:Ce,filterMode:Ee,aggregationModel:Ue,rowGroupingActive:cn,getRowId:ma,setRows:fm,setRowCount:bm,setDataSourceLoading:mm,setDataSourceError:wm,onAggregationResults:um,onPaginationModelChange:an});jf({enabled:xo&&!!xe,treeNodes:_o.treeNodes,isGroupExpanded:_o.isGroupExpanded,getNodePath:_o.getNodePath,toggleExpansion:_o.toggleExpansion,fetchChildren:wa.fetchChildren});const{hasDetailPanel:zt,expandedRowIds:Jr,handleDetailPanelToggle:ba,detailPanelHeights:Cm,reportDetailPanelHeight:vm}=cd({hasDetailPanel:!!K,controlledExpandedRowIds:X,onDetailPanelExpandedRowIdsChange:te,rowMetaMap:ze}),{effectiveColumns:xa,hierarchyField:Zr,orderedColumns:Qr,visibleOrderedColumns:ya,renderOrderedColumns:_m,navigationColumns:gn,columnIndexMap:ko,columnWidths:Hn,effectiveColumnOrder:Sm,columnReorderHandlers:km,moveColumn:Ca,resetColumnOrder:va,handleColumnResize:_a}=ed({activeColumns:ht,isHierarchyEnabled:yo,isRowGrouping:cn,isTreeData:xo,activeHierarchyHandlers:fn,columnVisibilityModel:Et,columnOrder:ue,onColumnOrderChange:ee,onColumnOrderModelChange:D,disableColumnReorder:se,pivotMode:Mt,checkboxSelection:h,hasDetailPanel:zt,rowReordering:Wt,initialState:Ht,setColumns:pm,pinnedColumns:un,getRowId:xm,aggregationModel:Ue,groupingRows:cn?Xr.groupingRows:void 0});fd({onStateChange:Pn,sortModel:gt,filterModel:pt,effectivePaginationModel:Re,columnWidths:Hn,effectiveColumnOrder:Sm,columnVisibilityModel:Et,pinnedColumns:Vr,density:ha});const Eo=Vc({effectiveRows:vo,activeHierarchyHandlers:fn,filterMode:Ee,filterModel:Dn.pipelineFilterModel,sortModel:Dn.pipelineSortModel,sortingMode:Ce,pagination:rt,paginationMode:Le,effectivePaginationModel:Re,pinnedRows:ce,getRowId:Te,columnLookup:Rr,hierarchyField:Zr}),{filteredRows:Sa,dataRows:pn,pinnedTopRows:Ke,pinnedBottomRows:st,sortedUnpinnedRows:mt,paginatedUnpinnedRows:Mo,allRenderableRows:It}=Eo,ei=rt?Mo:mt;Md({paginationModel:Re,currentPage:Eo.currentPage,enabled:rt&&!Nt&&mt.length>0,onPaginationModelChange:an});const No=Wc({paginationMode:Le,hasDataSource:!!xe,dataSourceRowCount:Oe.pagination.rowCount,rowCountProp:Ie,clientRowCount:mt.length}),{rowSelection:ti,handleRowClick:ni,handleSelectionChange:oi}=Cd({dataRows:pn,getRowId:Te,isPivotActive:Mt,selectedRowIds:Gn,onSelectionModelChange:Kr,disableMultipleRowSelection:y,disableRowSelectionOnClick:x,isHierarchyEnabled:yo,rowMetaMap:ze,activeHierarchyHandlers:fn,onRowClick:I});kd({apiRef:Co.apiRef,sortModel:gt,multiSort:ie,onSortModelChange:fa,filterModel:pt,onFilterModelChange:Wr,paginationModel:Re,onPaginationModelChange:an,selectedRowIds:Gn,getPendingRowSelectionModel:Bt.getPendingRowSelectionModel,onRowSelectionModelChange:Kr,disableMultipleRowSelection:y,isSyntheticRowId:wt=>Xe(wt,ze),getVisibleRows:()=>[...Ke,...ei,...st],getAllFilteredRows:()=>Mg({hierarchyHandlers:fn,pinnedTopRows:Ke,sortedUnpinnedRows:mt,pinnedBottomRows:st,rowMetaMap:ze,getRowId:Te,hierarchyField:Zr,dataRows:pn}),visibleColumns:_m,rowGroupingModel:jr,onRowGroupingModelChange:rm,aggregationModel:Ue,onAggregationModelChange:ga,columnVisibilityModel:Et,onColumnVisibilityModelChange:wo,pivotModel:zr,onPivotModelChange:pa});const Em=Su({rows:vo,getRowId:Te,onRowOrderChange:F,rowReordering:Wt}),{aggregationResult:ri,isLoading:Mm}=hs({rows:pn,columns:ht,aggregationModel:Mt?Ua:Ue,isServerSide:Cl({dataSource:xe,paginationMode:Le,sortingMode:Ce,filterMode:Ee}),dataSource:xe,filterModel:pt,sortModel:gt,serverAggregationResults:dm}),ii=Object.keys(Ue).length>0&&!Mt;Tg({apiRef:lt,hasAggregation:ii,aggregationResult:ri,aggregationModel:Ue,isRowGrouping:cn,rowGroupingHandlers:Xr,rowMetaMap:ze,columns:ht,getRowId:Te,hierarchyField:Zr});const $e=Ka({rowHeight:it,pagination:rt,paginatedUnpinnedRows:Mo,sortedUnpinnedRows:mt,expandedRowIds:Jr,getDetailPanelHeight:de,detailPanelHeights:Cm,pinnedTopRowsLength:Ke.length,pinnedBottomRowsLength:st.length,pinnedTopRows:Ke,pinnedBottomRows:st,visibleOrderedColumns:ya,pinnedColumns:un,columnWidths:Hn,viewportWidth:Oe.dimensions.viewportWidth||1e3,checkboxSelection:h,hasDetailPanel:zt,rowReordering:Wt,pinCheckboxColumn:U,pinExpandColumn:J,paginationMode:Le,isLoading:Oe.dataSource.loading,pageSize:Re.pageSize,getRowId:Te}),Lt=Df({pinnedTopRows:Ke,centerRows:ei,pinnedBottomRows:st,columns:ya,leftPinnedColumns:$e.leftPinnedCols,unpinnedColumns:$e.unpinnedColsWithWidth,rightPinnedColumns:$e.rightPinnedCols,expandedRowIds:zt?Jr:void 0,rowMetaMap:ze,getRowId:Te}),ka=s.useMemo(()=>[...$e.leftPinnedCols,...$e.unpinnedColsWithWidth,...$e.rightPinnedCols],[$e.leftPinnedCols,$e.unpinnedColsWithWidth,$e.rightPinnedCols]),He=tp({enabled:f&&!dn,model:Bt.cellSelectionModel,onModelChange:Bt.handleCellSelectionModelChange,getPendingModel:Bt.getPendingCellSelectionModel,allRenderableRows:It,getRowId:Te,navigationColumns:gn,columnIndexMap:ko,spanning:Lt,rowMetaMap:ze,layout:$e,rowHeight:it,pinnedTopRowCount:Ke.length,viewportRef:Vt,containerRef:qe,localeText:sn,showStats:w});Ug({apiRef:lt,columns:ka,getRowId:Te,containerRef:qe,disableKeyboardShortcut:p,getCellRangeCopyText:He.enabled?He.getCopyText:void 0}),Rg({apiRef:lt,viewportRef:Vt,layout:$e,rowHeight:it});const Nm=Jg({apiRef:lt,containerRef:qe,columns:Qr,onColumnResize:_a}),{scrollTop:Im,scrollLeft:Lm,overscanRows:Am,handleScroll:Tm,setViewportElement:Pm}=sd({onRowsScrollEnd:De,overscanRowCount:Zh,rowCount:$e.unpinnedRowsLength,autoHeight:u,setDimensions:hm,viewportRef:Vt}),Ea=Uc(qe),Be=Rc({layout:$e,scrollTop:Im,scrollLeft:Lm,viewportWidth:Oe.dimensions.viewportWidth,viewportHeight:Oe.dimensions.viewportHeight,autoHeight:u,rowReordering:Wt,hasDetailPanel:zt,checkboxSelection:h,pinCheckboxColumn:U,pinExpandColumn:J,overscanRows:Am,maxContentHeight:Ea??1/0}),{handleSort:Ma,handleSortAdd:Na}=_d({sortModel:gt,onSortModelChange:fa}),Io=h||!x,{focusedCell:Lo,setFocusedCell:li,viewportTabIndex:Fm,ensureGridFocus:Om,handleFocus:Dm,handleBlur:$m,handleKeyDown:Gm,handleMouseDownCapture:Hm}=Lc({allRenderableRows:It,navigationColumns:gn,checkboxSelection:h,selectedRowIds:Gn,handleSelectionChange:oi,handleDetailPanelToggle:ba,editingHandlers:$n,setKeyboardMode:qr,sortModel:gt,handleSort:Ma,handleSortAdd:Na,multiSort:ie,isCellEditable:we,pagination:rt,pageSize:Re.pageSize,virtualization:Be,viewportRef:Vt,pinnedTopRowCount:Ke.length,getRowId:Te,rowMetaMap:ze,getSpanOrigin:Lt.getSpanOrigin,onRowActivate:ni,toggleRowExpansion:fn?.toggleExpansion,handleSelectAll:ti.selectAll,rowSelectionEnabled:Io,multipleRowSelectionEnabled:!y,pinCheckboxColumn:U,pinExpandColumn:J,rowHeight:it,cellSelection:He.keyboard,headerFilters:bo}),{handleCellClick:Bm,handleHeaderClick:Wm}=ip({ensureGridFocus:Om,setKeyboardMode:qr,setFocusedCell:li,getRowId:Te,onCellClick:v});np({apiRef:lt,selection:He,model:Bt.cellSelectionModel,getPendingModel:Bt.getPendingCellSelectionModel,focusedCell:Lo,setFocusedCell:li,containerRef:qe}),af({apiRef:lt,containerRef:qe,viewportRef:Vt,selection:He,disableClipboardPaste:C,disableRangeClear:E,focusedCell:Lo,allRenderableRows:It,getRowId:Te,navigationColumns:gn,isCellEditable:we,rowMetaMap:ze,getSpanOrigin:Lt.getSpanOrigin,isEditing:$n.editingCell!==null,batchEdit:So,onClipboardPaste:S,onBeforeClipboardPaste:N}),ff({apiRef:lt,enabled:!!M,limit:typeof M=="object"&&M.limit||cf,onHistoryChange:L,channel:Yr,batchEdit:So,isEditing:$n.editingCell!==null,containerRef:qe,viewportRef:Vt,selection:He,setFocusedCell:li,allRenderableRows:It,getRowId:Te,navigationColumns:gn,layout:$e,rowHeight:it,pinnedTopRowCount:Ke.length});const Vm=Tf({containerRef:qe,viewportRef:Vt,selection:He,disableFillHandle:_,isEditing:$n.editingCell!==null,allRenderableRows:It,getRowId:Te,navigationColumns:gn,columnIndexMap:ko,isCellEditable:we,rowMetaMap:ze,getSpanOrigin:Lt.getSpanOrigin,batchEdit:So,onFill:O}),{handleHideColumn:zm,handlePinColumn:Km}=Sd({columnVisibilityModel:Et,onColumnVisibilityModelChange:wo,pinnedColumns:Vr,onPinnedColumnsChange:nm}),Bn=cp({columnGroupingModel:On,headerFilterRow:bo,pinnedTopCount:Ke.length,pinnedBottomCount:st.length,pagination:rt,paginationMode:Le,paginationModel:Re,paginationRowCount:No,paginatedUnpinnedRowCount:Mo.length,sortedUnpinnedRowCount:mt.length}),si=Gf({spanning:Lt,renderContext:Be.renderContext,offsetTop:Be.offsetTop,cumulativeHeights:$e.cumulativeHeights}),ai=nd({renderContext:si.renderContext,pinnedTopRows:Ke,pinnedBottomRows:st,paginatedUnpinnedRows:Mo,sortedUnpinnedRows:mt,pagination:rt,getRowId:Te}),Ao=Hf({spanning:Lt,firstColumnIndex:Be.renderContext.firstColumnIndex,lastColumnIndex:Be.renderContext.lastColumnIndex,virtualColumns:Be.virtualColumns,layout:$e,rows:ai});md({paginationRequested:z,isRowGrouping:cn,autoHeight:u,viewportHeight:Oe.dimensions.viewportHeight,renderedRowCount:ai.length,totalRowCount:Ke.length+ei.length+st.length,pinnedRowsIgnored:yo&&!!(ce?.top?.length||ce?.bottom?.length),scrollHeight:Be.totalHeight,maxContentHeight:Ea,reachableRowCount:jc(Be.cumulativeHeights,Be.virtualContainerHeight),unpinnedRowCount:Be.cumulativeHeights.length,listViewWithoutColumn:mo&&!Fn,listViewRowCount:dn&&Fn?It.length:0});const{allSelected:jm,someSelected:Um}=ti,hn=Bf(On,km),Rm=s.useMemo(()=>xa.some(wt=>!!wt.rowSpan),[xa]),at=Nd();bd(qe);const mn=Ep({apiRef:lt,options:Qh,columns:ht,onApply:em,onError:tm}),Ia=Ne?.noRowsOverlay,La=Ne?.loadingOverlay,ci=La?d.jsx(La,{...ke?.loadingOverlay}):void 0,Aa=Ia?d.jsx(Ia,{...ke?.noRowsOverlay}):void 0,To=Ne?.footer,qm=Nt&&It.length>0&&Le!=="infinite",Ta=Ne?.toolbar,Pa=dp({toolbar:Ne?.toolbar,toolbarSlotProps:ke?.toolbar,apiRef:lt,orderedColumns:Qr,baseColumns:Hr,aggregationModel:Ue,onAggregationModelChange:ga,pivotMode:Fe,pivotModelProp:pe,onPivotModelChangeProp:ve,pivotModel:zr,onPivotModelChange:pa,filterModel:pt,onFilterModelChange:Wr,columnVisibilityModel:Et,onColumnVisibilityModelChange:wo,disableColumnReorder:se,columnGroupingModel:On,moveColumn:Ca,resetColumnOrder:va,forceColumnsOpen:at.toolbarPanelRequested,onColumnsPanelClose:at.closeToolbarPanel,aiAssistantEnabled:mn.enabled,aiAssistantOpen:mn.open,onAiAssistantToggle:mn.togglePanel,aiAssistantLabel:sn?.aiAssistantButton,forceFiltersOpen:at.toolbarFiltersRequested,onFiltersPanelClose:at.closeToolbarFiltersPanel}),di={rowReordering:Wt,columnIndexMap:ko,editingHandlers:$n,isCellEditable:we,selectedRowIds:Gn,checkboxSelection:h,onRowClick:ni,onRowDoubleClick:P,onCellClick:Bm,onSelectionChange:oi,columnWidths:Hn,pinnedColumns:un,hasDetailPanel:zt,expandedRowIds:Jr,getDetailPanelContent:K,getDetailPanelHeight:de,onDetailPanelToggle:ba,onDetailPanelHeightChange:vm,pinCheckboxColumn:U,pinExpandColumn:J,focusedCell:Lo,colspanMap:Lt.colspanMap,rowSpanningCaches:Lt.rowSpanningCaches,rowHeight:it,rowMetaMap:ze,cellRange:He.displayRange,cellRangeHasRowSpan:He.hasRowSpan,fillHandle:Vm.handle};return d.jsxs("div",{ref:qe,className:["ogx",Se,u&&"ogx--auto-height",!u&&T===void 0&&be?.height===void 0&&"ogx--fill",Rm&&"ogx--row-spanning",dn&&"ogx--list-view"].filter(Boolean).join(" "),style:{...be,height:T??be?.height,"--ogx-row-height":`${it}px`,"--ogx-header-height":`${Ur}px`,...bo?{"--ogx-header-filter-height":`${c}px`}:void 0},"aria-busy":Nt,children:[Ta&&Pa&&d.jsx(xl.Provider,{value:at.toolbarHost,children:d.jsx(Ad,{component:Ta,toolbarProps:Pa})}),mn.panelProps&&d.jsx(Ap,{panelProps:mn.panelProps,slot:Ne?.aiAssistantPanel,slotProps:ke?.aiAssistantPanel}),d.jsx(vg,{isOpen:at.standalonePanelOpen,containerRef:qe,panelRef:at.standalonePanelRef,columns:Qr,columnVisibilityModel:Et,disableColumnReorder:se,onClose:at.closeStandalonePanel,onColumnVisibilityChange:wo,onColumnMove:Ca,onColumnOrderReset:va,columnGroupingModel:On}),dn&&Fn&&d.jsx(Qf,{ariaLabel:ft,allRenderableRows:It,dataRowCount:pn.length,pinnedTopRowCount:Ke.length,pinnedBottomRowCount:st.length,unpinnedRowCount:mt.length,pagination:rt,effectivePaginationModel:Re,currentPage:Eo.currentPage,pageSizeOptions:oe,selectedRowIds:Gn,listViewColumn:Fn,columnsByField:Rr.byField,rowMetaMap:ze,noRowsLabel:Br,rowHeight:it,checkboxSelection:h,paginationMode:Le,serverRowCount:No,paginationSlot:Ne?.pagination,paginationSlotProps:ke?.pagination,localeText:ll(sn),onRowClick:ni,onRowDoubleClick:P,onSelectionChange:oi,onPaginationModelChange:an,onRowsScrollEnd:De,getRowId:Te,multiselectable:Io&&!y,selectable:Io,onToggleExpansion:fn?.toggleExpansion,loading:Nt,loadingOverlay:ci,noRowsOverlay:Aa,showPaginationControls:!To}),!dn&&d.jsx("div",{ref:Pm,className:"ogx__viewport",onScroll:Tm,role:"grid","aria-label":ft||"Data grid","aria-rowcount":Bn.rowCount,"aria-colcount":gn.length,"aria-multiselectable":Io&&!y||He.enabled,"aria-busy":Nt,tabIndex:Fm,onKeyDownCapture:()=>{qr(!0)},onMouseDownCapture:Hm,onMouseDown:He.handleMouseDown,onClickCapture:He.handleClickCapture,onKeyDown:Gm,onFocus:Dm,onBlur:$m,children:d.jsxs("div",{className:"ogx__content",style:{width:un?.right?.length?`max(100%, ${Be.totalWidth}px)`:Be.totalWidth},role:"presentation",children:[d.jsxs("div",{className:"ogx__sticky-top",role:"presentation",children:[d.jsx(Hl,{columns:Ao,allColumns:ka,columnGroupingModel:On,checkboxSelection:h,allSelected:jm,someSelected:Um,onSelectAll:ti.selectAll,sortModel:gt,onSort:Ma,onSortAdd:Na,multiSort:ie,onColumnResize:_a,onColumnAutosize:Nm,columnWidths:Hn,pinnedColumns:un,focusedCell:Lo,columnIndexMap:ko,onHeaderClick:Wm,onDragStart:hn.onDragStart,onDragOver:hn.onDragOver,onDragEnd:hn.onDragEnd,onDrop:hn.onDrop,draggedColumn:hn.draggedColumn,dragOverColumn:hn.dragOverColumn,rowReordering:Wt,hasDetailPanel:zt,pinCheckboxColumn:U,pinExpandColumn:J,aggregationModel:Ue,onHideColumn:zm,onManageColumns:at.openColumnsPanel,onPinColumn:Km,wrapHeaderText:l,headerHeight:Ur,headerFilters:bo,filterModel:pt,onFilterModelChange:Wr,onOpenFilterPanel:at.openFiltersPanel,localeText:sn}),d.jsx(ys,{...di,rows:Ke,position:"top",ariaRowIndexBase:Bn.topBase,columns:Ao,pinnedRows:ce,getRowId:Te})]}),!Nt&&!Oe.dataSource.error&&Sa.length===0&&d.jsx(Pd,{noRowsLabel:Br,width:Be.totalWidth,overlay:Aa}),d.jsx(xg,{...di,virtualContainerHeight:Be.virtualContainerHeight,offsetTop:si.offsetTop,effectiveLoading:Nt,visibleRows:ai,baseColumns:Hr,virtualColumns:Ao,viewportWidth:Oe.dimensions.viewportWidth,rowReorderHandlers:Em,paginationMode:Le,dataSourceLoading:Oe.dataSource.loading,sortedUnpinnedRowCount:mt.length,infiniteScrollSkeletonCount:Math.min(Re.pageSize,20),unpinnedRowsLength:$e.unpinnedRowsLength,lastRenderedRowIndex:si.renderContext.lastRowIndex,ariaRowIndexOffset:Bn.centerOffset,loadingOverlay:ci}),d.jsxs("div",{className:"ogx__sticky-bottom",role:"presentation",children:[d.jsx(ys,{...di,rows:st,position:"bottom",rowIndexOffset:Bn.bottomRowIndexOffset,ariaRowIndexBase:Bn.bottomBase,columns:Ao,pinnedRows:ce,getRowId:Te}),ii&&Xr.rootAggregationPosition!==null&&d.jsx(Td,{columns:Be.virtualColumns,aggregationModel:Ue,aggregationResult:ri,columnWidths:Hn,rowHeight:it,checkboxSelection:h,hasDetailPanel:zt,rowReordering:Wt,pinCheckboxColumn:U,pinExpandColumn:J,pinnedColumns:un,loading:Mm})]})]})}),He.enabled&&w&&d.jsx(op,{stats:He.stats,apiRef:Co.apiRef,slot:Ne?.cellSelectionStats,slotProps:ke?.cellSelectionStats}),To&&d.jsx(To,{apiRef:Co.apiRef,aggregationModel:Ue,aggregationResult:ii?ri:null,rowCount:yo&&Le!=="server"?pn.length:No,pagination:rt,paginationModel:Re,pageSizeOptions:oe,onPaginationModelChange:an,...ke?.footer}),!dn&&!To&&rt&&d.jsx(lp,{paginationSlot:Ne?.pagination,paginationSlotProps:ke?.pagination,page:Eo.currentPage,paginationModel:Re,rowCount:No,pageSizeOptions:oe,onPaginationModelChange:an,localeText:sn}),d.jsx(sp,{loading:Nt,error:Oe.dataSource.error,noRowsLabel:Br,filteredRowCount:Sa.length,dataRowCount:pn.length,filterModel:pt,cellSelectionAnnouncement:He.announcement,aiAssistantAnnouncement:mn.announcement}),qm&&d.jsx(eg,{overlay:ci}),d.jsx(Od,{error:Oe.dataSource.error,onRetry:xe?wa.fetchRows:void 0})]})}function Pp({rows:e=5,columns:t=5}){return d.jsx("div",{className:"ogx__skeleton",children:Array.from({length:e}).map((n,o)=>d.jsx("div",{className:"ogx__skeleton-row",children:Array.from({length:t}).map((r,i)=>d.jsx("div",{className:"ogx__skeleton-cell",children:d.jsx("div",{className:"ogx__skeleton-content"})},i))},o))})}const Fp=300;function tn(e){return"field"in e&&!("items"in e)}function Gs(e,t){return e.find(n=>tn(n)&&n.field===t)}function Hs(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)=>Hs(n,t[o])):!1}function Op(e,t){return e===t?!0:tn(e)&&tn(t)?e.id===t.id&&e.field===t.field&&e.operator===t.operator&&Hs(e.value,t.value):!tn(e)&&!tn(t)?e.id===t.id&&e.logicOperator===t.logicOperator&&$r(e.items,t.items):!1}function $r(e,t){return e===t?!0:e.length===t.length&&e.every((n,o)=>Op(n,t[o]))}function Dp(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 Bs(e,t){return Object.is(e.value,t)?!0:t!=null&&String(e.value).toLowerCase()===String(t).toLowerCase()}function Ws(e,t){return Yo(e,t.type)}function Vs(e,t){return t==="isAnyOf"?e.split(",").map(n=>n.trim()).filter(n=>n!==""):e}function $p(e,t){if(!jt.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(()=>Ni(e.type),[e.type]),l=i[0],a=t?.operator??l,c=i.includes(a)?i:[a,...i],u=!!t,g=e.headerName||e.field,[h,x]=s.useState(null),[y,p]=s.useState(n);y!==n&&(p(n),x(null));const f=s.useRef(o),m=s.useRef(t),b=s.useRef(e);s.useLayoutEffect(()=>{f.current=o,m.current=t,b.current=e});const w=s.useCallback((I,P)=>({id:m.current?.id??`${e.field}-${Date.now()}`,field:e.field,operator:I,value:P}),[e.field]),C=s.useCallback(I=>{const P=m.current;if(P?I===Ws(P.value,b.current):I.trim()==="")return;const B=P?.operator??l;f.current(w(B,Vs(I,B)))},[l,w]),E=s.useRef(null),S=s.useRef(C);s.useLayoutEffect(()=>{E.current=h,S.current=C}),s.useEffect(()=>()=>{const I=E.current;E.current=null,I!==null&&S.current(I)},[]),s.useEffect(()=>{if(h===null)return;const I=setTimeout(()=>{E.current=null,C(h),x(null)},Fp);return()=>clearTimeout(I)},[h,C]);const N=I=>{const P=h!==null?Vs(h,I):t?.value;x(null),o(w(I,$p(P,I)))},M=()=>{x(null),o(null)},_=!jt.has(a),O=Dp(e),L=`ogx-filter__value-input${u?" ogx-filter__value-input--active":""}`,A=`Filter value for ${g}`;let k=null;if(_&&e.type==="boolean")k=d.jsxs("select",{id:`${r}-val`,name:`filter-val-${e.field}`,className:`${L} ogx-filter__value-select`,value:t?.value==null?"":String(t.value),onChange:I=>{I.target.value===""?o(null):o(w(a,I.target.value))},"aria-label":A,children:[d.jsx("option",{value:"",children:"Any"}),d.jsx("option",{value:"true",children:"true"}),d.jsx("option",{value:"false",children:"false"})]});else if(_&&e.type==="singleSelect"&&O.length>0&&a==="isAnyOf"){const I=Array.isArray(t?.value)?t.value:t?.value==null||t.value===""?[]:[t.value];k=d.jsx("select",{id:`${r}-val`,name:`filter-val-${e.field}`,className:`${L} ogx-filter__value-multiselect`,multiple:!0,size:Math.min(O.length,4),value:O.filter(P=>I.some(v=>Bs(P,v))).map(P=>P.key),onChange:P=>{const v=new Set(Array.from(P.target.selectedOptions,B=>B.value));o(w("isAnyOf",O.filter(B=>v.has(B.key)).map(B=>B.value)))},"aria-label":A,children:O.map(P=>d.jsx("option",{value:P.key,children:P.label},P.key))})}else if(_&&e.type==="singleSelect"&&O.length>0&&(a==="is"||a==="not")){const I=O.find(P=>Bs(P,t?.value));k=d.jsxs("select",{id:`${r}-val`,name:`filter-val-${e.field}`,className:`${L} ogx-filter__value-select`,value:I?.key??"",onChange:P=>{const v=O.find(B=>B.key===P.target.value);o(w(a,v?v.value:""))},"aria-label":A,children:[d.jsx("option",{value:"",children:"Any"}),O.map(P=>d.jsx("option",{value:P.key,children:P.label},P.key))]})}else _&&(k=d.jsx(et,{id:`${r}-val`,name:`filter-val-${e.field}`,inputClassName:L,type:e.type==="date"?"date":"text",value:h??Ws(t?.value,e),onChange:I=>x(I.target.value),placeholder:e.type==="number"?"Number…":"Value…","aria-label":A}));return d.jsxs("div",{className:`ogx-filter__row${u?" ogx-filter__row--active":""}`,children:[d.jsx("span",{className:"ogx-filter__col-label",title:e.field,children:g}),d.jsxs("div",{className:"ogx-filter__controls",children:[d.jsx("select",{id:`${r}-op`,name:`filter-op-${e.field}`,className:`ogx-filter__op-select${u?" ogx-filter__op-select--active":""}`,value:a,onChange:I=>N(I.target.value),"aria-label":`Filter operator for ${g}`,children:c.map(I=>d.jsx("option",{value:I,children:I},I))}),k,u&&d.jsx("button",{type:"button",className:"ogx-filter__row-clear",onClick:M,"aria-label":`Clear filter for ${g}`,title:"Clear",children:"×"})]})]})},zs=({filterModel:e,columns:t,onFilterModelChange:n})=>{const o=s.useMemo(()=>e.items??[],[e.items]),r=e.logicOperator??"and",[i,l]=s.useState(null),[a,c]=s.useState(o),[u,g]=s.useState(0);if(a!==o){c(o);const m=!$r(a,o),b=i!==null&&$r(i,o);m&&!b&&g(w=>w+1)}const h=s.useCallback((m,b)=>{const w=o.findIndex(E=>tn(E)&&E.field===m);let C;if(w===-1){if(!b)return;C=[...o,b]}else b?C=o.map((E,S)=>S===w?b:E):C=o.filter((E,S)=>S!==w);l(C),n({...e,items:C})},[o,e,n]),x=s.useCallback(m=>{n({...e,logicOperator:m})},[e,n]),y=t.filter(m=>m.filterable!==!1),p=y.filter(m=>Gs(o,m.field)).length,f=o.length-p;return d.jsxs(d.Fragment,{children:[o.length>1&&d.jsxs("div",{className:"ogx-filter__logic-bar",children:[d.jsx("span",{className:"ogx-filter__logic-label",children:"Match:"}),d.jsx("button",{type:"button",className:`ogx-filter__logic-pill${r==="and"?" ogx-filter__logic-pill--active":""}`,onClick:()=>x("and"),"aria-pressed":r==="and",children:"ALL (AND)"}),d.jsx("button",{type:"button",className:`ogx-filter__logic-pill${r==="or"?" ogx-filter__logic-pill--active":""}`,onClick:()=>x("or"),"aria-pressed":r==="or",children:"ANY (OR)"})]}),f>0&&d.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?d.jsx("div",{className:"ogx-filter__empty",children:"No filterable columns."}):y.map(m=>d.jsx(Gp,{col:m,item:Gs(o,m.field),resetToken:u,onChange:b=>h(m.field,b)},m.field))]})},Ks=["sum","avg","count","min","max"];function js(){return d.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:[d.jsx("rect",{x:"3",y:"3",width:"7",height:"7",rx:"1"}),d.jsx("rect",{x:"14",y:"3",width:"7",height:"7",rx:"1"}),d.jsx("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1"}),d.jsx("rect",{x:"14",y:"14",width:"7",height:"7",rx:"1",fill:"currentColor",opacity:"0.25"}),d.jsx("path",{d:"M17 14v-4M17 10l-2 2 2 2"})]})}function Hp({anchorRef:e,columns:t,model:n,onChange:o,onClose:r}){const i=s.useRef(null),[l,a]=s.useState({top:0,right:0}),[c,u]=s.useState(null);s.useLayoutEffect(()=>{u(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const g=s.useCallback(()=>zn(e.current,$t()),[e]);s.useEffect(()=>{a(g());const v=()=>a(g());return window.addEventListener("scroll",v,!0),window.addEventListener("resize",v),()=>{window.removeEventListener("scroll",v,!0),window.removeEventListener("resize",v)}},[g]),s.useEffect(()=>{function v(V){i.current&&!i.current.contains(V.target)&&e.current&&!e.current.contains(V.target)&&r()}function B(V){V.key==="Escape"&&r()}return document.addEventListener("mousedown",v),document.addEventListener("keydown",B),()=>{document.removeEventListener("mousedown",v),document.removeEventListener("keydown",B)}},[e,r]);const h=new Set(n.rowFields),x=new Set(n.columnFields),y=new Set(n.valueFields.map(v=>v.field)),p=v=>h.has(v)||x.has(v)||y.has(v),f=v=>t.find(B=>B.field===v),m=v=>f(v)?.headerName??v,b=v=>{const B=f(v)?.availableAggregationFunctions;return B?Ks.filter(V=>B.includes(V)):Ks},w=v=>v.aggregable!==!1&&(v.type==="number"||v.aggregable===!0)&&b(v.field).length>0,C=v=>v.groupable!==!1;function E(v){h.has(v)||o({...n,rowFields:[...n.rowFields,v]})}function S(v){x.has(v)||o({...n,columnFields:[...n.columnFields,v]})}function N(v){y.has(v)||o({...n,valueFields:[...n.valueFields,{field:v,aggFn:b(v)[0]??"sum"}]})}function M(v){o({...n,rowFields:n.rowFields.filter((B,V)=>V!==v)})}function _(v){o({...n,columnFields:n.columnFields.filter((B,V)=>V!==v)})}function O(v){o({...n,valueFields:n.valueFields.filter((B,V)=>V!==v)})}function L(v,B){o({...n,valueFields:n.valueFields.map((V,Q)=>Q===v?{...V,aggFn:B}:V)})}function A(){o({rowFields:[],columnFields:[],valueFields:[]})}const k=n.rowFields.length+n.columnFields.length+n.valueFields.length,I=t.filter(v=>!p(v.field)&&(C(v)||w(v))),P=d.jsxs("div",{ref:i,className:"ogx-pivot-panel",role:"dialog","aria-label":"Pivot configuration",style:{top:l.top,right:l.right,left:l.left},children:[d.jsxs("div",{className:"ogx-pivot-panel__header",children:[d.jsxs("span",{className:"ogx-pivot-panel__title",children:[d.jsx(js,{}),"Pivot Mode"]}),k>0&&d.jsx("button",{type:"button",className:"ogx-pivot-panel__reset-btn",onClick:A,title:"Reset pivot",children:"Reset"})]}),d.jsxs("div",{className:"ogx-pivot-panel__body",children:[d.jsxs("div",{className:"ogx-pivot-zone",children:[d.jsxs("span",{className:"ogx-pivot-zone__label",children:[d.jsx("span",{className:"ogx-pivot-zone__dot ogx-pivot-zone__dot--row"}),"Row Fields"]}),d.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((v,B)=>d.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--row",children:[m(v),d.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>M(B),title:`Remove ${m(v)}`,"aria-label":`Remove ${m(v)} from Row Fields`,children:"×"})]},`${B}:${v}`))})]}),d.jsxs("div",{className:"ogx-pivot-zone",children:[d.jsxs("span",{className:"ogx-pivot-zone__label",children:[d.jsx("span",{className:"ogx-pivot-zone__dot ogx-pivot-zone__dot--col"}),"Column Fields"]}),d.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((v,B)=>d.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--col",children:[m(v),d.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>_(B),title:`Remove ${m(v)}`,"aria-label":`Remove ${m(v)} from Column Fields`,children:"×"})]},`${B}:${v}`))})]}),d.jsxs("div",{className:"ogx-pivot-zone",children:[d.jsxs("span",{className:"ogx-pivot-zone__label",children:[d.jsx("span",{className:"ogx-pivot-zone__dot ogx-pivot-zone__dot--value"}),"Value Fields (aggregated)"]}),d.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((v,B)=>{const V=b(v.field),Q=V.includes(v.aggFn)?V:[v.aggFn,...V];return d.jsxs("span",{className:"ogx-pivot-chip ogx-pivot-chip--value",children:[m(v.field),d.jsx("select",{className:"ogx-pivot-chip__fn-select",value:v.aggFn,onChange:H=>L(B,H.target.value),title:"Aggregation function","aria-label":`Aggregation function for ${m(v.field)}`,children:Q.map(H=>d.jsx("option",{value:H,children:H.toUpperCase()},H))}),d.jsx("button",{type:"button",className:"ogx-pivot-chip__remove",onClick:()=>O(B),title:`Remove ${m(v.field)}`,"aria-label":`Remove ${m(v.field)} (${v.aggFn.toUpperCase()}) from Value Fields`,children:"×"})]},`${B}:${v.field}:${v.aggFn}`)})})]}),d.jsx("hr",{className:"ogx-pivot-panel__divider"}),d.jsxs("div",{children:[d.jsx("div",{className:"ogx-pivot-panel__fields-label",children:"Available Fields"}),d.jsxs("div",{className:"ogx-pivot-fields",children:[I.map(v=>{const B=w(v),V=C(v),Q=v.headerName??v.field;return d.jsxs("div",{style:{display:"flex",alignItems:"center",gap:3},children:[d.jsx("span",{className:`ogx-pivot-field-btn${B?" ogx-pivot-field-btn--numeric":""}`,children:Q}),d.jsxs("div",{className:"ogx-pivot-field-actions",children:[V&&d.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--row",onClick:()=>E(v.field),title:"Add to Row Fields","aria-label":`Add ${Q} to Row Fields`,children:"Row"}),V&&d.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--col",onClick:()=>S(v.field),title:"Add to Column Fields","aria-label":`Add ${Q} to Column Fields`,children:"Col"}),B&&d.jsx("button",{type:"button",className:"ogx-pivot-add-btn ogx-pivot-add-btn--value",onClick:()=>N(v.field),title:"Add to Value Fields","aria-label":`Add ${Q} to Value Fields`,children:"Val"})]})]},v.field)}),I.length===0&&d.jsx("span",{style:{fontSize:12,color:"var(--ogx-color-gray-400, #94a3b8)"},children:"All fields are in use."})]})]})]})]});return c?bt.createPortal(P,c):null}function Bp(){return d.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("circle",{cx:"11",cy:"11",r:"8"}),d.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]})}function Wp(){return d.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function Us(e){return e.trim().split(/\s+/).filter(Boolean).join(" ")}function Vp({value:e="",onChange:t,placeholder:n="Search...",debounceMs:o=250}){const[r,i]=s.useState(()=>e.length>0),[l,a]=s.useState(e),c=s.useRef(null),u=s.useRef(null),g=s.useRef(t);s.useLayoutEffect(()=>{g.current=t},[t]);const h=s.useRef(e),x=s.useRef(e);s.useEffect(()=>{e!==x.current&&(x.current=e,Us(e)!==Us(h.current)&&(a(e),h.current=e,i(e.length>0)))},[e]),s.useEffect(()=>{const w=setTimeout(()=>{l!==h.current&&(h.current=l,g.current(l))},o);return()=>clearTimeout(w)},[l,o]);const y=s.useRef(l);s.useLayoutEffect(()=>{y.current=l}),s.useEffect(()=>()=>{const w=y.current;w!==h.current&&(h.current=w,g.current(w))},[]);const p=s.useCallback(()=>{i(!0),requestAnimationFrame(()=>c.current?.focus())},[]),f=s.useCallback(w=>{w.stopPropagation(),a(""),h.current="",g.current(""),c.current?.focus()},[]),m=s.useCallback(()=>{i(!0)},[]),b=s.useCallback(()=>{setTimeout(()=>{u.current&&document.activeElement&&u.current.contains(document.activeElement)||l||i(!1)},150)},[l]);return s.useEffect(()=>{const w=C=>{u.current&&!u.current.contains(C.target)&&(l||i(!1))};return document.addEventListener("mousedown",w),()=>document.removeEventListener("mousedown",w)},[l]),d.jsxs("div",{ref:u,className:`ogx-global-search${r?" ogx-global-search--expanded":""}`,onClick:r?void 0:p,children:[d.jsx("div",{className:"ogx-global-search__icon-wrapper",children:d.jsx(Bp,{})}),d.jsx(et,{ref:c,inputClassName:"ogx-global-search__input",value:l,onChange:w=>a(w.target.value),onFocus:m,onBlur:b,placeholder:n,"aria-label":"Global Search",autoComplete:"off"}),l&&d.jsx("button",{type:"button",className:"ogx-global-search__clear",onClick:f,"aria-label":"Clear search",children:d.jsx(Wp,{})})]})}const go=8;function Ln({title:e,children:t,placement:n="top",enterDelay:o=200,leaveDelay:r=0}){const[i,l]=s.useState(!1),[a,c]=s.useState({top:0,left:0}),[u,g]=s.useState(null),h=s.useRef(null),x=s.useRef(null),y=s.useId(),p=s.useCallback(()=>{if(!x.current)return;const S=x.current.getBoundingClientRect(),N=S.left+S.width/2,M=S.top+S.height/2;switch(n){case"bottom":c({top:S.bottom+go,left:N});break;case"left":c({top:M,left:S.left-go});break;case"right":c({top:M,left:S.right+go});break;default:c({top:S.top-go,left:N})}},[n]),f=s.useCallback(()=>{h.current&&clearTimeout(h.current),h.current=null},[]);s.useLayoutEffect(()=>{if(!i)return;p();const S=N=>{N.key==="Escape"&&(f(),l(!1))};return window.addEventListener("scroll",p,!0),window.addEventListener("resize",p),document.addEventListener("keydown",S),()=>{window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p),document.removeEventListener("keydown",S)}},[i,p,f]),s.useEffect(()=>f,[f]);const m=()=>{f(),h.current=setTimeout(()=>{g(x.current?.closest(".ogx-theme-provider")??document.body),l(!0)},o)},b=()=>{f(),h.current=setTimeout(()=>{l(!1)},r)},w=s.useCallback(S=>{x.current=S?S.firstElementChild??S:null},[]),C=i&&!!e&&u!==null;let E=t;if(C&&s.isValidElement(t)){const S=t,N=S.props["aria-describedby"];E=s.cloneElement(S,{"aria-describedby":N?`${N} ${y}`:y})}return d.jsxs(d.Fragment,{children:[d.jsx("span",{ref:w,style:{display:"inline-block",lineHeight:0},onMouseEnter:m,onMouseLeave:b,onFocus:m,onBlur:b,children:E}),C&&u&&bt.createPortal(d.jsx("div",{id:y,role:"tooltip",className:`ogx-tooltip ogx-tooltip--${n}`,style:{top:a.top,left:a.left,position:"fixed",zIndex:99999},children:e}),u)]})}const zp=Object.keys(xt);function Kp(e){return Object.prototype.hasOwnProperty.call(xt,e)}function Rs(e){return e.availableAggregationFunctions?Array.from(new Set(e.availableAggregationFunctions.filter(Kp))):zp}function qs(){return d.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:d.jsx("path",{d:"M18 4H6l6 8-6 8h12"})})}function jp(){return d.jsxs("svg",{focusable:"false","aria-hidden":"true",viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",children:[d.jsx("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",stroke:"currentColor",strokeWidth:"1.8"}),d.jsx("rect",{x:"8.5",y:"4",width:"7",height:"16",fill:"currentColor",opacity:"0.25"}),d.jsx("line",{x1:"8.5",y1:"4",x2:"8.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),d.jsx("line",{x1:"15.5",y1:"4",x2:"15.5",y2:"20",stroke:"currentColor",strokeWidth:"1.8"}),d.jsx("line",{x1:"2",y1:"9",x2:"22",y2:"9",stroke:"currentColor",strokeWidth:"1.2"}),d.jsx("line",{x1:"2",y1:"14",x2:"22",y2:"14",stroke:"currentColor",strokeWidth:"1.2"})]})}function Xs(){return d.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:d.jsx("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"})})}function Up({anchorRef:e,aggregationModel:t,aggregableColumns:n,onFunctionChange:o,onClearAll:r,onClose:i,activeCount:l}){const a=s.useRef(null),[c,u]=s.useState({top:0,right:0}),[g,h]=s.useState(null);s.useLayoutEffect(()=>{h(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const x=s.useCallback(()=>zn(e.current,$t()),[e]);s.useEffect(()=>{u(x());const p=()=>u(x());return window.addEventListener("scroll",p,!0),window.addEventListener("resize",p),()=>{window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p)}},[x]),s.useEffect(()=>{function p(f){a.current&&!a.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=d.jsxs("div",{ref:a,className:"ogx-toolbar__panel",role:"dialog","aria-label":"Summaries configuration",style:{top:c.top,right:c.right,left:c.left,width:400,maxWidth:"calc(100vw - 24px)"},children:[d.jsxs("div",{className:"ogx-toolbar__panel-header",children:[d.jsxs("span",{className:"ogx-toolbar__panel-title",children:[d.jsx(qs,{}),"Summaries"]}),l>0&&d.jsx("button",{type:"button",className:"ogx-toolbar__clear-btn",onClick:r,title:"Clear all summaries",children:"Clear all"})]}),d.jsx("div",{className:"ogx-toolbar__panel-body",children:n.length===0?d.jsxs("p",{className:"ogx-toolbar__empty",children:["No aggregable columns.",d.jsx("br",{}),"Set ",d.jsx("code",{children:"aggregable: true"})," on a column to enable."]}):n.map(p=>{const f=t[p.field]||"none";return d.jsxs("div",{className:"ogx-toolbar__agg-row",children:[d.jsx("span",{className:"ogx-toolbar__agg-label",title:p.field,children:p.headerName||p.field}),d.jsx("div",{className:"ogx-toolbar__agg-pills",children:["none",...Rs(p)].map(m=>d.jsx("button",{type:"button",className:`ogx-toolbar__pill${f===m?" ogx-toolbar__pill--active":""}`,onClick:()=>o(p.field,m),"aria-pressed":f===m,children:m},m))})]},p.field)})})]});return g?bt.createPortal(y,g):null}function Rp({anchorRef:e,columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:a,onClose:c,showNonHideableColumns:u}){const g=s.useRef(null),[h,x]=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(()=>zn(e.current,$t()),[e]);s.useEffect(()=>{x(f());const b=()=>x(f());return window.addEventListener("scroll",b,!0),window.addEventListener("resize",b),()=>{window.removeEventListener("scroll",b,!0),window.removeEventListener("resize",b)}},[f]),s.useEffect(()=>{function b(w){g.current&&!g.current.contains(w.target)&&e.current&&!e.current.contains(w.target)&&c()}return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[e,c]),s.useEffect(()=>{function b(w){w.key==="Escape"&&c()}return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[c]);const m=d.jsx("div",{ref:g,className:"ogx-toolbar__panel",role:"dialog","aria-label":"Column visibility",style:{top:h.top,right:h.right,left:h.left,width:280,padding:0},children:d.jsx(Ir,{columns:t,visibleColumns:n,onVisibilityChange:o,onShowAll:r,onHideAll:i,onColumnReorder:l,onColumnOrderReset:a,showNonHideableColumns:u})});return y?bt.createPortal(m,y):null}function qp({anchorRef:e,columns:t,filterModel:n,onFilterModelChange:o,onClose:r}){const i=s.useRef(null),[l,a]=s.useState({top:0,right:0}),c=s.useRef(r);s.useLayoutEffect(()=>{c.current=r},[r]);const[u,g]=s.useState(null);s.useLayoutEffect(()=>{g(e.current?.closest(".ogx-theme-provider")??document.body)},[e]);const h=s.useCallback(()=>zn(e.current,$t()),[e]);s.useEffect(()=>{a(h());const f=()=>a(h());return window.addEventListener("scroll",f,!0),window.addEventListener("resize",f),()=>{window.removeEventListener("scroll",f,!0),window.removeEventListener("resize",f)}},[h]),s.useEffect(()=>{function f(m){m.key==="Escape"&&c.current()}return document.addEventListener("keydown",f),()=>document.removeEventListener("keydown",f)},[]);const x=n.items?.length??0,y=()=>{o({...n,items:[],logicOperator:"and"})},p=d.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,left:l.left,width:540,maxWidth:"calc(100vw - 24px)"},children:[d.jsxs("div",{className:"ogx-toolbar__panel-header",children:[d.jsxs("span",{className:"ogx-toolbar__panel-title",children:[d.jsx(Xs,{}),"Filters",x>0&&d.jsx("span",{className:"ogx-toolbar__panel-count",children:x})]}),d.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[x>0&&d.jsx("button",{type:"button",className:"ogx-toolbar__clear-btn",onClick:y,title:"Clear all filters",children:"Clear all"}),d.jsx("button",{type:"button",className:"ogx-toolbar__close-btn",onClick:()=>c.current(),title:"Close filters","aria-label":"Close filters panel",children:"Close"})]})]}),d.jsx("div",{className:"ogx-toolbar__panel-body ogx-toolbar__panel-body--filter",children:d.jsx(zs,{columns:t,filterModel:n,onFilterModelChange:o})})]});return u?bt.createPortal(p,u):null}const Xp={rowFields:[],columnFields:[],valueFields:[]},Yp=[];function Jp({columns:e=Yp,baseColumns:t,aggregationModel:n={},onAggregationModelChange:o,pivotModel:r,onPivotModelChange:i,filterModel:l,onFilterModelChange:a,columnVisibilityModel:c={},onColumnVisibilityModelChange:u,onColumnReorder:g,onColumnOrderReset:h,forceColumnsOpen:x,onColumnsPanelClose:y,forceFiltersOpen:p,onFiltersPanelClose:f,children:m,rightContent:b,style:w,renderColumnsButton:C,renderFilterButton:E,renderAggregationButton:S,renderExportButton:N,renderQuickFilter:M,className:_,showNonHideableColumns:O,onAiAssistantToggle:L,aiAssistantOpen:A=!1,aiAssistantLabel:k="Ask AI"}){const[I,P]=s.useState(x?"columns":null),v=I==="summaries",B=I==="pivot",V=I==="columns",Q=I==="filters",H=ae=>{I==="columns"&&ae!=="columns"&&y?.(),I==="filters"&&ae!=="filters"&&f?.(),P(ae)},z=ae=>H(I===ae?null:ae),W=ae=>{I===ae&&H(null)},[re,oe]=s.useState(x);re!==x&&(oe(x),x&&P("columns"));const[fe,le]=s.useState(p);fe!==p&&(le(p),p&&a&&P("filters"));const ce=s.useContext(xl),K=x!==void 0&&!!u;s.useEffect(()=>{if(!(!ce||!K))return ce.registerColumnsPanel()},[ce,K]);const de=p!==void 0&&!!a;s.useEffect(()=>{if(!(!ce||!de))return ce.registerFiltersPanel()},[ce,de]);const X=s.useRef(null),te=s.useRef(null),U=s.useRef(null),J=s.useRef(null),se=s.useRef(null),ue=s.useRef(null),ee=s.useRef(null),D=s.useRef(null),T=r??Xp,$=T.rowFields.length>0||T.columnFields.length>0||T.valueFields.length>0,F=t?new Set(t.map(ae=>ae.field)):null,Z=e.filter(ae=>ae.aggregable!==!1&&(ae.type==="number"||ae.aggregable===!0)&&Rs(ae).length>0&&(!F||F.has(ae.field))),G=Object.keys(n).filter(ae=>n[ae]&&n[ae]!=="none").length,Y=s.useCallback((ae,ye)=>{if(!o)return;const xe={...n};ye==="none"?delete xe[ae]:xe[ae]=ye,o(xe)},[n,o]),j=s.useCallback(()=>{o?.({})},[o]),q=s.useCallback(ae=>{if(!a)return;const ye=ae.trim().split(/\s+/).filter(Boolean),xe={...l||{},quickFilterValues:ye,items:l?.items||[]};a(xe)},[l,a]),ne=(l?.quickFilterValues??[]).join(" "),he=l?.items?.length||0,me=new Set(e.filter(ae=>c[ae.field]!==!1).map(ae=>ae.field)),R=s.useCallback((ae,ye)=>{if(!u)return;const xe={...c,[ae]:ye};u(xe)},[c,u]),ge=s.useCallback(()=>{if(!u)return;const ae={...c};e.forEach(ye=>{ye.hideable!==!1&&(ae[ye.field]=!0)}),u(ae)},[e,c,u]),we=s.useCallback(()=>{if(!u)return;const ae={...c};e.forEach(ye=>{ye.hideable!==!1&&(ae[ye.field]=!1)}),u(ae)},[e,c,u]);return d.jsxs("div",{className:["ogx-toolbar",_].filter(Boolean).join(" "),role:"toolbar","aria-label":"Grid toolbar",style:w,children:[m&&d.jsx("div",{className:"ogx-toolbar__left",children:m}),d.jsx("div",{className:"ogx-toolbar__spacer"}),d.jsxs("div",{className:"ogx-toolbar__actions",children:[L&&d.jsx("div",{className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:d.jsxs("button",{type:"button",ref:te,className:`ogx-toolbar__icon-btn ogx-toolbar__ai-btn${A?" ogx-toolbar__icon-btn--active":""}`,"aria-haspopup":"dialog","aria-expanded":A,onClick:()=>{H(null),L(te.current)},children:[d.jsx($s,{}),k]})}),a&&d.jsx("div",{className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:M?M({value:ne,onChange:q}):d.jsx(Vp,{value:ne,onChange:q,placeholder:"Search..."})}),u&&d.jsxs("div",{ref:ue,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[C?C({onClick:()=>z("columns"),isOpen:V,activeCount:e.length-me.size}):d.jsx(Ln,{title:"Columns",children:d.jsx("button",{type:"button",ref:J,className:`ogx-toolbar__icon-btn${V?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Manage columns","aria-haspopup":"dialog","aria-expanded":V,onClick:()=>z("columns"),children:d.jsx(jp,{})})}),V&&d.jsx(Rp,{anchorRef:C?ue:J,columns:e,visibleColumns:me,onVisibilityChange:R,onShowAll:ge,onHideAll:we,onColumnReorder:g,onColumnOrderReset:h,onClose:()=>W("columns"),showNonHideableColumns:O})]}),a&&d.jsxs("div",{ref:ee,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[E?E({onClick:()=>z("filters"),isOpen:Q,activeCount:he}):d.jsx(Ln,{title:"Filters",children:d.jsxs("button",{type:"button",ref:se,className:`ogx-toolbar__icon-btn${Q?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Advanced filters","aria-haspopup":"dialog","aria-expanded":Q,onClick:()=>z("filters"),children:[d.jsx(Xs,{}),he>0&&d.jsx("span",{className:"ogx-toolbar__dot","aria-label":"Filters active"})]})}),Q&&d.jsx(qp,{anchorRef:E?ee:se,columns:e,filterModel:l||{items:[]},onFilterModelChange:a,onClose:()=>W("filters")})]}),i&&d.jsxs("div",{className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[d.jsx(Ln,{title:"Pivot",children:d.jsxs("button",{type:"button",ref:U,className:`ogx-toolbar__icon-btn${B?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Configure pivot","aria-haspopup":"dialog","aria-expanded":B,onClick:()=>z("pivot"),children:[d.jsx(js,{}),$&&d.jsx("span",{className:"ogx-toolbar__dot","aria-label":"Pivot active"})]})}),B&&d.jsx(Hp,{anchorRef:U,columns:t??e,model:T,onChange:ae=>{i?.(ae)},onClose:()=>W("pivot")})]}),o&&d.jsxs("div",{ref:D,className:"ogx-toolbar__dropdown-wrapper",style:{marginRight:4},children:[S?S({onClick:()=>z("summaries"),isOpen:v,activeCount:G}):d.jsx(Ln,{title:"Summaries",children:d.jsxs("button",{type:"button",ref:X,className:`ogx-toolbar__icon-btn${v?" ogx-toolbar__icon-btn--active":""}`,"aria-label":"Configure summaries","aria-haspopup":"dialog","aria-expanded":v,onClick:()=>z("summaries"),children:[d.jsx(qs,{}),G>0&&d.jsx("span",{className:"ogx-toolbar__dot","aria-label":`${G} active summaries`})]})}),v&&d.jsx(Up,{anchorRef:S?D:X,aggregationModel:n,aggregableColumns:Z,onFunctionChange:Y,onClearAll:j,onClose:()=>W("summaries"),activeCount:G})]}),N&&N(),b]})]})}function Zp(){const[e]=s.useState(Bl);return s.useRef(e)}function nn(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 Qp=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 eh(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 th(e){let t="",n=!1;for(const o of e){const r=o.codePointAt(0)??0;if(r<=255||Qp.has(r)){t+=o;continue}const i=eh(r);i!==null?t+=i:(t+="?",n=!0)}return{text:t,lossy:n}}const nh={sliceMs:30,renderChunkRows:40},oh=2e4;function Ys(){return new Promise(e=>setTimeout(e,0))}function rh(){return new DOMException("PDF export was aborted","AbortError")}const on=()=>typeof performance<"u"?performance.now():Date.now(),Js=e=>Math.max(2,Math.floor(e/2)*2),ih=[79,70,229],lh=[255,255,255];function Zs(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 Qs(e,t){return In(e,t,Nn(e,t))}function ea(e){return(typeof e.width=="number"?e.width:void 0)??(e.flex??1)*100}function sh(e,t){const n=e.reduce((r,i)=>r+ea(i),0),o={};return e.forEach((r,i)=>{o[i]={cellWidth:ea(r)/n*t}}),o}const ah=new Set(["isEmpty","isNotEmpty"]);function ch(e,t){const o=t.find(l=>l.field===e.field)?.headerName??e.field;if(ah.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 ta(e,t,n,o){const r=e.map(l=>"items"in l?ta(l.items,l.logicOperator,n,!0):ch(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 dh(e,t){const n=[],o=ta(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 uh=1.15*.3528;function fh(e,t,n={}){return gh(e,t,n,nh)}async function gh(e,t,n,o){const{signal:r,onProgress:i}=n,l=()=>{if(r?.aborted)throw rh()};l();let a,c;try{const[j,q]=await Promise.all([import("jspdf"),import("jspdf-autotable")]);a=j.default,c=q.default}catch{throw new Error("exportToPdf requires 'jspdf' and 'jspdf-autotable'. Run: npm install jspdf jspdf-autotable")}const{fileName:u="export",title:g,logoUrl:h,orientation:x="landscape",selectedRows:y,getRowId:p,aggregationResult:f,aggregationModel:m,filterModel:b,alternateRowColor:w=!0,headerBackgroundColor:C="#4f46e5",headerTextColor:E="#ffffff",fontSize:S=9,groupedRows:N,font:M,maxRows:_=oh}=n;l();let O=on();const L=async()=>{on()-O<o.sliceMs||(await Ys(),l(),O=on())},A=(j,q,ne)=>{i?.({phase:j,done:q,total:ne})},k=new a({orientation:x,unit:"mm",format:"a4"}),I=k.internal.pageSize.getWidth(),P=k.internal.pageSize.getHeight(),v=14,B=I-v*2;let V="helvetica";M&&(k.addFileToVFS(`${M.name}-normal.ttf`,M.data),k.addFont(`${M.name}-normal.ttf`,M.name,"normal"),M.boldData&&k.addFileToVFS(`${M.name}-bold.ttf`,M.boldData),k.addFont(M.boldData?`${M.name}-bold.ttf`:`${M.name}-normal.ttf`,M.name,"bold"),V=M.name);let Q=!1;const H=j=>{if(M)return j;const q=th(j);return q.lossy&&(Q=!0),q.text},z=(j,q,ne,he,me)=>{const R=k.splitTextToSize(H(j),he);return k.text(R.length===1?R[0]:R,q,ne),Math.max(0,R.length-1)*me*uh},W=Gt(t),re=Mn(N,y),oe=En(e,y,p);let fe=v;if(g){let j=v,q=v+8;if(h)try{k.addImage(h,"PNG",j,v,10,10),j+=14}catch{}const ne=I-v-j;k.setFontSize(16),k.setFont(V,"bold"),k.setTextColor(30,41,59),q+=z(g,j,q,ne,16),q+=6,k.setFontSize(8),k.setFont(V,"normal"),k.setTextColor(100,116,139);const he=new Date().toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),me=re?N.filter(R=>R.type==="leaf").length:oe.length;if(k.text(H(`Exported: ${he} • ${me} row${me!==1?"s":""}`),j,q),q+=5,b){const R=dh(b,t);R&&(q+=z(`Filters: ${R}`,j,q,ne,8),q+=5)}k.setDrawColor(226,232,240),k.setLineWidth(.3),k.line(v,q+2,I-v,q+2),fe=q+6}const le=[W.map(j=>H(j.headerName??j.field))],ce=m||{},K=j=>W.map(q=>Lr(q,ce[q.field],j[q.field],j)),de=[];let X;const te=j=>{de.push(j.map(H))};if(re){const j=N.length;A("prepare",0,j);for(let q=0;q<j;q++){const ne=N[q],he=" ".repeat(ne.depth*2);if(ne.type==="group-header"){const me=`${he}${nn(ne,t)}`;te(W.map((R,ge)=>ge===0?me:""))}else if(ne.type==="leaf"&&ne.row){const me=ne.row;te(W.map((R,ge)=>(ge===0?he:"")+Qs(me,R)))}else if(ne.type==="group-subtotal"&&ne.aggregatedValues){const me=K(ne.aggregatedValues);te(me.map((R,ge)=>ge===0?`${he}${en("Subtotal",R)}`:R))}else ne.type==="grand-total"&&ne.aggregatedValues&&(X=[K(ne.aggregatedValues).map((R,ge)=>ge===0?en("Grand Total",R):R).map(H)]);(q&63)===63&&(A("prepare",q+1,j),await L())}A("prepare",j,j)}else{const j=oe.length;A("prepare",0,j);for(let ne=0;ne<j;ne++)te(W.map(he=>Qs(oe[ne],he))),(ne&63)===63&&(A("prepare",ne+1,j),await L());const q=m?Qt(oe,_t(y),t,f,m):null;if(q&&m){const ne=W.some(me=>m[me.field]);X=[K(q).map((me,R)=>R===0&&ne?en("TOTAL",me):me).map(H)]}A("prepare",j,j)}l(),de.length>_&&process.env.NODE_ENV!=="production"&&console.warn(`[exportToPdf] Exporting ${de.length} table rows (maxRows: ${_}). 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 U=sh(W,B),[J,se,ue]=Zs(C,ih),[ee,D,T]=Zs(E,lh),$={head:le,styles:{fontSize:S,cellPadding:3,font:V,overflow:"linebreak"},headStyles:{fillColor:[J,se,ue],textColor:[ee,D,T],fontStyle:"bold"},...w?{alternateRowStyles:{fillColor:[248,250,252]}}:{},...X?{footStyles:{fillColor:[241,245,249],fontStyle:"bold",textColor:[0,0,0]}}:{},columnStyles:U,showHead:"everyPage",margin:{top:v,left:v,right:v,bottom:v+6}},F=de.length;A("render",0,F);let Z=0,G=Js(o.renderChunkRows);do{const j=de.slice(Z,Z+G),q=Z===0,ne=Z+j.length>=F,he=q?fe:k.lastAutoTable.finalY;let me=!0;const R=on();c(k,{...$,body:j,...ne&&X?{foot:X}:{},startY:q?fe:v,showFoot:ne&&X?"lastPage":"never",...q?{}:{willDrawPage:we=>{me?(me=!1,we.settings.showHead="never",we.cursor&&(we.cursor.y=he)):we.settings.showHead="everyPage"}}}),Z+=j.length,A("render",Z,F);const ge=on()-R;G=Js(ge>0?Math.min(G*4,G*(o.sliceMs/ge)):G*4),ne||(await Ys(),l(),O=on())}while(Z<F);const Y=k.getNumberOfPages();for(let j=1;j<=Y;j++)k.setPage(j),k.setFontSize(8),k.setTextColor(150,150,150),k.text(`Page ${j} of ${Y}`,I-v,P-8,{align:"right"}),await L();l(),A("save",0,1),k.save(`${u}.pdf`),A("save",1,1)}function An(e,t){const n=Nn(e,t);return{text:In(e,t,n),raw:n}}function rn(e,t,n){return e.map(o=>Lr(o,n[o.field],t[o.field],t))}const ph="\uFEFF";function hh(e,t,n={}){const{fileName:o="export.csv",includeHeaders:r=!0,delimiter:i=",",selectedRows:l,groupedRows:a,escapeFormulas:c=!0,bom:u=!0}=n,g=Gt(t),h=n.aggregationModel||{},x=(f,m=!1)=>po(c?ao(f,m):f,i),y=()=>g.map(f=>x(f.headerName||f.field)).join(i)+`
|
|
8
|
+
`;let p="";if(Mn(a,l))r&&(p+=y()),a.forEach(f=>{const m=" ".repeat(f.depth);if(f.type==="group-header"){const b=nn(f,t),w=po(m+(c?ao(b):b),i);p+=g.map((C,E)=>E===0?w:"").join(i)+`
|
|
9
|
+
`}else if(f.type==="leaf"&&f.row){const b=f.row,w=g.map((C,E)=>{const S=An(b,C),N=c?ao(S.text,St(S.raw)):S.text;return po((E===0?m:"")+N,i)});p+=w.join(i)+`
|
|
10
|
+
`}else if((f.type==="group-subtotal"||f.type==="grand-total")&&f.aggregatedValues){const b=f.aggregatedValues,w=f.type==="grand-total"?"Grand Total":`${m}Subtotal`,C=rn(g,b,h),E=g.map((S,N)=>N===0?po(en(w,C[0]),i):x(C[N],St(b[S.field])));p+=E.join(i)+`
|
|
11
|
+
`}});else{const f=En(e,l,n.getRowId);if(f.length===0){console.warn("No rows to export");return}r&&(p+=y()),f.forEach(b=>{const w=g.map(C=>{const E=An(b,C);return x(E.text,St(E.raw))});p+=w.join(i)+`
|
|
12
|
+
`});const m=Qt(f,_t(l),t,n.aggregationResult,n.aggregationModel);if(m){const b=g.map(C=>x(h[C.field]?h[C.field].toUpperCase():""));p+=b.join(i)+`
|
|
13
|
+
`;const w=rn(g,m,h);p+=g.map((C,E)=>x(w[E],St(m[C.field]))).join(i)+`
|
|
14
|
+
`}}Gr((u?ph:"")+p,o,"text/csv;charset=utf-8;")}function po(e,t){return t!==""&&e.includes(t)||e.includes('"')||e.includes(`
|
|
15
|
+
`)||e.includes("\r")?`"${e.replace(/"/g,'""')}"`:e}const ho="ogx-xls-text";function mh(e,t){return e.type!=="number"&&e.type!=="date"&&e.type!=="boolean"&&!St(t)}function wh(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 bh(e,t,n={}){const{fileName:o="export.xls",sheetName:r="Sheet1",includeHeaders:i=!0,selectedRows:l,groupedRows:a,escapeFormulas:c=!0}=n,u=Gt(t),g=n.aggregationModel||{},h=(m,b=!1)=>Pe(c?ao(m,b):m),x=m=>`<td class="${ho}">${m}</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>${Pe(Ar(r))}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta charset="UTF-8"><style>.${ho}{mso-number-format:"\\@";}</style></head><body><table border="1">`;i&&(p+="<thead><tr>",u.forEach(m=>{p+=`<th class="${ho}">${h(m.headerName||m.field)}</th>`}),p+="</tr></thead>"),p+="<tbody>";const f=(m,b,w="")=>{const C=w+h(m.text,St(m.raw));return mh(b,m.raw)?x(C):`<td>${C}</td>`};if(Mn(a,l))a.forEach(m=>{const b=" ".repeat(m.depth*2);if(m.type==="group-header")p+='<tr style="font-weight:bold;background:#e8eaf6;">',p+=`<td colspan="${u.length}" class="${ho}">${Pe(b)}${h(nn(m,t))}</td>`,p+="</tr>";else if(m.type==="leaf"&&m.row){const w=m.row;p+="<tr>",u.forEach((C,E)=>{p+=f(An(w,C),C,E===0?Pe(b):"")}),p+="</tr>"}else if((m.type==="group-subtotal"||m.type==="grand-total")&&m.aggregatedValues){const w=m.aggregatedValues,C=m.type==="grand-total"?"Grand Total":`${b}Subtotal`,E=rn(u,w,g);p+='<tr style="font-weight:bold;background:#f5f5f5;">',u.forEach((S,N)=>{if(N===0){p+=x(Pe(en(C,E[0])));return}p+=E[N]?`<td style="text-align:right;">${h(E[N],St(w[S.field]))}</td>`:"<td></td>"}),p+="</tr>"}});else{const m=En(e,l,n.getRowId);if(m.length===0){console.warn("No rows to export");return}m.forEach(w=>{p+="<tr>",u.forEach(C=>{p+=f(An(w,C),C)}),p+="</tr>"});const b=Qt(m,_t(l),t,n.aggregationResult,n.aggregationModel);if(b){p+='<tr style="font-size: 11px; color: #666; background-color: #f5f5f5;">',u.forEach(C=>{p+=g[C.field]?`<td style="text-align:right;font-weight:bold;">${Pe(g[C.field].toUpperCase())}</td>`:"<td></td>"}),p+='</tr><tr style="font-weight:bold;background-color:#f5f5f5;">';const w=rn(u,b,g);u.forEach((C,E)=>{p+=w[E]?`<td style="text-align:right;">${h(w[E],St(b[C.field]))}</td>`:"<td></td>"}),p+="</tr>"}}p+="</tbody></table></body></html>",Gr(p,wh(o),"application/vnd.ms-excel")}function xh(e,t,n={}){const{fileName:o="export.json",pretty:r=!0,selectedRows:i,groupedRows:l}=n,a=Gt(t),c=g=>{const h={};return a.forEach(x=>{h[x.field]=Nn(g,x)}),h};let u;if(Mn(l,i)){const g=[],h=[];let x;l.forEach(y=>{if(y.type==="group-header"){const p={group:nn(y,t),field:y.groupField??"",value:y.groupValue,rows:[],children:[]};for(;g.length>y.depth;)g.pop();g.length===0?h.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(c(y.row)):y.type==="group-subtotal"&&y.aggregatedValues&&g.length>0?(g[g.length-1].subtotals=vs(y.aggregatedValues,a),g.pop()):y.type==="grand-total"&&y.aggregatedValues&&(x=vs(y.aggregatedValues,a))}),u=x?{groups:h,grandTotal:x}:{groups:h}}else{const g=En(e,i,n.getRowId);if(g.length===0){console.warn("No rows to export");return}const h=g.map(c),x=Qt(g,_t(i),t,n.aggregationResult,n.aggregationModel);if(x){const y=n.aggregationModel||{},p={};a.forEach(m=>{y[m.field]&&(p[m.field]=y[m.field].toUpperCase())});const f={};a.forEach(m=>{x[m.field]!==void 0&&x[m.field]!==null&&(f[m.field]=x[m.field])}),u={data:h,aggregation:{labels:p,values:f}}}else u=h}Gr(r?JSON.stringify(u,null,2):JSON.stringify(u),o,"application/json;charset=utf-8;")}const yh=/^(?:https?:|data:image\/|blob:)/i,Ch=/^[a-z][a-z\d+.-]*:/i;function vh(e){const t=e.trim();return t?yh.test(t)?t:Ch.test(t)?null:t:null}async function _h(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,
|
|
35
|
+
`),o.document.close(),await new Promise(r=>setTimeout(r,100));try{let r="Print",i,l,a=null,c=null,u;typeof n=="string"?r=n:typeof n=="object"&&(r=n.title||"Print",i=n.selectedRows,l=n.getRowId,a=n.aggregationResult||null,c=n.aggregationModel||null,u=n.groupedRows);const g=Gt(t),h=c||{};let x=`<!DOCTYPE html><html><head><title>${Pe(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&&(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,m,x="",b=!1)=>{const{text:C}=kn(f,m),E=m.type==="image"?rh(C):null;if(E!==null){const k=`<img src="${Te(E)}" alt="${Te(m.headerName||m.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(C)}</td>`};if(Cn(u,i))u.forEach(f=>{const m=" ".repeat(f.depth*4);if(f.type==="group-header")w+=`<tr class="group-header"><td colspan="${g.length}">${m}${Te(Qt(f,t))}</td></tr>`;else if(f.type==="leaf"&&f.row){const x=f.row;w+="<tr>",g.forEach((b,C)=>{w+=y(x,b,C===0?m:"")}),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,h);w+=`<tr class="${x?"grand-total":"group-subtotal"}">`,g.forEach((C,E)=>{if(E===0){w+=`<td>${x?"":m}${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 m=Yt(f,yt(i),t,d,a);m&&(w+='<tfoot><tr style="font-size:11px;color:#666;background-color:#f5f5f5;">',g.forEach(x=>{w+=h[x.field]?`<td style="text-align:right;font-weight:bold;">${Te(h[x.field].toUpperCase())}</td>`:"<td></td>"}),w+='</tr><tr style="font-weight:bold;background-color:#f5f5f5;">',tn(g,m,h).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 Lr(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 lh(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 sh=/^(\d{4})-(\d{2})-(\d{2})$/,ah=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?$/i,ch=/^[-+]?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?$/i;function dh(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=sh.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(ah.test(t)){const o=new Date(t.replace(" ","T"));return Number.isNaN(o.getTime())?void 0:En(o)}}function uh(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"&&ch.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 dh(t)}function Vs(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 fh(e,t){const n=vn(e,t),o=lh(t,n);if(o!=="string"){const r=uh(o,n);if(r!=null)return r;if(!t.valueFormatter)return r===null?null:Vs(n)}return t.valueFormatter?_n(e,t,n):Vs(n)}const zs="#,##0",gh="#,##0.##";function ph(e){return Number.isInteger(e)?zs:gh}function Ks(e,t){if(t?.numFmt)return t.numFmt;if(e.type==="date")return"yyyy-mm-dd"}function js(e,t,n){if(!(t?.numFmt||typeof n!="number"||e.type!=="number"))return ph(n)}function hh(e,t){if(t!=null)return t;const n=e.width??120;return Math.min(60,Math.max(8,(n-5)/7))}function mh(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 Us(e,t){const n=vn(e,t);return typeof n=="string"&&n?n:null}async function wh(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=mh(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 bh(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:h=null,selectedRows:w,getRowId:y,groupedRows:p,groupHeaderFillColor:f="#e8eaf6",groupSubtotalFillColor:m="#f0f4ff"}=n,x=(await import("exceljs")).default,b=new x.Workbook;b.creator="OpenGridX",b.created=new Date;const C=t,E=Dt(C),k=e,N=yt(w)?ss(k,w,y):[],M=r??[{name:"Data",rows:"all",includeHeaders:!0,includeSummary:!1}],S=new Set,F=new Map,I=(v,V)=>{const R=V[v.field],Q=h?.[v.field];if(R==null)return{value:null};const G=fi(v,Q,R);return typeof G=="number"?Number.isFinite(G)?ui(Q)?{value:G,numFmt:zs}:{value:G,numFmt:js(v,i[v.field],G)}:{value:null}:G instanceof Date?{value:En(G)}:{value:vr(v,Q,R,V)}};for(const v of M){if("type"in v&&v.type==="summary"){if(!g||!h)continue;const Z=b.addWorksheet(_r(v.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=Rs()}),E.forEach(O=>{const P=h[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??Ks(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 V=v,{name:R="Data",rows:Q="all",includeHeaders:G=!0,includeSummary:W=!1,autoFilter:H=!0,frozenHeader:ie=!0,alternateRowColor:oe="#f8fafc"}=V,ue=Q==="all"&&!!(p&&p.length>0),se=Q==="selected"?N:ue?p.flatMap(Z=>Z.type==="leaf"&&Z.row?[Z.row]:[]):k,U=E.filter(Z=>i[Z.field]?.embedImage);if(U.length>0){const Z=[],$=new Set;if(se.forEach(O=>{U.forEach(P=>{const T=Us(O,P);T&&!F.has(T)&&!$.has(T)&&(Z.push(T),$.add(T))})}),Z.length>0){const O=await wh(Z);for(const[P,{buffer:T,extension:X}]of O){const B=b.addImage({buffer:T,extension:X});F.set(P,B)}}}const te=b.addWorksheet(_r(R,S));te.columns=E.map(Z=>({key:Z.field,width:hh(Z,i[Z.field]?.width),style:{numFmt:Ks(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=Rs()}),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 z=G?1:0;const re=(Z,$,O)=>{const P=E.map(B=>i[B.field]?.embedImage?"":fh(Z,B)),T=te.addRow(P);T.font={size:u},O>0&&(T.outlineLevel=O);const X=!!oe&&$%2===1;if(ce(T,(B,ee,q)=>{const Y=js(ee,i[ee.field],P[q-1]);Y&&(B.numFmt=Y),X&&oe&&(B.fill={type:"pattern",pattern:"solid",fgColor:{argb:Ke(oe)}}),B.alignment={horizontal:i[ee.field]?.alignment??(ee.type==="number"?"right":"left"),vertical:"middle"},B.border={bottom:{style:"thin",color:{argb:"FFf1f5f9"}}}}),U.length>0){const B=U.reduce((Y,ne)=>Math.max(Y,i[ne.field]?.imageHeight??40),0),ee=Math.ceil(B/1.333),q=ee*1.333;T.height=ee,U.forEach(Y=>{const ne=E.indexOf(Y),me=Us(Z,Y),j=me?F.get(me):void 0;if(j===void 0){T.getCell(ne+1).value=me??"";return}const le=i[Y.field],we=le?.imageWidth??40,pe=le?.imageHeight??40,Ce=(te.getColumn(ne+1).width??8)*7+5,be=Math.max(0,Ce-we)/2,de=Math.max(0,q-pe)/2;te.addImage(j,{tl:{col:ne,row:z,nativeColOff:Math.floor(be*9525),nativeRowOff:Math.floor(de*9525)},ext:{width:we,height:pe},editAs:"oneCell"})})}else T.height=16;z++},K=Z=>Qt(Z,C),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 ne=X[Y-1].numFmt;ne&&(ee.numFmt=ne),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=qs()}),z++};let ae=!1;if(ue){let Z=0;p.forEach($=>{if($.type==="group-header"){const O=te.addRow([K($)]);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},z++,Z=0}else $.type==="leaf"&&$.row?re($.row,Z++,$.depth):$.type==="group-subtotal"&&$.aggregatedValues?J("Subtotal",$.aggregatedValues,m,$.depth,!1):$.type==="grand-total"&&$.aggregatedValues&&(J("Grand Total",$.aggregatedValues,l,0,!0),ae=!0)}),te.properties.outlineProperties={summaryBelow:!0,summaryRight:!1}}else se.forEach((Z,$)=>re(Z,$,0));const fe=Yt(se,Q==="selected",C,g,h);if(W&&!ae&&fe&&h){const Z=E.map(T=>{const X=h[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=>h[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=qs()})}}const A=await b.xlsx.writeBuffer(),_=new Blob([A],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),L=URL.createObjectURL(_),D=document.createElement("a");D.href=L,D.download=o.endsWith(".xlsx")?o:`${o}.xlsx`,document.body.appendChild(D),D.click(),document.body.removeChild(D),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 Rs(){return{bottom:{style:"medium",color:{argb:"FFcbd5e1"}}}}function qs(){return{top:{style:"medium",color:{argb:"FFcbd5e1"}}}}function xh(e,t,n,o){return s.useMemo(()=>o?Ai(e,t,n):Ro,[e,t,n,o])}const Xs={"--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)"},Ys={"--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",...Xs},yh={...Ys,"--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",...Xs,"--ogx-toolbar-chip-active-text":"var(--ogx-color-primary)","--ogx-overlay-item-selected-text":"var(--ogx-color-primary)"},Ch=[50,100,200,300,400,500,600,700,800,900];function vh(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 Ch)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 _h({theme:e,children:t,className:n,style:o}){const r=s.useMemo(()=>({...e.mode==="dark"?yh:Ys,...vh(e)}),[e]);return c.jsx(ji.Provider,{value:e,children:c.jsx("div",{className:`ogx-theme-provider ${n||""}`.trim(),style:{...o,...r},children:t})})}const Sh={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"}},kh={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"}},Eh={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"}},Mh={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"}},Nh={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 Ih(){if(!(typeof window>"u"))try{return window.localStorage}catch{return}}function Js(e,t){try{const n=t.getItem(e);return n?JSON.parse(n):void 0}catch{return}}function Lh(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 Ah(e){const t=typeof e=="string"?{key:e}:e,{key:n,debounceMs:o=300,include:r,storage:i}=t,[l]=s.useState(Ih),d=i??l,a=s.useRef(r),u=s.useRef(d);s.useLayoutEffect(()=>{a.current=r,u.current=d});const[g,h]=s.useState(()=>({key:n,state:d?Js(n,d):void 0}));let w=g.state;g.key!==n&&(w=d?Js(n,d):void 0,h({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 C=u.current;b&&C&&Lh(b.key,b.state,a.current,C)},[]),m=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:m,clearState:x}),[w,m,x])}_e.Button=tt,_e.Cell=rs,_e.CellSelectionStats=hs,_e.Checkbox=bt,_e.ColumnVisibilityPanel=Cr,_e.DataGrid=pp,_e.DataGridThemeProvider=_h,_e.FilterPanel=Is,_e.GridToolbar=Tp,_e.GridTooltip=Sn,_e.Header=kl,_e.Input=Qe,_e.Pagination=wr,_e.Row=Zn,_e.Skeleton=hp,_e.amberTheme=Mh,_e.compactTheme=Nh,_e.darkTheme=Sh,_e.emeraldTheme=Eh,_e.exportToCsv=Jp,_e.exportToExcel=eh,_e.exportToExcelAdvanced=bh,_e.exportToJson=th,_e.exportToPdf=qp,_e.formatAggregationValue=pn,_e.printGrid=ih,_e.roseTheme=kh,_e.useAggregation=ts,_e.useGridApiRef=Fp,_e.useGridStateStorage=Ah,_e.usePivot=xh,Object.defineProperty(_e,Symbol.toStringTag,{value:"Module"})}));
|
|
46
|
+
</style></head><body>`;r&&(x+=`<h1>${Pe(r)}</h1>`),x+="<table><thead><tr>",g.forEach(f=>{x+=`<th>${Pe(f.headerName||f.field)}</th>`}),x+="</tr></thead><tbody>";const y=(f,m,b="",w=!1)=>{const{text:C}=An(f,m),E=m.type==="image"?vh(C):null;if(E!==null){const S=`<img src="${Pe(E)}" alt="${Pe(m.headerName||m.field)}" style="max-height:40px;border-radius:4px;">`;return w?`<td><div style="display:flex;justify-content:center;">${S}</div></td>`:`<td>${S}</td>`}return`<td>${b}${Pe(C)}</td>`};if(Mn(u,i))u.forEach(f=>{const m=" ".repeat(f.depth*4);if(f.type==="group-header")x+=`<tr class="group-header"><td colspan="${g.length}">${m}${Pe(nn(f,t))}</td></tr>`;else if(f.type==="leaf"&&f.row){const b=f.row;x+="<tr>",g.forEach((w,C)=>{x+=y(b,w,C===0?m:"")}),x+="</tr>"}else if((f.type==="group-subtotal"||f.type==="grand-total")&&f.aggregatedValues){const b=f.type==="grand-total",w=rn(g,f.aggregatedValues,h);x+=`<tr class="${b?"grand-total":"group-subtotal"}">`,g.forEach((C,E)=>{if(E===0){x+=`<td>${b?"":m}${Pe(en(b?"Grand Total":"Subtotal",w[0]))}</td>`;return}x+=w[E]?`<td style="text-align:right;">${Pe(w[E])}</td>`:"<td></td>"}),x+="</tr>"}});else{const f=En(e,i,l);if(f.length===0){o.document.body.innerHTML="<h3>No rows to export</h3>";return}f.forEach(b=>{x+="<tr>",g.forEach(w=>{x+=y(b,w,"",!0)}),x+="</tr>"});const m=Qt(f,_t(i),t,a,c);m&&(x+='<tfoot><tr style="font-size:11px;color:#666;background-color:#f5f5f5;">',g.forEach(b=>{x+=h[b.field]?`<td style="text-align:right;font-weight:bold;">${Pe(h[b.field].toUpperCase())}</td>`:"<td></td>"}),x+='</tr><tr style="font-weight:bold;background-color:#f5f5f5;">',rn(g,m,h).forEach(b=>{x+=b?`<td style="text-align:right;">${Pe(b)}</td>`:"<td></td>"}),x+="</tr></tfoot>")}x+="</tbody></table></body></html>",o.document.open(),o.document.write(x),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>${Pe(i)}</p></div>`}}}function Gr(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 Sh(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 Tn(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 kh=/^(\d{4})-(\d{2})-(\d{2})$/,Eh=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?$/i,Mh=/^[-+]?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?$/i;function Nh(e){if(e instanceof Date)return Tn(e);if(typeof e=="number")return Number.isFinite(e)?Tn(new Date(e)):null;if(typeof e!="string")return;const t=e.trim(),n=kh.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(Eh.test(t)){const o=new Date(t.replace(" ","T"));return Number.isNaN(o.getTime())?void 0:Tn(o)}}function Ih(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"&&Mh.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 Nh(t)}function na(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 Tn(e);if(typeof e=="object")try{return JSON.stringify(e)??String(e)}catch{return String(e)}return String(e)}function Lh(e,t){const n=Nn(e,t),o=Sh(t,n);if(o!=="string"){const r=Ih(o,n);if(r!=null)return r;if(!t.valueFormatter)return r===null?null:na(n)}return t.valueFormatter?In(e,t,n):na(n)}const oa="#,##0",Ah="#,##0.##";function Th(e){return Number.isInteger(e)?oa:Ah}function ra(e,t){if(t?.numFmt)return t.numFmt;if(e.type==="date")return"yyyy-mm-dd"}function ia(e,t,n){if(!(t?.numFmt||typeof n!="number"||e.type!=="number"))return Th(n)}function Ph(e,t){if(t!=null)return t;const n=e.width??120;return Math.min(60,Math.max(8,(n-5)/7))}function Fh(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 la(e,t){const n=Nn(e,t);return typeof n=="string"&&n?n:null}async function Oh(e){const t=await Promise.allSettled(e.map(async o=>{let r;if(o.startsWith("data:")){const l=o.slice(o.indexOf(",")+1),a=atob(l);r=new Uint8Array(a.length);for(let c=0;c<a.length;c++)r[c]=a.charCodeAt(c)}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=Fh(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 Dh(e,t,n={}){const{fileName:o="export.xlsx",sheets:r,columnStyles:i={},headerFillColor:l="#f1f5f9",headerTextColor:a="#334155",headerFontSize:c=10,bodyFontSize:u=10,aggregationResult:g=null,aggregationModel:h=null,selectedRows:x,getRowId:y,groupedRows:p,groupHeaderFillColor:f="#e8eaf6",groupSubtotalFillColor:m="#f0f4ff"}=n;let b;try{b=(await import("exceljs")).default}catch{throw new Error("exportToExcelAdvanced requires 'exceljs'. Run: npm install exceljs")}const w=new b.Workbook;w.creator="OpenGridX",w.created=new Date;const C=t,E=Gt(C),S=e,N=_t(x)?Cs(S,x,y):[],M=r??[{name:"Data",rows:"all",includeHeaders:!0,includeSummary:!1}],_=new Set,O=new Map,L=(v,B)=>{const V=B[v.field],Q=h?.[v.field];if(V==null)return{value:null};const H=yi(v,Q,V);return typeof H=="number"?Number.isFinite(H)?xi(Q)?{value:H,numFmt:oa}:{value:H,numFmt:ia(v,i[v.field],H)}:{value:null}:H instanceof Date?{value:Tn(H)}:{value:Lr(v,Q,V,B)}};for(const v of M){if("type"in v&&v.type==="summary"){if(!g||!h)continue;const ee=w.addWorksheet(Ar(v.name??"Summary",_));ee.addRow(["Summary / Aggregation Totals"]),ee.getRow(1).font={bold:!0,size:c+2,color:{argb:je(a)}},ee.addRow([]),ee.addRow(["Column","Function","Value"]).eachCell(T=>{T.fill={type:"pattern",pattern:"solid",fgColor:{argb:je(l)}},T.font={bold:!0,size:c,color:{argb:je(a)}},T.border=sa()}),E.forEach(T=>{const $=h[T.field];if($==null||g[T.field]==null)return;const{value:F,numFmt:Z}=L(T,g),Y=ee.addRow([T.headerName??T.field,$.toUpperCase(),F]).getCell(3),j=Z??ra(T,i[T.field]);j&&(Y.numFmt=j),Y.alignment={horizontal:"right"},Y.font={bold:!0,size:u}}),ee.getColumn(1).width=20,ee.getColumn(2).width=12,ee.getColumn(3).width=18;continue}const B=v,{name:V="Data",rows:Q="all",includeHeaders:H=!0,includeSummary:z=!1,autoFilter:W=!0,frozenHeader:re=!0,alternateRowColor:oe="#f8fafc"}=B,fe=Q==="all"&&!!(p&&p.length>0),le=Q==="selected"?N:fe?p.flatMap(ee=>ee.type==="leaf"&&ee.row?[ee.row]:[]):S,ce=E.filter(ee=>i[ee.field]?.embedImage);if(ce.length>0){const ee=[],D=new Set;if(le.forEach(T=>{ce.forEach($=>{const F=la(T,$);F&&!O.has(F)&&!D.has(F)&&(ee.push(F),D.add(F))})}),ee.length>0){const T=await Oh(ee);for(const[$,{buffer:F,extension:Z}]of T){const G=w.addImage({buffer:F,extension:Z});O.set($,G)}}}const K=w.addWorksheet(Ar(V,_));K.columns=E.map(ee=>({key:ee.field,width:Ph(ee,i[ee.field]?.width),style:{numFmt:ra(ee,i[ee.field])}}));const de=(ee,D)=>{E.forEach((T,$)=>D(ee.getCell($+1),T,$+1))};if(H){const ee=E.map(T=>T.headerName??T.field),D=K.addRow(ee);D.height=20,de(D,(T,$)=>{T.fill={type:"pattern",pattern:"solid",fgColor:{argb:je(l)}},T.font={bold:!0,size:c,color:{argb:je(a)}},T.alignment={horizontal:i[$.field]?.alignment??($.type==="number"?"right":"left"),vertical:"middle"},T.border=sa()}),W&&(K.autoFilter={from:{row:1,column:1},to:{row:1,column:E.length}}),re?K.views=[{state:"frozen",ySplit:1,showGridLines:!1}]:K.views=[{showGridLines:!1}]}let X=H?1:0;const te=(ee,D,T)=>{const $=E.map(G=>i[G.field]?.embedImage?"":Lh(ee,G)),F=K.addRow($);F.font={size:u},T>0&&(F.outlineLevel=T);const Z=!!oe&&D%2===1;if(de(F,(G,Y,j)=>{const q=ia(Y,i[Y.field],$[j-1]);q&&(G.numFmt=q),Z&&oe&&(G.fill={type:"pattern",pattern:"solid",fgColor:{argb:je(oe)}}),G.alignment={horizontal:i[Y.field]?.alignment??(Y.type==="number"?"right":"left"),vertical:"middle"},G.border={bottom:{style:"thin",color:{argb:"FFf1f5f9"}}}}),ce.length>0){const G=ce.reduce((q,ne)=>Math.max(q,i[ne.field]?.imageHeight??40),0),Y=Math.ceil(G/1.333),j=Y*1.333;F.height=Y,ce.forEach(q=>{const ne=E.indexOf(q),he=la(ee,q),me=he?O.get(he):void 0;if(me===void 0){F.getCell(ne+1).value=he??"";return}const R=i[q.field],ge=R?.imageWidth??40,we=R?.imageHeight??40,ye=(K.getColumn(ne+1).width??8)*7+5,xe=Math.max(0,ye-ge)/2,ie=Math.max(0,j-we)/2;K.addImage(me,{tl:{col:ne,row:X,nativeColOff:Math.floor(xe*9525),nativeRowOff:Math.floor(ie*9525)},ext:{width:ge,height:we},editAs:"oneCell"})})}else F.height=16;X++},U=ee=>nn(ee,C),J=(ee,D,T,$,F)=>{const Z=E.map((Y,j)=>j===0&&D[Y.field]==null?{value:ee}:L(Y,D)),G=K.addRow(Z.map(Y=>Y.value));G.height=18,$>0&&(G.outlineLevel=$),G.font={bold:F,italic:!F,size:u,color:{argb:je(a)}},de(G,(Y,j,q)=>{const ne=Z[q-1].numFmt;ne&&(Y.numFmt=ne),Y.fill={type:"pattern",pattern:"solid",fgColor:{argb:je(T)}},Y.alignment={horizontal:q===1?"left":j.type==="number"?"right":"left",vertical:"middle"},Y.border=aa()}),X++};let se=!1;if(fe){let ee=0;p.forEach(D=>{if(D.type==="group-header"){const T=K.addRow([U(D)]);T.height=18,D.depth>0&&(T.outlineLevel=D.depth),T.font={bold:!0,size:u,color:{argb:je(a)}};for(let $=1;$<=E.length;$++)T.getCell($).fill={type:"pattern",pattern:"solid",fgColor:{argb:je(f)}};T.getCell(1).alignment={horizontal:"left",vertical:"middle",indent:D.depth},X++,ee=0}else D.type==="leaf"&&D.row?te(D.row,ee++,D.depth):D.type==="group-subtotal"&&D.aggregatedValues?J("Subtotal",D.aggregatedValues,m,D.depth,!1):D.type==="grand-total"&&D.aggregatedValues&&(J("Grand Total",D.aggregatedValues,l,0,!0),se=!0)}),K.properties.outlineProperties={summaryBelow:!0,summaryRight:!1}}else le.forEach((ee,D)=>te(ee,D,0));const ue=Qt(le,Q==="selected",C,g,h);if(z&&!se&&ue&&h){const ee=E.map(F=>{const Z=h[F.field];return Z?Z.toUpperCase():""}),D=K.addRow(ee);D.height=16,D.font={size:u-1,italic:!0,color:{argb:"FF94a3b8"}},de(D,F=>{F.alignment={horizontal:"right",vertical:"middle"},F.border={top:{style:"thin",color:{argb:"FFcbd5e1"}}}});const T=E.map(F=>h[F.field]==null?{value:null}:L(F,ue)),$=K.addRow(T.map(F=>F.value));$.height=18,$.font={bold:!0,size:u,color:{argb:je(a)}},de($,(F,Z,G)=>{const Y=T[G-1].numFmt;Y&&(F.numFmt=Y),F.fill={type:"pattern",pattern:"solid",fgColor:{argb:je(l)}},F.alignment={horizontal:"right",vertical:"middle"},F.border=aa()})}}const A=await w.xlsx.writeBuffer(),k=new Blob([A],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),I=URL.createObjectURL(k),P=document.createElement("a");P.href=I,P.download=o.endsWith(".xlsx")?o:`${o}.xlsx`,document.body.appendChild(P),P.click(),document.body.removeChild(P),URL.revokeObjectURL(I)}function je(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 sa(){return{bottom:{style:"medium",color:{argb:"FFcbd5e1"}}}}function aa(){return{top:{style:"medium",color:{argb:"FFcbd5e1"}}}}function $h(e,t,n,o){return s.useMemo(()=>o?ji(e,t,n):nr,[e,t,n,o])}const ca={"--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)"},da={"--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",...ca},Gh={...da,"--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",...ca,"--ogx-toolbar-chip-active-text":"var(--ogx-color-primary)","--ogx-overlay-item-selected-text":"var(--ogx-color-primary)"},Hh=[50,100,200,300,400,500,600,700,800,900];function Bh(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 Hh)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 Wh({theme:e,children:t,className:n,style:o}){const r=s.useMemo(()=>({...e.mode==="dark"?Gh:da,...Bh(e)}),[e]);return d.jsx(il.Provider,{value:e,children:d.jsx("div",{className:`ogx-theme-provider ${n||""}`.trim(),style:{...o,...r},children:t})})}const Vh={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"}},zh={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"}},Kh={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"}},jh={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"}},Uh={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 Rh(){if(!(typeof window>"u"))try{return window.localStorage}catch{return}}function ua(e,t){try{const n=t.getItem(e);return n?JSON.parse(n):void 0}catch{return}}function qh(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 Xh(e){const t=typeof e=="string"?{key:e}:e,{key:n,debounceMs:o=300,include:r,storage:i}=t,[l]=s.useState(Rh),a=i??l,c=s.useRef(r),u=s.useRef(a);s.useLayoutEffect(()=>{c.current=r,u.current=a});const[g,h]=s.useState(()=>({key:n,state:a?ua(n,a):void 0}));let x=g.state;g.key!==n&&(x=a?ua(n,a):void 0,h({key:n,state:x}));const y=s.useRef(null),p=s.useRef(null),f=s.useCallback(()=>{y.current&&(clearTimeout(y.current),y.current=null);const w=p.current;p.current=null;const C=u.current;w&&C&&qh(w.key,w.state,c.current,C)},[]),m=s.useCallback(w=>{p.current&&p.current.key!==n&&f(),p.current={key:n,state:w},y.current&&clearTimeout(y.current),y.current=setTimeout(f,o)},[n,f,o]);s.useEffect(()=>f,[f]);const b=s.useCallback(()=>{y.current&&(clearTimeout(y.current),y.current=null),p.current=null;const w=u.current;if(w)try{w.removeItem(n)}catch{}},[n]);return s.useMemo(()=>({initialState:x,onStateChange:m,clearState:b}),[x,m,b])}_e.Button=nt,_e.Cell=bs,_e.CellSelectionStats=Is,_e.Checkbox=Ct,_e.ColumnVisibilityPanel=Ir,_e.DataGrid=Tp,_e.DataGridThemeProvider=Wh,_e.FilterPanel=zs,_e.GridToolbar=Jp,_e.GridTooltip=Ln,_e.Header=Hl,_e.Input=et,_e.Pagination=kr,_e.Row=so,_e.Skeleton=Pp,_e.amberTheme=jh,_e.compactTheme=Uh,_e.darkTheme=Vh,_e.emeraldTheme=Kh,_e.exportToCsv=hh,_e.exportToExcel=bh,_e.exportToExcelAdvanced=Dh,_e.exportToJson=xh,_e.exportToPdf=fh,_e.formatAggregationValue=yn,_e.printGrid=_h,_e.roseTheme=zh,_e.useAggregation=hs,_e.useGridApiRef=Zp,_e.useGridStateStorage=Xh,_e.usePivot=$h,Object.defineProperty(_e,Symbol.toStringTag,{value:"Module"})}));
|
|
47
47
|
//# sourceMappingURL=opengridx.umd.js.map
|