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