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