@kanunilabs/datagrid-react 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import {createContext,memo,useState,useRef,useEffect,useContext,useMemo,useCallback,useSyncExternalStore,useLayoutEffect}from'react';import {getGridDictionary,isDetailRow,isEditFormRow,isFillerRow,isGroupRow,summaryKey,describeFilter,computeHeaderBands,downloadBlob,ExportAbortedError,DataGridController,isFilterGroup,attachStateStoring,isDataRow,inferColumns,DEFAULT_ROW_HEIGHT,DEFAULT_MAX_SCROLL_OFFSET,FILTER_PART_ROW,createDebouncedCommit,FILTER_PART_SET,FILTER_PART_DEFAULT,selectedLabelsFromFilter,resolveGridCommand,bandDepth,spanRoleAt,isRtlLocale,bandPath,lookupLabel,formatDateValue}from'@kanunilabs/datagrid-core';export{ClientRowModel,ColumnModel,DEFAULT_ROW_HEIGHT,DataGridController,GridStateStore,VirtualWindowEngine,andFilters,attachStateStoring,bandDepth,bandPath,computeColumnLayout,computeHeaderBands,createRestDataSource,describeFilter,downloadBlob,humanizeField,importCsv,inferColumns,isDataRow,isDataSource,isFilterGroup,isGroupRow,lookupLabel,moveRowInArray,parseCsv,sniffDelimiter,summaryKey}from'@kanunilabs/datagrid-core';import {createPortal,flushSync}from'react-dom';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var ni=["contentReady","viewportChanged","columnStateChanged","sortChanged","filterChanged","selectionChanged","focusChanged","summariesChanged"];function $n(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(I=>{let R=()=>{o.current++,I();},k=ni.map(G=>e.events.on(G,R));return ()=>k.forEach(G=>G())},[e]),i=useCallback(()=>o.current,[]);useSyncExternalStore(l,i,i);let{dataSource:d,columns:m}=t,b=useRef(true);useEffect(()=>{if(b.current){b.current=false;return}Array.isArray(d)&&e.setData(d);},[e,d]);let f=useRef(true);useEffect(()=>{if(f.current){f.current=false;return}e.setColumns(m);},[e,m]);let p=t.pagination?.enabled??false;useEffect(()=>{e.setPaginationEnabled(p);},[e,p]);let g=t.rowHeight,y=useRef(true);useEffect(()=>{if(y.current){y.current=false;return}g!==void 0&&e.setRowHeight(g);},[e,g]);let w=t.grouping?.groupBy??null,v=JSON.stringify(w==null?[]:typeof w=="string"?[w]:w),N=useRef(true);return useEffect(()=>{if(N.current){N.current=false;return}e.groupBy(JSON.parse(v));},[e,v]),{controller:e,rows:e.getRows(),window:e.getVirtualWindow(),layout:e.getColumnLayout(),sort:e.getSort(),rowHeight:e.getRowHeight(),visibleCount:e.getVisibleCount(),totalCount:e.getTotalCount()}}var tn=0,Wn=5e3;function ri(t){if(t===void 0||t===false)return null;let e=t===true?{}:t;return {always:e.always??false,maxRows:e.maxRows??Wn}}function ai(t,e){return t<=e}function Vn(t,e){let n=ri(e),o=n!==null,l=n?.always??false,i=n?.maxRows??Wn,[d,m]=useState(false),b=useCallback(()=>m(true),[]),f=useCallback(()=>m(false),[]);useEffect(()=>{if(!o||l||typeof window>"u"||typeof window.addEventListener!="function")return;let g=()=>{let w=t.getRows().length;if(!ai(w,i)){t.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${w} rows exceeds maxRows (${i}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}flushSync(()=>m(true));},y=()=>flushSync(()=>m(false));return window.addEventListener("beforeprint",g),window.addEventListener("afterprint",y),()=>{window.removeEventListener("beforeprint",g),window.removeEventListener("afterprint",y);}},[o,l,i,t]);let p=l||d;return useEffect(()=>{if(!p||typeof document>"u")return;let g=document.documentElement;return tn++,g.classList.add("kanuni-datagrid-printing"),()=>{tn--,tn<=0&&(tn=0,g.classList.remove("kanuni-datagrid-printing"));}},[p]),{active:p,begin:b,end:f}}var nn=new Map,zn=new Set;function cr(t,e){let n=nn.get(t);return n?[...n].filter(o=>o!==e):[]}function Un(t,e,n){let o=useRef(null);return useEffect(()=>{if(!e)return;let i={controller:t,scroller:()=>n.current};o.current=i;let d=nn.get(e)??new Set;d.add(i),nn.set(e,d);let m=t.events.on("columnStateChanged",()=>{if(zn.has(e))return;let b=cr(e,i);if(b.length===0)return;let f=t.getColumnStates();zn.add(e);try{for(let p of b)p.controller.applyColumnStates(f);}finally{zn.delete(e);}});return ()=>{m(),d.delete(i),d.size===0&&nn.delete(e),o.current=null;}},[t,e,n]),{syncScroll:useCallback(i=>{let d=o.current;if(!e||!d)return;let m=cr(e,d);if(m.length!==0)for(let b of m){let f=b.scroller();f&&f.scrollLeft!==i&&(f.scrollLeft=i);}},[e])}}function on(t,e,n){return t==="left"?e:t==="center"?n.left+e:n.left+n.center+e}function pr(t,e){let{start:n,end:o}=e.columns,l=t.centerOffsets,i=l[n]??0,d=(l[o]??0)-i,m=Math.max(0,t.centerWidth-i-d),b=i,f=t.center.slice(n,o),p=Array.from({length:f.length},(w,v)=>n+v),g=t.stickyIndices.filter(w=>w<n);if(g.length>0){let w=g.map(v=>t.center[v]);b-=w.reduce((v,N)=>v+N.state.width,0),f=[...w,...f],p=[...g,...p];}let y=new Map;for(let w of t.stickyIndices){let v=t.centerStickyOffsets[w];v!==null&&y.set(t.center[w].state.id,v);}return {centerColumns:f,centerIndices:p,leadingSpacer:Math.max(0,b),trailingSpacer:m,rowStart:e.rows.start,rowEnd:e.rows.end,stickyInsets:y}}function mr(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 fr(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 wr=createContext(getGridDictionary("en"));function Yn({locale:t,messages:e,children:n}){let o=useMemo(()=>getGridDictionary(t,e),[t,e]);return jsx(wr.Provider,{value:o,children:n})}function J(){return useContext(wr)}function _e(t,e){let n=t;for(let[o,l]of Object.entries(e))n=n.replace(`{${o}}`,String(l));return n}var rn=ht(getGridDictionary("en"));function ht(t){return {sum:t.summarySum,avg:t.summaryAvg,min:t.summaryMin,max:t.summaryMax,count:t.summaryCount,countDistinct:t.summaryDistinct,custom:t.summaryCustom}}function ot(t,e=rn){return t.label??e[t.type]}var fi=new Set(["sum","avg","min","max"]);function rt(t,e,n){if(t.valueFormatter)return t.valueFormatter(e??null);if(e==null)return "\u2014";if(!fi.has(t.type))return e.toLocaleString();if(n?.dataType==="date"){let o=new Date(e);return n.valueFormatter?n.valueFormatter(o,{}):o.toLocaleDateString()}return n?.valueFormatter?n.valueFormatter(e,{}):String(Math.round(e*100)/100)}function qn(t){switch(t){case "number":return ["sum","avg","min","max","count","countDistinct"];case "date":return ["min","max","count","countDistinct"];default:return ["count","countDistinct"]}}var ln=36,sn=28,bt=60,xi=[["rowNumberColumn",bt],["detailColumn",sn],["checkboxColumn",ln]];function Zn(t,e,n=false){return Be({checkboxColumn:t,detailColumn:e,rowNumberColumn:n}).total}function Be(t){let e=new Map,n=new Map,o=0,l=0;for(let[i,d]of xi)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 Xn(t){return t?t.kind==="draw"?" kanuni-datagrid-cell--span":" kanuni-datagrid-cell--span-covered":""}function Jn(t,e,n){return t?t.kind==="covered"?e?n():null:jsx("div",{className:"kanuni-datagrid-span-box",style:{height:t.height},children:n()}):n()}function jn(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 an(t,e){if(e===""||t==="")return t;let n=t.toLowerCase(),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 vi(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 an(l,o);if(t.valueFormatter){let i=t.valueFormatter(e,n.data);return typeof i=="string"?an(i,o):i}return t.dateFormat&&t.dataType==="date"?an(formatDateValue(e,t.dateFormat),o):e==null?"":an(String(e),o)}function Ti({gridId:t,node:e,index:n,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:m,leadingSpacer:b,trailingSpacer:f,striped:p,selected:g,focusedColumnId:y,rowFocused:w=false,renderRow:v,checkboxColumn:N,rowNumberColumn:I=false,rowNumber:R=null,getNote:k,getSpan:G,headerRowCount:L,onRowClick:F,onRowMouseDown:B,onRowDoubleClick:h,onToggleSelect:P,onCellMouseDown:D,onRowContextMenu:Y,searchNeedle:u="",onToggleGroup:T,summaryDefs:H,detailColumn:W=false,detailExpanded:Q=false,onToggleDetail:se,onToggleTreeRow:Ue,renderDetail:ve,renderEditForm:ue,renderCellContent:he,getCellClassName:ye,onCellPointerDown:Te,onCellPointerEnter:Ge,onCellDoubleClick:Me,rowDrag:ne,dropSide:$e=null,height:We}){let re=J();if(isDetailRow(e))return jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-detail-row",role:"row","aria-rowindex":n+1+L,"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:ve?.(e.data)})});if(isEditFormRow(e))return jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-editform-row",role:"row","aria-rowindex":n+1+L,"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:ue?.(e.parentKey,e.data)})});if(isFillerRow(e))return null;if(isGroupRow(e)){let S=l.getDef(e.columnId)?.headerName??e.columnId,U=e.aggregates??null;return jsx("div",{className:`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${e.level}${y?" kanuni-datagrid-group-row--focused":""}`,role:"row","aria-rowindex":n+1+L,"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:()=>T?.(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:[jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:e.expanded?"\u25BE":"\u25B8"}),jsxs("span",{className:"kanuni-datagrid-group-caption",children:[S,":"]}),jsx("span",{className:"kanuni-datagrid-group-label",children:e.label===""?"(Blanks)":e.label}),jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",e.count,")"]}),U&&H?.map(_=>jsxs("span",{className:"kanuni-datagrid-group-aggregate",children:[jsxs("span",{className:"kanuni-datagrid-group-aggregate-label",children:[ot(_)," ",l.getDef(_.columnId)?.headerName??_.columnId,":"]})," ",rt(_,U[summaryKey(_.columnId,_.type)],l.getDef(_.columnId))]},summaryKey(_.columnId,_.type)))]})})}let ce=[],pe=Be({rowNumberColumn:I,detailColumn:W,checkboxColumn:N}),Oe=pe.count,de=(S,U)=>({node:e,columnId:S,rowIndex:n,columnIndex:U,value:l.getCellValue(e.data,S)}),s=(S,U)=>{let _=()=>de(S,U);return {role:"gridcell",id:`${t}-cell-${String(e.key)}-${S}`,"aria-colindex":Oe+U+1,"data-column-id":S,onMouseDown:X=>{D?.(e,S),Te?.(_(),X);},onMouseEnter:Ge?X=>Ge(_(),X):void 0,onDoubleClick:Me?()=>Me(_()):void 0}},C=e.kind==="data"?e.tree:void 0,M=C?(o.left[0]??o.center[0]??o.right[0])?.state.id??null:null,z=(S,U,_)=>{if(he){let r=he(de(U,_));if(r!==void 0)return r}let X=vi(S,l.getCellValue(e.data,U),e,u);return C&&U===M?jsxs("span",{className:C.ancestorOnly?"kanuni-datagrid-tree-cell kanuni-datagrid-tree-cell--ancestor":"kanuni-datagrid-tree-cell",style:{paddingInlineStart:C.depth*16},children:[C.hasChildren?jsx("button",{type:"button",className:"kanuni-datagrid-tree-toggle","data-tree-toggle":"","aria-expanded":C.expanded,"aria-label":C.expanded?re.collapseDetails:re.expandDetails,onClick:r=>{r.stopPropagation(),Ue?.(e.key);},children:C.expanded?"\u25BE":"\u25B8"}):jsx("span",{className:"kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf"}),X]}):X},E=(S,U)=>{if(!ye)return "";let _=ye(de(S,U));return _?` ${_}`:""},oe=S=>!k||e.kind!=="data"?"":k(e.key,S,e.data)?" kanuni-datagrid-cell--noted":"",me=S=>G&&e.kind==="data"?G(n,S):null,ae=(S,U)=>{let _=S.autoHeight?" kanuni-datagrid-cell--wrap":"";return S.cellClassName?_+ke(S,U):_},ke=(S,U)=>{let _=S.cellClassName;if(!_)return "";if(typeof _=="string")return ` ${_}`;let X=e.data,r=_({value:l.getCellValue(X,U),row:X,node:e,column:S});return r?` ${r}`:""};if(I){let S=e.kind==="data"&&R!==null;ce.push(jsx("div",{role:"gridcell","aria-colindex":pe.colIndex("rowNumberColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell",style:{width:bt,insetInlineStart:pe.inset("rowNumberColumn")},children:S?R:""},"__rownum"));}W&&ce.push(jsx("div",{role:"gridcell","aria-colindex":pe.colIndex("detailColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell",style:{width:sn,insetInlineStart:pe.inset("detailColumn")},children:jsx("button",{type:"button",className:"kanuni-datagrid-detail-toggle",tabIndex:-1,"aria-expanded":Q,"aria-label":Q?re.collapseDetails:re.expandDetails,onClick:S=>{S.stopPropagation(),se?.(e.key);},children:Q?"\u25BE":"\u25B8"})},"__detail")),N&&ce.push(jsx("div",{role:"gridcell","aria-colindex":pe.colIndex("checkboxColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell",style:{width:ln,insetInlineStart:pe.inset("checkboxColumn")},onMouseDown:S=>S.stopPropagation(),onClick:S=>{S.target.tagName!=="INPUT"&&(S.stopPropagation(),P?.(e));},children:jsx("input",{type:"checkbox",checked:g,tabIndex:-1,"aria-label":_e(re.selectRowAria,{row:String(e.key)}),onChange:()=>P?.(e),onClick:S=>S.stopPropagation(),onMouseDown:S=>S.stopPropagation()})},"__select"));let te=pe.total,A=S=>y===S?" kanuni-datagrid-cell--focused":"",Le={left:o.left.length,center:o.center.length};return o.left.forEach((S,U)=>{let _=S.def,X=U===o.left.length-1,r=S.state.id,le=on("left",U,Le);ce.push(jsx("div",{...s(r,le),className:`${jn(_.align,_.dataType)} kanuni-datagrid-cell--pinned${X?" kanuni-datagrid-pin-edge-left":""}${A(r)}${ae(_,r)}${E(r,le)}${oe(r)}${Xn(me(r))}`,style:{width:S.state.width,insetInlineStart:o.leftOffsets[U]+te},children:Jn(me(r),y===r,()=>z(_,r,le))},r));}),b>0&&ce.push(jsx("div",{className:"kanuni-datagrid-spacer",style:{width:b}},"__lead")),i.forEach((S,U)=>{let _=S.def,X=S.state.id,r=on("center",d?.[U]??U,Le),le=m?.get(X),kt=le===void 0?"":" kanuni-datagrid-cell--pinned kanuni-datagrid-cell--sticky";ce.push(jsx("div",{...s(X,r),className:`${jn(_.align,_.dataType)}${kt}${A(X)}${ae(_,X)}${E(X,r)}${oe(X)}${Xn(me(X))}`,style:le===void 0?{width:S.state.width}:{width:S.state.width,insetInlineStart:le+te},children:Jn(me(X),y===X,()=>z(_,X,r))},X));}),f>0&&ce.push(jsx("div",{className:"kanuni-datagrid-spacer",style:{width:f}},"__trail")),o.right.forEach((S,U)=>{let _=S.def,X=U===0,r=S.state.id,le=on("right",U,Le);ce.push(jsx("div",{...s(r,le),className:`${jn(_.align,_.dataType)} kanuni-datagrid-cell--pinned${X?" kanuni-datagrid-pin-edge-right":""}${A(r)}${ae(_,r)}${E(r,le)}${oe(r)}${Xn(me(r))}`,style:{width:S.state.width,insetInlineEnd:o.rightOffsets[U]},children:Jn(me(r),y===r,()=>z(_,r,le))},r));}),jsxs("div",{className:`kanuni-datagrid-row${p&&n%2===1?" kanuni-datagrid-row--odd":""}${g?" kanuni-datagrid-row--selected":""}${w?" kanuni-datagrid-row--focused":""}${$e?` kanuni-datagrid-row--drop-${$e}`:""}`,role:"row","aria-rowindex":n+1+L,"aria-selected":g,"data-row-key":String(e.key),style:We===void 0?void 0:{height:We},draggable:ne?.draggable?true:void 0,onDragStart:ne?S=>ne.onDragStart(e,S):void 0,onDragEnd:ne?()=>ne.onDragEnd():void 0,onDragOver:ne?S=>ne.onDragOver(e,S):void 0,onDrop:ne?S=>ne.onDrop(e,S):void 0,onMouseDown:B?S=>B(e,S):void 0,onClick:F?S=>F(e,n,S):void 0,onDoubleClick:h?S=>h(e,n,S):void 0,onContextMenu:Y?S=>Y(e,n,S):void 0,children:[ne&&jsx("span",{className:"kanuni-datagrid-row-grip","data-testid":"dg-row-grip","aria-hidden":"true",title:re.dragToReorder,onMouseEnter:()=>ne.setDraggable(true),onMouseLeave:()=>ne.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"})]})})}),v?v({row:e.data,node:e,rowIndex:n,selected:g,focused:w}):ce]})}var Mt=memo(Ti);var yt=26;function Qn(t,e){return computeHeaderBands(t,e)}function eo(t,e=""){return `kanuni-datagrid-band-cell${t.spacer?" kanuni-datagrid-band-cell--spacer":""}${e}`}function to(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:l?"\u25B8":"\u25BE"}),n]})}function Gi({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:o,depth:l,checkboxColumn:i=false,detailColumn:d=false,rowNumberColumn:m=false,rowHeight:b=yt,bandFold:f}){if(l<=0)return null;let p=Be({rowNumberColumn:m,detailColumn:d,checkboxColumn:i}).total,g=Qn(t.left,l),y=Qn(e,l),w=Qn(t.right,l),v=(N,I,R)=>{let k=R;for(let G=0;G<I;G++)k+=N[G].width;return k};return jsx(Fragment,{children:Array.from({length:l},(N,I)=>jsxs("div",{className:"kanuni-datagrid-band-row",role:"row","aria-rowindex":I+1,style:{width:t.totalWidth+p,height:b,top:I*b},children:[p>0&&jsx("div",{className:"kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned",style:{width:p,insetInlineStart:0},"aria-hidden":"true"}),(g[I]??[]).map((R,k)=>jsx("div",{className:eo(R,` kanuni-datagrid-band-cell--pinned${k===(g[I]?.length??0)-1?" kanuni-datagrid-pin-edge-left":""}`),role:R.spacer?"presentation":"columnheader","aria-colspan":R.spacer?void 0:R.columnIds.length,style:{width:R.width,insetInlineStart:v(g[I]??[],k,p)},title:R.spacer?void 0:R.label,children:to(R,f)},R.columnIds[0])),n>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),(y[I]??[]).map(R=>jsx("div",{className:eo(R),role:R.spacer?"presentation":"columnheader","aria-colspan":R.spacer?void 0:R.columnIds.length,style:{width:R.width},title:R.spacer?void 0:R.label,children:to(R,f)},R.columnIds[0])),o>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:o}}),(w[I]??[]).map((R,k)=>{let G=w[I]??[],L=0;for(let F=k+1;F<G.length;F++)L+=G[F].width;return jsx("div",{className:eo(R,` kanuni-datagrid-band-cell--pinned${k===0?" kanuni-datagrid-pin-edge-right":""}`),role:R.spacer?"presentation":"columnheader","aria-colspan":R.spacer?void 0:R.columnIds.length,style:{width:R.width,insetInlineEnd:L},title:R.spacer?void 0:R.label,children:to(R,f)},R.columnIds[0])})]},I))})}var no=memo(Gi);var Ei=()=>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 Ni(t,e){return t.renderHeader?t.renderHeader({column:t}):t.headerName??t.field??e}function Pi({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:o,leadingSpacer:l,trailingSpacer:i,sort:d,sortable:m,onSort:b,headerFilter:f=false,filteredColumns:p,onOpenFilter:g,filterIconMode:y="hover",checkboxColumn:w=false,detailColumn:v=false,rowNumberColumn:N=false,rowNumberHeader:I="#",selectAllState:R="none",onToggleSelectAll:k,draggable:G=false,reorderable:L=false,onReorder:F,resizable:B=false,onResize:h,onAutoFit:P,onHeaderContextMenu:D}){let Y=J(),u=Be({rowNumberColumn:N,detailColumn:v,checkboxColumn:w}),T=new Map(d.map((s,C)=>[s.columnId,{direction:s.direction,order:C}])),H=new Set(p??[]),W=[...n.left.map(s=>s.state.id),...o.map(s=>s.state.id),...n.right.map(s=>s.state.id)],[Q,se]=useState(null),Ue=Q&&W.includes(Q)?Q:W[0],ve=s=>{se(s),document.querySelector(`[data-column-id="${s}"].kanuni-datagrid-header-cell`)?.focus();},ue=s=>{let C=W.indexOf(Ue),M=Math.min(W.length-1,Math.max(0,C+s));M!==C&&ve(W[M]);},he=useRef(null),ye=useRef(false),[Te,Ge]=useState(null),Me=W,ne=s=>[...n.left,...n.center,...n.right].find(C=>C.state.id===s)?.state.pinned??null,$e=(s,C)=>(ye.current?s>C.left+C.width/2:s<C.left+C.width/2)?"before":"after",We=(s,C)=>{let M=he.current;if(!L||!M||M===s||ne(M)!==ne(s))return;C.preventDefault(),C.dataTransfer.dropEffect="move";let z=$e(C.clientX,C.currentTarget.getBoundingClientRect());Ge(E=>E?.id===s&&E.side===z?E:{id:s,side:z});},re=(s,C)=>{let M=he.current;if(Ge(null),!L||!M||M===s||ne(M)!==ne(s))return;if(C.preventDefault(),C.stopPropagation(),$e(C.clientX,C.currentTarget.getBoundingClientRect())==="before")F?.(M,s);else {let E=Me[Me.indexOf(s)+1];F?.(M,E===M?Me[Me.indexOf(s)+2]:E);}he.current=null;},[ce,pe]=useState(null),Oe=(s,C)=>{if(!B)return;C.preventDefault(),C.stopPropagation();let M=C.currentTarget,z=C.clientX,E=s.state.width,oe=ye.current?-1:1,me=s.state.id;pe(me),M.setPointerCapture(C.pointerId);let ae=E,ke=false,te=Le=>{ke=true,ae=E+(Le.clientX-z)*oe,h?.(me,ae,false);},A=()=>{M.releasePointerCapture?.(C.pointerId),M.removeEventListener("pointermove",te),M.removeEventListener("pointerup",A),M.removeEventListener("pointercancel",A),ke&&h?.(me,ae,true),pe(null);};M.addEventListener("pointermove",te),M.addEventListener("pointerup",A),M.addEventListener("pointercancel",A);},de=(s,C,M)=>{let z=s.def,E=s.state.id,oe=m&&z.sortable!==false,me=f&&z.filterable!==false,ae=T.get(E),ke=G&&z.groupable!==false||L&&z.reorderable!==false,te=Te?.id===E?Te.side:null;return jsxs("div",{className:`kanuni-datagrid-header-cell${C}${oe?" kanuni-datagrid-header-cell--sortable":""}${te?` kanuni-datagrid-header-cell--drop-${te}`:""}${ce===E?" kanuni-datagrid-header-cell--resizing":""}`,style:M,role:"columnheader","aria-sort":ae?ae.direction==="asc"?"ascending":"descending":"none","data-column-id":E,tabIndex:E===Ue?0:-1,onFocus:()=>se(E),draggable:ke&&ce===null,onDragStart:A=>{A.dataTransfer.setData("text/x-kanuni-column",E),A.dataTransfer.effectAllowed="move",he.current=E,ye.current=getComputedStyle(A.currentTarget).direction==="rtl";},onDragEnd:()=>{he.current=null,Ge(null);},onDragOver:L?A=>We(E,A):void 0,onDragLeave:L?()=>Ge(A=>A?.id===E?null:A):void 0,onDrop:L?A=>re(E,A):void 0,onContextMenu:D?A=>D(E,A):void 0,onClick:oe?A=>b(E,A.shiftKey):void 0,onKeyDown:A=>{A.key==="ArrowRight"?(A.preventDefault(),ue(1)):A.key==="ArrowLeft"?(A.preventDefault(),ue(-1)):A.key==="Home"?(A.preventDefault(),ve(W[0])):A.key==="End"?(A.preventDefault(),ve(W[W.length-1])):me&&A.altKey&&A.key==="ArrowDown"?(A.preventDefault(),g?.(E,A.currentTarget)):oe&&(A.key==="Enter"||A.key===" ")&&(A.preventDefault(),b(E,A.shiftKey));},children:[jsx("span",{className:"kanuni-datagrid-header-label",children:Ni(z,E)}),ae&&jsx("span",{className:"kanuni-datagrid-sort-indicator","aria-hidden":"true",children:ae.direction==="asc"?"\u25B2":"\u25BC"}),ae&&d.length>1&&jsx("span",{className:"kanuni-datagrid-sort-order","aria-hidden":"true",children:ae.order+1}),f&&z.filterable!==false&&jsx("button",{type:"button",className:`kanuni-datagrid-filter-button${H.has(E)?" kanuni-datagrid-filter-button--active":""}${y==="always"?" kanuni-datagrid-filter-button--pinned":""}`,"aria-label":_e(Y.filterColumnAria,{column:z.headerName??E}),"aria-haspopup":"dialog","data-filter-button":E,tabIndex:-1,onClick:A=>{A.stopPropagation(),g?.(E,A.currentTarget);},children:jsx(Ei,{})}),B&&z.resizable!==false&&jsx("span",{className:"kanuni-datagrid-resize-handle","data-resize-handle":E,role:"presentation",onPointerDown:A=>Oe(s,A),onDoubleClick:A=>{A.stopPropagation(),P?.(E);},onClick:A=>A.stopPropagation()})]},E)};return jsxs("div",{className:"kanuni-datagrid-header",role:"row","aria-rowindex":Math.round(t/yt)+1,style:{width:n.totalWidth+u.total,top:t||void 0},children:[N&&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":Y.rowNumberAria,style:{width:bt,insetInlineStart:u.inset("rowNumberColumn")},children:I??""}),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":Y.detailsAria,style:{width:sn,insetInlineStart:u.inset("detailColumn")}}),w&&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:ln,insetInlineStart:u.inset("checkboxColumn")},children:jsx("input",{type:"checkbox",checked:R==="all",ref:s=>{s&&(s.indeterminate=R==="some");},"aria-label":Y.selectAllRows,onChange:()=>k?.()})}),n.left.map((s,C)=>de(s,` kanuni-datagrid-header-cell--pinned${C===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:s.state.width,insetInlineStart:n.leftOffsets[C]+u.total})),l>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),o.map(s=>{let C=e?.get(s.state.id);return C===void 0?de(s,"",{width:s.state.width}):de(s," kanuni-datagrid-header-cell--pinned kanuni-datagrid-cell--sticky",{width:s.state.width,insetInlineStart:C+u.total})}),i>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((s,C)=>de(s,` kanuni-datagrid-header-cell--pinned${C===0?" kanuni-datagrid-pin-edge-right":""}`,{width:s.state.width,insetInlineEnd:n.rightOffsets[C]}))]})}var ro=memo(Pi);var Li=[">=","<=","<>",">","<","="];function dn(t,e,n){let o=e.trim();if(o==="")return null;for(let l of Li)if(o.startsWith(l)){let i=o.slice(l.length).trim();if(i==="")return null;let d=n==="number"?Number(i):Number.NaN;return {columnId:t,operator:l,value:Number.isNaN(d)?i:d}}if(n==="number"){let l=Number(o);return Number.isNaN(l)?{columnId:t,operator:"contains",value:o}:{columnId:t,operator:"=",value:l}}if(n==="boolean"){let l=o.toLowerCase();return l==="true"||l==="false"?{columnId:t,operator:"=",value:l==="true"}:{columnId:t,operator:"contains",value:o}}return n==="date"?{columnId:t,operator:"contains",value:o}:{columnId:t,operator:"contains",value:o}}function ao(t,e,n){if(!e||isFilterGroup(e))return null;let o=e.value;if(o==null||typeof o=="object")return null;let l=e.operator==="contains"||e.operator==="="&&n!==void 0?String(o):`${e.operator}${String(o)}`,i=dn(t,l,n);return !i||isFilterGroup(i)||i.operator!==e.operator||i.value!==o?null:l}function io(t,e,n=[]){let o=null,l=new Set,i=d=>{if(l.has(d)||(l.add(d),e.isPending(d)))return;let m=e.textFor(d);if(m===null)return;let b=t[d]??"";b!==m&&(b===""&&m===""||(o??={...t},o[d]=m));};for(let d of Object.keys(t))i(d);for(let d of n)i(d);return o??t}function Ii({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:o,leadingSpacer:l,trailingSpacer:i,values:d,checkboxColumn:m=false,detailColumn:b=false,rowNumberColumn:f=false,placeholder:p,onChange:g,onCommit:y}){let w=J(),v=Be({rowNumberColumn:f,detailColumn:b,checkboxColumn:m}),N=p??w.filterPlaceholder,I=(R,k,G)=>{let L=R.state.id,F=R.def.filterable!==false;return jsx("div",{className:`kanuni-datagrid-filter-cell${k}`,style:G,"data-column-id":L,children:F&&jsx("input",{className:"kanuni-datagrid-filter-input",type:"text",value:d[L]??"",placeholder:N,"aria-label":_e(w.filterColumnAria,{column:R.def.headerName??L}),"data-filter-for":L,onChange:B=>g(L,B.target.value),onKeyDown:B=>{B.key==="Enter"&&y?.(L,B.target.value);},onBlur:B=>y?.(L,B.target.value)})},L)};return jsxs("div",{className:"kanuni-datagrid-filter-row",role:"row","aria-rowindex":2,style:{width:n.totalWidth+v.total,"--dg-band-offset":`${t}px`},children:[v.total>0&&jsx("div",{className:"kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned",style:{width:v.total,insetInlineStart:0}}),n.left.map((R,k)=>I(R,` kanuni-datagrid-filter-cell--pinned${k===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:R.state.width,insetInlineStart:n.leftOffsets[k]+v.total})),l>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),o.map(R=>{let k=e?.get(R.state.id);return k===void 0?I(R,"",{width:R.state.width}):I(R," kanuni-datagrid-filter-cell--pinned kanuni-datagrid-cell--sticky",{width:R.state.width,insetInlineStart:k+v.total})}),i>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((R,k)=>I(R,` kanuni-datagrid-filter-cell--pinned${k===0?" kanuni-datagrid-pin-edge-right":""}`,{width:R.state.width,insetInlineEnd:n.rightOffsets[k]}))]})}var lo=memo(Ii);var so={compact:24,normal:28,comfortable:36},Ai=["quartz","balham","material","alpine","kanuni","kanuni-midnight"],uo={quartz:{compact:26,normal:36,comfortable:44},balham:{compact:20,normal:25,comfortable:32},material:{compact:32,normal:40,comfortable:52},alpine:{compact:26,normal:34,comfortable:42},kanuni:{compact:24,normal:32,comfortable:40},"kanuni-midnight":{compact:24,normal:32,comfortable:40}},Oi=["nord","dracula","solarized","gruvbox","catppuccin","tokyo-night"];function It(t,e,n){let o="";return t&&(o+=` kanuni-datagrid-theme-${t}`),n&&(o+=` kanuni-datagrid-palette-${n}`),e&&(o+=` kanuni-datagrid-density-${e}`),o}var vr=createContext("");function co({theme:t,density:e,palette:n,children:o}){let l=useMemo(()=>It(t,e,n),[t,e,n]);return jsx(vr.Provider,{value:l,children:o})}function po(){return useContext(vr)}function He({children:t,dark:e=false}){let[n,o]=useState(null),l=po();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 Ht({anchor:t,onClose:e,margin:n=8,autoFocus:o=false}){let l=useRef(null),[i,d]=useState(t),m=useCallback(b=>{if(l.current=b,!b)return;let f=b.getBoundingClientRect(),p=t.top+f.height+n>window.innerHeight,g=t.top-f.height-n*2,y=p&&g>n?g:t.top;d({left:Math.max(n,Math.min(t.left,window.innerWidth-f.width-n)),top:Math.max(n,Math.min(y,window.innerHeight-f.height-n))}),o&&b.focus();},[t.left,t.top,n,o]);return useEffect(()=>{let b=g=>{let y=l.current;y&&!y.contains(g.target)&&e();},f=g=>{g.key==="Escape"&&e();},p=g=>{let y=l.current,w=g.target;y&&w instanceof Node&&y.contains(w)||e();};return document.addEventListener("mousedown",b),document.addEventListener("keydown",f),window.addEventListener("scroll",p,true),()=>{document.removeEventListener("mousedown",b),document.removeEventListener("keydown",f),window.removeEventListener("scroll",p,true);}},[e]),{position:i,ref:m,elementRef:l}}var pn=25,At=new Map,Tr=200,Ji=200,kr=8;function ji(t){let e=J();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 Zi=memo(function({label:e,display:n,index:o,active:l,checked:i,onToggle:d,onFocus:m}){return jsxs("div",{role:"option","aria-selected":i,tabIndex:0,className:`kanuni-datagrid-filter-item${l?" kanuni-datagrid-filter-item--active":""}`,"data-value":e,"data-index":o,onFocus:()=>m(o),onClick:()=>d(e),children:[jsx("input",{type:"checkbox",readOnly:true,checked:i,tabIndex:-1}),jsx("span",{children:n})]})});function go({gridId:t,columnId:e,headerLabel:n,entries:o,initialSelected:l,anchor:i,loading:d=false,dark:m,onApply:b,onClose:f,truncated:p=false,onSearch:g,labels:y}){let w=ji(y),[v,N]=useState(""),[I,R]=useState(0),[k,G]=useState(()=>new Set(l??o.map(s=>s.label))),[L,F]=useState(false),B=useRef(null),h=useRef(null),[P,D]=useState(0),[Y,u]=useState(240),T=`${t??""}:${e}`,H=At.get(T),W=useRef(H?.scrollTop??null),[Q,se]=useState(H&&H.width&&H.height?{width:H.width,height:H.height}:null),Ue=useCallback(s=>{B.current=s,s?.focus();},[]),ve=useRef(null),ue=useMemo(()=>{let s=v.trim().toLowerCase();if(!s||p)return o;let C=ve.current;(!C||C.entries!==o)&&(C={entries:o,lowered:o.map(z=>z.label.toLowerCase()),needle:"",result:[]},ve.current=C);let M=C.needle!==""&&s.includes(C.needle)?C.result.filter(z=>z.label.toLowerCase().includes(s)):o.filter((z,E)=>C.lowered[E].includes(s));return C.needle=s,C.result=M,M},[o,v,p]);useEffect(()=>{if(!g)return;let s=setTimeout(()=>g(v),150);return ()=>clearTimeout(s)},[v,g]),useEffect(()=>{L||l||G(new Set(o.map(s=>s.label)));},[o,L,l]);let he=useCallback(s=>{h.current=s,s&&u(s.clientHeight||240);},[]);useEffect(()=>{let s=h.current;!s||W.current===null||d||s.scrollHeight<=s.clientHeight||(s.scrollTop=W.current,W.current=null,D(s.scrollTop));});let ye=useMemo(()=>{let s=ue.length,C=Math.max(0,Math.floor(P/pn)-kr),M=Math.ceil(Y/pn)+kr*2,z=Math.min(C,Math.max(0,s-1)),E=Math.min(s,z+M);return {start:z,end:E,count:s,rows:ue.slice(z,E)}},[ue,P,Y]),Te=Ht({anchor:i,onClose:f}),[Ge,Me]=useState(null),ne=(Ge??Te.position.left)+(Q?.width??260)+48<window.innerWidth?"right":"left",$e=s=>{s.preventDefault(),s.stopPropagation();let C=Te.elementRef.current;if(!C)return;let M=C.getBoundingClientRect(),z=ne,E={x:s.clientX,y:s.clientY,w:M.width,h:M.height,left:M.left},oe=null,me=ke=>{let te=ke.clientX-E.x,A=ke.clientY-E.y,Le=window.innerHeight-M.top-12,S=Math.min(Le,Math.max(Ji,E.h+A));if(z==="right"){let U=window.innerWidth-E.left-12;oe={width:Math.min(U,Math.max(Tr,E.w+te)),height:S},se(oe);}else {let U=E.left+E.w,_=U-12,X=Math.min(_,Math.max(Tr,E.w-te));oe={width:X,height:S},se(oe),Me(U-X);}h.current&&u(h.current.clientHeight);},ae=()=>{if(window.removeEventListener("pointermove",me),window.removeEventListener("pointerup",ae),oe){let ke=At.get(T);At.set(T,{scrollTop:ke?.scrollTop??h.current?.scrollTop??0,width:Math.round(oe.width),height:Math.round(oe.height)});}};window.addEventListener("pointermove",me),window.addEventListener("pointerup",ae);},We=useCallback(s=>{F(true),G(C=>{let M=new Set(C);return M.has(s)?M.delete(s):M.add(s),M});},[]),re=useCallback(s=>R(s),[]),ce=()=>{if(d)return;if(k.size===o.length){b(null);return}let s=o.filter(E=>k.has(E.label)),C=s.some(E=>E.value===null||E.value===void 0),M=s.filter(E=>E.value!==null&&E.value!==void 0),z;M.length===0?z={columnId:e,operator:"isnull"}:C?z={logic:"or",nodes:[{columnId:e,operator:"in",value:M.map(E=>E.value)},{columnId:e,operator:"isnull"}]}:z={columnId:e,operator:"in",value:M.map(E=>E.value)},b(z);},pe=s=>{let C=Math.max(0,Math.min(ue.length-1,s));R(C);let M=Te.elementRef.current?.querySelector(`.kanuni-datagrid-filter-item[data-index="${C}"]`);M?.focus(),M?.scrollIntoView({block:"nearest"});},Oe=s=>s.key.length===1&&!s.ctrlKey&&!s.metaKey&&!s.altKey,de=s=>{let C=s.target===B.current;if(s.key==="Backspace"&&!C){s.preventDefault(),B.current?.focus(),N(M=>M.slice(0,-1)),R(0);return}if(s.key==="ArrowDown"){s.preventDefault(),pe(C?0:I+1);return}if(s.key==="ArrowUp"){s.preventDefault(),pe(C?ue.length-1:I-1);return}if(!C&&(s.key==="Home"||s.key==="End")){s.preventDefault(),pe(s.key==="Home"?0:ue.length-1);return}if(s.key===" "&&!C){s.preventDefault();let M=ue[I];M&&We(M.label);return}if(s.key==="Enter"){s.preventDefault(),ce();return}!C&&Oe(s)&&s.key!==" "&&(s.preventDefault(),B.current?.focus(),N(M=>M+s.key),R(0));};return jsx(He,{dark:m,children:jsxs("div",{ref:Te.ref,className:"kanuni-datagrid-filter-popup",style:{left:Ge??Te.position.left,top:Te.position.top,...Q?{width:Q.width,height:Q.height,maxHeight:"none"}:null},role:"dialog","aria-label":`${n} filter`,onKeyDown:de,children:[jsx("div",{className:`kanuni-datagrid-popup-resize kanuni-datagrid-popup-resize--${ne}`,"data-testid":"dg-filter-resize",onPointerDown:$e}),jsx("input",{ref:Ue,className:"kanuni-datagrid-filter-search",type:"search",placeholder:w.search,value:v,onChange:s=>{N(s.target.value),R(0);},"data-testid":"dg-filter-search"}),p&&jsx("p",{className:"kanuni-datagrid-filter-truncated","data-testid":"dg-filter-truncated",children:w.truncated}),jsxs("div",{className:"kanuni-datagrid-filter-actions",children:[jsx("button",{type:"button",onClick:()=>{F(true),G(new Set(o.map(s=>s.label)));},children:w.selectAll}),jsx("button",{type:"button",onClick:()=>{F(true),G(new Set);},children:w.clear})]}),jsxs("div",{ref:he,className:"kanuni-datagrid-filter-list",role:"listbox","aria-multiselectable":"true","aria-busy":d||void 0,"aria-setsize":ue.length,onScroll:s=>{let C=s.target.scrollTop;D(C),W.current=null;let M=At.get(T);At.set(T,{...M,scrollTop:C});},children:[d&&jsx("div",{className:"kanuni-datagrid-filter-empty",children:w.loading}),!d&&ue.length===0&&jsx("div",{className:"kanuni-datagrid-filter-empty",children:w.noMatch}),ye.count>0&&jsx("div",{style:{height:ue.length*pn,position:"relative"},children:jsx("div",{style:{transform:`translateY(${ye.start*pn}px)`},children:ye.rows.map((s,C)=>{let M=ye.start+C;return jsx(Zi,{label:s.label,display:s.label===""?w.blank:s.label,index:M,active:M===I,checked:k.has(s.label),onToggle:We,onFocus:re},s.label)})})})]}),jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsx("button",{type:"button",onClick:f,children:w.cancel}),jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:ce,disabled:d,"data-testid":"dg-filter-apply",children:w.apply})]})]})})}var wo="text/x-kanuni-column";function tl({columns:t,levels:e,onSetLevels:n,maxLevels:o=1,onExpandAll:l,onCollapseAll:i,emptyText:d}){let m=J(),b=d??m.groupPanelHint,[f,p]=useState(false),g=useRef(null),[y,w]=useState(null),v=h=>t.find(D=>D.state.id===h)?.def.headerName??h,N=h=>{if(!h||e.includes(h))return;let P=e.length>=o?e.slice(0,o-1):[...e];n([...P,h]);},I=h=>n(e.filter(P=>P!==h)),R=(h,P)=>{let D=e.filter(u=>u!==h),Y=Math.max(0,Math.min(D.length,P));n([...D.slice(0,Y),h,...D.slice(Y)]);},k=(h,P)=>{let D=h+P;D<0||D>=e.length||R(e[h],D);},G=(h,P)=>h<P.top+P.height/2?"before":"after",L=(h,P)=>{P.preventDefault(),P.stopPropagation();let D=G(P.clientY,P.currentTarget.getBoundingClientRect());w(null),p(false);let Y=g.current;if(g.current=null,Y){R(Y,D==="before"?h:h+1);return}let u=P.dataTransfer.getData(wo);if(!u||e.includes(u))return;if(e.length>=o){N(u);return}let T=D==="before"?h:h+1;n([...e.slice(0,T),u,...e.slice(T)]);},F=(h,P,D)=>{let Y=D.ctrlKey||D.metaKey;Y&&(D.key==="ArrowUp"||D.key==="ArrowLeft")?(D.preventDefault(),k(h,-1)):Y&&(D.key==="ArrowDown"||D.key==="ArrowRight")?(D.preventDefault(),k(h,1)):(D.key==="Delete"||D.key==="Backspace")&&(D.preventDefault(),I(P));},B=t.filter(h=>!e.includes(h.state.id));return jsxs("div",{className:`kanuni-datagrid-group-panel${f?" kanuni-datagrid-group-panel--over":""}`,onDragOver:h=>{h.preventDefault(),p(true);},onDragLeave:()=>p(false),onDrop:h=>{if(h.preventDefault(),p(false),w(null),g.current){g.current=null;return}N(h.dataTransfer.getData(wo));},children:[e.length>0?jsx("div",{className:"kanuni-datagrid-group-levels",children:e.map((h,P)=>jsx("div",{className:`kanuni-datagrid-group-level${y?.index===P?` kanuni-datagrid-group-level--drop-${y.side}`:""}`,style:{"--dg-group-level":P},"data-group-level":P,onDragOver:D=>{D.preventDefault(),D.stopPropagation();let Y=G(D.clientY,D.currentTarget.getBoundingClientRect());w(u=>u?.index===P&&u.side===Y?u:{index:P,side:Y});},onDragLeave:()=>w(D=>D?.index===P?null:D),onDrop:D=>L(P,D),children:jsxs("span",{className:"kanuni-datagrid-group-chip",draggable:o>1&&e.length>1,tabIndex:0,role:"button","aria-label":`${_e(m.groupLevelAria,{n:P+1})}: ${v(h)}`,onDragStart:D=>{g.current=h,D.dataTransfer.effectAllowed="move",D.dataTransfer.setData(wo,h);},onDragEnd:()=>{g.current=null,w(null);},onKeyDown:D=>F(P,h,D),children:[o>1&&jsx("span",{className:"kanuni-datagrid-group-chip-level",children:P+1}),v(h),jsx("button",{type:"button","aria-label":_e(m.groupRemoveAria,{column:v(h)}),onClick:()=>I(h),children:"\xD7"})]})},h))}):jsx("span",{className:"kanuni-datagrid-group-panel-hint",children:b}),jsxs("div",{className:"kanuni-datagrid-group-panel-actions",children:[e.length>0&&jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:l,children:"Expand all"}),jsx("button",{type:"button",onClick:i,children:"Collapse all"})]}),jsxs("label",{className:"kanuni-datagrid-group-select",children:[jsx("span",{className:"kanuni-datagrid-sr-only",children:o>1?m.groupAddLevel:m.groupByColumn}),o>1?jsxs("select",{value:"",disabled:B.length===0,onChange:h=>N(h.target.value),children:[jsx("option",{value:"",children:m.groupAddLevelButton}),B.map(h=>jsx("option",{value:h.state.id,children:h.def.headerName??h.state.id},h.state.id))]}):jsxs("select",{value:e[0]??"",onChange:h=>n(h.target.value?[h.target.value]:[]),children:[jsx("option",{value:"",children:m.groupNoGrouping}),t.map(h=>jsx("option",{value:h.state.id,children:h.def.headerName??h.state.id},h.state.id))]})]})]})]})}var ho=memo(tl);function al({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:o,defs:l,values:i,checkboxColumn:d=false,detailColumn:m=false,rowNumberColumn:b=false,onPickSummary:f,emptyHint:p="",position:g="bottom",bandOffset:y=0,headerRowsBetween:w=0}){let v=J(),N=ht(v),I=new Map(l.map(G=>[G.columnId,G])),R=Be({rowNumberColumn:b,detailColumn:m,checkboxColumn:d}).total,k=(G,L,F)=>{let B=G.state.id,h=I.get(B),P=h?i[summaryKey(h.columnId,h.type)]:void 0,D=G.def.dataType==="number";return jsx("div",{className:`kanuni-datagrid-footer-cell${L}${D?" kanuni-datagrid-footer-cell--number":""}${h?" kanuni-datagrid-footer-cell--active":""}`,style:F,role:"gridcell","data-column-id":B,"data-summary-type":h?.type??"",title:h?`${ot(h,N)} \u2014 ${G.def.headerName??B}`:void 0,onContextMenu:f?Y=>f(B,Y):void 0,onClick:f?Y=>f(B,Y):void 0,children:h?jsx("span",{className:"kanuni-datagrid-footer-value",children:rt(h,P,G.def)}):jsx("span",{className:"kanuni-datagrid-footer-hint",children:p})},B)};return jsxs("div",{className:`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${g}`,role:"row","aria-label":v.columnTotalsAria,style:{width:t.totalWidth+R,"--dg-band-offset":`${y}px`,"--dg-pinned-gap":String(w)},children:[R>0&&jsx("div",{className:"kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned",style:{width:R,insetInlineStart:0}}),t.left.map((G,L)=>k(G,` kanuni-datagrid-footer-cell--pinned${L===t.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:G.state.width,insetInlineStart:t.leftOffsets[L]+R})),n>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),e.map(G=>k(G,"",{width:G.state.width})),o>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:o}}),t.right.map((G,L)=>k(G,` kanuni-datagrid-footer-cell--pinned${L===0?" kanuni-datagrid-pin-edge-right":""}`,{width:G.state.width,insetInlineEnd:t.rightOffsets[L]}))]})}var mn=memo(al);function sl(t,e){return `__dg_pinned_${t}_${e}`}function dl({gridId:t,side:e,rows:n,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:m,leadingSpacer:b,trailingSpacer:f,checkboxColumn:p=false,detailColumn:g=false,rowNumberColumn:y=false,rowHeight:w,bandOffset:v=0,headerRowsBetween:N,ariaRowBase:I}){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(N)},children:n.map((R,k)=>{let G={kind:"data",key:sl(e,k),sourceIndex:-1,data:R};return jsx(Mt,{gridId:t,node:G,index:k,layout:o,columnModel:l,centerColumns:i,centerIndices:d,stickyInsets:m,leadingSpacer:b,trailingSpacer:f,striped:false,selected:false,focusedColumnId:null,checkboxColumn:p,detailColumn:g,rowNumberColumn:y,rowNumber:null,headerRowCount:I,height:w},G.key)})})}var fn=memo(dl);async function Ft(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 it({anchor:t,onClose:e,children:n,dark:o,className:l="",label:i,role:d="dialog"}){let m=Ht({anchor:t,onClose:e});return jsx(He,{dark:o,children:jsx("div",{ref:m.ref,className:`kanuni-datagrid-filter-popup ${l}`.trim(),style:{left:m.position.left,top:m.position.top},role:d,"aria-label":i,children:n})})}function fl(t){let e=J();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 gl=()=>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 wl({controller:t,search:e=true,exportCsv:n=true,exportExcel:o=false,exportPdf:l=false,columnChooser:i=true,dark:d,onOpenColumnChooser:m,itemsBefore:b,itemsAfter:f,searchDebounce:p=200,labels:g}){let y=fl(g),[w,v]=useState(t.getSearchText()),[N,I]=useState(null),[R,k]=useState(null),[G,L]=useState(null);useEffect(()=>{let P=setTimeout(()=>t.setSearchText(w),p);return ()=>clearTimeout(P)},[t,w,p]);let[F,B]=useState(()=>t.getSelectedCount());useEffect(()=>(B(t.getSelectedCount()),t.events.on("selectionChanged",()=>B(t.getSelectedCount()))),[t]);let h=async P=>{I(P),L(null);let D=await Ft(t,P);D.error?L(D.error):k(null),I(null);};return jsxs("div",{className:"kanuni-datagrid-toolbar",children:[b,e&&jsx("input",{type:"search",className:"kanuni-datagrid-toolbar-search",placeholder:y.search,value:w,"aria-label":y.search,"data-testid":"dg-toolbar-search",onChange:P=>v(P.target.value)}),jsx("div",{className:"kanuni-datagrid-toolbar-spacer"}),i&&jsx("button",{type:"button","aria-haspopup":"dialog","data-testid":"dg-column-chooser",onClick:P=>{let D=P.currentTarget.getBoundingClientRect();m?.({left:D.left,top:D.bottom+2});},children:y.columns}),(n||o||l)&&jsx("button",{type:"button",className:"kanuni-datagrid-toolbar-icon-button","aria-haspopup":"menu","aria-label":y.exportMenu,title:y.exportMenu,disabled:N!==null,"data-testid":"dg-export-menu",onClick:P=>{let D=P.currentTarget.getBoundingClientRect();k(R?null:{left:D.right-190,top:D.bottom+2});},children:N?jsx("span",{className:"kanuni-datagrid-toolbar-busy"}):jsx(gl,{})}),R&&jsxs(it,{anchor:R,onClose:()=>k(null),dark:d,role:"menu",label:y.exportMenu,className:"kanuni-datagrid-export-menu",children:[n&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:N!==null,"data-testid":"dg-export-csv",onClick:()=>h("csv"),children:N==="csv"?y.exporting:y.csv}),o&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:N!==null,"data-testid":"dg-export-excel",onClick:()=>h("excel"),children:N==="excel"?y.exporting:y.excel}),o&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:N!==null||F===0,"data-testid":"dg-export-excel-selected",onClick:()=>h("excel-selected"),children:N==="excel-selected"?y.exporting:y.excelSelected}),l&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:N!==null,"data-testid":"dg-export-pdf",onClick:()=>h("pdf"),children:N==="pdf"?y.exporting:y.pdf})]}),f,G&&jsx("span",{className:"kanuni-datagrid-toolbar-error",role:"alert",children:G})]})}var bo=memo(wl);function bl(t){let e=J();return useMemo(()=>({title:e.hiddenColumns,empty:e.noHiddenColumns,showAll:e.showAll,ok:e.ok,...t}),[e,t])}function yo({controller:t,columns:e,anchor:n,onClose:o,dark:l,labels:i}){let d=bl(i),m=e.filter(b=>!b.visible);return jsxs(it,{anchor:n,onClose:o,dark:l,label:d.title,className:"kanuni-datagrid-column-chooser",children:[jsxs("div",{className:"kanuni-datagrid-filter-list",children:[m.length===0&&jsx("div",{className:"kanuni-datagrid-chooser-empty",children:d.empty}),m.map(b=>{let f=t.getColumnModel().getDef(b.id);return jsxs("label",{className:"kanuni-datagrid-filter-item",children:[jsx("input",{type:"checkbox",checked:false,"data-column-toggle":b.id,onChange:()=>t.setColumnVisible(b.id,true)}),jsx("span",{children:f?.headerName??b.id})]},b.id)})]}),m.length>0&&jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsx("button",{type:"button",onClick:()=>m.forEach(b=>t.setColumnVisible(b.id,true)),children:d.showAll}),jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:o,children:d.ok})]})]})}function Cl(t){let e=J();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 xl({page:t,pageCount:e,pageSize:n,pageSizes:o=[25,50,100,250],totalRows:l,onPage:i,onNext:d,onPrevious:m,onPageSize:b,labels:f}){let p=Cl(f),g=t<=0,y=t>=e-1,w=l===0?0:t*n+1,v=Math.min(l,(t+1)*n);return jsxs("div",{className:"kanuni-datagrid-pager",role:"navigation","aria-label":"Pagination",children:[jsxs("label",{className:"kanuni-datagrid-pager-size",children:[jsx("span",{children:p.rowsPerPage}),jsx("select",{value:n,"data-testid":"dg-page-size",onChange:N=>b(Number(N.target.value)),children:o.map(N=>jsx("option",{value:N,children:N},N))})]}),jsxs("span",{className:"kanuni-datagrid-pager-range","data-testid":"dg-page-range",children:[w.toLocaleString(),"\u2013",v.toLocaleString()," ",p.of," ",l.toLocaleString()]}),jsxs("div",{className:"kanuni-datagrid-pager-buttons",children:[jsx("button",{type:"button","aria-label":p.first,disabled:g,onClick:()=>i(0),children:"\xAB"}),jsx("button",{type:"button","aria-label":p.previous,disabled:g,"data-testid":"dg-page-prev",onClick:m,children:"\u2039"}),jsxs("span",{className:"kanuni-datagrid-pager-current","data-testid":"dg-page-current",children:[p.page," ",t+1," ",p.of," ",e]}),jsx("button",{type:"button","aria-label":p.next,disabled:y,"data-testid":"dg-page-next",onClick:d,children:"\u203A"}),jsx("button",{type:"button","aria-label":p.last,disabled:y,onClick:()=>i(e-1),children:"\xBB"})]})]})}var Ro=memo(xl);function Sl(t){let e=J();return useMemo(()=>({clear:e.filterRemove,toggle:e.filterToggle,builder:e.filterEditBuilder,empty:e.filterNone,...t}),[e,t])}function El({controller:t,onOpenBuilder:e,alwaysVisible:n=false,describeOptions:o,labels:l}){let i=Sl(l),[,d]=useState(0);useEffect(()=>t.events.on("filterChanged",()=>d(p=>p+1)),[t]);let m=t.getEffectiveFilter(),b=t.isFilterEnabled(),f=describeFilter(m,t.getColumnModel(),o);return !m&&!n?null:jsxs("div",{className:`kanuni-datagrid-filter-panel${b?"":" 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:!m,"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:b,disabled:!m,title:i.toggle,"aria-label":i.toggle,"data-testid":"dg-filter-panel-toggle",onChange:p=>t.setFilterEnabled(p.target.checked)}),jsx("span",{className:"kanuni-datagrid-filter-panel-text",title:f??void 0,"data-testid":"dg-filter-panel-text",children:f??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 Co=memo(El);var hn=t=>!t.separator&&!t.disabled;function bn({x:t,y:e,items:n,context:o,onClose:l,dark:i=false,label:d}){let m=J(),b=useRef(null),[f,p]=useState({left:t,top:e}),[g,y]=useState(()=>n.findIndex(hn)),[w,v]=useState(null),[N,I]=useState(null),R=useRef(null),[k,G]=useState(null);useEffect(()=>I(null),[w]);let L=useCallback((u,T)=>{if(v(u),u===null||!T)return;let H=T.getBoundingClientRect();G({left:H.left,right:H.right,top:H.top});},[]),F=u=>b.current?.querySelector(`[data-item-index="${u}"]`)??null,B=useCallback(u=>{if(R.current=u,!u||!k)return;let T=8,H=u.getBoundingClientRect(),W=Math.max(T,Math.min(k.top-4,window.innerHeight-H.height-T)),se=k.right+H.width+T<=window.innerWidth?k.right:Math.max(T,k.left-H.width);I({left:se,top:W});},[k]),h=useCallback(u=>{if(b.current=u,!u)return;let T=u.getBoundingClientRect(),H=8;p({left:Math.max(H,Math.min(t,window.innerWidth-T.width-H)),top:Math.max(H,Math.min(e,window.innerHeight-T.height-H))}),u.focus();},[t,e]);useEffect(()=>{let u=H=>{let W=H.target;R.current?.contains(W)||b.current&&!b.current.contains(W)&&l();},T=()=>l();return document.addEventListener("mousedown",u),window.addEventListener("scroll",T,true),()=>{document.removeEventListener("mousedown",u),window.removeEventListener("scroll",T,true);}},[l]);let P=(u,T)=>{let H=n.length;for(let W=1;W<=H;W++){let Q=(u+T*W+H*H)%H;if(hn(n[Q]))return Q}return u},D=u=>{let T=n[u];if(!(!T||!hn(T))){if(T.items?.length){L(u,F(u));return}T.onSelect?.(o),l();}},Y=u=>{switch(u.key){case "ArrowDown":y(T=>P(T,1));break;case "ArrowUp":y(T=>P(T,-1));break;case "Home":y(n.findIndex(hn));break;case "End":y(P(0,-1));break;case "ArrowRight":if(n[g]?.items?.length)L(g,F(g));else return;break;case "ArrowLeft":if(w!==null)L(null);else return;break;case "Enter":case " ":D(g);break;case "Escape":l();break;case "Tab":l();return;default:return}u.preventDefault(),u.stopPropagation();};return jsxs(He,{dark:i,children:[jsx("div",{ref:h,className:"kanuni-datagrid-context-menu",role:"menu","aria-label":d??m.rowActions,tabIndex:-1,style:{left:f.left,top:f.top},onKeyDown:Y,children:n.map((u,T)=>u.separator?jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},u.id??`sep-${T}`):jsx("div",{className:"kanuni-datagrid-menu-row",children:jsxs("button",{type:"button",role:"menuitem",className:`kanuni-datagrid-menu-item${T===g?" kanuni-datagrid-menu-item--active":""}`,disabled:u.disabled,"data-item-index":T,"aria-haspopup":u.items?.length?"menu":void 0,"aria-expanded":u.items?.length?w===T:void 0,onMouseEnter:H=>{y(T),L(u.items?.length?T:null,H.currentTarget);},onClick:()=>D(T),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??T))}),w!==null&&n[w]?.items?.length?jsx("div",{ref:B,className:"kanuni-datagrid-context-menu kanuni-datagrid-submenu",style:N?{left:N.left,top:N.top}:{left:0,top:0,visibility:"hidden"},role:"menu",children:n[w].items.map((u,T)=>u.separator?jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},u.id??`sub-sep-${T}`):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??T))}):null]})}var Pl=typeof navigator<"u"&&/Mac|iPhone|iPad|iPod/.test(navigator.platform??""),To=Pl?"\u2318":"Ctrl+",Lr=`${To}C`,Ml=`${To}X`,Ll=`${To}V`;function Ct(t,e={}){let n=t.getClipboardText(e);t.notifyClipboardGesture("copy",n?n.split(`
2
- `).length:0,()=>!n||!navigator.clipboard?.writeText?false:(Ir(n),true));}function Ir(t){navigator.clipboard?.writeText(t).catch(()=>{});}function Il(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 Hl(t){return t===false?[]:Array.isArray(t)?t:["csv","excel","excel-selected","pdf"]}var Al={csv:"exportCsv",excel:"exportExcel","excel-selected":"exportExcelSelected",pdf:"exportPdf"};function ko(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:Lr,onSelect:()=>Ct(t)}),i.copyWithHeaders!==false&&d.push({id:"__dg-copy-headers",label:e.menuCopyWithHeaders,onSelect:()=>Ct(t,{includeHeaders:true})}),i.copyWithGroupHeaders!==false&&Il(t)&&d.push({id:"__dg-copy-group-headers",label:e.menuCopyWithGroupHeaders,onSelect:()=>Ct(t,{includeGroupHeaders:true})});let m=Hl(i.export);if(m.length>0){let b=t.getSelectedCount()===0;d.push({id:"__dg-export",label:e.menuExport,items:m.map(f=>({id:`__dg-export-${f}`,label:e[Al[f]],disabled:f==="excel-selected"&&b,onSelect:()=>{Ft(t,f).then(p=>{p.error&&l?.(p.error);});}}))});}return d.length>0&&o&&d.unshift({id:"__dg-sep-builtin",separator:true}),d}function Hr(t,e){if(t.scrollHeight<1e6)return null;let n=t.scrollTop;t.scrollTop=1e8;let o=t.scrollTop;if(t.scrollTop=n,o<=0)return null;let l=e.getVirtualWindow().rows.totalHeight-t.clientHeight;return o>=l-4?null:(e.setMaxScrollOffset(o),o)}function Go({anchor:t,value:e,dark:n,onCommit:o,onCancel:l}){let i=J(),[d,m]=useState(e),b=useRef(null);useEffect(()=>{let p=b.current;p&&(p.focus(),p.select());},[]);let f=()=>{let p=d.trim();o(p===""?null:p);};return jsxs(it,{anchor:t,onClose:l,dark:n,label:i.noteEditorAria,className:"kanuni-datagrid-note-editor",children:[jsx("textarea",{ref:b,className:"kanuni-datagrid-note-input",value:d,rows:4,"aria-label":i.noteEditorAria,placeholder:i.notePlaceholder,onChange:p=>m(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.ctrlKey||p.metaKey)&&(p.preventDefault(),f()),p.key==="Escape"&&(p.preventDefault(),l());}}),jsxs("div",{className:"kanuni-datagrid-note-actions",children:[jsx("button",{type:"button",className:"kanuni-datagrid-note-cancel",onClick:l,children:i.cancel}),jsx("button",{type:"button",className:"kanuni-datagrid-note-save",onClick:f,children:i.save})]})]})}function Kl(t){let e=J();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 $l=new Set(["filtering","sorting","computing","encoding","exporting"]);function Eo({controller:t,delay:e=300,labels:n,cancellable:o=true,forced:l=false}){let[i,d]=useState(()=>t.getBusy()),[m,b]=useState(false);useEffect(()=>(d(t.getBusy()),t.events.on("busyChanged",v=>d(v))),[t]);let f=i.busy&&i.background!==true;useEffect(()=>{if(!f){b(false);return}let v=setTimeout(()=>b(true),e);return ()=>clearTimeout(v)},[f,e]);let p=Kl(n);if(!l&&(!m||!f))return null;let g=i.phase?p[i.phase]:p.busy,y=i.progress===null?null:Math.max(0,Math.min(100,i.progress)),w=o&&i.phase!==null&&$l.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:g}),y!==null&&jsxs("div",{className:"kanuni-datagrid-loading-progress",role:"progressbar","aria-valuenow":Math.round(y),"aria-valuemin":0,"aria-valuemax":100,children:[jsx("div",{className:"kanuni-datagrid-loading-track",children:jsx("div",{className:"kanuni-datagrid-loading-fill",style:{width:`${y}%`}})}),jsxs("span",{className:"kanuni-datagrid-loading-percent",children:[Math.round(y),"%"]})]}),w&&jsx("button",{type:"button",className:"kanuni-datagrid-loading-cancel",onClick:()=>t.cancel(),"data-testid":"dg-loading-cancel",children:p.cancel})]})})}var _r=null;function Wl(){return typeof document>"u"?null:(_r??=document.createElement("canvas"),_r.getContext("2d"))}function Br(t){let e=getComputedStyle(t);return `${e.fontStyle} ${e.fontWeight} ${e.fontSize} ${e.fontFamily}`}function yn(t,e){let n=Wl();if(!n)return null;let o=typeof CSS<"u"&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),l=t.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${o}"]`),i=t.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${o}"]`);if(!l&&i.length===0)return null;let d=0;if(l){let m=l.querySelector(".kanuni-datagrid-header-label")??l;n.font=Br(m),d=n.measureText(m.textContent??"").width+44;}if(i.length>0){n.font=Br(i[0]);for(let m=0;m<i.length;m++){let b=i[m].textContent??"";if(b==="")continue;let f=n.measureText(b).width+20;f>d&&(d=f);}}return d===0?null:Math.round(Math.min(640,Math.max(48,d)))}function No(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 Rn="application/x-kanuni-row";function Mo(t,e){let n=!!e?.enabled,o=e?.group??null,l=e?.allowReordering??true,i=e?.allowDropInsert??o!==null,[d,m]=useState(false),[b,f]=useState(null),p=useRef(null),g=useRef(false),y=useRef(null),w=useRef(null),v=useRef(e);v.current=e;let N=useCallback(u=>t.getRowByKey(u),[t]),I=(u,T)=>{let H=T.getBoundingClientRect();return u.clientY<H.top+H.height/2?"before":"after"},R=useCallback((u,T)=>{if(!isDataRow(u))return;w.current=u.key,y.current=u.key,g.current=false,p.current=null;let H={gridId:t.gridId,group:o,rowKey:u.key,row:u.data};T.dataTransfer.setData(Rn,JSON.stringify(H)),T.dataTransfer.setData("text/plain",String(u.key)),T.dataTransfer.effectAllowed="move",t.notifyRowDrag("enter",{rowKey:u.key}),T.stopPropagation();},[t,o]),k=useCallback(()=>{let u=y.current;u!==null&&t.notifyRowDragEnd({rowKey:u,dropped:g.current,overKey:p.current?.key??null,position:p.current?.side??null}),g.current=false,p.current=null,y.current=null,w.current=null,f(null),m(false);},[t]),G=useCallback(u=>u.dataTransfer.types.includes(Rn)?w.current!==null?l:i&&o!==null:false,[l,i,o]),L=useCallback((u,T)=>{if(!isDataRow(u)||!G(T))return;if(T.preventDefault(),T.dataTransfer.dropEffect="move",w.current===u.key){p.current=null,f(null);return}let H=I(T,T.currentTarget),W=p.current?.key!==u.key||p.current.side!==H;p.current={key:u.key,side:H},f(Q=>Q?.key===u.key&&Q.side===H?Q:{key:u.key,side:H}),W&&w.current!==null&&t.notifyRowDrag("move",{rowKey:w.current,overKey:u.key,position:H});},[G,t]),F=useCallback((u,T,H)=>{let W=null;try{let se=u.dataTransfer.getData(Rn);W=se?JSON.parse(se):null;}catch{W=null;}if(!W)return;if(W.gridId===t.gridId){if(!l)return;let se=v.current?.onReorder;if(se){se({dragKey:W.rowKey,targetKey:T,position:H,row:N(W.rowKey)});return}t.moveRow(W.rowKey,T,H);return}!i||o===null||W.group!==o||v.current?.onAdd?.({row:W.row,rowKey:W.rowKey,otherGridId:W.gridId,targetKey:T,position:H});},[t,l,i,o,N]),B=useCallback((u,T)=>{if(f(null),!isDataRow(u)||!G(T))return;T.preventDefault(),T.stopPropagation();let H=I(T,T.currentTarget);g.current=true,p.current={key:u.key,side:H},F(T,u.key,H),w.current=null;},[G,F]),h=useCallback(u=>{G(u)&&(u.preventDefault(),u.dataTransfer.dropEffect="move");},[G]),P=useCallback(u=>{f(null),G(u)&&(u.preventDefault(),g.current=true,p.current=null,F(u,null,"after"),w.current=null);},[G,F]),D=useCallback(u=>{let T=u.relatedTarget;T&&u.currentTarget.contains(T)||w.current!==null&&(p.current=null,f(null),t.notifyRowDrag("leave",{rowKey:w.current}));},[t]);return {handlers:n?{draggable:d,setDraggable:m,onDragStart:R,onDragEnd:k,onDragOver:L,onDrop:B}:void 0,dropAt:n?b:null,bodyHandlers:n?{onDragOver:h,onDrop:P,onDragLeave:D}:void 0}}var Jl=400;function $r(t){return t.scrollWidth>t.clientWidth+1||t.scrollHeight>t.clientHeight+1}function Wr(t){return (t.textContent??"").trim()}function jl(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 Lo({rootRef:t,columnModel:e,getRowNode:n,getNote:o,config:l}){let i=l?.enabled!==false,d=l?.delay??Jl,m=l?.showOnTruncation!==false,[b,f]=useState(null),p=useRef({columnModel:e,getRowNode:n,getNote:o,showOnTruncation:m,delay:d});return p.current={columnModel:e,getRowNode:n,getNote:o,showOnTruncation:m,delay:d},useEffect(()=>{if(!i){f(null);return}let g=t.current;if(!g)return;let y=null,w=null,v=()=>{y!==null&&(clearTimeout(y),y=null),w=null,f(null);},N=(G,L)=>{let{columnModel:F,getRowNode:B,getNote:h,showOnTruncation:P}=p.current,D=F.getDef(L),Y=G.closest("[data-row-key]")?.dataset.rowKey,u=Y===void 0?void 0:B(Y);return jl({def:D,node:u,value:u?F.getCellValue(u.data,L):void 0,clipped:P&&$r(G)?Wr(G):null,note:u&&h?h(u.key,L,u.data):null})},I=(G,L)=>{let F=p.current.columnModel.getDef(G);if(F?.headerTooltip)return F.headerTooltip;if(!p.current.showOnTruncation)return null;let B=L.querySelector(".kanuni-datagrid-header-label")??L;if(!$r(B))return null;let h=Wr(B);return h.length>0?h:null},R=G=>{let F=G.target?.closest("[data-column-id]")??null;if(F===w||(v(),!F||!g.contains(F)))return;let B=F.dataset.columnId;if(!B)return;let h=F.classList.contains("kanuni-datagrid-header-cell");!h&&!F.closest("[data-row-key]")||(w=F,y=setTimeout(()=>{if(y=null,w!==F||!F.isConnected)return;let P=h?I(B,F):N(F,B);if(!P)return;let D=F.getBoundingClientRect();f({text:P,anchor:{top:D.top,left:D.left,width:D.width,height:D.height}});},p.current.delay));},k=G=>{let L=G.relatedTarget;w&&L&&w.contains(L)||v();};return g.addEventListener("mouseover",R),g.addEventListener("mouseout",k),g.addEventListener("mousedown",v),g.addEventListener("keydown",v),g.addEventListener("scroll",v,true),window.addEventListener("blur",v),()=>{v(),g.removeEventListener("mouseover",R),g.removeEventListener("mouseout",k),g.removeEventListener("mousedown",v),g.removeEventListener("keydown",v),g.removeEventListener("scroll",v,true),window.removeEventListener("blur",v);}},[i,t]),i?b:null}var zr=6,vt=8;function Io({state:t,dark:e}){let[n,o]=useState(null),[l,i]=useState(null),{text:d,anchor:m}=t;return useLayoutEffect(()=>{if(!n)return;let{width:b,height:f}=n.getBoundingClientRect(),p=document.documentElement.clientWidth,g=document.documentElement.clientHeight,y=m.top+m.height+zr,w=m.top-f-zr,N=y+f+vt<=g||w<vt?y:w,I=Math.min(Math.max(vt,m.left),Math.max(vt,p-b-vt));i({top:Math.min(N,g-f-vt),left:I});},[n,d,m]),jsx(He,{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 Cn(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 Yr=Cn(getGridDictionary("en"));function Ho(t,e){let n={...Yr,...e.labels},{controller:o,maxGroupLevels:l}=e,i=t.columnId,d=o.getColumnModel().getDef(i),m=o.getSort(),b=m.find(k=>k.columnId===i),f=o.getGroupLevels(),p=f.includes(i),g=d?.sortable!==false,y=o.getColumnStates().find(k=>k.id===i)?.pinned??null,w=d?.groupable!==false,v=[{id:"sort-asc",label:n.sortAsc,disabled:!g||b?.direction==="asc",onSelect:()=>o.setSort([{columnId:i,direction:"asc"}])},{id:"sort-desc",label:n.sortDesc,disabled:!g||b?.direction==="desc",onSelect:()=>o.setSort([{columnId:i,direction:"desc"}])},{id:"sort-clear",label:n.clearSort,disabled:!b,onSelect:()=>o.setSort(m.filter(k=>k.columnId!==i))},{id:"sep-1",separator:true},{id:"group",label:p?n.ungroup:n.groupBy,disabled:!w,onSelect:()=>{p?o.groupBy(f.filter(k=>k!==i)):o.groupBy([...f,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(k=>k.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 N=o.getColumnStates().filter(k=>k.visible&&k.pinned===y).map(k=>k.id),I=N.indexOf(i),R=d?.reorderable!==false&&I>=0;return v.push({id:"sep-4",separator:true},{id:"move-left",label:n.moveLeft,disabled:!R||I<=0,onSelect:()=>o.moveColumn(i,N[I-1])},{id:"move-right",label:n.moveRight,disabled:!R||I<0||I>=N.length-1,onSelect:()=>o.moveColumn(i,N[I+2])},{id:"fixed-position",label:n.fixedPosition,items:[{id:"pin-left",label:n.pinLeft,disabled:y==="left",onSelect:()=>o.setColumnPinned(i,"left")},{id:"pin-right",label:n.pinRight,disabled:y==="right",onSelect:()=>o.setColumnPinned(i,"right")},{id:"pin-sticky",label:n.pinSticky,disabled:y==="sticky",onSelect:()=>o.setColumnPinned(i,"sticky")}]},{id:"unpin",label:n.unpin,disabled:y===null,onSelect:()=>o.setColumnPinned(i,null)}),v}var xn=typeof window<"u"?useLayoutEffect:useEffect,jr=1e8,vn=null;function Qr(){if(vn!==null)return vn;if(typeof document>"u"||!document.body)return null;let t=document.createElement("div");t.setAttribute("aria-hidden","true"),t.style.cssText="position:fixed;top:0;left:-9999px;width:80px;height:80px;overflow:auto;visibility:hidden;pointer-events:none;";let e=document.createElement("div");e.style.cssText="width:1px;",e.style.height=`${jr}px`,t.appendChild(e),document.body.appendChild(t),t.scrollTop=jr;let n=t.scrollTop;return _o=e.offsetHeight>0?e.offsetHeight:null,t.remove(),n>0&&(vn=n),vn}var _o=null;function cs(){return _o===null&&Qr(),_o}function Ao(t){return Math.abs(t)}function Zr(t,e){return getComputedStyle(e).direction==="rtl"?-t:t}function Tn(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.summaries){t.debugMode&&console.warn("[datagrid] footer column totals are an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use them.");let d={...t};return delete d.summaries,Tn(d,e)}if(t.columns?.some(d=>d.spanRows)){t.debugMode&&console.warn("[datagrid] cell span/merge (spanRows) is an Enterprise feature \u2014 import EnterpriseDataGrid from @kanunilabs/datagrid-react-enterprise to use it.");let d={...t,columns:t.columns.map(m=>m.spanRows?{...m,spanRows:void 0}:m)};return Tn(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,Tn(d,e)}if(!t.grouping)return t.masterDetail?Oo(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?Oo(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?Oo(i):i}function Oo(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 ps(t){return jsx(Yn,{locale:t.locale,messages:t.messages,children:jsx(co,{theme:t.theme,density:t.density,palette:t.palette,children:jsx(ms,{...t})})})}function ms(t){let e=J(),{className:n,style:o,dark:l=false,theme:i,palette:d,striped:m=true,emptyText:b,sortable:f=true,filterRow:p=false,headerFilter:g=false,filterIconMode:y="hover",columnReorder:w=true,columnResize:v=true,loadingOverlay:N=true,announcements:I=true,groupPanel:R=false,showRowCount:k=false,toolbar:G=false,toolbarExcel:L=false,toolbarPdf:F=false,filterPanel:B=false,filterPanelLabels:h,onOpenFilterBuilder:P,toolbarItemsBefore:D,toolbarItemsAfter:Y,renderRow:u,stateStoring:T,headerMenu:H=true,focusedRow:W=false,focusedRowKey:Q,onFocusedRowChanged:se,footer:Ue,footerMenu:ve=true,onRowClick:ue,onRowActivate:he,onReady:ye,renderCellContent:Te,getCellClassName:Ge,renderOverlay:Me,onCellPointerDown:ne,onCellPointerEnter:$e,onCellDoubleClick:We,enterpriseEdition:re=false,renderDetail:ce,renderEditForm:pe,density:Oe,rowMenu:de,cellMenu:s,autoColumns:C,rowDrag:M,tooltip:z,pinnedTopRows:E,pinnedBottomRows:oe,footerPosition:me="bottom",autoSizeStrategy:ae="none",highlightSearch:ke=true,...te}=t,A=useMemo(()=>{let a=te.columns;if(a&&a.length>0)return a;let c=te.dataSource;if(!Array.isArray(c)||c.length===0)return a??[];let x=typeof C=="object"?C:void 0;return C===false?a??[]:inferColumns(c,x)},[te.columns,te.dataSource,C]),Le={...te,columns:A},S=i?uo[i][Oe??"normal"]:Oe?so[Oe]:DEFAULT_ROW_HEIGHT,U=Le.rowHeight===void 0?{...Le,rowHeight:S}:Le,_=re?Number.POSITIVE_INFINITY:1,X=Tn(U,re),{controller:r,rows:le,window:kt,layout:fe,sort:Vt,rowHeight:zt,visibleCount:Ye}=$n(X),Bo=Vn(r,t.printLayout),Dn=Bo.active?{...kt,rows:{...kt.rows,start:0,end:le.length,offsetY:0,totalHeight:0}}:kt,Dt=useMemo(()=>A.some(a=>a.autoHeight===true),[A]),Ko=g&&r.canListDistinctValues();g&&!Ko&&te.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 Ve=useRef(null);xn(()=>{r.setEnterpriseEdition(re);},[r,re]),useEffect(()=>{ye?.(r);},[r,ye]),xn(()=>{let a=Qr();a!==null&&a<DEFAULT_MAX_SCROLL_OFFSET&&r.setMaxScrollOffset(a);let c=cs();c!==null&&r.setMaxCanvasHeight(c);},[r]),xn(()=>{let a=Ve.current;if(!a)return;let c=()=>{r.setViewportSize(a.clientWidth,a.clientHeight),a.style.setProperty("--dg-viewport-width",`${a.clientWidth}px`);let q=a.querySelector(".kanuni-datagrid-rows"),K=a.querySelector(".kanuni-datagrid-canvas");if(q&&K){let $=q.getBoundingClientRect(),ee=K.getBoundingClientRect();r.setChromeOffsets($.top-ee.top,ee.bottom-$.bottom);}Hr(a,r);};if(c(),typeof ResizeObserver>"u")return;let x=new ResizeObserver(c);x.observe(a);let O=a.querySelector(".kanuni-datagrid-canvas");return O&&x.observe(O),()=>x.disconnect()},[r]),xn(()=>{if(!Dt)return;let a=Ve.current?.querySelector(".kanuni-datagrid-viewport");if(!a)return;let c=r.getVirtualWindow(),x=r.getRows(),O=new Map(r.getMeasuredRowHeights()),q=false;for(let K=c.rows.start;K<c.rows.end;K++){let $=x[K];if(!$||$.kind!=="data")continue;let ee=a.querySelector(`[data-row-key="${CSS.escape(String($.key))}"]`);if(!ee)continue;let ie=ee.getBoundingClientRect().height;ie>0&&O.get($.key)!==ie&&(O.set($.key,ie),q=true);}q&&r.setMeasuredRowHeights(O);}),useEffect(()=>{if(Dt)return r.events.on("columnStateChanged",()=>{r.clearMeasuredRowHeights();})},[r,Dt]),useEffect(()=>r.events.on("scrollRequested",a=>{let c=Ve.current;if(!c)return;a.scrollTop!==void 0&&(c.scrollTop=a.scrollTop),a.scrollLeft!==void 0&&(c.scrollLeft=Zr(a.scrollLeft,c)),r.setScroll(c.scrollTop,Ao(c.scrollLeft));let x=a.scrollTop;x===void 0||Math.abs(c.scrollTop-x)<=1||setTimeout(()=>{let O=Ve.current;!O||Math.abs(O.scrollTop-x)<=1||(O.scrollTop=x,r.setScroll(O.scrollTop,Ao(O.scrollLeft)));},0);}),[r]);let $o=Un(r,t.alignedGrids,Ve),na=useCallback(a=>{let c=a.currentTarget;r.setScroll(c.scrollTop,Ao(c.scrollLeft)),$o.syncScroll(c.scrollLeft);},[r,$o]),oa=useCallback((a,c)=>r.toggleSort(a,c),[r]);No(r,T);let dt=Mo(r,M);useEffect(()=>{Q!=null&&r.getFocusedRowKey()!==Q&&r.focusRow(Q);},[r,Q]),useEffect(()=>{if(se)return r.events.on("focusedRowChanged",a=>se({rowKey:a.rowKey,row:a.row}))},[r,se]);let qe=useRef(null),[Gn,ra]=useState(null);useEffect(()=>r.events.on("overlayChanged",a=>{ra(a.manual?a.overlay:null);}),[r]);let aa=useCallback(a=>{let c=r.getDataRowNode(a);if(c)return c;if(a==="")return;let x=Number(a);return Number.isNaN(x)?void 0:r.getDataRowNode(x)},[r]),Re=re?t.notes:void 0;!re&&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 Ut=!!Re?.onChange&&Re.menu!==false,Yt=useCallback((a,c,x)=>Re?Re.get({rowKey:a,columnId:c,row:x})??null:null,[Re]),Wo=Lo({rootRef:qe,columnModel:r.getColumnModel(),getRowNode:aa,getNote:Re?Yt:void 0,config:z}),[ia,la]=useState(0);useEffect(()=>{let a=new Set,c=[r.events.on("cellsFlashed",({rowKeys:x,columnIds:O,duration:q})=>{let K=qe.current;if(!K)return;let $=x.length?x.map(Ce=>`[data-row-key="${CSS.escape(String(Ce))}"]`).join(","):".kanuni-datagrid-row",ee=O.length?O.map(Ce=>`[data-column-id="${CSS.escape(Ce)}"]`).join(","):"[data-column-id]",ie=[];K.querySelectorAll($).forEach(Ce=>{Ce.querySelectorAll(ee).forEach(gt=>ie.push(gt));});for(let Ce of ie)Ce.classList.remove("kanuni-datagrid-cell--flash");K.offsetWidth;for(let Ce of ie)Ce.classList.add("kanuni-datagrid-cell--flash");let Fe=setTimeout(()=>{for(let Ce of ie)Ce.classList.remove("kanuni-datagrid-cell--flash");a.delete(Fe);},q);a.add(Fe);}),r.events.on("cellsRefreshed",({revision:x})=>la(x))];return ()=>{c.forEach(x=>x()),a.forEach(clearTimeout);}},[r]);let sa=useCallback((a,c)=>r.moveColumn(a,c),[r]),da=useCallback((a,c,x)=>r.setColumnWidth(a,c,x??true),[r]),Sn=useCallback(a=>{if(!qe.current)return;let c=yn(qe.current,a);c!==null&&r.setColumnWidth(a,c);},[r]),qt=useCallback(()=>{let a=qe.current;if(a)for(let c of r.getColumnStates()){if(!c.visible)continue;let x=yn(a,c.id);x!==null&&r.setColumnWidth(c.id,x);}},[r]),En=useRef(false);useEffect(()=>{if(ae!=="none"){if(ae==="fitGrid"){let a=()=>r.sizeColumnsToFit();return a(),r.events.on("gridSizeChanged",a)}return En.current=false,r.events.on("firstDataRendered",()=>{En.current||(En.current=true,qt());})}},[r,ae,qt]);let[ua,Vo]=useState({}),zo=t.filterDebounce??(r.isRemote()?200:0),Nn=useRef(false),Xt=useCallback((a,c)=>{let x=r.getColumnModel().getDataType(a);Nn.current=true;try{r.setColumnFilter(a,dn(a,c,x),FILTER_PART_ROW);}finally{Nn.current=false;}},[r]),Xe=useMemo(()=>createDebouncedCommit(zo),[zo]);useEffect(()=>()=>Xe.cancelAll(),[Xe]);let ca=useCallback((a,c)=>{Vo(x=>({...x,[a]:c})),Xe.schedule(a,()=>Xt(a,c));},[Xt,Xe]),pa=useCallback((a,c)=>{Xe.cancel(a),Xt(a,c);},[Xt,Xe]);useEffect(()=>r.events.on("filterChanged",()=>{if(Nn.current)return;let a=r.getColumnModel();Vo(c=>io(c,{isPending:x=>Xe.isPending(x),textFor:x=>{let O=r.getColumnFilter(x,FILTER_PART_ROW);return O?ao(x,O,a.getDataType(x)):""}},a.getOrder()));}),[r,Xe]);let[ge,Ze]=useState(null),Jt=useRef(0),ma=useCallback((a,c)=>{let x=c.getBoundingClientRect(),O=r.getColumnModel().getDef(a),q={left:x.left,top:x.bottom+2},K=O?.headerName??a,$=r.getColumnFilter(a,FILTER_PART_SET)??r.getColumnFilter(a,FILTER_PART_DEFAULT);if(!r.isRemote()){let ie=++Jt.current;Ze({columnId:a,label:K,entries:[],selected:null,anchor:q,loading:true}),r.getDistinctValueSetAsync(a).then(({entries:Fe,truncated:Ce})=>{Jt.current===ie&&Ze(gt=>gt&&gt.columnId===a?{...gt,entries:Fe,truncated:Ce,capped:Ce,selected:selectedLabelsFromFilter($,Fe),loading:false}:gt);});return}let ee=++Jt.current;Ze({columnId:a,label:K,entries:[],selected:null,anchor:q,loading:true}),r.getDistinctValuesAsync(a).then(ie=>{Jt.current===ee&&Ze(Fe=>Fe&&Fe.columnId===a?{...Fe,entries:ie,selected:selectedLabelsFromFilter($,ie),loading:false}:Fe);});},[r]),fa=useCallback(a=>{ge&&(r.setColumnFilter(ge.columnId,a,FILTER_PART_SET),Ze(null));},[r,ge]),ga=Object.keys(r.getColumnStates().reduce((a,c)=>(r.getColumnFilter(c.id)&&(a[c.id]=true),a),{})),Pn=r.getSelectionMode(),Ie=Pn!=="none"&&(te.selection?.checkboxColumn??false),wa=useCallback((a,c)=>{r.handleRowClick(a.key,{ctrlKey:c.ctrlKey,metaKey:c.metaKey,shiftKey:c.shiftKey});},[r]),ha=useCallback((a,c)=>r.focusCell(a.key,c),[r]),ba=useCallback(a=>r.toggleRow(a.key),[r]),[Gt,Uo]=useState(null),ya=useCallback(()=>Uo(null),[]),[St,Mn]=useState(null),Yo=useCallback((a,c)=>{let O=(qe.current?.querySelector(`[data-row-key="${CSS.escape(String(a))}"] [data-column-id="${CSS.escape(c)}"]`)??qe.current)?.getBoundingClientRect();return {left:O?.left??0,top:(O?.bottom??0)+2}},[]),Ra=useCallback(a=>{let c=St;Mn(null),!(!c||!Re?.onChange)&&Re.onChange({rowKey:c.rowKey,columnId:c.columnId,row:c.row,text:a});},[St,Re]),qo=useCallback((a,c)=>{if(!Re?.onChange||Re.menu===false)return [];let x=a.columnId;if(!x)return [];let O=r.getRowKey(a.row),q=Yt(O,x,a.row),K=()=>Mn({rowKey:O,columnId:x,row:a.row,text:q??"",anchor:Yo(O,x)}),$=[];return c&&$.push({separator:true,id:"__note-sep"}),$.push({id:"__note-edit",label:q?e.editNote:e.addNote,onSelect:K}),q&&$.push({id:"__note-delete",label:e.deleteNote,onSelect:()=>Re.onChange?.({rowKey:O,columnId:x,row:a.row,text:null})}),$},[Re,r,Yt,Yo,e]),[jt,Ln]=useState(null),Xo=useRef({x:0,y:0}),Jo=useCallback(a=>ko(r,e,s,a,c=>{Ln({message:c,...Xo.current}),console.error("[datagrid] export failed:",c);}),[r,e,s]),Zt=useCallback((a,c,x,O,q)=>{if(x.kind!=="data")return;let K={row:x.data,node:x,rowIndex:O,columnId:q,selectedKeys:r.getSelectedKeys()},$=(typeof de=="function"?de(K):de)??[],ee=qo(K,$.length>0),ie=[...$,...ee,...Jo($.length+ee.length>0)];ie.length!==0&&(Xo.current={x:a,y:c},Ln(null),Uo({x:a,y:c,items:ie,context:K}));},[de,r,qo,Jo]),jo=useCallback(a=>a?.target?.closest("[data-column-id]")?.dataset.columnId??null,[]),ut=useCallback((a,c,x,O,q)=>{let K=O??-1;a&&r.notifyRow(a,x,K);let $=jo(q);$!==null&&r.notifyCell(c,x,K,$);},[r,jo]),Ca=useCallback((a,c,x)=>{ue?.(a),ut("rowClicked","cellClicked",a,c,x);},[ue,ut]),xa=useCallback((a,c,x)=>{he?.(a),ut("rowDoubleClicked","cellDoubleClicked",a,c,x);},[he,ut]),va=useCallback((a,c,x)=>{if(ut(null,"cellContextMenu",a,c,x),!de&&!Ut&&s===false||a.kind!=="data")return;x.preventDefault(),r.isRowSelected(a.key)||r.handleRowClick(a.key,{});let O=x.target.closest("[data-column-id]")?.dataset.columnId??null;Zt(x.clientX,x.clientY,a,c,O);},[de,Ut,s,r,Zt,ut]),[Ta,ka]=useState(null),[Da,Ga]=useState(null),[In,Sa]=useState(()=>te.grouping?.groupSummaries??false),[ct,Hn]=useState(null),[Zo,An]=useState(null),Ea=useCallback(()=>{r.getSelectedCount()>0?r.clearSelection():r.selectAll();},[r]),Na=Ye>0&&r.getSelectedCount()>=Ye?"all":r.getSelectedCount()>0?"some":"none",Pa=useCallback(a=>{let c=a.target;if(c.tagName==="INPUT"||c.tagName==="TEXTAREA"||c.isContentEditable)return;if((de||Ut||s!==false)&&(a.key==="ContextMenu"||a.key==="F10"&&a.shiftKey)){let q=r.getFocus(),K=q?le.findIndex(ee=>ee.key===q.rowKey):-1,$=K>=0?le[K]:void 0;if($){let ie=Ve.current?.querySelector(`[data-row-key="${CSS.escape(String($.key))}"]`)?.getBoundingClientRect();Zt(ie?ie.left+16:0,ie?ie.bottom:0,$,K,q?.columnId??null),a.preventDefault();}return}let x=resolveGridCommand({key:a.key,ctrlKey:a.ctrlKey,metaKey:a.metaKey,shiftKey:a.shiftKey,altKey:a.altKey});if(!x)return;if(x.type==="copy"){Ct(r);return}if(x.type==="activate"){let q=r.getFocus(),K=q?le.find($=>$.key===q.rowKey):void 0;K&&he?.(K),x.preventDefault&&a.preventDefault();return}r.executeCommand(x),x.preventDefault&&a.preventDefault();let O=r.getFocusIndices();if(O&&Ve.current){let K=r.getColumnLayout().center.findIndex(ee=>ee.state.id===r.getFocus()?.columnId),$=r.ensureVisible(O.rowIndex,K===-1?void 0:K);if($){let ee=Ve.current;$.scrollTop!==void 0&&(ee.scrollTop=$.scrollTop),$.scrollLeft!==void 0&&(ee.scrollLeft=Zr($.scrollLeft,ee)),r.setScroll(ee.scrollTop,ee.scrollLeft);}}},[r,le,he,de,Ut,s,Zt]),pt=useMemo(()=>bandDepth([...fe.left,...fe.center,...fe.right]),[fe]),Et=yt,On=(p?2:1)+pt,Qo=E?.length??0,Ma=oe?.length??0,Fn=On+Qo,Qt=Ta??te.grouping?.panel??R,La=r.getGroupLevels(),Ia=useCallback(a=>r.groupBy(a.slice(0,_)),[r,_]),Ha=useCallback(a=>r.toggleGroup(a),[r]),Aa=r.getColumnModel().runtime().filter(a=>a.state.visible&&a.def.groupable!==false),Se=r.hasMasterDetail()&&!!ce,we=t.rowNumbers??false,Oa=we&&r.isPaginated()?r.getPage()*r.getPageSize():0;useEffect(()=>{r.setLeadWidth(Zn(Ie,Se,we));},[r,Ie,Se,we]);let Fa=useCallback(a=>r.toggleDetail(a),[r]),_a=useCallback(a=>r.toggleTreeRow(a),[r]),er=r.getSummaryDefs(),Ba=r.getSummaries(),mt=Da??Ue??er.length>0,en=mt&&me==="top",tr=p?2:1,Ka=X.grouping?.groupSummaries&&In?te.summaries:void 0,nr=useCallback(()=>{Sa(a=>(r.setGroupSummaries(!a),!a));},[r]),$a=useCallback((a,c)=>{if(!ve)return;c.preventDefault();let x=r.getColumnModel().getDef(a),O=r.getColumnSummary(a),q={columnId:a,headerName:x?.headerName??x?.field??a},K=[{id:"none",label:e.noTotal,disabled:O===null,onSelect:()=>r.setColumnSummary(a,null)},{id:"sep",separator:true},...qn(x?.dataType).map($=>({id:$,label:rn[$],disabled:O?.type===$,onSelect:()=>r.setColumnSummary(a,$)}))];Hn({x:c.clientX,y:c.clientY,items:K,context:q});},[r,ve]),Wa=useCallback((a,c)=>{if(H===false)return;c.preventDefault();let x=r.getColumnModel().getDef(a),O={columnId:a,headerName:x?.headerName??x?.field??a},q=Ho(O,{controller:r,groupPanelVisible:Qt,footerVisible:mt,groupFootersAvailable:re,groupFootersVisible:In,onToggleGroupPanel:()=>ka(!Qt),onToggleFooter:()=>Ga(!mt),onToggleGroupFooters:nr,onOpenFieldChooser:()=>An({left:c.clientX,top:c.clientY}),onBestFit:Sn,onBestFitAll:qt,maxGroupLevels:_,labels:Cn(e)}),K=typeof H=="function"?H(O,q):q;!K||K.length===0||Hn({x:c.clientX,y:c.clientY,items:K,context:O});},[H,r,Qt,mt,re,In,nr,Sn,qt,_,e]),ft=r.getFocus(),Va=ft?`${t.gridId}-cell-${String(ft.rowKey)}-${ft.columnId}`:void 0,_n=r.getSelectedCount(),za=useMemo(()=>{let a=[`${Ye} rows`];return Vt.length>0&&a.push(`sorted by ${Vt.map(c=>`${r.getColumnModel().getDef(c.columnId)?.headerName??c.columnId} ${c.direction}ending`).join(", ")}`),_n>0&&a.push(`${_n} selected`),a.join(", ")},[r,Ye,Vt,_n]),{centerColumns:Qe,centerIndices:Bn,stickyInsets:Nt,leadingSpacer:et,trailingSpacer:tt,rowStart:Ua,rowEnd:or}=pr(fe,Dn),Kn=r.getColumnModel(),nt=Ua,Ya=a=>{if(Dt)return;let c=r.getRowHeightAt(a);return c===zt?void 0:c},qa=Array.from(le.slice(nt,or)),Xa=useMemo(()=>!we||r.getGroupLevels().length===0&&!r.hasMasterDetail()?null:mr(le),[we,r,le]),Ja=r.hasCellSpans(),rr=useRef({start:0,end:0});rr.current={start:nt,end:or-1};let ja=useCallback((a,c)=>{let x=r.getCellSpans(c);if(x.length===0)return null;let{start:O,end:q}=rr.current,K=spanRoleAt(x,a,O,q);if(!K)return null;if(K.role==="covered")return {kind:"covered"};let $=r.getRowOffset(K.drawStart);return {kind:"draw",height:r.getRowOffset(K.drawEnd)+r.getRowHeightAt(K.drawEnd)-$,offset:0}},[r]),Za=ke?r.getSearchText().trim().toLowerCase():"",Qa={pathOf:a=>bandPath(r.getColumnModel().getDef(a)),collapsible:a=>r.isBandCollapsible(a),collapsed:a=>r.isBandCollapsed(a),onToggle:a=>r.toggleBand(a),labels:{expand:e.expandDetails,collapse:e.collapseDetails}},ar={layout:fe,centerColumns:Qe,leadingSpacer:et,trailingSpacer:tt,defs:er,values:Ba,checkboxColumn:Ie,detailColumn:Se,rowNumberColumn:we,onPickSummary:ve?$a:void 0,emptyHint:ve?"\xB7":""};return jsxs("div",{className:`kanuni-datagrid-root${l?" kanuni-datagrid-dark":""}${Bo.active?" kanuni-datagrid-print":""}${It(i,Oe,d)}${n?` ${n}`:""}`,style:{"--dg-row-height":`${zt}px`,"--dg-grip-inset":we?`${bt}px`:"0px",...o},dir:isRtlLocale(t.locale)?"rtl":void 0,"data-grid-id":t.gridId,"data-theme":i,"data-palette":d,"data-auto-height":Dt?"":void 0,ref:qe,children:[G&&jsx(bo,{controller:r,dark:l,columnChooser:t.toolbarColumnChooser??true,exportExcel:re&&L,exportPdf:re&&F,itemsBefore:D,itemsAfter:Y,onOpenColumnChooser:a=>An(c=>c?null:a)}),Qt&&jsx(ho,{columns:Aa,levels:La,onSetLevels:Ia,maxLevels:_,onExpandAll:()=>r.expandAllGroups(),onCollapseAll:()=>r.collapseAllGroups()}),jsx("div",{className:"kanuni-datagrid-scroller",ref:Ve,onScroll:na,onKeyDown:Pa,tabIndex:0,role:"grid","aria-rowcount":Ye+On+Qo+Ma,"aria-colcount":fe.left.length+fe.center.length+fe.right.length+(Ie?1:0)+(Se?1:0)+(we?1:0),"aria-multiselectable":Pn==="multiple"||void 0,"aria-activedescendant":Va,"aria-label":t.gridId,children:jsxs("div",{className:"kanuni-datagrid-canvas",style:{width:(fe.totalWidth||0)+Zn(Ie,Se,we)||"100%"},role:"rowgroup",children:[jsx(no,{layout:fe,centerColumns:Qe,leadingSpacer:et,trailingSpacer:tt,depth:pt,checkboxColumn:Ie,detailColumn:Se,rowNumberColumn:we,rowHeight:Et,bandFold:Qa}),jsx(ro,{bandOffset:pt*Et,stickyInsets:Nt,layout:fe,centerColumns:Qe,leadingSpacer:et,trailingSpacer:tt,sort:Vt,sortable:f,onSort:oa,headerFilter:Ko,filteredColumns:ga,onOpenFilter:ma,filterIconMode:y,checkboxColumn:Ie,detailColumn:Se,rowNumberColumn:we,selectAllState:Na,onToggleSelectAll:Ea,draggable:R,reorderable:w,onReorder:sa,resizable:v,onResize:da,onAutoFit:Sn,onHeaderContextMenu:H===false?void 0:Wa}),p&&jsx(lo,{bandOffset:pt*Et,stickyInsets:Nt,layout:fe,centerColumns:Qe,leadingSpacer:et,trailingSpacer:tt,values:ua,checkboxColumn:Ie,detailColumn:Se,rowNumberColumn:we,onChange:ca,onCommit:pa}),en&&jsx(mn,{...ar,position:"top",bandOffset:pt*Et,headerRowsBetween:tr}),E&&E.length>0&&jsx(fn,{gridId:t.gridId,side:"top",rows:E,layout:fe,columnModel:Kn,centerColumns:Qe,centerIndices:Bn,stickyInsets:Nt,leadingSpacer:et,trailingSpacer:tt,checkboxColumn:Ie,detailColumn:Se,rowNumberColumn:we,rowHeight:zt,bandOffset:pt*Et,headerRowsBetween:tr+(en?1:0),ariaRowBase:On}),jsxs("div",{className:"kanuni-datagrid-rows",style:{position:"relative",height:Dn.rows.totalHeight},onDragOver:dt.bodyHandlers?.onDragOver,onDrop:dt.bodyHandlers?.onDrop,onDragLeave:dt.bodyHandlers?.onDragLeave,children:[jsx("div",{className:"kanuni-datagrid-viewport",style:{transform:`translateY(${Dn.rows.offsetY}px)`},children:qa.map((a,c)=>a?jsx(Mt,{gridId:t.gridId,node:a,index:nt+c,layout:fe,columnModel:Kn,centerColumns:Qe,centerIndices:Bn,stickyInsets:Nt,leadingSpacer:et,trailingSpacer:tt,striped:m,selected:r.isRowSelected(a.key),focusedColumnId:ft?.rowKey===a.key?ft.columnId:null,rowFocused:W&&ft?.rowKey===a.key,rowDrag:dt.handlers,dropSide:dt.dropAt?.key===a.key?dt.dropAt.side:null,renderRow:u,checkboxColumn:Ie,rowNumberColumn:we,getSpan:Ja?ja:void 0,getNote:Re?Yt:void 0,rowNumber:we?fr(nt+c,Xa,Oa):null,headerRowCount:Fn,onRowClick:Ca,onRowMouseDown:Pn==="none"?void 0:wa,onRowDoubleClick:xa,onToggleSelect:ba,onCellMouseDown:ha,onRowContextMenu:va,onToggleGroup:Ha,onToggleTreeRow:_a,revision:ia,searchNeedle:Za,summaryDefs:Ka,detailColumn:Se,detailExpanded:Se&&r.isDetailExpanded(a.key),onToggleDetail:Fa,renderDetail:ce,renderEditForm:pe,height:Ya(nt+c),renderCellContent:Te,getCellClassName:Ge,onCellPointerDown:ne,onCellPointerEnter:$e,onCellDoubleClick:We},String(a.key)):jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-row--loading",role:"row","aria-rowindex":nt+c+1+Fn,"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-${nt+c}`))}),Me?.()]}),oe&&oe.length>0&&jsx(fn,{gridId:t.gridId,side:"bottom",rows:oe,layout:fe,columnModel:Kn,centerColumns:Qe,centerIndices:Bn,stickyInsets:Nt,leadingSpacer:et,trailingSpacer:tt,checkboxColumn:Ie,detailColumn:Se,rowNumberColumn:we,rowHeight:zt,headerRowsBetween:mt&&!en?1:0,ariaRowBase:Fn+Ye}),mt&&!en&&jsx(mn,{...ar,position:"bottom"})]})}),(Gn==="noRows"||Gn===null&&Ye===0)&&jsx("div",{className:"kanuni-datagrid-empty",children:b??e.noData}),B&&jsx(Co,{controller:r,alwaysVisible:B==="always",onOpenBuilder:P,describeOptions:h}),N!==false&&jsx(Eo,{controller:r,delay:typeof N=="number"?N:void 0,forced:Gn==="loading"}),r.isPaginated()&&jsx(Ro,{page:r.getPage(),pageCount:r.getPageCount(),pageSize:r.getPageSize(),pageSizes:te.pagination?.pageSizes,totalRows:Ye,onPage:a=>r.setPage(a),onNext:()=>r.nextPage(),onPrevious:()=>r.previousPage(),onPageSize:a=>r.setPageSize(a)}),I&&jsx("div",{className:"kanuni-datagrid-sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:za}),St&&jsx(Go,{anchor:St.anchor,value:St.text,dark:l,onCommit:Ra,onCancel:()=>Mn(null)}),Gt&&jsx(bn,{x:Gt.x,y:Gt.y,items:Gt.items,context:Gt.context,dark:l,onClose:ya}),jt&&jsx(He,{dark:l,children:jsx("button",{type:"button",role:"alert",className:"kanuni-datagrid-toolbar-error kanuni-datagrid-menu-error",style:{left:jt.x,top:jt.y},onClick:()=>Ln(null),children:jt.message})}),ct&&jsx(bn,{x:ct.x,y:ct.y,items:ct.items,context:ct.context,dark:l,label:`${ct.context.headerName} column`,onClose:()=>Hn(null)}),Wo&&jsx(Io,{state:Wo,dark:l}),Zo&&jsx(yo,{controller:r,columns:r.getColumnStates(),anchor:Zo,dark:l,onClose:()=>An(null)}),ge&&jsx(go,{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&&!r.isRemote()?a=>{let{entries:c,truncated:x}=r.searchDistinctValues(ge.columnId,a);Ze(O=>O&&O.columnId===ge.columnId?{...O,entries:c,truncated:x}:O);}:void 0,dark:l,onApply:fa,onClose:()=>Ze(null)},`${ge.columnId}:${ge.loading?"loading":"ready"}`)]})}function gs({defs:t,values:e,columnModel:n,rowCount:o,rowCountLabel:l}){let i=J(),d=ht(i);return t.length===0&&o===void 0?null:jsxs("div",{className:"kanuni-datagrid-summary-bar",role:"status","aria-label":i.summaryAria,children:[o!==void 0&&jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsx("strong",{children:o.toLocaleString()})," ",l??i.summaryRows]}),t.map(m=>{let b=e[summaryKey(m.columnId,m.type)],f=n.getDef(m.columnId),p=rt(m,b,f);return jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsxs("span",{className:"kanuni-datagrid-summary-label",children:[ot(m,d)," ",f?.headerName??m.columnId,":"]}),jsx("strong",{children:p})]},summaryKey(m.columnId,m.type))})]})}var ws=memo(gs);function ys(t,e){let[n,o]=useState(null);return useEffect(()=>{if(!t||!e){o(null);return}let l=e.source??"view",i=false,d=0,m=false,b=false,f=null,p=()=>{let w=++d;t.computeChartData(e).then(v=>{!i&&w===d&&o(v);},()=>{});},g=(w=false)=>{b||=w,!m&&(m=true,queueMicrotask(()=>{if(m=false,i)return;let v=t.chartBasis(l);!b&&v===f||(b=false,f=v,p());}));};f=t.chartBasis(l),p();let y=[t.events.on("contentReady",()=>g()),t.events.on("rowsChanged",()=>g()),t.events.on("dataUpdated",()=>g()),...l==="selection"?[t.events.on("selectionChanged",()=>g(true))]:[]];return ()=>{i=true,d++,y.forEach(w=>w());}},[t,e]),n}export{yt as BAND_ROW_HEIGHT,Yr as DEFAULT_HEADER_MENU_LABELS,so as DENSITY_ROW_HEIGHT,ps as DataGrid,Oi as GRID_PALETTES,Ai as GRID_THEMES,yo as GridColumnChooser,bn as GridContextMenu,Co as GridFilterPanel,lo as GridFilterRow,mn as GridFooterRow,ho as GridGroupPanel,ro as GridHeader,no as GridHeaderBands,go as GridHeaderFilterPopup,Eo as GridLoadingOverlay,Go as GridNoteEditor,Ro as GridPager,fn as GridPinnedRows,it as GridPopupPanel,He as GridPortal,Mt as GridRow,ws as GridSummaryBar,co as GridSurfaceProvider,Yn as GridTextProvider,bo as GridToolbar,Io as GridTooltip,Wn as PRINT_MAX_ROWS,Rn as ROW_DRAG_MIME,Lr as SHORTCUT_COPY,Ml as SHORTCUT_CUT,Ll as SHORTCUT_PASTE,rn as SUMMARY_TYPE_LABEL,uo as THEME_ROW_HEIGHT,qn as allowedSummaryTypes,ko as buildCellMenuItems,Ho as buildHeaderMenu,Ct as copyToClipboard,_e as fillText,ao as filterInputFromNode,rt as formatSummaryValue,Cn as headerMenuLabels,yn as measureBestFitWidth,dn as parseFilterInput,io as reconcileFilterInputs,Ft as runGridExport,ot as summaryLabel,ht as summaryTypeLabels,It as themeClassName,Un as useAlignedGrids,Ht as useAnchoredPopup,Lo as useCellTooltip,$n as useDataGrid,ys as useGridChartData,po as useGridSurfaceClass,J as useGridText,Vn as usePrintLayout,Mo as useRowDrag,No as useStateStoring,Ir as writeClipboardText};
1
+ import {createContext,memo,useState,useRef,useEffect,useContext,useMemo,useCallback,useSyncExternalStore,useLayoutEffect}from'react';import {getGridDictionary,isDetailRow,isEditFormRow,isFillerRow,isGroupRow,lookupLabel,summaryLabel,formatSummaryValue,summaryKey,fillText,summaryTypeLabels,describeFilter,filterLabels,computeHeaderBands,downloadBlob,ExportAbortedError,DataGridController,themeClassName,attachStateStoring,isDataRow,inferColumns,THEME_ROW_HEIGHT,DENSITY_ROW_HEIGHT,DEFAULT_ROW_HEIGHT,DEFAULT_MAX_SCROLL_OFFSET,calibrateMaxScrollOffset,parseFilterInput,FILTER_PART_ROW,createDebouncedCommit,FILTER_PART_SET,FILTER_PART_DEFAULT,selectedLabelsFromFilter,resolveGridCommand,bandDepth,allowedSummaryTypes,spanRoleAt,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,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 ti=["contentReady","viewportChanged","columnStateChanged","sortChanged","filterChanged","selectionChanged","focusChanged","summariesChanged"];function Bn(t){let[e,n]=useState(()=>new DataGridController(t));useEffect(()=>{if(e.isDisposed()){n(new DataGridController(t));return}return ()=>e.dispose()},[e]);let a=useRef(0),l=useCallback(H=>{let C=()=>{a.current++,H();},T=ti.map(G=>e.events.on(G,C));return ()=>T.forEach(G=>G())},[e]),i=useCallback(()=>a.current,[]);useSyncExternalStore(l,i,i);let{dataSource:u,columns:m}=t,h=useRef(true);useEffect(()=>{if(h.current){h.current=false;return}Array.isArray(u)&&e.setData(u);},[e,u]);let f=useRef(true);useEffect(()=>{if(f.current){f.current=false;return}e.setColumns(m);},[e,m]);let p=t.pagination?.enabled??false;useEffect(()=>{e.setPaginationEnabled(p);},[e,p]);let g=t.rowHeight,y=useRef(true);useEffect(()=>{if(y.current){y.current=false;return}g!==void 0&&e.setRowHeight(g);},[e,g]);let w=t.grouping?.groupBy??null,v=JSON.stringify(w==null?[]:typeof w=="string"?[w]:w),N=useRef(true);return useEffect(()=>{if(N.current){N.current=false;return}e.groupBy(JSON.parse(v));},[e,v]),{controller:e,rows:e.getRows(),window:e.getVirtualWindow(),layout:e.getColumnLayout(),sort:e.getSort(),rowHeight:e.getRowHeight(),visibleCount:e.getVisibleCount(),totalCount:e.getTotalCount()}}var tn=0,Kn=5e3;function oi(t){if(t===void 0||t===false)return null;let e=t===true?{}:t;return {always:e.always??false,maxRows:e.maxRows??Kn}}function ri(t,e){return t<=e}function _n(t,e){let n=oi(e),a=n!==null,l=n?.always??false,i=n?.maxRows??Kn,[u,m]=useState(false),h=useCallback(()=>m(true),[]),f=useCallback(()=>m(false),[]);useEffect(()=>{if(!a||l||typeof window>"u"||typeof window.addEventListener!="function")return;let g=()=>{let w=t.getRows().length;if(!ri(w,i)){t.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${w} rows exceeds maxRows (${i}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}flushSync(()=>m(true));},y=()=>flushSync(()=>m(false));return window.addEventListener("beforeprint",g),window.addEventListener("afterprint",y),()=>{window.removeEventListener("beforeprint",g),window.removeEventListener("afterprint",y);}},[a,l,i,t]);let p=l||u;return useEffect(()=>{if(!p||typeof document>"u")return;let g=document.documentElement;return tn++,g.classList.add("kanuni-datagrid-printing"),()=>{tn--,tn<=0&&(tn=0,g.classList.remove("kanuni-datagrid-printing"));}},[p]),{active:p,begin:h,end:f}}var nn=new Map,$n=new Set;function cr(t,e){let n=nn.get(t);return n?[...n].filter(a=>a!==e):[]}function Wn(t,e,n){let a=useRef(null);return useEffect(()=>{if(!e)return;let i={controller:t,scroller:()=>n.current};a.current=i;let u=nn.get(e)??new Set;u.add(i),nn.set(e,u);let m=t.events.on("columnStateChanged",()=>{if($n.has(e))return;let h=cr(e,i);if(h.length===0)return;let f=t.getColumnStates();$n.add(e);try{for(let p of h)p.controller.applyColumnStates(f);}finally{$n.delete(e);}});return ()=>{m(),u.delete(i),u.size===0&&nn.delete(e),a.current=null;}},[t,e,n]),{syncScroll:useCallback(i=>{let u=a.current;if(!e||!u)return;let m=cr(e,u);if(m.length!==0)for(let h of m){let f=h.scroller();f&&f.scrollLeft!==i&&(f.scrollLeft=i);}},[e])}}function on(t,e,n){return t==="left"?e:t==="center"?n.left+e:n.left+n.center+e}function pr(t,e){let{start:n,end:a}=e.columns,l=t.centerOffsets,i=l[n]??0,u=(l[a]??0)-i,m=Math.max(0,t.centerWidth-i-u),h=i,f=t.center.slice(n,a),p=Array.from({length:f.length},(w,v)=>n+v),g=t.stickyIndices.filter(w=>w<n);if(g.length>0){let w=g.map(v=>t.center[v]);h-=w.reduce((v,N)=>v+N.state.width,0),f=[...w,...f],p=[...g,...p];}let y=new Map;for(let w of t.stickyIndices){let v=t.centerStickyOffsets[w];v!==null&&y.set(t.center[w].state.id,v);}return {centerColumns:f,centerIndices:p,leadingSpacer:Math.max(0,h),trailingSpacer:m,rowStart:e.rows.start,rowEnd:e.rows.end,stickyInsets:y}}function mr(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 fr(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 wr=createContext(getGridDictionary("en"));function Vn({locale:t,messages:e,children:n}){let a=useMemo(()=>getGridDictionary(t,e),[t,e]);return jsx(wr.Provider,{value:a,children:n})}function J(){return useContext(wr)}var an=36,ln=28,bt=60,Ri=[["rowNumberColumn",bt],["detailColumn",ln],["checkboxColumn",an]];function Xn(t,e,n=false){return _e({checkboxColumn:t,detailColumn:e,rowNumberColumn:n}).total}function _e(t){let e=new Map,n=new Map,a=0,l=0;for(let[i,u]of Ri)t[i]&&(e.set(i,a),n.set(i,++l),a+=u);return {total:a,count:l,inset:i=>e.get(i)??0,colIndex:i=>n.get(i)??1}}function zn(t){return t?t.kind==="draw"?" kanuni-datagrid-cell--span":" kanuni-datagrid-cell--span-covered":""}function Yn(t,e,n){return t?t.kind==="covered"?e?n():null:jsx("div",{className:"kanuni-datagrid-span-box",style:{height:t.height},children:n()}):n()}function qn(t,e){let n=t??(e==="number"?"right":"left");return n==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":n==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function rn(t,e){if(e===""||t==="")return t;let n=t.toLowerCase(),a=n.indexOf(e);if(a===-1)return t;let l=[],i=0,u=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)},u++)),i=a+e.length,a=n.indexOf(e,i);return i<t.length&&l.push(t.slice(i)),l}function yi(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 rn(l,a);if(t.valueFormatter){let i=t.valueFormatter(e,n.data);return typeof i=="string"?rn(i,a):i}return t.dateFormat&&t.dataType==="date"?rn(formatDateValue(e,t.dateFormat),a):e==null?"":rn(String(e),a)}function Ci({gridId:t,node:e,index:n,layout:a,columnModel:l,centerColumns:i,centerIndices:u,stickyInsets:m,leadingSpacer:h,trailingSpacer:f,striped:p,selected:g,focusedColumnId:y,rowFocused:w=false,renderRow:v,checkboxColumn:N,rowNumberColumn:H=false,rowNumber:C=null,getNote:T,getSpan:G,headerRowCount:I,onRowClick:F,onRowMouseDown:B,onRowDoubleClick:K,onToggleSelect:b,onCellMouseDown:E,onRowContextMenu:M,searchNeedle:d="",onToggleGroup:R,summaryDefs:L,detailColumn:W=false,detailExpanded:j=false,onToggleDetail:se,onToggleTreeRow:ze,renderDetail:ke,renderEditForm:ue,renderCellContent:he,getCellClassName:Re,onCellPointerDown:ve,onCellPointerEnter:Se,onCellDoubleClick:Ie,rowDrag:ne,dropSide:We=null,height:Ve}){let oe=J();if(isDetailRow(e))return jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-detail-row",role:"row","aria-rowindex":n+1+I,"data-row-key":String(e.key),"data-detail-for":String(e.parentKey),style:{height:e.height},children:jsx("div",{className:"kanuni-datagrid-detail-cell",role:"gridcell","aria-colindex":1,children:ke?.(e.data)})});if(isEditFormRow(e))return jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-editform-row",role:"row","aria-rowindex":n+1+I,"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:ue?.(e.parentKey,e.data)})});if(isFillerRow(e))return null;if(isGroupRow(e)){let D=l.getDef(e.columnId),Y=D?.headerName??e.columnId,V=lookupLabel(D,e.value)??(e.label===""?oe.filterBlank:e.label),q=e.aggregates??null;return jsx("div",{className:`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${e.level}${y?" kanuni-datagrid-group-row--focused":""}`,role:"row","aria-rowindex":n+1+I,"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:()=>R?.(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:[jsx("span",{className:"kanuni-datagrid-group-twisty","aria-hidden":"true",children:e.expanded?"\u25BE":"\u25B8"}),jsxs("span",{className:"kanuni-datagrid-group-caption",children:[Y,":"]}),jsx("span",{className:"kanuni-datagrid-group-label",children:V}),jsxs("span",{className:"kanuni-datagrid-group-count",children:["(",e.count,")"]}),q&&L?.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,q[summaryKey(o.columnId,o.type)],l.getDef(o.columnId))]},summaryKey(o.columnId,o.type)))]})})}let ce=[],pe=_e({rowNumberColumn:H,detailColumn:W,checkboxColumn:N}),Fe=pe.count,de=(D,Y)=>({node:e,columnId:D,rowIndex:n,columnIndex:Y,value:l.getCellValue(e.data,D)}),s=(D,Y)=>{let V=()=>de(D,Y);return {role:"gridcell",id:`${t}-cell-${String(e.key)}-${D}`,"aria-colindex":Fe+Y+1,"data-column-id":D,onMouseDown:q=>{E?.(e,D),ve?.(V(),q);},onMouseEnter:Se?q=>Se(V(),q):void 0,onDoubleClick:Ie?()=>Ie(V()):void 0}},x=e.kind==="data"?e.tree:void 0,P=x?(a.left[0]??a.center[0]??a.right[0])?.state.id??null:null,z=(D,Y,V)=>{if(he){let o=he(de(Y,V));if(o!==void 0)return o}let q=yi(D,l.getCellValue(e.data,Y),e,d);return x&&Y===P?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?oe.collapseDetails:oe.expandDetails,onClick:o=>{o.stopPropagation(),ze?.(e.key);},children:x.expanded?"\u25BE":"\u25B8"}):jsx("span",{className:"kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf"}),q]}):q},S=(D,Y)=>{if(!Re)return "";let V=Re(de(D,Y));return V?` ${V}`:""},re=D=>!T||e.kind!=="data"?"":T(e.key,D,e.data)?" kanuni-datagrid-cell--noted":"",me=D=>G&&e.kind==="data"?G(n,D):null,ae=(D,Y)=>{let V=D.autoHeight?" kanuni-datagrid-cell--wrap":"";return D.cellClassName?V+Te(D,Y):V},Te=(D,Y)=>{let V=D.cellClassName;if(!V)return "";if(typeof V=="string")return ` ${V}`;let q=e.data,o=V({value:l.getCellValue(q,Y),row:q,node:e,column:D});return o?` ${o}`:""};if(H){let D=e.kind==="data"&&C!==null;ce.push(jsx("div",{role:"gridcell","aria-colindex":pe.colIndex("rowNumberColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell",style:{width:bt,insetInlineStart:pe.inset("rowNumberColumn")},children:D?C:""},"__rownum"));}W&&ce.push(jsx("div",{role:"gridcell","aria-colindex":pe.colIndex("detailColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell",style:{width:ln,insetInlineStart:pe.inset("detailColumn")},children:jsx("button",{type:"button",className:"kanuni-datagrid-detail-toggle",tabIndex:-1,"aria-expanded":j,"aria-label":j?oe.collapseDetails:oe.expandDetails,onClick:D=>{D.stopPropagation(),se?.(e.key);},children:j?"\u25BE":"\u25B8"})},"__detail")),N&&ce.push(jsx("div",{role:"gridcell","aria-colindex":pe.colIndex("checkboxColumn"),className:"kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell",style:{width:an,insetInlineStart:pe.inset("checkboxColumn")},onMouseDown:D=>D.stopPropagation(),onClick:D=>{D.target.tagName!=="INPUT"&&(D.stopPropagation(),b?.(e));},children:jsx("input",{type:"checkbox",checked:g,tabIndex:-1,"aria-label":fillText(oe.selectRowAria,{row:String(e.key)}),onChange:()=>b?.(e),onClick:D=>D.stopPropagation(),onMouseDown:D=>D.stopPropagation()})},"__select"));let te=pe.total,A=D=>y===D?" kanuni-datagrid-cell--focused":"",He={left:a.left.length,center:a.center.length};return a.left.forEach((D,Y)=>{let V=D.def,q=Y===a.left.length-1,o=D.state.id,le=on("left",Y,He);ce.push(jsx("div",{...s(o,le),className:`${qn(V.align,V.dataType)} kanuni-datagrid-cell--pinned${q?" kanuni-datagrid-pin-edge-left":""}${A(o)}${ae(V,o)}${S(o,le)}${re(o)}${zn(me(o))}`,style:{width:D.state.width,insetInlineStart:a.leftOffsets[Y]+te},children:Yn(me(o),y===o,()=>z(V,o,le))},o));}),h>0&&ce.push(jsx("div",{className:"kanuni-datagrid-spacer",style:{width:h}},"__lead")),i.forEach((D,Y)=>{let V=D.def,q=D.state.id,o=on("center",u?.[Y]??Y,He),le=m?.get(q),Tt=le===void 0?"":" kanuni-datagrid-cell--pinned kanuni-datagrid-cell--sticky";ce.push(jsx("div",{...s(q,o),className:`${qn(V.align,V.dataType)}${Tt}${A(q)}${ae(V,q)}${S(q,o)}${re(q)}${zn(me(q))}`,style:le===void 0?{width:D.state.width}:{width:D.state.width,insetInlineStart:le+te},children:Yn(me(q),y===q,()=>z(V,q,o))},q));}),f>0&&ce.push(jsx("div",{className:"kanuni-datagrid-spacer",style:{width:f}},"__trail")),a.right.forEach((D,Y)=>{let V=D.def,q=Y===0,o=D.state.id,le=on("right",Y,He);ce.push(jsx("div",{...s(o,le),className:`${qn(V.align,V.dataType)} kanuni-datagrid-cell--pinned${q?" kanuni-datagrid-pin-edge-right":""}${A(o)}${ae(V,o)}${S(o,le)}${re(o)}${zn(me(o))}`,style:{width:D.state.width,insetInlineEnd:a.rightOffsets[Y]},children:Yn(me(o),y===o,()=>z(V,o,le))},o));}),jsxs("div",{className:`kanuni-datagrid-row${p&&n%2===1?" kanuni-datagrid-row--odd":""}${g?" kanuni-datagrid-row--selected":""}${w?" kanuni-datagrid-row--focused":""}${We?` kanuni-datagrid-row--drop-${We}`:""}`,role:"row","aria-rowindex":n+1+I,"aria-selected":g,"data-row-key":String(e.key),style:Ve===void 0?void 0:{height:Ve},draggable:ne?.draggable?true:void 0,onDragStart:ne?D=>ne.onDragStart(e,D):void 0,onDragEnd:ne?()=>ne.onDragEnd():void 0,onDragOver:ne?D=>ne.onDragOver(e,D):void 0,onDrop:ne?D=>ne.onDrop(e,D):void 0,onMouseDown:B?D=>B(e,D):void 0,onClick:F?D=>F(e,n,D):void 0,onDoubleClick:K?D=>K(e,n,D):void 0,onContextMenu:M?D=>M(e,n,D):void 0,children:[ne&&jsx("span",{className:"kanuni-datagrid-row-grip","data-testid":"dg-row-grip","aria-hidden":"true",title:oe.dragToReorder,onMouseEnter:()=>ne.setDraggable(true),onMouseLeave:()=>ne.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"})]})})}),v?v({row:e.data,node:e,rowIndex:n,selected:g,focused:w}):ce]})}var Pt=memo(Ci);var Rt=26;function Jn(t,e){return computeHeaderBands(t,e)}function Zn(t,e=""){return `kanuni-datagrid-band-cell${t.spacer?" kanuni-datagrid-band-cell--spacer":""}${e}`}function Qn(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 vi({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:a,depth:l,checkboxColumn:i=false,detailColumn:u=false,rowNumberColumn:m=false,rowHeight:h=Rt,bandFold:f}){if(l<=0)return null;let p=_e({rowNumberColumn:m,detailColumn:u,checkboxColumn:i}).total,g=Jn(t.left,l),y=Jn(e,l),w=Jn(t.right,l),v=(N,H,C)=>{let T=C;for(let G=0;G<H;G++)T+=N[G].width;return T};return jsx(Fragment,{children:Array.from({length:l},(N,H)=>jsxs("div",{className:"kanuni-datagrid-band-row",role:"row","aria-rowindex":H+1,style:{width:t.totalWidth+p,height:h,top:H*h},children:[p>0&&jsx("div",{className:"kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned",style:{width:p,insetInlineStart:0},"aria-hidden":"true"}),(g[H]??[]).map((C,T)=>jsx("div",{className:Zn(C,` kanuni-datagrid-band-cell--pinned${T===(g[H]?.length??0)-1?" kanuni-datagrid-pin-edge-left":""}`),role:C.spacer?"presentation":"columnheader","aria-colspan":C.spacer?void 0:C.columnIds.length,style:{width:C.width,insetInlineStart:v(g[H]??[],T,p)},title:C.spacer?void 0:C.label,children:Qn(C,f)},C.columnIds[0])),n>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),(y[H]??[]).map(C=>jsx("div",{className:Zn(C),role:C.spacer?"presentation":"columnheader","aria-colspan":C.spacer?void 0:C.columnIds.length,style:{width:C.width},title:C.spacer?void 0:C.label,children:Qn(C,f)},C.columnIds[0])),a>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:a}}),(w[H]??[]).map((C,T)=>{let G=w[H]??[],I=0;for(let F=T+1;F<G.length;F++)I+=G[F].width;return jsx("div",{className:Zn(C,` kanuni-datagrid-band-cell--pinned${T===0?" kanuni-datagrid-pin-edge-right":""}`),role:C.spacer?"presentation":"columnheader","aria-colspan":C.spacer?void 0:C.columnIds.length,style:{width:C.width,insetInlineEnd:I},title:C.spacer?void 0:C.label,children:Qn(C,f)},C.columnIds[0])})]},H))})}var eo=memo(vi);var Di=()=>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 Gi(t,e){return t.renderHeader?t.renderHeader({column:t}):t.headerName??t.field??e}function Si({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:a,leadingSpacer:l,trailingSpacer:i,sort:u,sortable:m,onSort:h,headerFilter:f=false,filteredColumns:p,onOpenFilter:g,filterIconMode:y="hover",checkboxColumn:w=false,detailColumn:v=false,rowNumberColumn:N=false,rowNumberHeader:H="#",selectAllState:C="none",onToggleSelectAll:T,draggable:G=false,reorderable:I=false,onReorder:F,resizable:B=false,onResize:K,onAutoFit:b,onHeaderContextMenu:E}){let M=J(),d=_e({rowNumberColumn:N,detailColumn:v,checkboxColumn:w}),R=new Map(u.map((s,x)=>[s.columnId,{direction:s.direction,order:x}])),L=new Set(p??[]),W=[...n.left.map(s=>s.state.id),...a.map(s=>s.state.id),...n.right.map(s=>s.state.id)],[j,se]=useState(null),ze=j&&W.includes(j)?j:W[0],ke=s=>{se(s),document.querySelector(`[data-column-id="${s}"].kanuni-datagrid-header-cell`)?.focus();},ue=s=>{let x=W.indexOf(ze),P=Math.min(W.length-1,Math.max(0,x+s));P!==x&&ke(W[P]);},he=useRef(null),Re=useRef(false),[ve,Se]=useState(null),Ie=W,ne=s=>[...n.left,...n.center,...n.right].find(x=>x.state.id===s)?.state.pinned??null,We=(s,x)=>(Re.current?s>x.left+x.width/2:s<x.left+x.width/2)?"before":"after",Ve=(s,x)=>{let P=he.current;if(!I||!P||P===s||ne(P)!==ne(s))return;x.preventDefault(),x.dataTransfer.dropEffect="move";let z=We(x.clientX,x.currentTarget.getBoundingClientRect());Se(S=>S?.id===s&&S.side===z?S:{id:s,side:z});},oe=(s,x)=>{let P=he.current;if(Se(null),!I||!P||P===s||ne(P)!==ne(s))return;if(x.preventDefault(),x.stopPropagation(),We(x.clientX,x.currentTarget.getBoundingClientRect())==="before")F?.(P,s);else {let S=Ie[Ie.indexOf(s)+1];F?.(P,S===P?Ie[Ie.indexOf(s)+2]:S);}he.current=null;},[ce,pe]=useState(null),Fe=(s,x)=>{if(!B)return;x.preventDefault(),x.stopPropagation();let P=x.currentTarget,z=x.clientX,S=s.state.width,re=Re.current?-1:1,me=s.state.id;pe(me),P.setPointerCapture(x.pointerId);let ae=S,Te=false,te=He=>{Te=true,ae=S+(He.clientX-z)*re,K?.(me,ae,false);},A=()=>{P.releasePointerCapture?.(x.pointerId),P.removeEventListener("pointermove",te),P.removeEventListener("pointerup",A),P.removeEventListener("pointercancel",A),Te&&K?.(me,ae,true),pe(null);};P.addEventListener("pointermove",te),P.addEventListener("pointerup",A),P.addEventListener("pointercancel",A);},de=(s,x,P)=>{let z=s.def,S=s.state.id,re=m&&z.sortable!==false,me=f&&z.filterable!==false,ae=R.get(S),Te=G&&z.groupable!==false||I&&z.reorderable!==false,te=ve?.id===S?ve.side:null;return jsxs("div",{className:`kanuni-datagrid-header-cell${x}${re?" kanuni-datagrid-header-cell--sortable":""}${te?` kanuni-datagrid-header-cell--drop-${te}`:""}${ce===S?" kanuni-datagrid-header-cell--resizing":""}`,style:P,role:"columnheader","aria-sort":ae?ae.direction==="asc"?"ascending":"descending":"none","data-column-id":S,tabIndex:S===ze?0:-1,onFocus:()=>se(S),draggable:Te&&ce===null,onDragStart:A=>{A.dataTransfer.setData("text/x-kanuni-column",S),A.dataTransfer.effectAllowed="move",he.current=S,Re.current=getComputedStyle(A.currentTarget).direction==="rtl";},onDragEnd:()=>{he.current=null,Se(null);},onDragOver:I?A=>Ve(S,A):void 0,onDragLeave:I?()=>Se(A=>A?.id===S?null:A):void 0,onDrop:I?A=>oe(S,A):void 0,onContextMenu:E?A=>E(S,A):void 0,onClick:re?A=>h(S,A.shiftKey):void 0,onKeyDown:A=>{A.key==="ArrowRight"?(A.preventDefault(),ue(1)):A.key==="ArrowLeft"?(A.preventDefault(),ue(-1)):A.key==="Home"?(A.preventDefault(),ke(W[0])):A.key==="End"?(A.preventDefault(),ke(W[W.length-1])):me&&A.altKey&&A.key==="ArrowDown"?(A.preventDefault(),g?.(S,A.currentTarget)):re&&(A.key==="Enter"||A.key===" ")&&(A.preventDefault(),h(S,A.shiftKey));},children:[jsx("span",{className:"kanuni-datagrid-header-label",children:Gi(z,S)}),ae&&jsx("span",{className:"kanuni-datagrid-sort-indicator","aria-hidden":"true",children:ae.direction==="asc"?"\u25B2":"\u25BC"}),ae&&u.length>1&&jsx("span",{className:"kanuni-datagrid-sort-order","aria-hidden":"true",children:ae.order+1}),f&&z.filterable!==false&&jsx("button",{type:"button",className:`kanuni-datagrid-filter-button${L.has(S)?" kanuni-datagrid-filter-button--active":""}${y==="always"?" kanuni-datagrid-filter-button--pinned":""}`,"aria-label":fillText(M.filterColumnAria,{column:z.headerName??S}),"aria-haspopup":"dialog","data-filter-button":S,tabIndex:-1,onClick:A=>{A.stopPropagation(),g?.(S,A.currentTarget);},children:jsx(Di,{})}),B&&z.resizable!==false&&jsx("span",{className:"kanuni-datagrid-resize-handle","data-resize-handle":S,role:"presentation",onPointerDown:A=>Fe(s,A),onDoubleClick:A=>{A.stopPropagation(),b?.(S);},onClick:A=>A.stopPropagation()})]},S)};return jsxs("div",{className:"kanuni-datagrid-header",role:"row","aria-rowindex":Math.round(t/Rt)+1,style:{width:n.totalWidth+d.total,top:t||void 0},children:[N&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell",role:"columnheader","aria-colindex":d.colIndex("rowNumberColumn"),"aria-label":M.rowNumberAria,style:{width:bt,insetInlineStart:d.inset("rowNumberColumn")},children:H??""}),v&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell",role:"columnheader","aria-colindex":d.colIndex("detailColumn"),"aria-label":M.detailsAria,style:{width:ln,insetInlineStart:d.inset("detailColumn")}}),w&&jsx("div",{className:"kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell",role:"columnheader","aria-colindex":d.colIndex("checkboxColumn"),style:{width:an,insetInlineStart:d.inset("checkboxColumn")},children:jsx("input",{type:"checkbox",checked:C==="all",ref:s=>{s&&(s.indeterminate=C==="some");},"aria-label":M.selectAllRows,onChange:()=>T?.()})}),n.left.map((s,x)=>de(s,` kanuni-datagrid-header-cell--pinned${x===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:s.state.width,insetInlineStart:n.leftOffsets[x]+d.total})),l>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),a.map(s=>{let x=e?.get(s.state.id);return x===void 0?de(s,"",{width:s.state.width}):de(s," kanuni-datagrid-header-cell--pinned kanuni-datagrid-cell--sticky",{width:s.state.width,insetInlineStart:x+d.total})}),i>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((s,x)=>de(s,` kanuni-datagrid-header-cell--pinned${x===0?" kanuni-datagrid-pin-edge-right":""}`,{width:s.state.width,insetInlineEnd:n.rightOffsets[x]}))]})}var no=memo(Si);function oo(t,e,n=[]){let a=null,l=new Set,i=u=>{if(l.has(u)||(l.add(u),e.isPending(u)))return;let m=e.textFor(u);if(m===null)return;let h=t[u]??"";h!==m&&(h===""&&m===""||(a??={...t},a[u]=m));};for(let u of Object.keys(t))i(u);for(let u of n)i(u);return a??t}function Ni({bandOffset:t=0,stickyInsets:e,layout:n,centerColumns:a,leadingSpacer:l,trailingSpacer:i,values:u,checkboxColumn:m=false,detailColumn:h=false,rowNumberColumn:f=false,placeholder:p,onChange:g,onCommit:y}){let w=J(),v=_e({rowNumberColumn:f,detailColumn:h,checkboxColumn:m}),N=p??w.filterPlaceholder,H=(C,T,G)=>{let I=C.state.id,F=C.def.filterable!==false;return jsx("div",{className:`kanuni-datagrid-filter-cell${T}`,style:G,"data-column-id":I,children:F&&jsx("input",{className:"kanuni-datagrid-filter-input",type:"text",value:u[I]??"",placeholder:N,"aria-label":fillText(w.filterColumnAria,{column:C.def.headerName??I}),"data-filter-for":I,onChange:B=>g(I,B.target.value),onKeyDown:B=>{B.key==="Enter"&&y?.(I,B.target.value);},onBlur:B=>y?.(I,B.target.value)})},I)};return jsxs("div",{className:"kanuni-datagrid-filter-row",role:"row","aria-rowindex":2,style:{width:n.totalWidth+v.total,"--dg-band-offset":`${t}px`},children:[v.total>0&&jsx("div",{className:"kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned",style:{width:v.total,insetInlineStart:0}}),n.left.map((C,T)=>H(C,` kanuni-datagrid-filter-cell--pinned${T===n.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:C.state.width,insetInlineStart:n.leftOffsets[T]+v.total})),l>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:l}}),a.map(C=>{let T=e?.get(C.state.id);return T===void 0?H(C,"",{width:C.state.width}):H(C," kanuni-datagrid-filter-cell--pinned kanuni-datagrid-cell--sticky",{width:C.state.width,insetInlineStart:T+v.total})}),i>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:i}}),n.right.map((C,T)=>H(C,` kanuni-datagrid-filter-cell--pinned${T===0?" kanuni-datagrid-pin-edge-right":""}`,{width:C.state.width,insetInlineEnd:n.rightOffsets[T]}))]})}var ro=memo(Ni);var xr=createContext("");function uo({theme:t,density:e,palette:n,children:a}){let l=useMemo(()=>themeClassName(t,e,n),[t,e,n]);return jsx(xr.Provider,{value:l,children:a})}function co(){return useContext(xr)}function Ae({children:t,dark:e=false}){let[n,a]=useState(null),l=co();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 Ht({anchor:t,onClose:e,margin:n=8,autoFocus:a=false}){let l=useRef(null),[i,u]=useState(t),m=useCallback(h=>{if(l.current=h,!h)return;let f=h.getBoundingClientRect(),p=t.top+f.height+n>window.innerHeight,g=t.top-f.height-n*2,y=p&&g>n?g:t.top;u({left:Math.max(n,Math.min(t.left,window.innerWidth-f.width-n)),top:Math.max(n,Math.min(y,window.innerHeight-f.height-n))}),a&&h.focus();},[t.left,t.top,n,a]);return useEffect(()=>{let h=g=>{let y=l.current;y&&!y.contains(g.target)&&e();},f=g=>{g.key==="Escape"&&e();},p=g=>{let y=l.current,w=g.target;y&&w instanceof Node&&y.contains(w)||e();};return document.addEventListener("mousedown",h),document.addEventListener("keydown",f),window.addEventListener("scroll",p,true),()=>{document.removeEventListener("mousedown",h),document.removeEventListener("keydown",f),window.removeEventListener("scroll",p,true);}},[e]),{position:i,ref:m,elementRef:l}}var un=25,At=new Map,kr=200,zi=200,vr=8;function Yi(t){let e=J();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 qi=memo(function({label:e,display:n,index:a,active:l,checked:i,onToggle:u,onFocus:m}){return jsxs("div",{role:"option","aria-selected":i,tabIndex:0,className:`kanuni-datagrid-filter-item${l?" kanuni-datagrid-filter-item--active":""}`,"data-value":e,"data-index":a,onFocus:()=>m(a),onClick:()=>u(e),children:[jsx("input",{type:"checkbox",readOnly:true,checked:i,tabIndex:-1}),jsx("span",{children:n})]})});function fo({gridId:t,columnId:e,headerLabel:n,entries:a,initialSelected:l,anchor:i,loading:u=false,dark:m,onApply:h,onClose:f,truncated:p=false,onSearch:g,labels:y}){let w=Yi(y),[v,N]=useState(""),[H,C]=useState(0),[T,G]=useState(()=>new Set(l??a.map(s=>s.label))),[I,F]=useState(false),B=useRef(null),K=useRef(null),[b,E]=useState(0),[M,d]=useState(240),R=`${t??""}:${e}`,L=At.get(R),W=useRef(L?.scrollTop??null),[j,se]=useState(L&&L.width&&L.height?{width:L.width,height:L.height}:null),ze=useCallback(s=>{B.current=s,s?.focus();},[]),ke=useRef(null),ue=useMemo(()=>{let s=v.trim().toLowerCase();if(!s||p)return a;let x=ke.current;(!x||x.entries!==a)&&(x={entries:a,lowered:a.map(z=>z.label.toLowerCase()),needle:"",result:[]},ke.current=x);let P=x.needle!==""&&s.includes(x.needle)?x.result.filter(z=>z.label.toLowerCase().includes(s)):a.filter((z,S)=>x.lowered[S].includes(s));return x.needle=s,x.result=P,P},[a,v,p]);useEffect(()=>{if(!g)return;let s=setTimeout(()=>g(v),150);return ()=>clearTimeout(s)},[v,g]),useEffect(()=>{I||l||G(new Set(a.map(s=>s.label)));},[a,I,l]);let he=useCallback(s=>{K.current=s,s&&d(s.clientHeight||240);},[]);useEffect(()=>{let s=K.current;!s||W.current===null||u||s.scrollHeight<=s.clientHeight||(s.scrollTop=W.current,W.current=null,E(s.scrollTop));});let Re=useMemo(()=>{let s=ue.length,x=Math.max(0,Math.floor(b/un)-vr),P=Math.ceil(M/un)+vr*2,z=Math.min(x,Math.max(0,s-1)),S=Math.min(s,z+P);return {start:z,end:S,count:s,rows:ue.slice(z,S)}},[ue,b,M]),ve=Ht({anchor:i,onClose:f}),[Se,Ie]=useState(null),ne=(Se??ve.position.left)+(j?.width??260)+48<window.innerWidth?"right":"left",We=s=>{s.preventDefault(),s.stopPropagation();let x=ve.elementRef.current;if(!x)return;let P=x.getBoundingClientRect(),z=ne,S={x:s.clientX,y:s.clientY,w:P.width,h:P.height,left:P.left},re=null,me=Te=>{let te=Te.clientX-S.x,A=Te.clientY-S.y,He=window.innerHeight-P.top-12,D=Math.min(He,Math.max(zi,S.h+A));if(z==="right"){let Y=window.innerWidth-S.left-12;re={width:Math.min(Y,Math.max(kr,S.w+te)),height:D},se(re);}else {let Y=S.left+S.w,V=Y-12,q=Math.min(V,Math.max(kr,S.w-te));re={width:q,height:D},se(re),Ie(Y-q);}K.current&&d(K.current.clientHeight);},ae=()=>{if(window.removeEventListener("pointermove",me),window.removeEventListener("pointerup",ae),re){let Te=At.get(R);At.set(R,{scrollTop:Te?.scrollTop??K.current?.scrollTop??0,width:Math.round(re.width),height:Math.round(re.height)});}};window.addEventListener("pointermove",me),window.addEventListener("pointerup",ae);},Ve=useCallback(s=>{F(true),G(x=>{let P=new Set(x);return P.has(s)?P.delete(s):P.add(s),P});},[]),oe=useCallback(s=>C(s),[]),ce=()=>{if(u)return;if(T.size===a.length){h(null);return}let s=a.filter(S=>T.has(S.label)),x=s.some(S=>S.value===null||S.value===void 0),P=s.filter(S=>S.value!==null&&S.value!==void 0),z;P.length===0?z={columnId:e,operator:"isnull"}:x?z={logic:"or",nodes:[{columnId:e,operator:"in",value:P.map(S=>S.value)},{columnId:e,operator:"isnull"}]}:z={columnId:e,operator:"in",value:P.map(S=>S.value)},h(z);},pe=s=>{let x=Math.max(0,Math.min(ue.length-1,s));C(x);let P=ve.elementRef.current?.querySelector(`.kanuni-datagrid-filter-item[data-index="${x}"]`);P?.focus(),P?.scrollIntoView({block:"nearest"});},Fe=s=>s.key.length===1&&!s.ctrlKey&&!s.metaKey&&!s.altKey,de=s=>{let x=s.target===B.current;if(s.key==="Backspace"&&!x){s.preventDefault(),B.current?.focus(),N(P=>P.slice(0,-1)),C(0);return}if(s.key==="ArrowDown"){s.preventDefault(),pe(x?0:H+1);return}if(s.key==="ArrowUp"){s.preventDefault(),pe(x?ue.length-1:H-1);return}if(!x&&(s.key==="Home"||s.key==="End")){s.preventDefault(),pe(s.key==="Home"?0:ue.length-1);return}if(s.key===" "&&!x){s.preventDefault();let P=ue[H];P&&Ve(P.label);return}if(s.key==="Enter"){s.preventDefault(),ce();return}!x&&Fe(s)&&s.key!==" "&&(s.preventDefault(),B.current?.focus(),N(P=>P+s.key),C(0));};return jsx(Ae,{dark:m,children:jsxs("div",{ref:ve.ref,className:"kanuni-datagrid-filter-popup",style:{left:Se??ve.position.left,top:ve.position.top,...j?{width:j.width,height:j.height,maxHeight:"none"}:null},role:"dialog","aria-label":`${n} filter`,onKeyDown:de,children:[jsx("div",{className:`kanuni-datagrid-popup-resize kanuni-datagrid-popup-resize--${ne}`,"data-testid":"dg-filter-resize",onPointerDown:We}),jsx("input",{ref:ze,className:"kanuni-datagrid-filter-search",type:"search",placeholder:w.search,value:v,onChange:s=>{N(s.target.value),C(0);},"data-testid":"dg-filter-search"}),p&&jsx("p",{className:"kanuni-datagrid-filter-truncated","data-testid":"dg-filter-truncated",children:w.truncated}),jsxs("div",{className:"kanuni-datagrid-filter-actions",children:[jsx("button",{type:"button",onClick:()=>{F(true),G(new Set(a.map(s=>s.label)));},children:w.selectAll}),jsx("button",{type:"button",onClick:()=>{F(true),G(new Set);},children:w.clear})]}),jsxs("div",{ref:he,className:"kanuni-datagrid-filter-list",role:"listbox","aria-multiselectable":"true","aria-busy":u||void 0,"aria-setsize":ue.length,onScroll:s=>{let x=s.target.scrollTop;E(x),W.current=null;let P=At.get(R);At.set(R,{...P,scrollTop:x});},children:[u&&jsx("div",{className:"kanuni-datagrid-filter-empty",children:w.loading}),!u&&ue.length===0&&jsx("div",{className:"kanuni-datagrid-filter-empty",children:w.noMatch}),Re.count>0&&jsx("div",{style:{height:ue.length*un,position:"relative"},children:jsx("div",{style:{transform:`translateY(${Re.start*un}px)`},children:Re.rows.map((s,x)=>{let P=Re.start+x;return jsx(qi,{label:s.label,display:s.label===""?w.blank:s.label,index:P,active:P===H,checked:T.has(s.label),onToggle:Ve,onFocus:oe},s.label)})})})]}),jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsx("button",{type:"button",onClick:f,children:w.cancel}),jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:ce,disabled:u,"data-testid":"dg-filter-apply",children:w.apply})]})]})})}var go="text/x-kanuni-column";function Zi({columns:t,levels:e,onSetLevels:n,maxLevels:a=1,onExpandAll:l,onCollapseAll:i,emptyText:u}){let m=J(),h=u??m.groupPanelHint,[f,p]=useState(false),g=useRef(null),[y,w]=useState(null),v=b=>t.find(M=>M.state.id===b)?.def.headerName??b,N=b=>{if(!b||e.includes(b))return;let E=e.length>=a?e.slice(0,a-1):[...e];n([...E,b]);},H=b=>n(e.filter(E=>E!==b)),C=(b,E)=>{let M=e.filter(R=>R!==b),d=Math.max(0,Math.min(M.length,E));n([...M.slice(0,d),b,...M.slice(d)]);},T=(b,E,M)=>{if(b===E)return;let R=e.filter(L=>L!==b).indexOf(E);R<0||C(b,M==="before"?R:R+1);},G=(b,E)=>{let M=b+E;M<0||M>=e.length||T(e[b],e[M],E<0?"before":"after");},I=(b,E)=>b<E.top+E.height/2?"before":"after",F=(b,E)=>{E.preventDefault(),E.stopPropagation();let M=I(E.clientY,E.currentTarget.getBoundingClientRect());w(null),p(false);let d=g.current;if(g.current=null,d){T(d,e[b],M);return}let R=E.dataTransfer.getData(go);if(!R||e.includes(R))return;if(e.length>=a){N(R);return}let L=M==="before"?b:b+1;n([...e.slice(0,L),R,...e.slice(L)]);},B=(b,E,M)=>{let d=M.ctrlKey||M.metaKey;d&&(M.key==="ArrowUp"||M.key==="ArrowLeft")?(M.preventDefault(),G(b,-1)):d&&(M.key==="ArrowDown"||M.key==="ArrowRight")?(M.preventDefault(),G(b,1)):(M.key==="Delete"||M.key==="Backspace")&&(M.preventDefault(),H(E));},K=t.filter(b=>!e.includes(b.state.id));return jsxs("div",{className:`kanuni-datagrid-group-panel${f?" kanuni-datagrid-group-panel--over":""}`,onDragOver:b=>{b.preventDefault(),p(true);},onDragLeave:()=>p(false),onDrop:b=>{if(b.preventDefault(),p(false),w(null),g.current){g.current=null;return}N(b.dataTransfer.getData(go));},children:[e.length>0?jsx("div",{className:"kanuni-datagrid-group-levels",children:e.map((b,E)=>jsx("div",{className:`kanuni-datagrid-group-level${y?.index===E?` kanuni-datagrid-group-level--drop-${y.side}`:""}`,style:{"--dg-group-level":E},"data-group-level":E,onDragOver:M=>{M.preventDefault(),M.stopPropagation();let d=I(M.clientY,M.currentTarget.getBoundingClientRect());w(R=>R?.index===E&&R.side===d?R:{index:E,side:d});},onDragLeave:()=>w(M=>M?.index===E?null:M),onDrop:M=>F(E,M),children:jsxs("span",{className:"kanuni-datagrid-group-chip",draggable:a>1&&e.length>1,tabIndex:0,role:"button","aria-label":`${fillText(m.groupLevelAria,{n:E+1})}: ${v(b)}`,onDragStart:M=>{g.current=b,M.dataTransfer.effectAllowed="move",M.dataTransfer.setData(go,b);},onDragEnd:()=>{g.current=null,w(null);},onKeyDown:M=>B(E,b,M),children:[a>1&&jsx("span",{className:"kanuni-datagrid-group-chip-level",children:E+1}),v(b),jsx("button",{type:"button","aria-label":fillText(m.groupRemoveAria,{column:v(b)}),onClick:()=>H(b),children:"\xD7"})]})},b))}):jsx("span",{className:"kanuni-datagrid-group-panel-hint",children:h}),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:a>1?m.groupAddLevel:m.groupByColumn}),a>1?jsxs("select",{value:"",disabled:K.length===0,onChange:b=>N(b.target.value),children:[jsx("option",{value:"",children:m.groupAddLevelButton}),K.map(b=>jsx("option",{value:b.state.id,children:b.def.headerName??b.state.id},b.state.id))]}):jsxs("select",{value:e[0]??"",onChange:b=>n(b.target.value?[b.target.value]:[]),children:[jsx("option",{value:"",children:m.groupNoGrouping}),t.map(b=>jsx("option",{value:b.state.id,children:b.def.headerName??b.state.id},b.state.id))]})]})]})]})}var wo=memo(Zi);function tl({layout:t,centerColumns:e,leadingSpacer:n,trailingSpacer:a,defs:l,values:i,checkboxColumn:u=false,detailColumn:m=false,rowNumberColumn:h=false,onPickSummary:f,emptyHint:p="",position:g="bottom",bandOffset:y=0,headerRowsBetween:w=0}){let v=J(),N=summaryTypeLabels(v),H=new Map(l.map(G=>[G.columnId,G])),C=_e({rowNumberColumn:h,detailColumn:m,checkboxColumn:u}).total,T=(G,I,F)=>{let B=G.state.id,K=H.get(B),b=K?i[summaryKey(K.columnId,K.type)]:void 0,E=G.def.dataType==="number";return jsx("div",{className:`kanuni-datagrid-footer-cell${I}${E?" kanuni-datagrid-footer-cell--number":""}${K?" kanuni-datagrid-footer-cell--active":""}`,style:F,role:"gridcell","data-column-id":B,"data-summary-type":K?.type??"",title:K?`${summaryLabel(K,N)} \u2014 ${G.def.headerName??B}`:void 0,onContextMenu:f?M=>f(B,M):void 0,onClick:f?M=>f(B,M):void 0,children:K?jsx("span",{className:"kanuni-datagrid-footer-value",children:formatSummaryValue(K,b,G.def)}):jsx("span",{className:"kanuni-datagrid-footer-hint",children:p})},B)};return jsxs("div",{className:`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${g}`,role:"row","aria-label":v.columnTotalsAria,style:{width:t.totalWidth+C,"--dg-band-offset":`${y}px`,"--dg-pinned-gap":String(w)},children:[C>0&&jsx("div",{className:"kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned",style:{width:C,insetInlineStart:0}}),t.left.map((G,I)=>T(G,` kanuni-datagrid-footer-cell--pinned${I===t.left.length-1?" kanuni-datagrid-pin-edge-left":""}`,{width:G.state.width,insetInlineStart:t.leftOffsets[I]+C})),n>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:n}}),e.map(G=>T(G,"",{width:G.state.width})),a>0&&jsx("div",{className:"kanuni-datagrid-spacer",style:{width:a}}),t.right.map((G,I)=>T(G,` kanuni-datagrid-footer-cell--pinned${I===0?" kanuni-datagrid-pin-edge-right":""}`,{width:G.state.width,insetInlineEnd:t.rightOffsets[I]}))]})}var cn=memo(tl);function rl(t,e){return `__dg_pinned_${t}_${e}`}function al({gridId:t,side:e,rows:n,layout:a,columnModel:l,centerColumns:i,centerIndices:u,stickyInsets:m,leadingSpacer:h,trailingSpacer:f,checkboxColumn:p=false,detailColumn:g=false,rowNumberColumn:y=false,rowHeight:w,bandOffset:v=0,headerRowsBetween:N,ariaRowBase:H}){return n.length===0?null:jsx("div",{className:`kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--${e}`,role:"rowgroup",style:{width:a.totalWidth||"100%","--dg-band-offset":`${v}px`,"--dg-pinned-gap":String(N)},children:n.map((C,T)=>{let G={kind:"data",key:rl(e,T),sourceIndex:-1,data:C};return jsx(Pt,{gridId:t,node:G,index:T,layout:a,columnModel:l,centerColumns:i,centerIndices:u,stickyInsets:m,leadingSpacer:h,trailingSpacer:f,striped:false,selected:false,focusedColumnId:null,checkboxColumn:p,detailColumn:g,rowNumberColumn:y,rowNumber:null,headerRowCount:H,height:w},G.key)})})}var pn=memo(al);async function Ft(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 lt({anchor:t,onClose:e,children:n,dark:a,className:l="",label:i,role:u="dialog"}){let m=Ht({anchor:t,onClose:e});return jsx(Ae,{dark:a,children:jsx("div",{ref:m.ref,className:`kanuni-datagrid-filter-popup ${l}`.trim(),style:{left:m.position.left,top:m.position.top},role:u,"aria-label":i,children:n})})}function ul(t){let e=J();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 cl=()=>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 pl({controller:t,search:e=true,exportCsv:n=true,exportExcel:a=false,exportPdf:l=false,columnChooser:i=true,dark:u,onOpenColumnChooser:m,itemsBefore:h,itemsAfter:f,searchDebounce:p=200,labels:g}){let y=ul(g),[w,v]=useState(t.getSearchText()),[N,H]=useState(null),[C,T]=useState(null),[G,I]=useState(null);useEffect(()=>{let b=setTimeout(()=>t.setSearchText(w),p);return ()=>clearTimeout(b)},[t,w,p]);let[F,B]=useState(()=>t.getSelectedCount());useEffect(()=>(B(t.getSelectedCount()),t.events.on("selectionChanged",()=>B(t.getSelectedCount()))),[t]);let K=async b=>{H(b),I(null);let E=await Ft(t,b);E.error?I(E.error):T(null),H(null);};return jsxs("div",{className:"kanuni-datagrid-toolbar",children:[h,e&&jsx("input",{type:"search",className:"kanuni-datagrid-toolbar-search",placeholder:y.search,value:w,"aria-label":y.search,"data-testid":"dg-toolbar-search",onChange:b=>v(b.target.value)}),jsx("div",{className:"kanuni-datagrid-toolbar-spacer"}),i&&jsx("button",{type:"button","aria-haspopup":"dialog","data-testid":"dg-column-chooser",onClick:b=>{let E=b.currentTarget.getBoundingClientRect();m?.({left:E.left,top:E.bottom+2});},children:y.columns}),(n||a||l)&&jsx("button",{type:"button",className:"kanuni-datagrid-toolbar-icon-button","aria-haspopup":"menu","aria-label":y.exportMenu,title:y.exportMenu,disabled:N!==null,"data-testid":"dg-export-menu",onClick:b=>{let E=b.currentTarget.getBoundingClientRect();T(C?null:{left:E.right-190,top:E.bottom+2});},children:N?jsx("span",{className:"kanuni-datagrid-toolbar-busy"}):jsx(cl,{})}),C&&jsxs(lt,{anchor:C,onClose:()=>T(null),dark:u,role:"menu",label:y.exportMenu,className:"kanuni-datagrid-export-menu",children:[n&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:N!==null,"data-testid":"dg-export-csv",onClick:()=>K("csv"),children:N==="csv"?y.exporting:y.csv}),a&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:N!==null,"data-testid":"dg-export-excel",onClick:()=>K("excel"),children:N==="excel"?y.exporting:y.excel}),a&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:N!==null||F===0,"data-testid":"dg-export-excel-selected",onClick:()=>K("excel-selected"),children:N==="excel-selected"?y.exporting:y.excelSelected}),l&&jsx("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:N!==null,"data-testid":"dg-export-pdf",onClick:()=>K("pdf"),children:N==="pdf"?y.exporting:y.pdf})]}),f,G&&jsx("span",{className:"kanuni-datagrid-toolbar-error",role:"alert",children:G})]})}var ho=memo(pl);function fl(t){let e=J();return useMemo(()=>({title:e.hiddenColumns,empty:e.noHiddenColumns,showAll:e.showAll,ok:e.ok,...t}),[e,t])}function bo({controller:t,columns:e,anchor:n,onClose:a,dark:l,labels:i}){let u=fl(i),m=e.filter(h=>!h.visible);return jsxs(lt,{anchor:n,onClose:a,dark:l,label:u.title,className:"kanuni-datagrid-column-chooser",children:[jsxs("div",{className:"kanuni-datagrid-filter-list",children:[m.length===0&&jsx("div",{className:"kanuni-datagrid-chooser-empty",children:u.empty}),m.map(h=>{let f=t.getColumnModel().getDef(h.id);return jsxs("label",{className:"kanuni-datagrid-filter-item",children:[jsx("input",{type:"checkbox",checked:false,"data-column-toggle":h.id,onChange:()=>t.setColumnVisible(h.id,true)}),jsx("span",{children:f?.headerName??h.id})]},h.id)})]}),m.length>0&&jsxs("div",{className:"kanuni-datagrid-filter-footer",children:[jsx("button",{type:"button",onClick:()=>m.forEach(h=>t.setColumnVisible(h.id,true)),children:u.showAll}),jsx("button",{type:"button",className:"kanuni-datagrid-filter-primary",onClick:a,children:u.ok})]})]})}function hl(t){let e=J();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 bl({page:t,pageCount:e,pageSize:n,pageSizes:a=[25,50,100,250],totalRows:l,onPage:i,onNext:u,onPrevious:m,onPageSize:h,labels:f}){let p=hl(f),g=t<=0,y=t>=e-1,w=l===0?0:t*n+1,v=Math.min(l,(t+1)*n);return jsxs("div",{className:"kanuni-datagrid-pager",role:"navigation","aria-label":"Pagination",children:[jsxs("label",{className:"kanuni-datagrid-pager-size",children:[jsx("span",{children:p.rowsPerPage}),jsx("select",{value:n,"data-testid":"dg-page-size",onChange:N=>h(Number(N.target.value)),children:a.map(N=>jsx("option",{value:N,children:N},N))})]}),jsxs("span",{className:"kanuni-datagrid-pager-range","data-testid":"dg-page-range",children:[w.toLocaleString(),"\u2013",v.toLocaleString()," ",p.of," ",l.toLocaleString()]}),jsxs("div",{className:"kanuni-datagrid-pager-buttons",children:[jsx("button",{type:"button","aria-label":p.first,disabled:g,onClick:()=>i(0),children:"\xAB"}),jsx("button",{type:"button","aria-label":p.previous,disabled:g,"data-testid":"dg-page-prev",onClick:m,children:"\u2039"}),jsxs("span",{className:"kanuni-datagrid-pager-current","data-testid":"dg-page-current",children:[p.page," ",t+1," ",p.of," ",e]}),jsx("button",{type:"button","aria-label":p.next,disabled:y,"data-testid":"dg-page-next",onClick:u,children:"\u203A"}),jsx("button",{type:"button","aria-label":p.last,disabled:y,onClick:()=>i(e-1),children:"\xBB"})]})]})}var Ro=memo(bl);function Tl(t){let e=J();return useMemo(()=>({clear:e.filterRemove,toggle:e.filterToggle,builder:e.filterEditBuilder,empty:e.filterNone,...t}),[e,t])}function Dl({controller:t,onOpenBuilder:e,alwaysVisible:n=false,describeOptions:a,labels:l}){let i=Tl(l),u=J(),[,m]=useState(0);useEffect(()=>t.events.on("filterChanged",()=>m(g=>g+1)),[t]);let h=t.getEffectiveFilter(),f=t.isFilterEnabled(),p=describeFilter(h,t.getColumnModel(),{...a,labels:{...filterLabels(u),...a?.labels}});return !h&&!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:!h,"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:!h,title:i.toggle,"aria-label":i.toggle,"data-testid":"dg-filter-panel-toggle",onChange:g=>t.setFilterEnabled(g.target.checked)}),jsx("span",{className:"kanuni-datagrid-filter-panel-text",title:p??void 0,"data-testid":"dg-filter-panel-text",children:p??i.empty}),e&&jsx("button",{type:"button",className:"kanuni-datagrid-filter-panel-builder",title:i.builder,"aria-label":i.builder,"data-testid":"dg-filter-panel-builder",onClick:e,children:"\u25BE"})]})}var yo=memo(Dl);var gn=t=>!t.separator&&!t.disabled;function wn({x:t,y:e,items:n,context:a,onClose:l,dark:i=false,label:u}){let m=J(),h=useRef(null),[f,p]=useState({left:t,top:e}),[g,y]=useState(()=>n.findIndex(gn)),[w,v]=useState(null),[N,H]=useState(null),C=useRef(null),[T,G]=useState(null);useEffect(()=>H(null),[w]);let I=useCallback((d,R)=>{if(v(d),d===null||!R)return;let L=R.getBoundingClientRect();G({left:L.left,right:L.right,top:L.top});},[]),F=d=>h.current?.querySelector(`[data-item-index="${d}"]`)??null,B=useCallback(d=>{if(C.current=d,!d||!T)return;let R=8,L=d.getBoundingClientRect(),W=Math.max(R,Math.min(T.top-4,window.innerHeight-L.height-R)),se=T.right+L.width+R<=window.innerWidth?T.right:Math.max(R,T.left-L.width);H({left:se,top:W});},[T]),K=useCallback(d=>{if(h.current=d,!d)return;let R=d.getBoundingClientRect(),L=8;p({left:Math.max(L,Math.min(t,window.innerWidth-R.width-L)),top:Math.max(L,Math.min(e,window.innerHeight-R.height-L))}),d.focus();},[t,e]);useEffect(()=>{let d=L=>{let W=L.target;C.current?.contains(W)||h.current&&!h.current.contains(W)&&l();},R=()=>l();return document.addEventListener("mousedown",d),window.addEventListener("scroll",R,true),()=>{document.removeEventListener("mousedown",d),window.removeEventListener("scroll",R,true);}},[l]);let b=(d,R)=>{let L=n.length;for(let W=1;W<=L;W++){let j=(d+R*W+L*L)%L;if(gn(n[j]))return j}return d},E=d=>{let R=n[d];if(!(!R||!gn(R))){if(R.items?.length){I(d,F(d));return}R.onSelect?.(a),l();}},M=d=>{switch(d.key){case "ArrowDown":y(R=>b(R,1));break;case "ArrowUp":y(R=>b(R,-1));break;case "Home":y(n.findIndex(gn));break;case "End":y(b(0,-1));break;case "ArrowRight":if(n[g]?.items?.length)I(g,F(g));else return;break;case "ArrowLeft":if(w!==null)I(null);else return;break;case "Enter":case " ":E(g);break;case "Escape":l();break;case "Tab":l();return;default:return}d.preventDefault(),d.stopPropagation();};return jsxs(Ae,{dark:i,children:[jsx("div",{ref:K,className:"kanuni-datagrid-context-menu",role:"menu","aria-label":u??m.rowActions,tabIndex:-1,style:{left:f.left,top:f.top},onKeyDown:M,children:n.map((d,R)=>d.separator?jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},d.id??`sep-${R}`):jsx("div",{className:"kanuni-datagrid-menu-row",children:jsxs("button",{type:"button",role:"menuitem",className:`kanuni-datagrid-menu-item${R===g?" kanuni-datagrid-menu-item--active":""}`,disabled:d.disabled,"data-item-index":R,"aria-haspopup":d.items?.length?"menu":void 0,"aria-expanded":d.items?.length?w===R:void 0,onMouseEnter:L=>{y(R),I(d.items?.length?R:null,L.currentTarget);},onClick:()=>E(R),children:[d.icon&&jsx("span",{className:"kanuni-datagrid-menu-icon",children:d.icon}),jsx("span",{className:"kanuni-datagrid-menu-label",children:d.label}),d.shortcut&&jsx("span",{className:"kanuni-datagrid-menu-shortcut",children:d.shortcut}),d.items?.length?jsx("span",{className:"kanuni-datagrid-menu-caret",children:"\u203A"}):null]})},d.id??R))}),w!==null&&n[w]?.items?.length?jsx("div",{ref:B,className:"kanuni-datagrid-context-menu kanuni-datagrid-submenu",style:N?{left:N.left,top:N.top}:{left:0,top:0,visibility:"hidden"},role:"menu",children:n[w].items.map((d,R)=>d.separator?jsx("div",{className:"kanuni-datagrid-menu-separator",role:"separator"},d.id??`sub-sep-${R}`):jsxs("button",{type:"button",role:"menuitem",className:"kanuni-datagrid-menu-item",disabled:d.disabled,onClick:()=>{d.onSelect?.(a),l();},children:[d.icon&&jsx("span",{className:"kanuni-datagrid-menu-icon",children:d.icon}),jsx("span",{className:"kanuni-datagrid-menu-label",children:d.label})]},d.id??R))}):null]})}var Sl=typeof navigator<"u"&&/Mac|iPhone|iPad|iPod/.test(navigator.platform??""),ko=Sl?"\u2318":"Ctrl+",Pr=`${ko}C`,El=`${ko}X`,Nl=`${ko}V`;function Ct(t,e={}){let n=t.getClipboardText(e);t.notifyClipboardGesture("copy",n?n.split(`
2
+ `).length:0,()=>!n||!navigator.clipboard?.writeText?false:(Lr(n),true));}function Lr(t){navigator.clipboard?.writeText(t).catch(()=>{});}function Ml(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 Pl(t){return t===false?[]:Array.isArray(t)?t:["csv","excel","excel-selected","pdf"]}var Ll={csv:"exportCsv",excel:"exportExcel","excel-selected":"exportExcelSelected",pdf:"exportPdf"};function vo(t,e,n,a,l){if(n===false)return [];let i=n===true||n===void 0?{}:n,u=[];i.copy!==false&&u.push({id:"__dg-copy",label:e.menuCopy,shortcut:Pr,onSelect:()=>Ct(t)}),i.copyWithHeaders!==false&&u.push({id:"__dg-copy-headers",label:e.menuCopyWithHeaders,onSelect:()=>Ct(t,{includeHeaders:true})}),i.copyWithGroupHeaders!==false&&Ml(t)&&u.push({id:"__dg-copy-group-headers",label:e.menuCopyWithGroupHeaders,onSelect:()=>Ct(t,{includeGroupHeaders:true})});let m=Pl(i.export);if(m.length>0){let h=t.getSelectedCount()===0;u.push({id:"__dg-export",label:e.menuExport,items:m.map(f=>({id:`__dg-export-${f}`,label:e[Ll[f]],disabled:f==="excel-selected"&&h,onSelect:()=>{Ft(t,f).then(p=>{p.error&&l?.(p.error);});}}))});}return u.length>0&&a&&u.unshift({id:"__dg-sep-builtin",separator:true}),u}function Do({anchor:t,value:e,dark:n,onCommit:a,onCancel:l}){let i=J(),[u,m]=useState(e),h=useRef(null);useEffect(()=>{let p=h.current;p&&(p.focus(),p.select());},[]);let f=()=>{let p=u.trim();a(p===""?null:p);};return jsxs(lt,{anchor:t,onClose:l,dark:n,label:i.noteEditorAria,className:"kanuni-datagrid-note-editor",children:[jsx("textarea",{ref:h,className:"kanuni-datagrid-note-input",value:u,rows:4,"aria-label":i.noteEditorAria,placeholder:i.notePlaceholder,onChange:p=>m(p.target.value),onKeyDown:p=>{p.key==="Enter"&&(p.ctrlKey||p.metaKey)&&(p.preventDefault(),f()),p.key==="Escape"&&(p.preventDefault(),l());}}),jsxs("div",{className:"kanuni-datagrid-note-actions",children:[jsx("button",{type:"button",className:"kanuni-datagrid-note-cancel",onClick:l,children:i.cancel}),jsx("button",{type:"button",className:"kanuni-datagrid-note-save",onClick:f,children:i.save})]})]})}function Fl(t){let e=J();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 Bl=new Set(["filtering","sorting","computing","encoding","exporting"]);function So({controller:t,delay:e=300,labels:n,cancellable:a=true,forced:l=false}){let[i,u]=useState(()=>t.getBusy()),[m,h]=useState(false);useEffect(()=>(u(t.getBusy()),t.events.on("busyChanged",v=>u(v))),[t]);let f=i.busy&&i.background!==true;useEffect(()=>{if(!f){h(false);return}let v=setTimeout(()=>h(true),e);return ()=>clearTimeout(v)},[f,e]);let p=Fl(n);if(!l&&(!m||!f))return null;let g=i.phase?p[i.phase]:p.busy,y=i.progress===null?null:Math.max(0,Math.min(100,i.progress)),w=a&&i.phase!==null&&Bl.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:g}),y!==null&&jsxs("div",{className:"kanuni-datagrid-loading-progress",role:"progressbar","aria-valuenow":Math.round(y),"aria-valuemin":0,"aria-valuemax":100,children:[jsx("div",{className:"kanuni-datagrid-loading-track",children:jsx("div",{className:"kanuni-datagrid-loading-fill",style:{width:`${y}%`}})}),jsxs("span",{className:"kanuni-datagrid-loading-percent",children:[Math.round(y),"%"]})]}),w&&jsx("button",{type:"button",className:"kanuni-datagrid-loading-cancel",onClick:()=>t.cancel(),"data-testid":"dg-loading-cancel",children:p.cancel})]})})}var Fr=null;function Kl(){return typeof document>"u"?null:(Fr??=document.createElement("canvas"),Fr.getContext("2d"))}function Br(t){let e=getComputedStyle(t);return `${e.fontStyle} ${e.fontWeight} ${e.fontSize} ${e.fontFamily}`}function hn(t,e){let n=Kl();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 u=0;if(l){let m=l.querySelector(".kanuni-datagrid-header-label")??l;n.font=Br(m),u=n.measureText(m.textContent??"").width+44;}if(i.length>0){n.font=Br(i[0]);for(let m=0;m<i.length;m++){let h=i[m].textContent??"";if(h==="")continue;let f=n.measureText(h).width+20;f>u&&(u=f);}}return u===0?null:Math.round(Math.min(640,Math.max(48,u)))}function Eo(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 bn="application/x-kanuni-row";function Mo(t,e){let n=!!e?.enabled,a=e?.group??null,l=e?.allowReordering??true,i=e?.allowDropInsert??a!==null,[u,m]=useState(false),[h,f]=useState(null),p=useRef(null),g=useRef(false),y=useRef(null),w=useRef(null),v=useRef(e);v.current=e;let N=useCallback(d=>t.getRowByKey(d),[t]),H=(d,R)=>{let L=R.getBoundingClientRect();return d.clientY<L.top+L.height/2?"before":"after"},C=useCallback((d,R)=>{if(!isDataRow(d))return;w.current=d.key,y.current=d.key,g.current=false,p.current=null;let L={gridId:t.gridId,group:a,rowKey:d.key,row:d.data};R.dataTransfer.setData(bn,JSON.stringify(L)),R.dataTransfer.setData("text/plain",String(d.key)),R.dataTransfer.effectAllowed="move",t.notifyRowDrag("enter",{rowKey:d.key}),R.stopPropagation();},[t,a]),T=useCallback(()=>{let d=y.current;d!==null&&t.notifyRowDragEnd({rowKey:d,dropped:g.current,overKey:p.current?.key??null,position:p.current?.side??null}),g.current=false,p.current=null,y.current=null,w.current=null,f(null),m(false);},[t]),G=useCallback(d=>d.dataTransfer.types.includes(bn)?w.current!==null?l:i&&a!==null:false,[l,i,a]),I=useCallback((d,R)=>{if(!isDataRow(d)||!G(R))return;if(R.preventDefault(),R.dataTransfer.dropEffect="move",w.current===d.key){p.current=null,f(null);return}let L=H(R,R.currentTarget),W=p.current?.key!==d.key||p.current.side!==L;p.current={key:d.key,side:L},f(j=>j?.key===d.key&&j.side===L?j:{key:d.key,side:L}),W&&w.current!==null&&t.notifyRowDrag("move",{rowKey:w.current,overKey:d.key,position:L});},[G,t]),F=useCallback((d,R,L)=>{let W=null;try{let se=d.dataTransfer.getData(bn);W=se?JSON.parse(se):null;}catch{W=null;}if(!W)return;if(W.gridId===t.gridId){if(!l)return;let se=v.current?.onReorder;if(se){se({dragKey:W.rowKey,targetKey:R,position:L,row:N(W.rowKey)});return}t.moveRow(W.rowKey,R,L);return}!i||a===null||W.group!==a||v.current?.onAdd?.({row:W.row,rowKey:W.rowKey,otherGridId:W.gridId,targetKey:R,position:L});},[t,l,i,a,N]),B=useCallback((d,R)=>{if(f(null),!isDataRow(d)||!G(R))return;R.preventDefault(),R.stopPropagation();let L=H(R,R.currentTarget);g.current=true,p.current={key:d.key,side:L},F(R,d.key,L),w.current=null;},[G,F]),K=useCallback(d=>{G(d)&&(d.preventDefault(),d.dataTransfer.dropEffect="move");},[G]),b=useCallback(d=>{f(null),G(d)&&(d.preventDefault(),g.current=true,p.current=null,F(d,null,"after"),w.current=null);},[G,F]),E=useCallback(d=>{let R=d.relatedTarget;R&&d.currentTarget.contains(R)||w.current!==null&&(p.current=null,f(null),t.notifyRowDrag("leave",{rowKey:w.current}));},[t]);return {handlers:n?{draggable:u,setDraggable:m,onDragStart:C,onDragEnd:T,onDragOver:I,onDrop:B}:void 0,dropAt:n?h:null,bodyHandlers:n?{onDragOver:K,onDrop:b,onDragLeave:E}:void 0}}var Yl=400;function _r(t){return t.scrollWidth>t.clientWidth+1||t.scrollHeight>t.clientHeight+1}function $r(t){return (t.textContent??"").trim()}function ql(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 u=e.tooltip({value:a,row:n.data,node:n,column:e});return u||null}if(typeof e.tooltip=="string")return e.tooltip||null;if(e.tooltipField){let u=n.data[e.tooltipField];return u==null||u===""?null:String(u)}}return l&&l.length>0?l:null}function Po({rootRef:t,columnModel:e,getRowNode:n,getNote:a,config:l}){let i=l?.enabled!==false,u=l?.delay??Yl,m=l?.showOnTruncation!==false,[h,f]=useState(null),p=useRef({columnModel:e,getRowNode:n,getNote:a,showOnTruncation:m,delay:u});return p.current={columnModel:e,getRowNode:n,getNote:a,showOnTruncation:m,delay:u},useEffect(()=>{if(!i){f(null);return}let g=t.current;if(!g)return;let y=null,w=null,v=()=>{y!==null&&(clearTimeout(y),y=null),w=null,f(null);},N=(G,I)=>{let{columnModel:F,getRowNode:B,getNote:K,showOnTruncation:b}=p.current,E=F.getDef(I),M=G.closest("[data-row-key]")?.dataset.rowKey,d=M===void 0?void 0:B(M);return ql({def:E,node:d,value:d?F.getCellValue(d.data,I):void 0,clipped:b&&_r(G)?$r(G):null,note:d&&K?K(d.key,I,d.data):null})},H=(G,I)=>{let F=p.current.columnModel.getDef(G);if(F?.headerTooltip)return F.headerTooltip;if(!p.current.showOnTruncation)return null;let B=I.querySelector(".kanuni-datagrid-header-label")??I;if(!_r(B))return null;let K=$r(B);return K.length>0?K:null},C=G=>{let F=G.target?.closest("[data-column-id]")??null;if(F===w||(v(),!F||!g.contains(F)))return;let B=F.dataset.columnId;if(!B)return;let K=F.classList.contains("kanuni-datagrid-header-cell");!K&&!F.closest("[data-row-key]")||(w=F,y=setTimeout(()=>{if(y=null,w!==F||!F.isConnected)return;let b=K?H(B,F):N(F,B);if(!b)return;let E=F.getBoundingClientRect();f({text:b,anchor:{top:E.top,left:E.left,width:E.width,height:E.height}});},p.current.delay));},T=G=>{let I=G.relatedTarget;w&&I&&w.contains(I)||v();};return g.addEventListener("mouseover",C),g.addEventListener("mouseout",T),g.addEventListener("mousedown",v),g.addEventListener("keydown",v),g.addEventListener("scroll",v,true),window.addEventListener("blur",v),()=>{v(),g.removeEventListener("mouseover",C),g.removeEventListener("mouseout",T),g.removeEventListener("mousedown",v),g.removeEventListener("keydown",v),g.removeEventListener("scroll",v,true),window.removeEventListener("blur",v);}},[i,t]),i?h:null}var Vr=6,kt=8;function Lo({state:t,dark:e}){let[n,a]=useState(null),[l,i]=useState(null),{text:u,anchor:m}=t;return useLayoutEffect(()=>{if(!n)return;let{width:h,height:f}=n.getBoundingClientRect(),p=document.documentElement.clientWidth,g=document.documentElement.clientHeight,y=m.top+m.height+Vr,w=m.top-f-Vr,N=y+f+kt<=g||w<kt?y:w,H=Math.min(Math.max(kt,m.left),Math.max(kt,p-h-kt));i({top:Math.min(N,g-f-kt),left:H});},[n,u,m]),jsx(Ae,{dark:e,children:jsx("div",{ref:a,className:"kanuni-datagrid-tooltip",role:"tooltip",style:l?{top:l.top,left:l.left}:{top:0,left:0,visibility:"hidden"},children:u})})}function Rn(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 zr=Rn(getGridDictionary("en"));function Io(t,e){let n={...zr,...e.labels},{controller:a,maxGroupLevels:l}=e,i=t.columnId,u=a.getColumnModel().getDef(i),m=a.getSort(),h=m.find(T=>T.columnId===i),f=a.getGroupLevels(),p=f.includes(i),g=u?.sortable!==false,y=a.getColumnStates().find(T=>T.id===i)?.pinned??null,w=u?.groupable!==false,v=[{id:"sort-asc",label:n.sortAsc,disabled:!g||h?.direction==="asc",onSelect:()=>a.setSort([{columnId:i,direction:"asc"}])},{id:"sort-desc",label:n.sortDesc,disabled:!g||h?.direction==="desc",onSelect:()=>a.setSort([{columnId:i,direction:"desc"}])},{id:"sort-clear",label:n.clearSort,disabled:!h,onSelect:()=>a.setSort(m.filter(T=>T.columnId!==i))},{id:"sep-1",separator:true},{id:"group",label:p?n.ungroup:n.groupBy,disabled:!w,onSelect:()=>{p?a.groupBy(f.filter(T=>T!==i)):a.groupBy([...f,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:a.getColumnStates().filter(T=>T.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:u?.resizable===false,onSelect:()=>e.onBestFit(i)},{id:"best-fit-all",label:n.bestFitAll,onSelect:e.onBestFitAll});let N=a.getColumnStates().filter(T=>T.visible&&T.pinned===y).map(T=>T.id),H=N.indexOf(i),C=u?.reorderable!==false&&H>=0;return v.push({id:"sep-4",separator:true},{id:"move-left",label:n.moveLeft,disabled:!C||H<=0,onSelect:()=>a.moveColumn(i,N[H-1])},{id:"move-right",label:n.moveRight,disabled:!C||H<0||H>=N.length-1,onSelect:()=>a.moveColumn(i,N[H+2])},{id:"fixed-position",label:n.fixedPosition,items:[{id:"pin-left",label:n.pinLeft,disabled:y==="left",onSelect:()=>a.setColumnPinned(i,"left")},{id:"pin-right",label:n.pinRight,disabled:y==="right",onSelect:()=>a.setColumnPinned(i,"right")},{id:"pin-sticky",label:n.pinSticky,disabled:y==="sticky",onSelect:()=>a.setColumnPinned(i,"sticky")}]},{id:"unpin",label:n.unpin,disabled:y===null,onSelect:()=>a.setColumnPinned(i,null)}),v}var yn=typeof window<"u"?useLayoutEffect:useEffect,Jr=1e8,Cn=null;function Qr(){if(Cn!==null)return Cn;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=`${Jr}px`,t.appendChild(e),document.body.appendChild(t),t.scrollTop=Jr;let n=t.scrollTop;return Fo=e.offsetHeight>0?e.offsetHeight:null,t.remove(),n>0&&(Cn=n),Cn}var Fo=null;function ss(){return Fo===null&&Qr(),Fo}function Ho(t){return Math.abs(t)}function Zr(t,e){return getComputedStyle(e).direction==="rtl"?-t:t}function Bo(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(u=>u.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 u={...t,columns:t.columns.map(m=>m.spanRows?{...m,spanRows:void 0}:m)};return Bo(u,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 u={...t};return delete u.tree,Bo(u,e)}if(!t.grouping)return t.masterDetail?Ao(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?Ao(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?Ao(i):i}function Ao(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 ds(t){return jsx(Vn,{locale:t.locale,messages:t.messages,children:jsx(uo,{theme:t.theme,density:t.density,palette:t.palette,children:jsx(us,{...t})})})}function us(t){let e=J(),{className:n,style:a,dark:l=false,theme:i,palette:u,striped:m=true,emptyText:h,sortable:f=true,filterRow:p=false,headerFilter:g=false,filterIconMode:y="hover",columnReorder:w=true,columnResize:v=true,loadingOverlay:N=true,announcements:H=true,groupPanel:C=false,showRowCount:T=false,toolbar:G=false,toolbarExcel:I=false,toolbarPdf:F=false,filterPanel:B=false,filterPanelLabels:K,onOpenFilterBuilder:b,toolbarItemsBefore:E,toolbarItemsAfter:M,renderRow:d,stateStoring:R,headerMenu:L=true,focusedRow:W=false,focusedRowKey:j,onFocusedRowChanged:se,footer:ze,footerMenu:ke=true,onRowClick:ue,onRowActivate:he,onReady:Re,renderCellContent:ve,getCellClassName:Se,renderOverlay:Ie,onCellPointerDown:ne,onCellPointerEnter:We,onCellDoubleClick:Ve,enterpriseEdition:oe=false,renderDetail:ce,renderEditForm:pe,density:Fe,rowMenu:de,cellMenu:s,autoColumns:x,rowDrag:P,tooltip:z,pinnedTopRows:S,pinnedBottomRows:re,footerPosition:me="bottom",autoSizeStrategy:ae="none",highlightSearch:Te=true,...te}=t,A=useMemo(()=>{let r=te.columns;if(r&&r.length>0)return r;let c=te.dataSource;if(!Array.isArray(c)||c.length===0)return r??[];let k=typeof x=="object"?x:void 0;return x===false?r??[]:inferColumns(c,k)},[te.columns,te.dataSource,x]),He={...te,columns:A},D=i?THEME_ROW_HEIGHT[i][Fe??"normal"]:Fe?DENSITY_ROW_HEIGHT[Fe]:DEFAULT_ROW_HEIGHT,Y=He.rowHeight===void 0?{...He,rowHeight:D}:He,V=oe?Number.POSITIVE_INFINITY:1,q=Bo(Y,oe),{controller:o,rows:le,window:Tt,layout:fe,sort:Vt,rowHeight:Ut,visibleCount:Ye}=Bn(q),Ko=_n(o,t.printLayout),kn=Ko.active?{...Tt,rows:{...Tt.rows,start:0,end:le.length,offsetY:0,totalHeight:0}}:Tt,Dt=useMemo(()=>A.some(r=>r.autoHeight===true),[A]),_o=g&&o.canListDistinctValues();g&&!_o&&te.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 Ue=useRef(null);yn(()=>{o.setEnterpriseEdition(oe);},[o,oe]),useEffect(()=>{Re?.(o);},[o,Re]),yn(()=>{let r=Qr();r!==null&&r<DEFAULT_MAX_SCROLL_OFFSET&&o.setMaxScrollOffset(r);let c=ss();c!==null&&o.setMaxCanvasHeight(c);},[o]),yn(()=>{let r=Ue.current;if(!r)return;let c=()=>{o.setViewportSize(r.clientWidth,r.clientHeight),r.style.setProperty("--dg-viewport-width",`${r.clientWidth}px`);let X=r.querySelector(".kanuni-datagrid-rows"),_=r.querySelector(".kanuni-datagrid-canvas");if(X&&_){let $=X.getBoundingClientRect(),ee=_.getBoundingClientRect();o.setChromeOffsets($.top-ee.top,ee.bottom-$.bottom);}calibrateMaxScrollOffset(r,o);};if(c(),typeof ResizeObserver>"u")return;let k=new ResizeObserver(c);k.observe(r);let O=r.querySelector(".kanuni-datagrid-canvas");return O&&k.observe(O),()=>k.disconnect()},[o]),yn(()=>{if(!Dt)return;let r=Ue.current?.querySelector(".kanuni-datagrid-viewport");if(!r)return;let c=o.getVirtualWindow(),k=o.getRows(),O=new Map(o.getMeasuredRowHeights()),X=false;for(let _=c.rows.start;_<c.rows.end;_++){let $=k[_];if(!$||$.kind!=="data")continue;let ee=r.querySelector(`[data-row-key="${CSS.escape(String($.key))}"]`);if(!ee)continue;let ie=ee.getBoundingClientRect().height;ie>0&&O.get($.key)!==ie&&(O.set($.key,ie),X=true);}X&&o.setMeasuredRowHeights(O);}),useEffect(()=>{if(Dt)return o.events.on("columnStateChanged",()=>{o.clearMeasuredRowHeights();})},[o,Dt]),useEffect(()=>o.events.on("scrollRequested",r=>{let c=Ue.current;if(!c)return;r.scrollTop!==void 0&&(c.scrollTop=r.scrollTop),r.scrollLeft!==void 0&&(c.scrollLeft=Zr(r.scrollLeft,c)),o.setScroll(c.scrollTop,Ho(c.scrollLeft));let k=r.scrollTop;k===void 0||Math.abs(c.scrollTop-k)<=1||setTimeout(()=>{let O=Ue.current;!O||Math.abs(O.scrollTop-k)<=1||(O.scrollTop=k,o.setScroll(O.scrollTop,Ho(O.scrollLeft)));},0);}),[o]);let $o=Wn(o,t.alignedGrids,Ue),ta=useCallback(r=>{let c=r.currentTarget;o.setScroll(c.scrollTop,Ho(c.scrollLeft)),$o.syncScroll(c.scrollLeft);},[o,$o]),na=useCallback((r,c)=>o.toggleSort(r,c),[o]);Eo(o,R);let ut=Mo(o,P);useEffect(()=>{j!=null&&o.getFocusedRowKey()!==j&&o.focusRow(j);},[o,j]),useEffect(()=>{if(se)return o.events.on("focusedRowChanged",r=>se({rowKey:r.rowKey,row:r.row}))},[o,se]);let qe=useRef(null),[vn,oa]=useState(null);useEffect(()=>o.events.on("overlayChanged",r=>{oa(r.manual?r.overlay:null);}),[o]);let ra=useCallback(r=>{let c=o.getDataRowNode(r);if(c)return c;if(r==="")return;let k=Number(r);return Number.isNaN(k)?void 0:o.getDataRowNode(k)},[o]),ye=oe?t.notes:void 0;!oe&&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 zt=!!ye?.onChange&&ye.menu!==false,Yt=useCallback((r,c,k)=>ye?ye.get({rowKey:r,columnId:c,row:k})??null:null,[ye]),Wo=Po({rootRef:qe,columnModel:o.getColumnModel(),getRowNode:ra,getNote:ye?Yt:void 0,config:z}),[aa,ia]=useState(0);useEffect(()=>{let r=new Set,c=[o.events.on("cellsFlashed",({rowKeys:k,columnIds:O,duration:X})=>{let _=qe.current;if(!_)return;let $=k.length?k.map(Ce=>`[data-row-key="${CSS.escape(String(Ce))}"]`).join(","):".kanuni-datagrid-row",ee=O.length?O.map(Ce=>`[data-column-id="${CSS.escape(Ce)}"]`).join(","):"[data-column-id]",ie=[];_.querySelectorAll($).forEach(Ce=>{Ce.querySelectorAll(ee).forEach(wt=>ie.push(wt));});for(let Ce of ie)Ce.classList.remove("kanuni-datagrid-cell--flash");_.offsetWidth;for(let Ce of ie)Ce.classList.add("kanuni-datagrid-cell--flash");let Be=setTimeout(()=>{for(let Ce of ie)Ce.classList.remove("kanuni-datagrid-cell--flash");r.delete(Be);},X);r.add(Be);}),o.events.on("cellsRefreshed",({revision:k})=>ia(k))];return ()=>{c.forEach(k=>k()),r.forEach(clearTimeout);}},[o]);let la=useCallback((r,c)=>o.moveColumn(r,c),[o]),sa=useCallback((r,c,k)=>o.setColumnWidth(r,c,k??true),[o]),Tn=useCallback(r=>{if(!qe.current)return;let c=hn(qe.current,r);c!==null&&o.setColumnWidth(r,c);},[o]),qt=useCallback(()=>{let r=qe.current;if(r)for(let c of o.getColumnStates()){if(!c.visible)continue;let k=hn(r,c.id);k!==null&&o.setColumnWidth(c.id,k);}},[o]),Dn=useRef(false);useEffect(()=>{if(ae!=="none"){if(ae==="fitGrid"){let r=()=>o.sizeColumnsToFit();return r(),o.events.on("gridSizeChanged",r)}return Dn.current=false,o.events.on("firstDataRendered",()=>{Dn.current||(Dn.current=true,qt());})}},[o,ae,qt]);let[da,Vo]=useState({}),Uo=t.filterDebounce??(o.isRemote()?200:0),Gn=useRef(false),Xt=useCallback((r,c)=>{let k=o.getColumnModel().getDataType(r);Gn.current=true;try{o.setColumnFilter(r,parseFilterInput(r,c,k),FILTER_PART_ROW);}finally{Gn.current=false;}},[o]),Xe=useMemo(()=>createDebouncedCommit(Uo),[Uo]);useEffect(()=>()=>Xe.cancelAll(),[Xe]);let ua=useCallback((r,c)=>{Vo(k=>({...k,[r]:c})),Xe.schedule(r,()=>Xt(r,c));},[Xt,Xe]),ca=useCallback((r,c)=>{Xe.cancel(r),Xt(r,c);},[Xt,Xe]);useEffect(()=>o.events.on("filterChanged",()=>{if(Gn.current)return;let r=o.getColumnModel();Vo(c=>oo(c,{isPending:k=>Xe.isPending(k),textFor:k=>{let O=o.getColumnFilter(k,FILTER_PART_ROW);return O?filterInputFromNode(k,O,r.getDataType(k)):""}},r.getOrder()));}),[o,Xe]);let[ge,Qe]=useState(null),Jt=useRef(0),pa=useCallback((r,c)=>{let k=c.getBoundingClientRect(),O=o.getColumnModel().getDef(r),X={left:k.left,top:k.bottom+2},_=O?.headerName??r,$=o.getColumnFilter(r,FILTER_PART_SET)??o.getColumnFilter(r,FILTER_PART_DEFAULT);if(!o.isRemote()){let ie=++Jt.current;Qe({columnId:r,label:_,entries:[],selected:null,anchor:X,loading:true}),o.getDistinctValueSetAsync(r).then(({entries:Be,truncated:Ce})=>{Jt.current===ie&&Qe(wt=>wt&&wt.columnId===r?{...wt,entries:Be,truncated:Ce,capped:Ce,selected:selectedLabelsFromFilter($,Be),loading:false}:wt);});return}let ee=++Jt.current;Qe({columnId:r,label:_,entries:[],selected:null,anchor:X,loading:true}),o.getDistinctValuesAsync(r).then(ie=>{Jt.current===ee&&Qe(Be=>Be&&Be.columnId===r?{...Be,entries:ie,selected:selectedLabelsFromFilter($,ie),loading:false}:Be);});},[o]),ma=useCallback(r=>{ge&&(o.setColumnFilter(ge.columnId,r,FILTER_PART_SET),Qe(null));},[o,ge]),fa=Object.keys(o.getColumnStates().reduce((r,c)=>(o.getColumnFilter(c.id)&&(r[c.id]=true),r),{})),Sn=o.getSelectionMode(),De=Sn!=="none"&&(te.selection?.checkboxColumn??false),ga=useCallback((r,c)=>{o.handleRowClick(r.key,{ctrlKey:c.ctrlKey||De&&!c.shiftKey,metaKey:c.metaKey,shiftKey:c.shiftKey});},[o,De]),wa=useCallback((r,c)=>o.focusCell(r.key,c),[o]),ha=useCallback(r=>o.toggleRow(r.key),[o]),[Gt,zo]=useState(null),ba=useCallback(()=>zo(null),[]),[St,En]=useState(null),Yo=useCallback((r,c)=>{let O=(qe.current?.querySelector(`[data-row-key="${CSS.escape(String(r))}"] [data-column-id="${CSS.escape(c)}"]`)??qe.current)?.getBoundingClientRect();return {left:O?.left??0,top:(O?.bottom??0)+2}},[]),Ra=useCallback(r=>{let c=St;En(null),!(!c||!ye?.onChange)&&ye.onChange({rowKey:c.rowKey,columnId:c.columnId,row:c.row,text:r});},[St,ye]),qo=useCallback((r,c)=>{if(!ye?.onChange||ye.menu===false)return [];let k=r.columnId;if(!k)return [];let O=o.getRowKey(r.row),X=Yt(O,k,r.row),_=()=>En({rowKey:O,columnId:k,row:r.row,text:X??"",anchor:Yo(O,k)}),$=[];return c&&$.push({separator:true,id:"__note-sep"}),$.push({id:"__note-edit",label:X?e.editNote:e.addNote,onSelect:_}),X&&$.push({id:"__note-delete",label:e.deleteNote,onSelect:()=>ye.onChange?.({rowKey:O,columnId:k,row:r.row,text:null})}),$},[ye,o,Yt,Yo,e]),[Zt,Nn]=useState(null),Xo=useRef({x:0,y:0}),Jo=useCallback(r=>vo(o,e,s,r,c=>{Nn({message:c,...Xo.current}),console.error("[datagrid] export failed:",c);}),[o,e,s]),Qt=useCallback((r,c,k,O,X)=>{if(k.kind!=="data")return;let _={row:k.data,node:k,rowIndex:O,columnId:X,selectedKeys:o.getSelectedKeys()},$=(typeof de=="function"?de(_):de)??[],ee=qo(_,$.length>0),ie=[...$,...ee,...Jo($.length+ee.length>0)];ie.length!==0&&(Xo.current={x:r,y:c},Nn(null),zo({x:r,y:c,items:ie,context:_}));},[de,o,qo,Jo]),Zo=useCallback(r=>r?.target?.closest("[data-column-id]")?.dataset.columnId??null,[]),ct=useCallback((r,c,k,O,X)=>{let _=O??-1;r&&o.notifyRow(r,k,_);let $=Zo(X);$!==null&&o.notifyCell(c,k,_,$);},[o,Zo]),ya=useCallback((r,c,k)=>{ue?.(r),ct("rowClicked","cellClicked",r,c,k);},[ue,ct]),Ca=useCallback((r,c,k)=>{he?.(r),ct("rowDoubleClicked","cellDoubleClicked",r,c,k);},[he,ct]),xa=useCallback((r,c,k)=>{if(ct(null,"cellContextMenu",r,c,k),!de&&!zt&&s===false||r.kind!=="data")return;k.preventDefault(),o.isRowSelected(r.key)||o.handleRowClick(r.key,{});let O=k.target.closest("[data-column-id]")?.dataset.columnId??null;Qt(k.clientX,k.clientY,r,c,O);},[de,zt,s,o,Qt,ct]),[ka,va]=useState(null),[Ta,Da]=useState(null),[Mn,Ga]=useState(()=>te.grouping?.groupSummaries??false),[pt,Pn]=useState(null),[Qo,Ln]=useState(null),Sa=useCallback(()=>{o.getSelectedCount()>0?o.clearSelection():o.selectAll();},[o]),Ea=Ye>0&&o.getSelectedCount()>=Ye?"all":o.getSelectedCount()>0?"some":"none",Na=useCallback(r=>{let c=r.target;if(c.tagName==="INPUT"||c.tagName==="TEXTAREA"||c.isContentEditable)return;if((de||zt||s!==false)&&(r.key==="ContextMenu"||r.key==="F10"&&r.shiftKey)){let X=o.getFocus(),_=X?le.findIndex(ee=>ee.key===X.rowKey):-1,$=_>=0?le[_]:void 0;if($){let ie=Ue.current?.querySelector(`[data-row-key="${CSS.escape(String($.key))}"]`)?.getBoundingClientRect();Qt(ie?ie.left+16:0,ie?ie.bottom:0,$,_,X?.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"){Ct(o);return}if(k.type==="activate"){let X=o.getFocus(),_=X?le.find($=>$.key===X.rowKey):void 0;_&&he?.(_),k.preventDefault&&r.preventDefault();return}o.executeCommand(k),k.preventDefault&&r.preventDefault();let O=o.getFocusIndices();if(O&&Ue.current){let _=o.getColumnLayout().center.findIndex(ee=>ee.state.id===o.getFocus()?.columnId),$=o.ensureVisible(O.rowIndex,_===-1?void 0:_);if($){let ee=Ue.current;$.scrollTop!==void 0&&(ee.scrollTop=$.scrollTop),$.scrollLeft!==void 0&&(ee.scrollLeft=Zr($.scrollLeft,ee)),o.setScroll(ee.scrollTop,ee.scrollLeft);}}},[o,le,he,de,zt,s,Qt]),mt=useMemo(()=>bandDepth([...fe.left,...fe.center,...fe.right]),[fe]),Et=Rt,In=(p?2:1)+mt,jo=S?.length??0,Ma=re?.length??0,Hn=In+jo,jt=ka??te.grouping?.panel??C,Pa=o.getGroupLevels(),La=useCallback(r=>o.groupBy(r.slice(0,V)),[o,V]),Ia=useCallback(r=>o.toggleGroup(r),[o]),Ha=o.getColumnModel().runtime().filter(r=>r.state.visible&&r.def.groupable!==false),Ee=o.hasMasterDetail()&&!!ce,we=t.rowNumbers??false,Aa=we&&o.isPaginated()?o.getPage()*o.getPageSize():0;useEffect(()=>{o.setLeadWidth(Xn(De,Ee,we));},[o,De,Ee,we]);let Oa=useCallback(r=>o.toggleDetail(r),[o]),Fa=useCallback(r=>o.toggleTreeRow(r),[o]),er=o.getSummaryDefs(),Ba=o.getSummaries(),ft=Ta??ze??er.length>0,en=ft&&me==="top",tr=p?2:1,Ka=q.grouping?.groupSummaries&&Mn?te.summaries:void 0,nr=useCallback(()=>{Ga(r=>(o.setGroupSummaries(!r),!r));},[o]),_a=useCallback((r,c)=>{if(!ke)return;c.preventDefault();let k=o.getColumnModel().getDef(r),O=o.getColumnSummary(r),X={columnId:r,headerName:k?.headerName??k?.field??r},_=[{id:"none",label:e.noTotal,disabled:O===null,onSelect:()=>o.setColumnSummary(r,null)},{id:"sep",separator:true},...allowedSummaryTypes(k?.dataType).map($=>({id:$,label:summaryTypeLabels(e)[$],disabled:O?.type===$,onSelect:()=>o.setColumnSummary(r,$)}))];Pn({x:c.clientX,y:c.clientY,items:_,context:X});},[o,ke]),$a=useCallback((r,c)=>{if(L===false)return;c.preventDefault();let k=o.getColumnModel().getDef(r),O={columnId:r,headerName:k?.headerName??k?.field??r},X=Io(O,{controller:o,groupPanelVisible:jt,footerVisible:ft,groupFootersAvailable:oe,groupFootersVisible:Mn,onToggleGroupPanel:()=>va(!jt),onToggleFooter:()=>Da(!ft),onToggleGroupFooters:nr,onOpenFieldChooser:()=>Ln({left:c.clientX,top:c.clientY}),onBestFit:Tn,onBestFitAll:qt,maxGroupLevels:V,labels:Rn(e)}),_=typeof L=="function"?L(O,X):X;!_||_.length===0||Pn({x:c.clientX,y:c.clientY,items:_,context:O});},[L,o,jt,ft,oe,Mn,nr,Tn,qt,V,e]),gt=o.getFocus(),Wa=gt?`${t.gridId}-cell-${String(gt.rowKey)}-${gt.columnId}`:void 0,An=o.getSelectedCount(),Va=useMemo(()=>{let r=[`${Ye} rows`];return Vt.length>0&&r.push(`sorted by ${Vt.map(c=>`${o.getColumnModel().getDef(c.columnId)?.headerName??c.columnId} ${c.direction}ending`).join(", ")}`),An>0&&r.push(`${An} selected`),r.join(", ")},[o,Ye,Vt,An]),{centerColumns:je,centerIndices:On,stickyInsets:Nt,leadingSpacer:et,trailingSpacer:tt,rowStart:Ua,rowEnd:or}=pr(fe,kn),Fn=o.getColumnModel(),nt=Ua,za=r=>{if(Dt)return;let c=o.getRowHeightAt(r);return c===Ut?void 0:c},Ya=Array.from(le.slice(nt,or)),qa=useMemo(()=>!we||o.getGroupLevels().length===0&&!o.hasMasterDetail()?null:mr(le),[we,o,le]),Xa=o.hasCellSpans(),rr=useRef({start:0,end:0});rr.current={start:nt,end:or-1};let Ja=useCallback((r,c)=>{let k=o.getCellSpans(c);if(k.length===0)return null;let{start:O,end:X}=rr.current,_=spanRoleAt(k,r,O,X);if(!_)return null;if(_.role==="covered")return {kind:"covered"};let $=o.getRowOffset(_.drawStart);return {kind:"draw",height:o.getRowOffset(_.drawEnd)+o.getRowHeightAt(_.drawEnd)-$,offset:0}},[o]),Za=Te?o.getSearchText().trim().toLowerCase():"",Qa={pathOf:r=>bandPath(o.getColumnModel().getDef(r)),collapsible:r=>o.isBandCollapsible(r),collapsed:r=>o.isBandCollapsed(r),onToggle:r=>o.toggleBand(r),labels:{expand:e.expandDetails,collapse:e.collapseDetails}},ar={layout:fe,centerColumns:je,leadingSpacer:et,trailingSpacer:tt,defs:er,values:Ba,checkboxColumn:De,detailColumn:Ee,rowNumberColumn:we,onPickSummary:ke?_a:void 0,emptyHint:ke?"\xB7":""};return jsxs("div",{className:`kanuni-datagrid-root${l?" kanuni-datagrid-dark":""}${Ko.active?" kanuni-datagrid-print":""}${themeClassName(i,Fe,u)}${n?` ${n}`:""}`,style:{"--dg-row-height":`${Ut}px`,"--dg-grip-inset":we?`${bt}px`:"0px",...a},dir:isRtlLocale(t.locale)?"rtl":void 0,"data-grid-id":t.gridId,"data-theme":i,"data-palette":u,"data-auto-height":Dt?"":void 0,ref:qe,children:[G&&jsx(ho,{controller:o,dark:l,columnChooser:t.toolbarColumnChooser??true,exportExcel:oe&&I,exportPdf:oe&&F,itemsBefore:E,itemsAfter:M,onOpenColumnChooser:r=>Ln(c=>c?null:r)}),jt&&jsx(wo,{columns:Ha,levels:Pa,onSetLevels:La,maxLevels:V,onExpandAll:()=>o.expandAllGroups(),onCollapseAll:()=>o.collapseAllGroups()}),jsx("div",{className:"kanuni-datagrid-scroller",ref:Ue,onScroll:ta,onKeyDown:Na,tabIndex:0,role:"grid","aria-rowcount":Ye+In+jo+Ma,"aria-colcount":fe.left.length+fe.center.length+fe.right.length+(De?1:0)+(Ee?1:0)+(we?1:0),"aria-multiselectable":Sn==="multiple"||void 0,"aria-activedescendant":Wa,"aria-label":t.gridId,children:jsxs("div",{className:"kanuni-datagrid-canvas",style:{width:(fe.totalWidth||0)+Xn(De,Ee,we)||"100%"},role:"rowgroup",children:[jsx(eo,{layout:fe,centerColumns:je,leadingSpacer:et,trailingSpacer:tt,depth:mt,checkboxColumn:De,detailColumn:Ee,rowNumberColumn:we,rowHeight:Et,bandFold:Qa}),jsx(no,{bandOffset:mt*Et,stickyInsets:Nt,layout:fe,centerColumns:je,leadingSpacer:et,trailingSpacer:tt,sort:Vt,sortable:f,onSort:na,headerFilter:_o,filteredColumns:fa,onOpenFilter:pa,filterIconMode:y,checkboxColumn:De,detailColumn:Ee,rowNumberColumn:we,selectAllState:Ea,onToggleSelectAll:Sa,draggable:C,reorderable:w,onReorder:la,resizable:v,onResize:sa,onAutoFit:Tn,onHeaderContextMenu:L===false?void 0:$a}),p&&jsx(ro,{bandOffset:mt*Et,stickyInsets:Nt,layout:fe,centerColumns:je,leadingSpacer:et,trailingSpacer:tt,values:da,checkboxColumn:De,detailColumn:Ee,rowNumberColumn:we,onChange:ua,onCommit:ca}),en&&jsx(cn,{...ar,position:"top",bandOffset:mt*Et,headerRowsBetween:tr}),S&&S.length>0&&jsx(pn,{gridId:t.gridId,side:"top",rows:S,layout:fe,columnModel:Fn,centerColumns:je,centerIndices:On,stickyInsets:Nt,leadingSpacer:et,trailingSpacer:tt,checkboxColumn:De,detailColumn:Ee,rowNumberColumn:we,rowHeight:Ut,bandOffset:mt*Et,headerRowsBetween:tr+(en?1:0),ariaRowBase:In}),jsxs("div",{className:"kanuni-datagrid-rows",style:{position:"relative",height:kn.rows.totalHeight},onDragOver:ut.bodyHandlers?.onDragOver,onDrop:ut.bodyHandlers?.onDrop,onDragLeave:ut.bodyHandlers?.onDragLeave,children:[jsx("div",{className:"kanuni-datagrid-viewport",style:{transform:`translateY(${kn.rows.offsetY}px)`},children:Ya.map((r,c)=>r?jsx(Pt,{gridId:t.gridId,node:r,index:nt+c,layout:fe,columnModel:Fn,centerColumns:je,centerIndices:On,stickyInsets:Nt,leadingSpacer:et,trailingSpacer:tt,striped:m,selected:o.isRowSelected(r.key),focusedColumnId:gt?.rowKey===r.key?gt.columnId:null,rowFocused:W&&gt?.rowKey===r.key,rowDrag:ut.handlers,dropSide:ut.dropAt?.key===r.key?ut.dropAt.side:null,renderRow:d,checkboxColumn:De,rowNumberColumn:we,getSpan:Xa?Ja:void 0,getNote:ye?Yt:void 0,rowNumber:we?fr(nt+c,qa,Aa):null,headerRowCount:Hn,onRowClick:ya,onRowMouseDown:Sn==="none"?void 0:ga,onRowDoubleClick:Ca,onToggleSelect:ha,onCellMouseDown:wa,onRowContextMenu:xa,onToggleGroup:Ia,onToggleTreeRow:Fa,revision:aa,searchNeedle:Za,summaryDefs:Ka,detailColumn:Ee,detailExpanded:Ee&&o.isDetailExpanded(r.key),onToggleDetail:Oa,renderDetail:ce,renderEditForm:pe,height:za(nt+c),renderCellContent:ve,getCellClassName:Se,onCellPointerDown:ne,onCellPointerEnter:We,onCellDoubleClick:Ve},String(r.key)):jsx("div",{className:"kanuni-datagrid-row kanuni-datagrid-row--loading",role:"row","aria-rowindex":nt+c+1+Hn,"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-${nt+c}`))}),Ie?.()]}),re&&re.length>0&&jsx(pn,{gridId:t.gridId,side:"bottom",rows:re,layout:fe,columnModel:Fn,centerColumns:je,centerIndices:On,stickyInsets:Nt,leadingSpacer:et,trailingSpacer:tt,checkboxColumn:De,detailColumn:Ee,rowNumberColumn:we,rowHeight:Ut,headerRowsBetween:ft&&!en?1:0,ariaRowBase:Hn+Ye}),ft&&!en&&jsx(cn,{...ar,position:"bottom"})]})}),(vn==="noRows"||vn===null&&Ye===0)&&jsx("div",{className:"kanuni-datagrid-empty",children:h??e.noData}),B&&jsx(yo,{controller:o,alwaysVisible:B==="always",onOpenBuilder:b,describeOptions:K}),N!==false&&jsx(So,{controller:o,delay:typeof N=="number"?N:void 0,forced:vn==="loading"}),o.isPaginated()&&jsx(Ro,{page:o.getPage(),pageCount:o.getPageCount(),pageSize:o.getPageSize(),pageSizes:te.pagination?.pageSizes,totalRows:Ye,onPage:r=>o.setPage(r),onNext:()=>o.nextPage(),onPrevious:()=>o.previousPage(),onPageSize:r=>o.setPageSize(r)}),H&&jsx("div",{className:"kanuni-datagrid-sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:Va}),St&&jsx(Do,{anchor:St.anchor,value:St.text,dark:l,onCommit:Ra,onCancel:()=>En(null)}),Gt&&jsx(wn,{x:Gt.x,y:Gt.y,items:Gt.items,context:Gt.context,dark:l,onClose:ba}),Zt&&jsx(Ae,{dark:l,children:jsx("button",{type:"button",role:"alert",className:"kanuni-datagrid-toolbar-error kanuni-datagrid-menu-error",style:{left:Zt.x,top:Zt.y},onClick:()=>Nn(null),children:Zt.message})}),pt&&jsx(wn,{x:pt.x,y:pt.y,items:pt.items,context:pt.context,dark:l,label:`${pt.context.headerName} column`,onClose:()=>Pn(null)}),Wo&&jsx(Lo,{state:Wo,dark:l}),Qo&&jsx(bo,{controller:o,columns:o.getColumnStates(),anchor:Qo,dark:l,onClose:()=>Ln(null)}),ge&&jsx(fo,{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&&!o.isRemote()?r=>{let{entries:c,truncated:k}=o.searchDistinctValues(ge.columnId,r);Qe(O=>O&&O.columnId===ge.columnId?{...O,entries:c,truncated:k}:O);}:void 0,dark:l,onApply:ma,onClose:()=>Qe(null)},`${ge.columnId}:${ge.loading?"loading":"ready"}`)]})}function ps({defs:t,values:e,columnModel:n,rowCount:a,rowCountLabel:l}){let i=J(),u=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(m=>{let h=e[summaryKey(m.columnId,m.type)],f=n.getDef(m.columnId),p=formatSummaryValue(m,h,f);return jsxs("span",{className:"kanuni-datagrid-summary-item",children:[jsxs("span",{className:"kanuni-datagrid-summary-label",children:[summaryLabel(m,u)," ",f?.headerName??m.columnId,":"]}),jsx("strong",{children:p})]},summaryKey(m.columnId,m.type))})]})}var ms=memo(ps);function ws(t,e){let[n,a]=useState(null);return useEffect(()=>{if(!t||!e){a(null);return}let l=e.source??"view",i=false,u=0,m=false,h=false,f=null,p=()=>{let w=++u;t.computeChartData(e).then(v=>{!i&&w===u&&a(v);},()=>{});},g=(w=false)=>{h||=w,!m&&(m=true,queueMicrotask(()=>{if(m=false,i)return;let v=t.chartBasis(l);!h&&v===f||(h=false,f=v,p());}));};f=t.chartBasis(l),p();let y=[t.events.on("contentReady",()=>g()),t.events.on("rowsChanged",()=>g()),t.events.on("dataUpdated",()=>g()),...l==="selection"?[t.events.on("selectionChanged",()=>g(true))]:[]];return ()=>{i=true,u++,y.forEach(w=>w());}},[t,e]),n}export{Rt as BAND_ROW_HEIGHT,zr as DEFAULT_HEADER_MENU_LABELS,ds as DataGrid,bo as GridColumnChooser,wn as GridContextMenu,yo as GridFilterPanel,ro as GridFilterRow,cn as GridFooterRow,wo as GridGroupPanel,no as GridHeader,eo as GridHeaderBands,fo as GridHeaderFilterPopup,So as GridLoadingOverlay,Do as GridNoteEditor,Ro as GridPager,pn as GridPinnedRows,lt as GridPopupPanel,Ae as GridPortal,Pt as GridRow,ms as GridSummaryBar,uo as GridSurfaceProvider,Vn as GridTextProvider,ho as GridToolbar,Lo as GridTooltip,Kn as PRINT_MAX_ROWS,bn as ROW_DRAG_MIME,Pr as SHORTCUT_COPY,El as SHORTCUT_CUT,Nl as SHORTCUT_PASTE,vo as buildCellMenuItems,Io as buildHeaderMenu,Ct as copyToClipboard,Rn as headerMenuLabels,hn as measureBestFitWidth,oo as reconcileFilterInputs,Ft as runGridExport,Wn as useAlignedGrids,Ht as useAnchoredPopup,Po as useCellTooltip,Bn as useDataGrid,ws as useGridChartData,co as useGridSurfaceClass,J as useGridText,_n as usePrintLayout,Mo as useRowDrag,Eo as useStateStoring,Lr as writeClipboardText};