@kanunilabs/datagrid-react 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +12 -4
  2. package/dist/index.cjs +2 -2
  3. package/dist/index.d.cts +128 -15
  4. package/dist/index.d.ts +128 -15
  5. package/dist/index.js +2 -2
  6. package/dist/styles.css +157 -74
  7. package/dist/themes/all.css +1588 -0
  8. package/dist/themes/amber.css +41 -0
  9. package/dist/themes/aubergine.css +49 -0
  10. package/dist/themes/azure.css +41 -0
  11. package/dist/themes/burgundy.css +49 -0
  12. package/dist/themes/charcoal.css +49 -0
  13. package/dist/themes/contrast-dark.css +49 -0
  14. package/dist/themes/contrast-light.css +41 -0
  15. package/dist/themes/coral.css +41 -0
  16. package/dist/themes/corporate.css +41 -0
  17. package/dist/themes/deep-sea.css +49 -0
  18. package/dist/themes/editorial.css +41 -0
  19. package/dist/themes/ember.css +49 -0
  20. package/dist/themes/emerald.css +41 -0
  21. package/dist/themes/forest.css +49 -0
  22. package/dist/themes/glacier.css +41 -0
  23. package/dist/themes/graphite.css +49 -0
  24. package/dist/themes/indigo-night.css +49 -0
  25. package/dist/themes/indigo.css +41 -0
  26. package/dist/themes/ivory.css +41 -0
  27. package/dist/themes/lagoon.css +41 -0
  28. package/dist/themes/linen.css +41 -0
  29. package/dist/themes/midnight.css +49 -0
  30. package/dist/themes/mist.css +41 -0
  31. package/dist/themes/monochrome.css +41 -0
  32. package/dist/themes/onyx.css +49 -0
  33. package/dist/themes/orchid.css +41 -0
  34. package/dist/themes/porcelain.css +41 -0
  35. package/dist/themes/rose.css +41 -0
  36. package/dist/themes/sandstone.css +41 -0
  37. package/dist/themes/slate-night.css +49 -0
  38. package/dist/themes/slate.css +41 -0
  39. package/dist/themes/steel.css +49 -0
  40. package/dist/themes/stone.css +41 -0
  41. package/dist/themes/taupe.css +41 -0
  42. package/dist/themes/teal.css +41 -0
  43. package/dist/themes/terminal.css +49 -0
  44. package/package.json +9 -5
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
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};
1
+ import {createContext,memo,useState,useId,useRef,useEffect,useContext,useMemo,useCallback,useSyncExternalStore,useLayoutEffect,useReducer}from'react';import {getGridDictionary,isDetailRow,isEditFormRow,isFillerRow,isGroupRow,lookupLabel,fillText,summaryLabel,formatSummaryValue,summaryKey,GROUP_COLUMN_ID,summaryTypeLabels,pageButtonItems,describeFilter,filterLabels,computeHeaderBands,isChromeColumn,downloadBlob,ExportAbortedError,formatDateValue,foldText,DataGridController,themeClassName,attachStateStoring,isDataRow,inferColumns,isPackagedTheme,THEME_ROW_HEIGHT,DENSITY_ROW_HEIGHT,DEFAULT_ROW_HEIGHT,DEFAULT_MAX_SCROLL_OFFSET,calibrateMaxScrollOffset,RowMotion,datePeriodLabels,periodSuggestionList,parseFilterInput,FILTER_PART_ROW,createDebouncedCommit,FILTER_PART_SET,FILTER_PART_DEFAULT,selectedLabelsFromFilter,resolveGridCommand,bandDepth,allowedSummaryTypes,hasColSpans,spanRoleAt,normalizeSearch,isRtlLocale,chartNeedsOrder,filterInputFromNode,bandPath}from'@kanunilabs/datagrid-core';export{ClientRowModel,ColumnModel,DEFAULT_ROW_HEIGHT,DENSITY_ROW_HEIGHT,DataGridController,GRID_COLOR_SCHEMES,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 Ki=["contentReady","viewportChanged","columnStateChanged","sortChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","rowPinningChanged","findChanged"];function fo(t){let e=t.sorting?.postSort,n=useRef(e);useEffect(()=>{n.current=e;},[e]);let[a]=useState(()=>((I,c)=>n.current?.(I,c))),l=()=>new DataGridController(e?{...t,sorting:{...t.sorting,postSort:a}}:t),[i,s]=useState(l);useEffect(()=>{if(i.isDisposed()){s(l());return}return ()=>i.dispose()},[i]);let p=useRef(0),R=useCallback(I=>{let c=()=>{p.current++,I();},y=Ki.map(L=>i.events.on(L,c));return ()=>y.forEach(L=>L())},[i]),f=useCallback(()=>p.current,[]);useSyncExternalStore(R,f,f);let{dataSource:m,columns:v}=t,C=useRef(true);useEffect(()=>{if(C.current){C.current=false;return}Array.isArray(m)&&i.setData(m);},[i,m]);let k=useRef(true);useEffect(()=>{if(k.current){k.current=false;return}i.setColumns(v);},[i,v]);let G=t.pagination?t.pagination.enabled!==false:false;useEffect(()=>{i.setPaginationEnabled(G);},[i,G]);let P=t.rowHeight,S=useRef(true);useEffect(()=>{if(S.current){S.current=false;return}P!==void 0&&i.setRowHeight(P);},[i,P]);let h=t.selection?.mode??"none";useEffect(()=>{i.setSelectionMode(h);},[i,h]);let E=t.rowPinning;useEffect(()=>{i.setRowPinning(E);},[i,E]);let u=t.selection?.isRowSelectable,N=useRef(true);useEffect(()=>{if(N.current){N.current=false;return}i.setRowSelectable(u??null);},[i,u]);let B=e!==void 0,F=useRef(true);useEffect(()=>{if(F.current){F.current=false;return}i.setPostSort(B?a:null);},[i,B,a]);let W=t.grouping?.groupBy??null,g=JSON.stringify(W==null?[]:typeof W=="string"?[W]:W),M=useRef(true);return useEffect(()=>{if(M.current){M.current=false;return}i.groupBy(JSON.parse(g));},[i,g]),{controller:i,rows:i.getRows(),window:i.getVirtualWindow(),layout:i.getColumnLayout(),sort:i.getSort(),rowHeight:i.getRowHeight(),visibleCount:i.getVisibleCount(),totalCount:i.getTotalCount()}}var xn=0,wo=5e3;function $i(t){if(t===void 0||t===false)return null;let e=t===true?{}:t;return {always:e.always??false,maxRows:e.maxRows??wo}}function Wi(t,e){return t<=e}function ho(t,e){let n=$i(e),a=n!==null,l=n?.always??false,i=n?.maxRows??wo,[s,p]=useState(false),R=useCallback(()=>p(true),[]),f=useCallback(()=>p(false),[]);useEffect(()=>{if(!a||l||typeof window>"u"||typeof window.addEventListener!="function")return;let v=()=>{let k=t.getRows().length;if(!Wi(k,i)){t.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${k} rows exceeds maxRows (${i}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}flushSync(()=>p(true));},C=()=>flushSync(()=>p(false));return window.addEventListener("beforeprint",v),window.addEventListener("afterprint",C),()=>{window.removeEventListener("beforeprint",v),window.removeEventListener("afterprint",C);}},[a,l,i,t]);let m=l||s;return useEffect(()=>{if(!m||typeof document>"u")return;let v=document.documentElement;return xn++,v.classList.add("kanuni-datagrid-printing"),()=>{xn--,xn<=0&&(xn=0,v.classList.remove("kanuni-datagrid-printing"));}},[m]),{active:m,begin:R,end:f}}var Dn=new Map,bo=new Set;function jr(t,e){let n=Dn.get(t);return n?[...n].filter(a=>a!==e):[]}function Ro(t,e,n){let a=useRef(null);return useEffect(()=>{if(!e)return;let i={controller:t,scroller:()=>n.current};a.current=i;let s=Dn.get(e)??new Set;s.add(i),Dn.set(e,s);let p=t.events.on("columnStateChanged",()=>{if(bo.has(e))return;let R=jr(e,i);if(R.length===0)return;let f=t.getColumnStates();bo.add(e);try{for(let m of R)m.controller.applyColumnStates(f);}finally{bo.delete(e);}});return ()=>{p(),s.delete(i),s.size===0&&Dn.delete(e),a.current=null;}},[t,e,n]),{syncScroll:useCallback(i=>{let s=a.current;if(!e||!s)return;let p=jr(e,s);if(p.length!==0)for(let R of p){let f=R.scroller();f&&f.scrollLeft!==i&&(f.scrollLeft=i);}},[e])}}function Gn(t,e,n){return t==="left"?e:t==="center"?n.left+e:n.left+n.center+e}function Qr(t,e){let{start:n,end:a}=e.columns,l=t.centerOffsets,i=l[n]??0,s=(l[a]??0)-i,p=Math.max(0,t.centerWidth-i-s),R=i,f=t.center.slice(n,a),m=Array.from({length:f.length},(k,G)=>n+G),v=t.stickyIndices.filter(k=>k<n);if(v.length>0){let k=v.map(G=>t.center[G]);R-=k.reduce((G,P)=>G+P.state.width,0),f=[...k,...f],m=[...v,...m];}let C=new Map;for(let k of t.stickyIndices){let G=t.centerStickyOffsets[k];G!==null&&C.set(t.center[k].state.id,G);}return {centerColumns:f,centerIndices:m,leadingSpacer:Math.max(0,R),trailingSpacer:p,rowStart:e.rows.start,rowEnd:e.rows.end,stickyInsets:C}}function ea(t){let e=[];for(let n=0;n<t.length;n++){let a=t[n];a&&a.kind!=="data"&&e.push(n);}return e.length>0?e:null}function ta(t,e,n=0){if(!e)return n+t+1;let a=0,l=e.length;for(;a<l;){let i=a+l>>1;e[i]<t?a=i+1:l=i;}return n+t-a+1}var oa=createContext(getGridDictionary("en"));function yo({locale:t,messages:e,children:n}){let a=useMemo(()=>getGridDictionary(t,e),[t,e]);return jsx(oa.Provider,{value:a,children:n})}function le(){return useContext(oa)}var En=36,Nn=28,Kt=60,al=[["rowNumberColumn",Kt],["detailColumn",Nn],["checkboxColumn",En]];function Go(t,e,n=false){return lt({checkboxColumn:t,detailColumn:e,rowNumberColumn:n}).total}function lt(t){let e=new Map,n=new Map,a=0,l=0;for(let[i,s]of al)t[i]&&(e.set(i,a),n.set(i,++l),a+=s);return {total:a,count:l,inset:i=>e.get(i)??0,colIndex:i=>n.get(i)??1}}function vo(t){return t?t.kind==="draw"?" kanuni-datagrid-cell--span":" kanuni-datagrid-cell--span-covered":""}function To(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 xo(t,e){let n=t??(e==="number"||e==="bigint"?"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 Sn(t,e){if(e===""||t==="")return t;let n=foldText(t),a=n.indexOf(e);if(a===-1)return t;let l=[],i=0,s=0;for(;a!==-1;)a>i&&l.push(t.slice(i,a)),l.push(jsx("mark",{className:"kanuni-datagrid-highlight",children:t.slice(a,a+e.length)},s++)),i=a+e.length,a=n.indexOf(e,i);return i<t.length&&l.push(t.slice(i)),l}function il(t,e,n,a=""){if(t.renderCell)return t.renderCell({value:e,row:n.data,node:n,column:t});let l=lookupLabel(t,e);if(l!==null)return Sn(l,a);if(t.valueFormatter){let i=t.valueFormatter(e,n.data);return typeof i=="string"?Sn(i,a):i}return t.dateFormat&&t.dataType==="date"?Sn(formatDateValue(e,t.dateFormat),a):e==null?"":Sn(String(e),a)}function ll({gridId:t,node:e,index:n,layout:a,columnModel:l,centerColumns:i,centerIndices:s,stickyInsets:p,leadingSpacer:R,trailingSpacer:f,striped:m,selected:v,ariaSelectable:C=true,selectable:k=true,groupSelection:G,onToggleGroupSelect:P,groupDisplay:S="fullWidth",focusedColumnId:h,rowFocused:E=false,renderRow:u,checkboxColumn:N,rowNumberColumn:B=false,rowNumber:F=null,getNote:W,getSpan:g,resolveColSpans:M,findKind:I,headerRowCount:c,onRowClick:y,onRowMouseDown:L,onRowDoubleClick:Z,onToggleSelect:de,onCellMouseDown:ce,onRowContextMenu:Ze,searchNeedle:Le="",onToggleGroup:ue,summaryDefs:Ge,detailColumn:Ne=false,detailExpanded:Ce=false,onToggleDetail:Fe,onToggleTreeRow:te,renderDetail:ae,renderEditForm:re,renderCellContent:ge,getCellClassName:pe,onCellPointerDown:ye,onCellPointerEnter:he,onCellDoubleClick:se,rowDrag:ie,dropSide:T=null,height:Y}){let O=le();if(isDetailRow(e))return jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-detail-row",role:"row","aria-rowindex":n+1+c,"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:ae?.(e.data)})});if(isEditFormRow(e))return jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-editform-row",role:"row","aria-rowindex":n+1+c,"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:re?.(e.parentKey,e.data)})});if(isFillerRow(e))return null;if(isGroupRow(e)&&S==="fullWidth"){let b=l.getDef(e.columnId),K=b?.headerName??e.columnId,U=lookupLabel(b,e.value)??e.display??(e.label===""?O.filterBlank:e.label),ee=e.aggregates??null;return jsx("div",{className:`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${e.level}${h?" kanuni-datagrid-group-row--focused":""}`,role:"row","aria-rowindex":n+1+c,"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:()=>ue?.(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:[G&&jsx("input",{type:"checkbox",className:"kanuni-datagrid-group-checkbox",tabIndex:-1,checked:G==="all",ref:D=>{D&&(D.indeterminate=G==="some");},"aria-label":fillText(O.selectGroupAria,{count:String(e.count),group:U}),onChange:()=>P?.(String(e.key)),onClick:D=>D.stopPropagation(),onMouseDown:D=>D.stopPropagation()}),jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:e.expanded?"\u25BE":"\u25B8"}),jsxs("span",{className:"kanuni-datagrid-group-caption",children:[K,":"]}),jsx("span",{className:"kanuni-datagrid-group-label",children:U}),jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",e.count,")"]}),ee&&Ge?.map(D=>jsxs("span",{className:"kanuni-datagrid-group-aggregate",children:[jsxs("span",{className:"kanuni-datagrid-group-aggregate-label",children:[summaryLabel(D)," ",l.getDef(D.columnId)?.headerName??D.columnId,":"]})," ",formatSummaryValue(D,ee[summaryKey(D.columnId,D.type)],l.getDef(D.columnId))]},summaryKey(D.columnId,D.type)))]})})}let j=[],J=lt({rowNumberColumn:B,detailColumn:Ne,checkboxColumn:N}),Se=J.count,A=(b,K)=>({node:e,columnId:b,rowIndex:n,columnIndex:K,value:x?void 0:l.getCellValue(e.data,b)}),_=(b,K)=>{let U=()=>A(b,K);return {role:"gridcell",id:`${t}-cell-${String(e.key)}-${b}`,"aria-colindex":Se+K+1,"data-column-id":b,onMouseDown:ee=>{ce?.(e,b),ye?.(U(),ee);},onMouseEnter:he?ee=>he(U(),ee):void 0,onDoubleClick:se?()=>se(U()):void 0}},X=e.kind==="data"||e.kind==="treePath"?e.tree:void 0,fe=e.kind==="treePath",x=isGroupRow(e)?e:null,Be=fe||x!==null,me=x?S==="column"?GROUP_COLUMN_ID:(a.left[0]??a.center[0]??a.right[0])?.state.id??null:null,ve=()=>{let b=x,K=l.getDef(b.columnId),U=lookupLabel(K,b.value)??b.display??(b.label===""?O.filterBlank:b.label);return jsxs("span",{className:"kanuni-datagrid-group-inline",style:{paddingInlineStart:b.level*16},children:[jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:b.expanded?"\u25BE":"\u25B8"}),S!=="column"&&jsxs("span",{className:"kanuni-datagrid-group-caption",children:[K?.headerName??b.columnId,":"]}),jsx("span",{className:"kanuni-datagrid-group-label",children:U}),jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",b.count,")"]})]})},ke=(b,K)=>{let U=x.aggregates?Ge?.find(ee=>ee.columnId===K):void 0;return U?jsx("span",{className:"kanuni-datagrid-group-aggregate-value",children:formatSummaryValue(U,x.aggregates[summaryKey(K,U.type)],b)}):null},Ve=X?(a.left[0]??a.center[0]??a.right[0])?.state.id??null:null,Ke=(b,K,U)=>{if(x){if(K===me)return ve();if(ge){let D=ge(A(K,U));if(D!==void 0)return D}return ke(b,K)}if(ge&&!fe){let D=ge(A(K,U));if(D!==void 0)return D}let ee=fe?K===Ve?jsx("span",{className:"kanuni-datagrid-tree-path-label",children:e.label}):null:il(b,l.getCellValue(e.data,K),e,Le);return X&&K===Ve?jsxs("span",{className:X.ancestorOnly?"kanuni-datagrid-tree-cell kanuni-datagrid-tree-cell--ancestor":"kanuni-datagrid-tree-cell",style:{paddingInlineStart:X.depth*16},children:[X.hasChildren?jsx("button",{type:"button",className:"kanuni-datagrid-tree-toggle","data-tree-toggle":"","aria-expanded":X.expanded,"aria-label":X.expanded?O.collapseTreeRow:O.expandTreeRow,onClick:D=>{D.stopPropagation(),te?.(e.key);},children:X.expanded?"\u25BE":"\u25B8"}):jsx("span",{className:"kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf"}),ee]}):ee},Ie=(b,K)=>{if(!pe||x)return "";let U=pe(A(b,K));return U?` ${U}`:""},$=b=>!W||e.kind!=="data"?"":W(e.key,b,e.data)?" kanuni-datagrid-cell--noted":"",r=b=>g&&e.kind==="data"?g(n,b):null,ze=(b,K)=>{let U=b.autoHeight?" kanuni-datagrid-cell--wrap":"";return !b.cellClassName||Be?U:U+Xt(b,K)},Xt=(b,K)=>{let U=b.cellClassName;if(!U)return "";if(typeof U=="string")return ` ${U}`;let ee=e.data,D=U({value:l.getCellValue(ee,K),row:ee,node:e,column:b});return D?` ${D}`:""};if(B){let b=e.kind==="data"&&F!==null;j.push(jsx("div",{role:"gridcell","aria-colindex":J.colIndex("rowNumberColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell",style:{width:Kt,insetInlineStart:J.inset("rowNumberColumn")},children:b?F:""},"__rownum"));}Ne&&j.push(jsx("div",{role:"gridcell","aria-colindex":J.colIndex("detailColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell",style:{width:Nn,insetInlineStart:J.inset("detailColumn")},children:Be?null:jsx("button",{type:"button",className:"kanuni-datagrid-detail-toggle",tabIndex:-1,"aria-expanded":Ce,"aria-label":Ce?O.collapseDetails:O.expandDetails,onClick:b=>{b.stopPropagation(),Fe?.(e.key);},children:Ce?"\u25BE":"\u25B8"})},"__detail")),N&&j.push(jsx("div",{role:"gridcell","aria-colindex":J.colIndex("checkboxColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell",style:{width:En,insetInlineStart:J.inset("checkboxColumn")},onMouseDown:b=>b.stopPropagation(),onClick:b=>{b.target.tagName!=="INPUT"&&(b.stopPropagation(),de?.(e));},children:x?G&&jsx("input",{type:"checkbox",className:"kanuni-datagrid-group-checkbox",tabIndex:-1,checked:G==="all",ref:b=>{b&&(b.indeterminate=G==="some");},"aria-label":fillText(O.selectGroupAria,{count:String(x.count),group:x.display??x.label}),onChange:()=>P?.(String(x.key)),onClick:b=>b.stopPropagation(),onMouseDown:b=>b.stopPropagation()}):fe?null:jsx("input",{type:"checkbox",checked:v,disabled:!k,tabIndex:-1,"aria-label":fillText(O.selectRowAria,{row:String(e.key)}),onChange:()=>de?.(e),onClick:b=>b.stopPropagation(),onMouseDown:b=>b.stopPropagation()})},"__select"));let be=J.total,mt=b=>h===b?" kanuni-datagrid-cell--focused":"",dt=b=>{let K=I&&e.kind==="data"?I(e.key,b):null;return K==="active"?" kanuni-datagrid-cell--find-match kanuni-datagrid-cell--find-active":K==="match"?" kanuni-datagrid-cell--find-match":""},je={left:a.left.length,center:a.center.length},Qe=e.kind==="data"&&M?M(e):null,ut=b=>Qe?.widths.get(b.state.id)??b.state.width,ct=b=>{let K=Qe?.spans.get(b);return K?{"aria-colspan":K}:null};a.left.forEach((b,K)=>{let U=b.def,ee=K===a.left.length-1,D=b.state.id;if(Qe?.covered.has(D))return;let Ee=Gn("left",K,je);j.push(jsx("div",{..._(D,Ee),className:`${xo(U.align,U.dataType)} kanuni-datagrid-cell--pinned${ee?" kanuni-datagrid-pin-edge-left":""}${mt(D)}${dt(D)}${ze(U,D)}${Ie(D,Ee)}${$(D)}${vo(r(D))}`,...ct(D),style:{width:ut(b),insetInlineStart:a.leftOffsets[K]+be},children:To(r(D),h===D,()=>Ke(U,D,Ee))},D));});let et=Qe?.lead??null,Ye=R-(Qe?.leadingDelta??0),qt=f-(Qe?.trailingDelta??0);Ye>0&&j.push(jsx("div",{className:"kanuni-datagrid-spacer",style:{width:Ye}},"__lead"));let Jt=(b,K)=>{let U=b.def,ee=b.state.id,D=Gn("center",K,je),Ee=p?.get(ee),Nt=Ee===void 0?"":" kanuni-datagrid-cell--pinned kanuni-datagrid-cell--sticky",jt=et&&et.column.state.id===ee?et.width:ut(b);return jsx("div",{..._(ee,D),...ct(ee),className:`${xo(U.align,U.dataType)}${Nt}${mt(ee)}${dt(ee)}${ze(U,ee)}${Ie(ee,D)}${$(ee)}${vo(r(ee))}`,style:Ee===void 0?{width:jt}:{width:jt,insetInlineStart:Ee+be},children:To(r(ee),h===ee,()=>Ke(U,ee,D))},ee)},Zt=et?a.center.indexOf(et.column):-1,at=et===null;return i.forEach((b,K)=>{let U=s?.[K]??K;!at&&U>Zt&&(j.push(Jt(et.column,Zt)),at=true),!Qe?.covered.has(b.state.id)&&j.push(Jt(b,U));}),at||j.push(Jt(et.column,Zt)),qt>0&&j.push(jsx("div",{className:"kanuni-datagrid-spacer",style:{width:qt}},"__trail")),a.right.forEach((b,K)=>{let U=b.def,ee=K===0,D=b.state.id;if(Qe?.covered.has(D))return;let Ee=Gn("right",K,je);j.push(jsx("div",{..._(D,Ee),className:`${xo(U.align,U.dataType)} kanuni-datagrid-cell--pinned${ee?" kanuni-datagrid-pin-edge-right":""}${mt(D)}${dt(D)}${ze(U,D)}${Ie(D,Ee)}${$(D)}${vo(r(D))}`,...ct(D),style:{width:ut(b),insetInlineEnd:a.rightOffsets[K]},children:To(r(D),h===D,()=>Ke(U,D,Ee))},D));}),jsxs("div",{className:`kanuni-datagrid-row${m&&n%2===1?" kanuni-datagrid-row--odd":""}${v?" kanuni-datagrid-row--selected":""}${E?" kanuni-datagrid-row--focused":""}${fe?" kanuni-datagrid-row--tree-path":""}${x?` kanuni-datagrid-group-row kanuni-datagrid-group-row--aligned kanuni-datagrid-group-row--level-${x.level}`:""}${T?` kanuni-datagrid-row--drop-${T}`:""}`,role:"row","aria-rowindex":n+1+c,"aria-selected":x||!C?void 0:v,"aria-expanded":x?x.expanded:void 0,"aria-level":x?x.level+1:void 0,"data-row-key":String(e.key),"data-group-key":x?String(x.key):void 0,"data-group-level":x?x.level:void 0,style:Y===void 0?void 0:{height:Y},draggable:ie?.draggable&&!x?true:void 0,onDragStart:ie&&!x?b=>ie.onDragStart(e,b):void 0,onDragEnd:ie&&!x?()=>ie.onDragEnd():void 0,onDragOver:ie&&!x?b=>ie.onDragOver(e,b):void 0,onDrop:ie&&!x?b=>ie.onDrop(e,b):void 0,onMouseDown:L&&!x?b=>L(e,b):void 0,onClick:x?()=>ue?.(String(x.key)):y?b=>y(e,n,b):void 0,onDoubleClick:Z?b=>Z(e,n,b):void 0,onContextMenu:Ze?b=>Ze(e,n,b):void 0,children:[ie&&!x&&jsx("span",{className:"kanuni-datagrid-row-grip","data-testid":"dg-row-grip","aria-hidden":"true",title:O.dragToReorder,onMouseEnter:()=>ie.setDraggable(true),onMouseLeave:()=>ie.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"})]})})}),u&&e.kind==="data"?u({row:e.data,node:e,rowIndex:n,selected:v,focused:E}):j]})}var _t=memo(ll);var $t=26;function So(t,e){return computeHeaderBands(t,e)}function Eo(t,e=""){return `kanuni-datagrid-band-cell${t.spacer?" kanuni-datagrid-band-cell--spacer":""}${e}`}function No(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 a=e.pathOf(t.columnIds[0]).slice(0,t.level+1);if(a.length!==t.level+1||!e.collapsible(a))return n;let l=e.collapsed(a);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(a);},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 ul({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:a,depth:l,checkboxColumn:i=false,detailColumn:s=false,rowNumberColumn:p=false,rowHeight:R=$t,bandFold:f}){if(l<=0)return null;let m=lt({rowNumberColumn:p,detailColumn:s,checkboxColumn:i}).total,v=So(t.left,l),C=So(e,l),k=So(t.right,l),G=(P,S,h)=>{let E=h;for(let u=0;u<S;u++)E+=P[u].width;return E};return jsx(Fragment,{children:Array.from({length:l},(P,S)=>jsxs("div",{className:"kanuni-datagrid-band-row",role:"row","aria-rowindex":S+1,style:{width:t.totalWidth+m,height:R,top:S*R},children:[m>0&&jsx("div",{className:"kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned",style:{width:m,insetInlineStart:0},"aria-hidden":"true"}),(v[S]??[]).map((h,E)=>jsx("div",{className:Eo(h,` kanuni-datagrid-band-cell--pinned${E===(v[S]?.length??0)-1?" kanuni-datagrid-pin-edge-left":""}`),role:h.spacer?"presentation":"columnheader","aria-colspan":h.spacer?void 0:h.columnIds.length,style:{width:h.width,insetInlineStart:G(v[S]??[],E,m)},title:h.spacer?void 0:h.label,children:No(h,f)},h.columnIds[0])),n>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),(C[S]??[]).map(h=>jsx("div",{className:Eo(h),role:h.spacer?"presentation":"columnheader","aria-colspan":h.spacer?void 0:h.columnIds.length,style:{width:h.width},title:h.spacer?void 0:h.label,children:No(h,f)},h.columnIds[0])),a>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:a}}),(k[S]??[]).map((h,E)=>{let u=k[S]??[],N=0;for(let B=E+1;B<u.length;B++)N+=u[B].width;return jsx("div",{className:Eo(h,` kanuni-datagrid-band-cell--pinned${E===0?" kanuni-datagrid-pin-edge-right":""}`),role:h.spacer?"presentation":"columnheader","aria-colspan":h.spacer?void 0:h.columnIds.length,style:{width:h.width,insetInlineEnd:N},title:h.spacer?void 0:h.label,children:No(h,f)},h.columnIds[0])})]},S))})}var Po=memo(ul);var fl=()=>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 wl(t,e){return t.renderHeader?t.renderHeader({column:t}):t.headerName??t.field??e}function hl({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:a,leadingSpacer:l,trailingSpacer:i,sort:s,sortable:p,onSort:R,headerFilter:f=false,filteredColumns:m,onOpenFilter:v,filterIconMode:C="hover",checkboxColumn:k=false,detailColumn:G=false,rowNumberColumn:P=false,rowNumberHeader:S="#",selectAllState:h="none",selectAllDisabled:E=false,onToggleSelectAll:u,draggable:N=false,reorderable:B=false,onReorder:F,resizable:W=false,onResize:g,onAutoFit:M,onHeaderContextMenu:I,groupLevels:c,onHeaderClick:y,getHeaderClassName:L,renderHeaderLabel:Z}){let de=le(),ce=lt({rowNumberColumn:P,detailColumn:G,checkboxColumn:k}),Ze=new Map(s.map((A,_)=>[A.columnId,{direction:A.direction,order:_}])),Le=new Set(m??[]),ue=[...n.left.map(A=>A.state.id),...a.map(A=>A.state.id),...n.right.map(A=>A.state.id)],[Ge,Ne]=useState(null),Ce=useId(),Fe=Ge&&ue.includes(Ge)?Ge:ue[0],te=A=>{Ne(A),document.querySelector(`[data-column-id="${A}"].kanuni-datagrid-header-cell`)?.focus();},ae=A=>{let _=ue.indexOf(Fe),X=Math.min(ue.length-1,Math.max(0,_+A));X!==_&&te(ue[X]);},re=useRef(null),ge=useRef(false),[pe,ye]=useState(null),he=ue,se=A=>[...n.left,...n.center,...n.right].find(_=>_.state.id===A)?.state.pinned??null,ie=(A,_)=>(ge.current?A>_.left+_.width/2:A<_.left+_.width/2)?"before":"after",T=(A,_)=>{let X=re.current;if(!B||!X||X===A||se(X)!==se(A))return;_.preventDefault(),_.dataTransfer.dropEffect="move";let fe=ie(_.clientX,_.currentTarget.getBoundingClientRect());ye(x=>x?.id===A&&x.side===fe?x:{id:A,side:fe});},Y=(A,_)=>{let X=re.current;if(ye(null),!B||!X||X===A||se(X)!==se(A))return;if(_.preventDefault(),_.stopPropagation(),ie(_.clientX,_.currentTarget.getBoundingClientRect())==="before")F?.(X,A);else {let x=he[he.indexOf(A)+1];F?.(X,x===X?he[he.indexOf(A)+2]:x);}re.current=null;},[O,j]=useState(null),J=(A,_)=>{if(!W)return;_.preventDefault(),_.stopPropagation();let X=_.currentTarget,fe=_.clientX,x=A.state.width,Be=ge.current?-1:1,me=A.state.id;j(me),X.setPointerCapture(_.pointerId);let ve=x,ke=false,Ve=Ie=>{ke=true,ve=x+(Ie.clientX-fe)*Be,g?.(me,ve,false);},Ke=()=>{X.releasePointerCapture?.(_.pointerId),X.removeEventListener("pointermove",Ve),X.removeEventListener("pointerup",Ke),X.removeEventListener("pointercancel",Ke),ke&&g?.(me,ve,true),j(null);};X.addEventListener("pointermove",Ve),X.addEventListener("pointerup",Ke),X.addEventListener("pointercancel",Ke);},Se=(A,_,X)=>{let fe=A.def,x=A.state.id,Be=p&&fe.sortable!==false,me=f&&fe.filterable!==false,ve=x===GROUP_COLUMN_ID,ke=Ze.get(ve?c?.[0]??x:x),Ve=N&&fe.groupable!==false||B&&fe.reorderable!==false,Ke=pe?.id===x?pe.side:null,Ie=L?.(x);return jsxs("div",{className:`kanuni-datagrid-header-cell${_}${Ie?` ${Ie}`:""}${Be?" kanuni-datagrid-header-cell--sortable":""}${Ke?` kanuni-datagrid-header-cell--drop-${Ke}`:""}${O===x?" kanuni-datagrid-header-cell--resizing":""}`,style:X,role:"columnheader","aria-labelledby":`${Ce}-${encodeURIComponent(x)}`,"aria-sort":ke?ke.direction==="asc"?"ascending":"descending":"none","data-column-id":x,tabIndex:x===Fe?0:-1,onFocus:()=>Ne(x),draggable:Ve&&O===null,onDragStart:$=>{$.dataTransfer.setData("text/x-kanuni-column",x),$.dataTransfer.effectAllowed="move",re.current=x,ge.current=getComputedStyle($.currentTarget).direction==="rtl";},onDragEnd:()=>{re.current=null,ye(null);},onDragOver:B?$=>T(x,$):void 0,onDragLeave:B?()=>ye($=>$?.id===x?null:$):void 0,onDrop:B?$=>Y(x,$):void 0,onContextMenu:I&&!isChromeColumn(x)?$=>I(x,$):void 0,onClick:Be||y?$=>{y?.(x,$)||Be&&R(x,$.shiftKey);}:void 0,onKeyDown:$=>{$.key==="ArrowRight"?($.preventDefault(),ae(1)):$.key==="ArrowLeft"?($.preventDefault(),ae(-1)):$.key==="Home"?($.preventDefault(),te(ue[0])):$.key==="End"?($.preventDefault(),te(ue[ue.length-1])):me&&$.altKey&&$.key==="ArrowDown"?($.preventDefault(),v?.(x,$.currentTarget)):Be&&($.key==="Enter"||$.key===" ")&&($.preventDefault(),R(x,$.shiftKey));},children:[jsx("span",{className:"kanuni-datagrid-header-label",id:`${Ce}-${encodeURIComponent(x)}`,children:Z?.(x)??wl(fe,x)}),ke&&jsx("span",{className:"kanuni-datagrid-sort-indicator","aria-hidden":"true",children:ke.direction==="asc"?"\u25B2":"\u25BC"}),ke&&s.length>1&&!ve&&jsx("span",{className:"kanuni-datagrid-sort-order","aria-hidden":"true",children:ke.order+1}),f&&fe.filterable!==false&&jsx("button",{type:"button",className:`kanuni-datagrid-filter-button${Le.has(x)?" kanuni-datagrid-filter-button--active":""}${C==="always"?" kanuni-datagrid-filter-button--pinned":""}`,"aria-label":fillText(de.filterColumnAria,{column:fe.headerName??x}),"aria-haspopup":"dialog","data-filter-button":x,tabIndex:-1,onClick:$=>{$.stopPropagation(),v?.(x,$.currentTarget);},children:jsx(fl,{})}),W&&fe.resizable!==false&&jsx("span",{className:"kanuni-datagrid-resize-handle","data-resize-handle":x,role:"presentation",onPointerDown:$=>J(A,$),onDoubleClick:$=>{$.stopPropagation(),M?.(x);},onClick:$=>$.stopPropagation()})]},x)};return jsxs("div",{className:"kanuni-datagrid-header",role:"row","aria-rowindex":Math.round(t/$t)+1,style:{width:n.totalWidth+ce.total,top:t||void 0},children:[P&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell",role:"columnheader","aria-colindex":ce.colIndex("rowNumberColumn"),"aria-label":de.rowNumberAria,style:{width:Kt,insetInlineStart:ce.inset("rowNumberColumn")},children:S??""}),G&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell",role:"columnheader","aria-colindex":ce.colIndex("detailColumn"),"aria-label":de.detailsAria,style:{width:Nn,insetInlineStart:ce.inset("detailColumn")}}),k&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell",role:"columnheader","aria-colindex":ce.colIndex("checkboxColumn"),style:{width:En,insetInlineStart:ce.inset("checkboxColumn")},children:jsx("input",{type:"checkbox",checked:h==="all",ref:A=>{A&&(A.indeterminate=h==="some");},"aria-label":de.selectAllRows,disabled:E,onChange:()=>u?.()})}),n.left.map((A,_)=>Se(A,` kanuni-datagrid-header-cell--pinned${_===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:A.state.width,insetInlineStart:n.leftOffsets[_]+ce.total})),l>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),a.map(A=>{let _=e?.get(A.state.id);return _===void 0?Se(A,"",{width:A.state.width}):Se(A," kanuni-datagrid-header-cell--pinned kanuni-datagrid-cell--sticky",{width:A.state.width,insetInlineStart:_+ce.total})}),i>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((A,_)=>Se(A,` kanuni-datagrid-header-cell--pinned${_===0?" kanuni-datagrid-pin-edge-right":""}`,{width:A.state.width,insetInlineEnd:n.rightOffsets[_]}))]})}var Io=memo(hl);function Ho(t,e,n=[]){let a=null,l=new Set,i=s=>{if(l.has(s)||(l.add(s),e.isPending(s)))return;let p=e.textFor(s);if(p===null)return;let R=t[s]??"";R!==p&&(R===""&&p===""||(a??={...t},a[s]=p));};for(let s of Object.keys(t))i(s);for(let s of n)i(s);return a??t}function Rl({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:a,leadingSpacer:l,trailingSpacer:i,values:s,checkboxColumn:p=false,detailColumn:R=false,rowNumberColumn:f=false,placeholder:m,onChange:v,onCommit:C,periodSuggestions:k,periodListId:G}){let P=le(),S=lt({rowNumberColumn:f,detailColumn:R,checkboxColumn:p}),h=m??P.filterPlaceholder,E=(u,N,B)=>{let F=u.state.id,W=u.def.filterable!==false;return jsx("div",{className:`kanuni-datagrid-filter-cell${N}`,style:B,"data-column-id":F,children:W&&jsx("input",{className:"kanuni-datagrid-filter-input",type:"text",value:s[F]??"",placeholder:h,"aria-label":fillText(P.filterColumnAria,{column:u.def.headerName??F}),"data-filter-for":F,list:u.def.dataType==="date"&&G?G:void 0,onChange:g=>v(F,g.target.value),onKeyDown:g=>{g.key==="Enter"&&C?.(F,g.target.value);},onBlur:g=>C?.(F,g.target.value)})},F)};return jsxs("div",{className:"kanuni-datagrid-filter-row",role:"row","aria-rowindex":2,style:{width:n.totalWidth+S.total,"--dg-band-offset":`${t}px`},children:[G&&k&&k.length>0&&jsx("datalist",{id:G,children:k.map(u=>jsx("option",{value:u},u))}),S.total>0&&jsx("div",{className:"kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned",style:{width:S.total,insetInlineStart:0}}),n.left.map((u,N)=>E(u,` kanuni-datagrid-filter-cell--pinned${N===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:u.state.width,insetInlineStart:n.leftOffsets[N]+S.total})),l>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),a.map(u=>{let N=e?.get(u.state.id);return N===void 0?E(u,"",{width:u.state.width}):E(u," kanuni-datagrid-filter-cell--pinned kanuni-datagrid-cell--sticky",{width:u.state.width,insetInlineStart:N+S.total})}),i>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((u,N)=>E(u,` kanuni-datagrid-filter-cell--pinned${N===0?" kanuni-datagrid-pin-edge-right":""}`,{width:u.state.width,insetInlineEnd:n.rightOffsets[N]}))]})}var Ao=memo(Rl);var sa=createContext("");function $o({theme:t,density:e,palette:n,children:a}){let l=useMemo(()=>themeClassName(t,e,n),[t,e,n]);return jsx(sa.Provider,{value:l,children:a})}function Wo(){return useContext(sa)}function ot({children:t,dark:e=false}){let[n,a]=useState(null),l=Wo();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),a(i),()=>{i.remove();}},[e,l]),n?createPortal(t,n):null}function nn({anchor:t,onClose:e,margin:n=8,autoFocus:a=false}){let l=useRef(null),[i,s]=useState(t),p=useCallback(R=>{if(l.current=R,!R)return;let f=R.getBoundingClientRect(),m=t.top+f.height+n>window.innerHeight,v=t.top-f.height-n*2,C=m&&v>n?v:t.top;s({left:Math.max(n,Math.min(t.left,window.innerWidth-f.width-n)),top:Math.max(n,Math.min(C,window.innerHeight-f.height-n))}),a&&R.focus();},[t.left,t.top,n,a]);return useEffect(()=>{let R=v=>{let C=l.current;C&&!C.contains(v.target)&&e();},f=v=>{v.key==="Escape"&&e();},m=v=>{let C=l.current,k=v.target;C&&k instanceof Node&&C.contains(k)||e();};return document.addEventListener("mousedown",R),document.addEventListener("keydown",f),window.addEventListener("scroll",m,true),()=>{document.removeEventListener("mousedown",R),document.removeEventListener("keydown",f),window.removeEventListener("scroll",m,true);}},[e]),{position:i,ref:p,elementRef:l}}var Ln=25,on=new Map,da=200,Al=200,ua=8;function Ol(t){let e=le();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 Fl=memo(function({label:e,display:n,index:a,active:l,checked:i,onToggle:s,onFocus:p}){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":a,onFocus:()=>p(a),onClick:()=>s(e),children:[jsx("input",{type:"checkbox",readOnly:true,checked:i,tabIndex:-1}),jsx("span",{children:n})]})});function Yo({gridId:t,columnId:e,headerLabel:n,entries:a,initialSelected:l,anchor:i,loading:s=false,dark:p,onApply:R,onClose:f,truncated:m=false,onSearch:v,labels:C}){let k=Ol(C),[G,P]=useState(""),[S,h]=useState(0),[E,u]=useState(()=>new Set(l??a.map(T=>T.label))),[N,B]=useState(false),F=useRef(null),W=useRef(null),[g,M]=useState(0),[I,c]=useState(240),y=`${t??""}:${e}`,L=on.get(y),Z=useRef(L?.scrollTop??null),[de,ce]=useState(L&&L.width&&L.height?{width:L.width,height:L.height}:null),Ze=useCallback(T=>{F.current=T,T?.focus();},[]),Le=useRef(null),ue=useMemo(()=>{let T=foldText(G.trim());if(!T||m)return a;let Y=Le.current;(!Y||Y.entries!==a)&&(Y={entries:a,lowered:a.map(j=>foldText(j.label)),needle:"",result:[]},Le.current=Y);let O=Y.needle!==""&&T.includes(Y.needle)?Y.result.filter(j=>foldText(j.label).includes(T)):a.filter((j,J)=>Y.lowered[J].includes(T));return Y.needle=T,Y.result=O,O},[a,G,m]);useEffect(()=>{if(!v)return;let T=setTimeout(()=>v(G),150);return ()=>clearTimeout(T)},[G,v]),useEffect(()=>{N||l||u(new Set(a.map(T=>T.label)));},[a,N,l]);let Ge=useCallback(T=>{W.current=T,T&&c(T.clientHeight||240);},[]);useEffect(()=>{let T=W.current;!T||Z.current===null||s||T.scrollHeight<=T.clientHeight||(T.scrollTop=Z.current,Z.current=null,M(T.scrollTop));});let Ne=useMemo(()=>{let T=ue.length,Y=Math.max(0,Math.floor(g/Ln)-ua),O=Math.ceil(I/Ln)+ua*2,j=Math.min(Y,Math.max(0,T-1)),J=Math.min(T,j+O);return {start:j,end:J,count:T,rows:ue.slice(j,J)}},[ue,g,I]),Ce=nn({anchor:i,onClose:f}),[Fe,te]=useState(null),ae=(Fe??Ce.position.left)+(de?.width??260)+48<window.innerWidth?"right":"left",re=T=>{T.preventDefault(),T.stopPropagation();let Y=Ce.elementRef.current;if(!Y)return;let O=Y.getBoundingClientRect(),j=ae,J={x:T.clientX,y:T.clientY,w:O.width,h:O.height,left:O.left},Se=null,A=X=>{let fe=X.clientX-J.x,x=X.clientY-J.y,Be=window.innerHeight-O.top-12,me=Math.min(Be,Math.max(Al,J.h+x));if(j==="right"){let ve=window.innerWidth-J.left-12;Se={width:Math.min(ve,Math.max(da,J.w+fe)),height:me},ce(Se);}else {let ve=J.left+J.w,ke=ve-12,Ve=Math.min(ke,Math.max(da,J.w-fe));Se={width:Ve,height:me},ce(Se),te(ve-Ve);}W.current&&c(W.current.clientHeight);},_=()=>{if(window.removeEventListener("pointermove",A),window.removeEventListener("pointerup",_),Se){let X=on.get(y);on.set(y,{scrollTop:X?.scrollTop??W.current?.scrollTop??0,width:Math.round(Se.width),height:Math.round(Se.height)});}};window.addEventListener("pointermove",A),window.addEventListener("pointerup",_);},ge=useCallback(T=>{B(true),u(Y=>{let O=new Set(Y);return O.has(T)?O.delete(T):O.add(T),O});},[]),pe=useCallback(T=>h(T),[]),ye=()=>{if(s)return;if(E.size===a.length){R(null);return}let T=a.filter(J=>E.has(J.label)),Y=T.some(J=>J.value===null||J.value===void 0),O=T.filter(J=>J.value!==null&&J.value!==void 0),j;O.length===0?j={columnId:e,operator:"isnull"}:Y?j={logic:"or",nodes:[{columnId:e,operator:"in",value:O.map(J=>J.value)},{columnId:e,operator:"isnull"}]}:j={columnId:e,operator:"in",value:O.map(J=>J.value)},R(j);},he=T=>{let Y=Math.max(0,Math.min(ue.length-1,T));h(Y);let O=Ce.elementRef.current?.querySelector(`.kanuni-datagrid-filter-item[data-index="${Y}"]`);O?.focus(),O?.scrollIntoView({block:"nearest"});},se=T=>T.key.length===1&&!T.ctrlKey&&!T.metaKey&&!T.altKey,ie=T=>{let Y=T.target===F.current;if(T.key==="Backspace"&&!Y){T.preventDefault(),F.current?.focus(),P(O=>O.slice(0,-1)),h(0);return}if(T.key==="ArrowDown"){T.preventDefault(),he(Y?0:S+1);return}if(T.key==="ArrowUp"){T.preventDefault(),he(Y?ue.length-1:S-1);return}if(!Y&&(T.key==="Home"||T.key==="End")){T.preventDefault(),he(T.key==="Home"?0:ue.length-1);return}if(T.key===" "&&!Y){T.preventDefault();let O=ue[S];O&&ge(O.label);return}if(T.key==="Enter"){T.preventDefault(),ye();return}!Y&&se(T)&&T.key!==" "&&(T.preventDefault(),F.current?.focus(),P(O=>O+T.key),h(0));};return jsx(ot,{dark:p,children:jsxs("div",{ref:Ce.ref,className:"kanuni-datagrid-filter-popup",style:{left:Fe??Ce.position.left,top:Ce.position.top,...de?{width:de.width,height:de.height,maxHeight:"none"}:null},role:"dialog","aria-label":`${n} filter`,onKeyDown:ie,children:[jsx("div",{className:`kanuni-datagrid-popup-resize kanuni-datagrid-popup-resize--${ae}`,"data-testid":"dg-filter-resize",onPointerDown:re}),jsx("input",{ref:Ze,className:"kanuni-datagrid-filter-search",type:"search",placeholder:k.search,value:G,onChange:T=>{P(T.target.value),h(0);},"data-testid":"dg-filter-search"}),m&&jsx("p",{className:"kanuni-datagrid-filter-truncated","data-testid":"dg-filter-truncated",children:k.truncated}),jsxs("div",{className:"kanuni-datagrid-filter-actions",children:[jsx("button",{type:"button",onClick:()=>{B(true),u(new Set(a.map(T=>T.label)));},children:k.selectAll}),jsx("button",{type:"button",onClick:()=>{B(true),u(new Set);},children:k.clear})]}),jsxs("div",{ref:Ge,className:"kanuni-datagrid-filter-list",role:"listbox","aria-multiselectable":"true","aria-busy":s||void 0,"aria-setsize":ue.length,onScroll:T=>{let Y=T.target.scrollTop;M(Y),Z.current=null;let O=on.get(y);on.set(y,{...O,scrollTop:Y});},children:[s&&jsx("div",{className:"kanuni-datagrid-filter-empty",children:k.loading}),!s&&ue.length===0&&jsx("div",{className:"kanuni-datagrid-filter-empty",children:k.noMatch}),Ne.count>0&&jsx("div",{style:{height:ue.length*Ln,position:"relative"},children:jsx("div",{style:{transform:`translateY(${Ne.start*Ln}px)`},children:Ne.rows.map((T,Y)=>{let O=Ne.start+Y;return jsx(Fl,{label:T.label,display:T.label===""?k.blank:T.label,index:O,active:O===S,checked:E.has(T.label),onToggle:ge,onFocus:pe},T.label)})})})]}),jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsx("button",{type:"button",onClick:f,children:k.cancel}),jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:ye,disabled:s,"data-testid":"dg-filter-apply",children:k.apply})]})]})})}var Xo="text/x-kanuni-column";function _l({columns:t,levels:e,onSetLevels:n,maxLevels:a=1,onExpandAll:l,onCollapseAll:i,emptyText:s}){let p=le(),R=s??p.groupPanelHint,[f,m]=useState(false),v=useRef(null),[C,k]=useState(null),G=g=>t.find(I=>I.state.id===g)?.def.headerName??g,P=g=>{if(!g||e.includes(g))return;let M=e.length>=a?e.slice(0,a-1):[...e];n([...M,g]);},S=g=>n(e.filter(M=>M!==g)),h=(g,M)=>{let I=e.filter(y=>y!==g),c=Math.max(0,Math.min(I.length,M));n([...I.slice(0,c),g,...I.slice(c)]);},E=(g,M,I)=>{if(g===M)return;let y=e.filter(L=>L!==g).indexOf(M);y<0||h(g,I==="before"?y:y+1);},u=(g,M)=>{let I=g+M;I<0||I>=e.length||E(e[g],e[I],M<0?"before":"after");},N=(g,M)=>g<M.top+M.height/2?"before":"after",B=(g,M)=>{M.preventDefault(),M.stopPropagation();let I=N(M.clientY,M.currentTarget.getBoundingClientRect());k(null),m(false);let c=v.current;if(v.current=null,c){E(c,e[g],I);return}let y=M.dataTransfer.getData(Xo);if(!y||e.includes(y))return;if(e.length>=a){P(y);return}let L=I==="before"?g:g+1;n([...e.slice(0,L),y,...e.slice(L)]);},F=(g,M,I)=>{let c=I.ctrlKey||I.metaKey;c&&(I.key==="ArrowUp"||I.key==="ArrowLeft")?(I.preventDefault(),u(g,-1)):c&&(I.key==="ArrowDown"||I.key==="ArrowRight")?(I.preventDefault(),u(g,1)):(I.key==="Delete"||I.key==="Backspace")&&(I.preventDefault(),S(M));},W=t.filter(g=>!e.includes(g.state.id));return jsxs("div",{className:`kanuni-datagrid-group-panel${f?" kanuni-datagrid-group-panel--over":""}`,onDragOver:g=>{g.preventDefault(),m(true);},onDragLeave:()=>m(false),onDrop:g=>{if(g.preventDefault(),m(false),k(null),v.current){v.current=null;return}P(g.dataTransfer.getData(Xo));},children:[e.length>0?jsx("div",{className:"kanuni-datagrid-group-levels",children:e.map((g,M)=>jsx("div",{className:`kanuni-datagrid-group-level${C?.index===M?` kanuni-datagrid-group-level--drop-${C.side}`:""}`,style:{"--dg-group-level":M},"data-group-level":M,onDragOver:I=>{I.preventDefault(),I.stopPropagation();let c=N(I.clientY,I.currentTarget.getBoundingClientRect());k(y=>y?.index===M&&y.side===c?y:{index:M,side:c});},onDragLeave:()=>k(I=>I?.index===M?null:I),onDrop:I=>B(M,I),children:jsxs("span",{className:"kanuni-datagrid-group-chip",draggable:a>1&&e.length>1,tabIndex:0,role:"button","aria-label":`${fillText(p.groupLevelAria,{n:M+1})}: ${G(g)}`,onDragStart:I=>{v.current=g,I.dataTransfer.effectAllowed="move",I.dataTransfer.setData(Xo,g);},onDragEnd:()=>{v.current=null,k(null);},onKeyDown:I=>F(M,g,I),children:[a>1&&jsx("span",{className:"kanuni-datagrid-group-chip-level",children:M+1}),G(g),jsx("button",{type:"button","aria-label":fillText(p.groupRemoveAria,{column:G(g)}),onClick:()=>S(g),children:"\xD7"})]})},g))}):jsx("span",{className:"kanuni-datagrid-group-panel-hint",children:R}),jsxs("div",{className:"kanuni-datagrid-group-panel-actions",children:[e.length>0&&jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:l,children:p.groupExpandAll}),jsx("button",{type:"button",onClick:i,children:p.groupCollapseAll})]}),jsxs("label",{className:"kanuni-datagrid-group-select",children:[jsx("span",{className:"kanuni-datagrid-sr-only",children:a>1?p.groupAddLevel:p.groupByColumn}),a>1?jsxs("select",{value:"",disabled:W.length===0,onChange:g=>P(g.target.value),children:[jsx("option",{value:"",children:p.groupAddLevelButton}),W.map(g=>jsx("option",{value:g.state.id,children:g.def.headerName??g.state.id},g.state.id))]}):jsxs("select",{value:e[0]??"",onChange:g=>n(g.target.value?[g.target.value]:[]),children:[jsx("option",{value:"",children:p.groupNoGrouping}),t.map(g=>jsx("option",{value:g.state.id,children:g.def.headerName??g.state.id},g.state.id))]})]})]})]})}var qo=memo(_l);function zl({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:a,defs:l,values:i,checkboxColumn:s=false,detailColumn:p=false,rowNumberColumn:R=false,onPickSummary:f,emptyHint:m="",position:v="bottom",bandOffset:C=0,headerRowsBetween:k=0}){let G=le(),P=summaryTypeLabels(G),S=new Map(l.map(u=>[u.columnId,u])),h=lt({rowNumberColumn:R,detailColumn:p,checkboxColumn:s}).total,E=(u,N,B)=>{let F=u.state.id,W=S.get(F),g=W?i[summaryKey(W.columnId,W.type)]:void 0,M=u.def.dataType==="number"||u.def.dataType==="bigint",I=isChromeColumn(F)?void 0:f;return jsx("div",{className:`kanuni-datagrid-footer-cell${N}${M?" kanuni-datagrid-footer-cell--number":""}${W?" kanuni-datagrid-footer-cell--active":""}`,style:B,role:"gridcell","data-column-id":F,"data-summary-type":W?.type??"",title:W?`${summaryLabel(W,P)} \u2014 ${u.def.headerName??F}`:void 0,onContextMenu:I?c=>I(F,c):void 0,onClick:I?c=>I(F,c):void 0,children:W?jsx("span",{className:"kanuni-datagrid-footer-value",children:formatSummaryValue(W,g,u.def)}):I?jsx("span",{className:"kanuni-datagrid-footer-hint",children:m}):null},F)};return jsxs("div",{className:`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${v}`,role:"row","aria-label":G.columnTotalsAria,style:{width:t.totalWidth+h,"--dg-band-offset":`${C}px`,"--dg-pinned-gap":String(k)},children:[h>0&&jsx("div",{className:"kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned",style:{width:h,insetInlineStart:0}}),t.left.map((u,N)=>E(u,` kanuni-datagrid-footer-cell--pinned${N===t.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:u.state.width,insetInlineStart:t.leftOffsets[N]+h})),n>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),e.map(u=>E(u,"",{width:u.state.width})),a>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:a}}),t.right.map((u,N)=>E(u,` kanuni-datagrid-footer-cell--pinned${N===0?" kanuni-datagrid-pin-edge-right":""}`,{width:u.state.width,insetInlineEnd:t.rightOffsets[N]}))]})}var In=memo(zl);function ql(t,e){return `__dg_pinned_${t}_${e}`}function Jl({gridId:t,side:e,rows:n,rowKeys:a,onUserRowContextMenu:l,layout:i,columnModel:s,centerColumns:p,centerIndices:R,stickyInsets:f,leadingSpacer:m,trailingSpacer:v,checkboxColumn:C=false,detailColumn:k=false,rowNumberColumn:G=false,rowHeight:P,bandOffset:S=0,headerRowsBetween:h,ariaRowBase:E}){return n.length===0?null:jsx("div",{className:`kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--${e}`,role:"rowgroup",style:{width:i.totalWidth||"100%","--dg-band-offset":`${S}px`,"--dg-pinned-gap":String(h)},children:n.map((u,N)=>{let B=a?.[N]??null,F={kind:"data",key:ql(e,N),sourceIndex:-1,data:u};return jsx(_t,{gridId:t,node:F,index:N,layout:i,columnModel:s,centerColumns:p,centerIndices:R,stickyInsets:f,leadingSpacer:m,trailingSpacer:v,striped:false,selected:false,ariaSelectable:false,focusedColumnId:null,checkboxColumn:C,detailColumn:k,rowNumberColumn:G,rowNumber:null,headerRowCount:E,height:P,onRowContextMenu:B!==null&&l?(W,g,M)=>l(B,u,M):void 0},F.key)})})}var Hn=memo(Jl);function ga({controller:t,renderRow:e,width:n,bandOffset:a,headerRowsBetween:l,belowPinned:i}){let[,s]=useReducer(f=>f+1,0);useEffect(()=>{let f=[t.events.on("bodyScroll",s),t.events.on("contentReady",s),t.events.on("viewportChanged",s)];return ()=>f.forEach(m=>m())},[t]);let p=useRef(null);useLayoutEffect(()=>{p.current?.querySelectorAll("button, input, select, textarea, a[href], [tabindex]").forEach(f=>f.setAttribute("tabindex","-1"));});let R=t.getStickyGroupRows();return R.length===0?null:jsx("div",{ref:p,className:"kanuni-datagrid-sticky-groups","aria-hidden":"true",style:{width:n||"100%","--dg-band-offset":`${a}px`,"--dg-pinned-gap":String(l),"--dg-sticky-below":`${i}px`},children:R.map((f,m)=>jsx("div",{className:`kanuni-datagrid-sticky-group${m===R.length-1?" kanuni-datagrid-sticky-group--last":""}`,style:{top:f.offset,height:f.height,zIndex:R.length-m},children:e(f.node,f.index,f.height)},String(f.node.key)))})}async function an(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 Et({anchor:t,onClose:e,children:n,dark:a,className:l="",label:i,role:s="dialog"}){let p=nn({anchor:t,onClose:e});return jsx(ot,{dark:a,children:jsx("div",{ref:p.ref,className:`kanuni-datagrid-filter-popup ${l}`.trim(),style:{left:p.position.left,top:p.position.top},role:s,"aria-label":i,children:n})})}function as(t){let e=le();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 is=()=>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 ls({controller:t,search:e=true,exportCsv:n=true,exportExcel:a=false,exportPdf:l=false,columnChooser:i=true,dark:s,onOpenColumnChooser:p,itemsBefore:R,itemsAfter:f,searchDebounce:m=200,labels:v}){let C=as(v),[k,G]=useState(t.getSearchText()),[P,S]=useState(null),[h,E]=useState(null),[u,N]=useState(null);useEffect(()=>{let g=setTimeout(()=>t.setSearchText(k),m);return ()=>clearTimeout(g)},[t,k,m]);let[B,F]=useState(()=>t.getSelectedCount());useEffect(()=>(F(t.getSelectedCount()),t.events.on("selectionChanged",()=>F(t.getSelectedCount()))),[t]);let W=async g=>{S(g),N(null);let M=await an(t,g);M.error?N(M.error):E(null),S(null);};return jsxs("div",{className:"kanuni-datagrid-toolbar",children:[R,e&&jsx("input",{type:"search",className:"kanuni-datagrid-toolbar-search",placeholder:C.search,value:k,"aria-label":C.search,"data-testid":"dg-toolbar-search",onChange:g=>G(g.target.value)}),jsx("div",{className:"kanuni-datagrid-toolbar-spacer"}),i&&jsx("button",{type:"button","aria-haspopup":"dialog","data-testid":"dg-column-chooser",onClick:g=>{let M=g.currentTarget.getBoundingClientRect();p?.({left:M.left,top:M.bottom+2});},children:C.columns}),(n&&t.canExportAll()||a||l)&&jsx("button",{type:"button",className:"kanuni-datagrid-toolbar-icon-button","aria-haspopup":"menu","aria-label":C.exportMenu,title:C.exportMenu,disabled:P!==null,"data-testid":"dg-export-menu",onClick:g=>{let M=g.currentTarget.getBoundingClientRect();E(h?null:{left:M.right-190,top:M.bottom+2});},children:P?jsx("span",{className:"kanuni-datagrid-toolbar-busy"}):jsx(is,{})}),h&&jsxs(Et,{anchor:h,onClose:()=>E(null),dark:s,role:"menu",label:C.exportMenu,className:"kanuni-datagrid-export-menu",children:[n&&t.canExportAll()&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:P!==null,"data-testid":"dg-export-csv",onClick:()=>W("csv"),children:P==="csv"?C.exporting:C.csv}),a&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:P!==null,"data-testid":"dg-export-excel",onClick:()=>W("excel"),children:P==="excel"?C.exporting:C.excel}),a&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:P!==null||B===0,"data-testid":"dg-export-excel-selected",onClick:()=>W("excel-selected"),children:P==="excel-selected"?C.exporting:C.excelSelected}),l&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:P!==null,"data-testid":"dg-export-pdf",onClick:()=>W("pdf"),children:P==="pdf"?C.exporting:C.pdf})]}),f,u&&jsx("span",{className:"kanuni-datagrid-toolbar-error",role:"alert",children:u})]})}var Jo=memo(ls);function ds(t){let e=le();return useMemo(()=>({title:e.hiddenColumns,empty:e.noHiddenColumns,showAll:e.showAll,ok:e.ok,...t}),[e,t])}function Zo({controller:t,columns:e,anchor:n,onClose:a,dark:l,labels:i}){let s=ds(i),p=e.filter(R=>!R.visible);return jsxs(Et,{anchor:n,onClose:a,dark:l,label:s.title,className:"kanuni-datagrid-column-chooser",children:[jsxs("div",{className:"kanuni-datagrid-filter-list",children:[p.length===0&&jsx("div",{className:"kanuni-datagrid-chooser-empty",children:s.empty}),p.map(R=>{let f=t.getColumnModel().getDef(R.id);return jsxs("label",{className:"kanuni-datagrid-filter-item",children:[jsx("input",{type:"checkbox",checked:false,"data-column-toggle":R.id,onChange:()=>t.setColumnVisible(R.id,true)}),jsx("span",{children:f?.headerName??R.id})]},R.id)})]}),p.length>0&&jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsx("button",{type:"button",onClick:()=>p.forEach(R=>t.setColumnVisible(R.id,true)),children:s.showAll}),jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:a,children:s.ok})]})]})}function gs(t){let e=le();return useMemo(()=>({first:e.pagerFirst,previous:e.pagerPrevious,next:e.pagerNext,last:e.pagerLast,page:e.pagerPage,of:e.pagerOf,rowsPerPage:e.pagerRowsPerPage,pageButton:e.pagerPageButton,navigation:e.pagerAria,...t}),[e,t])}function fs({page:t,pageCount:e,pageSize:n,pageSizes:a=[25,50,100,250],totalRows:l,onPage:i,onNext:s,onPrevious:p,onPageSize:R,pageButtons:f=false,maxPageButtons:m,labels:v}){let C=gs(v),k=t<=0,G=t>=e-1,P=l===0?0:t*n+1,S=Math.min(l,(t+1)*n),h=useRef(null),E=useRef(null);return useEffect(()=>{let u=E.current,N=h.current;if(!N||!(u instanceof HTMLButtonElement)||!u.disabled)return;let B=document.activeElement;if(B&&B!==document.body&&B!==u)return;let F=N.querySelector('[aria-current="page"]')??N.querySelector("button:not(:disabled)");F?.focus(),E.current=F;},[t,e]),jsxs("div",{ref:h,className:"kanuni-datagrid-pager",role:"navigation","aria-label":C.navigation,onFocus:u=>{E.current=u.target;},onBlur:u=>{let N=u.relatedTarget;N&&!h.current?.contains(N)&&(E.current=null);},children:[jsxs("label",{className:"kanuni-datagrid-pager-size",children:[jsx("span",{children:C.rowsPerPage}),jsx("select",{value:n,"data-testid":"dg-page-size",onChange:u=>R(Number(u.target.value)),children:a.map(u=>jsx("option",{value:u,children:u},u))})]}),jsxs("span",{className:"kanuni-datagrid-pager-range","data-testid":"dg-page-range",children:[P.toLocaleString(),"\u2013",S.toLocaleString()," ",C.of," ",l.toLocaleString()]}),jsxs("div",{className:"kanuni-datagrid-pager-buttons",children:[jsx("button",{type:"button","aria-label":C.first,disabled:k,onClick:()=>i(0),children:"\xAB"}),jsx("button",{type:"button","aria-label":C.previous,disabled:k,"data-testid":"dg-page-prev",onClick:p,children:"\u2039"}),f?pageButtonItems(t,e,m).map(u=>typeof u=="number"?jsx("button",{type:"button",className:"kanuni-datagrid-pager-page","aria-label":fillText(C.pageButton,{n:String(u+1)}),"aria-current":u===t?"page":void 0,onClick:()=>i(u),children:u+1},u):jsx("span",{className:"kanuni-datagrid-pager-gap","aria-hidden":"true",children:"\u2026"},u)):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:G,"data-testid":"dg-page-next",onClick:s,children:"\u203A"}),jsx("button",{type:"button","aria-label":C.last,disabled:G,onClick:()=>i(e-1),children:"\xBB"})]})]})}var jo=memo(fs);function ks(t){let e=le();return useMemo(()=>({clear:e.filterRemove,toggle:e.filterToggle,builder:e.filterEditBuilder,empty:e.filterNone,...t}),[e,t])}function vs({controller:t,onOpenBuilder:e,alwaysVisible:n=false,describeOptions:a,labels:l}){let i=ks(l),s=le(),[,p]=useState(0);useEffect(()=>t.events.on("filterChanged",()=>p(v=>v+1)),[t]);let R=t.getEffectiveFilter(),f=t.isFilterEnabled(),m=describeFilter(R,t.getColumnModel(),{...a,labels:{...filterLabels(s),...a?.labels}});return !R&&!n?null:jsxs("div",{className:`kanuni-datagrid-filter-panel${f?"":" 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:!R,"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:f,disabled:!R,title:i.toggle,"aria-label":i.toggle,"data-testid":"dg-filter-panel-toggle",onChange:v=>t.setFilterEnabled(v.target.checked)}),jsx("span",{className:"kanuni-datagrid-filter-panel-text",title:m??void 0,"data-testid":"dg-filter-panel-text",children:m??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 Qo=memo(vs);var Fn=t=>!t.separator&&!t.disabled;function Bn({x:t,y:e,items:n,context:a,onClose:l,dark:i=false,label:s}){let p=le(),R=useRef(null),[f,m]=useState({left:t,top:e}),[v,C]=useState(()=>n.findIndex(Fn)),[k,G]=useState(null),[P,S]=useState(null),h=useRef(null),[E,u]=useState(null);useEffect(()=>S(null),[k]);let N=useCallback((c,y)=>{if(G(c),c===null||!y)return;let L=y.getBoundingClientRect();u({left:L.left,right:L.right,top:L.top});},[]),B=c=>R.current?.querySelector(`[data-item-index="${c}"]`)??null,F=useCallback(c=>{if(h.current=c,!c||!E)return;let y=8,L=c.getBoundingClientRect(),Z=Math.max(y,Math.min(E.top-4,window.innerHeight-L.height-y)),ce=E.right+L.width+y<=window.innerWidth?E.right:Math.max(y,E.left-L.width);S({left:ce,top:Z});},[E]),W=useCallback(c=>{if(R.current=c,!c)return;let y=c.getBoundingClientRect(),L=8;m({left:Math.max(L,Math.min(t,window.innerWidth-y.width-L)),top:Math.max(L,Math.min(e,window.innerHeight-y.height-L))}),c.focus();},[t,e]);useEffect(()=>{let c=L=>{let Z=L.target;h.current?.contains(Z)||R.current&&!R.current.contains(Z)&&l();},y=()=>l();return document.addEventListener("mousedown",c),window.addEventListener("scroll",y,true),()=>{document.removeEventListener("mousedown",c),window.removeEventListener("scroll",y,true);}},[l]);let g=(c,y)=>{let L=n.length;for(let Z=1;Z<=L;Z++){let de=(c+y*Z+L*L)%L;if(Fn(n[de]))return de}return c},M=c=>{let y=n[c];if(!(!y||!Fn(y))){if(y.items?.length){N(c,B(c));return}y.onSelect?.(a),l();}},I=c=>{switch(c.key){case "ArrowDown":C(y=>g(y,1));break;case "ArrowUp":C(y=>g(y,-1));break;case "Home":C(n.findIndex(Fn));break;case "End":C(g(0,-1));break;case "ArrowRight":if(n[v]?.items?.length)N(v,B(v));else return;break;case "ArrowLeft":if(k!==null)N(null);else return;break;case "Enter":case " ":M(v);break;case "Escape":l();break;case "Tab":l();return;default:return}c.preventDefault(),c.stopPropagation();};return jsxs(ot,{dark:i,children:[jsx("div",{ref:W,className:"kanuni-datagrid-context-menu",role:"menu","aria-label":s??p.rowActions,tabIndex:-1,style:{left:f.left,top:f.top},onKeyDown:I,children:n.map((c,y)=>c.separator?jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},c.id??`sep-${y}`):jsx("div",{className:"kanuni-datagrid-menu-row",children:jsxs("button",{type:"button",role:"menuitem",className:`kanuni-datagrid-menu-item${y===v?" kanuni-datagrid-menu-item--active":""}`,disabled:c.disabled,"data-item-index":y,"aria-haspopup":c.items?.length?"menu":void 0,"aria-expanded":c.items?.length?k===y:void 0,onMouseEnter:L=>{C(y),N(c.items?.length?y:null,L.currentTarget);},onClick:()=>M(y),children:[c.icon&&jsx("span",{className:"kanuni-datagrid-menu-icon",children:c.icon}),jsx("span",{className:"kanuni-datagrid-menu-label",children:c.label}),c.shortcut&&jsx("span",{className:"kanuni-datagrid-menu-shortcut",children:c.shortcut}),c.items?.length?jsx("span",{className:"kanuni-datagrid-menu-caret",children:"\u203A"}):null]})},c.id??y))}),k!==null&&n[k]?.items?.length?jsx("div",{ref:F,className:"kanuni-datagrid-context-menu kanuni-datagrid-submenu",style:P?{left:P.left,top:P.top}:{left:0,top:0,visibility:"hidden"},role:"menu",children:n[k].items.map((c,y)=>c.separator?jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},c.id??`sub-sep-${y}`):jsxs("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:c.disabled,onClick:()=>{c.onSelect?.(a),l();},children:[c.icon&&jsx("span",{className:"kanuni-datagrid-menu-icon",children:c.icon}),jsx("span",{className:"kanuni-datagrid-menu-label",children:c.label})]},c.id??y))}):null]})}var xs=typeof navigator<"u"&&/Mac|iPhone|iPad|iPod/.test(navigator.platform??""),nr=xs?"\u2318":"Ctrl+",Ca=`${nr}C`,Ds=`${nr}X`,Gs=`${nr}V`;function Ut(t,e={}){let n=t.getClipboardText(e);t.notifyClipboardGesture("copy",n?n.split(`
2
+ `).length:0,()=>t.writeClipboard(n,"copy"));}function Ss(t){navigator.clipboard?.writeText(t).catch(()=>{});}function Es(t){let e=t.getColumnModel();return t.getVisualColumnIds().some(n=>{let a=e.getDef(n)?.band;return typeof a=="string"?a!=="":Array.isArray(a)&&a.length>0})}function Ns(t){return t===false?[]:Array.isArray(t)?t:["csv","excel","excel-selected","pdf"]}var Ms={csv:"exportCsv",excel:"exportExcel","excel-selected":"exportExcelSelected",pdf:"exportPdf"};function or(t,e,n,a,l){if(n===false)return [];let i=n===true||n===void 0?{}:n,s=[];i.copy!==false&&s.push({id:"__dg-copy",label:e.menuCopy,shortcut:Ca,onSelect:()=>Ut(t)}),i.copyWithHeaders!==false&&s.push({id:"__dg-copy-headers",label:e.menuCopyWithHeaders,onSelect:()=>Ut(t,{includeHeaders:true})}),i.copyWithGroupHeaders!==false&&Es(t)&&s.push({id:"__dg-copy-group-headers",label:e.menuCopyWithGroupHeaders,onSelect:()=>Ut(t,{includeGroupHeaders:true})});let p=Ns(i.export).filter(R=>R!=="csv"||t.canExportAll());if(p.length>0){let R=t.getSelectedCount()===0;s.push({id:"__dg-export",label:e.menuExport,items:p.map(f=>({id:`__dg-export-${f}`,label:e[Ms[f]],disabled:f==="excel-selected"&&R,onSelect:()=>{an(t,f).then(m=>{m.error&&l?.(m.error);});}}))});}return s.length>0&&a&&s.unshift({id:"__dg-sep-builtin",separator:true}),s}function rr(t,e,n,a){if(!t.isRowPinningEnabled()||!t.canPinRow(n))return [];let l=t.getRowPinSide(n),i=[];return l!=="top"&&i.push({id:"__dg-pin-top",label:e.pinRowTop,onSelect:()=>t.pinRow(n,"top")}),l!=="bottom"&&i.push({id:"__dg-pin-bottom",label:e.pinRowBottom,onSelect:()=>t.pinRow(n,"bottom")}),l&&i.push({id:"__dg-unpin",label:e.unpinRow,onSelect:()=>t.pinRow(n,null)}),a?[{id:"__dg-sep-pin",separator:true},...i]:i}function ir({anchor:t,value:e,dark:n,onCommit:a,onCancel:l}){let i=le(),[s,p]=useState(e),R=useRef(null);useEffect(()=>{let m=R.current;m&&(m.focus(),m.select());},[]);let f=()=>{let m=s.trim();a(m===""?null:m);};return jsxs(Et,{anchor:t,onClose:l,dark:n,label:i.noteEditorAria,className:"kanuni-datagrid-note-editor",children:[jsx("textarea",{ref:R,className:"kanuni-datagrid-note-input",value:s,rows:4,"aria-label":i.noteEditorAria,placeholder:i.notePlaceholder,onChange:m=>p(m.target.value),onKeyDown:m=>{m.key==="Enter"&&(m.ctrlKey||m.metaKey)&&(m.preventDefault(),f()),m.key==="Escape"&&(m.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:f,children:i.save})]})]})}function As(t){let e=le();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 Os=new Set(["filtering","sorting","computing","encoding","exporting"]);function sr({controller:t,delay:e=300,labels:n,cancellable:a=true,forced:l=false}){let[i,s]=useState(()=>t.getBusy()),[p,R]=useState(false);useEffect(()=>(s(t.getBusy()),t.events.on("busyChanged",G=>s(G))),[t]);let f=i.busy&&i.background!==true;useEffect(()=>{if(!f){R(false);return}let G=setTimeout(()=>R(true),e);return ()=>clearTimeout(G)},[f,e]);let m=As(n);if(!l&&(!p||!f))return null;let v=i.phase?m[i.phase]:m.busy,C=i.progress===null?null:Math.max(0,Math.min(100,i.progress)),k=a&&i.phase!==null&&Os.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:v}),C!==null&&jsxs("div",{className:"kanuni-datagrid-loading-progress",role:"progressbar","aria-valuenow":Math.round(C),"aria-valuemin":0,"aria-valuemax":100,children:[jsx("div",{className:"kanuni-datagrid-loading-track",children:jsx("div",{className:"kanuni-datagrid-loading-fill",style:{width:`${C}%`}})}),jsxs("span",{className:"kanuni-datagrid-loading-percent",children:[Math.round(C),"%"]})]}),k&&jsx("button",{type:"button",className:"kanuni-datagrid-loading-cancel",onClick:()=>t.cancel(),"data-testid":"dg-loading-cancel",children:m.cancel})]})})}var Da=null;function Fs(){return typeof document>"u"?null:(Da??=document.createElement("canvas"),Da.getContext("2d"))}function Ga(t){let e=getComputedStyle(t);return `${e.fontStyle} ${e.fontWeight} ${e.fontSize} ${e.fontFamily}`}function Bs(t){for(let e=t.firstElementChild;e;e=e.nextElementSibling)if(e.tagName!=="MARK")return true;return false}function Ks(t){let e=t.map(a=>[a.style.width,a.style.minWidth,a.style.maxWidth]);for(let a of t)a.style.width="max-content",a.style.minWidth="0",a.style.maxWidth="none";let n=0;for(let a of t){let l=Math.ceil(a.getBoundingClientRect().width);l>n&&(n=l);}return t.forEach((a,l)=>{[a.style.width,a.style.minWidth,a.style.maxWidth]=e[l];}),n}function Kn(t,e){let n=Fs();if(!n)return null;let a=typeof CSS<"u"&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),l=t.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${a}"]`),i=t.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${a}"]`);if(!l&&i.length===0)return null;let s=0;if(l){let p=l.querySelector(".kanuni-datagrid-header-label")??l;n.font=Ga(p),s=n.measureText(p.textContent??"").width+44;}if(i.length>0){n.font=Ga(i[0]);let p=[];for(let R=0;R<i.length;R++){if(Bs(i[R])){p.push(i[R]);continue}let f=i[R].textContent??"";if(f==="")continue;let m=n.measureText(f).width+20;m>s&&(s=m);}p.length>0&&(s=Math.max(s,Ks(p)));}return s===0?null:Math.round(Math.min(640,Math.max(48,s)))}function dr(t,e){let n=useRef(e);n.current=e;let a=!!e?.enabled,l=e?.storageKey,i=e?.type;useEffect(()=>{if(a)return attachStateStoring(t,{...n.current,enabled:true})},[t,a,l,i]);}var _n="application/x-kanuni-row";function cr(t,e){let n=!!e?.enabled,a=e?.group??null,l=e?.allowReordering??true,i=e?.allowDropInsert??a!==null,[s,p]=useState(false),[R,f]=useState(null),m=useRef(null),v=useRef(false),C=useRef(null),k=useRef(null),G=useRef(e);G.current=e;let P=useCallback(c=>t.getRowByKey(c),[t]),S=(c,y)=>{let L=y.getBoundingClientRect();return c.clientY<L.top+L.height/2?"before":"after"},h=useCallback((c,y)=>{if(!isDataRow(c))return;k.current=c.key,C.current=c.key,v.current=false,m.current=null;let L={gridId:t.gridId,group:a,rowKey:c.key,row:c.data};y.dataTransfer.setData(_n,JSON.stringify(L)),y.dataTransfer.setData("text/plain",String(c.key)),y.dataTransfer.effectAllowed="move",t.notifyRowDrag("enter",{rowKey:c.key}),y.stopPropagation();},[t,a]),E=useCallback(()=>{let c=C.current;c!==null&&t.notifyRowDragEnd({rowKey:c,dropped:v.current,overKey:m.current?.key??null,position:m.current?.side??null}),v.current=false,m.current=null,C.current=null,k.current=null,f(null),p(false);},[t]),u=useCallback(c=>c.dataTransfer.types.includes(_n)?k.current!==null?l:i&&a!==null:false,[l,i,a]),N=useCallback((c,y)=>{if(!isDataRow(c)||!u(y))return;if(y.preventDefault(),y.dataTransfer.dropEffect="move",k.current===c.key){m.current=null,f(null);return}let L=S(y,y.currentTarget),Z=m.current?.key!==c.key||m.current.side!==L;m.current={key:c.key,side:L},f(de=>de?.key===c.key&&de.side===L?de:{key:c.key,side:L}),Z&&k.current!==null&&t.notifyRowDrag("move",{rowKey:k.current,overKey:c.key,position:L});},[u,t]),B=useCallback((c,y,L)=>{let Z=null;try{let ce=c.dataTransfer.getData(_n);Z=ce?JSON.parse(ce):null;}catch{Z=null;}if(!Z)return;if(Z.gridId===t.gridId){if(!l)return;let ce=G.current?.onReorder;if(ce){ce({dragKey:Z.rowKey,targetKey:y,position:L,row:P(Z.rowKey)});return}t.moveRow(Z.rowKey,y,L);return}!i||a===null||Z.group!==a||G.current?.onAdd?.({row:Z.row,rowKey:Z.rowKey,otherGridId:Z.gridId,targetKey:y,position:L});},[t,l,i,a,P]),F=useCallback((c,y)=>{if(f(null),!isDataRow(c)||!u(y))return;y.preventDefault(),y.stopPropagation();let L=S(y,y.currentTarget);v.current=true,m.current={key:c.key,side:L},B(y,c.key,L),k.current=null;},[u,B]),W=useCallback(c=>{u(c)&&(c.preventDefault(),c.dataTransfer.dropEffect="move");},[u]),g=useCallback(c=>{f(null),u(c)&&(c.preventDefault(),v.current=true,m.current=null,B(c,null,"after"),k.current=null);},[u,B]),M=useCallback(c=>{let y=c.relatedTarget;y&&c.currentTarget.contains(y)||k.current!==null&&(m.current=null,f(null),t.notifyRowDrag("leave",{rowKey:k.current}));},[t]);return {handlers:n?{draggable:s,setDraggable:p,onDragStart:h,onDragEnd:E,onDragOver:N,onDrop:F}:void 0,dropAt:n?R:null,bodyHandlers:n?{onDragOver:W,onDrop:g,onDragLeave:M}:void 0}}var Ys=400;function Ea(t){return t.scrollWidth>t.clientWidth+1||t.scrollHeight>t.clientHeight+1}function Na(t){return (t.textContent??"").trim()}function Xs(t){let{def:e,node:n,value:a,clipped:l,note:i}=t;if(i)return i;if(e&&n){if(typeof e.tooltip=="function"){let s=e.tooltip({value:a,row:n.data,node:n,column:e});return s||null}if(typeof e.tooltip=="string")return e.tooltip||null;if(e.tooltipField){let s=n.data[e.tooltipField];return s==null||s===""?null:String(s)}}return l&&l.length>0?l:null}function pr({rootRef:t,columnModel:e,getRowNode:n,getNote:a,config:l,controller:i,gridId:s}){let p=l?.enabled!==false,R=l?.delay??Ys,f=l?.showOnTruncation!==false,m=l?.trigger??"hover",v=m!=="focus",C=m!=="hover"&&!!i&&!!s,k=l?.interactive===true,[G,P]=useState(null),S=useRef({columnModel:e,getRowNode:n,getNote:a,showOnTruncation:f,delay:R});return S.current={columnModel:e,getRowNode:n,getNote:a,showOnTruncation:f,delay:R},useEffect(()=>{if(!p){P(null);return}let h=t.current;if(!h)return;let E=null,u=null,N=null,B=null,F=s?`${s}-tooltip`:void 0,W=()=>{B?.removeAttribute("aria-describedby"),B=null;},g=()=>{E!==null&&(clearTimeout(E),E=null),u!==null&&(clearTimeout(u),u=null),N=null,W(),P(null);},M=()=>{u!==null&&(clearTimeout(u),u=null);},I=()=>{u=null,W(),P(null);},c=()=>{M(),E!==null&&(clearTimeout(E),E=null);},y=()=>{if(!k){g();return}u!==null&&clearTimeout(u),u=setTimeout(I,150);},L=(te,ae)=>{let{columnModel:re,getRowNode:ge,getNote:pe}=S.current,ye=re.getDef(ae);if(!ye?.renderTooltip)return;let he=te.closest("[data-row-key]")?.dataset.rowKey,se=he===void 0?void 0:ge(he);if(!se||pe&&pe(se.key,ae,se.data))return;let ie=ye.renderTooltip({value:re.getCellValue(se.data,ae),row:se.data,node:se,column:ye});return ie==null||ie===false?null:{content:ie}},Z=(te,ae,re,ge)=>{let pe=re?void 0:L(te,ae);if(pe===null)return;let ye=pe?"":re?ce(ae,te):de(te,ae);if(!pe&&!ye)return;let he=te.getBoundingClientRect();M(),W(),ge&&F&&(te.setAttribute("aria-describedby",F),B=te),P({text:ye??"",...pe?{content:pe.content}:{},anchor:{top:he.top,left:he.left,width:he.width,height:he.height},...k?{interactive:true,hold:c,release:g}:{},...F?{id:F}:{}});},de=(te,ae)=>{let{columnModel:re,getRowNode:ge,getNote:pe,showOnTruncation:ye}=S.current,he=re.getDef(ae),se=te.closest("[data-row-key]")?.dataset.rowKey,ie=se===void 0?void 0:ge(se);return Xs({def:he,node:ie,value:ie?re.getCellValue(ie.data,ae):void 0,clipped:ye&&Ea(te)?Na(te):null,note:ie&&pe?pe(ie.key,ae,ie.data):null})},ce=(te,ae)=>{let re=S.current.columnModel.getDef(te);if(re?.headerTooltip)return re.headerTooltip;if(!S.current.showOnTruncation)return null;let ge=ae.querySelector(".kanuni-datagrid-header-label")??ae;if(!Ea(ge))return null;let pe=Na(ge);return pe.length>0?pe:null},Ze=te=>{if(!v)return;let re=te.target?.closest("[data-column-id]")??null;if(re===N){M();return}if(k&&u!==null?(E!==null&&(clearTimeout(E),E=null),N=null):g(),!re||!h.contains(re))return;let ge=re.dataset.columnId;if(!ge)return;let pe=re.classList.contains("kanuni-datagrid-header-cell");!pe&&!re.closest("[data-row-key]")||(N=re,E=setTimeout(()=>{E=null,!(N!==re||!re.isConnected)&&Z(re,ge,pe,false);},S.current.delay));},Le=te=>{if(!v)return;let ae=te.relatedTarget;N&&ae&&N.contains(ae)||y();},ue=-1/0,Ge=()=>{ue=Date.now();},Ne=()=>{g();let te=i?.getFocus();!te||!s||(E=setTimeout(()=>{if(E=null,!h.contains(document.activeElement)&&Date.now()-ue>1500)return;let ae=document.getElementById(`${s}-cell-${String(te.rowKey)}-${te.columnId}`);!ae||!h.contains(ae)||(N=ae,Z(ae,te.columnId,false,true));},S.current.delay));},Ce=C?i.events.on("focusChanged",Ne):null,Fe=te=>{(!C||te.key==="Escape")&&g();};return h.addEventListener("mouseover",Ze),h.addEventListener("mouseout",Le),h.addEventListener("mousedown",g),h.addEventListener("pointerdown",Ge),h.addEventListener("keydown",Fe),h.addEventListener("scroll",g,true),window.addEventListener("blur",g),()=>{g(),Ce?.(),h.removeEventListener("mouseover",Ze),h.removeEventListener("mouseout",Le),h.removeEventListener("mousedown",g),h.removeEventListener("pointerdown",Ge),h.removeEventListener("keydown",Fe),h.removeEventListener("scroll",g,true),window.removeEventListener("blur",g);}},[p,t,v,C,k,i,s]),p?G:null}var Pa=6,zt=8;function mr({state:t,dark:e}){let[n,a]=useState(null),[l,i]=useState(null),{text:s,anchor:p,content:R,interactive:f,hold:m,release:v,id:C}=t;return useLayoutEffect(()=>{if(!n)return;let{width:k,height:G}=n.getBoundingClientRect(),P=document.documentElement.clientWidth,S=document.documentElement.clientHeight,h=p.top+p.height+Pa,E=p.top-G-Pa,N=h+G+zt<=S||E<zt?h:E,B=Math.min(Math.max(zt,p.left),Math.max(zt,P-k-zt));i({top:Math.min(N,S-G-zt),left:B});},[n,s,R,p]),jsx(ot,{dark:e,children:jsx("div",{ref:a,id:C,className:f?"kanuni-datagrid-tooltip kanuni-datagrid-tooltip--interactive":"kanuni-datagrid-tooltip",role:"tooltip",onMouseEnter:f?m:void 0,onMouseLeave:f?v:void 0,style:l?{top:l.top,left:l.left}:{top:0,left:0,visibility:"hidden"},children:R??s})})}function $n(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 Ia=$n(getGridDictionary("en"));function gr(t,e){let n={...Ia,...e.labels},{controller:a,maxGroupLevels:l}=e,i=t.columnId,s=a.getColumnModel().getDef(i),p=a.getSort(),R=p.find(u=>u.columnId===i),f=a.getGroupLevels(),m=f.includes(i),v=s?.sortable!==false,C=a.getColumnStates().find(u=>u.id===i)?.pinned??null,k=s?.groupable!==false,G=a.canGroup(),P=[{id:"sort-asc",label:n.sortAsc,disabled:!v||R?.direction==="asc",onSelect:()=>a.setSort([{columnId:i,direction:"asc"}])},{id:"sort-desc",label:n.sortDesc,disabled:!v||R?.direction==="desc",onSelect:()=>a.setSort([{columnId:i,direction:"desc"}])},{id:"sort-clear",label:n.clearSort,disabled:!R,onSelect:()=>a.setSort(p.filter(u=>u.columnId!==i))},{id:"sep-1",separator:true}];G&&P.push({id:"group",label:m?n.ungroup:n.groupBy,disabled:!k,onSelect:()=>{m?a.groupBy(f.filter(u=>u!==i)):a.groupBy([...f,i].slice(-l));}},{id:"group-panel",label:e.groupPanelVisible?n.hideGroupPanel:n.showGroupPanel,onSelect:e.onToggleGroupPanel}),e.groupFootersAvailable&&P.push({id:"group-footers",label:e.groupFootersVisible?n.hideGroupFooters:n.showGroupFooters,onSelect:e.onToggleGroupFooters}),P.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:a.getColumnStates().filter(u=>u.visible).length<=1,onSelect:()=>a.setColumnVisible(i,false)},{id:"field-chooser",label:n.fieldChooser,onSelect:e.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:n.bestFit,disabled:s?.resizable===false,onSelect:()=>e.onBestFit(i)},{id:"best-fit-all",label:n.bestFitAll,onSelect:e.onBestFitAll});let S=a.getColumnStates().filter(u=>u.visible&&u.pinned===C).map(u=>u.id),h=S.indexOf(i),E=s?.reorderable!==false&&h>=0;return P.push({id:"sep-4",separator:true},{id:"move-left",label:n.moveLeft,disabled:!E||h<=0,onSelect:()=>a.moveColumn(i,S[h-1])},{id:"move-right",label:n.moveRight,disabled:!E||h<0||h>=S.length-1,onSelect:()=>a.moveColumn(i,S[h+2])},{id:"fixed-position",label:n.fixedPosition,items:[{id:"pin-left",label:n.pinLeft,disabled:C==="left",onSelect:()=>a.setColumnPinned(i,"left")},{id:"pin-right",label:n.pinRight,disabled:C==="right",onSelect:()=>a.setColumnPinned(i,"right")},{id:"pin-sticky",label:n.pinSticky,disabled:C==="sticky",onSelect:()=>a.setColumnPinned(i,"sticky")}]},{id:"unpin",label:n.unpin,disabled:C===null,onSelect:()=>a.setColumnPinned(i,null)}),P}var Yt=typeof window<"u"?useLayoutEffect:useEffect,Fa=1e8,Wn=null;function Ka(){if(Wn!==null)return Wn;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=`${Fa}px`,t.appendChild(e),document.body.appendChild(t),t.scrollTop=Fa;let n=t.scrollTop;return br=e.offsetHeight>0?e.offsetHeight:null,t.remove(),n>0&&(Wn=n),Wn}var br=null;function md(){return br===null&&Ka(),br}function wr(t){return Math.abs(t)}function Ba(t,e){return getComputedStyle(e).direction==="rtl"?-t:t}function Vn(t,e){if(e)return t;if(t.viewportDatasource)throw new Error("[datagrid] viewportDatasource is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");if(t.dataSource!=null&&!Array.isArray(t.dataSource)&&t.grouping){t.debugMode&&console.warn("[datagrid] grouping a server-side DataSource is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let s={...t};return delete s.grouping,Vn(s,e)}if(t.columns?.some(s=>s.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 s={...t,columns:t.columns.map(p=>p.spanRows?{...p,spanRows:void 0}:p)};return Vn(s,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 s={...t};return delete s.tree,Vn(s,e)}if(!t.grouping)return t.masterDetail?hr(t):t;let{groupBy:n,groupSummaries:a}=t.grouping,l=n==null?[]:typeof n=="string"?[n]:n;if(l.length<=1&&!a)return t.masterDetail?hr(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?hr(i):i}function hr(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 gd(t){return jsx(yo,{locale:t.locale,messages:t.messages,children:jsx($o,{theme:t.theme,density:t.density,palette:t.palette,children:jsx(fd,{...t})})})}function fd(t){let e=le(),{className:n,style:a,dark:l=false,theme:i,palette:s,striped:p=true,emptyText:R,sortable:f=true,filterRow:m=false,headerFilter:v=false,filterIconMode:C="hover",columnReorder:k=true,columnResize:G=true,loadingOverlay:P=true,announcements:S=true,groupPanel:h=false,showRowCount:E=false,toolbar:u=false,toolbarExcel:N=false,toolbarPdf:B=false,filterPanel:F=false,filterPanelLabels:W,onOpenFilterBuilder:g,toolbarItemsBefore:M,toolbarItemsAfter:I,renderRow:c,stateStoring:y,headerMenu:L=true,focusedRow:Z=false,focusedRowKey:de,onFocusedRowChanged:ce,footer:Ze,footerMenu:Le=true,onRowClick:ue,onRowActivate:Ge,onReady:Ne,renderCellContent:Ce,getCellClassName:Fe,renderOverlay:te,onCellPointerDown:ae,onCellPointerEnter:re,onCellDoubleClick:ge,onHeaderClick:pe,getHeaderClassName:ye,renderHeaderLabel:he,enterpriseEdition:se=false,renderDetail:ie,renderEditForm:T,density:Y,rowMenu:O,cellMenu:j,autoColumns:J,rowDrag:Se,tooltip:A,pinnedTopRows:_,pinnedBottomRows:X,footerPosition:fe="bottom",autoSizeStrategy:x="none",highlightSearch:Be=true,...me}=t,ve=useMemo(()=>{let o=me.columns;if(o&&o.length>0)return o;let d=me.dataSource;if(!Array.isArray(d)||d.length===0)return o??[];let w=typeof J=="object"?J:void 0;return J===false?o??[]:inferColumns(d,w)},[me.columns,me.dataSource,J]),ke={...me,columns:ve},Ve=isPackagedTheme(i)?THEME_ROW_HEIGHT[i][Y??"normal"]:Y?DENSITY_ROW_HEIGHT[Y]:DEFAULT_ROW_HEIGHT,Ke=ke.rowHeight===void 0?{...ke,rowHeight:Ve}:ke,Ie=se?Number.POSITIVE_INFINITY:1,$=Vn(Ke,se),{controller:r,rows:ze,window:Xt,layout:be,sort:mt,rowHeight:dt,visibleCount:je}=fo($),Qe=ho(r,t.printLayout),ut=Qe.active?{...Xt,rows:{...Xt.rows,start:0,end:ze.length,offsetY:0,totalHeight:0}}:Xt,ct=useMemo(()=>ve.some(o=>o.autoHeight===true),[ve]),et=v&&r.canListDistinctValues();v&&!et&&me.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 Ye=useRef(null);Yt(()=>{r.setEnterpriseEdition(se);},[r,se]),useEffect(()=>{Ne?.(r);},[r,Ne]),Yt(()=>{let o=Ka();o!==null&&o<DEFAULT_MAX_SCROLL_OFFSET&&r.setMaxScrollOffset(o);let d=md();d!==null&&r.setMaxCanvasHeight(d);},[r]),Yt(()=>{let o=Ye.current;if(!o)return;let d=()=>{r.setViewportSize(o.clientWidth,o.clientHeight),o.style.setProperty("--dg-viewport-width",`${o.clientWidth}px`);let Q=o.querySelector(".kanuni-datagrid-rows"),V=o.querySelector(".kanuni-datagrid-canvas");if(Q&&V){let z=Q.getBoundingClientRect(),we=V.getBoundingClientRect();r.setChromeOffsets(z.top-we.top,we.bottom-z.bottom);}calibrateMaxScrollOffset(o,r);};if(d(),typeof ResizeObserver>"u")return;let w=new ResizeObserver(d);w.observe(o);let H=o.querySelector(".kanuni-datagrid-canvas");return H&&w.observe(H),()=>w.disconnect()},[r]),Yt(()=>{if(!ct)return;let o=Ye.current?.querySelector(".kanuni-datagrid-viewport");if(!o)return;let d=r.getVirtualWindow(),w=r.getRows(),H=new Map(r.getMeasuredRowHeights()),Q=false;for(let V=d.rows.start;V<d.rows.end;V++){let z=w[V];if(!z||z.kind!=="data")continue;let we=o.querySelector(`[data-row-key="${CSS.escape(String(z.key))}"]`);if(!we)continue;let Re=we.getBoundingClientRect().height;Re>0&&H.get(z.key)!==Re&&(H.set(z.key,Re),Q=true);}Q&&r.setMeasuredRowHeights(H);}),useEffect(()=>{if(ct)return r.events.on("columnStateChanged",()=>{r.clearMeasuredRowHeights();})},[r,ct]),useEffect(()=>r.events.on("scrollRequested",o=>{let d=Ye.current;if(!d)return;o.scrollTop!==void 0&&(d.scrollTop=o.scrollTop),o.scrollLeft!==void 0&&(d.scrollLeft=Ba(o.scrollLeft,d)),r.setScroll(d.scrollTop,wr(d.scrollLeft));let w=o.scrollTop;w===void 0||Math.abs(d.scrollTop-w)<=1||setTimeout(()=>{let H=Ye.current;!H||Math.abs(H.scrollTop-w)<=1||(H.scrollTop=w,r.setScroll(H.scrollTop,wr(H.scrollLeft)));},0);}),[r]);let qt=Ro(r,t.alignedGrids,Ye),Jt=useCallback(o=>{let d=o.currentTarget;r.setScroll(d.scrollTop,wr(d.scrollLeft)),qt.syncScroll(d.scrollLeft);},[r,qt]),Zt=useCallback((o,d)=>r.toggleSort(o,d),[r]);dr(r,y);let at=cr(r,Se);useEffect(()=>{de!=null&&r.getFocusedRowKey()!==de&&r.focusRow(de);},[r,de]),useEffect(()=>{if(ce)return r.events.on("focusedRowChanged",o=>ce({rowKey:o.rowKey,row:o.row}))},[r,ce]);let b=useRef(null),[K,U]=useState(null);useEffect(()=>r.events.on("overlayChanged",o=>{U(o.manual?o.overlay:null);}),[r]);let ee=useCallback(o=>{let d=r.getDataRowNode(o);if(d)return d;if(o==="")return;let w=Number(o);return Number.isNaN(w)?void 0:r.getDataRowNode(w)},[r]),D=se?t.notes:void 0;!se&&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 Ee=!!D?.onChange&&D.menu!==false,Nt=useCallback((o,d,w)=>D?D.get({rowKey:o,columnId:d,row:w})??null:null,[D]),jt=pr({rootRef:b,columnModel:r.getColumnModel(),getRowNode:ee,getNote:D?Nt:void 0,config:A,controller:r,gridId:me.gridId}),[yr,Wa]=useState(0);useEffect(()=>{let o=new Set,d=[r.events.on("cellsFlashed",({rowKeys:w,columnIds:H,duration:Q})=>{let V=b.current;if(!V)return;let z=w.length?w.map(He=>`[data-row-key="${CSS.escape(String(He))}"]`).join(","):".kanuni-datagrid-row",we=H.length?H.map(He=>`[data-column-id="${CSS.escape(He)}"]`).join(","):"[data-column-id]",Re=[];V.querySelectorAll(z).forEach(He=>{He.querySelectorAll(we).forEach(Bt=>Re.push(Bt));});for(let He of Re)He.classList.remove("kanuni-datagrid-cell--flash");V.offsetWidth;for(let He of Re)He.classList.add("kanuni-datagrid-cell--flash");let $e=setTimeout(()=>{for(let He of Re)He.classList.remove("kanuni-datagrid-cell--flash");o.delete($e);},Q);o.add($e);}),r.events.on("cellsRefreshed",({revision:w})=>Wa(w))];return ()=>{d.forEach(w=>w()),o.forEach(clearTimeout);}},[r]);let Ua=useCallback((o,d)=>r.moveColumn(o,d),[r]),Va=useCallback((o,d,w)=>r.setColumnWidth(o,d,w??true),[r]),Yn=useCallback(o=>{if(!b.current)return;let d=Kn(b.current,o);d!==null&&r.setColumnWidth(o,d);},[r]),Xn=useCallback(()=>{let o=b.current;if(o)for(let d of r.getColumnStates()){if(!d.visible||d.flex)continue;let w=Kn(o,d.id);w!==null&&r.setColumnWidth(d.id,w);}},[r]),qn=useRef(null),[pn]=useState(()=>new RowMotion),Cr=t.animateRows===true;useEffect(()=>{r.setAnimateRows(Cr);},[r,Cr]),useEffect(()=>{let o=()=>{r.getAnimateRows()&&pn.capture(qn.current);},d=["sortChanged","filterChanged","groupChanged","dataUpdated"].map(w=>r.events.on(w,o));return ()=>{d.forEach(w=>w()),pn.dispose();}},[r,pn]),Yt(()=>{r.getAnimateRows()&&pn.play(qn.current);}),useEffect(()=>{if(x!=="fitGrid")return;let o=()=>r.sizeColumnsToFit();return o(),r.events.on("gridSizeChanged",o)},[r,x]);let Jn=useRef(null);Yt(()=>{if(x!=="fitCells"){Jn.current=null;return}Jn.current!==r&&b.current?.querySelector(".kanuni-datagrid-row .kanuni-datagrid-cell[data-column-id]")&&(Jn.current=r,Xn());});let[za,kr]=useState({}),vr=t.filterDebounce??(r.isRemote()?200:0),Zn=useRef(false),mn=useMemo(()=>datePeriodLabels(e),[e]),jn=useRef(mn);jn.current=mn;let Ya=useMemo(()=>periodSuggestionList(mn),[mn]),gn=useCallback((o,d)=>{let w=r.getColumnModel().getDataType(o);Zn.current=true;try{r.setColumnFilter(o,parseFilterInput(o,d,w,jn.current),FILTER_PART_ROW);}finally{Zn.current=false;}},[r]),gt=useMemo(()=>createDebouncedCommit(vr),[vr]);useEffect(()=>()=>gt.cancelAll(),[gt]);let Xa=useCallback((o,d)=>{kr(w=>({...w,[o]:d})),gt.schedule(o,()=>gn(o,d));},[gn,gt]),qa=useCallback((o,d)=>{gt.cancel(o),gn(o,d);},[gn,gt]);useEffect(()=>r.events.on("filterChanged",()=>{if(Zn.current)return;let o=r.getColumnModel();kr(d=>Ho(d,{isPending:w=>gt.isPending(w),textFor:w=>{let H=r.getColumnFilter(w,FILTER_PART_ROW);return H?filterInputFromNode(w,H,o.getDataType(w),jn.current):""}},o.getOrder()));}),[r,gt]);let[Te,kt]=useState(null),fn=useRef(0),Qn=useRef(null),it=useCallback(()=>{let o=document.activeElement instanceof HTMLElement?document.activeElement:null;o?.closest(".kanuni-datagrid-portal")||(Qn.current={el:o,columnId:o?.closest(".kanuni-datagrid-header-cell")?.getAttribute("data-column-id")??null});},[]),Ja=useCallback((o,d)=>{it();let w=d.getBoundingClientRect(),H=r.getColumnModel().getDef(o),Q={left:w.left,top:w.bottom+2},V=H?.headerName??o,z=r.getColumnFilter(o,FILTER_PART_SET)??r.getColumnFilter(o,FILTER_PART_DEFAULT);if(!r.isRemote()){let Re=++fn.current;kt({columnId:o,label:V,entries:[],selected:null,anchor:Q,loading:true}),r.getDistinctValueSetAsync(o).then(({entries:$e,truncated:He})=>{fn.current===Re&&kt(Bt=>Bt&&Bt.columnId===o?{...Bt,entries:$e,truncated:He,capped:He,selected:selectedLabelsFromFilter(z,$e),loading:false}:Bt);});return}let we=++fn.current;kt({columnId:o,label:V,entries:[],selected:null,anchor:Q,loading:true}),r.getDistinctValuesAsync(o).then(Re=>{fn.current===we&&kt($e=>$e&&$e.columnId===o?{...$e,entries:Re,selected:selectedLabelsFromFilter(z,Re),loading:false}:$e);});},[r,it]),Za=useCallback(o=>{Te&&(r.setColumnFilter(Te.columnId,o,FILTER_PART_SET),kt(null));},[r,Te]),ja=Object.keys(r.getColumnStates().reduce((o,d)=>(r.getColumnFilter(d.id)&&(o[d.id]=true),o),{})),Mt=r.getSelectionMode(),xe=Mt!=="none"&&(me.selection?.checkboxColumn??false),Tr=(me.selection?.rowClick??(xe?"toggle":"replace"))==="toggle",Qa=useCallback((o,d)=>{r.handleRowClick(o.key,{ctrlKey:d.ctrlKey||Tr&&!d.shiftKey,metaKey:d.metaKey,shiftKey:d.shiftKey});},[r,Tr]),ei=useCallback((o,d)=>r.focusCell(o.key,d),[r]),ti=useCallback(o=>r.toggleRow(o.key),[r]),[Pt,eo]=useState(null),ni=useCallback(()=>eo(null),[]),[Qt,to]=useState(null),xr=useCallback((o,d)=>{let H=(b.current?.querySelector(`[data-row-key="${CSS.escape(String(o))}"] [data-column-id="${CSS.escape(d)}"]`)??b.current)?.getBoundingClientRect();return {left:H?.left??0,top:(H?.bottom??0)+2}},[]),oi=useCallback(o=>{let d=Qt;to(null),!(!d||!D?.onChange)&&D.onChange({rowKey:d.rowKey,columnId:d.columnId,row:d.row,text:o});},[Qt,D]),Dr=useCallback((o,d)=>{if(!D?.onChange||D.menu===false)return [];let w=o.columnId;if(!w)return [];let H=r.getRowKey(o.row),Q=Nt(H,w,o.row),V=()=>to({rowKey:H,columnId:w,row:o.row,text:Q??"",anchor:xr(H,w)}),z=[];return d&&z.push({separator:true,id:"__note-sep"}),z.push({id:"__note-edit",label:Q?e.editNote:e.addNote,onSelect:V}),Q&&z.push({id:"__note-delete",label:e.deleteNote,onSelect:()=>D.onChange?.({rowKey:H,columnId:w,row:o.row,text:null})}),z},[D,r,Nt,xr,e]),[wn,hn]=useState(null),no=useRef({x:0,y:0}),Gr=useCallback(o=>or(r,e,j,o,d=>{hn({message:d,...no.current}),console.error("[datagrid] export failed:",d);}),[r,e,j]),bn=useCallback((o,d,w,H,Q)=>{if(w.kind!=="data")return;it();let V={row:w.data,node:w,rowIndex:H,columnId:Q,selectedKeys:r.getSelectedKeys()},z=(typeof O=="function"?O(V):O)??[],we=Dr(V,z.length>0),Re=rr(r,e,w.key,z.length+we.length>0),$e=[...z,...we,...Re,...Gr(z.length+we.length+Re.length>0)];$e.length!==0&&(no.current={x:o,y:d},hn(null),eo({x:o,y:d,items:$e,context:V}));},[O,r,e,Dr,Gr,it]),Sr=useCallback((o,d,w)=>{let H=rr(r,e,o,false);if(H.length===0)return;w.preventDefault(),it();let Q={row:d,node:{kind:"data",key:o,sourceIndex:-1,data:d},rowIndex:-1,columnId:w.target.closest("[data-column-id]")?.dataset.columnId??null,selectedKeys:r.getSelectedKeys()};no.current={x:w.clientX,y:w.clientY},hn(null),eo({x:w.clientX,y:w.clientY,items:H,context:Q});},[r,e,it]),Er=useCallback(o=>o?.target?.closest("[data-column-id]")?.dataset.columnId??null,[]),Lt=useCallback((o,d,w,H,Q)=>{let V=H??-1;o&&r.notifyRow(o,w,V);let z=Er(Q);z!==null&&r.notifyCell(d,w,V,z);},[r,Er]),ri=useCallback((o,d,w)=>{ue?.(o),Lt("rowClicked","cellClicked",o,d,w);},[ue,Lt]),ai=useCallback((o,d,w)=>{Ge?.(o),Lt("rowDoubleClicked","cellDoubleClicked",o,d,w);},[Ge,Lt]),ii=useCallback((o,d,w)=>{if(Lt(null,"cellContextMenu",o,d,w),!O&&!Ee&&j===false&&!r.isRowPinningEnabled()||o.kind!=="data")return;w.preventDefault(),r.isRowSelected(o.key)||r.handleRowClick(o.key,{});let H=w.target.closest("[data-column-id]")?.dataset.columnId??null;bn(w.clientX,w.clientY,o,d,H);},[O,Ee,j,r,bn,Lt]),[li,si]=useState(null),[di,ui]=useState(null),[oo,ci]=useState(()=>me.grouping?.groupSummaries??false),[vt,ro]=useState(null),[Nr,ao]=useState(null),io=Pt!==null||vt!==null||Te!==null,Mr=useRef(false);useEffect(()=>{if(Mr.current&&!io){let o=Qn.current;Qn.current=null;let d=o?.el?.isConnected?o.el:o?.columnId?b.current?.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${CSS.escape(o.columnId)}"]`):null,w=!document.activeElement||document.activeElement===document.body;d&&w&&d.focus({preventScroll:true});}Mr.current=io;},[io]);let pi=useCallback(()=>{r.getSelectedCount()>0?r.clearSelection():r.selectAll();},[r]),lo=xe?r.getSelectableCount():je,so=r.getSelectedCount(),mi=lo>0&&so>=lo?"all":so>0?"some":"none",gi=useCallback(o=>{let d=o.target;if(d.tagName==="INPUT"||d.tagName==="TEXTAREA"||d.isContentEditable)return;if((O||Ee||j!==false||r.isRowPinningEnabled())&&(o.key==="ContextMenu"||o.key==="F10"&&o.shiftKey)){let Q=r.getFocus(),V=Q?ze.findIndex(we=>we.key===Q.rowKey):-1,z=V>=0?ze[V]:void 0;if(z){let Re=Ye.current?.querySelector(`[data-row-key="${CSS.escape(String(z.key))}"]`)?.getBoundingClientRect();bn(Re?Re.left+16:0,Re?Re.bottom:0,z,V,Q?.columnId??null),o.preventDefault();}return}let w=resolveGridCommand({key:o.key,ctrlKey:o.ctrlKey,metaKey:o.metaKey,shiftKey:o.shiftKey,altKey:o.altKey});if(!w)return;if(w.type==="copy"){Ut(r);return}if(w.type==="activate"){let Q=r.getFocus(),V=Q?ze.find(z=>z.key===Q.rowKey):void 0;V&&Ge?.(V),w.preventDefault&&o.preventDefault();return}r.executeCommand(w),w.preventDefault&&o.preventDefault();let H=r.getFocusIndices();if(H&&Ye.current){let V=r.getColumnLayout().center.findIndex(we=>we.state.id===r.getFocus()?.columnId),z=r.ensureVisible(H.rowIndex,V===-1?void 0:V);if(z){let we=Ye.current;z.scrollTop!==void 0&&(we.scrollTop=z.scrollTop),z.scrollLeft!==void 0&&(we.scrollLeft=Ba(z.scrollLeft,we)),r.setScroll(we.scrollTop,we.scrollLeft);}}},[r,ze,Ge,O,Ee,j,bn]),Tt=useMemo(()=>bandDepth([...be.left,...be.center,...be.right]),[be]),It=$t,uo=(m?2:1)+Tt,Pr=r.getPinnedRows("top"),Lr=r.getPinnedRows("bottom"),co=[..._??[],...Pr.map(o=>o.row)],po=[...X??[],...Lr.map(o=>o.row)],fi=[...(_??[]).map(()=>null),...Pr.map(o=>o.key)],wi=[...(X??[]).map(()=>null),...Lr.map(o=>o.key)],Rn=co.length,hi=po.length,yn=uo+Rn,Cn=li??me.grouping?.panel??h,Ir=r.getGroupLevels(),bi=useCallback(o=>r.groupBy(o.slice(0,Ie)),[r,Ie]),Ri=useCallback(o=>r.toggleGroup(o),[r]),Hr=useCallback(o=>r.toggleGroupSelection(o),[r]),yi=r.getColumnModel().runtime().filter(o=>o.state.visible&&o.def.groupable!==false),_e=r.hasMasterDetail()&&!!ie,De=t.rowNumbers??false,Ci=De&&r.isPaginated()?r.getPage()*r.getPageSize():0;useEffect(()=>{r.setLeadWidth(Go(xe,_e,De));},[r,xe,_e,De]);let ki=useCallback(o=>r.toggleDetail(o),[r]),vi=useCallback(o=>r.toggleTreeRow(o),[r]),Ar=r.getSummaryDefs(),Ti=r.getSummaries(),Ht=di??Ze??Ar.length>0,en=Ht&&fe==="top",mo=m?2:1,Or=$.grouping?.groupSummaries&&oo?me.summaries:void 0,Fr=r.getGroupDisplay(),Br=useCallback(()=>{ci(o=>(r.setGroupSummaries(!o),!o));},[r]),xi=useCallback((o,d)=>{if(!Le)return;d.preventDefault();let w=r.getColumnModel().getDef(o),H=r.getColumnSummary(o),Q={columnId:o,headerName:w?.headerName??w?.field??o},V=[{id:"none",label:e.noTotal,disabled:H===null,onSelect:()=>r.setColumnSummary(o,null)},{id:"sep",separator:true},...allowedSummaryTypes(w?.dataType).map(z=>({id:z,label:summaryTypeLabels(e)[z],disabled:H?.type===z,onSelect:()=>r.setColumnSummary(o,z)}))];it(),ro({x:d.clientX,y:d.clientY,items:V,context:Q});},[r,Le,it]),Di=useCallback((o,d)=>{if(L===false)return;d.preventDefault();let w=r.getColumnModel().getDef(o),H={columnId:o,headerName:w?.headerName??w?.field??o},Q=gr(H,{controller:r,groupPanelVisible:Cn,footerVisible:Ht,groupFootersAvailable:se,groupFootersVisible:oo,onToggleGroupPanel:()=>si(!Cn),onToggleFooter:()=>ui(!Ht),onToggleGroupFooters:Br,onOpenFieldChooser:()=>ao({left:d.clientX,top:d.clientY}),onBestFit:Yn,onBestFitAll:Xn,maxGroupLevels:Ie,labels:$n(e)}),V=typeof L=="function"?L(H,Q):Q;!V||V.length===0||(it(),ro({x:d.clientX,y:d.clientY,items:V,context:H}));},[L,r,Cn,Ht,se,oo,Br,Yn,Xn,Ie,e,it]),At=r.getFocus(),Gi=At?`${t.gridId}-cell-${String(At.rowKey)}-${At.columnId}`:void 0,go=r.getSelectedCount(),Si=useMemo(()=>{let o=[fillText(e.announceRows,{n:je})];if(mt.length>0){let d=mt.map(w=>{let H=r.getColumnModel().getDef(w.columnId),Q=String(H?.headerName??H?.field??w.columnId),V=w.direction==="desc"?e.announceDescending:e.announceAscending;return `${Q} ${V}`}).join(", ");o.push(fillText(e.announceSortedBy,{columns:d}));}return go>0&&o.push(fillText(e.announceSelected,{n:go})),o.join(", ")},[r,je,mt,go,e]),{centerColumns:ft,centerIndices:kn,stickyInsets:Ot,leadingSpacer:wt,trailingSpacer:ht,rowStart:Ei,rowEnd:Kr}=Qr(be,ut),vn=r.getColumnModel(),Ft=Ei,Ni=o=>{if(ct)return;let d=r.getRowHeightAt(o);return d===dt?void 0:d},Mi=Array.from(ze.slice(Ft,Kr)),Pi=useMemo(()=>!De||r.getGroupLevels().length===0&&!r.hasMasterDetail()&&!r.hasTreePathRows()?null:ea(ze),[De,r,ze]),Li=r.hasCellSpans(),_r=useRef({start:0,end:0});_r.current={start:Ft,end:Kr-1};let $r=useRef(ut.columns);$r.current=ut.columns;let Ii=useCallback(o=>r.planRowColSpans(o,$r.current),[r]),Hi=hasColSpans(be),Ai=useCallback((o,d)=>{let w=r.getCellSpans(d);if(w.length===0)return null;let{start:H,end:Q}=_r.current,V=spanRoleAt(w,o,H,Q);if(!V)return null;if(V.role==="covered")return {kind:"covered"};let z=r.getRowOffset(V.drawStart);return {kind:"draw",height:r.getRowOffset(V.drawEnd)+r.getRowHeightAt(V.drawEnd)-z,offset:0}},[r]),Wr=r.getFindNeedle()||(Be?normalizeSearch(r.getSearchText()):""),Ur=r.getFindState(),Tn=Ur.count>0?`${r.getFindNeedle()}\0${Ur.activeIndex}`:"",Vr=useCallback((o,d)=>r.getFindMatchKind(o,d),[r]),Oi={pathOf:o=>bandPath(r.getColumnModel().getDef(o)),collapsible:o=>r.isBandCollapsible(o),collapsed:o=>r.isBandCollapsed(o),onToggle:o=>r.toggleBand(o),labels:{expand:e.expandColumnGroup,collapse:e.collapseColumnGroup}},zr={layout:be,centerColumns:ft,leadingSpacer:wt,trailingSpacer:ht,defs:Ar,values:Ti,checkboxColumn:xe,detailColumn:_e,rowNumberColumn:De,onPickSummary:Le?xi:void 0,emptyHint:Le?"\xB7":""};return jsxs("div",{className:`kanuni-datagrid-root${l?" kanuni-datagrid-dark":""}${Qe.active?" kanuni-datagrid-print":""}${themeClassName(i,Y,s)}${n?` ${n}`:""}`,style:{"--dg-row-height":`${dt}px`,"--dg-grip-inset":De?`${Kt}px`:"0px",...a},dir:isRtlLocale(t.locale)?"rtl":void 0,"data-grid-id":t.gridId,"data-theme":i,"data-palette":s,"data-auto-height":ct?"":void 0,ref:b,children:[u&&jsx(Jo,{controller:r,dark:l,columnChooser:t.toolbarColumnChooser??true,exportExcel:se&&N,exportPdf:se&&B,itemsBefore:M,itemsAfter:I,onOpenColumnChooser:o=>ao(d=>d?null:o)}),Cn&&jsx(qo,{columns:yi,levels:Ir,onSetLevels:bi,maxLevels:Ie,onExpandAll:()=>r.expandAllGroups(),onCollapseAll:()=>r.collapseAllGroups()}),jsx("div",{className:"kanuni-datagrid-scroller",ref:Ye,onScroll:Jt,onKeyDown:gi,tabIndex:0,role:"grid","aria-rowcount":je+uo+Rn+hi,"aria-colcount":be.left.length+be.center.length+be.right.length+(xe?1:0)+(_e?1:0)+(De?1:0),"aria-multiselectable":Mt==="multiple"||void 0,"aria-activedescendant":Gi,"aria-label":t.ariaLabel??t.gridId,children:jsxs("div",{className:"kanuni-datagrid-canvas",style:{width:(be.totalWidth||0)+Go(xe,_e,De)||"100%"},role:"rowgroup",children:[jsx(Po,{layout:be,centerColumns:ft,leadingSpacer:wt,trailingSpacer:ht,depth:Tt,checkboxColumn:xe,detailColumn:_e,rowNumberColumn:De,rowHeight:It,bandFold:Oi}),jsx(Io,{bandOffset:Tt*It,stickyInsets:Ot,layout:be,centerColumns:ft,leadingSpacer:wt,trailingSpacer:ht,sort:mt,sortable:f,onSort:Zt,groupLevels:Ir,headerFilter:et,filteredColumns:ja,onOpenFilter:Ja,filterIconMode:C,checkboxColumn:xe,detailColumn:_e,rowNumberColumn:De,selectAllState:mi,selectAllDisabled:lo===0&&so===0,onToggleSelectAll:pi,draggable:h,reorderable:k,onReorder:Ua,resizable:G,onResize:Va,onAutoFit:Yn,onHeaderContextMenu:L===false?void 0:Di,onHeaderClick:pe,getHeaderClassName:ye,renderHeaderLabel:he}),m&&jsx(Ao,{bandOffset:Tt*It,stickyInsets:Ot,layout:be,centerColumns:ft,leadingSpacer:wt,trailingSpacer:ht,values:za,checkboxColumn:xe,detailColumn:_e,rowNumberColumn:De,onChange:Xa,onCommit:qa,periodSuggestions:Ya,periodListId:`${t.gridId}-filter-periods`}),en&&jsx(In,{...zr,position:"top",bandOffset:Tt*It,headerRowsBetween:mo}),co.length>0&&jsx(Hn,{gridId:t.gridId,side:"top",rows:co,rowKeys:fi,onUserRowContextMenu:Sr,layout:be,columnModel:vn,centerColumns:ft,centerIndices:kn,stickyInsets:Ot,leadingSpacer:wt,trailingSpacer:ht,checkboxColumn:xe,detailColumn:_e,rowNumberColumn:De,rowHeight:dt,bandOffset:Tt*It,headerRowsBetween:mo+(en?1:0),ariaRowBase:uo}),r.hasStickyGroupHeaders()&&jsx(ga,{controller:r,width:be.totalWidth,bandOffset:Tt*It,headerRowsBetween:mo+(en?1:0),belowPinned:Rn>0?Rn*dt+1:0,renderRow:(o,d,w)=>jsx(_t,{gridId:t.gridId,node:o,index:d,layout:be,columnModel:vn,centerColumns:ft,centerIndices:kn,stickyInsets:Ot,leadingSpacer:wt,trailingSpacer:ht,striped:false,selected:false,groupSelection:xe&&Mt==="multiple"?r.getGroupSelectionState(String(o.key)):void 0,onToggleGroupSelect:Hr,groupDisplay:Fr,focusedColumnId:null,checkboxColumn:xe,rowNumberColumn:De,rowNumber:null,headerRowCount:yn,onToggleGroup:H=>{r.toggleGroup(H),r.scrollToRow(H);},revision:yr,searchNeedle:Wr,findStamp:Tn,findKind:Tn?Vr:void 0,summaryDefs:Or,detailColumn:_e,height:w,renderCellContent:Ce,getCellClassName:Fe})}),jsxs("div",{className:"kanuni-datagrid-rows",style:{position:"relative",height:ut.rows.totalHeight},onDragOver:at.bodyHandlers?.onDragOver,onDrop:at.bodyHandlers?.onDrop,onDragLeave:at.bodyHandlers?.onDragLeave,children:[jsx("div",{ref:qn,className:"kanuni-datagrid-viewport",style:{transform:`translateY(${ut.rows.offsetY}px)`},children:Mi.map((o,d)=>o?jsx(_t,{gridId:t.gridId,node:o,index:Ft+d,layout:be,columnModel:vn,centerColumns:ft,centerIndices:kn,stickyInsets:Ot,leadingSpacer:wt,trailingSpacer:ht,striped:p,selected:r.isRowSelected(o.key),ariaSelectable:Mt!=="none",selectable:xe&&o.kind==="data"?r.isRowSelectable(o.key):true,groupSelection:o.kind==="group"&&xe&&Mt==="multiple"?r.getGroupSelectionState(String(o.key)):void 0,onToggleGroupSelect:Hr,groupDisplay:Fr,focusedColumnId:At?.rowKey===o.key?At.columnId:null,rowFocused:Z&&At?.rowKey===o.key,rowDrag:at.handlers,dropSide:at.dropAt?.key===o.key?at.dropAt.side:null,renderRow:c,checkboxColumn:xe,rowNumberColumn:De,getSpan:Li?Ai:void 0,resolveColSpans:Hi?Ii:void 0,getNote:D?Nt:void 0,rowNumber:De?ta(Ft+d,Pi,Ci):null,headerRowCount:yn,onRowClick:ri,onRowMouseDown:Mt==="none"?void 0:Qa,onRowDoubleClick:ai,onToggleSelect:ti,onCellMouseDown:ei,onRowContextMenu:ii,onToggleGroup:Ri,onToggleTreeRow:vi,revision:yr,searchNeedle:Wr,findStamp:Tn,findKind:Tn?Vr:void 0,summaryDefs:Or,detailColumn:_e,detailExpanded:_e&&r.isDetailExpanded(o.key),onToggleDetail:ki,renderDetail:ie,renderEditForm:T,height:Ni(Ft+d),renderCellContent:Ce,getCellClassName:Fe,onCellPointerDown:ae,onCellPointerEnter:re,onCellDoubleClick:ge},String(o.key)):(()=>{let w=Ft+d,H=r.isRowLoadFailed(w);return jsx("div",{className:`kanuni-datagrid-row kanuni-datagrid-row--loading${H?" kanuni-datagrid-row--load-failed":""}`,role:"row","aria-rowindex":w+1+yn,"aria-busy":H?void 0:"true",children:jsx("div",{className:"kanuni-datagrid-cell kanuni-datagrid-loading-cell",role:"gridcell","aria-colindex":1,children:H?jsxs(Fragment,{children:[jsx("span",{className:"kanuni-datagrid-load-failed-text",children:e.rowsLoadFailed}),jsx("button",{type:"button",className:"kanuni-datagrid-retry-button","data-retry-load":"",onClick:()=>r.retryFailedLoads(),children:e.retryLoad})]}):jsx("span",{className:"kanuni-datagrid-loading-bar"})})},`__loading-${w}`)})())}),te?.()]}),po.length>0&&jsx(Hn,{gridId:t.gridId,side:"bottom",rows:po,rowKeys:wi,onUserRowContextMenu:Sr,layout:be,columnModel:vn,centerColumns:ft,centerIndices:kn,stickyInsets:Ot,leadingSpacer:wt,trailingSpacer:ht,checkboxColumn:xe,detailColumn:_e,rowNumberColumn:De,rowHeight:dt,headerRowsBetween:Ht&&!en?1:0,ariaRowBase:yn+je}),Ht&&!en&&jsx(In,{...zr,position:"bottom"})]})}),(K==="noRows"||K===null&&je===0)&&jsx("div",{className:"kanuni-datagrid-empty",children:R??e.noData}),F&&jsx(Qo,{controller:r,alwaysVisible:F==="always",onOpenBuilder:g,describeOptions:W}),P!==false&&jsx(sr,{controller:r,delay:typeof P=="number"?P:void 0,forced:K==="loading"}),r.isPaginated()&&jsx(jo,{page:r.getPage(),pageCount:r.getPageCount(),pageSize:r.getPageSize(),pageSizes:me.pagination?.pageSizes,pageButtons:me.pagination?.pageButtons,maxPageButtons:me.pagination?.maxPageButtons,totalRows:je,onPage:o=>r.setPage(o),onNext:()=>r.nextPage(),onPrevious:()=>r.previousPage(),onPageSize:o=>r.setPageSize(o)}),S&&jsx("div",{className:"kanuni-datagrid-sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:Si}),Qt&&jsx(ir,{anchor:Qt.anchor,value:Qt.text,dark:l,onCommit:oi,onCancel:()=>to(null)}),Pt&&jsx(Bn,{x:Pt.x,y:Pt.y,items:Pt.items,context:Pt.context,dark:l,onClose:ni}),wn&&jsx(ot,{dark:l,children:jsx("button",{type:"button",role:"alert",className:"kanuni-datagrid-toolbar-error kanuni-datagrid-menu-error",style:{left:wn.x,top:wn.y},onClick:()=>hn(null),children:wn.message})}),vt&&jsx(Bn,{x:vt.x,y:vt.y,items:vt.items,context:vt.context,dark:l,label:`${vt.context.headerName} column`,onClose:()=>ro(null)}),jt&&jsx(mr,{state:jt,dark:l}),Nr&&jsx(Zo,{controller:r,columns:r.getColumnStates(),anchor:Nr,dark:l,onClose:()=>ao(null)}),Te&&jsx(Yo,{gridId:t.gridId,columnId:Te.columnId,headerLabel:Te.label,entries:Te.entries,initialSelected:Te.selected,anchor:Te.anchor,loading:Te.loading,truncated:Te.truncated,onSearch:Te.capped&&!r.isRemote()?o=>{let{entries:d,truncated:w}=r.searchDistinctValues(Te.columnId,o);kt(H=>H&&H.columnId===Te.columnId?{...H,entries:d,truncated:w}:H);}:void 0,dark:l,onApply:Za,onClose:()=>kt(null)},`${Te.columnId}:${Te.loading?"loading":"ready"}`)]})}function bd({defs:t,values:e,columnModel:n,rowCount:a,rowCountLabel:l}){let i=le(),s=summaryTypeLabels(i);return t.length===0&&a===void 0?null:jsxs("div",{className:"kanuni-datagrid-summary-bar",role:"status","aria-label":i.summaryAria,children:[a!==void 0&&jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsx("strong",{children:a.toLocaleString()})," ",l??i.summaryRows]}),t.map(p=>{let R=e[summaryKey(p.columnId,p.type)],f=n.getDef(p.columnId),m=formatSummaryValue(p,R,f);return jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsxs("span",{className:"kanuni-datagrid-summary-label",children:[summaryLabel(p,s)," ",f?.headerName??p.columnId,":"]}),jsx("strong",{children:m})]},summaryKey(p.columnId,p.type))})]})}var Rd=memo(bd);function vd(t,e){return Rr(t,e,e?.source,(n,a)=>n.computeChartData(a))}function Td(t,e){return Rr(t,e,e?.source,(n,a)=>n.computeChartXYData(a))}function xd(t,e){return Rr(t,e,e?.source,(n,a)=>n.computeChartBoxData(a))}function Rr(t,e,n,a){let[l,i]=useState(null);return useEffect(()=>{if(!t||!e){i(null);return}let s=n??"view",p=chartNeedsOrder(e),R=false,f=0,m=false,v=false,C=null,k=()=>{let S=++f;a(t,e).then(h=>{!R&&S===f&&i(h);},()=>{});},G=(S=false)=>{v||=S,!m&&(m=true,queueMicrotask(()=>{if(m=false,R)return;let h=t.chartBasis(s,p);!v&&h===C||(v=false,C=h,k());}));};C=t.chartBasis(s,p),k();let P=[t.events.on("contentReady",()=>G()),t.events.on("rowsChanged",()=>G()),t.events.on("dataUpdated",()=>G()),...s==="selection"?[t.events.on("selectionChanged",()=>G(true))]:[]];return ()=>{R=true,f++,P.forEach(S=>S());}},[t,e]),l}export{$t as BAND_ROW_HEIGHT,Ia as DEFAULT_HEADER_MENU_LABELS,gd as DataGrid,Zo as GridColumnChooser,Bn as GridContextMenu,Qo as GridFilterPanel,Ao as GridFilterRow,In as GridFooterRow,qo as GridGroupPanel,Io as GridHeader,Po as GridHeaderBands,Yo as GridHeaderFilterPopup,sr as GridLoadingOverlay,ir as GridNoteEditor,jo as GridPager,Hn as GridPinnedRows,Et as GridPopupPanel,ot as GridPortal,_t as GridRow,Rd as GridSummaryBar,$o as GridSurfaceProvider,yo as GridTextProvider,Jo as GridToolbar,mr as GridTooltip,wo as PRINT_MAX_ROWS,_n as ROW_DRAG_MIME,Ca as SHORTCUT_COPY,Ds as SHORTCUT_CUT,Gs as SHORTCUT_PASTE,or as buildCellMenuItems,gr as buildHeaderMenu,Ut as copyToClipboard,$n as headerMenuLabels,Kn as measureBestFitWidth,Ho as reconcileFilterInputs,an as runGridExport,Ro as useAlignedGrids,nn as useAnchoredPopup,pr as useCellTooltip,fo as useDataGrid,xd as useGridChartBoxData,vd as useGridChartData,Td as useGridChartXYData,Wo as useGridSurfaceClass,le as useGridText,ho as usePrintLayout,cr as useRowDrag,dr as useStateStoring,Ss as writeClipboardText};