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