@kanunilabs/datagrid 1.2.0 → 1.2.1
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/LICENSE +56 -56
- package/dist/datagrid.umd.js +6 -6
- package/dist/index.cjs +2 -2
- package/dist/index.js +2 -2
- package/dist/styles.css +35 -0
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var datagridCore=require('@kanunilabs/datagrid-core');function gn(x,g){let{controller:y,maxGroupLevels:A,t:v}=g,E=x.columnId,G=y.getColumnModel().getDef(E),P=y.getSort(),re=P.find(I=>I.columnId===E),le=y.getGroupLevels(),Ke=le.includes(E),tt=G?.sortable!==false,ae=y.getColumnStates().find(I=>I.id===E)?.pinned??null,Se=G?.groupable!==false,Le=[{id:"sort-asc",label:v.sortAsc,disabled:!tt||re?.direction==="asc",onSelect:()=>y.setSort([{columnId:E,direction:"asc"}])},{id:"sort-desc",label:v.sortDesc,disabled:!tt||re?.direction==="desc",onSelect:()=>y.setSort([{columnId:E,direction:"desc"}])},{id:"sort-clear",label:v.clearSort,disabled:!re,onSelect:()=>y.setSort(P.filter(I=>I.columnId!==E))},{id:"sep-1",separator:true},{id:"group",label:Ke?v.ungroupColumn:v.groupByColumn,disabled:!Se,onSelect:()=>{Ke?y.groupBy(le.filter(I=>I!==E)):y.groupBy([...le,E].slice(-A));}},{id:"group-panel",label:g.groupPanelVisible?v.hideGroupPanel:v.showGroupPanel,onSelect:g.onToggleGroupPanel},{id:"footer",label:g.footerVisible?v.hideFooter:v.showFooter,onSelect:g.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:v.hideColumn,disabled:y.getColumnStates().filter(I=>I.visible).length<=1,onSelect:()=>y.setColumnVisible(E,false)},{id:"field-chooser",label:v.fieldChooser,onSelect:g.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:v.bestFit,disabled:G?.resizable===false,onSelect:()=>g.onBestFit(E)},{id:"best-fit-all",label:v.bestFitAll,onSelect:g.onBestFitAll}],Ae=y.getColumnStates().filter(I=>I.visible&&I.pinned===ae).map(I=>I.id),te=Ae.indexOf(E),Me=G?.reorderable!==false&&te>=0;return Le.push({id:"sep-4",separator:true},{id:"move-left",label:v.moveLeft,disabled:!Me||te<=0,onSelect:()=>y.moveColumn(E,Ae[te-1])},{id:"move-right",label:v.moveRight,disabled:!Me||te<0||te>=Ae.length-1,onSelect:()=>y.moveColumn(E,Ae[te+2])},{id:"fixed-position",label:v.fixedPosition,items:[{id:"pin-left",label:v.pinLeft,disabled:ae==="left",onSelect:()=>y.setColumnPinned(E,"left")},{id:"pin-right",label:v.pinRight,disabled:ae==="right",onSelect:()=>y.setColumnPinned(E,"right")},{id:"pin-sticky",label:v.pinSticky,disabled:ae==="sticky",onSelect:()=>y.setColumnPinned(E,"sticky")}]},{id:"unpin",label:v.unpin,disabled:ae===null,onSelect:()=>y.setColumnPinned(E,null)}),Le}async function mn(x,g){try{let y=g==="csv"?await x.exportToCsv():g==="excel"?await x.exportToExcel():g==="excel-selected"?await x.exportToExcel({selectedOnly:!0}):await x.exportToPdf();return datagridCore.downloadBlob(y.blob,y.fileName),{completed:!0}}catch(y){return y instanceof datagridCore.ExportAbortedError?{completed:false}:{completed:false,error:y instanceof Error?y.message:String(y)}}}var To=null;function Gr(){return typeof document>"u"?null:(To??=document.createElement("canvas"),To.getContext("2d"))}function So(x){let g=getComputedStyle(x);return `${g.fontStyle} ${g.fontWeight} ${g.fontSize} ${g.fontFamily}`}function bn(x,g){let y=Gr();if(!y)return null;let A=typeof CSS<"u"&&CSS.escape?CSS.escape(g):g.replace(/"/g,'\\"'),v=x.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${A}"]`),E=x.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${A}"]`);if(!v&&E.length===0)return null;let G=0;if(v){let P=v.querySelector(".kanuni-datagrid-header-label")??v;y.font=So(P),G=y.measureText(P.textContent??"").width+44;}if(E.length>0){y.font=So(E[0]);for(let P=0;P<E.length;P++){let re=E[P].textContent??"";if(re==="")continue;let le=y.measureText(re).width+20;le>G&&(G=le);}}return G===0?null:Math.round(Math.min(640,Math.max(48,G)))}var Je=60,Lt=36,Ze=28,At="application/x-kanuni-row",Qe=new Map,wn=new Set,Io=5e3,Te=0,ol=["columnStateChanged","sortChanged"],rl=["columnStateChanged"],ll=["contentReady","viewportChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","cellsRefreshed"],p=(x,g="div")=>{let y=document.createElement(g);return y.className=x,y},et="http://www.w3.org/2000/svg";function al(x,g){let y=v=>{g&&console.warn(`[datagrid] ${v} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);},A={...x};if(A.dataSource!=null&&!Array.isArray(A.dataSource))throw new Error("[datagrid] a server-side DataSource is an Enterprise feature. Pass an array to createGrid, or use createEnterpriseGrid from @kanunilabs/datagrid-enterprise.");if(A.columns?.some(v=>v.spanRows)&&(y("cell span/merge (spanRows) is"),A={...A,columns:A.columns.map(v=>v.spanRows?{...v,spanRows:void 0}:v)}),A.tree&&(y("tree data is"),delete A.tree),A.masterDetail&&(y("master-detail is"),delete A.masterDetail),A.grouping){let{groupBy:v,groupSummaries:E}=A.grouping,G=v==null?[]:typeof v=="string"?[v]:v;(G.length>1||E)&&(y("multi-level grouping and group summaries are"),A={...A,grouping:{...A.grouping,groupBy:G.slice(0,1),groupSummaries:false}});}return A}var il={columnResize:"use `resizable`",columnReorder:"use `reorderable`",groupPanel:"use `grouping: { panel: true }`",autoColumns:"",loadingOverlay:"",onReady:"the controller is returned directly \u2014 use `grid.controller`",className:"style the host element you pass in",style:"style the host element you pass in",toolbarItemsBefore:"",renderRow:"",announcements:"",filterPanelLabels:"",filterIconMode:"",autoSizeStrategy:"",footerMenu:"",showRowCount:"",onOpenFilterBuilder:"",renderOverlay:"",cellMenu:""},Mt=new Set;function dl(x){for(let g of Object.keys(x)){let y=il[g];y===void 0||y===""||Mt.has(g)||(Mt.add(g),console.warn(`[datagrid] \`${g}\` is a React-only option \u2014 ${y}.`));}}function sl(){let x=document.createElementNS("http://www.w3.org/2000/svg","svg");x.setAttribute("width","14"),x.setAttribute("height","14"),x.setAttribute("viewBox","0 0 16 16"),x.setAttribute("aria-hidden","true"),x.setAttribute("focusable","false");let g=document.createElementNS("http://www.w3.org/2000/svg","path");return g.setAttribute("d","M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"),g.setAttribute("fill","none"),g.setAttribute("stroke","currentColor"),g.setAttribute("stroke-width","1.5"),g.setAttribute("stroke-linecap","round"),g.setAttribute("stroke-linejoin","round"),x.appendChild(g),x}function ul(){let x=document.createElementNS(et,"svg");x.setAttribute("width","11"),x.setAttribute("height","11"),x.setAttribute("viewBox","0 0 16 16"),x.setAttribute("aria-hidden","true"),x.setAttribute("focusable","false");let g=document.createElementNS(et,"path");return g.setAttribute("d","M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z"),g.setAttribute("fill","currentColor"),g.setAttribute("stroke","currentColor"),g.setAttribute("stroke-width","0.6"),g.setAttribute("stroke-linejoin","round"),x.appendChild(g),x}function cl(x){let g=document.createElementNS(et,"svg");g.setAttribute("width","14"),g.setAttribute("height","14"),g.setAttribute("viewBox","0 0 16 16"),g.setAttribute("aria-hidden","true"),g.setAttribute("focusable","false");let y=document.createElementNS(et,"rect");y.setAttribute("x","2"),y.setAttribute("y","2"),y.setAttribute("width","12"),y.setAttribute("height","12"),y.setAttribute("rx","2"),y.setAttribute("fill","none"),y.setAttribute("stroke","currentColor"),y.setAttribute("stroke-width","1.3"),g.appendChild(y);let A=v=>{let E=document.createElementNS(et,"path");E.setAttribute("d",v),E.setAttribute("fill","none"),E.setAttribute("stroke","currentColor"),E.setAttribute("stroke-width","1.3"),E.setAttribute("stroke-linecap","round"),g.appendChild(E);};return A("M5 8h6"),x&&A("M8 5v6"),g}function pl(x,g){let y=x??(g==="number"?"right":"left");return y==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":y==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function hn(x){let g="kanuni-datagrid-root";return x.dark&&(g+=" kanuni-datagrid-dark"),x.theme&&(g+=` kanuni-datagrid-theme-${x.theme}`),x.palette&&(g+=` kanuni-datagrid-palette-${x.palette}`),x.density&&(g+=` kanuni-datagrid-density-${x.density}`),g}function fl(x,g){let{theme:y,palette:A,density:v,dark:E,striped:G=true,rowNumbers:P=false,locale:re="en",footer:le=false,footerMenu:Ke=true,footerPosition:tt="bottom",notes:ae,pinnedTopRows:Se=[],pinnedBottomRows:Le=[],resizable:Ae=true,reorderable:te=true,filterRow:Me=false,headerFilter:I=false,filterIconMode:Ho="hover",filterPanel:Dt=false,onOpenFilterBuilder:yn,focusedRow:Cn=false,focusedRowKey:Nt,onFocusedRowChanged:xn,onRowClick:Go,onRowActivate:It,autoSizeStrategy:Ht="none",renderRow:Gt,announcements:vn=true,filterPanelLabels:kn,showRowCount:$o=false,toolbarColumnChooser:Po=false,cellMenu:nt=true,rowMenu:ot,headerMenu:$t,rowDrag:ge,alignedGrids:Y,printLayout:rt,renderCellContent:Pt,getCellClassName:Kt,onCellPointerDown:En,onCellPointerEnter:lt,onCellDoubleClick:Rn,renderDetail:Tn,renderEditForm:Ko,enterpriseEdition:ie=false,stateStoring:Sn,tooltip:me=true,renderOverlay:Ot,filterDebounce:Oo,toolbar:Ln=false,highlightSearch:Fo=true,sortable:Bo=true,toolbarItemsAfter:_o,toolbarItemsBefore:Vo,toolbarExcel:Wo=false,toolbarPdf:zo=false,searchDebounce:qo=200,...Xo}=g;dl(g),$o&&!Mt.has("showRowCount:deprecated")&&(Mt.add("showRowCount:deprecated"),console.warn("[datagrid] `showRowCount` was retired on 2026-08-15 and does nothing in either renderer. The row count lives in the status bar (Enterprise) or the pager."));let m=datagridCore.getGridDictionary(re),{emptyText:Uo=m.noData,loadingText:Yo=m.busy,loadingOverlay:Ft=true,...z}=Xo,An=typeof Ft=="number"?Ft:300,Bt=datagridCore.summaryTypeLabels(m);if((!z.columns||z.columns.length===0)&&g.autoColumns!==false){let e=Array.isArray(z.dataSource)?z.dataSource:[];z.columns=datagridCore.inferColumns(e,typeof g.autoColumns=="object"?g.autoColumns:{});}z.rowHeight===void 0&&(z.rowHeight=datagridCore.presetRowHeight(y,v,28));let jo=ie?z:al(z,!!g.debugMode),be=ie?ae:void 0;!ie&&ae&&g.debugMode&&console.warn("[datagrid] cell notes are an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to show them.");let a=new datagridCore.DataGridController(jo);a.setEnterpriseEdition(ie),Nt!=null&&a.focusRow(Nt);let T=p(hn(g));T.style.height="100%",T.setAttribute("role","grid"),T.setAttribute("data-grid-id",g.gridId),y&&T.setAttribute("data-theme",y),T.style.setProperty("--dg-row-height",`${a.getRowHeight()}px`);let R=p("kanuni-datagrid-scroller"),O=p("kanuni-datagrid-canvas"),j=p("kanuni-datagrid-header");j.setAttribute("role","row");let F=p("kanuni-datagrid-rows");F.style.position="relative";let D=p("kanuni-datagrid-viewport");F.appendChild(D);let Oe=p("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--top"),Mn=p("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--bottom"),ne=le,we=tt==="top",$=p(`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${we?"top":"bottom"}`);if($.setAttribute("role","row"),$.setAttribute("aria-label",m.columnTotalsAria),Ke){let e=t=>{let n=t.target?.closest(".kanuni-datagrid-footer-cell")?.getAttribute("data-column-id");n&&(t.preventDefault(),Cr(n,{left:t.clientX,top:t.clientY}));};$.addEventListener("click",e),$.addEventListener("contextmenu",e);}let at=p("kanuni-datagrid-bands-host");at.style.display="contents";let De=p("kanuni-datagrid-filter-row");De.setAttribute("role","row"),O.append(at,j),Me&&O.append(De);let _t=Me?2:1;$.style.setProperty("--dg-pinned-gap",String(we?_t:0)),Oe.style.setProperty("--dg-pinned-gap",String(_t+(ne&&we?1:0))),ne&&we&&O.append($),Se.length>0&&O.append(Oe),O.append(F),Le.length>0&&O.append(Mn),ne&&!we&&O.append($),R.appendChild(O);let he=p("kanuni-datagrid-toolbar"),Ne=p("kanuni-datagrid-pager");Ne.setAttribute("role","navigation"),Ne.setAttribute("aria-label","Pagination");let ye=p("kanuni-datagrid-filter-panel"),Ce=!!z.grouping?.panel,B=p("kanuni-datagrid-group-panel");Ln&&T.appendChild(he),Ce&&T.appendChild(B),T.appendChild(R),Dt&&T.appendChild(ye),z.pagination?.enabled&&T.appendChild(Ne);let Fe=p("kanuni-datagrid-loading-overlay"),Dn=p("kanuni-datagrid-loading-card"),Nn=p("kanuni-datagrid-loading-spinner","span");Nn.setAttribute("aria-hidden","true");let In=p("kanuni-datagrid-loading-label","span");In.textContent=Yo,Dn.append(Nn,In),Fe.appendChild(Dn),Fe.style.display="none";let Be=p("kanuni-datagrid-sr-only","div");Be.setAttribute("role","status"),Be.setAttribute("aria-live","polite"),Be.setAttribute("aria-atomic","true");let it=p("kanuni-datagrid-empty");it.textContent=Uo,it.style.display="none",T.append(Fe,it),vn&&T.appendChild(Be),x.appendChild(T);let Hn=z.selection,dt=(Hn?.mode??"none")!=="none"&&(Hn?.checkboxColumn??false),st=a.hasMasterDetail()&&!!Tn,Vt=P?Je:0,Gn=Vt+(st?Ze:0),Q=(P?Je:0)+(st?Ze:0)+(dt?Lt:0);a.setLeadWidth(Q);let ut=!!ge?.enabled,_e=ge?.group??null,$n=ge?.allowReordering??true,Pn=ge?.allowDropInsert??_e!==null,oe=null,ct=null,pt=false,xe=null,de=null;function Ie(e){xe=e;for(let t of D.querySelectorAll(".kanuni-datagrid-row")){let o=t.getAttribute("data-row-key"),n=e!==null&&o===String(e.key);t.classList.toggle("kanuni-datagrid-row--drop-before",n&&e.side==="before"),t.classList.toggle("kanuni-datagrid-row--drop-after",n&&e.side==="after");}}let Kn=(e,t)=>{let o=t.getBoundingClientRect();return e.clientY<o.top+o.height/2?"before":"after"},On=e=>e.dataTransfer?.types.includes(At)?oe!==null?$n:Pn&&_e!==null:false;function Fn(e,t,o){let n=null;try{let l=e.dataTransfer?.getData(At);n=l?JSON.parse(l):null;}catch{n=null;}if(n){if(n.gridId===a.gridId){if(!$n)return;if(ge?.onReorder){ge.onReorder({dragKey:n.rowKey,targetKey:t,position:o,row:a.getRowByKey(n.rowKey)});return}a.moveRow(n.rowKey,t,o);return}!Pn||_e===null||n.group!==_e||ge?.onAdd?.({row:n.row,rowKey:n.rowKey,otherGridId:n.gridId,targetKey:t,position:o});}}let Qo=e=>{let t=ue(e);if(!t||t.node.kind!=="data"||!e.dataTransfer)return;oe=t.node.key,ct=t.node.key,pt=false;let o={gridId:a.gridId,group:_e,rowKey:t.node.key,row:t.node.data};e.dataTransfer.setData(At,JSON.stringify(o)),e.dataTransfer.setData("text/plain",String(t.node.key)),e.dataTransfer.effectAllowed="move",a.notifyRowDrag("enter",{rowKey:t.node.key});},Jo=e=>{if(!On(e))return;e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move");let t=ue(e);if(!t||t.node.kind!=="data")return;if(oe===t.node.key){de=null,Ie(null);return}let o=e.target.closest(".kanuni-datagrid-row"),n=Kn(e,o),l=xe?.key!==t.node.key||xe.side!==n;de={key:t.node.key,side:n},Ie({key:t.node.key,side:n}),l&&oe!==null&&a.notifyRowDrag("move",{rowKey:oe,overKey:t.node.key,position:n});},Zo=e=>{if(!On(e)){Ie(null);return}e.preventDefault();let t=ue(e);if(pt=true,t&&t.node.kind==="data"){let o=e.target.closest(".kanuni-datagrid-row"),n=Kn(e,o);de={key:t.node.key,side:n},Fn(e,t.node.key,n);}else de=null,Fn(e,null,"after");oe=null,Ie(null);},er=()=>{ct!==null&&a.notifyRowDragEnd({rowKey:ct,dropped:pt,overKey:de?.key??null,position:de?.side??null}),pt=false,ct=null,oe=null,de=null,Ie(null);},tr=e=>{let t=e.relatedTarget;t&&F.contains(t)||oe!==null&&(de=null,Ie(null),a.notifyRowDrag("leave",{rowKey:oe}));},Ve=rt===void 0||rt===false?null:(()=>{let e=rt===true?{}:rt;return {always:e.always??false,maxRows:e.maxRows??Io}})(),We=false;function Wt(e){We!==e&&(We=e,T.classList.toggle("kanuni-datagrid-print",e),e?(Te++,document.documentElement.classList.add("kanuni-datagrid-printing")):(Te--,Te<=0&&(Te=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),Yt());}let Bn=null;if(Ve&&!Ve.always){let e=()=>{let o=a.getRows().length;if(o>Ve.maxRows){a.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${o} rows exceeds maxRows (${Ve.maxRows}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}Wt(true);},t=()=>Wt(false);window.addEventListener("beforeprint",e),window.addEventListener("afterprint",t),Bn=()=>{window.removeEventListener("beforeprint",e),window.removeEventListener("afterprint",t);};}let ve=0,J=[],_=0,zt=0;function qt(){let e=a.getColumnLayout(),t=a.getVirtualWindow().columns,o=[],n=(i,d,s,c)=>{let r=i.def;o.push({def:r,id:i.state.id,width:i.state.width,pinned:d,inset:s,className:pl(r.align,r.dataType)+(d?" kanuni-datagrid-cell--pinned":"")+(r.autoHeight?" kanuni-datagrid-cell--wrap":""),visualIndex:c});};e.left.forEach((i,d)=>n(i,"left",e.leftOffsets[d]+Q,d));for(let i=t.start;i<t.end&&i<e.center.length;i++)n(e.center[i],null,0,e.left.length+i);e.right.forEach((i,d)=>n(i,"right",e.rightOffsets[d],e.left.length+e.center.length+d)),J=o,_=t.offsetX;let l=(e.centerOffsets[Math.min(t.end,e.center.length)]??0)-(e.centerOffsets[Math.min(t.start,e.center.length)]??0);zt=Math.max(0,e.centerWidth-t.offsetX-l),O.style.minWidth=`${e.totalWidth+Q}px`;}let ft=26;function nr(){let e=a.getColumnLayout(),t=a.getVirtualWindow().columns,o=[...e.left,...e.center.slice(t.start,Math.min(t.end,e.center.length)),...e.right],n=datagridCore.bandDepth(o);if(at.textContent="",j.style.top=`${n*ft}px`,T.style.setProperty("--dg-band-offset",`${n*ft}px`),n===0)return;datagridCore.computeHeaderBands(o,n).forEach((i,d)=>{let s=p("kanuni-datagrid-band-row");if(s.style.top=`${d*ft}px`,s.style.height=`${ft}px`,Q>0){let c=p("kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned");c.style.width=`${Q}px`,c.style.flex="none",c.style.insetInlineStart="0px",s.appendChild(c);}if(_>0){let c=p("kanuni-datagrid-spacer");c.style.width=`${_}px`,c.style.flex="none",s.appendChild(c);}for(let c of i){let r=p(`kanuni-datagrid-band-cell${c.spacer?" kanuni-datagrid-band-cell--spacer":""}`);if(r.style.width=`${c.width}px`,r.style.flex="none",!c.spacer){if(c.columnIds.length>0){let f=datagridCore.bandPath(a.getColumnModel().getDef(c.columnIds[0])).slice(0,d+1);if(f.length===d+1&&a.isBandCollapsible(f)){let b=a.isBandCollapsed(f),h=document.createElement("button");h.type="button",h.className="kanuni-datagrid-band-toggle",h.setAttribute("aria-expanded",String(!b));let w=b?m.expandDetails??"Expand":m.collapseDetails??"Collapse";h.setAttribute("aria-label",w),h.title=w,h.appendChild(cl(b)),h.addEventListener("click",k=>{k.stopPropagation(),a.toggleBand(f);}),r.appendChild(h);}}let u=p("kanuni-datagrid-band-label","span");u.textContent=c.label,r.appendChild(u);}s.appendChild(r);}at.appendChild(s);});}let ze=null,gt=null;function mt(e,t){gt&>!==e&>.classList.remove("kanuni-datagrid-header-cell--drop-before","kanuni-datagrid-header-cell--drop-after"),gt=e,e&&(e.classList.toggle("kanuni-datagrid-header-cell--drop-before",t==="before"),e.classList.toggle("kanuni-datagrid-header-cell--drop-after",t==="after"));}function _n(){if(!ze)return;let e=a.getSelectedCount(),t=a.getVisibleCount(),o=t>0&&e>=t;ze.checked=o,ze.indeterminate=!o&&e>0;}function Xt(){nr();let e=a.getSort(),t=new Map(e.map((n,l)=>[n.columnId,{direction:n.direction,order:l}]));if(j.textContent="",ze=null,P){let n=p("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell");n.setAttribute("role","columnheader"),n.style.width=`${Je}px`,n.style.flex="none",n.style.insetInlineStart="0px",j.appendChild(n);}if(st){let n=p("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell");n.setAttribute("role","columnheader"),n.setAttribute("aria-label",m.detailsAria),n.style.width=`${Ze}px`,n.style.flex="none",n.style.insetInlineStart=`${Vt}px`,j.appendChild(n);}if(dt){let n=p("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell");n.setAttribute("role","columnheader"),n.style.width=`${Lt}px`,n.style.flex="none",n.style.insetInlineStart=`${Gn}px`;let l=document.createElement("input");l.type="checkbox",l.setAttribute("aria-label",m.selectAllRows),l.addEventListener("change",()=>{a.getSelectedCount()>0?a.clearSelection():a.selectAll();}),n.appendChild(l),j.appendChild(n),ze=l,_n();}let o=false;for(let n of J){if(!n.pinned&&!o){if(_>0){let r=document.createElement("div");r.style.flex=`0 0 ${_}px`,j.appendChild(r);}o=true;}let l=Bo&&n.def.sortable!==false,i=t.get(n.id),d=p(`kanuni-datagrid-header-cell${l?" kanuni-datagrid-header-cell--sortable":""}${n.pinned?" kanuni-datagrid-header-cell--pinned":""}`);d.setAttribute("role","columnheader"),d.setAttribute("data-column-id",n.id),d.setAttribute("aria-sort",i?i.direction==="asc"?"ascending":"descending":"none");let s=n.def.headerTooltip;s&&(d.title=s),d.style.width=`${n.width}px`,d.style.flex="none",n.pinned==="left"&&(d.style.insetInlineStart=`${n.inset}px`),n.pinned==="right"&&(d.style.insetInlineEnd=`${n.inset}px`);let c=p("kanuni-datagrid-header-label","span");if(n.def.renderHeader){let r=n.def.renderHeader({column:n.def});typeof r=="string"?c.textContent=r:c.appendChild(r);}else c.textContent=n.def.headerName??n.id;if(d.appendChild(c),i){let r=p("kanuni-datagrid-sort-indicator","span");if(r.setAttribute("aria-hidden","true"),r.textContent=i.direction==="asc"?"\u25B2":"\u25BC",d.appendChild(r),e.length>1){let u=p("kanuni-datagrid-sort-order","span");u.setAttribute("aria-hidden","true"),u.textContent=String(i.order+1),d.appendChild(u);}}if(l){let r=n.id;d.addEventListener("click",u=>{a.toggleSort(r,u.shiftKey);});}if($t!==false){let r=n.id;d.addEventListener("contextmenu",u=>{u.preventDefault(),yr(r,{left:u.clientX,top:u.clientY});});}if(I&&n.def.filterable!==false){let r=document.createElement("button");r.type="button";let u=a.getColumnFilter(n.id)!==null;r.className=`kanuni-datagrid-filter-button${u?" kanuni-datagrid-filter-button--active":""}${Ho==="always"?" kanuni-datagrid-filter-button--pinned":""}`,r.setAttribute("aria-haspopup","dialog"),r.setAttribute("aria-label",`${n.def.headerName??n.id} filter`),r.appendChild(ul()),r.addEventListener("click",f=>{f.stopPropagation(),cr(n.id,r);}),d.appendChild(r);}if(te&&n.def.reorderable!==false&&(d.draggable=true,d.addEventListener("dragstart",r=>{r.dataTransfer?.setData("text/x-kanuni-column",n.id),r.dataTransfer&&(r.dataTransfer.effectAllowed="move");}),d.addEventListener("dragover",r=>{if(!r.dataTransfer?.types.includes("text/x-kanuni-column"))return;r.preventDefault();let u=d.getBoundingClientRect(),f=r.clientX<u.left+u.width/2;mt(d,f?"before":"after");}),d.addEventListener("dragleave",r=>{let u=r.relatedTarget;(!u||!d.contains(u))&&mt(null,"before");}),d.addEventListener("drop",r=>{mt(null,"before");let u=r.dataTransfer?.getData("text/x-kanuni-column");if(!u||u===n.id)return;r.preventDefault();let f=d.getBoundingClientRect();if(r.clientX<f.left+f.width/2)a.moveColumn(u,n.id);else {let h=J.findIndex(w=>w.id===n.id);a.moveColumn(u,J[h+1]?.id);}}),d.addEventListener("dragend",()=>mt(null,"before"))),Ae&&n.def.resizable!==false){let r=p("kanuni-datagrid-resize-handle","span");r.setAttribute("data-resize-handle",n.id),r.setAttribute("role","presentation"),r.addEventListener("click",u=>u.stopPropagation()),r.addEventListener("dblclick",u=>{u.stopPropagation(),vr(n.id);}),r.addEventListener("pointerdown",u=>{u.preventDefault(),u.stopPropagation();let f=u.clientX,b=n.width,h=getComputedStyle(d).direction==="rtl"?-1:1;d.draggable=false;let w=b,k=false,M=W=>{k=true,w=b+(W.clientX-f)*h,a.setColumnWidth(n.id,w,false);},H=()=>{window.removeEventListener("pointermove",M),window.removeEventListener("pointerup",H),window.removeEventListener("pointercancel",H),k&&a.setColumnWidth(n.id,w,true),d.draggable=te&&n.def.reorderable!==false;};window.addEventListener("pointermove",M),window.addEventListener("pointerup",H),window.addEventListener("pointercancel",H);}),d.appendChild(r);}j.appendChild(d);}}let Vn=null,bt=null;function or(e){if(e===Vn)return;Vn=e;let t=[];for(let o=0;o<e.length;o++)e[o].kind!=="data"&&t.push(o);bt=t.length>0?t:null;}function rr(e){if(!bt)return e+1;let t=0,o=bt.length;for(;t<o;){let n=t+o>>1;bt[n]<=e?t=n+1:o=n;}return e+1-t}let qe=[];function Wn(e="data"){let t=p("kanuni-datagrid-row");if(t.setAttribute("role","row"),e==="panel"){let r=document.createElement("div");return r.setAttribute("role","gridcell"),r.setAttribute("aria-colindex","1"),t.appendChild(r),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,panelCell:r,epoch:ve}}if(e==="group"){let r=p("kanuni-datagrid-group-cell");r.setAttribute("role","gridcell"),r.setAttribute("aria-colindex","1");let u=p("kanuni-datagrid-group-twisty","span");u.setAttribute("aria-hidden","true");let f=p("kanuni-datagrid-group-caption","span"),b=p("kanuni-datagrid-group-label","span"),h=p("kanuni-datagrid-group-count","span"),w=p("kanuni-datagrid-group-aggregates","span");return r.append(u,f,b,h,w),t.appendChild(r),t.addEventListener("click",()=>{let k=t.getAttribute("data-group-key");k!==null&&a.toggleGroup(k);}),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,group:{cell:r,twisty:u,caption:f,label:b,count:h,aggregates:w},epoch:ve}}if(ut){let r=p("kanuni-datagrid-row-grip","span");r.setAttribute("aria-hidden","true"),r.title=m.dragToReorder??"Drag to reorder",r.innerHTML='<svg width="10" height="14" viewBox="0 0 10 14" focusable="false"><g fill="currentColor"><circle cx="3" cy="3" r="1.2"/><circle cx="7" cy="3" r="1.2"/><circle cx="3" cy="7" r="1.2"/><circle cx="7" cy="7" r="1.2"/><circle cx="3" cy="11" r="1.2"/><circle cx="7" cy="11" r="1.2"/></g></svg>',r.addEventListener("mouseenter",()=>{t.draggable=true;}),r.addEventListener("mouseleave",()=>{t.draggable=false;}),t.appendChild(r);}if(Gt)return {kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:ve};let o=null;P&&(o=p("kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell"),o.setAttribute("role","gridcell"),o.style.width=`${Je}px`,o.style.flex="none",o.style.insetInlineStart="0px",t.appendChild(o));let n=null;if(st){let r=p("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell");r.setAttribute("role","gridcell"),r.style.width=`${Ze}px`,r.style.flex="none",r.style.insetInlineStart=`${Vt}px`;let u=document.createElement("button");u.type="button",u.className="kanuni-datagrid-detail-toggle",u.tabIndex=-1,u.addEventListener("click",f=>{f.stopPropagation();let b=t.getAttribute("data-row-key");if(b===null)return;let h=a.getRows().find(w=>String(w.key)===b);h&&h.kind==="data"&&a.toggleDetail(h.key);}),u.addEventListener("mousedown",f=>f.stopPropagation()),r.appendChild(u),t.appendChild(r),n=u;}let l=null;if(dt){let r=p("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell");r.setAttribute("role","gridcell"),r.style.width=`${Lt}px`,r.style.flex="none",r.style.insetInlineStart=`${Gn}px`;let u=document.createElement("input");u.type="checkbox",u.tabIndex=-1;let f=()=>{let b=t.getAttribute("data-row-key");if(b===null)return;let h=a.getRows().find(w=>String(w.key)===b);h&&a.toggleRow(h.key);};r.addEventListener("mousedown",b=>b.stopPropagation()),r.addEventListener("click",b=>{b.target.tagName!=="INPUT"&&(b.stopPropagation(),f());}),u.addEventListener("change",f),u.addEventListener("click",b=>b.stopPropagation()),u.addEventListener("mousedown",b=>b.stopPropagation()),r.appendChild(u),t.appendChild(r),l=u;}let i=[],d=null,s=false;for(let r of J){!r.pinned&&!s&&(d=document.createElement("div"),d.style.flex=`0 0 ${_}px`,t.appendChild(d),s=true);let u=p(r.className);u.setAttribute("role","gridcell"),u.setAttribute("data-column-id",r.id),u.style.width=`${r.width}px`,u.style.flex="none",r.pinned==="left"&&(u.style.insetInlineStart=`${r.inset}px`),r.pinned==="right"&&(u.style.insetInlineEnd=`${r.inset}px`),t.appendChild(u),i.push({el:u,slot:r});}let c=document.createElement("div");return c.style.flex=`0 0 ${zt}px`,t.appendChild(c),{kind:e,root:t,cells:i,rowNumberCell:o,selectInput:l,detailToggle:n,leadingSpacer:d,trailingSpacer:c,epoch:ve}}let He="";function wt(e,t){if(He===""||t===""){e.textContent=t;return}let o=t.toLowerCase(),n=o.indexOf(He);if(n===-1){e.textContent=t;return}let l=[],i=0;for(;n!==-1;){n>i&&l.push(document.createTextNode(t.slice(i,n)));let d=document.createElement("mark");d.className="kanuni-datagrid-highlight",d.textContent=t.slice(n,n+He.length),l.push(d),i=n+He.length,n=o.indexOf(He,i);}i<t.length&&l.push(document.createTextNode(t.slice(i))),e.replaceChildren(...l);}function lr(e,t,o){let n=a.getColumnModel().getCellValue(o.data,t.id),l=t.def;if(l.renderCell){let d=l.renderCell({value:n,row:o.data,node:o,column:l});typeof d=="string"?e.textContent=d:e.replaceChildren(d);return}let i=datagridCore.lookupLabel(l,n);if(i!==null){wt(e,i);return}if(l.valueFormatter){let d=l.valueFormatter(n,o.data);wt(e,typeof d=="string"?d:String(d??""));return}if(l.dateFormat&&l.dataType==="date"){wt(e,datagridCore.formatDateValue(n,l.dateFormat));return}wt(e,n==null?"":String(n));}function zn(e,t,o){let n=e.root;if(n.setAttribute("aria-rowindex",String(o+2)),n.setAttribute("data-row-key",String(t.key)),t.kind==="detail"||t.kind==="editform"){let r=e.panelCell,u=t.kind==="detail";n.className=`kanuni-datagrid-row ${u?"kanuni-datagrid-detail-row":"kanuni-datagrid-editform-row"}`,n.style.height=`${t.height}px`,u?(n.setAttribute("data-detail-for",String(t.parentKey)),n.removeAttribute("data-editform-for")):(n.setAttribute("data-editform-for",t.parentKey===null?"":String(t.parentKey)),n.removeAttribute("data-detail-for")),r.className=u?"kanuni-datagrid-detail-cell":"kanuni-datagrid-editform-cell";let f=`${t.kind}:${String(t.key)}`;if(n.getAttribute("data-panel-for")!==f){n.setAttribute("data-panel-for",f);let b=u?Tn?.(t.data):t.parentKey===null?void 0:Ko?.(t.parentKey,t.data);r.textContent="",typeof b=="string"?r.textContent=b:b&&r.appendChild(b);}return}if(n.removeAttribute("data-panel-for"),n.removeAttribute("data-detail-for"),n.removeAttribute("data-editform-for"),t.kind==="filler"){n.style.display="none";return}n.style.display="",n.style.height=qn?"":`${a.getRowHeight()}px`,n.classList.toggle("kanuni-datagrid-row--odd",G&&o%2===1),n.classList.toggle("kanuni-datagrid-row--selected",a.isRowSelected(t.key));let l=a.getFocus();if(n.classList.toggle("kanuni-datagrid-row--focused",Cn&&l!==null&&l.rowKey===t.key),e.leadingSpacer&&(e.leadingSpacer.style.flex=`0 0 ${_}px`),e.trailingSpacer&&(e.trailingSpacer.style.flex=`0 0 ${zt}px`),ut){let r=xe!==null&&String(xe.key)===String(t.key);n.classList.toggle("kanuni-datagrid-row--drop-before",r&&xe.side==="before"),n.classList.toggle("kanuni-datagrid-row--drop-after",r&&xe.side==="after");}if(e.rowNumberCell&&(e.rowNumberCell.textContent=String(rr(o))),e.selectInput&&(e.selectInput.checked=a.isRowSelected(t.key),e.selectInput.setAttribute("aria-label",m.selectRowAria.replace("{row}",String(t.key)))),e.detailToggle&&t.kind==="data"){let r=a.isDetailExpanded(t.key);e.detailToggle.textContent=r?"\u25BE":"\u25B8",e.detailToggle.setAttribute("aria-expanded",String(r)),e.detailToggle.setAttribute("aria-label",r?m.collapseDetails:m.expandDetails);}if(t.kind==="group"&&e.group){let r=t;n.className=`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${r.level}`,n.setAttribute("aria-expanded",String(r.expanded)),n.setAttribute("aria-level",String(r.level+1)),n.setAttribute("data-group-key",String(r.key)),n.setAttribute("data-group-level",String(r.level)),e.group.cell.style.paddingLeft=r.level>0?`${8+r.level*18}px`:"",e.group.twisty.textContent=r.expanded?"\u25BE":"\u25B8";let u=a.getColumnModel().getDef(r.columnId),f=u?.headerName??r.columnId;e.group.caption.textContent=`${f}:`,e.group.label.textContent=datagridCore.lookupLabel(u,r.value)??(r.label===""?m.filterBlank:r.label),e.group.count.textContent=`(${r.count})`,e.group.aggregates.textContent="";let b=r.aggregates??null;if(b)for(let h of a.getSummaryDefs()){let w=p("kanuni-datagrid-group-aggregate","span"),k=p("kanuni-datagrid-group-aggregate-label","span"),M=a.getColumnModel().getDef(h.columnId);k.textContent=`${datagridCore.summaryLabel(h,Bt)} ${M?.headerName??h.columnId}:`,w.append(k,` ${datagridCore.formatSummaryValue(h,b[datagridCore.summaryKey(h.columnId,h.type)],M)}`),e.group.aggregates.appendChild(w);}return}if(t.kind!=="data"){for(let{el:r}of e.cells)r.textContent="";return}if(n.className=n.className.includes("group-row")?"kanuni-datagrid-row":n.className,Gt){let r=ut?1:0,u=Gt({row:t.data,node:t,rowIndex:o,selected:a.isRowSelected(t.key),focused:Cn&&l!==null&&l.rowKey===t.key});if(u instanceof Node&&n.childNodes.length===r+1&&n.childNodes[r]===u)return;for(;n.childNodes.length>r;)n.removeChild(n.lastChild);typeof u=="string"?n.appendChild(document.createTextNode(u)):u&&n.appendChild(u);return}let i=l!==null&&l.rowKey===t.key?l.columnId:null,d=t.tree,s=d?(()=>{let r=a.getColumnLayout();return (r.left[0]??r.center[0]??r.right[0])?.state.id??null})():null,c=a.hasCellSpans();for(let{el:r,slot:u}of e.cells){let f=Pt||Kt?{node:t,columnId:u.id,rowIndex:o,columnIndex:u.visualIndex,value:a.getColumnModel().getCellValue(t.data,u.id)}:null,b=f&&Pt?Pt(f):void 0,h=false;if(b!==void 0?b instanceof Node&&r.childNodes.length===1&&r.firstChild===b?h=true:typeof b=="string"?r.textContent=b:r.replaceChildren(b):(lr(r,u,t),d&&u.id===s&&dr(r,t,d)),c&&!h){let S=ir(o,u.id);r.classList.toggle("kanuni-datagrid-cell--span",S?.kind==="draw"),r.classList.toggle("kanuni-datagrid-cell--span-covered",S?.kind==="covered");let pe=b!==void 0;if(S?.kind==="covered"&&i!==u.id&&!pe)r.replaceChildren();else if(S?.kind==="draw"){let K=p("kanuni-datagrid-span-box");K.style.height=`${S.height}px`,K.append(...Array.from(r.childNodes)),r.appendChild(K);}}else c||r.classList.remove("kanuni-datagrid-cell--span","kanuni-datagrid-cell--span-covered");if(be){let S=!!Ut(t.key,u.id,t.data);r.classList.toggle("kanuni-datagrid-cell--noted",S);}r.id=`${g.gridId}-cell-${String(t.key)}-${u.id}`,r.classList.toggle("kanuni-datagrid-cell--focused",i===u.id);let w=r.getAttribute("data-slot-classes");if(w)for(let S of w.split(" "))r.classList.remove(S);let k=f&&Kt?Kt(f):void 0,M=u.def.cellClassName,W=[typeof M=="function"?M({value:a.getColumnModel().getCellValue(t.data,u.id),row:t.data,node:t,column:u.def}):M,k].filter(Boolean).join(" ")||void 0;if(W){for(let S of W.split(" "))r.classList.add(S);r.setAttribute("data-slot-classes",W);}else w&&r.removeAttribute("data-slot-classes");}}let qn=g.columns.some(e=>e.autoHeight);function ar(){if(!qn)return;let e=a.getVirtualWindow(),t=a.getRows(),o=new Map(a.getMeasuredRowHeights()),n=false;for(let l=e.rows.start;l<e.rows.end&&l<t.length;l++){let i=t[l];if(!i||i.kind!=="data")continue;let d=l-e.rows.start,s=qe[d]?.root;if(!s)continue;let c=s.getBoundingClientRect().height;c>0&&o.get(i.key)!==c&&(o.set(i.key,c),n=true);}n&&a.setMeasuredRowHeights(o);}let ht={start:0,end:0};function ir(e,t){let o=a.getCellSpans(t);if(o.length===0)return null;let n=datagridCore.spanRoleAt(o,e,ht.start,ht.end);if(!n)return null;if(n.role==="covered")return {kind:"covered"};let l=a.getRowOffset(n.drawStart);return {kind:"draw",height:a.getRowOffset(n.drawEnd)+a.getRowHeightAt(n.drawEnd)-l}}function dr(e,t,o){let n=p(`kanuni-datagrid-tree-cell${o.ancestorOnly?" kanuni-datagrid-tree-cell--ancestor":""}`,"span");if(n.style.paddingInlineStart=`${o.depth*16}px`,o.hasChildren){let l=document.createElement("button");l.type="button",l.className="kanuni-datagrid-tree-toggle",l.setAttribute("data-tree-toggle",""),l.setAttribute("aria-expanded",String(o.expanded)),l.setAttribute("aria-label",o.expanded?m.collapseDetails:m.expandDetails),l.textContent=o.expanded?"\u25BE":"\u25B8",l.addEventListener("mousedown",i=>i.stopPropagation()),l.addEventListener("click",i=>{i.stopPropagation(),a.toggleTreeRow(t.key);}),n.appendChild(l);}else n.appendChild(p("kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf","span"));n.append(...Array.from(e.childNodes)),e.appendChild(n);}let Ut=(e,t,o)=>be?be.get({rowKey:e,columnId:t,row:o})??null:null,Xn=null,se=Ot?p("kanuni-datagrid-overlay"):null;se&&(se.style.position="absolute",se.style.inset="0",se.style.pointerEvents="none",F.appendChild(se));function sr(){if(!Ot||!se)return;let e=Ot();e!==Xn&&(Xn=e,e?se.replaceChildren(e):se.replaceChildren());}function Yt(){sr();let e=a.getVirtualWindow(),t=a.getRows(),o=We?{...e,rows:{...e.rows,start:0,end:t.length,offsetY:0,totalHeight:0}}:e;or(t),F.style.height=`${o.rows.totalHeight}px`,D.style.transform=`translateY(${o.rows.offsetY}px)`,He=Fo?a.getSearchText().trim().toLowerCase():"";let n=Math.max(0,Math.min(o.rows.end,t.length)-o.rows.start);for(ht.start=o.rows.start,ht.end=Math.min(o.rows.end,t.length)-1;qe.length>n;)qe.pop().root.remove();for(let l=0;l<n;l++){let i=o.rows.start+l,d=t[i],s=d.kind==="data"?"data":d.kind==="group"?"group":d.kind==="detail"||d.kind==="editform"?"panel":"stub",c=qe[l];if(!c||c.epoch!==ve||c.kind!==s){let r=Wn(s);c?D.replaceChild(r.root,c.root):D.appendChild(r.root),qe[l]=r,c=r;}zn(c,d,i);}ar();}let Un=datagridCore.createDebouncedCommit(Oo??(a.isRemote()?200:0));function jt(){if(!Me)return;if(De.textContent="",Q>0){let t=p("kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned");t.style.width=`${Q}px`,t.style.flex="none",t.style.insetInlineStart="0px",De.appendChild(t);}let e=false;for(let t of J){if(!t.pinned&&!e){if(_>0){let n=p("kanuni-datagrid-spacer");n.style.width=`${_}px`,n.style.flex="none",De.appendChild(n);}e=true;}let o=p(`kanuni-datagrid-filter-cell${t.pinned?" kanuni-datagrid-filter-cell--pinned":""}`);if(o.style.width=`${t.width}px`,o.style.flex="none",t.pinned==="left"&&(o.style.insetInlineStart=`${t.inset}px`),t.pinned==="right"&&(o.style.insetInlineEnd=`${t.inset}px`),t.def.filterable!==false){let n=document.createElement("input");n.className="kanuni-datagrid-filter-input",n.setAttribute("aria-label",`${t.def.headerName??t.id} filter`);let l=()=>a.setColumnFilter(t.id,datagridCore.parseFilterInput(t.id,n.value,t.def.dataType),datagridCore.FILTER_PART_ROW);n.addEventListener("input",()=>Un.schedule(t.id,l));let i=()=>{Un.cancel(t.id),l();};n.addEventListener("keydown",d=>{d.key==="Enter"&&i();}),n.addEventListener("blur",i),o.appendChild(n);}De.appendChild(o);}}let Qt=()=>{};function ur(){if(!Ln)return;let e=document.createElement("input");e.type="search",e.className="kanuni-datagrid-toolbar-search",e.placeholder=m.toolbarSearch,e.setAttribute("aria-label",m.toolbarSearch);let t=null;e.addEventListener("input",()=>{t&&clearTimeout(t),t=setTimeout(()=>a.setSearchText(e.value),qo);});let o=p("kanuni-datagrid-toolbar-spacer"),n=null;if(Po){let r=document.createElement("button");r.type="button",r.textContent=m.toolbarColumns??"Columns",r.setAttribute("aria-haspopup","dialog"),r.addEventListener("click",()=>{let u=r.getBoundingClientRect();to({left:u.left,top:u.bottom+2});}),n=r;}let l=ie&&Wo,i=ie&&zo,d=document.createElement("button");d.type="button",d.className="kanuni-datagrid-toolbar-icon-button",d.setAttribute("aria-haspopup","menu"),d.setAttribute("aria-label",m.exportMenu),d.setAttribute("data-testid","dg-export-menu"),d.title=m.exportMenu,d.appendChild(sl());let s=null;d.addEventListener("click",()=>{if(s)return;let r=d.getBoundingClientRect();ke({left:r.right-190,top:r.bottom+2},u=>{u.setAttribute("role","menu"),u.setAttribute("aria-label",m.exportMenu);let f=[{kind:"csv",label:m.exportCsv,testId:"dg-export-csv",on:true},{kind:"excel",label:m.exportExcel,testId:"dg-export-excel",on:l},{kind:"excel-selected",label:m.exportExcelSelected,testId:"dg-export-excel-selected",on:l},{kind:"pdf",label:m.exportPdf,testId:"dg-export-pdf",on:i}];for(let b of f){if(!b.on)continue;let h=document.createElement("button");h.type="button",h.className="kanuni-datagrid-menu-item",h.setAttribute("role","menuitem"),h.setAttribute("data-testid",b.testId),h.textContent=b.label,b.kind==="excel-selected"&&a.getSelectedCount()===0&&(h.disabled=true),h.addEventListener("click",()=>{s=b.kind,d.disabled=true,V(),mn(a,b.kind).then(w=>{s=null,d.disabled=false,w.error&&Qt(w.error);});}),u.appendChild(h);}},"kanuni-datagrid-filter-popup kanuni-datagrid-export-menu");});for(let r of Vo??[])he.append(r);he.append(e,o),n&&he.append(n),he.append(d);for(let r of _o??[])he.append(r);let c=p("kanuni-datagrid-toolbar-error","span");c.setAttribute("role","alert"),c.style.display="none",he.append(c),Qt=r=>{c.textContent=r,c.style.display="";};}function Yn(){if(!Ne.isConnected)return;let e=a.getPage(),t=a.getPageCount();Ne.textContent="";let o=(s,c,r,u)=>{let f=document.createElement("button");return f.type="button",f.textContent=s,f.setAttribute("aria-label",c),f.disabled=r,f.addEventListener("click",u),f},n=p("kanuni-datagrid-pager-buttons"),l=e<=0,i=e>=t-1;n.append(o("\xAB",m.pagerFirst??"First",l,()=>a.setPage(0)),o("\u2039",m.pagerPrevious??"Previous",l,()=>a.setPage(e-1)));let d=p("kanuni-datagrid-pager-current","span");d.textContent=`${e+1} / ${t}`,n.append(d,o("\u203A",m.pagerNext??"Next",i,()=>a.setPage(e+1)),o("\xBB",m.pagerLast??"Last",i,()=>a.setPage(t-1))),Ne.appendChild(n);}function Jt(){if(!ne)return;let e=a.getColumnLayout(),t=a.getSummaries(),o=new Map(a.getSummaryDefs().map(l=>[l.columnId,l]));if($.textContent="",$.style.width=`${e.totalWidth+Q}px`,Q>0){let l=p("kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned");l.style.width=`${Q}px`,l.style.insetInlineStart="0px",$.appendChild(l);}let n=false;for(let l of J){if(!l.pinned&&!n){if(_>0){let c=p("kanuni-datagrid-spacer");c.style.width=`${_}px`,$.appendChild(c);}n=true;}let i=o.get(l.id),d=l.def.dataType==="number",s=p(`kanuni-datagrid-footer-cell${l.pinned?" kanuni-datagrid-footer-cell--pinned":""}${d?" kanuni-datagrid-footer-cell--number":""}${i?" kanuni-datagrid-footer-cell--active":""}`);if(s.setAttribute("role","gridcell"),s.setAttribute("data-column-id",l.id),s.setAttribute("data-summary-type",i?.type??""),s.style.width=`${l.width}px`,l.pinned==="left"&&(s.style.insetInlineStart=`${l.inset}px`),l.pinned==="right"&&(s.style.insetInlineEnd=`${l.inset}px`),i){s.title=`${datagridCore.summaryLabel(i,Bt)} \u2014 ${l.def.headerName??l.id}`;let c=p("kanuni-datagrid-footer-value","span");c.textContent=datagridCore.formatSummaryValue(i,t[datagridCore.summaryKey(i.columnId,i.type)],l.def),s.appendChild(c);}else {let c=p("kanuni-datagrid-footer-hint","span");c.textContent=Ke?"\xB7":"",s.appendChild(c);}$.appendChild(s);}}function Zt(){let e=(t,o,n)=>{t.textContent="",o.forEach((l,i)=>{let d=Wn("data");zn(d,{kind:"data",key:`__pinned-${n}-${i}`,sourceIndex:-1,data:l},i),d.root.classList.remove("kanuni-datagrid-row--odd"),d.root.removeAttribute("aria-rowindex"),d.rowNumberCell&&(d.rowNumberCell.textContent=""),t.appendChild(d.root);});};Se.length>0&&e(Oe,Se,"top"),Le.length>0&&e(Mn,Le,"bottom");}let Ge=null,en=null;function V(){en?.(),en=null,Ge?.remove(),Ge=null;}function jn(e,t){let n=e.getBoundingClientRect();n.width===0&&n.height===0||(e.style.left=`${Math.max(8,Math.min(t.left,window.innerWidth-n.width-8))}px`,e.style.top=`${Math.max(8,Math.min(t.top,window.innerHeight-n.height-8))}px`);}function ke(e,t,o="kanuni-datagrid-filter-popup"){V(),Ge=p(`${hn(g)} kanuni-datagrid-portal`);let n=p(o);n.style.position="fixed",n.style.left=`${e.left}px`,n.style.top=`${e.top}px`,n.style.zIndex="1000",t(n),Ge.appendChild(n),document.body.appendChild(Ge),jn(n,e);let l=Ge,i=s=>{l.contains(s.target)||V();},d=s=>{s.key==="Escape"&&V();};document.addEventListener("pointerdown",i,true),document.addEventListener("keydown",d,true),en=()=>{document.removeEventListener("pointerdown",i,true),document.removeEventListener("keydown",d,true);};}let Ee=25,Qn=8,Jn=new Map,Zn=0;function cr(e,t){let o=t.getBoundingClientRect(),n=++Zn;ke({left:o.left,top:o.bottom+2},l=>{let i=[],d=true,s=new Set,c=false,r=0,u="",f=[],b=null,h="",w=[],k=document.createElement("input");k.type="search",k.className="kanuni-datagrid-filter-search",k.placeholder=m.search,k.setAttribute("data-testid","dg-filter-search");let M=p("kanuni-datagrid-filter-actions"),H=document.createElement("button");H.type="button",H.textContent=m.filterSelectAll,H.addEventListener("click",()=>{c=true,s=new Set(i.map(C=>C.label)),Z();});let W=document.createElement("button");W.type="button",W.textContent=m.clear,W.addEventListener("click",()=>{c=true,s=new Set,Z();}),M.append(H,W);let S=p("kanuni-datagrid-filter-list");S.setAttribute("role","listbox"),S.setAttribute("aria-multiselectable","true");let pe=document.createElement("div");pe.style.position="relative";let K=document.createElement("div");pe.appendChild(K),S.appendChild(pe);let Tt=()=>{let C=u.trim().toLowerCase();if(!C){f=i;return}b||(b=i.map(L=>L.label.toLowerCase())),f=h!==""&&C.includes(h)?w.filter(L=>L.label.toLowerCase().includes(C)):i.filter((L,N)=>b[N].includes(C)),h=C,w=f;},Z=()=>{if(S.setAttribute("aria-busy",String(d)),S.setAttribute("aria-setsize",String(f.length)),d){pe.style.height="",K.textContent="";let U=p("kanuni-datagrid-filter-empty");U.textContent=m.filterLoading,K.appendChild(U);return}if(f.length===0){pe.style.height="",K.style.transform="",K.textContent="";let U=p("kanuni-datagrid-filter-empty");U.textContent=m.filterNoMatch,K.appendChild(U);return}let C=S.clientHeight||240,L=Math.max(0,Math.floor(S.scrollTop/Ee)-Qn),N=Math.ceil(C/Ee)+Qn*2,X=Math.min(L,Math.max(0,f.length-1)),Nr=Math.min(f.length,X+N);pe.style.height=`${f.length*Ee}px`,K.style.transform=`translateY(${X*Ee}px)`,K.textContent="";for(let U=X;U<Nr;U++){let Pe=f[U],ee=p("kanuni-datagrid-filter-item");ee.setAttribute("role","option"),ee.setAttribute("aria-selected",String(s.has(Pe.label))),ee.tabIndex=0,ee.setAttribute("data-value",Pe.label),ee.setAttribute("data-index",String(U)),U===r&&ee.classList.add("kanuni-datagrid-filter-item--active");let Ye=document.createElement("input");Ye.type="checkbox",Ye.readOnly=true,Ye.checked=s.has(Pe.label),Ye.tabIndex=-1;let Ro=document.createElement("span");Ro.textContent=Pe.label===""?m.filterBlank:Pe.label,ee.append(Ye,Ro),ee.addEventListener("click",()=>vo(Pe.label)),ee.addEventListener("focus",()=>{r=U;}),K.appendChild(ee);}},vo=C=>{c=true,s.has(C)?s.delete(C):s.add(C);for(let L of K.querySelectorAll(".kanuni-datagrid-filter-item")){if(L.getAttribute("data-value")!==C)continue;L.setAttribute("aria-selected",String(s.has(C)));let N=L.querySelector("input");N&&(N.checked=s.has(C));}};S.addEventListener("scroll",()=>{Jn.set(e,S.scrollTop),Z();}),k.addEventListener("input",()=>{u=k.value,r=0,Tt(),Z();});let fn=C=>{if(f.length===0)return;r=Math.max(0,Math.min(f.length-1,C));let L=r*Ee,N=S.clientHeight||240;L<S.scrollTop?S.scrollTop=L:L+Ee>S.scrollTop+N&&(S.scrollTop=L+Ee-N),Z(),l.querySelector(`.kanuni-datagrid-filter-item[data-index="${r}"]`)?.focus();},ko=()=>{if(d)return;let C;if(s.size===i.length)C=null;else {let L=s.has(""),N=i.filter(X=>X.label!==""&&s.has(X.label));N.length===0?C=L?{columnId:e,operator:"isnull"}:null:L?C={logic:"or",nodes:[{columnId:e,operator:"in",value:N.map(X=>X.value)},{columnId:e,operator:"isnull"}]}:C={columnId:e,operator:"in",value:N.map(X=>X.value)};}a.setColumnFilter(e,C,datagridCore.FILTER_PART_SET),V();};l.tabIndex=-1,l.addEventListener("keydown",C=>{let L=C.target===k;if(C.key==="Backspace"&&!L){C.preventDefault(),k.focus(),u=u.slice(0,-1),k.value=u,r=0,Tt(),Z();return}if(C.key==="ArrowDown"){C.preventDefault(),fn(L?0:r+1);return}if(C.key==="ArrowUp"){C.preventDefault(),fn(L?f.length-1:r-1);return}if(!L&&(C.key==="Home"||C.key==="End")){C.preventDefault(),fn(C.key==="Home"?0:f.length-1);return}if(C.key===" "&&!L){C.preventDefault();let N=f[r];N&&vo(N.label);return}if(C.key==="Enter"){C.preventDefault(),ko();return}!L&&C.key.length===1&&C.key!==" "&&!C.ctrlKey&&!C.metaKey&&!C.altKey&&(C.preventDefault(),k.focus(),u+=C.key,k.value=u,r=0,Tt(),Z());});let Eo=p("kanuni-datagrid-filter-footer"),St=document.createElement("button");St.type="button",St.textContent=m.cancel,St.addEventListener("click",()=>V());let fe=document.createElement("button");fe.type="button",fe.className="kanuni-datagrid-filter-primary",fe.setAttribute("data-testid","dg-filter-apply"),fe.textContent=m.apply,fe.disabled=true,fe.addEventListener("click",ko),Eo.append(St,fe),l.append(k,M,S,Eo),Z(),queueMicrotask(()=>{k.isConnected&&k.focus();}),a.getDistinctValueSetAsync(e).then(C=>{if(Zn!==n||!l.isConnected)return;i=C.entries,b=null,h="",d=false,fe.disabled=false;let L=datagridCore.selectedLabelsFromFilter(a.getColumnFilter(e,datagridCore.FILTER_PART_SET)??a.getColumnFilter(e,datagridCore.FILTER_PART_DEFAULT),i);L?(c=true,s=new Set(L)):c||(s=new Set(i.map(X=>X.label))),Tt();let N=Jn.get(e);Z(),N&&(S.scrollTop=N,Z());});});}function yt(e={}){let t=a.getClipboardText(e);a.notifyClipboardGesture("copy",t?t.split(`
|
|
2
|
-
`).length:0,()=>!t||!navigator.clipboard?.writeText?false:(navigator.clipboard.writeText(t).catch(()=>{}),true));}function pr(e){if(nt===false)return [];let t=nt===true?{}:nt,o=[],n=i=>{e&&o.length===0&&o.push({separator:true,id:"__dg-sep"}),o.push(i);};t.copy!==false&&n({id:"__dg-copy",label:m.menuCopy,shortcut:`${gr}C`,onSelect:()=>yt()}),t.copyWithHeaders!==false&&n({id:"__dg-copy-headers",label:m.menuCopyWithHeaders,onSelect:()=>yt({includeHeaders:true})}),t.copyWithGroupHeaders!==false&&fr()&&n({id:"__dg-copy-group-headers",label:m.menuCopyWithGroupHeaders,onSelect:()=>yt({includeGroupHeaders:true})});let l=t.export===false?[]:Array.isArray(t.export)?t.export:["csv","excel","excel-selected","pdf"];if(l.length>0){let i=a.getSelectedCount()===0,d={csv:m.exportCsv,excel:m.exportExcel,"excel-selected":m.exportExcelSelected,pdf:m.exportPdf};n({id:"__dg-export",label:m.menuExport,items:l.map(s=>({id:`__dg-export-${s}`,label:d[s],disabled:s==="excel-selected"&&i,onSelect:()=>{mn(a,s).then(c=>{c.error&&Qt(c.error);});}}))});}return o}function fr(){let e=a.getColumnModel();return a.getVisualColumnIds().some(t=>{let o=e.getDef(t)?.band;return typeof o=="string"?o!=="":Array.isArray(o)&&o.length>0})}let gr=/Mac|iPhone|iPad|iPod/.test(navigator.platform??"")?"\u2318":"Ctrl+";function tn(e,t,o){let n=null,l=()=>{n?.remove(),n=null;};t.forEach((i,d)=>{if(i.separator){let f=p("kanuni-datagrid-menu-separator");f.setAttribute("role","separator"),e.appendChild(f);return}let s=p("kanuni-datagrid-menu-row"),c=document.createElement("button");if(c.type="button",c.className="kanuni-datagrid-menu-item",c.setAttribute("role","menuitem"),c.setAttribute("data-item-index",String(d)),i.disabled&&(c.disabled=true),i.icon!==void 0){let f=p("kanuni-datagrid-menu-icon","span");typeof i.icon=="string"?f.textContent=i.icon:f.appendChild(i.icon),c.appendChild(f);}let r=p("kanuni-datagrid-menu-label","span");if(r.textContent=i.label??"",c.appendChild(r),i.shortcut){let f=p("kanuni-datagrid-menu-shortcut","span");f.textContent=i.shortcut,c.appendChild(f);}let u=i.items??[];if(u.length>0){let f=p("kanuni-datagrid-menu-caret","span");f.textContent="\u203A",c.appendChild(f),c.setAttribute("aria-haspopup","menu"),c.setAttribute("aria-expanded","false");let b=()=>{l();let h=p("kanuni-datagrid-context-menu kanuni-datagrid-submenu");h.setAttribute("role","menu");let w=c.getBoundingClientRect();h.style.left=`${w.right}px`,h.style.top=`${Math.max(0,w.top-4)}px`;for(let k of u){if(k.separator){let W=p("kanuni-datagrid-menu-separator");W.setAttribute("role","separator"),h.appendChild(W);continue}let M=document.createElement("button");M.type="button",M.className="kanuni-datagrid-menu-item",M.setAttribute("role","menuitem"),k.disabled&&(M.disabled=true);let H=p("kanuni-datagrid-menu-label","span");H.textContent=k.label??"",M.appendChild(H),M.addEventListener("click",()=>{k.onSelect?.(o),V();}),h.appendChild(M);}e.parentElement?.appendChild(h),jn(h,{left:w.right,top:Math.max(0,w.top-4)}),n=h,c.setAttribute("aria-expanded","true");};c.addEventListener("mouseenter",b),c.addEventListener("click",b);}else c.addEventListener("mouseenter",l),c.addEventListener("click",()=>{i.onSelect?.(o),V();});s.appendChild(c),e.appendChild(s);});}let eo=e=>{let o=e.target.closest(".kanuni-datagrid-row");if(!o||o.classList.contains("kanuni-datagrid-group-row"))return;let n=ue(e);if(n?.columnId&&a.notifyCell("cellContextMenu",n.node,n.rowIndex,n.columnId),!ot&&!nt||!n||n.node.kind!=="data")return;e.preventDefault(),a.isRowSelected(n.node.key)||a.handleRowClick(n.node.key,{}),n.columnId&&a.focusCell(n.node.key,n.columnId);let l={row:n.node.data,node:n.node,rowIndex:n.rowIndex,columnId:n.columnId,selectedKeys:a.getSelectedKeys()},i=(typeof ot=="function"?ot(l):ot)??[],d=[...i,...mr(l,i.length>0)],s=pr(d.length>0);d.length===0&&s.length===0||ke({left:e.clientX,top:e.clientY},c=>{c.setAttribute("role","menu"),tn(c,[...d,...s],l);},"kanuni-datagrid-context-menu");};function mr(e,t){if(!be?.onChange||be.menu===false)return [];let o=e.columnId;if(!o)return [];let n=e.node.key,l=Ut(n,o,e.row),i=[];return t&&i.push({separator:true,id:"__note-sep"}),i.push({id:"__note-edit",label:l?m.editNote:m.addNote,onSelect:()=>br(n,o,e.row,l??"")}),l&&i.push({id:"__note-delete",label:m.deleteNote,onSelect:()=>be.onChange?.({rowKey:n,columnId:o,row:e.row,text:null})}),i}function br(e,t,o,n){let i=(T.querySelector(`[data-row-key="${CSS.escape(String(e))}"] [data-column-id="${CSS.escape(t)}"]`)??T).getBoundingClientRect();queueMicrotask(()=>{ke({left:i.left,top:i.bottom+2},d=>{d.setAttribute("aria-label",m.noteEditorAria);let s=document.createElement("textarea");s.className="kanuni-datagrid-note-input",s.rows=4,s.value=n,s.setAttribute("aria-label",m.noteEditorAria),s.placeholder=m.notePlaceholder,s.setAttribute("data-testid","dg-note-input");let c=()=>{let b=s.value.trim();V(),be?.onChange?.({rowKey:e,columnId:t,row:o,text:b===""?null:b});};s.addEventListener("keydown",b=>{b.key==="Enter"&&(b.ctrlKey||b.metaKey)&&(b.preventDefault(),c()),b.key==="Escape"&&(b.preventDefault(),V());});let r=p("kanuni-datagrid-note-actions"),u=document.createElement("button");u.type="button",u.className="kanuni-datagrid-note-cancel",u.textContent=m.cancel,u.addEventListener("click",()=>V());let f=document.createElement("button");f.type="button",f.className="kanuni-datagrid-note-save",f.setAttribute("data-testid","dg-note-save"),f.textContent=m.save,f.addEventListener("click",c),r.append(u,f),d.append(s,r),queueMicrotask(()=>{s.focus(),s.select();});},"kanuni-datagrid-filter-popup kanuni-datagrid-note-editor");});}function wr(e){Ce!==e&&(Ce=e,e?(T.insertBefore(B,R),rn()):B.remove());}function hr(e){if(ne!==e){if(ne=e,e){if(we){let t=Se.length>0?Oe:F;O.insertBefore($,t);}else O.append($);Jt();}else $.remove();Oe.style.setProperty("--dg-pinned-gap",String(_t+(ne&&we?1:0)));}}function nn(e){let t=bn(T,e);t!==null&&a.setColumnWidth(e,t);}function yr(e,t){let o=a.getColumnModel().getDef(e),n={columnId:e,headerName:o?.headerName??e},l=gn(n,{controller:a,t:m,groupPanelVisible:Ce,footerVisible:ne,onToggleGroupPanel:()=>wr(!Ce),onToggleFooter:()=>hr(!ne),onOpenFieldChooser:()=>to(t),onBestFit:nn,onBestFitAll:()=>{for(let d of a.getColumnStates())d.visible&&nn(d.id);},maxGroupLevels:ie?Number.POSITIVE_INFINITY:1}),i=typeof $t=="function"?$t(n,l):l;i.length!==0&&ke(t,d=>{d.setAttribute("role","menu"),tn(d,i,n);},"kanuni-datagrid-context-menu");}function Cr(e,t){let o=a.getColumnModel().getDef(e),n=a.getColumnSummary(e),l={columnId:e,headerName:o?.headerName??o?.field??e},i=[{id:"none",label:m.noTotal,disabled:n===null,onSelect:()=>a.setColumnSummary(e,null)},{id:"sep",separator:true},...datagridCore.allowedSummaryTypes(o?.dataType).map(d=>({id:d,label:Bt[d],disabled:n?.type===d,onSelect:()=>a.setColumnSummary(e,d)}))];ke(t,d=>{d.setAttribute("role","menu"),tn(d,i,l);},"kanuni-datagrid-context-menu");}function to(e){ke(e,t=>{let o=p("kanuni-datagrid-filter-list");for(let n of a.getColumnStates()){let l=document.createElement("label");l.className="kanuni-datagrid-filter-item";let i=document.createElement("input");i.type="checkbox",i.checked=n.visible,i.addEventListener("change",()=>{a.setColumnVisible(n.id,i.checked);});let d=document.createElement("span"),s=a.getColumnModel().getDef(n.id);d.textContent=s?.headerName??n.id,l.append(i,d),o.appendChild(l);}t.appendChild(o);},"kanuni-datagrid-filter-popup kanuni-datagrid-column-chooser");}let Re=null,on=null,Ct=e=>{B.classList.toggle("kanuni-datagrid-group-panel--over",e);};function no(e,t,o){let n=a.getGroupLevels();if(e===t)return;let l=n.filter(s=>s!==e),i=l.indexOf(t);if(i<0)return;let d=o==="before"?i:i+1;on=e,a.groupBy([...l.slice(0,d),e,...l.slice(d)]);}function oo(e,t){let o=a.getGroupLevels(),n=o.indexOf(e),l=n+t;n<0||l<0||l>=o.length||no(e,o[l],t===-1?"before":"after");}function ro(e,t){if(!e)return;let o=a.getGroupLevels();if(o.includes(e))return;let n=ie?Number.POSITIVE_INFINITY:1;if(o.length>=n){a.groupBy([...o.slice(0,n-1),e]);return}let l=t??o.length;a.groupBy([...o.slice(0,l),e,...o.slice(l)]);}function rn(){if(!Ce)return;B.textContent="";let e=a.getGroupLevels();if(e.length===0){let c=p("kanuni-datagrid-group-panel-hint","span");c.textContent=m.groupPanelHint??"Drag a column header here to group by it",B.appendChild(c);return}let t=c=>a.getColumnModel().getDef(c)?.headerName??c,o=p("kanuni-datagrid-group-levels"),n=(c,r)=>c<r.top+r.height/2?"before":"after",l=(c,r)=>{for(let u of B.querySelectorAll(".kanuni-datagrid-group-level"))u.classList.remove("kanuni-datagrid-group-level--drop-before","kanuni-datagrid-group-level--drop-after");c&&r&&c.classList.add(`kanuni-datagrid-group-level--drop-${r}`);};e.forEach((c,r)=>{let u=p("kanuni-datagrid-group-level");u.style.setProperty("--dg-group-level",String(r)),u.setAttribute("data-group-level",String(r));let f=p("kanuni-datagrid-group-chip");if(f.setAttribute("role","button"),f.tabIndex=0,e.length>1&&(f.draggable=true),f.setAttribute("aria-label",`${datagridCore.fillText(m.groupLevelAria,{n:r+1})}: ${t(c)}`),f.addEventListener("dragstart",w=>{Re=c,w.dataTransfer&&(w.dataTransfer.effectAllowed="move",w.dataTransfer.setData("text/x-kanuni-column",c));}),f.addEventListener("dragend",()=>{Re=null,l(null,null);}),f.addEventListener("keydown",w=>{let k=w.ctrlKey||w.metaKey;k&&(w.key==="ArrowUp"||w.key==="ArrowLeft")?(w.preventDefault(),oo(c,-1)):k&&(w.key==="ArrowDown"||w.key==="ArrowRight")?(w.preventDefault(),oo(c,1)):(w.key==="Delete"||w.key==="Backspace")&&(w.preventDefault(),a.groupBy(e.filter(M=>M!==c)));}),u.addEventListener("dragover",w=>{!Re&&!(w.dataTransfer?.types.includes("text/x-kanuni-column")??false)||(w.preventDefault(),w.stopPropagation(),l(u,n(w.clientY,u.getBoundingClientRect())));}),u.addEventListener("drop",w=>{w.preventDefault(),w.stopPropagation();let k=n(w.clientY,u.getBoundingClientRect());l(null,null),Ct(false);let M=Re;if(Re=null,M){no(M,c,k);return}let H=w.dataTransfer?.getData("text/x-kanuni-column");H&&ro(H,k==="before"?r:r+1);}),e.length>1){let w=p("kanuni-datagrid-group-chip-level","span");w.textContent=String(r+1),f.appendChild(w);}let b=document.createElement("span");b.textContent=t(c);let h=document.createElement("button");h.type="button",h.setAttribute("aria-label",datagridCore.fillText(m.groupRemoveAria,{column:t(c)})),h.textContent="\xD7",h.addEventListener("click",()=>{a.groupBy(e.filter(w=>w!==c));}),h.draggable=false,f.append(b,h),u.appendChild(f),o.appendChild(u),on===c&&(on=null,queueMicrotask(()=>f.focus()));}),B.appendChild(o);let i=p("kanuni-datagrid-group-panel-actions"),d=document.createElement("button");d.type="button",d.textContent="Expand all",d.addEventListener("click",()=>a.expandAllGroups());let s=document.createElement("button");s.type="button",s.textContent="Collapse all",s.addEventListener("click",()=>a.collapseAllGroups()),i.append(d,s),B.appendChild(i);}if(Ce){let e=t=>t.dataTransfer?.types.includes("text/x-kanuni-column")??false;B.addEventListener("dragover",t=>{e(t)&&(t.preventDefault(),Ct(true));}),B.addEventListener("dragleave",t=>{let o=t.relatedTarget;o&&B.contains(o)||Ct(false);}),B.addEventListener("drop",t=>{Ct(false);let o=t.dataTransfer?.getData("text/x-kanuni-column");if(o){if(t.preventDefault(),Re){Re=null;return}ro(o);}});}let lo="";function ao(){if(!vn)return;let e=[datagridCore.fillText(m.announceRows,{n:a.getVisibleCount()})],t=a.getSort();if(t.length>0){let l=t.map(i=>{let d=a.getColumnModel().getDef(i.columnId),s=d?.headerName??d?.field??i.columnId,c=i.direction==="desc"?m.announceDescending:m.announceAscending;return `${s} ${c}`}).join(", ");e.push(datagridCore.fillText(m.announceSortedBy,{columns:l}));}let o=a.getSelectedCount();o>0&&e.push(datagridCore.fillText(m.announceSelected,{n:o}));let n=e.join(", ");n!==lo&&(lo=n,Be.textContent=n);}function io(){if(!Dt)return;ye.textContent="";let e=datagridCore.describeFilter(a.getEffectiveFilter(),a.getColumnModel(),{...kn,labels:{...datagridCore.filterLabels(m),...kn?.labels}});if(!e&&Dt!=="always"){ye.style.display="none";return}ye.style.display="";let t=a.isFilterEnabled();ye.className=`kanuni-datagrid-filter-panel${t?"":" kanuni-datagrid-filter-panel--suspended"}`;let o=document.createElement("button");o.type="button",o.className="kanuni-datagrid-filter-panel-clear",o.title=m.filterRemove,o.setAttribute("aria-label",m.filterRemove),o.setAttribute("data-testid","dg-filter-panel-clear"),o.disabled=e===null,o.textContent="\xD7",o.addEventListener("click",()=>{a.setFilter(null),a.clearColumnFilters(),a.setFilterEnabled(true);});let n=document.createElement("input");n.type="checkbox",n.className="kanuni-datagrid-filter-panel-toggle",n.checked=t,n.disabled=e===null,n.title=m.filterToggle,n.setAttribute("aria-label",m.filterToggle),n.setAttribute("data-testid","dg-filter-panel-toggle"),n.addEventListener("change",()=>a.setFilterEnabled(n.checked));let l=p("kanuni-datagrid-filter-panel-text","span");if(l.setAttribute("data-testid","dg-filter-panel-text"),l.textContent=e??m.filterNone,e&&(l.title=e),ye.append(o,n,l),yn){let i=document.createElement("button");i.type="button",i.className="kanuni-datagrid-filter-panel-builder",i.title=m.filterEditBuilder,i.setAttribute("aria-label",m.filterEditBuilder),i.setAttribute("data-testid","dg-filter-panel-builder"),i.textContent="\u25BE",i.addEventListener("click",yn),ye.appendChild(i);}}let ln=new Set,xr=a.events.on("cellsFlashed",({rowKeys:e,columnIds:t,duration:o})=>{let n=e.length?e.map(s=>`[data-row-key="${CSS.escape(String(s))}"]`).join(","):".kanuni-datagrid-row",l=t.length?t.map(s=>`[data-column-id="${CSS.escape(s)}"]`).join(","):"[data-column-id]",i=[];D.querySelectorAll(n).forEach(s=>{s.querySelectorAll(l).forEach(c=>i.push(c));});for(let s of i)s.classList.remove("kanuni-datagrid-cell--flash");T.offsetWidth;for(let s of i)s.classList.add("kanuni-datagrid-cell--flash");let d=setTimeout(()=>{for(let s of i)s.classList.remove("kanuni-datagrid-cell--flash");ln.delete(d);},o);ln.add(d);});function ue(e){let t=e.target,o=t.closest(".kanuni-datagrid-row");if(!o||!D.contains(o))return null;let n=o.getAttribute("data-row-key");if(n===null)return null;let l=a.getRows(),i=l.findIndex(s=>String(s.key)===n);if(i===-1)return null;let d=t.closest(".kanuni-datagrid-cell")?.getAttribute("data-column-id")??null;return {node:l[i],rowIndex:i,columnId:d}}let so=e=>{let t=ue(e);t&&(Go?.(t.node),a.notifyRow("rowClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellClicked",t.node,t.rowIndex,t.columnId));},uo=e=>{let t=ue(e);if(t){if(Rn){let o=pn(t);o&&Rn(o);}It?.(t.node),a.notifyRow("rowDoubleClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellDoubleClicked",t.node,t.rowIndex,t.columnId);}};D.addEventListener("click",so),D.addEventListener("dblclick",uo);function vr(e){let t=0,o=j.querySelector(`[data-column-id="${CSS.escape(e)}"]`);o&&(t=o.scrollWidth),D.querySelectorAll(`[data-column-id="${CSS.escape(e)}"]`).forEach(n=>{n.scrollWidth>t&&(t=n.scrollWidth);}),t>0&&a.setColumnWidth(e,t+12,true);}function kr(){if(I)for(let e of j.querySelectorAll(".kanuni-datagrid-filter-button")){let t=e.parentElement?.getAttribute("data-column-id");t&&e.classList.toggle("kanuni-datagrid-filter-button--active",a.getColumnFilter(t)!==null);}}let an=false,co=false,$e=null;function xt(){$e!==null&&(clearTimeout($e),$e=null);}function vt(e){Fe.style.display=e?"":"none";}function kt(){let e=a.getOverlay();if(it.style.display=e==="noRows"?"":"none",Ft===false){xt(),vt(false);return}if(!(e==="loading"&&(an||!co))){xt(),vt(false);return}if(an||An<=0){xt(),vt(true);return}$e!==null||Fe.style.display===""||($e=setTimeout(()=>{$e=null,q||vt(true);},An));}let po=false,dn=false,sn=false,un=false,q=false;function Er(){if(dn=false,!q){if(sn)sn=false,un&&(un=false,ve++),qt(),Xt(),jt(),Zt();else {let e=_;qt(),_!==e&&(ve++,Xt(),jt(),Zt());}Yt(),_n(),Jt(),Yn(),kr(),rn(),io(),ao(),kt();}}function cn(e){q||(e&&(sn=true),!dn&&(dn=true,queueMicrotask(Er)));}let Rr=[...xn?[a.events.on("focusedRowChanged",e=>xn({rowKey:e.rowKey,row:e.row}))]:[],...ol.map(e=>a.events.on(e,()=>cn(true))),...rl.map(e=>a.events.on(e,()=>{un=true;})),...ll.map(e=>a.events.on(e,()=>cn(false))),a.events.on("overlayChanged",e=>{an=e.manual===true&&e.overlay==="loading",q||kt();}),a.events.on("busyChanged",e=>{co=e.background===true,q||kt();}),a.events.on("paginationChanged",()=>{q||cn(false);}),a.events.on("scrollRequested",e=>{if(q)return;e.scrollTop!==void 0&&(R.scrollTop=e.scrollTop),e.scrollLeft!==void 0&&(R.scrollLeft=e.scrollLeft),a.setScroll(R.scrollTop,Math.abs(R.scrollLeft));let t=e.scrollTop;t===void 0||Math.abs(R.scrollTop-t)<=1||setTimeout(()=>{q||Math.abs(R.scrollTop-t)<=1||(R.scrollTop=t,a.setScroll(R.scrollTop,Math.abs(R.scrollLeft)));},0);}),...Ht==="fitGrid"?[a.events.on("gridSizeChanged",()=>a.sizeColumnsToFit())]:[],...Ht==="fitCells"?[a.events.on("firstDataRendered",()=>{q||po||(po=true,queueMicrotask(()=>{if(!q)for(let e of a.getColumnStates())e.visible&&nn(e.id);}));})]:[]];Ht==="fitGrid"&&a.sizeColumnsToFit();function pn(e){if(!e.columnId||e.node.kind!=="data")return null;let t=J.find(o=>o.id===e.columnId);return t?{node:e.node,columnId:e.columnId,rowIndex:e.rowIndex,columnIndex:t.visualIndex,value:a.getColumnModel().getCellValue(e.node.data,t.id)}:null}let fo=e=>{let t=e.target;if(En){let s=ue(e),c=s?pn(s):null;c&&En(c,e);}let o=t.closest(".kanuni-datagrid-row");if(!o||o.classList.contains("kanuni-datagrid-group-row"))return;let n=o.getAttribute("data-row-key");if(n===null)return;let l=a.getRows().find(s=>String(s.key)===n);if(!l||l.kind!=="data")return;a.handleRowClick(l.key,{ctrlKey:e.ctrlKey||dt&&!e.shiftKey,metaKey:e.metaKey,shiftKey:e.shiftKey});let i=t.closest(".kanuni-datagrid-cell"),d=i?J.find(s=>i.id.endsWith(`-${s.id}`))?.id:void 0;d&&a.focusCell(l.key,d);},go=e=>{if(!lt)return;let o=e.target.closest(".kanuni-datagrid-cell");if(!o||!D.contains(o)||e.relatedTarget?.closest?.(".kanuni-datagrid-cell")===o)return;let l=ue(e),i=l?pn(l):null;i&<(i,e);};D.addEventListener("mousedown",fo),D.addEventListener("contextmenu",eo),lt&&D.addEventListener("mouseover",go),ut&&(F.addEventListener("dragstart",Qo),F.addEventListener("dragover",Jo),F.addEventListener("drop",Zo),F.addEventListener("dragend",er),F.addEventListener("dragleave",tr)),T.tabIndex=0;let mo=e=>{let t=e.target;if(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable)return;let o=datagridCore.resolveGridCommand({key:e.key,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey,altKey:e.altKey});if(!o)return;if(o.type==="copy"){yt();return}if(o.type==="activate"){if(It){let i=a.getFocus(),d=i?a.getRows().find(s=>s.key===i.rowKey):void 0;d&&It(d);}o.preventDefault&&e.preventDefault();return}a.executeCommand(o),o.preventDefault&&e.preventDefault();let n=a.getFocusIndices();if(n){let d=a.getColumnLayout().center.findIndex(c=>c.state.id===a.getFocus()?.columnId),s=a.ensureVisible(n.rowIndex,d===-1?void 0:d);s&&(s.scrollTop!==void 0&&(R.scrollTop=s.scrollTop),s.scrollLeft!==void 0&&(R.scrollLeft=s.scrollLeft),a.setScroll(R.scrollTop,Math.abs(R.scrollLeft)));}let l=a.getFocus();T.setAttribute("aria-activedescendant",l?`${g.gridId}-cell-${String(l.rowKey)}-${l.columnId}`:"");};T.addEventListener("keydown",mo);let Tr=Sn?datagridCore.attachStateStoring(a,Sn):null,Sr=typeof me=="object"?me.delay??400:400,Lr=me!==false&&!(typeof me=="object"&&me.enabled===false),Ar=typeof me=="object"?me.showOnTruncation!==false:true,Xe=null,Et=null;function Ue(){Et&&clearTimeout(Et),Et=null,Xe?.remove(),Xe=null;}let Mr=e=>e.scrollWidth>e.clientWidth+1||e.scrollHeight>e.clientHeight+1;function Dr(e){let o=e.closest(".kanuni-datagrid-row")?.getAttribute("data-row-key"),n=J.find(s=>e.id.endsWith(`-${s.id}`));if(!o||!n)return null;let l=a.getRows().find(s=>String(s.key)===o);if(!l||l.kind!=="data")return null;let i=n.def,d=Ut(l.key,n.id,l.data);if(d)return d;if(typeof i.tooltip=="function")return i.tooltip({value:a.getColumnModel().getCellValue(l.data,n.id),row:l.data,node:l,column:i})??null;if(typeof i.tooltip=="string")return i.tooltip;if(i.tooltipField){let s=l.data[i.tooltipField];return s==null?null:String(s)}return Ar&&Mr(e)?e.textContent??null:null}let bo=e=>{if(!Lr)return;Ue();let t=e.target.closest(".kanuni-datagrid-cell");!t||!D.contains(t)||(Et=setTimeout(()=>{let o=Dr(t);if(!o)return;let n=t.getBoundingClientRect();Xe=p(`${hn(g)} kanuni-datagrid-portal`);let l=p("kanuni-datagrid-tooltip");l.setAttribute("role","tooltip"),l.textContent=o,l.style.position="fixed",l.style.left=`${n.left}px`,l.style.top=`${n.bottom+4}px`,l.style.zIndex="1001",Xe.appendChild(l),document.body.appendChild(Xe);},Sr));},wo=()=>Ue();T.addEventListener("pointerover",bo),T.addEventListener("pointerout",wo),R.addEventListener("scroll",Ue,{passive:true});let ho=()=>{if(a.setScroll(R.scrollTop,Math.abs(R.scrollLeft)),ce)for(let e of yo())e.scroller.scrollLeft!==R.scrollLeft&&(e.scroller.scrollLeft=R.scrollLeft);};R.addEventListener("scroll",ho,{passive:true});let ce=null,yo=()=>{if(!Y||!ce)return [];let e=Qe.get(Y);return e?[...e].filter(t=>t!==ce):[]},Co=null;if(Y){ce={controller:a,scroller:R};let e=Qe.get(Y)??new Set;e.add(ce),Qe.set(Y,e),Co=a.events.on("columnStateChanged",()=>{if(wn.has(Y))return;let t=yo();if(t.length===0)return;let o=a.getColumnStates();wn.add(Y);try{for(let n of t)n.controller.applyColumnStates(o);}finally{wn.delete(Y);}});}let xo=()=>{a.setViewportSize(R.clientWidth,R.clientHeight),R.style.setProperty("--dg-viewport-width",`${R.clientWidth}px`);let e=F.getBoundingClientRect(),t=O.getBoundingClientRect();a.setChromeOffsets(e.top-t.top,t.bottom-e.bottom),datagridCore.calibrateMaxScrollOffset(R,a);};xo();let Rt=null;return typeof ResizeObserver<"u"&&(Rt=new ResizeObserver(xo),Rt.observe(R),Rt.observe(O)),qt(),Xt(),jt(),ur(),Zt(),Yt(),Jt(),Yn(),rn(),io(),ao(),kt(),Ve?.always&&Wt(true),{controller:a,element:T,setData:e=>a.setData(e),setColumns:e=>a.setColumns(e),destroy:()=>{if(!q){if(q=true,Rr.forEach(e=>e()),Rt?.disconnect(),Bn?.(),We&&(We=false,Te--,Te<=0&&(Te=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),Co?.(),Y&&ce){let e=Qe.get(Y);e?.delete(ce),e&&e.size===0&&Qe.delete(Y),ce=null;}R.removeEventListener("scroll",ho),D.removeEventListener("mousedown",fo),D.removeEventListener("contextmenu",eo),lt&&D.removeEventListener("mouseover",go),D.removeEventListener("click",so),D.removeEventListener("dblclick",uo),xr(),xt();for(let e of ln)clearTimeout(e);T.removeEventListener("keydown",mo),T.removeEventListener("pointerover",bo),T.removeEventListener("pointerout",wo),R.removeEventListener("scroll",Ue),Ue(),Tr?.(),V(),a.dispose(),T.remove();}}}}Object.defineProperty(exports,"DENSITY_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.DENSITY_ROW_HEIGHT}});Object.defineProperty(exports,"THEME_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.THEME_ROW_HEIGHT}});Object.defineProperty(exports,"presetRowHeight",{enumerable:true,get:function(){return datagridCore.presetRowHeight}});exports.CHECKBOX_COLUMN_WIDTH=Lt;exports.DETAIL_COLUMN_WIDTH=Ze;exports.PRINT_MAX_ROWS=Io;exports.ROW_DRAG_MIME=At;exports.ROW_NUMBER_COLUMN_WIDTH=Je;exports.buildHeaderMenu=gn;exports.createGrid=fl;exports.measureBestFitWidth=bn;
|
|
1
|
+
'use strict';var datagridCore=require('@kanunilabs/datagrid-core');function gn(x,g){let{controller:y,maxGroupLevels:A,t:v}=g,E=x.columnId,G=y.getColumnModel().getDef(E),P=y.getSort(),re=P.find(I=>I.columnId===E),le=y.getGroupLevels(),Ke=le.includes(E),tt=G?.sortable!==false,ae=y.getColumnStates().find(I=>I.id===E)?.pinned??null,Se=G?.groupable!==false,Le=[{id:"sort-asc",label:v.sortAsc,disabled:!tt||re?.direction==="asc",onSelect:()=>y.setSort([{columnId:E,direction:"asc"}])},{id:"sort-desc",label:v.sortDesc,disabled:!tt||re?.direction==="desc",onSelect:()=>y.setSort([{columnId:E,direction:"desc"}])},{id:"sort-clear",label:v.clearSort,disabled:!re,onSelect:()=>y.setSort(P.filter(I=>I.columnId!==E))},{id:"sep-1",separator:true},{id:"group",label:Ke?v.ungroupColumn:v.groupByColumn,disabled:!Se,onSelect:()=>{Ke?y.groupBy(le.filter(I=>I!==E)):y.groupBy([...le,E].slice(-A));}},{id:"group-panel",label:g.groupPanelVisible?v.hideGroupPanel:v.showGroupPanel,onSelect:g.onToggleGroupPanel},{id:"footer",label:g.footerVisible?v.hideFooter:v.showFooter,onSelect:g.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:v.hideColumn,disabled:y.getColumnStates().filter(I=>I.visible).length<=1,onSelect:()=>y.setColumnVisible(E,false)},{id:"field-chooser",label:v.fieldChooser,onSelect:g.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:v.bestFit,disabled:G?.resizable===false,onSelect:()=>g.onBestFit(E)},{id:"best-fit-all",label:v.bestFitAll,onSelect:g.onBestFitAll}],Ae=y.getColumnStates().filter(I=>I.visible&&I.pinned===ae).map(I=>I.id),te=Ae.indexOf(E),Me=G?.reorderable!==false&&te>=0;return Le.push({id:"sep-4",separator:true},{id:"move-left",label:v.moveLeft,disabled:!Me||te<=0,onSelect:()=>y.moveColumn(E,Ae[te-1])},{id:"move-right",label:v.moveRight,disabled:!Me||te<0||te>=Ae.length-1,onSelect:()=>y.moveColumn(E,Ae[te+2])},{id:"fixed-position",label:v.fixedPosition,items:[{id:"pin-left",label:v.pinLeft,disabled:ae==="left",onSelect:()=>y.setColumnPinned(E,"left")},{id:"pin-right",label:v.pinRight,disabled:ae==="right",onSelect:()=>y.setColumnPinned(E,"right")},{id:"pin-sticky",label:v.pinSticky,disabled:ae==="sticky",onSelect:()=>y.setColumnPinned(E,"sticky")}]},{id:"unpin",label:v.unpin,disabled:ae===null,onSelect:()=>y.setColumnPinned(E,null)}),Le}async function mn(x,g){try{let y=g==="csv"?await x.exportToCsv():g==="excel"?await x.exportToExcel():g==="excel-selected"?await x.exportToExcel({selectedOnly:!0}):await x.exportToPdf();return datagridCore.downloadBlob(y.blob,y.fileName),{completed:!0}}catch(y){return y instanceof datagridCore.ExportAbortedError?{completed:false}:{completed:false,error:y instanceof Error?y.message:String(y)}}}var So=null;function $r(){return typeof document>"u"?null:(So??=document.createElement("canvas"),So.getContext("2d"))}function Lo(x){let g=getComputedStyle(x);return `${g.fontStyle} ${g.fontWeight} ${g.fontSize} ${g.fontFamily}`}function bn(x,g){let y=$r();if(!y)return null;let A=typeof CSS<"u"&&CSS.escape?CSS.escape(g):g.replace(/"/g,'\\"'),v=x.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${A}"]`),E=x.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${A}"]`);if(!v&&E.length===0)return null;let G=0;if(v){let P=v.querySelector(".kanuni-datagrid-header-label")??v;y.font=Lo(P),G=y.measureText(P.textContent??"").width+44;}if(E.length>0){y.font=Lo(E[0]);for(let P=0;P<E.length;P++){let re=E[P].textContent??"";if(re==="")continue;let le=y.measureText(re).width+20;le>G&&(G=le);}}return G===0?null:Math.round(Math.min(640,Math.max(48,G)))}var Je=60,Lt=36,Ze=28,At="application/x-kanuni-row",Qe=new Map,wn=new Set,Ho=5e3,Te=0,rl=["columnStateChanged","sortChanged"],ll=["columnStateChanged"],al=["contentReady","viewportChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","cellsRefreshed"],p=(x,g="div")=>{let y=document.createElement(g);return y.className=x,y},et="http://www.w3.org/2000/svg";function il(x,g){let y=v=>{g&&console.warn(`[datagrid] ${v} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);},A={...x};if(A.dataSource!=null&&!Array.isArray(A.dataSource))throw new Error("[datagrid] a server-side DataSource is an Enterprise feature. Pass an array to createGrid, or use createEnterpriseGrid from @kanunilabs/datagrid-enterprise.");if(A.columns?.some(v=>v.spanRows)&&(y("cell span/merge (spanRows) is"),A={...A,columns:A.columns.map(v=>v.spanRows?{...v,spanRows:void 0}:v)}),A.tree&&(y("tree data is"),delete A.tree),A.masterDetail&&(y("master-detail is"),delete A.masterDetail),A.grouping){let{groupBy:v,groupSummaries:E}=A.grouping,G=v==null?[]:typeof v=="string"?[v]:v;(G.length>1||E)&&(y("multi-level grouping and group summaries are"),A={...A,grouping:{...A.grouping,groupBy:G.slice(0,1),groupSummaries:false}});}return A}var dl={columnResize:"use `resizable`",columnReorder:"use `reorderable`",groupPanel:"use `grouping: { panel: true }`",autoColumns:"",loadingOverlay:"",onReady:"the controller is returned directly \u2014 use `grid.controller`",className:"style the host element you pass in",style:"style the host element you pass in",toolbarItemsBefore:"",renderRow:"",announcements:"",filterPanelLabels:"",filterIconMode:"",autoSizeStrategy:"",footerMenu:"",showRowCount:"",onOpenFilterBuilder:"",renderOverlay:"",cellMenu:""},Mt=new Set;function sl(x){for(let g of Object.keys(x)){let y=dl[g];y===void 0||y===""||Mt.has(g)||(Mt.add(g),console.warn(`[datagrid] \`${g}\` is a React-only option \u2014 ${y}.`));}}function ul(){let x=document.createElementNS("http://www.w3.org/2000/svg","svg");x.setAttribute("width","14"),x.setAttribute("height","14"),x.setAttribute("viewBox","0 0 16 16"),x.setAttribute("aria-hidden","true"),x.setAttribute("focusable","false");let g=document.createElementNS("http://www.w3.org/2000/svg","path");return g.setAttribute("d","M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"),g.setAttribute("fill","none"),g.setAttribute("stroke","currentColor"),g.setAttribute("stroke-width","1.5"),g.setAttribute("stroke-linecap","round"),g.setAttribute("stroke-linejoin","round"),x.appendChild(g),x}function cl(){let x=document.createElementNS(et,"svg");x.setAttribute("width","11"),x.setAttribute("height","11"),x.setAttribute("viewBox","0 0 16 16"),x.setAttribute("aria-hidden","true"),x.setAttribute("focusable","false");let g=document.createElementNS(et,"path");return g.setAttribute("d","M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z"),g.setAttribute("fill","currentColor"),g.setAttribute("stroke","currentColor"),g.setAttribute("stroke-width","0.6"),g.setAttribute("stroke-linejoin","round"),x.appendChild(g),x}function pl(x){let g=document.createElementNS(et,"svg");g.setAttribute("width","14"),g.setAttribute("height","14"),g.setAttribute("viewBox","0 0 16 16"),g.setAttribute("aria-hidden","true"),g.setAttribute("focusable","false");let y=document.createElementNS(et,"rect");y.setAttribute("x","2"),y.setAttribute("y","2"),y.setAttribute("width","12"),y.setAttribute("height","12"),y.setAttribute("rx","2"),y.setAttribute("fill","none"),y.setAttribute("stroke","currentColor"),y.setAttribute("stroke-width","1.3"),g.appendChild(y);let A=v=>{let E=document.createElementNS(et,"path");E.setAttribute("d",v),E.setAttribute("fill","none"),E.setAttribute("stroke","currentColor"),E.setAttribute("stroke-width","1.3"),E.setAttribute("stroke-linecap","round"),g.appendChild(E);};return A("M5 8h6"),x&&A("M8 5v6"),g}function fl(x,g){let y=x??(g==="number"?"right":"left");return y==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":y==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function hn(x){let g="kanuni-datagrid-root";return x.dark&&(g+=" kanuni-datagrid-dark"),x.theme&&(g+=` kanuni-datagrid-theme-${x.theme}`),x.palette&&(g+=` kanuni-datagrid-palette-${x.palette}`),x.density&&(g+=` kanuni-datagrid-density-${x.density}`),g}function gl(x,g){let{theme:y,palette:A,density:v,dark:E,striped:G=true,rowNumbers:P=false,locale:re="en",footer:le=false,footerMenu:Ke=true,footerPosition:tt="bottom",notes:ae,pinnedTopRows:Se=[],pinnedBottomRows:Le=[],resizable:Ae=true,reorderable:te=true,filterRow:Me=false,headerFilter:I=false,filterIconMode:Go="hover",filterPanel:Dt=false,onOpenFilterBuilder:yn,focusedRow:Cn=false,focusedRowKey:Nt,onFocusedRowChanged:xn,onRowClick:$o,onRowActivate:It,autoSizeStrategy:Ht="none",renderRow:Gt,announcements:vn=true,filterPanelLabels:kn,showRowCount:Po=false,toolbarColumnChooser:Ko=false,cellMenu:nt=true,rowMenu:ot,headerMenu:$t,rowDrag:ge,alignedGrids:Y,printLayout:rt,renderCellContent:Pt,getCellClassName:Kt,onCellPointerDown:En,onCellPointerEnter:lt,onCellDoubleClick:Rn,renderDetail:Tn,renderEditForm:Oo,enterpriseEdition:ie=false,stateStoring:Sn,tooltip:me=true,renderOverlay:Ot,filterDebounce:Fo,toolbar:Ln=false,highlightSearch:Bo=true,sortable:_o=true,toolbarItemsAfter:Vo,toolbarItemsBefore:Wo,toolbarExcel:zo=false,toolbarPdf:qo=false,searchDebounce:Xo=200,...Uo}=g;sl(g),Po&&!Mt.has("showRowCount:deprecated")&&(Mt.add("showRowCount:deprecated"),console.warn("[datagrid] `showRowCount` was retired on 2026-08-15 and does nothing in either renderer. The row count lives in the status bar (Enterprise) or the pager."));let m=datagridCore.getGridDictionary(re),{emptyText:Yo=m.noData,loadingText:jo=m.busy,loadingOverlay:Ft=true,...z}=Uo,An=typeof Ft=="number"?Ft:300,Bt=datagridCore.summaryTypeLabels(m);if((!z.columns||z.columns.length===0)&&g.autoColumns!==false){let e=Array.isArray(z.dataSource)?z.dataSource:[];z.columns=datagridCore.inferColumns(e,typeof g.autoColumns=="object"?g.autoColumns:{});}z.rowHeight===void 0&&(z.rowHeight=datagridCore.presetRowHeight(y,v,28));let Qo=ie?z:il(z,!!g.debugMode),be=ie?ae:void 0;!ie&&ae&&g.debugMode&&console.warn("[datagrid] cell notes are an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to show them.");let a=new datagridCore.DataGridController(Qo);a.setEnterpriseEdition(ie),Nt!=null&&a.focusRow(Nt);let T=p(hn(g));T.style.height="100%",T.setAttribute("role","grid"),T.setAttribute("data-grid-id",g.gridId),y&&T.setAttribute("data-theme",y),T.style.setProperty("--dg-row-height",`${a.getRowHeight()}px`);let R=p("kanuni-datagrid-scroller"),O=p("kanuni-datagrid-canvas"),j=p("kanuni-datagrid-header");j.setAttribute("role","row");let F=p("kanuni-datagrid-rows");F.style.position="relative";let D=p("kanuni-datagrid-viewport");F.appendChild(D);let Oe=p("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--top"),Mn=p("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--bottom"),ne=le,we=tt==="top",$=p(`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${we?"top":"bottom"}`);if($.setAttribute("role","row"),$.setAttribute("aria-label",m.columnTotalsAria),Ke){let e=t=>{let n=t.target?.closest(".kanuni-datagrid-footer-cell")?.getAttribute("data-column-id");n&&(t.preventDefault(),xr(n,{left:t.clientX,top:t.clientY}));};$.addEventListener("click",e),$.addEventListener("contextmenu",e);}let at=p("kanuni-datagrid-bands-host");at.style.display="contents";let De=p("kanuni-datagrid-filter-row");De.setAttribute("role","row"),O.append(at,j),Me&&O.append(De);let _t=Me?2:1;$.style.setProperty("--dg-pinned-gap",String(we?_t:0)),Oe.style.setProperty("--dg-pinned-gap",String(_t+(ne&&we?1:0))),ne&&we&&O.append($),Se.length>0&&O.append(Oe),O.append(F),Le.length>0&&O.append(Mn),ne&&!we&&O.append($),R.appendChild(O);let he=p("kanuni-datagrid-toolbar"),Ne=p("kanuni-datagrid-pager");Ne.setAttribute("role","navigation"),Ne.setAttribute("aria-label","Pagination");let ye=p("kanuni-datagrid-filter-panel"),Ce=!!z.grouping?.panel,B=p("kanuni-datagrid-group-panel");Ln&&T.appendChild(he),Ce&&T.appendChild(B),T.appendChild(R),Dt&&T.appendChild(ye);let Dn=z.pagination;Dn&&Dn.enabled!==false&&T.appendChild(Ne);let Fe=p("kanuni-datagrid-loading-overlay"),Nn=p("kanuni-datagrid-loading-card"),In=p("kanuni-datagrid-loading-spinner","span");In.setAttribute("aria-hidden","true");let Hn=p("kanuni-datagrid-loading-label","span");Hn.textContent=jo,Nn.append(In,Hn),Fe.appendChild(Nn),Fe.style.display="none";let Be=p("kanuni-datagrid-sr-only","div");Be.setAttribute("role","status"),Be.setAttribute("aria-live","polite"),Be.setAttribute("aria-atomic","true");let it=p("kanuni-datagrid-empty");it.textContent=Yo,it.style.display="none",T.append(Fe,it),vn&&T.appendChild(Be),x.appendChild(T);let Gn=z.selection,dt=(Gn?.mode??"none")!=="none"&&(Gn?.checkboxColumn??false),st=a.hasMasterDetail()&&!!Tn,Vt=P?Je:0,$n=Vt+(st?Ze:0),Q=(P?Je:0)+(st?Ze:0)+(dt?Lt:0);a.setLeadWidth(Q);let ut=!!ge?.enabled,_e=ge?.group??null,Pn=ge?.allowReordering??true,Kn=ge?.allowDropInsert??_e!==null,oe=null,ct=null,pt=false,xe=null,de=null;function Ie(e){xe=e;for(let t of D.querySelectorAll(".kanuni-datagrid-row")){let o=t.getAttribute("data-row-key"),n=e!==null&&o===String(e.key);t.classList.toggle("kanuni-datagrid-row--drop-before",n&&e.side==="before"),t.classList.toggle("kanuni-datagrid-row--drop-after",n&&e.side==="after");}}let On=(e,t)=>{let o=t.getBoundingClientRect();return e.clientY<o.top+o.height/2?"before":"after"},Fn=e=>e.dataTransfer?.types.includes(At)?oe!==null?Pn:Kn&&_e!==null:false;function Bn(e,t,o){let n=null;try{let l=e.dataTransfer?.getData(At);n=l?JSON.parse(l):null;}catch{n=null;}if(n){if(n.gridId===a.gridId){if(!Pn)return;if(ge?.onReorder){ge.onReorder({dragKey:n.rowKey,targetKey:t,position:o,row:a.getRowByKey(n.rowKey)});return}a.moveRow(n.rowKey,t,o);return}!Kn||_e===null||n.group!==_e||ge?.onAdd?.({row:n.row,rowKey:n.rowKey,otherGridId:n.gridId,targetKey:t,position:o});}}let Jo=e=>{let t=ue(e);if(!t||t.node.kind!=="data"||!e.dataTransfer)return;oe=t.node.key,ct=t.node.key,pt=false;let o={gridId:a.gridId,group:_e,rowKey:t.node.key,row:t.node.data};e.dataTransfer.setData(At,JSON.stringify(o)),e.dataTransfer.setData("text/plain",String(t.node.key)),e.dataTransfer.effectAllowed="move",a.notifyRowDrag("enter",{rowKey:t.node.key});},Zo=e=>{if(!Fn(e))return;e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move");let t=ue(e);if(!t||t.node.kind!=="data")return;if(oe===t.node.key){de=null,Ie(null);return}let o=e.target.closest(".kanuni-datagrid-row"),n=On(e,o),l=xe?.key!==t.node.key||xe.side!==n;de={key:t.node.key,side:n},Ie({key:t.node.key,side:n}),l&&oe!==null&&a.notifyRowDrag("move",{rowKey:oe,overKey:t.node.key,position:n});},er=e=>{if(!Fn(e)){Ie(null);return}e.preventDefault();let t=ue(e);if(pt=true,t&&t.node.kind==="data"){let o=e.target.closest(".kanuni-datagrid-row"),n=On(e,o);de={key:t.node.key,side:n},Bn(e,t.node.key,n);}else de=null,Bn(e,null,"after");oe=null,Ie(null);},tr=()=>{ct!==null&&a.notifyRowDragEnd({rowKey:ct,dropped:pt,overKey:de?.key??null,position:de?.side??null}),pt=false,ct=null,oe=null,de=null,Ie(null);},nr=e=>{let t=e.relatedTarget;t&&F.contains(t)||oe!==null&&(de=null,Ie(null),a.notifyRowDrag("leave",{rowKey:oe}));},Ve=rt===void 0||rt===false?null:(()=>{let e=rt===true?{}:rt;return {always:e.always??false,maxRows:e.maxRows??Ho}})(),We=false;function Wt(e){We!==e&&(We=e,T.classList.toggle("kanuni-datagrid-print",e),e?(Te++,document.documentElement.classList.add("kanuni-datagrid-printing")):(Te--,Te<=0&&(Te=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),Yt());}let _n=null;if(Ve&&!Ve.always){let e=()=>{let o=a.getRows().length;if(o>Ve.maxRows){a.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${o} rows exceeds maxRows (${Ve.maxRows}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}Wt(true);},t=()=>Wt(false);window.addEventListener("beforeprint",e),window.addEventListener("afterprint",t),_n=()=>{window.removeEventListener("beforeprint",e),window.removeEventListener("afterprint",t);};}let ve=0,J=[],_=0,zt=0;function qt(){let e=a.getColumnLayout(),t=a.getVirtualWindow().columns,o=[],n=(i,d,s,c)=>{let r=i.def;o.push({def:r,id:i.state.id,width:i.state.width,pinned:d,inset:s,className:fl(r.align,r.dataType)+(d?" kanuni-datagrid-cell--pinned":"")+(r.autoHeight?" kanuni-datagrid-cell--wrap":""),visualIndex:c});};e.left.forEach((i,d)=>n(i,"left",e.leftOffsets[d]+Q,d));for(let i=t.start;i<t.end&&i<e.center.length;i++)n(e.center[i],null,0,e.left.length+i);e.right.forEach((i,d)=>n(i,"right",e.rightOffsets[d],e.left.length+e.center.length+d)),J=o,_=t.offsetX;let l=(e.centerOffsets[Math.min(t.end,e.center.length)]??0)-(e.centerOffsets[Math.min(t.start,e.center.length)]??0);zt=Math.max(0,e.centerWidth-t.offsetX-l),O.style.minWidth=`${e.totalWidth+Q}px`;}let ft=26;function or(){let e=a.getColumnLayout(),t=a.getVirtualWindow().columns,o=[...e.left,...e.center.slice(t.start,Math.min(t.end,e.center.length)),...e.right],n=datagridCore.bandDepth(o);if(at.textContent="",j.style.top=`${n*ft}px`,T.style.setProperty("--dg-band-offset",`${n*ft}px`),n===0)return;datagridCore.computeHeaderBands(o,n).forEach((i,d)=>{let s=p("kanuni-datagrid-band-row");if(s.style.top=`${d*ft}px`,s.style.height=`${ft}px`,Q>0){let c=p("kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned");c.style.width=`${Q}px`,c.style.flex="none",c.style.insetInlineStart="0px",s.appendChild(c);}if(_>0){let c=p("kanuni-datagrid-spacer");c.style.width=`${_}px`,c.style.flex="none",s.appendChild(c);}for(let c of i){let r=p(`kanuni-datagrid-band-cell${c.spacer?" kanuni-datagrid-band-cell--spacer":""}`);if(r.style.width=`${c.width}px`,r.style.flex="none",!c.spacer){if(c.columnIds.length>0){let f=datagridCore.bandPath(a.getColumnModel().getDef(c.columnIds[0])).slice(0,d+1);if(f.length===d+1&&a.isBandCollapsible(f)){let b=a.isBandCollapsed(f),h=document.createElement("button");h.type="button",h.className="kanuni-datagrid-band-toggle",h.setAttribute("aria-expanded",String(!b));let w=b?m.expandDetails??"Expand":m.collapseDetails??"Collapse";h.setAttribute("aria-label",w),h.title=w,h.appendChild(pl(b)),h.addEventListener("click",k=>{k.stopPropagation(),a.toggleBand(f);}),r.appendChild(h);}}let u=p("kanuni-datagrid-band-label","span");u.textContent=c.label,r.appendChild(u);}s.appendChild(r);}at.appendChild(s);});}let ze=null,gt=null;function mt(e,t){gt&>!==e&>.classList.remove("kanuni-datagrid-header-cell--drop-before","kanuni-datagrid-header-cell--drop-after"),gt=e,e&&(e.classList.toggle("kanuni-datagrid-header-cell--drop-before",t==="before"),e.classList.toggle("kanuni-datagrid-header-cell--drop-after",t==="after"));}function Vn(){if(!ze)return;let e=a.getSelectedCount(),t=a.getVisibleCount(),o=t>0&&e>=t;ze.checked=o,ze.indeterminate=!o&&e>0;}function Xt(){or();let e=a.getSort(),t=new Map(e.map((n,l)=>[n.columnId,{direction:n.direction,order:l}]));if(j.textContent="",ze=null,P){let n=p("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell");n.setAttribute("role","columnheader"),n.style.width=`${Je}px`,n.style.flex="none",n.style.insetInlineStart="0px",j.appendChild(n);}if(st){let n=p("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell");n.setAttribute("role","columnheader"),n.setAttribute("aria-label",m.detailsAria),n.style.width=`${Ze}px`,n.style.flex="none",n.style.insetInlineStart=`${Vt}px`,j.appendChild(n);}if(dt){let n=p("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell");n.setAttribute("role","columnheader"),n.style.width=`${Lt}px`,n.style.flex="none",n.style.insetInlineStart=`${$n}px`;let l=document.createElement("input");l.type="checkbox",l.setAttribute("aria-label",m.selectAllRows),l.addEventListener("change",()=>{a.getSelectedCount()>0?a.clearSelection():a.selectAll();}),n.appendChild(l),j.appendChild(n),ze=l,Vn();}let o=false;for(let n of J){if(!n.pinned&&!o){if(_>0){let r=document.createElement("div");r.style.flex=`0 0 ${_}px`,j.appendChild(r);}o=true;}let l=_o&&n.def.sortable!==false,i=t.get(n.id),d=p(`kanuni-datagrid-header-cell${l?" kanuni-datagrid-header-cell--sortable":""}${n.pinned?" kanuni-datagrid-header-cell--pinned":""}`);d.setAttribute("role","columnheader"),d.setAttribute("data-column-id",n.id),d.setAttribute("aria-sort",i?i.direction==="asc"?"ascending":"descending":"none");let s=n.def.headerTooltip;s&&(d.title=s),d.style.width=`${n.width}px`,d.style.flex="none",n.pinned==="left"&&(d.style.insetInlineStart=`${n.inset}px`),n.pinned==="right"&&(d.style.insetInlineEnd=`${n.inset}px`);let c=p("kanuni-datagrid-header-label","span");if(n.def.renderHeader){let r=n.def.renderHeader({column:n.def});typeof r=="string"?c.textContent=r:c.appendChild(r);}else c.textContent=n.def.headerName??n.id;if(d.appendChild(c),i){let r=p("kanuni-datagrid-sort-indicator","span");if(r.setAttribute("aria-hidden","true"),r.textContent=i.direction==="asc"?"\u25B2":"\u25BC",d.appendChild(r),e.length>1){let u=p("kanuni-datagrid-sort-order","span");u.setAttribute("aria-hidden","true"),u.textContent=String(i.order+1),d.appendChild(u);}}if(l){let r=n.id;d.addEventListener("click",u=>{a.toggleSort(r,u.shiftKey);});}if($t!==false){let r=n.id;d.addEventListener("contextmenu",u=>{u.preventDefault(),Cr(r,{left:u.clientX,top:u.clientY});});}if(I&&n.def.filterable!==false){let r=document.createElement("button");r.type="button";let u=a.getColumnFilter(n.id)!==null;r.className=`kanuni-datagrid-filter-button${u?" kanuni-datagrid-filter-button--active":""}${Go==="always"?" kanuni-datagrid-filter-button--pinned":""}`,r.setAttribute("aria-haspopup","dialog"),r.setAttribute("aria-label",`${n.def.headerName??n.id} filter`),r.appendChild(cl()),r.addEventListener("click",f=>{f.stopPropagation(),pr(n.id,r);}),d.appendChild(r);}if(te&&n.def.reorderable!==false&&(d.draggable=true,d.addEventListener("dragstart",r=>{r.dataTransfer?.setData("text/x-kanuni-column",n.id),r.dataTransfer&&(r.dataTransfer.effectAllowed="move");}),d.addEventListener("dragover",r=>{if(!r.dataTransfer?.types.includes("text/x-kanuni-column"))return;r.preventDefault();let u=d.getBoundingClientRect(),f=r.clientX<u.left+u.width/2;mt(d,f?"before":"after");}),d.addEventListener("dragleave",r=>{let u=r.relatedTarget;(!u||!d.contains(u))&&mt(null,"before");}),d.addEventListener("drop",r=>{mt(null,"before");let u=r.dataTransfer?.getData("text/x-kanuni-column");if(!u||u===n.id)return;r.preventDefault();let f=d.getBoundingClientRect();if(r.clientX<f.left+f.width/2)a.moveColumn(u,n.id);else {let h=J.findIndex(w=>w.id===n.id);a.moveColumn(u,J[h+1]?.id);}}),d.addEventListener("dragend",()=>mt(null,"before"))),Ae&&n.def.resizable!==false){let r=p("kanuni-datagrid-resize-handle","span");r.setAttribute("data-resize-handle",n.id),r.setAttribute("role","presentation"),r.addEventListener("click",u=>u.stopPropagation()),r.addEventListener("dblclick",u=>{u.stopPropagation(),kr(n.id);}),r.addEventListener("pointerdown",u=>{u.preventDefault(),u.stopPropagation();let f=u.clientX,b=n.width,h=getComputedStyle(d).direction==="rtl"?-1:1;d.draggable=false;let w=b,k=false,M=W=>{k=true,w=b+(W.clientX-f)*h,a.setColumnWidth(n.id,w,false);},H=()=>{window.removeEventListener("pointermove",M),window.removeEventListener("pointerup",H),window.removeEventListener("pointercancel",H),k&&a.setColumnWidth(n.id,w,true),d.draggable=te&&n.def.reorderable!==false;};window.addEventListener("pointermove",M),window.addEventListener("pointerup",H),window.addEventListener("pointercancel",H);}),d.appendChild(r);}j.appendChild(d);}}let Wn=null,bt=null;function rr(e){if(e===Wn)return;Wn=e;let t=[];for(let o=0;o<e.length;o++)e[o].kind!=="data"&&t.push(o);bt=t.length>0?t:null;}function lr(e){if(!bt)return e+1;let t=0,o=bt.length;for(;t<o;){let n=t+o>>1;bt[n]<=e?t=n+1:o=n;}return e+1-t}let qe=[];function zn(e="data"){let t=p("kanuni-datagrid-row");if(t.setAttribute("role","row"),e==="panel"){let r=document.createElement("div");return r.setAttribute("role","gridcell"),r.setAttribute("aria-colindex","1"),t.appendChild(r),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,panelCell:r,epoch:ve}}if(e==="group"){let r=p("kanuni-datagrid-group-cell");r.setAttribute("role","gridcell"),r.setAttribute("aria-colindex","1");let u=p("kanuni-datagrid-group-twisty","span");u.setAttribute("aria-hidden","true");let f=p("kanuni-datagrid-group-caption","span"),b=p("kanuni-datagrid-group-label","span"),h=p("kanuni-datagrid-group-count","span"),w=p("kanuni-datagrid-group-aggregates","span");return r.append(u,f,b,h,w),t.appendChild(r),t.addEventListener("click",()=>{let k=t.getAttribute("data-group-key");k!==null&&a.toggleGroup(k);}),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,group:{cell:r,twisty:u,caption:f,label:b,count:h,aggregates:w},epoch:ve}}if(ut){let r=p("kanuni-datagrid-row-grip","span");r.setAttribute("aria-hidden","true"),r.title=m.dragToReorder??"Drag to reorder",r.innerHTML='<svg width="10" height="14" viewBox="0 0 10 14" focusable="false"><g fill="currentColor"><circle cx="3" cy="3" r="1.2"/><circle cx="7" cy="3" r="1.2"/><circle cx="3" cy="7" r="1.2"/><circle cx="7" cy="7" r="1.2"/><circle cx="3" cy="11" r="1.2"/><circle cx="7" cy="11" r="1.2"/></g></svg>',r.addEventListener("mouseenter",()=>{t.draggable=true;}),r.addEventListener("mouseleave",()=>{t.draggable=false;}),t.appendChild(r);}if(Gt)return {kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:ve};let o=null;P&&(o=p("kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell"),o.setAttribute("role","gridcell"),o.style.width=`${Je}px`,o.style.flex="none",o.style.insetInlineStart="0px",t.appendChild(o));let n=null;if(st){let r=p("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell");r.setAttribute("role","gridcell"),r.style.width=`${Ze}px`,r.style.flex="none",r.style.insetInlineStart=`${Vt}px`;let u=document.createElement("button");u.type="button",u.className="kanuni-datagrid-detail-toggle",u.tabIndex=-1,u.addEventListener("click",f=>{f.stopPropagation();let b=t.getAttribute("data-row-key");if(b===null)return;let h=a.getRows().find(w=>String(w.key)===b);h&&h.kind==="data"&&a.toggleDetail(h.key);}),u.addEventListener("mousedown",f=>f.stopPropagation()),r.appendChild(u),t.appendChild(r),n=u;}let l=null;if(dt){let r=p("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell");r.setAttribute("role","gridcell"),r.style.width=`${Lt}px`,r.style.flex="none",r.style.insetInlineStart=`${$n}px`;let u=document.createElement("input");u.type="checkbox",u.tabIndex=-1;let f=()=>{let b=t.getAttribute("data-row-key");if(b===null)return;let h=a.getRows().find(w=>String(w.key)===b);h&&a.toggleRow(h.key);};r.addEventListener("mousedown",b=>b.stopPropagation()),r.addEventListener("click",b=>{b.target.tagName!=="INPUT"&&(b.stopPropagation(),f());}),u.addEventListener("change",f),u.addEventListener("click",b=>b.stopPropagation()),u.addEventListener("mousedown",b=>b.stopPropagation()),r.appendChild(u),t.appendChild(r),l=u;}let i=[],d=null,s=false;for(let r of J){!r.pinned&&!s&&(d=document.createElement("div"),d.style.flex=`0 0 ${_}px`,t.appendChild(d),s=true);let u=p(r.className);u.setAttribute("role","gridcell"),u.setAttribute("data-column-id",r.id),u.style.width=`${r.width}px`,u.style.flex="none",r.pinned==="left"&&(u.style.insetInlineStart=`${r.inset}px`),r.pinned==="right"&&(u.style.insetInlineEnd=`${r.inset}px`),t.appendChild(u),i.push({el:u,slot:r});}let c=document.createElement("div");return c.style.flex=`0 0 ${zt}px`,t.appendChild(c),{kind:e,root:t,cells:i,rowNumberCell:o,selectInput:l,detailToggle:n,leadingSpacer:d,trailingSpacer:c,epoch:ve}}let He="";function wt(e,t){if(He===""||t===""){e.textContent=t;return}let o=t.toLowerCase(),n=o.indexOf(He);if(n===-1){e.textContent=t;return}let l=[],i=0;for(;n!==-1;){n>i&&l.push(document.createTextNode(t.slice(i,n)));let d=document.createElement("mark");d.className="kanuni-datagrid-highlight",d.textContent=t.slice(n,n+He.length),l.push(d),i=n+He.length,n=o.indexOf(He,i);}i<t.length&&l.push(document.createTextNode(t.slice(i))),e.replaceChildren(...l);}function ar(e,t,o){let n=a.getColumnModel().getCellValue(o.data,t.id),l=t.def;if(l.renderCell){let d=l.renderCell({value:n,row:o.data,node:o,column:l});typeof d=="string"?e.textContent=d:e.replaceChildren(d);return}let i=datagridCore.lookupLabel(l,n);if(i!==null){wt(e,i);return}if(l.valueFormatter){let d=l.valueFormatter(n,o.data);wt(e,typeof d=="string"?d:String(d??""));return}if(l.dateFormat&&l.dataType==="date"){wt(e,datagridCore.formatDateValue(n,l.dateFormat));return}wt(e,n==null?"":String(n));}function qn(e,t,o){let n=e.root;if(n.setAttribute("aria-rowindex",String(o+2)),n.setAttribute("data-row-key",String(t.key)),t.kind==="detail"||t.kind==="editform"){let r=e.panelCell,u=t.kind==="detail";n.className=`kanuni-datagrid-row ${u?"kanuni-datagrid-detail-row":"kanuni-datagrid-editform-row"}`,n.style.height=`${t.height}px`,u?(n.setAttribute("data-detail-for",String(t.parentKey)),n.removeAttribute("data-editform-for")):(n.setAttribute("data-editform-for",t.parentKey===null?"":String(t.parentKey)),n.removeAttribute("data-detail-for")),r.className=u?"kanuni-datagrid-detail-cell":"kanuni-datagrid-editform-cell";let f=`${t.kind}:${String(t.key)}`;if(n.getAttribute("data-panel-for")!==f){n.setAttribute("data-panel-for",f);let b=u?Tn?.(t.data):t.parentKey===null?void 0:Oo?.(t.parentKey,t.data);r.textContent="",typeof b=="string"?r.textContent=b:b&&r.appendChild(b);}return}if(n.removeAttribute("data-panel-for"),n.removeAttribute("data-detail-for"),n.removeAttribute("data-editform-for"),t.kind==="filler"){n.style.display="none";return}n.style.display="",n.style.height=Xn?"":`${a.getRowHeight()}px`,n.classList.toggle("kanuni-datagrid-row--odd",G&&o%2===1),n.classList.toggle("kanuni-datagrid-row--selected",a.isRowSelected(t.key));let l=a.getFocus();if(n.classList.toggle("kanuni-datagrid-row--focused",Cn&&l!==null&&l.rowKey===t.key),e.leadingSpacer&&(e.leadingSpacer.style.flex=`0 0 ${_}px`),e.trailingSpacer&&(e.trailingSpacer.style.flex=`0 0 ${zt}px`),ut){let r=xe!==null&&String(xe.key)===String(t.key);n.classList.toggle("kanuni-datagrid-row--drop-before",r&&xe.side==="before"),n.classList.toggle("kanuni-datagrid-row--drop-after",r&&xe.side==="after");}if(e.rowNumberCell&&(e.rowNumberCell.textContent=String(lr(o))),e.selectInput&&(e.selectInput.checked=a.isRowSelected(t.key),e.selectInput.setAttribute("aria-label",m.selectRowAria.replace("{row}",String(t.key)))),e.detailToggle&&t.kind==="data"){let r=a.isDetailExpanded(t.key);e.detailToggle.textContent=r?"\u25BE":"\u25B8",e.detailToggle.setAttribute("aria-expanded",String(r)),e.detailToggle.setAttribute("aria-label",r?m.collapseDetails:m.expandDetails);}if(t.kind==="group"&&e.group){let r=t;n.className=`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${r.level}`,n.setAttribute("aria-expanded",String(r.expanded)),n.setAttribute("aria-level",String(r.level+1)),n.setAttribute("data-group-key",String(r.key)),n.setAttribute("data-group-level",String(r.level)),e.group.cell.style.paddingLeft=r.level>0?`${8+r.level*18}px`:"",e.group.twisty.textContent=r.expanded?"\u25BE":"\u25B8";let u=a.getColumnModel().getDef(r.columnId),f=u?.headerName??r.columnId;e.group.caption.textContent=`${f}:`,e.group.label.textContent=datagridCore.lookupLabel(u,r.value)??(r.label===""?m.filterBlank:r.label),e.group.count.textContent=`(${r.count})`,e.group.aggregates.textContent="";let b=r.aggregates??null;if(b)for(let h of a.getSummaryDefs()){let w=p("kanuni-datagrid-group-aggregate","span"),k=p("kanuni-datagrid-group-aggregate-label","span"),M=a.getColumnModel().getDef(h.columnId);k.textContent=`${datagridCore.summaryLabel(h,Bt)} ${M?.headerName??h.columnId}:`,w.append(k,` ${datagridCore.formatSummaryValue(h,b[datagridCore.summaryKey(h.columnId,h.type)],M)}`),e.group.aggregates.appendChild(w);}return}if(t.kind!=="data"){for(let{el:r}of e.cells)r.textContent="";return}if(n.className=n.className.includes("group-row")?"kanuni-datagrid-row":n.className,Gt){let r=ut?1:0,u=Gt({row:t.data,node:t,rowIndex:o,selected:a.isRowSelected(t.key),focused:Cn&&l!==null&&l.rowKey===t.key});if(u instanceof Node&&n.childNodes.length===r+1&&n.childNodes[r]===u)return;for(;n.childNodes.length>r;)n.removeChild(n.lastChild);typeof u=="string"?n.appendChild(document.createTextNode(u)):u&&n.appendChild(u);return}let i=l!==null&&l.rowKey===t.key?l.columnId:null,d=t.tree,s=d?(()=>{let r=a.getColumnLayout();return (r.left[0]??r.center[0]??r.right[0])?.state.id??null})():null,c=a.hasCellSpans();for(let{el:r,slot:u}of e.cells){let f=Pt||Kt?{node:t,columnId:u.id,rowIndex:o,columnIndex:u.visualIndex,value:a.getColumnModel().getCellValue(t.data,u.id)}:null,b=f&&Pt?Pt(f):void 0,h=false;if(b!==void 0?b instanceof Node&&r.childNodes.length===1&&r.firstChild===b?h=true:typeof b=="string"?r.textContent=b:r.replaceChildren(b):(ar(r,u,t),d&&u.id===s&&sr(r,t,d)),c&&!h){let S=dr(o,u.id);r.classList.toggle("kanuni-datagrid-cell--span",S?.kind==="draw"),r.classList.toggle("kanuni-datagrid-cell--span-covered",S?.kind==="covered");let pe=b!==void 0;if(S?.kind==="covered"&&i!==u.id&&!pe)r.replaceChildren();else if(S?.kind==="draw"){let K=p("kanuni-datagrid-span-box");K.style.height=`${S.height}px`,K.append(...Array.from(r.childNodes)),r.appendChild(K);}}else c||r.classList.remove("kanuni-datagrid-cell--span","kanuni-datagrid-cell--span-covered");if(be){let S=!!Ut(t.key,u.id,t.data);r.classList.toggle("kanuni-datagrid-cell--noted",S);}r.id=`${g.gridId}-cell-${String(t.key)}-${u.id}`,r.classList.toggle("kanuni-datagrid-cell--focused",i===u.id);let w=r.getAttribute("data-slot-classes");if(w)for(let S of w.split(" "))r.classList.remove(S);let k=f&&Kt?Kt(f):void 0,M=u.def.cellClassName,W=[typeof M=="function"?M({value:a.getColumnModel().getCellValue(t.data,u.id),row:t.data,node:t,column:u.def}):M,k].filter(Boolean).join(" ")||void 0;if(W){for(let S of W.split(" "))r.classList.add(S);r.setAttribute("data-slot-classes",W);}else w&&r.removeAttribute("data-slot-classes");}}let Xn=g.columns.some(e=>e.autoHeight);function ir(){if(!Xn)return;let e=a.getVirtualWindow(),t=a.getRows(),o=new Map(a.getMeasuredRowHeights()),n=false;for(let l=e.rows.start;l<e.rows.end&&l<t.length;l++){let i=t[l];if(!i||i.kind!=="data")continue;let d=l-e.rows.start,s=qe[d]?.root;if(!s)continue;let c=s.getBoundingClientRect().height;c>0&&o.get(i.key)!==c&&(o.set(i.key,c),n=true);}n&&a.setMeasuredRowHeights(o);}let ht={start:0,end:0};function dr(e,t){let o=a.getCellSpans(t);if(o.length===0)return null;let n=datagridCore.spanRoleAt(o,e,ht.start,ht.end);if(!n)return null;if(n.role==="covered")return {kind:"covered"};let l=a.getRowOffset(n.drawStart);return {kind:"draw",height:a.getRowOffset(n.drawEnd)+a.getRowHeightAt(n.drawEnd)-l}}function sr(e,t,o){let n=p(`kanuni-datagrid-tree-cell${o.ancestorOnly?" kanuni-datagrid-tree-cell--ancestor":""}`,"span");if(n.style.paddingInlineStart=`${o.depth*16}px`,o.hasChildren){let l=document.createElement("button");l.type="button",l.className="kanuni-datagrid-tree-toggle",l.setAttribute("data-tree-toggle",""),l.setAttribute("aria-expanded",String(o.expanded)),l.setAttribute("aria-label",o.expanded?m.collapseDetails:m.expandDetails),l.textContent=o.expanded?"\u25BE":"\u25B8",l.addEventListener("mousedown",i=>i.stopPropagation()),l.addEventListener("click",i=>{i.stopPropagation(),a.toggleTreeRow(t.key);}),n.appendChild(l);}else n.appendChild(p("kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf","span"));n.append(...Array.from(e.childNodes)),e.appendChild(n);}let Ut=(e,t,o)=>be?be.get({rowKey:e,columnId:t,row:o})??null:null,Un=null,se=Ot?p("kanuni-datagrid-overlay"):null;se&&(se.style.position="absolute",se.style.inset="0",se.style.pointerEvents="none",F.appendChild(se));function ur(){if(!Ot||!se)return;let e=Ot();e!==Un&&(Un=e,e?se.replaceChildren(e):se.replaceChildren());}function Yt(){ur();let e=a.getVirtualWindow(),t=a.getRows(),o=We?{...e,rows:{...e.rows,start:0,end:t.length,offsetY:0,totalHeight:0}}:e;rr(t),F.style.height=`${o.rows.totalHeight}px`,D.style.transform=`translateY(${o.rows.offsetY}px)`,He=Bo?a.getSearchText().trim().toLowerCase():"";let n=Math.max(0,Math.min(o.rows.end,t.length)-o.rows.start);for(ht.start=o.rows.start,ht.end=Math.min(o.rows.end,t.length)-1;qe.length>n;)qe.pop().root.remove();for(let l=0;l<n;l++){let i=o.rows.start+l,d=t[i],s=d.kind==="data"?"data":d.kind==="group"?"group":d.kind==="detail"||d.kind==="editform"?"panel":"stub",c=qe[l];if(!c||c.epoch!==ve||c.kind!==s){let r=zn(s);c?D.replaceChild(r.root,c.root):D.appendChild(r.root),qe[l]=r,c=r;}qn(c,d,i);}ir();}let Yn=datagridCore.createDebouncedCommit(Fo??(a.isRemote()?200:0));function jt(){if(!Me)return;if(De.textContent="",Q>0){let t=p("kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned");t.style.width=`${Q}px`,t.style.flex="none",t.style.insetInlineStart="0px",De.appendChild(t);}let e=false;for(let t of J){if(!t.pinned&&!e){if(_>0){let n=p("kanuni-datagrid-spacer");n.style.width=`${_}px`,n.style.flex="none",De.appendChild(n);}e=true;}let o=p(`kanuni-datagrid-filter-cell${t.pinned?" kanuni-datagrid-filter-cell--pinned":""}`);if(o.style.width=`${t.width}px`,o.style.flex="none",t.pinned==="left"&&(o.style.insetInlineStart=`${t.inset}px`),t.pinned==="right"&&(o.style.insetInlineEnd=`${t.inset}px`),t.def.filterable!==false){let n=document.createElement("input");n.className="kanuni-datagrid-filter-input",n.setAttribute("aria-label",`${t.def.headerName??t.id} filter`);let l=()=>a.setColumnFilter(t.id,datagridCore.parseFilterInput(t.id,n.value,t.def.dataType),datagridCore.FILTER_PART_ROW);n.addEventListener("input",()=>Yn.schedule(t.id,l));let i=()=>{Yn.cancel(t.id),l();};n.addEventListener("keydown",d=>{d.key==="Enter"&&i();}),n.addEventListener("blur",i),o.appendChild(n);}De.appendChild(o);}}let Qt=()=>{};function cr(){if(!Ln)return;let e=document.createElement("input");e.type="search",e.className="kanuni-datagrid-toolbar-search",e.placeholder=m.toolbarSearch,e.setAttribute("aria-label",m.toolbarSearch);let t=null;e.addEventListener("input",()=>{t&&clearTimeout(t),t=setTimeout(()=>a.setSearchText(e.value),Xo);});let o=p("kanuni-datagrid-toolbar-spacer"),n=null;if(Ko){let r=document.createElement("button");r.type="button",r.textContent=m.toolbarColumns??"Columns",r.setAttribute("aria-haspopup","dialog"),r.addEventListener("click",()=>{let u=r.getBoundingClientRect();no({left:u.left,top:u.bottom+2});}),n=r;}let l=ie&&zo,i=ie&&qo,d=document.createElement("button");d.type="button",d.className="kanuni-datagrid-toolbar-icon-button",d.setAttribute("aria-haspopup","menu"),d.setAttribute("aria-label",m.exportMenu),d.setAttribute("data-testid","dg-export-menu"),d.title=m.exportMenu,d.appendChild(ul());let s=null;d.addEventListener("click",()=>{if(s)return;let r=d.getBoundingClientRect();ke({left:r.right-190,top:r.bottom+2},u=>{u.setAttribute("role","menu"),u.setAttribute("aria-label",m.exportMenu);let f=[{kind:"csv",label:m.exportCsv,testId:"dg-export-csv",on:true},{kind:"excel",label:m.exportExcel,testId:"dg-export-excel",on:l},{kind:"excel-selected",label:m.exportExcelSelected,testId:"dg-export-excel-selected",on:l},{kind:"pdf",label:m.exportPdf,testId:"dg-export-pdf",on:i}];for(let b of f){if(!b.on)continue;let h=document.createElement("button");h.type="button",h.className="kanuni-datagrid-menu-item",h.setAttribute("role","menuitem"),h.setAttribute("data-testid",b.testId),h.textContent=b.label,b.kind==="excel-selected"&&a.getSelectedCount()===0&&(h.disabled=true),h.addEventListener("click",()=>{s=b.kind,d.disabled=true,V(),mn(a,b.kind).then(w=>{s=null,d.disabled=false,w.error&&Qt(w.error);});}),u.appendChild(h);}},"kanuni-datagrid-filter-popup kanuni-datagrid-export-menu");});for(let r of Wo??[])he.append(r);he.append(e,o),n&&he.append(n),he.append(d);for(let r of Vo??[])he.append(r);let c=p("kanuni-datagrid-toolbar-error","span");c.setAttribute("role","alert"),c.style.display="none",he.append(c),Qt=r=>{c.textContent=r,c.style.display="";};}function jn(){if(!Ne.isConnected)return;let e=a.getPage(),t=a.getPageCount();Ne.textContent="";let o=(s,c,r,u)=>{let f=document.createElement("button");return f.type="button",f.textContent=s,f.setAttribute("aria-label",c),f.disabled=r,f.addEventListener("click",u),f},n=p("kanuni-datagrid-pager-buttons"),l=e<=0,i=e>=t-1;n.append(o("\xAB",m.pagerFirst??"First",l,()=>a.setPage(0)),o("\u2039",m.pagerPrevious??"Previous",l,()=>a.setPage(e-1)));let d=p("kanuni-datagrid-pager-current","span");d.textContent=`${e+1} / ${t}`,n.append(d,o("\u203A",m.pagerNext??"Next",i,()=>a.setPage(e+1)),o("\xBB",m.pagerLast??"Last",i,()=>a.setPage(t-1))),Ne.appendChild(n);}function Jt(){if(!ne)return;let e=a.getColumnLayout(),t=a.getSummaries(),o=new Map(a.getSummaryDefs().map(l=>[l.columnId,l]));if($.textContent="",$.style.width=`${e.totalWidth+Q}px`,Q>0){let l=p("kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned");l.style.width=`${Q}px`,l.style.insetInlineStart="0px",$.appendChild(l);}let n=false;for(let l of J){if(!l.pinned&&!n){if(_>0){let c=p("kanuni-datagrid-spacer");c.style.width=`${_}px`,$.appendChild(c);}n=true;}let i=o.get(l.id),d=l.def.dataType==="number",s=p(`kanuni-datagrid-footer-cell${l.pinned?" kanuni-datagrid-footer-cell--pinned":""}${d?" kanuni-datagrid-footer-cell--number":""}${i?" kanuni-datagrid-footer-cell--active":""}`);if(s.setAttribute("role","gridcell"),s.setAttribute("data-column-id",l.id),s.setAttribute("data-summary-type",i?.type??""),s.style.width=`${l.width}px`,l.pinned==="left"&&(s.style.insetInlineStart=`${l.inset}px`),l.pinned==="right"&&(s.style.insetInlineEnd=`${l.inset}px`),i){s.title=`${datagridCore.summaryLabel(i,Bt)} \u2014 ${l.def.headerName??l.id}`;let c=p("kanuni-datagrid-footer-value","span");c.textContent=datagridCore.formatSummaryValue(i,t[datagridCore.summaryKey(i.columnId,i.type)],l.def),s.appendChild(c);}else {let c=p("kanuni-datagrid-footer-hint","span");c.textContent=Ke?"\xB7":"",s.appendChild(c);}$.appendChild(s);}}function Zt(){let e=(t,o,n)=>{t.textContent="",o.forEach((l,i)=>{let d=zn("data");qn(d,{kind:"data",key:`__pinned-${n}-${i}`,sourceIndex:-1,data:l},i),d.root.classList.remove("kanuni-datagrid-row--odd"),d.root.removeAttribute("aria-rowindex"),d.rowNumberCell&&(d.rowNumberCell.textContent=""),t.appendChild(d.root);});};Se.length>0&&e(Oe,Se,"top"),Le.length>0&&e(Mn,Le,"bottom");}let Ge=null,en=null;function V(){en?.(),en=null,Ge?.remove(),Ge=null;}function Qn(e,t){let n=e.getBoundingClientRect();n.width===0&&n.height===0||(e.style.left=`${Math.max(8,Math.min(t.left,window.innerWidth-n.width-8))}px`,e.style.top=`${Math.max(8,Math.min(t.top,window.innerHeight-n.height-8))}px`);}function ke(e,t,o="kanuni-datagrid-filter-popup"){V(),Ge=p(`${hn(g)} kanuni-datagrid-portal`);let n=p(o);n.style.position="fixed",n.style.left=`${e.left}px`,n.style.top=`${e.top}px`,n.style.zIndex="1000",t(n),Ge.appendChild(n),document.body.appendChild(Ge),Qn(n,e);let l=Ge,i=s=>{l.contains(s.target)||V();},d=s=>{s.key==="Escape"&&V();};document.addEventListener("pointerdown",i,true),document.addEventListener("keydown",d,true),en=()=>{document.removeEventListener("pointerdown",i,true),document.removeEventListener("keydown",d,true);};}let Ee=25,Jn=8,Zn=new Map,eo=0;function pr(e,t){let o=t.getBoundingClientRect(),n=++eo;ke({left:o.left,top:o.bottom+2},l=>{let i=[],d=true,s=new Set,c=false,r=0,u="",f=[],b=null,h="",w=[],k=document.createElement("input");k.type="search",k.className="kanuni-datagrid-filter-search",k.placeholder=m.search,k.setAttribute("data-testid","dg-filter-search");let M=p("kanuni-datagrid-filter-actions"),H=document.createElement("button");H.type="button",H.textContent=m.filterSelectAll,H.addEventListener("click",()=>{c=true,s=new Set(i.map(C=>C.label)),Z();});let W=document.createElement("button");W.type="button",W.textContent=m.clear,W.addEventListener("click",()=>{c=true,s=new Set,Z();}),M.append(H,W);let S=p("kanuni-datagrid-filter-list");S.setAttribute("role","listbox"),S.setAttribute("aria-multiselectable","true");let pe=document.createElement("div");pe.style.position="relative";let K=document.createElement("div");pe.appendChild(K),S.appendChild(pe);let Tt=()=>{let C=u.trim().toLowerCase();if(!C){f=i;return}b||(b=i.map(L=>L.label.toLowerCase())),f=h!==""&&C.includes(h)?w.filter(L=>L.label.toLowerCase().includes(C)):i.filter((L,N)=>b[N].includes(C)),h=C,w=f;},Z=()=>{if(S.setAttribute("aria-busy",String(d)),S.setAttribute("aria-setsize",String(f.length)),d){pe.style.height="",K.textContent="";let U=p("kanuni-datagrid-filter-empty");U.textContent=m.filterLoading,K.appendChild(U);return}if(f.length===0){pe.style.height="",K.style.transform="",K.textContent="";let U=p("kanuni-datagrid-filter-empty");U.textContent=m.filterNoMatch,K.appendChild(U);return}let C=S.clientHeight||240,L=Math.max(0,Math.floor(S.scrollTop/Ee)-Jn),N=Math.ceil(C/Ee)+Jn*2,X=Math.min(L,Math.max(0,f.length-1)),Ir=Math.min(f.length,X+N);pe.style.height=`${f.length*Ee}px`,K.style.transform=`translateY(${X*Ee}px)`,K.textContent="";for(let U=X;U<Ir;U++){let Pe=f[U],ee=p("kanuni-datagrid-filter-item");ee.setAttribute("role","option"),ee.setAttribute("aria-selected",String(s.has(Pe.label))),ee.tabIndex=0,ee.setAttribute("data-value",Pe.label),ee.setAttribute("data-index",String(U)),U===r&&ee.classList.add("kanuni-datagrid-filter-item--active");let Ye=document.createElement("input");Ye.type="checkbox",Ye.readOnly=true,Ye.checked=s.has(Pe.label),Ye.tabIndex=-1;let To=document.createElement("span");To.textContent=Pe.label===""?m.filterBlank:Pe.label,ee.append(Ye,To),ee.addEventListener("click",()=>ko(Pe.label)),ee.addEventListener("focus",()=>{r=U;}),K.appendChild(ee);}},ko=C=>{c=true,s.has(C)?s.delete(C):s.add(C);for(let L of K.querySelectorAll(".kanuni-datagrid-filter-item")){if(L.getAttribute("data-value")!==C)continue;L.setAttribute("aria-selected",String(s.has(C)));let N=L.querySelector("input");N&&(N.checked=s.has(C));}};S.addEventListener("scroll",()=>{Zn.set(e,S.scrollTop),Z();}),k.addEventListener("input",()=>{u=k.value,r=0,Tt(),Z();});let fn=C=>{if(f.length===0)return;r=Math.max(0,Math.min(f.length-1,C));let L=r*Ee,N=S.clientHeight||240;L<S.scrollTop?S.scrollTop=L:L+Ee>S.scrollTop+N&&(S.scrollTop=L+Ee-N),Z(),l.querySelector(`.kanuni-datagrid-filter-item[data-index="${r}"]`)?.focus();},Eo=()=>{if(d)return;let C;if(s.size===i.length)C=null;else {let L=s.has(""),N=i.filter(X=>X.label!==""&&s.has(X.label));N.length===0?C=L?{columnId:e,operator:"isnull"}:null:L?C={logic:"or",nodes:[{columnId:e,operator:"in",value:N.map(X=>X.value)},{columnId:e,operator:"isnull"}]}:C={columnId:e,operator:"in",value:N.map(X=>X.value)};}a.setColumnFilter(e,C,datagridCore.FILTER_PART_SET),V();};l.tabIndex=-1,l.addEventListener("keydown",C=>{let L=C.target===k;if(C.key==="Backspace"&&!L){C.preventDefault(),k.focus(),u=u.slice(0,-1),k.value=u,r=0,Tt(),Z();return}if(C.key==="ArrowDown"){C.preventDefault(),fn(L?0:r+1);return}if(C.key==="ArrowUp"){C.preventDefault(),fn(L?f.length-1:r-1);return}if(!L&&(C.key==="Home"||C.key==="End")){C.preventDefault(),fn(C.key==="Home"?0:f.length-1);return}if(C.key===" "&&!L){C.preventDefault();let N=f[r];N&&ko(N.label);return}if(C.key==="Enter"){C.preventDefault(),Eo();return}!L&&C.key.length===1&&C.key!==" "&&!C.ctrlKey&&!C.metaKey&&!C.altKey&&(C.preventDefault(),k.focus(),u+=C.key,k.value=u,r=0,Tt(),Z());});let Ro=p("kanuni-datagrid-filter-footer"),St=document.createElement("button");St.type="button",St.textContent=m.cancel,St.addEventListener("click",()=>V());let fe=document.createElement("button");fe.type="button",fe.className="kanuni-datagrid-filter-primary",fe.setAttribute("data-testid","dg-filter-apply"),fe.textContent=m.apply,fe.disabled=true,fe.addEventListener("click",Eo),Ro.append(St,fe),l.append(k,M,S,Ro),Z(),queueMicrotask(()=>{k.isConnected&&k.focus();}),a.getDistinctValueSetAsync(e).then(C=>{if(eo!==n||!l.isConnected)return;i=C.entries,b=null,h="",d=false,fe.disabled=false;let L=datagridCore.selectedLabelsFromFilter(a.getColumnFilter(e,datagridCore.FILTER_PART_SET)??a.getColumnFilter(e,datagridCore.FILTER_PART_DEFAULT),i);L?(c=true,s=new Set(L)):c||(s=new Set(i.map(X=>X.label))),Tt();let N=Zn.get(e);Z(),N&&(S.scrollTop=N,Z());});});}function yt(e={}){let t=a.getClipboardText(e);a.notifyClipboardGesture("copy",t?t.split(`
|
|
2
|
+
`).length:0,()=>!t||!navigator.clipboard?.writeText?false:(navigator.clipboard.writeText(t).catch(()=>{}),true));}function fr(e){if(nt===false)return [];let t=nt===true?{}:nt,o=[],n=i=>{e&&o.length===0&&o.push({separator:true,id:"__dg-sep"}),o.push(i);};t.copy!==false&&n({id:"__dg-copy",label:m.menuCopy,shortcut:`${mr}C`,onSelect:()=>yt()}),t.copyWithHeaders!==false&&n({id:"__dg-copy-headers",label:m.menuCopyWithHeaders,onSelect:()=>yt({includeHeaders:true})}),t.copyWithGroupHeaders!==false&&gr()&&n({id:"__dg-copy-group-headers",label:m.menuCopyWithGroupHeaders,onSelect:()=>yt({includeGroupHeaders:true})});let l=t.export===false?[]:Array.isArray(t.export)?t.export:["csv","excel","excel-selected","pdf"];if(l.length>0){let i=a.getSelectedCount()===0,d={csv:m.exportCsv,excel:m.exportExcel,"excel-selected":m.exportExcelSelected,pdf:m.exportPdf};n({id:"__dg-export",label:m.menuExport,items:l.map(s=>({id:`__dg-export-${s}`,label:d[s],disabled:s==="excel-selected"&&i,onSelect:()=>{mn(a,s).then(c=>{c.error&&Qt(c.error);});}}))});}return o}function gr(){let e=a.getColumnModel();return a.getVisualColumnIds().some(t=>{let o=e.getDef(t)?.band;return typeof o=="string"?o!=="":Array.isArray(o)&&o.length>0})}let mr=/Mac|iPhone|iPad|iPod/.test(navigator.platform??"")?"\u2318":"Ctrl+";function tn(e,t,o){let n=null,l=()=>{n?.remove(),n=null;};t.forEach((i,d)=>{if(i.separator){let f=p("kanuni-datagrid-menu-separator");f.setAttribute("role","separator"),e.appendChild(f);return}let s=p("kanuni-datagrid-menu-row"),c=document.createElement("button");if(c.type="button",c.className="kanuni-datagrid-menu-item",c.setAttribute("role","menuitem"),c.setAttribute("data-item-index",String(d)),i.disabled&&(c.disabled=true),i.icon!==void 0){let f=p("kanuni-datagrid-menu-icon","span");typeof i.icon=="string"?f.textContent=i.icon:f.appendChild(i.icon),c.appendChild(f);}let r=p("kanuni-datagrid-menu-label","span");if(r.textContent=i.label??"",c.appendChild(r),i.shortcut){let f=p("kanuni-datagrid-menu-shortcut","span");f.textContent=i.shortcut,c.appendChild(f);}let u=i.items??[];if(u.length>0){let f=p("kanuni-datagrid-menu-caret","span");f.textContent="\u203A",c.appendChild(f),c.setAttribute("aria-haspopup","menu"),c.setAttribute("aria-expanded","false");let b=()=>{l();let h=p("kanuni-datagrid-context-menu kanuni-datagrid-submenu");h.setAttribute("role","menu");let w=c.getBoundingClientRect();h.style.left=`${w.right}px`,h.style.top=`${Math.max(0,w.top-4)}px`;for(let k of u){if(k.separator){let W=p("kanuni-datagrid-menu-separator");W.setAttribute("role","separator"),h.appendChild(W);continue}let M=document.createElement("button");M.type="button",M.className="kanuni-datagrid-menu-item",M.setAttribute("role","menuitem"),k.disabled&&(M.disabled=true);let H=p("kanuni-datagrid-menu-label","span");H.textContent=k.label??"",M.appendChild(H),M.addEventListener("click",()=>{k.onSelect?.(o),V();}),h.appendChild(M);}e.parentElement?.appendChild(h),Qn(h,{left:w.right,top:Math.max(0,w.top-4)}),n=h,c.setAttribute("aria-expanded","true");};c.addEventListener("mouseenter",b),c.addEventListener("click",b);}else c.addEventListener("mouseenter",l),c.addEventListener("click",()=>{i.onSelect?.(o),V();});s.appendChild(c),e.appendChild(s);});}let to=e=>{let o=e.target.closest(".kanuni-datagrid-row");if(!o||o.classList.contains("kanuni-datagrid-group-row"))return;let n=ue(e);if(n?.columnId&&a.notifyCell("cellContextMenu",n.node,n.rowIndex,n.columnId),!ot&&!nt||!n||n.node.kind!=="data")return;e.preventDefault(),a.isRowSelected(n.node.key)||a.handleRowClick(n.node.key,{}),n.columnId&&a.focusCell(n.node.key,n.columnId);let l={row:n.node.data,node:n.node,rowIndex:n.rowIndex,columnId:n.columnId,selectedKeys:a.getSelectedKeys()},i=(typeof ot=="function"?ot(l):ot)??[],d=[...i,...br(l,i.length>0)],s=fr(d.length>0);d.length===0&&s.length===0||ke({left:e.clientX,top:e.clientY},c=>{c.setAttribute("role","menu"),tn(c,[...d,...s],l);},"kanuni-datagrid-context-menu");};function br(e,t){if(!be?.onChange||be.menu===false)return [];let o=e.columnId;if(!o)return [];let n=e.node.key,l=Ut(n,o,e.row),i=[];return t&&i.push({separator:true,id:"__note-sep"}),i.push({id:"__note-edit",label:l?m.editNote:m.addNote,onSelect:()=>wr(n,o,e.row,l??"")}),l&&i.push({id:"__note-delete",label:m.deleteNote,onSelect:()=>be.onChange?.({rowKey:n,columnId:o,row:e.row,text:null})}),i}function wr(e,t,o,n){let i=(T.querySelector(`[data-row-key="${CSS.escape(String(e))}"] [data-column-id="${CSS.escape(t)}"]`)??T).getBoundingClientRect();queueMicrotask(()=>{ke({left:i.left,top:i.bottom+2},d=>{d.setAttribute("aria-label",m.noteEditorAria);let s=document.createElement("textarea");s.className="kanuni-datagrid-note-input",s.rows=4,s.value=n,s.setAttribute("aria-label",m.noteEditorAria),s.placeholder=m.notePlaceholder,s.setAttribute("data-testid","dg-note-input");let c=()=>{let b=s.value.trim();V(),be?.onChange?.({rowKey:e,columnId:t,row:o,text:b===""?null:b});};s.addEventListener("keydown",b=>{b.key==="Enter"&&(b.ctrlKey||b.metaKey)&&(b.preventDefault(),c()),b.key==="Escape"&&(b.preventDefault(),V());});let r=p("kanuni-datagrid-note-actions"),u=document.createElement("button");u.type="button",u.className="kanuni-datagrid-note-cancel",u.textContent=m.cancel,u.addEventListener("click",()=>V());let f=document.createElement("button");f.type="button",f.className="kanuni-datagrid-note-save",f.setAttribute("data-testid","dg-note-save"),f.textContent=m.save,f.addEventListener("click",c),r.append(u,f),d.append(s,r),queueMicrotask(()=>{s.focus(),s.select();});},"kanuni-datagrid-filter-popup kanuni-datagrid-note-editor");});}function hr(e){Ce!==e&&(Ce=e,e?(T.insertBefore(B,R),rn()):B.remove());}function yr(e){if(ne!==e){if(ne=e,e){if(we){let t=Se.length>0?Oe:F;O.insertBefore($,t);}else O.append($);Jt();}else $.remove();Oe.style.setProperty("--dg-pinned-gap",String(_t+(ne&&we?1:0)));}}function nn(e){let t=bn(T,e);t!==null&&a.setColumnWidth(e,t);}function Cr(e,t){let o=a.getColumnModel().getDef(e),n={columnId:e,headerName:o?.headerName??e},l=gn(n,{controller:a,t:m,groupPanelVisible:Ce,footerVisible:ne,onToggleGroupPanel:()=>hr(!Ce),onToggleFooter:()=>yr(!ne),onOpenFieldChooser:()=>no(t),onBestFit:nn,onBestFitAll:()=>{for(let d of a.getColumnStates())d.visible&&nn(d.id);},maxGroupLevels:ie?Number.POSITIVE_INFINITY:1}),i=typeof $t=="function"?$t(n,l):l;i.length!==0&&ke(t,d=>{d.setAttribute("role","menu"),tn(d,i,n);},"kanuni-datagrid-context-menu");}function xr(e,t){let o=a.getColumnModel().getDef(e),n=a.getColumnSummary(e),l={columnId:e,headerName:o?.headerName??o?.field??e},i=[{id:"none",label:m.noTotal,disabled:n===null,onSelect:()=>a.setColumnSummary(e,null)},{id:"sep",separator:true},...datagridCore.allowedSummaryTypes(o?.dataType).map(d=>({id:d,label:Bt[d],disabled:n?.type===d,onSelect:()=>a.setColumnSummary(e,d)}))];ke(t,d=>{d.setAttribute("role","menu"),tn(d,i,l);},"kanuni-datagrid-context-menu");}function no(e){ke(e,t=>{let o=p("kanuni-datagrid-filter-list");for(let n of a.getColumnStates()){let l=document.createElement("label");l.className="kanuni-datagrid-filter-item";let i=document.createElement("input");i.type="checkbox",i.checked=n.visible,i.addEventListener("change",()=>{a.setColumnVisible(n.id,i.checked);});let d=document.createElement("span"),s=a.getColumnModel().getDef(n.id);d.textContent=s?.headerName??n.id,l.append(i,d),o.appendChild(l);}t.appendChild(o);},"kanuni-datagrid-filter-popup kanuni-datagrid-column-chooser");}let Re=null,on=null,Ct=e=>{B.classList.toggle("kanuni-datagrid-group-panel--over",e);};function oo(e,t,o){let n=a.getGroupLevels();if(e===t)return;let l=n.filter(s=>s!==e),i=l.indexOf(t);if(i<0)return;let d=o==="before"?i:i+1;on=e,a.groupBy([...l.slice(0,d),e,...l.slice(d)]);}function ro(e,t){let o=a.getGroupLevels(),n=o.indexOf(e),l=n+t;n<0||l<0||l>=o.length||oo(e,o[l],t===-1?"before":"after");}function lo(e,t){if(!e)return;let o=a.getGroupLevels();if(o.includes(e))return;let n=ie?Number.POSITIVE_INFINITY:1;if(o.length>=n){a.groupBy([...o.slice(0,n-1),e]);return}let l=t??o.length;a.groupBy([...o.slice(0,l),e,...o.slice(l)]);}function rn(){if(!Ce)return;B.textContent="";let e=a.getGroupLevels();if(e.length===0){let c=p("kanuni-datagrid-group-panel-hint","span");c.textContent=m.groupPanelHint??"Drag a column header here to group by it",B.appendChild(c);return}let t=c=>a.getColumnModel().getDef(c)?.headerName??c,o=p("kanuni-datagrid-group-levels"),n=(c,r)=>c<r.top+r.height/2?"before":"after",l=(c,r)=>{for(let u of B.querySelectorAll(".kanuni-datagrid-group-level"))u.classList.remove("kanuni-datagrid-group-level--drop-before","kanuni-datagrid-group-level--drop-after");c&&r&&c.classList.add(`kanuni-datagrid-group-level--drop-${r}`);};e.forEach((c,r)=>{let u=p("kanuni-datagrid-group-level");u.style.setProperty("--dg-group-level",String(r)),u.setAttribute("data-group-level",String(r));let f=p("kanuni-datagrid-group-chip");if(f.setAttribute("role","button"),f.tabIndex=0,e.length>1&&(f.draggable=true),f.setAttribute("aria-label",`${datagridCore.fillText(m.groupLevelAria,{n:r+1})}: ${t(c)}`),f.addEventListener("dragstart",w=>{Re=c,w.dataTransfer&&(w.dataTransfer.effectAllowed="move",w.dataTransfer.setData("text/x-kanuni-column",c));}),f.addEventListener("dragend",()=>{Re=null,l(null,null);}),f.addEventListener("keydown",w=>{let k=w.ctrlKey||w.metaKey;k&&(w.key==="ArrowUp"||w.key==="ArrowLeft")?(w.preventDefault(),ro(c,-1)):k&&(w.key==="ArrowDown"||w.key==="ArrowRight")?(w.preventDefault(),ro(c,1)):(w.key==="Delete"||w.key==="Backspace")&&(w.preventDefault(),a.groupBy(e.filter(M=>M!==c)));}),u.addEventListener("dragover",w=>{!Re&&!(w.dataTransfer?.types.includes("text/x-kanuni-column")??false)||(w.preventDefault(),w.stopPropagation(),l(u,n(w.clientY,u.getBoundingClientRect())));}),u.addEventListener("drop",w=>{w.preventDefault(),w.stopPropagation();let k=n(w.clientY,u.getBoundingClientRect());l(null,null),Ct(false);let M=Re;if(Re=null,M){oo(M,c,k);return}let H=w.dataTransfer?.getData("text/x-kanuni-column");H&&lo(H,k==="before"?r:r+1);}),e.length>1){let w=p("kanuni-datagrid-group-chip-level","span");w.textContent=String(r+1),f.appendChild(w);}let b=document.createElement("span");b.textContent=t(c);let h=document.createElement("button");h.type="button",h.setAttribute("aria-label",datagridCore.fillText(m.groupRemoveAria,{column:t(c)})),h.textContent="\xD7",h.addEventListener("click",()=>{a.groupBy(e.filter(w=>w!==c));}),h.draggable=false,f.append(b,h),u.appendChild(f),o.appendChild(u),on===c&&(on=null,queueMicrotask(()=>f.focus()));}),B.appendChild(o);let i=p("kanuni-datagrid-group-panel-actions"),d=document.createElement("button");d.type="button",d.textContent="Expand all",d.addEventListener("click",()=>a.expandAllGroups());let s=document.createElement("button");s.type="button",s.textContent="Collapse all",s.addEventListener("click",()=>a.collapseAllGroups()),i.append(d,s),B.appendChild(i);}if(Ce){let e=t=>t.dataTransfer?.types.includes("text/x-kanuni-column")??false;B.addEventListener("dragover",t=>{e(t)&&(t.preventDefault(),Ct(true));}),B.addEventListener("dragleave",t=>{let o=t.relatedTarget;o&&B.contains(o)||Ct(false);}),B.addEventListener("drop",t=>{Ct(false);let o=t.dataTransfer?.getData("text/x-kanuni-column");if(o){if(t.preventDefault(),Re){Re=null;return}lo(o);}});}let ao="";function io(){if(!vn)return;let e=[datagridCore.fillText(m.announceRows,{n:a.getVisibleCount()})],t=a.getSort();if(t.length>0){let l=t.map(i=>{let d=a.getColumnModel().getDef(i.columnId),s=d?.headerName??d?.field??i.columnId,c=i.direction==="desc"?m.announceDescending:m.announceAscending;return `${s} ${c}`}).join(", ");e.push(datagridCore.fillText(m.announceSortedBy,{columns:l}));}let o=a.getSelectedCount();o>0&&e.push(datagridCore.fillText(m.announceSelected,{n:o}));let n=e.join(", ");n!==ao&&(ao=n,Be.textContent=n);}function so(){if(!Dt)return;ye.textContent="";let e=datagridCore.describeFilter(a.getEffectiveFilter(),a.getColumnModel(),{...kn,labels:{...datagridCore.filterLabels(m),...kn?.labels}});if(!e&&Dt!=="always"){ye.style.display="none";return}ye.style.display="";let t=a.isFilterEnabled();ye.className=`kanuni-datagrid-filter-panel${t?"":" kanuni-datagrid-filter-panel--suspended"}`;let o=document.createElement("button");o.type="button",o.className="kanuni-datagrid-filter-panel-clear",o.title=m.filterRemove,o.setAttribute("aria-label",m.filterRemove),o.setAttribute("data-testid","dg-filter-panel-clear"),o.disabled=e===null,o.textContent="\xD7",o.addEventListener("click",()=>{a.setFilter(null),a.clearColumnFilters(),a.setFilterEnabled(true);});let n=document.createElement("input");n.type="checkbox",n.className="kanuni-datagrid-filter-panel-toggle",n.checked=t,n.disabled=e===null,n.title=m.filterToggle,n.setAttribute("aria-label",m.filterToggle),n.setAttribute("data-testid","dg-filter-panel-toggle"),n.addEventListener("change",()=>a.setFilterEnabled(n.checked));let l=p("kanuni-datagrid-filter-panel-text","span");if(l.setAttribute("data-testid","dg-filter-panel-text"),l.textContent=e??m.filterNone,e&&(l.title=e),ye.append(o,n,l),yn){let i=document.createElement("button");i.type="button",i.className="kanuni-datagrid-filter-panel-builder",i.title=m.filterEditBuilder,i.setAttribute("aria-label",m.filterEditBuilder),i.setAttribute("data-testid","dg-filter-panel-builder"),i.textContent="\u25BE",i.addEventListener("click",yn),ye.appendChild(i);}}let ln=new Set,vr=a.events.on("cellsFlashed",({rowKeys:e,columnIds:t,duration:o})=>{let n=e.length?e.map(s=>`[data-row-key="${CSS.escape(String(s))}"]`).join(","):".kanuni-datagrid-row",l=t.length?t.map(s=>`[data-column-id="${CSS.escape(s)}"]`).join(","):"[data-column-id]",i=[];D.querySelectorAll(n).forEach(s=>{s.querySelectorAll(l).forEach(c=>i.push(c));});for(let s of i)s.classList.remove("kanuni-datagrid-cell--flash");T.offsetWidth;for(let s of i)s.classList.add("kanuni-datagrid-cell--flash");let d=setTimeout(()=>{for(let s of i)s.classList.remove("kanuni-datagrid-cell--flash");ln.delete(d);},o);ln.add(d);});function ue(e){let t=e.target,o=t.closest(".kanuni-datagrid-row");if(!o||!D.contains(o))return null;let n=o.getAttribute("data-row-key");if(n===null)return null;let l=a.getRows(),i=l.findIndex(s=>String(s.key)===n);if(i===-1)return null;let d=t.closest(".kanuni-datagrid-cell")?.getAttribute("data-column-id")??null;return {node:l[i],rowIndex:i,columnId:d}}let uo=e=>{let t=ue(e);t&&($o?.(t.node),a.notifyRow("rowClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellClicked",t.node,t.rowIndex,t.columnId));},co=e=>{let t=ue(e);if(t){if(Rn){let o=pn(t);o&&Rn(o);}It?.(t.node),a.notifyRow("rowDoubleClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellDoubleClicked",t.node,t.rowIndex,t.columnId);}};D.addEventListener("click",uo),D.addEventListener("dblclick",co);function kr(e){let t=0,o=j.querySelector(`[data-column-id="${CSS.escape(e)}"]`);o&&(t=o.scrollWidth),D.querySelectorAll(`[data-column-id="${CSS.escape(e)}"]`).forEach(n=>{n.scrollWidth>t&&(t=n.scrollWidth);}),t>0&&a.setColumnWidth(e,t+12,true);}function Er(){if(I)for(let e of j.querySelectorAll(".kanuni-datagrid-filter-button")){let t=e.parentElement?.getAttribute("data-column-id");t&&e.classList.toggle("kanuni-datagrid-filter-button--active",a.getColumnFilter(t)!==null);}}let an=false,po=false,$e=null;function xt(){$e!==null&&(clearTimeout($e),$e=null);}function vt(e){Fe.style.display=e?"":"none";}function kt(){let e=a.getOverlay();if(it.style.display=e==="noRows"?"":"none",Ft===false){xt(),vt(false);return}if(!(e==="loading"&&(an||!po))){xt(),vt(false);return}if(an||An<=0){xt(),vt(true);return}$e!==null||Fe.style.display===""||($e=setTimeout(()=>{$e=null,q||vt(true);},An));}let fo=false,dn=false,sn=false,un=false,q=false;function Rr(){if(dn=false,!q){if(sn)sn=false,un&&(un=false,ve++),qt(),Xt(),jt(),Zt();else {let e=_;qt(),_!==e&&(ve++,Xt(),jt(),Zt());}Yt(),Vn(),Jt(),jn(),Er(),rn(),so(),io(),kt();}}function cn(e){q||(e&&(sn=true),!dn&&(dn=true,queueMicrotask(Rr)));}let Tr=[...xn?[a.events.on("focusedRowChanged",e=>xn({rowKey:e.rowKey,row:e.row}))]:[],...rl.map(e=>a.events.on(e,()=>cn(true))),...ll.map(e=>a.events.on(e,()=>{un=true;})),...al.map(e=>a.events.on(e,()=>cn(false))),a.events.on("overlayChanged",e=>{an=e.manual===true&&e.overlay==="loading",q||kt();}),a.events.on("busyChanged",e=>{po=e.background===true,q||kt();}),a.events.on("paginationChanged",()=>{q||cn(false);}),a.events.on("scrollRequested",e=>{if(q)return;e.scrollTop!==void 0&&(R.scrollTop=e.scrollTop),e.scrollLeft!==void 0&&(R.scrollLeft=e.scrollLeft),a.setScroll(R.scrollTop,Math.abs(R.scrollLeft));let t=e.scrollTop;t===void 0||Math.abs(R.scrollTop-t)<=1||setTimeout(()=>{q||Math.abs(R.scrollTop-t)<=1||(R.scrollTop=t,a.setScroll(R.scrollTop,Math.abs(R.scrollLeft)));},0);}),...Ht==="fitGrid"?[a.events.on("gridSizeChanged",()=>a.sizeColumnsToFit())]:[],...Ht==="fitCells"?[a.events.on("firstDataRendered",()=>{q||fo||(fo=true,queueMicrotask(()=>{if(!q)for(let e of a.getColumnStates())e.visible&&nn(e.id);}));})]:[]];Ht==="fitGrid"&&a.sizeColumnsToFit();function pn(e){if(!e.columnId||e.node.kind!=="data")return null;let t=J.find(o=>o.id===e.columnId);return t?{node:e.node,columnId:e.columnId,rowIndex:e.rowIndex,columnIndex:t.visualIndex,value:a.getColumnModel().getCellValue(e.node.data,t.id)}:null}let go=e=>{let t=e.target;if(En){let s=ue(e),c=s?pn(s):null;c&&En(c,e);}let o=t.closest(".kanuni-datagrid-row");if(!o||o.classList.contains("kanuni-datagrid-group-row"))return;let n=o.getAttribute("data-row-key");if(n===null)return;let l=a.getRows().find(s=>String(s.key)===n);if(!l||l.kind!=="data")return;a.handleRowClick(l.key,{ctrlKey:e.ctrlKey||dt&&!e.shiftKey,metaKey:e.metaKey,shiftKey:e.shiftKey});let i=t.closest(".kanuni-datagrid-cell"),d=i?J.find(s=>i.id.endsWith(`-${s.id}`))?.id:void 0;d&&a.focusCell(l.key,d);},mo=e=>{if(!lt)return;let o=e.target.closest(".kanuni-datagrid-cell");if(!o||!D.contains(o)||e.relatedTarget?.closest?.(".kanuni-datagrid-cell")===o)return;let l=ue(e),i=l?pn(l):null;i&<(i,e);};D.addEventListener("mousedown",go),D.addEventListener("contextmenu",to),lt&&D.addEventListener("mouseover",mo),ut&&(F.addEventListener("dragstart",Jo),F.addEventListener("dragover",Zo),F.addEventListener("drop",er),F.addEventListener("dragend",tr),F.addEventListener("dragleave",nr)),T.tabIndex=0;let bo=e=>{let t=e.target;if(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable)return;let o=datagridCore.resolveGridCommand({key:e.key,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey,altKey:e.altKey});if(!o)return;if(o.type==="copy"){yt();return}if(o.type==="activate"){if(It){let i=a.getFocus(),d=i?a.getRows().find(s=>s.key===i.rowKey):void 0;d&&It(d);}o.preventDefault&&e.preventDefault();return}a.executeCommand(o),o.preventDefault&&e.preventDefault();let n=a.getFocusIndices();if(n){let d=a.getColumnLayout().center.findIndex(c=>c.state.id===a.getFocus()?.columnId),s=a.ensureVisible(n.rowIndex,d===-1?void 0:d);s&&(s.scrollTop!==void 0&&(R.scrollTop=s.scrollTop),s.scrollLeft!==void 0&&(R.scrollLeft=s.scrollLeft),a.setScroll(R.scrollTop,Math.abs(R.scrollLeft)));}let l=a.getFocus();T.setAttribute("aria-activedescendant",l?`${g.gridId}-cell-${String(l.rowKey)}-${l.columnId}`:"");};T.addEventListener("keydown",bo);let Sr=Sn?datagridCore.attachStateStoring(a,Sn):null,Lr=typeof me=="object"?me.delay??400:400,Ar=me!==false&&!(typeof me=="object"&&me.enabled===false),Mr=typeof me=="object"?me.showOnTruncation!==false:true,Xe=null,Et=null;function Ue(){Et&&clearTimeout(Et),Et=null,Xe?.remove(),Xe=null;}let Dr=e=>e.scrollWidth>e.clientWidth+1||e.scrollHeight>e.clientHeight+1;function Nr(e){let o=e.closest(".kanuni-datagrid-row")?.getAttribute("data-row-key"),n=J.find(s=>e.id.endsWith(`-${s.id}`));if(!o||!n)return null;let l=a.getRows().find(s=>String(s.key)===o);if(!l||l.kind!=="data")return null;let i=n.def,d=Ut(l.key,n.id,l.data);if(d)return d;if(typeof i.tooltip=="function")return i.tooltip({value:a.getColumnModel().getCellValue(l.data,n.id),row:l.data,node:l,column:i})??null;if(typeof i.tooltip=="string")return i.tooltip;if(i.tooltipField){let s=l.data[i.tooltipField];return s==null?null:String(s)}return Mr&&Dr(e)?e.textContent??null:null}let wo=e=>{if(!Ar)return;Ue();let t=e.target.closest(".kanuni-datagrid-cell");!t||!D.contains(t)||(Et=setTimeout(()=>{let o=Nr(t);if(!o)return;let n=t.getBoundingClientRect();Xe=p(`${hn(g)} kanuni-datagrid-portal`);let l=p("kanuni-datagrid-tooltip");l.setAttribute("role","tooltip"),l.textContent=o,l.style.position="fixed",l.style.left=`${n.left}px`,l.style.top=`${n.bottom+4}px`,l.style.zIndex="1001",Xe.appendChild(l),document.body.appendChild(Xe);},Lr));},ho=()=>Ue();T.addEventListener("pointerover",wo),T.addEventListener("pointerout",ho),R.addEventListener("scroll",Ue,{passive:true});let yo=()=>{if(a.setScroll(R.scrollTop,Math.abs(R.scrollLeft)),ce)for(let e of Co())e.scroller.scrollLeft!==R.scrollLeft&&(e.scroller.scrollLeft=R.scrollLeft);};R.addEventListener("scroll",yo,{passive:true});let ce=null,Co=()=>{if(!Y||!ce)return [];let e=Qe.get(Y);return e?[...e].filter(t=>t!==ce):[]},xo=null;if(Y){ce={controller:a,scroller:R};let e=Qe.get(Y)??new Set;e.add(ce),Qe.set(Y,e),xo=a.events.on("columnStateChanged",()=>{if(wn.has(Y))return;let t=Co();if(t.length===0)return;let o=a.getColumnStates();wn.add(Y);try{for(let n of t)n.controller.applyColumnStates(o);}finally{wn.delete(Y);}});}let vo=()=>{a.setViewportSize(R.clientWidth,R.clientHeight),R.style.setProperty("--dg-viewport-width",`${R.clientWidth}px`);let e=F.getBoundingClientRect(),t=O.getBoundingClientRect();a.setChromeOffsets(e.top-t.top,t.bottom-e.bottom),datagridCore.calibrateMaxScrollOffset(R,a);};vo();let Rt=null;return typeof ResizeObserver<"u"&&(Rt=new ResizeObserver(vo),Rt.observe(R),Rt.observe(O)),qt(),Xt(),jt(),cr(),Zt(),Yt(),Jt(),jn(),rn(),so(),io(),kt(),Ve?.always&&Wt(true),{controller:a,element:T,setData:e=>a.setData(e),setColumns:e=>a.setColumns(e),destroy:()=>{if(!q){if(q=true,Tr.forEach(e=>e()),Rt?.disconnect(),_n?.(),We&&(We=false,Te--,Te<=0&&(Te=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),xo?.(),Y&&ce){let e=Qe.get(Y);e?.delete(ce),e&&e.size===0&&Qe.delete(Y),ce=null;}R.removeEventListener("scroll",yo),D.removeEventListener("mousedown",go),D.removeEventListener("contextmenu",to),lt&&D.removeEventListener("mouseover",mo),D.removeEventListener("click",uo),D.removeEventListener("dblclick",co),vr(),xt();for(let e of ln)clearTimeout(e);T.removeEventListener("keydown",bo),T.removeEventListener("pointerover",wo),T.removeEventListener("pointerout",ho),R.removeEventListener("scroll",Ue),Ue(),Sr?.(),V(),a.dispose(),T.remove();}}}}Object.defineProperty(exports,"DENSITY_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.DENSITY_ROW_HEIGHT}});Object.defineProperty(exports,"THEME_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.THEME_ROW_HEIGHT}});Object.defineProperty(exports,"presetRowHeight",{enumerable:true,get:function(){return datagridCore.presetRowHeight}});exports.CHECKBOX_COLUMN_WIDTH=Lt;exports.DETAIL_COLUMN_WIDTH=Ze;exports.PRINT_MAX_ROWS=Ho;exports.ROW_DRAG_MIME=At;exports.ROW_NUMBER_COLUMN_WIDTH=Je;exports.buildHeaderMenu=gn;exports.createGrid=gl;exports.measureBestFitWidth=bn;
|