@kanunilabs/datagrid-react 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var react=require('react'),datagridCore=require('@kanunilabs/datagrid-core'),reactDom=require('react-dom'),jsxRuntime=require('react/jsx-runtime');var pi=["contentReady","viewportChanged","columnStateChanged","sortChanged","filterChanged","selectionChanged","focusChanged","summariesChanged"];function Wn(t){let[e,n]=react.useState(()=>new datagridCore.DataGridController(t));react.useEffect(()=>{if(e.isDisposed()){n(new datagridCore.DataGridController(t));return}return ()=>e.dispose()},[e]);let o=react.useRef(0),l=react.useCallback(G=>{let N=()=>{o.current++,G();},x=pi.map(L=>e.events.on(L,N));return ()=>x.forEach(L=>L())},[e]),i=react.useCallback(()=>o.current,[]);react.useSyncExternalStore(l,i,i);let{dataSource:d,columns:m}=t,w=react.useRef(true);react.useEffect(()=>{if(w.current){w.current=false;return}Array.isArray(d)&&e.setData(d);},[e,d]);let g=react.useRef(true);react.useEffect(()=>{if(g.current){g.current=false;return}e.setColumns(m);},[e,m]);let p=t.pagination?t.pagination.enabled!==false:false;react.useEffect(()=>{e.setPaginationEnabled(p);},[e,p]);let f=t.rowHeight,y=react.useRef(true);react.useEffect(()=>{if(y.current){y.current=false;return}f!==void 0&&e.setRowHeight(f);},[e,f]);let b=t.selection?.mode??"none";react.useEffect(()=>{e.setSelectionMode(b);},[e,b]);let v=t.grouping?.groupBy??null,D=JSON.stringify(v==null?[]:typeof v=="string"?[v]:v),P=react.useRef(true);return react.useEffect(()=>{if(P.current){P.current=false;return}e.groupBy(JSON.parse(D));},[e,D]),{controller:e,rows:e.getRows(),window:e.getVirtualWindow(),layout:e.getColumnLayout(),sort:e.getSort(),rowHeight:e.getRowHeight(),visibleCount:e.getVisibleCount(),totalCount:e.getTotalCount()}}var ln=0,Vn=5e3;function gi(t){if(t===void 0||t===false)return null;let e=t===true?{}:t;return {always:e.always??false,maxRows:e.maxRows??Vn}}function fi(t,e){return t<=e}function Un(t,e){let n=gi(e),o=n!==null,l=n?.always??false,i=n?.maxRows??Vn,[d,m]=react.useState(false),w=react.useCallback(()=>m(true),[]),g=react.useCallback(()=>m(false),[]);react.useEffect(()=>{if(!o||l||typeof window>"u"||typeof window.addEventListener!="function")return;let f=()=>{let b=t.getRows().length;if(!fi(b,i)){t.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${b} rows exceeds maxRows (${i}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}reactDom.flushSync(()=>m(true));},y=()=>reactDom.flushSync(()=>m(false));return window.addEventListener("beforeprint",f),window.addEventListener("afterprint",y),()=>{window.removeEventListener("beforeprint",f),window.removeEventListener("afterprint",y);}},[o,l,i,t]);let p=l||d;return react.useEffect(()=>{if(!p||typeof document>"u")return;let f=document.documentElement;return ln++,f.classList.add("kanuni-datagrid-printing"),()=>{ln--,ln<=0&&(ln=0,f.classList.remove("kanuni-datagrid-printing"));}},[p]),{active:p,begin:w,end:g}}var sn=new Map,zn=new Set;function Rr(t,e){let n=sn.get(t);return n?[...n].filter(o=>o!==e):[]}function Yn(t,e,n){let o=react.useRef(null);return react.useEffect(()=>{if(!e)return;let i={controller:t,scroller:()=>n.current};o.current=i;let d=sn.get(e)??new Set;d.add(i),sn.set(e,d);let m=t.events.on("columnStateChanged",()=>{if(zn.has(e))return;let w=Rr(e,i);if(w.length===0)return;let g=t.getColumnStates();zn.add(e);try{for(let p of w)p.controller.applyColumnStates(g);}finally{zn.delete(e);}});return ()=>{m(),d.delete(i),d.size===0&&sn.delete(e),o.current=null;}},[t,e,n]),{syncScroll:react.useCallback(i=>{let d=o.current;if(!e||!d)return;let m=Rr(e,d);if(m.length!==0)for(let w of m){let g=w.scroller();g&&g.scrollLeft!==i&&(g.scrollLeft=i);}},[e])}}function dn(t,e,n){return t==="left"?e:t==="center"?n.left+e:n.left+n.center+e}function Cr(t,e){let{start:n,end:o}=e.columns,l=t.centerOffsets,i=l[n]??0,d=(l[o]??0)-i,m=Math.max(0,t.centerWidth-i-d),w=i,g=t.center.slice(n,o),p=Array.from({length:g.length},(b,v)=>n+v),f=t.stickyIndices.filter(b=>b<n);if(f.length>0){let b=f.map(v=>t.center[v]);w-=b.reduce((v,D)=>v+D.state.width,0),g=[...b,...g],p=[...f,...p];}let y=new Map;for(let b of t.stickyIndices){let v=t.centerStickyOffsets[b];v!==null&&y.set(t.center[b].state.id,v);}return {centerColumns:g,centerIndices:p,leadingSpacer:Math.max(0,w),trailingSpacer:m,rowStart:e.rows.start,rowEnd:e.rows.end,stickyInsets:y}}function kr(t){let e=[];for(let n=0;n<t.length;n++){let o=t[n];o&&o.kind!=="data"&&e.push(n);}return e.length>0?e:null}function xr(t,e,n=0){if(!e)return n+t+1;let o=0,l=e.length;for(;o<l;){let i=o+l>>1;e[i]<t?o=i+1:l=i;}return n+t-o+1}var vr=react.createContext(datagridCore.getGridDictionary("en"));function Xn({locale:t,messages:e,children:n}){let o=react.useMemo(()=>datagridCore.getGridDictionary(t,e),[t,e]);return jsxRuntime.jsx(vr.Provider,{value:o,children:n})}function Q(){return react.useContext(vr)}var cn=36,pn=28,Gt=60,Ni=[["rowNumberColumn",Gt],["detailColumn",pn],["checkboxColumn",cn]];function to(t,e,n=false){return Xe({checkboxColumn:t,detailColumn:e,rowNumberColumn:n}).total}function Xe(t){let e=new Map,n=new Map,o=0,l=0;for(let[i,d]of Ni)t[i]&&(e.set(i,o),n.set(i,++l),o+=d);return {total:o,count:l,inset:i=>e.get(i)??0,colIndex:i=>n.get(i)??1}}function Zn(t){return t?t.kind==="draw"?" kanuni-datagrid-cell--span":" kanuni-datagrid-cell--span-covered":""}function jn(t,e,n){return t?t.kind==="covered"?e?n():null:jsxRuntime.jsx("div",{className:"kanuni-datagrid-span-box",style:{height:t.height},children:n()}):n()}function Qn(t,e){let n=t??(e==="number"?"right":"left");return n==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":n==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function un(t,e){if(e===""||t==="")return t;let n=datagridCore.foldText(t),o=n.indexOf(e);if(o===-1)return t;let l=[],i=0,d=0;for(;o!==-1;)o>i&&l.push(t.slice(i,o)),l.push(jsxRuntime.jsx("mark",{className:"kanuni-datagrid-highlight",children:t.slice(o,o+e.length)},d++)),i=o+e.length,o=n.indexOf(e,i);return i<t.length&&l.push(t.slice(i)),l}function Mi(t,e,n,o=""){if(t.renderCell)return t.renderCell({value:e,row:n.data,node:n,column:t});let l=datagridCore.lookupLabel(t,e);if(l!==null)return un(l,o);if(t.valueFormatter){let i=t.valueFormatter(e,n.data);return typeof i=="string"?un(i,o):i}return t.dateFormat&&t.dataType==="date"?un(datagridCore.formatDateValue(e,t.dateFormat),o):e==null?"":un(String(e),o)}function Pi({gridId:t,node:e,index:n,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:m,leadingSpacer:w,trailingSpacer:g,striped:p,selected:f,groupSelection:y,onToggleGroupSelect:b,groupDisplay:v="fullWidth",focusedColumnId:D,rowFocused:P=false,renderRow:G,checkboxColumn:N,rowNumberColumn:x=false,rowNumber:L=null,getNote:B,getSpan:_,headerRowCount:K,onRowClick:h,onRowMouseDown:E,onRowDoubleClick:I,onToggleSelect:u,onCellMouseDown:C,onRowContextMenu:H,searchNeedle:Y="",onToggleGroup:ne,summaryDefs:se,detailColumn:Je=false,detailExpanded:fe=false,onToggleDetail:pe,onToggleTreeRow:he,renderDetail:ke,renderEditForm:xe,renderCellContent:Ge,getCellClassName:Ae,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:je,rowDrag:te,dropSide:Fe=null,height:Be}){let ce=Q();if(datagridCore.isDetailRow(e))return jsxRuntime.jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-detail-row",role:"row","aria-rowindex":n+1+K,"data-row-key":String(e.key),"data-detail-for":String(e.parentKey),style:{height:e.height},children:jsxRuntime.jsx("div",{className:"kanuni-datagrid-detail-cell",role:"gridcell","aria-colindex":1,children:ke?.(e.data)})});if(datagridCore.isEditFormRow(e))return jsxRuntime.jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-editform-row",role:"row","aria-rowindex":n+1+K,"data-row-key":String(e.key),"data-editform-for":e.parentKey===null?"":String(e.parentKey),style:{height:e.height},children:jsxRuntime.jsx("div",{className:"kanuni-datagrid-editform-cell",role:"gridcell","aria-colindex":1,children:e.parentKey===null?null:xe?.(e.parentKey,e.data)})});if(datagridCore.isFillerRow(e))return null;if(datagridCore.isGroupRow(e)&&v!=="aligned"){let R=l.getDef(e.columnId),$=R?.headerName??e.columnId,z=datagridCore.lookupLabel(R,e.value)??e.display??(e.label===""?ce.filterBlank:e.label),J=e.aggregates??null;return jsxRuntime.jsx("div",{className:`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${e.level}${D?" kanuni-datagrid-group-row--focused":""}`,role:"row","aria-rowindex":n+1+K,"aria-expanded":e.expanded,"aria-level":e.level+1,"data-row-key":String(e.key),"data-group-key":String(e.key),"data-group-level":e.level,onClick:()=>ne?.(String(e.key)),children:jsxRuntime.jsxs("div",{className:"kanuni-datagrid-group-cell",role:"gridcell","aria-colindex":1,id:`${t}-cell-${String(e.key)}-__group`,style:e.level>0?{paddingLeft:8+e.level*18}:void 0,children:[y&&jsxRuntime.jsx("input",{type:"checkbox",className:"kanuni-datagrid-group-checkbox",tabIndex:-1,checked:y==="all",ref:A=>{A&&(A.indeterminate=y==="some");},"aria-label":datagridCore.fillText(ce.selectGroupAria,{count:String(e.count),group:z}),onChange:()=>b?.(String(e.key)),onClick:A=>A.stopPropagation(),onMouseDown:A=>A.stopPropagation()}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:e.expanded?"\u25BE":"\u25B8"}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-caption",children:[$,":"]}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-label",children:z}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",e.count,")"]}),J&&se?.map(A=>jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-aggregate",children:[jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-aggregate-label",children:[datagridCore.summaryLabel(A)," ",l.getDef(A.columnId)?.headerName??A.columnId,":"]})," ",datagridCore.formatSummaryValue(A,J[datagridCore.summaryKey(A.columnId,A.type)],l.getDef(A.columnId))]},datagridCore.summaryKey(A.columnId,A.type)))]})})}let oe=[],s=Xe({rowNumberColumn:x,detailColumn:Je,checkboxColumn:N}),T=s.count,M=(R,$)=>({node:e,columnId:R,rowIndex:n,columnIndex:$,value:V?void 0:l.getCellValue(e.data,R)}),q=(R,$)=>{let z=()=>M(R,$);return {role:"gridcell",id:`${t}-cell-${String(e.key)}-${R}`,"aria-colindex":T+$+1,"data-column-id":R,onMouseDown:J=>{C?.(e,R),Oe?.(z(),J);},onMouseEnter:Ze?J=>Ze(z(),J):void 0,onDoubleClick:je?()=>je(z()):void 0}},S=e.kind==="data"||e.kind==="treePath"?e.tree:void 0,re=e.kind==="treePath",V=datagridCore.isGroupRow(e)?e:null,de=re||V!==null,Te=V?(o.left[0]??o.center[0]??o.right[0])?.state.id??null:null,ie=()=>{let R=V,$=l.getDef(R.columnId),z=datagridCore.lookupLabel($,R.value)??R.display??(R.label===""?ce.filterBlank:R.label);return jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-inline",style:{paddingInlineStart:R.level*16},children:[jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:R.expanded?"\u25BE":"\u25B8"}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-caption",children:[$?.headerName??R.columnId,":"]}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-label",children:z}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",R.count,")"]})]})},F=(R,$)=>{let z=V.aggregates?se?.find(J=>J.columnId===$):void 0;return z?jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-aggregate-value",children:datagridCore.formatSummaryValue(z,V.aggregates[datagridCore.summaryKey($,z.type)],R)}):null},Ve=S?(o.left[0]??o.center[0]??o.right[0])?.state.id??null:null,et=(R,$,z)=>{if(V)return $===Te?ie():F(R,$);if(Ge&&!re){let A=Ge(M($,z));if(A!==void 0)return A}let J=re?$===Ve?jsxRuntime.jsx("span",{className:"kanuni-datagrid-tree-path-label",children:e.label}):null:Mi(R,l.getCellValue(e.data,$),e,Y);return S&&$===Ve?jsxRuntime.jsxs("span",{className:S.ancestorOnly?"kanuni-datagrid-tree-cell kanuni-datagrid-tree-cell--ancestor":"kanuni-datagrid-tree-cell",style:{paddingInlineStart:S.depth*16},children:[S.hasChildren?jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-tree-toggle","data-tree-toggle":"","aria-expanded":S.expanded,"aria-label":S.expanded?ce.collapseDetails:ce.expandDetails,onClick:A=>{A.stopPropagation(),he?.(e.key);},children:S.expanded?"\u25BE":"\u25B8"}):jsxRuntime.jsx("span",{className:"kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf"}),J]}):J},Ue=(R,$)=>{if(!Ae||V)return "";let z=Ae(M(R,$));return z?` ${z}`:""},Se=R=>!B||e.kind!=="data"?"":B(e.key,R,e.data)?" kanuni-datagrid-cell--noted":"",Ee=R=>_&&e.kind==="data"?_(n,R):null,a=(R,$)=>{let z=R.autoHeight?" kanuni-datagrid-cell--wrap":"";return !R.cellClassName||de?z:z+ze(R,$)},ze=(R,$)=>{let z=R.cellClassName;if(!z)return "";if(typeof z=="string")return ` ${z}`;let J=e.data,A=z({value:l.getCellValue(J,$),row:J,node:e,column:R});return A?` ${A}`:""};if(x){let R=e.kind==="data"&&L!==null;oe.push(jsxRuntime.jsx("div",{role:"gridcell","aria-colindex":s.colIndex("rowNumberColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell",style:{width:Gt,insetInlineStart:s.inset("rowNumberColumn")},children:R?L:""},"__rownum"));}Je&&oe.push(jsxRuntime.jsx("div",{role:"gridcell","aria-colindex":s.colIndex("detailColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell",style:{width:pn,insetInlineStart:s.inset("detailColumn")},children:de?null:jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-detail-toggle",tabIndex:-1,"aria-expanded":fe,"aria-label":fe?ce.collapseDetails:ce.expandDetails,onClick:R=>{R.stopPropagation(),pe?.(e.key);},children:fe?"\u25BE":"\u25B8"})},"__detail")),N&&oe.push(jsxRuntime.jsx("div",{role:"gridcell","aria-colindex":s.colIndex("checkboxColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell",style:{width:cn,insetInlineStart:s.inset("checkboxColumn")},onMouseDown:R=>R.stopPropagation(),onClick:R=>{R.target.tagName!=="INPUT"&&(R.stopPropagation(),u?.(e));},children:V?y&&jsxRuntime.jsx("input",{type:"checkbox",className:"kanuni-datagrid-group-checkbox",tabIndex:-1,checked:y==="all",ref:R=>{R&&(R.indeterminate=y==="some");},"aria-label":datagridCore.fillText(ce.selectGroupAria,{count:String(V.count),group:V.display??V.label}),onChange:()=>b?.(String(V.key)),onClick:R=>R.stopPropagation(),onMouseDown:R=>R.stopPropagation()}):re?null:jsxRuntime.jsx("input",{type:"checkbox",checked:f,tabIndex:-1,"aria-label":datagridCore.fillText(ce.selectRowAria,{row:String(e.key)}),onChange:()=>u?.(e),onClick:R=>R.stopPropagation(),onMouseDown:R=>R.stopPropagation()})},"__select"));let yt=s.total,ue=R=>D===R?" kanuni-datagrid-cell--focused":"",tt={left:o.left.length,center:o.center.length};return o.left.forEach((R,$)=>{let z=R.def,J=$===o.left.length-1,A=R.state.id,be=dn("left",$,tt);oe.push(jsxRuntime.jsx("div",{...q(A,be),className:`${Qn(z.align,z.dataType)} kanuni-datagrid-cell--pinned${J?" kanuni-datagrid-pin-edge-left":""}${ue(A)}${a(z,A)}${Ue(A,be)}${Se(A)}${Zn(Ee(A))}`,style:{width:R.state.width,insetInlineStart:o.leftOffsets[$]+yt},children:jn(Ee(A),D===A,()=>et(z,A,be))},A));}),w>0&&oe.push(jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:w}},"__lead")),i.forEach((R,$)=>{let z=R.def,J=R.state.id,A=dn("center",d?.[$]??$,tt),be=m?.get(J),Ke=be===void 0?"":" kanuni-datagrid-cell--pinned kanuni-datagrid-cell--sticky";oe.push(jsxRuntime.jsx("div",{...q(J,A),className:`${Qn(z.align,z.dataType)}${Ke}${ue(J)}${a(z,J)}${Ue(J,A)}${Se(J)}${Zn(Ee(J))}`,style:be===void 0?{width:R.state.width}:{width:R.state.width,insetInlineStart:be+yt},children:jn(Ee(J),D===J,()=>et(z,J,A))},J));}),g>0&&oe.push(jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:g}},"__trail")),o.right.forEach((R,$)=>{let z=R.def,J=$===0,A=R.state.id,be=dn("right",$,tt);oe.push(jsxRuntime.jsx("div",{...q(A,be),className:`${Qn(z.align,z.dataType)} kanuni-datagrid-cell--pinned${J?" kanuni-datagrid-pin-edge-right":""}${ue(A)}${a(z,A)}${Ue(A,be)}${Se(A)}${Zn(Ee(A))}`,style:{width:R.state.width,insetInlineEnd:o.rightOffsets[$]},children:jn(Ee(A),D===A,()=>et(z,A,be))},A));}),jsxRuntime.jsxs("div",{className:`kanuni-datagrid-row${p&&n%2===1?" kanuni-datagrid-row--odd":""}${f?" kanuni-datagrid-row--selected":""}${P?" kanuni-datagrid-row--focused":""}${re?" kanuni-datagrid-row--tree-path":""}${V?` kanuni-datagrid-group-row kanuni-datagrid-group-row--aligned kanuni-datagrid-group-row--level-${V.level}`:""}${Fe?` kanuni-datagrid-row--drop-${Fe}`:""}`,role:"row","aria-rowindex":n+1+K,"aria-selected":V?void 0:f,"aria-expanded":V?V.expanded:void 0,"aria-level":V?V.level+1:void 0,"data-row-key":String(e.key),"data-group-key":V?String(V.key):void 0,"data-group-level":V?V.level:void 0,style:Be===void 0?void 0:{height:Be},draggable:te?.draggable&&!V?true:void 0,onDragStart:te&&!V?R=>te.onDragStart(e,R):void 0,onDragEnd:te&&!V?()=>te.onDragEnd():void 0,onDragOver:te&&!V?R=>te.onDragOver(e,R):void 0,onDrop:te&&!V?R=>te.onDrop(e,R):void 0,onMouseDown:E&&!V?R=>E(e,R):void 0,onClick:V?()=>ne?.(String(V.key)):h?R=>h(e,n,R):void 0,onDoubleClick:I?R=>I(e,n,R):void 0,onContextMenu:H?R=>H(e,n,R):void 0,children:[te&&!V&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-row-grip","data-testid":"dg-row-grip","aria-hidden":"true",title:ce.dragToReorder,onMouseEnter:()=>te.setDraggable(true),onMouseLeave:()=>te.setDraggable(false),children:jsxRuntime.jsx("svg",{width:"10",height:"14",viewBox:"0 0 10 14",focusable:"false",children:jsxRuntime.jsxs("g",{fill:"currentColor",children:[jsxRuntime.jsx("circle",{cx:"3",cy:"3",r:"1.2"}),jsxRuntime.jsx("circle",{cx:"7",cy:"3",r:"1.2"}),jsxRuntime.jsx("circle",{cx:"3",cy:"7",r:"1.2"}),jsxRuntime.jsx("circle",{cx:"7",cy:"7",r:"1.2"}),jsxRuntime.jsx("circle",{cx:"3",cy:"11",r:"1.2"}),jsxRuntime.jsx("circle",{cx:"7",cy:"11",r:"1.2"})]})})}),G&&e.kind==="data"?G({row:e.data,node:e,rowIndex:n,selected:f,focused:P}):oe]})}var Ft=react.memo(Pi);var St=26;function no(t,e){return datagridCore.computeHeaderBands(t,e)}function oo(t,e=""){return `kanuni-datagrid-band-cell${t.spacer?" kanuni-datagrid-band-cell--spacer":""}${e}`}function ro(t,e){let n=jsxRuntime.jsx("span",{className:"kanuni-datagrid-band-label",children:t.label});if(!e||t.spacer||t.columnIds.length===0)return n;let o=e.pathOf(t.columnIds[0]).slice(0,t.level+1);if(o.length!==t.level+1||!e.collapsible(o))return n;let l=e.collapsed(o);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-band-toggle","aria-expanded":!l,"aria-label":l?e.labels.expand:e.labels.collapse,title:l?e.labels.expand:e.labels.collapse,onClick:i=>{i.stopPropagation(),e.onToggle(o);},children:jsxRuntime.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:[jsxRuntime.jsx("rect",{x:"2",y:"2",width:"12",height:"12",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.3"}),jsxRuntime.jsx("path",{d:"M5 8h6",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"}),l&&jsxRuntime.jsx("path",{d:"M8 5v6",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})]})}),n]})}function Hi({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:o,depth:l,checkboxColumn:i=false,detailColumn:d=false,rowNumberColumn:m=false,rowHeight:w=St,bandFold:g}){if(l<=0)return null;let p=Xe({rowNumberColumn:m,detailColumn:d,checkboxColumn:i}).total,f=no(t.left,l),y=no(e,l),b=no(t.right,l),v=(D,P,G)=>{let N=G;for(let x=0;x<P;x++)N+=D[x].width;return N};return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Array.from({length:l},(D,P)=>jsxRuntime.jsxs("div",{className:"kanuni-datagrid-band-row",role:"row","aria-rowindex":P+1,style:{width:t.totalWidth+p,height:w,top:P*w},children:[p>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned",style:{width:p,insetInlineStart:0},"aria-hidden":"true"}),(f[P]??[]).map((G,N)=>jsxRuntime.jsx("div",{className:oo(G,` kanuni-datagrid-band-cell--pinned${N===(f[P]?.length??0)-1?" kanuni-datagrid-pin-edge-left":""}`),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width,insetInlineStart:v(f[P]??[],N,p)},title:G.spacer?void 0:G.label,children:ro(G,g)},G.columnIds[0])),n>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),(y[P]??[]).map(G=>jsxRuntime.jsx("div",{className:oo(G),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width},title:G.spacer?void 0:G.label,children:ro(G,g)},G.columnIds[0])),o>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:o}}),(b[P]??[]).map((G,N)=>{let x=b[P]??[],L=0;for(let B=N+1;B<x.length;B++)L+=x[B].width;return jsxRuntime.jsx("div",{className:oo(G,` kanuni-datagrid-band-cell--pinned${N===0?" kanuni-datagrid-pin-edge-right":""}`),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width,insetInlineEnd:L},title:G.spacer?void 0:G.label,children:ro(G,g)},G.columnIds[0])})]},P))})}var io=react.memo(Hi);var Oi=()=>jsxRuntime.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:jsxRuntime.jsx("path",{d:"M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z",fill:"currentColor",stroke:"currentColor",strokeWidth:"0.6",strokeLinejoin:"round"})});function Fi(t,e){return t.renderHeader?t.renderHeader({column:t}):t.headerName??t.field??e}function Bi({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:o,leadingSpacer:l,trailingSpacer:i,sort:d,sortable:m,onSort:w,headerFilter:g=false,filteredColumns:p,onOpenFilter:f,filterIconMode:y="hover",checkboxColumn:b=false,detailColumn:v=false,rowNumberColumn:D=false,rowNumberHeader:P="#",selectAllState:G="none",onToggleSelectAll:N,draggable:x=false,reorderable:L=false,onReorder:B,resizable:_=false,onResize:K,onAutoFit:h,onHeaderContextMenu:E}){let I=Q(),u=Xe({rowNumberColumn:D,detailColumn:v,checkboxColumn:b}),C=new Map(d.map((s,T)=>[s.columnId,{direction:s.direction,order:T}])),H=new Set(p??[]),Y=[...n.left.map(s=>s.state.id),...o.map(s=>s.state.id),...n.right.map(s=>s.state.id)],[ne,se]=react.useState(null),Je=ne&&Y.includes(ne)?ne:Y[0],fe=s=>{se(s),document.querySelector(`[data-column-id="${s}"].kanuni-datagrid-header-cell`)?.focus();},pe=s=>{let T=Y.indexOf(Je),M=Math.min(Y.length-1,Math.max(0,T+s));M!==T&&fe(Y[M]);},he=react.useRef(null),ke=react.useRef(false),[xe,Ge]=react.useState(null),Ae=Y,Oe=s=>[...n.left,...n.center,...n.right].find(T=>T.state.id===s)?.state.pinned??null,Ze=(s,T)=>(ke.current?s>T.left+T.width/2:s<T.left+T.width/2)?"before":"after",je=(s,T)=>{let M=he.current;if(!L||!M||M===s||Oe(M)!==Oe(s))return;T.preventDefault(),T.dataTransfer.dropEffect="move";let q=Ze(T.clientX,T.currentTarget.getBoundingClientRect());Ge(S=>S?.id===s&&S.side===q?S:{id:s,side:q});},te=(s,T)=>{let M=he.current;if(Ge(null),!L||!M||M===s||Oe(M)!==Oe(s))return;if(T.preventDefault(),T.stopPropagation(),Ze(T.clientX,T.currentTarget.getBoundingClientRect())==="before")B?.(M,s);else {let S=Ae[Ae.indexOf(s)+1];B?.(M,S===M?Ae[Ae.indexOf(s)+2]:S);}he.current=null;},[Fe,Be]=react.useState(null),ce=(s,T)=>{if(!_)return;T.preventDefault(),T.stopPropagation();let M=T.currentTarget,q=T.clientX,S=s.state.width,re=ke.current?-1:1,V=s.state.id;Be(V),M.setPointerCapture(T.pointerId);let de=S,Te=false,ie=Ve=>{Te=true,de=S+(Ve.clientX-q)*re,K?.(V,de,false);},F=()=>{M.releasePointerCapture?.(T.pointerId),M.removeEventListener("pointermove",ie),M.removeEventListener("pointerup",F),M.removeEventListener("pointercancel",F),Te&&K?.(V,de,true),Be(null);};M.addEventListener("pointermove",ie),M.addEventListener("pointerup",F),M.addEventListener("pointercancel",F);},oe=(s,T,M)=>{let q=s.def,S=s.state.id,re=m&&q.sortable!==false,V=g&&q.filterable!==false,de=C.get(S),Te=x&&q.groupable!==false||L&&q.reorderable!==false,ie=xe?.id===S?xe.side:null;return jsxRuntime.jsxs("div",{className:`kanuni-datagrid-header-cell${T}${re?" kanuni-datagrid-header-cell--sortable":""}${ie?` kanuni-datagrid-header-cell--drop-${ie}`:""}${Fe===S?" kanuni-datagrid-header-cell--resizing":""}`,style:M,role:"columnheader","aria-sort":de?de.direction==="asc"?"ascending":"descending":"none","data-column-id":S,tabIndex:S===Je?0:-1,onFocus:()=>se(S),draggable:Te&&Fe===null,onDragStart:F=>{F.dataTransfer.setData("text/x-kanuni-column",S),F.dataTransfer.effectAllowed="move",he.current=S,ke.current=getComputedStyle(F.currentTarget).direction==="rtl";},onDragEnd:()=>{he.current=null,Ge(null);},onDragOver:L?F=>je(S,F):void 0,onDragLeave:L?()=>Ge(F=>F?.id===S?null:F):void 0,onDrop:L?F=>te(S,F):void 0,onContextMenu:E?F=>E(S,F):void 0,onClick:re?F=>w(S,F.shiftKey):void 0,onKeyDown:F=>{F.key==="ArrowRight"?(F.preventDefault(),pe(1)):F.key==="ArrowLeft"?(F.preventDefault(),pe(-1)):F.key==="Home"?(F.preventDefault(),fe(Y[0])):F.key==="End"?(F.preventDefault(),fe(Y[Y.length-1])):V&&F.altKey&&F.key==="ArrowDown"?(F.preventDefault(),f?.(S,F.currentTarget)):re&&(F.key==="Enter"||F.key===" ")&&(F.preventDefault(),w(S,F.shiftKey));},children:[jsxRuntime.jsx("span",{className:"kanuni-datagrid-header-label",children:Fi(q,S)}),de&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-sort-indicator","aria-hidden":"true",children:de.direction==="asc"?"\u25B2":"\u25BC"}),de&&d.length>1&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-sort-order","aria-hidden":"true",children:de.order+1}),g&&q.filterable!==false&&jsxRuntime.jsx("button",{type:"button",className:`kanuni-datagrid-filter-button${H.has(S)?" kanuni-datagrid-filter-button--active":""}${y==="always"?" kanuni-datagrid-filter-button--pinned":""}`,"aria-label":datagridCore.fillText(I.filterColumnAria,{column:q.headerName??S}),"aria-haspopup":"dialog","data-filter-button":S,tabIndex:-1,onClick:F=>{F.stopPropagation(),f?.(S,F.currentTarget);},children:jsxRuntime.jsx(Oi,{})}),_&&q.resizable!==false&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-resize-handle","data-resize-handle":S,role:"presentation",onPointerDown:F=>ce(s,F),onDoubleClick:F=>{F.stopPropagation(),h?.(S);},onClick:F=>F.stopPropagation()})]},S)};return jsxRuntime.jsxs("div",{className:"kanuni-datagrid-header",role:"row","aria-rowindex":Math.round(t/St)+1,style:{width:n.totalWidth+u.total,top:t||void 0},children:[D&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell",role:"columnheader","aria-colindex":u.colIndex("rowNumberColumn"),"aria-label":I.rowNumberAria,style:{width:Gt,insetInlineStart:u.inset("rowNumberColumn")},children:P??""}),v&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell",role:"columnheader","aria-colindex":u.colIndex("detailColumn"),"aria-label":I.detailsAria,style:{width:pn,insetInlineStart:u.inset("detailColumn")}}),b&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell",role:"columnheader","aria-colindex":u.colIndex("checkboxColumn"),style:{width:cn,insetInlineStart:u.inset("checkboxColumn")},children:jsxRuntime.jsx("input",{type:"checkbox",checked:G==="all",ref:s=>{s&&(s.indeterminate=G==="some");},"aria-label":I.selectAllRows,onChange:()=>N?.()})}),n.left.map((s,T)=>oe(s,` kanuni-datagrid-header-cell--pinned${T===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:s.state.width,insetInlineStart:n.leftOffsets[T]+u.total})),l>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),o.map(s=>{let T=e?.get(s.state.id);return T===void 0?oe(s,"",{width:s.state.width}):oe(s," kanuni-datagrid-header-cell--pinned kanuni-datagrid-cell--sticky",{width:s.state.width,insetInlineStart:T+u.total})}),i>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((s,T)=>oe(s,` kanuni-datagrid-header-cell--pinned${T===0?" kanuni-datagrid-pin-edge-right":""}`,{width:s.state.width,insetInlineEnd:n.rightOffsets[T]}))]})}var so=react.memo(Bi);function uo(t,e,n=[]){let o=null,l=new Set,i=d=>{if(l.has(d)||(l.add(d),e.isPending(d)))return;let m=e.textFor(d);if(m===null)return;let w=t[d]??"";w!==m&&(w===""&&m===""||(o??={...t},o[d]=m));};for(let d of Object.keys(t))i(d);for(let d of n)i(d);return o??t}function _i({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:o,leadingSpacer:l,trailingSpacer:i,values:d,checkboxColumn:m=false,detailColumn:w=false,rowNumberColumn:g=false,placeholder:p,onChange:f,onCommit:y,periodSuggestions:b,periodListId:v}){let D=Q(),P=Xe({rowNumberColumn:g,detailColumn:w,checkboxColumn:m}),G=p??D.filterPlaceholder,N=(x,L,B)=>{let _=x.state.id,K=x.def.filterable!==false;return jsxRuntime.jsx("div",{className:`kanuni-datagrid-filter-cell${L}`,style:B,"data-column-id":_,children:K&&jsxRuntime.jsx("input",{className:"kanuni-datagrid-filter-input",type:"text",value:d[_]??"",placeholder:G,"aria-label":datagridCore.fillText(D.filterColumnAria,{column:x.def.headerName??_}),"data-filter-for":_,list:x.def.dataType==="date"&&v?v:void 0,onChange:h=>f(_,h.target.value),onKeyDown:h=>{h.key==="Enter"&&y?.(_,h.target.value);},onBlur:h=>y?.(_,h.target.value)})},_)};return jsxRuntime.jsxs("div",{className:"kanuni-datagrid-filter-row",role:"row","aria-rowindex":2,style:{width:n.totalWidth+P.total,"--dg-band-offset":`${t}px`},children:[v&&b&&b.length>0&&jsxRuntime.jsx("datalist",{id:v,children:b.map(x=>jsxRuntime.jsx("option",{value:x},x))}),P.total>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned",style:{width:P.total,insetInlineStart:0}}),n.left.map((x,L)=>N(x,` kanuni-datagrid-filter-cell--pinned${L===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:x.state.width,insetInlineStart:n.leftOffsets[L]+P.total})),l>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),o.map(x=>{let L=e?.get(x.state.id);return L===void 0?N(x,"",{width:x.state.width}):N(x," kanuni-datagrid-filter-cell--pinned kanuni-datagrid-cell--sticky",{width:x.state.width,insetInlineStart:L+P.total})}),i>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((x,L)=>N(x,` kanuni-datagrid-filter-cell--pinned${L===0?" kanuni-datagrid-pin-edge-right":""}`,{width:x.state.width,insetInlineEnd:n.rightOffsets[L]}))]})}var co=react.memo(_i);var Nr=react.createContext("");function ho({theme:t,density:e,palette:n,children:o}){let l=react.useMemo(()=>datagridCore.themeClassName(t,e,n),[t,e,n]);return jsxRuntime.jsx(Nr.Provider,{value:l,children:o})}function bo(){return react.useContext(Nr)}function $e({children:t,dark:e=false}){let[n,o]=react.useState(null),l=bo();return react.useEffect(()=>{let i=document.createElement("div");return i.className=`kanuni-datagrid-root kanuni-datagrid-portal${e?" kanuni-datagrid-dark":""}${l}`,document.body.appendChild(i),o(i),()=>{i.remove();}},[e,l]),n?reactDom.createPortal(t,n):null}function Kt({anchor:t,onClose:e,margin:n=8,autoFocus:o=false}){let l=react.useRef(null),[i,d]=react.useState(t),m=react.useCallback(w=>{if(l.current=w,!w)return;let g=w.getBoundingClientRect(),p=t.top+g.height+n>window.innerHeight,f=t.top-g.height-n*2,y=p&&f>n?f:t.top;d({left:Math.max(n,Math.min(t.left,window.innerWidth-g.width-n)),top:Math.max(n,Math.min(y,window.innerHeight-g.height-n))}),o&&w.focus();},[t.left,t.top,n,o]);return react.useEffect(()=>{let w=f=>{let y=l.current;y&&!y.contains(f.target)&&e();},g=f=>{f.key==="Escape"&&e();},p=f=>{let y=l.current,b=f.target;y&&b instanceof Node&&y.contains(b)||e();};return document.addEventListener("mousedown",w),document.addEventListener("keydown",g),window.addEventListener("scroll",p,true),()=>{document.removeEventListener("mousedown",w),document.removeEventListener("keydown",g),window.removeEventListener("scroll",p,true);}},[e]),{position:i,ref:m,elementRef:l}}var fn=25,_t=new Map,Mr=200,ol=200,Pr=8;function rl(t){let e=Q();return react.useMemo(()=>({search:e.search,selectAll:e.filterSelectAll,clear:e.clear,apply:e.apply,cancel:e.cancel,blank:e.filterBlank,noMatch:e.filterNoMatch,loading:e.filterLoading,truncated:e.filterTruncated,...t}),[e,t])}var al=react.memo(function({label:e,display:n,index:o,active:l,checked:i,onToggle:d,onFocus:m}){return jsxRuntime.jsxs("div",{role:"option","aria-selected":i,tabIndex:0,className:`kanuni-datagrid-filter-item${l?" kanuni-datagrid-filter-item--active":""}`,"data-value":e,"data-index":o,onFocus:()=>m(o),onClick:()=>d(e),children:[jsxRuntime.jsx("input",{type:"checkbox",readOnly:true,checked:i,tabIndex:-1}),jsxRuntime.jsx("span",{children:n})]})});function ko({gridId:t,columnId:e,headerLabel:n,entries:o,initialSelected:l,anchor:i,loading:d=false,dark:m,onApply:w,onClose:g,truncated:p=false,onSearch:f,labels:y}){let b=rl(y),[v,D]=react.useState(""),[P,G]=react.useState(0),[N,x]=react.useState(()=>new Set(l??o.map(s=>s.label))),[L,B]=react.useState(false),_=react.useRef(null),K=react.useRef(null),[h,E]=react.useState(0),[I,u]=react.useState(240),C=`${t??""}:${e}`,H=_t.get(C),Y=react.useRef(H?.scrollTop??null),[ne,se]=react.useState(H&&H.width&&H.height?{width:H.width,height:H.height}:null),Je=react.useCallback(s=>{_.current=s,s?.focus();},[]),fe=react.useRef(null),pe=react.useMemo(()=>{let s=datagridCore.foldText(v.trim());if(!s||p)return o;let T=fe.current;(!T||T.entries!==o)&&(T={entries:o,lowered:o.map(q=>datagridCore.foldText(q.label)),needle:"",result:[]},fe.current=T);let M=T.needle!==""&&s.includes(T.needle)?T.result.filter(q=>datagridCore.foldText(q.label).includes(s)):o.filter((q,S)=>T.lowered[S].includes(s));return T.needle=s,T.result=M,M},[o,v,p]);react.useEffect(()=>{if(!f)return;let s=setTimeout(()=>f(v),150);return ()=>clearTimeout(s)},[v,f]),react.useEffect(()=>{L||l||x(new Set(o.map(s=>s.label)));},[o,L,l]);let he=react.useCallback(s=>{K.current=s,s&&u(s.clientHeight||240);},[]);react.useEffect(()=>{let s=K.current;!s||Y.current===null||d||s.scrollHeight<=s.clientHeight||(s.scrollTop=Y.current,Y.current=null,E(s.scrollTop));});let ke=react.useMemo(()=>{let s=pe.length,T=Math.max(0,Math.floor(h/fn)-Pr),M=Math.ceil(I/fn)+Pr*2,q=Math.min(T,Math.max(0,s-1)),S=Math.min(s,q+M);return {start:q,end:S,count:s,rows:pe.slice(q,S)}},[pe,h,I]),xe=Kt({anchor:i,onClose:g}),[Ge,Ae]=react.useState(null),Oe=(Ge??xe.position.left)+(ne?.width??260)+48<window.innerWidth?"right":"left",Ze=s=>{s.preventDefault(),s.stopPropagation();let T=xe.elementRef.current;if(!T)return;let M=T.getBoundingClientRect(),q=Oe,S={x:s.clientX,y:s.clientY,w:M.width,h:M.height,left:M.left},re=null,V=Te=>{let ie=Te.clientX-S.x,F=Te.clientY-S.y,Ve=window.innerHeight-M.top-12,et=Math.min(Ve,Math.max(ol,S.h+F));if(q==="right"){let Ue=window.innerWidth-S.left-12;re={width:Math.min(Ue,Math.max(Mr,S.w+ie)),height:et},se(re);}else {let Ue=S.left+S.w,Se=Ue-12,Ee=Math.min(Se,Math.max(Mr,S.w-ie));re={width:Ee,height:et},se(re),Ae(Ue-Ee);}K.current&&u(K.current.clientHeight);},de=()=>{if(window.removeEventListener("pointermove",V),window.removeEventListener("pointerup",de),re){let Te=_t.get(C);_t.set(C,{scrollTop:Te?.scrollTop??K.current?.scrollTop??0,width:Math.round(re.width),height:Math.round(re.height)});}};window.addEventListener("pointermove",V),window.addEventListener("pointerup",de);},je=react.useCallback(s=>{B(true),x(T=>{let M=new Set(T);return M.has(s)?M.delete(s):M.add(s),M});},[]),te=react.useCallback(s=>G(s),[]),Fe=()=>{if(d)return;if(N.size===o.length){w(null);return}let s=o.filter(S=>N.has(S.label)),T=s.some(S=>S.value===null||S.value===void 0),M=s.filter(S=>S.value!==null&&S.value!==void 0),q;M.length===0?q={columnId:e,operator:"isnull"}:T?q={logic:"or",nodes:[{columnId:e,operator:"in",value:M.map(S=>S.value)},{columnId:e,operator:"isnull"}]}:q={columnId:e,operator:"in",value:M.map(S=>S.value)},w(q);},Be=s=>{let T=Math.max(0,Math.min(pe.length-1,s));G(T);let M=xe.elementRef.current?.querySelector(`.kanuni-datagrid-filter-item[data-index="${T}"]`);M?.focus(),M?.scrollIntoView({block:"nearest"});},ce=s=>s.key.length===1&&!s.ctrlKey&&!s.metaKey&&!s.altKey,oe=s=>{let T=s.target===_.current;if(s.key==="Backspace"&&!T){s.preventDefault(),_.current?.focus(),D(M=>M.slice(0,-1)),G(0);return}if(s.key==="ArrowDown"){s.preventDefault(),Be(T?0:P+1);return}if(s.key==="ArrowUp"){s.preventDefault(),Be(T?pe.length-1:P-1);return}if(!T&&(s.key==="Home"||s.key==="End")){s.preventDefault(),Be(s.key==="Home"?0:pe.length-1);return}if(s.key===" "&&!T){s.preventDefault();let M=pe[P];M&&je(M.label);return}if(s.key==="Enter"){s.preventDefault(),Fe();return}!T&&ce(s)&&s.key!==" "&&(s.preventDefault(),_.current?.focus(),D(M=>M+s.key),G(0));};return jsxRuntime.jsx($e,{dark:m,children:jsxRuntime.jsxs("div",{ref:xe.ref,className:"kanuni-datagrid-filter-popup",style:{left:Ge??xe.position.left,top:xe.position.top,...ne?{width:ne.width,height:ne.height,maxHeight:"none"}:null},role:"dialog","aria-label":`${n} filter`,onKeyDown:oe,children:[jsxRuntime.jsx("div",{className:`kanuni-datagrid-popup-resize kanuni-datagrid-popup-resize--${Oe}`,"data-testid":"dg-filter-resize",onPointerDown:Ze}),jsxRuntime.jsx("input",{ref:Je,className:"kanuni-datagrid-filter-search",type:"search",placeholder:b.search,value:v,onChange:s=>{D(s.target.value),G(0);},"data-testid":"dg-filter-search"}),p&&jsxRuntime.jsx("p",{className:"kanuni-datagrid-filter-truncated","data-testid":"dg-filter-truncated",children:b.truncated}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-filter-actions",children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{B(true),x(new Set(o.map(s=>s.label)));},children:b.selectAll}),jsxRuntime.jsx("button",{type:"button",onClick:()=>{B(true),x(new Set);},children:b.clear})]}),jsxRuntime.jsxs("div",{ref:he,className:"kanuni-datagrid-filter-list",role:"listbox","aria-multiselectable":"true","aria-busy":d||void 0,"aria-setsize":pe.length,onScroll:s=>{let T=s.target.scrollTop;E(T),Y.current=null;let M=_t.get(C);_t.set(C,{...M,scrollTop:T});},children:[d&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-filter-empty",children:b.loading}),!d&&pe.length===0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-filter-empty",children:b.noMatch}),ke.count>0&&jsxRuntime.jsx("div",{style:{height:pe.length*fn,position:"relative"},children:jsxRuntime.jsx("div",{style:{transform:`translateY(${ke.start*fn}px)`},children:ke.rows.map((s,T)=>{let M=ke.start+T;return jsxRuntime.jsx(al,{label:s.label,display:s.label===""?b.blank:s.label,index:M,active:M===P,checked:N.has(s.label),onToggle:je,onFocus:te},s.label)})})})]}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsxRuntime.jsx("button",{type:"button",onClick:g,children:b.cancel}),jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:Fe,disabled:d,"data-testid":"dg-filter-apply",children:b.apply})]})]})})}var xo="text/x-kanuni-column";function sl({columns:t,levels:e,onSetLevels:n,maxLevels:o=1,onExpandAll:l,onCollapseAll:i,emptyText:d}){let m=Q(),w=d??m.groupPanelHint,[g,p]=react.useState(false),f=react.useRef(null),[y,b]=react.useState(null),v=h=>t.find(I=>I.state.id===h)?.def.headerName??h,D=h=>{if(!h||e.includes(h))return;let E=e.length>=o?e.slice(0,o-1):[...e];n([...E,h]);},P=h=>n(e.filter(E=>E!==h)),G=(h,E)=>{let I=e.filter(C=>C!==h),u=Math.max(0,Math.min(I.length,E));n([...I.slice(0,u),h,...I.slice(u)]);},N=(h,E,I)=>{if(h===E)return;let C=e.filter(H=>H!==h).indexOf(E);C<0||G(h,I==="before"?C:C+1);},x=(h,E)=>{let I=h+E;I<0||I>=e.length||N(e[h],e[I],E<0?"before":"after");},L=(h,E)=>h<E.top+E.height/2?"before":"after",B=(h,E)=>{E.preventDefault(),E.stopPropagation();let I=L(E.clientY,E.currentTarget.getBoundingClientRect());b(null),p(false);let u=f.current;if(f.current=null,u){N(u,e[h],I);return}let C=E.dataTransfer.getData(xo);if(!C||e.includes(C))return;if(e.length>=o){D(C);return}let H=I==="before"?h:h+1;n([...e.slice(0,H),C,...e.slice(H)]);},_=(h,E,I)=>{let u=I.ctrlKey||I.metaKey;u&&(I.key==="ArrowUp"||I.key==="ArrowLeft")?(I.preventDefault(),x(h,-1)):u&&(I.key==="ArrowDown"||I.key==="ArrowRight")?(I.preventDefault(),x(h,1)):(I.key==="Delete"||I.key==="Backspace")&&(I.preventDefault(),P(E));},K=t.filter(h=>!e.includes(h.state.id));return jsxRuntime.jsxs("div",{className:`kanuni-datagrid-group-panel${g?" kanuni-datagrid-group-panel--over":""}`,onDragOver:h=>{h.preventDefault(),p(true);},onDragLeave:()=>p(false),onDrop:h=>{if(h.preventDefault(),p(false),b(null),f.current){f.current=null;return}D(h.dataTransfer.getData(xo));},children:[e.length>0?jsxRuntime.jsx("div",{className:"kanuni-datagrid-group-levels",children:e.map((h,E)=>jsxRuntime.jsx("div",{className:`kanuni-datagrid-group-level${y?.index===E?` kanuni-datagrid-group-level--drop-${y.side}`:""}`,style:{"--dg-group-level":E},"data-group-level":E,onDragOver:I=>{I.preventDefault(),I.stopPropagation();let u=L(I.clientY,I.currentTarget.getBoundingClientRect());b(C=>C?.index===E&&C.side===u?C:{index:E,side:u});},onDragLeave:()=>b(I=>I?.index===E?null:I),onDrop:I=>B(E,I),children:jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-chip",draggable:o>1&&e.length>1,tabIndex:0,role:"button","aria-label":`${datagridCore.fillText(m.groupLevelAria,{n:E+1})}: ${v(h)}`,onDragStart:I=>{f.current=h,I.dataTransfer.effectAllowed="move",I.dataTransfer.setData(xo,h);},onDragEnd:()=>{f.current=null,b(null);},onKeyDown:I=>_(E,h,I),children:[o>1&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-chip-level",children:E+1}),v(h),jsxRuntime.jsx("button",{type:"button","aria-label":datagridCore.fillText(m.groupRemoveAria,{column:v(h)}),onClick:()=>P(h),children:"\xD7"})]})},h))}):jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-panel-hint",children:w}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-group-panel-actions",children:[e.length>0&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:l,children:"Expand all"}),jsxRuntime.jsx("button",{type:"button",onClick:i,children:"Collapse all"})]}),jsxRuntime.jsxs("label",{className:"kanuni-datagrid-group-select",children:[jsxRuntime.jsx("span",{className:"kanuni-datagrid-sr-only",children:o>1?m.groupAddLevel:m.groupByColumn}),o>1?jsxRuntime.jsxs("select",{value:"",disabled:K.length===0,onChange:h=>D(h.target.value),children:[jsxRuntime.jsx("option",{value:"",children:m.groupAddLevelButton}),K.map(h=>jsxRuntime.jsx("option",{value:h.state.id,children:h.def.headerName??h.state.id},h.state.id))]}):jsxRuntime.jsxs("select",{value:e[0]??"",onChange:h=>n(h.target.value?[h.target.value]:[]),children:[jsxRuntime.jsx("option",{value:"",children:m.groupNoGrouping}),t.map(h=>jsxRuntime.jsx("option",{value:h.state.id,children:h.def.headerName??h.state.id},h.state.id))]})]})]})]})}var To=react.memo(sl);function pl({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:o,defs:l,values:i,checkboxColumn:d=false,detailColumn:m=false,rowNumberColumn:w=false,onPickSummary:g,emptyHint:p="",position:f="bottom",bandOffset:y=0,headerRowsBetween:b=0}){let v=Q(),D=datagridCore.summaryTypeLabels(v),P=new Map(l.map(x=>[x.columnId,x])),G=Xe({rowNumberColumn:w,detailColumn:m,checkboxColumn:d}).total,N=(x,L,B)=>{let _=x.state.id,K=P.get(_),h=K?i[datagridCore.summaryKey(K.columnId,K.type)]:void 0,E=x.def.dataType==="number";return jsxRuntime.jsx("div",{className:`kanuni-datagrid-footer-cell${L}${E?" kanuni-datagrid-footer-cell--number":""}${K?" kanuni-datagrid-footer-cell--active":""}`,style:B,role:"gridcell","data-column-id":_,"data-summary-type":K?.type??"",title:K?`${datagridCore.summaryLabel(K,D)} \u2014 ${x.def.headerName??_}`:void 0,onContextMenu:g?I=>g(_,I):void 0,onClick:g?I=>g(_,I):void 0,children:K?jsxRuntime.jsx("span",{className:"kanuni-datagrid-footer-value",children:datagridCore.formatSummaryValue(K,h,x.def)}):jsxRuntime.jsx("span",{className:"kanuni-datagrid-footer-hint",children:p})},_)};return jsxRuntime.jsxs("div",{className:`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${f}`,role:"row","aria-label":v.columnTotalsAria,style:{width:t.totalWidth+G,"--dg-band-offset":`${y}px`,"--dg-pinned-gap":String(b)},children:[G>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned",style:{width:G,insetInlineStart:0}}),t.left.map((x,L)=>N(x,` kanuni-datagrid-footer-cell--pinned${L===t.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:x.state.width,insetInlineStart:t.leftOffsets[L]+G})),n>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),e.map(x=>N(x,"",{width:x.state.width})),o>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:o}}),t.right.map((x,L)=>N(x,` kanuni-datagrid-footer-cell--pinned${L===0?" kanuni-datagrid-pin-edge-right":""}`,{width:x.state.width,insetInlineEnd:t.rightOffsets[L]}))]})}var wn=react.memo(pl);function fl(t,e){return `__dg_pinned_${t}_${e}`}function wl({gridId:t,side:e,rows:n,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:m,leadingSpacer:w,trailingSpacer:g,checkboxColumn:p=false,detailColumn:f=false,rowNumberColumn:y=false,rowHeight:b,bandOffset:v=0,headerRowsBetween:D,ariaRowBase:P}){return n.length===0?null:jsxRuntime.jsx("div",{className:`kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--${e}`,role:"rowgroup",style:{width:o.totalWidth||"100%","--dg-band-offset":`${v}px`,"--dg-pinned-gap":String(D)},children:n.map((G,N)=>{let x={kind:"data",key:fl(e,N),sourceIndex:-1,data:G};return jsxRuntime.jsx(Ft,{gridId:t,node:x,index:N,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:m,leadingSpacer:w,trailingSpacer:g,striped:false,selected:false,focusedColumnId:null,checkboxColumn:p,detailColumn:f,rowNumberColumn:y,rowNumber:null,headerRowCount:P,height:b},x.key)})})}var hn=react.memo(wl);async function Wt(t,e){try{let n=e==="csv"?await t.exportToCsv():e==="excel"?await t.exportToExcel():e==="excel-selected"?await t.exportToExcel({selectedOnly:!0}):await t.exportToPdf();return datagridCore.downloadBlob(n.blob,n.fileName),{completed:!0}}catch(n){return n instanceof datagridCore.ExportAbortedError?{completed:false}:{completed:false,error:n instanceof Error?n.message:String(n)}}}function ht({anchor:t,onClose:e,children:n,dark:o,className:l="",label:i,role:d="dialog"}){let m=Kt({anchor:t,onClose:e});return jsxRuntime.jsx($e,{dark:o,children:jsxRuntime.jsx("div",{ref:m.ref,className:`kanuni-datagrid-filter-popup ${l}`.trim(),style:{left:m.position.left,top:m.position.top},role:d,"aria-label":i,children:n})})}function Cl(t){let e=Q();return react.useMemo(()=>({search:e.toolbarSearch,csv:e.exportCsv,excel:e.exportExcel,excelSelected:e.exportExcelSelected,pdf:e.exportPdf,columns:e.columns,exporting:e.exporting,exportMenu:e.exportMenu,...t}),[e,t])}var kl=()=>jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:jsxRuntime.jsx("path",{d:"M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})});function xl({controller:t,search:e=true,exportCsv:n=true,exportExcel:o=false,exportPdf:l=false,columnChooser:i=true,dark:d,onOpenColumnChooser:m,itemsBefore:w,itemsAfter:g,searchDebounce:p=200,labels:f}){let y=Cl(f),[b,v]=react.useState(t.getSearchText()),[D,P]=react.useState(null),[G,N]=react.useState(null),[x,L]=react.useState(null);react.useEffect(()=>{let h=setTimeout(()=>t.setSearchText(b),p);return ()=>clearTimeout(h)},[t,b,p]);let[B,_]=react.useState(()=>t.getSelectedCount());react.useEffect(()=>(_(t.getSelectedCount()),t.events.on("selectionChanged",()=>_(t.getSelectedCount()))),[t]);let K=async h=>{P(h),L(null);let E=await Wt(t,h);E.error?L(E.error):N(null),P(null);};return jsxRuntime.jsxs("div",{className:"kanuni-datagrid-toolbar",children:[w,e&&jsxRuntime.jsx("input",{type:"search",className:"kanuni-datagrid-toolbar-search",placeholder:y.search,value:b,"aria-label":y.search,"data-testid":"dg-toolbar-search",onChange:h=>v(h.target.value)}),jsxRuntime.jsx("div",{className:"kanuni-datagrid-toolbar-spacer"}),i&&jsxRuntime.jsx("button",{type:"button","aria-haspopup":"dialog","data-testid":"dg-column-chooser",onClick:h=>{let E=h.currentTarget.getBoundingClientRect();m?.({left:E.left,top:E.bottom+2});},children:y.columns}),(n||o||l)&&jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-toolbar-icon-button","aria-haspopup":"menu","aria-label":y.exportMenu,title:y.exportMenu,disabled:D!==null,"data-testid":"dg-export-menu",onClick:h=>{let E=h.currentTarget.getBoundingClientRect();N(G?null:{left:E.right-190,top:E.bottom+2});},children:D?jsxRuntime.jsx("span",{className:"kanuni-datagrid-toolbar-busy"}):jsxRuntime.jsx(kl,{})}),G&&jsxRuntime.jsxs(ht,{anchor:G,onClose:()=>N(null),dark:d,role:"menu",label:y.exportMenu,className:"kanuni-datagrid-export-menu",children:[n&&jsxRuntime.jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-csv",onClick:()=>K("csv"),children:D==="csv"?y.exporting:y.csv}),o&&jsxRuntime.jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-excel",onClick:()=>K("excel"),children:D==="excel"?y.exporting:y.excel}),o&&jsxRuntime.jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null||B===0,"data-testid":"dg-export-excel-selected",onClick:()=>K("excel-selected"),children:D==="excel-selected"?y.exporting:y.excelSelected}),l&&jsxRuntime.jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-pdf",onClick:()=>K("pdf"),children:D==="pdf"?y.exporting:y.pdf})]}),g,x&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-toolbar-error",role:"alert",children:x})]})}var vo=react.memo(xl);function vl(t){let e=Q();return react.useMemo(()=>({title:e.hiddenColumns,empty:e.noHiddenColumns,showAll:e.showAll,ok:e.ok,...t}),[e,t])}function Do({controller:t,columns:e,anchor:n,onClose:o,dark:l,labels:i}){let d=vl(i),m=e.filter(w=>!w.visible);return jsxRuntime.jsxs(ht,{anchor:n,onClose:o,dark:l,label:d.title,className:"kanuni-datagrid-column-chooser",children:[jsxRuntime.jsxs("div",{className:"kanuni-datagrid-filter-list",children:[m.length===0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-chooser-empty",children:d.empty}),m.map(w=>{let g=t.getColumnModel().getDef(w.id);return jsxRuntime.jsxs("label",{className:"kanuni-datagrid-filter-item",children:[jsxRuntime.jsx("input",{type:"checkbox",checked:false,"data-column-toggle":w.id,onChange:()=>t.setColumnVisible(w.id,true)}),jsxRuntime.jsx("span",{children:g?.headerName??w.id})]},w.id)})]}),m.length>0&&jsxRuntime.jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>m.forEach(w=>t.setColumnVisible(w.id,true)),children:d.showAll}),jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:o,children:d.ok})]})]})}function Sl(t){let e=Q();return react.useMemo(()=>({first:e.pagerFirst,previous:e.pagerPrevious,next:e.pagerNext,last:e.pagerLast,page:e.pagerPage,of:e.pagerOf,rowsPerPage:e.pagerRowsPerPage,...t}),[e,t])}function El({page:t,pageCount:e,pageSize:n,pageSizes:o=[25,50,100,250],totalRows:l,onPage:i,onNext:d,onPrevious:m,onPageSize:w,labels:g}){let p=Sl(g),f=t<=0,y=t>=e-1,b=l===0?0:t*n+1,v=Math.min(l,(t+1)*n);return jsxRuntime.jsxs("div",{className:"kanuni-datagrid-pager",role:"navigation","aria-label":"Pagination",children:[jsxRuntime.jsxs("label",{className:"kanuni-datagrid-pager-size",children:[jsxRuntime.jsx("span",{children:p.rowsPerPage}),jsxRuntime.jsx("select",{value:n,"data-testid":"dg-page-size",onChange:D=>w(Number(D.target.value)),children:o.map(D=>jsxRuntime.jsx("option",{value:D,children:D},D))})]}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-pager-range","data-testid":"dg-page-range",children:[b.toLocaleString(),"\u2013",v.toLocaleString()," ",p.of," ",l.toLocaleString()]}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-pager-buttons",children:[jsxRuntime.jsx("button",{type:"button","aria-label":p.first,disabled:f,onClick:()=>i(0),children:"\xAB"}),jsxRuntime.jsx("button",{type:"button","aria-label":p.previous,disabled:f,"data-testid":"dg-page-prev",onClick:m,children:"\u2039"}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-pager-current","data-testid":"dg-page-current",children:[p.page," ",t+1," ",p.of," ",e]}),jsxRuntime.jsx("button",{type:"button","aria-label":p.next,disabled:y,"data-testid":"dg-page-next",onClick:d,children:"\u203A"}),jsxRuntime.jsx("button",{type:"button","aria-label":p.last,disabled:y,onClick:()=>i(e-1),children:"\xBB"})]})]})}var Go=react.memo(El);function Al(t){let e=Q();return react.useMemo(()=>({clear:e.filterRemove,toggle:e.filterToggle,builder:e.filterEditBuilder,empty:e.filterNone,...t}),[e,t])}function Ol({controller:t,onOpenBuilder:e,alwaysVisible:n=false,describeOptions:o,labels:l}){let i=Al(l),d=Q(),[,m]=react.useState(0);react.useEffect(()=>t.events.on("filterChanged",()=>m(f=>f+1)),[t]);let w=t.getEffectiveFilter(),g=t.isFilterEnabled(),p=datagridCore.describeFilter(w,t.getColumnModel(),{...o,labels:{...datagridCore.filterLabels(d),...o?.labels}});return !w&&!n?null:jsxRuntime.jsxs("div",{className:`kanuni-datagrid-filter-panel${g?"":" kanuni-datagrid-filter-panel--suspended"}`,"data-testid":"dg-filter-panel",role:"group","aria-label":i.toggle,children:[jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-filter-panel-clear",title:i.clear,"aria-label":i.clear,disabled:!w,"data-testid":"dg-filter-panel-clear",onClick:()=>{t.setFilter(null),t.clearColumnFilters(),t.setFilterEnabled(true);},children:"\xD7"}),jsxRuntime.jsx("input",{type:"checkbox",className:"kanuni-datagrid-filter-panel-toggle",checked:g,disabled:!w,title:i.toggle,"aria-label":i.toggle,"data-testid":"dg-filter-panel-toggle",onChange:f=>t.setFilterEnabled(f.target.checked)}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-filter-panel-text",title:p??void 0,"data-testid":"dg-filter-panel-text",children:p??i.empty}),e&&jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-filter-panel-builder",title:i.builder,"aria-label":i.builder,"data-testid":"dg-filter-panel-builder",onClick:e,children:"\u25BE"})]})}var So=react.memo(Ol);var Rn=t=>!t.separator&&!t.disabled;function Cn({x:t,y:e,items:n,context:o,onClose:l,dark:i=false,label:d}){let m=Q(),w=react.useRef(null),[g,p]=react.useState({left:t,top:e}),[f,y]=react.useState(()=>n.findIndex(Rn)),[b,v]=react.useState(null),[D,P]=react.useState(null),G=react.useRef(null),[N,x]=react.useState(null);react.useEffect(()=>P(null),[b]);let L=react.useCallback((u,C)=>{if(v(u),u===null||!C)return;let H=C.getBoundingClientRect();x({left:H.left,right:H.right,top:H.top});},[]),B=u=>w.current?.querySelector(`[data-item-index="${u}"]`)??null,_=react.useCallback(u=>{if(G.current=u,!u||!N)return;let C=8,H=u.getBoundingClientRect(),Y=Math.max(C,Math.min(N.top-4,window.innerHeight-H.height-C)),se=N.right+H.width+C<=window.innerWidth?N.right:Math.max(C,N.left-H.width);P({left:se,top:Y});},[N]),K=react.useCallback(u=>{if(w.current=u,!u)return;let C=u.getBoundingClientRect(),H=8;p({left:Math.max(H,Math.min(t,window.innerWidth-C.width-H)),top:Math.max(H,Math.min(e,window.innerHeight-C.height-H))}),u.focus();},[t,e]);react.useEffect(()=>{let u=H=>{let Y=H.target;G.current?.contains(Y)||w.current&&!w.current.contains(Y)&&l();},C=()=>l();return document.addEventListener("mousedown",u),window.addEventListener("scroll",C,true),()=>{document.removeEventListener("mousedown",u),window.removeEventListener("scroll",C,true);}},[l]);let h=(u,C)=>{let H=n.length;for(let Y=1;Y<=H;Y++){let ne=(u+C*Y+H*H)%H;if(Rn(n[ne]))return ne}return u},E=u=>{let C=n[u];if(!(!C||!Rn(C))){if(C.items?.length){L(u,B(u));return}C.onSelect?.(o),l();}},I=u=>{switch(u.key){case "ArrowDown":y(C=>h(C,1));break;case "ArrowUp":y(C=>h(C,-1));break;case "Home":y(n.findIndex(Rn));break;case "End":y(h(0,-1));break;case "ArrowRight":if(n[f]?.items?.length)L(f,B(f));else return;break;case "ArrowLeft":if(b!==null)L(null);else return;break;case "Enter":case " ":E(f);break;case "Escape":l();break;case "Tab":l();return;default:return}u.preventDefault(),u.stopPropagation();};return jsxRuntime.jsxs($e,{dark:i,children:[jsxRuntime.jsx("div",{ref:K,className:"kanuni-datagrid-context-menu",role:"menu","aria-label":d??m.rowActions,tabIndex:-1,style:{left:g.left,top:g.top},onKeyDown:I,children:n.map((u,C)=>u.separator?jsxRuntime.jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},u.id??`sep-${C}`):jsxRuntime.jsx("div",{className:"kanuni-datagrid-menu-row",children:jsxRuntime.jsxs("button",{type:"button",role:"menuitem",className:`kanuni-datagrid-menu-item${C===f?" kanuni-datagrid-menu-item--active":""}`,disabled:u.disabled,"data-item-index":C,"aria-haspopup":u.items?.length?"menu":void 0,"aria-expanded":u.items?.length?b===C:void 0,onMouseEnter:H=>{y(C),L(u.items?.length?C:null,H.currentTarget);},onClick:()=>E(C),children:[u.icon&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-icon",children:u.icon}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-label",children:u.label}),u.shortcut&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-shortcut",children:u.shortcut}),u.items?.length?jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-caret",children:"\u203A"}):null]})},u.id??C))}),b!==null&&n[b]?.items?.length?jsxRuntime.jsx("div",{ref:_,className:"kanuni-datagrid-context-menu kanuni-datagrid-submenu",style:D?{left:D.left,top:D.top}:{left:0,top:0,visibility:"hidden"},role:"menu",children:n[b].items.map((u,C)=>u.separator?jsxRuntime.jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},u.id??`sub-sep-${C}`):jsxRuntime.jsxs("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:u.disabled,onClick:()=>{u.onSelect?.(o),l();},children:[u.icon&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-icon",children:u.icon}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-label",children:u.label})]},u.id??C))}):null]})}var Bl=typeof navigator<"u"&&/Mac|iPhone|iPad|iPod/.test(navigator.platform??""),Mo=Bl?"\u2318":"Ctrl+",Kr=`${Mo}C`,Kl=`${Mo}X`,_l=`${Mo}V`;function Nt(t,e={}){let n=t.getClipboardText(e);t.notifyClipboardGesture("copy",n?n.split(`
2
- `).length:0,()=>!n||!navigator.clipboard?.writeText?false:(_r(n),true));}function _r(t){navigator.clipboard?.writeText(t).catch(()=>{});}function $l(t){let e=t.getColumnModel();return t.getVisualColumnIds().some(n=>{let o=e.getDef(n)?.band;return typeof o=="string"?o!=="":Array.isArray(o)&&o.length>0})}function Wl(t){return t===false?[]:Array.isArray(t)?t:["csv","excel","excel-selected","pdf"]}var Vl={csv:"exportCsv",excel:"exportExcel","excel-selected":"exportExcelSelected",pdf:"exportPdf"};function Po(t,e,n,o,l){if(n===false)return [];let i=n===true||n===void 0?{}:n,d=[];i.copy!==false&&d.push({id:"__dg-copy",label:e.menuCopy,shortcut:Kr,onSelect:()=>Nt(t)}),i.copyWithHeaders!==false&&d.push({id:"__dg-copy-headers",label:e.menuCopyWithHeaders,onSelect:()=>Nt(t,{includeHeaders:true})}),i.copyWithGroupHeaders!==false&&$l(t)&&d.push({id:"__dg-copy-group-headers",label:e.menuCopyWithGroupHeaders,onSelect:()=>Nt(t,{includeGroupHeaders:true})});let m=Wl(i.export);if(m.length>0){let w=t.getSelectedCount()===0;d.push({id:"__dg-export",label:e.menuExport,items:m.map(g=>({id:`__dg-export-${g}`,label:e[Vl[g]],disabled:g==="excel-selected"&&w,onSelect:()=>{Wt(t,g).then(p=>{p.error&&l?.(p.error);});}}))});}return d.length>0&&o&&d.unshift({id:"__dg-sep-builtin",separator:true}),d}function Io({anchor:t,value:e,dark:n,onCommit:o,onCancel:l}){let i=Q(),[d,m]=react.useState(e),w=react.useRef(null);react.useEffect(()=>{let p=w.current;p&&(p.focus(),p.select());},[]);let g=()=>{let p=d.trim();o(p===""?null:p);};return jsxRuntime.jsxs(ht,{anchor:t,onClose:l,dark:n,label:i.noteEditorAria,className:"kanuni-datagrid-note-editor",children:[jsxRuntime.jsx("textarea",{ref:w,className:"kanuni-datagrid-note-input",value:d,rows:4,"aria-label":i.noteEditorAria,placeholder:i.notePlaceholder,onChange:p=>m(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.ctrlKey||p.metaKey)&&(p.preventDefault(),g()),p.key==="Escape"&&(p.preventDefault(),l());}}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-note-actions",children:[jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-note-cancel",onClick:l,children:i.cancel}),jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-note-save",onClick:g,children:i.save})]})]})}function ql(t){let e=Q();return react.useMemo(()=>({busy:e.busy,loading:e.busyLoading,encoding:e.busyEncoding,filtering:e.busyFiltering,sorting:e.busySorting,computing:e.busyComputing,grouping:e.busyGrouping,aggregating:e.busyAggregating,projecting:e.busyProjecting,exporting:e.busyExporting,cancel:e.cancel,...t}),[e,t])}var Jl=new Set(["filtering","sorting","computing","encoding","exporting"]);function Ao({controller:t,delay:e=300,labels:n,cancellable:o=true,forced:l=false}){let[i,d]=react.useState(()=>t.getBusy()),[m,w]=react.useState(false);react.useEffect(()=>(d(t.getBusy()),t.events.on("busyChanged",v=>d(v))),[t]);let g=i.busy&&i.background!==true;react.useEffect(()=>{if(!g){w(false);return}let v=setTimeout(()=>w(true),e);return ()=>clearTimeout(v)},[g,e]);let p=ql(n);if(!l&&(!m||!g))return null;let f=i.phase?p[i.phase]:p.busy,y=i.progress===null?null:Math.max(0,Math.min(100,i.progress)),b=o&&i.phase!==null&&Jl.has(i.phase)&&i.cancellable!==false;return jsxRuntime.jsx("div",{className:"kanuni-datagrid-loading-overlay",role:"status","aria-live":"polite","data-testid":"dg-loading-overlay","data-phase":i.phase??"busy","data-blocking":i.phase==="exporting"?"true":void 0,"aria-busy":"true",children:jsxRuntime.jsxs("div",{className:"kanuni-datagrid-loading-card",children:[jsxRuntime.jsx("span",{className:"kanuni-datagrid-loading-spinner","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-loading-label",children:f}),y!==null&&jsxRuntime.jsxs("div",{className:"kanuni-datagrid-loading-progress",role:"progressbar","aria-valuenow":Math.round(y),"aria-valuemin":0,"aria-valuemax":100,children:[jsxRuntime.jsx("div",{className:"kanuni-datagrid-loading-track",children:jsxRuntime.jsx("div",{className:"kanuni-datagrid-loading-fill",style:{width:`${y}%`}})}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-loading-percent",children:[Math.round(y),"%"]})]}),b&&jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-loading-cancel",onClick:()=>t.cancel(),"data-testid":"dg-loading-cancel",children:p.cancel})]})})}var zr=null;function Zl(){return typeof document>"u"?null:(zr??=document.createElement("canvas"),zr.getContext("2d"))}function Yr(t){let e=getComputedStyle(t);return `${e.fontStyle} ${e.fontWeight} ${e.fontSize} ${e.fontFamily}`}function jl(t){for(let e=t.firstElementChild;e;e=e.nextElementSibling)if(e.tagName!=="MARK")return true;return false}function Ql(t){let e=t.map(o=>[o.style.width,o.style.minWidth,o.style.maxWidth]);for(let o of t)o.style.width="max-content",o.style.minWidth="0",o.style.maxWidth="none";let n=0;for(let o of t){let l=Math.ceil(o.getBoundingClientRect().width);l>n&&(n=l);}return t.forEach((o,l)=>{[o.style.width,o.style.minWidth,o.style.maxWidth]=e[l];}),n}function kn(t,e){let n=Zl();if(!n)return null;let o=typeof CSS<"u"&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),l=t.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${o}"]`),i=t.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${o}"]`);if(!l&&i.length===0)return null;let d=0;if(l){let m=l.querySelector(".kanuni-datagrid-header-label")??l;n.font=Yr(m),d=n.measureText(m.textContent??"").width+44;}if(i.length>0){n.font=Yr(i[0]);let m=[];for(let w=0;w<i.length;w++){if(jl(i[w])){m.push(i[w]);continue}let g=i[w].textContent??"";if(g==="")continue;let p=n.measureText(g).width+20;p>d&&(d=p);}m.length>0&&(d=Math.max(d,Ql(m)));}return d===0?null:Math.round(Math.min(640,Math.max(48,d)))}function Oo(t,e){let n=react.useRef(e);n.current=e;let o=!!e?.enabled,l=e?.storageKey,i=e?.type;react.useEffect(()=>{if(o)return datagridCore.attachStateStoring(t,{...n.current,enabled:true})},[t,o,l,i]);}var xn="application/x-kanuni-row";function Bo(t,e){let n=!!e?.enabled,o=e?.group??null,l=e?.allowReordering??true,i=e?.allowDropInsert??o!==null,[d,m]=react.useState(false),[w,g]=react.useState(null),p=react.useRef(null),f=react.useRef(false),y=react.useRef(null),b=react.useRef(null),v=react.useRef(e);v.current=e;let D=react.useCallback(u=>t.getRowByKey(u),[t]),P=(u,C)=>{let H=C.getBoundingClientRect();return u.clientY<H.top+H.height/2?"before":"after"},G=react.useCallback((u,C)=>{if(!datagridCore.isDataRow(u))return;b.current=u.key,y.current=u.key,f.current=false,p.current=null;let H={gridId:t.gridId,group:o,rowKey:u.key,row:u.data};C.dataTransfer.setData(xn,JSON.stringify(H)),C.dataTransfer.setData("text/plain",String(u.key)),C.dataTransfer.effectAllowed="move",t.notifyRowDrag("enter",{rowKey:u.key}),C.stopPropagation();},[t,o]),N=react.useCallback(()=>{let u=y.current;u!==null&&t.notifyRowDragEnd({rowKey:u,dropped:f.current,overKey:p.current?.key??null,position:p.current?.side??null}),f.current=false,p.current=null,y.current=null,b.current=null,g(null),m(false);},[t]),x=react.useCallback(u=>u.dataTransfer.types.includes(xn)?b.current!==null?l:i&&o!==null:false,[l,i,o]),L=react.useCallback((u,C)=>{if(!datagridCore.isDataRow(u)||!x(C))return;if(C.preventDefault(),C.dataTransfer.dropEffect="move",b.current===u.key){p.current=null,g(null);return}let H=P(C,C.currentTarget),Y=p.current?.key!==u.key||p.current.side!==H;p.current={key:u.key,side:H},g(ne=>ne?.key===u.key&&ne.side===H?ne:{key:u.key,side:H}),Y&&b.current!==null&&t.notifyRowDrag("move",{rowKey:b.current,overKey:u.key,position:H});},[x,t]),B=react.useCallback((u,C,H)=>{let Y=null;try{let se=u.dataTransfer.getData(xn);Y=se?JSON.parse(se):null;}catch{Y=null;}if(!Y)return;if(Y.gridId===t.gridId){if(!l)return;let se=v.current?.onReorder;if(se){se({dragKey:Y.rowKey,targetKey:C,position:H,row:D(Y.rowKey)});return}t.moveRow(Y.rowKey,C,H);return}!i||o===null||Y.group!==o||v.current?.onAdd?.({row:Y.row,rowKey:Y.rowKey,otherGridId:Y.gridId,targetKey:C,position:H});},[t,l,i,o,D]),_=react.useCallback((u,C)=>{if(g(null),!datagridCore.isDataRow(u)||!x(C))return;C.preventDefault(),C.stopPropagation();let H=P(C,C.currentTarget);f.current=true,p.current={key:u.key,side:H},B(C,u.key,H),b.current=null;},[x,B]),K=react.useCallback(u=>{x(u)&&(u.preventDefault(),u.dataTransfer.dropEffect="move");},[x]),h=react.useCallback(u=>{g(null),x(u)&&(u.preventDefault(),f.current=true,p.current=null,B(u,null,"after"),b.current=null);},[x,B]),E=react.useCallback(u=>{let C=u.relatedTarget;C&&u.currentTarget.contains(C)||b.current!==null&&(p.current=null,g(null),t.notifyRowDrag("leave",{rowKey:b.current}));},[t]);return {handlers:n?{draggable:d,setDraggable:m,onDragStart:G,onDragEnd:N,onDragOver:L,onDrop:_}:void 0,dropAt:n?w:null,bodyHandlers:n?{onDragOver:K,onDrop:h,onDragLeave:E}:void 0}}var is=400;function qr(t){return t.scrollWidth>t.clientWidth+1||t.scrollHeight>t.clientHeight+1}function Jr(t){return (t.textContent??"").trim()}function ls(t){let{def:e,node:n,value:o,clipped:l,note:i}=t;if(i)return i;if(e&&n){if(typeof e.tooltip=="function"){let d=e.tooltip({value:o,row:n.data,node:n,column:e});return d||null}if(typeof e.tooltip=="string")return e.tooltip||null;if(e.tooltipField){let d=n.data[e.tooltipField];return d==null||d===""?null:String(d)}}return l&&l.length>0?l:null}function Ko({rootRef:t,columnModel:e,getRowNode:n,getNote:o,config:l}){let i=l?.enabled!==false,d=l?.delay??is,m=l?.showOnTruncation!==false,[w,g]=react.useState(null),p=react.useRef({columnModel:e,getRowNode:n,getNote:o,showOnTruncation:m,delay:d});return p.current={columnModel:e,getRowNode:n,getNote:o,showOnTruncation:m,delay:d},react.useEffect(()=>{if(!i){g(null);return}let f=t.current;if(!f)return;let y=null,b=null,v=()=>{y!==null&&(clearTimeout(y),y=null),b=null,g(null);},D=(x,L)=>{let{columnModel:B,getRowNode:_,getNote:K,showOnTruncation:h}=p.current,E=B.getDef(L),I=x.closest("[data-row-key]")?.dataset.rowKey,u=I===void 0?void 0:_(I);return ls({def:E,node:u,value:u?B.getCellValue(u.data,L):void 0,clipped:h&&qr(x)?Jr(x):null,note:u&&K?K(u.key,L,u.data):null})},P=(x,L)=>{let B=p.current.columnModel.getDef(x);if(B?.headerTooltip)return B.headerTooltip;if(!p.current.showOnTruncation)return null;let _=L.querySelector(".kanuni-datagrid-header-label")??L;if(!qr(_))return null;let K=Jr(_);return K.length>0?K:null},G=x=>{let B=x.target?.closest("[data-column-id]")??null;if(B===b||(v(),!B||!f.contains(B)))return;let _=B.dataset.columnId;if(!_)return;let K=B.classList.contains("kanuni-datagrid-header-cell");!K&&!B.closest("[data-row-key]")||(b=B,y=setTimeout(()=>{if(y=null,b!==B||!B.isConnected)return;let h=K?P(_,B):D(B,_);if(!h)return;let E=B.getBoundingClientRect();g({text:h,anchor:{top:E.top,left:E.left,width:E.width,height:E.height}});},p.current.delay));},N=x=>{let L=x.relatedTarget;b&&L&&b.contains(L)||v();};return f.addEventListener("mouseover",G),f.addEventListener("mouseout",N),f.addEventListener("mousedown",v),f.addEventListener("keydown",v),f.addEventListener("scroll",v,true),window.addEventListener("blur",v),()=>{v(),f.removeEventListener("mouseover",G),f.removeEventListener("mouseout",N),f.removeEventListener("mousedown",v),f.removeEventListener("keydown",v),f.removeEventListener("scroll",v,true),window.removeEventListener("blur",v);}},[i,t]),i?w:null}var jr=6,Pt=8;function _o({state:t,dark:e}){let[n,o]=react.useState(null),[l,i]=react.useState(null),{text:d,anchor:m}=t;return react.useLayoutEffect(()=>{if(!n)return;let{width:w,height:g}=n.getBoundingClientRect(),p=document.documentElement.clientWidth,f=document.documentElement.clientHeight,y=m.top+m.height+jr,b=m.top-g-jr,D=y+g+Pt<=f||b<Pt?y:b,P=Math.min(Math.max(Pt,m.left),Math.max(Pt,p-w-Pt));i({top:Math.min(D,f-g-Pt),left:P});},[n,d,m]),jsxRuntime.jsx($e,{dark:e,children:jsxRuntime.jsx("div",{ref:o,className:"kanuni-datagrid-tooltip",role:"tooltip",style:l?{top:l.top,left:l.left}:{top:0,left:0,visibility:"hidden"},children:d})})}function Tn(t){return {sortAsc:t.sortAsc,sortDesc:t.sortDesc,clearSort:t.clearSort,groupBy:t.groupByColumn,ungroup:t.ungroupColumn,showGroupPanel:t.showGroupPanel,hideGroupPanel:t.hideGroupPanel,showFooter:t.showFooter,hideFooter:t.hideFooter,showGroupFooters:t.showGroupFooters,hideGroupFooters:t.hideGroupFooters,hideColumn:t.hideColumn,fieldChooser:t.fieldChooser,bestFit:t.bestFit,bestFitAll:t.bestFitAll,fixedPosition:t.fixedPosition,pinLeft:t.pinLeft,pinRight:t.pinRight,pinSticky:t.pinSticky,unpin:t.unpin,moveLeft:t.moveLeft,moveRight:t.moveRight}}var ea=Tn(datagridCore.getGridDictionary("en"));function $o(t,e){let n={...ea,...e.labels},{controller:o,maxGroupLevels:l}=e,i=t.columnId,d=o.getColumnModel().getDef(i),m=o.getSort(),w=m.find(N=>N.columnId===i),g=o.getGroupLevels(),p=g.includes(i),f=d?.sortable!==false,y=o.getColumnStates().find(N=>N.id===i)?.pinned??null,b=d?.groupable!==false,v=[{id:"sort-asc",label:n.sortAsc,disabled:!f||w?.direction==="asc",onSelect:()=>o.setSort([{columnId:i,direction:"asc"}])},{id:"sort-desc",label:n.sortDesc,disabled:!f||w?.direction==="desc",onSelect:()=>o.setSort([{columnId:i,direction:"desc"}])},{id:"sort-clear",label:n.clearSort,disabled:!w,onSelect:()=>o.setSort(m.filter(N=>N.columnId!==i))},{id:"sep-1",separator:true},{id:"group",label:p?n.ungroup:n.groupBy,disabled:!b,onSelect:()=>{p?o.groupBy(g.filter(N=>N!==i)):o.groupBy([...g,i].slice(-l));}},{id:"group-panel",label:e.groupPanelVisible?n.hideGroupPanel:n.showGroupPanel,onSelect:e.onToggleGroupPanel}];e.groupFootersAvailable&&v.push({id:"group-footers",label:e.groupFootersVisible?n.hideGroupFooters:n.showGroupFooters,onSelect:e.onToggleGroupFooters}),v.push({id:"footer",label:e.footerVisible?n.hideFooter:n.showFooter,onSelect:e.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:n.hideColumn,disabled:o.getColumnStates().filter(N=>N.visible).length<=1,onSelect:()=>o.setColumnVisible(i,false)},{id:"field-chooser",label:n.fieldChooser,onSelect:e.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:n.bestFit,disabled:d?.resizable===false,onSelect:()=>e.onBestFit(i)},{id:"best-fit-all",label:n.bestFitAll,onSelect:e.onBestFitAll});let D=o.getColumnStates().filter(N=>N.visible&&N.pinned===y).map(N=>N.id),P=D.indexOf(i),G=d?.reorderable!==false&&P>=0;return v.push({id:"sep-4",separator:true},{id:"move-left",label:n.moveLeft,disabled:!G||P<=0,onSelect:()=>o.moveColumn(i,D[P-1])},{id:"move-right",label:n.moveRight,disabled:!G||P<0||P>=D.length-1,onSelect:()=>o.moveColumn(i,D[P+2])},{id:"fixed-position",label:n.fixedPosition,items:[{id:"pin-left",label:n.pinLeft,disabled:y==="left",onSelect:()=>o.setColumnPinned(i,"left")},{id:"pin-right",label:n.pinRight,disabled:y==="right",onSelect:()=>o.setColumnPinned(i,"right")},{id:"pin-sticky",label:n.pinSticky,disabled:y==="sticky",onSelect:()=>o.setColumnPinned(i,"sticky")}]},{id:"unpin",label:n.unpin,disabled:y===null,onSelect:()=>o.setColumnPinned(i,null)}),v}var qt=typeof window<"u"?react.useLayoutEffect:react.useEffect,ra=1e8,vn=null;function ia(){if(vn!==null)return vn;if(typeof document>"u"||!document.body)return null;let t=document.createElement("div");t.setAttribute("aria-hidden","true"),t.style.cssText="position:fixed;top:0;left:-9999px;width:80px;height:80px;overflow:auto;visibility:hidden;pointer-events:none;";let e=document.createElement("div");e.style.cssText="width:1px;",e.style.height=`${ra}px`,t.appendChild(e),document.body.appendChild(t),t.scrollTop=ra;let n=t.scrollTop;return Yo=e.offsetHeight>0?e.offsetHeight:null,t.remove(),n>0&&(vn=n),vn}var Yo=null;function Ts(){return Yo===null&&ia(),Yo}function Vo(t){return Math.abs(t)}function aa(t,e){return getComputedStyle(e).direction==="rtl"?-t:t}function Xo(t,e){if(e)return t;if(t.dataSource!=null&&!Array.isArray(t.dataSource))throw new Error("[datagrid] a server-side DataSource is an Enterprise feature. Pass an array to DataGrid, or import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise.");if(t.columns?.some(d=>d.spanRows)){t.debugMode&&console.warn("[datagrid] cell span/merge (spanRows) is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let d={...t,columns:t.columns.map(m=>m.spanRows?{...m,spanRows:void 0}:m)};return Xo(d,e)}if(t.tree){t.debugMode&&console.warn("[datagrid] tree data is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let d={...t};return delete d.tree,Xo(d,e)}if(!t.grouping)return t.masterDetail?Uo(t):t;let{groupBy:n,groupSummaries:o}=t.grouping,l=n==null?[]:typeof n=="string"?[n]:n;if(l.length<=1&&!o)return t.masterDetail?Uo(t):t;t.debugMode&&console.warn("[datagrid] multi-level grouping and group summaries are Enterprise features \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use them.");let i={...t,grouping:{...t.grouping,groupBy:l.slice(0,1),groupSummaries:false}};return t.masterDetail?Uo(i):i}function Uo(t){t.debugMode&&console.warn("[datagrid] master-detail is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let e={...t};return delete e.masterDetail,e}function vs(t){return jsxRuntime.jsx(Xn,{locale:t.locale,messages:t.messages,children:jsxRuntime.jsx(ho,{theme:t.theme,density:t.density,palette:t.palette,children:jsxRuntime.jsx(Ds,{...t})})})}function Ds(t){let e=Q(),{className:n,style:o,dark:l=false,theme:i,palette:d,striped:m=true,emptyText:w,sortable:g=true,filterRow:p=false,headerFilter:f=false,filterIconMode:y="hover",columnReorder:b=true,columnResize:v=true,loadingOverlay:D=true,announcements:P=true,groupPanel:G=false,showRowCount:N=false,toolbar:x=false,toolbarExcel:L=false,toolbarPdf:B=false,filterPanel:_=false,filterPanelLabels:K,onOpenFilterBuilder:h,toolbarItemsBefore:E,toolbarItemsAfter:I,renderRow:u,stateStoring:C,headerMenu:H=true,focusedRow:Y=false,focusedRowKey:ne,onFocusedRowChanged:se,footer:Je,footerMenu:fe=true,onRowClick:pe,onRowActivate:he,onReady:ke,renderCellContent:xe,getCellClassName:Ge,renderOverlay:Ae,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:je,enterpriseEdition:te=false,renderDetail:Fe,renderEditForm:Be,density:ce,rowMenu:oe,cellMenu:s,autoColumns:T,rowDrag:M,tooltip:q,pinnedTopRows:S,pinnedBottomRows:re,footerPosition:V="bottom",autoSizeStrategy:de="none",highlightSearch:Te=true,...ie}=t,F=react.useMemo(()=>{let r=ie.columns;if(r&&r.length>0)return r;let c=ie.dataSource;if(!Array.isArray(c)||c.length===0)return r??[];let k=typeof T=="object"?T:void 0;return T===false?r??[]:datagridCore.inferColumns(c,k)},[ie.columns,ie.dataSource,T]),Ve={...ie,columns:F},et=datagridCore.isPackagedTheme(i)?datagridCore.THEME_ROW_HEIGHT[i][ce??"normal"]:ce?datagridCore.DENSITY_ROW_HEIGHT[ce]:datagridCore.DEFAULT_ROW_HEIGHT,Ue=Ve.rowHeight===void 0?{...Ve,rowHeight:et}:Ve,Se=te?Number.POSITIVE_INFINITY:1,Ee=Xo(Ue,te),{controller:a,rows:ze,window:yt,layout:ue,sort:tt,rowHeight:R,visibleCount:$}=Wn(Ee),z=Un(a,t.printLayout),J=z.active?{...yt,rows:{...yt.rows,start:0,end:ze.length,offsetY:0,totalHeight:0}}:yt,A=react.useMemo(()=>F.some(r=>r.autoHeight===true),[F]),be=f&&a.canListDistinctValues();f&&!be&&ie.debugMode&&console.warn("[datagrid] headerFilter needs a column's distinct values. This grid is remote and its DataSource does not implement `loadDistinctValues` \u2014 implement it, or use `filterRow`.");let Ke=react.useRef(null);qt(()=>{a.setEnterpriseEdition(te);},[a,te]),react.useEffect(()=>{ke?.(a);},[a,ke]),qt(()=>{let r=ia();r!==null&&r<datagridCore.DEFAULT_MAX_SCROLL_OFFSET&&a.setMaxScrollOffset(r);let c=Ts();c!==null&&a.setMaxCanvasHeight(c);},[a]),qt(()=>{let r=Ke.current;if(!r)return;let c=()=>{a.setViewportSize(r.clientWidth,r.clientHeight),r.style.setProperty("--dg-viewport-width",`${r.clientWidth}px`);let Z=r.querySelector(".kanuni-datagrid-rows"),W=r.querySelector(".kanuni-datagrid-canvas");if(Z&&W){let U=Z.getBoundingClientRect(),ae=W.getBoundingClientRect();a.setChromeOffsets(U.top-ae.top,ae.bottom-U.bottom);}datagridCore.calibrateMaxScrollOffset(r,a);};if(c(),typeof ResizeObserver>"u")return;let k=new ResizeObserver(c);k.observe(r);let O=r.querySelector(".kanuni-datagrid-canvas");return O&&k.observe(O),()=>k.disconnect()},[a]),qt(()=>{if(!A)return;let r=Ke.current?.querySelector(".kanuni-datagrid-viewport");if(!r)return;let c=a.getVirtualWindow(),k=a.getRows(),O=new Map(a.getMeasuredRowHeights()),Z=false;for(let W=c.rows.start;W<c.rows.end;W++){let U=k[W];if(!U||U.kind!=="data")continue;let ae=r.querySelector(`[data-row-key="${CSS.escape(String(U.key))}"]`);if(!ae)continue;let le=ae.getBoundingClientRect().height;le>0&&O.get(U.key)!==le&&(O.set(U.key,le),Z=true);}Z&&a.setMeasuredRowHeights(O);}),react.useEffect(()=>{if(A)return a.events.on("columnStateChanged",()=>{a.clearMeasuredRowHeights();})},[a,A]),react.useEffect(()=>a.events.on("scrollRequested",r=>{let c=Ke.current;if(!c)return;r.scrollTop!==void 0&&(c.scrollTop=r.scrollTop),r.scrollLeft!==void 0&&(c.scrollLeft=aa(r.scrollLeft,c)),a.setScroll(c.scrollTop,Vo(c.scrollLeft));let k=r.scrollTop;k===void 0||Math.abs(c.scrollTop-k)<=1||setTimeout(()=>{let O=Ke.current;!O||Math.abs(O.scrollTop-k)<=1||(O.scrollTop=k,a.setScroll(O.scrollTop,Vo(O.scrollLeft)));},0);}),[a]);let Jo=Yn(a,t.alignedGrids,Ke),da=react.useCallback(r=>{let c=r.currentTarget;a.setScroll(c.scrollTop,Vo(c.scrollLeft)),Jo.syncScroll(c.scrollLeft);},[a,Jo]),ua=react.useCallback((r,c)=>a.toggleSort(r,c),[a]);Oo(a,C);let Rt=Bo(a,M);react.useEffect(()=>{ne!=null&&a.getFocusedRowKey()!==ne&&a.focusRow(ne);},[a,ne]),react.useEffect(()=>{if(se)return a.events.on("focusedRowChanged",r=>se({rowKey:r.rowKey,row:r.row}))},[a,se]);let Qe=react.useRef(null),[Gn,ca]=react.useState(null);react.useEffect(()=>a.events.on("overlayChanged",r=>{ca(r.manual?r.overlay:null);}),[a]);let pa=react.useCallback(r=>{let c=a.getDataRowNode(r);if(c)return c;if(r==="")return;let k=Number(r);return Number.isNaN(k)?void 0:a.getDataRowNode(k)},[a]),ye=te?t.notes:void 0;!te&&t.notes&&t.debugMode&&console.warn("[datagrid] cell notes are an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use them.");let Jt=!!ye?.onChange&&ye.menu!==false,Zt=react.useCallback((r,c,k)=>ye?ye.get({rowKey:r,columnId:c,row:k})??null:null,[ye]),Zo=Ko({rootRef:Qe,columnModel:a.getColumnModel(),getRowNode:pa,getNote:ye?Zt:void 0,config:q}),[ma,ga]=react.useState(0);react.useEffect(()=>{let r=new Set,c=[a.events.on("cellsFlashed",({rowKeys:k,columnIds:O,duration:Z})=>{let W=Qe.current;if(!W)return;let U=k.length?k.map(Re=>`[data-row-key="${CSS.escape(String(Re))}"]`).join(","):".kanuni-datagrid-row",ae=O.length?O.map(Re=>`[data-column-id="${CSS.escape(Re)}"]`).join(","):"[data-column-id]",le=[];W.querySelectorAll(U).forEach(Re=>{Re.querySelectorAll(ae).forEach(Dt=>le.push(Dt));});for(let Re of le)Re.classList.remove("kanuni-datagrid-cell--flash");W.offsetWidth;for(let Re of le)Re.classList.add("kanuni-datagrid-cell--flash");let Ye=setTimeout(()=>{for(let Re of le)Re.classList.remove("kanuni-datagrid-cell--flash");r.delete(Ye);},Z);r.add(Ye);}),a.events.on("cellsRefreshed",({revision:k})=>ga(k))];return ()=>{c.forEach(k=>k()),r.forEach(clearTimeout);}},[a]);let fa=react.useCallback((r,c)=>a.moveColumn(r,c),[a]),wa=react.useCallback((r,c,k)=>a.setColumnWidth(r,c,k??true),[a]),Sn=react.useCallback(r=>{if(!Qe.current)return;let c=kn(Qe.current,r);c!==null&&a.setColumnWidth(r,c);},[a]),En=react.useCallback(()=>{let r=Qe.current;if(r)for(let c of a.getColumnStates()){if(!c.visible)continue;let k=kn(r,c.id);k!==null&&a.setColumnWidth(c.id,k);}},[a]);react.useEffect(()=>{if(de!=="fitGrid")return;let r=()=>a.sizeColumnsToFit();return r(),a.events.on("gridSizeChanged",r)},[a,de]);let Nn=react.useRef(null);qt(()=>{if(de!=="fitCells"){Nn.current=null;return}Nn.current!==a&&Qe.current?.querySelector(".kanuni-datagrid-row .kanuni-datagrid-cell[data-column-id]")&&(Nn.current=a,En());});let[ha,jo]=react.useState({}),Qo=t.filterDebounce??(a.isRemote()?200:0),Mn=react.useRef(false),jt=react.useMemo(()=>datagridCore.datePeriodLabels(e),[e]),Pn=react.useRef(jt);Pn.current=jt;let ba=react.useMemo(()=>datagridCore.periodSuggestionList(jt),[jt]),Qt=react.useCallback((r,c)=>{let k=a.getColumnModel().getDataType(r);Mn.current=true;try{a.setColumnFilter(r,datagridCore.parseFilterInput(r,c,k,Pn.current),datagridCore.FILTER_PART_ROW);}finally{Mn.current=false;}},[a]),nt=react.useMemo(()=>datagridCore.createDebouncedCommit(Qo),[Qo]);react.useEffect(()=>()=>nt.cancelAll(),[nt]);let ya=react.useCallback((r,c)=>{jo(k=>({...k,[r]:c})),nt.schedule(r,()=>Qt(r,c));},[Qt,nt]),Ra=react.useCallback((r,c)=>{nt.cancel(r),Qt(r,c);},[Qt,nt]);react.useEffect(()=>a.events.on("filterChanged",()=>{if(Mn.current)return;let r=a.getColumnModel();jo(c=>uo(c,{isPending:k=>nt.isPending(k),textFor:k=>{let O=a.getColumnFilter(k,datagridCore.FILTER_PART_ROW);return O?datagridCore.filterInputFromNode(k,O,r.getDataType(k),Pn.current):""}},r.getOrder()));}),[a,nt]);let[me,lt]=react.useState(null),en=react.useRef(0),Ca=react.useCallback((r,c)=>{let k=c.getBoundingClientRect(),O=a.getColumnModel().getDef(r),Z={left:k.left,top:k.bottom+2},W=O?.headerName??r,U=a.getColumnFilter(r,datagridCore.FILTER_PART_SET)??a.getColumnFilter(r,datagridCore.FILTER_PART_DEFAULT);if(!a.isRemote()){let le=++en.current;lt({columnId:r,label:W,entries:[],selected:null,anchor:Z,loading:true}),a.getDistinctValueSetAsync(r).then(({entries:Ye,truncated:Re})=>{en.current===le&&lt(Dt=>Dt&&Dt.columnId===r?{...Dt,entries:Ye,truncated:Re,capped:Re,selected:datagridCore.selectedLabelsFromFilter(U,Ye),loading:false}:Dt);});return}let ae=++en.current;lt({columnId:r,label:W,entries:[],selected:null,anchor:Z,loading:true}),a.getDistinctValuesAsync(r).then(le=>{en.current===ae&&lt(Ye=>Ye&&Ye.columnId===r?{...Ye,entries:le,selected:datagridCore.selectedLabelsFromFilter(U,le),loading:false}:Ye);});},[a]),ka=react.useCallback(r=>{me&&(a.setColumnFilter(me.columnId,r,datagridCore.FILTER_PART_SET),lt(null));},[a,me]),xa=Object.keys(a.getColumnStates().reduce((r,c)=>(a.getColumnFilter(c.id)&&(r[c.id]=true),r),{})),tn=a.getSelectionMode(),ve=tn!=="none"&&(ie.selection?.checkboxColumn??false),er=(ie.selection?.rowClick??(ve?"toggle":"replace"))==="toggle",Ta=react.useCallback((r,c)=>{a.handleRowClick(r.key,{ctrlKey:c.ctrlKey||er&&!c.shiftKey,metaKey:c.metaKey,shiftKey:c.shiftKey});},[a,er]),va=react.useCallback((r,c)=>a.focusCell(r.key,c),[a]),Da=react.useCallback(r=>a.toggleRow(r.key),[a]),[Lt,tr]=react.useState(null),Ga=react.useCallback(()=>tr(null),[]),[It,Ln]=react.useState(null),nr=react.useCallback((r,c)=>{let O=(Qe.current?.querySelector(`[data-row-key="${CSS.escape(String(r))}"] [data-column-id="${CSS.escape(c)}"]`)??Qe.current)?.getBoundingClientRect();return {left:O?.left??0,top:(O?.bottom??0)+2}},[]),Sa=react.useCallback(r=>{let c=It;Ln(null),!(!c||!ye?.onChange)&&ye.onChange({rowKey:c.rowKey,columnId:c.columnId,row:c.row,text:r});},[It,ye]),or=react.useCallback((r,c)=>{if(!ye?.onChange||ye.menu===false)return [];let k=r.columnId;if(!k)return [];let O=a.getRowKey(r.row),Z=Zt(O,k,r.row),W=()=>Ln({rowKey:O,columnId:k,row:r.row,text:Z??"",anchor:nr(O,k)}),U=[];return c&&U.push({separator:true,id:"__note-sep"}),U.push({id:"__note-edit",label:Z?e.editNote:e.addNote,onSelect:W}),Z&&U.push({id:"__note-delete",label:e.deleteNote,onSelect:()=>ye.onChange?.({rowKey:O,columnId:k,row:r.row,text:null})}),U},[ye,a,Zt,nr,e]),[nn,In]=react.useState(null),rr=react.useRef({x:0,y:0}),ar=react.useCallback(r=>Po(a,e,s,r,c=>{In({message:c,...rr.current}),console.error("[datagrid] export failed:",c);}),[a,e,s]),on=react.useCallback((r,c,k,O,Z)=>{if(k.kind!=="data")return;let W={row:k.data,node:k,rowIndex:O,columnId:Z,selectedKeys:a.getSelectedKeys()},U=(typeof oe=="function"?oe(W):oe)??[],ae=or(W,U.length>0),le=[...U,...ae,...ar(U.length+ae.length>0)];le.length!==0&&(rr.current={x:r,y:c},In(null),tr({x:r,y:c,items:le,context:W}));},[oe,a,or,ar]),ir=react.useCallback(r=>r?.target?.closest("[data-column-id]")?.dataset.columnId??null,[]),Ct=react.useCallback((r,c,k,O,Z)=>{let W=O??-1;r&&a.notifyRow(r,k,W);let U=ir(Z);U!==null&&a.notifyCell(c,k,W,U);},[a,ir]),Ea=react.useCallback((r,c,k)=>{pe?.(r),Ct("rowClicked","cellClicked",r,c,k);},[pe,Ct]),Na=react.useCallback((r,c,k)=>{he?.(r),Ct("rowDoubleClicked","cellDoubleClicked",r,c,k);},[he,Ct]),Ma=react.useCallback((r,c,k)=>{if(Ct(null,"cellContextMenu",r,c,k),!oe&&!Jt&&s===false||r.kind!=="data")return;k.preventDefault(),a.isRowSelected(r.key)||a.handleRowClick(r.key,{});let O=k.target.closest("[data-column-id]")?.dataset.columnId??null;on(k.clientX,k.clientY,r,c,O);},[oe,Jt,s,a,on,Ct]),[Pa,La]=react.useState(null),[Ia,Ha]=react.useState(null),[Hn,Aa]=react.useState(()=>ie.grouping?.groupSummaries??false),[kt,An]=react.useState(null),[lr,On]=react.useState(null),Oa=react.useCallback(()=>{a.getSelectedCount()>0?a.clearSelection():a.selectAll();},[a]),Fa=$>0&&a.getSelectedCount()>=$?"all":a.getSelectedCount()>0?"some":"none",Ba=react.useCallback(r=>{let c=r.target;if(c.tagName==="INPUT"||c.tagName==="TEXTAREA"||c.isContentEditable)return;if((oe||Jt||s!==false)&&(r.key==="ContextMenu"||r.key==="F10"&&r.shiftKey)){let Z=a.getFocus(),W=Z?ze.findIndex(ae=>ae.key===Z.rowKey):-1,U=W>=0?ze[W]:void 0;if(U){let le=Ke.current?.querySelector(`[data-row-key="${CSS.escape(String(U.key))}"]`)?.getBoundingClientRect();on(le?le.left+16:0,le?le.bottom:0,U,W,Z?.columnId??null),r.preventDefault();}return}let k=datagridCore.resolveGridCommand({key:r.key,ctrlKey:r.ctrlKey,metaKey:r.metaKey,shiftKey:r.shiftKey,altKey:r.altKey});if(!k)return;if(k.type==="copy"){Nt(a);return}if(k.type==="activate"){let Z=a.getFocus(),W=Z?ze.find(U=>U.key===Z.rowKey):void 0;W&&he?.(W),k.preventDefault&&r.preventDefault();return}a.executeCommand(k),k.preventDefault&&r.preventDefault();let O=a.getFocusIndices();if(O&&Ke.current){let W=a.getColumnLayout().center.findIndex(ae=>ae.state.id===a.getFocus()?.columnId),U=a.ensureVisible(O.rowIndex,W===-1?void 0:W);if(U){let ae=Ke.current;U.scrollTop!==void 0&&(ae.scrollTop=U.scrollTop),U.scrollLeft!==void 0&&(ae.scrollLeft=aa(U.scrollLeft,ae)),a.setScroll(ae.scrollTop,ae.scrollLeft);}}},[a,ze,he,oe,Jt,s,on]),xt=react.useMemo(()=>datagridCore.bandDepth([...ue.left,...ue.center,...ue.right]),[ue]),Ht=St,Fn=(p?2:1)+xt,sr=S?.length??0,Ka=re?.length??0,Bn=Fn+sr,rn=Pa??ie.grouping?.panel??G,_a=a.getGroupLevels(),$a=react.useCallback(r=>a.groupBy(r.slice(0,Se)),[a,Se]),Wa=react.useCallback(r=>a.toggleGroup(r),[a]),Va=react.useCallback(r=>a.toggleGroupSelection(r),[a]),Ua=a.getColumnModel().runtime().filter(r=>r.state.visible&&r.def.groupable!==false),Ne=a.hasMasterDetail()&&!!Fe,ge=t.rowNumbers??false,za=ge&&a.isPaginated()?a.getPage()*a.getPageSize():0;react.useEffect(()=>{a.setLeadWidth(to(ve,Ne,ge));},[a,ve,Ne,ge]);let Ya=react.useCallback(r=>a.toggleDetail(r),[a]),Xa=react.useCallback(r=>a.toggleTreeRow(r),[a]),dr=a.getSummaryDefs(),qa=a.getSummaries(),Tt=Ia??Je??dr.length>0,an=Tt&&V==="top",ur=p?2:1,Ja=Ee.grouping?.groupSummaries&&Hn?ie.summaries:void 0,Za=a.getGroupDisplay(),cr=react.useCallback(()=>{Aa(r=>(a.setGroupSummaries(!r),!r));},[a]),ja=react.useCallback((r,c)=>{if(!fe)return;c.preventDefault();let k=a.getColumnModel().getDef(r),O=a.getColumnSummary(r),Z={columnId:r,headerName:k?.headerName??k?.field??r},W=[{id:"none",label:e.noTotal,disabled:O===null,onSelect:()=>a.setColumnSummary(r,null)},{id:"sep",separator:true},...datagridCore.allowedSummaryTypes(k?.dataType).map(U=>({id:U,label:datagridCore.summaryTypeLabels(e)[U],disabled:O?.type===U,onSelect:()=>a.setColumnSummary(r,U)}))];An({x:c.clientX,y:c.clientY,items:W,context:Z});},[a,fe]),Qa=react.useCallback((r,c)=>{if(H===false)return;c.preventDefault();let k=a.getColumnModel().getDef(r),O={columnId:r,headerName:k?.headerName??k?.field??r},Z=$o(O,{controller:a,groupPanelVisible:rn,footerVisible:Tt,groupFootersAvailable:te,groupFootersVisible:Hn,onToggleGroupPanel:()=>La(!rn),onToggleFooter:()=>Ha(!Tt),onToggleGroupFooters:cr,onOpenFieldChooser:()=>On({left:c.clientX,top:c.clientY}),onBestFit:Sn,onBestFitAll:En,maxGroupLevels:Se,labels:Tn(e)}),W=typeof H=="function"?H(O,Z):Z;!W||W.length===0||An({x:c.clientX,y:c.clientY,items:W,context:O});},[H,a,rn,Tt,te,Hn,cr,Sn,En,Se,e]),vt=a.getFocus(),ei=vt?`${t.gridId}-cell-${String(vt.rowKey)}-${vt.columnId}`:void 0,Kn=a.getSelectedCount(),ti=react.useMemo(()=>{let r=[datagridCore.fillText(e.announceRows,{n:$})];if(tt.length>0){let c=tt.map(k=>{let O=a.getColumnModel().getDef(k.columnId),Z=String(O?.headerName??O?.field??k.columnId),W=k.direction==="desc"?e.announceDescending:e.announceAscending;return `${Z} ${W}`}).join(", ");r.push(datagridCore.fillText(e.announceSortedBy,{columns:c}));}return Kn>0&&r.push(datagridCore.fillText(e.announceSelected,{n:Kn})),r.join(", ")},[a,$,tt,Kn,e]),{centerColumns:st,centerIndices:_n,stickyInsets:At,leadingSpacer:dt,trailingSpacer:ut,rowStart:ni,rowEnd:pr}=Cr(ue,J),$n=a.getColumnModel(),ct=ni,oi=r=>{if(A)return;let c=a.getRowHeightAt(r);return c===R?void 0:c},ri=Array.from(ze.slice(ct,pr)),ai=react.useMemo(()=>!ge||a.getGroupLevels().length===0&&!a.hasMasterDetail()&&!a.hasTreePathRows()?null:kr(ze),[ge,a,ze]),ii=a.hasCellSpans(),mr=react.useRef({start:0,end:0});mr.current={start:ct,end:pr-1};let li=react.useCallback((r,c)=>{let k=a.getCellSpans(c);if(k.length===0)return null;let{start:O,end:Z}=mr.current,W=datagridCore.spanRoleAt(k,r,O,Z);if(!W)return null;if(W.role==="covered")return {kind:"covered"};let U=a.getRowOffset(W.drawStart);return {kind:"draw",height:a.getRowOffset(W.drawEnd)+a.getRowHeightAt(W.drawEnd)-U,offset:0}},[a]),si=Te?datagridCore.normalizeSearch(a.getSearchText()):"",di={pathOf:r=>datagridCore.bandPath(a.getColumnModel().getDef(r)),collapsible:r=>a.isBandCollapsible(r),collapsed:r=>a.isBandCollapsed(r),onToggle:r=>a.toggleBand(r),labels:{expand:e.expandDetails,collapse:e.collapseDetails}},gr={layout:ue,centerColumns:st,leadingSpacer:dt,trailingSpacer:ut,defs:dr,values:qa,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,onPickSummary:fe?ja:void 0,emptyHint:fe?"\xB7":""};return jsxRuntime.jsxs("div",{className:`kanuni-datagrid-root${l?" kanuni-datagrid-dark":""}${z.active?" kanuni-datagrid-print":""}${datagridCore.themeClassName(i,ce,d)}${n?` ${n}`:""}`,style:{"--dg-row-height":`${R}px`,"--dg-grip-inset":ge?`${Gt}px`:"0px",...o},dir:datagridCore.isRtlLocale(t.locale)?"rtl":void 0,"data-grid-id":t.gridId,"data-theme":i,"data-palette":d,"data-auto-height":A?"":void 0,ref:Qe,children:[x&&jsxRuntime.jsx(vo,{controller:a,dark:l,columnChooser:t.toolbarColumnChooser??true,exportExcel:te&&L,exportPdf:te&&B,itemsBefore:E,itemsAfter:I,onOpenColumnChooser:r=>On(c=>c?null:r)}),rn&&jsxRuntime.jsx(To,{columns:Ua,levels:_a,onSetLevels:$a,maxLevels:Se,onExpandAll:()=>a.expandAllGroups(),onCollapseAll:()=>a.collapseAllGroups()}),jsxRuntime.jsx("div",{className:"kanuni-datagrid-scroller",ref:Ke,onScroll:da,onKeyDown:Ba,tabIndex:0,role:"grid","aria-rowcount":$+Fn+sr+Ka,"aria-colcount":ue.left.length+ue.center.length+ue.right.length+(ve?1:0)+(Ne?1:0)+(ge?1:0),"aria-multiselectable":tn==="multiple"||void 0,"aria-activedescendant":ei,"aria-label":t.gridId,children:jsxRuntime.jsxs("div",{className:"kanuni-datagrid-canvas",style:{width:(ue.totalWidth||0)+to(ve,Ne,ge)||"100%"},role:"rowgroup",children:[jsxRuntime.jsx(io,{layout:ue,centerColumns:st,leadingSpacer:dt,trailingSpacer:ut,depth:xt,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,rowHeight:Ht,bandFold:di}),jsxRuntime.jsx(so,{bandOffset:xt*Ht,stickyInsets:At,layout:ue,centerColumns:st,leadingSpacer:dt,trailingSpacer:ut,sort:tt,sortable:g,onSort:ua,headerFilter:be,filteredColumns:xa,onOpenFilter:Ca,filterIconMode:y,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,selectAllState:Fa,onToggleSelectAll:Oa,draggable:G,reorderable:b,onReorder:fa,resizable:v,onResize:wa,onAutoFit:Sn,onHeaderContextMenu:H===false?void 0:Qa}),p&&jsxRuntime.jsx(co,{bandOffset:xt*Ht,stickyInsets:At,layout:ue,centerColumns:st,leadingSpacer:dt,trailingSpacer:ut,values:ha,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,onChange:ya,onCommit:Ra,periodSuggestions:ba,periodListId:`${t.gridId}-filter-periods`}),an&&jsxRuntime.jsx(wn,{...gr,position:"top",bandOffset:xt*Ht,headerRowsBetween:ur}),S&&S.length>0&&jsxRuntime.jsx(hn,{gridId:t.gridId,side:"top",rows:S,layout:ue,columnModel:$n,centerColumns:st,centerIndices:_n,stickyInsets:At,leadingSpacer:dt,trailingSpacer:ut,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,rowHeight:R,bandOffset:xt*Ht,headerRowsBetween:ur+(an?1:0),ariaRowBase:Fn}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-rows",style:{position:"relative",height:J.rows.totalHeight},onDragOver:Rt.bodyHandlers?.onDragOver,onDrop:Rt.bodyHandlers?.onDrop,onDragLeave:Rt.bodyHandlers?.onDragLeave,children:[jsxRuntime.jsx("div",{className:"kanuni-datagrid-viewport",style:{transform:`translateY(${J.rows.offsetY}px)`},children:ri.map((r,c)=>r?jsxRuntime.jsx(Ft,{gridId:t.gridId,node:r,index:ct+c,layout:ue,columnModel:$n,centerColumns:st,centerIndices:_n,stickyInsets:At,leadingSpacer:dt,trailingSpacer:ut,striped:m,selected:a.isRowSelected(r.key),groupSelection:r.kind==="group"&&ve&&tn==="multiple"?a.getGroupSelectionState(String(r.key)):void 0,onToggleGroupSelect:Va,groupDisplay:Za,focusedColumnId:vt?.rowKey===r.key?vt.columnId:null,rowFocused:Y&&vt?.rowKey===r.key,rowDrag:Rt.handlers,dropSide:Rt.dropAt?.key===r.key?Rt.dropAt.side:null,renderRow:u,checkboxColumn:ve,rowNumberColumn:ge,getSpan:ii?li:void 0,getNote:ye?Zt:void 0,rowNumber:ge?xr(ct+c,ai,za):null,headerRowCount:Bn,onRowClick:Ea,onRowMouseDown:tn==="none"?void 0:Ta,onRowDoubleClick:Na,onToggleSelect:Da,onCellMouseDown:va,onRowContextMenu:Ma,onToggleGroup:Wa,onToggleTreeRow:Xa,revision:ma,searchNeedle:si,summaryDefs:Ja,detailColumn:Ne,detailExpanded:Ne&&a.isDetailExpanded(r.key),onToggleDetail:Ya,renderDetail:Fe,renderEditForm:Be,height:oi(ct+c),renderCellContent:xe,getCellClassName:Ge,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:je},String(r.key)):jsxRuntime.jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-row--loading",role:"row","aria-rowindex":ct+c+1+Bn,"aria-busy":"true",children:jsxRuntime.jsx("div",{className:"kanuni-datagrid-cell kanuni-datagrid-loading-cell",role:"gridcell","aria-colindex":1,children:jsxRuntime.jsx("span",{className:"kanuni-datagrid-loading-bar"})})},`__loading-${ct+c}`))}),Ae?.()]}),re&&re.length>0&&jsxRuntime.jsx(hn,{gridId:t.gridId,side:"bottom",rows:re,layout:ue,columnModel:$n,centerColumns:st,centerIndices:_n,stickyInsets:At,leadingSpacer:dt,trailingSpacer:ut,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,rowHeight:R,headerRowsBetween:Tt&&!an?1:0,ariaRowBase:Bn+$}),Tt&&!an&&jsxRuntime.jsx(wn,{...gr,position:"bottom"})]})}),(Gn==="noRows"||Gn===null&&$===0)&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-empty",children:w??e.noData}),_&&jsxRuntime.jsx(So,{controller:a,alwaysVisible:_==="always",onOpenBuilder:h,describeOptions:K}),D!==false&&jsxRuntime.jsx(Ao,{controller:a,delay:typeof D=="number"?D:void 0,forced:Gn==="loading"}),a.isPaginated()&&jsxRuntime.jsx(Go,{page:a.getPage(),pageCount:a.getPageCount(),pageSize:a.getPageSize(),pageSizes:ie.pagination?.pageSizes,totalRows:$,onPage:r=>a.setPage(r),onNext:()=>a.nextPage(),onPrevious:()=>a.previousPage(),onPageSize:r=>a.setPageSize(r)}),P&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:ti}),It&&jsxRuntime.jsx(Io,{anchor:It.anchor,value:It.text,dark:l,onCommit:Sa,onCancel:()=>Ln(null)}),Lt&&jsxRuntime.jsx(Cn,{x:Lt.x,y:Lt.y,items:Lt.items,context:Lt.context,dark:l,onClose:Ga}),nn&&jsxRuntime.jsx($e,{dark:l,children:jsxRuntime.jsx("button",{type:"button",role:"alert",className:"kanuni-datagrid-toolbar-error kanuni-datagrid-menu-error",style:{left:nn.x,top:nn.y},onClick:()=>In(null),children:nn.message})}),kt&&jsxRuntime.jsx(Cn,{x:kt.x,y:kt.y,items:kt.items,context:kt.context,dark:l,label:`${kt.context.headerName} column`,onClose:()=>An(null)}),Zo&&jsxRuntime.jsx(_o,{state:Zo,dark:l}),lr&&jsxRuntime.jsx(Do,{controller:a,columns:a.getColumnStates(),anchor:lr,dark:l,onClose:()=>On(null)}),me&&jsxRuntime.jsx(ko,{gridId:t.gridId,columnId:me.columnId,headerLabel:me.label,entries:me.entries,initialSelected:me.selected,anchor:me.anchor,loading:me.loading,truncated:me.truncated,onSearch:me.capped&&!a.isRemote()?r=>{let{entries:c,truncated:k}=a.searchDistinctValues(me.columnId,r);lt(O=>O&&O.columnId===me.columnId?{...O,entries:c,truncated:k}:O);}:void 0,dark:l,onApply:ka,onClose:()=>lt(null)},`${me.columnId}:${me.loading?"loading":"ready"}`)]})}function Ss({defs:t,values:e,columnModel:n,rowCount:o,rowCountLabel:l}){let i=Q(),d=datagridCore.summaryTypeLabels(i);return t.length===0&&o===void 0?null:jsxRuntime.jsxs("div",{className:"kanuni-datagrid-summary-bar",role:"status","aria-label":i.summaryAria,children:[o!==void 0&&jsxRuntime.jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsxRuntime.jsx("strong",{children:o.toLocaleString()})," ",l??i.summaryRows]}),t.map(m=>{let w=e[datagridCore.summaryKey(m.columnId,m.type)],g=n.getDef(m.columnId),p=datagridCore.formatSummaryValue(m,w,g);return jsxRuntime.jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsxRuntime.jsxs("span",{className:"kanuni-datagrid-summary-label",children:[datagridCore.summaryLabel(m,d)," ",g?.headerName??m.columnId,":"]}),jsxRuntime.jsx("strong",{children:p})]},datagridCore.summaryKey(m.columnId,m.type))})]})}var Es=react.memo(Ss);function Ps(t,e){return qo(t,e,e?.source,(n,o)=>n.computeChartData(o))}function Ls(t,e){return qo(t,e,e?.source,(n,o)=>n.computeChartXYData(o))}function Is(t,e){return qo(t,e,e?.source,(n,o)=>n.computeChartBoxData(o))}function qo(t,e,n,o){let[l,i]=react.useState(null);return react.useEffect(()=>{if(!t||!e){i(null);return}let d=n??"view",m=false,w=0,g=false,p=false,f=null,y=()=>{let D=++w;o(t,e).then(P=>{!m&&D===w&&i(P);},()=>{});},b=(D=false)=>{p||=D,!g&&(g=true,queueMicrotask(()=>{if(g=false,m)return;let P=t.chartBasis(d);!p&&P===f||(p=false,f=P,y());}));};f=t.chartBasis(d),y();let v=[t.events.on("contentReady",()=>b()),t.events.on("rowsChanged",()=>b()),t.events.on("dataUpdated",()=>b()),...d==="selection"?[t.events.on("selectionChanged",()=>b(true))]:[]];return ()=>{m=true,w++,v.forEach(D=>D());}},[t,e]),l}Object.defineProperty(exports,"ClientRowModel",{enumerable:true,get:function(){return datagridCore.ClientRowModel}});Object.defineProperty(exports,"ColumnModel",{enumerable:true,get:function(){return datagridCore.ColumnModel}});Object.defineProperty(exports,"DEFAULT_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.DEFAULT_ROW_HEIGHT}});Object.defineProperty(exports,"DENSITY_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.DENSITY_ROW_HEIGHT}});Object.defineProperty(exports,"DataGridController",{enumerable:true,get:function(){return datagridCore.DataGridController}});Object.defineProperty(exports,"GRID_PALETTES",{enumerable:true,get:function(){return datagridCore.GRID_PALETTES}});Object.defineProperty(exports,"GRID_THEMES",{enumerable:true,get:function(){return datagridCore.GRID_THEMES}});Object.defineProperty(exports,"GridStateStore",{enumerable:true,get:function(){return datagridCore.GridStateStore}});Object.defineProperty(exports,"SUMMARY_TYPE_LABEL",{enumerable:true,get:function(){return datagridCore.SUMMARY_TYPE_LABEL}});Object.defineProperty(exports,"THEME_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.THEME_ROW_HEIGHT}});Object.defineProperty(exports,"VirtualWindowEngine",{enumerable:true,get:function(){return datagridCore.VirtualWindowEngine}});Object.defineProperty(exports,"allowedSummaryTypes",{enumerable:true,get:function(){return datagridCore.allowedSummaryTypes}});Object.defineProperty(exports,"andFilters",{enumerable:true,get:function(){return datagridCore.andFilters}});Object.defineProperty(exports,"attachStateStoring",{enumerable:true,get:function(){return datagridCore.attachStateStoring}});Object.defineProperty(exports,"bandDepth",{enumerable:true,get:function(){return datagridCore.bandDepth}});Object.defineProperty(exports,"bandPath",{enumerable:true,get:function(){return datagridCore.bandPath}});Object.defineProperty(exports,"computeColumnLayout",{enumerable:true,get:function(){return datagridCore.computeColumnLayout}});Object.defineProperty(exports,"computeHeaderBands",{enumerable:true,get:function(){return datagridCore.computeHeaderBands}});Object.defineProperty(exports,"createRestDataSource",{enumerable:true,get:function(){return datagridCore.createRestDataSource}});Object.defineProperty(exports,"describeFilter",{enumerable:true,get:function(){return datagridCore.describeFilter}});Object.defineProperty(exports,"downloadBlob",{enumerable:true,get:function(){return datagridCore.downloadBlob}});Object.defineProperty(exports,"fillText",{enumerable:true,get:function(){return datagridCore.fillText}});Object.defineProperty(exports,"filterInputFromNode",{enumerable:true,get:function(){return datagridCore.filterInputFromNode}});Object.defineProperty(exports,"formatSummaryValue",{enumerable:true,get:function(){return datagridCore.formatSummaryValue}});Object.defineProperty(exports,"humanizeField",{enumerable:true,get:function(){return datagridCore.humanizeField}});Object.defineProperty(exports,"importCsv",{enumerable:true,get:function(){return datagridCore.importCsv}});Object.defineProperty(exports,"inferColumns",{enumerable:true,get:function(){return datagridCore.inferColumns}});Object.defineProperty(exports,"isDataRow",{enumerable:true,get:function(){return datagridCore.isDataRow}});Object.defineProperty(exports,"isDataSource",{enumerable:true,get:function(){return datagridCore.isDataSource}});Object.defineProperty(exports,"isFilterGroup",{enumerable:true,get:function(){return datagridCore.isFilterGroup}});Object.defineProperty(exports,"isGroupRow",{enumerable:true,get:function(){return datagridCore.isGroupRow}});Object.defineProperty(exports,"isPackagedTheme",{enumerable:true,get:function(){return datagridCore.isPackagedTheme}});Object.defineProperty(exports,"lookupLabel",{enumerable:true,get:function(){return datagridCore.lookupLabel}});Object.defineProperty(exports,"moveRowInArray",{enumerable:true,get:function(){return datagridCore.moveRowInArray}});Object.defineProperty(exports,"parseCsv",{enumerable:true,get:function(){return datagridCore.parseCsv}});Object.defineProperty(exports,"parseFilterInput",{enumerable:true,get:function(){return datagridCore.parseFilterInput}});Object.defineProperty(exports,"sniffDelimiter",{enumerable:true,get:function(){return datagridCore.sniffDelimiter}});Object.defineProperty(exports,"summaryKey",{enumerable:true,get:function(){return datagridCore.summaryKey}});Object.defineProperty(exports,"summaryLabel",{enumerable:true,get:function(){return datagridCore.summaryLabel}});Object.defineProperty(exports,"summaryTypeLabels",{enumerable:true,get:function(){return datagridCore.summaryTypeLabels}});Object.defineProperty(exports,"themeClassName",{enumerable:true,get:function(){return datagridCore.themeClassName}});exports.BAND_ROW_HEIGHT=St;exports.DEFAULT_HEADER_MENU_LABELS=ea;exports.DataGrid=vs;exports.GridColumnChooser=Do;exports.GridContextMenu=Cn;exports.GridFilterPanel=So;exports.GridFilterRow=co;exports.GridFooterRow=wn;exports.GridGroupPanel=To;exports.GridHeader=so;exports.GridHeaderBands=io;exports.GridHeaderFilterPopup=ko;exports.GridLoadingOverlay=Ao;exports.GridNoteEditor=Io;exports.GridPager=Go;exports.GridPinnedRows=hn;exports.GridPopupPanel=ht;exports.GridPortal=$e;exports.GridRow=Ft;exports.GridSummaryBar=Es;exports.GridSurfaceProvider=ho;exports.GridTextProvider=Xn;exports.GridToolbar=vo;exports.GridTooltip=_o;exports.PRINT_MAX_ROWS=Vn;exports.ROW_DRAG_MIME=xn;exports.SHORTCUT_COPY=Kr;exports.SHORTCUT_CUT=Kl;exports.SHORTCUT_PASTE=_l;exports.buildCellMenuItems=Po;exports.buildHeaderMenu=$o;exports.copyToClipboard=Nt;exports.headerMenuLabels=Tn;exports.measureBestFitWidth=kn;exports.reconcileFilterInputs=uo;exports.runGridExport=Wt;exports.useAlignedGrids=Yn;exports.useAnchoredPopup=Kt;exports.useCellTooltip=Ko;exports.useDataGrid=Wn;exports.useGridChartBoxData=Is;exports.useGridChartData=Ps;exports.useGridChartXYData=Ls;exports.useGridSurfaceClass=bo;exports.useGridText=Q;exports.usePrintLayout=Un;exports.useRowDrag=Bo;exports.useStateStoring=Oo;exports.writeClipboardText=_r;
1
+ 'use strict';var react=require('react'),datagridCore=require('@kanunilabs/datagrid-core'),reactDom=require('react-dom'),jsxRuntime=require('react/jsx-runtime');var gi=["contentReady","viewportChanged","columnStateChanged","sortChanged","filterChanged","selectionChanged","focusChanged","summariesChanged"];function zn(t){let[e,n]=react.useState(()=>new datagridCore.DataGridController(t));react.useEffect(()=>{if(e.isDisposed()){n(new datagridCore.DataGridController(t));return}return ()=>e.dispose()},[e]);let o=react.useRef(0),l=react.useCallback(G=>{let N=()=>{o.current++,G();},x=gi.map(L=>e.events.on(L,N));return ()=>x.forEach(L=>L())},[e]),i=react.useCallback(()=>o.current,[]);react.useSyncExternalStore(l,i,i);let{dataSource:d,columns:g}=t,f=react.useRef(true);react.useEffect(()=>{if(f.current){f.current=false;return}Array.isArray(d)&&e.setData(d);},[e,d]);let m=react.useRef(true);react.useEffect(()=>{if(m.current){m.current=false;return}e.setColumns(g);},[e,g]);let c=t.pagination?t.pagination.enabled!==false:false;react.useEffect(()=>{e.setPaginationEnabled(c);},[e,c]);let h=t.rowHeight,R=react.useRef(true);react.useEffect(()=>{if(R.current){R.current=false;return}h!==void 0&&e.setRowHeight(h);},[e,h]);let b=t.selection?.mode??"none";react.useEffect(()=>{e.setSelectionMode(b);},[e,b]);let v=t.grouping?.groupBy??null,D=JSON.stringify(v==null?[]:typeof v=="string"?[v]:v),P=react.useRef(true);return react.useEffect(()=>{if(P.current){P.current=false;return}e.groupBy(JSON.parse(D));},[e,D]),{controller:e,rows:e.getRows(),window:e.getVirtualWindow(),layout:e.getColumnLayout(),sort:e.getSort(),rowHeight:e.getRowHeight(),visibleCount:e.getVisibleCount(),totalCount:e.getTotalCount()}}var cn=0,Un=5e3;function hi(t){if(t===void 0||t===false)return null;let e=t===true?{}:t;return {always:e.always??false,maxRows:e.maxRows??Un}}function wi(t,e){return t<=e}function Yn(t,e){let n=hi(e),o=n!==null,l=n?.always??false,i=n?.maxRows??Un,[d,g]=react.useState(false),f=react.useCallback(()=>g(true),[]),m=react.useCallback(()=>g(false),[]);react.useEffect(()=>{if(!o||l||typeof window>"u"||typeof window.addEventListener!="function")return;let h=()=>{let b=t.getRows().length;if(!wi(b,i)){t.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${b} rows exceeds maxRows (${i}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}reactDom.flushSync(()=>g(true));},R=()=>reactDom.flushSync(()=>g(false));return window.addEventListener("beforeprint",h),window.addEventListener("afterprint",R),()=>{window.removeEventListener("beforeprint",h),window.removeEventListener("afterprint",R);}},[o,l,i,t]);let c=l||d;return react.useEffect(()=>{if(!c||typeof document>"u")return;let h=document.documentElement;return cn++,h.classList.add("kanuni-datagrid-printing"),()=>{cn--,cn<=0&&(cn=0,h.classList.remove("kanuni-datagrid-printing"));}},[c]),{active:c,begin:f,end:m}}var pn=new Map,Xn=new Set;function vr(t,e){let n=pn.get(t);return n?[...n].filter(o=>o!==e):[]}function qn(t,e,n){let o=react.useRef(null);return react.useEffect(()=>{if(!e)return;let i={controller:t,scroller:()=>n.current};o.current=i;let d=pn.get(e)??new Set;d.add(i),pn.set(e,d);let g=t.events.on("columnStateChanged",()=>{if(Xn.has(e))return;let f=vr(e,i);if(f.length===0)return;let m=t.getColumnStates();Xn.add(e);try{for(let c of f)c.controller.applyColumnStates(m);}finally{Xn.delete(e);}});return ()=>{g(),d.delete(i),d.size===0&&pn.delete(e),o.current=null;}},[t,e,n]),{syncScroll:react.useCallback(i=>{let d=o.current;if(!e||!d)return;let g=vr(e,d);if(g.length!==0)for(let f of g){let m=f.scroller();m&&m.scrollLeft!==i&&(m.scrollLeft=i);}},[e])}}function mn(t,e,n){return t==="left"?e:t==="center"?n.left+e:n.left+n.center+e}function Dr(t,e){let{start:n,end:o}=e.columns,l=t.centerOffsets,i=l[n]??0,d=(l[o]??0)-i,g=Math.max(0,t.centerWidth-i-d),f=i,m=t.center.slice(n,o),c=Array.from({length:m.length},(b,v)=>n+v),h=t.stickyIndices.filter(b=>b<n);if(h.length>0){let b=h.map(v=>t.center[v]);f-=b.reduce((v,D)=>v+D.state.width,0),m=[...b,...m],c=[...h,...c];}let R=new Map;for(let b of t.stickyIndices){let v=t.centerStickyOffsets[b];v!==null&&R.set(t.center[b].state.id,v);}return {centerColumns:m,centerIndices:c,leadingSpacer:Math.max(0,f),trailingSpacer:g,rowStart:e.rows.start,rowEnd:e.rows.end,stickyInsets:R}}function Gr(t){let e=[];for(let n=0;n<t.length;n++){let o=t[n];o&&o.kind!=="data"&&e.push(n);}return e.length>0?e:null}function Sr(t,e,n=0){if(!e)return n+t+1;let o=0,l=e.length;for(;o<l;){let i=o+l>>1;e[i]<t?o=i+1:l=i;}return n+t-o+1}var Nr=react.createContext(datagridCore.getGridDictionary("en"));function Jn({locale:t,messages:e,children:n}){let o=react.useMemo(()=>datagridCore.getGridDictionary(t,e),[t,e]);return jsxRuntime.jsx(Nr.Provider,{value:o,children:n})}function ee(){return react.useContext(Nr)}var fn=36,hn=28,Et=60,Pi=[["rowNumberColumn",Et],["detailColumn",hn],["checkboxColumn",fn]];function oo(t,e,n=false){return Xe({checkboxColumn:t,detailColumn:e,rowNumberColumn:n}).total}function Xe(t){let e=new Map,n=new Map,o=0,l=0;for(let[i,d]of Pi)t[i]&&(e.set(i,o),n.set(i,++l),o+=d);return {total:o,count:l,inset:i=>e.get(i)??0,colIndex:i=>n.get(i)??1}}function jn(t){return t?t.kind==="draw"?" kanuni-datagrid-cell--span":" kanuni-datagrid-cell--span-covered":""}function eo(t,e,n){return t?t.kind==="covered"?e?n():null:jsxRuntime.jsx("div",{className:"kanuni-datagrid-span-box",style:{height:t.height},children:n()}):n()}function to(t,e){let n=t??(e==="number"?"right":"left");return n==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":n==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function gn(t,e){if(e===""||t==="")return t;let n=datagridCore.foldText(t),o=n.indexOf(e);if(o===-1)return t;let l=[],i=0,d=0;for(;o!==-1;)o>i&&l.push(t.slice(i,o)),l.push(jsxRuntime.jsx("mark",{className:"kanuni-datagrid-highlight",children:t.slice(o,o+e.length)},d++)),i=o+e.length,o=n.indexOf(e,i);return i<t.length&&l.push(t.slice(i)),l}function Li(t,e,n,o=""){if(t.renderCell)return t.renderCell({value:e,row:n.data,node:n,column:t});let l=datagridCore.lookupLabel(t,e);if(l!==null)return gn(l,o);if(t.valueFormatter){let i=t.valueFormatter(e,n.data);return typeof i=="string"?gn(i,o):i}return t.dateFormat&&t.dataType==="date"?gn(datagridCore.formatDateValue(e,t.dateFormat),o):e==null?"":gn(String(e),o)}function Ii({gridId:t,node:e,index:n,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:g,leadingSpacer:f,trailingSpacer:m,striped:c,selected:h,groupSelection:R,onToggleGroupSelect:b,groupDisplay:v="fullWidth",focusedColumnId:D,rowFocused:P=false,renderRow:G,checkboxColumn:N,rowNumberColumn:x=false,rowNumber:L=null,getNote:B,getSpan:_,headerRowCount:K,onRowClick:w,onRowMouseDown:E,onRowDoubleClick:I,onToggleSelect:u,onCellMouseDown:C,onRowContextMenu:H,searchNeedle:Y="",onToggleGroup:ne,summaryDefs:de,detailColumn:Je=false,detailExpanded:fe=false,onToggleDetail:pe,onToggleTreeRow:be,renderDetail:Te,renderEditForm:ye,renderCellContent:ve,getCellClassName:Ae,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:Qe,rowDrag:te,dropSide:Fe=null,height:Be}){let ce=ee();if(datagridCore.isDetailRow(e))return jsxRuntime.jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-detail-row",role:"row","aria-rowindex":n+1+K,"data-row-key":String(e.key),"data-detail-for":String(e.parentKey),style:{height:e.height},children:jsxRuntime.jsx("div",{className:"kanuni-datagrid-detail-cell",role:"gridcell","aria-colindex":1,children:Te?.(e.data)})});if(datagridCore.isEditFormRow(e))return jsxRuntime.jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-editform-row",role:"row","aria-rowindex":n+1+K,"data-row-key":String(e.key),"data-editform-for":e.parentKey===null?"":String(e.parentKey),style:{height:e.height},children:jsxRuntime.jsx("div",{className:"kanuni-datagrid-editform-cell",role:"gridcell","aria-colindex":1,children:e.parentKey===null?null:ye?.(e.parentKey,e.data)})});if(datagridCore.isFillerRow(e))return null;if(datagridCore.isGroupRow(e)&&v!=="aligned"){let y=l.getDef(e.columnId),$=y?.headerName??e.columnId,U=datagridCore.lookupLabel(y,e.value)??e.display??(e.label===""?ce.filterBlank:e.label),J=e.aggregates??null;return jsxRuntime.jsx("div",{className:`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${e.level}${D?" kanuni-datagrid-group-row--focused":""}`,role:"row","aria-rowindex":n+1+K,"aria-expanded":e.expanded,"aria-level":e.level+1,"data-row-key":String(e.key),"data-group-key":String(e.key),"data-group-level":e.level,onClick:()=>ne?.(String(e.key)),children:jsxRuntime.jsxs("div",{className:"kanuni-datagrid-group-cell",role:"gridcell","aria-colindex":1,id:`${t}-cell-${String(e.key)}-__group`,style:e.level>0?{paddingLeft:8+e.level*18}:void 0,children:[R&&jsxRuntime.jsx("input",{type:"checkbox",className:"kanuni-datagrid-group-checkbox",tabIndex:-1,checked:R==="all",ref:O=>{O&&(O.indeterminate=R==="some");},"aria-label":datagridCore.fillText(ce.selectGroupAria,{count:String(e.count),group:U}),onChange:()=>b?.(String(e.key)),onClick:O=>O.stopPropagation(),onMouseDown:O=>O.stopPropagation()}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:e.expanded?"\u25BE":"\u25B8"}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-caption",children:[$,":"]}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-label",children:U}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",e.count,")"]}),J&&de?.map(O=>jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-aggregate",children:[jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-aggregate-label",children:[datagridCore.summaryLabel(O)," ",l.getDef(O.columnId)?.headerName??O.columnId,":"]})," ",datagridCore.formatSummaryValue(O,J[datagridCore.summaryKey(O.columnId,O.type)],l.getDef(O.columnId))]},datagridCore.summaryKey(O.columnId,O.type)))]})})}let oe=[],s=Xe({rowNumberColumn:x,detailColumn:Je,checkboxColumn:N}),T=s.count,M=(y,$)=>({node:e,columnId:y,rowIndex:n,columnIndex:$,value:V?void 0:l.getCellValue(e.data,y)}),q=(y,$)=>{let U=()=>M(y,$);return {role:"gridcell",id:`${t}-cell-${String(e.key)}-${y}`,"aria-colindex":T+$+1,"data-column-id":y,onMouseDown:J=>{C?.(e,y),Oe?.(U(),J);},onMouseEnter:Ze?J=>Ze(U(),J):void 0,onDoubleClick:Qe?()=>Qe(U()):void 0}},S=e.kind==="data"||e.kind==="treePath"?e.tree:void 0,re=e.kind==="treePath",V=datagridCore.isGroupRow(e)?e:null,ue=re||V!==null,De=V?(o.left[0]??o.center[0]??o.right[0])?.state.id??null:null,ie=()=>{let y=V,$=l.getDef(y.columnId),U=datagridCore.lookupLabel($,y.value)??y.display??(y.label===""?ce.filterBlank:y.label);return jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-inline",style:{paddingInlineStart:y.level*16},children:[jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:y.expanded?"\u25BE":"\u25B8"}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-caption",children:[$?.headerName??y.columnId,":"]}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-label",children:U}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",y.count,")"]})]})},F=(y,$)=>{let U=V.aggregates?de?.find(J=>J.columnId===$):void 0;return U?jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-aggregate-value",children:datagridCore.formatSummaryValue(U,V.aggregates[datagridCore.summaryKey($,U.type)],y)}):null},Ve=S?(o.left[0]??o.center[0]??o.right[0])?.state.id??null:null,et=(y,$,U)=>{if(V)return $===De?ie():F(y,$);if(ve&&!re){let O=ve(M($,U));if(O!==void 0)return O}let J=re?$===Ve?jsxRuntime.jsx("span",{className:"kanuni-datagrid-tree-path-label",children:e.label}):null:Li(y,l.getCellValue(e.data,$),e,Y);return S&&$===Ve?jsxRuntime.jsxs("span",{className:S.ancestorOnly?"kanuni-datagrid-tree-cell kanuni-datagrid-tree-cell--ancestor":"kanuni-datagrid-tree-cell",style:{paddingInlineStart:S.depth*16},children:[S.hasChildren?jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-tree-toggle","data-tree-toggle":"","aria-expanded":S.expanded,"aria-label":S.expanded?ce.collapseDetails:ce.expandDetails,onClick:O=>{O.stopPropagation(),be?.(e.key);},children:S.expanded?"\u25BE":"\u25B8"}):jsxRuntime.jsx("span",{className:"kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf"}),J]}):J},ze=(y,$)=>{if(!Ae||V)return "";let U=Ae(M(y,$));return U?` ${U}`:""},Ee=y=>!B||e.kind!=="data"?"":B(e.key,y,e.data)?" kanuni-datagrid-cell--noted":"",Ne=y=>_&&e.kind==="data"?_(n,y):null,a=(y,$)=>{let U=y.autoHeight?" kanuni-datagrid-cell--wrap":"";return !y.cellClassName||ue?U:U+Ue(y,$)},Ue=(y,$)=>{let U=y.cellClassName;if(!U)return "";if(typeof U=="string")return ` ${U}`;let J=e.data,O=U({value:l.getCellValue(J,$),row:J,node:e,column:y});return O?` ${O}`:""};if(x){let y=e.kind==="data"&&L!==null;oe.push(jsxRuntime.jsx("div",{role:"gridcell","aria-colindex":s.colIndex("rowNumberColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell",style:{width:Et,insetInlineStart:s.inset("rowNumberColumn")},children:y?L:""},"__rownum"));}Je&&oe.push(jsxRuntime.jsx("div",{role:"gridcell","aria-colindex":s.colIndex("detailColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell",style:{width:hn,insetInlineStart:s.inset("detailColumn")},children:ue?null:jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-detail-toggle",tabIndex:-1,"aria-expanded":fe,"aria-label":fe?ce.collapseDetails:ce.expandDetails,onClick:y=>{y.stopPropagation(),pe?.(e.key);},children:fe?"\u25BE":"\u25B8"})},"__detail")),N&&oe.push(jsxRuntime.jsx("div",{role:"gridcell","aria-colindex":s.colIndex("checkboxColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell",style:{width:fn,insetInlineStart:s.inset("checkboxColumn")},onMouseDown:y=>y.stopPropagation(),onClick:y=>{y.target.tagName!=="INPUT"&&(y.stopPropagation(),u?.(e));},children:V?R&&jsxRuntime.jsx("input",{type:"checkbox",className:"kanuni-datagrid-group-checkbox",tabIndex:-1,checked:R==="all",ref:y=>{y&&(y.indeterminate=R==="some");},"aria-label":datagridCore.fillText(ce.selectGroupAria,{count:String(V.count),group:V.display??V.label}),onChange:()=>b?.(String(V.key)),onClick:y=>y.stopPropagation(),onMouseDown:y=>y.stopPropagation()}):re?null:jsxRuntime.jsx("input",{type:"checkbox",checked:h,tabIndex:-1,"aria-label":datagridCore.fillText(ce.selectRowAria,{row:String(e.key)}),onChange:()=>u?.(e),onClick:y=>y.stopPropagation(),onMouseDown:y=>y.stopPropagation()})},"__select"));let Rt=s.total,le=y=>D===y?" kanuni-datagrid-cell--focused":"",tt={left:o.left.length,center:o.center.length};return o.left.forEach((y,$)=>{let U=y.def,J=$===o.left.length-1,O=y.state.id,Re=mn("left",$,tt);oe.push(jsxRuntime.jsx("div",{...q(O,Re),className:`${to(U.align,U.dataType)} kanuni-datagrid-cell--pinned${J?" kanuni-datagrid-pin-edge-left":""}${le(O)}${a(U,O)}${ze(O,Re)}${Ee(O)}${jn(Ne(O))}`,style:{width:y.state.width,insetInlineStart:o.leftOffsets[$]+Rt},children:eo(Ne(O),D===O,()=>et(U,O,Re))},O));}),f>0&&oe.push(jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:f}},"__lead")),i.forEach((y,$)=>{let U=y.def,J=y.state.id,O=mn("center",d?.[$]??$,tt),Re=g?.get(J),Ke=Re===void 0?"":" kanuni-datagrid-cell--pinned kanuni-datagrid-cell--sticky";oe.push(jsxRuntime.jsx("div",{...q(J,O),className:`${to(U.align,U.dataType)}${Ke}${le(J)}${a(U,J)}${ze(J,O)}${Ee(J)}${jn(Ne(J))}`,style:Re===void 0?{width:y.state.width}:{width:y.state.width,insetInlineStart:Re+Rt},children:eo(Ne(J),D===J,()=>et(U,J,O))},J));}),m>0&&oe.push(jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:m}},"__trail")),o.right.forEach((y,$)=>{let U=y.def,J=$===0,O=y.state.id,Re=mn("right",$,tt);oe.push(jsxRuntime.jsx("div",{...q(O,Re),className:`${to(U.align,U.dataType)} kanuni-datagrid-cell--pinned${J?" kanuni-datagrid-pin-edge-right":""}${le(O)}${a(U,O)}${ze(O,Re)}${Ee(O)}${jn(Ne(O))}`,style:{width:y.state.width,insetInlineEnd:o.rightOffsets[$]},children:eo(Ne(O),D===O,()=>et(U,O,Re))},O));}),jsxRuntime.jsxs("div",{className:`kanuni-datagrid-row${c&&n%2===1?" kanuni-datagrid-row--odd":""}${h?" kanuni-datagrid-row--selected":""}${P?" kanuni-datagrid-row--focused":""}${re?" kanuni-datagrid-row--tree-path":""}${V?` kanuni-datagrid-group-row kanuni-datagrid-group-row--aligned kanuni-datagrid-group-row--level-${V.level}`:""}${Fe?` kanuni-datagrid-row--drop-${Fe}`:""}`,role:"row","aria-rowindex":n+1+K,"aria-selected":V?void 0:h,"aria-expanded":V?V.expanded:void 0,"aria-level":V?V.level+1:void 0,"data-row-key":String(e.key),"data-group-key":V?String(V.key):void 0,"data-group-level":V?V.level:void 0,style:Be===void 0?void 0:{height:Be},draggable:te?.draggable&&!V?true:void 0,onDragStart:te&&!V?y=>te.onDragStart(e,y):void 0,onDragEnd:te&&!V?()=>te.onDragEnd():void 0,onDragOver:te&&!V?y=>te.onDragOver(e,y):void 0,onDrop:te&&!V?y=>te.onDrop(e,y):void 0,onMouseDown:E&&!V?y=>E(e,y):void 0,onClick:V?()=>ne?.(String(V.key)):w?y=>w(e,n,y):void 0,onDoubleClick:I?y=>I(e,n,y):void 0,onContextMenu:H?y=>H(e,n,y):void 0,children:[te&&!V&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-row-grip","data-testid":"dg-row-grip","aria-hidden":"true",title:ce.dragToReorder,onMouseEnter:()=>te.setDraggable(true),onMouseLeave:()=>te.setDraggable(false),children:jsxRuntime.jsx("svg",{width:"10",height:"14",viewBox:"0 0 10 14",focusable:"false",children:jsxRuntime.jsxs("g",{fill:"currentColor",children:[jsxRuntime.jsx("circle",{cx:"3",cy:"3",r:"1.2"}),jsxRuntime.jsx("circle",{cx:"7",cy:"3",r:"1.2"}),jsxRuntime.jsx("circle",{cx:"3",cy:"7",r:"1.2"}),jsxRuntime.jsx("circle",{cx:"7",cy:"7",r:"1.2"}),jsxRuntime.jsx("circle",{cx:"3",cy:"11",r:"1.2"}),jsxRuntime.jsx("circle",{cx:"7",cy:"11",r:"1.2"})]})})}),G&&e.kind==="data"?G({row:e.data,node:e,rowIndex:n,selected:h,focused:P}):oe]})}var Nt=react.memo(Ii);var Mt=26;function ro(t,e){return datagridCore.computeHeaderBands(t,e)}function ao(t,e=""){return `kanuni-datagrid-band-cell${t.spacer?" kanuni-datagrid-band-cell--spacer":""}${e}`}function io(t,e){let n=jsxRuntime.jsx("span",{className:"kanuni-datagrid-band-label",children:t.label});if(!e||t.spacer||t.columnIds.length===0)return n;let o=e.pathOf(t.columnIds[0]).slice(0,t.level+1);if(o.length!==t.level+1||!e.collapsible(o))return n;let l=e.collapsed(o);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-band-toggle","aria-expanded":!l,"aria-label":l?e.labels.expand:e.labels.collapse,title:l?e.labels.expand:e.labels.collapse,onClick:i=>{i.stopPropagation(),e.onToggle(o);},children:jsxRuntime.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:[jsxRuntime.jsx("rect",{x:"2",y:"2",width:"12",height:"12",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.3"}),jsxRuntime.jsx("path",{d:"M5 8h6",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"}),l&&jsxRuntime.jsx("path",{d:"M8 5v6",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})]})}),n]})}function Oi({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:o,depth:l,checkboxColumn:i=false,detailColumn:d=false,rowNumberColumn:g=false,rowHeight:f=Mt,bandFold:m}){if(l<=0)return null;let c=Xe({rowNumberColumn:g,detailColumn:d,checkboxColumn:i}).total,h=ro(t.left,l),R=ro(e,l),b=ro(t.right,l),v=(D,P,G)=>{let N=G;for(let x=0;x<P;x++)N+=D[x].width;return N};return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Array.from({length:l},(D,P)=>jsxRuntime.jsxs("div",{className:"kanuni-datagrid-band-row",role:"row","aria-rowindex":P+1,style:{width:t.totalWidth+c,height:f,top:P*f},children:[c>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned",style:{width:c,insetInlineStart:0},"aria-hidden":"true"}),(h[P]??[]).map((G,N)=>jsxRuntime.jsx("div",{className:ao(G,` kanuni-datagrid-band-cell--pinned${N===(h[P]?.length??0)-1?" kanuni-datagrid-pin-edge-left":""}`),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width,insetInlineStart:v(h[P]??[],N,c)},title:G.spacer?void 0:G.label,children:io(G,m)},G.columnIds[0])),n>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),(R[P]??[]).map(G=>jsxRuntime.jsx("div",{className:ao(G),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width},title:G.spacer?void 0:G.label,children:io(G,m)},G.columnIds[0])),o>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:o}}),(b[P]??[]).map((G,N)=>{let x=b[P]??[],L=0;for(let B=N+1;B<x.length;B++)L+=x[B].width;return jsxRuntime.jsx("div",{className:ao(G,` kanuni-datagrid-band-cell--pinned${N===0?" kanuni-datagrid-pin-edge-right":""}`),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width,insetInlineEnd:L},title:G.spacer?void 0:G.label,children:io(G,m)},G.columnIds[0])})]},P))})}var so=react.memo(Oi);var Bi=()=>jsxRuntime.jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:jsxRuntime.jsx("path",{d:"M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z",fill:"currentColor",stroke:"currentColor",strokeWidth:"0.6",strokeLinejoin:"round"})});function Ki(t,e){return t.renderHeader?t.renderHeader({column:t}):t.headerName??t.field??e}function _i({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:o,leadingSpacer:l,trailingSpacer:i,sort:d,sortable:g,onSort:f,headerFilter:m=false,filteredColumns:c,onOpenFilter:h,filterIconMode:R="hover",checkboxColumn:b=false,detailColumn:v=false,rowNumberColumn:D=false,rowNumberHeader:P="#",selectAllState:G="none",onToggleSelectAll:N,draggable:x=false,reorderable:L=false,onReorder:B,resizable:_=false,onResize:K,onAutoFit:w,onHeaderContextMenu:E}){let I=ee(),u=Xe({rowNumberColumn:D,detailColumn:v,checkboxColumn:b}),C=new Map(d.map((s,T)=>[s.columnId,{direction:s.direction,order:T}])),H=new Set(c??[]),Y=[...n.left.map(s=>s.state.id),...o.map(s=>s.state.id),...n.right.map(s=>s.state.id)],[ne,de]=react.useState(null),Je=ne&&Y.includes(ne)?ne:Y[0],fe=s=>{de(s),document.querySelector(`[data-column-id="${s}"].kanuni-datagrid-header-cell`)?.focus();},pe=s=>{let T=Y.indexOf(Je),M=Math.min(Y.length-1,Math.max(0,T+s));M!==T&&fe(Y[M]);},be=react.useRef(null),Te=react.useRef(false),[ye,ve]=react.useState(null),Ae=Y,Oe=s=>[...n.left,...n.center,...n.right].find(T=>T.state.id===s)?.state.pinned??null,Ze=(s,T)=>(Te.current?s>T.left+T.width/2:s<T.left+T.width/2)?"before":"after",Qe=(s,T)=>{let M=be.current;if(!L||!M||M===s||Oe(M)!==Oe(s))return;T.preventDefault(),T.dataTransfer.dropEffect="move";let q=Ze(T.clientX,T.currentTarget.getBoundingClientRect());ve(S=>S?.id===s&&S.side===q?S:{id:s,side:q});},te=(s,T)=>{let M=be.current;if(ve(null),!L||!M||M===s||Oe(M)!==Oe(s))return;if(T.preventDefault(),T.stopPropagation(),Ze(T.clientX,T.currentTarget.getBoundingClientRect())==="before")B?.(M,s);else {let S=Ae[Ae.indexOf(s)+1];B?.(M,S===M?Ae[Ae.indexOf(s)+2]:S);}be.current=null;},[Fe,Be]=react.useState(null),ce=(s,T)=>{if(!_)return;T.preventDefault(),T.stopPropagation();let M=T.currentTarget,q=T.clientX,S=s.state.width,re=Te.current?-1:1,V=s.state.id;Be(V),M.setPointerCapture(T.pointerId);let ue=S,De=false,ie=Ve=>{De=true,ue=S+(Ve.clientX-q)*re,K?.(V,ue,false);},F=()=>{M.releasePointerCapture?.(T.pointerId),M.removeEventListener("pointermove",ie),M.removeEventListener("pointerup",F),M.removeEventListener("pointercancel",F),De&&K?.(V,ue,true),Be(null);};M.addEventListener("pointermove",ie),M.addEventListener("pointerup",F),M.addEventListener("pointercancel",F);},oe=(s,T,M)=>{let q=s.def,S=s.state.id,re=g&&q.sortable!==false,V=m&&q.filterable!==false,ue=C.get(S),De=x&&q.groupable!==false||L&&q.reorderable!==false,ie=ye?.id===S?ye.side:null;return jsxRuntime.jsxs("div",{className:`kanuni-datagrid-header-cell${T}${re?" kanuni-datagrid-header-cell--sortable":""}${ie?` kanuni-datagrid-header-cell--drop-${ie}`:""}${Fe===S?" kanuni-datagrid-header-cell--resizing":""}`,style:M,role:"columnheader","aria-sort":ue?ue.direction==="asc"?"ascending":"descending":"none","data-column-id":S,tabIndex:S===Je?0:-1,onFocus:()=>de(S),draggable:De&&Fe===null,onDragStart:F=>{F.dataTransfer.setData("text/x-kanuni-column",S),F.dataTransfer.effectAllowed="move",be.current=S,Te.current=getComputedStyle(F.currentTarget).direction==="rtl";},onDragEnd:()=>{be.current=null,ve(null);},onDragOver:L?F=>Qe(S,F):void 0,onDragLeave:L?()=>ve(F=>F?.id===S?null:F):void 0,onDrop:L?F=>te(S,F):void 0,onContextMenu:E?F=>E(S,F):void 0,onClick:re?F=>f(S,F.shiftKey):void 0,onKeyDown:F=>{F.key==="ArrowRight"?(F.preventDefault(),pe(1)):F.key==="ArrowLeft"?(F.preventDefault(),pe(-1)):F.key==="Home"?(F.preventDefault(),fe(Y[0])):F.key==="End"?(F.preventDefault(),fe(Y[Y.length-1])):V&&F.altKey&&F.key==="ArrowDown"?(F.preventDefault(),h?.(S,F.currentTarget)):re&&(F.key==="Enter"||F.key===" ")&&(F.preventDefault(),f(S,F.shiftKey));},children:[jsxRuntime.jsx("span",{className:"kanuni-datagrid-header-label",children:Ki(q,S)}),ue&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-sort-indicator","aria-hidden":"true",children:ue.direction==="asc"?"\u25B2":"\u25BC"}),ue&&d.length>1&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-sort-order","aria-hidden":"true",children:ue.order+1}),m&&q.filterable!==false&&jsxRuntime.jsx("button",{type:"button",className:`kanuni-datagrid-filter-button${H.has(S)?" kanuni-datagrid-filter-button--active":""}${R==="always"?" kanuni-datagrid-filter-button--pinned":""}`,"aria-label":datagridCore.fillText(I.filterColumnAria,{column:q.headerName??S}),"aria-haspopup":"dialog","data-filter-button":S,tabIndex:-1,onClick:F=>{F.stopPropagation(),h?.(S,F.currentTarget);},children:jsxRuntime.jsx(Bi,{})}),_&&q.resizable!==false&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-resize-handle","data-resize-handle":S,role:"presentation",onPointerDown:F=>ce(s,F),onDoubleClick:F=>{F.stopPropagation(),w?.(S);},onClick:F=>F.stopPropagation()})]},S)};return jsxRuntime.jsxs("div",{className:"kanuni-datagrid-header",role:"row","aria-rowindex":Math.round(t/Mt)+1,style:{width:n.totalWidth+u.total,top:t||void 0},children:[D&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell",role:"columnheader","aria-colindex":u.colIndex("rowNumberColumn"),"aria-label":I.rowNumberAria,style:{width:Et,insetInlineStart:u.inset("rowNumberColumn")},children:P??""}),v&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell",role:"columnheader","aria-colindex":u.colIndex("detailColumn"),"aria-label":I.detailsAria,style:{width:hn,insetInlineStart:u.inset("detailColumn")}}),b&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell",role:"columnheader","aria-colindex":u.colIndex("checkboxColumn"),style:{width:fn,insetInlineStart:u.inset("checkboxColumn")},children:jsxRuntime.jsx("input",{type:"checkbox",checked:G==="all",ref:s=>{s&&(s.indeterminate=G==="some");},"aria-label":I.selectAllRows,onChange:()=>N?.()})}),n.left.map((s,T)=>oe(s,` kanuni-datagrid-header-cell--pinned${T===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:s.state.width,insetInlineStart:n.leftOffsets[T]+u.total})),l>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),o.map(s=>{let T=e?.get(s.state.id);return T===void 0?oe(s,"",{width:s.state.width}):oe(s," kanuni-datagrid-header-cell--pinned kanuni-datagrid-cell--sticky",{width:s.state.width,insetInlineStart:T+u.total})}),i>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((s,T)=>oe(s,` kanuni-datagrid-header-cell--pinned${T===0?" kanuni-datagrid-pin-edge-right":""}`,{width:s.state.width,insetInlineEnd:n.rightOffsets[T]}))]})}var co=react.memo(_i);function po(t,e,n=[]){let o=null,l=new Set,i=d=>{if(l.has(d)||(l.add(d),e.isPending(d)))return;let g=e.textFor(d);if(g===null)return;let f=t[d]??"";f!==g&&(f===""&&g===""||(o??={...t},o[d]=g));};for(let d of Object.keys(t))i(d);for(let d of n)i(d);return o??t}function Wi({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:o,leadingSpacer:l,trailingSpacer:i,values:d,checkboxColumn:g=false,detailColumn:f=false,rowNumberColumn:m=false,placeholder:c,onChange:h,onCommit:R,periodSuggestions:b,periodListId:v}){let D=ee(),P=Xe({rowNumberColumn:m,detailColumn:f,checkboxColumn:g}),G=c??D.filterPlaceholder,N=(x,L,B)=>{let _=x.state.id,K=x.def.filterable!==false;return jsxRuntime.jsx("div",{className:`kanuni-datagrid-filter-cell${L}`,style:B,"data-column-id":_,children:K&&jsxRuntime.jsx("input",{className:"kanuni-datagrid-filter-input",type:"text",value:d[_]??"",placeholder:G,"aria-label":datagridCore.fillText(D.filterColumnAria,{column:x.def.headerName??_}),"data-filter-for":_,list:x.def.dataType==="date"&&v?v:void 0,onChange:w=>h(_,w.target.value),onKeyDown:w=>{w.key==="Enter"&&R?.(_,w.target.value);},onBlur:w=>R?.(_,w.target.value)})},_)};return jsxRuntime.jsxs("div",{className:"kanuni-datagrid-filter-row",role:"row","aria-rowindex":2,style:{width:n.totalWidth+P.total,"--dg-band-offset":`${t}px`},children:[v&&b&&b.length>0&&jsxRuntime.jsx("datalist",{id:v,children:b.map(x=>jsxRuntime.jsx("option",{value:x},x))}),P.total>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned",style:{width:P.total,insetInlineStart:0}}),n.left.map((x,L)=>N(x,` kanuni-datagrid-filter-cell--pinned${L===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:x.state.width,insetInlineStart:n.leftOffsets[L]+P.total})),l>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),o.map(x=>{let L=e?.get(x.state.id);return L===void 0?N(x,"",{width:x.state.width}):N(x," kanuni-datagrid-filter-cell--pinned kanuni-datagrid-cell--sticky",{width:x.state.width,insetInlineStart:L+P.total})}),i>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((x,L)=>N(x,` kanuni-datagrid-filter-cell--pinned${L===0?" kanuni-datagrid-pin-edge-right":""}`,{width:x.state.width,insetInlineEnd:n.rightOffsets[L]}))]})}var mo=react.memo(Wi);var Hr=react.createContext("");function yo({theme:t,density:e,palette:n,children:o}){let l=react.useMemo(()=>datagridCore.themeClassName(t,e,n),[t,e,n]);return jsxRuntime.jsx(Hr.Provider,{value:l,children:o})}function Ro(){return react.useContext(Hr)}function $e({children:t,dark:e=false}){let[n,o]=react.useState(null),l=Ro();return react.useEffect(()=>{let i=document.createElement("div");return i.className=`kanuni-datagrid-root kanuni-datagrid-portal${e?" kanuni-datagrid-dark":""}${l}`,document.body.appendChild(i),o(i),()=>{i.remove();}},[e,l]),n?reactDom.createPortal(t,n):null}function $t({anchor:t,onClose:e,margin:n=8,autoFocus:o=false}){let l=react.useRef(null),[i,d]=react.useState(t),g=react.useCallback(f=>{if(l.current=f,!f)return;let m=f.getBoundingClientRect(),c=t.top+m.height+n>window.innerHeight,h=t.top-m.height-n*2,R=c&&h>n?h:t.top;d({left:Math.max(n,Math.min(t.left,window.innerWidth-m.width-n)),top:Math.max(n,Math.min(R,window.innerHeight-m.height-n))}),o&&f.focus();},[t.left,t.top,n,o]);return react.useEffect(()=>{let f=h=>{let R=l.current;R&&!R.contains(h.target)&&e();},m=h=>{h.key==="Escape"&&e();},c=h=>{let R=l.current,b=h.target;R&&b instanceof Node&&R.contains(b)||e();};return document.addEventListener("mousedown",f),document.addEventListener("keydown",m),window.addEventListener("scroll",c,true),()=>{document.removeEventListener("mousedown",f),document.removeEventListener("keydown",m),window.removeEventListener("scroll",c,true);}},[e]),{position:i,ref:g,elementRef:l}}var yn=25,Wt=new Map,Ar=200,al=200,Or=8;function il(t){let e=ee();return react.useMemo(()=>({search:e.search,selectAll:e.filterSelectAll,clear:e.clear,apply:e.apply,cancel:e.cancel,blank:e.filterBlank,noMatch:e.filterNoMatch,loading:e.filterLoading,truncated:e.filterTruncated,...t}),[e,t])}var ll=react.memo(function({label:e,display:n,index:o,active:l,checked:i,onToggle:d,onFocus:g}){return jsxRuntime.jsxs("div",{role:"option","aria-selected":i,tabIndex:0,className:`kanuni-datagrid-filter-item${l?" kanuni-datagrid-filter-item--active":""}`,"data-value":e,"data-index":o,onFocus:()=>g(o),onClick:()=>d(e),children:[jsxRuntime.jsx("input",{type:"checkbox",readOnly:true,checked:i,tabIndex:-1}),jsxRuntime.jsx("span",{children:n})]})});function To({gridId:t,columnId:e,headerLabel:n,entries:o,initialSelected:l,anchor:i,loading:d=false,dark:g,onApply:f,onClose:m,truncated:c=false,onSearch:h,labels:R}){let b=il(R),[v,D]=react.useState(""),[P,G]=react.useState(0),[N,x]=react.useState(()=>new Set(l??o.map(s=>s.label))),[L,B]=react.useState(false),_=react.useRef(null),K=react.useRef(null),[w,E]=react.useState(0),[I,u]=react.useState(240),C=`${t??""}:${e}`,H=Wt.get(C),Y=react.useRef(H?.scrollTop??null),[ne,de]=react.useState(H&&H.width&&H.height?{width:H.width,height:H.height}:null),Je=react.useCallback(s=>{_.current=s,s?.focus();},[]),fe=react.useRef(null),pe=react.useMemo(()=>{let s=datagridCore.foldText(v.trim());if(!s||c)return o;let T=fe.current;(!T||T.entries!==o)&&(T={entries:o,lowered:o.map(q=>datagridCore.foldText(q.label)),needle:"",result:[]},fe.current=T);let M=T.needle!==""&&s.includes(T.needle)?T.result.filter(q=>datagridCore.foldText(q.label).includes(s)):o.filter((q,S)=>T.lowered[S].includes(s));return T.needle=s,T.result=M,M},[o,v,c]);react.useEffect(()=>{if(!h)return;let s=setTimeout(()=>h(v),150);return ()=>clearTimeout(s)},[v,h]),react.useEffect(()=>{L||l||x(new Set(o.map(s=>s.label)));},[o,L,l]);let be=react.useCallback(s=>{K.current=s,s&&u(s.clientHeight||240);},[]);react.useEffect(()=>{let s=K.current;!s||Y.current===null||d||s.scrollHeight<=s.clientHeight||(s.scrollTop=Y.current,Y.current=null,E(s.scrollTop));});let Te=react.useMemo(()=>{let s=pe.length,T=Math.max(0,Math.floor(w/yn)-Or),M=Math.ceil(I/yn)+Or*2,q=Math.min(T,Math.max(0,s-1)),S=Math.min(s,q+M);return {start:q,end:S,count:s,rows:pe.slice(q,S)}},[pe,w,I]),ye=$t({anchor:i,onClose:m}),[ve,Ae]=react.useState(null),Oe=(ve??ye.position.left)+(ne?.width??260)+48<window.innerWidth?"right":"left",Ze=s=>{s.preventDefault(),s.stopPropagation();let T=ye.elementRef.current;if(!T)return;let M=T.getBoundingClientRect(),q=Oe,S={x:s.clientX,y:s.clientY,w:M.width,h:M.height,left:M.left},re=null,V=De=>{let ie=De.clientX-S.x,F=De.clientY-S.y,Ve=window.innerHeight-M.top-12,et=Math.min(Ve,Math.max(al,S.h+F));if(q==="right"){let ze=window.innerWidth-S.left-12;re={width:Math.min(ze,Math.max(Ar,S.w+ie)),height:et},de(re);}else {let ze=S.left+S.w,Ee=ze-12,Ne=Math.min(Ee,Math.max(Ar,S.w-ie));re={width:Ne,height:et},de(re),Ae(ze-Ne);}K.current&&u(K.current.clientHeight);},ue=()=>{if(window.removeEventListener("pointermove",V),window.removeEventListener("pointerup",ue),re){let De=Wt.get(C);Wt.set(C,{scrollTop:De?.scrollTop??K.current?.scrollTop??0,width:Math.round(re.width),height:Math.round(re.height)});}};window.addEventListener("pointermove",V),window.addEventListener("pointerup",ue);},Qe=react.useCallback(s=>{B(true),x(T=>{let M=new Set(T);return M.has(s)?M.delete(s):M.add(s),M});},[]),te=react.useCallback(s=>G(s),[]),Fe=()=>{if(d)return;if(N.size===o.length){f(null);return}let s=o.filter(S=>N.has(S.label)),T=s.some(S=>S.value===null||S.value===void 0),M=s.filter(S=>S.value!==null&&S.value!==void 0),q;M.length===0?q={columnId:e,operator:"isnull"}:T?q={logic:"or",nodes:[{columnId:e,operator:"in",value:M.map(S=>S.value)},{columnId:e,operator:"isnull"}]}:q={columnId:e,operator:"in",value:M.map(S=>S.value)},f(q);},Be=s=>{let T=Math.max(0,Math.min(pe.length-1,s));G(T);let M=ye.elementRef.current?.querySelector(`.kanuni-datagrid-filter-item[data-index="${T}"]`);M?.focus(),M?.scrollIntoView({block:"nearest"});},ce=s=>s.key.length===1&&!s.ctrlKey&&!s.metaKey&&!s.altKey,oe=s=>{let T=s.target===_.current;if(s.key==="Backspace"&&!T){s.preventDefault(),_.current?.focus(),D(M=>M.slice(0,-1)),G(0);return}if(s.key==="ArrowDown"){s.preventDefault(),Be(T?0:P+1);return}if(s.key==="ArrowUp"){s.preventDefault(),Be(T?pe.length-1:P-1);return}if(!T&&(s.key==="Home"||s.key==="End")){s.preventDefault(),Be(s.key==="Home"?0:pe.length-1);return}if(s.key===" "&&!T){s.preventDefault();let M=pe[P];M&&Qe(M.label);return}if(s.key==="Enter"){s.preventDefault(),Fe();return}!T&&ce(s)&&s.key!==" "&&(s.preventDefault(),_.current?.focus(),D(M=>M+s.key),G(0));};return jsxRuntime.jsx($e,{dark:g,children:jsxRuntime.jsxs("div",{ref:ye.ref,className:"kanuni-datagrid-filter-popup",style:{left:ve??ye.position.left,top:ye.position.top,...ne?{width:ne.width,height:ne.height,maxHeight:"none"}:null},role:"dialog","aria-label":`${n} filter`,onKeyDown:oe,children:[jsxRuntime.jsx("div",{className:`kanuni-datagrid-popup-resize kanuni-datagrid-popup-resize--${Oe}`,"data-testid":"dg-filter-resize",onPointerDown:Ze}),jsxRuntime.jsx("input",{ref:Je,className:"kanuni-datagrid-filter-search",type:"search",placeholder:b.search,value:v,onChange:s=>{D(s.target.value),G(0);},"data-testid":"dg-filter-search"}),c&&jsxRuntime.jsx("p",{className:"kanuni-datagrid-filter-truncated","data-testid":"dg-filter-truncated",children:b.truncated}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-filter-actions",children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{B(true),x(new Set(o.map(s=>s.label)));},children:b.selectAll}),jsxRuntime.jsx("button",{type:"button",onClick:()=>{B(true),x(new Set);},children:b.clear})]}),jsxRuntime.jsxs("div",{ref:be,className:"kanuni-datagrid-filter-list",role:"listbox","aria-multiselectable":"true","aria-busy":d||void 0,"aria-setsize":pe.length,onScroll:s=>{let T=s.target.scrollTop;E(T),Y.current=null;let M=Wt.get(C);Wt.set(C,{...M,scrollTop:T});},children:[d&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-filter-empty",children:b.loading}),!d&&pe.length===0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-filter-empty",children:b.noMatch}),Te.count>0&&jsxRuntime.jsx("div",{style:{height:pe.length*yn,position:"relative"},children:jsxRuntime.jsx("div",{style:{transform:`translateY(${Te.start*yn}px)`},children:Te.rows.map((s,T)=>{let M=Te.start+T;return jsxRuntime.jsx(ll,{label:s.label,display:s.label===""?b.blank:s.label,index:M,active:M===P,checked:N.has(s.label),onToggle:Qe,onFocus:te},s.label)})})})]}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsxRuntime.jsx("button",{type:"button",onClick:m,children:b.cancel}),jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:Fe,disabled:d,"data-testid":"dg-filter-apply",children:b.apply})]})]})})}var vo="text/x-kanuni-column";function ul({columns:t,levels:e,onSetLevels:n,maxLevels:o=1,onExpandAll:l,onCollapseAll:i,emptyText:d}){let g=ee(),f=d??g.groupPanelHint,[m,c]=react.useState(false),h=react.useRef(null),[R,b]=react.useState(null),v=w=>t.find(I=>I.state.id===w)?.def.headerName??w,D=w=>{if(!w||e.includes(w))return;let E=e.length>=o?e.slice(0,o-1):[...e];n([...E,w]);},P=w=>n(e.filter(E=>E!==w)),G=(w,E)=>{let I=e.filter(C=>C!==w),u=Math.max(0,Math.min(I.length,E));n([...I.slice(0,u),w,...I.slice(u)]);},N=(w,E,I)=>{if(w===E)return;let C=e.filter(H=>H!==w).indexOf(E);C<0||G(w,I==="before"?C:C+1);},x=(w,E)=>{let I=w+E;I<0||I>=e.length||N(e[w],e[I],E<0?"before":"after");},L=(w,E)=>w<E.top+E.height/2?"before":"after",B=(w,E)=>{E.preventDefault(),E.stopPropagation();let I=L(E.clientY,E.currentTarget.getBoundingClientRect());b(null),c(false);let u=h.current;if(h.current=null,u){N(u,e[w],I);return}let C=E.dataTransfer.getData(vo);if(!C||e.includes(C))return;if(e.length>=o){D(C);return}let H=I==="before"?w:w+1;n([...e.slice(0,H),C,...e.slice(H)]);},_=(w,E,I)=>{let u=I.ctrlKey||I.metaKey;u&&(I.key==="ArrowUp"||I.key==="ArrowLeft")?(I.preventDefault(),x(w,-1)):u&&(I.key==="ArrowDown"||I.key==="ArrowRight")?(I.preventDefault(),x(w,1)):(I.key==="Delete"||I.key==="Backspace")&&(I.preventDefault(),P(E));},K=t.filter(w=>!e.includes(w.state.id));return jsxRuntime.jsxs("div",{className:`kanuni-datagrid-group-panel${m?" kanuni-datagrid-group-panel--over":""}`,onDragOver:w=>{w.preventDefault(),c(true);},onDragLeave:()=>c(false),onDrop:w=>{if(w.preventDefault(),c(false),b(null),h.current){h.current=null;return}D(w.dataTransfer.getData(vo));},children:[e.length>0?jsxRuntime.jsx("div",{className:"kanuni-datagrid-group-levels",children:e.map((w,E)=>jsxRuntime.jsx("div",{className:`kanuni-datagrid-group-level${R?.index===E?` kanuni-datagrid-group-level--drop-${R.side}`:""}`,style:{"--dg-group-level":E},"data-group-level":E,onDragOver:I=>{I.preventDefault(),I.stopPropagation();let u=L(I.clientY,I.currentTarget.getBoundingClientRect());b(C=>C?.index===E&&C.side===u?C:{index:E,side:u});},onDragLeave:()=>b(I=>I?.index===E?null:I),onDrop:I=>B(E,I),children:jsxRuntime.jsxs("span",{className:"kanuni-datagrid-group-chip",draggable:o>1&&e.length>1,tabIndex:0,role:"button","aria-label":`${datagridCore.fillText(g.groupLevelAria,{n:E+1})}: ${v(w)}`,onDragStart:I=>{h.current=w,I.dataTransfer.effectAllowed="move",I.dataTransfer.setData(vo,w);},onDragEnd:()=>{h.current=null,b(null);},onKeyDown:I=>_(E,w,I),children:[o>1&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-chip-level",children:E+1}),v(w),jsxRuntime.jsx("button",{type:"button","aria-label":datagridCore.fillText(g.groupRemoveAria,{column:v(w)}),onClick:()=>P(w),children:"\xD7"})]})},w))}):jsxRuntime.jsx("span",{className:"kanuni-datagrid-group-panel-hint",children:f}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-group-panel-actions",children:[e.length>0&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:l,children:"Expand all"}),jsxRuntime.jsx("button",{type:"button",onClick:i,children:"Collapse all"})]}),jsxRuntime.jsxs("label",{className:"kanuni-datagrid-group-select",children:[jsxRuntime.jsx("span",{className:"kanuni-datagrid-sr-only",children:o>1?g.groupAddLevel:g.groupByColumn}),o>1?jsxRuntime.jsxs("select",{value:"",disabled:K.length===0,onChange:w=>D(w.target.value),children:[jsxRuntime.jsx("option",{value:"",children:g.groupAddLevelButton}),K.map(w=>jsxRuntime.jsx("option",{value:w.state.id,children:w.def.headerName??w.state.id},w.state.id))]}):jsxRuntime.jsxs("select",{value:e[0]??"",onChange:w=>n(w.target.value?[w.target.value]:[]),children:[jsxRuntime.jsx("option",{value:"",children:g.groupNoGrouping}),t.map(w=>jsxRuntime.jsx("option",{value:w.state.id,children:w.def.headerName??w.state.id},w.state.id))]})]})]})]})}var Do=react.memo(ul);function gl({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:o,defs:l,values:i,checkboxColumn:d=false,detailColumn:g=false,rowNumberColumn:f=false,onPickSummary:m,emptyHint:c="",position:h="bottom",bandOffset:R=0,headerRowsBetween:b=0}){let v=ee(),D=datagridCore.summaryTypeLabels(v),P=new Map(l.map(x=>[x.columnId,x])),G=Xe({rowNumberColumn:f,detailColumn:g,checkboxColumn:d}).total,N=(x,L,B)=>{let _=x.state.id,K=P.get(_),w=K?i[datagridCore.summaryKey(K.columnId,K.type)]:void 0,E=x.def.dataType==="number";return jsxRuntime.jsx("div",{className:`kanuni-datagrid-footer-cell${L}${E?" kanuni-datagrid-footer-cell--number":""}${K?" kanuni-datagrid-footer-cell--active":""}`,style:B,role:"gridcell","data-column-id":_,"data-summary-type":K?.type??"",title:K?`${datagridCore.summaryLabel(K,D)} \u2014 ${x.def.headerName??_}`:void 0,onContextMenu:m?I=>m(_,I):void 0,onClick:m?I=>m(_,I):void 0,children:K?jsxRuntime.jsx("span",{className:"kanuni-datagrid-footer-value",children:datagridCore.formatSummaryValue(K,w,x.def)}):jsxRuntime.jsx("span",{className:"kanuni-datagrid-footer-hint",children:c})},_)};return jsxRuntime.jsxs("div",{className:`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${h}`,role:"row","aria-label":v.columnTotalsAria,style:{width:t.totalWidth+G,"--dg-band-offset":`${R}px`,"--dg-pinned-gap":String(b)},children:[G>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned",style:{width:G,insetInlineStart:0}}),t.left.map((x,L)=>N(x,` kanuni-datagrid-footer-cell--pinned${L===t.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:x.state.width,insetInlineStart:t.leftOffsets[L]+G})),n>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),e.map(x=>N(x,"",{width:x.state.width})),o>0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-spacer",style:{width:o}}),t.right.map((x,L)=>N(x,` kanuni-datagrid-footer-cell--pinned${L===0?" kanuni-datagrid-pin-edge-right":""}`,{width:x.state.width,insetInlineEnd:t.rightOffsets[L]}))]})}var Rn=react.memo(gl);function wl(t,e){return `__dg_pinned_${t}_${e}`}function bl({gridId:t,side:e,rows:n,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:g,leadingSpacer:f,trailingSpacer:m,checkboxColumn:c=false,detailColumn:h=false,rowNumberColumn:R=false,rowHeight:b,bandOffset:v=0,headerRowsBetween:D,ariaRowBase:P}){return n.length===0?null:jsxRuntime.jsx("div",{className:`kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--${e}`,role:"rowgroup",style:{width:o.totalWidth||"100%","--dg-band-offset":`${v}px`,"--dg-pinned-gap":String(D)},children:n.map((G,N)=>{let x={kind:"data",key:wl(e,N),sourceIndex:-1,data:G};return jsxRuntime.jsx(Nt,{gridId:t,node:x,index:N,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:g,leadingSpacer:f,trailingSpacer:m,striped:false,selected:false,focusedColumnId:null,checkboxColumn:c,detailColumn:h,rowNumberColumn:R,rowNumber:null,headerRowCount:P,height:b},x.key)})})}var Cn=react.memo(bl);function _r({controller:t,renderRow:e,width:n,bandOffset:o,headerRowsBetween:l,belowPinned:i}){let[,d]=react.useReducer(m=>m+1,0);react.useEffect(()=>{let m=[t.events.on("bodyScroll",d),t.events.on("contentReady",d),t.events.on("viewportChanged",d)];return ()=>m.forEach(c=>c())},[t]);let g=react.useRef(null);react.useLayoutEffect(()=>{g.current?.querySelectorAll("button, input, select, textarea, a[href], [tabindex]").forEach(m=>m.setAttribute("tabindex","-1"));});let f=t.getStickyGroupRows();return f.length===0?null:jsxRuntime.jsx("div",{ref:g,className:"kanuni-datagrid-sticky-groups","aria-hidden":"true",style:{width:n||"100%","--dg-band-offset":`${o}px`,"--dg-pinned-gap":String(l),"--dg-sticky-below":`${i}px`},children:f.map((m,c)=>jsxRuntime.jsx("div",{className:`kanuni-datagrid-sticky-group${c===f.length-1?" kanuni-datagrid-sticky-group--last":""}`,style:{top:m.offset,height:m.height,zIndex:f.length-c},children:e(m.node,m.index,m.height)},String(m.node.key)))})}async function zt(t,e){try{let n=e==="csv"?await t.exportToCsv():e==="excel"?await t.exportToExcel():e==="excel-selected"?await t.exportToExcel({selectedOnly:!0}):await t.exportToPdf();return datagridCore.downloadBlob(n.blob,n.fileName),{completed:!0}}catch(n){return n instanceof datagridCore.ExportAbortedError?{completed:false}:{completed:false,error:n instanceof Error?n.message:String(n)}}}function bt({anchor:t,onClose:e,children:n,dark:o,className:l="",label:i,role:d="dialog"}){let g=$t({anchor:t,onClose:e});return jsxRuntime.jsx($e,{dark:o,children:jsxRuntime.jsx("div",{ref:g.ref,className:`kanuni-datagrid-filter-popup ${l}`.trim(),style:{left:g.position.left,top:g.position.top},role:d,"aria-label":i,children:n})})}function Gl(t){let e=ee();return react.useMemo(()=>({search:e.toolbarSearch,csv:e.exportCsv,excel:e.exportExcel,excelSelected:e.exportExcelSelected,pdf:e.exportPdf,columns:e.columns,exporting:e.exporting,exportMenu:e.exportMenu,...t}),[e,t])}var Sl=()=>jsxRuntime.jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:jsxRuntime.jsx("path",{d:"M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})});function El({controller:t,search:e=true,exportCsv:n=true,exportExcel:o=false,exportPdf:l=false,columnChooser:i=true,dark:d,onOpenColumnChooser:g,itemsBefore:f,itemsAfter:m,searchDebounce:c=200,labels:h}){let R=Gl(h),[b,v]=react.useState(t.getSearchText()),[D,P]=react.useState(null),[G,N]=react.useState(null),[x,L]=react.useState(null);react.useEffect(()=>{let w=setTimeout(()=>t.setSearchText(b),c);return ()=>clearTimeout(w)},[t,b,c]);let[B,_]=react.useState(()=>t.getSelectedCount());react.useEffect(()=>(_(t.getSelectedCount()),t.events.on("selectionChanged",()=>_(t.getSelectedCount()))),[t]);let K=async w=>{P(w),L(null);let E=await zt(t,w);E.error?L(E.error):N(null),P(null);};return jsxRuntime.jsxs("div",{className:"kanuni-datagrid-toolbar",children:[f,e&&jsxRuntime.jsx("input",{type:"search",className:"kanuni-datagrid-toolbar-search",placeholder:R.search,value:b,"aria-label":R.search,"data-testid":"dg-toolbar-search",onChange:w=>v(w.target.value)}),jsxRuntime.jsx("div",{className:"kanuni-datagrid-toolbar-spacer"}),i&&jsxRuntime.jsx("button",{type:"button","aria-haspopup":"dialog","data-testid":"dg-column-chooser",onClick:w=>{let E=w.currentTarget.getBoundingClientRect();g?.({left:E.left,top:E.bottom+2});},children:R.columns}),(n||o||l)&&jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-toolbar-icon-button","aria-haspopup":"menu","aria-label":R.exportMenu,title:R.exportMenu,disabled:D!==null,"data-testid":"dg-export-menu",onClick:w=>{let E=w.currentTarget.getBoundingClientRect();N(G?null:{left:E.right-190,top:E.bottom+2});},children:D?jsxRuntime.jsx("span",{className:"kanuni-datagrid-toolbar-busy"}):jsxRuntime.jsx(Sl,{})}),G&&jsxRuntime.jsxs(bt,{anchor:G,onClose:()=>N(null),dark:d,role:"menu",label:R.exportMenu,className:"kanuni-datagrid-export-menu",children:[n&&jsxRuntime.jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-csv",onClick:()=>K("csv"),children:D==="csv"?R.exporting:R.csv}),o&&jsxRuntime.jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-excel",onClick:()=>K("excel"),children:D==="excel"?R.exporting:R.excel}),o&&jsxRuntime.jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null||B===0,"data-testid":"dg-export-excel-selected",onClick:()=>K("excel-selected"),children:D==="excel-selected"?R.exporting:R.excelSelected}),l&&jsxRuntime.jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-pdf",onClick:()=>K("pdf"),children:D==="pdf"?R.exporting:R.pdf})]}),m,x&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-toolbar-error",role:"alert",children:x})]})}var Go=react.memo(El);function Ml(t){let e=ee();return react.useMemo(()=>({title:e.hiddenColumns,empty:e.noHiddenColumns,showAll:e.showAll,ok:e.ok,...t}),[e,t])}function So({controller:t,columns:e,anchor:n,onClose:o,dark:l,labels:i}){let d=Ml(i),g=e.filter(f=>!f.visible);return jsxRuntime.jsxs(bt,{anchor:n,onClose:o,dark:l,label:d.title,className:"kanuni-datagrid-column-chooser",children:[jsxRuntime.jsxs("div",{className:"kanuni-datagrid-filter-list",children:[g.length===0&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-chooser-empty",children:d.empty}),g.map(f=>{let m=t.getColumnModel().getDef(f.id);return jsxRuntime.jsxs("label",{className:"kanuni-datagrid-filter-item",children:[jsxRuntime.jsx("input",{type:"checkbox",checked:false,"data-column-toggle":f.id,onChange:()=>t.setColumnVisible(f.id,true)}),jsxRuntime.jsx("span",{children:m?.headerName??f.id})]},f.id)})]}),g.length>0&&jsxRuntime.jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>g.forEach(f=>t.setColumnVisible(f.id,true)),children:d.showAll}),jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:o,children:d.ok})]})]})}function Il(t){let e=ee();return react.useMemo(()=>({first:e.pagerFirst,previous:e.pagerPrevious,next:e.pagerNext,last:e.pagerLast,page:e.pagerPage,of:e.pagerOf,rowsPerPage:e.pagerRowsPerPage,...t}),[e,t])}function Hl({page:t,pageCount:e,pageSize:n,pageSizes:o=[25,50,100,250],totalRows:l,onPage:i,onNext:d,onPrevious:g,onPageSize:f,labels:m}){let c=Il(m),h=t<=0,R=t>=e-1,b=l===0?0:t*n+1,v=Math.min(l,(t+1)*n);return jsxRuntime.jsxs("div",{className:"kanuni-datagrid-pager",role:"navigation","aria-label":"Pagination",children:[jsxRuntime.jsxs("label",{className:"kanuni-datagrid-pager-size",children:[jsxRuntime.jsx("span",{children:c.rowsPerPage}),jsxRuntime.jsx("select",{value:n,"data-testid":"dg-page-size",onChange:D=>f(Number(D.target.value)),children:o.map(D=>jsxRuntime.jsx("option",{value:D,children:D},D))})]}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-pager-range","data-testid":"dg-page-range",children:[b.toLocaleString(),"\u2013",v.toLocaleString()," ",c.of," ",l.toLocaleString()]}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-pager-buttons",children:[jsxRuntime.jsx("button",{type:"button","aria-label":c.first,disabled:h,onClick:()=>i(0),children:"\xAB"}),jsxRuntime.jsx("button",{type:"button","aria-label":c.previous,disabled:h,"data-testid":"dg-page-prev",onClick:g,children:"\u2039"}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-pager-current","data-testid":"dg-page-current",children:[c.page," ",t+1," ",c.of," ",e]}),jsxRuntime.jsx("button",{type:"button","aria-label":c.next,disabled:R,"data-testid":"dg-page-next",onClick:d,children:"\u203A"}),jsxRuntime.jsx("button",{type:"button","aria-label":c.last,disabled:R,onClick:()=>i(e-1),children:"\xBB"})]})]})}var Eo=react.memo(Hl);function $l(t){let e=ee();return react.useMemo(()=>({clear:e.filterRemove,toggle:e.filterToggle,builder:e.filterEditBuilder,empty:e.filterNone,...t}),[e,t])}function Wl({controller:t,onOpenBuilder:e,alwaysVisible:n=false,describeOptions:o,labels:l}){let i=$l(l),d=ee(),[,g]=react.useState(0);react.useEffect(()=>t.events.on("filterChanged",()=>g(h=>h+1)),[t]);let f=t.getEffectiveFilter(),m=t.isFilterEnabled(),c=datagridCore.describeFilter(f,t.getColumnModel(),{...o,labels:{...datagridCore.filterLabels(d),...o?.labels}});return !f&&!n?null:jsxRuntime.jsxs("div",{className:`kanuni-datagrid-filter-panel${m?"":" kanuni-datagrid-filter-panel--suspended"}`,"data-testid":"dg-filter-panel",role:"group","aria-label":i.toggle,children:[jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-filter-panel-clear",title:i.clear,"aria-label":i.clear,disabled:!f,"data-testid":"dg-filter-panel-clear",onClick:()=>{t.setFilter(null),t.clearColumnFilters(),t.setFilterEnabled(true);},children:"\xD7"}),jsxRuntime.jsx("input",{type:"checkbox",className:"kanuni-datagrid-filter-panel-toggle",checked:m,disabled:!f,title:i.toggle,"aria-label":i.toggle,"data-testid":"dg-filter-panel-toggle",onChange:h=>t.setFilterEnabled(h.target.checked)}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-filter-panel-text",title:c??void 0,"data-testid":"dg-filter-panel-text",children:c??i.empty}),e&&jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-filter-panel-builder",title:i.builder,"aria-label":i.builder,"data-testid":"dg-filter-panel-builder",onClick:e,children:"\u25BE"})]})}var No=react.memo(Wl);var Tn=t=>!t.separator&&!t.disabled;function vn({x:t,y:e,items:n,context:o,onClose:l,dark:i=false,label:d}){let g=ee(),f=react.useRef(null),[m,c]=react.useState({left:t,top:e}),[h,R]=react.useState(()=>n.findIndex(Tn)),[b,v]=react.useState(null),[D,P]=react.useState(null),G=react.useRef(null),[N,x]=react.useState(null);react.useEffect(()=>P(null),[b]);let L=react.useCallback((u,C)=>{if(v(u),u===null||!C)return;let H=C.getBoundingClientRect();x({left:H.left,right:H.right,top:H.top});},[]),B=u=>f.current?.querySelector(`[data-item-index="${u}"]`)??null,_=react.useCallback(u=>{if(G.current=u,!u||!N)return;let C=8,H=u.getBoundingClientRect(),Y=Math.max(C,Math.min(N.top-4,window.innerHeight-H.height-C)),de=N.right+H.width+C<=window.innerWidth?N.right:Math.max(C,N.left-H.width);P({left:de,top:Y});},[N]),K=react.useCallback(u=>{if(f.current=u,!u)return;let C=u.getBoundingClientRect(),H=8;c({left:Math.max(H,Math.min(t,window.innerWidth-C.width-H)),top:Math.max(H,Math.min(e,window.innerHeight-C.height-H))}),u.focus();},[t,e]);react.useEffect(()=>{let u=H=>{let Y=H.target;G.current?.contains(Y)||f.current&&!f.current.contains(Y)&&l();},C=()=>l();return document.addEventListener("mousedown",u),window.addEventListener("scroll",C,true),()=>{document.removeEventListener("mousedown",u),window.removeEventListener("scroll",C,true);}},[l]);let w=(u,C)=>{let H=n.length;for(let Y=1;Y<=H;Y++){let ne=(u+C*Y+H*H)%H;if(Tn(n[ne]))return ne}return u},E=u=>{let C=n[u];if(!(!C||!Tn(C))){if(C.items?.length){L(u,B(u));return}C.onSelect?.(o),l();}},I=u=>{switch(u.key){case "ArrowDown":R(C=>w(C,1));break;case "ArrowUp":R(C=>w(C,-1));break;case "Home":R(n.findIndex(Tn));break;case "End":R(w(0,-1));break;case "ArrowRight":if(n[h]?.items?.length)L(h,B(h));else return;break;case "ArrowLeft":if(b!==null)L(null);else return;break;case "Enter":case " ":E(h);break;case "Escape":l();break;case "Tab":l();return;default:return}u.preventDefault(),u.stopPropagation();};return jsxRuntime.jsxs($e,{dark:i,children:[jsxRuntime.jsx("div",{ref:K,className:"kanuni-datagrid-context-menu",role:"menu","aria-label":d??g.rowActions,tabIndex:-1,style:{left:m.left,top:m.top},onKeyDown:I,children:n.map((u,C)=>u.separator?jsxRuntime.jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},u.id??`sep-${C}`):jsxRuntime.jsx("div",{className:"kanuni-datagrid-menu-row",children:jsxRuntime.jsxs("button",{type:"button",role:"menuitem",className:`kanuni-datagrid-menu-item${C===h?" kanuni-datagrid-menu-item--active":""}`,disabled:u.disabled,"data-item-index":C,"aria-haspopup":u.items?.length?"menu":void 0,"aria-expanded":u.items?.length?b===C:void 0,onMouseEnter:H=>{R(C),L(u.items?.length?C:null,H.currentTarget);},onClick:()=>E(C),children:[u.icon&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-icon",children:u.icon}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-label",children:u.label}),u.shortcut&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-shortcut",children:u.shortcut}),u.items?.length?jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-caret",children:"\u203A"}):null]})},u.id??C))}),b!==null&&n[b]?.items?.length?jsxRuntime.jsx("div",{ref:_,className:"kanuni-datagrid-context-menu kanuni-datagrid-submenu",style:D?{left:D.left,top:D.top}:{left:0,top:0,visibility:"hidden"},role:"menu",children:n[b].items.map((u,C)=>u.separator?jsxRuntime.jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},u.id??`sub-sep-${C}`):jsxRuntime.jsxs("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:u.disabled,onClick:()=>{u.onSelect?.(o),l();},children:[u.icon&&jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-icon",children:u.icon}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-menu-label",children:u.label})]},u.id??C))}):null]})}var zl=typeof navigator<"u"&&/Mac|iPhone|iPad|iPod/.test(navigator.platform??""),Lo=zl?"\u2318":"Ctrl+",Yr=`${Lo}C`,Ul=`${Lo}X`,Yl=`${Lo}V`;function Lt(t,e={}){let n=t.getClipboardText(e);t.notifyClipboardGesture("copy",n?n.split(`
2
+ `).length:0,()=>!n||!navigator.clipboard?.writeText?false:(Xr(n),true));}function Xr(t){navigator.clipboard?.writeText(t).catch(()=>{});}function Xl(t){let e=t.getColumnModel();return t.getVisualColumnIds().some(n=>{let o=e.getDef(n)?.band;return typeof o=="string"?o!=="":Array.isArray(o)&&o.length>0})}function ql(t){return t===false?[]:Array.isArray(t)?t:["csv","excel","excel-selected","pdf"]}var Jl={csv:"exportCsv",excel:"exportExcel","excel-selected":"exportExcelSelected",pdf:"exportPdf"};function Io(t,e,n,o,l){if(n===false)return [];let i=n===true||n===void 0?{}:n,d=[];i.copy!==false&&d.push({id:"__dg-copy",label:e.menuCopy,shortcut:Yr,onSelect:()=>Lt(t)}),i.copyWithHeaders!==false&&d.push({id:"__dg-copy-headers",label:e.menuCopyWithHeaders,onSelect:()=>Lt(t,{includeHeaders:true})}),i.copyWithGroupHeaders!==false&&Xl(t)&&d.push({id:"__dg-copy-group-headers",label:e.menuCopyWithGroupHeaders,onSelect:()=>Lt(t,{includeGroupHeaders:true})});let g=ql(i.export);if(g.length>0){let f=t.getSelectedCount()===0;d.push({id:"__dg-export",label:e.menuExport,items:g.map(m=>({id:`__dg-export-${m}`,label:e[Jl[m]],disabled:m==="excel-selected"&&f,onSelect:()=>{zt(t,m).then(c=>{c.error&&l?.(c.error);});}}))});}return d.length>0&&o&&d.unshift({id:"__dg-sep-builtin",separator:true}),d}function Ao({anchor:t,value:e,dark:n,onCommit:o,onCancel:l}){let i=ee(),[d,g]=react.useState(e),f=react.useRef(null);react.useEffect(()=>{let c=f.current;c&&(c.focus(),c.select());},[]);let m=()=>{let c=d.trim();o(c===""?null:c);};return jsxRuntime.jsxs(bt,{anchor:t,onClose:l,dark:n,label:i.noteEditorAria,className:"kanuni-datagrid-note-editor",children:[jsxRuntime.jsx("textarea",{ref:f,className:"kanuni-datagrid-note-input",value:d,rows:4,"aria-label":i.noteEditorAria,placeholder:i.notePlaceholder,onChange:c=>g(c.target.value),onKeyDown:c=>{c.key==="Enter"&&(c.ctrlKey||c.metaKey)&&(c.preventDefault(),m()),c.key==="Escape"&&(c.preventDefault(),l());}}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-note-actions",children:[jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-note-cancel",onClick:l,children:i.cancel}),jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-note-save",onClick:m,children:i.save})]})]})}function ts(t){let e=ee();return react.useMemo(()=>({busy:e.busy,loading:e.busyLoading,encoding:e.busyEncoding,filtering:e.busyFiltering,sorting:e.busySorting,computing:e.busyComputing,grouping:e.busyGrouping,aggregating:e.busyAggregating,projecting:e.busyProjecting,exporting:e.busyExporting,cancel:e.cancel,...t}),[e,t])}var ns=new Set(["filtering","sorting","computing","encoding","exporting"]);function Fo({controller:t,delay:e=300,labels:n,cancellable:o=true,forced:l=false}){let[i,d]=react.useState(()=>t.getBusy()),[g,f]=react.useState(false);react.useEffect(()=>(d(t.getBusy()),t.events.on("busyChanged",v=>d(v))),[t]);let m=i.busy&&i.background!==true;react.useEffect(()=>{if(!m){f(false);return}let v=setTimeout(()=>f(true),e);return ()=>clearTimeout(v)},[m,e]);let c=ts(n);if(!l&&(!g||!m))return null;let h=i.phase?c[i.phase]:c.busy,R=i.progress===null?null:Math.max(0,Math.min(100,i.progress)),b=o&&i.phase!==null&&ns.has(i.phase)&&i.cancellable!==false;return jsxRuntime.jsx("div",{className:"kanuni-datagrid-loading-overlay",role:"status","aria-live":"polite","data-testid":"dg-loading-overlay","data-phase":i.phase??"busy","data-blocking":i.phase==="exporting"?"true":void 0,"aria-busy":"true",children:jsxRuntime.jsxs("div",{className:"kanuni-datagrid-loading-card",children:[jsxRuntime.jsx("span",{className:"kanuni-datagrid-loading-spinner","aria-hidden":"true"}),jsxRuntime.jsx("span",{className:"kanuni-datagrid-loading-label",children:h}),R!==null&&jsxRuntime.jsxs("div",{className:"kanuni-datagrid-loading-progress",role:"progressbar","aria-valuenow":Math.round(R),"aria-valuemin":0,"aria-valuemax":100,children:[jsxRuntime.jsx("div",{className:"kanuni-datagrid-loading-track",children:jsxRuntime.jsx("div",{className:"kanuni-datagrid-loading-fill",style:{width:`${R}%`}})}),jsxRuntime.jsxs("span",{className:"kanuni-datagrid-loading-percent",children:[Math.round(R),"%"]})]}),b&&jsxRuntime.jsx("button",{type:"button",className:"kanuni-datagrid-loading-cancel",onClick:()=>t.cancel(),"data-testid":"dg-loading-cancel",children:c.cancel})]})})}var jr=null;function os(){return typeof document>"u"?null:(jr??=document.createElement("canvas"),jr.getContext("2d"))}function ea(t){let e=getComputedStyle(t);return `${e.fontStyle} ${e.fontWeight} ${e.fontSize} ${e.fontFamily}`}function rs(t){for(let e=t.firstElementChild;e;e=e.nextElementSibling)if(e.tagName!=="MARK")return true;return false}function as(t){let e=t.map(o=>[o.style.width,o.style.minWidth,o.style.maxWidth]);for(let o of t)o.style.width="max-content",o.style.minWidth="0",o.style.maxWidth="none";let n=0;for(let o of t){let l=Math.ceil(o.getBoundingClientRect().width);l>n&&(n=l);}return t.forEach((o,l)=>{[o.style.width,o.style.minWidth,o.style.maxWidth]=e[l];}),n}function Dn(t,e){let n=os();if(!n)return null;let o=typeof CSS<"u"&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),l=t.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${o}"]`),i=t.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${o}"]`);if(!l&&i.length===0)return null;let d=0;if(l){let g=l.querySelector(".kanuni-datagrid-header-label")??l;n.font=ea(g),d=n.measureText(g.textContent??"").width+44;}if(i.length>0){n.font=ea(i[0]);let g=[];for(let f=0;f<i.length;f++){if(rs(i[f])){g.push(i[f]);continue}let m=i[f].textContent??"";if(m==="")continue;let c=n.measureText(m).width+20;c>d&&(d=c);}g.length>0&&(d=Math.max(d,as(g)));}return d===0?null:Math.round(Math.min(640,Math.max(48,d)))}function Bo(t,e){let n=react.useRef(e);n.current=e;let o=!!e?.enabled,l=e?.storageKey,i=e?.type;react.useEffect(()=>{if(o)return datagridCore.attachStateStoring(t,{...n.current,enabled:true})},[t,o,l,i]);}var Gn="application/x-kanuni-row";function _o(t,e){let n=!!e?.enabled,o=e?.group??null,l=e?.allowReordering??true,i=e?.allowDropInsert??o!==null,[d,g]=react.useState(false),[f,m]=react.useState(null),c=react.useRef(null),h=react.useRef(false),R=react.useRef(null),b=react.useRef(null),v=react.useRef(e);v.current=e;let D=react.useCallback(u=>t.getRowByKey(u),[t]),P=(u,C)=>{let H=C.getBoundingClientRect();return u.clientY<H.top+H.height/2?"before":"after"},G=react.useCallback((u,C)=>{if(!datagridCore.isDataRow(u))return;b.current=u.key,R.current=u.key,h.current=false,c.current=null;let H={gridId:t.gridId,group:o,rowKey:u.key,row:u.data};C.dataTransfer.setData(Gn,JSON.stringify(H)),C.dataTransfer.setData("text/plain",String(u.key)),C.dataTransfer.effectAllowed="move",t.notifyRowDrag("enter",{rowKey:u.key}),C.stopPropagation();},[t,o]),N=react.useCallback(()=>{let u=R.current;u!==null&&t.notifyRowDragEnd({rowKey:u,dropped:h.current,overKey:c.current?.key??null,position:c.current?.side??null}),h.current=false,c.current=null,R.current=null,b.current=null,m(null),g(false);},[t]),x=react.useCallback(u=>u.dataTransfer.types.includes(Gn)?b.current!==null?l:i&&o!==null:false,[l,i,o]),L=react.useCallback((u,C)=>{if(!datagridCore.isDataRow(u)||!x(C))return;if(C.preventDefault(),C.dataTransfer.dropEffect="move",b.current===u.key){c.current=null,m(null);return}let H=P(C,C.currentTarget),Y=c.current?.key!==u.key||c.current.side!==H;c.current={key:u.key,side:H},m(ne=>ne?.key===u.key&&ne.side===H?ne:{key:u.key,side:H}),Y&&b.current!==null&&t.notifyRowDrag("move",{rowKey:b.current,overKey:u.key,position:H});},[x,t]),B=react.useCallback((u,C,H)=>{let Y=null;try{let de=u.dataTransfer.getData(Gn);Y=de?JSON.parse(de):null;}catch{Y=null;}if(!Y)return;if(Y.gridId===t.gridId){if(!l)return;let de=v.current?.onReorder;if(de){de({dragKey:Y.rowKey,targetKey:C,position:H,row:D(Y.rowKey)});return}t.moveRow(Y.rowKey,C,H);return}!i||o===null||Y.group!==o||v.current?.onAdd?.({row:Y.row,rowKey:Y.rowKey,otherGridId:Y.gridId,targetKey:C,position:H});},[t,l,i,o,D]),_=react.useCallback((u,C)=>{if(m(null),!datagridCore.isDataRow(u)||!x(C))return;C.preventDefault(),C.stopPropagation();let H=P(C,C.currentTarget);h.current=true,c.current={key:u.key,side:H},B(C,u.key,H),b.current=null;},[x,B]),K=react.useCallback(u=>{x(u)&&(u.preventDefault(),u.dataTransfer.dropEffect="move");},[x]),w=react.useCallback(u=>{m(null),x(u)&&(u.preventDefault(),h.current=true,c.current=null,B(u,null,"after"),b.current=null);},[x,B]),E=react.useCallback(u=>{let C=u.relatedTarget;C&&u.currentTarget.contains(C)||b.current!==null&&(c.current=null,m(null),t.notifyRowDrag("leave",{rowKey:b.current}));},[t]);return {handlers:n?{draggable:d,setDraggable:g,onDragStart:G,onDragEnd:N,onDragOver:L,onDrop:_}:void 0,dropAt:n?f:null,bodyHandlers:n?{onDragOver:K,onDrop:w,onDragLeave:E}:void 0}}var ps=400;function na(t){return t.scrollWidth>t.clientWidth+1||t.scrollHeight>t.clientHeight+1}function oa(t){return (t.textContent??"").trim()}function ms(t){let{def:e,node:n,value:o,clipped:l,note:i}=t;if(i)return i;if(e&&n){if(typeof e.tooltip=="function"){let d=e.tooltip({value:o,row:n.data,node:n,column:e});return d||null}if(typeof e.tooltip=="string")return e.tooltip||null;if(e.tooltipField){let d=n.data[e.tooltipField];return d==null||d===""?null:String(d)}}return l&&l.length>0?l:null}function $o({rootRef:t,columnModel:e,getRowNode:n,getNote:o,config:l}){let i=l?.enabled!==false,d=l?.delay??ps,g=l?.showOnTruncation!==false,[f,m]=react.useState(null),c=react.useRef({columnModel:e,getRowNode:n,getNote:o,showOnTruncation:g,delay:d});return c.current={columnModel:e,getRowNode:n,getNote:o,showOnTruncation:g,delay:d},react.useEffect(()=>{if(!i){m(null);return}let h=t.current;if(!h)return;let R=null,b=null,v=()=>{R!==null&&(clearTimeout(R),R=null),b=null,m(null);},D=(x,L)=>{let{columnModel:B,getRowNode:_,getNote:K,showOnTruncation:w}=c.current,E=B.getDef(L),I=x.closest("[data-row-key]")?.dataset.rowKey,u=I===void 0?void 0:_(I);return ms({def:E,node:u,value:u?B.getCellValue(u.data,L):void 0,clipped:w&&na(x)?oa(x):null,note:u&&K?K(u.key,L,u.data):null})},P=(x,L)=>{let B=c.current.columnModel.getDef(x);if(B?.headerTooltip)return B.headerTooltip;if(!c.current.showOnTruncation)return null;let _=L.querySelector(".kanuni-datagrid-header-label")??L;if(!na(_))return null;let K=oa(_);return K.length>0?K:null},G=x=>{let B=x.target?.closest("[data-column-id]")??null;if(B===b||(v(),!B||!h.contains(B)))return;let _=B.dataset.columnId;if(!_)return;let K=B.classList.contains("kanuni-datagrid-header-cell");!K&&!B.closest("[data-row-key]")||(b=B,R=setTimeout(()=>{if(R=null,b!==B||!B.isConnected)return;let w=K?P(_,B):D(B,_);if(!w)return;let E=B.getBoundingClientRect();m({text:w,anchor:{top:E.top,left:E.left,width:E.width,height:E.height}});},c.current.delay));},N=x=>{let L=x.relatedTarget;b&&L&&b.contains(L)||v();};return h.addEventListener("mouseover",G),h.addEventListener("mouseout",N),h.addEventListener("mousedown",v),h.addEventListener("keydown",v),h.addEventListener("scroll",v,true),window.addEventListener("blur",v),()=>{v(),h.removeEventListener("mouseover",G),h.removeEventListener("mouseout",N),h.removeEventListener("mousedown",v),h.removeEventListener("keydown",v),h.removeEventListener("scroll",v,true),window.removeEventListener("blur",v);}},[i,t]),i?f:null}var aa=6,Ht=8;function Wo({state:t,dark:e}){let[n,o]=react.useState(null),[l,i]=react.useState(null),{text:d,anchor:g}=t;return react.useLayoutEffect(()=>{if(!n)return;let{width:f,height:m}=n.getBoundingClientRect(),c=document.documentElement.clientWidth,h=document.documentElement.clientHeight,R=g.top+g.height+aa,b=g.top-m-aa,D=R+m+Ht<=h||b<Ht?R:b,P=Math.min(Math.max(Ht,g.left),Math.max(Ht,c-f-Ht));i({top:Math.min(D,h-m-Ht),left:P});},[n,d,g]),jsxRuntime.jsx($e,{dark:e,children:jsxRuntime.jsx("div",{ref:o,className:"kanuni-datagrid-tooltip",role:"tooltip",style:l?{top:l.top,left:l.left}:{top:0,left:0,visibility:"hidden"},children:d})})}function Sn(t){return {sortAsc:t.sortAsc,sortDesc:t.sortDesc,clearSort:t.clearSort,groupBy:t.groupByColumn,ungroup:t.ungroupColumn,showGroupPanel:t.showGroupPanel,hideGroupPanel:t.hideGroupPanel,showFooter:t.showFooter,hideFooter:t.hideFooter,showGroupFooters:t.showGroupFooters,hideGroupFooters:t.hideGroupFooters,hideColumn:t.hideColumn,fieldChooser:t.fieldChooser,bestFit:t.bestFit,bestFitAll:t.bestFitAll,fixedPosition:t.fixedPosition,pinLeft:t.pinLeft,pinRight:t.pinRight,pinSticky:t.pinSticky,unpin:t.unpin,moveLeft:t.moveLeft,moveRight:t.moveRight}}var la=Sn(datagridCore.getGridDictionary("en"));function Vo(t,e){let n={...la,...e.labels},{controller:o,maxGroupLevels:l}=e,i=t.columnId,d=o.getColumnModel().getDef(i),g=o.getSort(),f=g.find(N=>N.columnId===i),m=o.getGroupLevels(),c=m.includes(i),h=d?.sortable!==false,R=o.getColumnStates().find(N=>N.id===i)?.pinned??null,b=d?.groupable!==false,v=[{id:"sort-asc",label:n.sortAsc,disabled:!h||f?.direction==="asc",onSelect:()=>o.setSort([{columnId:i,direction:"asc"}])},{id:"sort-desc",label:n.sortDesc,disabled:!h||f?.direction==="desc",onSelect:()=>o.setSort([{columnId:i,direction:"desc"}])},{id:"sort-clear",label:n.clearSort,disabled:!f,onSelect:()=>o.setSort(g.filter(N=>N.columnId!==i))},{id:"sep-1",separator:true},{id:"group",label:c?n.ungroup:n.groupBy,disabled:!b,onSelect:()=>{c?o.groupBy(m.filter(N=>N!==i)):o.groupBy([...m,i].slice(-l));}},{id:"group-panel",label:e.groupPanelVisible?n.hideGroupPanel:n.showGroupPanel,onSelect:e.onToggleGroupPanel}];e.groupFootersAvailable&&v.push({id:"group-footers",label:e.groupFootersVisible?n.hideGroupFooters:n.showGroupFooters,onSelect:e.onToggleGroupFooters}),v.push({id:"footer",label:e.footerVisible?n.hideFooter:n.showFooter,onSelect:e.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:n.hideColumn,disabled:o.getColumnStates().filter(N=>N.visible).length<=1,onSelect:()=>o.setColumnVisible(i,false)},{id:"field-chooser",label:n.fieldChooser,onSelect:e.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:n.bestFit,disabled:d?.resizable===false,onSelect:()=>e.onBestFit(i)},{id:"best-fit-all",label:n.bestFitAll,onSelect:e.onBestFitAll});let D=o.getColumnStates().filter(N=>N.visible&&N.pinned===R).map(N=>N.id),P=D.indexOf(i),G=d?.reorderable!==false&&P>=0;return v.push({id:"sep-4",separator:true},{id:"move-left",label:n.moveLeft,disabled:!G||P<=0,onSelect:()=>o.moveColumn(i,D[P-1])},{id:"move-right",label:n.moveRight,disabled:!G||P<0||P>=D.length-1,onSelect:()=>o.moveColumn(i,D[P+2])},{id:"fixed-position",label:n.fixedPosition,items:[{id:"pin-left",label:n.pinLeft,disabled:R==="left",onSelect:()=>o.setColumnPinned(i,"left")},{id:"pin-right",label:n.pinRight,disabled:R==="right",onSelect:()=>o.setColumnPinned(i,"right")},{id:"pin-sticky",label:n.pinSticky,disabled:R==="sticky",onSelect:()=>o.setColumnPinned(i,"sticky")}]},{id:"unpin",label:n.unpin,disabled:R===null,onSelect:()=>o.setColumnPinned(i,null)}),v}var Zt=typeof window<"u"?react.useLayoutEffect:react.useEffect,ca=1e8,En=null;function ma(){if(En!==null)return En;if(typeof document>"u"||!document.body)return null;let t=document.createElement("div");t.setAttribute("aria-hidden","true"),t.style.cssText="position:fixed;top:0;left:-9999px;width:80px;height:80px;overflow:auto;visibility:hidden;pointer-events:none;";let e=document.createElement("div");e.style.cssText="width:1px;",e.style.height=`${ca}px`,t.appendChild(e),document.body.appendChild(t),t.scrollTop=ca;let n=t.scrollTop;return qo=e.offsetHeight>0?e.offsetHeight:null,t.remove(),n>0&&(En=n),En}var qo=null;function Ns(){return qo===null&&ma(),qo}function Uo(t){return Math.abs(t)}function pa(t,e){return getComputedStyle(e).direction==="rtl"?-t:t}function Jo(t,e){if(e)return t;if(t.dataSource!=null&&!Array.isArray(t.dataSource))throw new Error("[datagrid] a server-side DataSource is an Enterprise feature. Pass an array to DataGrid, or import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise.");if(t.columns?.some(d=>d.spanRows)){t.debugMode&&console.warn("[datagrid] cell span/merge (spanRows) is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let d={...t,columns:t.columns.map(g=>g.spanRows?{...g,spanRows:void 0}:g)};return Jo(d,e)}if(t.tree){t.debugMode&&console.warn("[datagrid] tree data is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let d={...t};return delete d.tree,Jo(d,e)}if(!t.grouping)return t.masterDetail?Yo(t):t;let{groupBy:n,groupSummaries:o}=t.grouping,l=n==null?[]:typeof n=="string"?[n]:n;if(l.length<=1&&!o)return t.masterDetail?Yo(t):t;t.debugMode&&console.warn("[datagrid] multi-level grouping and group summaries are Enterprise features \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use them.");let i={...t,grouping:{...t.grouping,groupBy:l.slice(0,1),groupSummaries:false}};return t.masterDetail?Yo(i):i}function Yo(t){t.debugMode&&console.warn("[datagrid] master-detail is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let e={...t};return delete e.masterDetail,e}function Ms(t){return jsxRuntime.jsx(Jn,{locale:t.locale,messages:t.messages,children:jsxRuntime.jsx(yo,{theme:t.theme,density:t.density,palette:t.palette,children:jsxRuntime.jsx(Ps,{...t})})})}function Ps(t){let e=ee(),{className:n,style:o,dark:l=false,theme:i,palette:d,striped:g=true,emptyText:f,sortable:m=true,filterRow:c=false,headerFilter:h=false,filterIconMode:R="hover",columnReorder:b=true,columnResize:v=true,loadingOverlay:D=true,announcements:P=true,groupPanel:G=false,showRowCount:N=false,toolbar:x=false,toolbarExcel:L=false,toolbarPdf:B=false,filterPanel:_=false,filterPanelLabels:K,onOpenFilterBuilder:w,toolbarItemsBefore:E,toolbarItemsAfter:I,renderRow:u,stateStoring:C,headerMenu:H=true,focusedRow:Y=false,focusedRowKey:ne,onFocusedRowChanged:de,footer:Je,footerMenu:fe=true,onRowClick:pe,onRowActivate:be,onReady:Te,renderCellContent:ye,getCellClassName:ve,renderOverlay:Ae,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:Qe,enterpriseEdition:te=false,renderDetail:Fe,renderEditForm:Be,density:ce,rowMenu:oe,cellMenu:s,autoColumns:T,rowDrag:M,tooltip:q,pinnedTopRows:S,pinnedBottomRows:re,footerPosition:V="bottom",autoSizeStrategy:ue="none",highlightSearch:De=true,...ie}=t,F=react.useMemo(()=>{let r=ie.columns;if(r&&r.length>0)return r;let p=ie.dataSource;if(!Array.isArray(p)||p.length===0)return r??[];let k=typeof T=="object"?T:void 0;return T===false?r??[]:datagridCore.inferColumns(p,k)},[ie.columns,ie.dataSource,T]),Ve={...ie,columns:F},et=datagridCore.isPackagedTheme(i)?datagridCore.THEME_ROW_HEIGHT[i][ce??"normal"]:ce?datagridCore.DENSITY_ROW_HEIGHT[ce]:datagridCore.DEFAULT_ROW_HEIGHT,ze=Ve.rowHeight===void 0?{...Ve,rowHeight:et}:Ve,Ee=te?Number.POSITIVE_INFINITY:1,Ne=Jo(ze,te),{controller:a,rows:Ue,window:Rt,layout:le,sort:tt,rowHeight:y,visibleCount:$}=zn(Ne),U=Yn(a,t.printLayout),J=U.active?{...Rt,rows:{...Rt.rows,start:0,end:Ue.length,offsetY:0,totalHeight:0}}:Rt,O=react.useMemo(()=>F.some(r=>r.autoHeight===true),[F]),Re=h&&a.canListDistinctValues();h&&!Re&&ie.debugMode&&console.warn("[datagrid] headerFilter needs a column's distinct values. This grid is remote and its DataSource does not implement `loadDistinctValues` \u2014 implement it, or use `filterRow`.");let Ke=react.useRef(null);Zt(()=>{a.setEnterpriseEdition(te);},[a,te]),react.useEffect(()=>{Te?.(a);},[a,Te]),Zt(()=>{let r=ma();r!==null&&r<datagridCore.DEFAULT_MAX_SCROLL_OFFSET&&a.setMaxScrollOffset(r);let p=Ns();p!==null&&a.setMaxCanvasHeight(p);},[a]),Zt(()=>{let r=Ke.current;if(!r)return;let p=()=>{a.setViewportSize(r.clientWidth,r.clientHeight),r.style.setProperty("--dg-viewport-width",`${r.clientWidth}px`);let Z=r.querySelector(".kanuni-datagrid-rows"),W=r.querySelector(".kanuni-datagrid-canvas");if(Z&&W){let z=Z.getBoundingClientRect(),ae=W.getBoundingClientRect();a.setChromeOffsets(z.top-ae.top,ae.bottom-z.bottom);}datagridCore.calibrateMaxScrollOffset(r,a);};if(p(),typeof ResizeObserver>"u")return;let k=new ResizeObserver(p);k.observe(r);let A=r.querySelector(".kanuni-datagrid-canvas");return A&&k.observe(A),()=>k.disconnect()},[a]),Zt(()=>{if(!O)return;let r=Ke.current?.querySelector(".kanuni-datagrid-viewport");if(!r)return;let p=a.getVirtualWindow(),k=a.getRows(),A=new Map(a.getMeasuredRowHeights()),Z=false;for(let W=p.rows.start;W<p.rows.end;W++){let z=k[W];if(!z||z.kind!=="data")continue;let ae=r.querySelector(`[data-row-key="${CSS.escape(String(z.key))}"]`);if(!ae)continue;let se=ae.getBoundingClientRect().height;se>0&&A.get(z.key)!==se&&(A.set(z.key,se),Z=true);}Z&&a.setMeasuredRowHeights(A);}),react.useEffect(()=>{if(O)return a.events.on("columnStateChanged",()=>{a.clearMeasuredRowHeights();})},[a,O]),react.useEffect(()=>a.events.on("scrollRequested",r=>{let p=Ke.current;if(!p)return;r.scrollTop!==void 0&&(p.scrollTop=r.scrollTop),r.scrollLeft!==void 0&&(p.scrollLeft=pa(r.scrollLeft,p)),a.setScroll(p.scrollTop,Uo(p.scrollLeft));let k=r.scrollTop;k===void 0||Math.abs(p.scrollTop-k)<=1||setTimeout(()=>{let A=Ke.current;!A||Math.abs(A.scrollTop-k)<=1||(A.scrollTop=k,a.setScroll(A.scrollTop,Uo(A.scrollLeft)));},0);}),[a]);let Qo=qn(a,t.alignedGrids,Ke),ha=react.useCallback(r=>{let p=r.currentTarget;a.setScroll(p.scrollTop,Uo(p.scrollLeft)),Qo.syncScroll(p.scrollLeft);},[a,Qo]),wa=react.useCallback((r,p)=>a.toggleSort(r,p),[a]);Bo(a,C);let Ct=_o(a,M);react.useEffect(()=>{ne!=null&&a.getFocusedRowKey()!==ne&&a.focusRow(ne);},[a,ne]),react.useEffect(()=>{if(de)return a.events.on("focusedRowChanged",r=>de({rowKey:r.rowKey,row:r.row}))},[a,de]);let je=react.useRef(null),[Mn,ba]=react.useState(null);react.useEffect(()=>a.events.on("overlayChanged",r=>{ba(r.manual?r.overlay:null);}),[a]);let ya=react.useCallback(r=>{let p=a.getDataRowNode(r);if(p)return p;if(r==="")return;let k=Number(r);return Number.isNaN(k)?void 0:a.getDataRowNode(k)},[a]),Ce=te?t.notes:void 0;!te&&t.notes&&t.debugMode&&console.warn("[datagrid] cell notes are an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use them.");let Qt=!!Ce?.onChange&&Ce.menu!==false,jt=react.useCallback((r,p,k)=>Ce?Ce.get({rowKey:r,columnId:p,row:k})??null:null,[Ce]),jo=$o({rootRef:je,columnModel:a.getColumnModel(),getRowNode:ya,getNote:Ce?jt:void 0,config:q}),[er,Ra]=react.useState(0);react.useEffect(()=>{let r=new Set,p=[a.events.on("cellsFlashed",({rowKeys:k,columnIds:A,duration:Z})=>{let W=je.current;if(!W)return;let z=k.length?k.map(ke=>`[data-row-key="${CSS.escape(String(ke))}"]`).join(","):".kanuni-datagrid-row",ae=A.length?A.map(ke=>`[data-column-id="${CSS.escape(ke)}"]`).join(","):"[data-column-id]",se=[];W.querySelectorAll(z).forEach(ke=>{ke.querySelectorAll(ae).forEach(St=>se.push(St));});for(let ke of se)ke.classList.remove("kanuni-datagrid-cell--flash");W.offsetWidth;for(let ke of se)ke.classList.add("kanuni-datagrid-cell--flash");let Ye=setTimeout(()=>{for(let ke of se)ke.classList.remove("kanuni-datagrid-cell--flash");r.delete(Ye);},Z);r.add(Ye);}),a.events.on("cellsRefreshed",({revision:k})=>Ra(k))];return ()=>{p.forEach(k=>k()),r.forEach(clearTimeout);}},[a]);let Ca=react.useCallback((r,p)=>a.moveColumn(r,p),[a]),ka=react.useCallback((r,p,k)=>a.setColumnWidth(r,p,k??true),[a]),Pn=react.useCallback(r=>{if(!je.current)return;let p=Dn(je.current,r);p!==null&&a.setColumnWidth(r,p);},[a]),Ln=react.useCallback(()=>{let r=je.current;if(r)for(let p of a.getColumnStates()){if(!p.visible)continue;let k=Dn(r,p.id);k!==null&&a.setColumnWidth(p.id,k);}},[a]);react.useEffect(()=>{if(ue!=="fitGrid")return;let r=()=>a.sizeColumnsToFit();return r(),a.events.on("gridSizeChanged",r)},[a,ue]);let In=react.useRef(null);Zt(()=>{if(ue!=="fitCells"){In.current=null;return}In.current!==a&&je.current?.querySelector(".kanuni-datagrid-row .kanuni-datagrid-cell[data-column-id]")&&(In.current=a,Ln());});let[xa,tr]=react.useState({}),nr=t.filterDebounce??(a.isRemote()?200:0),Hn=react.useRef(false),en=react.useMemo(()=>datagridCore.datePeriodLabels(e),[e]),An=react.useRef(en);An.current=en;let Ta=react.useMemo(()=>datagridCore.periodSuggestionList(en),[en]),tn=react.useCallback((r,p)=>{let k=a.getColumnModel().getDataType(r);Hn.current=true;try{a.setColumnFilter(r,datagridCore.parseFilterInput(r,p,k,An.current),datagridCore.FILTER_PART_ROW);}finally{Hn.current=false;}},[a]),nt=react.useMemo(()=>datagridCore.createDebouncedCommit(nr),[nr]);react.useEffect(()=>()=>nt.cancelAll(),[nt]);let va=react.useCallback((r,p)=>{tr(k=>({...k,[r]:p})),nt.schedule(r,()=>tn(r,p));},[tn,nt]),Da=react.useCallback((r,p)=>{nt.cancel(r),tn(r,p);},[tn,nt]);react.useEffect(()=>a.events.on("filterChanged",()=>{if(Hn.current)return;let r=a.getColumnModel();tr(p=>po(p,{isPending:k=>nt.isPending(k),textFor:k=>{let A=a.getColumnFilter(k,datagridCore.FILTER_PART_ROW);return A?datagridCore.filterInputFromNode(k,A,r.getDataType(k),An.current):""}},r.getOrder()));}),[a,nt]);let[ge,ut]=react.useState(null),nn=react.useRef(0),Ga=react.useCallback((r,p)=>{let k=p.getBoundingClientRect(),A=a.getColumnModel().getDef(r),Z={left:k.left,top:k.bottom+2},W=A?.headerName??r,z=a.getColumnFilter(r,datagridCore.FILTER_PART_SET)??a.getColumnFilter(r,datagridCore.FILTER_PART_DEFAULT);if(!a.isRemote()){let se=++nn.current;ut({columnId:r,label:W,entries:[],selected:null,anchor:Z,loading:true}),a.getDistinctValueSetAsync(r).then(({entries:Ye,truncated:ke})=>{nn.current===se&&ut(St=>St&&St.columnId===r?{...St,entries:Ye,truncated:ke,capped:ke,selected:datagridCore.selectedLabelsFromFilter(z,Ye),loading:false}:St);});return}let ae=++nn.current;ut({columnId:r,label:W,entries:[],selected:null,anchor:Z,loading:true}),a.getDistinctValuesAsync(r).then(se=>{nn.current===ae&&ut(Ye=>Ye&&Ye.columnId===r?{...Ye,entries:se,selected:datagridCore.selectedLabelsFromFilter(z,se),loading:false}:Ye);});},[a]),Sa=react.useCallback(r=>{ge&&(a.setColumnFilter(ge.columnId,r,datagridCore.FILTER_PART_SET),ut(null));},[a,ge]),Ea=Object.keys(a.getColumnStates().reduce((r,p)=>(a.getColumnFilter(p.id)&&(r[p.id]=true),r),{})),At=a.getSelectionMode(),he=At!=="none"&&(ie.selection?.checkboxColumn??false),or=(ie.selection?.rowClick??(he?"toggle":"replace"))==="toggle",Na=react.useCallback((r,p)=>{a.handleRowClick(r.key,{ctrlKey:p.ctrlKey||or&&!p.shiftKey,metaKey:p.metaKey,shiftKey:p.shiftKey});},[a,or]),Ma=react.useCallback((r,p)=>a.focusCell(r.key,p),[a]),Pa=react.useCallback(r=>a.toggleRow(r.key),[a]),[Ot,rr]=react.useState(null),La=react.useCallback(()=>rr(null),[]),[Ft,On]=react.useState(null),ar=react.useCallback((r,p)=>{let A=(je.current?.querySelector(`[data-row-key="${CSS.escape(String(r))}"] [data-column-id="${CSS.escape(p)}"]`)??je.current)?.getBoundingClientRect();return {left:A?.left??0,top:(A?.bottom??0)+2}},[]),Ia=react.useCallback(r=>{let p=Ft;On(null),!(!p||!Ce?.onChange)&&Ce.onChange({rowKey:p.rowKey,columnId:p.columnId,row:p.row,text:r});},[Ft,Ce]),ir=react.useCallback((r,p)=>{if(!Ce?.onChange||Ce.menu===false)return [];let k=r.columnId;if(!k)return [];let A=a.getRowKey(r.row),Z=jt(A,k,r.row),W=()=>On({rowKey:A,columnId:k,row:r.row,text:Z??"",anchor:ar(A,k)}),z=[];return p&&z.push({separator:true,id:"__note-sep"}),z.push({id:"__note-edit",label:Z?e.editNote:e.addNote,onSelect:W}),Z&&z.push({id:"__note-delete",label:e.deleteNote,onSelect:()=>Ce.onChange?.({rowKey:A,columnId:k,row:r.row,text:null})}),z},[Ce,a,jt,ar,e]),[on,Fn]=react.useState(null),lr=react.useRef({x:0,y:0}),sr=react.useCallback(r=>Io(a,e,s,r,p=>{Fn({message:p,...lr.current}),console.error("[datagrid] export failed:",p);}),[a,e,s]),rn=react.useCallback((r,p,k,A,Z)=>{if(k.kind!=="data")return;let W={row:k.data,node:k,rowIndex:A,columnId:Z,selectedKeys:a.getSelectedKeys()},z=(typeof oe=="function"?oe(W):oe)??[],ae=ir(W,z.length>0),se=[...z,...ae,...sr(z.length+ae.length>0)];se.length!==0&&(lr.current={x:r,y:p},Fn(null),rr({x:r,y:p,items:se,context:W}));},[oe,a,ir,sr]),dr=react.useCallback(r=>r?.target?.closest("[data-column-id]")?.dataset.columnId??null,[]),kt=react.useCallback((r,p,k,A,Z)=>{let W=A??-1;r&&a.notifyRow(r,k,W);let z=dr(Z);z!==null&&a.notifyCell(p,k,W,z);},[a,dr]),Ha=react.useCallback((r,p,k)=>{pe?.(r),kt("rowClicked","cellClicked",r,p,k);},[pe,kt]),Aa=react.useCallback((r,p,k)=>{be?.(r),kt("rowDoubleClicked","cellDoubleClicked",r,p,k);},[be,kt]),Oa=react.useCallback((r,p,k)=>{if(kt(null,"cellContextMenu",r,p,k),!oe&&!Qt&&s===false||r.kind!=="data")return;k.preventDefault(),a.isRowSelected(r.key)||a.handleRowClick(r.key,{});let A=k.target.closest("[data-column-id]")?.dataset.columnId??null;rn(k.clientX,k.clientY,r,p,A);},[oe,Qt,s,a,rn,kt]),[Fa,Ba]=react.useState(null),[Ka,_a]=react.useState(null),[Bn,$a]=react.useState(()=>ie.grouping?.groupSummaries??false),[xt,Kn]=react.useState(null),[ur,_n]=react.useState(null),Wa=react.useCallback(()=>{a.getSelectedCount()>0?a.clearSelection():a.selectAll();},[a]),Va=$>0&&a.getSelectedCount()>=$?"all":a.getSelectedCount()>0?"some":"none",za=react.useCallback(r=>{let p=r.target;if(p.tagName==="INPUT"||p.tagName==="TEXTAREA"||p.isContentEditable)return;if((oe||Qt||s!==false)&&(r.key==="ContextMenu"||r.key==="F10"&&r.shiftKey)){let Z=a.getFocus(),W=Z?Ue.findIndex(ae=>ae.key===Z.rowKey):-1,z=W>=0?Ue[W]:void 0;if(z){let se=Ke.current?.querySelector(`[data-row-key="${CSS.escape(String(z.key))}"]`)?.getBoundingClientRect();rn(se?se.left+16:0,se?se.bottom:0,z,W,Z?.columnId??null),r.preventDefault();}return}let k=datagridCore.resolveGridCommand({key:r.key,ctrlKey:r.ctrlKey,metaKey:r.metaKey,shiftKey:r.shiftKey,altKey:r.altKey});if(!k)return;if(k.type==="copy"){Lt(a);return}if(k.type==="activate"){let Z=a.getFocus(),W=Z?Ue.find(z=>z.key===Z.rowKey):void 0;W&&be?.(W),k.preventDefault&&r.preventDefault();return}a.executeCommand(k),k.preventDefault&&r.preventDefault();let A=a.getFocusIndices();if(A&&Ke.current){let W=a.getColumnLayout().center.findIndex(ae=>ae.state.id===a.getFocus()?.columnId),z=a.ensureVisible(A.rowIndex,W===-1?void 0:W);if(z){let ae=Ke.current;z.scrollTop!==void 0&&(ae.scrollTop=z.scrollTop),z.scrollLeft!==void 0&&(ae.scrollLeft=pa(z.scrollLeft,ae)),a.setScroll(ae.scrollTop,ae.scrollLeft);}}},[a,Ue,be,oe,Qt,s,rn]),ct=react.useMemo(()=>datagridCore.bandDepth([...le.left,...le.center,...le.right]),[le]),Tt=Mt,$n=(c?2:1)+ct,an=S?.length??0,Ua=re?.length??0,ln=$n+an,sn=Fa??ie.grouping?.panel??G,Ya=a.getGroupLevels(),Xa=react.useCallback(r=>a.groupBy(r.slice(0,Ee)),[a,Ee]),qa=react.useCallback(r=>a.toggleGroup(r),[a]),cr=react.useCallback(r=>a.toggleGroupSelection(r),[a]),Ja=a.getColumnModel().runtime().filter(r=>r.state.visible&&r.def.groupable!==false),Ge=a.hasMasterDetail()&&!!Fe,me=t.rowNumbers??false,Za=me&&a.isPaginated()?a.getPage()*a.getPageSize():0;react.useEffect(()=>{a.setLeadWidth(oo(he,Ge,me));},[a,he,Ge,me]);let Qa=react.useCallback(r=>a.toggleDetail(r),[a]),ja=react.useCallback(r=>a.toggleTreeRow(r),[a]),pr=a.getSummaryDefs(),ei=a.getSummaries(),vt=Ka??Je??pr.length>0,Bt=vt&&V==="top",Wn=c?2:1,mr=Ne.grouping?.groupSummaries&&Bn?ie.summaries:void 0,gr=a.getGroupDisplay(),fr=react.useCallback(()=>{$a(r=>(a.setGroupSummaries(!r),!r));},[a]),ti=react.useCallback((r,p)=>{if(!fe)return;p.preventDefault();let k=a.getColumnModel().getDef(r),A=a.getColumnSummary(r),Z={columnId:r,headerName:k?.headerName??k?.field??r},W=[{id:"none",label:e.noTotal,disabled:A===null,onSelect:()=>a.setColumnSummary(r,null)},{id:"sep",separator:true},...datagridCore.allowedSummaryTypes(k?.dataType).map(z=>({id:z,label:datagridCore.summaryTypeLabels(e)[z],disabled:A?.type===z,onSelect:()=>a.setColumnSummary(r,z)}))];Kn({x:p.clientX,y:p.clientY,items:W,context:Z});},[a,fe]),ni=react.useCallback((r,p)=>{if(H===false)return;p.preventDefault();let k=a.getColumnModel().getDef(r),A={columnId:r,headerName:k?.headerName??k?.field??r},Z=Vo(A,{controller:a,groupPanelVisible:sn,footerVisible:vt,groupFootersAvailable:te,groupFootersVisible:Bn,onToggleGroupPanel:()=>Ba(!sn),onToggleFooter:()=>_a(!vt),onToggleGroupFooters:fr,onOpenFieldChooser:()=>_n({left:p.clientX,top:p.clientY}),onBestFit:Pn,onBestFitAll:Ln,maxGroupLevels:Ee,labels:Sn(e)}),W=typeof H=="function"?H(A,Z):Z;!W||W.length===0||Kn({x:p.clientX,y:p.clientY,items:W,context:A});},[H,a,sn,vt,te,Bn,fr,Pn,Ln,Ee,e]),Dt=a.getFocus(),oi=Dt?`${t.gridId}-cell-${String(Dt.rowKey)}-${Dt.columnId}`:void 0,Vn=a.getSelectedCount(),ri=react.useMemo(()=>{let r=[datagridCore.fillText(e.announceRows,{n:$})];if(tt.length>0){let p=tt.map(k=>{let A=a.getColumnModel().getDef(k.columnId),Z=String(A?.headerName??A?.field??k.columnId),W=k.direction==="desc"?e.announceDescending:e.announceAscending;return `${Z} ${W}`}).join(", ");r.push(datagridCore.fillText(e.announceSortedBy,{columns:p}));}return Vn>0&&r.push(datagridCore.fillText(e.announceSelected,{n:Vn})),r.join(", ")},[a,$,tt,Vn,e]),{centerColumns:ot,centerIndices:dn,stickyInsets:Gt,leadingSpacer:rt,trailingSpacer:at,rowStart:ai,rowEnd:hr}=Dr(le,J),un=a.getColumnModel(),pt=ai,ii=r=>{if(O)return;let p=a.getRowHeightAt(r);return p===y?void 0:p},li=Array.from(Ue.slice(pt,hr)),si=react.useMemo(()=>!me||a.getGroupLevels().length===0&&!a.hasMasterDetail()&&!a.hasTreePathRows()?null:Gr(Ue),[me,a,Ue]),di=a.hasCellSpans(),wr=react.useRef({start:0,end:0});wr.current={start:pt,end:hr-1};let ui=react.useCallback((r,p)=>{let k=a.getCellSpans(p);if(k.length===0)return null;let{start:A,end:Z}=wr.current,W=datagridCore.spanRoleAt(k,r,A,Z);if(!W)return null;if(W.role==="covered")return {kind:"covered"};let z=a.getRowOffset(W.drawStart);return {kind:"draw",height:a.getRowOffset(W.drawEnd)+a.getRowHeightAt(W.drawEnd)-z,offset:0}},[a]),br=De?datagridCore.normalizeSearch(a.getSearchText()):"",ci={pathOf:r=>datagridCore.bandPath(a.getColumnModel().getDef(r)),collapsible:r=>a.isBandCollapsible(r),collapsed:r=>a.isBandCollapsed(r),onToggle:r=>a.toggleBand(r),labels:{expand:e.expandDetails,collapse:e.collapseDetails}},yr={layout:le,centerColumns:ot,leadingSpacer:rt,trailingSpacer:at,defs:pr,values:ei,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,onPickSummary:fe?ti:void 0,emptyHint:fe?"\xB7":""};return jsxRuntime.jsxs("div",{className:`kanuni-datagrid-root${l?" kanuni-datagrid-dark":""}${U.active?" kanuni-datagrid-print":""}${datagridCore.themeClassName(i,ce,d)}${n?` ${n}`:""}`,style:{"--dg-row-height":`${y}px`,"--dg-grip-inset":me?`${Et}px`:"0px",...o},dir:datagridCore.isRtlLocale(t.locale)?"rtl":void 0,"data-grid-id":t.gridId,"data-theme":i,"data-palette":d,"data-auto-height":O?"":void 0,ref:je,children:[x&&jsxRuntime.jsx(Go,{controller:a,dark:l,columnChooser:t.toolbarColumnChooser??true,exportExcel:te&&L,exportPdf:te&&B,itemsBefore:E,itemsAfter:I,onOpenColumnChooser:r=>_n(p=>p?null:r)}),sn&&jsxRuntime.jsx(Do,{columns:Ja,levels:Ya,onSetLevels:Xa,maxLevels:Ee,onExpandAll:()=>a.expandAllGroups(),onCollapseAll:()=>a.collapseAllGroups()}),jsxRuntime.jsx("div",{className:"kanuni-datagrid-scroller",ref:Ke,onScroll:ha,onKeyDown:za,tabIndex:0,role:"grid","aria-rowcount":$+$n+an+Ua,"aria-colcount":le.left.length+le.center.length+le.right.length+(he?1:0)+(Ge?1:0)+(me?1:0),"aria-multiselectable":At==="multiple"||void 0,"aria-activedescendant":oi,"aria-label":t.gridId,children:jsxRuntime.jsxs("div",{className:"kanuni-datagrid-canvas",style:{width:(le.totalWidth||0)+oo(he,Ge,me)||"100%"},role:"rowgroup",children:[jsxRuntime.jsx(so,{layout:le,centerColumns:ot,leadingSpacer:rt,trailingSpacer:at,depth:ct,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,rowHeight:Tt,bandFold:ci}),jsxRuntime.jsx(co,{bandOffset:ct*Tt,stickyInsets:Gt,layout:le,centerColumns:ot,leadingSpacer:rt,trailingSpacer:at,sort:tt,sortable:m,onSort:wa,headerFilter:Re,filteredColumns:Ea,onOpenFilter:Ga,filterIconMode:R,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,selectAllState:Va,onToggleSelectAll:Wa,draggable:G,reorderable:b,onReorder:Ca,resizable:v,onResize:ka,onAutoFit:Pn,onHeaderContextMenu:H===false?void 0:ni}),c&&jsxRuntime.jsx(mo,{bandOffset:ct*Tt,stickyInsets:Gt,layout:le,centerColumns:ot,leadingSpacer:rt,trailingSpacer:at,values:xa,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,onChange:va,onCommit:Da,periodSuggestions:Ta,periodListId:`${t.gridId}-filter-periods`}),Bt&&jsxRuntime.jsx(Rn,{...yr,position:"top",bandOffset:ct*Tt,headerRowsBetween:Wn}),S&&S.length>0&&jsxRuntime.jsx(Cn,{gridId:t.gridId,side:"top",rows:S,layout:le,columnModel:un,centerColumns:ot,centerIndices:dn,stickyInsets:Gt,leadingSpacer:rt,trailingSpacer:at,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,rowHeight:y,bandOffset:ct*Tt,headerRowsBetween:Wn+(Bt?1:0),ariaRowBase:$n}),a.hasStickyGroupHeaders()&&jsxRuntime.jsx(_r,{controller:a,width:le.totalWidth,bandOffset:ct*Tt,headerRowsBetween:Wn+(Bt?1:0),belowPinned:an>0?an*y+1:0,renderRow:(r,p,k)=>jsxRuntime.jsx(Nt,{gridId:t.gridId,node:r,index:p,layout:le,columnModel:un,centerColumns:ot,centerIndices:dn,stickyInsets:Gt,leadingSpacer:rt,trailingSpacer:at,striped:false,selected:false,groupSelection:he&&At==="multiple"?a.getGroupSelectionState(String(r.key)):void 0,onToggleGroupSelect:cr,groupDisplay:gr,focusedColumnId:null,checkboxColumn:he,rowNumberColumn:me,rowNumber:null,headerRowCount:ln,onToggleGroup:A=>{a.toggleGroup(A),a.scrollToRow(A);},revision:er,searchNeedle:br,summaryDefs:mr,detailColumn:Ge,height:k,renderCellContent:ye,getCellClassName:ve})}),jsxRuntime.jsxs("div",{className:"kanuni-datagrid-rows",style:{position:"relative",height:J.rows.totalHeight},onDragOver:Ct.bodyHandlers?.onDragOver,onDrop:Ct.bodyHandlers?.onDrop,onDragLeave:Ct.bodyHandlers?.onDragLeave,children:[jsxRuntime.jsx("div",{className:"kanuni-datagrid-viewport",style:{transform:`translateY(${J.rows.offsetY}px)`},children:li.map((r,p)=>r?jsxRuntime.jsx(Nt,{gridId:t.gridId,node:r,index:pt+p,layout:le,columnModel:un,centerColumns:ot,centerIndices:dn,stickyInsets:Gt,leadingSpacer:rt,trailingSpacer:at,striped:g,selected:a.isRowSelected(r.key),groupSelection:r.kind==="group"&&he&&At==="multiple"?a.getGroupSelectionState(String(r.key)):void 0,onToggleGroupSelect:cr,groupDisplay:gr,focusedColumnId:Dt?.rowKey===r.key?Dt.columnId:null,rowFocused:Y&&Dt?.rowKey===r.key,rowDrag:Ct.handlers,dropSide:Ct.dropAt?.key===r.key?Ct.dropAt.side:null,renderRow:u,checkboxColumn:he,rowNumberColumn:me,getSpan:di?ui:void 0,getNote:Ce?jt:void 0,rowNumber:me?Sr(pt+p,si,Za):null,headerRowCount:ln,onRowClick:Ha,onRowMouseDown:At==="none"?void 0:Na,onRowDoubleClick:Aa,onToggleSelect:Pa,onCellMouseDown:Ma,onRowContextMenu:Oa,onToggleGroup:qa,onToggleTreeRow:ja,revision:er,searchNeedle:br,summaryDefs:mr,detailColumn:Ge,detailExpanded:Ge&&a.isDetailExpanded(r.key),onToggleDetail:Qa,renderDetail:Fe,renderEditForm:Be,height:ii(pt+p),renderCellContent:ye,getCellClassName:ve,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:Qe},String(r.key)):jsxRuntime.jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-row--loading",role:"row","aria-rowindex":pt+p+1+ln,"aria-busy":"true",children:jsxRuntime.jsx("div",{className:"kanuni-datagrid-cell kanuni-datagrid-loading-cell",role:"gridcell","aria-colindex":1,children:jsxRuntime.jsx("span",{className:"kanuni-datagrid-loading-bar"})})},`__loading-${pt+p}`))}),Ae?.()]}),re&&re.length>0&&jsxRuntime.jsx(Cn,{gridId:t.gridId,side:"bottom",rows:re,layout:le,columnModel:un,centerColumns:ot,centerIndices:dn,stickyInsets:Gt,leadingSpacer:rt,trailingSpacer:at,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,rowHeight:y,headerRowsBetween:vt&&!Bt?1:0,ariaRowBase:ln+$}),vt&&!Bt&&jsxRuntime.jsx(Rn,{...yr,position:"bottom"})]})}),(Mn==="noRows"||Mn===null&&$===0)&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-empty",children:f??e.noData}),_&&jsxRuntime.jsx(No,{controller:a,alwaysVisible:_==="always",onOpenBuilder:w,describeOptions:K}),D!==false&&jsxRuntime.jsx(Fo,{controller:a,delay:typeof D=="number"?D:void 0,forced:Mn==="loading"}),a.isPaginated()&&jsxRuntime.jsx(Eo,{page:a.getPage(),pageCount:a.getPageCount(),pageSize:a.getPageSize(),pageSizes:ie.pagination?.pageSizes,totalRows:$,onPage:r=>a.setPage(r),onNext:()=>a.nextPage(),onPrevious:()=>a.previousPage(),onPageSize:r=>a.setPageSize(r)}),P&&jsxRuntime.jsx("div",{className:"kanuni-datagrid-sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:ri}),Ft&&jsxRuntime.jsx(Ao,{anchor:Ft.anchor,value:Ft.text,dark:l,onCommit:Ia,onCancel:()=>On(null)}),Ot&&jsxRuntime.jsx(vn,{x:Ot.x,y:Ot.y,items:Ot.items,context:Ot.context,dark:l,onClose:La}),on&&jsxRuntime.jsx($e,{dark:l,children:jsxRuntime.jsx("button",{type:"button",role:"alert",className:"kanuni-datagrid-toolbar-error kanuni-datagrid-menu-error",style:{left:on.x,top:on.y},onClick:()=>Fn(null),children:on.message})}),xt&&jsxRuntime.jsx(vn,{x:xt.x,y:xt.y,items:xt.items,context:xt.context,dark:l,label:`${xt.context.headerName} column`,onClose:()=>Kn(null)}),jo&&jsxRuntime.jsx(Wo,{state:jo,dark:l}),ur&&jsxRuntime.jsx(So,{controller:a,columns:a.getColumnStates(),anchor:ur,dark:l,onClose:()=>_n(null)}),ge&&jsxRuntime.jsx(To,{gridId:t.gridId,columnId:ge.columnId,headerLabel:ge.label,entries:ge.entries,initialSelected:ge.selected,anchor:ge.anchor,loading:ge.loading,truncated:ge.truncated,onSearch:ge.capped&&!a.isRemote()?r=>{let{entries:p,truncated:k}=a.searchDistinctValues(ge.columnId,r);ut(A=>A&&A.columnId===ge.columnId?{...A,entries:p,truncated:k}:A);}:void 0,dark:l,onApply:Sa,onClose:()=>ut(null)},`${ge.columnId}:${ge.loading?"loading":"ready"}`)]})}function Is({defs:t,values:e,columnModel:n,rowCount:o,rowCountLabel:l}){let i=ee(),d=datagridCore.summaryTypeLabels(i);return t.length===0&&o===void 0?null:jsxRuntime.jsxs("div",{className:"kanuni-datagrid-summary-bar",role:"status","aria-label":i.summaryAria,children:[o!==void 0&&jsxRuntime.jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsxRuntime.jsx("strong",{children:o.toLocaleString()})," ",l??i.summaryRows]}),t.map(g=>{let f=e[datagridCore.summaryKey(g.columnId,g.type)],m=n.getDef(g.columnId),c=datagridCore.formatSummaryValue(g,f,m);return jsxRuntime.jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsxRuntime.jsxs("span",{className:"kanuni-datagrid-summary-label",children:[datagridCore.summaryLabel(g,d)," ",m?.headerName??g.columnId,":"]}),jsxRuntime.jsx("strong",{children:c})]},datagridCore.summaryKey(g.columnId,g.type))})]})}var Hs=react.memo(Is);function Fs(t,e){return Zo(t,e,e?.source,(n,o)=>n.computeChartData(o))}function Bs(t,e){return Zo(t,e,e?.source,(n,o)=>n.computeChartXYData(o))}function Ks(t,e){return Zo(t,e,e?.source,(n,o)=>n.computeChartBoxData(o))}function Zo(t,e,n,o){let[l,i]=react.useState(null);return react.useEffect(()=>{if(!t||!e){i(null);return}let d=n??"view",g=false,f=0,m=false,c=false,h=null,R=()=>{let D=++f;o(t,e).then(P=>{!g&&D===f&&i(P);},()=>{});},b=(D=false)=>{c||=D,!m&&(m=true,queueMicrotask(()=>{if(m=false,g)return;let P=t.chartBasis(d);!c&&P===h||(c=false,h=P,R());}));};h=t.chartBasis(d),R();let v=[t.events.on("contentReady",()=>b()),t.events.on("rowsChanged",()=>b()),t.events.on("dataUpdated",()=>b()),...d==="selection"?[t.events.on("selectionChanged",()=>b(true))]:[]];return ()=>{g=true,f++,v.forEach(D=>D());}},[t,e]),l}Object.defineProperty(exports,"ClientRowModel",{enumerable:true,get:function(){return datagridCore.ClientRowModel}});Object.defineProperty(exports,"ColumnModel",{enumerable:true,get:function(){return datagridCore.ColumnModel}});Object.defineProperty(exports,"DEFAULT_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.DEFAULT_ROW_HEIGHT}});Object.defineProperty(exports,"DENSITY_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.DENSITY_ROW_HEIGHT}});Object.defineProperty(exports,"DataGridController",{enumerable:true,get:function(){return datagridCore.DataGridController}});Object.defineProperty(exports,"GRID_PALETTES",{enumerable:true,get:function(){return datagridCore.GRID_PALETTES}});Object.defineProperty(exports,"GRID_THEMES",{enumerable:true,get:function(){return datagridCore.GRID_THEMES}});Object.defineProperty(exports,"GridStateStore",{enumerable:true,get:function(){return datagridCore.GridStateStore}});Object.defineProperty(exports,"SUMMARY_TYPE_LABEL",{enumerable:true,get:function(){return datagridCore.SUMMARY_TYPE_LABEL}});Object.defineProperty(exports,"THEME_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.THEME_ROW_HEIGHT}});Object.defineProperty(exports,"VirtualWindowEngine",{enumerable:true,get:function(){return datagridCore.VirtualWindowEngine}});Object.defineProperty(exports,"allowedSummaryTypes",{enumerable:true,get:function(){return datagridCore.allowedSummaryTypes}});Object.defineProperty(exports,"andFilters",{enumerable:true,get:function(){return datagridCore.andFilters}});Object.defineProperty(exports,"attachStateStoring",{enumerable:true,get:function(){return datagridCore.attachStateStoring}});Object.defineProperty(exports,"bandDepth",{enumerable:true,get:function(){return datagridCore.bandDepth}});Object.defineProperty(exports,"bandPath",{enumerable:true,get:function(){return datagridCore.bandPath}});Object.defineProperty(exports,"computeColumnLayout",{enumerable:true,get:function(){return datagridCore.computeColumnLayout}});Object.defineProperty(exports,"computeHeaderBands",{enumerable:true,get:function(){return datagridCore.computeHeaderBands}});Object.defineProperty(exports,"createRestDataSource",{enumerable:true,get:function(){return datagridCore.createRestDataSource}});Object.defineProperty(exports,"describeFilter",{enumerable:true,get:function(){return datagridCore.describeFilter}});Object.defineProperty(exports,"downloadBlob",{enumerable:true,get:function(){return datagridCore.downloadBlob}});Object.defineProperty(exports,"fillText",{enumerable:true,get:function(){return datagridCore.fillText}});Object.defineProperty(exports,"filterInputFromNode",{enumerable:true,get:function(){return datagridCore.filterInputFromNode}});Object.defineProperty(exports,"formatSummaryValue",{enumerable:true,get:function(){return datagridCore.formatSummaryValue}});Object.defineProperty(exports,"humanizeField",{enumerable:true,get:function(){return datagridCore.humanizeField}});Object.defineProperty(exports,"importCsv",{enumerable:true,get:function(){return datagridCore.importCsv}});Object.defineProperty(exports,"inferColumns",{enumerable:true,get:function(){return datagridCore.inferColumns}});Object.defineProperty(exports,"isDataRow",{enumerable:true,get:function(){return datagridCore.isDataRow}});Object.defineProperty(exports,"isDataSource",{enumerable:true,get:function(){return datagridCore.isDataSource}});Object.defineProperty(exports,"isFilterGroup",{enumerable:true,get:function(){return datagridCore.isFilterGroup}});Object.defineProperty(exports,"isGroupRow",{enumerable:true,get:function(){return datagridCore.isGroupRow}});Object.defineProperty(exports,"isPackagedTheme",{enumerable:true,get:function(){return datagridCore.isPackagedTheme}});Object.defineProperty(exports,"lookupLabel",{enumerable:true,get:function(){return datagridCore.lookupLabel}});Object.defineProperty(exports,"moveRowInArray",{enumerable:true,get:function(){return datagridCore.moveRowInArray}});Object.defineProperty(exports,"parseCsv",{enumerable:true,get:function(){return datagridCore.parseCsv}});Object.defineProperty(exports,"parseFilterInput",{enumerable:true,get:function(){return datagridCore.parseFilterInput}});Object.defineProperty(exports,"sniffDelimiter",{enumerable:true,get:function(){return datagridCore.sniffDelimiter}});Object.defineProperty(exports,"summaryKey",{enumerable:true,get:function(){return datagridCore.summaryKey}});Object.defineProperty(exports,"summaryLabel",{enumerable:true,get:function(){return datagridCore.summaryLabel}});Object.defineProperty(exports,"summaryTypeLabels",{enumerable:true,get:function(){return datagridCore.summaryTypeLabels}});Object.defineProperty(exports,"themeClassName",{enumerable:true,get:function(){return datagridCore.themeClassName}});exports.BAND_ROW_HEIGHT=Mt;exports.DEFAULT_HEADER_MENU_LABELS=la;exports.DataGrid=Ms;exports.GridColumnChooser=So;exports.GridContextMenu=vn;exports.GridFilterPanel=No;exports.GridFilterRow=mo;exports.GridFooterRow=Rn;exports.GridGroupPanel=Do;exports.GridHeader=co;exports.GridHeaderBands=so;exports.GridHeaderFilterPopup=To;exports.GridLoadingOverlay=Fo;exports.GridNoteEditor=Ao;exports.GridPager=Eo;exports.GridPinnedRows=Cn;exports.GridPopupPanel=bt;exports.GridPortal=$e;exports.GridRow=Nt;exports.GridSummaryBar=Hs;exports.GridSurfaceProvider=yo;exports.GridTextProvider=Jn;exports.GridToolbar=Go;exports.GridTooltip=Wo;exports.PRINT_MAX_ROWS=Un;exports.ROW_DRAG_MIME=Gn;exports.SHORTCUT_COPY=Yr;exports.SHORTCUT_CUT=Ul;exports.SHORTCUT_PASTE=Yl;exports.buildCellMenuItems=Io;exports.buildHeaderMenu=Vo;exports.copyToClipboard=Lt;exports.headerMenuLabels=Sn;exports.measureBestFitWidth=Dn;exports.reconcileFilterInputs=po;exports.runGridExport=zt;exports.useAlignedGrids=qn;exports.useAnchoredPopup=$t;exports.useCellTooltip=$o;exports.useDataGrid=zn;exports.useGridChartBoxData=Ks;exports.useGridChartData=Fs;exports.useGridChartXYData=Bs;exports.useGridSurfaceClass=Ro;exports.useGridText=ee;exports.usePrintLayout=Yn;exports.useRowDrag=_o;exports.useStateStoring=Bo;exports.writeClipboardText=Xr;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import {createContext,memo,useState,useRef,useEffect,useContext,useMemo,useCallback,useSyncExternalStore,useLayoutEffect}from'react';import {getGridDictionary,isDetailRow,isEditFormRow,isFillerRow,isGroupRow,lookupLabel,fillText,summaryLabel,formatSummaryValue,summaryKey,summaryTypeLabels,describeFilter,filterLabels,computeHeaderBands,downloadBlob,ExportAbortedError,DataGridController,themeClassName,foldText,attachStateStoring,isDataRow,inferColumns,isPackagedTheme,THEME_ROW_HEIGHT,DENSITY_ROW_HEIGHT,DEFAULT_ROW_HEIGHT,DEFAULT_MAX_SCROLL_OFFSET,calibrateMaxScrollOffset,datePeriodLabels,periodSuggestionList,parseFilterInput,FILTER_PART_ROW,createDebouncedCommit,FILTER_PART_SET,FILTER_PART_DEFAULT,selectedLabelsFromFilter,resolveGridCommand,bandDepth,allowedSummaryTypes,spanRoleAt,normalizeSearch,isRtlLocale,filterInputFromNode,bandPath,formatDateValue}from'@kanunilabs/datagrid-core';export{ClientRowModel,ColumnModel,DEFAULT_ROW_HEIGHT,DENSITY_ROW_HEIGHT,DataGridController,GRID_PALETTES,GRID_THEMES,GridStateStore,SUMMARY_TYPE_LABEL,THEME_ROW_HEIGHT,VirtualWindowEngine,allowedSummaryTypes,andFilters,attachStateStoring,bandDepth,bandPath,computeColumnLayout,computeHeaderBands,createRestDataSource,describeFilter,downloadBlob,fillText,filterInputFromNode,formatSummaryValue,humanizeField,importCsv,inferColumns,isDataRow,isDataSource,isFilterGroup,isGroupRow,isPackagedTheme,lookupLabel,moveRowInArray,parseCsv,parseFilterInput,sniffDelimiter,summaryKey,summaryLabel,summaryTypeLabels,themeClassName}from'@kanunilabs/datagrid-core';import {createPortal,flushSync}from'react-dom';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var pi=["contentReady","viewportChanged","columnStateChanged","sortChanged","filterChanged","selectionChanged","focusChanged","summariesChanged"];function Wn(t){let[e,n]=useState(()=>new DataGridController(t));useEffect(()=>{if(e.isDisposed()){n(new DataGridController(t));return}return ()=>e.dispose()},[e]);let o=useRef(0),l=useCallback(G=>{let N=()=>{o.current++,G();},x=pi.map(L=>e.events.on(L,N));return ()=>x.forEach(L=>L())},[e]),i=useCallback(()=>o.current,[]);useSyncExternalStore(l,i,i);let{dataSource:d,columns:m}=t,w=useRef(true);useEffect(()=>{if(w.current){w.current=false;return}Array.isArray(d)&&e.setData(d);},[e,d]);let g=useRef(true);useEffect(()=>{if(g.current){g.current=false;return}e.setColumns(m);},[e,m]);let p=t.pagination?t.pagination.enabled!==false:false;useEffect(()=>{e.setPaginationEnabled(p);},[e,p]);let f=t.rowHeight,y=useRef(true);useEffect(()=>{if(y.current){y.current=false;return}f!==void 0&&e.setRowHeight(f);},[e,f]);let b=t.selection?.mode??"none";useEffect(()=>{e.setSelectionMode(b);},[e,b]);let v=t.grouping?.groupBy??null,D=JSON.stringify(v==null?[]:typeof v=="string"?[v]:v),P=useRef(true);return useEffect(()=>{if(P.current){P.current=false;return}e.groupBy(JSON.parse(D));},[e,D]),{controller:e,rows:e.getRows(),window:e.getVirtualWindow(),layout:e.getColumnLayout(),sort:e.getSort(),rowHeight:e.getRowHeight(),visibleCount:e.getVisibleCount(),totalCount:e.getTotalCount()}}var ln=0,Vn=5e3;function gi(t){if(t===void 0||t===false)return null;let e=t===true?{}:t;return {always:e.always??false,maxRows:e.maxRows??Vn}}function fi(t,e){return t<=e}function Un(t,e){let n=gi(e),o=n!==null,l=n?.always??false,i=n?.maxRows??Vn,[d,m]=useState(false),w=useCallback(()=>m(true),[]),g=useCallback(()=>m(false),[]);useEffect(()=>{if(!o||l||typeof window>"u"||typeof window.addEventListener!="function")return;let f=()=>{let b=t.getRows().length;if(!fi(b,i)){t.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${b} rows exceeds maxRows (${i}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}flushSync(()=>m(true));},y=()=>flushSync(()=>m(false));return window.addEventListener("beforeprint",f),window.addEventListener("afterprint",y),()=>{window.removeEventListener("beforeprint",f),window.removeEventListener("afterprint",y);}},[o,l,i,t]);let p=l||d;return useEffect(()=>{if(!p||typeof document>"u")return;let f=document.documentElement;return ln++,f.classList.add("kanuni-datagrid-printing"),()=>{ln--,ln<=0&&(ln=0,f.classList.remove("kanuni-datagrid-printing"));}},[p]),{active:p,begin:w,end:g}}var sn=new Map,zn=new Set;function Rr(t,e){let n=sn.get(t);return n?[...n].filter(o=>o!==e):[]}function Yn(t,e,n){let o=useRef(null);return useEffect(()=>{if(!e)return;let i={controller:t,scroller:()=>n.current};o.current=i;let d=sn.get(e)??new Set;d.add(i),sn.set(e,d);let m=t.events.on("columnStateChanged",()=>{if(zn.has(e))return;let w=Rr(e,i);if(w.length===0)return;let g=t.getColumnStates();zn.add(e);try{for(let p of w)p.controller.applyColumnStates(g);}finally{zn.delete(e);}});return ()=>{m(),d.delete(i),d.size===0&&sn.delete(e),o.current=null;}},[t,e,n]),{syncScroll:useCallback(i=>{let d=o.current;if(!e||!d)return;let m=Rr(e,d);if(m.length!==0)for(let w of m){let g=w.scroller();g&&g.scrollLeft!==i&&(g.scrollLeft=i);}},[e])}}function dn(t,e,n){return t==="left"?e:t==="center"?n.left+e:n.left+n.center+e}function Cr(t,e){let{start:n,end:o}=e.columns,l=t.centerOffsets,i=l[n]??0,d=(l[o]??0)-i,m=Math.max(0,t.centerWidth-i-d),w=i,g=t.center.slice(n,o),p=Array.from({length:g.length},(b,v)=>n+v),f=t.stickyIndices.filter(b=>b<n);if(f.length>0){let b=f.map(v=>t.center[v]);w-=b.reduce((v,D)=>v+D.state.width,0),g=[...b,...g],p=[...f,...p];}let y=new Map;for(let b of t.stickyIndices){let v=t.centerStickyOffsets[b];v!==null&&y.set(t.center[b].state.id,v);}return {centerColumns:g,centerIndices:p,leadingSpacer:Math.max(0,w),trailingSpacer:m,rowStart:e.rows.start,rowEnd:e.rows.end,stickyInsets:y}}function kr(t){let e=[];for(let n=0;n<t.length;n++){let o=t[n];o&&o.kind!=="data"&&e.push(n);}return e.length>0?e:null}function xr(t,e,n=0){if(!e)return n+t+1;let o=0,l=e.length;for(;o<l;){let i=o+l>>1;e[i]<t?o=i+1:l=i;}return n+t-o+1}var vr=createContext(getGridDictionary("en"));function Xn({locale:t,messages:e,children:n}){let o=useMemo(()=>getGridDictionary(t,e),[t,e]);return jsx(vr.Provider,{value:o,children:n})}function Q(){return useContext(vr)}var cn=36,pn=28,Gt=60,Ni=[["rowNumberColumn",Gt],["detailColumn",pn],["checkboxColumn",cn]];function to(t,e,n=false){return Xe({checkboxColumn:t,detailColumn:e,rowNumberColumn:n}).total}function Xe(t){let e=new Map,n=new Map,o=0,l=0;for(let[i,d]of Ni)t[i]&&(e.set(i,o),n.set(i,++l),o+=d);return {total:o,count:l,inset:i=>e.get(i)??0,colIndex:i=>n.get(i)??1}}function Zn(t){return t?t.kind==="draw"?" kanuni-datagrid-cell--span":" kanuni-datagrid-cell--span-covered":""}function jn(t,e,n){return t?t.kind==="covered"?e?n():null:jsx("div",{className:"kanuni-datagrid-span-box",style:{height:t.height},children:n()}):n()}function Qn(t,e){let n=t??(e==="number"?"right":"left");return n==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":n==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function un(t,e){if(e===""||t==="")return t;let n=foldText(t),o=n.indexOf(e);if(o===-1)return t;let l=[],i=0,d=0;for(;o!==-1;)o>i&&l.push(t.slice(i,o)),l.push(jsx("mark",{className:"kanuni-datagrid-highlight",children:t.slice(o,o+e.length)},d++)),i=o+e.length,o=n.indexOf(e,i);return i<t.length&&l.push(t.slice(i)),l}function Mi(t,e,n,o=""){if(t.renderCell)return t.renderCell({value:e,row:n.data,node:n,column:t});let l=lookupLabel(t,e);if(l!==null)return un(l,o);if(t.valueFormatter){let i=t.valueFormatter(e,n.data);return typeof i=="string"?un(i,o):i}return t.dateFormat&&t.dataType==="date"?un(formatDateValue(e,t.dateFormat),o):e==null?"":un(String(e),o)}function Pi({gridId:t,node:e,index:n,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:m,leadingSpacer:w,trailingSpacer:g,striped:p,selected:f,groupSelection:y,onToggleGroupSelect:b,groupDisplay:v="fullWidth",focusedColumnId:D,rowFocused:P=false,renderRow:G,checkboxColumn:N,rowNumberColumn:x=false,rowNumber:L=null,getNote:B,getSpan:_,headerRowCount:K,onRowClick:h,onRowMouseDown:E,onRowDoubleClick:I,onToggleSelect:u,onCellMouseDown:C,onRowContextMenu:H,searchNeedle:Y="",onToggleGroup:ne,summaryDefs:se,detailColumn:Je=false,detailExpanded:fe=false,onToggleDetail:pe,onToggleTreeRow:he,renderDetail:ke,renderEditForm:xe,renderCellContent:Ge,getCellClassName:Ae,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:je,rowDrag:te,dropSide:Fe=null,height:Be}){let ce=Q();if(isDetailRow(e))return jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-detail-row",role:"row","aria-rowindex":n+1+K,"data-row-key":String(e.key),"data-detail-for":String(e.parentKey),style:{height:e.height},children:jsx("div",{className:"kanuni-datagrid-detail-cell",role:"gridcell","aria-colindex":1,children:ke?.(e.data)})});if(isEditFormRow(e))return jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-editform-row",role:"row","aria-rowindex":n+1+K,"data-row-key":String(e.key),"data-editform-for":e.parentKey===null?"":String(e.parentKey),style:{height:e.height},children:jsx("div",{className:"kanuni-datagrid-editform-cell",role:"gridcell","aria-colindex":1,children:e.parentKey===null?null:xe?.(e.parentKey,e.data)})});if(isFillerRow(e))return null;if(isGroupRow(e)&&v!=="aligned"){let R=l.getDef(e.columnId),$=R?.headerName??e.columnId,z=lookupLabel(R,e.value)??e.display??(e.label===""?ce.filterBlank:e.label),J=e.aggregates??null;return jsx("div",{className:`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${e.level}${D?" kanuni-datagrid-group-row--focused":""}`,role:"row","aria-rowindex":n+1+K,"aria-expanded":e.expanded,"aria-level":e.level+1,"data-row-key":String(e.key),"data-group-key":String(e.key),"data-group-level":e.level,onClick:()=>ne?.(String(e.key)),children:jsxs("div",{className:"kanuni-datagrid-group-cell",role:"gridcell","aria-colindex":1,id:`${t}-cell-${String(e.key)}-__group`,style:e.level>0?{paddingLeft:8+e.level*18}:void 0,children:[y&&jsx("input",{type:"checkbox",className:"kanuni-datagrid-group-checkbox",tabIndex:-1,checked:y==="all",ref:A=>{A&&(A.indeterminate=y==="some");},"aria-label":fillText(ce.selectGroupAria,{count:String(e.count),group:z}),onChange:()=>b?.(String(e.key)),onClick:A=>A.stopPropagation(),onMouseDown:A=>A.stopPropagation()}),jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:e.expanded?"\u25BE":"\u25B8"}),jsxs("span",{className:"kanuni-datagrid-group-caption",children:[$,":"]}),jsx("span",{className:"kanuni-datagrid-group-label",children:z}),jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",e.count,")"]}),J&&se?.map(A=>jsxs("span",{className:"kanuni-datagrid-group-aggregate",children:[jsxs("span",{className:"kanuni-datagrid-group-aggregate-label",children:[summaryLabel(A)," ",l.getDef(A.columnId)?.headerName??A.columnId,":"]})," ",formatSummaryValue(A,J[summaryKey(A.columnId,A.type)],l.getDef(A.columnId))]},summaryKey(A.columnId,A.type)))]})})}let oe=[],s=Xe({rowNumberColumn:x,detailColumn:Je,checkboxColumn:N}),T=s.count,M=(R,$)=>({node:e,columnId:R,rowIndex:n,columnIndex:$,value:V?void 0:l.getCellValue(e.data,R)}),q=(R,$)=>{let z=()=>M(R,$);return {role:"gridcell",id:`${t}-cell-${String(e.key)}-${R}`,"aria-colindex":T+$+1,"data-column-id":R,onMouseDown:J=>{C?.(e,R),Oe?.(z(),J);},onMouseEnter:Ze?J=>Ze(z(),J):void 0,onDoubleClick:je?()=>je(z()):void 0}},S=e.kind==="data"||e.kind==="treePath"?e.tree:void 0,re=e.kind==="treePath",V=isGroupRow(e)?e:null,de=re||V!==null,Te=V?(o.left[0]??o.center[0]??o.right[0])?.state.id??null:null,ie=()=>{let R=V,$=l.getDef(R.columnId),z=lookupLabel($,R.value)??R.display??(R.label===""?ce.filterBlank:R.label);return jsxs("span",{className:"kanuni-datagrid-group-inline",style:{paddingInlineStart:R.level*16},children:[jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:R.expanded?"\u25BE":"\u25B8"}),jsxs("span",{className:"kanuni-datagrid-group-caption",children:[$?.headerName??R.columnId,":"]}),jsx("span",{className:"kanuni-datagrid-group-label",children:z}),jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",R.count,")"]})]})},F=(R,$)=>{let z=V.aggregates?se?.find(J=>J.columnId===$):void 0;return z?jsx("span",{className:"kanuni-datagrid-group-aggregate-value",children:formatSummaryValue(z,V.aggregates[summaryKey($,z.type)],R)}):null},Ve=S?(o.left[0]??o.center[0]??o.right[0])?.state.id??null:null,et=(R,$,z)=>{if(V)return $===Te?ie():F(R,$);if(Ge&&!re){let A=Ge(M($,z));if(A!==void 0)return A}let J=re?$===Ve?jsx("span",{className:"kanuni-datagrid-tree-path-label",children:e.label}):null:Mi(R,l.getCellValue(e.data,$),e,Y);return S&&$===Ve?jsxs("span",{className:S.ancestorOnly?"kanuni-datagrid-tree-cell kanuni-datagrid-tree-cell--ancestor":"kanuni-datagrid-tree-cell",style:{paddingInlineStart:S.depth*16},children:[S.hasChildren?jsx("button",{type:"button",className:"kanuni-datagrid-tree-toggle","data-tree-toggle":"","aria-expanded":S.expanded,"aria-label":S.expanded?ce.collapseDetails:ce.expandDetails,onClick:A=>{A.stopPropagation(),he?.(e.key);},children:S.expanded?"\u25BE":"\u25B8"}):jsx("span",{className:"kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf"}),J]}):J},Ue=(R,$)=>{if(!Ae||V)return "";let z=Ae(M(R,$));return z?` ${z}`:""},Se=R=>!B||e.kind!=="data"?"":B(e.key,R,e.data)?" kanuni-datagrid-cell--noted":"",Ee=R=>_&&e.kind==="data"?_(n,R):null,a=(R,$)=>{let z=R.autoHeight?" kanuni-datagrid-cell--wrap":"";return !R.cellClassName||de?z:z+ze(R,$)},ze=(R,$)=>{let z=R.cellClassName;if(!z)return "";if(typeof z=="string")return ` ${z}`;let J=e.data,A=z({value:l.getCellValue(J,$),row:J,node:e,column:R});return A?` ${A}`:""};if(x){let R=e.kind==="data"&&L!==null;oe.push(jsx("div",{role:"gridcell","aria-colindex":s.colIndex("rowNumberColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell",style:{width:Gt,insetInlineStart:s.inset("rowNumberColumn")},children:R?L:""},"__rownum"));}Je&&oe.push(jsx("div",{role:"gridcell","aria-colindex":s.colIndex("detailColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell",style:{width:pn,insetInlineStart:s.inset("detailColumn")},children:de?null:jsx("button",{type:"button",className:"kanuni-datagrid-detail-toggle",tabIndex:-1,"aria-expanded":fe,"aria-label":fe?ce.collapseDetails:ce.expandDetails,onClick:R=>{R.stopPropagation(),pe?.(e.key);},children:fe?"\u25BE":"\u25B8"})},"__detail")),N&&oe.push(jsx("div",{role:"gridcell","aria-colindex":s.colIndex("checkboxColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell",style:{width:cn,insetInlineStart:s.inset("checkboxColumn")},onMouseDown:R=>R.stopPropagation(),onClick:R=>{R.target.tagName!=="INPUT"&&(R.stopPropagation(),u?.(e));},children:V?y&&jsx("input",{type:"checkbox",className:"kanuni-datagrid-group-checkbox",tabIndex:-1,checked:y==="all",ref:R=>{R&&(R.indeterminate=y==="some");},"aria-label":fillText(ce.selectGroupAria,{count:String(V.count),group:V.display??V.label}),onChange:()=>b?.(String(V.key)),onClick:R=>R.stopPropagation(),onMouseDown:R=>R.stopPropagation()}):re?null:jsx("input",{type:"checkbox",checked:f,tabIndex:-1,"aria-label":fillText(ce.selectRowAria,{row:String(e.key)}),onChange:()=>u?.(e),onClick:R=>R.stopPropagation(),onMouseDown:R=>R.stopPropagation()})},"__select"));let yt=s.total,ue=R=>D===R?" kanuni-datagrid-cell--focused":"",tt={left:o.left.length,center:o.center.length};return o.left.forEach((R,$)=>{let z=R.def,J=$===o.left.length-1,A=R.state.id,be=dn("left",$,tt);oe.push(jsx("div",{...q(A,be),className:`${Qn(z.align,z.dataType)} kanuni-datagrid-cell--pinned${J?" kanuni-datagrid-pin-edge-left":""}${ue(A)}${a(z,A)}${Ue(A,be)}${Se(A)}${Zn(Ee(A))}`,style:{width:R.state.width,insetInlineStart:o.leftOffsets[$]+yt},children:jn(Ee(A),D===A,()=>et(z,A,be))},A));}),w>0&&oe.push(jsx("div",{className:"kanuni-datagrid-spacer",style:{width:w}},"__lead")),i.forEach((R,$)=>{let z=R.def,J=R.state.id,A=dn("center",d?.[$]??$,tt),be=m?.get(J),Ke=be===void 0?"":" kanuni-datagrid-cell--pinned kanuni-datagrid-cell--sticky";oe.push(jsx("div",{...q(J,A),className:`${Qn(z.align,z.dataType)}${Ke}${ue(J)}${a(z,J)}${Ue(J,A)}${Se(J)}${Zn(Ee(J))}`,style:be===void 0?{width:R.state.width}:{width:R.state.width,insetInlineStart:be+yt},children:jn(Ee(J),D===J,()=>et(z,J,A))},J));}),g>0&&oe.push(jsx("div",{className:"kanuni-datagrid-spacer",style:{width:g}},"__trail")),o.right.forEach((R,$)=>{let z=R.def,J=$===0,A=R.state.id,be=dn("right",$,tt);oe.push(jsx("div",{...q(A,be),className:`${Qn(z.align,z.dataType)} kanuni-datagrid-cell--pinned${J?" kanuni-datagrid-pin-edge-right":""}${ue(A)}${a(z,A)}${Ue(A,be)}${Se(A)}${Zn(Ee(A))}`,style:{width:R.state.width,insetInlineEnd:o.rightOffsets[$]},children:jn(Ee(A),D===A,()=>et(z,A,be))},A));}),jsxs("div",{className:`kanuni-datagrid-row${p&&n%2===1?" kanuni-datagrid-row--odd":""}${f?" kanuni-datagrid-row--selected":""}${P?" kanuni-datagrid-row--focused":""}${re?" kanuni-datagrid-row--tree-path":""}${V?` kanuni-datagrid-group-row kanuni-datagrid-group-row--aligned kanuni-datagrid-group-row--level-${V.level}`:""}${Fe?` kanuni-datagrid-row--drop-${Fe}`:""}`,role:"row","aria-rowindex":n+1+K,"aria-selected":V?void 0:f,"aria-expanded":V?V.expanded:void 0,"aria-level":V?V.level+1:void 0,"data-row-key":String(e.key),"data-group-key":V?String(V.key):void 0,"data-group-level":V?V.level:void 0,style:Be===void 0?void 0:{height:Be},draggable:te?.draggable&&!V?true:void 0,onDragStart:te&&!V?R=>te.onDragStart(e,R):void 0,onDragEnd:te&&!V?()=>te.onDragEnd():void 0,onDragOver:te&&!V?R=>te.onDragOver(e,R):void 0,onDrop:te&&!V?R=>te.onDrop(e,R):void 0,onMouseDown:E&&!V?R=>E(e,R):void 0,onClick:V?()=>ne?.(String(V.key)):h?R=>h(e,n,R):void 0,onDoubleClick:I?R=>I(e,n,R):void 0,onContextMenu:H?R=>H(e,n,R):void 0,children:[te&&!V&&jsx("span",{className:"kanuni-datagrid-row-grip","data-testid":"dg-row-grip","aria-hidden":"true",title:ce.dragToReorder,onMouseEnter:()=>te.setDraggable(true),onMouseLeave:()=>te.setDraggable(false),children:jsx("svg",{width:"10",height:"14",viewBox:"0 0 10 14",focusable:"false",children:jsxs("g",{fill:"currentColor",children:[jsx("circle",{cx:"3",cy:"3",r:"1.2"}),jsx("circle",{cx:"7",cy:"3",r:"1.2"}),jsx("circle",{cx:"3",cy:"7",r:"1.2"}),jsx("circle",{cx:"7",cy:"7",r:"1.2"}),jsx("circle",{cx:"3",cy:"11",r:"1.2"}),jsx("circle",{cx:"7",cy:"11",r:"1.2"})]})})}),G&&e.kind==="data"?G({row:e.data,node:e,rowIndex:n,selected:f,focused:P}):oe]})}var Ft=memo(Pi);var St=26;function no(t,e){return computeHeaderBands(t,e)}function oo(t,e=""){return `kanuni-datagrid-band-cell${t.spacer?" kanuni-datagrid-band-cell--spacer":""}${e}`}function ro(t,e){let n=jsx("span",{className:"kanuni-datagrid-band-label",children:t.label});if(!e||t.spacer||t.columnIds.length===0)return n;let o=e.pathOf(t.columnIds[0]).slice(0,t.level+1);if(o.length!==t.level+1||!e.collapsible(o))return n;let l=e.collapsed(o);return jsxs(Fragment,{children:[jsx("button",{type:"button",className:"kanuni-datagrid-band-toggle","aria-expanded":!l,"aria-label":l?e.labels.expand:e.labels.collapse,title:l?e.labels.expand:e.labels.collapse,onClick:i=>{i.stopPropagation(),e.onToggle(o);},children:jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:[jsx("rect",{x:"2",y:"2",width:"12",height:"12",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.3"}),jsx("path",{d:"M5 8h6",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"}),l&&jsx("path",{d:"M8 5v6",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})]})}),n]})}function Hi({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:o,depth:l,checkboxColumn:i=false,detailColumn:d=false,rowNumberColumn:m=false,rowHeight:w=St,bandFold:g}){if(l<=0)return null;let p=Xe({rowNumberColumn:m,detailColumn:d,checkboxColumn:i}).total,f=no(t.left,l),y=no(e,l),b=no(t.right,l),v=(D,P,G)=>{let N=G;for(let x=0;x<P;x++)N+=D[x].width;return N};return jsx(Fragment,{children:Array.from({length:l},(D,P)=>jsxs("div",{className:"kanuni-datagrid-band-row",role:"row","aria-rowindex":P+1,style:{width:t.totalWidth+p,height:w,top:P*w},children:[p>0&&jsx("div",{className:"kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned",style:{width:p,insetInlineStart:0},"aria-hidden":"true"}),(f[P]??[]).map((G,N)=>jsx("div",{className:oo(G,` kanuni-datagrid-band-cell--pinned${N===(f[P]?.length??0)-1?" kanuni-datagrid-pin-edge-left":""}`),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width,insetInlineStart:v(f[P]??[],N,p)},title:G.spacer?void 0:G.label,children:ro(G,g)},G.columnIds[0])),n>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),(y[P]??[]).map(G=>jsx("div",{className:oo(G),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width},title:G.spacer?void 0:G.label,children:ro(G,g)},G.columnIds[0])),o>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:o}}),(b[P]??[]).map((G,N)=>{let x=b[P]??[],L=0;for(let B=N+1;B<x.length;B++)L+=x[B].width;return jsx("div",{className:oo(G,` kanuni-datagrid-band-cell--pinned${N===0?" kanuni-datagrid-pin-edge-right":""}`),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width,insetInlineEnd:L},title:G.spacer?void 0:G.label,children:ro(G,g)},G.columnIds[0])})]},P))})}var io=memo(Hi);var Oi=()=>jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:jsx("path",{d:"M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z",fill:"currentColor",stroke:"currentColor",strokeWidth:"0.6",strokeLinejoin:"round"})});function Fi(t,e){return t.renderHeader?t.renderHeader({column:t}):t.headerName??t.field??e}function Bi({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:o,leadingSpacer:l,trailingSpacer:i,sort:d,sortable:m,onSort:w,headerFilter:g=false,filteredColumns:p,onOpenFilter:f,filterIconMode:y="hover",checkboxColumn:b=false,detailColumn:v=false,rowNumberColumn:D=false,rowNumberHeader:P="#",selectAllState:G="none",onToggleSelectAll:N,draggable:x=false,reorderable:L=false,onReorder:B,resizable:_=false,onResize:K,onAutoFit:h,onHeaderContextMenu:E}){let I=Q(),u=Xe({rowNumberColumn:D,detailColumn:v,checkboxColumn:b}),C=new Map(d.map((s,T)=>[s.columnId,{direction:s.direction,order:T}])),H=new Set(p??[]),Y=[...n.left.map(s=>s.state.id),...o.map(s=>s.state.id),...n.right.map(s=>s.state.id)],[ne,se]=useState(null),Je=ne&&Y.includes(ne)?ne:Y[0],fe=s=>{se(s),document.querySelector(`[data-column-id="${s}"].kanuni-datagrid-header-cell`)?.focus();},pe=s=>{let T=Y.indexOf(Je),M=Math.min(Y.length-1,Math.max(0,T+s));M!==T&&fe(Y[M]);},he=useRef(null),ke=useRef(false),[xe,Ge]=useState(null),Ae=Y,Oe=s=>[...n.left,...n.center,...n.right].find(T=>T.state.id===s)?.state.pinned??null,Ze=(s,T)=>(ke.current?s>T.left+T.width/2:s<T.left+T.width/2)?"before":"after",je=(s,T)=>{let M=he.current;if(!L||!M||M===s||Oe(M)!==Oe(s))return;T.preventDefault(),T.dataTransfer.dropEffect="move";let q=Ze(T.clientX,T.currentTarget.getBoundingClientRect());Ge(S=>S?.id===s&&S.side===q?S:{id:s,side:q});},te=(s,T)=>{let M=he.current;if(Ge(null),!L||!M||M===s||Oe(M)!==Oe(s))return;if(T.preventDefault(),T.stopPropagation(),Ze(T.clientX,T.currentTarget.getBoundingClientRect())==="before")B?.(M,s);else {let S=Ae[Ae.indexOf(s)+1];B?.(M,S===M?Ae[Ae.indexOf(s)+2]:S);}he.current=null;},[Fe,Be]=useState(null),ce=(s,T)=>{if(!_)return;T.preventDefault(),T.stopPropagation();let M=T.currentTarget,q=T.clientX,S=s.state.width,re=ke.current?-1:1,V=s.state.id;Be(V),M.setPointerCapture(T.pointerId);let de=S,Te=false,ie=Ve=>{Te=true,de=S+(Ve.clientX-q)*re,K?.(V,de,false);},F=()=>{M.releasePointerCapture?.(T.pointerId),M.removeEventListener("pointermove",ie),M.removeEventListener("pointerup",F),M.removeEventListener("pointercancel",F),Te&&K?.(V,de,true),Be(null);};M.addEventListener("pointermove",ie),M.addEventListener("pointerup",F),M.addEventListener("pointercancel",F);},oe=(s,T,M)=>{let q=s.def,S=s.state.id,re=m&&q.sortable!==false,V=g&&q.filterable!==false,de=C.get(S),Te=x&&q.groupable!==false||L&&q.reorderable!==false,ie=xe?.id===S?xe.side:null;return jsxs("div",{className:`kanuni-datagrid-header-cell${T}${re?" kanuni-datagrid-header-cell--sortable":""}${ie?` kanuni-datagrid-header-cell--drop-${ie}`:""}${Fe===S?" kanuni-datagrid-header-cell--resizing":""}`,style:M,role:"columnheader","aria-sort":de?de.direction==="asc"?"ascending":"descending":"none","data-column-id":S,tabIndex:S===Je?0:-1,onFocus:()=>se(S),draggable:Te&&Fe===null,onDragStart:F=>{F.dataTransfer.setData("text/x-kanuni-column",S),F.dataTransfer.effectAllowed="move",he.current=S,ke.current=getComputedStyle(F.currentTarget).direction==="rtl";},onDragEnd:()=>{he.current=null,Ge(null);},onDragOver:L?F=>je(S,F):void 0,onDragLeave:L?()=>Ge(F=>F?.id===S?null:F):void 0,onDrop:L?F=>te(S,F):void 0,onContextMenu:E?F=>E(S,F):void 0,onClick:re?F=>w(S,F.shiftKey):void 0,onKeyDown:F=>{F.key==="ArrowRight"?(F.preventDefault(),pe(1)):F.key==="ArrowLeft"?(F.preventDefault(),pe(-1)):F.key==="Home"?(F.preventDefault(),fe(Y[0])):F.key==="End"?(F.preventDefault(),fe(Y[Y.length-1])):V&&F.altKey&&F.key==="ArrowDown"?(F.preventDefault(),f?.(S,F.currentTarget)):re&&(F.key==="Enter"||F.key===" ")&&(F.preventDefault(),w(S,F.shiftKey));},children:[jsx("span",{className:"kanuni-datagrid-header-label",children:Fi(q,S)}),de&&jsx("span",{className:"kanuni-datagrid-sort-indicator","aria-hidden":"true",children:de.direction==="asc"?"\u25B2":"\u25BC"}),de&&d.length>1&&jsx("span",{className:"kanuni-datagrid-sort-order","aria-hidden":"true",children:de.order+1}),g&&q.filterable!==false&&jsx("button",{type:"button",className:`kanuni-datagrid-filter-button${H.has(S)?" kanuni-datagrid-filter-button--active":""}${y==="always"?" kanuni-datagrid-filter-button--pinned":""}`,"aria-label":fillText(I.filterColumnAria,{column:q.headerName??S}),"aria-haspopup":"dialog","data-filter-button":S,tabIndex:-1,onClick:F=>{F.stopPropagation(),f?.(S,F.currentTarget);},children:jsx(Oi,{})}),_&&q.resizable!==false&&jsx("span",{className:"kanuni-datagrid-resize-handle","data-resize-handle":S,role:"presentation",onPointerDown:F=>ce(s,F),onDoubleClick:F=>{F.stopPropagation(),h?.(S);},onClick:F=>F.stopPropagation()})]},S)};return jsxs("div",{className:"kanuni-datagrid-header",role:"row","aria-rowindex":Math.round(t/St)+1,style:{width:n.totalWidth+u.total,top:t||void 0},children:[D&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell",role:"columnheader","aria-colindex":u.colIndex("rowNumberColumn"),"aria-label":I.rowNumberAria,style:{width:Gt,insetInlineStart:u.inset("rowNumberColumn")},children:P??""}),v&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell",role:"columnheader","aria-colindex":u.colIndex("detailColumn"),"aria-label":I.detailsAria,style:{width:pn,insetInlineStart:u.inset("detailColumn")}}),b&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell",role:"columnheader","aria-colindex":u.colIndex("checkboxColumn"),style:{width:cn,insetInlineStart:u.inset("checkboxColumn")},children:jsx("input",{type:"checkbox",checked:G==="all",ref:s=>{s&&(s.indeterminate=G==="some");},"aria-label":I.selectAllRows,onChange:()=>N?.()})}),n.left.map((s,T)=>oe(s,` kanuni-datagrid-header-cell--pinned${T===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:s.state.width,insetInlineStart:n.leftOffsets[T]+u.total})),l>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),o.map(s=>{let T=e?.get(s.state.id);return T===void 0?oe(s,"",{width:s.state.width}):oe(s," kanuni-datagrid-header-cell--pinned kanuni-datagrid-cell--sticky",{width:s.state.width,insetInlineStart:T+u.total})}),i>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((s,T)=>oe(s,` kanuni-datagrid-header-cell--pinned${T===0?" kanuni-datagrid-pin-edge-right":""}`,{width:s.state.width,insetInlineEnd:n.rightOffsets[T]}))]})}var so=memo(Bi);function uo(t,e,n=[]){let o=null,l=new Set,i=d=>{if(l.has(d)||(l.add(d),e.isPending(d)))return;let m=e.textFor(d);if(m===null)return;let w=t[d]??"";w!==m&&(w===""&&m===""||(o??={...t},o[d]=m));};for(let d of Object.keys(t))i(d);for(let d of n)i(d);return o??t}function _i({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:o,leadingSpacer:l,trailingSpacer:i,values:d,checkboxColumn:m=false,detailColumn:w=false,rowNumberColumn:g=false,placeholder:p,onChange:f,onCommit:y,periodSuggestions:b,periodListId:v}){let D=Q(),P=Xe({rowNumberColumn:g,detailColumn:w,checkboxColumn:m}),G=p??D.filterPlaceholder,N=(x,L,B)=>{let _=x.state.id,K=x.def.filterable!==false;return jsx("div",{className:`kanuni-datagrid-filter-cell${L}`,style:B,"data-column-id":_,children:K&&jsx("input",{className:"kanuni-datagrid-filter-input",type:"text",value:d[_]??"",placeholder:G,"aria-label":fillText(D.filterColumnAria,{column:x.def.headerName??_}),"data-filter-for":_,list:x.def.dataType==="date"&&v?v:void 0,onChange:h=>f(_,h.target.value),onKeyDown:h=>{h.key==="Enter"&&y?.(_,h.target.value);},onBlur:h=>y?.(_,h.target.value)})},_)};return jsxs("div",{className:"kanuni-datagrid-filter-row",role:"row","aria-rowindex":2,style:{width:n.totalWidth+P.total,"--dg-band-offset":`${t}px`},children:[v&&b&&b.length>0&&jsx("datalist",{id:v,children:b.map(x=>jsx("option",{value:x},x))}),P.total>0&&jsx("div",{className:"kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned",style:{width:P.total,insetInlineStart:0}}),n.left.map((x,L)=>N(x,` kanuni-datagrid-filter-cell--pinned${L===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:x.state.width,insetInlineStart:n.leftOffsets[L]+P.total})),l>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),o.map(x=>{let L=e?.get(x.state.id);return L===void 0?N(x,"",{width:x.state.width}):N(x," kanuni-datagrid-filter-cell--pinned kanuni-datagrid-cell--sticky",{width:x.state.width,insetInlineStart:L+P.total})}),i>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((x,L)=>N(x,` kanuni-datagrid-filter-cell--pinned${L===0?" kanuni-datagrid-pin-edge-right":""}`,{width:x.state.width,insetInlineEnd:n.rightOffsets[L]}))]})}var co=memo(_i);var Nr=createContext("");function ho({theme:t,density:e,palette:n,children:o}){let l=useMemo(()=>themeClassName(t,e,n),[t,e,n]);return jsx(Nr.Provider,{value:l,children:o})}function bo(){return useContext(Nr)}function $e({children:t,dark:e=false}){let[n,o]=useState(null),l=bo();return useEffect(()=>{let i=document.createElement("div");return i.className=`kanuni-datagrid-root kanuni-datagrid-portal${e?" kanuni-datagrid-dark":""}${l}`,document.body.appendChild(i),o(i),()=>{i.remove();}},[e,l]),n?createPortal(t,n):null}function Kt({anchor:t,onClose:e,margin:n=8,autoFocus:o=false}){let l=useRef(null),[i,d]=useState(t),m=useCallback(w=>{if(l.current=w,!w)return;let g=w.getBoundingClientRect(),p=t.top+g.height+n>window.innerHeight,f=t.top-g.height-n*2,y=p&&f>n?f:t.top;d({left:Math.max(n,Math.min(t.left,window.innerWidth-g.width-n)),top:Math.max(n,Math.min(y,window.innerHeight-g.height-n))}),o&&w.focus();},[t.left,t.top,n,o]);return useEffect(()=>{let w=f=>{let y=l.current;y&&!y.contains(f.target)&&e();},g=f=>{f.key==="Escape"&&e();},p=f=>{let y=l.current,b=f.target;y&&b instanceof Node&&y.contains(b)||e();};return document.addEventListener("mousedown",w),document.addEventListener("keydown",g),window.addEventListener("scroll",p,true),()=>{document.removeEventListener("mousedown",w),document.removeEventListener("keydown",g),window.removeEventListener("scroll",p,true);}},[e]),{position:i,ref:m,elementRef:l}}var fn=25,_t=new Map,Mr=200,ol=200,Pr=8;function rl(t){let e=Q();return useMemo(()=>({search:e.search,selectAll:e.filterSelectAll,clear:e.clear,apply:e.apply,cancel:e.cancel,blank:e.filterBlank,noMatch:e.filterNoMatch,loading:e.filterLoading,truncated:e.filterTruncated,...t}),[e,t])}var al=memo(function({label:e,display:n,index:o,active:l,checked:i,onToggle:d,onFocus:m}){return jsxs("div",{role:"option","aria-selected":i,tabIndex:0,className:`kanuni-datagrid-filter-item${l?" kanuni-datagrid-filter-item--active":""}`,"data-value":e,"data-index":o,onFocus:()=>m(o),onClick:()=>d(e),children:[jsx("input",{type:"checkbox",readOnly:true,checked:i,tabIndex:-1}),jsx("span",{children:n})]})});function ko({gridId:t,columnId:e,headerLabel:n,entries:o,initialSelected:l,anchor:i,loading:d=false,dark:m,onApply:w,onClose:g,truncated:p=false,onSearch:f,labels:y}){let b=rl(y),[v,D]=useState(""),[P,G]=useState(0),[N,x]=useState(()=>new Set(l??o.map(s=>s.label))),[L,B]=useState(false),_=useRef(null),K=useRef(null),[h,E]=useState(0),[I,u]=useState(240),C=`${t??""}:${e}`,H=_t.get(C),Y=useRef(H?.scrollTop??null),[ne,se]=useState(H&&H.width&&H.height?{width:H.width,height:H.height}:null),Je=useCallback(s=>{_.current=s,s?.focus();},[]),fe=useRef(null),pe=useMemo(()=>{let s=foldText(v.trim());if(!s||p)return o;let T=fe.current;(!T||T.entries!==o)&&(T={entries:o,lowered:o.map(q=>foldText(q.label)),needle:"",result:[]},fe.current=T);let M=T.needle!==""&&s.includes(T.needle)?T.result.filter(q=>foldText(q.label).includes(s)):o.filter((q,S)=>T.lowered[S].includes(s));return T.needle=s,T.result=M,M},[o,v,p]);useEffect(()=>{if(!f)return;let s=setTimeout(()=>f(v),150);return ()=>clearTimeout(s)},[v,f]),useEffect(()=>{L||l||x(new Set(o.map(s=>s.label)));},[o,L,l]);let he=useCallback(s=>{K.current=s,s&&u(s.clientHeight||240);},[]);useEffect(()=>{let s=K.current;!s||Y.current===null||d||s.scrollHeight<=s.clientHeight||(s.scrollTop=Y.current,Y.current=null,E(s.scrollTop));});let ke=useMemo(()=>{let s=pe.length,T=Math.max(0,Math.floor(h/fn)-Pr),M=Math.ceil(I/fn)+Pr*2,q=Math.min(T,Math.max(0,s-1)),S=Math.min(s,q+M);return {start:q,end:S,count:s,rows:pe.slice(q,S)}},[pe,h,I]),xe=Kt({anchor:i,onClose:g}),[Ge,Ae]=useState(null),Oe=(Ge??xe.position.left)+(ne?.width??260)+48<window.innerWidth?"right":"left",Ze=s=>{s.preventDefault(),s.stopPropagation();let T=xe.elementRef.current;if(!T)return;let M=T.getBoundingClientRect(),q=Oe,S={x:s.clientX,y:s.clientY,w:M.width,h:M.height,left:M.left},re=null,V=Te=>{let ie=Te.clientX-S.x,F=Te.clientY-S.y,Ve=window.innerHeight-M.top-12,et=Math.min(Ve,Math.max(ol,S.h+F));if(q==="right"){let Ue=window.innerWidth-S.left-12;re={width:Math.min(Ue,Math.max(Mr,S.w+ie)),height:et},se(re);}else {let Ue=S.left+S.w,Se=Ue-12,Ee=Math.min(Se,Math.max(Mr,S.w-ie));re={width:Ee,height:et},se(re),Ae(Ue-Ee);}K.current&&u(K.current.clientHeight);},de=()=>{if(window.removeEventListener("pointermove",V),window.removeEventListener("pointerup",de),re){let Te=_t.get(C);_t.set(C,{scrollTop:Te?.scrollTop??K.current?.scrollTop??0,width:Math.round(re.width),height:Math.round(re.height)});}};window.addEventListener("pointermove",V),window.addEventListener("pointerup",de);},je=useCallback(s=>{B(true),x(T=>{let M=new Set(T);return M.has(s)?M.delete(s):M.add(s),M});},[]),te=useCallback(s=>G(s),[]),Fe=()=>{if(d)return;if(N.size===o.length){w(null);return}let s=o.filter(S=>N.has(S.label)),T=s.some(S=>S.value===null||S.value===void 0),M=s.filter(S=>S.value!==null&&S.value!==void 0),q;M.length===0?q={columnId:e,operator:"isnull"}:T?q={logic:"or",nodes:[{columnId:e,operator:"in",value:M.map(S=>S.value)},{columnId:e,operator:"isnull"}]}:q={columnId:e,operator:"in",value:M.map(S=>S.value)},w(q);},Be=s=>{let T=Math.max(0,Math.min(pe.length-1,s));G(T);let M=xe.elementRef.current?.querySelector(`.kanuni-datagrid-filter-item[data-index="${T}"]`);M?.focus(),M?.scrollIntoView({block:"nearest"});},ce=s=>s.key.length===1&&!s.ctrlKey&&!s.metaKey&&!s.altKey,oe=s=>{let T=s.target===_.current;if(s.key==="Backspace"&&!T){s.preventDefault(),_.current?.focus(),D(M=>M.slice(0,-1)),G(0);return}if(s.key==="ArrowDown"){s.preventDefault(),Be(T?0:P+1);return}if(s.key==="ArrowUp"){s.preventDefault(),Be(T?pe.length-1:P-1);return}if(!T&&(s.key==="Home"||s.key==="End")){s.preventDefault(),Be(s.key==="Home"?0:pe.length-1);return}if(s.key===" "&&!T){s.preventDefault();let M=pe[P];M&&je(M.label);return}if(s.key==="Enter"){s.preventDefault(),Fe();return}!T&&ce(s)&&s.key!==" "&&(s.preventDefault(),_.current?.focus(),D(M=>M+s.key),G(0));};return jsx($e,{dark:m,children:jsxs("div",{ref:xe.ref,className:"kanuni-datagrid-filter-popup",style:{left:Ge??xe.position.left,top:xe.position.top,...ne?{width:ne.width,height:ne.height,maxHeight:"none"}:null},role:"dialog","aria-label":`${n} filter`,onKeyDown:oe,children:[jsx("div",{className:`kanuni-datagrid-popup-resize kanuni-datagrid-popup-resize--${Oe}`,"data-testid":"dg-filter-resize",onPointerDown:Ze}),jsx("input",{ref:Je,className:"kanuni-datagrid-filter-search",type:"search",placeholder:b.search,value:v,onChange:s=>{D(s.target.value),G(0);},"data-testid":"dg-filter-search"}),p&&jsx("p",{className:"kanuni-datagrid-filter-truncated","data-testid":"dg-filter-truncated",children:b.truncated}),jsxs("div",{className:"kanuni-datagrid-filter-actions",children:[jsx("button",{type:"button",onClick:()=>{B(true),x(new Set(o.map(s=>s.label)));},children:b.selectAll}),jsx("button",{type:"button",onClick:()=>{B(true),x(new Set);},children:b.clear})]}),jsxs("div",{ref:he,className:"kanuni-datagrid-filter-list",role:"listbox","aria-multiselectable":"true","aria-busy":d||void 0,"aria-setsize":pe.length,onScroll:s=>{let T=s.target.scrollTop;E(T),Y.current=null;let M=_t.get(C);_t.set(C,{...M,scrollTop:T});},children:[d&&jsx("div",{className:"kanuni-datagrid-filter-empty",children:b.loading}),!d&&pe.length===0&&jsx("div",{className:"kanuni-datagrid-filter-empty",children:b.noMatch}),ke.count>0&&jsx("div",{style:{height:pe.length*fn,position:"relative"},children:jsx("div",{style:{transform:`translateY(${ke.start*fn}px)`},children:ke.rows.map((s,T)=>{let M=ke.start+T;return jsx(al,{label:s.label,display:s.label===""?b.blank:s.label,index:M,active:M===P,checked:N.has(s.label),onToggle:je,onFocus:te},s.label)})})})]}),jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsx("button",{type:"button",onClick:g,children:b.cancel}),jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:Fe,disabled:d,"data-testid":"dg-filter-apply",children:b.apply})]})]})})}var xo="text/x-kanuni-column";function sl({columns:t,levels:e,onSetLevels:n,maxLevels:o=1,onExpandAll:l,onCollapseAll:i,emptyText:d}){let m=Q(),w=d??m.groupPanelHint,[g,p]=useState(false),f=useRef(null),[y,b]=useState(null),v=h=>t.find(I=>I.state.id===h)?.def.headerName??h,D=h=>{if(!h||e.includes(h))return;let E=e.length>=o?e.slice(0,o-1):[...e];n([...E,h]);},P=h=>n(e.filter(E=>E!==h)),G=(h,E)=>{let I=e.filter(C=>C!==h),u=Math.max(0,Math.min(I.length,E));n([...I.slice(0,u),h,...I.slice(u)]);},N=(h,E,I)=>{if(h===E)return;let C=e.filter(H=>H!==h).indexOf(E);C<0||G(h,I==="before"?C:C+1);},x=(h,E)=>{let I=h+E;I<0||I>=e.length||N(e[h],e[I],E<0?"before":"after");},L=(h,E)=>h<E.top+E.height/2?"before":"after",B=(h,E)=>{E.preventDefault(),E.stopPropagation();let I=L(E.clientY,E.currentTarget.getBoundingClientRect());b(null),p(false);let u=f.current;if(f.current=null,u){N(u,e[h],I);return}let C=E.dataTransfer.getData(xo);if(!C||e.includes(C))return;if(e.length>=o){D(C);return}let H=I==="before"?h:h+1;n([...e.slice(0,H),C,...e.slice(H)]);},_=(h,E,I)=>{let u=I.ctrlKey||I.metaKey;u&&(I.key==="ArrowUp"||I.key==="ArrowLeft")?(I.preventDefault(),x(h,-1)):u&&(I.key==="ArrowDown"||I.key==="ArrowRight")?(I.preventDefault(),x(h,1)):(I.key==="Delete"||I.key==="Backspace")&&(I.preventDefault(),P(E));},K=t.filter(h=>!e.includes(h.state.id));return jsxs("div",{className:`kanuni-datagrid-group-panel${g?" kanuni-datagrid-group-panel--over":""}`,onDragOver:h=>{h.preventDefault(),p(true);},onDragLeave:()=>p(false),onDrop:h=>{if(h.preventDefault(),p(false),b(null),f.current){f.current=null;return}D(h.dataTransfer.getData(xo));},children:[e.length>0?jsx("div",{className:"kanuni-datagrid-group-levels",children:e.map((h,E)=>jsx("div",{className:`kanuni-datagrid-group-level${y?.index===E?` kanuni-datagrid-group-level--drop-${y.side}`:""}`,style:{"--dg-group-level":E},"data-group-level":E,onDragOver:I=>{I.preventDefault(),I.stopPropagation();let u=L(I.clientY,I.currentTarget.getBoundingClientRect());b(C=>C?.index===E&&C.side===u?C:{index:E,side:u});},onDragLeave:()=>b(I=>I?.index===E?null:I),onDrop:I=>B(E,I),children:jsxs("span",{className:"kanuni-datagrid-group-chip",draggable:o>1&&e.length>1,tabIndex:0,role:"button","aria-label":`${fillText(m.groupLevelAria,{n:E+1})}: ${v(h)}`,onDragStart:I=>{f.current=h,I.dataTransfer.effectAllowed="move",I.dataTransfer.setData(xo,h);},onDragEnd:()=>{f.current=null,b(null);},onKeyDown:I=>_(E,h,I),children:[o>1&&jsx("span",{className:"kanuni-datagrid-group-chip-level",children:E+1}),v(h),jsx("button",{type:"button","aria-label":fillText(m.groupRemoveAria,{column:v(h)}),onClick:()=>P(h),children:"\xD7"})]})},h))}):jsx("span",{className:"kanuni-datagrid-group-panel-hint",children:w}),jsxs("div",{className:"kanuni-datagrid-group-panel-actions",children:[e.length>0&&jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:l,children:"Expand all"}),jsx("button",{type:"button",onClick:i,children:"Collapse all"})]}),jsxs("label",{className:"kanuni-datagrid-group-select",children:[jsx("span",{className:"kanuni-datagrid-sr-only",children:o>1?m.groupAddLevel:m.groupByColumn}),o>1?jsxs("select",{value:"",disabled:K.length===0,onChange:h=>D(h.target.value),children:[jsx("option",{value:"",children:m.groupAddLevelButton}),K.map(h=>jsx("option",{value:h.state.id,children:h.def.headerName??h.state.id},h.state.id))]}):jsxs("select",{value:e[0]??"",onChange:h=>n(h.target.value?[h.target.value]:[]),children:[jsx("option",{value:"",children:m.groupNoGrouping}),t.map(h=>jsx("option",{value:h.state.id,children:h.def.headerName??h.state.id},h.state.id))]})]})]})]})}var To=memo(sl);function pl({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:o,defs:l,values:i,checkboxColumn:d=false,detailColumn:m=false,rowNumberColumn:w=false,onPickSummary:g,emptyHint:p="",position:f="bottom",bandOffset:y=0,headerRowsBetween:b=0}){let v=Q(),D=summaryTypeLabels(v),P=new Map(l.map(x=>[x.columnId,x])),G=Xe({rowNumberColumn:w,detailColumn:m,checkboxColumn:d}).total,N=(x,L,B)=>{let _=x.state.id,K=P.get(_),h=K?i[summaryKey(K.columnId,K.type)]:void 0,E=x.def.dataType==="number";return jsx("div",{className:`kanuni-datagrid-footer-cell${L}${E?" kanuni-datagrid-footer-cell--number":""}${K?" kanuni-datagrid-footer-cell--active":""}`,style:B,role:"gridcell","data-column-id":_,"data-summary-type":K?.type??"",title:K?`${summaryLabel(K,D)} \u2014 ${x.def.headerName??_}`:void 0,onContextMenu:g?I=>g(_,I):void 0,onClick:g?I=>g(_,I):void 0,children:K?jsx("span",{className:"kanuni-datagrid-footer-value",children:formatSummaryValue(K,h,x.def)}):jsx("span",{className:"kanuni-datagrid-footer-hint",children:p})},_)};return jsxs("div",{className:`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${f}`,role:"row","aria-label":v.columnTotalsAria,style:{width:t.totalWidth+G,"--dg-band-offset":`${y}px`,"--dg-pinned-gap":String(b)},children:[G>0&&jsx("div",{className:"kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned",style:{width:G,insetInlineStart:0}}),t.left.map((x,L)=>N(x,` kanuni-datagrid-footer-cell--pinned${L===t.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:x.state.width,insetInlineStart:t.leftOffsets[L]+G})),n>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),e.map(x=>N(x,"",{width:x.state.width})),o>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:o}}),t.right.map((x,L)=>N(x,` kanuni-datagrid-footer-cell--pinned${L===0?" kanuni-datagrid-pin-edge-right":""}`,{width:x.state.width,insetInlineEnd:t.rightOffsets[L]}))]})}var wn=memo(pl);function fl(t,e){return `__dg_pinned_${t}_${e}`}function wl({gridId:t,side:e,rows:n,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:m,leadingSpacer:w,trailingSpacer:g,checkboxColumn:p=false,detailColumn:f=false,rowNumberColumn:y=false,rowHeight:b,bandOffset:v=0,headerRowsBetween:D,ariaRowBase:P}){return n.length===0?null:jsx("div",{className:`kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--${e}`,role:"rowgroup",style:{width:o.totalWidth||"100%","--dg-band-offset":`${v}px`,"--dg-pinned-gap":String(D)},children:n.map((G,N)=>{let x={kind:"data",key:fl(e,N),sourceIndex:-1,data:G};return jsx(Ft,{gridId:t,node:x,index:N,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:m,leadingSpacer:w,trailingSpacer:g,striped:false,selected:false,focusedColumnId:null,checkboxColumn:p,detailColumn:f,rowNumberColumn:y,rowNumber:null,headerRowCount:P,height:b},x.key)})})}var hn=memo(wl);async function Wt(t,e){try{let n=e==="csv"?await t.exportToCsv():e==="excel"?await t.exportToExcel():e==="excel-selected"?await t.exportToExcel({selectedOnly:!0}):await t.exportToPdf();return downloadBlob(n.blob,n.fileName),{completed:!0}}catch(n){return n instanceof ExportAbortedError?{completed:false}:{completed:false,error:n instanceof Error?n.message:String(n)}}}function ht({anchor:t,onClose:e,children:n,dark:o,className:l="",label:i,role:d="dialog"}){let m=Kt({anchor:t,onClose:e});return jsx($e,{dark:o,children:jsx("div",{ref:m.ref,className:`kanuni-datagrid-filter-popup ${l}`.trim(),style:{left:m.position.left,top:m.position.top},role:d,"aria-label":i,children:n})})}function Cl(t){let e=Q();return useMemo(()=>({search:e.toolbarSearch,csv:e.exportCsv,excel:e.exportExcel,excelSelected:e.exportExcelSelected,pdf:e.exportPdf,columns:e.columns,exporting:e.exporting,exportMenu:e.exportMenu,...t}),[e,t])}var kl=()=>jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:jsx("path",{d:"M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})});function xl({controller:t,search:e=true,exportCsv:n=true,exportExcel:o=false,exportPdf:l=false,columnChooser:i=true,dark:d,onOpenColumnChooser:m,itemsBefore:w,itemsAfter:g,searchDebounce:p=200,labels:f}){let y=Cl(f),[b,v]=useState(t.getSearchText()),[D,P]=useState(null),[G,N]=useState(null),[x,L]=useState(null);useEffect(()=>{let h=setTimeout(()=>t.setSearchText(b),p);return ()=>clearTimeout(h)},[t,b,p]);let[B,_]=useState(()=>t.getSelectedCount());useEffect(()=>(_(t.getSelectedCount()),t.events.on("selectionChanged",()=>_(t.getSelectedCount()))),[t]);let K=async h=>{P(h),L(null);let E=await Wt(t,h);E.error?L(E.error):N(null),P(null);};return jsxs("div",{className:"kanuni-datagrid-toolbar",children:[w,e&&jsx("input",{type:"search",className:"kanuni-datagrid-toolbar-search",placeholder:y.search,value:b,"aria-label":y.search,"data-testid":"dg-toolbar-search",onChange:h=>v(h.target.value)}),jsx("div",{className:"kanuni-datagrid-toolbar-spacer"}),i&&jsx("button",{type:"button","aria-haspopup":"dialog","data-testid":"dg-column-chooser",onClick:h=>{let E=h.currentTarget.getBoundingClientRect();m?.({left:E.left,top:E.bottom+2});},children:y.columns}),(n||o||l)&&jsx("button",{type:"button",className:"kanuni-datagrid-toolbar-icon-button","aria-haspopup":"menu","aria-label":y.exportMenu,title:y.exportMenu,disabled:D!==null,"data-testid":"dg-export-menu",onClick:h=>{let E=h.currentTarget.getBoundingClientRect();N(G?null:{left:E.right-190,top:E.bottom+2});},children:D?jsx("span",{className:"kanuni-datagrid-toolbar-busy"}):jsx(kl,{})}),G&&jsxs(ht,{anchor:G,onClose:()=>N(null),dark:d,role:"menu",label:y.exportMenu,className:"kanuni-datagrid-export-menu",children:[n&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-csv",onClick:()=>K("csv"),children:D==="csv"?y.exporting:y.csv}),o&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-excel",onClick:()=>K("excel"),children:D==="excel"?y.exporting:y.excel}),o&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null||B===0,"data-testid":"dg-export-excel-selected",onClick:()=>K("excel-selected"),children:D==="excel-selected"?y.exporting:y.excelSelected}),l&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-pdf",onClick:()=>K("pdf"),children:D==="pdf"?y.exporting:y.pdf})]}),g,x&&jsx("span",{className:"kanuni-datagrid-toolbar-error",role:"alert",children:x})]})}var vo=memo(xl);function vl(t){let e=Q();return useMemo(()=>({title:e.hiddenColumns,empty:e.noHiddenColumns,showAll:e.showAll,ok:e.ok,...t}),[e,t])}function Do({controller:t,columns:e,anchor:n,onClose:o,dark:l,labels:i}){let d=vl(i),m=e.filter(w=>!w.visible);return jsxs(ht,{anchor:n,onClose:o,dark:l,label:d.title,className:"kanuni-datagrid-column-chooser",children:[jsxs("div",{className:"kanuni-datagrid-filter-list",children:[m.length===0&&jsx("div",{className:"kanuni-datagrid-chooser-empty",children:d.empty}),m.map(w=>{let g=t.getColumnModel().getDef(w.id);return jsxs("label",{className:"kanuni-datagrid-filter-item",children:[jsx("input",{type:"checkbox",checked:false,"data-column-toggle":w.id,onChange:()=>t.setColumnVisible(w.id,true)}),jsx("span",{children:g?.headerName??w.id})]},w.id)})]}),m.length>0&&jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsx("button",{type:"button",onClick:()=>m.forEach(w=>t.setColumnVisible(w.id,true)),children:d.showAll}),jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:o,children:d.ok})]})]})}function Sl(t){let e=Q();return useMemo(()=>({first:e.pagerFirst,previous:e.pagerPrevious,next:e.pagerNext,last:e.pagerLast,page:e.pagerPage,of:e.pagerOf,rowsPerPage:e.pagerRowsPerPage,...t}),[e,t])}function El({page:t,pageCount:e,pageSize:n,pageSizes:o=[25,50,100,250],totalRows:l,onPage:i,onNext:d,onPrevious:m,onPageSize:w,labels:g}){let p=Sl(g),f=t<=0,y=t>=e-1,b=l===0?0:t*n+1,v=Math.min(l,(t+1)*n);return jsxs("div",{className:"kanuni-datagrid-pager",role:"navigation","aria-label":"Pagination",children:[jsxs("label",{className:"kanuni-datagrid-pager-size",children:[jsx("span",{children:p.rowsPerPage}),jsx("select",{value:n,"data-testid":"dg-page-size",onChange:D=>w(Number(D.target.value)),children:o.map(D=>jsx("option",{value:D,children:D},D))})]}),jsxs("span",{className:"kanuni-datagrid-pager-range","data-testid":"dg-page-range",children:[b.toLocaleString(),"\u2013",v.toLocaleString()," ",p.of," ",l.toLocaleString()]}),jsxs("div",{className:"kanuni-datagrid-pager-buttons",children:[jsx("button",{type:"button","aria-label":p.first,disabled:f,onClick:()=>i(0),children:"\xAB"}),jsx("button",{type:"button","aria-label":p.previous,disabled:f,"data-testid":"dg-page-prev",onClick:m,children:"\u2039"}),jsxs("span",{className:"kanuni-datagrid-pager-current","data-testid":"dg-page-current",children:[p.page," ",t+1," ",p.of," ",e]}),jsx("button",{type:"button","aria-label":p.next,disabled:y,"data-testid":"dg-page-next",onClick:d,children:"\u203A"}),jsx("button",{type:"button","aria-label":p.last,disabled:y,onClick:()=>i(e-1),children:"\xBB"})]})]})}var Go=memo(El);function Al(t){let e=Q();return useMemo(()=>({clear:e.filterRemove,toggle:e.filterToggle,builder:e.filterEditBuilder,empty:e.filterNone,...t}),[e,t])}function Ol({controller:t,onOpenBuilder:e,alwaysVisible:n=false,describeOptions:o,labels:l}){let i=Al(l),d=Q(),[,m]=useState(0);useEffect(()=>t.events.on("filterChanged",()=>m(f=>f+1)),[t]);let w=t.getEffectiveFilter(),g=t.isFilterEnabled(),p=describeFilter(w,t.getColumnModel(),{...o,labels:{...filterLabels(d),...o?.labels}});return !w&&!n?null:jsxs("div",{className:`kanuni-datagrid-filter-panel${g?"":" kanuni-datagrid-filter-panel--suspended"}`,"data-testid":"dg-filter-panel",role:"group","aria-label":i.toggle,children:[jsx("button",{type:"button",className:"kanuni-datagrid-filter-panel-clear",title:i.clear,"aria-label":i.clear,disabled:!w,"data-testid":"dg-filter-panel-clear",onClick:()=>{t.setFilter(null),t.clearColumnFilters(),t.setFilterEnabled(true);},children:"\xD7"}),jsx("input",{type:"checkbox",className:"kanuni-datagrid-filter-panel-toggle",checked:g,disabled:!w,title:i.toggle,"aria-label":i.toggle,"data-testid":"dg-filter-panel-toggle",onChange:f=>t.setFilterEnabled(f.target.checked)}),jsx("span",{className:"kanuni-datagrid-filter-panel-text",title:p??void 0,"data-testid":"dg-filter-panel-text",children:p??i.empty}),e&&jsx("button",{type:"button",className:"kanuni-datagrid-filter-panel-builder",title:i.builder,"aria-label":i.builder,"data-testid":"dg-filter-panel-builder",onClick:e,children:"\u25BE"})]})}var So=memo(Ol);var Rn=t=>!t.separator&&!t.disabled;function Cn({x:t,y:e,items:n,context:o,onClose:l,dark:i=false,label:d}){let m=Q(),w=useRef(null),[g,p]=useState({left:t,top:e}),[f,y]=useState(()=>n.findIndex(Rn)),[b,v]=useState(null),[D,P]=useState(null),G=useRef(null),[N,x]=useState(null);useEffect(()=>P(null),[b]);let L=useCallback((u,C)=>{if(v(u),u===null||!C)return;let H=C.getBoundingClientRect();x({left:H.left,right:H.right,top:H.top});},[]),B=u=>w.current?.querySelector(`[data-item-index="${u}"]`)??null,_=useCallback(u=>{if(G.current=u,!u||!N)return;let C=8,H=u.getBoundingClientRect(),Y=Math.max(C,Math.min(N.top-4,window.innerHeight-H.height-C)),se=N.right+H.width+C<=window.innerWidth?N.right:Math.max(C,N.left-H.width);P({left:se,top:Y});},[N]),K=useCallback(u=>{if(w.current=u,!u)return;let C=u.getBoundingClientRect(),H=8;p({left:Math.max(H,Math.min(t,window.innerWidth-C.width-H)),top:Math.max(H,Math.min(e,window.innerHeight-C.height-H))}),u.focus();},[t,e]);useEffect(()=>{let u=H=>{let Y=H.target;G.current?.contains(Y)||w.current&&!w.current.contains(Y)&&l();},C=()=>l();return document.addEventListener("mousedown",u),window.addEventListener("scroll",C,true),()=>{document.removeEventListener("mousedown",u),window.removeEventListener("scroll",C,true);}},[l]);let h=(u,C)=>{let H=n.length;for(let Y=1;Y<=H;Y++){let ne=(u+C*Y+H*H)%H;if(Rn(n[ne]))return ne}return u},E=u=>{let C=n[u];if(!(!C||!Rn(C))){if(C.items?.length){L(u,B(u));return}C.onSelect?.(o),l();}},I=u=>{switch(u.key){case "ArrowDown":y(C=>h(C,1));break;case "ArrowUp":y(C=>h(C,-1));break;case "Home":y(n.findIndex(Rn));break;case "End":y(h(0,-1));break;case "ArrowRight":if(n[f]?.items?.length)L(f,B(f));else return;break;case "ArrowLeft":if(b!==null)L(null);else return;break;case "Enter":case " ":E(f);break;case "Escape":l();break;case "Tab":l();return;default:return}u.preventDefault(),u.stopPropagation();};return jsxs($e,{dark:i,children:[jsx("div",{ref:K,className:"kanuni-datagrid-context-menu",role:"menu","aria-label":d??m.rowActions,tabIndex:-1,style:{left:g.left,top:g.top},onKeyDown:I,children:n.map((u,C)=>u.separator?jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},u.id??`sep-${C}`):jsx("div",{className:"kanuni-datagrid-menu-row",children:jsxs("button",{type:"button",role:"menuitem",className:`kanuni-datagrid-menu-item${C===f?" kanuni-datagrid-menu-item--active":""}`,disabled:u.disabled,"data-item-index":C,"aria-haspopup":u.items?.length?"menu":void 0,"aria-expanded":u.items?.length?b===C:void 0,onMouseEnter:H=>{y(C),L(u.items?.length?C:null,H.currentTarget);},onClick:()=>E(C),children:[u.icon&&jsx("span",{className:"kanuni-datagrid-menu-icon",children:u.icon}),jsx("span",{className:"kanuni-datagrid-menu-label",children:u.label}),u.shortcut&&jsx("span",{className:"kanuni-datagrid-menu-shortcut",children:u.shortcut}),u.items?.length?jsx("span",{className:"kanuni-datagrid-menu-caret",children:"\u203A"}):null]})},u.id??C))}),b!==null&&n[b]?.items?.length?jsx("div",{ref:_,className:"kanuni-datagrid-context-menu kanuni-datagrid-submenu",style:D?{left:D.left,top:D.top}:{left:0,top:0,visibility:"hidden"},role:"menu",children:n[b].items.map((u,C)=>u.separator?jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},u.id??`sub-sep-${C}`):jsxs("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:u.disabled,onClick:()=>{u.onSelect?.(o),l();},children:[u.icon&&jsx("span",{className:"kanuni-datagrid-menu-icon",children:u.icon}),jsx("span",{className:"kanuni-datagrid-menu-label",children:u.label})]},u.id??C))}):null]})}var Bl=typeof navigator<"u"&&/Mac|iPhone|iPad|iPod/.test(navigator.platform??""),Mo=Bl?"\u2318":"Ctrl+",Kr=`${Mo}C`,Kl=`${Mo}X`,_l=`${Mo}V`;function Nt(t,e={}){let n=t.getClipboardText(e);t.notifyClipboardGesture("copy",n?n.split(`
2
- `).length:0,()=>!n||!navigator.clipboard?.writeText?false:(_r(n),true));}function _r(t){navigator.clipboard?.writeText(t).catch(()=>{});}function $l(t){let e=t.getColumnModel();return t.getVisualColumnIds().some(n=>{let o=e.getDef(n)?.band;return typeof o=="string"?o!=="":Array.isArray(o)&&o.length>0})}function Wl(t){return t===false?[]:Array.isArray(t)?t:["csv","excel","excel-selected","pdf"]}var Vl={csv:"exportCsv",excel:"exportExcel","excel-selected":"exportExcelSelected",pdf:"exportPdf"};function Po(t,e,n,o,l){if(n===false)return [];let i=n===true||n===void 0?{}:n,d=[];i.copy!==false&&d.push({id:"__dg-copy",label:e.menuCopy,shortcut:Kr,onSelect:()=>Nt(t)}),i.copyWithHeaders!==false&&d.push({id:"__dg-copy-headers",label:e.menuCopyWithHeaders,onSelect:()=>Nt(t,{includeHeaders:true})}),i.copyWithGroupHeaders!==false&&$l(t)&&d.push({id:"__dg-copy-group-headers",label:e.menuCopyWithGroupHeaders,onSelect:()=>Nt(t,{includeGroupHeaders:true})});let m=Wl(i.export);if(m.length>0){let w=t.getSelectedCount()===0;d.push({id:"__dg-export",label:e.menuExport,items:m.map(g=>({id:`__dg-export-${g}`,label:e[Vl[g]],disabled:g==="excel-selected"&&w,onSelect:()=>{Wt(t,g).then(p=>{p.error&&l?.(p.error);});}}))});}return d.length>0&&o&&d.unshift({id:"__dg-sep-builtin",separator:true}),d}function Io({anchor:t,value:e,dark:n,onCommit:o,onCancel:l}){let i=Q(),[d,m]=useState(e),w=useRef(null);useEffect(()=>{let p=w.current;p&&(p.focus(),p.select());},[]);let g=()=>{let p=d.trim();o(p===""?null:p);};return jsxs(ht,{anchor:t,onClose:l,dark:n,label:i.noteEditorAria,className:"kanuni-datagrid-note-editor",children:[jsx("textarea",{ref:w,className:"kanuni-datagrid-note-input",value:d,rows:4,"aria-label":i.noteEditorAria,placeholder:i.notePlaceholder,onChange:p=>m(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.ctrlKey||p.metaKey)&&(p.preventDefault(),g()),p.key==="Escape"&&(p.preventDefault(),l());}}),jsxs("div",{className:"kanuni-datagrid-note-actions",children:[jsx("button",{type:"button",className:"kanuni-datagrid-note-cancel",onClick:l,children:i.cancel}),jsx("button",{type:"button",className:"kanuni-datagrid-note-save",onClick:g,children:i.save})]})]})}function ql(t){let e=Q();return useMemo(()=>({busy:e.busy,loading:e.busyLoading,encoding:e.busyEncoding,filtering:e.busyFiltering,sorting:e.busySorting,computing:e.busyComputing,grouping:e.busyGrouping,aggregating:e.busyAggregating,projecting:e.busyProjecting,exporting:e.busyExporting,cancel:e.cancel,...t}),[e,t])}var Jl=new Set(["filtering","sorting","computing","encoding","exporting"]);function Ao({controller:t,delay:e=300,labels:n,cancellable:o=true,forced:l=false}){let[i,d]=useState(()=>t.getBusy()),[m,w]=useState(false);useEffect(()=>(d(t.getBusy()),t.events.on("busyChanged",v=>d(v))),[t]);let g=i.busy&&i.background!==true;useEffect(()=>{if(!g){w(false);return}let v=setTimeout(()=>w(true),e);return ()=>clearTimeout(v)},[g,e]);let p=ql(n);if(!l&&(!m||!g))return null;let f=i.phase?p[i.phase]:p.busy,y=i.progress===null?null:Math.max(0,Math.min(100,i.progress)),b=o&&i.phase!==null&&Jl.has(i.phase)&&i.cancellable!==false;return jsx("div",{className:"kanuni-datagrid-loading-overlay",role:"status","aria-live":"polite","data-testid":"dg-loading-overlay","data-phase":i.phase??"busy","data-blocking":i.phase==="exporting"?"true":void 0,"aria-busy":"true",children:jsxs("div",{className:"kanuni-datagrid-loading-card",children:[jsx("span",{className:"kanuni-datagrid-loading-spinner","aria-hidden":"true"}),jsx("span",{className:"kanuni-datagrid-loading-label",children:f}),y!==null&&jsxs("div",{className:"kanuni-datagrid-loading-progress",role:"progressbar","aria-valuenow":Math.round(y),"aria-valuemin":0,"aria-valuemax":100,children:[jsx("div",{className:"kanuni-datagrid-loading-track",children:jsx("div",{className:"kanuni-datagrid-loading-fill",style:{width:`${y}%`}})}),jsxs("span",{className:"kanuni-datagrid-loading-percent",children:[Math.round(y),"%"]})]}),b&&jsx("button",{type:"button",className:"kanuni-datagrid-loading-cancel",onClick:()=>t.cancel(),"data-testid":"dg-loading-cancel",children:p.cancel})]})})}var zr=null;function Zl(){return typeof document>"u"?null:(zr??=document.createElement("canvas"),zr.getContext("2d"))}function Yr(t){let e=getComputedStyle(t);return `${e.fontStyle} ${e.fontWeight} ${e.fontSize} ${e.fontFamily}`}function jl(t){for(let e=t.firstElementChild;e;e=e.nextElementSibling)if(e.tagName!=="MARK")return true;return false}function Ql(t){let e=t.map(o=>[o.style.width,o.style.minWidth,o.style.maxWidth]);for(let o of t)o.style.width="max-content",o.style.minWidth="0",o.style.maxWidth="none";let n=0;for(let o of t){let l=Math.ceil(o.getBoundingClientRect().width);l>n&&(n=l);}return t.forEach((o,l)=>{[o.style.width,o.style.minWidth,o.style.maxWidth]=e[l];}),n}function kn(t,e){let n=Zl();if(!n)return null;let o=typeof CSS<"u"&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),l=t.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${o}"]`),i=t.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${o}"]`);if(!l&&i.length===0)return null;let d=0;if(l){let m=l.querySelector(".kanuni-datagrid-header-label")??l;n.font=Yr(m),d=n.measureText(m.textContent??"").width+44;}if(i.length>0){n.font=Yr(i[0]);let m=[];for(let w=0;w<i.length;w++){if(jl(i[w])){m.push(i[w]);continue}let g=i[w].textContent??"";if(g==="")continue;let p=n.measureText(g).width+20;p>d&&(d=p);}m.length>0&&(d=Math.max(d,Ql(m)));}return d===0?null:Math.round(Math.min(640,Math.max(48,d)))}function Oo(t,e){let n=useRef(e);n.current=e;let o=!!e?.enabled,l=e?.storageKey,i=e?.type;useEffect(()=>{if(o)return attachStateStoring(t,{...n.current,enabled:true})},[t,o,l,i]);}var xn="application/x-kanuni-row";function Bo(t,e){let n=!!e?.enabled,o=e?.group??null,l=e?.allowReordering??true,i=e?.allowDropInsert??o!==null,[d,m]=useState(false),[w,g]=useState(null),p=useRef(null),f=useRef(false),y=useRef(null),b=useRef(null),v=useRef(e);v.current=e;let D=useCallback(u=>t.getRowByKey(u),[t]),P=(u,C)=>{let H=C.getBoundingClientRect();return u.clientY<H.top+H.height/2?"before":"after"},G=useCallback((u,C)=>{if(!isDataRow(u))return;b.current=u.key,y.current=u.key,f.current=false,p.current=null;let H={gridId:t.gridId,group:o,rowKey:u.key,row:u.data};C.dataTransfer.setData(xn,JSON.stringify(H)),C.dataTransfer.setData("text/plain",String(u.key)),C.dataTransfer.effectAllowed="move",t.notifyRowDrag("enter",{rowKey:u.key}),C.stopPropagation();},[t,o]),N=useCallback(()=>{let u=y.current;u!==null&&t.notifyRowDragEnd({rowKey:u,dropped:f.current,overKey:p.current?.key??null,position:p.current?.side??null}),f.current=false,p.current=null,y.current=null,b.current=null,g(null),m(false);},[t]),x=useCallback(u=>u.dataTransfer.types.includes(xn)?b.current!==null?l:i&&o!==null:false,[l,i,o]),L=useCallback((u,C)=>{if(!isDataRow(u)||!x(C))return;if(C.preventDefault(),C.dataTransfer.dropEffect="move",b.current===u.key){p.current=null,g(null);return}let H=P(C,C.currentTarget),Y=p.current?.key!==u.key||p.current.side!==H;p.current={key:u.key,side:H},g(ne=>ne?.key===u.key&&ne.side===H?ne:{key:u.key,side:H}),Y&&b.current!==null&&t.notifyRowDrag("move",{rowKey:b.current,overKey:u.key,position:H});},[x,t]),B=useCallback((u,C,H)=>{let Y=null;try{let se=u.dataTransfer.getData(xn);Y=se?JSON.parse(se):null;}catch{Y=null;}if(!Y)return;if(Y.gridId===t.gridId){if(!l)return;let se=v.current?.onReorder;if(se){se({dragKey:Y.rowKey,targetKey:C,position:H,row:D(Y.rowKey)});return}t.moveRow(Y.rowKey,C,H);return}!i||o===null||Y.group!==o||v.current?.onAdd?.({row:Y.row,rowKey:Y.rowKey,otherGridId:Y.gridId,targetKey:C,position:H});},[t,l,i,o,D]),_=useCallback((u,C)=>{if(g(null),!isDataRow(u)||!x(C))return;C.preventDefault(),C.stopPropagation();let H=P(C,C.currentTarget);f.current=true,p.current={key:u.key,side:H},B(C,u.key,H),b.current=null;},[x,B]),K=useCallback(u=>{x(u)&&(u.preventDefault(),u.dataTransfer.dropEffect="move");},[x]),h=useCallback(u=>{g(null),x(u)&&(u.preventDefault(),f.current=true,p.current=null,B(u,null,"after"),b.current=null);},[x,B]),E=useCallback(u=>{let C=u.relatedTarget;C&&u.currentTarget.contains(C)||b.current!==null&&(p.current=null,g(null),t.notifyRowDrag("leave",{rowKey:b.current}));},[t]);return {handlers:n?{draggable:d,setDraggable:m,onDragStart:G,onDragEnd:N,onDragOver:L,onDrop:_}:void 0,dropAt:n?w:null,bodyHandlers:n?{onDragOver:K,onDrop:h,onDragLeave:E}:void 0}}var is=400;function qr(t){return t.scrollWidth>t.clientWidth+1||t.scrollHeight>t.clientHeight+1}function Jr(t){return (t.textContent??"").trim()}function ls(t){let{def:e,node:n,value:o,clipped:l,note:i}=t;if(i)return i;if(e&&n){if(typeof e.tooltip=="function"){let d=e.tooltip({value:o,row:n.data,node:n,column:e});return d||null}if(typeof e.tooltip=="string")return e.tooltip||null;if(e.tooltipField){let d=n.data[e.tooltipField];return d==null||d===""?null:String(d)}}return l&&l.length>0?l:null}function Ko({rootRef:t,columnModel:e,getRowNode:n,getNote:o,config:l}){let i=l?.enabled!==false,d=l?.delay??is,m=l?.showOnTruncation!==false,[w,g]=useState(null),p=useRef({columnModel:e,getRowNode:n,getNote:o,showOnTruncation:m,delay:d});return p.current={columnModel:e,getRowNode:n,getNote:o,showOnTruncation:m,delay:d},useEffect(()=>{if(!i){g(null);return}let f=t.current;if(!f)return;let y=null,b=null,v=()=>{y!==null&&(clearTimeout(y),y=null),b=null,g(null);},D=(x,L)=>{let{columnModel:B,getRowNode:_,getNote:K,showOnTruncation:h}=p.current,E=B.getDef(L),I=x.closest("[data-row-key]")?.dataset.rowKey,u=I===void 0?void 0:_(I);return ls({def:E,node:u,value:u?B.getCellValue(u.data,L):void 0,clipped:h&&qr(x)?Jr(x):null,note:u&&K?K(u.key,L,u.data):null})},P=(x,L)=>{let B=p.current.columnModel.getDef(x);if(B?.headerTooltip)return B.headerTooltip;if(!p.current.showOnTruncation)return null;let _=L.querySelector(".kanuni-datagrid-header-label")??L;if(!qr(_))return null;let K=Jr(_);return K.length>0?K:null},G=x=>{let B=x.target?.closest("[data-column-id]")??null;if(B===b||(v(),!B||!f.contains(B)))return;let _=B.dataset.columnId;if(!_)return;let K=B.classList.contains("kanuni-datagrid-header-cell");!K&&!B.closest("[data-row-key]")||(b=B,y=setTimeout(()=>{if(y=null,b!==B||!B.isConnected)return;let h=K?P(_,B):D(B,_);if(!h)return;let E=B.getBoundingClientRect();g({text:h,anchor:{top:E.top,left:E.left,width:E.width,height:E.height}});},p.current.delay));},N=x=>{let L=x.relatedTarget;b&&L&&b.contains(L)||v();};return f.addEventListener("mouseover",G),f.addEventListener("mouseout",N),f.addEventListener("mousedown",v),f.addEventListener("keydown",v),f.addEventListener("scroll",v,true),window.addEventListener("blur",v),()=>{v(),f.removeEventListener("mouseover",G),f.removeEventListener("mouseout",N),f.removeEventListener("mousedown",v),f.removeEventListener("keydown",v),f.removeEventListener("scroll",v,true),window.removeEventListener("blur",v);}},[i,t]),i?w:null}var jr=6,Pt=8;function _o({state:t,dark:e}){let[n,o]=useState(null),[l,i]=useState(null),{text:d,anchor:m}=t;return useLayoutEffect(()=>{if(!n)return;let{width:w,height:g}=n.getBoundingClientRect(),p=document.documentElement.clientWidth,f=document.documentElement.clientHeight,y=m.top+m.height+jr,b=m.top-g-jr,D=y+g+Pt<=f||b<Pt?y:b,P=Math.min(Math.max(Pt,m.left),Math.max(Pt,p-w-Pt));i({top:Math.min(D,f-g-Pt),left:P});},[n,d,m]),jsx($e,{dark:e,children:jsx("div",{ref:o,className:"kanuni-datagrid-tooltip",role:"tooltip",style:l?{top:l.top,left:l.left}:{top:0,left:0,visibility:"hidden"},children:d})})}function Tn(t){return {sortAsc:t.sortAsc,sortDesc:t.sortDesc,clearSort:t.clearSort,groupBy:t.groupByColumn,ungroup:t.ungroupColumn,showGroupPanel:t.showGroupPanel,hideGroupPanel:t.hideGroupPanel,showFooter:t.showFooter,hideFooter:t.hideFooter,showGroupFooters:t.showGroupFooters,hideGroupFooters:t.hideGroupFooters,hideColumn:t.hideColumn,fieldChooser:t.fieldChooser,bestFit:t.bestFit,bestFitAll:t.bestFitAll,fixedPosition:t.fixedPosition,pinLeft:t.pinLeft,pinRight:t.pinRight,pinSticky:t.pinSticky,unpin:t.unpin,moveLeft:t.moveLeft,moveRight:t.moveRight}}var ea=Tn(getGridDictionary("en"));function $o(t,e){let n={...ea,...e.labels},{controller:o,maxGroupLevels:l}=e,i=t.columnId,d=o.getColumnModel().getDef(i),m=o.getSort(),w=m.find(N=>N.columnId===i),g=o.getGroupLevels(),p=g.includes(i),f=d?.sortable!==false,y=o.getColumnStates().find(N=>N.id===i)?.pinned??null,b=d?.groupable!==false,v=[{id:"sort-asc",label:n.sortAsc,disabled:!f||w?.direction==="asc",onSelect:()=>o.setSort([{columnId:i,direction:"asc"}])},{id:"sort-desc",label:n.sortDesc,disabled:!f||w?.direction==="desc",onSelect:()=>o.setSort([{columnId:i,direction:"desc"}])},{id:"sort-clear",label:n.clearSort,disabled:!w,onSelect:()=>o.setSort(m.filter(N=>N.columnId!==i))},{id:"sep-1",separator:true},{id:"group",label:p?n.ungroup:n.groupBy,disabled:!b,onSelect:()=>{p?o.groupBy(g.filter(N=>N!==i)):o.groupBy([...g,i].slice(-l));}},{id:"group-panel",label:e.groupPanelVisible?n.hideGroupPanel:n.showGroupPanel,onSelect:e.onToggleGroupPanel}];e.groupFootersAvailable&&v.push({id:"group-footers",label:e.groupFootersVisible?n.hideGroupFooters:n.showGroupFooters,onSelect:e.onToggleGroupFooters}),v.push({id:"footer",label:e.footerVisible?n.hideFooter:n.showFooter,onSelect:e.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:n.hideColumn,disabled:o.getColumnStates().filter(N=>N.visible).length<=1,onSelect:()=>o.setColumnVisible(i,false)},{id:"field-chooser",label:n.fieldChooser,onSelect:e.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:n.bestFit,disabled:d?.resizable===false,onSelect:()=>e.onBestFit(i)},{id:"best-fit-all",label:n.bestFitAll,onSelect:e.onBestFitAll});let D=o.getColumnStates().filter(N=>N.visible&&N.pinned===y).map(N=>N.id),P=D.indexOf(i),G=d?.reorderable!==false&&P>=0;return v.push({id:"sep-4",separator:true},{id:"move-left",label:n.moveLeft,disabled:!G||P<=0,onSelect:()=>o.moveColumn(i,D[P-1])},{id:"move-right",label:n.moveRight,disabled:!G||P<0||P>=D.length-1,onSelect:()=>o.moveColumn(i,D[P+2])},{id:"fixed-position",label:n.fixedPosition,items:[{id:"pin-left",label:n.pinLeft,disabled:y==="left",onSelect:()=>o.setColumnPinned(i,"left")},{id:"pin-right",label:n.pinRight,disabled:y==="right",onSelect:()=>o.setColumnPinned(i,"right")},{id:"pin-sticky",label:n.pinSticky,disabled:y==="sticky",onSelect:()=>o.setColumnPinned(i,"sticky")}]},{id:"unpin",label:n.unpin,disabled:y===null,onSelect:()=>o.setColumnPinned(i,null)}),v}var qt=typeof window<"u"?useLayoutEffect:useEffect,ra=1e8,vn=null;function ia(){if(vn!==null)return vn;if(typeof document>"u"||!document.body)return null;let t=document.createElement("div");t.setAttribute("aria-hidden","true"),t.style.cssText="position:fixed;top:0;left:-9999px;width:80px;height:80px;overflow:auto;visibility:hidden;pointer-events:none;";let e=document.createElement("div");e.style.cssText="width:1px;",e.style.height=`${ra}px`,t.appendChild(e),document.body.appendChild(t),t.scrollTop=ra;let n=t.scrollTop;return Yo=e.offsetHeight>0?e.offsetHeight:null,t.remove(),n>0&&(vn=n),vn}var Yo=null;function Ts(){return Yo===null&&ia(),Yo}function Vo(t){return Math.abs(t)}function aa(t,e){return getComputedStyle(e).direction==="rtl"?-t:t}function Xo(t,e){if(e)return t;if(t.dataSource!=null&&!Array.isArray(t.dataSource))throw new Error("[datagrid] a server-side DataSource is an Enterprise feature. Pass an array to DataGrid, or import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise.");if(t.columns?.some(d=>d.spanRows)){t.debugMode&&console.warn("[datagrid] cell span/merge (spanRows) is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let d={...t,columns:t.columns.map(m=>m.spanRows?{...m,spanRows:void 0}:m)};return Xo(d,e)}if(t.tree){t.debugMode&&console.warn("[datagrid] tree data is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let d={...t};return delete d.tree,Xo(d,e)}if(!t.grouping)return t.masterDetail?Uo(t):t;let{groupBy:n,groupSummaries:o}=t.grouping,l=n==null?[]:typeof n=="string"?[n]:n;if(l.length<=1&&!o)return t.masterDetail?Uo(t):t;t.debugMode&&console.warn("[datagrid] multi-level grouping and group summaries are Enterprise features \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use them.");let i={...t,grouping:{...t.grouping,groupBy:l.slice(0,1),groupSummaries:false}};return t.masterDetail?Uo(i):i}function Uo(t){t.debugMode&&console.warn("[datagrid] master-detail is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let e={...t};return delete e.masterDetail,e}function vs(t){return jsx(Xn,{locale:t.locale,messages:t.messages,children:jsx(ho,{theme:t.theme,density:t.density,palette:t.palette,children:jsx(Ds,{...t})})})}function Ds(t){let e=Q(),{className:n,style:o,dark:l=false,theme:i,palette:d,striped:m=true,emptyText:w,sortable:g=true,filterRow:p=false,headerFilter:f=false,filterIconMode:y="hover",columnReorder:b=true,columnResize:v=true,loadingOverlay:D=true,announcements:P=true,groupPanel:G=false,showRowCount:N=false,toolbar:x=false,toolbarExcel:L=false,toolbarPdf:B=false,filterPanel:_=false,filterPanelLabels:K,onOpenFilterBuilder:h,toolbarItemsBefore:E,toolbarItemsAfter:I,renderRow:u,stateStoring:C,headerMenu:H=true,focusedRow:Y=false,focusedRowKey:ne,onFocusedRowChanged:se,footer:Je,footerMenu:fe=true,onRowClick:pe,onRowActivate:he,onReady:ke,renderCellContent:xe,getCellClassName:Ge,renderOverlay:Ae,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:je,enterpriseEdition:te=false,renderDetail:Fe,renderEditForm:Be,density:ce,rowMenu:oe,cellMenu:s,autoColumns:T,rowDrag:M,tooltip:q,pinnedTopRows:S,pinnedBottomRows:re,footerPosition:V="bottom",autoSizeStrategy:de="none",highlightSearch:Te=true,...ie}=t,F=useMemo(()=>{let r=ie.columns;if(r&&r.length>0)return r;let c=ie.dataSource;if(!Array.isArray(c)||c.length===0)return r??[];let k=typeof T=="object"?T:void 0;return T===false?r??[]:inferColumns(c,k)},[ie.columns,ie.dataSource,T]),Ve={...ie,columns:F},et=isPackagedTheme(i)?THEME_ROW_HEIGHT[i][ce??"normal"]:ce?DENSITY_ROW_HEIGHT[ce]:DEFAULT_ROW_HEIGHT,Ue=Ve.rowHeight===void 0?{...Ve,rowHeight:et}:Ve,Se=te?Number.POSITIVE_INFINITY:1,Ee=Xo(Ue,te),{controller:a,rows:ze,window:yt,layout:ue,sort:tt,rowHeight:R,visibleCount:$}=Wn(Ee),z=Un(a,t.printLayout),J=z.active?{...yt,rows:{...yt.rows,start:0,end:ze.length,offsetY:0,totalHeight:0}}:yt,A=useMemo(()=>F.some(r=>r.autoHeight===true),[F]),be=f&&a.canListDistinctValues();f&&!be&&ie.debugMode&&console.warn("[datagrid] headerFilter needs a column's distinct values. This grid is remote and its DataSource does not implement `loadDistinctValues` \u2014 implement it, or use `filterRow`.");let Ke=useRef(null);qt(()=>{a.setEnterpriseEdition(te);},[a,te]),useEffect(()=>{ke?.(a);},[a,ke]),qt(()=>{let r=ia();r!==null&&r<DEFAULT_MAX_SCROLL_OFFSET&&a.setMaxScrollOffset(r);let c=Ts();c!==null&&a.setMaxCanvasHeight(c);},[a]),qt(()=>{let r=Ke.current;if(!r)return;let c=()=>{a.setViewportSize(r.clientWidth,r.clientHeight),r.style.setProperty("--dg-viewport-width",`${r.clientWidth}px`);let Z=r.querySelector(".kanuni-datagrid-rows"),W=r.querySelector(".kanuni-datagrid-canvas");if(Z&&W){let U=Z.getBoundingClientRect(),ae=W.getBoundingClientRect();a.setChromeOffsets(U.top-ae.top,ae.bottom-U.bottom);}calibrateMaxScrollOffset(r,a);};if(c(),typeof ResizeObserver>"u")return;let k=new ResizeObserver(c);k.observe(r);let O=r.querySelector(".kanuni-datagrid-canvas");return O&&k.observe(O),()=>k.disconnect()},[a]),qt(()=>{if(!A)return;let r=Ke.current?.querySelector(".kanuni-datagrid-viewport");if(!r)return;let c=a.getVirtualWindow(),k=a.getRows(),O=new Map(a.getMeasuredRowHeights()),Z=false;for(let W=c.rows.start;W<c.rows.end;W++){let U=k[W];if(!U||U.kind!=="data")continue;let ae=r.querySelector(`[data-row-key="${CSS.escape(String(U.key))}"]`);if(!ae)continue;let le=ae.getBoundingClientRect().height;le>0&&O.get(U.key)!==le&&(O.set(U.key,le),Z=true);}Z&&a.setMeasuredRowHeights(O);}),useEffect(()=>{if(A)return a.events.on("columnStateChanged",()=>{a.clearMeasuredRowHeights();})},[a,A]),useEffect(()=>a.events.on("scrollRequested",r=>{let c=Ke.current;if(!c)return;r.scrollTop!==void 0&&(c.scrollTop=r.scrollTop),r.scrollLeft!==void 0&&(c.scrollLeft=aa(r.scrollLeft,c)),a.setScroll(c.scrollTop,Vo(c.scrollLeft));let k=r.scrollTop;k===void 0||Math.abs(c.scrollTop-k)<=1||setTimeout(()=>{let O=Ke.current;!O||Math.abs(O.scrollTop-k)<=1||(O.scrollTop=k,a.setScroll(O.scrollTop,Vo(O.scrollLeft)));},0);}),[a]);let Jo=Yn(a,t.alignedGrids,Ke),da=useCallback(r=>{let c=r.currentTarget;a.setScroll(c.scrollTop,Vo(c.scrollLeft)),Jo.syncScroll(c.scrollLeft);},[a,Jo]),ua=useCallback((r,c)=>a.toggleSort(r,c),[a]);Oo(a,C);let Rt=Bo(a,M);useEffect(()=>{ne!=null&&a.getFocusedRowKey()!==ne&&a.focusRow(ne);},[a,ne]),useEffect(()=>{if(se)return a.events.on("focusedRowChanged",r=>se({rowKey:r.rowKey,row:r.row}))},[a,se]);let Qe=useRef(null),[Gn,ca]=useState(null);useEffect(()=>a.events.on("overlayChanged",r=>{ca(r.manual?r.overlay:null);}),[a]);let pa=useCallback(r=>{let c=a.getDataRowNode(r);if(c)return c;if(r==="")return;let k=Number(r);return Number.isNaN(k)?void 0:a.getDataRowNode(k)},[a]),ye=te?t.notes:void 0;!te&&t.notes&&t.debugMode&&console.warn("[datagrid] cell notes are an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use them.");let Jt=!!ye?.onChange&&ye.menu!==false,Zt=useCallback((r,c,k)=>ye?ye.get({rowKey:r,columnId:c,row:k})??null:null,[ye]),Zo=Ko({rootRef:Qe,columnModel:a.getColumnModel(),getRowNode:pa,getNote:ye?Zt:void 0,config:q}),[ma,ga]=useState(0);useEffect(()=>{let r=new Set,c=[a.events.on("cellsFlashed",({rowKeys:k,columnIds:O,duration:Z})=>{let W=Qe.current;if(!W)return;let U=k.length?k.map(Re=>`[data-row-key="${CSS.escape(String(Re))}"]`).join(","):".kanuni-datagrid-row",ae=O.length?O.map(Re=>`[data-column-id="${CSS.escape(Re)}"]`).join(","):"[data-column-id]",le=[];W.querySelectorAll(U).forEach(Re=>{Re.querySelectorAll(ae).forEach(Dt=>le.push(Dt));});for(let Re of le)Re.classList.remove("kanuni-datagrid-cell--flash");W.offsetWidth;for(let Re of le)Re.classList.add("kanuni-datagrid-cell--flash");let Ye=setTimeout(()=>{for(let Re of le)Re.classList.remove("kanuni-datagrid-cell--flash");r.delete(Ye);},Z);r.add(Ye);}),a.events.on("cellsRefreshed",({revision:k})=>ga(k))];return ()=>{c.forEach(k=>k()),r.forEach(clearTimeout);}},[a]);let fa=useCallback((r,c)=>a.moveColumn(r,c),[a]),wa=useCallback((r,c,k)=>a.setColumnWidth(r,c,k??true),[a]),Sn=useCallback(r=>{if(!Qe.current)return;let c=kn(Qe.current,r);c!==null&&a.setColumnWidth(r,c);},[a]),En=useCallback(()=>{let r=Qe.current;if(r)for(let c of a.getColumnStates()){if(!c.visible)continue;let k=kn(r,c.id);k!==null&&a.setColumnWidth(c.id,k);}},[a]);useEffect(()=>{if(de!=="fitGrid")return;let r=()=>a.sizeColumnsToFit();return r(),a.events.on("gridSizeChanged",r)},[a,de]);let Nn=useRef(null);qt(()=>{if(de!=="fitCells"){Nn.current=null;return}Nn.current!==a&&Qe.current?.querySelector(".kanuni-datagrid-row .kanuni-datagrid-cell[data-column-id]")&&(Nn.current=a,En());});let[ha,jo]=useState({}),Qo=t.filterDebounce??(a.isRemote()?200:0),Mn=useRef(false),jt=useMemo(()=>datePeriodLabels(e),[e]),Pn=useRef(jt);Pn.current=jt;let ba=useMemo(()=>periodSuggestionList(jt),[jt]),Qt=useCallback((r,c)=>{let k=a.getColumnModel().getDataType(r);Mn.current=true;try{a.setColumnFilter(r,parseFilterInput(r,c,k,Pn.current),FILTER_PART_ROW);}finally{Mn.current=false;}},[a]),nt=useMemo(()=>createDebouncedCommit(Qo),[Qo]);useEffect(()=>()=>nt.cancelAll(),[nt]);let ya=useCallback((r,c)=>{jo(k=>({...k,[r]:c})),nt.schedule(r,()=>Qt(r,c));},[Qt,nt]),Ra=useCallback((r,c)=>{nt.cancel(r),Qt(r,c);},[Qt,nt]);useEffect(()=>a.events.on("filterChanged",()=>{if(Mn.current)return;let r=a.getColumnModel();jo(c=>uo(c,{isPending:k=>nt.isPending(k),textFor:k=>{let O=a.getColumnFilter(k,FILTER_PART_ROW);return O?filterInputFromNode(k,O,r.getDataType(k),Pn.current):""}},r.getOrder()));}),[a,nt]);let[me,lt]=useState(null),en=useRef(0),Ca=useCallback((r,c)=>{let k=c.getBoundingClientRect(),O=a.getColumnModel().getDef(r),Z={left:k.left,top:k.bottom+2},W=O?.headerName??r,U=a.getColumnFilter(r,FILTER_PART_SET)??a.getColumnFilter(r,FILTER_PART_DEFAULT);if(!a.isRemote()){let le=++en.current;lt({columnId:r,label:W,entries:[],selected:null,anchor:Z,loading:true}),a.getDistinctValueSetAsync(r).then(({entries:Ye,truncated:Re})=>{en.current===le&&lt(Dt=>Dt&&Dt.columnId===r?{...Dt,entries:Ye,truncated:Re,capped:Re,selected:selectedLabelsFromFilter(U,Ye),loading:false}:Dt);});return}let ae=++en.current;lt({columnId:r,label:W,entries:[],selected:null,anchor:Z,loading:true}),a.getDistinctValuesAsync(r).then(le=>{en.current===ae&&lt(Ye=>Ye&&Ye.columnId===r?{...Ye,entries:le,selected:selectedLabelsFromFilter(U,le),loading:false}:Ye);});},[a]),ka=useCallback(r=>{me&&(a.setColumnFilter(me.columnId,r,FILTER_PART_SET),lt(null));},[a,me]),xa=Object.keys(a.getColumnStates().reduce((r,c)=>(a.getColumnFilter(c.id)&&(r[c.id]=true),r),{})),tn=a.getSelectionMode(),ve=tn!=="none"&&(ie.selection?.checkboxColumn??false),er=(ie.selection?.rowClick??(ve?"toggle":"replace"))==="toggle",Ta=useCallback((r,c)=>{a.handleRowClick(r.key,{ctrlKey:c.ctrlKey||er&&!c.shiftKey,metaKey:c.metaKey,shiftKey:c.shiftKey});},[a,er]),va=useCallback((r,c)=>a.focusCell(r.key,c),[a]),Da=useCallback(r=>a.toggleRow(r.key),[a]),[Lt,tr]=useState(null),Ga=useCallback(()=>tr(null),[]),[It,Ln]=useState(null),nr=useCallback((r,c)=>{let O=(Qe.current?.querySelector(`[data-row-key="${CSS.escape(String(r))}"] [data-column-id="${CSS.escape(c)}"]`)??Qe.current)?.getBoundingClientRect();return {left:O?.left??0,top:(O?.bottom??0)+2}},[]),Sa=useCallback(r=>{let c=It;Ln(null),!(!c||!ye?.onChange)&&ye.onChange({rowKey:c.rowKey,columnId:c.columnId,row:c.row,text:r});},[It,ye]),or=useCallback((r,c)=>{if(!ye?.onChange||ye.menu===false)return [];let k=r.columnId;if(!k)return [];let O=a.getRowKey(r.row),Z=Zt(O,k,r.row),W=()=>Ln({rowKey:O,columnId:k,row:r.row,text:Z??"",anchor:nr(O,k)}),U=[];return c&&U.push({separator:true,id:"__note-sep"}),U.push({id:"__note-edit",label:Z?e.editNote:e.addNote,onSelect:W}),Z&&U.push({id:"__note-delete",label:e.deleteNote,onSelect:()=>ye.onChange?.({rowKey:O,columnId:k,row:r.row,text:null})}),U},[ye,a,Zt,nr,e]),[nn,In]=useState(null),rr=useRef({x:0,y:0}),ar=useCallback(r=>Po(a,e,s,r,c=>{In({message:c,...rr.current}),console.error("[datagrid] export failed:",c);}),[a,e,s]),on=useCallback((r,c,k,O,Z)=>{if(k.kind!=="data")return;let W={row:k.data,node:k,rowIndex:O,columnId:Z,selectedKeys:a.getSelectedKeys()},U=(typeof oe=="function"?oe(W):oe)??[],ae=or(W,U.length>0),le=[...U,...ae,...ar(U.length+ae.length>0)];le.length!==0&&(rr.current={x:r,y:c},In(null),tr({x:r,y:c,items:le,context:W}));},[oe,a,or,ar]),ir=useCallback(r=>r?.target?.closest("[data-column-id]")?.dataset.columnId??null,[]),Ct=useCallback((r,c,k,O,Z)=>{let W=O??-1;r&&a.notifyRow(r,k,W);let U=ir(Z);U!==null&&a.notifyCell(c,k,W,U);},[a,ir]),Ea=useCallback((r,c,k)=>{pe?.(r),Ct("rowClicked","cellClicked",r,c,k);},[pe,Ct]),Na=useCallback((r,c,k)=>{he?.(r),Ct("rowDoubleClicked","cellDoubleClicked",r,c,k);},[he,Ct]),Ma=useCallback((r,c,k)=>{if(Ct(null,"cellContextMenu",r,c,k),!oe&&!Jt&&s===false||r.kind!=="data")return;k.preventDefault(),a.isRowSelected(r.key)||a.handleRowClick(r.key,{});let O=k.target.closest("[data-column-id]")?.dataset.columnId??null;on(k.clientX,k.clientY,r,c,O);},[oe,Jt,s,a,on,Ct]),[Pa,La]=useState(null),[Ia,Ha]=useState(null),[Hn,Aa]=useState(()=>ie.grouping?.groupSummaries??false),[kt,An]=useState(null),[lr,On]=useState(null),Oa=useCallback(()=>{a.getSelectedCount()>0?a.clearSelection():a.selectAll();},[a]),Fa=$>0&&a.getSelectedCount()>=$?"all":a.getSelectedCount()>0?"some":"none",Ba=useCallback(r=>{let c=r.target;if(c.tagName==="INPUT"||c.tagName==="TEXTAREA"||c.isContentEditable)return;if((oe||Jt||s!==false)&&(r.key==="ContextMenu"||r.key==="F10"&&r.shiftKey)){let Z=a.getFocus(),W=Z?ze.findIndex(ae=>ae.key===Z.rowKey):-1,U=W>=0?ze[W]:void 0;if(U){let le=Ke.current?.querySelector(`[data-row-key="${CSS.escape(String(U.key))}"]`)?.getBoundingClientRect();on(le?le.left+16:0,le?le.bottom:0,U,W,Z?.columnId??null),r.preventDefault();}return}let k=resolveGridCommand({key:r.key,ctrlKey:r.ctrlKey,metaKey:r.metaKey,shiftKey:r.shiftKey,altKey:r.altKey});if(!k)return;if(k.type==="copy"){Nt(a);return}if(k.type==="activate"){let Z=a.getFocus(),W=Z?ze.find(U=>U.key===Z.rowKey):void 0;W&&he?.(W),k.preventDefault&&r.preventDefault();return}a.executeCommand(k),k.preventDefault&&r.preventDefault();let O=a.getFocusIndices();if(O&&Ke.current){let W=a.getColumnLayout().center.findIndex(ae=>ae.state.id===a.getFocus()?.columnId),U=a.ensureVisible(O.rowIndex,W===-1?void 0:W);if(U){let ae=Ke.current;U.scrollTop!==void 0&&(ae.scrollTop=U.scrollTop),U.scrollLeft!==void 0&&(ae.scrollLeft=aa(U.scrollLeft,ae)),a.setScroll(ae.scrollTop,ae.scrollLeft);}}},[a,ze,he,oe,Jt,s,on]),xt=useMemo(()=>bandDepth([...ue.left,...ue.center,...ue.right]),[ue]),Ht=St,Fn=(p?2:1)+xt,sr=S?.length??0,Ka=re?.length??0,Bn=Fn+sr,rn=Pa??ie.grouping?.panel??G,_a=a.getGroupLevels(),$a=useCallback(r=>a.groupBy(r.slice(0,Se)),[a,Se]),Wa=useCallback(r=>a.toggleGroup(r),[a]),Va=useCallback(r=>a.toggleGroupSelection(r),[a]),Ua=a.getColumnModel().runtime().filter(r=>r.state.visible&&r.def.groupable!==false),Ne=a.hasMasterDetail()&&!!Fe,ge=t.rowNumbers??false,za=ge&&a.isPaginated()?a.getPage()*a.getPageSize():0;useEffect(()=>{a.setLeadWidth(to(ve,Ne,ge));},[a,ve,Ne,ge]);let Ya=useCallback(r=>a.toggleDetail(r),[a]),Xa=useCallback(r=>a.toggleTreeRow(r),[a]),dr=a.getSummaryDefs(),qa=a.getSummaries(),Tt=Ia??Je??dr.length>0,an=Tt&&V==="top",ur=p?2:1,Ja=Ee.grouping?.groupSummaries&&Hn?ie.summaries:void 0,Za=a.getGroupDisplay(),cr=useCallback(()=>{Aa(r=>(a.setGroupSummaries(!r),!r));},[a]),ja=useCallback((r,c)=>{if(!fe)return;c.preventDefault();let k=a.getColumnModel().getDef(r),O=a.getColumnSummary(r),Z={columnId:r,headerName:k?.headerName??k?.field??r},W=[{id:"none",label:e.noTotal,disabled:O===null,onSelect:()=>a.setColumnSummary(r,null)},{id:"sep",separator:true},...allowedSummaryTypes(k?.dataType).map(U=>({id:U,label:summaryTypeLabels(e)[U],disabled:O?.type===U,onSelect:()=>a.setColumnSummary(r,U)}))];An({x:c.clientX,y:c.clientY,items:W,context:Z});},[a,fe]),Qa=useCallback((r,c)=>{if(H===false)return;c.preventDefault();let k=a.getColumnModel().getDef(r),O={columnId:r,headerName:k?.headerName??k?.field??r},Z=$o(O,{controller:a,groupPanelVisible:rn,footerVisible:Tt,groupFootersAvailable:te,groupFootersVisible:Hn,onToggleGroupPanel:()=>La(!rn),onToggleFooter:()=>Ha(!Tt),onToggleGroupFooters:cr,onOpenFieldChooser:()=>On({left:c.clientX,top:c.clientY}),onBestFit:Sn,onBestFitAll:En,maxGroupLevels:Se,labels:Tn(e)}),W=typeof H=="function"?H(O,Z):Z;!W||W.length===0||An({x:c.clientX,y:c.clientY,items:W,context:O});},[H,a,rn,Tt,te,Hn,cr,Sn,En,Se,e]),vt=a.getFocus(),ei=vt?`${t.gridId}-cell-${String(vt.rowKey)}-${vt.columnId}`:void 0,Kn=a.getSelectedCount(),ti=useMemo(()=>{let r=[fillText(e.announceRows,{n:$})];if(tt.length>0){let c=tt.map(k=>{let O=a.getColumnModel().getDef(k.columnId),Z=String(O?.headerName??O?.field??k.columnId),W=k.direction==="desc"?e.announceDescending:e.announceAscending;return `${Z} ${W}`}).join(", ");r.push(fillText(e.announceSortedBy,{columns:c}));}return Kn>0&&r.push(fillText(e.announceSelected,{n:Kn})),r.join(", ")},[a,$,tt,Kn,e]),{centerColumns:st,centerIndices:_n,stickyInsets:At,leadingSpacer:dt,trailingSpacer:ut,rowStart:ni,rowEnd:pr}=Cr(ue,J),$n=a.getColumnModel(),ct=ni,oi=r=>{if(A)return;let c=a.getRowHeightAt(r);return c===R?void 0:c},ri=Array.from(ze.slice(ct,pr)),ai=useMemo(()=>!ge||a.getGroupLevels().length===0&&!a.hasMasterDetail()&&!a.hasTreePathRows()?null:kr(ze),[ge,a,ze]),ii=a.hasCellSpans(),mr=useRef({start:0,end:0});mr.current={start:ct,end:pr-1};let li=useCallback((r,c)=>{let k=a.getCellSpans(c);if(k.length===0)return null;let{start:O,end:Z}=mr.current,W=spanRoleAt(k,r,O,Z);if(!W)return null;if(W.role==="covered")return {kind:"covered"};let U=a.getRowOffset(W.drawStart);return {kind:"draw",height:a.getRowOffset(W.drawEnd)+a.getRowHeightAt(W.drawEnd)-U,offset:0}},[a]),si=Te?normalizeSearch(a.getSearchText()):"",di={pathOf:r=>bandPath(a.getColumnModel().getDef(r)),collapsible:r=>a.isBandCollapsible(r),collapsed:r=>a.isBandCollapsed(r),onToggle:r=>a.toggleBand(r),labels:{expand:e.expandDetails,collapse:e.collapseDetails}},gr={layout:ue,centerColumns:st,leadingSpacer:dt,trailingSpacer:ut,defs:dr,values:qa,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,onPickSummary:fe?ja:void 0,emptyHint:fe?"\xB7":""};return jsxs("div",{className:`kanuni-datagrid-root${l?" kanuni-datagrid-dark":""}${z.active?" kanuni-datagrid-print":""}${themeClassName(i,ce,d)}${n?` ${n}`:""}`,style:{"--dg-row-height":`${R}px`,"--dg-grip-inset":ge?`${Gt}px`:"0px",...o},dir:isRtlLocale(t.locale)?"rtl":void 0,"data-grid-id":t.gridId,"data-theme":i,"data-palette":d,"data-auto-height":A?"":void 0,ref:Qe,children:[x&&jsx(vo,{controller:a,dark:l,columnChooser:t.toolbarColumnChooser??true,exportExcel:te&&L,exportPdf:te&&B,itemsBefore:E,itemsAfter:I,onOpenColumnChooser:r=>On(c=>c?null:r)}),rn&&jsx(To,{columns:Ua,levels:_a,onSetLevels:$a,maxLevels:Se,onExpandAll:()=>a.expandAllGroups(),onCollapseAll:()=>a.collapseAllGroups()}),jsx("div",{className:"kanuni-datagrid-scroller",ref:Ke,onScroll:da,onKeyDown:Ba,tabIndex:0,role:"grid","aria-rowcount":$+Fn+sr+Ka,"aria-colcount":ue.left.length+ue.center.length+ue.right.length+(ve?1:0)+(Ne?1:0)+(ge?1:0),"aria-multiselectable":tn==="multiple"||void 0,"aria-activedescendant":ei,"aria-label":t.gridId,children:jsxs("div",{className:"kanuni-datagrid-canvas",style:{width:(ue.totalWidth||0)+to(ve,Ne,ge)||"100%"},role:"rowgroup",children:[jsx(io,{layout:ue,centerColumns:st,leadingSpacer:dt,trailingSpacer:ut,depth:xt,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,rowHeight:Ht,bandFold:di}),jsx(so,{bandOffset:xt*Ht,stickyInsets:At,layout:ue,centerColumns:st,leadingSpacer:dt,trailingSpacer:ut,sort:tt,sortable:g,onSort:ua,headerFilter:be,filteredColumns:xa,onOpenFilter:Ca,filterIconMode:y,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,selectAllState:Fa,onToggleSelectAll:Oa,draggable:G,reorderable:b,onReorder:fa,resizable:v,onResize:wa,onAutoFit:Sn,onHeaderContextMenu:H===false?void 0:Qa}),p&&jsx(co,{bandOffset:xt*Ht,stickyInsets:At,layout:ue,centerColumns:st,leadingSpacer:dt,trailingSpacer:ut,values:ha,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,onChange:ya,onCommit:Ra,periodSuggestions:ba,periodListId:`${t.gridId}-filter-periods`}),an&&jsx(wn,{...gr,position:"top",bandOffset:xt*Ht,headerRowsBetween:ur}),S&&S.length>0&&jsx(hn,{gridId:t.gridId,side:"top",rows:S,layout:ue,columnModel:$n,centerColumns:st,centerIndices:_n,stickyInsets:At,leadingSpacer:dt,trailingSpacer:ut,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,rowHeight:R,bandOffset:xt*Ht,headerRowsBetween:ur+(an?1:0),ariaRowBase:Fn}),jsxs("div",{className:"kanuni-datagrid-rows",style:{position:"relative",height:J.rows.totalHeight},onDragOver:Rt.bodyHandlers?.onDragOver,onDrop:Rt.bodyHandlers?.onDrop,onDragLeave:Rt.bodyHandlers?.onDragLeave,children:[jsx("div",{className:"kanuni-datagrid-viewport",style:{transform:`translateY(${J.rows.offsetY}px)`},children:ri.map((r,c)=>r?jsx(Ft,{gridId:t.gridId,node:r,index:ct+c,layout:ue,columnModel:$n,centerColumns:st,centerIndices:_n,stickyInsets:At,leadingSpacer:dt,trailingSpacer:ut,striped:m,selected:a.isRowSelected(r.key),groupSelection:r.kind==="group"&&ve&&tn==="multiple"?a.getGroupSelectionState(String(r.key)):void 0,onToggleGroupSelect:Va,groupDisplay:Za,focusedColumnId:vt?.rowKey===r.key?vt.columnId:null,rowFocused:Y&&vt?.rowKey===r.key,rowDrag:Rt.handlers,dropSide:Rt.dropAt?.key===r.key?Rt.dropAt.side:null,renderRow:u,checkboxColumn:ve,rowNumberColumn:ge,getSpan:ii?li:void 0,getNote:ye?Zt:void 0,rowNumber:ge?xr(ct+c,ai,za):null,headerRowCount:Bn,onRowClick:Ea,onRowMouseDown:tn==="none"?void 0:Ta,onRowDoubleClick:Na,onToggleSelect:Da,onCellMouseDown:va,onRowContextMenu:Ma,onToggleGroup:Wa,onToggleTreeRow:Xa,revision:ma,searchNeedle:si,summaryDefs:Ja,detailColumn:Ne,detailExpanded:Ne&&a.isDetailExpanded(r.key),onToggleDetail:Ya,renderDetail:Fe,renderEditForm:Be,height:oi(ct+c),renderCellContent:xe,getCellClassName:Ge,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:je},String(r.key)):jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-row--loading",role:"row","aria-rowindex":ct+c+1+Bn,"aria-busy":"true",children:jsx("div",{className:"kanuni-datagrid-cell kanuni-datagrid-loading-cell",role:"gridcell","aria-colindex":1,children:jsx("span",{className:"kanuni-datagrid-loading-bar"})})},`__loading-${ct+c}`))}),Ae?.()]}),re&&re.length>0&&jsx(hn,{gridId:t.gridId,side:"bottom",rows:re,layout:ue,columnModel:$n,centerColumns:st,centerIndices:_n,stickyInsets:At,leadingSpacer:dt,trailingSpacer:ut,checkboxColumn:ve,detailColumn:Ne,rowNumberColumn:ge,rowHeight:R,headerRowsBetween:Tt&&!an?1:0,ariaRowBase:Bn+$}),Tt&&!an&&jsx(wn,{...gr,position:"bottom"})]})}),(Gn==="noRows"||Gn===null&&$===0)&&jsx("div",{className:"kanuni-datagrid-empty",children:w??e.noData}),_&&jsx(So,{controller:a,alwaysVisible:_==="always",onOpenBuilder:h,describeOptions:K}),D!==false&&jsx(Ao,{controller:a,delay:typeof D=="number"?D:void 0,forced:Gn==="loading"}),a.isPaginated()&&jsx(Go,{page:a.getPage(),pageCount:a.getPageCount(),pageSize:a.getPageSize(),pageSizes:ie.pagination?.pageSizes,totalRows:$,onPage:r=>a.setPage(r),onNext:()=>a.nextPage(),onPrevious:()=>a.previousPage(),onPageSize:r=>a.setPageSize(r)}),P&&jsx("div",{className:"kanuni-datagrid-sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:ti}),It&&jsx(Io,{anchor:It.anchor,value:It.text,dark:l,onCommit:Sa,onCancel:()=>Ln(null)}),Lt&&jsx(Cn,{x:Lt.x,y:Lt.y,items:Lt.items,context:Lt.context,dark:l,onClose:Ga}),nn&&jsx($e,{dark:l,children:jsx("button",{type:"button",role:"alert",className:"kanuni-datagrid-toolbar-error kanuni-datagrid-menu-error",style:{left:nn.x,top:nn.y},onClick:()=>In(null),children:nn.message})}),kt&&jsx(Cn,{x:kt.x,y:kt.y,items:kt.items,context:kt.context,dark:l,label:`${kt.context.headerName} column`,onClose:()=>An(null)}),Zo&&jsx(_o,{state:Zo,dark:l}),lr&&jsx(Do,{controller:a,columns:a.getColumnStates(),anchor:lr,dark:l,onClose:()=>On(null)}),me&&jsx(ko,{gridId:t.gridId,columnId:me.columnId,headerLabel:me.label,entries:me.entries,initialSelected:me.selected,anchor:me.anchor,loading:me.loading,truncated:me.truncated,onSearch:me.capped&&!a.isRemote()?r=>{let{entries:c,truncated:k}=a.searchDistinctValues(me.columnId,r);lt(O=>O&&O.columnId===me.columnId?{...O,entries:c,truncated:k}:O);}:void 0,dark:l,onApply:ka,onClose:()=>lt(null)},`${me.columnId}:${me.loading?"loading":"ready"}`)]})}function Ss({defs:t,values:e,columnModel:n,rowCount:o,rowCountLabel:l}){let i=Q(),d=summaryTypeLabels(i);return t.length===0&&o===void 0?null:jsxs("div",{className:"kanuni-datagrid-summary-bar",role:"status","aria-label":i.summaryAria,children:[o!==void 0&&jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsx("strong",{children:o.toLocaleString()})," ",l??i.summaryRows]}),t.map(m=>{let w=e[summaryKey(m.columnId,m.type)],g=n.getDef(m.columnId),p=formatSummaryValue(m,w,g);return jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsxs("span",{className:"kanuni-datagrid-summary-label",children:[summaryLabel(m,d)," ",g?.headerName??m.columnId,":"]}),jsx("strong",{children:p})]},summaryKey(m.columnId,m.type))})]})}var Es=memo(Ss);function Ps(t,e){return qo(t,e,e?.source,(n,o)=>n.computeChartData(o))}function Ls(t,e){return qo(t,e,e?.source,(n,o)=>n.computeChartXYData(o))}function Is(t,e){return qo(t,e,e?.source,(n,o)=>n.computeChartBoxData(o))}function qo(t,e,n,o){let[l,i]=useState(null);return useEffect(()=>{if(!t||!e){i(null);return}let d=n??"view",m=false,w=0,g=false,p=false,f=null,y=()=>{let D=++w;o(t,e).then(P=>{!m&&D===w&&i(P);},()=>{});},b=(D=false)=>{p||=D,!g&&(g=true,queueMicrotask(()=>{if(g=false,m)return;let P=t.chartBasis(d);!p&&P===f||(p=false,f=P,y());}));};f=t.chartBasis(d),y();let v=[t.events.on("contentReady",()=>b()),t.events.on("rowsChanged",()=>b()),t.events.on("dataUpdated",()=>b()),...d==="selection"?[t.events.on("selectionChanged",()=>b(true))]:[]];return ()=>{m=true,w++,v.forEach(D=>D());}},[t,e]),l}export{St as BAND_ROW_HEIGHT,ea as DEFAULT_HEADER_MENU_LABELS,vs as DataGrid,Do as GridColumnChooser,Cn as GridContextMenu,So as GridFilterPanel,co as GridFilterRow,wn as GridFooterRow,To as GridGroupPanel,so as GridHeader,io as GridHeaderBands,ko as GridHeaderFilterPopup,Ao as GridLoadingOverlay,Io as GridNoteEditor,Go as GridPager,hn as GridPinnedRows,ht as GridPopupPanel,$e as GridPortal,Ft as GridRow,Es as GridSummaryBar,ho as GridSurfaceProvider,Xn as GridTextProvider,vo as GridToolbar,_o as GridTooltip,Vn as PRINT_MAX_ROWS,xn as ROW_DRAG_MIME,Kr as SHORTCUT_COPY,Kl as SHORTCUT_CUT,_l as SHORTCUT_PASTE,Po as buildCellMenuItems,$o as buildHeaderMenu,Nt as copyToClipboard,Tn as headerMenuLabels,kn as measureBestFitWidth,uo as reconcileFilterInputs,Wt as runGridExport,Yn as useAlignedGrids,Kt as useAnchoredPopup,Ko as useCellTooltip,Wn as useDataGrid,Is as useGridChartBoxData,Ps as useGridChartData,Ls as useGridChartXYData,bo as useGridSurfaceClass,Q as useGridText,Un as usePrintLayout,Bo as useRowDrag,Oo as useStateStoring,_r as writeClipboardText};
1
+ import {createContext,memo,useState,useRef,useEffect,useContext,useMemo,useCallback,useSyncExternalStore,useLayoutEffect,useReducer}from'react';import {getGridDictionary,isDetailRow,isEditFormRow,isFillerRow,isGroupRow,lookupLabel,fillText,summaryLabel,formatSummaryValue,summaryKey,summaryTypeLabels,describeFilter,filterLabels,computeHeaderBands,downloadBlob,ExportAbortedError,DataGridController,themeClassName,foldText,attachStateStoring,isDataRow,inferColumns,isPackagedTheme,THEME_ROW_HEIGHT,DENSITY_ROW_HEIGHT,DEFAULT_ROW_HEIGHT,DEFAULT_MAX_SCROLL_OFFSET,calibrateMaxScrollOffset,datePeriodLabels,periodSuggestionList,parseFilterInput,FILTER_PART_ROW,createDebouncedCommit,FILTER_PART_SET,FILTER_PART_DEFAULT,selectedLabelsFromFilter,resolveGridCommand,bandDepth,allowedSummaryTypes,spanRoleAt,normalizeSearch,isRtlLocale,filterInputFromNode,bandPath,formatDateValue}from'@kanunilabs/datagrid-core';export{ClientRowModel,ColumnModel,DEFAULT_ROW_HEIGHT,DENSITY_ROW_HEIGHT,DataGridController,GRID_PALETTES,GRID_THEMES,GridStateStore,SUMMARY_TYPE_LABEL,THEME_ROW_HEIGHT,VirtualWindowEngine,allowedSummaryTypes,andFilters,attachStateStoring,bandDepth,bandPath,computeColumnLayout,computeHeaderBands,createRestDataSource,describeFilter,downloadBlob,fillText,filterInputFromNode,formatSummaryValue,humanizeField,importCsv,inferColumns,isDataRow,isDataSource,isFilterGroup,isGroupRow,isPackagedTheme,lookupLabel,moveRowInArray,parseCsv,parseFilterInput,sniffDelimiter,summaryKey,summaryLabel,summaryTypeLabels,themeClassName}from'@kanunilabs/datagrid-core';import {createPortal,flushSync}from'react-dom';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var gi=["contentReady","viewportChanged","columnStateChanged","sortChanged","filterChanged","selectionChanged","focusChanged","summariesChanged"];function zn(t){let[e,n]=useState(()=>new DataGridController(t));useEffect(()=>{if(e.isDisposed()){n(new DataGridController(t));return}return ()=>e.dispose()},[e]);let o=useRef(0),l=useCallback(G=>{let N=()=>{o.current++,G();},x=gi.map(L=>e.events.on(L,N));return ()=>x.forEach(L=>L())},[e]),i=useCallback(()=>o.current,[]);useSyncExternalStore(l,i,i);let{dataSource:d,columns:g}=t,f=useRef(true);useEffect(()=>{if(f.current){f.current=false;return}Array.isArray(d)&&e.setData(d);},[e,d]);let m=useRef(true);useEffect(()=>{if(m.current){m.current=false;return}e.setColumns(g);},[e,g]);let c=t.pagination?t.pagination.enabled!==false:false;useEffect(()=>{e.setPaginationEnabled(c);},[e,c]);let h=t.rowHeight,R=useRef(true);useEffect(()=>{if(R.current){R.current=false;return}h!==void 0&&e.setRowHeight(h);},[e,h]);let b=t.selection?.mode??"none";useEffect(()=>{e.setSelectionMode(b);},[e,b]);let v=t.grouping?.groupBy??null,D=JSON.stringify(v==null?[]:typeof v=="string"?[v]:v),P=useRef(true);return useEffect(()=>{if(P.current){P.current=false;return}e.groupBy(JSON.parse(D));},[e,D]),{controller:e,rows:e.getRows(),window:e.getVirtualWindow(),layout:e.getColumnLayout(),sort:e.getSort(),rowHeight:e.getRowHeight(),visibleCount:e.getVisibleCount(),totalCount:e.getTotalCount()}}var cn=0,Un=5e3;function hi(t){if(t===void 0||t===false)return null;let e=t===true?{}:t;return {always:e.always??false,maxRows:e.maxRows??Un}}function wi(t,e){return t<=e}function Yn(t,e){let n=hi(e),o=n!==null,l=n?.always??false,i=n?.maxRows??Un,[d,g]=useState(false),f=useCallback(()=>g(true),[]),m=useCallback(()=>g(false),[]);useEffect(()=>{if(!o||l||typeof window>"u"||typeof window.addEventListener!="function")return;let h=()=>{let b=t.getRows().length;if(!wi(b,i)){t.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${b} rows exceeds maxRows (${i}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}flushSync(()=>g(true));},R=()=>flushSync(()=>g(false));return window.addEventListener("beforeprint",h),window.addEventListener("afterprint",R),()=>{window.removeEventListener("beforeprint",h),window.removeEventListener("afterprint",R);}},[o,l,i,t]);let c=l||d;return useEffect(()=>{if(!c||typeof document>"u")return;let h=document.documentElement;return cn++,h.classList.add("kanuni-datagrid-printing"),()=>{cn--,cn<=0&&(cn=0,h.classList.remove("kanuni-datagrid-printing"));}},[c]),{active:c,begin:f,end:m}}var pn=new Map,Xn=new Set;function vr(t,e){let n=pn.get(t);return n?[...n].filter(o=>o!==e):[]}function qn(t,e,n){let o=useRef(null);return useEffect(()=>{if(!e)return;let i={controller:t,scroller:()=>n.current};o.current=i;let d=pn.get(e)??new Set;d.add(i),pn.set(e,d);let g=t.events.on("columnStateChanged",()=>{if(Xn.has(e))return;let f=vr(e,i);if(f.length===0)return;let m=t.getColumnStates();Xn.add(e);try{for(let c of f)c.controller.applyColumnStates(m);}finally{Xn.delete(e);}});return ()=>{g(),d.delete(i),d.size===0&&pn.delete(e),o.current=null;}},[t,e,n]),{syncScroll:useCallback(i=>{let d=o.current;if(!e||!d)return;let g=vr(e,d);if(g.length!==0)for(let f of g){let m=f.scroller();m&&m.scrollLeft!==i&&(m.scrollLeft=i);}},[e])}}function mn(t,e,n){return t==="left"?e:t==="center"?n.left+e:n.left+n.center+e}function Dr(t,e){let{start:n,end:o}=e.columns,l=t.centerOffsets,i=l[n]??0,d=(l[o]??0)-i,g=Math.max(0,t.centerWidth-i-d),f=i,m=t.center.slice(n,o),c=Array.from({length:m.length},(b,v)=>n+v),h=t.stickyIndices.filter(b=>b<n);if(h.length>0){let b=h.map(v=>t.center[v]);f-=b.reduce((v,D)=>v+D.state.width,0),m=[...b,...m],c=[...h,...c];}let R=new Map;for(let b of t.stickyIndices){let v=t.centerStickyOffsets[b];v!==null&&R.set(t.center[b].state.id,v);}return {centerColumns:m,centerIndices:c,leadingSpacer:Math.max(0,f),trailingSpacer:g,rowStart:e.rows.start,rowEnd:e.rows.end,stickyInsets:R}}function Gr(t){let e=[];for(let n=0;n<t.length;n++){let o=t[n];o&&o.kind!=="data"&&e.push(n);}return e.length>0?e:null}function Sr(t,e,n=0){if(!e)return n+t+1;let o=0,l=e.length;for(;o<l;){let i=o+l>>1;e[i]<t?o=i+1:l=i;}return n+t-o+1}var Nr=createContext(getGridDictionary("en"));function Jn({locale:t,messages:e,children:n}){let o=useMemo(()=>getGridDictionary(t,e),[t,e]);return jsx(Nr.Provider,{value:o,children:n})}function ee(){return useContext(Nr)}var fn=36,hn=28,Et=60,Pi=[["rowNumberColumn",Et],["detailColumn",hn],["checkboxColumn",fn]];function oo(t,e,n=false){return Xe({checkboxColumn:t,detailColumn:e,rowNumberColumn:n}).total}function Xe(t){let e=new Map,n=new Map,o=0,l=0;for(let[i,d]of Pi)t[i]&&(e.set(i,o),n.set(i,++l),o+=d);return {total:o,count:l,inset:i=>e.get(i)??0,colIndex:i=>n.get(i)??1}}function jn(t){return t?t.kind==="draw"?" kanuni-datagrid-cell--span":" kanuni-datagrid-cell--span-covered":""}function eo(t,e,n){return t?t.kind==="covered"?e?n():null:jsx("div",{className:"kanuni-datagrid-span-box",style:{height:t.height},children:n()}):n()}function to(t,e){let n=t??(e==="number"?"right":"left");return n==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":n==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function gn(t,e){if(e===""||t==="")return t;let n=foldText(t),o=n.indexOf(e);if(o===-1)return t;let l=[],i=0,d=0;for(;o!==-1;)o>i&&l.push(t.slice(i,o)),l.push(jsx("mark",{className:"kanuni-datagrid-highlight",children:t.slice(o,o+e.length)},d++)),i=o+e.length,o=n.indexOf(e,i);return i<t.length&&l.push(t.slice(i)),l}function Li(t,e,n,o=""){if(t.renderCell)return t.renderCell({value:e,row:n.data,node:n,column:t});let l=lookupLabel(t,e);if(l!==null)return gn(l,o);if(t.valueFormatter){let i=t.valueFormatter(e,n.data);return typeof i=="string"?gn(i,o):i}return t.dateFormat&&t.dataType==="date"?gn(formatDateValue(e,t.dateFormat),o):e==null?"":gn(String(e),o)}function Ii({gridId:t,node:e,index:n,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:g,leadingSpacer:f,trailingSpacer:m,striped:c,selected:h,groupSelection:R,onToggleGroupSelect:b,groupDisplay:v="fullWidth",focusedColumnId:D,rowFocused:P=false,renderRow:G,checkboxColumn:N,rowNumberColumn:x=false,rowNumber:L=null,getNote:B,getSpan:_,headerRowCount:K,onRowClick:w,onRowMouseDown:E,onRowDoubleClick:I,onToggleSelect:u,onCellMouseDown:C,onRowContextMenu:H,searchNeedle:Y="",onToggleGroup:ne,summaryDefs:de,detailColumn:Je=false,detailExpanded:fe=false,onToggleDetail:pe,onToggleTreeRow:be,renderDetail:Te,renderEditForm:ye,renderCellContent:ve,getCellClassName:Ae,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:Qe,rowDrag:te,dropSide:Fe=null,height:Be}){let ce=ee();if(isDetailRow(e))return jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-detail-row",role:"row","aria-rowindex":n+1+K,"data-row-key":String(e.key),"data-detail-for":String(e.parentKey),style:{height:e.height},children:jsx("div",{className:"kanuni-datagrid-detail-cell",role:"gridcell","aria-colindex":1,children:Te?.(e.data)})});if(isEditFormRow(e))return jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-editform-row",role:"row","aria-rowindex":n+1+K,"data-row-key":String(e.key),"data-editform-for":e.parentKey===null?"":String(e.parentKey),style:{height:e.height},children:jsx("div",{className:"kanuni-datagrid-editform-cell",role:"gridcell","aria-colindex":1,children:e.parentKey===null?null:ye?.(e.parentKey,e.data)})});if(isFillerRow(e))return null;if(isGroupRow(e)&&v!=="aligned"){let y=l.getDef(e.columnId),$=y?.headerName??e.columnId,U=lookupLabel(y,e.value)??e.display??(e.label===""?ce.filterBlank:e.label),J=e.aggregates??null;return jsx("div",{className:`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${e.level}${D?" kanuni-datagrid-group-row--focused":""}`,role:"row","aria-rowindex":n+1+K,"aria-expanded":e.expanded,"aria-level":e.level+1,"data-row-key":String(e.key),"data-group-key":String(e.key),"data-group-level":e.level,onClick:()=>ne?.(String(e.key)),children:jsxs("div",{className:"kanuni-datagrid-group-cell",role:"gridcell","aria-colindex":1,id:`${t}-cell-${String(e.key)}-__group`,style:e.level>0?{paddingLeft:8+e.level*18}:void 0,children:[R&&jsx("input",{type:"checkbox",className:"kanuni-datagrid-group-checkbox",tabIndex:-1,checked:R==="all",ref:O=>{O&&(O.indeterminate=R==="some");},"aria-label":fillText(ce.selectGroupAria,{count:String(e.count),group:U}),onChange:()=>b?.(String(e.key)),onClick:O=>O.stopPropagation(),onMouseDown:O=>O.stopPropagation()}),jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:e.expanded?"\u25BE":"\u25B8"}),jsxs("span",{className:"kanuni-datagrid-group-caption",children:[$,":"]}),jsx("span",{className:"kanuni-datagrid-group-label",children:U}),jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",e.count,")"]}),J&&de?.map(O=>jsxs("span",{className:"kanuni-datagrid-group-aggregate",children:[jsxs("span",{className:"kanuni-datagrid-group-aggregate-label",children:[summaryLabel(O)," ",l.getDef(O.columnId)?.headerName??O.columnId,":"]})," ",formatSummaryValue(O,J[summaryKey(O.columnId,O.type)],l.getDef(O.columnId))]},summaryKey(O.columnId,O.type)))]})})}let oe=[],s=Xe({rowNumberColumn:x,detailColumn:Je,checkboxColumn:N}),T=s.count,M=(y,$)=>({node:e,columnId:y,rowIndex:n,columnIndex:$,value:V?void 0:l.getCellValue(e.data,y)}),q=(y,$)=>{let U=()=>M(y,$);return {role:"gridcell",id:`${t}-cell-${String(e.key)}-${y}`,"aria-colindex":T+$+1,"data-column-id":y,onMouseDown:J=>{C?.(e,y),Oe?.(U(),J);},onMouseEnter:Ze?J=>Ze(U(),J):void 0,onDoubleClick:Qe?()=>Qe(U()):void 0}},S=e.kind==="data"||e.kind==="treePath"?e.tree:void 0,re=e.kind==="treePath",V=isGroupRow(e)?e:null,ue=re||V!==null,De=V?(o.left[0]??o.center[0]??o.right[0])?.state.id??null:null,ie=()=>{let y=V,$=l.getDef(y.columnId),U=lookupLabel($,y.value)??y.display??(y.label===""?ce.filterBlank:y.label);return jsxs("span",{className:"kanuni-datagrid-group-inline",style:{paddingInlineStart:y.level*16},children:[jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:y.expanded?"\u25BE":"\u25B8"}),jsxs("span",{className:"kanuni-datagrid-group-caption",children:[$?.headerName??y.columnId,":"]}),jsx("span",{className:"kanuni-datagrid-group-label",children:U}),jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",y.count,")"]})]})},F=(y,$)=>{let U=V.aggregates?de?.find(J=>J.columnId===$):void 0;return U?jsx("span",{className:"kanuni-datagrid-group-aggregate-value",children:formatSummaryValue(U,V.aggregates[summaryKey($,U.type)],y)}):null},Ve=S?(o.left[0]??o.center[0]??o.right[0])?.state.id??null:null,et=(y,$,U)=>{if(V)return $===De?ie():F(y,$);if(ve&&!re){let O=ve(M($,U));if(O!==void 0)return O}let J=re?$===Ve?jsx("span",{className:"kanuni-datagrid-tree-path-label",children:e.label}):null:Li(y,l.getCellValue(e.data,$),e,Y);return S&&$===Ve?jsxs("span",{className:S.ancestorOnly?"kanuni-datagrid-tree-cell kanuni-datagrid-tree-cell--ancestor":"kanuni-datagrid-tree-cell",style:{paddingInlineStart:S.depth*16},children:[S.hasChildren?jsx("button",{type:"button",className:"kanuni-datagrid-tree-toggle","data-tree-toggle":"","aria-expanded":S.expanded,"aria-label":S.expanded?ce.collapseDetails:ce.expandDetails,onClick:O=>{O.stopPropagation(),be?.(e.key);},children:S.expanded?"\u25BE":"\u25B8"}):jsx("span",{className:"kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf"}),J]}):J},ze=(y,$)=>{if(!Ae||V)return "";let U=Ae(M(y,$));return U?` ${U}`:""},Ee=y=>!B||e.kind!=="data"?"":B(e.key,y,e.data)?" kanuni-datagrid-cell--noted":"",Ne=y=>_&&e.kind==="data"?_(n,y):null,a=(y,$)=>{let U=y.autoHeight?" kanuni-datagrid-cell--wrap":"";return !y.cellClassName||ue?U:U+Ue(y,$)},Ue=(y,$)=>{let U=y.cellClassName;if(!U)return "";if(typeof U=="string")return ` ${U}`;let J=e.data,O=U({value:l.getCellValue(J,$),row:J,node:e,column:y});return O?` ${O}`:""};if(x){let y=e.kind==="data"&&L!==null;oe.push(jsx("div",{role:"gridcell","aria-colindex":s.colIndex("rowNumberColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell",style:{width:Et,insetInlineStart:s.inset("rowNumberColumn")},children:y?L:""},"__rownum"));}Je&&oe.push(jsx("div",{role:"gridcell","aria-colindex":s.colIndex("detailColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell",style:{width:hn,insetInlineStart:s.inset("detailColumn")},children:ue?null:jsx("button",{type:"button",className:"kanuni-datagrid-detail-toggle",tabIndex:-1,"aria-expanded":fe,"aria-label":fe?ce.collapseDetails:ce.expandDetails,onClick:y=>{y.stopPropagation(),pe?.(e.key);},children:fe?"\u25BE":"\u25B8"})},"__detail")),N&&oe.push(jsx("div",{role:"gridcell","aria-colindex":s.colIndex("checkboxColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell",style:{width:fn,insetInlineStart:s.inset("checkboxColumn")},onMouseDown:y=>y.stopPropagation(),onClick:y=>{y.target.tagName!=="INPUT"&&(y.stopPropagation(),u?.(e));},children:V?R&&jsx("input",{type:"checkbox",className:"kanuni-datagrid-group-checkbox",tabIndex:-1,checked:R==="all",ref:y=>{y&&(y.indeterminate=R==="some");},"aria-label":fillText(ce.selectGroupAria,{count:String(V.count),group:V.display??V.label}),onChange:()=>b?.(String(V.key)),onClick:y=>y.stopPropagation(),onMouseDown:y=>y.stopPropagation()}):re?null:jsx("input",{type:"checkbox",checked:h,tabIndex:-1,"aria-label":fillText(ce.selectRowAria,{row:String(e.key)}),onChange:()=>u?.(e),onClick:y=>y.stopPropagation(),onMouseDown:y=>y.stopPropagation()})},"__select"));let Rt=s.total,le=y=>D===y?" kanuni-datagrid-cell--focused":"",tt={left:o.left.length,center:o.center.length};return o.left.forEach((y,$)=>{let U=y.def,J=$===o.left.length-1,O=y.state.id,Re=mn("left",$,tt);oe.push(jsx("div",{...q(O,Re),className:`${to(U.align,U.dataType)} kanuni-datagrid-cell--pinned${J?" kanuni-datagrid-pin-edge-left":""}${le(O)}${a(U,O)}${ze(O,Re)}${Ee(O)}${jn(Ne(O))}`,style:{width:y.state.width,insetInlineStart:o.leftOffsets[$]+Rt},children:eo(Ne(O),D===O,()=>et(U,O,Re))},O));}),f>0&&oe.push(jsx("div",{className:"kanuni-datagrid-spacer",style:{width:f}},"__lead")),i.forEach((y,$)=>{let U=y.def,J=y.state.id,O=mn("center",d?.[$]??$,tt),Re=g?.get(J),Ke=Re===void 0?"":" kanuni-datagrid-cell--pinned kanuni-datagrid-cell--sticky";oe.push(jsx("div",{...q(J,O),className:`${to(U.align,U.dataType)}${Ke}${le(J)}${a(U,J)}${ze(J,O)}${Ee(J)}${jn(Ne(J))}`,style:Re===void 0?{width:y.state.width}:{width:y.state.width,insetInlineStart:Re+Rt},children:eo(Ne(J),D===J,()=>et(U,J,O))},J));}),m>0&&oe.push(jsx("div",{className:"kanuni-datagrid-spacer",style:{width:m}},"__trail")),o.right.forEach((y,$)=>{let U=y.def,J=$===0,O=y.state.id,Re=mn("right",$,tt);oe.push(jsx("div",{...q(O,Re),className:`${to(U.align,U.dataType)} kanuni-datagrid-cell--pinned${J?" kanuni-datagrid-pin-edge-right":""}${le(O)}${a(U,O)}${ze(O,Re)}${Ee(O)}${jn(Ne(O))}`,style:{width:y.state.width,insetInlineEnd:o.rightOffsets[$]},children:eo(Ne(O),D===O,()=>et(U,O,Re))},O));}),jsxs("div",{className:`kanuni-datagrid-row${c&&n%2===1?" kanuni-datagrid-row--odd":""}${h?" kanuni-datagrid-row--selected":""}${P?" kanuni-datagrid-row--focused":""}${re?" kanuni-datagrid-row--tree-path":""}${V?` kanuni-datagrid-group-row kanuni-datagrid-group-row--aligned kanuni-datagrid-group-row--level-${V.level}`:""}${Fe?` kanuni-datagrid-row--drop-${Fe}`:""}`,role:"row","aria-rowindex":n+1+K,"aria-selected":V?void 0:h,"aria-expanded":V?V.expanded:void 0,"aria-level":V?V.level+1:void 0,"data-row-key":String(e.key),"data-group-key":V?String(V.key):void 0,"data-group-level":V?V.level:void 0,style:Be===void 0?void 0:{height:Be},draggable:te?.draggable&&!V?true:void 0,onDragStart:te&&!V?y=>te.onDragStart(e,y):void 0,onDragEnd:te&&!V?()=>te.onDragEnd():void 0,onDragOver:te&&!V?y=>te.onDragOver(e,y):void 0,onDrop:te&&!V?y=>te.onDrop(e,y):void 0,onMouseDown:E&&!V?y=>E(e,y):void 0,onClick:V?()=>ne?.(String(V.key)):w?y=>w(e,n,y):void 0,onDoubleClick:I?y=>I(e,n,y):void 0,onContextMenu:H?y=>H(e,n,y):void 0,children:[te&&!V&&jsx("span",{className:"kanuni-datagrid-row-grip","data-testid":"dg-row-grip","aria-hidden":"true",title:ce.dragToReorder,onMouseEnter:()=>te.setDraggable(true),onMouseLeave:()=>te.setDraggable(false),children:jsx("svg",{width:"10",height:"14",viewBox:"0 0 10 14",focusable:"false",children:jsxs("g",{fill:"currentColor",children:[jsx("circle",{cx:"3",cy:"3",r:"1.2"}),jsx("circle",{cx:"7",cy:"3",r:"1.2"}),jsx("circle",{cx:"3",cy:"7",r:"1.2"}),jsx("circle",{cx:"7",cy:"7",r:"1.2"}),jsx("circle",{cx:"3",cy:"11",r:"1.2"}),jsx("circle",{cx:"7",cy:"11",r:"1.2"})]})})}),G&&e.kind==="data"?G({row:e.data,node:e,rowIndex:n,selected:h,focused:P}):oe]})}var Nt=memo(Ii);var Mt=26;function ro(t,e){return computeHeaderBands(t,e)}function ao(t,e=""){return `kanuni-datagrid-band-cell${t.spacer?" kanuni-datagrid-band-cell--spacer":""}${e}`}function io(t,e){let n=jsx("span",{className:"kanuni-datagrid-band-label",children:t.label});if(!e||t.spacer||t.columnIds.length===0)return n;let o=e.pathOf(t.columnIds[0]).slice(0,t.level+1);if(o.length!==t.level+1||!e.collapsible(o))return n;let l=e.collapsed(o);return jsxs(Fragment,{children:[jsx("button",{type:"button",className:"kanuni-datagrid-band-toggle","aria-expanded":!l,"aria-label":l?e.labels.expand:e.labels.collapse,title:l?e.labels.expand:e.labels.collapse,onClick:i=>{i.stopPropagation(),e.onToggle(o);},children:jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:[jsx("rect",{x:"2",y:"2",width:"12",height:"12",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:"1.3"}),jsx("path",{d:"M5 8h6",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"}),l&&jsx("path",{d:"M8 5v6",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})]})}),n]})}function Oi({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:o,depth:l,checkboxColumn:i=false,detailColumn:d=false,rowNumberColumn:g=false,rowHeight:f=Mt,bandFold:m}){if(l<=0)return null;let c=Xe({rowNumberColumn:g,detailColumn:d,checkboxColumn:i}).total,h=ro(t.left,l),R=ro(e,l),b=ro(t.right,l),v=(D,P,G)=>{let N=G;for(let x=0;x<P;x++)N+=D[x].width;return N};return jsx(Fragment,{children:Array.from({length:l},(D,P)=>jsxs("div",{className:"kanuni-datagrid-band-row",role:"row","aria-rowindex":P+1,style:{width:t.totalWidth+c,height:f,top:P*f},children:[c>0&&jsx("div",{className:"kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned",style:{width:c,insetInlineStart:0},"aria-hidden":"true"}),(h[P]??[]).map((G,N)=>jsx("div",{className:ao(G,` kanuni-datagrid-band-cell--pinned${N===(h[P]?.length??0)-1?" kanuni-datagrid-pin-edge-left":""}`),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width,insetInlineStart:v(h[P]??[],N,c)},title:G.spacer?void 0:G.label,children:io(G,m)},G.columnIds[0])),n>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),(R[P]??[]).map(G=>jsx("div",{className:ao(G),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width},title:G.spacer?void 0:G.label,children:io(G,m)},G.columnIds[0])),o>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:o}}),(b[P]??[]).map((G,N)=>{let x=b[P]??[],L=0;for(let B=N+1;B<x.length;B++)L+=x[B].width;return jsx("div",{className:ao(G,` kanuni-datagrid-band-cell--pinned${N===0?" kanuni-datagrid-pin-edge-right":""}`),role:G.spacer?"presentation":"columnheader","aria-colspan":G.spacer?void 0:G.columnIds.length,style:{width:G.width,insetInlineEnd:L},title:G.spacer?void 0:G.label,children:io(G,m)},G.columnIds[0])})]},P))})}var so=memo(Oi);var Bi=()=>jsx("svg",{width:"11",height:"11",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:jsx("path",{d:"M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z",fill:"currentColor",stroke:"currentColor",strokeWidth:"0.6",strokeLinejoin:"round"})});function Ki(t,e){return t.renderHeader?t.renderHeader({column:t}):t.headerName??t.field??e}function _i({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:o,leadingSpacer:l,trailingSpacer:i,sort:d,sortable:g,onSort:f,headerFilter:m=false,filteredColumns:c,onOpenFilter:h,filterIconMode:R="hover",checkboxColumn:b=false,detailColumn:v=false,rowNumberColumn:D=false,rowNumberHeader:P="#",selectAllState:G="none",onToggleSelectAll:N,draggable:x=false,reorderable:L=false,onReorder:B,resizable:_=false,onResize:K,onAutoFit:w,onHeaderContextMenu:E}){let I=ee(),u=Xe({rowNumberColumn:D,detailColumn:v,checkboxColumn:b}),C=new Map(d.map((s,T)=>[s.columnId,{direction:s.direction,order:T}])),H=new Set(c??[]),Y=[...n.left.map(s=>s.state.id),...o.map(s=>s.state.id),...n.right.map(s=>s.state.id)],[ne,de]=useState(null),Je=ne&&Y.includes(ne)?ne:Y[0],fe=s=>{de(s),document.querySelector(`[data-column-id="${s}"].kanuni-datagrid-header-cell`)?.focus();},pe=s=>{let T=Y.indexOf(Je),M=Math.min(Y.length-1,Math.max(0,T+s));M!==T&&fe(Y[M]);},be=useRef(null),Te=useRef(false),[ye,ve]=useState(null),Ae=Y,Oe=s=>[...n.left,...n.center,...n.right].find(T=>T.state.id===s)?.state.pinned??null,Ze=(s,T)=>(Te.current?s>T.left+T.width/2:s<T.left+T.width/2)?"before":"after",Qe=(s,T)=>{let M=be.current;if(!L||!M||M===s||Oe(M)!==Oe(s))return;T.preventDefault(),T.dataTransfer.dropEffect="move";let q=Ze(T.clientX,T.currentTarget.getBoundingClientRect());ve(S=>S?.id===s&&S.side===q?S:{id:s,side:q});},te=(s,T)=>{let M=be.current;if(ve(null),!L||!M||M===s||Oe(M)!==Oe(s))return;if(T.preventDefault(),T.stopPropagation(),Ze(T.clientX,T.currentTarget.getBoundingClientRect())==="before")B?.(M,s);else {let S=Ae[Ae.indexOf(s)+1];B?.(M,S===M?Ae[Ae.indexOf(s)+2]:S);}be.current=null;},[Fe,Be]=useState(null),ce=(s,T)=>{if(!_)return;T.preventDefault(),T.stopPropagation();let M=T.currentTarget,q=T.clientX,S=s.state.width,re=Te.current?-1:1,V=s.state.id;Be(V),M.setPointerCapture(T.pointerId);let ue=S,De=false,ie=Ve=>{De=true,ue=S+(Ve.clientX-q)*re,K?.(V,ue,false);},F=()=>{M.releasePointerCapture?.(T.pointerId),M.removeEventListener("pointermove",ie),M.removeEventListener("pointerup",F),M.removeEventListener("pointercancel",F),De&&K?.(V,ue,true),Be(null);};M.addEventListener("pointermove",ie),M.addEventListener("pointerup",F),M.addEventListener("pointercancel",F);},oe=(s,T,M)=>{let q=s.def,S=s.state.id,re=g&&q.sortable!==false,V=m&&q.filterable!==false,ue=C.get(S),De=x&&q.groupable!==false||L&&q.reorderable!==false,ie=ye?.id===S?ye.side:null;return jsxs("div",{className:`kanuni-datagrid-header-cell${T}${re?" kanuni-datagrid-header-cell--sortable":""}${ie?` kanuni-datagrid-header-cell--drop-${ie}`:""}${Fe===S?" kanuni-datagrid-header-cell--resizing":""}`,style:M,role:"columnheader","aria-sort":ue?ue.direction==="asc"?"ascending":"descending":"none","data-column-id":S,tabIndex:S===Je?0:-1,onFocus:()=>de(S),draggable:De&&Fe===null,onDragStart:F=>{F.dataTransfer.setData("text/x-kanuni-column",S),F.dataTransfer.effectAllowed="move",be.current=S,Te.current=getComputedStyle(F.currentTarget).direction==="rtl";},onDragEnd:()=>{be.current=null,ve(null);},onDragOver:L?F=>Qe(S,F):void 0,onDragLeave:L?()=>ve(F=>F?.id===S?null:F):void 0,onDrop:L?F=>te(S,F):void 0,onContextMenu:E?F=>E(S,F):void 0,onClick:re?F=>f(S,F.shiftKey):void 0,onKeyDown:F=>{F.key==="ArrowRight"?(F.preventDefault(),pe(1)):F.key==="ArrowLeft"?(F.preventDefault(),pe(-1)):F.key==="Home"?(F.preventDefault(),fe(Y[0])):F.key==="End"?(F.preventDefault(),fe(Y[Y.length-1])):V&&F.altKey&&F.key==="ArrowDown"?(F.preventDefault(),h?.(S,F.currentTarget)):re&&(F.key==="Enter"||F.key===" ")&&(F.preventDefault(),f(S,F.shiftKey));},children:[jsx("span",{className:"kanuni-datagrid-header-label",children:Ki(q,S)}),ue&&jsx("span",{className:"kanuni-datagrid-sort-indicator","aria-hidden":"true",children:ue.direction==="asc"?"\u25B2":"\u25BC"}),ue&&d.length>1&&jsx("span",{className:"kanuni-datagrid-sort-order","aria-hidden":"true",children:ue.order+1}),m&&q.filterable!==false&&jsx("button",{type:"button",className:`kanuni-datagrid-filter-button${H.has(S)?" kanuni-datagrid-filter-button--active":""}${R==="always"?" kanuni-datagrid-filter-button--pinned":""}`,"aria-label":fillText(I.filterColumnAria,{column:q.headerName??S}),"aria-haspopup":"dialog","data-filter-button":S,tabIndex:-1,onClick:F=>{F.stopPropagation(),h?.(S,F.currentTarget);},children:jsx(Bi,{})}),_&&q.resizable!==false&&jsx("span",{className:"kanuni-datagrid-resize-handle","data-resize-handle":S,role:"presentation",onPointerDown:F=>ce(s,F),onDoubleClick:F=>{F.stopPropagation(),w?.(S);},onClick:F=>F.stopPropagation()})]},S)};return jsxs("div",{className:"kanuni-datagrid-header",role:"row","aria-rowindex":Math.round(t/Mt)+1,style:{width:n.totalWidth+u.total,top:t||void 0},children:[D&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell",role:"columnheader","aria-colindex":u.colIndex("rowNumberColumn"),"aria-label":I.rowNumberAria,style:{width:Et,insetInlineStart:u.inset("rowNumberColumn")},children:P??""}),v&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell",role:"columnheader","aria-colindex":u.colIndex("detailColumn"),"aria-label":I.detailsAria,style:{width:hn,insetInlineStart:u.inset("detailColumn")}}),b&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell",role:"columnheader","aria-colindex":u.colIndex("checkboxColumn"),style:{width:fn,insetInlineStart:u.inset("checkboxColumn")},children:jsx("input",{type:"checkbox",checked:G==="all",ref:s=>{s&&(s.indeterminate=G==="some");},"aria-label":I.selectAllRows,onChange:()=>N?.()})}),n.left.map((s,T)=>oe(s,` kanuni-datagrid-header-cell--pinned${T===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:s.state.width,insetInlineStart:n.leftOffsets[T]+u.total})),l>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),o.map(s=>{let T=e?.get(s.state.id);return T===void 0?oe(s,"",{width:s.state.width}):oe(s," kanuni-datagrid-header-cell--pinned kanuni-datagrid-cell--sticky",{width:s.state.width,insetInlineStart:T+u.total})}),i>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((s,T)=>oe(s,` kanuni-datagrid-header-cell--pinned${T===0?" kanuni-datagrid-pin-edge-right":""}`,{width:s.state.width,insetInlineEnd:n.rightOffsets[T]}))]})}var co=memo(_i);function po(t,e,n=[]){let o=null,l=new Set,i=d=>{if(l.has(d)||(l.add(d),e.isPending(d)))return;let g=e.textFor(d);if(g===null)return;let f=t[d]??"";f!==g&&(f===""&&g===""||(o??={...t},o[d]=g));};for(let d of Object.keys(t))i(d);for(let d of n)i(d);return o??t}function Wi({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:o,leadingSpacer:l,trailingSpacer:i,values:d,checkboxColumn:g=false,detailColumn:f=false,rowNumberColumn:m=false,placeholder:c,onChange:h,onCommit:R,periodSuggestions:b,periodListId:v}){let D=ee(),P=Xe({rowNumberColumn:m,detailColumn:f,checkboxColumn:g}),G=c??D.filterPlaceholder,N=(x,L,B)=>{let _=x.state.id,K=x.def.filterable!==false;return jsx("div",{className:`kanuni-datagrid-filter-cell${L}`,style:B,"data-column-id":_,children:K&&jsx("input",{className:"kanuni-datagrid-filter-input",type:"text",value:d[_]??"",placeholder:G,"aria-label":fillText(D.filterColumnAria,{column:x.def.headerName??_}),"data-filter-for":_,list:x.def.dataType==="date"&&v?v:void 0,onChange:w=>h(_,w.target.value),onKeyDown:w=>{w.key==="Enter"&&R?.(_,w.target.value);},onBlur:w=>R?.(_,w.target.value)})},_)};return jsxs("div",{className:"kanuni-datagrid-filter-row",role:"row","aria-rowindex":2,style:{width:n.totalWidth+P.total,"--dg-band-offset":`${t}px`},children:[v&&b&&b.length>0&&jsx("datalist",{id:v,children:b.map(x=>jsx("option",{value:x},x))}),P.total>0&&jsx("div",{className:"kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned",style:{width:P.total,insetInlineStart:0}}),n.left.map((x,L)=>N(x,` kanuni-datagrid-filter-cell--pinned${L===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:x.state.width,insetInlineStart:n.leftOffsets[L]+P.total})),l>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),o.map(x=>{let L=e?.get(x.state.id);return L===void 0?N(x,"",{width:x.state.width}):N(x," kanuni-datagrid-filter-cell--pinned kanuni-datagrid-cell--sticky",{width:x.state.width,insetInlineStart:L+P.total})}),i>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((x,L)=>N(x,` kanuni-datagrid-filter-cell--pinned${L===0?" kanuni-datagrid-pin-edge-right":""}`,{width:x.state.width,insetInlineEnd:n.rightOffsets[L]}))]})}var mo=memo(Wi);var Hr=createContext("");function yo({theme:t,density:e,palette:n,children:o}){let l=useMemo(()=>themeClassName(t,e,n),[t,e,n]);return jsx(Hr.Provider,{value:l,children:o})}function Ro(){return useContext(Hr)}function $e({children:t,dark:e=false}){let[n,o]=useState(null),l=Ro();return useEffect(()=>{let i=document.createElement("div");return i.className=`kanuni-datagrid-root kanuni-datagrid-portal${e?" kanuni-datagrid-dark":""}${l}`,document.body.appendChild(i),o(i),()=>{i.remove();}},[e,l]),n?createPortal(t,n):null}function $t({anchor:t,onClose:e,margin:n=8,autoFocus:o=false}){let l=useRef(null),[i,d]=useState(t),g=useCallback(f=>{if(l.current=f,!f)return;let m=f.getBoundingClientRect(),c=t.top+m.height+n>window.innerHeight,h=t.top-m.height-n*2,R=c&&h>n?h:t.top;d({left:Math.max(n,Math.min(t.left,window.innerWidth-m.width-n)),top:Math.max(n,Math.min(R,window.innerHeight-m.height-n))}),o&&f.focus();},[t.left,t.top,n,o]);return useEffect(()=>{let f=h=>{let R=l.current;R&&!R.contains(h.target)&&e();},m=h=>{h.key==="Escape"&&e();},c=h=>{let R=l.current,b=h.target;R&&b instanceof Node&&R.contains(b)||e();};return document.addEventListener("mousedown",f),document.addEventListener("keydown",m),window.addEventListener("scroll",c,true),()=>{document.removeEventListener("mousedown",f),document.removeEventListener("keydown",m),window.removeEventListener("scroll",c,true);}},[e]),{position:i,ref:g,elementRef:l}}var yn=25,Wt=new Map,Ar=200,al=200,Or=8;function il(t){let e=ee();return useMemo(()=>({search:e.search,selectAll:e.filterSelectAll,clear:e.clear,apply:e.apply,cancel:e.cancel,blank:e.filterBlank,noMatch:e.filterNoMatch,loading:e.filterLoading,truncated:e.filterTruncated,...t}),[e,t])}var ll=memo(function({label:e,display:n,index:o,active:l,checked:i,onToggle:d,onFocus:g}){return jsxs("div",{role:"option","aria-selected":i,tabIndex:0,className:`kanuni-datagrid-filter-item${l?" kanuni-datagrid-filter-item--active":""}`,"data-value":e,"data-index":o,onFocus:()=>g(o),onClick:()=>d(e),children:[jsx("input",{type:"checkbox",readOnly:true,checked:i,tabIndex:-1}),jsx("span",{children:n})]})});function To({gridId:t,columnId:e,headerLabel:n,entries:o,initialSelected:l,anchor:i,loading:d=false,dark:g,onApply:f,onClose:m,truncated:c=false,onSearch:h,labels:R}){let b=il(R),[v,D]=useState(""),[P,G]=useState(0),[N,x]=useState(()=>new Set(l??o.map(s=>s.label))),[L,B]=useState(false),_=useRef(null),K=useRef(null),[w,E]=useState(0),[I,u]=useState(240),C=`${t??""}:${e}`,H=Wt.get(C),Y=useRef(H?.scrollTop??null),[ne,de]=useState(H&&H.width&&H.height?{width:H.width,height:H.height}:null),Je=useCallback(s=>{_.current=s,s?.focus();},[]),fe=useRef(null),pe=useMemo(()=>{let s=foldText(v.trim());if(!s||c)return o;let T=fe.current;(!T||T.entries!==o)&&(T={entries:o,lowered:o.map(q=>foldText(q.label)),needle:"",result:[]},fe.current=T);let M=T.needle!==""&&s.includes(T.needle)?T.result.filter(q=>foldText(q.label).includes(s)):o.filter((q,S)=>T.lowered[S].includes(s));return T.needle=s,T.result=M,M},[o,v,c]);useEffect(()=>{if(!h)return;let s=setTimeout(()=>h(v),150);return ()=>clearTimeout(s)},[v,h]),useEffect(()=>{L||l||x(new Set(o.map(s=>s.label)));},[o,L,l]);let be=useCallback(s=>{K.current=s,s&&u(s.clientHeight||240);},[]);useEffect(()=>{let s=K.current;!s||Y.current===null||d||s.scrollHeight<=s.clientHeight||(s.scrollTop=Y.current,Y.current=null,E(s.scrollTop));});let Te=useMemo(()=>{let s=pe.length,T=Math.max(0,Math.floor(w/yn)-Or),M=Math.ceil(I/yn)+Or*2,q=Math.min(T,Math.max(0,s-1)),S=Math.min(s,q+M);return {start:q,end:S,count:s,rows:pe.slice(q,S)}},[pe,w,I]),ye=$t({anchor:i,onClose:m}),[ve,Ae]=useState(null),Oe=(ve??ye.position.left)+(ne?.width??260)+48<window.innerWidth?"right":"left",Ze=s=>{s.preventDefault(),s.stopPropagation();let T=ye.elementRef.current;if(!T)return;let M=T.getBoundingClientRect(),q=Oe,S={x:s.clientX,y:s.clientY,w:M.width,h:M.height,left:M.left},re=null,V=De=>{let ie=De.clientX-S.x,F=De.clientY-S.y,Ve=window.innerHeight-M.top-12,et=Math.min(Ve,Math.max(al,S.h+F));if(q==="right"){let ze=window.innerWidth-S.left-12;re={width:Math.min(ze,Math.max(Ar,S.w+ie)),height:et},de(re);}else {let ze=S.left+S.w,Ee=ze-12,Ne=Math.min(Ee,Math.max(Ar,S.w-ie));re={width:Ne,height:et},de(re),Ae(ze-Ne);}K.current&&u(K.current.clientHeight);},ue=()=>{if(window.removeEventListener("pointermove",V),window.removeEventListener("pointerup",ue),re){let De=Wt.get(C);Wt.set(C,{scrollTop:De?.scrollTop??K.current?.scrollTop??0,width:Math.round(re.width),height:Math.round(re.height)});}};window.addEventListener("pointermove",V),window.addEventListener("pointerup",ue);},Qe=useCallback(s=>{B(true),x(T=>{let M=new Set(T);return M.has(s)?M.delete(s):M.add(s),M});},[]),te=useCallback(s=>G(s),[]),Fe=()=>{if(d)return;if(N.size===o.length){f(null);return}let s=o.filter(S=>N.has(S.label)),T=s.some(S=>S.value===null||S.value===void 0),M=s.filter(S=>S.value!==null&&S.value!==void 0),q;M.length===0?q={columnId:e,operator:"isnull"}:T?q={logic:"or",nodes:[{columnId:e,operator:"in",value:M.map(S=>S.value)},{columnId:e,operator:"isnull"}]}:q={columnId:e,operator:"in",value:M.map(S=>S.value)},f(q);},Be=s=>{let T=Math.max(0,Math.min(pe.length-1,s));G(T);let M=ye.elementRef.current?.querySelector(`.kanuni-datagrid-filter-item[data-index="${T}"]`);M?.focus(),M?.scrollIntoView({block:"nearest"});},ce=s=>s.key.length===1&&!s.ctrlKey&&!s.metaKey&&!s.altKey,oe=s=>{let T=s.target===_.current;if(s.key==="Backspace"&&!T){s.preventDefault(),_.current?.focus(),D(M=>M.slice(0,-1)),G(0);return}if(s.key==="ArrowDown"){s.preventDefault(),Be(T?0:P+1);return}if(s.key==="ArrowUp"){s.preventDefault(),Be(T?pe.length-1:P-1);return}if(!T&&(s.key==="Home"||s.key==="End")){s.preventDefault(),Be(s.key==="Home"?0:pe.length-1);return}if(s.key===" "&&!T){s.preventDefault();let M=pe[P];M&&Qe(M.label);return}if(s.key==="Enter"){s.preventDefault(),Fe();return}!T&&ce(s)&&s.key!==" "&&(s.preventDefault(),_.current?.focus(),D(M=>M+s.key),G(0));};return jsx($e,{dark:g,children:jsxs("div",{ref:ye.ref,className:"kanuni-datagrid-filter-popup",style:{left:ve??ye.position.left,top:ye.position.top,...ne?{width:ne.width,height:ne.height,maxHeight:"none"}:null},role:"dialog","aria-label":`${n} filter`,onKeyDown:oe,children:[jsx("div",{className:`kanuni-datagrid-popup-resize kanuni-datagrid-popup-resize--${Oe}`,"data-testid":"dg-filter-resize",onPointerDown:Ze}),jsx("input",{ref:Je,className:"kanuni-datagrid-filter-search",type:"search",placeholder:b.search,value:v,onChange:s=>{D(s.target.value),G(0);},"data-testid":"dg-filter-search"}),c&&jsx("p",{className:"kanuni-datagrid-filter-truncated","data-testid":"dg-filter-truncated",children:b.truncated}),jsxs("div",{className:"kanuni-datagrid-filter-actions",children:[jsx("button",{type:"button",onClick:()=>{B(true),x(new Set(o.map(s=>s.label)));},children:b.selectAll}),jsx("button",{type:"button",onClick:()=>{B(true),x(new Set);},children:b.clear})]}),jsxs("div",{ref:be,className:"kanuni-datagrid-filter-list",role:"listbox","aria-multiselectable":"true","aria-busy":d||void 0,"aria-setsize":pe.length,onScroll:s=>{let T=s.target.scrollTop;E(T),Y.current=null;let M=Wt.get(C);Wt.set(C,{...M,scrollTop:T});},children:[d&&jsx("div",{className:"kanuni-datagrid-filter-empty",children:b.loading}),!d&&pe.length===0&&jsx("div",{className:"kanuni-datagrid-filter-empty",children:b.noMatch}),Te.count>0&&jsx("div",{style:{height:pe.length*yn,position:"relative"},children:jsx("div",{style:{transform:`translateY(${Te.start*yn}px)`},children:Te.rows.map((s,T)=>{let M=Te.start+T;return jsx(ll,{label:s.label,display:s.label===""?b.blank:s.label,index:M,active:M===P,checked:N.has(s.label),onToggle:Qe,onFocus:te},s.label)})})})]}),jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsx("button",{type:"button",onClick:m,children:b.cancel}),jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:Fe,disabled:d,"data-testid":"dg-filter-apply",children:b.apply})]})]})})}var vo="text/x-kanuni-column";function ul({columns:t,levels:e,onSetLevels:n,maxLevels:o=1,onExpandAll:l,onCollapseAll:i,emptyText:d}){let g=ee(),f=d??g.groupPanelHint,[m,c]=useState(false),h=useRef(null),[R,b]=useState(null),v=w=>t.find(I=>I.state.id===w)?.def.headerName??w,D=w=>{if(!w||e.includes(w))return;let E=e.length>=o?e.slice(0,o-1):[...e];n([...E,w]);},P=w=>n(e.filter(E=>E!==w)),G=(w,E)=>{let I=e.filter(C=>C!==w),u=Math.max(0,Math.min(I.length,E));n([...I.slice(0,u),w,...I.slice(u)]);},N=(w,E,I)=>{if(w===E)return;let C=e.filter(H=>H!==w).indexOf(E);C<0||G(w,I==="before"?C:C+1);},x=(w,E)=>{let I=w+E;I<0||I>=e.length||N(e[w],e[I],E<0?"before":"after");},L=(w,E)=>w<E.top+E.height/2?"before":"after",B=(w,E)=>{E.preventDefault(),E.stopPropagation();let I=L(E.clientY,E.currentTarget.getBoundingClientRect());b(null),c(false);let u=h.current;if(h.current=null,u){N(u,e[w],I);return}let C=E.dataTransfer.getData(vo);if(!C||e.includes(C))return;if(e.length>=o){D(C);return}let H=I==="before"?w:w+1;n([...e.slice(0,H),C,...e.slice(H)]);},_=(w,E,I)=>{let u=I.ctrlKey||I.metaKey;u&&(I.key==="ArrowUp"||I.key==="ArrowLeft")?(I.preventDefault(),x(w,-1)):u&&(I.key==="ArrowDown"||I.key==="ArrowRight")?(I.preventDefault(),x(w,1)):(I.key==="Delete"||I.key==="Backspace")&&(I.preventDefault(),P(E));},K=t.filter(w=>!e.includes(w.state.id));return jsxs("div",{className:`kanuni-datagrid-group-panel${m?" kanuni-datagrid-group-panel--over":""}`,onDragOver:w=>{w.preventDefault(),c(true);},onDragLeave:()=>c(false),onDrop:w=>{if(w.preventDefault(),c(false),b(null),h.current){h.current=null;return}D(w.dataTransfer.getData(vo));},children:[e.length>0?jsx("div",{className:"kanuni-datagrid-group-levels",children:e.map((w,E)=>jsx("div",{className:`kanuni-datagrid-group-level${R?.index===E?` kanuni-datagrid-group-level--drop-${R.side}`:""}`,style:{"--dg-group-level":E},"data-group-level":E,onDragOver:I=>{I.preventDefault(),I.stopPropagation();let u=L(I.clientY,I.currentTarget.getBoundingClientRect());b(C=>C?.index===E&&C.side===u?C:{index:E,side:u});},onDragLeave:()=>b(I=>I?.index===E?null:I),onDrop:I=>B(E,I),children:jsxs("span",{className:"kanuni-datagrid-group-chip",draggable:o>1&&e.length>1,tabIndex:0,role:"button","aria-label":`${fillText(g.groupLevelAria,{n:E+1})}: ${v(w)}`,onDragStart:I=>{h.current=w,I.dataTransfer.effectAllowed="move",I.dataTransfer.setData(vo,w);},onDragEnd:()=>{h.current=null,b(null);},onKeyDown:I=>_(E,w,I),children:[o>1&&jsx("span",{className:"kanuni-datagrid-group-chip-level",children:E+1}),v(w),jsx("button",{type:"button","aria-label":fillText(g.groupRemoveAria,{column:v(w)}),onClick:()=>P(w),children:"\xD7"})]})},w))}):jsx("span",{className:"kanuni-datagrid-group-panel-hint",children:f}),jsxs("div",{className:"kanuni-datagrid-group-panel-actions",children:[e.length>0&&jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:l,children:"Expand all"}),jsx("button",{type:"button",onClick:i,children:"Collapse all"})]}),jsxs("label",{className:"kanuni-datagrid-group-select",children:[jsx("span",{className:"kanuni-datagrid-sr-only",children:o>1?g.groupAddLevel:g.groupByColumn}),o>1?jsxs("select",{value:"",disabled:K.length===0,onChange:w=>D(w.target.value),children:[jsx("option",{value:"",children:g.groupAddLevelButton}),K.map(w=>jsx("option",{value:w.state.id,children:w.def.headerName??w.state.id},w.state.id))]}):jsxs("select",{value:e[0]??"",onChange:w=>n(w.target.value?[w.target.value]:[]),children:[jsx("option",{value:"",children:g.groupNoGrouping}),t.map(w=>jsx("option",{value:w.state.id,children:w.def.headerName??w.state.id},w.state.id))]})]})]})]})}var Do=memo(ul);function gl({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:o,defs:l,values:i,checkboxColumn:d=false,detailColumn:g=false,rowNumberColumn:f=false,onPickSummary:m,emptyHint:c="",position:h="bottom",bandOffset:R=0,headerRowsBetween:b=0}){let v=ee(),D=summaryTypeLabels(v),P=new Map(l.map(x=>[x.columnId,x])),G=Xe({rowNumberColumn:f,detailColumn:g,checkboxColumn:d}).total,N=(x,L,B)=>{let _=x.state.id,K=P.get(_),w=K?i[summaryKey(K.columnId,K.type)]:void 0,E=x.def.dataType==="number";return jsx("div",{className:`kanuni-datagrid-footer-cell${L}${E?" kanuni-datagrid-footer-cell--number":""}${K?" kanuni-datagrid-footer-cell--active":""}`,style:B,role:"gridcell","data-column-id":_,"data-summary-type":K?.type??"",title:K?`${summaryLabel(K,D)} \u2014 ${x.def.headerName??_}`:void 0,onContextMenu:m?I=>m(_,I):void 0,onClick:m?I=>m(_,I):void 0,children:K?jsx("span",{className:"kanuni-datagrid-footer-value",children:formatSummaryValue(K,w,x.def)}):jsx("span",{className:"kanuni-datagrid-footer-hint",children:c})},_)};return jsxs("div",{className:`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${h}`,role:"row","aria-label":v.columnTotalsAria,style:{width:t.totalWidth+G,"--dg-band-offset":`${R}px`,"--dg-pinned-gap":String(b)},children:[G>0&&jsx("div",{className:"kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned",style:{width:G,insetInlineStart:0}}),t.left.map((x,L)=>N(x,` kanuni-datagrid-footer-cell--pinned${L===t.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:x.state.width,insetInlineStart:t.leftOffsets[L]+G})),n>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),e.map(x=>N(x,"",{width:x.state.width})),o>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:o}}),t.right.map((x,L)=>N(x,` kanuni-datagrid-footer-cell--pinned${L===0?" kanuni-datagrid-pin-edge-right":""}`,{width:x.state.width,insetInlineEnd:t.rightOffsets[L]}))]})}var Rn=memo(gl);function wl(t,e){return `__dg_pinned_${t}_${e}`}function bl({gridId:t,side:e,rows:n,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:g,leadingSpacer:f,trailingSpacer:m,checkboxColumn:c=false,detailColumn:h=false,rowNumberColumn:R=false,rowHeight:b,bandOffset:v=0,headerRowsBetween:D,ariaRowBase:P}){return n.length===0?null:jsx("div",{className:`kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--${e}`,role:"rowgroup",style:{width:o.totalWidth||"100%","--dg-band-offset":`${v}px`,"--dg-pinned-gap":String(D)},children:n.map((G,N)=>{let x={kind:"data",key:wl(e,N),sourceIndex:-1,data:G};return jsx(Nt,{gridId:t,node:x,index:N,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:g,leadingSpacer:f,trailingSpacer:m,striped:false,selected:false,focusedColumnId:null,checkboxColumn:c,detailColumn:h,rowNumberColumn:R,rowNumber:null,headerRowCount:P,height:b},x.key)})})}var Cn=memo(bl);function _r({controller:t,renderRow:e,width:n,bandOffset:o,headerRowsBetween:l,belowPinned:i}){let[,d]=useReducer(m=>m+1,0);useEffect(()=>{let m=[t.events.on("bodyScroll",d),t.events.on("contentReady",d),t.events.on("viewportChanged",d)];return ()=>m.forEach(c=>c())},[t]);let g=useRef(null);useLayoutEffect(()=>{g.current?.querySelectorAll("button, input, select, textarea, a[href], [tabindex]").forEach(m=>m.setAttribute("tabindex","-1"));});let f=t.getStickyGroupRows();return f.length===0?null:jsx("div",{ref:g,className:"kanuni-datagrid-sticky-groups","aria-hidden":"true",style:{width:n||"100%","--dg-band-offset":`${o}px`,"--dg-pinned-gap":String(l),"--dg-sticky-below":`${i}px`},children:f.map((m,c)=>jsx("div",{className:`kanuni-datagrid-sticky-group${c===f.length-1?" kanuni-datagrid-sticky-group--last":""}`,style:{top:m.offset,height:m.height,zIndex:f.length-c},children:e(m.node,m.index,m.height)},String(m.node.key)))})}async function zt(t,e){try{let n=e==="csv"?await t.exportToCsv():e==="excel"?await t.exportToExcel():e==="excel-selected"?await t.exportToExcel({selectedOnly:!0}):await t.exportToPdf();return downloadBlob(n.blob,n.fileName),{completed:!0}}catch(n){return n instanceof ExportAbortedError?{completed:false}:{completed:false,error:n instanceof Error?n.message:String(n)}}}function bt({anchor:t,onClose:e,children:n,dark:o,className:l="",label:i,role:d="dialog"}){let g=$t({anchor:t,onClose:e});return jsx($e,{dark:o,children:jsx("div",{ref:g.ref,className:`kanuni-datagrid-filter-popup ${l}`.trim(),style:{left:g.position.left,top:g.position.top},role:d,"aria-label":i,children:n})})}function Gl(t){let e=ee();return useMemo(()=>({search:e.toolbarSearch,csv:e.exportCsv,excel:e.exportExcel,excelSelected:e.exportExcelSelected,pdf:e.exportPdf,columns:e.columns,exporting:e.exporting,exportMenu:e.exportMenu,...t}),[e,t])}var Sl=()=>jsx("svg",{width:"14",height:"14",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:jsx("path",{d:"M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})});function El({controller:t,search:e=true,exportCsv:n=true,exportExcel:o=false,exportPdf:l=false,columnChooser:i=true,dark:d,onOpenColumnChooser:g,itemsBefore:f,itemsAfter:m,searchDebounce:c=200,labels:h}){let R=Gl(h),[b,v]=useState(t.getSearchText()),[D,P]=useState(null),[G,N]=useState(null),[x,L]=useState(null);useEffect(()=>{let w=setTimeout(()=>t.setSearchText(b),c);return ()=>clearTimeout(w)},[t,b,c]);let[B,_]=useState(()=>t.getSelectedCount());useEffect(()=>(_(t.getSelectedCount()),t.events.on("selectionChanged",()=>_(t.getSelectedCount()))),[t]);let K=async w=>{P(w),L(null);let E=await zt(t,w);E.error?L(E.error):N(null),P(null);};return jsxs("div",{className:"kanuni-datagrid-toolbar",children:[f,e&&jsx("input",{type:"search",className:"kanuni-datagrid-toolbar-search",placeholder:R.search,value:b,"aria-label":R.search,"data-testid":"dg-toolbar-search",onChange:w=>v(w.target.value)}),jsx("div",{className:"kanuni-datagrid-toolbar-spacer"}),i&&jsx("button",{type:"button","aria-haspopup":"dialog","data-testid":"dg-column-chooser",onClick:w=>{let E=w.currentTarget.getBoundingClientRect();g?.({left:E.left,top:E.bottom+2});},children:R.columns}),(n||o||l)&&jsx("button",{type:"button",className:"kanuni-datagrid-toolbar-icon-button","aria-haspopup":"menu","aria-label":R.exportMenu,title:R.exportMenu,disabled:D!==null,"data-testid":"dg-export-menu",onClick:w=>{let E=w.currentTarget.getBoundingClientRect();N(G?null:{left:E.right-190,top:E.bottom+2});},children:D?jsx("span",{className:"kanuni-datagrid-toolbar-busy"}):jsx(Sl,{})}),G&&jsxs(bt,{anchor:G,onClose:()=>N(null),dark:d,role:"menu",label:R.exportMenu,className:"kanuni-datagrid-export-menu",children:[n&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-csv",onClick:()=>K("csv"),children:D==="csv"?R.exporting:R.csv}),o&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-excel",onClick:()=>K("excel"),children:D==="excel"?R.exporting:R.excel}),o&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null||B===0,"data-testid":"dg-export-excel-selected",onClick:()=>K("excel-selected"),children:D==="excel-selected"?R.exporting:R.excelSelected}),l&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:D!==null,"data-testid":"dg-export-pdf",onClick:()=>K("pdf"),children:D==="pdf"?R.exporting:R.pdf})]}),m,x&&jsx("span",{className:"kanuni-datagrid-toolbar-error",role:"alert",children:x})]})}var Go=memo(El);function Ml(t){let e=ee();return useMemo(()=>({title:e.hiddenColumns,empty:e.noHiddenColumns,showAll:e.showAll,ok:e.ok,...t}),[e,t])}function So({controller:t,columns:e,anchor:n,onClose:o,dark:l,labels:i}){let d=Ml(i),g=e.filter(f=>!f.visible);return jsxs(bt,{anchor:n,onClose:o,dark:l,label:d.title,className:"kanuni-datagrid-column-chooser",children:[jsxs("div",{className:"kanuni-datagrid-filter-list",children:[g.length===0&&jsx("div",{className:"kanuni-datagrid-chooser-empty",children:d.empty}),g.map(f=>{let m=t.getColumnModel().getDef(f.id);return jsxs("label",{className:"kanuni-datagrid-filter-item",children:[jsx("input",{type:"checkbox",checked:false,"data-column-toggle":f.id,onChange:()=>t.setColumnVisible(f.id,true)}),jsx("span",{children:m?.headerName??f.id})]},f.id)})]}),g.length>0&&jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsx("button",{type:"button",onClick:()=>g.forEach(f=>t.setColumnVisible(f.id,true)),children:d.showAll}),jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:o,children:d.ok})]})]})}function Il(t){let e=ee();return useMemo(()=>({first:e.pagerFirst,previous:e.pagerPrevious,next:e.pagerNext,last:e.pagerLast,page:e.pagerPage,of:e.pagerOf,rowsPerPage:e.pagerRowsPerPage,...t}),[e,t])}function Hl({page:t,pageCount:e,pageSize:n,pageSizes:o=[25,50,100,250],totalRows:l,onPage:i,onNext:d,onPrevious:g,onPageSize:f,labels:m}){let c=Il(m),h=t<=0,R=t>=e-1,b=l===0?0:t*n+1,v=Math.min(l,(t+1)*n);return jsxs("div",{className:"kanuni-datagrid-pager",role:"navigation","aria-label":"Pagination",children:[jsxs("label",{className:"kanuni-datagrid-pager-size",children:[jsx("span",{children:c.rowsPerPage}),jsx("select",{value:n,"data-testid":"dg-page-size",onChange:D=>f(Number(D.target.value)),children:o.map(D=>jsx("option",{value:D,children:D},D))})]}),jsxs("span",{className:"kanuni-datagrid-pager-range","data-testid":"dg-page-range",children:[b.toLocaleString(),"\u2013",v.toLocaleString()," ",c.of," ",l.toLocaleString()]}),jsxs("div",{className:"kanuni-datagrid-pager-buttons",children:[jsx("button",{type:"button","aria-label":c.first,disabled:h,onClick:()=>i(0),children:"\xAB"}),jsx("button",{type:"button","aria-label":c.previous,disabled:h,"data-testid":"dg-page-prev",onClick:g,children:"\u2039"}),jsxs("span",{className:"kanuni-datagrid-pager-current","data-testid":"dg-page-current",children:[c.page," ",t+1," ",c.of," ",e]}),jsx("button",{type:"button","aria-label":c.next,disabled:R,"data-testid":"dg-page-next",onClick:d,children:"\u203A"}),jsx("button",{type:"button","aria-label":c.last,disabled:R,onClick:()=>i(e-1),children:"\xBB"})]})]})}var Eo=memo(Hl);function $l(t){let e=ee();return useMemo(()=>({clear:e.filterRemove,toggle:e.filterToggle,builder:e.filterEditBuilder,empty:e.filterNone,...t}),[e,t])}function Wl({controller:t,onOpenBuilder:e,alwaysVisible:n=false,describeOptions:o,labels:l}){let i=$l(l),d=ee(),[,g]=useState(0);useEffect(()=>t.events.on("filterChanged",()=>g(h=>h+1)),[t]);let f=t.getEffectiveFilter(),m=t.isFilterEnabled(),c=describeFilter(f,t.getColumnModel(),{...o,labels:{...filterLabels(d),...o?.labels}});return !f&&!n?null:jsxs("div",{className:`kanuni-datagrid-filter-panel${m?"":" kanuni-datagrid-filter-panel--suspended"}`,"data-testid":"dg-filter-panel",role:"group","aria-label":i.toggle,children:[jsx("button",{type:"button",className:"kanuni-datagrid-filter-panel-clear",title:i.clear,"aria-label":i.clear,disabled:!f,"data-testid":"dg-filter-panel-clear",onClick:()=>{t.setFilter(null),t.clearColumnFilters(),t.setFilterEnabled(true);},children:"\xD7"}),jsx("input",{type:"checkbox",className:"kanuni-datagrid-filter-panel-toggle",checked:m,disabled:!f,title:i.toggle,"aria-label":i.toggle,"data-testid":"dg-filter-panel-toggle",onChange:h=>t.setFilterEnabled(h.target.checked)}),jsx("span",{className:"kanuni-datagrid-filter-panel-text",title:c??void 0,"data-testid":"dg-filter-panel-text",children:c??i.empty}),e&&jsx("button",{type:"button",className:"kanuni-datagrid-filter-panel-builder",title:i.builder,"aria-label":i.builder,"data-testid":"dg-filter-panel-builder",onClick:e,children:"\u25BE"})]})}var No=memo(Wl);var Tn=t=>!t.separator&&!t.disabled;function vn({x:t,y:e,items:n,context:o,onClose:l,dark:i=false,label:d}){let g=ee(),f=useRef(null),[m,c]=useState({left:t,top:e}),[h,R]=useState(()=>n.findIndex(Tn)),[b,v]=useState(null),[D,P]=useState(null),G=useRef(null),[N,x]=useState(null);useEffect(()=>P(null),[b]);let L=useCallback((u,C)=>{if(v(u),u===null||!C)return;let H=C.getBoundingClientRect();x({left:H.left,right:H.right,top:H.top});},[]),B=u=>f.current?.querySelector(`[data-item-index="${u}"]`)??null,_=useCallback(u=>{if(G.current=u,!u||!N)return;let C=8,H=u.getBoundingClientRect(),Y=Math.max(C,Math.min(N.top-4,window.innerHeight-H.height-C)),de=N.right+H.width+C<=window.innerWidth?N.right:Math.max(C,N.left-H.width);P({left:de,top:Y});},[N]),K=useCallback(u=>{if(f.current=u,!u)return;let C=u.getBoundingClientRect(),H=8;c({left:Math.max(H,Math.min(t,window.innerWidth-C.width-H)),top:Math.max(H,Math.min(e,window.innerHeight-C.height-H))}),u.focus();},[t,e]);useEffect(()=>{let u=H=>{let Y=H.target;G.current?.contains(Y)||f.current&&!f.current.contains(Y)&&l();},C=()=>l();return document.addEventListener("mousedown",u),window.addEventListener("scroll",C,true),()=>{document.removeEventListener("mousedown",u),window.removeEventListener("scroll",C,true);}},[l]);let w=(u,C)=>{let H=n.length;for(let Y=1;Y<=H;Y++){let ne=(u+C*Y+H*H)%H;if(Tn(n[ne]))return ne}return u},E=u=>{let C=n[u];if(!(!C||!Tn(C))){if(C.items?.length){L(u,B(u));return}C.onSelect?.(o),l();}},I=u=>{switch(u.key){case "ArrowDown":R(C=>w(C,1));break;case "ArrowUp":R(C=>w(C,-1));break;case "Home":R(n.findIndex(Tn));break;case "End":R(w(0,-1));break;case "ArrowRight":if(n[h]?.items?.length)L(h,B(h));else return;break;case "ArrowLeft":if(b!==null)L(null);else return;break;case "Enter":case " ":E(h);break;case "Escape":l();break;case "Tab":l();return;default:return}u.preventDefault(),u.stopPropagation();};return jsxs($e,{dark:i,children:[jsx("div",{ref:K,className:"kanuni-datagrid-context-menu",role:"menu","aria-label":d??g.rowActions,tabIndex:-1,style:{left:m.left,top:m.top},onKeyDown:I,children:n.map((u,C)=>u.separator?jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},u.id??`sep-${C}`):jsx("div",{className:"kanuni-datagrid-menu-row",children:jsxs("button",{type:"button",role:"menuitem",className:`kanuni-datagrid-menu-item${C===h?" kanuni-datagrid-menu-item--active":""}`,disabled:u.disabled,"data-item-index":C,"aria-haspopup":u.items?.length?"menu":void 0,"aria-expanded":u.items?.length?b===C:void 0,onMouseEnter:H=>{R(C),L(u.items?.length?C:null,H.currentTarget);},onClick:()=>E(C),children:[u.icon&&jsx("span",{className:"kanuni-datagrid-menu-icon",children:u.icon}),jsx("span",{className:"kanuni-datagrid-menu-label",children:u.label}),u.shortcut&&jsx("span",{className:"kanuni-datagrid-menu-shortcut",children:u.shortcut}),u.items?.length?jsx("span",{className:"kanuni-datagrid-menu-caret",children:"\u203A"}):null]})},u.id??C))}),b!==null&&n[b]?.items?.length?jsx("div",{ref:_,className:"kanuni-datagrid-context-menu kanuni-datagrid-submenu",style:D?{left:D.left,top:D.top}:{left:0,top:0,visibility:"hidden"},role:"menu",children:n[b].items.map((u,C)=>u.separator?jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},u.id??`sub-sep-${C}`):jsxs("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:u.disabled,onClick:()=>{u.onSelect?.(o),l();},children:[u.icon&&jsx("span",{className:"kanuni-datagrid-menu-icon",children:u.icon}),jsx("span",{className:"kanuni-datagrid-menu-label",children:u.label})]},u.id??C))}):null]})}var zl=typeof navigator<"u"&&/Mac|iPhone|iPad|iPod/.test(navigator.platform??""),Lo=zl?"\u2318":"Ctrl+",Yr=`${Lo}C`,Ul=`${Lo}X`,Yl=`${Lo}V`;function Lt(t,e={}){let n=t.getClipboardText(e);t.notifyClipboardGesture("copy",n?n.split(`
2
+ `).length:0,()=>!n||!navigator.clipboard?.writeText?false:(Xr(n),true));}function Xr(t){navigator.clipboard?.writeText(t).catch(()=>{});}function Xl(t){let e=t.getColumnModel();return t.getVisualColumnIds().some(n=>{let o=e.getDef(n)?.band;return typeof o=="string"?o!=="":Array.isArray(o)&&o.length>0})}function ql(t){return t===false?[]:Array.isArray(t)?t:["csv","excel","excel-selected","pdf"]}var Jl={csv:"exportCsv",excel:"exportExcel","excel-selected":"exportExcelSelected",pdf:"exportPdf"};function Io(t,e,n,o,l){if(n===false)return [];let i=n===true||n===void 0?{}:n,d=[];i.copy!==false&&d.push({id:"__dg-copy",label:e.menuCopy,shortcut:Yr,onSelect:()=>Lt(t)}),i.copyWithHeaders!==false&&d.push({id:"__dg-copy-headers",label:e.menuCopyWithHeaders,onSelect:()=>Lt(t,{includeHeaders:true})}),i.copyWithGroupHeaders!==false&&Xl(t)&&d.push({id:"__dg-copy-group-headers",label:e.menuCopyWithGroupHeaders,onSelect:()=>Lt(t,{includeGroupHeaders:true})});let g=ql(i.export);if(g.length>0){let f=t.getSelectedCount()===0;d.push({id:"__dg-export",label:e.menuExport,items:g.map(m=>({id:`__dg-export-${m}`,label:e[Jl[m]],disabled:m==="excel-selected"&&f,onSelect:()=>{zt(t,m).then(c=>{c.error&&l?.(c.error);});}}))});}return d.length>0&&o&&d.unshift({id:"__dg-sep-builtin",separator:true}),d}function Ao({anchor:t,value:e,dark:n,onCommit:o,onCancel:l}){let i=ee(),[d,g]=useState(e),f=useRef(null);useEffect(()=>{let c=f.current;c&&(c.focus(),c.select());},[]);let m=()=>{let c=d.trim();o(c===""?null:c);};return jsxs(bt,{anchor:t,onClose:l,dark:n,label:i.noteEditorAria,className:"kanuni-datagrid-note-editor",children:[jsx("textarea",{ref:f,className:"kanuni-datagrid-note-input",value:d,rows:4,"aria-label":i.noteEditorAria,placeholder:i.notePlaceholder,onChange:c=>g(c.target.value),onKeyDown:c=>{c.key==="Enter"&&(c.ctrlKey||c.metaKey)&&(c.preventDefault(),m()),c.key==="Escape"&&(c.preventDefault(),l());}}),jsxs("div",{className:"kanuni-datagrid-note-actions",children:[jsx("button",{type:"button",className:"kanuni-datagrid-note-cancel",onClick:l,children:i.cancel}),jsx("button",{type:"button",className:"kanuni-datagrid-note-save",onClick:m,children:i.save})]})]})}function ts(t){let e=ee();return useMemo(()=>({busy:e.busy,loading:e.busyLoading,encoding:e.busyEncoding,filtering:e.busyFiltering,sorting:e.busySorting,computing:e.busyComputing,grouping:e.busyGrouping,aggregating:e.busyAggregating,projecting:e.busyProjecting,exporting:e.busyExporting,cancel:e.cancel,...t}),[e,t])}var ns=new Set(["filtering","sorting","computing","encoding","exporting"]);function Fo({controller:t,delay:e=300,labels:n,cancellable:o=true,forced:l=false}){let[i,d]=useState(()=>t.getBusy()),[g,f]=useState(false);useEffect(()=>(d(t.getBusy()),t.events.on("busyChanged",v=>d(v))),[t]);let m=i.busy&&i.background!==true;useEffect(()=>{if(!m){f(false);return}let v=setTimeout(()=>f(true),e);return ()=>clearTimeout(v)},[m,e]);let c=ts(n);if(!l&&(!g||!m))return null;let h=i.phase?c[i.phase]:c.busy,R=i.progress===null?null:Math.max(0,Math.min(100,i.progress)),b=o&&i.phase!==null&&ns.has(i.phase)&&i.cancellable!==false;return jsx("div",{className:"kanuni-datagrid-loading-overlay",role:"status","aria-live":"polite","data-testid":"dg-loading-overlay","data-phase":i.phase??"busy","data-blocking":i.phase==="exporting"?"true":void 0,"aria-busy":"true",children:jsxs("div",{className:"kanuni-datagrid-loading-card",children:[jsx("span",{className:"kanuni-datagrid-loading-spinner","aria-hidden":"true"}),jsx("span",{className:"kanuni-datagrid-loading-label",children:h}),R!==null&&jsxs("div",{className:"kanuni-datagrid-loading-progress",role:"progressbar","aria-valuenow":Math.round(R),"aria-valuemin":0,"aria-valuemax":100,children:[jsx("div",{className:"kanuni-datagrid-loading-track",children:jsx("div",{className:"kanuni-datagrid-loading-fill",style:{width:`${R}%`}})}),jsxs("span",{className:"kanuni-datagrid-loading-percent",children:[Math.round(R),"%"]})]}),b&&jsx("button",{type:"button",className:"kanuni-datagrid-loading-cancel",onClick:()=>t.cancel(),"data-testid":"dg-loading-cancel",children:c.cancel})]})})}var jr=null;function os(){return typeof document>"u"?null:(jr??=document.createElement("canvas"),jr.getContext("2d"))}function ea(t){let e=getComputedStyle(t);return `${e.fontStyle} ${e.fontWeight} ${e.fontSize} ${e.fontFamily}`}function rs(t){for(let e=t.firstElementChild;e;e=e.nextElementSibling)if(e.tagName!=="MARK")return true;return false}function as(t){let e=t.map(o=>[o.style.width,o.style.minWidth,o.style.maxWidth]);for(let o of t)o.style.width="max-content",o.style.minWidth="0",o.style.maxWidth="none";let n=0;for(let o of t){let l=Math.ceil(o.getBoundingClientRect().width);l>n&&(n=l);}return t.forEach((o,l)=>{[o.style.width,o.style.minWidth,o.style.maxWidth]=e[l];}),n}function Dn(t,e){let n=os();if(!n)return null;let o=typeof CSS<"u"&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),l=t.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${o}"]`),i=t.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${o}"]`);if(!l&&i.length===0)return null;let d=0;if(l){let g=l.querySelector(".kanuni-datagrid-header-label")??l;n.font=ea(g),d=n.measureText(g.textContent??"").width+44;}if(i.length>0){n.font=ea(i[0]);let g=[];for(let f=0;f<i.length;f++){if(rs(i[f])){g.push(i[f]);continue}let m=i[f].textContent??"";if(m==="")continue;let c=n.measureText(m).width+20;c>d&&(d=c);}g.length>0&&(d=Math.max(d,as(g)));}return d===0?null:Math.round(Math.min(640,Math.max(48,d)))}function Bo(t,e){let n=useRef(e);n.current=e;let o=!!e?.enabled,l=e?.storageKey,i=e?.type;useEffect(()=>{if(o)return attachStateStoring(t,{...n.current,enabled:true})},[t,o,l,i]);}var Gn="application/x-kanuni-row";function _o(t,e){let n=!!e?.enabled,o=e?.group??null,l=e?.allowReordering??true,i=e?.allowDropInsert??o!==null,[d,g]=useState(false),[f,m]=useState(null),c=useRef(null),h=useRef(false),R=useRef(null),b=useRef(null),v=useRef(e);v.current=e;let D=useCallback(u=>t.getRowByKey(u),[t]),P=(u,C)=>{let H=C.getBoundingClientRect();return u.clientY<H.top+H.height/2?"before":"after"},G=useCallback((u,C)=>{if(!isDataRow(u))return;b.current=u.key,R.current=u.key,h.current=false,c.current=null;let H={gridId:t.gridId,group:o,rowKey:u.key,row:u.data};C.dataTransfer.setData(Gn,JSON.stringify(H)),C.dataTransfer.setData("text/plain",String(u.key)),C.dataTransfer.effectAllowed="move",t.notifyRowDrag("enter",{rowKey:u.key}),C.stopPropagation();},[t,o]),N=useCallback(()=>{let u=R.current;u!==null&&t.notifyRowDragEnd({rowKey:u,dropped:h.current,overKey:c.current?.key??null,position:c.current?.side??null}),h.current=false,c.current=null,R.current=null,b.current=null,m(null),g(false);},[t]),x=useCallback(u=>u.dataTransfer.types.includes(Gn)?b.current!==null?l:i&&o!==null:false,[l,i,o]),L=useCallback((u,C)=>{if(!isDataRow(u)||!x(C))return;if(C.preventDefault(),C.dataTransfer.dropEffect="move",b.current===u.key){c.current=null,m(null);return}let H=P(C,C.currentTarget),Y=c.current?.key!==u.key||c.current.side!==H;c.current={key:u.key,side:H},m(ne=>ne?.key===u.key&&ne.side===H?ne:{key:u.key,side:H}),Y&&b.current!==null&&t.notifyRowDrag("move",{rowKey:b.current,overKey:u.key,position:H});},[x,t]),B=useCallback((u,C,H)=>{let Y=null;try{let de=u.dataTransfer.getData(Gn);Y=de?JSON.parse(de):null;}catch{Y=null;}if(!Y)return;if(Y.gridId===t.gridId){if(!l)return;let de=v.current?.onReorder;if(de){de({dragKey:Y.rowKey,targetKey:C,position:H,row:D(Y.rowKey)});return}t.moveRow(Y.rowKey,C,H);return}!i||o===null||Y.group!==o||v.current?.onAdd?.({row:Y.row,rowKey:Y.rowKey,otherGridId:Y.gridId,targetKey:C,position:H});},[t,l,i,o,D]),_=useCallback((u,C)=>{if(m(null),!isDataRow(u)||!x(C))return;C.preventDefault(),C.stopPropagation();let H=P(C,C.currentTarget);h.current=true,c.current={key:u.key,side:H},B(C,u.key,H),b.current=null;},[x,B]),K=useCallback(u=>{x(u)&&(u.preventDefault(),u.dataTransfer.dropEffect="move");},[x]),w=useCallback(u=>{m(null),x(u)&&(u.preventDefault(),h.current=true,c.current=null,B(u,null,"after"),b.current=null);},[x,B]),E=useCallback(u=>{let C=u.relatedTarget;C&&u.currentTarget.contains(C)||b.current!==null&&(c.current=null,m(null),t.notifyRowDrag("leave",{rowKey:b.current}));},[t]);return {handlers:n?{draggable:d,setDraggable:g,onDragStart:G,onDragEnd:N,onDragOver:L,onDrop:_}:void 0,dropAt:n?f:null,bodyHandlers:n?{onDragOver:K,onDrop:w,onDragLeave:E}:void 0}}var ps=400;function na(t){return t.scrollWidth>t.clientWidth+1||t.scrollHeight>t.clientHeight+1}function oa(t){return (t.textContent??"").trim()}function ms(t){let{def:e,node:n,value:o,clipped:l,note:i}=t;if(i)return i;if(e&&n){if(typeof e.tooltip=="function"){let d=e.tooltip({value:o,row:n.data,node:n,column:e});return d||null}if(typeof e.tooltip=="string")return e.tooltip||null;if(e.tooltipField){let d=n.data[e.tooltipField];return d==null||d===""?null:String(d)}}return l&&l.length>0?l:null}function $o({rootRef:t,columnModel:e,getRowNode:n,getNote:o,config:l}){let i=l?.enabled!==false,d=l?.delay??ps,g=l?.showOnTruncation!==false,[f,m]=useState(null),c=useRef({columnModel:e,getRowNode:n,getNote:o,showOnTruncation:g,delay:d});return c.current={columnModel:e,getRowNode:n,getNote:o,showOnTruncation:g,delay:d},useEffect(()=>{if(!i){m(null);return}let h=t.current;if(!h)return;let R=null,b=null,v=()=>{R!==null&&(clearTimeout(R),R=null),b=null,m(null);},D=(x,L)=>{let{columnModel:B,getRowNode:_,getNote:K,showOnTruncation:w}=c.current,E=B.getDef(L),I=x.closest("[data-row-key]")?.dataset.rowKey,u=I===void 0?void 0:_(I);return ms({def:E,node:u,value:u?B.getCellValue(u.data,L):void 0,clipped:w&&na(x)?oa(x):null,note:u&&K?K(u.key,L,u.data):null})},P=(x,L)=>{let B=c.current.columnModel.getDef(x);if(B?.headerTooltip)return B.headerTooltip;if(!c.current.showOnTruncation)return null;let _=L.querySelector(".kanuni-datagrid-header-label")??L;if(!na(_))return null;let K=oa(_);return K.length>0?K:null},G=x=>{let B=x.target?.closest("[data-column-id]")??null;if(B===b||(v(),!B||!h.contains(B)))return;let _=B.dataset.columnId;if(!_)return;let K=B.classList.contains("kanuni-datagrid-header-cell");!K&&!B.closest("[data-row-key]")||(b=B,R=setTimeout(()=>{if(R=null,b!==B||!B.isConnected)return;let w=K?P(_,B):D(B,_);if(!w)return;let E=B.getBoundingClientRect();m({text:w,anchor:{top:E.top,left:E.left,width:E.width,height:E.height}});},c.current.delay));},N=x=>{let L=x.relatedTarget;b&&L&&b.contains(L)||v();};return h.addEventListener("mouseover",G),h.addEventListener("mouseout",N),h.addEventListener("mousedown",v),h.addEventListener("keydown",v),h.addEventListener("scroll",v,true),window.addEventListener("blur",v),()=>{v(),h.removeEventListener("mouseover",G),h.removeEventListener("mouseout",N),h.removeEventListener("mousedown",v),h.removeEventListener("keydown",v),h.removeEventListener("scroll",v,true),window.removeEventListener("blur",v);}},[i,t]),i?f:null}var aa=6,Ht=8;function Wo({state:t,dark:e}){let[n,o]=useState(null),[l,i]=useState(null),{text:d,anchor:g}=t;return useLayoutEffect(()=>{if(!n)return;let{width:f,height:m}=n.getBoundingClientRect(),c=document.documentElement.clientWidth,h=document.documentElement.clientHeight,R=g.top+g.height+aa,b=g.top-m-aa,D=R+m+Ht<=h||b<Ht?R:b,P=Math.min(Math.max(Ht,g.left),Math.max(Ht,c-f-Ht));i({top:Math.min(D,h-m-Ht),left:P});},[n,d,g]),jsx($e,{dark:e,children:jsx("div",{ref:o,className:"kanuni-datagrid-tooltip",role:"tooltip",style:l?{top:l.top,left:l.left}:{top:0,left:0,visibility:"hidden"},children:d})})}function Sn(t){return {sortAsc:t.sortAsc,sortDesc:t.sortDesc,clearSort:t.clearSort,groupBy:t.groupByColumn,ungroup:t.ungroupColumn,showGroupPanel:t.showGroupPanel,hideGroupPanel:t.hideGroupPanel,showFooter:t.showFooter,hideFooter:t.hideFooter,showGroupFooters:t.showGroupFooters,hideGroupFooters:t.hideGroupFooters,hideColumn:t.hideColumn,fieldChooser:t.fieldChooser,bestFit:t.bestFit,bestFitAll:t.bestFitAll,fixedPosition:t.fixedPosition,pinLeft:t.pinLeft,pinRight:t.pinRight,pinSticky:t.pinSticky,unpin:t.unpin,moveLeft:t.moveLeft,moveRight:t.moveRight}}var la=Sn(getGridDictionary("en"));function Vo(t,e){let n={...la,...e.labels},{controller:o,maxGroupLevels:l}=e,i=t.columnId,d=o.getColumnModel().getDef(i),g=o.getSort(),f=g.find(N=>N.columnId===i),m=o.getGroupLevels(),c=m.includes(i),h=d?.sortable!==false,R=o.getColumnStates().find(N=>N.id===i)?.pinned??null,b=d?.groupable!==false,v=[{id:"sort-asc",label:n.sortAsc,disabled:!h||f?.direction==="asc",onSelect:()=>o.setSort([{columnId:i,direction:"asc"}])},{id:"sort-desc",label:n.sortDesc,disabled:!h||f?.direction==="desc",onSelect:()=>o.setSort([{columnId:i,direction:"desc"}])},{id:"sort-clear",label:n.clearSort,disabled:!f,onSelect:()=>o.setSort(g.filter(N=>N.columnId!==i))},{id:"sep-1",separator:true},{id:"group",label:c?n.ungroup:n.groupBy,disabled:!b,onSelect:()=>{c?o.groupBy(m.filter(N=>N!==i)):o.groupBy([...m,i].slice(-l));}},{id:"group-panel",label:e.groupPanelVisible?n.hideGroupPanel:n.showGroupPanel,onSelect:e.onToggleGroupPanel}];e.groupFootersAvailable&&v.push({id:"group-footers",label:e.groupFootersVisible?n.hideGroupFooters:n.showGroupFooters,onSelect:e.onToggleGroupFooters}),v.push({id:"footer",label:e.footerVisible?n.hideFooter:n.showFooter,onSelect:e.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:n.hideColumn,disabled:o.getColumnStates().filter(N=>N.visible).length<=1,onSelect:()=>o.setColumnVisible(i,false)},{id:"field-chooser",label:n.fieldChooser,onSelect:e.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:n.bestFit,disabled:d?.resizable===false,onSelect:()=>e.onBestFit(i)},{id:"best-fit-all",label:n.bestFitAll,onSelect:e.onBestFitAll});let D=o.getColumnStates().filter(N=>N.visible&&N.pinned===R).map(N=>N.id),P=D.indexOf(i),G=d?.reorderable!==false&&P>=0;return v.push({id:"sep-4",separator:true},{id:"move-left",label:n.moveLeft,disabled:!G||P<=0,onSelect:()=>o.moveColumn(i,D[P-1])},{id:"move-right",label:n.moveRight,disabled:!G||P<0||P>=D.length-1,onSelect:()=>o.moveColumn(i,D[P+2])},{id:"fixed-position",label:n.fixedPosition,items:[{id:"pin-left",label:n.pinLeft,disabled:R==="left",onSelect:()=>o.setColumnPinned(i,"left")},{id:"pin-right",label:n.pinRight,disabled:R==="right",onSelect:()=>o.setColumnPinned(i,"right")},{id:"pin-sticky",label:n.pinSticky,disabled:R==="sticky",onSelect:()=>o.setColumnPinned(i,"sticky")}]},{id:"unpin",label:n.unpin,disabled:R===null,onSelect:()=>o.setColumnPinned(i,null)}),v}var Zt=typeof window<"u"?useLayoutEffect:useEffect,ca=1e8,En=null;function ma(){if(En!==null)return En;if(typeof document>"u"||!document.body)return null;let t=document.createElement("div");t.setAttribute("aria-hidden","true"),t.style.cssText="position:fixed;top:0;left:-9999px;width:80px;height:80px;overflow:auto;visibility:hidden;pointer-events:none;";let e=document.createElement("div");e.style.cssText="width:1px;",e.style.height=`${ca}px`,t.appendChild(e),document.body.appendChild(t),t.scrollTop=ca;let n=t.scrollTop;return qo=e.offsetHeight>0?e.offsetHeight:null,t.remove(),n>0&&(En=n),En}var qo=null;function Ns(){return qo===null&&ma(),qo}function Uo(t){return Math.abs(t)}function pa(t,e){return getComputedStyle(e).direction==="rtl"?-t:t}function Jo(t,e){if(e)return t;if(t.dataSource!=null&&!Array.isArray(t.dataSource))throw new Error("[datagrid] a server-side DataSource is an Enterprise feature. Pass an array to DataGrid, or import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise.");if(t.columns?.some(d=>d.spanRows)){t.debugMode&&console.warn("[datagrid] cell span/merge (spanRows) is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let d={...t,columns:t.columns.map(g=>g.spanRows?{...g,spanRows:void 0}:g)};return Jo(d,e)}if(t.tree){t.debugMode&&console.warn("[datagrid] tree data is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let d={...t};return delete d.tree,Jo(d,e)}if(!t.grouping)return t.masterDetail?Yo(t):t;let{groupBy:n,groupSummaries:o}=t.grouping,l=n==null?[]:typeof n=="string"?[n]:n;if(l.length<=1&&!o)return t.masterDetail?Yo(t):t;t.debugMode&&console.warn("[datagrid] multi-level grouping and group summaries are Enterprise features \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use them.");let i={...t,grouping:{...t.grouping,groupBy:l.slice(0,1),groupSummaries:false}};return t.masterDetail?Yo(i):i}function Yo(t){t.debugMode&&console.warn("[datagrid] master-detail is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let e={...t};return delete e.masterDetail,e}function Ms(t){return jsx(Jn,{locale:t.locale,messages:t.messages,children:jsx(yo,{theme:t.theme,density:t.density,palette:t.palette,children:jsx(Ps,{...t})})})}function Ps(t){let e=ee(),{className:n,style:o,dark:l=false,theme:i,palette:d,striped:g=true,emptyText:f,sortable:m=true,filterRow:c=false,headerFilter:h=false,filterIconMode:R="hover",columnReorder:b=true,columnResize:v=true,loadingOverlay:D=true,announcements:P=true,groupPanel:G=false,showRowCount:N=false,toolbar:x=false,toolbarExcel:L=false,toolbarPdf:B=false,filterPanel:_=false,filterPanelLabels:K,onOpenFilterBuilder:w,toolbarItemsBefore:E,toolbarItemsAfter:I,renderRow:u,stateStoring:C,headerMenu:H=true,focusedRow:Y=false,focusedRowKey:ne,onFocusedRowChanged:de,footer:Je,footerMenu:fe=true,onRowClick:pe,onRowActivate:be,onReady:Te,renderCellContent:ye,getCellClassName:ve,renderOverlay:Ae,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:Qe,enterpriseEdition:te=false,renderDetail:Fe,renderEditForm:Be,density:ce,rowMenu:oe,cellMenu:s,autoColumns:T,rowDrag:M,tooltip:q,pinnedTopRows:S,pinnedBottomRows:re,footerPosition:V="bottom",autoSizeStrategy:ue="none",highlightSearch:De=true,...ie}=t,F=useMemo(()=>{let r=ie.columns;if(r&&r.length>0)return r;let p=ie.dataSource;if(!Array.isArray(p)||p.length===0)return r??[];let k=typeof T=="object"?T:void 0;return T===false?r??[]:inferColumns(p,k)},[ie.columns,ie.dataSource,T]),Ve={...ie,columns:F},et=isPackagedTheme(i)?THEME_ROW_HEIGHT[i][ce??"normal"]:ce?DENSITY_ROW_HEIGHT[ce]:DEFAULT_ROW_HEIGHT,ze=Ve.rowHeight===void 0?{...Ve,rowHeight:et}:Ve,Ee=te?Number.POSITIVE_INFINITY:1,Ne=Jo(ze,te),{controller:a,rows:Ue,window:Rt,layout:le,sort:tt,rowHeight:y,visibleCount:$}=zn(Ne),U=Yn(a,t.printLayout),J=U.active?{...Rt,rows:{...Rt.rows,start:0,end:Ue.length,offsetY:0,totalHeight:0}}:Rt,O=useMemo(()=>F.some(r=>r.autoHeight===true),[F]),Re=h&&a.canListDistinctValues();h&&!Re&&ie.debugMode&&console.warn("[datagrid] headerFilter needs a column's distinct values. This grid is remote and its DataSource does not implement `loadDistinctValues` \u2014 implement it, or use `filterRow`.");let Ke=useRef(null);Zt(()=>{a.setEnterpriseEdition(te);},[a,te]),useEffect(()=>{Te?.(a);},[a,Te]),Zt(()=>{let r=ma();r!==null&&r<DEFAULT_MAX_SCROLL_OFFSET&&a.setMaxScrollOffset(r);let p=Ns();p!==null&&a.setMaxCanvasHeight(p);},[a]),Zt(()=>{let r=Ke.current;if(!r)return;let p=()=>{a.setViewportSize(r.clientWidth,r.clientHeight),r.style.setProperty("--dg-viewport-width",`${r.clientWidth}px`);let Z=r.querySelector(".kanuni-datagrid-rows"),W=r.querySelector(".kanuni-datagrid-canvas");if(Z&&W){let z=Z.getBoundingClientRect(),ae=W.getBoundingClientRect();a.setChromeOffsets(z.top-ae.top,ae.bottom-z.bottom);}calibrateMaxScrollOffset(r,a);};if(p(),typeof ResizeObserver>"u")return;let k=new ResizeObserver(p);k.observe(r);let A=r.querySelector(".kanuni-datagrid-canvas");return A&&k.observe(A),()=>k.disconnect()},[a]),Zt(()=>{if(!O)return;let r=Ke.current?.querySelector(".kanuni-datagrid-viewport");if(!r)return;let p=a.getVirtualWindow(),k=a.getRows(),A=new Map(a.getMeasuredRowHeights()),Z=false;for(let W=p.rows.start;W<p.rows.end;W++){let z=k[W];if(!z||z.kind!=="data")continue;let ae=r.querySelector(`[data-row-key="${CSS.escape(String(z.key))}"]`);if(!ae)continue;let se=ae.getBoundingClientRect().height;se>0&&A.get(z.key)!==se&&(A.set(z.key,se),Z=true);}Z&&a.setMeasuredRowHeights(A);}),useEffect(()=>{if(O)return a.events.on("columnStateChanged",()=>{a.clearMeasuredRowHeights();})},[a,O]),useEffect(()=>a.events.on("scrollRequested",r=>{let p=Ke.current;if(!p)return;r.scrollTop!==void 0&&(p.scrollTop=r.scrollTop),r.scrollLeft!==void 0&&(p.scrollLeft=pa(r.scrollLeft,p)),a.setScroll(p.scrollTop,Uo(p.scrollLeft));let k=r.scrollTop;k===void 0||Math.abs(p.scrollTop-k)<=1||setTimeout(()=>{let A=Ke.current;!A||Math.abs(A.scrollTop-k)<=1||(A.scrollTop=k,a.setScroll(A.scrollTop,Uo(A.scrollLeft)));},0);}),[a]);let Qo=qn(a,t.alignedGrids,Ke),ha=useCallback(r=>{let p=r.currentTarget;a.setScroll(p.scrollTop,Uo(p.scrollLeft)),Qo.syncScroll(p.scrollLeft);},[a,Qo]),wa=useCallback((r,p)=>a.toggleSort(r,p),[a]);Bo(a,C);let Ct=_o(a,M);useEffect(()=>{ne!=null&&a.getFocusedRowKey()!==ne&&a.focusRow(ne);},[a,ne]),useEffect(()=>{if(de)return a.events.on("focusedRowChanged",r=>de({rowKey:r.rowKey,row:r.row}))},[a,de]);let je=useRef(null),[Mn,ba]=useState(null);useEffect(()=>a.events.on("overlayChanged",r=>{ba(r.manual?r.overlay:null);}),[a]);let ya=useCallback(r=>{let p=a.getDataRowNode(r);if(p)return p;if(r==="")return;let k=Number(r);return Number.isNaN(k)?void 0:a.getDataRowNode(k)},[a]),Ce=te?t.notes:void 0;!te&&t.notes&&t.debugMode&&console.warn("[datagrid] cell notes are an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use them.");let Qt=!!Ce?.onChange&&Ce.menu!==false,jt=useCallback((r,p,k)=>Ce?Ce.get({rowKey:r,columnId:p,row:k})??null:null,[Ce]),jo=$o({rootRef:je,columnModel:a.getColumnModel(),getRowNode:ya,getNote:Ce?jt:void 0,config:q}),[er,Ra]=useState(0);useEffect(()=>{let r=new Set,p=[a.events.on("cellsFlashed",({rowKeys:k,columnIds:A,duration:Z})=>{let W=je.current;if(!W)return;let z=k.length?k.map(ke=>`[data-row-key="${CSS.escape(String(ke))}"]`).join(","):".kanuni-datagrid-row",ae=A.length?A.map(ke=>`[data-column-id="${CSS.escape(ke)}"]`).join(","):"[data-column-id]",se=[];W.querySelectorAll(z).forEach(ke=>{ke.querySelectorAll(ae).forEach(St=>se.push(St));});for(let ke of se)ke.classList.remove("kanuni-datagrid-cell--flash");W.offsetWidth;for(let ke of se)ke.classList.add("kanuni-datagrid-cell--flash");let Ye=setTimeout(()=>{for(let ke of se)ke.classList.remove("kanuni-datagrid-cell--flash");r.delete(Ye);},Z);r.add(Ye);}),a.events.on("cellsRefreshed",({revision:k})=>Ra(k))];return ()=>{p.forEach(k=>k()),r.forEach(clearTimeout);}},[a]);let Ca=useCallback((r,p)=>a.moveColumn(r,p),[a]),ka=useCallback((r,p,k)=>a.setColumnWidth(r,p,k??true),[a]),Pn=useCallback(r=>{if(!je.current)return;let p=Dn(je.current,r);p!==null&&a.setColumnWidth(r,p);},[a]),Ln=useCallback(()=>{let r=je.current;if(r)for(let p of a.getColumnStates()){if(!p.visible)continue;let k=Dn(r,p.id);k!==null&&a.setColumnWidth(p.id,k);}},[a]);useEffect(()=>{if(ue!=="fitGrid")return;let r=()=>a.sizeColumnsToFit();return r(),a.events.on("gridSizeChanged",r)},[a,ue]);let In=useRef(null);Zt(()=>{if(ue!=="fitCells"){In.current=null;return}In.current!==a&&je.current?.querySelector(".kanuni-datagrid-row .kanuni-datagrid-cell[data-column-id]")&&(In.current=a,Ln());});let[xa,tr]=useState({}),nr=t.filterDebounce??(a.isRemote()?200:0),Hn=useRef(false),en=useMemo(()=>datePeriodLabels(e),[e]),An=useRef(en);An.current=en;let Ta=useMemo(()=>periodSuggestionList(en),[en]),tn=useCallback((r,p)=>{let k=a.getColumnModel().getDataType(r);Hn.current=true;try{a.setColumnFilter(r,parseFilterInput(r,p,k,An.current),FILTER_PART_ROW);}finally{Hn.current=false;}},[a]),nt=useMemo(()=>createDebouncedCommit(nr),[nr]);useEffect(()=>()=>nt.cancelAll(),[nt]);let va=useCallback((r,p)=>{tr(k=>({...k,[r]:p})),nt.schedule(r,()=>tn(r,p));},[tn,nt]),Da=useCallback((r,p)=>{nt.cancel(r),tn(r,p);},[tn,nt]);useEffect(()=>a.events.on("filterChanged",()=>{if(Hn.current)return;let r=a.getColumnModel();tr(p=>po(p,{isPending:k=>nt.isPending(k),textFor:k=>{let A=a.getColumnFilter(k,FILTER_PART_ROW);return A?filterInputFromNode(k,A,r.getDataType(k),An.current):""}},r.getOrder()));}),[a,nt]);let[ge,ut]=useState(null),nn=useRef(0),Ga=useCallback((r,p)=>{let k=p.getBoundingClientRect(),A=a.getColumnModel().getDef(r),Z={left:k.left,top:k.bottom+2},W=A?.headerName??r,z=a.getColumnFilter(r,FILTER_PART_SET)??a.getColumnFilter(r,FILTER_PART_DEFAULT);if(!a.isRemote()){let se=++nn.current;ut({columnId:r,label:W,entries:[],selected:null,anchor:Z,loading:true}),a.getDistinctValueSetAsync(r).then(({entries:Ye,truncated:ke})=>{nn.current===se&&ut(St=>St&&St.columnId===r?{...St,entries:Ye,truncated:ke,capped:ke,selected:selectedLabelsFromFilter(z,Ye),loading:false}:St);});return}let ae=++nn.current;ut({columnId:r,label:W,entries:[],selected:null,anchor:Z,loading:true}),a.getDistinctValuesAsync(r).then(se=>{nn.current===ae&&ut(Ye=>Ye&&Ye.columnId===r?{...Ye,entries:se,selected:selectedLabelsFromFilter(z,se),loading:false}:Ye);});},[a]),Sa=useCallback(r=>{ge&&(a.setColumnFilter(ge.columnId,r,FILTER_PART_SET),ut(null));},[a,ge]),Ea=Object.keys(a.getColumnStates().reduce((r,p)=>(a.getColumnFilter(p.id)&&(r[p.id]=true),r),{})),At=a.getSelectionMode(),he=At!=="none"&&(ie.selection?.checkboxColumn??false),or=(ie.selection?.rowClick??(he?"toggle":"replace"))==="toggle",Na=useCallback((r,p)=>{a.handleRowClick(r.key,{ctrlKey:p.ctrlKey||or&&!p.shiftKey,metaKey:p.metaKey,shiftKey:p.shiftKey});},[a,or]),Ma=useCallback((r,p)=>a.focusCell(r.key,p),[a]),Pa=useCallback(r=>a.toggleRow(r.key),[a]),[Ot,rr]=useState(null),La=useCallback(()=>rr(null),[]),[Ft,On]=useState(null),ar=useCallback((r,p)=>{let A=(je.current?.querySelector(`[data-row-key="${CSS.escape(String(r))}"] [data-column-id="${CSS.escape(p)}"]`)??je.current)?.getBoundingClientRect();return {left:A?.left??0,top:(A?.bottom??0)+2}},[]),Ia=useCallback(r=>{let p=Ft;On(null),!(!p||!Ce?.onChange)&&Ce.onChange({rowKey:p.rowKey,columnId:p.columnId,row:p.row,text:r});},[Ft,Ce]),ir=useCallback((r,p)=>{if(!Ce?.onChange||Ce.menu===false)return [];let k=r.columnId;if(!k)return [];let A=a.getRowKey(r.row),Z=jt(A,k,r.row),W=()=>On({rowKey:A,columnId:k,row:r.row,text:Z??"",anchor:ar(A,k)}),z=[];return p&&z.push({separator:true,id:"__note-sep"}),z.push({id:"__note-edit",label:Z?e.editNote:e.addNote,onSelect:W}),Z&&z.push({id:"__note-delete",label:e.deleteNote,onSelect:()=>Ce.onChange?.({rowKey:A,columnId:k,row:r.row,text:null})}),z},[Ce,a,jt,ar,e]),[on,Fn]=useState(null),lr=useRef({x:0,y:0}),sr=useCallback(r=>Io(a,e,s,r,p=>{Fn({message:p,...lr.current}),console.error("[datagrid] export failed:",p);}),[a,e,s]),rn=useCallback((r,p,k,A,Z)=>{if(k.kind!=="data")return;let W={row:k.data,node:k,rowIndex:A,columnId:Z,selectedKeys:a.getSelectedKeys()},z=(typeof oe=="function"?oe(W):oe)??[],ae=ir(W,z.length>0),se=[...z,...ae,...sr(z.length+ae.length>0)];se.length!==0&&(lr.current={x:r,y:p},Fn(null),rr({x:r,y:p,items:se,context:W}));},[oe,a,ir,sr]),dr=useCallback(r=>r?.target?.closest("[data-column-id]")?.dataset.columnId??null,[]),kt=useCallback((r,p,k,A,Z)=>{let W=A??-1;r&&a.notifyRow(r,k,W);let z=dr(Z);z!==null&&a.notifyCell(p,k,W,z);},[a,dr]),Ha=useCallback((r,p,k)=>{pe?.(r),kt("rowClicked","cellClicked",r,p,k);},[pe,kt]),Aa=useCallback((r,p,k)=>{be?.(r),kt("rowDoubleClicked","cellDoubleClicked",r,p,k);},[be,kt]),Oa=useCallback((r,p,k)=>{if(kt(null,"cellContextMenu",r,p,k),!oe&&!Qt&&s===false||r.kind!=="data")return;k.preventDefault(),a.isRowSelected(r.key)||a.handleRowClick(r.key,{});let A=k.target.closest("[data-column-id]")?.dataset.columnId??null;rn(k.clientX,k.clientY,r,p,A);},[oe,Qt,s,a,rn,kt]),[Fa,Ba]=useState(null),[Ka,_a]=useState(null),[Bn,$a]=useState(()=>ie.grouping?.groupSummaries??false),[xt,Kn]=useState(null),[ur,_n]=useState(null),Wa=useCallback(()=>{a.getSelectedCount()>0?a.clearSelection():a.selectAll();},[a]),Va=$>0&&a.getSelectedCount()>=$?"all":a.getSelectedCount()>0?"some":"none",za=useCallback(r=>{let p=r.target;if(p.tagName==="INPUT"||p.tagName==="TEXTAREA"||p.isContentEditable)return;if((oe||Qt||s!==false)&&(r.key==="ContextMenu"||r.key==="F10"&&r.shiftKey)){let Z=a.getFocus(),W=Z?Ue.findIndex(ae=>ae.key===Z.rowKey):-1,z=W>=0?Ue[W]:void 0;if(z){let se=Ke.current?.querySelector(`[data-row-key="${CSS.escape(String(z.key))}"]`)?.getBoundingClientRect();rn(se?se.left+16:0,se?se.bottom:0,z,W,Z?.columnId??null),r.preventDefault();}return}let k=resolveGridCommand({key:r.key,ctrlKey:r.ctrlKey,metaKey:r.metaKey,shiftKey:r.shiftKey,altKey:r.altKey});if(!k)return;if(k.type==="copy"){Lt(a);return}if(k.type==="activate"){let Z=a.getFocus(),W=Z?Ue.find(z=>z.key===Z.rowKey):void 0;W&&be?.(W),k.preventDefault&&r.preventDefault();return}a.executeCommand(k),k.preventDefault&&r.preventDefault();let A=a.getFocusIndices();if(A&&Ke.current){let W=a.getColumnLayout().center.findIndex(ae=>ae.state.id===a.getFocus()?.columnId),z=a.ensureVisible(A.rowIndex,W===-1?void 0:W);if(z){let ae=Ke.current;z.scrollTop!==void 0&&(ae.scrollTop=z.scrollTop),z.scrollLeft!==void 0&&(ae.scrollLeft=pa(z.scrollLeft,ae)),a.setScroll(ae.scrollTop,ae.scrollLeft);}}},[a,Ue,be,oe,Qt,s,rn]),ct=useMemo(()=>bandDepth([...le.left,...le.center,...le.right]),[le]),Tt=Mt,$n=(c?2:1)+ct,an=S?.length??0,Ua=re?.length??0,ln=$n+an,sn=Fa??ie.grouping?.panel??G,Ya=a.getGroupLevels(),Xa=useCallback(r=>a.groupBy(r.slice(0,Ee)),[a,Ee]),qa=useCallback(r=>a.toggleGroup(r),[a]),cr=useCallback(r=>a.toggleGroupSelection(r),[a]),Ja=a.getColumnModel().runtime().filter(r=>r.state.visible&&r.def.groupable!==false),Ge=a.hasMasterDetail()&&!!Fe,me=t.rowNumbers??false,Za=me&&a.isPaginated()?a.getPage()*a.getPageSize():0;useEffect(()=>{a.setLeadWidth(oo(he,Ge,me));},[a,he,Ge,me]);let Qa=useCallback(r=>a.toggleDetail(r),[a]),ja=useCallback(r=>a.toggleTreeRow(r),[a]),pr=a.getSummaryDefs(),ei=a.getSummaries(),vt=Ka??Je??pr.length>0,Bt=vt&&V==="top",Wn=c?2:1,mr=Ne.grouping?.groupSummaries&&Bn?ie.summaries:void 0,gr=a.getGroupDisplay(),fr=useCallback(()=>{$a(r=>(a.setGroupSummaries(!r),!r));},[a]),ti=useCallback((r,p)=>{if(!fe)return;p.preventDefault();let k=a.getColumnModel().getDef(r),A=a.getColumnSummary(r),Z={columnId:r,headerName:k?.headerName??k?.field??r},W=[{id:"none",label:e.noTotal,disabled:A===null,onSelect:()=>a.setColumnSummary(r,null)},{id:"sep",separator:true},...allowedSummaryTypes(k?.dataType).map(z=>({id:z,label:summaryTypeLabels(e)[z],disabled:A?.type===z,onSelect:()=>a.setColumnSummary(r,z)}))];Kn({x:p.clientX,y:p.clientY,items:W,context:Z});},[a,fe]),ni=useCallback((r,p)=>{if(H===false)return;p.preventDefault();let k=a.getColumnModel().getDef(r),A={columnId:r,headerName:k?.headerName??k?.field??r},Z=Vo(A,{controller:a,groupPanelVisible:sn,footerVisible:vt,groupFootersAvailable:te,groupFootersVisible:Bn,onToggleGroupPanel:()=>Ba(!sn),onToggleFooter:()=>_a(!vt),onToggleGroupFooters:fr,onOpenFieldChooser:()=>_n({left:p.clientX,top:p.clientY}),onBestFit:Pn,onBestFitAll:Ln,maxGroupLevels:Ee,labels:Sn(e)}),W=typeof H=="function"?H(A,Z):Z;!W||W.length===0||Kn({x:p.clientX,y:p.clientY,items:W,context:A});},[H,a,sn,vt,te,Bn,fr,Pn,Ln,Ee,e]),Dt=a.getFocus(),oi=Dt?`${t.gridId}-cell-${String(Dt.rowKey)}-${Dt.columnId}`:void 0,Vn=a.getSelectedCount(),ri=useMemo(()=>{let r=[fillText(e.announceRows,{n:$})];if(tt.length>0){let p=tt.map(k=>{let A=a.getColumnModel().getDef(k.columnId),Z=String(A?.headerName??A?.field??k.columnId),W=k.direction==="desc"?e.announceDescending:e.announceAscending;return `${Z} ${W}`}).join(", ");r.push(fillText(e.announceSortedBy,{columns:p}));}return Vn>0&&r.push(fillText(e.announceSelected,{n:Vn})),r.join(", ")},[a,$,tt,Vn,e]),{centerColumns:ot,centerIndices:dn,stickyInsets:Gt,leadingSpacer:rt,trailingSpacer:at,rowStart:ai,rowEnd:hr}=Dr(le,J),un=a.getColumnModel(),pt=ai,ii=r=>{if(O)return;let p=a.getRowHeightAt(r);return p===y?void 0:p},li=Array.from(Ue.slice(pt,hr)),si=useMemo(()=>!me||a.getGroupLevels().length===0&&!a.hasMasterDetail()&&!a.hasTreePathRows()?null:Gr(Ue),[me,a,Ue]),di=a.hasCellSpans(),wr=useRef({start:0,end:0});wr.current={start:pt,end:hr-1};let ui=useCallback((r,p)=>{let k=a.getCellSpans(p);if(k.length===0)return null;let{start:A,end:Z}=wr.current,W=spanRoleAt(k,r,A,Z);if(!W)return null;if(W.role==="covered")return {kind:"covered"};let z=a.getRowOffset(W.drawStart);return {kind:"draw",height:a.getRowOffset(W.drawEnd)+a.getRowHeightAt(W.drawEnd)-z,offset:0}},[a]),br=De?normalizeSearch(a.getSearchText()):"",ci={pathOf:r=>bandPath(a.getColumnModel().getDef(r)),collapsible:r=>a.isBandCollapsible(r),collapsed:r=>a.isBandCollapsed(r),onToggle:r=>a.toggleBand(r),labels:{expand:e.expandDetails,collapse:e.collapseDetails}},yr={layout:le,centerColumns:ot,leadingSpacer:rt,trailingSpacer:at,defs:pr,values:ei,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,onPickSummary:fe?ti:void 0,emptyHint:fe?"\xB7":""};return jsxs("div",{className:`kanuni-datagrid-root${l?" kanuni-datagrid-dark":""}${U.active?" kanuni-datagrid-print":""}${themeClassName(i,ce,d)}${n?` ${n}`:""}`,style:{"--dg-row-height":`${y}px`,"--dg-grip-inset":me?`${Et}px`:"0px",...o},dir:isRtlLocale(t.locale)?"rtl":void 0,"data-grid-id":t.gridId,"data-theme":i,"data-palette":d,"data-auto-height":O?"":void 0,ref:je,children:[x&&jsx(Go,{controller:a,dark:l,columnChooser:t.toolbarColumnChooser??true,exportExcel:te&&L,exportPdf:te&&B,itemsBefore:E,itemsAfter:I,onOpenColumnChooser:r=>_n(p=>p?null:r)}),sn&&jsx(Do,{columns:Ja,levels:Ya,onSetLevels:Xa,maxLevels:Ee,onExpandAll:()=>a.expandAllGroups(),onCollapseAll:()=>a.collapseAllGroups()}),jsx("div",{className:"kanuni-datagrid-scroller",ref:Ke,onScroll:ha,onKeyDown:za,tabIndex:0,role:"grid","aria-rowcount":$+$n+an+Ua,"aria-colcount":le.left.length+le.center.length+le.right.length+(he?1:0)+(Ge?1:0)+(me?1:0),"aria-multiselectable":At==="multiple"||void 0,"aria-activedescendant":oi,"aria-label":t.gridId,children:jsxs("div",{className:"kanuni-datagrid-canvas",style:{width:(le.totalWidth||0)+oo(he,Ge,me)||"100%"},role:"rowgroup",children:[jsx(so,{layout:le,centerColumns:ot,leadingSpacer:rt,trailingSpacer:at,depth:ct,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,rowHeight:Tt,bandFold:ci}),jsx(co,{bandOffset:ct*Tt,stickyInsets:Gt,layout:le,centerColumns:ot,leadingSpacer:rt,trailingSpacer:at,sort:tt,sortable:m,onSort:wa,headerFilter:Re,filteredColumns:Ea,onOpenFilter:Ga,filterIconMode:R,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,selectAllState:Va,onToggleSelectAll:Wa,draggable:G,reorderable:b,onReorder:Ca,resizable:v,onResize:ka,onAutoFit:Pn,onHeaderContextMenu:H===false?void 0:ni}),c&&jsx(mo,{bandOffset:ct*Tt,stickyInsets:Gt,layout:le,centerColumns:ot,leadingSpacer:rt,trailingSpacer:at,values:xa,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,onChange:va,onCommit:Da,periodSuggestions:Ta,periodListId:`${t.gridId}-filter-periods`}),Bt&&jsx(Rn,{...yr,position:"top",bandOffset:ct*Tt,headerRowsBetween:Wn}),S&&S.length>0&&jsx(Cn,{gridId:t.gridId,side:"top",rows:S,layout:le,columnModel:un,centerColumns:ot,centerIndices:dn,stickyInsets:Gt,leadingSpacer:rt,trailingSpacer:at,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,rowHeight:y,bandOffset:ct*Tt,headerRowsBetween:Wn+(Bt?1:0),ariaRowBase:$n}),a.hasStickyGroupHeaders()&&jsx(_r,{controller:a,width:le.totalWidth,bandOffset:ct*Tt,headerRowsBetween:Wn+(Bt?1:0),belowPinned:an>0?an*y+1:0,renderRow:(r,p,k)=>jsx(Nt,{gridId:t.gridId,node:r,index:p,layout:le,columnModel:un,centerColumns:ot,centerIndices:dn,stickyInsets:Gt,leadingSpacer:rt,trailingSpacer:at,striped:false,selected:false,groupSelection:he&&At==="multiple"?a.getGroupSelectionState(String(r.key)):void 0,onToggleGroupSelect:cr,groupDisplay:gr,focusedColumnId:null,checkboxColumn:he,rowNumberColumn:me,rowNumber:null,headerRowCount:ln,onToggleGroup:A=>{a.toggleGroup(A),a.scrollToRow(A);},revision:er,searchNeedle:br,summaryDefs:mr,detailColumn:Ge,height:k,renderCellContent:ye,getCellClassName:ve})}),jsxs("div",{className:"kanuni-datagrid-rows",style:{position:"relative",height:J.rows.totalHeight},onDragOver:Ct.bodyHandlers?.onDragOver,onDrop:Ct.bodyHandlers?.onDrop,onDragLeave:Ct.bodyHandlers?.onDragLeave,children:[jsx("div",{className:"kanuni-datagrid-viewport",style:{transform:`translateY(${J.rows.offsetY}px)`},children:li.map((r,p)=>r?jsx(Nt,{gridId:t.gridId,node:r,index:pt+p,layout:le,columnModel:un,centerColumns:ot,centerIndices:dn,stickyInsets:Gt,leadingSpacer:rt,trailingSpacer:at,striped:g,selected:a.isRowSelected(r.key),groupSelection:r.kind==="group"&&he&&At==="multiple"?a.getGroupSelectionState(String(r.key)):void 0,onToggleGroupSelect:cr,groupDisplay:gr,focusedColumnId:Dt?.rowKey===r.key?Dt.columnId:null,rowFocused:Y&&Dt?.rowKey===r.key,rowDrag:Ct.handlers,dropSide:Ct.dropAt?.key===r.key?Ct.dropAt.side:null,renderRow:u,checkboxColumn:he,rowNumberColumn:me,getSpan:di?ui:void 0,getNote:Ce?jt:void 0,rowNumber:me?Sr(pt+p,si,Za):null,headerRowCount:ln,onRowClick:Ha,onRowMouseDown:At==="none"?void 0:Na,onRowDoubleClick:Aa,onToggleSelect:Pa,onCellMouseDown:Ma,onRowContextMenu:Oa,onToggleGroup:qa,onToggleTreeRow:ja,revision:er,searchNeedle:br,summaryDefs:mr,detailColumn:Ge,detailExpanded:Ge&&a.isDetailExpanded(r.key),onToggleDetail:Qa,renderDetail:Fe,renderEditForm:Be,height:ii(pt+p),renderCellContent:ye,getCellClassName:ve,onCellPointerDown:Oe,onCellPointerEnter:Ze,onCellDoubleClick:Qe},String(r.key)):jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-row--loading",role:"row","aria-rowindex":pt+p+1+ln,"aria-busy":"true",children:jsx("div",{className:"kanuni-datagrid-cell kanuni-datagrid-loading-cell",role:"gridcell","aria-colindex":1,children:jsx("span",{className:"kanuni-datagrid-loading-bar"})})},`__loading-${pt+p}`))}),Ae?.()]}),re&&re.length>0&&jsx(Cn,{gridId:t.gridId,side:"bottom",rows:re,layout:le,columnModel:un,centerColumns:ot,centerIndices:dn,stickyInsets:Gt,leadingSpacer:rt,trailingSpacer:at,checkboxColumn:he,detailColumn:Ge,rowNumberColumn:me,rowHeight:y,headerRowsBetween:vt&&!Bt?1:0,ariaRowBase:ln+$}),vt&&!Bt&&jsx(Rn,{...yr,position:"bottom"})]})}),(Mn==="noRows"||Mn===null&&$===0)&&jsx("div",{className:"kanuni-datagrid-empty",children:f??e.noData}),_&&jsx(No,{controller:a,alwaysVisible:_==="always",onOpenBuilder:w,describeOptions:K}),D!==false&&jsx(Fo,{controller:a,delay:typeof D=="number"?D:void 0,forced:Mn==="loading"}),a.isPaginated()&&jsx(Eo,{page:a.getPage(),pageCount:a.getPageCount(),pageSize:a.getPageSize(),pageSizes:ie.pagination?.pageSizes,totalRows:$,onPage:r=>a.setPage(r),onNext:()=>a.nextPage(),onPrevious:()=>a.previousPage(),onPageSize:r=>a.setPageSize(r)}),P&&jsx("div",{className:"kanuni-datagrid-sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:ri}),Ft&&jsx(Ao,{anchor:Ft.anchor,value:Ft.text,dark:l,onCommit:Ia,onCancel:()=>On(null)}),Ot&&jsx(vn,{x:Ot.x,y:Ot.y,items:Ot.items,context:Ot.context,dark:l,onClose:La}),on&&jsx($e,{dark:l,children:jsx("button",{type:"button",role:"alert",className:"kanuni-datagrid-toolbar-error kanuni-datagrid-menu-error",style:{left:on.x,top:on.y},onClick:()=>Fn(null),children:on.message})}),xt&&jsx(vn,{x:xt.x,y:xt.y,items:xt.items,context:xt.context,dark:l,label:`${xt.context.headerName} column`,onClose:()=>Kn(null)}),jo&&jsx(Wo,{state:jo,dark:l}),ur&&jsx(So,{controller:a,columns:a.getColumnStates(),anchor:ur,dark:l,onClose:()=>_n(null)}),ge&&jsx(To,{gridId:t.gridId,columnId:ge.columnId,headerLabel:ge.label,entries:ge.entries,initialSelected:ge.selected,anchor:ge.anchor,loading:ge.loading,truncated:ge.truncated,onSearch:ge.capped&&!a.isRemote()?r=>{let{entries:p,truncated:k}=a.searchDistinctValues(ge.columnId,r);ut(A=>A&&A.columnId===ge.columnId?{...A,entries:p,truncated:k}:A);}:void 0,dark:l,onApply:Sa,onClose:()=>ut(null)},`${ge.columnId}:${ge.loading?"loading":"ready"}`)]})}function Is({defs:t,values:e,columnModel:n,rowCount:o,rowCountLabel:l}){let i=ee(),d=summaryTypeLabels(i);return t.length===0&&o===void 0?null:jsxs("div",{className:"kanuni-datagrid-summary-bar",role:"status","aria-label":i.summaryAria,children:[o!==void 0&&jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsx("strong",{children:o.toLocaleString()})," ",l??i.summaryRows]}),t.map(g=>{let f=e[summaryKey(g.columnId,g.type)],m=n.getDef(g.columnId),c=formatSummaryValue(g,f,m);return jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsxs("span",{className:"kanuni-datagrid-summary-label",children:[summaryLabel(g,d)," ",m?.headerName??g.columnId,":"]}),jsx("strong",{children:c})]},summaryKey(g.columnId,g.type))})]})}var Hs=memo(Is);function Fs(t,e){return Zo(t,e,e?.source,(n,o)=>n.computeChartData(o))}function Bs(t,e){return Zo(t,e,e?.source,(n,o)=>n.computeChartXYData(o))}function Ks(t,e){return Zo(t,e,e?.source,(n,o)=>n.computeChartBoxData(o))}function Zo(t,e,n,o){let[l,i]=useState(null);return useEffect(()=>{if(!t||!e){i(null);return}let d=n??"view",g=false,f=0,m=false,c=false,h=null,R=()=>{let D=++f;o(t,e).then(P=>{!g&&D===f&&i(P);},()=>{});},b=(D=false)=>{c||=D,!m&&(m=true,queueMicrotask(()=>{if(m=false,g)return;let P=t.chartBasis(d);!c&&P===h||(c=false,h=P,R());}));};h=t.chartBasis(d),R();let v=[t.events.on("contentReady",()=>b()),t.events.on("rowsChanged",()=>b()),t.events.on("dataUpdated",()=>b()),...d==="selection"?[t.events.on("selectionChanged",()=>b(true))]:[]];return ()=>{g=true,f++,v.forEach(D=>D());}},[t,e]),l}export{Mt as BAND_ROW_HEIGHT,la as DEFAULT_HEADER_MENU_LABELS,Ms as DataGrid,So as GridColumnChooser,vn as GridContextMenu,No as GridFilterPanel,mo as GridFilterRow,Rn as GridFooterRow,Do as GridGroupPanel,co as GridHeader,so as GridHeaderBands,To as GridHeaderFilterPopup,Fo as GridLoadingOverlay,Ao as GridNoteEditor,Eo as GridPager,Cn as GridPinnedRows,bt as GridPopupPanel,$e as GridPortal,Nt as GridRow,Hs as GridSummaryBar,yo as GridSurfaceProvider,Jn as GridTextProvider,Go as GridToolbar,Wo as GridTooltip,Un as PRINT_MAX_ROWS,Gn as ROW_DRAG_MIME,Yr as SHORTCUT_COPY,Ul as SHORTCUT_CUT,Yl as SHORTCUT_PASTE,Io as buildCellMenuItems,Vo as buildHeaderMenu,Lt as copyToClipboard,Sn as headerMenuLabels,Dn as measureBestFitWidth,po as reconcileFilterInputs,zt as runGridExport,qn as useAlignedGrids,$t as useAnchoredPopup,$o as useCellTooltip,zn as useDataGrid,Ks as useGridChartBoxData,Fs as useGridChartData,Bs as useGridChartXYData,Ro as useGridSurfaceClass,ee as useGridText,Yn as usePrintLayout,_o as useRowDrag,Bo as useStateStoring,Xr as writeClipboardText};
package/dist/styles.css CHANGED
@@ -1909,6 +1909,38 @@
1909
1909
  border-top: var(--dg-header-border);
1910
1910
  }
1911
1911
 
1912
+ /* Sticky group headers (grouping.stickyHeaders). A zero-height band that
1913
+ sticks under the header stack (and any pinned-top rows); the header copies
1914
+ hang from it at the offsets core computed, so the rows keep scrolling
1915
+ underneath and nothing below moves. Above the rows, below the header. */
1916
+ .kanuni-datagrid-sticky-groups {
1917
+ position: sticky;
1918
+ top: calc(
1919
+ var(--dg-band-offset, 0px) + var(--dg-header-height) * var(--dg-pinned-gap, 1) +
1920
+ var(--dg-sticky-below, 0px)
1921
+ );
1922
+ z-index: 2;
1923
+ height: 0;
1924
+ overflow: visible;
1925
+ }
1926
+
1927
+ .kanuni-datagrid-sticky-group {
1928
+ position: absolute;
1929
+ left: 0;
1930
+ /* As wide as the ROW, not the band: lead columns (checkbox, row number)
1931
+ make a row wider than the column layout the band is sized to, and the
1932
+ part past the band's edge showed the rows underneath through the copy. */
1933
+ width: max-content;
1934
+ min-width: 100%;
1935
+ /* The group colour may be translucent; the rows underneath must not show
1936
+ through the copy. */
1937
+ background: var(--dg-surface);
1938
+ }
1939
+
1940
+ .kanuni-datagrid-sticky-group--last {
1941
+ box-shadow: 0 2px 4px -2px color-mix(in srgb, var(--dg-text, #000) 25%, transparent);
1942
+ }
1943
+
1912
1944
  /* The rows inside keep the grid's cell geometry but not its striping — these
1913
1945
  are not part of the alternating rhythm of the data. */
1914
1946
  .kanuni-datagrid-pinned-rows .kanuni-datagrid-row,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanunilabs/datagrid-react",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "High-performance React data grid — virtualized rows and columns, sticky pinned columns, sorting, filtering and theming",
5
5
  "keywords": [
6
6
  "react",
@@ -54,7 +54,7 @@
54
54
  "access": "public"
55
55
  },
56
56
  "dependencies": {
57
- "@kanunilabs/datagrid-core": "1.5.0"
57
+ "@kanunilabs/datagrid-core": "1.6.0"
58
58
  },
59
59
  "peerDependencies": {
60
60
  "react": ">=18.0.0",
@@ -65,7 +65,7 @@
65
65
  },
66
66
  "scripts": {
67
67
  "lint": "tsc --noEmit",
68
- "build": "tsup && node scripts/build-css.mjs",
68
+ "build": "tsup && node scripts/build-css.mjs && node ../../scripts/check-esm-load.mjs",
69
69
  "build:css": "node scripts/build-css.mjs",
70
70
  "build:check": "tsc --noEmit && node ../../scripts/check-hook-order.mjs ../..",
71
71
  "test": "vitest run --passWithNoTests"