@kanunilabs/datagrid 1.9.10 → 1.9.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var datagridCore=require('@kanunilabs/datagrid-core');function Qo(l,u){let{controller:f,maxGroupLevels:M,t:k}=u,C=l.columnId,A=f.getColumnModel().getDef(C),L=f.getSort(),T=L.find(O=>O.columnId===C),Z=f.getGroupLevels(),z=Z.includes(C),H=A?.sortable!==false,V=f.getColumnStates().find(O=>O.id===C)?.pinned??null,ce=A?.groupable!==false,W=f.canGroup(),se=[{id:"sort-asc",label:k.sortAsc,disabled:!H||T?.direction==="asc",onSelect:()=>f.setSort([{columnId:C,direction:"asc"}])},{id:"sort-desc",label:k.sortDesc,disabled:!H||T?.direction==="desc",onSelect:()=>f.setSort([{columnId:C,direction:"desc"}])},{id:"sort-clear",label:k.clearSort,disabled:!T,onSelect:()=>f.setSort(L.filter(O=>O.columnId!==C))},{id:"sep-1",separator:true},{id:"group",label:z?k.ungroupColumn:k.groupByColumn,disabled:!ce,onSelect:()=>{z?f.groupBy(Z.filter(O=>O!==C)):f.groupBy([...Z,C].slice(-M));}},{id:"group-panel",label:u.groupPanelVisible?k.hideGroupPanel:k.showGroupPanel,onSelect:u.onToggleGroupPanel},{id:"footer",label:u.footerVisible?k.hideFooter:k.showFooter,onSelect:u.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:k.hideColumn,disabled:f.getColumnStates().filter(O=>O.visible).length<=1,onSelect:()=>f.setColumnVisible(C,false)},{id:"field-chooser",label:k.fieldChooser,onSelect:u.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:k.bestFit,disabled:A?.resizable===false,onSelect:()=>u.onBestFit(C)},{id:"best-fit-all",label:k.bestFitAll,onSelect:u.onBestFitAll}],ee=f.getColumnStates().filter(O=>O.visible&&O.pinned===V).map(O=>O.id),Ee=ee.indexOf(C),S=A?.reorderable!==false&&Ee>=0;return se.push({id:"sep-4",separator:true},{id:"move-left",label:k.moveLeft,disabled:!S||Ee<=0,onSelect:()=>f.moveColumn(C,ee[Ee-1])},{id:"move-right",label:k.moveRight,disabled:!S||Ee<0||Ee>=ee.length-1,onSelect:()=>f.moveColumn(C,ee[Ee+2])},{id:"fixed-position",label:k.fixedPosition,items:[{id:"pin-left",label:k.pinLeft,disabled:V==="left",onSelect:()=>f.setColumnPinned(C,"left")},{id:"pin-right",label:k.pinRight,disabled:V==="right",onSelect:()=>f.setColumnPinned(C,"right")},{id:"pin-sticky",label:k.pinSticky,disabled:V==="sticky",onSelect:()=>f.setColumnPinned(C,"sticky")}]},{id:"unpin",label:k.unpin,disabled:V===null,onSelect:()=>f.setColumnPinned(C,null)}),W?se:se.filter(O=>O.id!=="group"&&O.id!=="group-panel")}async function Zo(l,u){try{let f=u==="csv"?await l.exportToCsv():u==="excel"?await l.exportToExcel():u==="excel-selected"?await l.exportToExcel({selectedOnly:!0}):await l.exportToPdf();return datagridCore.downloadBlob(f.blob,f.fileName),{completed:!0}}catch(f){return f instanceof datagridCore.ExportAbortedError?{completed:false}:{completed:false,error:f instanceof Error?f.message:String(f)}}}var Ba=null;function gl(){return typeof document>"u"?null:(Ba??=document.createElement("canvas"),Ba.getContext("2d"))}function Va(l){let u=getComputedStyle(l);return `${u.fontStyle} ${u.fontWeight} ${u.fontSize} ${u.fontFamily}`}function ml(l){for(let u=l.firstElementChild;u;u=u.nextElementSibling)if(u.tagName!=="MARK")return true;return false}function bl(l){let u=l.map(M=>[M.style.width,M.style.minWidth,M.style.maxWidth]);for(let M of l)M.style.width="max-content",M.style.minWidth="0",M.style.maxWidth="none";let f=0;for(let M of l){let k=Math.ceil(M.getBoundingClientRect().width);k>f&&(f=k);}return l.forEach((M,k)=>{[M.style.width,M.style.minWidth,M.style.maxWidth]=u[k];}),f}function er(l,u){let f=gl();if(!f)return null;let M=typeof CSS<"u"&&CSS.escape?CSS.escape(u):u.replace(/"/g,'\\"'),k=l.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${M}"]`),C=l.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${M}"]`);if(!k&&C.length===0)return null;let A=0;if(k){let L=k.querySelector(".kanuni-datagrid-header-label")??k;f.font=Va(L),A=f.measureText(L.textContent??"").width+44;}if(C.length>0){f.font=Va(C[0]);let L=[];for(let T=0;T<C.length;T++){if(ml(C[T])){L.push(C[T]);continue}let Z=C[T].textContent??"";if(Z==="")continue;let z=f.measureText(Z).width+20;z>A&&(A=z);}L.length>0&&(A=Math.max(A,bl(L)));}return A===0?null:Math.round(Math.min(640,Math.max(48,A)))}function qa(l){let u=Number(l.weekStartsOn);return Number.isInteger(u)&&u>=0&&u<=6?u:0}function Tl(l){let u=[l.weekdaySu,l.weekdayMo,l.weekdayTu,l.weekdayWe,l.weekdayTh,l.weekdayFr,l.weekdaySa],f=qa(l);return [...u.slice(f),...u.slice(0,f)]}function Sl(l){return [l.monthJanuary,l.monthFebruary,l.monthMarch,l.monthApril,l.monthMay,l.monthJune,l.monthJuly,l.monthAugust,l.monthSeptember,l.monthOctober,l.monthNovember,l.monthDecember]}function Ll(l,u){return !l||!u?false:l.getFullYear()===u.getFullYear()&&l.getMonth()===u.getMonth()&&l.getDate()===u.getDate()}var Wa="http://www.w3.org/2000/svg";function Al(){let l=document.createElementNS(Wa,"svg");l.setAttribute("width","14"),l.setAttribute("height","14"),l.setAttribute("viewBox","0 0 16 16"),l.setAttribute("aria-hidden","true"),l.setAttribute("focusable","false");let u=document.createElementNS(Wa,"path");return u.setAttribute("d","M3 4h10v9H3z M3 6.5h10 M5.5 2.5v2 M10.5 2.5v2"),u.setAttribute("fill","none"),u.setAttribute("stroke","currentColor"),u.setAttribute("stroke-width","1.3"),u.setAttribute("stroke-linecap","round"),l.appendChild(u),l}function zt(l){let{t:u,format:f=datagridCore.DEFAULT_DATE_FORMAT,autoFocus:M=true}=l,k=Sl(u),C=Tl(u),A=document.createElement("span");A.className="kanuni-datagrid-date-editor";let L=document.createElement("input");L.type="text",L.inputMode="numeric",L.autocomplete="off",L.placeholder=f,l.ariaLabel&&L.setAttribute("aria-label",l.ariaLabel),l.testId&&L.setAttribute("data-testid",l.testId),l.columnId&&L.setAttribute("data-column-id",l.columnId),l.disabled&&(L.disabled=true);let T=null,Z=false,z=null,H=datagridCore.toDate(l.value),V=H??new Date,ce=()=>T===null?datagridCore.formatDateValue(l.value,f):datagridCore.maskDate(T,f),W=()=>T===null?null:datagridCore.parseDateValue(datagridCore.maskDate(T,f),f),se=()=>T!==null&&T.length===datagridCore.dateDigitCount(f)&&W()===null,ee=()=>{let P=se()||!!l.invalid;L.className=`kanuni-datagrid-editor${P?" kanuni-datagrid-editor--invalid":""}`,P?L.setAttribute("aria-invalid","true"):L.removeAttribute("aria-invalid");};L.value=ce(),ee();let Ee=P=>{if(P===null){l.onChange(null);return}l.onChange(l.value instanceof Date?P:datagridCore.toIsoDate(P));},S=()=>{if(!z)return;if(!L.isConnected){j();return}let P=L.getBoundingClientRect(),he=datagridCore.placeAnchoredLayer({anchor:{left:P.left,top:P.top,bottom:P.bottom},width:z.offsetWidth,height:z.offsetHeight,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});z.style.left=`${he.left}px`,z.style.top=`${he.top}px`;},O=()=>S();function J(){if(!z)return;z.textContent="";let P=document.createElement("div");P.className="kanuni-datagrid-date-popup-head";let he=document.createElement("button");he.type="button",he.setAttribute("aria-label",u.datePreviousMonth),he.setAttribute("data-testid","dg-date-prev"),he.textContent="\u2039",he.addEventListener("click",()=>{V=new Date(V.getFullYear(),V.getMonth()-1,1),J();});let Ne=document.createElement("span");Ne.setAttribute("data-testid","dg-date-title"),Ne.textContent=`${k[V.getMonth()]} ${V.getFullYear()}`;let pe=document.createElement("button");pe.type="button",pe.setAttribute("aria-label",u.dateNextMonth),pe.setAttribute("data-testid","dg-date-next"),pe.textContent="\u203A",pe.addEventListener("click",()=>{V=new Date(V.getFullYear(),V.getMonth()+1,1),J();}),P.append(he,Ne,pe);let g=document.createElement("div");g.className="kanuni-datagrid-date-popup-grid",g.setAttribute("role","grid");for(let me of C){let X=document.createElement("span");X.className="kanuni-datagrid-date-weekday",X.setAttribute("role","columnheader"),X.textContent=me,g.appendChild(X);}let D=(new Date(V.getFullYear(),V.getMonth(),1).getDay()-qa(u)+7)%7,we=datagridCore.daysInMonth(V.getFullYear(),V.getMonth()+1);for(let me=0;me<42;me++){let X=me-D+1,de=new Date(V.getFullYear(),V.getMonth(),X),Ce=X<1||X>we,Se=Ll(de,W()??H),_=document.createElement("button");_.type="button",_.setAttribute("role","gridcell"),_.className=`kanuni-datagrid-date-day${Ce?" kanuni-datagrid-date-day--outside":""}${Se?" kanuni-datagrid-date-day--selected":""}`,_.setAttribute("aria-selected",String(Se)),_.setAttribute("data-testid","dg-date-day"),_.setAttribute("data-date",datagridCore.toIsoDate(de)),_.textContent=String(de.getDate()),_.addEventListener("click",()=>q(de)),g.appendChild(_);}z.append(P,g);}function ie(){if(Z)return;Z=true,Q.setAttribute("aria-expanded","true"),V=W()??H??new Date,z=document.createElement("div"),z.className=`kanuni-datagrid-detached kanuni-datagrid-date-popup${l.surfaceClass?` ${l.surfaceClass}`:""}`,z.style.position="fixed",z.setAttribute("data-testid","dg-date-calendar"),z.setAttribute("role","dialog"),z.setAttribute("aria-label",l.ariaLabel?`${l.ariaLabel} ${u.dateCalendar}`:u.dateCalendar),z.addEventListener("mousedown",he=>he.preventDefault());let P=datagridCore.portalContainerFor(A);datagridCore.portalTarget(P).appendChild(datagridCore.markPortal(z,P)),window.addEventListener("scroll",O,true),window.addEventListener("resize",O),l.onPortalOpen?.(j),J(),S();}function j(){Z&&(Z=false,Q.setAttribute("aria-expanded","false"),window.removeEventListener("scroll",O,true),window.removeEventListener("resize",O),z?.remove(),z=null);}function q(P){T=null,j(),Ee(P),L.value=datagridCore.formatDateValue(l.value instanceof Date?P:datagridCore.toIsoDate(P),f),ee(),L.focus({preventScroll:true});}function te(){if(T===null)return;if(T.length===0){Ee(null),T=null,L.value=ce(),ee();return}let P=W();P&&Ee(P),T=null,L.value=ce(),ee();}L.addEventListener("input",()=>{T=datagridCore.dateDigits(L.value,f),L.value=datagridCore.maskDate(T,f),ee();}),L.addEventListener("keydown",P=>{if(P.key==="Escape"){if(P.preventDefault(),P.stopPropagation(),Z){j();return}T=null,l.onCancel();return}if(Z){let he=P.key==="ArrowLeft"?-1:P.key==="ArrowRight"?1:P.key==="ArrowUp"?-7:P.key==="ArrowDown"?7:0;if(he!==0){P.preventDefault(),P.stopPropagation();let Ne=W()??H??new Date,pe=new Date(Ne.getFullYear(),Ne.getMonth(),Ne.getDate()+he);T=datagridCore.dateDigits(datagridCore.formatDateValue(pe,f),f),L.value=datagridCore.maskDate(T,f),V=pe,J(),ee();return}if(P.key==="Enter"){P.preventDefault(),P.stopPropagation();let Ne=W();j(),Ne&&q(Ne);return}}if(P.key==="Enter"){P.preventDefault(),P.stopPropagation(),te(),l.onCommit();return}if(P.key==="Tab"){te(),j(),l.onTab&&(P.preventDefault(),P.stopPropagation(),l.onTab(P.shiftKey));return}if(P.key.length===1&&!P.ctrlKey&&!P.metaKey&&!/\d/.test(P.key)){P.preventDefault();return}P.stopPropagation();}),L.addEventListener("blur",()=>{Z||te();});let Q=document.createElement("button");return Q.type="button",Q.className="kanuni-datagrid-date-button",Q.setAttribute("aria-label",l.ariaLabel?`${l.ariaLabel} \u2014 ${u.dateOpenCalendar}`:u.dateOpenCalendar),Q.setAttribute("aria-expanded","false"),Q.setAttribute("data-testid","dg-date-open"),l.disabled&&(Q.disabled=true),Q.tabIndex=-1,Q.addEventListener("mousedown",P=>P.preventDefault()),Q.addEventListener("click",()=>{Z?j():ie(),L.focus({preventScroll:true});}),Q.appendChild(Al()),A.append(L,Q),M&&queueMicrotask(()=>{L.isConnected&&(L.focus({preventScroll:true}),L.select());}),A}function Ua(l,u){return l==null?"":u==="date"&&l instanceof Date?l.toISOString().slice(0,10):String(l)}function za(l,u){if(u){let f=document.createElement("span");f.id="kanuni-datagrid-editor-error",f.setAttribute("role","alert"),f.className="kanuni-datagrid-editor-error",f.textContent=u,l.appendChild(f);}return l}function or(l){let{value:u,dataType:f,error:M,seeded:k=false}=l,C=document.createDocumentFragment();if(l.options===null){let T=document.createElement("input");return T.type="text",T.value="\u2026",T.readOnly=true,T.disabled=true,T.className="kanuni-datagrid-editor",T.setAttribute("data-testid","dg-cell-editor"),C.appendChild(T),C}if(l.options&&l.options.length>0&&l.renderLookup)return C.appendChild(l.renderLookup({options:l.options,value:u,matchMode:l.matchMode,allowCustom:l.allowCustom,invalid:!!M,testId:"dg-cell-editor",ariaLabel:l.ariaLabel,surfaceClass:l.surfaceClass,onPortalOpen:l.onPortalOpen,noMatchText:l.t?.editNoMatch??"No match",onChange:l.onChange,onCommit:()=>l.onCommit("none"),onCancel:l.onCancel,onTab:T=>l.onTab(T?-1:1)})),za(C,M);if(f==="date"&&l.t)return C.appendChild(zt({value:u,format:l.dateFormat,invalid:!!M,testId:"dg-cell-editor",ariaLabel:l.ariaLabel,surfaceClass:l.surfaceClass,onPortalOpen:l.onPortalOpen,t:l.t,onChange:l.onChange,onCommit:()=>l.onCommit("none"),onCancel:l.onCancel,onTab:T=>l.onTab(T?-1:1)})),za(C,M);let A=document.createElement("input");A.className=`kanuni-datagrid-editor${M?" kanuni-datagrid-editor--invalid":""}`,A.setAttribute("data-testid","dg-cell-editor"),A.setAttribute("aria-invalid",String(!!M)),M&&A.setAttribute("aria-errormessage","kanuni-datagrid-editor-error");let L=false;if(f==="boolean"?(A.type="checkbox",A.checked=u===true,A.addEventListener("change",()=>l.onChange(A.checked))):f==="number"?(A.type=Number.isNaN(Number(u))&&u!==null&&u!==void 0&&u!==""?"text":"number",A.value=Ua(u,f),A.addEventListener("input",()=>l.onChange(A.value===""?null:Number(A.value)))):(A.type="text",A.value=Ua(u,f),A.addEventListener("input",()=>l.onChange(A.value))),A.addEventListener("keydown",T=>{T.isComposing||T.keyCode===229||(T.key==="Enter"?(T.preventDefault(),T.stopPropagation(),l.onCommit(T.shiftKey?"none":"down")):T.key==="Tab"?(T.preventDefault(),T.stopPropagation(),L=true,l.onTab(T.shiftKey?-1:1)):T.key==="Escape"?(T.preventDefault(),T.stopPropagation(),l.onCancel()):T.stopPropagation());}),A.addEventListener("blur",()=>{L||l.onCommit("none");}),C.appendChild(A),M){let T=document.createElement("span");T.id="kanuni-datagrid-editor-error",T.setAttribute("role","alert"),T.className="kanuni-datagrid-editor-error",T.textContent=M,C.appendChild(T);}return queueMicrotask(()=>{if(A.isConnected&&(A.focus({preventScroll:true}),A.type!=="checkbox"))if(k){if(A.type==="text"||A.type==="search"){let T=A.value.length;A.setSelectionRange(T,T);}}else A.select();}),C}var Il=0;function rr(l){return new Promise(u=>{let f=document.createElement("div");f.className=`kanuni-datagrid-detached kanuni-datagrid-dialog-root${l.surfaceClass?` ${l.surfaceClass}`:""}`,f.setAttribute("role","presentation");let M=document.activeElement,k=W=>{document.removeEventListener("keydown",C,true);let se=f.contains(document.activeElement);f.remove(),se&&M?.isConnected&&M.focus({preventScroll:true}),u(W);},C=W=>{if(W.key==="Escape"){W.stopPropagation(),k(false);return}if(W.key==="Tab"){let se=Array.from(H.querySelectorAll("button:not([disabled])"));if(se.length===0)return;let ee=se.indexOf(document.activeElement),Ee=W.shiftKey?ee<=0?se.length-1:ee-1:ee===se.length-1?0:ee+1;W.preventDefault(),W.stopPropagation(),se[Ee].focus();}};document.addEventListener("keydown",C,true);let A=document.createElement("div");A.className="kanuni-datagrid-dialog-overlay",A.addEventListener("mousedown",()=>k(false));let L=document.createElement("div");L.className="kanuni-datagrid-dialog",L.setAttribute("role","alertdialog"),L.setAttribute("aria-modal","true");let T=`dg-dialog-${++Il}`;L.setAttribute("aria-labelledby",`${T}-title`),L.setAttribute("aria-describedby",`${T}-message`),L.setAttribute("data-testid","dg-dialog");let Z=document.createElement("div");Z.className="kanuni-datagrid-dialog-title",Z.id=`${T}-title`,Z.textContent=l.title;let z=document.createElement("div");z.className="kanuni-datagrid-dialog-message",z.id=`${T}-message`,z.textContent=l.message;let H=document.createElement("div");if(H.className="kanuni-datagrid-dialog-actions",l.cancelLabel!==void 0){let W=document.createElement("button");W.type="button",W.setAttribute("data-testid","dg-dialog-cancel"),W.textContent=l.cancelLabel,W.addEventListener("click",()=>k(false)),H.appendChild(W);}let V=document.createElement("button");V.type="button",V.className=`kanuni-datagrid-dialog-primary${l.danger?" kanuni-datagrid-dialog-primary--danger":""}`,V.setAttribute("data-testid","dg-dialog-confirm"),V.textContent=l.confirmLabel,V.addEventListener("click",()=>k(true)),H.appendChild(V),L.append(Z,z,H),f.append(A,L);let ce=datagridCore.portalContainerFor(l.anchor);datagridCore.portalTarget(ce).appendChild(datagridCore.markPortal(f,ce)),V.focus();})}function Hl(l,u){switch(l){case "number":return u==null||u===""||!Number.isNaN(Number(u))?"number":"text";case "boolean":return "checkbox";default:return "text"}}function Fl(l,u){if(u==="number"){if(l==="")return null;let f=Number(l);return Number.isNaN(f)?l:f}return l}function ar(l){let{t:u,popup:f=false,inline:M=false}=l,k=document.createElement("div");k.className=`kanuni-datagrid-edit-form${M?" kanuni-datagrid-edit-form--inline":""}`,k.setAttribute("data-testid","dg-edit-form"),k.setAttribute("data-row-key",String(l.rowKey)),f&&k.setAttribute("data-popup",""),k.setAttribute("role",f?"dialog":"group"),f&&k.setAttribute("aria-modal","true"),k.setAttribute("aria-label",l.isNew?u.formAddTitle:u.formEditTitle);let C=document.createElement("div");C.className="kanuni-datagrid-edit-form-header";let A=document.createElement("strong");A.textContent=l.isNew?u.formAddTitle:u.formEditTitle,C.appendChild(A);let L=document.createElement("div");L.className="kanuni-datagrid-edit-form-error",L.setAttribute("role","alert"),L.setAttribute("data-testid","dg-form-error"),L.style.display="none";let T=document.createElement("div");T.className="kanuni-datagrid-edit-form-fields";let Z=new Map,z=(S,O)=>{let J=l.getValue(S.columnId),ie=l.getSaving()||!S.editable,j=`dg-field-${String(l.rowKey)}-${S.columnId}`;if(S.lookup&&!l.renderLookup){let te=document.createElement("input");te.id=j,te.type="text",te.className="kanuni-datagrid-edit-form-input",te.setAttribute("data-testid",j),te.disabled=true,te.readOnly=true;let Q=S.lookup.options?.find(P=>Object.is(P.value,J));return te.value=Q?Q.label:J==null?"":String(J),te}if(S.lookup&&l.renderLookup){let te=document.createElement("div");if(te.className="kanuni-datagrid-edit-form-lookup",S.lookup.options===null){let Q=document.createElement("input");return Q.type="text",Q.value="\u2026",Q.readOnly=true,Q.disabled=true,Q.className="kanuni-datagrid-editor",Q.setAttribute("data-testid",j),te.appendChild(Q),te}return te.appendChild(l.renderLookup({options:S.lookup.options,value:J,matchMode:S.lookup.matchMode,allowCustom:S.lookup.allowCustom,invalid:!!O,autoFocus:false,testId:j,columnId:S.columnId,ariaLabel:S.label,surfaceClass:l.surfaceClass,onPortalOpen:l.onPortalOpen,noMatchText:u.editNoMatch,onChange:Q=>l.onChange(S.columnId,Q),commitOnPick:false,onCommit:()=>l.onSave(),onCancel:l.onCancel})),te}if(S.dataType==="date"){let te=document.createElement("div");return te.className="kanuni-datagrid-edit-form-lookup",te.appendChild(zt({value:J,format:S.dateFormat,invalid:!!O,disabled:ie,autoFocus:false,testId:j,columnId:S.columnId,ariaLabel:S.label,surfaceClass:l.surfaceClass,onPortalOpen:l.onPortalOpen,t:u,onChange:Q=>l.onChange(S.columnId,Q),onCommit:()=>l.onSave(),onCancel:l.onCancel})),te}let q=document.createElement("input");return q.id=j,q.className="kanuni-datagrid-edit-form-input",q.setAttribute("data-testid",j),q.disabled=ie,S.dataType==="boolean"?(q.type="checkbox",q.checked=J===true,q.addEventListener("change",()=>l.onChange(S.columnId,q.checked)),q):(q.type=Hl(S.dataType,J),O&&q.setAttribute("aria-invalid","true"),q.value=J==null?"":String(J),q.addEventListener("input",()=>l.onChange(S.columnId,Fl(q.value,S.dataType))),q)},H=l.getErrors();for(let S of l.fields){let O=document.createElement("label");O.className="kanuni-datagrid-edit-form-field",O.setAttribute("data-field-id",S.columnId);let J=document.createElement("span");J.className="kanuni-datagrid-edit-form-label",J.textContent=S.label;let ie=document.createElement("span");ie.style.display="contents",ie.appendChild(z(S,H[S.columnId]??null));let j=document.createElement("span");j.className="kanuni-datagrid-edit-form-message",j.setAttribute("role","alert"),j.style.display="none",O.append(J,ie,j),T.appendChild(O),Z.set(S.columnId,{wrap:O,message:j,controlHost:ie,field:S});}let V=document.createElement("div");V.className="kanuni-datagrid-edit-form-footer";let ce=typeof navigator<"u"&&/Mac|iP(hone|ad)/.test(navigator.platform??""),W=document.createElement("span");W.className="kanuni-datagrid-edit-form-hint",W.textContent=u.formShortcut.replace("{key}",ce?"\u2318":"Ctrl");let se=document.createElement("button");se.type="button",se.setAttribute("data-testid","dg-form-cancel"),se.textContent=u.cancel,se.addEventListener("click",()=>l.onCancel());let ee=document.createElement("button");ee.type="button",ee.className="kanuni-datagrid-edit-form-save",ee.setAttribute("data-testid","dg-form-save"),ee.textContent=u.save,ee.addEventListener("click",()=>l.onSave()),V.append(W,se,ee),k.append(C,L,T,V),k.addEventListener("keydown",S=>{if(S.key==="Escape"){S.preventDefault(),S.stopPropagation(),l.onCancel();return}if(S.key==="Enter"&&(S.ctrlKey||S.metaKey)){S.preventDefault(),S.stopPropagation(),l.onSave();return}if(S.key==="Enter"&&!(S.target instanceof HTMLButtonElement)){S.preventDefault();return}if(S.key!=="Tab"||!f)return;let O=Array.from(k.querySelectorAll("input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled])"));if(O.length===0)return;let J=O[0],ie=O[O.length-1];!S.shiftKey&&document.activeElement===ie?(S.preventDefault(),J.focus()):S.shiftKey&&document.activeElement===J&&(S.preventDefault(),ie.focus());});let Ee=()=>{let S=l.getErrors(),O=l.getSaving(),J=l.getSaveError();L.textContent=J??"",L.style.display=J?"":"none",ee.disabled=O,se.disabled=O,ee.textContent=O?u.editSaving:u.save;for(let[j,q]of Z){let te=S[j]??null;q.message.textContent=te??"",q.message.style.display=te?"":"none",te?q.wrap.setAttribute("data-invalid",""):q.wrap.removeAttribute("data-invalid");let Q=q.controlHost.querySelector("input, .kanuni-datagrid-editor");Q&&Q.classList.toggle("kanuni-datagrid-editor--invalid",!!te);}let ie=Object.keys(S)[0];ie&&Z.get(ie)?.wrap.querySelector("input:not([disabled])")?.focus();};return queueMicrotask(()=>{if(!k.isConnected)return;let S=k.querySelector("input:not([disabled]), select:not([disabled]), textarea:not([disabled])");S?.focus(),S instanceof HTMLInputElement&&S.type==="text"&&S.select(),l.onNaturalHeight&&l.onNaturalHeight(k.clientHeight-T.clientHeight+T.scrollHeight);}),{element:k,refresh:Ee,setLookupOptions:(S,O)=>{let J=Z.get(S);if(!J)return;J.field.lookup={...J.field.lookup,options:O};let ie=l.getErrors();J.controlHost.textContent="",J.controlHost.appendChild(z(J.field,ie[S]??null));},dispose:()=>k.remove()}}function ja(l){let{grid:u,engine:f,mode:M,t:k,extension:C}=l,A=u.controller,L=datagridCore.isRowEditMode(M),T=null,Z=async()=>{T=null;let E=await f.saveChanges();if(E.saved||E.superseded){_();return}T={message:E.error??k.editSaveFailed,rowKey:E.rowKey,columnId:E.columnId},_(),E.rowKey!==void 0&&E.columnId!==void 0&&(A.revealRow(E.rowKey),A.focusCell(E.rowKey,E.columnId));},z=()=>{T=null,f.cancelChanges();},H=null,V=null,ce=null,W=null,se=null,ee=new Map,Ee=0,S=E=>(H=null,f.beginRowEdit(E)),O=null,J=(E,G,oe)=>!L||f.isEditingRow()||!f.canEditRow(E)||(A.scrollToCell(E,G),!S(E))?false:(M==="row"&&oe!==void 0&&(O=G,f.setRowEditValue(G,oe)),true),ie=async()=>{if(!f.getRowSession())return false;let G=await f.saveRowEdit(A.getVisualColumnIds());return H=G.saved?null:G.error??null,G.saved?l.focusGrid():ue(),G.saved},j=()=>{H=null,f.cancelRowEdit(),l.focusGrid();},q=E=>{let G=A.getColumnLayout(),oe=A.getColumnModel(),ve=++Ee;return [...G.left,...G.center,...G.right].filter(Re=>!datagridCore.isChromeColumn(Re.state.id)).map(Re=>{let ye=Re.state.id,Ie=oe.getDef(ye),ht=C.formLookup?C.formLookup(E,ye,_e=>{Ee===ve&&ce?.setLookupOptions(ye,_e);}):Ie?.lookup?{options:datagridCore.staticLookupItems(Ie)??[]}:void 0;return {columnId:ye,label:Ie?.headerName??Ie?.field??ye,dataType:oe.getEditorDataType(ye),editable:f.canUpdate(E,ye),dateFormat:Ie?.dateFormat,lookup:ht}})},te=()=>se??l.formHeight??datagridCore.DEFAULT_EDIT_FORM_HEIGHT,Q=(E,G)=>ar({rowKey:E,fields:q(E),getValue:oe=>f.rowEditValue(oe),getErrors:()=>f.getRowSession()?.errors??{},getSaving:()=>f.getRowSession()?.saving??false,getSaveError:()=>H,isNew:f.getRowSession()?.isNew??false,popup:!G,inline:G,surfaceClass:l.surfaceClass(),renderLookup:C.renderLookup,onPortalOpen:l.trackPortal,t:k,onNaturalHeight:G?oe=>{let ve=Math.ceil(oe);if(ve>0&&ve!==se){se=ve;let Re=f.getRowSession();Re&&M==="form"&&A.setEditFormRow(Re.rowKey,{height:te(),atTop:Re.isNew});}}:void 0,onChange:(oe,ve)=>f.setRowEditValue(oe,ve),onSave:()=>{ie();},onCancel:j}),P=()=>{ee.clear(),ce?.dispose(),ce=null,W?.remove(),W=null;};function he(){if(!L)return;let E=f.getRowSession();if(E&&M!=="row"?u.element.setAttribute("data-row-session",M):u.element.removeAttribute("data-row-session"),!E){V!==null&&(V=null,se=null,P(),M==="form"&&A.setEditFormRow(null));return}if(V===E.rowKey){ce?.refresh();return}if(P(),V=E.rowKey,M==="form"){A.setEditFormRow(E.rowKey,{height:te(),atTop:E.isNew}),A.revealRow(E.rowKey);return}if(M==="popup"){let G=l.surfaceClass();W=document.createElement("div"),W.className=`kanuni-datagrid-detached kanuni-datagrid-edit-popup${G?` ${G}`:""}`;let oe=document.createElement("div");oe.className="kanuni-datagrid-edit-popup-overlay",oe.addEventListener("mousedown",()=>j()),ce=Q(E.rowKey,false),W.append(oe,ce.element);let ve=datagridCore.portalContainerFor(l.barHost);datagridCore.portalTarget(ve).appendChild(datagridCore.markPortal(W,ve));return}A.revealRow(E.rowKey),queueMicrotask(()=>{let G=f.getRowSession();if(!G||G.rowKey!==V)return;let oe=u.element.querySelectorAll('[data-testid="dg-row-editor"]');if(oe.length===0)return;let ve=A.getFocus(),ye=(ve&&String(ve.rowKey)===String(G.rowKey)?u.element.querySelector(`[data-testid="dg-row-editor"][data-column-id="${CSS.escape(ve.columnId)}"]`):null)??oe[0],Ie=O!==null&&ye.getAttribute("data-column-id")===O;O=null,ye.focus({preventScroll:true}),ye instanceof HTMLInputElement&&(Ie?ye.setSelectionRange(ye.value.length,ye.value.length):ye.select());});}let Ne=E=>{let G=ee.get(E);if(G)return G;let oe=A.getColumnModel(),ve=oe.getDef(E),Re=oe.getEditorDataType(E),ye=f.rowEditValue(E),Ie=f.getRowSession()?.errors[E]??null,ht=ve?.headerName??E,_e,Ct=C.resolveLookup?.(V,E);if(Ct&&Ct.options!==void 0&&C.renderLookup)_e=C.renderLookup({options:Ct.options??[],value:ye,matchMode:Ct.matchMode,allowCustom:Ct.allowCustom,invalid:!!Ie,autoFocus:false,testId:"dg-row-editor",columnId:E,ariaLabel:ht,surfaceClass:l.surfaceClass(),noMatchText:k.editNoMatch,onChange:xe=>f.setRowEditValue(E,xe),commitOnPick:false,onCommit:()=>{ie();},onCancel:j});else if(Re==="date")_e=zt({value:ye,format:ve?.dateFormat,invalid:!!Ie,autoFocus:false,testId:"dg-row-editor",columnId:E,ariaLabel:ht,surfaceClass:l.surfaceClass(),onPortalOpen:l.trackPortal,t:k,onChange:xe=>f.setRowEditValue(E,xe),onCommit:()=>{ie();},onCancel:j});else {let xe=document.createElement("input");xe.className=`kanuni-datagrid-editor${Ie?" kanuni-datagrid-editor--invalid":""}`,xe.setAttribute("data-testid","dg-row-editor"),xe.setAttribute("data-column-id",E),xe.setAttribute("aria-label",ht),Ie&&(xe.title=Ie),Re==="boolean"?(xe.type="checkbox",xe.checked=ye===true,xe.addEventListener("change",()=>f.setRowEditValue(E,xe.checked))):(xe.type=Re==="number"?"number":"text",xe.value=ye==null?"":String(ye),xe.addEventListener("input",()=>{let We=xe.value;f.setRowEditValue(E,Re==="number"?We===""?null:Number(We):We);})),xe.addEventListener("keydown",We=>{We.key==="Enter"?(We.preventDefault(),We.stopPropagation(),ie()):We.key==="Escape"?(We.preventDefault(),We.stopPropagation(),j()):We.stopPropagation();}),_e=xe;}return ee.set(E,_e),_e},pe=document.createElement("div");pe.className="kanuni-datagrid-filter-bar kanuni-datagrid-edit-bar",pe.setAttribute("data-testid","dg-edit-bar"),C.decorateBar?.(pe);let g=(E,G,oe,ve)=>{let Re=document.createElement("button");return Re.type="button",oe&&(Re.className="kanuni-datagrid-filter-primary"),Re.setAttribute("data-testid",E),Re.textContent=G,Re.addEventListener("click",ve),Re},N=E=>{let G=document.createElement("span");return G.className="kanuni-datagrid-edit-form-error",G.setAttribute("data-testid",E),G.style.display="none",G},D=null,we=null,me=null,X=null,de=null,Ce=null,Se=null;M==="batch"&&(D=g("dg-save-changes",k.editSaveChanges,true,()=>{Z();}),we=g("dg-discard-changes",k.editDiscardChanges,false,z),me=N("dg-save-error"),pe.append(D,we,me)),M==="row"&&(X=document.createElement("span"),X.setAttribute("data-testid","dg-row-editing"),X.className="kanuni-datagrid-filter-active",X.style.display="none",de=g("dg-save-row",k.editSaveRow,true,()=>{ie();}),de.style.display="none",Ce=g("dg-cancel-row",k.cancel,false,j),Ce.style.display="none",Se=N("dg-row-save-error"),pe.append(X,de,Ce,Se)),pe.childElementCount>0&&l.barHost?.appendChild(pe);function _(){let E=f.hasChanges();if(D&&(D.style.display=E?"":"none",D.textContent=k.editSaveCount.replace("{n}",String(f.getChanges().length)),D.disabled=f.isSaving()),we&&(we.style.display=E?"":"none"),me&&(me.textContent=T?.message??"",me.style.display=T?"":"none"),X&&de&&Ce&&Se){let G=f.getRowSession(),oe=G?"":"none";X.style.display=oe,de.style.display=oe,Ce.style.display=oe,G&&(X.textContent=G.isNew?k.formAddTitle:k.editEditingRow.replace("{row}",String(G.rowKey)),de.disabled=G.saving,de.textContent=G.saving?k.editSaving:k.editSaveRow,Ce.disabled=G.saving),Se.textContent=H??"",Se.style.display=G&&H?"":"none";}pe.style.display=Array.from(pe.children).some(G=>G.style.display!=="none")?"":"none";}_();function ue(){T=null,_(),he();}return {rowModeActive:L,beginRowEdit:S,openRowFromKeys:J,saveRowEdit:ie,cancelRowEdit:j,saveChanges:Z,cancelChanges:z,renderRowCell:E=>{if(!(M!=="row"||E.node.kind!=="data"||datagridCore.isChromeColumn(E.columnId))&&f.isEditingRow(E.node.key))return f.canUpdate(E.node.key,E.columnId)?Ne(E.columnId):l.defaultContent(E,f.rowEditValue(E.columnId))},renderEditForm:E=>{if(M!=="form")return;let G=f.getRowSession();if(!(!G||G.rowKey!==E))return (!ce||ce.element.getAttribute("data-row-key")!==String(E))&&(ce?.dispose(),ce=Q(E,true)),ce.element},onCellDoubleClick:E=>L?(E.node.kind==="data"&&!f.isEditingRow()&&f.canEditRow(E.node.key)&&S(E.node.key),true):false,handleRowKeys:E=>!f.isEditingRow()||E.target?.closest?.('[data-testid="dg-edit-form"]')?false:E.key==="Enter"?(E.preventDefault(),ie(),true):E.key==="Escape"?(E.preventDefault(),j(),true):false,sync:ue,dispose:()=>{P(),M==="form"&&V!==null&&A.setEditFormRow(null),V=null,u.element.removeAttribute("data-row-session"),pe.remove();}}}function lr(l,u,f,M,k={}){let C=l.controller,A=u.mode??"cell";u.formLabels&&(f={...f,...u.formLabels});let L=k.isColumnEditable??(g=>C.getColumnModel().getDef(g)?.editable!==false),T=()=>{C.refreshCells(),q.sync(),k.onChange?.(),Z.schedule("footer",()=>C.refreshSummaries());},Z=datagridCore.createDebouncedCommit(150),z=g=>C.getRowByKey(g),H=new datagridCore.EditingEngine({mode:A,messages:f,onChange:T,onAutoSaveFailed:g=>se(g),onCellValueChanged:g=>C.notifyCellValueChanged(g),onEditingStarted:g=>C.notifyEditingStarted(g),onEditingStopped:g=>C.notifyEditingStopped(g),onRowEditingStarted:g=>C.notifyRowEditingStarted(g),onRowEditingStopped:g=>C.notifyRowEditingStopped(g),onChangesChanged:g=>C.notifyChangesChanged(g),editableColumns:g=>{let N=C.getColumnLayout();return [...N.left,...N.center,...N.right].map(D=>D.state.id).filter(D=>!datagridCore.isChromeColumn(D)&&H.canUpdate(g,D))},readValue:(g,N)=>{let D=z(g);return D?C.getColumnModel().getStoredValue(D,N):void 0},formatForEdit:(g,N,D)=>C.formatCellForEdit(N,D),parseFromEdit:(g,N,D)=>C.parseCellFromEdit(N,D,g),readRow:z,isColumnEditable:L,applyValue:(g,N,D)=>C.writeCellValue(g,N,D),storedValue:(g,N,D)=>C.valueAfterWrite(g,N,D),onSave:g=>u.onSave?.(g),...k.engine});C.setPendingValueReader({effectiveValue:(g,N,D)=>H.changes.effectiveValue(g,N,D),effectiveRow:(g,N)=>H.changes.applyPendingTo(g,N),hasPending:()=>H.changes.hasChanges()}),C.setEditingDelegate({startEditingCell:(g,N)=>(C.scrollToCell(g,N),H.beginEdit(g,N)),stopEditing:async g=>{if(H.isEditingRow())return g?(q.cancelRowEdit(),true):q.saveRowEdit();if(!H.getSession())return false;if(g)return H.cancelEdit(),W(),true;let N=H.commitEdit();return N&&W(),N},getEditingCells:()=>{let g=H.getRowSession();if(g)return C.getVisualColumnIds().filter(D=>!datagridCore.isChromeColumn(D)&&H.canUpdate(g.rowKey,D)).map(D=>({rowKey:g.rowKey,columnId:D}));let N=H.getSession();return N?[{rowKey:N.rowKey,columnId:N.columnId}]:[]}});let V=false,ce=[C.events.on("rowsChanged",g=>{V=g.removed===0;}),C.events.on("dataUpdated",()=>{let g=V;V=false,!g&&H.retainKeys(new Set(C.getDataRows().map(N=>N.key)));})];function W(){let g=l.element.querySelector(".kanuni-datagrid-scroller");(g&&g.tabIndex>=0?g:l.element).focus({preventScroll:true});}function se(g){let N=g.columnId!==void 0?C.getColumnModel().getDef(g.columnId)?.headerName??g.columnId:null,D=g.error??f.editSaveFailed;rr({title:f.editCannotSave,message:N?`${N}: ${D}`:D,confirmLabel:f.ok,surfaceClass:M.surfaceClass(),anchor:l.element}),g.rowKey!==void 0&&g.columnId!==void 0&&(C.revealRow(g.rowKey),C.focusCell(g.rowKey,g.columnId));}let ee=(g,N={})=>{let D=H.getSession(),we=D?{rowKey:D.rowKey,columnId:D.columnId}:C.getFocus();if(!we||!H.commitEdit())return false;let me=C.getColumnModel().runtime().filter(_=>_.state.visible).map(_=>_.state.id);if(datagridCore.edgeEditableColumn(me,L,1)===null)return false;let X=C.getRows(),de=X.findIndex(_=>_.key===we.rowKey);if(de<0)return false;let Ce=datagridCore.nextEditableColumn(me,L,we.columnId,g);if(Ce===null){if(N.cycle===false)return false;let _=g;do de+=_;while(de>=0&&de<X.length&&X[de]?.kind!=="data");if(de<0||de>=X.length)return false;Ce=datagridCore.edgeEditableColumn(me,L,g);}let Se=X[de];return !Se||Se.kind!=="data"?false:(C.focusCell(Se.key,Ce),C.scrollToCell(Se.key,Ce),N.open===true?H.beginEdit(Se.key,Ce):(W(),true))},Ee=g=>{if(H.getSession())return false;let N=C.getFocus();if(!N||!L(N.columnId))return false;let D=C.getColumnModel().getEditorDataType(N.columnId);if(D==="boolean"||D==="date")return false;let we=D==="number"?Number.isNaN(Number(g))?null:Number(g):g;return we===null?false:q.rowModeActive?q.openRowFromKeys(N.rowKey,N.columnId,we):(C.scrollToCell(N.rowKey,N.columnId),H.beginEdit(N.rowKey,N.columnId,we))},S=null,O=new Set,J=g=>{let N=()=>{O.delete(N),g();};O.add(N);},ie=()=>{for(let g of [...O])g();O.clear();},j=(g,N)=>{let D=C.getColumnModel().getDef(g.columnId),we=g.node.data;if(D?.renderCell)return D.renderCell({value:N,row:we,node:g.node,column:D});let me=datagridCore.lookupLabel(D,N);if(me!==null)return me;if(D?.valueFormatter){let X=D.valueFormatter(N,we);return typeof X=="string"?X:String(X??"")}return D?.dateFormat&&D.dataType==="date"?datagridCore.formatDateValue(N,D.dateFormat):N==null?"":String(N)},q=ja({grid:l,engine:H,mode:A,t:f,formHeight:u.formHeight,surfaceClass:()=>M.surfaceClass(),barHost:M.barHost,focusGrid:W,trackPortal:J,defaultContent:j,extension:k}),te=g=>{if(g.node.kind!=="data")return;let N=q.renderRowCell(g);if(N!==void 0)return N;if(!H.isEditing(g.node.key,g.columnId)){S&&S.rowKey===g.node.key&&S.columnId===g.columnId&&(S=null);let _=H.getMode()==="cell"?void 0:H.changes.get(g.node.key,g.columnId),ue=k.cellAdornment?.(g)??null;if(!_&&!ue)return;let E=_?_.newValue:g.value,G=document.createElement("span");G.style.display="contents";let oe=j(g,E);return typeof oe=="string"?G.appendChild(document.createTextNode(oe)):G.appendChild(oe),ue&&G.appendChild(ue),G}let D=H.getSession();if(S&&S.rowKey===D.rowKey&&S.columnId===g.columnId)return S.setError(D.validation.message),S.container;let we=C.getColumnModel().getDef(g.columnId),me=k.resolveLookup?.(D.rowKey,g.columnId)??{options:void 0},X=document.createElement("span");X.style.display="contents";let de=k.customEditors?we?.renderEditor:void 0;if(de){let _=new Set,ue=de({value:H.getSession()?.value??D.value,row:H.effectiveRow(D.rowKey),columnId:g.columnId,error:D.validation.message,onErrorChange:E=>(_.add(E),()=>_.delete(E)),setValue:E=>H.setEditValue(E),commit:()=>{H.commitEdit()&&W();},cancel:()=>{H.cancelEdit(),W();}});return X.appendChild(ue),S={rowKey:D.rowKey,columnId:g.columnId,container:X,setError:E=>{for(let G of _)G(E);}},X}let Ce=_=>{X.textContent="",X.appendChild(or({value:H.getSession()?.value??D.value,dataType:C.getColumnModel().getEditorDataType(g.columnId),error:_,seeded:D.seeded,onPortalOpen:J,options:me.options,allowCustom:me.allowCustom,matchMode:me.matchMode,renderLookup:k.renderLookup,dateFormat:we?.dateFormat,ariaLabel:we?.headerName??g.columnId,surfaceClass:M.surfaceClass(),t:f,onChange:ue=>H.setEditValue(ue),onCommit:ue=>{H.commitEdit()&&(ue==="down"&&C.moveFocus("down"),W());},onTab:ue=>{if(u.focusCellOnTab===false){H.commitEdit();return}ee(ue,{open:k.keepEditingOnTab===true,cycle:u.focusCellOnCycle!==false});},onCancel:()=>{H.cancelEdit(),W();}}));};Ce(D.validation.message);let Se=D.validation.message;if(S={rowKey:D.rowKey,columnId:g.columnId,container:X,setError:_=>{if(_===Se)return;Se=_,X.querySelector(".kanuni-datagrid-editor")?.classList.toggle("kanuni-datagrid-editor--invalid",!!_);let E=X.querySelector(".kanuni-datagrid-editor-error");_&&!E&&(E=document.createElement("span"),E.id="kanuni-datagrid-editor-error",E.setAttribute("role","alert"),E.className="kanuni-datagrid-editor-error",X.appendChild(E)),E&&(E.textContent=_??"",_||E.remove());}},me.options===null&&k.resolveLookup){let _=k.resolveLookup,ue=()=>{let G=_(D.rowKey,g.columnId);G.options!==null&&S&&S.rowKey===D.rowKey&&S.columnId===g.columnId&&H.isEditing(D.rowKey,g.columnId)&&(me.options=G.options,Ce(H.getSession()?.validation.message??null));},E=C.events.on("cellsRefreshed",()=>{ue(),_(D.rowKey,g.columnId).options!==null&&E();});}return X},Q=g=>{if(g.node.kind!=="data")return;let N=[];return H.isEditing(g.node.key,g.columnId)&&N.push("kanuni-datagrid-cell--editing"),H.changes.isDirty(g.node.key,g.columnId)&&N.push("kanuni-datagrid-cell--dirty"),H.isRemoved(g.node.key)&&N.push("kanuni-datagrid-cell--removed"),N.length?N.join(" "):void 0},P=g=>{g.node.kind==="data"&&(q.onCellDoubleClick(g)||H.canUpdate(g.node.key,g.columnId)&&(C.scrollToCell(g.node.key,g.columnId),H.beginEdit(g.node.key,g.columnId)));},he=g=>{let N=g.target;return N?.closest?.('[data-testid="dg-edit-form"], [data-testid="dg-row-message"]')?true:(g.key==="Tab"||g.key==="Enter"||g.key===" ")&&!!N?.closest?.('[data-testid="dg-edit-bar"]')},Ne=g=>he(g)?false:q.handleRowKeys(g)?true:g.key==="Escape"&&H.getSession()?(g.preventDefault(),H.cancelEdit(),true):g.key==="Tab"&&u.focusCellOnTab!==false&&!H.getSession()&&C.getFocus()&&ee(g.shiftKey?-1:1,{open:k.keepEditingOnTab===true,cycle:u.focusCellOnCycle!==false})?(g.preventDefault(),true):false,pe=g=>{if(he(g))return false;let N=g.ctrlKey||g.metaKey;if(g.key==="F2"){let D=C.getFocus();if(D)return g.preventDefault(),q.rowModeActive?(q.openRowFromKeys(D.rowKey,D.columnId),true):(C.scrollToCell(D.rowKey,D.columnId),H.beginEdit(D.rowKey,D.columnId),true)}return u.editOnKeyPress!==false&&!N&&!g.altKey&&g.key.length===1&&g.key!==" "&&!H.getSession()&&Ee(g.key)?(g.preventDefault(),true):false};return {engine:H,renderCellContent:te,getCellClassName:Q,onCellDoubleClick:P,handleKeyDown:g=>Ne(g)||pe(g),handleSessionKeys:Ne,handleOpenKeys:pe,editAdjacentCell:ee,focusGrid:W,trackPortal:J,defaultContent:j,renderEditForm:q.renderEditForm,beginRowEdit:q.beginRowEdit,saveRowEdit:q.saveRowEdit,cancelRowEdit:q.cancelRowEdit,saveChanges:q.saveChanges,cancelChanges:q.cancelChanges,dispose:()=>{ie(),q.dispose(),H.dispose(),Z.cancelAll(),ce.forEach(g=>g()),C.setPendingValueReader(null),C.setEditingDelegate(null);}}}function Ja(l,u){return !l||datagridCore.isChromeColumn(u)?false:l.editable!==false&&l.lookup==null&&l.renderEditor==null&&l.allowFormulas!==true}var Qa=["rules","crud","allowAdding","allowUpdating","allowDeleting","onInitNewRow","onRowInserted","onRowUpdated","onRowRemoved","insertKey","appendOnArrowDown","newRowPosition","keepEditingOnTab","commandColumn","commandLabels","confirmDelete","confirmDeleteMessage","range"];var En=60,pr=24,Kd=0,io=36,Rn=28,lo="application/x-kanuni-row",kn=new Map,fr=new Set,si=5e3,jt=0,Pd=["columnStateChanged","sortChanged"],Gd=["columnStateChanged"],$d=["contentReady","viewportChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","cellsRefreshed","findChanged"],w=(l,u="div")=>{let f=document.createElement(u);return f.className=l,f},xn="http://www.w3.org/2000/svg";function Od(l,u){let f=k=>{u&&console.warn(`[datagrid] ${k} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);};if(l.viewportDatasource)throw new Error("[datagrid] viewportDatasource is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.");let M={...l};if(M.dataSource!=null&&!Array.isArray(M.dataSource)&&M.grouping&&(f("grouping a server-side DataSource is"),delete M.grouping),M.columns?.some(k=>k.spanRows)&&(f("cell span/merge (spanRows) is"),M={...M,columns:M.columns.map(k=>k.spanRows?{...k,spanRows:void 0}:k)}),M.tree&&(f("tree data is"),delete M.tree),M.masterDetail&&(f("master-detail is"),delete M.masterDetail),M.grouping){let{groupBy:k,groupSummaries:C}=M.grouping,A=k==null?[]:typeof k=="string"?[k]:k;(A.length>1||C)&&(f("multi-level grouping and group summaries are"),M={...M,grouping:{...M.grouping,groupBy:A.slice(0,1),groupSummaries:false}});}return M}var Bd={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:"",cardView:"",onCardViewChange:"",announcements:"",filterPanelLabels:"",filterIconMode:"",autoSizeStrategy:"",footerMenu:"",showRowCount:"",onOpenFilterBuilder:"",renderOverlay:"",cellMenu:""},so=new Set;function Vd(l){for(let u of Object.keys(l)){let f=Bd[u];f===void 0||f===""||so.has(u)||(so.add(u),console.warn(`[datagrid] \`${u}\` is a React-only option \u2014 ${f}.`));}}function _d(){let l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.setAttribute("width","14"),l.setAttribute("height","14"),l.setAttribute("viewBox","0 0 16 16"),l.setAttribute("aria-hidden","true"),l.setAttribute("focusable","false");let u=document.createElementNS("http://www.w3.org/2000/svg","path");return u.setAttribute("d","M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"),u.setAttribute("fill","none"),u.setAttribute("stroke","currentColor"),u.setAttribute("stroke-width","1.5"),u.setAttribute("stroke-linecap","round"),u.setAttribute("stroke-linejoin","round"),l.appendChild(u),l}function Wd(){let l=document.createElementNS(xn,"svg");l.setAttribute("width","11"),l.setAttribute("height","11"),l.setAttribute("viewBox","0 0 16 16"),l.setAttribute("aria-hidden","true"),l.setAttribute("focusable","false");let u=document.createElementNS(xn,"path");return u.setAttribute("d","M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z"),u.setAttribute("fill","currentColor"),u.setAttribute("stroke","currentColor"),u.setAttribute("stroke-width","0.6"),u.setAttribute("stroke-linejoin","round"),l.appendChild(u),l}function qd(l){let u=document.createElementNS(xn,"svg");u.setAttribute("width","14"),u.setAttribute("height","14"),u.setAttribute("viewBox","0 0 16 16"),u.setAttribute("aria-hidden","true"),u.setAttribute("focusable","false");let f=document.createElementNS(xn,"rect");f.setAttribute("x","2"),f.setAttribute("y","2"),f.setAttribute("width","12"),f.setAttribute("height","12"),f.setAttribute("rx","2"),f.setAttribute("fill","none"),f.setAttribute("stroke","currentColor"),f.setAttribute("stroke-width","1.3"),u.appendChild(f);let M=k=>{let C=document.createElementNS(xn,"path");C.setAttribute("d",k),C.setAttribute("fill","none"),C.setAttribute("stroke","currentColor"),C.setAttribute("stroke-width","1.3"),C.setAttribute("stroke-linecap","round"),u.appendChild(C);};return M("M5 8h6"),l&&M("M8 5v6"),u}function di(l,u){let f=l??(u==="number"||u==="bigint"?"right":"left");return f==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":f==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function ao(l){let u="kanuni-datagrid-root";return l.dark&&(u+=" kanuni-datagrid-dark"),l.theme&&(u+=` kanuni-datagrid-theme-${l.theme}`),l.palette&&(u+=` kanuni-datagrid-palette-${l.palette}`),l.density&&(u+=` kanuni-datagrid-density-${l.density}`),u}function Ud(l,u){let{theme:f,palette:M,density:k,dark:C,striped:A=true,rowNumbers:L=false,locale:T="en",footer:Z=false,footerMenu:z=true,footerPosition:H="bottom",notes:V,pinnedTopRows:ce=[],pinnedBottomRows:W=[],resizable:se=true,reorderable:ee=true,autoHeaderHeight:Ee=false,filterRow:S=false,headerFilter:O=false,filterIconMode:J="hover",filterPanel:ie=false,onOpenFilterBuilder:j,focusedRow:q=false,focusedRowKey:te,onFocusedRowChanged:Q,onRowClick:P,onRowActivate:he,autoSizeStrategy:Ne="none",renderRow:pe,cardView:g,onCardViewChange:N,announcements:D=true,filterPanelLabels:we,showRowCount:me=false,toolbarColumnChooser:X=false,cellMenu:de=true,rowMenu:Ce,headerMenu:Se,rowDrag:_,alignedGrids:ue,printLayout:E,renderCellContent:G,getCellClassName:oe,getRowStatusSource:ve,rowStatus:Re,onCellPointerDown:ye,onCellPointerEnter:Ie,onCellDoubleClick:ht,editing:_e,onHeaderClick:Ct,getHeaderClassName:xe,renderHeaderLabel:We,renderDetail:gr,renderEditForm:mr,enterpriseEdition:vt=false,stateStoring:br,tooltip:et=true,renderOverlay:uo,filterDebounce:ui,toolbar:wr=false,highlightSearch:ci=true,sortable:yr=true,toolbarItemsAfter:pi,toolbarItemsBefore:fi,toolbarExcel:gi=false,toolbarPdf:mi=false,searchDebounce:bi=200,...wi}=u;Vd(u),me&&!so.has("showRowCount:deprecated")&&(so.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 h=datagridCore.getGridDictionary(T),{emptyText:yi=h.noData,loadingText:hi=h.busy,loadingOverlay:co=true,...Qe}=wi,hr=typeof co=="number"?co:300,po=datagridCore.summaryTypeLabels(h),Cr=datagridCore.datePeriodLabels(h);if((!Qe.columns||Qe.columns.length===0)&&u.autoColumns!==false){let e=Array.isArray(Qe.dataSource)?Qe.dataSource:[];Qe.columns=datagridCore.inferColumns(e,typeof u.autoColumns=="object"?u.autoColumns:{});}Qe.rowHeight===void 0&&(Qe.rowHeight=datagridCore.presetRowHeight(f,k,28));let Ci=vt?Qe:Od(Qe,!!u.debugMode),It=vt?V:void 0;!vt&&V&&u.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(Ci);a.setEnterpriseEdition(vt);let Ht=_e!=null&&typeof _e=="object"&&_e.enabled!==false,Ze=null;if(Ht&&u.debugMode)for(let e of Qa)_e[e]!==void 0&&console.warn(`[datagrid] editing.${e} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);let rn=Ht?e=>Ze?.renderCellContent(e)??G?.(e):G,fo=Ht?e=>{let t=Ze?.getCellClassName(e),o=oe?.(e);return t&&o?`${t} ${o}`:t??o}:oe,vr=Ht?e=>{ht?.(e),Ze?.onCellDoubleClick(e);}:ht,vi=Ht?(e,t)=>Ze?.renderEditForm(e,t)??mr?.(e,t)??"":mr,tt=datagridCore.normalizeRowStatus(Re);te!=null&&a.focusRow(te);let B=w(ao(u));datagridCore.registerPortalContainer(B,u.portalContainer),B.style.height="100%",B.setAttribute("role","grid"),B.setAttribute("aria-label",u.ariaLabel??u.gridId),B.setAttribute("data-grid-id",u.gridId),datagridCore.isRtlLocale(T)&&B.setAttribute("dir","rtl"),f&&B.setAttribute("data-theme",f),Ee&&B.setAttribute("data-auto-header-height",""),B.style.setProperty("--dg-row-height",`${a.getRowHeight()}px`);let ae=w("kanuni-datagrid-scroller"),He=w("kanuni-datagrid-canvas"),Me=w("kanuni-datagrid-header");Me.setAttribute("role","row");let $e=w("kanuni-datagrid-rows");$e.style.position="relative";let fe=w("kanuni-datagrid-viewport");$e.appendChild(fe);let nt=w("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--top"),kt=w("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--bottom"),Ft=()=>ce.length+a.getPinnedRows("top").length,kr=()=>W.length+a.getPinnedRows("bottom").length,qe=w("kanuni-datagrid-sticky-groups");qe.setAttribute("aria-hidden","true");let ot=Z,ut=H==="top",Oe=w(`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${ut?"top":"bottom"}`);if(Oe.setAttribute("role","row"),Oe.setAttribute("aria-label",h.columnTotalsAria),z){let e=t=>{let n=t.target?.closest(".kanuni-datagrid-footer-cell")?.getAttribute("data-column-id");!n||datagridCore.isChromeColumn(n)||(t.preventDefault(),Zi(n,{left:t.clientX,top:t.clientY}));};Oe.addEventListener("click",e),Oe.addEventListener("contextmenu",e);}let Tn=w("kanuni-datagrid-bands-host");Tn.style.display="contents";let Et=w("kanuni-datagrid-filter-row");Et.setAttribute("role","row"),He.append(Tn,Me),S&&He.append(Et);let Kt=S?2:1,go=0,mo=()=>go+Kt+Ft();Oe.style.setProperty("--dg-pinned-gap",String(ut?Kt:0)),nt.style.setProperty("--dg-pinned-gap",String(Kt+(ot&&ut?1:0))),ot&&ut&&He.append(Oe),Ft()>0&&He.append(nt),a.hasStickyGroupHeaders()&&(qe.style.setProperty("--dg-pinned-gap",String(Kt+(ot&&ut?1:0))),qe.style.setProperty("--dg-sticky-below",`${Ft()>0?Ft()*a.getRowHeight()+1:0}px`),He.append(qe)),He.append($e),kr()>0&&He.append(kt),ot&&!ut&&He.append(Oe),ae.appendChild(He);let ct=w("kanuni-datagrid-toolbar"),rt=w("kanuni-datagrid-pager");rt.setAttribute("role","navigation"),rt.setAttribute("aria-label",h.pagerAria);let Pt=w("kanuni-datagrid-filter-panel"),Gt=!!Qe.grouping?.panel,Ue=w("kanuni-datagrid-group-panel"),an=datagridCore.resolveCardView(g),ln=false,Sn=[],Rt=pe,dn=w("kanuni-datagrid-cardbar");dn.hidden=true;let Er=w("kanuni-datagrid-cardbar-label","label"),Rr=w("","span");Rr.textContent=h.cardSortBy;let at=w("kanuni-datagrid-cardbar-select","select"),$t=w("kanuni-datagrid-cardbar-dir","button");$t.type="button",Er.append(Rr,at),dn.append(Er,$t),at.addEventListener("change",()=>{let e=a.getSort()[0];a.setSort(at.value?[{columnId:at.value,direction:e?.direction??"asc"}]:[]);}),$t.addEventListener("click",()=>{let e=a.getSort()[0];e&&a.setSort([{columnId:e.columnId,direction:e.direction==="desc"?"asc":"desc"}]);});let ki=e=>{let[t,...o]=datagridCore.cardFields(a.getColumnModel(),Sn,e.row),n=w("kanuni-datagrid-card");n.setAttribute("role","gridcell");let i=w("kanuni-datagrid-card-title");if(i.textContent=t?.text??"",n.appendChild(i),o.length){let d=w("kanuni-datagrid-card-fields","dl");for(let s of o){let r=w("kanuni-datagrid-card-field"),c=w("","dt");c.textContent=s.label;let p=w("","dd");p.textContent=s.text,r.append(c,p),d.appendChild(r);}n.appendChild(d);}return n},xr=()=>{if(!ln||!an)return;let e=a.getColumnModel(),t=datagridCore.cardColumnIds(e,an);t.join("\0")!==Sn.join("\0")&&(Sn=t,a.setDataRowHeight(datagridCore.cardHeight(t.length)));let o=yr?e.getOrder().filter(s=>e.getState(s)?.visible!==false&&e.getDef(s)?.sortable!==false):[];dn.hidden=o.length===0;let n=["",...o].join("\0");if(at.dataset.ids!==n){at.dataset.ids=n,at.replaceChildren();let s=document.createElement("option");s.value="",s.textContent=h.none,at.appendChild(s);for(let r of o){let c=document.createElement("option");c.value=r,c.textContent=e.getDef(r)?.headerName??r,at.appendChild(c);}}let i=a.getSort()[0];at.value=i?.columnId??"",$t.hidden=!i;let d=i?.direction==="desc";$t.textContent=d?"\u2193":"\u2191",$t.setAttribute("aria-label",d?h.sortAsc:h.sortDesc),$t.title=d?h.sortAsc:h.sortDesc;},Tr=false,Ei=e=>{let t=datagridCore.showsCards(e,an);if(t!==ln){for(ln=t,B.classList.toggle("kanuni-datagrid-cards",t),Rt=t?ki:pe,Sn=[],t?xr():(dn.hidden=true,a.setDataRowHeight(null));gt.length;)gt.pop().root.remove();Gn(),Tr?N?.(t):queueMicrotask(()=>N?.(t));}};wr&&B.appendChild(ct),Gt&&B.appendChild(Ue),an&&B.appendChild(dn),B.appendChild(ae),ie&&B.appendChild(Pt);let Ln=Qe.pagination;Ln&&Ln.enabled!==false&&B.appendChild(rt);let sn=w("kanuni-datagrid-loading-overlay"),Sr=w("kanuni-datagrid-loading-card"),Lr=w("kanuni-datagrid-loading-spinner","span");Lr.setAttribute("aria-hidden","true");let Ar=w("kanuni-datagrid-loading-label","span");Ar.textContent=hi,Sr.append(Lr,Ar),sn.appendChild(Sr),sn.style.display="none";let un=w("kanuni-datagrid-sr-only","div");un.setAttribute("role","status"),un.setAttribute("aria-live","polite"),un.setAttribute("aria-atomic","true");let An=w("kanuni-datagrid-empty");An.textContent=yi,An.style.display="none",B.append(sn,An),D&&B.appendChild(un),l.appendChild(B);let cn=Qe.selection,bo=a.getGroupDisplay()!=="fullWidth",Mr=a.getGroupDisplay()==="column",Xt=(cn?.mode??"none")!=="none"&&(cn?.checkboxColumn??false),Ri=(cn?.rowClick??(Xt?"toggle":"replace"))==="toggle",Jt=a.hasMasterDetail()&&!!gr,wo=()=>(L?1:0)+(Jt?1:0)+(Xt?1:0),yo=tt?.icons===true,Dr=yo?pr:0,ho=Dr,Co=ho+(L?En:0),Nr=Co+(Jt?Rn:0),it=Dr+(L?En:0)+(Jt?Rn:0)+(Xt?io:0);a.setLeadWidth(it);let pn=!!_?.enabled,fn=_?.group??null,Ir=_?.allowReordering??true,Hr=_?.allowDropInsert??fn!==null,pt=null,Mn=null,Dn=false,Ot=null,xt=null;function Qt(e){Ot=e;for(let t of fe.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 Fr=(e,t)=>{let o=t.getBoundingClientRect();return e.clientY<o.top+o.height/2?"before":"after"},Kr=e=>e.dataTransfer?.types.includes(lo)?pt!==null?Ir:Hr&&fn!==null:false;function Pr(e,t,o){let n=null;try{let i=e.dataTransfer?.getData(lo);n=i?JSON.parse(i):null;}catch{n=null;}if(n){if(n.gridId===a.gridId){if(!Ir)return;if(_?.onReorder){_.onReorder({dragKey:n.rowKey,targetKey:t,position:o,row:a.getRowByKey(n.rowKey)});return}a.moveRow(n.rowKey,t,o);return}!Hr||fn===null||n.group!==fn||_?.onAdd?.({row:n.row,rowKey:n.rowKey,otherGridId:n.gridId,targetKey:t,position:o});}}let xi=e=>{let t=Lt(e);if(!t||t.node.kind!=="data"||!e.dataTransfer)return;pt=t.node.key,Mn=t.node.key,Dn=false;let o={gridId:a.gridId,group:fn,rowKey:t.node.key,row:t.node.data};e.dataTransfer.setData(lo,JSON.stringify(o)),e.dataTransfer.setData("text/plain",String(t.node.key)),e.dataTransfer.effectAllowed="move",a.notifyRowDrag("enter",{rowKey:t.node.key});},Ti=e=>{if(!Kr(e))return;e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move");let t=Lt(e);if(!t||t.node.kind!=="data")return;if(pt===t.node.key){xt=null,Qt(null);return}let o=e.target.closest(".kanuni-datagrid-row"),n=Fr(e,o),i=Ot?.key!==t.node.key||Ot.side!==n;xt={key:t.node.key,side:n},Qt({key:t.node.key,side:n}),i&&pt!==null&&a.notifyRowDrag("move",{rowKey:pt,overKey:t.node.key,position:n});},Si=e=>{if(!Kr(e)){Qt(null);return}e.preventDefault();let t=Lt(e);if(Dn=true,t&&t.node.kind==="data"){let o=e.target.closest(".kanuni-datagrid-row"),n=Fr(e,o);xt={key:t.node.key,side:n},Pr(e,t.node.key,n);}else xt=null,Pr(e,null,"after");pt=null,Qt(null);},Li=()=>{Mn!==null&&a.notifyRowDragEnd({rowKey:Mn,dropped:Dn,overKey:xt?.key??null,position:xt?.side??null}),Dn=false,Mn=null,pt=null,xt=null,Qt(null);},Ai=e=>{let t=e.relatedTarget;t&&$e.contains(t)||pt!==null&&(xt=null,Qt(null),a.notifyRowDrag("leave",{rowKey:pt}));},Bt=E===void 0||E===false?null:(()=>{let e=E===true?{}:E;return {always:e.always??false,maxRows:e.maxRows??si,onLimit:e.onLimit}})(),Zt=false;function vo(e){Zt!==e&&(Zt=e,B.classList.toggle("kanuni-datagrid-print",e),e?(jt++,document.documentElement.classList.add("kanuni-datagrid-printing")):(jt--,jt<=0&&(jt=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),Gn());}let Gr=null;if(Bt&&!Bt.always){let e=()=>{let o=a.getRows().length;if(o>Bt.maxRows){a.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${o} rows exceeds maxRows (${Bt.maxRows}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`),Bt.onLimit?.({rows:o,maxRows:Bt.maxRows});return}vo(true);},t=()=>vo(false);window.addEventListener("beforeprint",e),window.addEventListener("afterprint",t),Gr=()=>{window.removeEventListener("beforeprint",e),window.removeEventListener("afterprint",t);};}let ft=0,lt=[],ze=0,ko=0;function Eo(){let e=a.getColumnLayout(),t=a.getVirtualWindow().columns,o=[],n=(d,s,r,c)=>{let p=d.def;o.push({def:p,id:d.state.id,width:d.state.width,pinned:s,inset:r,className:di(p.align,p.dataType)+(s?" kanuni-datagrid-cell--pinned":"")+(p.autoHeight?" kanuni-datagrid-cell--wrap":""),visualIndex:c});};e.left.forEach((d,s)=>n(d,"left",e.leftOffsets[s]+it,s));for(let d=t.start;d<t.end&&d<e.center.length;d++)n(e.center[d],null,0,e.left.length+d);e.right.forEach((d,s)=>n(d,"right",e.rightOffsets[s],e.left.length+e.center.length+s)),lt=o,ze=t.offsetX;let i=(e.centerOffsets[Math.min(t.end,e.center.length)]??0)-(e.centerOffsets[Math.min(t.start,e.center.length)]??0);ko=Math.max(0,e.centerWidth-t.offsetX-i),He.style.minWidth=`${e.totalWidth+it}px`;}let Nn=26;function Mi(){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(go=n,Tn.textContent="",Me.style.top=`${n*Nn}px`,B.style.setProperty("--dg-band-offset",`${n*Nn}px`),n===0)return;datagridCore.computeHeaderBands(o,n).forEach((d,s)=>{let r=w("kanuni-datagrid-band-row");if(r.style.top=`${s*Nn}px`,r.style.height=`${Nn}px`,it>0){let c=w("kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned");c.style.width=`${it}px`,c.style.flex="none",c.style.insetInlineStart="0px",r.appendChild(c);}if(ze>0){let c=w("kanuni-datagrid-spacer");c.style.width=`${ze}px`,c.style.flex="none",r.appendChild(c);}for(let c of d){let p=w(`kanuni-datagrid-band-cell${c.spacer?" kanuni-datagrid-band-cell--spacer":""}`);if(p.style.width=`${c.width}px`,p.style.flex="none",!c.spacer){if(c.columnIds.length>0){let b=datagridCore.bandPath(a.getColumnModel().getDef(c.columnIds[0])).slice(0,s+1);if(b.length===s+1&&a.isBandCollapsible(b)){let R=a.isBandCollapsed(b),F=document.createElement("button");F.type="button",F.className="kanuni-datagrid-band-toggle",F.setAttribute("aria-expanded",String(!R));let K=R?h.expandColumnGroup:h.collapseColumnGroup;F.setAttribute("aria-label",K),F.title=K,F.appendChild(qd(R)),F.addEventListener("click",I=>{I.stopPropagation(),a.toggleBand(b);}),p.appendChild(F);}}let v=w("kanuni-datagrid-band-label","span");v.textContent=c.label,p.appendChild(v);}r.appendChild(p);}Tn.appendChild(r);});}let en=null,In=null;function Hn(e,t){In&&In!==e&&In.classList.remove("kanuni-datagrid-header-cell--drop-before","kanuni-datagrid-header-cell--drop-after"),In=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 $r(){if(!en)return;let e=a.getSelectedCount(),t=a.getSelectableCount(),o=t>0&&e>=t;en.checked=o,en.indeterminate=!o&&e>0,en.disabled=t===0&&e===0;}let gn=null;function Or(e){gn=e;for(let t of Array.from(Me.querySelectorAll(".kanuni-datagrid-header-cell[data-column-id]")))t.tabIndex=t.getAttribute("data-column-id")===e?0:-1;}function Ro(){Mi();let e=document.activeElement,t=e&&Me.contains(e)?e.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null,o=a.getColumnLayout(),n=[...o.left,...o.center,...o.right].map(r=>r.state.id);(!gn||!n.includes(gn))&&(gn=n[0]??null);let i=a.getSort(),d=new Map(i.map((r,c)=>[r.columnId,{direction:r.direction,order:c}]));if(Me.textContent="",en=null,yo){let r=w("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-status-cell");r.setAttribute("role","presentation"),r.setAttribute("aria-hidden","true"),r.style.width=`${pr}px`,r.style.flex="none",r.style.insetInlineStart="0px",Me.appendChild(r);}if(L){let r=w("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell");r.setAttribute("role","columnheader"),r.style.width=`${En}px`,r.style.flex="none",r.style.insetInlineStart=`${ho}px`,Me.appendChild(r);}if(Jt){let r=w("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell");r.setAttribute("role","columnheader"),r.setAttribute("aria-label",h.detailsAria),r.style.width=`${Rn}px`,r.style.flex="none",r.style.insetInlineStart=`${Co}px`,Me.appendChild(r);}if(Xt){let r=w("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell");r.setAttribute("role","columnheader"),r.style.width=`${io}px`,r.style.flex="none",r.style.insetInlineStart=`${Nr}px`;let c=document.createElement("input");c.type="checkbox",c.setAttribute("aria-label",h.selectAllRows),c.addEventListener("change",()=>{a.getSelectedCount()>0?a.clearSelection():a.selectAll();}),r.appendChild(c),Me.appendChild(r),en=c,$r();}let s=false;for(let r of lt){if(!r.pinned&&!s){if(ze>0){let y=document.createElement("div");y.style.flex=`0 0 ${ze}px`,Me.appendChild(y);}s=true;}let c=yr&&r.def.sortable!==false,p=r.id===datagridCore.GROUP_COLUMN_ID,v=d.get(p?a.getGroupLevels()[0]??r.id:r.id),b=w(`kanuni-datagrid-header-cell${c?" kanuni-datagrid-header-cell--sortable":""}${r.pinned?" kanuni-datagrid-header-cell--pinned":""}${r.def.wrapHeaderText?" kanuni-datagrid-header-cell--wrap":""}`);b.setAttribute("role","columnheader"),b.setAttribute("data-column-id",r.id),b.tabIndex=r.id===gn?0:-1,b.addEventListener("focus",()=>Or(r.id)),b.setAttribute("aria-sort",v?v.direction==="asc"?"ascending":"descending":"none");let R=r.def.headerTooltip;R&&(b.title=R),b.style.width=`${r.width}px`,b.style.flex="none",r.pinned==="left"&&(b.style.insetInlineStart=`${r.inset}px`),r.pinned==="right"&&(b.style.insetInlineEnd=`${r.inset}px`);let F=w("kanuni-datagrid-header-label","span");F.id=`${encodeURIComponent(u.gridId)}-hdr-${encodeURIComponent(r.id)}`,b.setAttribute("aria-labelledby",F.id);let K=We?.(r.id);if(K)F.appendChild(K);else if(r.def.renderHeader){let y=r.def.renderHeader({column:r.def});typeof y=="string"?F.textContent=y:F.appendChild(y);}else F.textContent=r.def.headerName??r.id;if(b.appendChild(F),v){let y=w("kanuni-datagrid-sort-indicator","span");if(y.setAttribute("aria-hidden","true"),y.textContent=v.direction==="asc"?"\u25B2":"\u25BC",b.appendChild(y),i.length>1&&!p){let $=w("kanuni-datagrid-sort-order","span");$.setAttribute("aria-hidden","true"),$.textContent=String(v.order+1),b.appendChild($);}}if(c||Ct){let y=r.id;b.addEventListener("click",$=>{Ct?.(y,$)||c&&a.toggleSort(y,$.shiftKey);});}let I=Se!==false&&!datagridCore.isChromeColumn(r.id);if(I){let y=r.id;b.addEventListener("contextmenu",$=>{$.preventDefault(),aa(y,{left:$.clientX,top:$.clientY});});}let m=null;if(O&&r.def.filterable!==false){m=document.createElement("button"),m.type="button",m.tabIndex=-1;let y=a.getColumnFilter(r.id)!==null;m.className=`kanuni-datagrid-filter-button${y?" kanuni-datagrid-filter-button--active":""}${J==="always"?" kanuni-datagrid-filter-button--pinned":""}`,m.setAttribute("aria-haspopup","dialog"),m.setAttribute("aria-label",datagridCore.fillText(h.filterPopupAria,{column:r.def.headerName??r.id})),m.appendChild(Wd());let $=m;m.addEventListener("click",Y=>{Y.stopPropagation(),oa(r.id,$);}),b.appendChild(m);}if(b.addEventListener("keydown",y=>{let $=n.indexOf(r.id),Y;if(y.key==="ArrowRight")Y=n[Math.min(n.length-1,$+1)];else if(y.key==="ArrowLeft")Y=n[Math.max(0,$-1)];else if(y.key==="Home")Y=n[0];else if(y.key==="End")Y=n[n.length-1];else if(m&&y.altKey&&y.key==="ArrowDown")oa(r.id,m);else if(c&&(y.key==="Enter"||y.key===" "))a.toggleSort(r.id,y.shiftKey);else if(I&&(y.key==="ContextMenu"||y.key==="F10"&&y.shiftKey)){let ge=b.getBoundingClientRect();aa(r.id,{left:ge.left,top:ge.bottom});}else return;y.preventDefault(),y.stopPropagation(),Y&&Y!==r.id&&(Or(Y),Io(Y)?.focus());}),ee&&r.def.reorderable!==false&&(b.draggable=true,b.addEventListener("dragstart",y=>{y.dataTransfer?.setData("text/x-kanuni-column",r.id),y.dataTransfer&&(y.dataTransfer.effectAllowed="move");}),b.addEventListener("dragover",y=>{if(!y.dataTransfer?.types.includes("text/x-kanuni-column"))return;y.preventDefault();let $=b.getBoundingClientRect(),Y=y.clientX<$.left+$.width/2;Hn(b,Y?"before":"after");}),b.addEventListener("dragleave",y=>{let $=y.relatedTarget;(!$||!b.contains($))&&Hn(null,"before");}),b.addEventListener("drop",y=>{Hn(null,"before");let $=y.dataTransfer?.getData("text/x-kanuni-column");if(!$||$===r.id)return;y.preventDefault();let Y=b.getBoundingClientRect();if(y.clientX<Y.left+Y.width/2)a.moveColumn($,r.id);else {let Pe=lt.findIndex(re=>re.id===r.id);a.moveColumn($,lt[Pe+1]?.id);}}),b.addEventListener("dragend",()=>Hn(null,"before"))),se&&r.def.resizable!==false){let y=w("kanuni-datagrid-resize-handle","span");y.setAttribute("data-resize-handle",r.id),y.setAttribute("role","presentation"),y.addEventListener("click",$=>$.stopPropagation()),y.addEventListener("dblclick",$=>{$.stopPropagation(),tl(r.id);}),y.addEventListener("pointerdown",$=>{$.preventDefault(),$.stopPropagation();let Y=$.clientX,ge=r.width,Pe=getComputedStyle(b).direction==="rtl"?-1:1;b.draggable=false;let re=ge,ke=false,Ve=dt=>{ke=true,re=ge+(dt.clientX-Y)*Pe,a.setColumnWidth(r.id,re,false);},bt=()=>{window.removeEventListener("pointermove",Ve),window.removeEventListener("pointerup",bt),window.removeEventListener("pointercancel",bt),ke&&a.setColumnWidth(r.id,re,true),b.draggable=ee&&r.def.reorderable!==false;};window.addEventListener("pointermove",Ve),window.addEventListener("pointerup",bt),window.addEventListener("pointercancel",bt);}),b.appendChild(y);}Me.appendChild(b);}t&&Io(t)?.focus({preventScroll:true});}let Br=null,Fn=null;function Di(e){if(e===Br)return;Br=e;let t=[];for(let o=0;o<e.length;o++){let n=e[o];n&&n.kind!=="data"&&t.push(o);}Fn=t.length>0?t:null;}function Ni(e){if(!Fn)return e+1;let t=0,o=Fn.length;for(;t<o;){let n=t+o>>1;Fn[n]<=e?t=n+1:o=n;}return e+1-t}let gt=[];function Kn(e="data"){let t=w("kanuni-datagrid-row");if(t.setAttribute("role","row"),e==="loading"){t.classList.add("kanuni-datagrid-row--loading"),t.setAttribute("aria-busy","true");let p=w("kanuni-datagrid-cell kanuni-datagrid-loading-cell");return p.setAttribute("role","gridcell"),p.setAttribute("aria-colindex","1"),p.appendChild(w("kanuni-datagrid-loading-bar","span")),t.appendChild(p),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:ft}}if(e==="data"&&bo&&t.addEventListener("click",()=>{if(!t.classList.contains("kanuni-datagrid-group-row--aligned"))return;let p=t.getAttribute("data-group-key");p!==null&&a.toggleGroup(p);}),e==="panel"){let p=document.createElement("div");return p.setAttribute("role","gridcell"),p.setAttribute("aria-colindex","1"),t.appendChild(p),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,panelCell:p,epoch:ft}}if(e==="group"){let p=w("kanuni-datagrid-group-cell");p.setAttribute("role","gridcell"),p.setAttribute("aria-colindex","1");let v=w("kanuni-datagrid-group-twisty","span");v.setAttribute("aria-hidden","true");let b=w("kanuni-datagrid-group-caption","span"),R=w("kanuni-datagrid-group-label","span"),F=w("kanuni-datagrid-group-count","span"),K=w("kanuni-datagrid-group-aggregates","span"),I=null;return Xt&&cn?.mode==="multiple"&&(I=document.createElement("input"),I.type="checkbox",I.className="kanuni-datagrid-group-checkbox",I.tabIndex=-1,I.addEventListener("change",()=>{let m=t.getAttribute("data-group-key");m!==null&&a.toggleGroupSelection(m);}),I.addEventListener("click",m=>m.stopPropagation()),I.addEventListener("mousedown",m=>m.stopPropagation()),p.appendChild(I)),p.append(v,b,R,F,K),t.appendChild(p),t.addEventListener("click",()=>{let m=t.getAttribute("data-group-key");m!==null&&a.toggleGroup(m);}),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,group:{cell:p,check:I,twisty:v,caption:b,label:R,count:F,aggregates:K},epoch:ft}}if(pn){let p=w("kanuni-datagrid-row-grip","span");p.setAttribute("aria-hidden","true"),p.title=h.dragToReorder??"Drag to reorder",p.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>',p.addEventListener("mouseenter",()=>{t.draggable=true;}),p.addEventListener("mouseleave",()=>{t.draggable=false;}),t.appendChild(p);}if(Rt)return {kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:ft};if(yo){let p=w("kanuni-datagrid-cell kanuni-datagrid-cell--pinned kanuni-datagrid-status-cell");p.setAttribute("role","presentation"),p.setAttribute("aria-hidden","true"),p.style.width=`${pr}px`,p.style.flex="none",p.style.insetInlineStart="0px",p.appendChild(w("kanuni-datagrid-status-icon","span")),t.appendChild(p);}let o=null;L&&(o=w("kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell"),o.setAttribute("role","gridcell"),o.setAttribute("aria-colindex","1"),o.style.width=`${En}px`,o.style.flex="none",o.style.insetInlineStart=`${ho}px`,t.appendChild(o));let n=null;if(Jt){let p=w("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell");p.setAttribute("role","gridcell"),p.setAttribute("aria-colindex",String((L?1:0)+1)),p.style.width=`${Rn}px`,p.style.flex="none",p.style.insetInlineStart=`${Co}px`;let v=document.createElement("button");v.type="button",v.className="kanuni-datagrid-detail-toggle",v.tabIndex=-1,v.addEventListener("click",b=>{b.stopPropagation();let R=t.getAttribute("data-row-key");if(R===null)return;let F=a.getRows().find(K=>K!==void 0&&String(K.key)===R);F&&F.kind==="data"&&a.toggleDetail(F.key);}),v.addEventListener("mousedown",b=>b.stopPropagation()),p.appendChild(v),t.appendChild(p),n=v;}let i=null;if(Xt){let p=w("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell");p.setAttribute("role","gridcell"),p.setAttribute("aria-colindex",String((L?1:0)+(Jt?1:0)+1)),p.style.width=`${io}px`,p.style.flex="none",p.style.insetInlineStart=`${Nr}px`;let v=document.createElement("input");v.type="checkbox",v.tabIndex=-1;let b=()=>{let R=t.getAttribute("data-row-key");if(R===null)return;let F=a.getRows().find(K=>K!==void 0&&String(K.key)===R);F?.kind==="group"?a.toggleGroupSelection(String(F.key)):F&&a.toggleRow(F.key);};p.addEventListener("mousedown",R=>R.stopPropagation()),p.addEventListener("click",R=>{R.target.tagName!=="INPUT"&&(R.stopPropagation(),b());}),v.addEventListener("change",b),v.addEventListener("click",R=>R.stopPropagation()),v.addEventListener("mousedown",R=>R.stopPropagation()),p.appendChild(v),t.appendChild(p),i=v;}let d=[],s=null,r=false;for(let p of lt){!p.pinned&&!r&&(s=document.createElement("div"),s.style.flex=`0 0 ${ze}px`,t.appendChild(s),r=true);let v=w(p.className);v.setAttribute("role","gridcell"),v.setAttribute("data-column-id",p.id),v.style.width=`${p.width}px`,v.style.flex="none",p.pinned==="left"&&(v.style.insetInlineStart=`${p.inset}px`),p.pinned==="right"&&(v.style.insetInlineEnd=`${p.inset}px`),t.appendChild(v),d.push({el:v,slot:p});}let c=document.createElement("div");return c.style.flex=`0 0 ${ko}px`,t.appendChild(c),{kind:e,root:t,cells:d,rowNumberCell:o,selectInput:i,detailToggle:n,leadingSpacer:s,trailingSpacer:c,epoch:ft}}let tn="";function mn(e,t){if(tn===""||t===""){e.textContent=t;return}let o=datagridCore.foldText(t),n=o.indexOf(tn);if(n===-1){e.textContent=t;return}let i=[],d=0;for(;n!==-1;){n>d&&i.push(document.createTextNode(t.slice(d,n)));let r=document.createElement("mark");r.className="kanuni-datagrid-highlight",r.textContent=t.slice(n,n+tn.length),i.push(r),d=n+tn.length,n=o.indexOf(tn,d);}d<t.length&&i.push(document.createTextNode(t.slice(d)));let s=document.createElement("span");s.className="kanuni-datagrid-cell-text",s.append(...i),e.replaceChildren(s);}function Vr(e,t,o){let n=a.getColumnModel().getCellValue(o.data,t.id),i=t.def;if(i.renderCell){let r=i.renderCell({value:n,row:o.data,node:o,column:i});typeof r=="string"?e.textContent=r:e.replaceChildren(r);return}let d=datagridCore.lookupLabel(i,n);if(d!==null){mn(e,d);return}if(i.valueFormatter){let r=i.valueFormatter(n,o.data);mn(e,typeof r=="string"?r:String(r??""));return}if(i.dateFormat&&i.dataType==="date"){mn(e,datagridCore.formatDateValue(n,i.dateFormat));return}let s=datagridCore.numberCellText(i,n);if(s!==null){mn(e,s);return}mn(e,n==null?"":String(n));}function Ii(e,t){return e.kind==="group"&&!t.group}function Hi(e,t,o){let n=t?.lead??null;if(!n||!e.leadingSpacer||o.kind!=="data"){e.leadCell?.remove(),e.leadCell=null;return}let i=a.getColumnLayout(),d=n.column.def,s={def:d,id:n.column.state.id,width:n.width,className:di(d.align,d.dataType),visualIndex:i.left.length+i.center.indexOf(n.column)},r=e.leadCell??w(s.className);e.leadCell=r,r.className=s.className,r.setAttribute("role","gridcell"),r.setAttribute("data-column-id",s.id),r.setAttribute("aria-colspan",String(t.spans.get(s.id)??1)),r.setAttribute("aria-colindex",String(wo()+s.visualIndex+1)),r.id=`${u.gridId}-cell-${String(o.key)}-${s.id}`,r.style.width=`${n.width}px`,r.style.flex="none",e.leadingSpacer.nextSibling!==r&&e.leadingSpacer.after(r),Vr(r,s,o);}function Fi(e){let t=document.createElement("div");t.className="kanuni-datagrid-row-message",t.setAttribute("data-testid","dg-row-message"),t.innerHTML='<svg class="kanuni-datagrid-row-message-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M8 1.5 15 14H1z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/><path d="M8 6v3.5M8 11.6v.4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>';let o=document.createElement("span");o.className="kanuni-datagrid-row-message-text",o.textContent=e.text,o.title=e.text,t.appendChild(o);let n=(i,d,s)=>{let r=document.createElement("button");r.type="button",r.className="kanuni-datagrid-row-message-button",r.setAttribute("data-testid",i),r.textContent=d,r.addEventListener("click",s),t.appendChild(r);};return e.retry&&n("dg-row-retry",h.rowStatusRetry,e.retry),e.remove&&n("dg-row-delete",h.rowStatusDelete,e.remove),t}function _r(){if(!tt?.messages)return;let e=Ze?.engine??ve?.()??null,t=tt.get,o=datagridCore.rowMessageKeys(tt,e).filter(n=>{if(!t)return true;let i=a.getDataRowNode(n)?.data;if(i===void 0)return true;let d=t({row:i,rowKey:n});return d===void 0||d==="error"});a.setMessageRows(o,a.getRowHeight());}function Wr(e,t){let o=tt&&t?.kind==="data"?datagridCore.resolveRowStatus(tt,t.data,t.key,Ze?.engine??ve?.()??null):null,n=e.getAttribute("data-row-status");if(n!==null&&e.classList.remove(`kanuni-datagrid-row--status-${n}`,"kanuni-datagrid-row--status-tint","kanuni-datagrid-row--status-strike"),!o){if(n===null)return;e.removeAttribute("data-row-status"),e.removeAttribute("aria-description"),e.removeAttribute("aria-busy"),e.removeAttribute("aria-invalid");return}e.setAttribute("data-row-status",o.status),e.classList.add(...datagridCore.rowStatusClassName(o.status,tt.tint,tt.strike).split(" ")),e.setAttribute("aria-description",datagridCore.rowStatusDescription(o,h)),o.status==="saving"?e.setAttribute("aria-busy","true"):e.removeAttribute("aria-busy"),o.status==="error"?e.setAttribute("aria-invalid","true"):e.removeAttribute("aria-invalid");}function xo(e,t,o){let n=e.root;if(n.setAttribute("aria-rowindex",String(o+1+mo())),n.setAttribute("data-row-key",String(t.key)),t.kind==="message"){let m=e.panelCell;n.className="kanuni-datagrid-row kanuni-datagrid-message-row",n.style.height=`${t.height}px`,n.style.display="",n.setAttribute("data-message-for",String(t.parentKey)),n.removeAttribute("data-detail-for"),n.removeAttribute("data-editform-for"),n.removeAttribute("data-panel-for"),m.className="kanuni-datagrid-message-cell";let y=tt?datagridCore.rowMessageModel(tt,t.parentKey,t.data,Ze?.engine??ve?.()??null,h):null,$=y?`${String(t.parentKey)}|${y.text}|${y.retry?1:0}${y.remove?1:0}`:"";n.getAttribute("data-message-sig")!==$&&(n.setAttribute("data-message-sig",$),m.textContent="",y&&m.appendChild(Fi(y)));return}if(n.removeAttribute("data-message-for"),n.removeAttribute("data-message-sig"),t.kind==="detail"||t.kind==="editform"){let m=e.panelCell,y=t.kind==="detail";n.className=`kanuni-datagrid-row ${y?"kanuni-datagrid-detail-row":"kanuni-datagrid-editform-row"}`,n.style.height=`${t.height}px`,y?(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")),m.className=y?"kanuni-datagrid-detail-cell":"kanuni-datagrid-editform-cell";let $=`${t.kind}:${String(t.key)}`;if(n.getAttribute("data-panel-for")!==$){n.setAttribute("data-panel-for",$);let Y=y?gr?.(t.data):t.parentKey===null?void 0:vi?.(t.parentKey,t.data);m.textContent="",typeof Y=="string"?m.textContent=Y:Y&&m.appendChild(Y);}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="";let i=t.kind==="data"?a.getDataRowHeight():null;n.style.height=qr?"":`${i??a.getRowHeight()}px`;let d=t.kind==="group"&&!e.group?t:null;if(!e.group){n.classList.remove("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned");for(let m of Array.from(n.classList))m.startsWith("kanuni-datagrid-group-row--level-")&&n.classList.remove(m);d?(n.classList.add("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned",`kanuni-datagrid-group-row--level-${d.level}`),n.setAttribute("aria-expanded",String(d.expanded)),n.setAttribute("aria-level",String(d.level+1)),n.setAttribute("data-group-key",String(d.key)),n.setAttribute("data-group-level",String(d.level))):(n.removeAttribute("aria-expanded"),n.removeAttribute("aria-level"),n.removeAttribute("data-group-key"),n.removeAttribute("data-group-level"));}n.classList.toggle("kanuni-datagrid-row--odd",A&&o%2===1);let s=a.isRowSelected(t.key);n.classList.toggle("kanuni-datagrid-row--selected",s),t.kind==="data"&&a.getSelectionMode()!=="none"?n.setAttribute("aria-selected",String(s)):n.removeAttribute("aria-selected");let r=a.getFocus();n.classList.toggle("kanuni-datagrid-row--focused",q&&r!==null&&r.rowKey===t.key),Wr(n,t);let c=t.kind==="data"&&!Ii(t,e)?a.planRowColSpans(t,a.getVirtualWindow().columns):null;if(e.leadingSpacer&&(e.leadingSpacer.style.flex=`0 0 ${Math.max(0,ze-(c?.leadingDelta??0))}px`),e.trailingSpacer&&(e.trailingSpacer.style.flex=`0 0 ${Math.max(0,ko-(c?.trailingDelta??0))}px`),Hi(e,c,t),pn){let m=Ot!==null&&String(Ot.key)===String(t.key);n.classList.toggle("kanuni-datagrid-row--drop-before",m&&Ot.side==="before"),n.classList.toggle("kanuni-datagrid-row--drop-after",m&&Ot.side==="after");}let p=t.kind==="treePath",v=p||d!==null;if(n.classList.toggle("kanuni-datagrid-row--tree-path",p),e.rowNumberCell&&(e.rowNumberCell.textContent=v?"":String(Ni(o))),e.detailToggle&&(e.detailToggle.hidden=v),e.selectInput){let m=d!==null&&cn?.mode==="multiple";if(e.selectInput.hidden=p||d!==null&&!m,e.selectInput.classList.toggle("kanuni-datagrid-group-checkbox",m),m){let y=a.getGroupSelectionState(String(d.key));e.selectInput.checked=y==="all",e.selectInput.indeterminate=y==="some",e.selectInput.disabled=false,e.selectInput.setAttribute("aria-label",h.selectGroupAria.replace("{count}",String(d.count)).replace("{group}",d.display??d.label));}else e.selectInput.indeterminate=false,e.selectInput.checked=a.isRowSelected(t.key),e.selectInput.disabled=t.kind==="data"&&!a.isRowSelectable(t.key),e.selectInput.setAttribute("aria-label",h.selectRowAria.replace("{row}",String(t.key)));}if(e.detailToggle&&t.kind==="data"){let m=a.isDetailExpanded(t.key);e.detailToggle.textContent=m?"\u25BE":"\u25B8",e.detailToggle.setAttribute("aria-expanded",String(m)),e.detailToggle.setAttribute("aria-label",m?h.collapseDetails:h.expandDetails);}if(t.kind==="group"&&e.group){let m=t;n.className=`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${m.level}`,n.setAttribute("aria-expanded",String(m.expanded)),n.setAttribute("aria-level",String(m.level+1)),n.setAttribute("data-group-key",String(m.key)),n.setAttribute("data-group-level",String(m.level)),e.group.cell.style.paddingLeft=m.level>0?`${8+m.level*18}px`:"",e.group.twisty.textContent=m.expanded?"\u25BE":"\u25B8";let y=a.getColumnModel().getDef(m.columnId),$=y?.headerName??m.columnId;if(e.group.caption.textContent=`${$}:`,e.group.label.textContent=datagridCore.lookupLabel(y,m.value)??m.display??(m.label===""?h.filterBlank:m.label),e.group.count.textContent=`(${m.count})`,e.group.check){let ge=a.getGroupSelectionState(String(m.key));e.group.check.checked=ge==="all",e.group.check.indeterminate=ge==="some",e.group.check.setAttribute("aria-label",h.selectGroupAria.replace("{count}",String(m.count)).replace("{group}",e.group.label.textContent??""));}e.group.aggregates.textContent="";let Y=m.aggregates??null;if(Y)for(let ge of a.getSummaryDefs()){let Pe=w("kanuni-datagrid-group-aggregate","span"),re=w("kanuni-datagrid-group-aggregate-label","span"),ke=a.getColumnModel().getDef(ge.columnId);re.textContent=`${datagridCore.summaryLabel(ge,po)} ${ke?.headerName??ge.columnId}:`,Pe.append(re,` ${datagridCore.formatSummaryValue(ge,Y[datagridCore.summaryKey(ge.columnId,ge.type)],ke)}`),e.group.aggregates.appendChild(Pe);}return}if(t.kind!=="data"&&!p&&!d){for(let{el:m}of e.cells)m.textContent="";return}if(Rt&&v){let m=pn?1:0;for(;n.childNodes.length>m;)n.removeChild(n.lastChild);let y=w("kanuni-datagrid-cell");d?y.appendChild(Ur(d)):(y.appendChild(zr(t)),To(y,t,t.tree)),n.appendChild(y);return}if(Rt){let m=pn?1:0,y=Rt({row:t.data,node:t,rowIndex:o,selected:a.isRowSelected(t.key),focused:q&&r!==null&&r.rowKey===t.key});if(y instanceof Node&&n.childNodes.length===m+1&&n.childNodes[m]===y)return;for(;n.childNodes.length>m;)n.removeChild(n.lastChild);typeof y=="string"?n.appendChild(document.createTextNode(y)):y&&n.appendChild(y);return}let b=r!==null&&r.rowKey===t.key?r.columnId:null,R=d?void 0:t.tree,F=d&&Mr?datagridCore.GROUP_COLUMN_ID:R||d?(()=>{let m=a.getColumnLayout();return (m.left[0]??m.center[0]??m.right[0])?.state.id??null})():null,K=R?F:null,I=a.hasCellSpans();for(let{el:m,slot:y}of e.cells){m.style.display=c?.covered.has(y.id)?"none":"",m.style.width=`${c?.widths.get(y.id)??y.width}px`;let $=c?.spans.get(y.id);$?m.setAttribute("aria-colspan",String($)):m.removeAttribute("aria-colspan");let Y=(rn||fo)&&!v?{node:t,columnId:y.id,rowIndex:o,columnIndex:y.visualIndex,value:a.getColumnModel().getCellValue(t.data,y.id)}:null,ge=rn&&d&&y.id!==F?{node:t,columnId:y.id,rowIndex:o,columnIndex:y.visualIndex,value:void 0}:null,Pe=Y&&rn?rn(Y):ge?rn(ge):void 0,re=false;if(Pe!==void 0?Pe instanceof Node&&m.childNodes.length===1&&m.firstChild===Pe?re=true:typeof Pe=="string"?m.textContent=Pe:m.replaceChildren(Pe):d?y.id===F?m.replaceChildren(Ur(d)):m.replaceChildren(...$i(d,y.id)):p?y.id===K?(m.replaceChildren(zr(t)),To(m,t,R)):m.replaceChildren():(Vr(m,y,t),R&&y.id===K&&To(m,t,R)),I&&!re){let Le=Pi(o,y.id);m.classList.toggle("kanuni-datagrid-cell--span",Le?.kind==="draw"),m.classList.toggle("kanuni-datagrid-cell--span-covered",Le?.kind==="covered");let Te=Pe!==void 0;if(Le?.kind==="covered"&&b!==y.id&&!Te)m.replaceChildren();else if(Le?.kind==="draw"){let on=w("kanuni-datagrid-span-box");on.style.height=`${Le.height}px`,on.append(...Array.from(m.childNodes)),m.appendChild(on);}}else I||m.classList.remove("kanuni-datagrid-cell--span","kanuni-datagrid-cell--span-covered");if(It){let Le=!v&&!!So(t.key,y.id,t.data);m.classList.toggle("kanuni-datagrid-cell--noted",Le);}m.id=`${u.gridId}-cell-${String(t.key)}-${y.id}`,m.setAttribute("aria-colindex",String(wo()+y.visualIndex+1)),m.classList.toggle("kanuni-datagrid-cell--focused",b===y.id);let ke=t.kind==="data"?a.getFindMatchKind(t.key,y.id):null;m.classList.toggle("kanuni-datagrid-cell--find-match",ke!==null),m.classList.toggle("kanuni-datagrid-cell--find-active",ke==="active");let Ve=m.getAttribute("data-slot-classes");if(Ve)for(let Le of Ve.split(" "))m.classList.remove(Le);let bt=Y&&fo?fo(Y):void 0,dt=y.def.cellClassName,le=[v?void 0:typeof dt=="function"?dt({value:a.getColumnModel().getCellValue(t.data,y.id),row:t.data,node:t,column:y.def}):dt,bt].filter(Boolean).join(" ")||void 0;if(le){for(let Le of le.split(" "))m.classList.add(Le);m.setAttribute("data-slot-classes",le);}else Ve&&m.removeAttribute("data-slot-classes");}}let qr=u.columns.some(e=>e.autoHeight);function Ki(){if(!qr)return;let e=a.getVirtualWindow(),t=a.getRows(),o=new Map(a.getMeasuredRowHeights()),n=false;for(let i=e.rows.start;i<e.rows.end&&i<t.length;i++){let d=t[i];if(!d||d.kind!=="data")continue;let s=i-e.rows.start,r=gt[s]?.root;if(!r)continue;let c=r.getBoundingClientRect().height;c>0&&o.get(d.key)!==c&&(o.set(d.key,c),n=true);}n&&a.setMeasuredRowHeights(o);}let Pn={start:0,end:0};function Pi(e,t){let o=a.getCellSpans(t);if(o.length===0)return null;let n=datagridCore.spanRoleAt(o,e,Pn.start,Pn.end);if(!n)return null;if(n.role==="covered")return {kind:"covered"};let i=a.getRowOffset(n.drawStart);return {kind:"draw",height:a.getRowOffset(n.drawEnd)+a.getRowHeightAt(n.drawEnd)-i}}function Gi(e,t){let o=a.isRowLoadFailed(t),n=o?"failed":"loading";if(e.dataset.holeState===n)return;e.dataset.holeState=n,e.classList.toggle("kanuni-datagrid-row--load-failed",o),o?e.removeAttribute("aria-busy"):e.setAttribute("aria-busy","true");let i=e.firstElementChild;if(!o)i.replaceChildren(w("kanuni-datagrid-loading-bar","span"));else {let d=w("kanuni-datagrid-load-failed-text","span");d.textContent=h.rowsLoadFailed;let s=document.createElement("button");s.className="kanuni-datagrid-retry-button",s.type="button",s.setAttribute("data-retry-load",""),s.textContent=h.retryLoad,s.addEventListener("click",()=>a.retryFailedLoads()),i.replaceChildren(d,s);}}function Ur(e){let t=w("kanuni-datagrid-group-inline","span");t.style.paddingInlineStart=`${e.level*16}px`;let o=w("kanuni-datagrid-group-twisty","span");o.setAttribute("aria-hidden","true"),o.textContent=e.expanded?"\u25BE":"\u25B8";let n=a.getColumnModel().getDef(e.columnId),i=w("kanuni-datagrid-group-caption","span");i.textContent=`${n?.headerName??e.columnId}:`;let d=w("kanuni-datagrid-group-label","span");d.textContent=datagridCore.lookupLabel(n,e.value)??e.display??(e.label===""?h.filterBlank:e.label);let s=w("kanuni-datagrid-group-count","span");return s.textContent=`(${e.count})`,Mr?t.append(o,d,s):t.append(o,i,d,s),t}function $i(e,t){if(!e.aggregates)return [];let o=a.getSummaryDefs().find(i=>i.columnId===t);if(!o)return [];let n=w("kanuni-datagrid-group-aggregate-value","span");return n.textContent=datagridCore.formatSummaryValue(o,e.aggregates[datagridCore.summaryKey(o.columnId,o.type)],a.getColumnModel().getDef(t)),[n]}function zr(e){let t=w("kanuni-datagrid-tree-path-label","span");return t.textContent=e.label,t}function To(e,t,o){let n=w(`kanuni-datagrid-tree-cell${o.ancestorOnly?" kanuni-datagrid-tree-cell--ancestor":""}`,"span");if(n.style.paddingInlineStart=`${o.depth*16}px`,o.hasChildren){let i=document.createElement("button");i.type="button",i.className="kanuni-datagrid-tree-toggle",i.setAttribute("data-tree-toggle",""),i.setAttribute("aria-expanded",String(o.expanded)),i.setAttribute("aria-label",o.expanded?h.collapseTreeRow:h.expandTreeRow),i.textContent=o.expanded?"\u25BE":"\u25B8",i.addEventListener("mousedown",d=>d.stopPropagation()),i.addEventListener("click",d=>{d.stopPropagation(),a.toggleTreeRow(t.key);}),n.appendChild(i);}else n.appendChild(w("kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf","span"));n.append(...Array.from(e.childNodes)),e.appendChild(n);}let So=(e,t,o)=>It?It.get({rowKey:e,columnId:t,row:o})??null:null,Yr=null,Tt=uo?w("kanuni-datagrid-overlay"):null;Tt&&(Tt.style.position="absolute",Tt.style.inset="0",Tt.style.pointerEvents="none",$e.appendChild(Tt));function Oi(){if(!uo||!Tt)return;let e=uo();e!==Yr&&(Yr=e,e?Tt.replaceChildren(e):Tt.replaceChildren());}function Bi(e){let t=a.getColumnLayout(),o=Array.from(kt.children);B.setAttribute("aria-rowcount",String(mo()+e+o.length)),B.setAttribute("aria-colcount",String(wo()+t.left.length+t.center.length+t.right.length)),a.getSelectionMode()==="multiple"?B.setAttribute("aria-multiselectable","true"):B.removeAttribute("aria-multiselectable"),o.forEach((n,i)=>n.setAttribute("aria-rowindex",String(mo()+e+i+1)));}function Gn(){Oi(),ln&&xr();let e=a.getVirtualWindow(),t=a.getRows(),o=Zt?{...e,rows:{...e.rows,start:0,end:t.length,offsetY:0,totalHeight:0}}:e;Di(t),Bi(t.length),$e.style.height=`${o.rows.totalHeight}px`,fe.style.transform=`translateY(${o.rows.offsetY}px)`,tn=a.getFindNeedle()||(ci?datagridCore.normalizeSearch(a.getSearchText()):"");let n=Math.max(0,Math.min(o.rows.end,t.length)-o.rows.start);for(Pn.start=o.rows.start,Pn.end=Math.min(o.rows.end,t.length)-1;gt.length>n;)gt.pop().root.remove();for(let i=0;i<n;i++){let d=o.rows.start+i,s=t[d];if(!s){let p=gt[i];if(!p||p.kind!=="loading"){let v=Kn("loading");p?fe.replaceChild(v.root,p.root):fe.appendChild(v.root),gt[i]=v,p=v;}p.root.setAttribute("aria-rowindex",String(d+2)),p.root.style.height=`${a.getDataRowHeight()??a.getRowHeight()}px`,Gi(p.root,d);continue}let r=s.kind==="data"?"data":s.kind==="group"?bo?"data":"group":s.kind==="detail"||s.kind==="editform"||s.kind==="message"?"panel":"stub",c=gt[i];if(!c||c.epoch!==ft||c.kind!==r){let p=Kn(r);c?fe.replaceChild(p.root,c.root):fe.appendChild(p.root),gt[i]=p,c=p;}xo(c,s,d);}Ki(),jr();}let $n=[];function jr(){if(!a.hasStickyGroupHeaders())return;let e=Zt?[]:a.getStickyGroupRows();for(qe.style.width=`${a.getColumnLayout().totalWidth}px`;$n.length>e.length;)$n.pop().wrap.remove();let t=bo?"data":"group";e.forEach((o,n)=>{let i=$n[n];if(!i||i.rs.epoch!==ft||i.rs.kind!==t){let d=Kn(t),s=i?.wrap??w("kanuni-datagrid-sticky-group");s.textContent="",s.appendChild(d.root),i||qe.appendChild(s),i={wrap:s,rs:d},$n[n]=i;}xo(i.rs,o.node,o.index),i.rs.root.removeAttribute("aria-rowindex"),i.wrap.style.top=`${o.offset}px`,i.wrap.style.height=`${o.height}px`,i.wrap.style.zIndex=String(e.length-n),i.wrap.classList.toggle("kanuni-datagrid-sticky-group--last",n===e.length-1),i.wrap.querySelectorAll("button, input, select, textarea, a[href], [tabindex]").forEach(d=>d.setAttribute("tabindex","-1"));});}qe.addEventListener("click",e=>{let o=e.target.closest("[data-group-key]")?.getAttribute("data-group-key");o&&a.scrollToRow(o);});let On=datagridCore.createDebouncedCommit(ui??(a.isRemote()?200:0));function Xr(e,t,o,n){let i=a.getColumnModel().getDef(t);if(!i?.renderFilter)return ()=>{};let d=()=>o==="row"?a.getColumnFilter(t,datagridCore.FILTER_PART_ROW):a.getColumnFilter(t,datagridCore.FILTER_PART_SET)??a.getColumnFilter(t,datagridCore.FILTER_PART_DEFAULT),s=new Set,r=a.events.on("filterChanged",()=>{let p=d();s.forEach(v=>v(p));}),c=i.renderFilter(e,{columnId:t,column:i,surface:o,getValue:d,setValue:p=>a.setColumnFilter(t,p,o==="row"?datagridCore.FILTER_PART_ROW:datagridCore.FILTER_PART_SET),close:n,onValueChange:p=>(s.add(p),()=>s.delete(p))});return ()=>{r(),s.clear(),typeof c=="function"&&c();}}let bn=[],wn=new Map,Lo=false;function Vi(){!S||Lo||Et.querySelectorAll("select[data-filter-operator-for]").forEach(e=>{let t=e.getAttribute("data-filter-operator-for");if(On.isPending(t))return;let o=a.getColumnModel().getDef(t),n=a.getColumnFilter(t,datagridCore.FILTER_PART_ROW),i=wn.get(t)??"",d=e.parentElement?.querySelector("input.kanuni-datagrid-filter-input"),s=i;if(n){let r=datagridCore.customFilterInputFromNode(n,o);s=r?.operatorId??"",r&&d&&(d.value=r.text);}else datagridCore.findCustomFilterOperator(o,i)?.operandType==="none"&&(s="");wn.set(t,s),e.value=s,d&&(d.disabled=datagridCore.findCustomFilterOperator(o,s)?.operandType==="none");});}function Ao(){if(!S)return;if(bn.forEach(n=>n()),bn=[],Et.textContent="",it>0){let n=w("kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned");n.setAttribute("role","gridcell"),n.style.width=`${it}px`,n.style.flex="none",n.style.insetInlineStart="0px",Et.appendChild(n);}let e=false,t=null,o=()=>{if(!t){t=document.createElement("datalist"),t.id=`${u.gridId}-filter-periods`;for(let n of datagridCore.periodSuggestionList(Cr)){let i=document.createElement("option");i.value=n,t.appendChild(i);}Et.appendChild(t);}return t.id};for(let n of lt){if(!n.pinned&&!e){if(ze>0){let s=w("kanuni-datagrid-spacer");s.style.width=`${ze}px`,s.style.flex="none",Et.appendChild(s);}e=true;}let i=w(`kanuni-datagrid-filter-cell${n.pinned?" kanuni-datagrid-filter-cell--pinned":""}`);i.setAttribute("role","gridcell"),i.style.width=`${n.width}px`,i.style.flex="none",n.pinned==="left"&&(i.style.insetInlineStart=`${n.inset}px`),n.pinned==="right"&&(i.style.insetInlineEnd=`${n.inset}px`);let d=n.def.renderFilter;if(n.def.filterable!==false&&d){let s=w("kanuni-datagrid-filter-custom");s.setAttribute("data-filter-for",n.id),i.appendChild(s),bn.push(Xr(s,n.id,"row",()=>{}));}else if(n.def.filterable!==false){let s=document.createElement("input");s.className="kanuni-datagrid-filter-input",s.setAttribute("aria-label",datagridCore.fillText(h.filterPopupAria,{column:n.def.headerName??n.id})),s.setAttribute("data-filter-for",n.id);let r=datagridCore.customFilterOperators(n.def),c=()=>datagridCore.findCustomFilterOperator(n.def,wn.get(n.id)??"");n.def.dataType==="date"&&!c()&&s.setAttribute("list",o());let p=()=>{let b=c();Lo=true;try{a.setColumnFilter(n.id,b?datagridCore.parseCustomFilterInput(n.id,s.value,b):datagridCore.parseFilterInput(n.id,s.value,n.def.dataType,Cr),datagridCore.FILTER_PART_ROW);}finally{Lo=false;}};if(r.length>0){let b=document.createElement("select");b.className="kanuni-datagrid-filter-operator",b.setAttribute("aria-label",datagridCore.fillText(h.filterOperatorAria,{column:n.def.headerName??n.id})),b.setAttribute("data-filter-operator-for",n.id);let R=[["",h.filterOperatorDefault],...r.map(K=>[K.id,K.label])];for(let[K,I]of R){let m=document.createElement("option");m.value=K,m.textContent=I,b.appendChild(m);}let F=datagridCore.customFilterInputFromNode(a.getColumnFilter(n.id,datagridCore.FILTER_PART_ROW),n.def);F&&(wn.set(n.id,F.operatorId),s.value=F.text),b.value=c()?.id??"",s.disabled=c()?.operandType==="none",b.addEventListener("change",()=>{wn.set(n.id,b.value),s.disabled=c()?.operandType==="none",c()?s.removeAttribute("list"):n.def.dataType==="date"&&s.setAttribute("list",o()),On.cancel(n.id),p();}),i.appendChild(b);}s.addEventListener("input",()=>On.schedule(n.id,p));let v=()=>{On.cancel(n.id),p();};s.addEventListener("keydown",b=>{b.key==="Enter"&&v();}),s.addEventListener("blur",v),i.appendChild(s);}Et.appendChild(i);}}let Mo=()=>{},Jr=null;function _i(){let e=datagridCore.resolveToolbar(wr);if(!e.show)return;let t=e.search,o=document.createElement("input");o.type="search",o.className="kanuni-datagrid-toolbar-search",o.placeholder=t?.placeholder??h.toolbarSearch,o.setAttribute("aria-label",t?.ariaLabel??h.toolbarSearch),o.setAttribute("data-testid","dg-toolbar-search"),o.value=a.getSearchText(),t?.maxLength!==void 0&&(o.maxLength=t.maxLength);let n=w("kanuni-datagrid-toolbar-search-error","span");n.id=`kanuni-dg-search-error-${++Kd}`,n.setAttribute("role","alert"),n.setAttribute("data-testid","dg-toolbar-search-error"),n.style.display="none";let i=()=>{let I=t?.validate?.(o.value)??null;return n.textContent=I??"",n.style.display=I===null?"none":"",I===null?(o.removeAttribute("aria-invalid"),o.removeAttribute("aria-describedby")):(o.setAttribute("aria-invalid","true"),o.setAttribute("aria-describedby",n.id)),I===null},d=null,s=false,r=()=>{d&&clearTimeout(d),d=null,s=false;let I=o.value.trim();i()&&a.getSearchText()!==I&&a.setSearchText(I);};Jr=a.events.on("filterChanged",({searchText:I})=>{s||o.value.trim()===I||(o.value=I,i());}),o.addEventListener("input",()=>{s=true,d&&clearTimeout(d),d=null,i()&&(d=setTimeout(r,t?.debounce??bi));}),t?.applyOnBlur!==false&&(o.addEventListener("blur",r),o.addEventListener("keydown",I=>{I.key==="Enter"&&r();}));let c=w("kanuni-datagrid-toolbar-spacer"),p=null;if(e.columns??X){let I=document.createElement("button");I.type="button",datagridCore.setCommandContent(I,"columns",h.toolbarColumns??"Columns"),I.setAttribute("aria-haspopup","dialog"),I.addEventListener("click",()=>{let m=I.getBoundingClientRect();ia({left:m.left,top:m.bottom+2});}),p=I;}let v=vt&&gi,b=vt&&mi,R=document.createElement("button");R.type="button",R.className="kanuni-datagrid-toolbar-icon-button",R.setAttribute("aria-haspopup","menu"),R.setAttribute("aria-label",h.exportMenu),R.setAttribute("data-testid","dg-export-menu"),R.title=h.exportMenu,R.appendChild(_d());let F=null;R.addEventListener("click",()=>{if(F)return;let I=R.getBoundingClientRect();mt({left:I.right-190,top:I.bottom+2},m=>{m.setAttribute("role","menu"),m.setAttribute("aria-label",h.exportMenu);let y=[{kind:"csv",label:h.exportCsv,testId:"dg-export-csv",on:a.canExportAll()},{kind:"excel",label:h.exportExcel,testId:"dg-export-excel",on:v},{kind:"excel-selected",label:h.exportExcelSelected,testId:"dg-export-excel-selected",on:v},{kind:"pdf",label:h.exportPdf,testId:"dg-export-pdf",on:b}];for(let $ of y){if(!$.on)continue;let Y=document.createElement("button");Y.type="button",Y.className="kanuni-datagrid-menu-item",Y.setAttribute("role","menuitem"),Y.setAttribute("data-testid",$.testId),Y.textContent=$.label,$.kind==="excel-selected"&&a.getSelectedCount()===0&&(Y.disabled=true),Y.addEventListener("click",()=>{F=$.kind,R.disabled=true,Fe(),Zo(a,$.kind).then(ge=>{F=null,R.disabled=false,ge.error&&Mo(ge.error);});}),m.appendChild(Y);}},"kanuni-datagrid-filter-popup kanuni-datagrid-export-menu");});for(let I of fi??[])ct.append(I);t&&ct.append(o,n),ct.append(c),p&&ct.append(p),e.export&&(a.canExportAll()||v||b)&&ct.append(R);for(let I of pi??[])ct.append(I);let K=w("kanuni-datagrid-toolbar-error","span");K.setAttribute("role","alert"),K.style.display="none",ct.append(K),Mo=I=>{K.textContent=I,K.style.display="";};}function Qr(){if(!rt.isConnected)return;let e=a.getPage(),t=a.getPageCount(),o=document.activeElement,n=o instanceof HTMLElement&&rt.contains(o)?o.getAttribute("data-pager"):null;rt.textContent="";let i=(c,p,v,b,R)=>{let F=document.createElement("button");return F.type="button",F.textContent=c,F.setAttribute("aria-label",p),F.setAttribute("data-pager",R),F.disabled=v,F.addEventListener("click",b),F},d=w("kanuni-datagrid-pager-buttons"),s=e<=0,r=e>=t-1;if(d.append(i("\xAB",h.pagerFirst??"First",s,()=>a.setPage(0),"first"),i("\u2039",h.pagerPrevious??"Previous",s,()=>a.setPage(e-1),"previous")),Ln?.pageButtons)for(let c of datagridCore.pageButtonItems(e,t,Ln.maxPageButtons)){if(typeof c!="number"){let b=w("kanuni-datagrid-pager-gap","span");b.textContent="\u2026",b.setAttribute("aria-hidden","true"),d.append(b);continue}let p=String(c+1),v=i(p,h.pagerPageButton.replace("{n}",p),false,()=>a.setPage(c),`page-${c}`);v.classList.add("kanuni-datagrid-pager-page"),c===e&&v.setAttribute("aria-current","page"),d.append(v);}else {let c=w("kanuni-datagrid-pager-current","span");c.textContent=`${e+1} / ${t}`,d.append(c);}if(d.append(i("\u203A",h.pagerNext??"Next",r,()=>a.setPage(e+1),"next"),i("\xBB",h.pagerLast??"Last",r,()=>a.setPage(t-1),"last")),rt.appendChild(d),n!==null){let c=rt.querySelector(`[data-pager="${n}"]`);(c&&!c.disabled?c:rt.querySelector('[aria-current="page"]')??rt.querySelector("button:not(:disabled)"))?.focus();}}function Do(){if(!ot)return;let e=a.getColumnLayout(),t=a.getSummaries(),o=new Map(a.getSummaryDefs().map(i=>[i.columnId,i]));if(Oe.textContent="",Oe.style.width=`${e.totalWidth+it}px`,it>0){let i=w("kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned");i.style.width=`${it}px`,i.style.insetInlineStart="0px",Oe.appendChild(i);}let n=false;for(let i of lt){if(!i.pinned&&!n){if(ze>0){let c=w("kanuni-datagrid-spacer");c.style.width=`${ze}px`,Oe.appendChild(c);}n=true;}let d=o.get(i.id),s=i.def.dataType==="number"||i.def.dataType==="bigint",r=w(`kanuni-datagrid-footer-cell${i.pinned?" kanuni-datagrid-footer-cell--pinned":""}${s?" kanuni-datagrid-footer-cell--number":""}${d?" kanuni-datagrid-footer-cell--active":""}`);if(r.setAttribute("role","gridcell"),r.setAttribute("data-column-id",i.id),r.setAttribute("data-summary-type",d?.type??""),r.style.width=`${i.width}px`,i.pinned==="left"&&(r.style.insetInlineStart=`${i.inset}px`),i.pinned==="right"&&(r.style.insetInlineEnd=`${i.inset}px`),d){r.title=`${datagridCore.summaryLabel(d,po)} \u2014 ${i.def.headerName??i.id}`;let c=w("kanuni-datagrid-footer-value","span");c.textContent=datagridCore.formatSummaryValue(d,t[datagridCore.summaryKey(d.columnId,d.type)],i.def),r.appendChild(c);}else {let c=w("kanuni-datagrid-footer-hint","span");c.textContent=z&&!datagridCore.isChromeColumn(i.id)?"\xB7":"",r.appendChild(c);}Oe.appendChild(r);}}function Wi(){Ft()>0?nt.isConnected||He.insertBefore(nt,qe.isConnected?qe:$e):nt.remove(),kr()>0?kt.isConnected||He.insertBefore(kt,$e.nextSibling):kt.remove(),qe.style.setProperty("--dg-sticky-below",`${Ft()>0?Ft()*a.getRowHeight()+1:0}px`);}function Bn(){let e=Rt;Rt=pe;try{qi();}finally{Rt=e;}}function qi(){let e=(t,o,n,i)=>{t.textContent="",o.forEach((d,s)=>{let r=Kn("data");xo(r,{kind:"data",key:`__pinned-${n}-${s}`,sourceIndex:-1,data:d},s),r.root.classList.remove("kanuni-datagrid-row--odd"),r.root.setAttribute("aria-rowindex",String(go+Kt+s+1)),r.root.removeAttribute("aria-selected"),Wr(r.root,null),r.rowNumberCell&&(r.rowNumberCell.textContent="");let c=i[s-(o.length-i.length)];c!==void 0?r.root.setAttribute("data-pinned-row-key",String(c)):r.root.removeAttribute("data-pinned-row-key"),t.appendChild(r.root);});};for(let[t,o,n]of [["top",nt,ce],["bottom",kt,W]]){let i=a.getPinnedRows(t);if(n.length+i.length===0){o.textContent="";continue}e(o,[...n,...i.map(d=>d.row)],t,i.map(d=>d.key));}}let Vn=e=>{let t=e.target.closest("[data-pinned-row-key]");if(!t)return;let o=t.getAttribute("data-pinned-row-key"),n=a.getPinnedRowKeys(),i=[...n.top,...n.bottom].find(c=>String(c)===o);if(i===void 0)return;let d=Zr(i,false);if(d.length===0)return;e.preventDefault();let s=a.getPinnedRows(a.getRowPinSide(i)??"top").find(c=>c.key===i)?.row,r={row:s,node:{kind:"data",key:i,sourceIndex:-1,data:s},rowIndex:-1,columnId:e.target.closest("[data-column-id]")?.getAttribute("data-column-id")??null,selectedKeys:a.getSelectedKeys()};mt({left:e.clientX,top:e.clientY},c=>{c.setAttribute("role","menu"),Wn(c,d,r);},"kanuni-datagrid-context-menu");};nt.addEventListener("contextmenu",Vn),kt.addEventListener("contextmenu",Vn);function Zr(e,t){if(!a.isRowPinningEnabled()||!a.canPinRow(e))return [];let o=a.getRowPinSide(e),n=[];return o!=="top"&&n.push({id:"__dg-pin-top",label:h.pinRowTop,onSelect:()=>a.pinRow(e,"top")}),o!=="bottom"&&n.push({id:"__dg-pin-bottom",label:h.pinRowBottom,onSelect:()=>a.pinRow(e,"bottom")}),o&&n.push({id:"__dg-unpin",label:h.unpinRow,onSelect:()=>a.pinRow(e,null)}),t&&n.length>0?[{id:"__dg-sep-pin",separator:true},...n]:n}let Vt=null,_t=null,No=null;function Fe(e=true){_t?.(),_t=null,Vt?.remove(),Vt=null;let t=No;No=null,e&&t?.();}function Io(e){return Me.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${CSS.escape(e)}"]`)}function ea(e,t){e.addEventListener("keydown",o=>{let n=Array.from(e.querySelectorAll('[role="menuitem"]:not(:disabled)'));if(n.length===0)return;let i=n.indexOf(document.activeElement),d=n[i],s;switch(o.key){case "ArrowDown":s=n[(i+1)%n.length];break;case "ArrowUp":s=n[i<=0?n.length-1:i-1];break;case "Home":s=n[0];break;case "End":s=n[n.length-1];break;case "ArrowRight":case "Enter":case " ":if(d?.getAttribute("aria-haspopup")!=="menu")return;d.click(),s=Vt?.querySelector('.kanuni-datagrid-submenu [role="menuitem"]:not(:disabled)')??void 0;break;case "ArrowLeft":if(!t)return;t();break;case "Tab":Fe();break;default:return}o.preventDefault(),o.stopPropagation(),s?.focus();});}function ta(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 mt(e,t,o="kanuni-datagrid-filter-popup",n){Fe(false);let i=document.activeElement instanceof HTMLElement?document.activeElement:null,d=i&&(i===B||!i.contains(B))?i:null,s=(d&&Me.contains(d)?d.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null)??n??null;Vt=w(`${ao(u)} kanuni-datagrid-portal`);let r=w(o);r.style.position="fixed",r.style.left=`${e.left}px`,r.style.top=`${e.top}px`,r.style.zIndex="1000",t(r),Vt.appendChild(r),datagridCore.portalTarget(u.portalContainer).appendChild(datagridCore.markPortal(Vt,u.portalContainer)),ta(r,e),No=()=>{let b=s?Io(s):null,R=d?.isConnected?d:b;R?.focus({preventScroll:true}),R&&document.activeElement!==R&&b&&b.focus({preventScroll:true});},r.getAttribute("role")==="menu"&&(ea(r),r.querySelector('[role="menuitem"]:not(:disabled)')?.focus({preventScroll:true}));let c=Vt,p=b=>{c.contains(b.target)||Fe(false);},v=b=>{b.key==="Escape"&&Fe();};document.addEventListener("pointerdown",p,true),document.addEventListener("keydown",v,true),_t=()=>{document.removeEventListener("pointerdown",p,true),document.removeEventListener("keydown",v,true);};}let St=25,na=8,Ho=new Map,Fo=0;function oa(e,t){let o=t.getBoundingClientRect(),n=++Fo;if(a.getColumnModel().getDef(e)?.renderFilter){let s=null,r=null;mt({left:o.left,top:o.bottom+2},v=>{r=v,v.classList.add("kanuni-datagrid-filter-popup--custom"),v.setAttribute("role","dialog"),v.setAttribute("aria-label",datagridCore.fillText(h.filterPopupAria,{column:a.getColumnModel().getDef(e)?.headerName??e})),v.setAttribute("data-column-id",e),v.tabIndex=-1,s=Xr(v,e,"popup",()=>Fe());},void 0,e);let c=r;c&&(c.querySelector('input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])')??c).focus({preventScroll:true});let p=_t;_t=()=>{p?.(),s?.(),s=null;};return}let i=null;mt({left:o.left,top:o.bottom+2},s=>{s.setAttribute("role","dialog"),s.setAttribute("aria-label",datagridCore.fillText(h.filterPopupAria,{column:a.getColumnModel().getDef(e)?.headerName??e}));let r=[],c=true,p=new Set,v=false,b=0,R="",F=[],K={value:void 0,label:""},I=x=>x.value===null||x.value===void 0,m=[],y=x=>x===K?datagridCore.NONBLANK_KEY:datagridCore.distinctEntryKey(x),$=x=>x===K?h.filterNonBlank:datagridCore.distinctDisplayText(x,{filterBlank:h.filterBlank,filterEmptyText:h.filterEmptyText,filterSpace:h.filterSpace,filterSpaces:h.filterSpaces}),Y=null,ge="",Pe=[],re=null,ke=document.createElement("input");ke.type="search",ke.className="kanuni-datagrid-filter-search",ke.placeholder=h.search,ke.setAttribute("data-testid","dg-filter-search");let Ve=null;j&&(Ve=document.createElement("button"),Ve.type="button",Ve.className="kanuni-datagrid-filter-custom",Ve.setAttribute("data-testid","dg-filter-custom"),Ve.textContent=h.filterCustom,Ve.addEventListener("click",()=>{Fe(),j({columnId:e});}));let bt=w("kanuni-datagrid-filter-actions"),dt=document.createElement("button");dt.type="button",dt.textContent=h.filterSelectAll,dt.addEventListener("click",()=>{if(re)return re.selectAll();if(v=true,R.trim()==="")p=new Set(r.map(datagridCore.distinctEntryKey));else for(let x of F)p.add(datagridCore.distinctEntryKey(x));Xe();});let yn=document.createElement("button");yn.type="button",yn.textContent=h.clear,yn.addEventListener("click",()=>{if(re)return re.clear();if(v=true,R.trim()==="")p=new Set;else for(let x of F)p.delete(datagridCore.distinctEntryKey(x));Xe();}),bt.append(dt,yn);let le=w("kanuni-datagrid-filter-list");le.setAttribute("role","listbox"),le.setAttribute("aria-multiselectable","true");let Le=document.createElement("div");Le.style.position="relative";let Te=document.createElement("div");Le.appendChild(Te),le.appendChild(Le);let on=()=>{let x=datagridCore.foldText(R.trim());if(!x){F=r;let U=r.findIndex(I);m=U<0?r:[...r.slice(0,U+1),K,...r.slice(U+1)];return}Y||(Y=r.map(U=>datagridCore.foldText(U.label))),F=ge!==""&&x.includes(ge)?Pe.filter(U=>datagridCore.foldText(U.label).includes(x)):r.filter((U,ne)=>Y[ne].includes(x)),ge=x,Pe=F,m=F;},cl=x=>{let U=x.getRowCount(),ne=x.isLoading();le.setAttribute("aria-busy",String(ne)),le.setAttribute("aria-setsize",String(U));let be=document.activeElement instanceof HTMLElement?document.activeElement.closest(".kanuni-datagrid-filter-item")?.getAttribute("data-index")??null:null;if(Te.textContent="",ne||U===0){Le.style.height="",Te.style.transform="";let Ge=w("kanuni-datagrid-filter-empty");Ge.textContent=ne?h.filterLoading:h.filterNoMatch,Te.appendChild(Ge);return}Le.style.height=`${x.getWindow(le.scrollTop,240).totalHeight}px`;let Ke=x.getWindow(le.scrollTop,Math.max(le.clientHeight,150));Le.style.height=`${Ke.totalHeight}px`,Te.style.transform=`translateY(${Ke.offsetY}px)`;for(let Ge=Ke.start;Ge<Ke.end;Ge++){let Ae=x.getRow(Ge),De=w("kanuni-datagrid-filter-item");if(De.setAttribute("role","option"),De.setAttribute("data-index",String(Ge)),!Ae){De.classList.add("kanuni-datagrid-filter-item--pending"),De.setAttribute("aria-selected","false"),De.setAttribute("aria-busy","true");let yt=document.createElement("span");yt.setAttribute("aria-hidden","true"),yt.textContent="\u2026",De.appendChild(yt),Te.appendChild(De);continue}let hn=x.isChecked(Ae);De.setAttribute("aria-selected",String(hn)),De.tabIndex=-1,De.setAttribute("data-value",Ae.label),Ge===b&&De.classList.add("kanuni-datagrid-filter-item--active");let Nt=document.createElement("input");Nt.type="checkbox",Nt.readOnly=true,Nt.checked=hn,Nt.tabIndex=-1;let Je=document.createElement("span");Je.textContent=Ae.nonBlank?h.filterNonBlank:datagridCore.distinctDisplayText({value:Ae.blank?null:Ae.value,label:Ae.label},{filterBlank:h.filterBlank,filterEmptyText:h.filterEmptyText,filterSpace:h.filterSpace,filterSpaces:h.filterSpaces}),De.append(Nt,Je),De.addEventListener("click",()=>x.toggle(Ae)),De.addEventListener("focus",()=>{b=Ge,Qn();}),Te.appendChild(De);}Qn(),x.ensure(Ke.start,Ke.end),be!==null&&Te.querySelector(`[data-index="${b}"]`)?.focus({preventScroll:true});},Xe=()=>{if(re&&!c)return cl(re);if(le.setAttribute("aria-busy",String(c)),le.setAttribute("aria-setsize",String(m.length)),c){Le.style.height="",Te.textContent="";let Ae=w("kanuni-datagrid-filter-empty");Ae.textContent=h.filterLoading,Te.appendChild(Ae);return}if(m.length===0){Le.style.height="",Te.style.transform="",Te.textContent="";let Ae=w("kanuni-datagrid-filter-empty");Ae.textContent=h.filterNoMatch,Te.appendChild(Ae);return}let x=le.clientHeight||240,U=Math.max(0,Math.floor(le.scrollTop/St)-na),ne=Math.ceil(x/St)+na*2,be=Math.min(U,Math.max(0,m.length-1)),Ke=Math.min(m.length,be+ne);Le.style.height=`${m.length*St}px`,Te.style.transform=`translateY(${be*St}px)`;let Ge=document.activeElement instanceof HTMLElement?document.activeElement.closest(".kanuni-datagrid-filter-item")?.getAttribute("data-index")??null:null;Te.textContent="";for(let Ae=be;Ae<Ke;Ae++){let De=m[Ae],hn=y(De),Nt=De===K?datagridCore.distinctNonBlankTicked(r,p):p.has(hn),Je=w("kanuni-datagrid-filter-item");Je.setAttribute("role","option"),Je.setAttribute("aria-selected",String(Nt)),Je.tabIndex=-1,Je.setAttribute("data-value",De.label),Je.setAttribute("data-index",String(Ae)),Ae===b&&Je.classList.add("kanuni-datagrid-filter-item--active");let yt=document.createElement("input");yt.type="checkbox",yt.readOnly=true,yt.checked=Nt,yt.tabIndex=-1;let Oa=document.createElement("span");Oa.textContent=$(De),Je.append(yt,Oa),Je.addEventListener("click",()=>Ka(hn)),Je.addEventListener("focus",()=>{b=Ae,Qn();}),Te.appendChild(Je);}Qn(),Ge!==null&&Te.querySelector(`[data-index="${b}"]`)?.focus({preventScroll:true});};function Qn(){let x=false;for(let U of Array.from(Te.querySelectorAll(".kanuni-datagrid-filter-item"))){if(U.getAttribute("aria-busy")==="true")continue;let ne=Number(U.getAttribute("data-index"))===b;U.tabIndex=ne?0:-1,U.classList.toggle("kanuni-datagrid-filter-item--active",ne),x||=ne;}le.tabIndex=x||!Te.querySelector(".kanuni-datagrid-filter-item")?-1:0;}let Ka=x=>{if(v=true,x===datagridCore.NONBLANK_KEY){let U=datagridCore.distinctNonBlankTicked(r,p);for(let ne of r)I(ne)&&!U?p.delete(datagridCore.BLANK_KEY):p.add(datagridCore.distinctEntryKey(ne));}else p.has(x)?p.delete(x):p.add(x);for(let U of Te.querySelectorAll(".kanuni-datagrid-filter-item")){let ne=m[Number(U.getAttribute("data-index"))];if(!ne)continue;let be=ne===K?datagridCore.distinctNonBlankTicked(r,p):p.has(y(ne));U.setAttribute("aria-selected",String(be));let Ke=U.querySelector("input");Ke&&(Ke.checked=be);}};le.addEventListener("scroll",()=>{Ho.set(e,le.scrollTop),Xe();});let Zn=null,Xo=()=>{if(b=0,re){let x=re;Zn&&clearTimeout(Zn),Zn=setTimeout(()=>{Zn=null,x.getSearch()!==R.trim()&&(x.setSearch(R),le.scrollTop=0,Xe());},150);return}on(),Xe();};ke.addEventListener("input",()=>{R=ke.value,Xo();});let Jo=x=>{if(re){let be=re.getRowCount();if(be===0)return;b=Math.max(0,Math.min(be-1,x)),x<=0?le.scrollTop=0:x>=be-1&&(le.scrollTop=le.scrollHeight),Xe();let Ke=s.querySelector(`.kanuni-datagrid-filter-item[data-index="${b}"]`);Ke?.focus(),Ke?.scrollIntoView?.({block:"nearest"});return}if(m.length===0)return;b=Math.max(0,Math.min(m.length-1,x));let U=b*St,ne=le.clientHeight||240;U<le.scrollTop?le.scrollTop=U:U+St>le.scrollTop+ne&&(le.scrollTop=U+St-ne),Xe(),s.querySelector(`.kanuni-datagrid-filter-item[data-index="${b}"]`)?.focus();},Pa=()=>{if(c)return;if(re){if(re.isLoading())return;a.setColumnFilter(e,re.buildFilter(e),datagridCore.FILTER_PART_SET),Fe();return}let x;if(p.size===r.length)x=null;else if(datagridCore.distinctNonBlankTicked(r,p))x={columnId:e,operator:"isnotnull"};else {let U=p.has(datagridCore.BLANK_KEY),ne=r.filter(be=>!I(be)&&p.has(datagridCore.distinctEntryKey(be)));ne.length===0?x=U?{columnId:e,operator:"isnull"}:null:U?x={logic:"or",nodes:[{columnId:e,operator:"in",value:ne.map(be=>be.value)},{columnId:e,operator:"isnull"}]}:x={columnId:e,operator:"in",value:ne.map(be=>be.value)};}a.setColumnFilter(e,x,datagridCore.FILTER_PART_SET),Fe();};s.tabIndex=-1,s.addEventListener("keydown",x=>{let U=x.target===ke;if(!((x.key==="Enter"||x.key===" ")&&x.target instanceof HTMLButtonElement)){if(x.key==="Tab"){let ne=Array.from(s.querySelectorAll('input:not([disabled]), button:not([disabled]), [tabindex="0"]')),be=ne[0],Ke=ne[ne.length-1],Ge=document.activeElement;be&&Ke&&(!x.shiftKey&&(Ge===Ke||Ge===s)?(x.preventDefault(),be.focus()):x.shiftKey&&(Ge===be||Ge===s)&&(x.preventDefault(),Ke.focus()));return}if(x.key==="Backspace"&&!U){x.preventDefault(),ke.focus(),R=R.slice(0,-1),ke.value=R,Xo();return}if(x.key==="ArrowDown"){x.preventDefault(),Jo(U?0:b+1);return}if(x.key==="ArrowUp"){x.preventDefault(),Jo(U?re?0:m.length-1:b-1);return}if(!U&&(x.key==="Home"||x.key==="End")){x.preventDefault(),Jo(x.key==="Home"?0:(re?re.getRowCount():m.length)-1);return}if(x.key===" "&&!U){if(x.preventDefault(),re){let be=re.getRow(b);be&&re.toggle(be);return}let ne=m[b];ne&&Ka(y(ne));return}if(x.key==="Enter"){x.preventDefault(),Pa();return}!U&&x.key.length===1&&x.key!==" "&&!x.ctrlKey&&!x.metaKey&&!x.altKey&&(x.preventDefault(),ke.focus(),R+=x.key,ke.value=R,Xo());}});let Ga=w("kanuni-datagrid-filter-footer"),eo=document.createElement("button");eo.type="button",eo.textContent=h.cancel,eo.addEventListener("click",()=>Fe());let wt=document.createElement("button");wt.type="button",wt.className="kanuni-datagrid-filter-primary",wt.setAttribute("data-testid","dg-filter-apply"),wt.textContent=h.apply,wt.disabled=true,wt.addEventListener("click",Pa),Ga.append(eo,wt),s.append(ke,...Ve?[Ve]:[],bt,le,Ga),Xe(),queueMicrotask(()=>{ke.isConnected&&ke.focus();});let $a=x=>{r=x,Y=null,ge="",c=false,wt.disabled=false;let U=datagridCore.selectedLabelsFromFilter(a.getColumnFilter(e,datagridCore.FILTER_PART_SET)??a.getColumnFilter(e,datagridCore.FILTER_PART_DEFAULT),r,{text:a.getColumnModel().getDataType(e)==="string"});U?(v=true,p=new Set(U)):v||(p=new Set(r.map(datagridCore.distinctEntryKey))),on();let ne=Ho.get(e);Xe(),ne&&(le.scrollTop=ne,Xe());},Dt=a.openRemoteDistinct(e,St);if(Dt){re=Dt,i=Dt,Dt.subscribe(()=>{s.isConnected&&re===Dt&&Xe();}),Dt.start().then(x=>{if(Fo!==n||!s.isConnected){Dt.dispose();return}if(x.kind==="paged"){c=false,wt.disabled=false;let U=Ho.get(e);Xe(),U&&(le.scrollTop=U,Xe());return}Dt.dispose(),re=null,i=null,$a(a.sortDistinctEntries(x.values));});return}a.getDistinctValueSetAsync(e).then(x=>{Fo!==n||!s.isConnected||$a(x.entries);});},void 0,e);let d=_t;_t=()=>{d?.(),i?.dispose(),i=null;};}function _n(e={}){let t=a.getClipboardText(e);a.notifyClipboardGesture("copy",t?t.split(`
2
- `).length:0,()=>a.writeClipboard(t,"copy"));}function Ui(e){if(de===false)return [];let t=de===true?{}:de,o=[],n=d=>{e&&o.length===0&&o.push({separator:true,id:"__dg-sep"}),o.push(d);};t.copy!==false&&n({id:"__dg-copy",label:h.menuCopy,shortcut:`${Yi}C`,onSelect:()=>_n()}),t.copyWithHeaders!==false&&n({id:"__dg-copy-headers",label:h.menuCopyWithHeaders,onSelect:()=>_n({includeHeaders:true})}),t.copyWithGroupHeaders!==false&&zi()&&n({id:"__dg-copy-group-headers",label:h.menuCopyWithGroupHeaders,onSelect:()=>_n({includeGroupHeaders:true})});let i=(t.export===false?[]:Array.isArray(t.export)?t.export:["csv","excel","excel-selected","pdf"]).filter(d=>d!=="csv"||a.canExportAll());if(i.length>0){let d=a.getSelectedCount()===0,s={csv:h.exportCsv,excel:h.exportExcel,"excel-selected":h.exportExcelSelected,pdf:h.exportPdf};n({id:"__dg-export",label:h.menuExport,items:i.map(r=>({id:`__dg-export-${r}`,label:s[r],disabled:r==="excel-selected"&&d,onSelect:()=>{Zo(a,r).then(c=>{c.error&&Mo(c.error);});}}))});}return o}function zi(){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 Yi=/Mac|iPhone|iPad|iPod/.test(navigator.platform??"")?"\u2318":"Ctrl+";function Wn(e,t,o){let n=null,i=()=>{n?.remove(),n=null;};t.forEach((d,s)=>{if(d.separator){let b=w("kanuni-datagrid-menu-separator");b.setAttribute("role","separator"),e.appendChild(b);return}let r=w("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(s)),d.disabled&&(c.disabled=true),d.icon!==void 0){let b=w("kanuni-datagrid-menu-icon","span");typeof d.icon=="string"?b.textContent=d.icon:b.appendChild(d.icon),c.appendChild(b);}let p=w("kanuni-datagrid-menu-label","span");if(p.textContent=d.label??"",c.appendChild(p),d.shortcut){let b=w("kanuni-datagrid-menu-shortcut","span");b.textContent=d.shortcut,c.appendChild(b);}let v=d.items??[];if(v.length>0){let b=w("kanuni-datagrid-menu-caret","span");b.textContent="\u203A",c.appendChild(b),c.setAttribute("aria-haspopup","menu"),c.setAttribute("aria-expanded","false");let R=()=>{i();let F=w("kanuni-datagrid-context-menu kanuni-datagrid-submenu");F.setAttribute("role","menu");let K=c.getBoundingClientRect();F.style.left=`${K.right}px`,F.style.top=`${Math.max(0,K.top-4)}px`;for(let I of v){if(I.separator){let $=w("kanuni-datagrid-menu-separator");$.setAttribute("role","separator"),F.appendChild($);continue}let m=document.createElement("button");m.type="button",m.className="kanuni-datagrid-menu-item",m.setAttribute("role","menuitem"),I.disabled&&(m.disabled=true);let y=w("kanuni-datagrid-menu-label","span");y.textContent=I.label??"",m.appendChild(y),m.addEventListener("click",()=>{I.onSelect?.(o),Fe();}),F.appendChild(m);}e.parentElement?.appendChild(F),ta(F,{left:K.right,top:Math.max(0,K.top-4)}),n=F,c.setAttribute("aria-expanded","true"),ea(F,()=>{i(),c.setAttribute("aria-expanded","false"),c.focus();});};c.addEventListener("mouseenter",R),c.addEventListener("click",R);}else c.addEventListener("mouseenter",i),c.addEventListener("click",()=>{d.onSelect?.(o),Fe();});r.appendChild(c),e.appendChild(r);});}let ra=e=>{let o=e.target.closest(".kanuni-datagrid-row");if(!o||o.classList.contains("kanuni-datagrid-group-row"))return;let n=Lt(e);if(n?.columnId&&a.notifyCell("cellContextMenu",n.node,n.rowIndex,n.columnId),!Ce&&!de&&!a.isRowPinningEnabled()||!n||n.node.kind!=="data")return;e.preventDefault(),a.isRowSelected(n.node.key)||a.handleRowClick(n.node.key,{}),n.columnId&&a.focusCell(n.node.key,n.columnId);let i={row:n.node.data,node:n.node,rowIndex:n.rowIndex,columnId:n.columnId,selectedKeys:a.getSelectedKeys()},d=(typeof Ce=="function"?Ce(i):Ce)??[],s=[...d,...ji(i,d.length>0)],r=[...s,...Zr(n.node.key,s.length>0)],c=Ui(r.length>0);r.length===0&&c.length===0||mt({left:e.clientX,top:e.clientY},p=>{p.setAttribute("role","menu"),Wn(p,[...r,...c],i);},"kanuni-datagrid-context-menu");};function ji(e,t){if(!It?.onChange||It.menu===false)return [];let o=e.columnId;if(!o)return [];let n=e.node.key,i=So(n,o,e.row),d=[];return t&&d.push({separator:true,id:"__note-sep"}),d.push({id:"__note-edit",label:i?h.editNote:h.addNote,onSelect:()=>Xi(n,o,e.row,i??"")}),i&&d.push({id:"__note-delete",label:h.deleteNote,onSelect:()=>It.onChange?.({rowKey:n,columnId:o,row:e.row,text:null})}),d}function Xi(e,t,o,n){let d=(B.querySelector(`[data-row-key="${CSS.escape(String(e))}"] [data-column-id="${CSS.escape(t)}"]`)??B).getBoundingClientRect();queueMicrotask(()=>{mt({left:d.left,top:d.bottom+2},s=>{s.setAttribute("aria-label",h.noteEditorAria);let r=document.createElement("textarea");r.className="kanuni-datagrid-note-input",r.rows=4,r.value=n,r.setAttribute("aria-label",h.noteEditorAria),r.placeholder=h.notePlaceholder,r.setAttribute("data-testid","dg-note-input");let c=()=>{let R=r.value.trim();Fe(),It?.onChange?.({rowKey:e,columnId:t,row:o,text:R===""?null:R});};r.addEventListener("keydown",R=>{R.key==="Enter"&&(R.ctrlKey||R.metaKey)&&(R.preventDefault(),c()),R.key==="Escape"&&(R.preventDefault(),Fe());});let p=w("kanuni-datagrid-note-actions"),v=document.createElement("button");v.type="button",v.className="kanuni-datagrid-note-cancel",v.textContent=h.cancel,v.addEventListener("click",()=>Fe());let b=document.createElement("button");b.type="button",b.className="kanuni-datagrid-note-save",b.setAttribute("data-testid","dg-note-save"),b.textContent=h.save,b.addEventListener("click",c),p.append(v,b),s.append(r,p),queueMicrotask(()=>{r.focus(),r.select();});},"kanuni-datagrid-filter-popup kanuni-datagrid-note-editor");});}function Ji(e){Gt!==e&&(Gt=e,e?(B.insertBefore(Ue,ae),Go()):Ue.remove());}function Qi(e){if(ot!==e){if(ot=e,e){if(ut){let t=nt.isConnected?nt:qe.isConnected?qe:$e;He.insertBefore(Oe,t);}else He.append(Oe);Do();}else Oe.remove();nt.style.setProperty("--dg-pinned-gap",String(Kt+(ot&&ut?1:0))),qe.style.setProperty("--dg-pinned-gap",String(Kt+(ot&&ut?1:0)));}}function Ko(e){let t=er(B,e);t!==null&&a.setColumnWidth(e,t);}function aa(e,t){let o=a.getColumnModel().getDef(e),n={columnId:e,headerName:o?.headerName??e},i=Qo(n,{controller:a,t:h,groupPanelVisible:Gt,footerVisible:ot,onToggleGroupPanel:()=>Ji(!Gt),onToggleFooter:()=>Qi(!ot),onOpenFieldChooser:()=>ia(t),onBestFit:Ko,onBestFitAll:()=>{for(let s of a.getColumnStates())s.visible&&!s.flex&&Ko(s.id);},maxGroupLevels:vt?Number.POSITIVE_INFINITY:1}),d=typeof Se=="function"?Se(n,i):i;d.length!==0&&mt(t,s=>{s.setAttribute("role","menu"),Wn(s,d,n);},"kanuni-datagrid-context-menu");}function Zi(e,t){let o=a.getColumnModel().getDef(e),n=a.getColumnSummary(e),i={columnId:e,headerName:o?.headerName??o?.field??e},d=[{id:"none",label:h.noTotal,disabled:n===null,onSelect:()=>a.setColumnSummary(e,null)},{id:"sep",separator:true},...datagridCore.allowedSummaryTypes(o?.dataType).map(s=>({id:s,label:po[s],disabled:n?.type===s,onSelect:()=>a.setColumnSummary(e,s)}))];mt(t,s=>{s.setAttribute("role","menu"),Wn(s,d,i);},"kanuni-datagrid-context-menu");}function ia(e){mt(e,t=>{t.setAttribute("role","dialog"),t.setAttribute("aria-label",h.columns);let o=w("kanuni-datagrid-chooser-title");o.textContent=h.columns,t.appendChild(o);let n=()=>a.getColumnStates().filter(R=>!datagridCore.isChromeColumn(R.id)),i=()=>n().filter(R=>!a.getColumnModel().getDef(R.id)?.hideInChooser),d=R=>a.getColumnModel().getDef(R)?.headerName??R,s="";if(i().length>8){let R=document.createElement("input");R.type="search",R.className="kanuni-datagrid-filter-search",R.placeholder=h.search,R.setAttribute("aria-label",h.search),R.addEventListener("input",()=>{s=R.value.trim().toLocaleLowerCase(),b();}),t.appendChild(R);}let r=w("kanuni-datagrid-filter-list");t.appendChild(r);let c=w("kanuni-datagrid-filter-footer"),p=document.createElement("button");p.type="button",p.textContent=h.showAll,p.addEventListener("click",()=>{for(let R of i())R.visible||a.setColumnVisible(R.id,true);b();});let v=document.createElement("button");v.type="button",v.className="kanuni-datagrid-filter-primary",v.textContent=h.ok,v.addEventListener("click",()=>Fe()),c.append(p,v),t.appendChild(c);function b(){let R=i(),F=n().filter(I=>I.visible).length;r.textContent="";let K=s?R.filter(I=>d(I.id).toLocaleLowerCase().includes(s)):R;if(K.length===0){let I=w("kanuni-datagrid-chooser-empty");I.textContent=h.noData,r.appendChild(I);}for(let I of K){let m=document.createElement("label");m.className="kanuni-datagrid-filter-item";let y=document.createElement("input");y.type="checkbox",y.checked=I.visible,y.disabled=I.visible&&F===1,y.setAttribute("data-column-toggle",I.id),y.addEventListener("change",()=>{a.setColumnVisible(I.id,y.checked),b();});let $=document.createElement("span");$.textContent=d(I.id),m.append(y,$),r.appendChild(m);}p.disabled=F===R.length;}b();},"kanuni-datagrid-filter-popup kanuni-datagrid-column-chooser");}let Wt=null,Po=null,qn=e=>{Ue.classList.toggle("kanuni-datagrid-group-panel--over",e);};function la(e,t,o){let n=a.getGroupLevels();if(e===t)return;let i=n.filter(r=>r!==e),d=i.indexOf(t);if(d<0)return;let s=o==="before"?d:d+1;Po=e,a.groupBy([...i.slice(0,s),e,...i.slice(s)]);}function da(e,t){let o=a.getGroupLevels(),n=o.indexOf(e),i=n+t;n<0||i<0||i>=o.length||la(e,o[i],t===-1?"before":"after");}function sa(e,t){if(!e)return;let o=a.getGroupLevels();if(o.includes(e))return;let n=vt?Number.POSITIVE_INFINITY:1;if(o.length>=n){a.groupBy([...o.slice(0,n-1),e]);return}let i=t??o.length;a.groupBy([...o.slice(0,i),e,...o.slice(i)]);}function Go(){if(!Gt)return;Ue.textContent="";let e=a.getGroupLevels();if(e.length===0){let c=w("kanuni-datagrid-group-panel-hint","span");c.textContent=h.groupPanelHint??"Drag a column header here to group by it",Ue.appendChild(c);return}let t=c=>a.getColumnModel().getDef(c)?.headerName??c,o=w("kanuni-datagrid-group-levels"),n=(c,p)=>c<p.top+p.height/2?"before":"after",i=(c,p)=>{for(let v of Ue.querySelectorAll(".kanuni-datagrid-group-level"))v.classList.remove("kanuni-datagrid-group-level--drop-before","kanuni-datagrid-group-level--drop-after");c&&p&&c.classList.add(`kanuni-datagrid-group-level--drop-${p}`);};e.forEach((c,p)=>{let v=w("kanuni-datagrid-group-level");v.style.setProperty("--dg-group-level",String(p)),v.setAttribute("data-group-level",String(p));let b=w("kanuni-datagrid-group-chip");if(b.setAttribute("role","button"),b.tabIndex=0,e.length>1&&(b.draggable=true),b.setAttribute("aria-label",`${datagridCore.fillText(h.groupLevelAria,{n:p+1})}: ${t(c)}`),b.addEventListener("dragstart",K=>{Wt=c,K.dataTransfer&&(K.dataTransfer.effectAllowed="move",K.dataTransfer.setData("text/x-kanuni-column",c));}),b.addEventListener("dragend",()=>{Wt=null,i(null,null);}),b.addEventListener("keydown",K=>{let I=K.ctrlKey||K.metaKey;I&&(K.key==="ArrowUp"||K.key==="ArrowLeft")?(K.preventDefault(),da(c,-1)):I&&(K.key==="ArrowDown"||K.key==="ArrowRight")?(K.preventDefault(),da(c,1)):(K.key==="Delete"||K.key==="Backspace")&&(K.preventDefault(),a.groupBy(e.filter(m=>m!==c)));}),v.addEventListener("dragover",K=>{!Wt&&!(K.dataTransfer?.types.includes("text/x-kanuni-column")??false)||(K.preventDefault(),K.stopPropagation(),i(v,n(K.clientY,v.getBoundingClientRect())));}),v.addEventListener("drop",K=>{K.preventDefault(),K.stopPropagation();let I=n(K.clientY,v.getBoundingClientRect());i(null,null),qn(false);let m=Wt;if(Wt=null,m){la(m,c,I);return}let y=K.dataTransfer?.getData("text/x-kanuni-column");y&&sa(y,I==="before"?p:p+1);}),e.length>1){let K=w("kanuni-datagrid-group-chip-level","span");K.textContent=String(p+1),b.appendChild(K);}let R=document.createElement("span");R.textContent=t(c);let F=document.createElement("button");F.type="button",F.setAttribute("aria-label",datagridCore.fillText(h.groupRemoveAria,{column:t(c)})),F.textContent="\xD7",F.addEventListener("click",()=>{a.groupBy(e.filter(K=>K!==c));}),F.draggable=false,b.append(R,F),v.appendChild(b),o.appendChild(v),Po===c&&(Po=null,queueMicrotask(()=>b.focus()));}),Ue.appendChild(o);let d=w("kanuni-datagrid-group-panel-actions"),s=document.createElement("button");s.type="button",s.textContent=h.groupExpandAll,s.addEventListener("click",()=>a.expandAllGroups());let r=document.createElement("button");r.type="button",r.textContent=h.groupCollapseAll,r.addEventListener("click",()=>a.collapseAllGroups()),d.append(s,r),Ue.appendChild(d);}if(Gt){let e=t=>t.dataTransfer?.types.includes("text/x-kanuni-column")??false;Ue.addEventListener("dragover",t=>{e(t)&&(t.preventDefault(),qn(true));}),Ue.addEventListener("dragleave",t=>{let o=t.relatedTarget;o&&Ue.contains(o)||qn(false);}),Ue.addEventListener("drop",t=>{qn(false);let o=t.dataTransfer?.getData("text/x-kanuni-column");if(o){if(t.preventDefault(),Wt){Wt=null;return}sa(o);}});}let ua="";function ca(){if(!D)return;let e=[datagridCore.fillText(h.announceRows,{n:a.getVisibleCount()})],t=a.getSort();if(t.length>0){let i=t.map(d=>{let s=a.getColumnModel().getDef(d.columnId),r=s?.headerName??s?.field??d.columnId,c=d.direction==="desc"?h.announceDescending:h.announceAscending;return `${r} ${c}`}).join(", ");e.push(datagridCore.fillText(h.announceSortedBy,{columns:i}));}let o=a.getSelectedCount();o>0&&e.push(datagridCore.fillText(h.announceSelected,{n:o}));let n=e.join(", ");n!==ua&&(ua=n,un.textContent=n);}function pa(){if(!ie)return;Pt.textContent="";let e=datagridCore.describeFilter(a.getEffectiveFilter(),a.getColumnModel(),{...we,labels:{...datagridCore.filterLabels(h),...we?.labels}});if(!e&&ie!=="always"){Pt.style.display="none";return}Pt.style.display="";let t=a.isFilterEnabled();Pt.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=h.filterRemove,o.setAttribute("aria-label",h.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=h.filterToggle,n.setAttribute("aria-label",h.filterToggle),n.setAttribute("data-testid","dg-filter-panel-toggle"),n.addEventListener("change",()=>a.setFilterEnabled(n.checked));let i=w("kanuni-datagrid-filter-panel-text","span");if(i.setAttribute("data-testid","dg-filter-panel-text"),i.textContent=e??h.filterNone,e&&(i.title=e),Pt.append(o,n,i),j){let d=document.createElement("button");d.type="button",d.className="kanuni-datagrid-filter-panel-builder",d.title=h.filterEditBuilder,d.setAttribute("aria-label",h.filterEditBuilder),d.setAttribute("data-testid","dg-filter-panel-builder"),d.textContent="\u25BE",d.addEventListener("click",()=>j()),Pt.appendChild(d);}}let $o=new Set,el=a.events.on("cellsFlashed",({rowKeys:e,columnIds:t,duration:o})=>{let n=e.length?e.map(r=>`[data-row-key="${CSS.escape(String(r))}"]`).join(","):".kanuni-datagrid-row",i=t.length?t.map(r=>`[data-column-id="${CSS.escape(r)}"]`).join(","):"[data-column-id]",d=[];fe.querySelectorAll(n).forEach(r=>{r.querySelectorAll(i).forEach(c=>d.push(c));});for(let r of d)r.classList.remove("kanuni-datagrid-cell--flash");B.offsetWidth;for(let r of d)r.classList.add("kanuni-datagrid-cell--flash");let s=setTimeout(()=>{for(let r of d)r.classList.remove("kanuni-datagrid-cell--flash");$o.delete(s);},o);$o.add(s);});function Lt(e){let t=e.target,o=t.closest(".kanuni-datagrid-row");if(!o||!fe.contains(o))return null;let n=o.getAttribute("data-row-key");if(n===null)return null;let i=a.getRows(),d=i.findIndex(r=>r!==void 0&&String(r.key)===n);if(d===-1)return null;let s=t.closest(".kanuni-datagrid-cell")?.getAttribute("data-column-id")??null;return {node:i[d],rowIndex:d,columnId:s}}let fa=e=>{let t=Lt(e);t&&(P?.(t.node),a.notifyRow("rowClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellClicked",t.node,t.rowIndex,t.columnId));},ga=e=>{let t=Lt(e);if(t){if(vr){let o=qo(t,true);o&&vr(o);}he?.(t.node),a.notifyRow("rowDoubleClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellDoubleClicked",t.node,t.rowIndex,t.columnId);}};fe.addEventListener("click",fa),fe.addEventListener("dblclick",ga);function tl(e){let t=0,o=Me.querySelector(`[data-column-id="${CSS.escape(e)}"]`);o&&(t=o.scrollWidth),fe.querySelectorAll(`[data-column-id="${CSS.escape(e)}"]`).forEach(n=>{n.scrollWidth>t&&(t=n.scrollWidth);}),t>0&&a.setColumnWidth(e,t+12,true);}function nl(){if(xe)for(let e of Me.querySelectorAll('[role="columnheader"][data-column-id]')){let t=xe(e.getAttribute("data-column-id"))??"",o=e.dataset.slotClass??"";if(t!==o){for(let n of o.split(" "))n&&e.classList.remove(n);for(let n of t.split(" "))n&&e.classList.add(n);e.dataset.slotClass=t;}}}function ol(){if(O)for(let e of Me.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 Oo=false,ma=false,nn=null;function Un(){nn!==null&&(clearTimeout(nn),nn=null);}function zn(e){sn.style.display=e?"":"none";}function Yn(){let e=a.getOverlay();if(An.style.display=e==="noRows"?"":"none",co===false){Un(),zn(false);return}if(!(e==="loading"&&(Oo||!ma))){Un(),zn(false);return}if(Oo||hr<=0){Un(),zn(true);return}nn!==null||sn.style.display===""||(nn=setTimeout(()=>{nn=null,Be||zn(true);},hr));}let ba=false,Bo=false,Vo=false,_o=false,Be=false,Wo=new datagridCore.RowMotion;function rl(){if(Bo=false,!Be){if(Vo)Vo=false,_o&&(_o=false,ft++),Eo(),Ro(),Ao(),Bn();else {let e=ze;Eo(),ze!==e?(ft++,Ro(),Ao(),Bn()):a.getPinnedRows("top").length+a.getPinnedRows("bottom").length>0&&Bn();}Gn(),a.getAnimateRows()&&Wo.play(fe),$r(),Do(),Qr(),ol(),nl(),Go(),pa(),ca(),Yn();}}function jn(e){Be||(e&&(Vo=true),!Bo&&(Bo=true,queueMicrotask(rl)));}let al=[...Q?[a.events.on("focusedRowChanged",e=>Q({rowKey:e.rowKey,row:e.row}))]:[],...Pd.map(e=>a.events.on(e,()=>jn(true))),...Gd.map(e=>a.events.on(e,()=>{_o=true;})),...$d.map(e=>a.events.on(e,()=>jn(false))),a.events.on("filterChanged",()=>Vi()),...["sortChanged","filterChanged","groupChanged","dataUpdated"].map(e=>a.events.on(e,()=>{a.getAnimateRows()&&Wo.capture(fe);})),a.events.on("rowPinningChanged",()=>{Be||(Wi(),jn(true));}),a.events.on("overlayChanged",e=>{Oo=e.manual===true&&e.overlay==="loading",Be||Yn();}),a.events.on("busyChanged",e=>{ma=e.background===true,Be||Yn();}),a.events.on("paginationChanged",()=>{Be||jn(false);}),a.events.on("bodyScroll",()=>{Be||jr();}),a.events.on("cellsRefreshed",()=>{Be||_r();}),a.events.on("scrollRequested",e=>{if(Be)return;e.scrollTop!==void 0&&(ae.scrollTop=e.scrollTop),e.scrollLeft!==void 0&&(ae.scrollLeft=e.scrollLeft),a.setScroll(ae.scrollTop,Math.abs(ae.scrollLeft));let t=e.scrollTop;t===void 0||Math.abs(ae.scrollTop-t)<=1||setTimeout(()=>{Be||Math.abs(ae.scrollTop-t)<=1||(ae.scrollTop=t,a.setScroll(ae.scrollTop,Math.abs(ae.scrollLeft)));},0);}),...Ne==="fitGrid"?[a.events.on("gridSizeChanged",()=>a.sizeColumnsToFit())]:[],...Ne==="fitCells"?[a.events.on("firstDataRendered",()=>{Be||ba||(ba=true,queueMicrotask(()=>{if(!Be)for(let e of a.getColumnStates())e.visible&&!e.flex&&Ko(e.id);}));})]:[]];Ne==="fitGrid"&&a.sizeColumnsToFit();function qo(e,t=false){if(!e.columnId||e.node.kind!=="data"&&!(t&&e.node.kind==="group"))return null;let o=lt.find(n=>n.id===e.columnId);return o?{node:e.node,columnId:e.columnId,rowIndex:e.rowIndex,columnIndex:o.visualIndex,value:e.node.kind==="data"?a.getColumnModel().getCellValue(e.node.data,o.id):void 0}:null}let wa=e=>{let t=e.target;if(ye){let r=Lt(e),c=r?qo(r):null;c&&ye(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 i=a.getRows().find(r=>r!==void 0&&String(r.key)===n);if(!i||i.kind!=="data")return;a.handleRowClick(i.key,{ctrlKey:e.ctrlKey||Ri&&!e.shiftKey,metaKey:e.metaKey,shiftKey:e.shiftKey});let d=t.closest(".kanuni-datagrid-cell"),s=d?lt.find(r=>d.id.endsWith(`-${r.id}`))?.id:void 0;s&&a.focusCell(i.key,s);},ya=e=>{if(!Ie)return;let o=e.target.closest(".kanuni-datagrid-cell");if(!o||!fe.contains(o)||e.relatedTarget?.closest?.(".kanuni-datagrid-cell")===o)return;let i=Lt(e),d=i?qo(i):null;d&&Ie(d,e);};if(fe.addEventListener("mousedown",wa),fe.addEventListener("contextmenu",ra),Ie&&fe.addEventListener("mouseover",ya),pn&&($e.addEventListener("dragstart",xi),$e.addEventListener("dragover",Ti),$e.addEventListener("drop",Si),$e.addEventListener("dragend",Li),$e.addEventListener("dragleave",Ai)),B.tabIndex=0,Ht){Ze=lr({controller:a,element:B},_e,h,{surfaceClass:()=>ao(u).replace("kanuni-datagrid-root","").trim(),barHost:B},{isColumnEditable:t=>Ja(a.getColumnModel().getDef(t),t)});let e=B.querySelector(':scope > [data-testid="dg-edit-bar"]');e&&B.insertBefore(e,B.firstChild),Ze.engine.setSavedDuration(tt?.savedDuration??0);}_r();let ha=e=>{let t=Ze;if(!t||ln)return;let o=e.target;if(!o||!(o===B||o===ae||fe.contains(o)))return;let n=o.tagName;n==="INPUT"||n==="TEXTAREA"||n==="SELECT"||o.isContentEditable||t.handleKeyDown(e)&&e.stopImmediatePropagation();};Ht&&B.addEventListener("keydown",ha,true);let Ca=e=>{let t=e.target;if(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable||rt.contains(t)||ct.contains(t)||t.closest?.('[data-testid="dg-edit-form"], [data-testid="dg-edit-bar"], [data-testid="dg-row-message"]')||Me.contains(t))return;if((Ce||de||a.isRowPinningEnabled())&&(e.key==="ContextMenu"||e.key==="F10"&&e.shiftKey)){let d=a.getFocus(),s=d?fe.querySelector(`[id="${CSS.escape(`${u.gridId}-cell-${String(d.rowKey)}-${d.columnId}`)}"]`):null;if(s){let r=s.getBoundingClientRect();s.dispatchEvent(new MouseEvent("contextmenu",{bubbles:true,cancelable:true,clientX:r.left+16,clientY:r.bottom})),e.preventDefault();}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"){_n();return}if(o.type==="activate"){if(he){let d=a.getFocus(),s=d?a.getRows().find(r=>r!==void 0&&r.key===d.rowKey):void 0;s&&he(s);}o.preventDefault&&e.preventDefault();return}a.executeCommand(o),o.preventDefault&&e.preventDefault();let n=a.getFocusIndices();if(n){let s=a.getColumnLayout().center.findIndex(c=>c.state.id===a.getFocus()?.columnId),r=a.ensureVisible(n.rowIndex,s===-1?void 0:s);r&&(r.scrollTop!==void 0&&(ae.scrollTop=r.scrollTop),r.scrollLeft!==void 0&&(ae.scrollLeft=r.scrollLeft),a.setScroll(ae.scrollTop,Math.abs(ae.scrollLeft)));}let i=a.getFocus();B.setAttribute("aria-activedescendant",i?`${u.gridId}-cell-${String(i.rowKey)}-${i.columnId}`:"");};B.addEventListener("keydown",Ca);let il=br?datagridCore.attachStateStoring(a,br):null,va=typeof et=="object"?et.delay??400:400,ka=et!==false&&!(typeof et=="object"&&et.enabled===false),ll=typeof et=="object"?et.showOnTruncation!==false:true,Ea=typeof et=="object"?et.trigger??"hover":"hover",Ra=ka&&Ea!=="focus",Uo=ka&&Ea!=="hover",Xn=typeof et=="object"&&et.interactive===true,xa=`${u.gridId}-tooltip`,qt=null,Ye=null,je=null,Ut=null,zo=null;function At(){Ye&&clearTimeout(Ye),Ye=null,Ut=null,Yo();}function Yo(){je&&clearTimeout(je),je=null,zo?.removeAttribute("aria-describedby"),zo=null,qt?.remove(),qt=null;}let dl=e=>e.scrollWidth>e.clientWidth+1||e.scrollHeight>e.clientHeight+1;function sl(e){let o=e.closest(".kanuni-datagrid-row")?.getAttribute("data-row-key"),n=lt.find(p=>e.id.endsWith(`-${p.id}`));if(!o||!n)return null;let i=a.getRows().find(p=>p!==void 0&&String(p.key)===o);if(!i||i.kind!=="data")return null;let d=n.def,s=So(i.key,n.id,i.data);if(s)return s;let r={value:a.getColumnModel().getCellValue(i.data,n.id),row:i.data,node:i,column:d},c=d.renderTooltip;if(c){let p=c(r);return p===void 0||p===""?null:p}if(typeof d.tooltip=="function")return d.tooltip(r)??null;if(typeof d.tooltip=="string")return d.tooltip;if(d.tooltipField){let p=i.data[d.tooltipField];return p==null?null:String(p)}return ll&&dl(e)?e.textContent??null:null}function Ta(e,t){let o=sl(e);if(o===null||o==="")return;Yo();let n=e.getBoundingClientRect();qt=w(`${ao(u)} kanuni-datagrid-portal`);let i=w(Xn?"kanuni-datagrid-tooltip kanuni-datagrid-tooltip--interactive":"kanuni-datagrid-tooltip");i.id=xa,i.setAttribute("role","tooltip"),typeof o=="string"?i.textContent=o:i.appendChild(o),i.style.position="fixed",i.style.left=`${n.left}px`,i.style.top=`${n.bottom+4}px`,i.style.zIndex="1001",Xn&&(i.addEventListener("pointerenter",()=>{je&&clearTimeout(je),je=null,Ye&&clearTimeout(Ye),Ye=null;}),i.addEventListener("pointerleave",At)),qt.appendChild(i),datagridCore.portalTarget(u.portalContainer).appendChild(datagridCore.markPortal(qt,u.portalContainer,"tooltip")),t&&(e.setAttribute("aria-describedby",xa),zo=e);}let Sa=e=>{if(!Ra)return;let t=e.target.closest(".kanuni-datagrid-cell");if(t&&t===Ut){je&&clearTimeout(je),je=null;return}Xn&&qt&&je?(Ye&&clearTimeout(Ye),Ye=null):At(),!(!t||!fe.contains(t))&&(Ut=t,Ye=setTimeout(()=>{Ye=null,!(Ut!==t||!t.isConnected)&&Ta(t,false);},va));},La=e=>{if(!Ra)return;let t=e.relatedTarget;if(!(Ut&&t&&Ut.contains(t))){if(!Xn||!qt){At();return}je&&clearTimeout(je),je=setTimeout(Yo,150);}};B.addEventListener("pointerover",Sa),B.addEventListener("pointerout",La),ae.addEventListener("scroll",At,{passive:true});let Aa=-1/0,Ma=()=>{Aa=Date.now();};Uo&&B.addEventListener("pointerdown",Ma);let ul=Uo?a.events.on("focusChanged",()=>{At();let e=a.getFocus();e&&(Ye=setTimeout(()=>{if(Ye=null,!B.contains(document.activeElement)&&Date.now()-Aa>1500)return;let t=document.getElementById(`${u.gridId}-cell-${String(e.rowKey)}-${e.columnId}`);!t||!fe.contains(t)||(Ut=t,Ta(t,true));},va));}):null,Da=e=>{e.key==="Escape"&&At();};Uo&&B.addEventListener("keydown",Da);let Na=()=>{if(a.setScroll(ae.scrollTop,Math.abs(ae.scrollLeft)),Mt)for(let e of Ia())e.scroller.scrollLeft!==ae.scrollLeft&&(e.scroller.scrollLeft=ae.scrollLeft);};ae.addEventListener("scroll",Na,{passive:true});let Mt=null,Ia=()=>{if(!ue||!Mt)return [];let e=kn.get(ue);return e?[...e].filter(t=>t!==Mt):[]},Ha=null;if(ue){Mt={controller:a,scroller:ae};let e=kn.get(ue)??new Set;e.add(Mt),kn.set(ue,e),Ha=a.events.on("columnStateChanged",()=>{if(fr.has(ue))return;let t=Ia();if(t.length===0)return;let o=a.getColumnStates();fr.add(ue);try{for(let n of t)n.controller.applyColumnStates(o);}finally{fr.delete(ue);}});}let Fa=()=>{a.setViewportSize(ae.clientWidth,ae.clientHeight),an&&Ei(datagridCore.cardViewWidth(ae)),ae.style.setProperty("--dg-viewport-width",`${ae.clientWidth}px`);let e=$e.getBoundingClientRect(),t=He.getBoundingClientRect();a.setChromeOffsets(e.top-t.top,t.bottom-e.bottom),datagridCore.calibrateMaxScrollOffset(ae,a);};Fa();let Jn=null;typeof ResizeObserver<"u"&&(Jn=new ResizeObserver(Fa),Jn.observe(ae),Jn.observe(He)),Eo(),Ro(),Ao(),_i(),Bn(),Gn(),Do(),Qr(),Go(),pa(),ca(),Yn(),Bt?.always&&vo(true);let jo=null;if(Ee){let e=null,t=()=>{let o=Me.offsetHeight,n=o>0?`${o}px`:null;n!==e&&(e=n,n?He.style.setProperty("--dg-header-actual",n):He.style.removeProperty("--dg-header-actual"));};t(),typeof ResizeObserver<"u"&&(jo=new ResizeObserver(t),jo.observe(Me));}return Tr=true,{controller:a,element:B,setData:e=>a.setData(e),setColumns:e=>a.setColumns(e),destroy:()=>{if(!Be){if(Be=true,al.forEach(e=>e()),bn.forEach(e=>e()),bn=[],Jn?.disconnect(),jo?.disconnect(),Gr?.(),Zt&&(Zt=false,jt--,jt<=0&&(jt=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),Ha?.(),ue&&Mt){let e=kn.get(ue);e?.delete(Mt),e&&e.size===0&&kn.delete(ue),Mt=null;}ae.removeEventListener("scroll",Na),fe.removeEventListener("mousedown",wa),fe.removeEventListener("contextmenu",ra),nt.removeEventListener("contextmenu",Vn),Wo.dispose(),kt.removeEventListener("contextmenu",Vn),Ie&&fe.removeEventListener("mouseover",ya),fe.removeEventListener("click",fa),fe.removeEventListener("dblclick",ga),el(),Jr?.(),Un();for(let e of $o)clearTimeout(e);B.removeEventListener("keydown",Ca),B.removeEventListener("keydown",ha,true),Ze?.dispose(),Ze=null,B.removeEventListener("pointerover",Sa),B.removeEventListener("pointerout",La),B.removeEventListener("keydown",Da),B.removeEventListener("pointerdown",Ma),ul?.(),ae.removeEventListener("scroll",At),At(),il?.(),Fe(false),a.dispose(),B.remove();}}}}function zd(l){let u=document.createElement("button");u.type="button";let f={...l},M=()=>{let{icon:k,label:C,shortcut:A,disabledReason:L,showLabel:T,testId:Z}=f;if(u.className=`kanuni-datagrid-app-button${T?"":" kanuni-datagrid-toolbar-icon-button"}`,u.textContent="",typeof k=="string"?u.insertAdjacentHTML("afterbegin",k):u.appendChild(k),T){let H=document.createElement("span");H.textContent=C,u.appendChild(H),u.removeAttribute("aria-label");}else u.setAttribute("aria-label",C);let z=A?`${C} (${A})`:C;u.title=L!==void 0?`${z} \u2014 ${L}`:z,A?u.setAttribute("aria-keyshortcuts",A):u.removeAttribute("aria-keyshortcuts"),L!==void 0?(u.setAttribute("aria-disabled","true"),u.setAttribute("aria-description",L)):(u.removeAttribute("aria-disabled"),u.removeAttribute("aria-description")),Z&&u.setAttribute("data-testid",Z);};return u.addEventListener("click",k=>{if(f.disabledReason!==void 0){k.preventDefault();return}f.onClick?.();}),u.update=k=>{f={...f,...k},M();},M(),u}Object.defineProperty(exports,"DENSITY_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.DENSITY_ROW_HEIGHT}});Object.defineProperty(exports,"GRID_COLOR_SCHEMES",{enumerable:true,get:function(){return datagridCore.GRID_COLOR_SCHEMES}});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=io;exports.DETAIL_COLUMN_WIDTH=Rn;exports.PRINT_MAX_ROWS=si;exports.ROW_DRAG_MIME=lo;exports.ROW_NUMBER_COLUMN_WIDTH=En;exports.attachCellEditing=lr;exports.buildCellEditor=or;exports.buildDateEditor=zt;exports.buildEditForm=ar;exports.buildHeaderMenu=Qo;exports.createGrid=Ud;exports.measureBestFitWidth=er;exports.openConfirmDialog=rr;exports.toolbarButton=zd;
1
+ 'use strict';var datagridCore=require('@kanunilabs/datagrid-core');function er(l,u){let{controller:f,maxGroupLevels:T,t:v}=u,y=l.columnId,S=f.getColumnModel().getDef(y),A=f.getSort(),R=A.find(O=>O.columnId===y),z=f.getGroupLevels(),q=z.includes(y),N=S?.sortable!==false,V=f.getColumnStates().find(O=>O.id===y)?.pinned??null,se=S?.groupable!==false,W=f.canGroup(),le=[{id:"sort-asc",label:v.sortAsc,disabled:!N||R?.direction==="asc",onSelect:()=>f.setSort([{columnId:y,direction:"asc"}])},{id:"sort-desc",label:v.sortDesc,disabled:!N||R?.direction==="desc",onSelect:()=>f.setSort([{columnId:y,direction:"desc"}])},{id:"sort-clear",label:v.clearSort,disabled:!R,onSelect:()=>f.setSort(A.filter(O=>O.columnId!==y))},{id:"sep-1",separator:true},{id:"group",label:q?v.ungroupColumn:v.groupByColumn,disabled:!se,onSelect:()=>{q?f.groupBy(z.filter(O=>O!==y)):f.groupBy([...z,y].slice(-T));}},{id:"group-panel",label:u.groupPanelVisible?v.hideGroupPanel:v.showGroupPanel,onSelect:u.onToggleGroupPanel},{id:"footer",label:u.footerVisible?v.hideFooter:v.showFooter,onSelect:u.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:v.hideColumn,disabled:f.getColumnStates().filter(O=>O.visible).length<=1,onSelect:()=>f.setColumnVisible(y,false)},{id:"field-chooser",label:v.fieldChooser,onSelect:u.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:v.bestFit,disabled:S?.resizable===false,onSelect:()=>u.onBestFit(y)},{id:"best-fit-all",label:v.bestFitAll,onSelect:u.onBestFitAll}],ee=f.getColumnStates().filter(O=>O.visible&&O.pinned===V).map(O=>O.id),Ee=ee.indexOf(y),M=S?.reorderable!==false&&Ee>=0;return le.push({id:"sep-4",separator:true},{id:"move-left",label:v.moveLeft,disabled:!M||Ee<=0,onSelect:()=>f.moveColumn(y,ee[Ee-1])},{id:"move-right",label:v.moveRight,disabled:!M||Ee<0||Ee>=ee.length-1,onSelect:()=>f.moveColumn(y,ee[Ee+2])},{id:"fixed-position",label:v.fixedPosition,items:[{id:"pin-left",label:v.pinLeft,disabled:V==="left",onSelect:()=>f.setColumnPinned(y,"left")},{id:"pin-right",label:v.pinRight,disabled:V==="right",onSelect:()=>f.setColumnPinned(y,"right")},{id:"pin-sticky",label:v.pinSticky,disabled:V==="sticky",onSelect:()=>f.setColumnPinned(y,"sticky")}]},{id:"unpin",label:v.unpin,disabled:V===null,onSelect:()=>f.setColumnPinned(y,null)}),W?le:le.filter(O=>O.id!=="group"&&O.id!=="group-panel")}async function tr(l,u){try{let f=u==="csv"?await l.exportToCsv():u==="excel"?await l.exportToExcel():u==="excel-selected"?await l.exportToExcel({selectedOnly:!0}):await l.exportToPdf();return datagridCore.downloadBlob(f.blob,f.fileName),{completed:!0}}catch(f){return f instanceof datagridCore.ExportAbortedError?{completed:false}:{completed:false,error:f instanceof Error?f.message:String(f)}}}var Ua=44,za=20,Ya=48,ja=640,qa=null;function Xa(){return typeof document>"u"?null:(qa??=document.createElement("canvas"),qa.getContext("2d"))}function no(l){let u=getComputedStyle(l);return `${u.fontStyle} ${u.fontWeight} ${u.fontSize} ${u.fontFamily}`}function Tl(l){for(let u=l.firstElementChild;u;u=u.nextElementSibling)if(u.tagName!=="MARK")return true;return false}function Ll(l){let u=l.map(T=>[T.style.width,T.style.minWidth,T.style.maxWidth]);for(let T of l)T.style.width="max-content",T.style.minWidth="0",T.style.maxWidth="none";let f=0;for(let T of l){let v=Math.ceil(T.getBoundingClientRect().width);v>f&&(f=v);}return l.forEach((T,v)=>{[T.style.width,T.style.minWidth,T.style.maxWidth]=u[v];}),f}function oo(l,u){let f=Xa();if(!f)return null;let T=datagridCore.cssEscape(u),v=l.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${T}"]`),y=l.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${T}"]`);if(!v&&y.length===0)return null;let S=0;if(v){let A=v.querySelector(".kanuni-datagrid-header-label")??v;f.font=no(A),S=f.measureText(A.textContent??"").width+Ua;}if(y.length>0){f.font=no(y[0]);let A=[];for(let R=0;R<y.length;R++){if(Tl(y[R])){A.push(y[R]);continue}let z=y[R].textContent??"";if(z==="")continue;let q=f.measureText(z).width+za;q>S&&(S=q);}A.length>0&&(S=Math.max(S,Ll(A)));}return S===0?null:Math.round(Math.min(ja,Math.max(Ya,S)))}function Sl(l,u,f){let T=Xa();if(!T)return null;let v=l.querySelector(".kanuni-datagrid-header-label"),y=l.querySelector(".kanuni-datagrid-cell[data-column-id]"),S=0;v&&(T.font=no(v)),S=T.measureText(u).width+Ua,y&&(T.font=no(y));for(let A of f){if(A==="")continue;let R=T.measureText(A).width+za;R>S&&(S=R);}return Math.round(Math.min(ja,Math.max(Ya,S)))}function Ja(l,u){let f=new Map,T=[];for(let R of u.getColumnStates()){if(!R.visible||R.flex)continue;let z=oo(l,R.id);z!==null?f.set(R.id,z):T.push(R.id);}if(T.length===0)return f;let{start:v,end:y}=u.getVirtualWindow().rows,S=[];u.forEachDisplayedNode((R,z)=>{z>=v&&z<y&&R.kind==="data"&&S.push(R.data);});let A=u.getColumnModel();for(let R of T){let z=A.getDef(R),q=S.map(V=>datagridCore.cellDisplayText(z,A.getCellValue(V,R),V)),N=Sl(l,z?.headerName??R,q);N!==null&&f.set(R,N);}return f}function ei(l){let u=Number(l.weekStartsOn);return Number.isInteger(u)&&u>=0&&u<=6?u:0}function Gl(l){let u=[l.weekdaySu,l.weekdayMo,l.weekdayTu,l.weekdayWe,l.weekdayTh,l.weekdayFr,l.weekdaySa],f=ei(l);return [...u.slice(f),...u.slice(0,f)]}function $l(l){return [l.monthJanuary,l.monthFebruary,l.monthMarch,l.monthApril,l.monthMay,l.monthJune,l.monthJuly,l.monthAugust,l.monthSeptember,l.monthOctober,l.monthNovember,l.monthDecember]}function Ol(l,u){return !l||!u?false:l.getFullYear()===u.getFullYear()&&l.getMonth()===u.getMonth()&&l.getDate()===u.getDate()}var Za="http://www.w3.org/2000/svg";function Bl(){let l=document.createElementNS(Za,"svg");l.setAttribute("width","14"),l.setAttribute("height","14"),l.setAttribute("viewBox","0 0 16 16"),l.setAttribute("aria-hidden","true"),l.setAttribute("focusable","false");let u=document.createElementNS(Za,"path");return u.setAttribute("d","M3 4h10v9H3z M3 6.5h10 M5.5 2.5v2 M10.5 2.5v2"),u.setAttribute("fill","none"),u.setAttribute("stroke","currentColor"),u.setAttribute("stroke-width","1.3"),u.setAttribute("stroke-linecap","round"),l.appendChild(u),l}function Yt(l){let{t:u,format:f=datagridCore.DEFAULT_DATE_FORMAT,autoFocus:T=true}=l,v=$l(u),y=Gl(u),S=document.createElement("span");S.className="kanuni-datagrid-date-editor";let A=document.createElement("input");A.type="text",A.inputMode="numeric",A.autocomplete="off",A.placeholder=f,l.ariaLabel&&A.setAttribute("aria-label",l.ariaLabel),l.testId&&A.setAttribute("data-testid",l.testId),l.columnId&&A.setAttribute("data-column-id",l.columnId),l.disabled&&(A.disabled=true);let R=null,z=false,q=null,N=datagridCore.toDate(l.value),V=N??new Date,se=()=>R===null?datagridCore.formatDateValue(l.value,f):datagridCore.maskDate(R,f),W=()=>R===null?null:datagridCore.parseDateValue(datagridCore.maskDate(R,f),f),le=()=>R!==null&&R.length===datagridCore.dateDigitCount(f)&&W()===null,ee=()=>{let G=le()||!!l.invalid;A.className=`kanuni-datagrid-editor${G?" kanuni-datagrid-editor--invalid":""}`,G?A.setAttribute("aria-invalid","true"):A.removeAttribute("aria-invalid");};A.value=se(),ee();let Ee=G=>{if(G===null){l.onChange(null);return}l.onChange(l.value instanceof Date?G:datagridCore.toIsoDate(G));},M=()=>{if(!q)return;if(!A.isConnected){Q();return}let G=A.getBoundingClientRect(),Le=datagridCore.placeAnchoredLayer({anchor:{left:G.left,top:G.top,bottom:G.bottom},width:q.offsetWidth,height:q.offsetHeight,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});q.style.left=`${Le.left}px`,q.style.top=`${Le.top}px`;},O=()=>M();function J(){if(!q)return;q.textContent="";let G=document.createElement("div");G.className="kanuni-datagrid-date-popup-head";let Le=document.createElement("button");Le.type="button",Le.setAttribute("aria-label",u.datePreviousMonth),Le.setAttribute("data-testid","dg-date-prev"),Le.textContent="\u2039",Le.addEventListener("click",()=>{V=new Date(V.getFullYear(),V.getMonth()-1,1),J();});let Ne=document.createElement("span");Ne.setAttribute("data-testid","dg-date-title"),Ne.textContent=`${v[V.getMonth()]} ${V.getFullYear()}`;let ue=document.createElement("button");ue.type="button",ue.setAttribute("aria-label",u.dateNextMonth),ue.setAttribute("data-testid","dg-date-next"),ue.textContent="\u203A",ue.addEventListener("click",()=>{V=new Date(V.getFullYear(),V.getMonth()+1,1),J();}),G.append(Le,Ne,ue);let g=document.createElement("div");g.className="kanuni-datagrid-date-popup-grid",g.setAttribute("role","grid");for(let ce of y){let X=document.createElement("span");X.className="kanuni-datagrid-date-weekday",X.setAttribute("role","columnheader"),X.textContent=ce,g.appendChild(X);}let D=(new Date(V.getFullYear(),V.getMonth(),1).getDay()-ei(u)+7)%7,we=datagridCore.daysInMonth(V.getFullYear(),V.getMonth()+1);for(let ce=0;ce<42;ce++){let X=ce-D+1,ge=new Date(V.getFullYear(),V.getMonth(),X),ye=X<1||X>we,Ce=Ol(ge,W()??N),U=document.createElement("button");U.type="button",U.setAttribute("role","gridcell"),U.className=`kanuni-datagrid-date-day${ye?" kanuni-datagrid-date-day--outside":""}${Ce?" kanuni-datagrid-date-day--selected":""}`,U.setAttribute("aria-selected",String(Ce)),U.setAttribute("data-testid","dg-date-day"),U.setAttribute("data-date",datagridCore.toIsoDate(ge)),U.textContent=String(ge.getDate()),U.addEventListener("click",()=>_(ge)),g.appendChild(U);}q.append(G,g);}function de(){if(z)return;z=true,Z.setAttribute("aria-expanded","true"),V=W()??N??new Date,q=document.createElement("div"),q.className=`kanuni-datagrid-detached kanuni-datagrid-date-popup${l.surfaceClass?` ${l.surfaceClass}`:""}`,q.style.position="fixed",q.setAttribute("data-testid","dg-date-calendar"),q.setAttribute("role","dialog"),q.setAttribute("aria-label",l.ariaLabel?`${l.ariaLabel} ${u.dateCalendar}`:u.dateCalendar),q.addEventListener("mousedown",Le=>Le.preventDefault());let G=datagridCore.portalContainerFor(S);datagridCore.portalTarget(G).appendChild(datagridCore.markPortal(q,G)),window.addEventListener("scroll",O,true),window.addEventListener("resize",O),l.onPortalOpen?.(Q),J(),M();}function Q(){z&&(z=false,Z.setAttribute("aria-expanded","false"),window.removeEventListener("scroll",O,true),window.removeEventListener("resize",O),q?.remove(),q=null);}function _(G){R=null,Q(),Ee(G),A.value=datagridCore.formatDateValue(l.value instanceof Date?G:datagridCore.toIsoDate(G),f),ee(),A.focus({preventScroll:true});}function te(){if(R===null)return;if(R.length===0){Ee(null),R=null,A.value=se(),ee();return}let G=W();G&&Ee(G),R=null,A.value=se(),ee();}A.addEventListener("input",()=>{R=datagridCore.dateDigits(A.value,f),A.value=datagridCore.maskDate(R,f),ee();}),A.addEventListener("keydown",G=>{if(G.key==="Escape"){if(G.preventDefault(),G.stopPropagation(),z){Q();return}R=null,l.onCancel();return}if(z){let Le=G.key==="ArrowLeft"?-1:G.key==="ArrowRight"?1:G.key==="ArrowUp"?-7:G.key==="ArrowDown"?7:0;if(Le!==0){G.preventDefault(),G.stopPropagation();let Ne=W()??N??new Date,ue=new Date(Ne.getFullYear(),Ne.getMonth(),Ne.getDate()+Le);R=datagridCore.dateDigits(datagridCore.formatDateValue(ue,f),f),A.value=datagridCore.maskDate(R,f),V=ue,J(),ee();return}if(G.key==="Enter"){G.preventDefault(),G.stopPropagation();let Ne=W();Q(),Ne&&_(Ne);return}}if(G.key==="Enter"){G.preventDefault(),G.stopPropagation(),te(),l.onCommit();return}if(G.key==="Tab"){te(),Q(),l.onTab&&(G.preventDefault(),G.stopPropagation(),l.onTab(G.shiftKey));return}if(G.key.length===1&&!G.ctrlKey&&!G.metaKey&&!/\d/.test(G.key)){G.preventDefault();return}G.stopPropagation();}),A.addEventListener("blur",()=>{z||te();});let Z=document.createElement("button");return Z.type="button",Z.className="kanuni-datagrid-date-button",Z.setAttribute("aria-label",l.ariaLabel?`${l.ariaLabel} \u2014 ${u.dateOpenCalendar}`:u.dateOpenCalendar),Z.setAttribute("aria-expanded","false"),Z.setAttribute("data-testid","dg-date-open"),l.disabled&&(Z.disabled=true),Z.tabIndex=-1,Z.addEventListener("mousedown",G=>G.preventDefault()),Z.addEventListener("click",()=>{z?Q():de(),A.focus({preventScroll:true});}),Z.appendChild(Bl()),S.append(A,Z),T&&queueMicrotask(()=>{A.isConnected&&(A.focus({preventScroll:true}),A.select());}),S}function ti(l,u){return l==null?"":u==="date"&&l instanceof Date?l.toISOString().slice(0,10):String(l)}function ni(l,u){if(u){let f=document.createElement("span");f.id="kanuni-datagrid-editor-error",f.setAttribute("role","alert"),f.className="kanuni-datagrid-editor-error",f.textContent=u,l.appendChild(f);}return l}function rr(l){let{value:u,dataType:f,error:T,seeded:v=false}=l,y=document.createDocumentFragment();if(l.options===null){let R=document.createElement("input");return R.type="text",R.value="\u2026",R.readOnly=true,R.disabled=true,R.className="kanuni-datagrid-editor",R.setAttribute("data-testid","dg-cell-editor"),y.appendChild(R),y}if(l.options&&l.options.length>0&&l.renderLookup)return y.appendChild(l.renderLookup({options:l.options,value:u,matchMode:l.matchMode,allowCustom:l.allowCustom,invalid:!!T,testId:"dg-cell-editor",ariaLabel:l.ariaLabel,surfaceClass:l.surfaceClass,onPortalOpen:l.onPortalOpen,noMatchText:l.t?.editNoMatch??"No match",onChange:l.onChange,onCommit:()=>l.onCommit("none"),onCancel:l.onCancel,onTab:R=>l.onTab(R?-1:1)})),ni(y,T);if(f==="date"&&l.t)return y.appendChild(Yt({value:u,format:l.dateFormat,invalid:!!T,testId:"dg-cell-editor",ariaLabel:l.ariaLabel,surfaceClass:l.surfaceClass,onPortalOpen:l.onPortalOpen,t:l.t,onChange:l.onChange,onCommit:()=>l.onCommit("none"),onCancel:l.onCancel,onTab:R=>l.onTab(R?-1:1)})),ni(y,T);let S=document.createElement("input");S.className=`kanuni-datagrid-editor${T?" kanuni-datagrid-editor--invalid":""}`,S.setAttribute("data-testid","dg-cell-editor"),S.setAttribute("aria-invalid",String(!!T)),T&&S.setAttribute("aria-errormessage","kanuni-datagrid-editor-error");let A=false;if(f==="boolean"?(S.type="checkbox",S.checked=u===true,S.addEventListener("change",()=>l.onChange(S.checked))):f==="number"?(S.type=Number.isNaN(Number(u))&&u!==null&&u!==void 0&&u!==""?"text":"number",S.value=ti(u,f),S.addEventListener("input",()=>l.onChange(S.value===""?null:Number(S.value)))):(S.type="text",S.value=ti(u,f),S.addEventListener("input",()=>l.onChange(S.value))),S.addEventListener("keydown",R=>{R.isComposing||R.keyCode===229||(R.key==="Enter"?(R.preventDefault(),R.stopPropagation(),l.onCommit(R.shiftKey?"none":"down")):R.key==="Tab"?(R.preventDefault(),R.stopPropagation(),A=true,l.onTab(R.shiftKey?-1:1)):R.key==="Escape"?(R.preventDefault(),R.stopPropagation(),l.onCancel()):R.stopPropagation());}),S.addEventListener("blur",()=>{A||l.onCommit("none");}),y.appendChild(S),T){let R=document.createElement("span");R.id="kanuni-datagrid-editor-error",R.setAttribute("role","alert"),R.className="kanuni-datagrid-editor-error",R.textContent=T,y.appendChild(R);}return queueMicrotask(()=>{if(S.isConnected&&(S.focus({preventScroll:true}),S.type!=="checkbox"))if(v){if(S.type==="text"||S.type==="search"){let R=S.value.length;S.setSelectionRange(R,R);}}else S.select();}),y}var ql=0;function ar(l){return new Promise(u=>{let f=document.createElement("div");f.className=`kanuni-datagrid-detached kanuni-datagrid-dialog-root${l.surfaceClass?` ${l.surfaceClass}`:""}`,f.setAttribute("role","presentation");let T=document.activeElement,v=W=>{document.removeEventListener("keydown",y,true);let le=f.contains(document.activeElement);f.remove(),le&&T?.isConnected&&T.focus({preventScroll:true}),u(W);},y=W=>{if(W.key==="Escape"){W.stopPropagation(),v(false);return}if(W.key==="Tab"){let le=Array.from(N.querySelectorAll("button:not([disabled])"));if(le.length===0)return;let ee=le.indexOf(document.activeElement),Ee=W.shiftKey?ee<=0?le.length-1:ee-1:ee===le.length-1?0:ee+1;W.preventDefault(),W.stopPropagation(),le[Ee].focus();}};document.addEventListener("keydown",y,true);let S=document.createElement("div");S.className="kanuni-datagrid-dialog-overlay",S.addEventListener("mousedown",()=>v(false));let A=document.createElement("div");A.className="kanuni-datagrid-dialog",A.setAttribute("role","alertdialog"),A.setAttribute("aria-modal","true");let R=`dg-dialog-${++ql}`;A.setAttribute("aria-labelledby",`${R}-title`),A.setAttribute("aria-describedby",`${R}-message`),A.setAttribute("data-testid","dg-dialog");let z=document.createElement("div");z.className="kanuni-datagrid-dialog-title",z.id=`${R}-title`,z.textContent=l.title;let q=document.createElement("div");q.className="kanuni-datagrid-dialog-message",q.id=`${R}-message`,q.textContent=l.message;let N=document.createElement("div");if(N.className="kanuni-datagrid-dialog-actions",l.cancelLabel!==void 0){let W=document.createElement("button");W.type="button",W.setAttribute("data-testid","dg-dialog-cancel"),W.textContent=l.cancelLabel,W.addEventListener("click",()=>v(false)),N.appendChild(W);}let V=document.createElement("button");V.type="button",V.className=`kanuni-datagrid-dialog-primary${l.danger?" kanuni-datagrid-dialog-primary--danger":""}`,V.setAttribute("data-testid","dg-dialog-confirm"),V.textContent=l.confirmLabel,V.addEventListener("click",()=>v(true)),N.appendChild(V),A.append(z,q,N),f.append(S,A);let se=datagridCore.portalContainerFor(l.anchor);datagridCore.portalTarget(se).appendChild(datagridCore.markPortal(f,se)),V.focus();})}function Ul(l,u){switch(l){case "number":return u==null||u===""||!Number.isNaN(Number(u))?"number":"text";case "boolean":return "checkbox";default:return "text"}}function zl(l,u){if(u==="number"){if(l==="")return null;let f=Number(l);return Number.isNaN(f)?l:f}return l}function ir(l){let{t:u,popup:f=false,inline:T=false}=l,v=document.createElement("div");v.className=`kanuni-datagrid-edit-form${T?" kanuni-datagrid-edit-form--inline":""}`,v.setAttribute("data-testid","dg-edit-form"),v.setAttribute("data-row-key",String(l.rowKey)),f&&v.setAttribute("data-popup",""),v.setAttribute("role",f?"dialog":"group"),f&&v.setAttribute("aria-modal","true"),v.setAttribute("aria-label",l.isNew?u.formAddTitle:u.formEditTitle);let y=document.createElement("div");y.className="kanuni-datagrid-edit-form-header";let S=document.createElement("strong");S.textContent=l.isNew?u.formAddTitle:u.formEditTitle,y.appendChild(S);let A=document.createElement("div");A.className="kanuni-datagrid-edit-form-error",A.setAttribute("role","alert"),A.setAttribute("data-testid","dg-form-error"),A.style.display="none";let R=document.createElement("div");R.className="kanuni-datagrid-edit-form-fields";let z=new Map,q=(M,O)=>{let J=l.getValue(M.columnId),de=l.getSaving()||!M.editable,Q=`dg-field-${String(l.rowKey)}-${M.columnId}`;if(M.lookup&&!l.renderLookup){let te=document.createElement("input");te.id=Q,te.type="text",te.className="kanuni-datagrid-edit-form-input",te.setAttribute("data-testid",Q),te.disabled=true,te.readOnly=true;let Z=M.lookup.options?.find(G=>Object.is(G.value,J));return te.value=Z?Z.label:J==null?"":String(J),te}if(M.lookup&&l.renderLookup){let te=document.createElement("div");if(te.className="kanuni-datagrid-edit-form-lookup",M.lookup.options===null){let Z=document.createElement("input");return Z.type="text",Z.value="\u2026",Z.readOnly=true,Z.disabled=true,Z.className="kanuni-datagrid-editor",Z.setAttribute("data-testid",Q),te.appendChild(Z),te}return te.appendChild(l.renderLookup({options:M.lookup.options,value:J,matchMode:M.lookup.matchMode,allowCustom:M.lookup.allowCustom,invalid:!!O,autoFocus:false,testId:Q,columnId:M.columnId,ariaLabel:M.label,surfaceClass:l.surfaceClass,onPortalOpen:l.onPortalOpen,noMatchText:u.editNoMatch,onChange:Z=>l.onChange(M.columnId,Z),commitOnPick:false,onCommit:()=>l.onSave(),onCancel:l.onCancel})),te}if(M.dataType==="date"){let te=document.createElement("div");return te.className="kanuni-datagrid-edit-form-lookup",te.appendChild(Yt({value:J,format:M.dateFormat,invalid:!!O,disabled:de,autoFocus:false,testId:Q,columnId:M.columnId,ariaLabel:M.label,surfaceClass:l.surfaceClass,onPortalOpen:l.onPortalOpen,t:u,onChange:Z=>l.onChange(M.columnId,Z),onCommit:()=>l.onSave(),onCancel:l.onCancel})),te}let _=document.createElement("input");return _.id=Q,_.className="kanuni-datagrid-edit-form-input",_.setAttribute("data-testid",Q),_.disabled=de,M.dataType==="boolean"?(_.type="checkbox",_.checked=J===true,_.addEventListener("change",()=>l.onChange(M.columnId,_.checked)),_):(_.type=Ul(M.dataType,J),O&&_.setAttribute("aria-invalid","true"),_.value=J==null?"":String(J),_.addEventListener("input",()=>l.onChange(M.columnId,zl(_.value,M.dataType))),_)},N=l.getErrors();for(let M of l.fields){let O=document.createElement("label");O.className="kanuni-datagrid-edit-form-field",O.setAttribute("data-field-id",M.columnId);let J=document.createElement("span");J.className="kanuni-datagrid-edit-form-label",J.textContent=M.label;let de=document.createElement("span");de.style.display="contents",de.appendChild(q(M,N[M.columnId]??null));let Q=document.createElement("span");Q.className="kanuni-datagrid-edit-form-message",Q.setAttribute("role","alert"),Q.style.display="none",O.append(J,de,Q),R.appendChild(O),z.set(M.columnId,{wrap:O,message:Q,controlHost:de,field:M});}let V=document.createElement("div");V.className="kanuni-datagrid-edit-form-footer";let se=typeof navigator<"u"&&/Mac|iP(hone|ad)/.test(navigator.platform??""),W=document.createElement("span");W.className="kanuni-datagrid-edit-form-hint",W.textContent=u.formShortcut.replace("{key}",se?"\u2318":"Ctrl");let le=document.createElement("button");le.type="button",le.setAttribute("data-testid","dg-form-cancel"),le.textContent=u.cancel,le.addEventListener("click",()=>l.onCancel());let ee=document.createElement("button");ee.type="button",ee.className="kanuni-datagrid-edit-form-save",ee.setAttribute("data-testid","dg-form-save"),ee.textContent=u.save,ee.addEventListener("click",()=>l.onSave()),V.append(W,le,ee),v.append(y,A,R,V),v.addEventListener("keydown",M=>{if(M.key==="Escape"){M.preventDefault(),M.stopPropagation(),l.onCancel();return}if(M.key==="Enter"&&(M.ctrlKey||M.metaKey)){M.preventDefault(),M.stopPropagation(),l.onSave();return}if(M.key==="Enter"&&!(M.target instanceof HTMLButtonElement)){M.preventDefault();return}if(M.key!=="Tab"||!f)return;let O=Array.from(v.querySelectorAll("input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled])"));if(O.length===0)return;let J=O[0],de=O[O.length-1];!M.shiftKey&&document.activeElement===de?(M.preventDefault(),J.focus()):M.shiftKey&&document.activeElement===J&&(M.preventDefault(),de.focus());});let Ee=()=>{let M=l.getErrors(),O=l.getSaving(),J=l.getSaveError();A.textContent=J??"",A.style.display=J?"":"none",ee.disabled=O,le.disabled=O,ee.textContent=O?u.editSaving:u.save;for(let[Q,_]of z){let te=M[Q]??null;_.message.textContent=te??"",_.message.style.display=te?"":"none",te?_.wrap.setAttribute("data-invalid",""):_.wrap.removeAttribute("data-invalid");let Z=_.controlHost.querySelector("input, .kanuni-datagrid-editor");Z&&Z.classList.toggle("kanuni-datagrid-editor--invalid",!!te);}let de=Object.keys(M)[0];de&&z.get(de)?.wrap.querySelector("input:not([disabled])")?.focus();};return queueMicrotask(()=>{if(!v.isConnected)return;let M=v.querySelector("input:not([disabled]), select:not([disabled]), textarea:not([disabled])");M?.focus(),M instanceof HTMLInputElement&&M.type==="text"&&M.select(),l.onNaturalHeight&&l.onNaturalHeight(v.clientHeight-R.clientHeight+R.scrollHeight);}),{element:v,refresh:Ee,setLookupOptions:(M,O)=>{let J=z.get(M);if(!J)return;J.field.lookup={...J.field.lookup,options:O};let de=l.getErrors();J.controlHost.textContent="",J.controlHost.appendChild(q(J.field,de[M]??null));},dispose:()=>v.remove()}}function ri(l){let{grid:u,engine:f,mode:T,t:v,extension:y}=l,S=u.controller,A=datagridCore.isRowEditMode(T),R=null,z=async()=>{R=null;let k=await f.saveChanges();if(k.saved||k.superseded){U();return}R={message:k.error??v.editSaveFailed,rowKey:k.rowKey,columnId:k.columnId},U(),k.rowKey!==void 0&&k.columnId!==void 0&&(S.revealRow(k.rowKey),S.focusCell(k.rowKey,k.columnId));},q=()=>{R=null,f.cancelChanges();},N=null,V=null,se=null,W=null,le=null,ee=new Map,Ee=0,M=k=>(N=null,f.beginRowEdit(k)),O=null,J=(k,P,oe)=>!A||f.isEditingRow()||!f.canEditRow(k)||(S.scrollToCell(k,P),!M(k))?false:(T==="row"&&oe!==void 0&&(O=P,f.setRowEditValue(P,oe)),true),de=async()=>{if(!f.getRowSession())return false;let P=await f.saveRowEdit(S.getVisualColumnIds());return N=P.saved?null:P.error??null,P.saved?l.focusGrid():be(),P.saved},Q=()=>{N=null,f.cancelRowEdit(),l.focusGrid();},_=k=>{let P=S.getColumnLayout(),oe=S.getColumnModel(),Re=++Ee;return [...P.left,...P.center,...P.right].filter(he=>!datagridCore.isChromeColumn(he.state.id)).map(he=>{let ve=he.state.id,Pe=oe.getDef(ve),at=y.formLookup?y.formLookup(k,ve,it=>{Ee===Re&&se?.setLookupOptions(ve,it);}):Pe?.lookup?{options:datagridCore.staticLookupItems(Pe)??[]}:void 0;return {columnId:ve,label:Pe?.headerName??Pe?.field??ve,dataType:oe.getEditorDataType(ve),editable:f.canUpdate(k,ve),dateFormat:Pe?.dateFormat,lookup:at}})},te=()=>le??l.formHeight??datagridCore.DEFAULT_EDIT_FORM_HEIGHT,Z=(k,P)=>ir({rowKey:k,fields:_(k),getValue:oe=>f.rowEditValue(oe),getErrors:()=>f.getRowSession()?.errors??{},getSaving:()=>f.getRowSession()?.saving??false,getSaveError:()=>N,isNew:f.getRowSession()?.isNew??false,popup:!P,inline:P,surfaceClass:l.surfaceClass(),renderLookup:y.renderLookup,onPortalOpen:l.trackPortal,t:v,onNaturalHeight:P?oe=>{let Re=Math.ceil(oe);if(Re>0&&Re!==le){le=Re;let he=f.getRowSession();he&&T==="form"&&S.setEditFormRow(he.rowKey,{height:te(),atTop:he.isNew});}}:void 0,onChange:(oe,Re)=>f.setRowEditValue(oe,Re),onSave:()=>{de();},onCancel:Q}),G=()=>{ee.clear(),se?.dispose(),se=null,W?.remove(),W=null;};function Le(){if(!A)return;let k=f.getRowSession();if(k&&T!=="row"?u.element.setAttribute("data-row-session",T):u.element.removeAttribute("data-row-session"),!k){V!==null&&(V=null,le=null,G(),T==="form"&&S.setEditFormRow(null));return}if(V===k.rowKey){se?.refresh();return}if(G(),V=k.rowKey,T==="form"){S.setEditFormRow(k.rowKey,{height:te(),atTop:k.isNew}),S.revealRow(k.rowKey);return}if(T==="popup"){let P=l.surfaceClass();W=document.createElement("div"),W.className=`kanuni-datagrid-detached kanuni-datagrid-edit-popup${P?` ${P}`:""}`;let oe=document.createElement("div");oe.className="kanuni-datagrid-edit-popup-overlay",oe.addEventListener("mousedown",()=>Q()),se=Z(k.rowKey,false),W.append(oe,se.element);let Re=datagridCore.portalContainerFor(l.barHost);datagridCore.portalTarget(Re).appendChild(datagridCore.markPortal(W,Re));return}S.revealRow(k.rowKey),queueMicrotask(()=>{let P=f.getRowSession();if(!P||P.rowKey!==V)return;let oe=u.element.querySelectorAll('[data-testid="dg-row-editor"]');if(oe.length===0)return;let Re=S.getFocus(),ve=(Re&&String(Re.rowKey)===String(P.rowKey)?u.element.querySelector(`[data-testid="dg-row-editor"][data-column-id="${datagridCore.cssEscape(Re.columnId)}"]`):null)??oe[0],Pe=O!==null&&ve.getAttribute("data-column-id")===O;O=null,ve.focus({preventScroll:true}),ve instanceof HTMLInputElement&&(Pe?ve.setSelectionRange(ve.value.length,ve.value.length):ve.select());});}let Ne=k=>{let P=ee.get(k);if(P)return P;let oe=S.getColumnModel(),Re=oe.getDef(k),he=oe.getEditorDataType(k),ve=f.rowEditValue(k),Pe=f.getRowSession()?.errors[k]??null,at=Re?.headerName??k,it,et=y.resolveLookup?.(V,k);if(et&&et.options!==void 0&&y.renderLookup)it=y.renderLookup({options:et.options??[],value:ve,matchMode:et.matchMode,allowCustom:et.allowCustom,invalid:!!Pe,autoFocus:false,testId:"dg-row-editor",columnId:k,ariaLabel:at,surfaceClass:l.surfaceClass(),noMatchText:v.editNoMatch,onChange:xe=>f.setRowEditValue(k,xe),commitOnPick:false,onCommit:()=>{de();},onCancel:Q});else if(he==="date")it=Yt({value:ve,format:Re?.dateFormat,invalid:!!Pe,autoFocus:false,testId:"dg-row-editor",columnId:k,ariaLabel:at,surfaceClass:l.surfaceClass(),onPortalOpen:l.trackPortal,t:v,onChange:xe=>f.setRowEditValue(k,xe),onCommit:()=>{de();},onCancel:Q});else {let xe=document.createElement("input");xe.className=`kanuni-datagrid-editor${Pe?" kanuni-datagrid-editor--invalid":""}`,xe.setAttribute("data-testid","dg-row-editor"),xe.setAttribute("data-column-id",k),xe.setAttribute("aria-label",at),Pe&&(xe.title=Pe),he==="boolean"?(xe.type="checkbox",xe.checked=ve===true,xe.addEventListener("change",()=>f.setRowEditValue(k,xe.checked))):(xe.type=he==="number"?"number":"text",xe.value=ve==null?"":String(ve),xe.addEventListener("input",()=>{let _e=xe.value;f.setRowEditValue(k,he==="number"?_e===""?null:Number(_e):_e);})),xe.addEventListener("keydown",_e=>{_e.key==="Enter"?(_e.preventDefault(),_e.stopPropagation(),de()):_e.key==="Escape"?(_e.preventDefault(),_e.stopPropagation(),Q()):_e.stopPropagation();}),it=xe;}return ee.set(k,it),it},ue=document.createElement("div");ue.className="kanuni-datagrid-filter-bar kanuni-datagrid-edit-bar",ue.setAttribute("data-testid","dg-edit-bar"),y.decorateBar?.(ue);let g=(k,P,oe,Re)=>{let he=document.createElement("button");return he.type="button",oe&&(he.className="kanuni-datagrid-filter-primary"),he.setAttribute("data-testid",k),he.textContent=P,he.addEventListener("click",Re),he},I=k=>{let P=document.createElement("span");return P.className="kanuni-datagrid-edit-form-error",P.setAttribute("data-testid",k),P.style.display="none",P},D=null,we=null,ce=null,X=null,ge=null,ye=null,Ce=null;T==="batch"&&(D=g("dg-save-changes",v.editSaveChanges,true,()=>{z();}),we=g("dg-discard-changes",v.editDiscardChanges,false,q),ce=I("dg-save-error"),ue.append(D,we,ce)),T==="row"&&(X=document.createElement("span"),X.setAttribute("data-testid","dg-row-editing"),X.className="kanuni-datagrid-filter-active",X.style.display="none",ge=g("dg-save-row",v.editSaveRow,true,()=>{de();}),ge.style.display="none",ye=g("dg-cancel-row",v.cancel,false,Q),ye.style.display="none",Ce=I("dg-row-save-error"),ue.append(X,ge,ye,Ce)),ue.childElementCount>0&&l.barHost?.appendChild(ue);function U(){let k=f.hasChanges();if(D&&(D.style.display=k?"":"none",D.textContent=v.editSaveCount.replace("{n}",String(f.getChanges().length)),D.disabled=f.isSaving()),we&&(we.style.display=k?"":"none"),ce&&(ce.textContent=R?.message??"",ce.style.display=R?"":"none"),X&&ge&&ye&&Ce){let P=f.getRowSession(),oe=P?"":"none";X.style.display=oe,ge.style.display=oe,ye.style.display=oe,P&&(X.textContent=P.isNew?v.formAddTitle:v.editEditingRow.replace("{row}",String(P.rowKey)),ge.disabled=P.saving,ge.textContent=P.saving?v.editSaving:v.editSaveRow,ye.disabled=P.saving),Ce.textContent=N??"",Ce.style.display=P&&N?"":"none";}ue.style.display=Array.from(ue.children).some(P=>P.style.display!=="none")?"":"none";}U();function be(){R=null,U(),Le();}return {rowModeActive:A,beginRowEdit:M,openRowFromKeys:J,saveRowEdit:de,cancelRowEdit:Q,saveChanges:z,cancelChanges:q,renderRowCell:k=>{if(!(T!=="row"||k.node.kind!=="data"||datagridCore.isChromeColumn(k.columnId))&&f.isEditingRow(k.node.key))return f.canUpdate(k.node.key,k.columnId)?Ne(k.columnId):l.defaultContent(k,f.rowEditValue(k.columnId))},renderEditForm:k=>{if(T!=="form")return;let P=f.getRowSession();if(!(!P||P.rowKey!==k))return (!se||se.element.getAttribute("data-row-key")!==String(k))&&(se?.dispose(),se=Z(k,true)),se.element},onCellDoubleClick:k=>A?(k.node.kind==="data"&&!f.isEditingRow()&&f.canEditRow(k.node.key)&&M(k.node.key),true):false,handleRowKeys:k=>!f.isEditingRow()||k.target?.closest?.('[data-testid="dg-edit-form"]')?false:k.key==="Enter"?(k.preventDefault(),de(),true):k.key==="Escape"?(k.preventDefault(),Q(),true):false,sync:be,dispose:()=>{G(),T==="form"&&V!==null&&S.setEditFormRow(null),V=null,u.element.removeAttribute("data-row-session"),ue.remove();}}}function dr(l,u,f,T,v={}){let y=l.controller,S=u.mode??"cell";u.formLabels&&(f={...f,...u.formLabels});let A=v.isColumnEditable??(g=>y.getColumnModel().getDef(g)?.editable!==false),R=()=>{y.refreshCells(),_.sync(),v.onChange?.(),z.schedule("footer",()=>y.refreshSummaries());},z=datagridCore.createDebouncedCommit(150),q=g=>y.getRowByKey(g),N=new datagridCore.EditingEngine({mode:S,messages:f,onChange:R,onAutoSaveFailed:g=>le(g),onCellValueChanged:g=>y.notifyCellValueChanged(g),onEditingStarted:g=>y.notifyEditingStarted(g),onEditingStopped:g=>y.notifyEditingStopped(g),onRowEditingStarted:g=>y.notifyRowEditingStarted(g),onRowEditingStopped:g=>y.notifyRowEditingStopped(g),onChangesChanged:g=>y.notifyChangesChanged(g),editableColumns:g=>{let I=y.getColumnLayout();return [...I.left,...I.center,...I.right].map(D=>D.state.id).filter(D=>!datagridCore.isChromeColumn(D)&&N.canUpdate(g,D))},readValue:(g,I)=>{let D=q(g);return D?y.getColumnModel().getStoredValue(D,I):void 0},formatForEdit:(g,I,D)=>y.formatCellForEdit(I,D),parseFromEdit:(g,I,D)=>y.parseCellFromEdit(I,D,g),readRow:q,isColumnEditable:A,applyValue:(g,I,D)=>y.writeCellValue(g,I,D),storedValue:(g,I,D)=>y.valueAfterWrite(g,I,D),onSave:g=>u.onSave?.(g),...v.engine});y.setPendingValueReader({effectiveValue:(g,I,D)=>N.changes.effectiveValue(g,I,D),effectiveRow:(g,I)=>N.changes.applyPendingTo(g,I),hasPending:()=>N.changes.hasChanges()}),y.setEditingDelegate({startEditingCell:(g,I)=>(y.scrollToCell(g,I),N.beginEdit(g,I)),stopEditing:async g=>{if(N.isEditingRow())return g?(_.cancelRowEdit(),true):_.saveRowEdit();if(!N.getSession())return false;if(g)return N.cancelEdit(),W(),true;let I=N.commitEdit();return I&&W(),I},getEditingCells:()=>{let g=N.getRowSession();if(g)return y.getVisualColumnIds().filter(D=>!datagridCore.isChromeColumn(D)&&N.canUpdate(g.rowKey,D)).map(D=>({rowKey:g.rowKey,columnId:D}));let I=N.getSession();return I?[{rowKey:I.rowKey,columnId:I.columnId}]:[]}});let V=false,se=[y.events.on("rowsChanged",g=>{V=g.removed===0;}),y.events.on("dataUpdated",()=>{let g=V;V=false,!g&&N.retainKeys(new Set(y.getDataRows().map(I=>I.key)));})];function W(){let g=l.element.querySelector(".kanuni-datagrid-scroller");(g&&g.tabIndex>=0?g:l.element).focus({preventScroll:true});}function le(g){let I=g.columnId!==void 0?y.getColumnModel().getDef(g.columnId)?.headerName??g.columnId:null,D=g.error??f.editSaveFailed;ar({title:f.editCannotSave,message:I?`${I}: ${D}`:D,confirmLabel:f.ok,surfaceClass:T.surfaceClass(),anchor:l.element}),g.rowKey!==void 0&&g.columnId!==void 0&&(y.revealRow(g.rowKey),y.focusCell(g.rowKey,g.columnId));}let ee=(g,I={})=>{let D=N.getSession(),we=D?{rowKey:D.rowKey,columnId:D.columnId}:y.getFocus();if(!we||!N.commitEdit())return false;let ce=y.getColumnModel().runtime().filter(U=>U.state.visible).map(U=>U.state.id);if(datagridCore.edgeEditableColumn(ce,A,1)===null)return false;let X=y.getRows(),ge=X.findIndex(U=>U.key===we.rowKey);if(ge<0)return false;let ye=datagridCore.nextEditableColumn(ce,A,we.columnId,g);if(ye===null){if(I.cycle===false)return false;let U=g;do ge+=U;while(ge>=0&&ge<X.length&&X[ge]?.kind!=="data");if(ge<0||ge>=X.length)return false;ye=datagridCore.edgeEditableColumn(ce,A,g);}let Ce=X[ge];return !Ce||Ce.kind!=="data"?false:y.focusCell(Ce.key,ye)?(y.scrollToCell(Ce.key,ye),I.open===true?N.beginEdit(Ce.key,ye):(W(),true)):(W(),false)},Ee=g=>{if(N.getSession())return false;let I=y.getFocus();if(!I||!A(I.columnId))return false;let D=y.getColumnModel().getEditorDataType(I.columnId);if(D==="boolean"||D==="date")return false;let we=D==="number"?Number.isNaN(Number(g))?null:Number(g):g;return we===null?false:_.rowModeActive?_.openRowFromKeys(I.rowKey,I.columnId,we):(y.scrollToCell(I.rowKey,I.columnId),N.beginEdit(I.rowKey,I.columnId,we))},M=null,O=new Set,J=g=>{let I=()=>{O.delete(I),g();};O.add(I);},de=()=>{for(let g of [...O])g();O.clear();},Q=(g,I)=>{let D=y.getColumnModel().getDef(g.columnId),we=g.node.data;if(D?.renderCell)return D.renderCell({value:I,row:we,node:g.node,column:D});let ce=datagridCore.lookupLabel(D,I);if(ce!==null)return ce;if(D?.valueFormatter){let X=D.valueFormatter(I,we);return typeof X=="string"?X:String(X??"")}return D?.dateFormat&&D.dataType==="date"?datagridCore.formatDateValue(I,D.dateFormat):I==null?"":String(I)},_=ri({grid:l,engine:N,mode:S,t:f,formHeight:u.formHeight,surfaceClass:()=>T.surfaceClass(),barHost:T.barHost,focusGrid:W,trackPortal:J,defaultContent:Q,extension:v}),te=g=>{if(g.node.kind!=="data")return;let I=_.renderRowCell(g);if(I!==void 0)return I;if(!N.isEditing(g.node.key,g.columnId)){M&&M.rowKey===g.node.key&&M.columnId===g.columnId&&(M=null);let U=N.getMode()==="cell"?void 0:N.changes.get(g.node.key,g.columnId),be=v.cellAdornment?.(g)??null;if(!U&&!be)return;let k=U?U.newValue:g.value,P=document.createElement("span");P.style.display="contents";let oe=Q(g,k);return typeof oe=="string"?P.appendChild(document.createTextNode(oe)):P.appendChild(oe),be&&P.appendChild(be),P}let D=N.getSession();if(M&&M.rowKey===D.rowKey&&M.columnId===g.columnId)return M.setError(D.validation.message),M.container;let we=y.getColumnModel().getDef(g.columnId),ce=v.resolveLookup?.(D.rowKey,g.columnId)??{options:void 0},X=document.createElement("span");X.style.display="contents";let ge=v.customEditors?we?.renderEditor:void 0;if(ge){let U=new Set,be=ge({value:N.getSession()?.value??D.value,row:N.effectiveRow(D.rowKey),columnId:g.columnId,error:D.validation.message,onErrorChange:k=>(U.add(k),()=>U.delete(k)),setValue:k=>N.setEditValue(k),commit:()=>{N.commitEdit()&&W();},cancel:()=>{N.cancelEdit(),W();}});return X.appendChild(be),M={rowKey:D.rowKey,columnId:g.columnId,container:X,setError:k=>{for(let P of U)P(k);}},X}let ye=U=>{X.textContent="",X.appendChild(rr({value:N.getSession()?.value??D.value,dataType:y.getColumnModel().getEditorDataType(g.columnId),error:U,seeded:D.seeded,onPortalOpen:J,options:ce.options,allowCustom:ce.allowCustom,matchMode:ce.matchMode,renderLookup:v.renderLookup,dateFormat:we?.dateFormat,ariaLabel:we?.headerName??g.columnId,surfaceClass:T.surfaceClass(),t:f,onChange:be=>N.setEditValue(be),onCommit:be=>{N.commitEdit()&&(be==="down"&&y.moveFocus("down"),W());},onTab:be=>{if(u.focusCellOnTab===false){N.commitEdit();return}ee(be,{open:v.keepEditingOnTab===true,cycle:u.focusCellOnCycle!==false});},onCancel:()=>{N.cancelEdit(),W();}}));};ye(D.validation.message);let Ce=D.validation.message;if(M={rowKey:D.rowKey,columnId:g.columnId,container:X,setError:U=>{if(U===Ce)return;Ce=U,X.querySelector(".kanuni-datagrid-editor")?.classList.toggle("kanuni-datagrid-editor--invalid",!!U);let k=X.querySelector(".kanuni-datagrid-editor-error");U&&!k&&(k=document.createElement("span"),k.id="kanuni-datagrid-editor-error",k.setAttribute("role","alert"),k.className="kanuni-datagrid-editor-error",X.appendChild(k)),k&&(k.textContent=U??"",U||k.remove());}},ce.options===null&&v.resolveLookup){let U=v.resolveLookup,be=()=>{let P=U(D.rowKey,g.columnId);P.options!==null&&M&&M.rowKey===D.rowKey&&M.columnId===g.columnId&&N.isEditing(D.rowKey,g.columnId)&&(ce.options=P.options,ye(N.getSession()?.validation.message??null));},k=y.events.on("cellsRefreshed",()=>{be(),U(D.rowKey,g.columnId).options!==null&&k();});}return X},Z=g=>{if(g.node.kind!=="data")return;let I=[];return N.isEditing(g.node.key,g.columnId)&&I.push("kanuni-datagrid-cell--editing"),N.changes.isDirty(g.node.key,g.columnId)&&I.push("kanuni-datagrid-cell--dirty"),N.isRemoved(g.node.key)&&I.push("kanuni-datagrid-cell--removed"),I.length?I.join(" "):void 0},G=g=>{g.node.kind==="data"&&(y.isRowLeaveBlocked(g.node.key)||_.onCellDoubleClick(g)||N.canUpdate(g.node.key,g.columnId)&&(y.scrollToCell(g.node.key,g.columnId),N.beginEdit(g.node.key,g.columnId)));},Le=g=>{let I=g.target;return I?.closest?.('[data-testid="dg-edit-form"], [data-testid="dg-row-message"]')?true:(g.key==="Tab"||g.key==="Enter"||g.key===" ")&&!!I?.closest?.('[data-testid="dg-edit-bar"]')},Ne=g=>Le(g)?false:_.handleRowKeys(g)?true:g.key==="Escape"&&N.getSession()?(g.preventDefault(),N.cancelEdit(),true):g.key==="Tab"&&u.focusCellOnTab!==false&&!N.getSession()&&y.getFocus()&&ee(g.shiftKey?-1:1,{open:v.keepEditingOnTab===true,cycle:u.focusCellOnCycle!==false})?(g.preventDefault(),true):false,ue=g=>{if(Le(g))return false;let I=g.ctrlKey||g.metaKey;if(g.key==="F2"){let D=y.getFocus();if(D)return g.preventDefault(),_.rowModeActive?(_.openRowFromKeys(D.rowKey,D.columnId),true):(y.scrollToCell(D.rowKey,D.columnId),N.beginEdit(D.rowKey,D.columnId),true)}return u.editOnKeyPress!==false&&!I&&!g.altKey&&g.key.length===1&&g.key!==" "&&!N.getSession()&&Ee(g.key)?(g.preventDefault(),true):false};return {engine:N,renderCellContent:te,getCellClassName:Z,onCellDoubleClick:G,handleKeyDown:g=>Ne(g)||ue(g),handleSessionKeys:Ne,handleOpenKeys:ue,editAdjacentCell:ee,focusGrid:W,trackPortal:J,defaultContent:Q,renderEditForm:_.renderEditForm,beginRowEdit:_.beginRowEdit,saveRowEdit:_.saveRowEdit,cancelRowEdit:_.cancelRowEdit,saveChanges:_.saveChanges,cancelChanges:_.cancelChanges,dispose:()=>{de(),_.dispose(),N.dispose(),z.cancelAll(),se.forEach(g=>g()),y.setPendingValueReader(null),y.setEditingDelegate(null);}}}function ii(l,u){return !l||datagridCore.isChromeColumn(u)?false:l.editable!==false&&l.lookup==null&&l.renderEditor==null&&l.allowFormulas!==true}var li=["rules","crud","allowAdding","allowUpdating","allowDeleting","onInitNewRow","onRowInserted","onRowUpdated","onRowRemoved","insertKey","appendOnArrowDown","newRowPosition","keepEditingOnTab","commandColumn","commandLabels","confirmDelete","confirmDeleteMessage","range"];var Rn=60,gr=24,Xd=0,so=36,xn=28,uo="application/x-kanuni-row",En=new Map,mr=new Set,hi=5e3,Xt=0,Jd=["columnStateChanged","sortChanged"],Qd=["columnStateChanged"],Zd=["contentReady","viewportChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","cellsRefreshed","findChanged"],w=(l,u="div")=>{let f=document.createElement(u);return f.className=l,f},Tn="http://www.w3.org/2000/svg";function es(l,u){let f=v=>{u&&console.warn(`[datagrid] ${v} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);};if(l.viewportDatasource)throw new Error("[datagrid] viewportDatasource is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.");let T={...l};if(T.dataSource!=null&&!Array.isArray(T.dataSource)&&T.grouping&&(f("grouping a server-side DataSource is"),delete T.grouping),T.columns?.some(v=>v.spanRows)&&(f("cell span/merge (spanRows) is"),T={...T,columns:T.columns.map(v=>v.spanRows?{...v,spanRows:void 0}:v)}),T.tree&&(f("tree data is"),delete T.tree),T.masterDetail&&(f("master-detail is"),delete T.masterDetail),T.grouping){let{groupBy:v,groupSummaries:y}=T.grouping,S=v==null?[]:typeof v=="string"?[v]:v;(S.length>1||y)&&(f("multi-level grouping and group summaries are"),T={...T,grouping:{...T.grouping,groupBy:S.slice(0,1),groupSummaries:false}});}return T}var ts={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:"",cardView:"",onCardViewChange:"",announcements:"",filterPanelLabels:"",filterIconMode:"",autoSizeStrategy:"",footerMenu:"",showRowCount:"",onOpenFilterBuilder:"",renderOverlay:"",cellMenu:""},co=new Set;function ns(l){for(let u of Object.keys(l)){let f=ts[u];f===void 0||f===""||co.has(u)||(co.add(u),console.warn(`[datagrid] \`${u}\` is a React-only option \u2014 ${f}.`));}}function os(){let l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.setAttribute("width","14"),l.setAttribute("height","14"),l.setAttribute("viewBox","0 0 16 16"),l.setAttribute("aria-hidden","true"),l.setAttribute("focusable","false");let u=document.createElementNS("http://www.w3.org/2000/svg","path");return u.setAttribute("d","M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"),u.setAttribute("fill","none"),u.setAttribute("stroke","currentColor"),u.setAttribute("stroke-width","1.5"),u.setAttribute("stroke-linecap","round"),u.setAttribute("stroke-linejoin","round"),l.appendChild(u),l}function rs(){let l=document.createElementNS(Tn,"svg");l.setAttribute("width","11"),l.setAttribute("height","11"),l.setAttribute("viewBox","0 0 16 16"),l.setAttribute("aria-hidden","true"),l.setAttribute("focusable","false");let u=document.createElementNS(Tn,"path");return u.setAttribute("d","M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z"),u.setAttribute("fill","currentColor"),u.setAttribute("stroke","currentColor"),u.setAttribute("stroke-width","0.6"),u.setAttribute("stroke-linejoin","round"),l.appendChild(u),l}function as(l){let u=document.createElementNS(Tn,"svg");u.setAttribute("width","14"),u.setAttribute("height","14"),u.setAttribute("viewBox","0 0 16 16"),u.setAttribute("aria-hidden","true"),u.setAttribute("focusable","false");let f=document.createElementNS(Tn,"rect");f.setAttribute("x","2"),f.setAttribute("y","2"),f.setAttribute("width","12"),f.setAttribute("height","12"),f.setAttribute("rx","2"),f.setAttribute("fill","none"),f.setAttribute("stroke","currentColor"),f.setAttribute("stroke-width","1.3"),u.appendChild(f);let T=v=>{let y=document.createElementNS(Tn,"path");y.setAttribute("d",v),y.setAttribute("fill","none"),y.setAttribute("stroke","currentColor"),y.setAttribute("stroke-width","1.3"),y.setAttribute("stroke-linecap","round"),u.appendChild(y);};return T("M5 8h6"),l&&T("M8 5v6"),u}function wi(l,u){let f=l??(u==="number"||u==="bigint"?"right":"left");return f==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":f==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function lo(l){let u="kanuni-datagrid-root";return l.dark&&(u+=" kanuni-datagrid-dark"),l.theme&&(u+=` kanuni-datagrid-theme-${l.theme}`),l.palette&&(u+=` kanuni-datagrid-palette-${l.palette}`),l.density&&(u+=` kanuni-datagrid-density-${l.density}`),u}function is(l,u){let{theme:f,palette:T,density:v,dark:y,striped:S=true,rowNumbers:A=false,locale:R="en",footer:z=false,footerMenu:q=true,footerPosition:N="bottom",pinFooterToBottom:V=false,notes:se,pinnedTopRows:W=[],pinnedBottomRows:le=[],resizable:ee=true,reorderable:Ee=true,autoHeaderHeight:M=false,filterRow:O=false,headerFilter:J=false,filterIconMode:de="hover",filterPanel:Q=false,onOpenFilterBuilder:_,focusedRow:te=false,focusedRowKey:Z,onFocusedRowChanged:G,onRowClick:Le,onRowActivate:Ne,autoSizeStrategy:ue="none",renderRow:g,cardView:I,onCardViewChange:D,announcements:we=true,filterPanelLabels:ce,showRowCount:X=false,toolbarColumnChooser:ge=false,cellMenu:ye=true,rowMenu:Ce,headerMenu:U,rowDrag:be,alignedGrids:k,printLayout:P,renderCellContent:oe,getCellClassName:Re,getRowStatusSource:he,rowStatus:ve,onCellPointerDown:Pe,onCellPointerEnter:at,onCellDoubleClick:it,editing:et,onHeaderClick:xe,getHeaderClassName:_e,renderHeaderLabel:yi,renderDetail:br,renderEditForm:wr,enterpriseEdition:vt=false,stateStoring:hr,tooltip:tt=true,renderOverlay:po,filterDebounce:Ci,toolbar:yr=false,highlightSearch:vi=true,sortable:Cr=true,toolbarItemsAfter:ki,toolbarItemsBefore:Ei,toolbarExcel:Ri=false,toolbarPdf:xi=false,searchDebounce:Ti=200,...Li}=u;ns(u),X&&!co.has("showRowCount:deprecated")&&(co.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 C=datagridCore.getGridDictionary(R),{emptyText:Si=C.noData,loadingText:Ai=C.busy,loadingOverlay:fo=true,...Je}=Li,vr=typeof fo=="number"?fo:300,go=datagridCore.summaryTypeLabels(C),kr=datagridCore.datePeriodLabels(C);if((!Je.columns||Je.columns.length===0)&&u.autoColumns!==false){let e=Array.isArray(Je.dataSource)?Je.dataSource:[];Je.columns=datagridCore.inferColumns(e,typeof u.autoColumns=="object"?u.autoColumns:{});}Je.rowHeight===void 0&&(Je.rowHeight=datagridCore.presetRowHeight(f,v,28));let Mi=vt?Je:es(Je,!!u.debugMode),Ht=vt?se:void 0;!vt&&se&&u.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(Mi);a.setEnterpriseEdition(vt);let Ft=et!=null&&typeof et=="object"&&et.enabled!==false,Qe=null;if(Ft&&u.debugMode)for(let e of li)et[e]!==void 0&&console.warn(`[datagrid] editing.${e} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);let an=Ft?e=>Qe?.renderCellContent(e)??oe?.(e):oe,mo=Ft?e=>{let t=Qe?.getCellClassName(e),o=Re?.(e);return t&&o?`${t} ${o}`:t??o}:Re,Er=Ft?e=>{it?.(e),Qe?.onCellDoubleClick(e);}:it,Di=Ft?(e,t)=>Qe?.renderEditForm(e,t)??wr?.(e,t)??"":wr,nt=datagridCore.normalizeRowStatus(ve);Z!=null&&a.focusRow(Z);let B=w(lo(u));datagridCore.registerPortalContainer(B,u.portalContainer),B.style.height="100%",B.setAttribute("role","grid"),B.setAttribute("aria-label",u.ariaLabel??u.gridId),B.setAttribute("data-grid-id",u.gridId),datagridCore.isRtlLocale(R)&&B.setAttribute("dir","rtl"),f&&B.setAttribute("data-theme",f),M&&B.setAttribute("data-auto-header-height",""),B.style.setProperty("--dg-row-height",`${a.getRowHeight()}px`);let ae=w("kanuni-datagrid-scroller"),Ie=w("kanuni-datagrid-canvas"),Me=w("kanuni-datagrid-header");Me.setAttribute("role","row");let $e=w("kanuni-datagrid-rows");$e.style.position="relative";let pe=w("kanuni-datagrid-viewport");$e.appendChild(pe);let ot=w("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--top"),kt=w("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--bottom"),Kt=()=>W.length+a.getPinnedRows("top").length,Rr=()=>le.length+a.getPinnedRows("bottom").length,We=w("kanuni-datagrid-sticky-groups");We.setAttribute("aria-hidden","true");let Ze=z,lt=N==="top",Oe=w(`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${lt?"top":"bottom"}`);if(Oe.setAttribute("role","row"),Oe.setAttribute("aria-label",C.columnTotalsAria),q){let e=t=>{let n=t.target?.closest(".kanuni-datagrid-footer-cell")?.getAttribute("data-column-id");!n||datagridCore.isChromeColumn(n)||(t.preventDefault(),sl(n,{left:t.clientX,top:t.clientY}));};Oe.addEventListener("click",e),Oe.addEventListener("contextmenu",e);}let Ln=w("kanuni-datagrid-bands-host");Ln.style.display="contents";let Et=w("kanuni-datagrid-filter-row");Et.setAttribute("role","row"),Ie.append(Ln,Me),O&&Ie.append(Et);let Pt=O?2:1,bo=0,wo=()=>bo+Pt+Kt();Oe.style.setProperty("--dg-pinned-gap",String(lt?Pt:0)),ot.style.setProperty("--dg-pinned-gap",String(Pt+(Ze&&lt?1:0))),Ze&&lt&&Ie.append(Oe),Kt()>0&&Ie.append(ot),a.hasStickyGroupHeaders()&&(We.style.setProperty("--dg-pinned-gap",String(Pt+(Ze&&lt?1:0))),We.style.setProperty("--dg-sticky-below",`${Kt()>0?Kt()*a.getRowHeight()+1:0}px`),Ie.append(We)),Ie.append($e),Rr()>0&&Ie.append(kt),Ze&&!lt&&Ie.append(Oe),la(),ae.appendChild(Ie);let ft=w("kanuni-datagrid-toolbar"),rt=w("kanuni-datagrid-pager");rt.setAttribute("role","navigation"),rt.setAttribute("aria-label",C.pagerAria);let Gt=w("kanuni-datagrid-filter-panel"),$t=!!Je.grouping?.panel,qe=w("kanuni-datagrid-group-panel"),ln=datagridCore.resolveCardView(I),dn=false,Sn=[],Rt=g,sn=w("kanuni-datagrid-cardbar");sn.hidden=true;let xr=w("kanuni-datagrid-cardbar-label","label"),Tr=w("","span");Tr.textContent=C.cardSortBy;let dt=w("kanuni-datagrid-cardbar-select","select"),Ot=w("kanuni-datagrid-cardbar-dir","button");Ot.type="button",xr.append(Tr,dt),sn.append(xr,Ot),dt.addEventListener("change",()=>{let e=a.getSort()[0];a.setSort(dt.value?[{columnId:dt.value,direction:e?.direction??"asc"}]:[]);}),Ot.addEventListener("click",()=>{let e=a.getSort()[0];e&&a.setSort([{columnId:e.columnId,direction:e.direction==="desc"?"asc":"desc"}]);});let Ni=e=>{let[t,...o]=datagridCore.cardFields(a.getColumnModel(),Sn,e.row),n=w("kanuni-datagrid-card");n.setAttribute("role","gridcell");let i=w("kanuni-datagrid-card-title");if(i.textContent=t?.text??"",n.appendChild(i),o.length){let d=w("kanuni-datagrid-card-fields","dl");for(let s of o){let r=w("kanuni-datagrid-card-field"),c=w("","dt");c.textContent=s.label;let p=w("","dd");p.textContent=s.text,r.append(c,p),d.appendChild(r);}n.appendChild(d);}return n},Lr=()=>{if(!dn||!ln)return;let e=a.getColumnModel(),t=datagridCore.cardColumnIds(e,ln);t.join("\0")!==Sn.join("\0")&&(Sn=t,a.setDataRowHeight(datagridCore.cardHeight(t.length)));let o=Cr?e.getOrder().filter(s=>e.getState(s)?.visible!==false&&e.getDef(s)?.sortable!==false):[];sn.hidden=o.length===0;let n=["",...o].join("\0");if(dt.dataset.ids!==n){dt.dataset.ids=n,dt.replaceChildren();let s=document.createElement("option");s.value="",s.textContent=C.none,dt.appendChild(s);for(let r of o){let c=document.createElement("option");c.value=r,c.textContent=e.getDef(r)?.headerName??r,dt.appendChild(c);}}let i=a.getSort()[0];dt.value=i?.columnId??"",Ot.hidden=!i;let d=i?.direction==="desc";Ot.textContent=d?"\u2193":"\u2191",Ot.setAttribute("aria-label",d?C.sortAsc:C.sortDesc),Ot.title=d?C.sortAsc:C.sortDesc;},Sr=false,Ii=e=>{let t=datagridCore.showsCards(e,ln);if(t!==dn){for(dn=t,B.classList.toggle("kanuni-datagrid-cards",t),Rt=t?Ni:g,Sn=[],t?Lr():(sn.hidden=true,a.setDataRowHeight(null));bt.length;)bt.pop().root.remove();$n(),Sr?D?.(t):queueMicrotask(()=>D?.(t));}};yr&&B.appendChild(ft),$t&&B.appendChild(qe),ln&&B.appendChild(sn),B.appendChild(ae),Q&&B.appendChild(Gt);let An=Je.pagination;An&&An.enabled!==false&&B.appendChild(rt);let un=w("kanuni-datagrid-loading-overlay"),Ar=w("kanuni-datagrid-loading-card"),Mr=w("kanuni-datagrid-loading-spinner","span");Mr.setAttribute("aria-hidden","true");let Dr=w("kanuni-datagrid-loading-label","span");Dr.textContent=Ai,Ar.append(Mr,Dr),un.appendChild(Ar),un.style.display="none";let cn=w("kanuni-datagrid-sr-only","div");cn.setAttribute("role","status"),cn.setAttribute("aria-live","polite"),cn.setAttribute("aria-atomic","true");let Mn=w("kanuni-datagrid-empty");Mn.textContent=Si,Mn.style.display="none",B.append(un,Mn),we&&B.appendChild(cn),l.appendChild(B);let pn=Je.selection,ho=a.getGroupDisplay()!=="fullWidth",Nr=a.getGroupDisplay()==="column",Jt=(pn?.mode??"none")!=="none"&&(pn?.checkboxColumn??false),Hi=(pn?.rowClick??(Jt?"toggle":"replace"))==="toggle",Qt=a.hasMasterDetail()&&!!br,yo=()=>(A?1:0)+(Qt?1:0)+(Jt?1:0),Co=nt?.icons===true,Ir=Co?gr:0,vo=Ir,ko=vo+(A?Rn:0),Hr=ko+(Qt?xn:0),st=Ir+(A?Rn:0)+(Qt?xn:0)+(Jt?so:0);a.setLeadWidth(st);let fn=!!be?.enabled,gn=be?.group??null,Fr=be?.allowReordering??true,Kr=be?.allowDropInsert??gn!==null,gt=null,Dn=null,Nn=false,Bt=null,xt=null;function Zt(e){Bt=e;for(let t of pe.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 Pr=(e,t)=>{let o=t.getBoundingClientRect();return e.clientY<o.top+o.height/2?"before":"after"},Gr=e=>e.dataTransfer?.types.includes(uo)?gt!==null?Fr:Kr&&gn!==null:false;function $r(e,t,o){let n=null;try{let i=e.dataTransfer?.getData(uo);n=i?JSON.parse(i):null;}catch{n=null;}if(n){if(n.gridId===a.gridId){if(!Fr)return;if(be?.onReorder){be.onReorder({dragKey:n.rowKey,targetKey:t,position:o,row:a.getRowByKey(n.rowKey)});return}a.moveRow(n.rowKey,t,o);return}!Kr||gn===null||n.group!==gn||be?.onAdd?.({row:n.row,rowKey:n.rowKey,otherGridId:n.gridId,targetKey:t,position:o});}}let Fi=e=>{let t=St(e);if(!t||t.node.kind!=="data"||!e.dataTransfer)return;gt=t.node.key,Dn=t.node.key,Nn=false;let o={gridId:a.gridId,group:gn,rowKey:t.node.key,row:t.node.data};e.dataTransfer.setData(uo,JSON.stringify(o)),e.dataTransfer.setData("text/plain",String(t.node.key)),e.dataTransfer.effectAllowed="move",a.notifyRowDrag("enter",{rowKey:t.node.key});},Ki=e=>{if(!Gr(e))return;e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move");let t=St(e);if(!t||t.node.kind!=="data")return;if(gt===t.node.key){xt=null,Zt(null);return}let o=e.target.closest(".kanuni-datagrid-row"),n=Pr(e,o),i=Bt?.key!==t.node.key||Bt.side!==n;xt={key:t.node.key,side:n},Zt({key:t.node.key,side:n}),i&&gt!==null&&a.notifyRowDrag("move",{rowKey:gt,overKey:t.node.key,position:n});},Pi=e=>{if(!Gr(e)){Zt(null);return}e.preventDefault();let t=St(e);if(Nn=true,t&&t.node.kind==="data"){let o=e.target.closest(".kanuni-datagrid-row"),n=Pr(e,o);xt={key:t.node.key,side:n},$r(e,t.node.key,n);}else xt=null,$r(e,null,"after");gt=null,Zt(null);},Gi=()=>{Dn!==null&&a.notifyRowDragEnd({rowKey:Dn,dropped:Nn,overKey:xt?.key??null,position:xt?.side??null}),Nn=false,Dn=null,gt=null,xt=null,Zt(null);},$i=e=>{let t=e.relatedTarget;t&&$e.contains(t)||gt!==null&&(xt=null,Zt(null),a.notifyRowDrag("leave",{rowKey:gt}));},Vt=P===void 0||P===false?null:(()=>{let e=P===true?{}:P;return {always:e.always??false,maxRows:e.maxRows??hi,onLimit:e.onLimit}})(),en=false;function Eo(e){en!==e&&(en=e,B.classList.toggle("kanuni-datagrid-print",e),e?(Xt++,document.documentElement.classList.add("kanuni-datagrid-printing")):(Xt--,Xt<=0&&(Xt=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),$n());}let Or=null;if(Vt&&!Vt.always){let e=()=>{let o=a.getRows().length;if(o>Vt.maxRows){a.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${o} rows exceeds maxRows (${Vt.maxRows}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`),Vt.onLimit?.({rows:o,maxRows:Vt.maxRows});return}Eo(true);},t=()=>Eo(false);window.addEventListener("beforeprint",e),window.addEventListener("afterprint",t),Or=()=>{window.removeEventListener("beforeprint",e),window.removeEventListener("afterprint",t);};}let mt=0,ut=[],Ue=0,Ro=0;function xo(){let e=a.getColumnLayout(),t=a.getVirtualWindow().columns,o=[],n=(d,s,r,c)=>{let p=d.def;o.push({def:p,id:d.state.id,width:d.state.width,pinned:s,inset:r,className:wi(p.align,p.dataType)+(s?" kanuni-datagrid-cell--pinned":"")+(p.autoHeight?" kanuni-datagrid-cell--wrap":""),visualIndex:c});};e.left.forEach((d,s)=>n(d,"left",e.leftOffsets[s]+st,s));for(let d=t.start;d<t.end&&d<e.center.length;d++)n(e.center[d],null,0,e.left.length+d);e.right.forEach((d,s)=>n(d,"right",e.rightOffsets[s],e.left.length+e.center.length+s)),ut=o,Ue=t.offsetX;let i=(e.centerOffsets[Math.min(t.end,e.center.length)]??0)-(e.centerOffsets[Math.min(t.start,e.center.length)]??0);Ro=Math.max(0,e.centerWidth-t.offsetX-i),Ie.style.minWidth=`${e.totalWidth+st}px`;}let In=26;function Oi(){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(bo=n,Ln.textContent="",Me.style.top=`${n*In}px`,B.style.setProperty("--dg-band-offset",`${n*In}px`),n===0)return;datagridCore.computeHeaderBands(o,n).forEach((d,s)=>{let r=w("kanuni-datagrid-band-row");if(r.style.top=`${s*In}px`,r.style.height=`${In}px`,st>0){let c=w("kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned");c.style.width=`${st}px`,c.style.flex="none",c.style.insetInlineStart="0px",r.appendChild(c);}if(Ue>0){let c=w("kanuni-datagrid-spacer");c.style.width=`${Ue}px`,c.style.flex="none",r.appendChild(c);}for(let c of d){let p=w(`kanuni-datagrid-band-cell${c.spacer?" kanuni-datagrid-band-cell--spacer":""}`);if(p.style.width=`${c.width}px`,p.style.flex="none",!c.spacer){if(c.columnIds.length>0){let b=datagridCore.bandPath(a.getColumnModel().getDef(c.columnIds[0])).slice(0,s+1);if(b.length===s+1&&a.isBandCollapsible(b)){let x=a.isBandCollapsed(b),F=document.createElement("button");F.type="button",F.className="kanuni-datagrid-band-toggle",F.setAttribute("aria-expanded",String(!x));let K=x?C.expandColumnGroup:C.collapseColumnGroup;F.setAttribute("aria-label",K),F.title=K,F.appendChild(as(x)),F.addEventListener("click",H=>{H.stopPropagation(),a.toggleBand(b);}),p.appendChild(F);}}let E=w("kanuni-datagrid-band-label","span");E.textContent=c.label,p.appendChild(E);}r.appendChild(p);}Ln.appendChild(r);});}let tn=null,Hn=null;function Fn(e,t){Hn&&Hn!==e&&Hn.classList.remove("kanuni-datagrid-header-cell--drop-before","kanuni-datagrid-header-cell--drop-after"),Hn=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 Br(){if(!tn)return;let e=a.getSelectedCount(),t=a.getSelectableCount(),o=t>0&&e>=t;tn.checked=o,tn.indeterminate=!o&&e>0,tn.disabled=t===0&&e===0;}let mn=null;function Vr(e){mn=e;for(let t of Array.from(Me.querySelectorAll(".kanuni-datagrid-header-cell[data-column-id]")))t.tabIndex=t.getAttribute("data-column-id")===e?0:-1;}function To(){Oi();let e=document.activeElement,t=e&&Me.contains(e)?e.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null,o=a.getColumnLayout(),n=[...o.left,...o.center,...o.right].map(r=>r.state.id);(!mn||!n.includes(mn))&&(mn=n[0]??null);let i=a.getSort(),d=new Map(i.map((r,c)=>[r.columnId,{direction:r.direction,order:c}]));if(Me.textContent="",tn=null,Co){let r=w("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-status-cell");r.setAttribute("role","presentation"),r.setAttribute("aria-hidden","true"),r.style.width=`${gr}px`,r.style.flex="none",r.style.insetInlineStart="0px",Me.appendChild(r);}if(A){let r=w("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell");r.setAttribute("role","columnheader"),r.style.width=`${Rn}px`,r.style.flex="none",r.style.insetInlineStart=`${vo}px`,Me.appendChild(r);}if(Qt){let r=w("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell");r.setAttribute("role","columnheader"),r.setAttribute("aria-label",C.detailsAria),r.style.width=`${xn}px`,r.style.flex="none",r.style.insetInlineStart=`${ko}px`,Me.appendChild(r);}if(Jt){let r=w("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell");r.setAttribute("role","columnheader"),r.style.width=`${so}px`,r.style.flex="none",r.style.insetInlineStart=`${Hr}px`;let c=document.createElement("input");c.type="checkbox",c.setAttribute("aria-label",C.selectAllRows),c.addEventListener("change",()=>{a.getSelectedCount()>0?a.clearSelection():a.selectAll();}),r.appendChild(c),Me.appendChild(r),tn=c,Br();}let s=false;for(let r of ut){if(!r.pinned&&!s){if(Ue>0){let h=document.createElement("div");h.style.flex=`0 0 ${Ue}px`,Me.appendChild(h);}s=true;}let c=Cr&&r.def.sortable!==false,p=r.id===datagridCore.GROUP_COLUMN_ID,E=d.get(p?a.getGroupLevels()[0]??r.id:r.id),b=w(`kanuni-datagrid-header-cell${c?" kanuni-datagrid-header-cell--sortable":""}${r.pinned?" kanuni-datagrid-header-cell--pinned":""}${r.def.wrapHeaderText?" kanuni-datagrid-header-cell--wrap":""}`);b.setAttribute("role","columnheader"),b.setAttribute("data-column-id",r.id),b.tabIndex=r.id===mn?0:-1,b.addEventListener("focus",()=>Vr(r.id)),b.setAttribute("aria-sort",E?E.direction==="asc"?"ascending":"descending":"none");let x=r.def.headerTooltip;x&&(b.title=x),b.style.width=`${r.width}px`,b.style.flex="none",r.pinned==="left"&&(b.style.insetInlineStart=`${r.inset}px`),r.pinned==="right"&&(b.style.insetInlineEnd=`${r.inset}px`);let F=w("kanuni-datagrid-header-label","span");F.id=`${encodeURIComponent(u.gridId)}-hdr-${encodeURIComponent(r.id)}`,b.setAttribute("aria-labelledby",F.id);let K=yi?.(r.id);if(K)F.appendChild(K);else if(r.def.renderHeader){let h=r.def.renderHeader({column:r.def});typeof h=="string"?F.textContent=h:F.appendChild(h);}else F.textContent=r.def.headerName??r.id;if(b.appendChild(F),E){let h=w("kanuni-datagrid-sort-indicator","span");if(h.setAttribute("aria-hidden","true"),h.textContent=E.direction==="asc"?"\u25B2":"\u25BC",b.appendChild(h),i.length>1&&!p){let $=w("kanuni-datagrid-sort-order","span");$.setAttribute("aria-hidden","true"),$.textContent=String(E.order+1),b.appendChild($);}}if(c||xe){let h=r.id;b.addEventListener("click",$=>{xe?.(h,$)||c&&a.toggleSort(h,$.shiftKey);});}let H=U!==false&&!datagridCore.isChromeColumn(r.id);if(H){let h=r.id;b.addEventListener("contextmenu",$=>{$.preventDefault(),sa(h,{left:$.clientX,top:$.clientY});});}let m=null;if(J&&r.def.filterable!==false){m=document.createElement("button"),m.type="button",m.tabIndex=-1;let h=a.getColumnFilter(r.id)!==null;m.className=`kanuni-datagrid-filter-button${h?" kanuni-datagrid-filter-button--active":""}${de==="always"?" kanuni-datagrid-filter-button--pinned":""}`,m.setAttribute("aria-haspopup","dialog"),m.setAttribute("aria-label",datagridCore.fillText(C.filterPopupAria,{column:r.def.headerName??r.id})),m.appendChild(rs());let $=m;m.addEventListener("click",j=>{j.stopPropagation(),aa(r.id,$);}),b.appendChild(m);}if(b.addEventListener("keydown",h=>{let $=n.indexOf(r.id),j;if(h.key==="ArrowRight")j=n[Math.min(n.length-1,$+1)];else if(h.key==="ArrowLeft")j=n[Math.max(0,$-1)];else if(h.key==="Home")j=n[0];else if(h.key==="End")j=n[n.length-1];else if(m&&h.altKey&&h.key==="ArrowDown")aa(r.id,m);else if(c&&(h.key==="Enter"||h.key===" "))a.toggleSort(r.id,h.shiftKey);else if(H&&(h.key==="ContextMenu"||h.key==="F10"&&h.shiftKey)){let fe=b.getBoundingClientRect();sa(r.id,{left:fe.left,top:fe.bottom});}else return;h.preventDefault(),h.stopPropagation(),j&&j!==r.id&&(Vr(j),Ko(j)?.focus());}),Ee&&r.def.reorderable!==false&&(b.draggable=true,b.addEventListener("dragstart",h=>{h.dataTransfer?.setData("text/x-kanuni-column",r.id),h.dataTransfer&&(h.dataTransfer.effectAllowed="move");}),b.addEventListener("dragover",h=>{if(!h.dataTransfer?.types.includes("text/x-kanuni-column"))return;h.preventDefault();let $=b.getBoundingClientRect(),j=h.clientX<$.left+$.width/2;Fn(b,j?"before":"after");}),b.addEventListener("dragleave",h=>{let $=h.relatedTarget;(!$||!b.contains($))&&Fn(null,"before");}),b.addEventListener("drop",h=>{Fn(null,"before");let $=h.dataTransfer?.getData("text/x-kanuni-column");if(!$||$===r.id)return;h.preventDefault();let j=b.getBoundingClientRect();if(h.clientX<j.left+j.width/2)a.moveColumn($,r.id);else {let Ke=ut.findIndex(re=>re.id===r.id);a.moveColumn($,ut[Ke+1]?.id);}}),b.addEventListener("dragend",()=>Fn(null,"before"))),ee&&r.def.resizable!==false){let h=w("kanuni-datagrid-resize-handle","span");h.setAttribute("data-resize-handle",r.id),h.setAttribute("role","presentation"),h.addEventListener("click",$=>$.stopPropagation()),h.addEventListener("dblclick",$=>{$.stopPropagation(),cl(r.id);}),h.addEventListener("pointerdown",$=>{$.preventDefault(),$.stopPropagation();let j=$.clientX,fe=r.width,Ke=getComputedStyle(b).direction==="rtl"?-1:1;b.draggable=false;let re=fe,ke=false,Ve=ct=>{ke=true,re=fe+(ct.clientX-j)*Ke,a.setColumnWidth(r.id,re,false);},ht=()=>{window.removeEventListener("pointermove",Ve),window.removeEventListener("pointerup",ht),window.removeEventListener("pointercancel",ht),ke&&a.setColumnWidth(r.id,re,true),b.draggable=Ee&&r.def.reorderable!==false;};window.addEventListener("pointermove",Ve),window.addEventListener("pointerup",ht),window.addEventListener("pointercancel",ht);}),b.appendChild(h);}Me.appendChild(b);}t&&Ko(t)?.focus({preventScroll:true});}let _r=null,Kn=null;function Bi(e){if(e===_r)return;_r=e;let t=[];for(let o=0;o<e.length;o++){let n=e[o];n&&n.kind!=="data"&&t.push(o);}Kn=t.length>0?t:null;}function Vi(e){if(!Kn)return e+1;let t=0,o=Kn.length;for(;t<o;){let n=t+o>>1;Kn[n]<=e?t=n+1:o=n;}return e+1-t}let bt=[];function Pn(e="data"){let t=w("kanuni-datagrid-row");if(t.setAttribute("role","row"),e==="loading"){t.classList.add("kanuni-datagrid-row--loading"),t.setAttribute("aria-busy","true");let p=w("kanuni-datagrid-cell kanuni-datagrid-loading-cell");return p.setAttribute("role","gridcell"),p.setAttribute("aria-colindex","1"),p.appendChild(w("kanuni-datagrid-loading-bar","span")),t.appendChild(p),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:mt}}if(e==="data"&&ho&&t.addEventListener("click",()=>{if(!t.classList.contains("kanuni-datagrid-group-row--aligned"))return;let p=t.getAttribute("data-group-key");p!==null&&a.toggleGroup(p);}),e==="panel"){let p=document.createElement("div");return p.setAttribute("role","gridcell"),p.setAttribute("aria-colindex","1"),t.appendChild(p),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,panelCell:p,epoch:mt}}if(e==="group"){let p=w("kanuni-datagrid-group-cell");p.setAttribute("role","gridcell"),p.setAttribute("aria-colindex","1");let E=w("kanuni-datagrid-group-twisty","span");E.setAttribute("aria-hidden","true");let b=w("kanuni-datagrid-group-caption","span"),x=w("kanuni-datagrid-group-label","span"),F=w("kanuni-datagrid-group-count","span"),K=w("kanuni-datagrid-group-aggregates","span"),H=null;return Jt&&pn?.mode==="multiple"&&(H=document.createElement("input"),H.type="checkbox",H.className="kanuni-datagrid-group-checkbox",H.tabIndex=-1,H.addEventListener("change",()=>{let m=t.getAttribute("data-group-key");m!==null&&a.toggleGroupSelection(m);}),H.addEventListener("click",m=>m.stopPropagation()),H.addEventListener("mousedown",m=>m.stopPropagation()),p.appendChild(H)),p.append(E,b,x,F,K),t.appendChild(p),t.addEventListener("click",()=>{let m=t.getAttribute("data-group-key");m!==null&&a.toggleGroup(m);}),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,group:{cell:p,check:H,twisty:E,caption:b,label:x,count:F,aggregates:K},epoch:mt}}if(fn){let p=w("kanuni-datagrid-row-grip","span");p.setAttribute("aria-hidden","true"),p.title=C.dragToReorder??"Drag to reorder",p.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>',p.addEventListener("mouseenter",()=>{t.draggable=true;}),p.addEventListener("mouseleave",()=>{t.draggable=false;}),t.appendChild(p);}if(Rt)return {kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:mt};if(Co){let p=w("kanuni-datagrid-cell kanuni-datagrid-cell--pinned kanuni-datagrid-status-cell");p.setAttribute("role","presentation"),p.setAttribute("aria-hidden","true"),p.style.width=`${gr}px`,p.style.flex="none",p.style.insetInlineStart="0px",p.appendChild(w("kanuni-datagrid-status-icon","span")),t.appendChild(p);}let o=null;A&&(o=w("kanuni-datagrid-cell kanuni-datagrid-cell--number kanuni-datagrid-cell--pinned kanuni-datagrid-rownum-cell"),o.setAttribute("role","gridcell"),o.setAttribute("aria-colindex","1"),o.style.width=`${Rn}px`,o.style.flex="none",o.style.insetInlineStart=`${vo}px`,t.appendChild(o));let n=null;if(Qt){let p=w("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell");p.setAttribute("role","gridcell"),p.setAttribute("aria-colindex",String((A?1:0)+1)),p.style.width=`${xn}px`,p.style.flex="none",p.style.insetInlineStart=`${ko}px`;let E=document.createElement("button");E.type="button",E.className="kanuni-datagrid-detail-toggle",E.tabIndex=-1,E.addEventListener("click",b=>{b.stopPropagation();let x=t.getAttribute("data-row-key");if(x===null)return;let F=a.getRows().find(K=>K!==void 0&&String(K.key)===x);F&&F.kind==="data"&&a.toggleDetail(F.key);}),E.addEventListener("mousedown",b=>b.stopPropagation()),p.appendChild(E),t.appendChild(p),n=E;}let i=null;if(Jt){let p=w("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell");p.setAttribute("role","gridcell"),p.setAttribute("aria-colindex",String((A?1:0)+(Qt?1:0)+1)),p.style.width=`${so}px`,p.style.flex="none",p.style.insetInlineStart=`${Hr}px`;let E=document.createElement("input");E.type="checkbox",E.tabIndex=-1;let b=()=>{let x=t.getAttribute("data-row-key");if(x===null)return;let F=a.getRows().find(K=>K!==void 0&&String(K.key)===x);F?.kind==="group"?a.toggleGroupSelection(String(F.key)):F&&a.toggleRow(F.key);};p.addEventListener("mousedown",x=>x.stopPropagation()),p.addEventListener("click",x=>{x.target.tagName!=="INPUT"&&(x.stopPropagation(),b());}),E.addEventListener("change",b),E.addEventListener("click",x=>x.stopPropagation()),E.addEventListener("mousedown",x=>x.stopPropagation()),p.appendChild(E),t.appendChild(p),i=E;}let d=[],s=null,r=false;for(let p of ut){!p.pinned&&!r&&(s=document.createElement("div"),s.style.flex=`0 0 ${Ue}px`,t.appendChild(s),r=true);let E=w(p.className);E.setAttribute("role","gridcell"),E.setAttribute("data-column-id",p.id),E.style.width=`${p.width}px`,E.style.flex="none",p.pinned==="left"&&(E.style.insetInlineStart=`${p.inset}px`),p.pinned==="right"&&(E.style.insetInlineEnd=`${p.inset}px`),t.appendChild(E),d.push({el:E,slot:p});}let c=document.createElement("div");return c.style.flex=`0 0 ${Ro}px`,t.appendChild(c),{kind:e,root:t,cells:d,rowNumberCell:o,selectInput:i,detailToggle:n,leadingSpacer:s,trailingSpacer:c,epoch:mt}}let nn="",Lo="case";function bn(e,t){if(nn===""||t===""){e.textContent=t;return}let o=datagridCore.foldMatchText(t,Lo),n=o.indexOf(nn);if(n===-1){e.textContent=t;return}let i=[],d=0;for(;n!==-1;){n>d&&i.push(document.createTextNode(t.slice(d,n)));let r=document.createElement("mark");r.className="kanuni-datagrid-highlight",r.textContent=t.slice(n,n+nn.length),i.push(r),d=n+nn.length,n=o.indexOf(nn,d);}d<t.length&&i.push(document.createTextNode(t.slice(d)));let s=document.createElement("span");s.className="kanuni-datagrid-cell-text",s.append(...i),e.replaceChildren(s);}function Wr(e,t,o){let n=a.getColumnModel().getCellValue(o.data,t.id),i=t.def;if(i.renderCell){let r=i.renderCell({value:n,row:o.data,node:o,column:i});typeof r=="string"?e.textContent=r:e.replaceChildren(r);return}let d=datagridCore.lookupLabel(i,n);if(d!==null){bn(e,d);return}if(i.valueFormatter){let r=i.valueFormatter(n,o.data);bn(e,typeof r=="string"?r:String(r??""));return}if(i.dateFormat&&i.dataType==="date"){bn(e,datagridCore.formatDateValue(n,i.dateFormat));return}let s=datagridCore.numberCellText(i,n);if(s!==null){bn(e,s);return}bn(e,n==null?"":String(n));}function _i(e,t){return e.kind==="group"&&!t.group}function Wi(e,t,o){let n=t?.lead??null;if(!n||!e.leadingSpacer||o.kind!=="data"){e.leadCell?.remove(),e.leadCell=null;return}let i=a.getColumnLayout(),d=n.column.def,s={def:d,id:n.column.state.id,width:n.width,className:wi(d.align,d.dataType),visualIndex:i.left.length+i.center.indexOf(n.column)},r=e.leadCell??w(s.className);e.leadCell=r,r.className=s.className,r.setAttribute("role","gridcell"),r.setAttribute("data-column-id",s.id),r.setAttribute("aria-colspan",String(t.spans.get(s.id)??1)),r.setAttribute("aria-colindex",String(yo()+s.visualIndex+1)),r.id=`${u.gridId}-cell-${String(o.key)}-${s.id}`,r.style.width=`${n.width}px`,r.style.flex="none",e.leadingSpacer.nextSibling!==r&&e.leadingSpacer.after(r),Wr(r,s,o);}function qi(e){let t=document.createElement("div");t.className="kanuni-datagrid-row-message",t.setAttribute("data-testid","dg-row-message"),t.innerHTML='<svg class="kanuni-datagrid-row-message-icon" viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M8 1.5 15 14H1z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/><path d="M8 6v3.5M8 11.6v.4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>';let o=document.createElement("span");o.className="kanuni-datagrid-row-message-text",o.textContent=e.text,o.title=e.text,t.appendChild(o);let n=(i,d,s)=>{let r=document.createElement("button");r.type="button",r.className="kanuni-datagrid-row-message-button",r.setAttribute("data-testid",i),r.textContent=d,r.addEventListener("click",s),t.appendChild(r);};return e.retry&&n("dg-row-retry",C.rowStatusRetry,e.retry),e.remove&&n("dg-row-delete",C.rowStatusDelete,e.remove),t}function qr(){if(!nt?.messages)return;let e=Qe?.engine??he?.()??null,t=nt.get,o=datagridCore.rowMessageKeys(nt,e).filter(n=>{if(!t)return true;let i=a.getDataRowNode(n)?.data;if(i===void 0)return true;let d=t({row:i,rowKey:n});return d===void 0||d==="error"});a.setMessageRows(o,a.getRowHeight());}function Ur(e,t){let o=nt&&t?.kind==="data"?datagridCore.resolveRowStatus(nt,t.data,t.key,Qe?.engine??he?.()??null):null,n=e.getAttribute("data-row-status");if(n!==null&&e.classList.remove(`kanuni-datagrid-row--status-${n}`,"kanuni-datagrid-row--status-tint","kanuni-datagrid-row--status-strike"),!o){if(n===null)return;e.removeAttribute("data-row-status"),e.removeAttribute("aria-description"),e.removeAttribute("aria-busy"),e.removeAttribute("aria-invalid");return}e.setAttribute("data-row-status",o.status),e.classList.add(...datagridCore.rowStatusClassName(o.status,nt.tint,nt.strike).split(" ")),e.setAttribute("aria-description",datagridCore.rowStatusDescription(o,C)),o.status==="saving"?e.setAttribute("aria-busy","true"):e.removeAttribute("aria-busy"),o.status==="error"?e.setAttribute("aria-invalid","true"):e.removeAttribute("aria-invalid");}function So(e,t,o){let n=e.root;if(n.setAttribute("aria-rowindex",String(o+1+wo())),n.setAttribute("data-row-key",String(t.key)),t.kind==="message"){let m=e.panelCell;n.className="kanuni-datagrid-row kanuni-datagrid-message-row",n.style.height=`${t.height}px`,n.style.display="",n.setAttribute("data-message-for",String(t.parentKey)),n.removeAttribute("data-detail-for"),n.removeAttribute("data-editform-for"),n.removeAttribute("data-panel-for"),m.className="kanuni-datagrid-message-cell";let h=nt?datagridCore.rowMessageModel(nt,t.parentKey,t.data,Qe?.engine??he?.()??null,C):null,$=h?`${String(t.parentKey)}|${h.text}|${h.retry?1:0}${h.remove?1:0}`:"";n.getAttribute("data-message-sig")!==$&&(n.setAttribute("data-message-sig",$),m.textContent="",h&&m.appendChild(qi(h)));return}if(n.removeAttribute("data-message-for"),n.removeAttribute("data-message-sig"),t.kind==="detail"||t.kind==="editform"){let m=e.panelCell,h=t.kind==="detail";n.className=`kanuni-datagrid-row ${h?"kanuni-datagrid-detail-row":"kanuni-datagrid-editform-row"}`,n.style.height=`${t.height}px`,h?(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")),m.className=h?"kanuni-datagrid-detail-cell":"kanuni-datagrid-editform-cell";let $=`${t.kind}:${String(t.key)}`;if(n.getAttribute("data-panel-for")!==$){n.setAttribute("data-panel-for",$);let j=h?br?.(t.data):t.parentKey===null?void 0:Di?.(t.parentKey,t.data);m.textContent="",typeof j=="string"?m.textContent=j:j&&m.appendChild(j);}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="";let i=t.kind==="data"?a.getDataRowHeight():null;n.style.height=zr?"":`${i??a.getRowHeight()}px`;let d=t.kind==="group"&&!e.group?t:null;if(!e.group){n.classList.remove("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned");for(let m of Array.from(n.classList))m.startsWith("kanuni-datagrid-group-row--level-")&&n.classList.remove(m);d?(n.classList.add("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned",`kanuni-datagrid-group-row--level-${d.level}`),n.setAttribute("aria-expanded",String(d.expanded)),n.setAttribute("aria-level",String(d.level+1)),n.setAttribute("data-group-key",String(d.key)),n.setAttribute("data-group-level",String(d.level))):(n.removeAttribute("aria-expanded"),n.removeAttribute("aria-level"),n.removeAttribute("data-group-key"),n.removeAttribute("data-group-level"));}n.classList.toggle("kanuni-datagrid-row--odd",S&&o%2===1);let s=a.isRowSelected(t.key);n.classList.toggle("kanuni-datagrid-row--selected",s),t.kind==="data"&&a.getSelectionMode()!=="none"?n.setAttribute("aria-selected",String(s)):n.removeAttribute("aria-selected");let r=a.getFocus();n.classList.toggle("kanuni-datagrid-row--focused",te&&r!==null&&r.rowKey===t.key),Ur(n,t);let c=t.kind==="data"&&!_i(t,e)?a.planRowColSpans(t,a.getVirtualWindow().columns):null;if(e.leadingSpacer&&(e.leadingSpacer.style.flex=`0 0 ${Math.max(0,Ue-(c?.leadingDelta??0))}px`),e.trailingSpacer&&(e.trailingSpacer.style.flex=`0 0 ${Math.max(0,Ro-(c?.trailingDelta??0))}px`),Wi(e,c,t),fn){let m=Bt!==null&&String(Bt.key)===String(t.key);n.classList.toggle("kanuni-datagrid-row--drop-before",m&&Bt.side==="before"),n.classList.toggle("kanuni-datagrid-row--drop-after",m&&Bt.side==="after");}let p=t.kind==="treePath",E=p||d!==null;if(n.classList.toggle("kanuni-datagrid-row--tree-path",p),e.rowNumberCell&&(e.rowNumberCell.textContent=E?"":String(Vi(o))),e.detailToggle&&(e.detailToggle.hidden=E),e.selectInput){let m=d!==null&&pn?.mode==="multiple";if(e.selectInput.hidden=p||d!==null&&!m,e.selectInput.classList.toggle("kanuni-datagrid-group-checkbox",m),m){let h=a.getGroupSelectionState(String(d.key));e.selectInput.checked=h==="all",e.selectInput.indeterminate=h==="some",e.selectInput.disabled=false,e.selectInput.setAttribute("aria-label",C.selectGroupAria.replace("{count}",String(d.count)).replace("{group}",d.display??d.label));}else e.selectInput.indeterminate=false,e.selectInput.checked=a.isRowSelected(t.key),e.selectInput.disabled=t.kind==="data"&&!a.isRowSelectable(t.key),e.selectInput.setAttribute("aria-label",C.selectRowAria.replace("{row}",String(t.key)));}if(e.detailToggle&&t.kind==="data"){let m=a.isDetailExpanded(t.key);e.detailToggle.textContent=m?"\u25BE":"\u25B8",e.detailToggle.setAttribute("aria-expanded",String(m)),e.detailToggle.setAttribute("aria-label",m?C.collapseDetails:C.expandDetails);}if(t.kind==="group"&&e.group){let m=t;n.className=`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${m.level}`,n.setAttribute("aria-expanded",String(m.expanded)),n.setAttribute("aria-level",String(m.level+1)),n.setAttribute("data-group-key",String(m.key)),n.setAttribute("data-group-level",String(m.level)),e.group.cell.style.paddingLeft=m.level>0?`${8+m.level*18}px`:"",e.group.twisty.textContent=m.expanded?"\u25BE":"\u25B8";let h=a.getColumnModel().getDef(m.columnId),$=h?.headerName??m.columnId;if(e.group.caption.textContent=`${$}:`,e.group.label.textContent=datagridCore.lookupLabel(h,m.value)??m.display??(m.label===""?C.filterBlank:m.label),e.group.count.textContent=`(${m.count})`,e.group.check){let fe=a.getGroupSelectionState(String(m.key));e.group.check.checked=fe==="all",e.group.check.indeterminate=fe==="some",e.group.check.setAttribute("aria-label",C.selectGroupAria.replace("{count}",String(m.count)).replace("{group}",e.group.label.textContent??""));}e.group.aggregates.textContent="";let j=m.aggregates??null;if(j)for(let fe of a.getSummaryDefs()){let Ke=w("kanuni-datagrid-group-aggregate","span"),re=w("kanuni-datagrid-group-aggregate-label","span"),ke=a.getColumnModel().getDef(fe.columnId);re.textContent=`${datagridCore.summaryLabel(fe,go)} ${ke?.headerName??fe.columnId}:`,Ke.append(re,` ${datagridCore.formatSummaryValue(fe,j[datagridCore.summaryKey(fe.columnId,fe.type)],ke)}`),e.group.aggregates.appendChild(Ke);}return}if(t.kind!=="data"&&!p&&!d){for(let{el:m}of e.cells)m.textContent="";return}if(Rt&&E){let m=fn?1:0;for(;n.childNodes.length>m;)n.removeChild(n.lastChild);let h=w("kanuni-datagrid-cell");d?h.appendChild(Yr(d)):(h.appendChild(jr(t)),Ao(h,t,t.tree)),n.appendChild(h);return}if(Rt){let m=fn?1:0,h=Rt({row:t.data,node:t,rowIndex:o,selected:a.isRowSelected(t.key),focused:te&&r!==null&&r.rowKey===t.key});if(h instanceof Node&&n.childNodes.length===m+1&&n.childNodes[m]===h)return;for(;n.childNodes.length>m;)n.removeChild(n.lastChild);typeof h=="string"?n.appendChild(document.createTextNode(h)):h&&n.appendChild(h);return}let b=r!==null&&r.rowKey===t.key?r.columnId:null,x=d?void 0:t.tree,F=d&&Nr?datagridCore.GROUP_COLUMN_ID:x||d?(()=>{let m=a.getColumnLayout();return (m.left[0]??m.center[0]??m.right[0])?.state.id??null})():null,K=x?F:null,H=a.hasCellSpans();for(let{el:m,slot:h}of e.cells){m.style.display=c?.covered.has(h.id)?"none":"",m.style.width=`${c?.widths.get(h.id)??h.width}px`;let $=c?.spans.get(h.id);$?m.setAttribute("aria-colspan",String($)):m.removeAttribute("aria-colspan");let j=(an||mo)&&!E?{node:t,columnId:h.id,rowIndex:o,columnIndex:h.visualIndex,value:a.getColumnModel().getCellValue(t.data,h.id)}:null,fe=an&&d&&h.id!==F?{node:t,columnId:h.id,rowIndex:o,columnIndex:h.visualIndex,value:void 0}:null,Ke=j&&an?an(j):fe?an(fe):void 0,re=false;if(Ke!==void 0?Ke instanceof Node&&m.childNodes.length===1&&m.firstChild===Ke?re=true:typeof Ke=="string"?m.textContent=Ke:m.replaceChildren(Ke):d?h.id===F?m.replaceChildren(Yr(d)):m.replaceChildren(...ji(d,h.id)):p?h.id===K?(m.replaceChildren(jr(t)),Ao(m,t,x)):m.replaceChildren():(Wr(m,h,t),x&&h.id===K&&Ao(m,t,x)),H&&!re){let Se=zi(o,h.id);m.classList.toggle("kanuni-datagrid-cell--span",Se?.kind==="draw"),m.classList.toggle("kanuni-datagrid-cell--span-covered",Se?.kind==="covered");let Te=Ke!==void 0;if(Se?.kind==="covered"&&b!==h.id&&!Te)m.replaceChildren();else if(Se?.kind==="draw"){let rn=w("kanuni-datagrid-span-box");rn.style.height=`${Se.height}px`,rn.append(...Array.from(m.childNodes)),m.appendChild(rn);}}else H||m.classList.remove("kanuni-datagrid-cell--span","kanuni-datagrid-cell--span-covered");if(Ht){let Se=!E&&!!Mo(t.key,h.id,t.data);m.classList.toggle("kanuni-datagrid-cell--noted",Se);}m.id=`${u.gridId}-cell-${String(t.key)}-${h.id}`,m.setAttribute("aria-colindex",String(yo()+h.visualIndex+1)),m.classList.toggle("kanuni-datagrid-cell--focused",b===h.id);let ke=t.kind==="data"?a.getFindMatchKind(t.key,h.id):null;m.classList.toggle("kanuni-datagrid-cell--find-match",ke!==null),m.classList.toggle("kanuni-datagrid-cell--find-active",ke==="active");let Ve=m.getAttribute("data-slot-classes");if(Ve)for(let Se of Ve.split(" "))m.classList.remove(Se);let ht=j&&mo?mo(j):void 0,ct=h.def.cellClassName,ie=[E?void 0:typeof ct=="function"?ct({value:a.getColumnModel().getCellValue(t.data,h.id),row:t.data,node:t,column:h.def}):ct,ht].filter(Boolean).join(" ")||void 0;if(ie){for(let Se of ie.split(" "))m.classList.add(Se);m.setAttribute("data-slot-classes",ie);}else Ve&&m.removeAttribute("data-slot-classes");}}let zr=u.columns.some(e=>e.autoHeight);function Ui(){if(!zr)return;let e=a.getVirtualWindow(),t=a.getRows(),o=new Map(a.getMeasuredRowHeights()),n=false;for(let i=e.rows.start;i<e.rows.end&&i<t.length;i++){let d=t[i];if(!d||d.kind!=="data")continue;let s=i-e.rows.start,r=bt[s]?.root;if(!r)continue;let c=r.getBoundingClientRect().height;c>0&&o.get(d.key)!==c&&(o.set(d.key,c),n=true);}n&&a.setMeasuredRowHeights(o);}let Gn={start:0,end:0};function zi(e,t){let o=a.getCellSpans(t);if(o.length===0)return null;let n=datagridCore.spanRoleAt(o,e,Gn.start,Gn.end);if(!n)return null;if(n.role==="covered")return {kind:"covered"};let i=a.getRowOffset(n.drawStart);return {kind:"draw",height:a.getRowOffset(n.drawEnd)+a.getRowHeightAt(n.drawEnd)-i}}function Yi(e,t){let o=a.isRowLoadFailed(t),n=o?"failed":"loading";if(e.dataset.holeState===n)return;e.dataset.holeState=n,e.classList.toggle("kanuni-datagrid-row--load-failed",o),o?e.removeAttribute("aria-busy"):e.setAttribute("aria-busy","true");let i=e.firstElementChild;if(!o)i.replaceChildren(w("kanuni-datagrid-loading-bar","span"));else {let d=w("kanuni-datagrid-load-failed-text","span");d.textContent=C.rowsLoadFailed;let s=document.createElement("button");s.className="kanuni-datagrid-retry-button",s.type="button",s.setAttribute("data-retry-load",""),s.textContent=C.retryLoad,s.addEventListener("click",()=>a.retryFailedLoads()),i.replaceChildren(d,s);}}function Yr(e){let t=w("kanuni-datagrid-group-inline","span");t.style.paddingInlineStart=`${e.level*16}px`;let o=w("kanuni-datagrid-group-twisty","span");o.setAttribute("aria-hidden","true"),o.textContent=e.expanded?"\u25BE":"\u25B8";let n=a.getColumnModel().getDef(e.columnId),i=w("kanuni-datagrid-group-caption","span");i.textContent=`${n?.headerName??e.columnId}:`;let d=w("kanuni-datagrid-group-label","span");d.textContent=datagridCore.lookupLabel(n,e.value)??e.display??(e.label===""?C.filterBlank:e.label);let s=w("kanuni-datagrid-group-count","span");return s.textContent=`(${e.count})`,Nr?t.append(o,d,s):t.append(o,i,d,s),t}function ji(e,t){if(!e.aggregates)return [];let o=a.getSummaryDefs().find(i=>i.columnId===t);if(!o)return [];let n=w("kanuni-datagrid-group-aggregate-value","span");return n.textContent=datagridCore.formatSummaryValue(o,e.aggregates[datagridCore.summaryKey(o.columnId,o.type)],a.getColumnModel().getDef(t)),[n]}function jr(e){let t=w("kanuni-datagrid-tree-path-label","span");return t.textContent=e.label,t}function Ao(e,t,o){let n=w(`kanuni-datagrid-tree-cell${o.ancestorOnly?" kanuni-datagrid-tree-cell--ancestor":""}`,"span");if(n.style.paddingInlineStart=`${o.depth*16}px`,o.hasChildren){let i=document.createElement("button");i.type="button",i.className="kanuni-datagrid-tree-toggle",i.setAttribute("data-tree-toggle",""),i.setAttribute("aria-expanded",String(o.expanded)),i.setAttribute("aria-label",o.expanded?C.collapseTreeRow:C.expandTreeRow),i.textContent=o.expanded?"\u25BE":"\u25B8",i.addEventListener("mousedown",d=>d.stopPropagation()),i.addEventListener("click",d=>{d.stopPropagation(),a.toggleTreeRow(t.key);}),n.appendChild(i);}else n.appendChild(w("kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf","span"));n.append(...Array.from(e.childNodes)),e.appendChild(n);}let Mo=(e,t,o)=>Ht?Ht.get({rowKey:e,columnId:t,row:o})??null:null,Xr=null,Tt=po?w("kanuni-datagrid-overlay"):null;Tt&&(Tt.style.position="absolute",Tt.style.inset="0",Tt.style.pointerEvents="none",$e.appendChild(Tt));function Xi(){if(!po||!Tt)return;let e=po();e!==Xr&&(Xr=e,e?Tt.replaceChildren(e):Tt.replaceChildren());}function Ji(e){let t=a.getColumnLayout(),o=Array.from(kt.children);B.setAttribute("aria-rowcount",String(wo()+e+o.length)),B.setAttribute("aria-colcount",String(yo()+t.left.length+t.center.length+t.right.length)),a.getSelectionMode()==="multiple"?B.setAttribute("aria-multiselectable","true"):B.removeAttribute("aria-multiselectable"),o.forEach((n,i)=>n.setAttribute("aria-rowindex",String(wo()+e+i+1)));}function $n(){Xi(),dn&&Lr();let e=a.getVirtualWindow(),t=a.getRows(),o=en?{...e,rows:{...e.rows,start:0,end:t.length,offsetY:0,totalHeight:0}}:e;Bi(t),Ji(t.length),$e.style.height=`${o.rows.totalHeight}px`,pe.style.transform=`translateY(${o.rows.offsetY}px)`,Lo=a.getSearchFold(),nn=a.getFindNeedle()||(vi?datagridCore.normalizeSearch(a.getSearchText(),Lo):"");let n=Math.max(0,Math.min(o.rows.end,t.length)-o.rows.start);for(Gn.start=o.rows.start,Gn.end=Math.min(o.rows.end,t.length)-1;bt.length>n;)bt.pop().root.remove();for(let i=0;i<n;i++){let d=o.rows.start+i,s=t[d];if(!s){let p=bt[i];if(!p||p.kind!=="loading"){let E=Pn("loading");p?pe.replaceChild(E.root,p.root):pe.appendChild(E.root),bt[i]=E,p=E;}p.root.setAttribute("aria-rowindex",String(d+2)),p.root.style.height=`${a.getDataRowHeight()??a.getRowHeight()}px`,Yi(p.root,d);continue}let r=s.kind==="data"?"data":s.kind==="group"?ho?"data":"group":s.kind==="detail"||s.kind==="editform"||s.kind==="message"?"panel":"stub",c=bt[i];if(!c||c.epoch!==mt||c.kind!==r){let p=Pn(r);c?pe.replaceChild(p.root,c.root):pe.appendChild(p.root),bt[i]=p,c=p;}So(c,s,d);}Ui(),Jr();}let On=[];function Jr(){if(!a.hasStickyGroupHeaders())return;let e=en?[]:a.getStickyGroupRows();for(We.style.width=`${a.getColumnLayout().totalWidth}px`;On.length>e.length;)On.pop().wrap.remove();let t=ho?"data":"group";e.forEach((o,n)=>{let i=On[n];if(!i||i.rs.epoch!==mt||i.rs.kind!==t){let d=Pn(t),s=i?.wrap??w("kanuni-datagrid-sticky-group");s.textContent="",s.appendChild(d.root),i||We.appendChild(s),i={wrap:s,rs:d},On[n]=i;}So(i.rs,o.node,o.index),i.rs.root.removeAttribute("aria-rowindex"),i.wrap.style.top=`${o.offset}px`,i.wrap.style.height=`${o.height}px`,i.wrap.style.zIndex=String(e.length-n),i.wrap.classList.toggle("kanuni-datagrid-sticky-group--last",n===e.length-1),i.wrap.querySelectorAll("button, input, select, textarea, a[href], [tabindex]").forEach(d=>d.setAttribute("tabindex","-1"));});}We.addEventListener("click",e=>{let o=e.target.closest("[data-group-key]")?.getAttribute("data-group-key");o&&a.scrollToRow(o);});let Bn=datagridCore.createDebouncedCommit(Ci??(a.isRemote()?200:0));function Qr(e,t,o,n){let i=a.getColumnModel().getDef(t);if(!i?.renderFilter)return ()=>{};let d=()=>o==="row"?a.getColumnFilter(t,datagridCore.FILTER_PART_ROW):a.getColumnFilter(t,datagridCore.FILTER_PART_SET)??a.getColumnFilter(t,datagridCore.FILTER_PART_DEFAULT),s=new Set,r=a.events.on("filterChanged",()=>{let p=d();s.forEach(E=>E(p));}),c=i.renderFilter(e,{columnId:t,column:i,surface:o,getValue:d,setValue:p=>a.setColumnFilter(t,p,o==="row"?datagridCore.FILTER_PART_ROW:datagridCore.FILTER_PART_SET),close:n,onValueChange:p=>(s.add(p),()=>s.delete(p))});return ()=>{r(),s.clear(),typeof c=="function"&&c();}}let wn=[],hn=new Map,Do=false;function Qi(){!O||Do||Et.querySelectorAll("select[data-filter-operator-for]").forEach(e=>{let t=e.getAttribute("data-filter-operator-for");if(Bn.isPending(t))return;let o=a.getColumnModel().getDef(t),n=a.getColumnFilter(t,datagridCore.FILTER_PART_ROW),i=hn.get(t)??"",d=e.parentElement?.querySelector("input.kanuni-datagrid-filter-input"),s=i;if(n){let r=datagridCore.customFilterInputFromNode(n,o);s=r?.operatorId??"",r&&d&&(d.value=r.text);}else datagridCore.findCustomFilterOperator(o,i)?.operandType==="none"&&(s="");hn.set(t,s),e.value=s,d&&(d.disabled=datagridCore.findCustomFilterOperator(o,s)?.operandType==="none");});}function No(){if(!O)return;if(wn.forEach(n=>n()),wn=[],Et.textContent="",st>0){let n=w("kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned");n.setAttribute("role","gridcell"),n.style.width=`${st}px`,n.style.flex="none",n.style.insetInlineStart="0px",Et.appendChild(n);}let e=false,t=null,o=()=>{if(!t){t=document.createElement("datalist"),t.id=`${u.gridId}-filter-periods`;for(let n of datagridCore.periodSuggestionList(kr)){let i=document.createElement("option");i.value=n,t.appendChild(i);}Et.appendChild(t);}return t.id};for(let n of ut){if(!n.pinned&&!e){if(Ue>0){let s=w("kanuni-datagrid-spacer");s.style.width=`${Ue}px`,s.style.flex="none",Et.appendChild(s);}e=true;}let i=w(`kanuni-datagrid-filter-cell${n.pinned?" kanuni-datagrid-filter-cell--pinned":""}`);i.setAttribute("role","gridcell"),i.style.width=`${n.width}px`,i.style.flex="none",n.pinned==="left"&&(i.style.insetInlineStart=`${n.inset}px`),n.pinned==="right"&&(i.style.insetInlineEnd=`${n.inset}px`);let d=n.def.renderFilter;if(n.def.filterable!==false&&d){let s=w("kanuni-datagrid-filter-custom");s.setAttribute("data-filter-for",n.id),i.appendChild(s),wn.push(Qr(s,n.id,"row",()=>{}));}else if(n.def.filterable!==false){let s=document.createElement("input");s.className="kanuni-datagrid-filter-input",s.setAttribute("aria-label",datagridCore.fillText(C.filterPopupAria,{column:n.def.headerName??n.id})),s.setAttribute("data-filter-for",n.id);let r=datagridCore.customFilterOperators(n.def),c=()=>datagridCore.findCustomFilterOperator(n.def,hn.get(n.id)??"");n.def.dataType==="date"&&!c()&&s.setAttribute("list",o());let p=()=>{let b=c();Do=true;try{a.setColumnFilter(n.id,b?datagridCore.parseCustomFilterInput(n.id,s.value,b):datagridCore.parseFilterInput(n.id,s.value,n.def.dataType,kr),datagridCore.FILTER_PART_ROW);}finally{Do=false;}};if(r.length>0){let b=document.createElement("select");b.className="kanuni-datagrid-filter-operator",b.setAttribute("aria-label",datagridCore.fillText(C.filterOperatorAria,{column:n.def.headerName??n.id})),b.setAttribute("data-filter-operator-for",n.id);let x=[["",C.filterOperatorDefault],...r.map(K=>[K.id,K.label])];for(let[K,H]of x){let m=document.createElement("option");m.value=K,m.textContent=H,b.appendChild(m);}let F=datagridCore.customFilterInputFromNode(a.getColumnFilter(n.id,datagridCore.FILTER_PART_ROW),n.def);F&&(hn.set(n.id,F.operatorId),s.value=F.text),b.value=c()?.id??"",s.disabled=c()?.operandType==="none",b.addEventListener("change",()=>{hn.set(n.id,b.value),s.disabled=c()?.operandType==="none",c()?s.removeAttribute("list"):n.def.dataType==="date"&&s.setAttribute("list",o()),Bn.cancel(n.id),p();}),i.appendChild(b);}s.addEventListener("input",()=>Bn.schedule(n.id,p));let E=()=>{Bn.cancel(n.id),p();};s.addEventListener("keydown",b=>{b.key==="Enter"&&E();}),s.addEventListener("blur",E),i.appendChild(s);}Et.appendChild(i);}}let Io=()=>{},Zr=null;function Zi(){let e=datagridCore.resolveToolbar(yr);if(!e.show)return;let t=e.search,o=document.createElement("input");o.type="search",o.className="kanuni-datagrid-toolbar-search",o.placeholder=t?.placeholder??C.toolbarSearch,o.setAttribute("aria-label",t?.ariaLabel??C.toolbarSearch),o.setAttribute("data-testid","dg-toolbar-search"),o.value=a.getSearchText(),t?.maxLength!==void 0&&(o.maxLength=t.maxLength);let n=w("kanuni-datagrid-toolbar-search-error","span");n.id=`kanuni-dg-search-error-${++Xd}`,n.setAttribute("role","alert"),n.setAttribute("data-testid","dg-toolbar-search-error"),n.style.display="none";let i=()=>{let H=t?.validate?.(o.value)??null;return n.textContent=H??"",n.style.display=H===null?"none":"",H===null?(o.removeAttribute("aria-invalid"),o.removeAttribute("aria-describedby")):(o.setAttribute("aria-invalid","true"),o.setAttribute("aria-describedby",n.id)),H===null},d=null,s=false,r=()=>{d&&clearTimeout(d),d=null,s=false;let H=o.value.trim();i()&&a.getSearchText()!==H&&a.setSearchText(H);};Zr=a.events.on("filterChanged",({searchText:H})=>{s||o.value.trim()===H||(o.value=H,i());}),o.addEventListener("input",()=>{s=true,d&&clearTimeout(d),d=null,i()&&(d=setTimeout(r,t?.debounce??Ti));}),t?.applyOnBlur!==false&&(o.addEventListener("blur",r),o.addEventListener("keydown",H=>{H.key==="Enter"&&r();}));let c=w("kanuni-datagrid-toolbar-spacer"),p=null;if(e.columns??ge){let H=document.createElement("button");H.type="button",datagridCore.setCommandContent(H,"columns",C.toolbarColumns??"Columns"),H.setAttribute("aria-haspopup","dialog"),H.addEventListener("click",()=>{let m=H.getBoundingClientRect();ua({left:m.left,top:m.bottom+2});}),p=H;}let E=vt&&Ri,b=vt&&xi,x=document.createElement("button");x.type="button",x.className="kanuni-datagrid-toolbar-icon-button",x.setAttribute("aria-haspopup","menu"),x.setAttribute("aria-label",C.exportMenu),x.setAttribute("data-testid","dg-export-menu"),x.title=C.exportMenu,x.appendChild(os());let F=null;x.addEventListener("click",()=>{if(F)return;let H=x.getBoundingClientRect();wt({left:H.right-190,top:H.bottom+2},m=>{m.setAttribute("role","menu"),m.setAttribute("aria-label",C.exportMenu);let h=[{kind:"csv",label:C.exportCsv,testId:"dg-export-csv",on:a.canExportAll()},{kind:"excel",label:C.exportExcel,testId:"dg-export-excel",on:E},{kind:"excel-selected",label:C.exportExcelSelected,testId:"dg-export-excel-selected",on:E},{kind:"pdf",label:C.exportPdf,testId:"dg-export-pdf",on:b}];for(let $ of h){if(!$.on)continue;let j=document.createElement("button");j.type="button",j.className="kanuni-datagrid-menu-item",j.setAttribute("role","menuitem"),j.setAttribute("data-testid",$.testId),j.textContent=$.label,$.kind==="excel-selected"&&a.getSelectedCount()===0&&(j.disabled=true),j.addEventListener("click",()=>{F=$.kind,x.disabled=true,He(),tr(a,$.kind).then(fe=>{F=null,x.disabled=false,fe.error&&Io(fe.error);});}),m.appendChild(j);}},"kanuni-datagrid-filter-popup kanuni-datagrid-export-menu");});for(let H of Ei??[])ft.append(H);t&&ft.append(o,n),ft.append(c),p&&ft.append(p),e.export&&(a.canExportAll()||E||b)&&ft.append(x);for(let H of ki??[])ft.append(H);let K=w("kanuni-datagrid-toolbar-error","span");K.setAttribute("role","alert"),K.style.display="none",ft.append(K),Io=H=>{K.textContent=H,K.style.display="";};}function ea(){if(!rt.isConnected)return;let e=a.getPage(),t=a.getPageCount(),o=document.activeElement,n=o instanceof HTMLElement&&rt.contains(o)?o.getAttribute("data-pager"):null;rt.textContent="";let i=(c,p,E,b,x)=>{let F=document.createElement("button");return F.type="button",F.textContent=c,F.setAttribute("aria-label",p),F.setAttribute("data-pager",x),F.disabled=E,F.addEventListener("click",b),F},d=w("kanuni-datagrid-pager-buttons"),s=e<=0,r=e>=t-1;if(d.append(i("\xAB",C.pagerFirst??"First",s,()=>a.setPage(0),"first"),i("\u2039",C.pagerPrevious??"Previous",s,()=>a.setPage(e-1),"previous")),An?.pageButtons)for(let c of datagridCore.pageButtonItems(e,t,An.maxPageButtons)){if(typeof c!="number"){let b=w("kanuni-datagrid-pager-gap","span");b.textContent="\u2026",b.setAttribute("aria-hidden","true"),d.append(b);continue}let p=String(c+1),E=i(p,C.pagerPageButton.replace("{n}",p),false,()=>a.setPage(c),`page-${c}`);E.classList.add("kanuni-datagrid-pager-page"),c===e&&E.setAttribute("aria-current","page"),d.append(E);}else {let c=w("kanuni-datagrid-pager-current","span");c.textContent=`${e+1} / ${t}`,d.append(c);}if(d.append(i("\u203A",C.pagerNext??"Next",r,()=>a.setPage(e+1),"next"),i("\xBB",C.pagerLast??"Last",r,()=>a.setPage(t-1),"last")),rt.appendChild(d),n!==null){let c=rt.querySelector(`[data-pager="${n}"]`);(c&&!c.disabled?c:rt.querySelector('[aria-current="page"]')??rt.querySelector("button:not(:disabled)"))?.focus();}}function Ho(){if(!Ze)return;let e=a.getColumnLayout(),t=a.getSummaries(),o=new Map(a.getSummaryDefs().map(i=>[i.columnId,i]));if(Oe.textContent="",Oe.style.width=`${e.totalWidth+st}px`,st>0){let i=w("kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned");i.style.width=`${st}px`,i.style.insetInlineStart="0px",Oe.appendChild(i);}let n=false;for(let i of ut){if(!i.pinned&&!n){if(Ue>0){let c=w("kanuni-datagrid-spacer");c.style.width=`${Ue}px`,Oe.appendChild(c);}n=true;}let d=o.get(i.id),s=i.def.dataType==="number"||i.def.dataType==="bigint",r=w(`kanuni-datagrid-footer-cell${i.pinned?" kanuni-datagrid-footer-cell--pinned":""}${s?" kanuni-datagrid-footer-cell--number":""}${d?" kanuni-datagrid-footer-cell--active":""}`);if(r.setAttribute("role","gridcell"),r.setAttribute("data-column-id",i.id),r.setAttribute("data-summary-type",d?.type??""),r.style.width=`${i.width}px`,i.pinned==="left"&&(r.style.insetInlineStart=`${i.inset}px`),i.pinned==="right"&&(r.style.insetInlineEnd=`${i.inset}px`),d){r.title=`${datagridCore.summaryLabel(d,go)} \u2014 ${i.def.headerName??i.id}`;let c=w("kanuni-datagrid-footer-value","span");c.textContent=datagridCore.formatSummaryValue(d,t[datagridCore.summaryKey(d.columnId,d.type)],i.def),r.appendChild(c);}else {let c=w("kanuni-datagrid-footer-hint","span");c.textContent=q&&!datagridCore.isChromeColumn(i.id)?"\xB7":"",r.appendChild(c);}Oe.appendChild(r);}}function el(){Kt()>0?ot.isConnected||Ie.insertBefore(ot,We.isConnected?We:$e):ot.remove(),Rr()>0?kt.isConnected||Ie.insertBefore(kt,$e.nextSibling):kt.remove(),We.style.setProperty("--dg-sticky-below",`${Kt()>0?Kt()*a.getRowHeight()+1:0}px`);}function Vn(){let e=Rt;Rt=g;try{tl();}finally{Rt=e;}}function tl(){let e=(t,o,n,i)=>{t.textContent="",o.forEach((d,s)=>{let r=Pn("data");So(r,{kind:"data",key:`__pinned-${n}-${s}`,sourceIndex:-1,data:d},s),r.root.classList.remove("kanuni-datagrid-row--odd"),r.root.setAttribute("aria-rowindex",String(bo+Pt+s+1)),r.root.removeAttribute("aria-selected"),Ur(r.root,null),r.rowNumberCell&&(r.rowNumberCell.textContent="");let c=i[s-(o.length-i.length)];c!==void 0?r.root.setAttribute("data-pinned-row-key",String(c)):r.root.removeAttribute("data-pinned-row-key"),t.appendChild(r.root);});};for(let[t,o,n]of [["top",ot,W],["bottom",kt,le]]){let i=a.getPinnedRows(t);if(n.length+i.length===0){o.textContent="";continue}e(o,[...n,...i.map(d=>d.row)],t,i.map(d=>d.key));}}let _n=e=>{let t=e.target.closest("[data-pinned-row-key]");if(!t)return;let o=t.getAttribute("data-pinned-row-key"),n=a.getPinnedRowKeys(),i=[...n.top,...n.bottom].find(c=>String(c)===o);if(i===void 0)return;let d=ta(i,false);if(d.length===0)return;e.preventDefault();let s=a.getPinnedRows(a.getRowPinSide(i)??"top").find(c=>c.key===i)?.row,r={row:s,node:{kind:"data",key:i,sourceIndex:-1,data:s},rowIndex:-1,columnId:e.target.closest("[data-column-id]")?.getAttribute("data-column-id")??null,selectedKeys:a.getSelectedKeys()};wt({left:e.clientX,top:e.clientY},c=>{c.setAttribute("role","menu"),qn(c,d,r);},"kanuni-datagrid-context-menu");};ot.addEventListener("contextmenu",_n),kt.addEventListener("contextmenu",_n);function ta(e,t){if(!a.isRowPinningEnabled()||!a.canPinRow(e))return [];let o=a.getRowPinSide(e),n=[];return o!=="top"&&n.push({id:"__dg-pin-top",label:C.pinRowTop,onSelect:()=>a.pinRow(e,"top")}),o!=="bottom"&&n.push({id:"__dg-pin-bottom",label:C.pinRowBottom,onSelect:()=>a.pinRow(e,"bottom")}),o&&n.push({id:"__dg-unpin",label:C.unpinRow,onSelect:()=>a.pinRow(e,null)}),t&&n.length>0?[{id:"__dg-sep-pin",separator:true},...n]:n}let _t=null,Wt=null,Fo=null;function He(e=true){Wt?.(),Wt=null,_t?.remove(),_t=null;let t=Fo;Fo=null,e&&t?.();}function Ko(e){return Me.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${datagridCore.cssEscape(e)}"]`)}function na(e,t){e.addEventListener("keydown",o=>{let n=Array.from(e.querySelectorAll('[role="menuitem"]:not(:disabled)'));if(n.length===0)return;let i=n.indexOf(document.activeElement),d=n[i],s;switch(o.key){case "ArrowDown":s=n[(i+1)%n.length];break;case "ArrowUp":s=n[i<=0?n.length-1:i-1];break;case "Home":s=n[0];break;case "End":s=n[n.length-1];break;case "ArrowRight":case "Enter":case " ":if(d?.getAttribute("aria-haspopup")!=="menu")return;d.click(),s=_t?.querySelector('.kanuni-datagrid-submenu [role="menuitem"]:not(:disabled)')??void 0;break;case "ArrowLeft":if(!t)return;t();break;case "Tab":He();break;default:return}o.preventDefault(),o.stopPropagation(),s?.focus();});}function oa(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 wt(e,t,o="kanuni-datagrid-filter-popup",n){He(false);let i=document.activeElement instanceof HTMLElement?document.activeElement:null,d=i&&(i===B||!i.contains(B))?i:null,s=(d&&Me.contains(d)?d.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null)??n??null;_t=w(`${lo(u)} kanuni-datagrid-portal`);let r=w(o);r.style.position="fixed",r.style.left=`${e.left}px`,r.style.top=`${e.top}px`,r.style.zIndex="1000",t(r),_t.appendChild(r),datagridCore.portalTarget(u.portalContainer).appendChild(datagridCore.markPortal(_t,u.portalContainer)),oa(r,e),Fo=()=>{let b=s?Ko(s):null,x=d?.isConnected?d:b;x?.focus({preventScroll:true}),x&&document.activeElement!==x&&b&&b.focus({preventScroll:true});},r.getAttribute("role")==="menu"&&(na(r),r.querySelector('[role="menuitem"]:not(:disabled)')?.focus({preventScroll:true}));let c=_t,p=b=>{c.contains(b.target)||He(false);},E=b=>{b.key==="Escape"&&He();};document.addEventListener("pointerdown",p,true),document.addEventListener("keydown",E,true),Wt=()=>{document.removeEventListener("pointerdown",p,true),document.removeEventListener("keydown",E,true);};}let Lt=25,ra=8,Po=new Map,Go=0;function aa(e,t){let o=t.getBoundingClientRect(),n=++Go;if(a.getColumnModel().getDef(e)?.renderFilter){let s=null,r=null;wt({left:o.left,top:o.bottom+2},E=>{r=E,E.classList.add("kanuni-datagrid-filter-popup--custom"),E.setAttribute("role","dialog"),E.setAttribute("aria-label",datagridCore.fillText(C.filterPopupAria,{column:a.getColumnModel().getDef(e)?.headerName??e})),E.setAttribute("data-column-id",e),E.tabIndex=-1,s=Qr(E,e,"popup",()=>He());},void 0,e);let c=r;c&&(c.querySelector('input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])')??c).focus({preventScroll:true});let p=Wt;Wt=()=>{p?.(),s?.(),s=null;};return}let i=null;wt({left:o.left,top:o.bottom+2},s=>{s.setAttribute("role","dialog"),s.setAttribute("aria-label",datagridCore.fillText(C.filterPopupAria,{column:a.getColumnModel().getDef(e)?.headerName??e}));let r=[],c=true,p=new Set,E=false,b=0,x="",F=[],K={value:void 0,label:""},H=L=>L.value===null||L.value===void 0,m=[],h=L=>L===K?datagridCore.NONBLANK_KEY:datagridCore.distinctEntryKey(L),$=L=>L===K?C.filterNonBlank:datagridCore.distinctDisplayText(L,{filterBlank:C.filterBlank,filterEmptyText:C.filterEmptyText,filterSpace:C.filterSpace,filterSpaces:C.filterSpaces}),j=null,fe="",Ke=[],re=null,ke=document.createElement("input");ke.type="search",ke.className="kanuni-datagrid-filter-search",ke.placeholder=C.search,ke.setAttribute("data-testid","dg-filter-search");let Ve=null;_&&(Ve=document.createElement("button"),Ve.type="button",Ve.className="kanuni-datagrid-filter-custom",Ve.setAttribute("data-testid","dg-filter-custom"),Ve.textContent=C.filterCustom,Ve.addEventListener("click",()=>{He(),_({columnId:e});}));let ht=w("kanuni-datagrid-filter-actions"),ct=document.createElement("button");ct.type="button",ct.textContent=C.filterSelectAll,ct.addEventListener("click",()=>{if(re)return re.selectAll();if(E=true,x.trim()==="")p=new Set(r.map(datagridCore.distinctEntryKey));else for(let L of F)p.add(datagridCore.distinctEntryKey(L));je();});let yn=document.createElement("button");yn.type="button",yn.textContent=C.clear,yn.addEventListener("click",()=>{if(re)return re.clear();if(E=true,x.trim()==="")p=new Set;else for(let L of F)p.delete(datagridCore.distinctEntryKey(L));je();}),ht.append(ct,yn);let ie=w("kanuni-datagrid-filter-list");ie.setAttribute("role","listbox"),ie.setAttribute("aria-multiselectable","true");let Se=document.createElement("div");Se.style.position="relative";let Te=document.createElement("div");Se.appendChild(Te),ie.appendChild(Se);let rn=()=>{let L=datagridCore.foldText(x.trim());if(!L){F=r;let Y=r.findIndex(H);m=Y<0?r:[...r.slice(0,Y+1),K,...r.slice(Y+1)];return}j||(j=r.map(Y=>datagridCore.foldText(Y.label))),F=fe!==""&&L.includes(fe)?Ke.filter(Y=>datagridCore.foldText(Y.label).includes(L)):r.filter((Y,ne)=>j[ne].includes(L)),fe=L,Ke=F,m=F;},vl=L=>{let Y=L.getRowCount(),ne=L.isLoading();ie.setAttribute("aria-busy",String(ne)),ie.setAttribute("aria-setsize",String(Y));let me=document.activeElement instanceof HTMLElement?document.activeElement.closest(".kanuni-datagrid-filter-item")?.getAttribute("data-index")??null:null;if(Te.textContent="",ne||Y===0){Se.style.height="",Te.style.transform="";let Ge=w("kanuni-datagrid-filter-empty");Ge.textContent=ne?C.filterLoading:C.filterNoMatch,Te.appendChild(Ge);return}Se.style.height=`${L.getWindow(ie.scrollTop,240).totalHeight}px`;let Fe=L.getWindow(ie.scrollTop,Math.max(ie.clientHeight,150));Se.style.height=`${Fe.totalHeight}px`,Te.style.transform=`translateY(${Fe.offsetY}px)`;for(let Ge=Fe.start;Ge<Fe.end;Ge++){let Ae=L.getRow(Ge),De=w("kanuni-datagrid-filter-item");if(De.setAttribute("role","option"),De.setAttribute("data-index",String(Ge)),!Ae){De.classList.add("kanuni-datagrid-filter-item--pending"),De.setAttribute("aria-selected","false"),De.setAttribute("aria-busy","true");let Ct=document.createElement("span");Ct.setAttribute("aria-hidden","true"),Ct.textContent="\u2026",De.appendChild(Ct),Te.appendChild(De);continue}let Cn=L.isChecked(Ae);De.setAttribute("aria-selected",String(Cn)),De.tabIndex=-1,De.setAttribute("data-value",Ae.label),Ge===b&&De.classList.add("kanuni-datagrid-filter-item--active");let Nt=document.createElement("input");Nt.type="checkbox",Nt.readOnly=true,Nt.checked=Cn,Nt.tabIndex=-1;let Xe=document.createElement("span");Xe.textContent=Ae.nonBlank?C.filterNonBlank:datagridCore.distinctDisplayText({value:Ae.blank?null:Ae.value,label:Ae.label},{filterBlank:C.filterBlank,filterEmptyText:C.filterEmptyText,filterSpace:C.filterSpace,filterSpaces:C.filterSpaces}),De.append(Nt,Xe),De.addEventListener("click",()=>L.toggle(Ae)),De.addEventListener("focus",()=>{b=Ge,Zn();}),Te.appendChild(De);}Zn(),L.ensure(Fe.start,Fe.end),me!==null&&Te.querySelector(`[data-index="${b}"]`)?.focus({preventScroll:true});},je=()=>{if(re&&!c)return vl(re);if(ie.setAttribute("aria-busy",String(c)),ie.setAttribute("aria-setsize",String(m.length)),c){Se.style.height="",Te.textContent="";let Ae=w("kanuni-datagrid-filter-empty");Ae.textContent=C.filterLoading,Te.appendChild(Ae);return}if(m.length===0){Se.style.height="",Te.style.transform="",Te.textContent="";let Ae=w("kanuni-datagrid-filter-empty");Ae.textContent=C.filterNoMatch,Te.appendChild(Ae);return}let L=ie.clientHeight||240,Y=Math.max(0,Math.floor(ie.scrollTop/Lt)-ra),ne=Math.ceil(L/Lt)+ra*2,me=Math.min(Y,Math.max(0,m.length-1)),Fe=Math.min(m.length,me+ne);Se.style.height=`${m.length*Lt}px`,Te.style.transform=`translateY(${me*Lt}px)`;let Ge=document.activeElement instanceof HTMLElement?document.activeElement.closest(".kanuni-datagrid-filter-item")?.getAttribute("data-index")??null:null;Te.textContent="";for(let Ae=me;Ae<Fe;Ae++){let De=m[Ae],Cn=h(De),Nt=De===K?datagridCore.distinctNonBlankTicked(r,p):p.has(Cn),Xe=w("kanuni-datagrid-filter-item");Xe.setAttribute("role","option"),Xe.setAttribute("aria-selected",String(Nt)),Xe.tabIndex=-1,Xe.setAttribute("data-value",De.label),Xe.setAttribute("data-index",String(Ae)),Ae===b&&Xe.classList.add("kanuni-datagrid-filter-item--active");let Ct=document.createElement("input");Ct.type="checkbox",Ct.readOnly=true,Ct.checked=Nt,Ct.tabIndex=-1;let Wa=document.createElement("span");Wa.textContent=$(De),Xe.append(Ct,Wa),Xe.addEventListener("click",()=>Oa(Cn)),Xe.addEventListener("focus",()=>{b=Ae,Zn();}),Te.appendChild(Xe);}Zn(),Ge!==null&&Te.querySelector(`[data-index="${b}"]`)?.focus({preventScroll:true});};function Zn(){let L=false;for(let Y of Array.from(Te.querySelectorAll(".kanuni-datagrid-filter-item"))){if(Y.getAttribute("aria-busy")==="true")continue;let ne=Number(Y.getAttribute("data-index"))===b;Y.tabIndex=ne?0:-1,Y.classList.toggle("kanuni-datagrid-filter-item--active",ne),L||=ne;}ie.tabIndex=L||!Te.querySelector(".kanuni-datagrid-filter-item")?-1:0;}let Oa=L=>{if(E=true,L===datagridCore.NONBLANK_KEY){let Y=datagridCore.distinctNonBlankTicked(r,p);for(let ne of r)H(ne)&&!Y?p.delete(datagridCore.BLANK_KEY):p.add(datagridCore.distinctEntryKey(ne));}else p.has(L)?p.delete(L):p.add(L);for(let Y of Te.querySelectorAll(".kanuni-datagrid-filter-item")){let ne=m[Number(Y.getAttribute("data-index"))];if(!ne)continue;let me=ne===K?datagridCore.distinctNonBlankTicked(r,p):p.has(h(ne));Y.setAttribute("aria-selected",String(me));let Fe=Y.querySelector("input");Fe&&(Fe.checked=me);}};ie.addEventListener("scroll",()=>{Po.set(e,ie.scrollTop),je();});let eo=null,Qo=()=>{if(b=0,re){let L=re;eo&&clearTimeout(eo),eo=setTimeout(()=>{eo=null,L.getSearch()!==x.trim()&&(L.setSearch(x),ie.scrollTop=0,je());},150);return}rn(),je();};ke.addEventListener("input",()=>{x=ke.value,Qo();});let Zo=L=>{if(re){let me=re.getRowCount();if(me===0)return;b=Math.max(0,Math.min(me-1,L)),L<=0?ie.scrollTop=0:L>=me-1&&(ie.scrollTop=ie.scrollHeight),je();let Fe=s.querySelector(`.kanuni-datagrid-filter-item[data-index="${b}"]`);Fe?.focus(),Fe?.scrollIntoView?.({block:"nearest"});return}if(m.length===0)return;b=Math.max(0,Math.min(m.length-1,L));let Y=b*Lt,ne=ie.clientHeight||240;Y<ie.scrollTop?ie.scrollTop=Y:Y+Lt>ie.scrollTop+ne&&(ie.scrollTop=Y+Lt-ne),je(),s.querySelector(`.kanuni-datagrid-filter-item[data-index="${b}"]`)?.focus();},Ba=()=>{if(c)return;if(re){if(re.isLoading())return;a.setColumnFilter(e,re.buildFilter(e),datagridCore.FILTER_PART_SET),He();return}let L;if(p.size===r.length)L=null;else if(datagridCore.distinctNonBlankTicked(r,p))L={columnId:e,operator:"isnotnull"};else {let Y=p.has(datagridCore.BLANK_KEY),ne=r.filter(me=>!H(me)&&p.has(datagridCore.distinctEntryKey(me)));ne.length===0?L=Y?{columnId:e,operator:"isnull"}:null:Y?L={logic:"or",nodes:[{columnId:e,operator:"in",value:ne.map(me=>me.value)},{columnId:e,operator:"isnull"}]}:L={columnId:e,operator:"in",value:ne.map(me=>me.value)};}a.setColumnFilter(e,L,datagridCore.FILTER_PART_SET),He();};s.tabIndex=-1,s.addEventListener("keydown",L=>{let Y=L.target===ke;if(!((L.key==="Enter"||L.key===" ")&&L.target instanceof HTMLButtonElement)){if(L.key==="Tab"){let ne=Array.from(s.querySelectorAll('input:not([disabled]), button:not([disabled]), [tabindex="0"]')),me=ne[0],Fe=ne[ne.length-1],Ge=document.activeElement;me&&Fe&&(!L.shiftKey&&(Ge===Fe||Ge===s)?(L.preventDefault(),me.focus()):L.shiftKey&&(Ge===me||Ge===s)&&(L.preventDefault(),Fe.focus()));return}if(L.key==="Backspace"&&!Y){L.preventDefault(),ke.focus(),x=x.slice(0,-1),ke.value=x,Qo();return}if(L.key==="ArrowDown"){L.preventDefault(),Zo(Y?0:b+1);return}if(L.key==="ArrowUp"){L.preventDefault(),Zo(Y?re?0:m.length-1:b-1);return}if(!Y&&(L.key==="Home"||L.key==="End")){L.preventDefault(),Zo(L.key==="Home"?0:(re?re.getRowCount():m.length)-1);return}if(L.key===" "&&!Y){if(L.preventDefault(),re){let me=re.getRow(b);me&&re.toggle(me);return}let ne=m[b];ne&&Oa(h(ne));return}if(L.key==="Enter"){L.preventDefault(),Ba();return}!Y&&L.key.length===1&&L.key!==" "&&!L.ctrlKey&&!L.metaKey&&!L.altKey&&(L.preventDefault(),ke.focus(),x+=L.key,ke.value=x,Qo());}});let Va=w("kanuni-datagrid-filter-footer"),to=document.createElement("button");to.type="button",to.textContent=C.cancel,to.addEventListener("click",()=>He());let yt=document.createElement("button");yt.type="button",yt.className="kanuni-datagrid-filter-primary",yt.setAttribute("data-testid","dg-filter-apply"),yt.textContent=C.apply,yt.disabled=true,yt.addEventListener("click",Ba),Va.append(to,yt),s.append(ke,...Ve?[Ve]:[],ht,ie,Va),je(),queueMicrotask(()=>{ke.isConnected&&ke.focus();});let _a=L=>{r=L,j=null,fe="",c=false,yt.disabled=false;let Y=datagridCore.selectedLabelsFromFilter(a.getColumnFilter(e,datagridCore.FILTER_PART_SET)??a.getColumnFilter(e,datagridCore.FILTER_PART_DEFAULT),r,{text:a.getColumnModel().getDataType(e)==="string"});Y?(E=true,p=new Set(Y)):E||(p=new Set(r.map(datagridCore.distinctEntryKey))),rn();let ne=Po.get(e);je(),ne&&(ie.scrollTop=ne,je());},Dt=a.openRemoteDistinct(e,Lt);if(Dt){re=Dt,i=Dt,Dt.subscribe(()=>{s.isConnected&&re===Dt&&je();}),Dt.start().then(L=>{if(Go!==n||!s.isConnected){Dt.dispose();return}if(L.kind==="paged"){c=false,yt.disabled=false;let Y=Po.get(e);je(),Y&&(ie.scrollTop=Y,je());return}Dt.dispose(),re=null,i=null,_a(a.sortDistinctEntries(L.values));});return}a.getDistinctValueSetAsync(e).then(L=>{Go!==n||!s.isConnected||_a(L.entries);});},void 0,e);let d=Wt;Wt=()=>{d?.(),i?.dispose(),i=null;};}function Wn(e={}){let t=a.getClipboardText(e);a.notifyClipboardGesture("copy",t?t.split(`
2
+ `).length:0,()=>a.writeClipboard(t,"copy"));}function nl(e){if(ye===false)return [];let t=ye===true?{}:ye,o=[],n=d=>{e&&o.length===0&&o.push({separator:true,id:"__dg-sep"}),o.push(d);};t.copy!==false&&n({id:"__dg-copy",label:C.menuCopy,shortcut:`${rl}C`,onSelect:()=>Wn()}),t.copyWithHeaders!==false&&n({id:"__dg-copy-headers",label:C.menuCopyWithHeaders,onSelect:()=>Wn({includeHeaders:true})}),t.copyWithGroupHeaders!==false&&ol()&&n({id:"__dg-copy-group-headers",label:C.menuCopyWithGroupHeaders,onSelect:()=>Wn({includeGroupHeaders:true})});let i=(t.export===false?[]:Array.isArray(t.export)?t.export:["csv","excel","excel-selected","pdf"]).filter(d=>d!=="csv"||a.canExportAll());if(i.length>0){let d=a.getSelectedCount()===0,s={csv:C.exportCsv,excel:C.exportExcel,"excel-selected":C.exportExcelSelected,pdf:C.exportPdf};n({id:"__dg-export",label:C.menuExport,items:i.map(r=>({id:`__dg-export-${r}`,label:s[r],disabled:r==="excel-selected"&&d,onSelect:()=>{tr(a,r).then(c=>{c.error&&Io(c.error);});}}))});}return o}function ol(){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 rl=/Mac|iPhone|iPad|iPod/.test(navigator.platform??"")?"\u2318":"Ctrl+";function qn(e,t,o){let n=null,i=()=>{n?.remove(),n=null;};t.forEach((d,s)=>{if(d.separator){let b=w("kanuni-datagrid-menu-separator");b.setAttribute("role","separator"),e.appendChild(b);return}let r=w("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(s)),d.disabled&&(c.disabled=true),d.icon!==void 0){let b=w("kanuni-datagrid-menu-icon","span");typeof d.icon=="string"?b.textContent=d.icon:b.appendChild(d.icon),c.appendChild(b);}let p=w("kanuni-datagrid-menu-label","span");if(p.textContent=d.label??"",c.appendChild(p),d.shortcut){let b=w("kanuni-datagrid-menu-shortcut","span");b.textContent=d.shortcut,c.appendChild(b);}let E=d.items??[];if(E.length>0){let b=w("kanuni-datagrid-menu-caret","span");b.textContent="\u203A",c.appendChild(b),c.setAttribute("aria-haspopup","menu"),c.setAttribute("aria-expanded","false");let x=()=>{i();let F=w("kanuni-datagrid-context-menu kanuni-datagrid-submenu");F.setAttribute("role","menu");let K=c.getBoundingClientRect();F.style.left=`${K.right}px`,F.style.top=`${Math.max(0,K.top-4)}px`;for(let H of E){if(H.separator){let $=w("kanuni-datagrid-menu-separator");$.setAttribute("role","separator"),F.appendChild($);continue}let m=document.createElement("button");m.type="button",m.className="kanuni-datagrid-menu-item",m.setAttribute("role","menuitem"),H.disabled&&(m.disabled=true);let h=w("kanuni-datagrid-menu-label","span");h.textContent=H.label??"",m.appendChild(h),m.addEventListener("click",()=>{H.onSelect?.(o),He();}),F.appendChild(m);}e.parentElement?.appendChild(F),oa(F,{left:K.right,top:Math.max(0,K.top-4)}),n=F,c.setAttribute("aria-expanded","true"),na(F,()=>{i(),c.setAttribute("aria-expanded","false"),c.focus();});};c.addEventListener("mouseenter",x),c.addEventListener("click",x);}else c.addEventListener("mouseenter",i),c.addEventListener("click",()=>{d.onSelect?.(o),He();});r.appendChild(c),e.appendChild(r);});}let ia=e=>{let o=e.target.closest(".kanuni-datagrid-row");if(!o||o.classList.contains("kanuni-datagrid-group-row"))return;let n=St(e);if(n?.columnId&&a.notifyCell("cellContextMenu",n.node,n.rowIndex,n.columnId),!Ce&&!ye&&!a.isRowPinningEnabled()||!n||n.node.kind!=="data"||(e.preventDefault(),n.columnId&&!a.focusCell(n.node.key,n.columnId))||!n.columnId&&a.isRowLeaveBlocked(n.node.key))return;a.isRowSelected(n.node.key)||a.handleRowClick(n.node.key,{});let i={row:n.node.data,node:n.node,rowIndex:n.rowIndex,columnId:n.columnId,selectedKeys:a.getSelectedKeys()},d=(typeof Ce=="function"?Ce(i):Ce)??[],s=[...d,...al(i,d.length>0)],r=[...s,...ta(n.node.key,s.length>0)],c=nl(r.length>0);r.length===0&&c.length===0||wt({left:e.clientX,top:e.clientY},p=>{p.setAttribute("role","menu"),qn(p,[...r,...c],i);},"kanuni-datagrid-context-menu");};function al(e,t){if(!Ht?.onChange||Ht.menu===false)return [];let o=e.columnId;if(!o)return [];let n=e.node.key,i=Mo(n,o,e.row),d=[];return t&&d.push({separator:true,id:"__note-sep"}),d.push({id:"__note-edit",label:i?C.editNote:C.addNote,onSelect:()=>il(n,o,e.row,i??"")}),i&&d.push({id:"__note-delete",label:C.deleteNote,onSelect:()=>Ht.onChange?.({rowKey:n,columnId:o,row:e.row,text:null})}),d}function il(e,t,o,n){let d=(B.querySelector(`[data-row-key="${datagridCore.cssEscape(String(e))}"] [data-column-id="${datagridCore.cssEscape(t)}"]`)??B).getBoundingClientRect();queueMicrotask(()=>{wt({left:d.left,top:d.bottom+2},s=>{s.setAttribute("aria-label",C.noteEditorAria);let r=document.createElement("textarea");r.className="kanuni-datagrid-note-input",r.rows=4,r.value=n,r.setAttribute("aria-label",C.noteEditorAria),r.placeholder=C.notePlaceholder,r.setAttribute("data-testid","dg-note-input");let c=()=>{let x=r.value.trim();He(),Ht?.onChange?.({rowKey:e,columnId:t,row:o,text:x===""?null:x});};r.addEventListener("keydown",x=>{x.key==="Enter"&&(x.ctrlKey||x.metaKey)&&(x.preventDefault(),c()),x.key==="Escape"&&(x.preventDefault(),He());});let p=w("kanuni-datagrid-note-actions"),E=document.createElement("button");E.type="button",E.className="kanuni-datagrid-note-cancel",E.textContent=C.cancel,E.addEventListener("click",()=>He());let b=document.createElement("button");b.type="button",b.className="kanuni-datagrid-note-save",b.setAttribute("data-testid","dg-note-save"),b.textContent=C.save,b.addEventListener("click",c),p.append(E,b),s.append(r,p),queueMicrotask(()=>{r.focus(),r.select();});},"kanuni-datagrid-filter-popup kanuni-datagrid-note-editor");});}function ll(e){$t!==e&&($t=e,e?(B.insertBefore(qe,ae),Oo()):qe.remove());}function la(){B.classList.toggle("kanuni-datagrid--footer-pinned",V&&Ze&&!lt);}function dl(e){if(Ze!==e){if(Ze=e,la(),e){if(lt){let t=ot.isConnected?ot:We.isConnected?We:$e;Ie.insertBefore(Oe,t);}else Ie.append(Oe);Ho();}else Oe.remove();ot.style.setProperty("--dg-pinned-gap",String(Pt+(Ze&&lt?1:0))),We.style.setProperty("--dg-pinned-gap",String(Pt+(Ze&&lt?1:0)));}}function da(e){let t=oo(B,e);t!==null&&a.setColumnWidth(e,t);}function sa(e,t){let o=a.getColumnModel().getDef(e),n={columnId:e,headerName:o?.headerName??e},i=er(n,{controller:a,t:C,groupPanelVisible:$t,footerVisible:Ze,onToggleGroupPanel:()=>ll(!$t),onToggleFooter:()=>dl(!Ze),onOpenFieldChooser:()=>ua(t),onBestFit:da,onBestFitAll:()=>{for(let[s,r]of Ja(B,a))a.setColumnWidth(s,r);},maxGroupLevels:vt?Number.POSITIVE_INFINITY:1}),d=typeof U=="function"?U(n,i):i;d.length!==0&&wt(t,s=>{s.setAttribute("role","menu"),qn(s,d,n);},"kanuni-datagrid-context-menu");}function sl(e,t){let o=a.getColumnModel().getDef(e),n=a.getColumnSummary(e),i={columnId:e,headerName:o?.headerName??o?.field??e},d=[{id:"none",label:C.noTotal,disabled:n===null,onSelect:()=>a.setColumnSummary(e,null)},{id:"sep",separator:true},...datagridCore.allowedSummaryTypes(o?.dataType).map(s=>({id:s,label:go[s],disabled:n?.type===s,onSelect:()=>a.setColumnSummary(e,s)}))];wt(t,s=>{s.setAttribute("role","menu"),qn(s,d,i);},"kanuni-datagrid-context-menu");}function ua(e){wt(e,t=>{t.setAttribute("role","dialog"),t.setAttribute("aria-label",C.columns);let o=w("kanuni-datagrid-chooser-title");o.textContent=C.columns,t.appendChild(o);let n=()=>a.getColumnStates().filter(x=>!datagridCore.isChromeColumn(x.id)),i=()=>n().filter(x=>!a.getColumnModel().getDef(x.id)?.hideInChooser),d=x=>a.getColumnModel().getDef(x)?.headerName??x,s="";if(i().length>8){let x=document.createElement("input");x.type="search",x.className="kanuni-datagrid-filter-search",x.placeholder=C.search,x.setAttribute("aria-label",C.search),x.addEventListener("input",()=>{s=x.value.trim().toLocaleLowerCase(),b();}),t.appendChild(x);}let r=w("kanuni-datagrid-filter-list");t.appendChild(r);let c=w("kanuni-datagrid-filter-footer"),p=document.createElement("button");p.type="button",p.textContent=C.showAll,p.addEventListener("click",()=>{for(let x of i())x.visible||a.setColumnVisible(x.id,true);b();});let E=document.createElement("button");E.type="button",E.className="kanuni-datagrid-filter-primary",E.textContent=C.ok,E.addEventListener("click",()=>He()),c.append(p,E),t.appendChild(c);function b(){let x=i(),F=n().filter(H=>H.visible).length;r.textContent="";let K=s?x.filter(H=>d(H.id).toLocaleLowerCase().includes(s)):x;if(K.length===0){let H=w("kanuni-datagrid-chooser-empty");H.textContent=C.noData,r.appendChild(H);}for(let H of K){let m=document.createElement("label");m.className="kanuni-datagrid-filter-item";let h=document.createElement("input");h.type="checkbox",h.checked=H.visible,h.disabled=H.visible&&F===1,h.setAttribute("data-column-toggle",H.id),h.addEventListener("change",()=>{a.setColumnVisible(H.id,h.checked),b();});let $=document.createElement("span");$.textContent=d(H.id),m.append(h,$),r.appendChild(m);}p.disabled=F===x.length;}b();},"kanuni-datagrid-filter-popup kanuni-datagrid-column-chooser");}let qt=null,$o=null,Un=e=>{qe.classList.toggle("kanuni-datagrid-group-panel--over",e);};function ca(e,t,o){let n=a.getGroupLevels();if(e===t)return;let i=n.filter(r=>r!==e),d=i.indexOf(t);if(d<0)return;let s=o==="before"?d:d+1;$o=e,a.groupBy([...i.slice(0,s),e,...i.slice(s)]);}function pa(e,t){let o=a.getGroupLevels(),n=o.indexOf(e),i=n+t;n<0||i<0||i>=o.length||ca(e,o[i],t===-1?"before":"after");}function fa(e,t){if(!e)return;let o=a.getGroupLevels();if(o.includes(e))return;let n=vt?Number.POSITIVE_INFINITY:1;if(o.length>=n){a.groupBy([...o.slice(0,n-1),e]);return}let i=t??o.length;a.groupBy([...o.slice(0,i),e,...o.slice(i)]);}function Oo(){if(!$t)return;qe.textContent="";let e=a.getGroupLevels();if(e.length===0){let c=w("kanuni-datagrid-group-panel-hint","span");c.textContent=C.groupPanelHint??"Drag a column header here to group by it",qe.appendChild(c);return}let t=c=>a.getColumnModel().getDef(c)?.headerName??c,o=w("kanuni-datagrid-group-levels"),n=(c,p)=>c<p.top+p.height/2?"before":"after",i=(c,p)=>{for(let E of qe.querySelectorAll(".kanuni-datagrid-group-level"))E.classList.remove("kanuni-datagrid-group-level--drop-before","kanuni-datagrid-group-level--drop-after");c&&p&&c.classList.add(`kanuni-datagrid-group-level--drop-${p}`);};e.forEach((c,p)=>{let E=w("kanuni-datagrid-group-level");E.style.setProperty("--dg-group-level",String(p)),E.setAttribute("data-group-level",String(p));let b=w("kanuni-datagrid-group-chip");if(b.setAttribute("role","button"),b.tabIndex=0,e.length>1&&(b.draggable=true),b.setAttribute("aria-label",`${datagridCore.fillText(C.groupLevelAria,{n:p+1})}: ${t(c)}`),b.addEventListener("dragstart",K=>{qt=c,K.dataTransfer&&(K.dataTransfer.effectAllowed="move",K.dataTransfer.setData("text/x-kanuni-column",c));}),b.addEventListener("dragend",()=>{qt=null,i(null,null);}),b.addEventListener("keydown",K=>{let H=K.ctrlKey||K.metaKey;H&&(K.key==="ArrowUp"||K.key==="ArrowLeft")?(K.preventDefault(),pa(c,-1)):H&&(K.key==="ArrowDown"||K.key==="ArrowRight")?(K.preventDefault(),pa(c,1)):(K.key==="Delete"||K.key==="Backspace")&&(K.preventDefault(),a.groupBy(e.filter(m=>m!==c)));}),E.addEventListener("dragover",K=>{!qt&&!(K.dataTransfer?.types.includes("text/x-kanuni-column")??false)||(K.preventDefault(),K.stopPropagation(),i(E,n(K.clientY,E.getBoundingClientRect())));}),E.addEventListener("drop",K=>{K.preventDefault(),K.stopPropagation();let H=n(K.clientY,E.getBoundingClientRect());i(null,null),Un(false);let m=qt;if(qt=null,m){ca(m,c,H);return}let h=K.dataTransfer?.getData("text/x-kanuni-column");h&&fa(h,H==="before"?p:p+1);}),e.length>1){let K=w("kanuni-datagrid-group-chip-level","span");K.textContent=String(p+1),b.appendChild(K);}let x=document.createElement("span");x.textContent=t(c);let F=document.createElement("button");F.type="button",F.setAttribute("aria-label",datagridCore.fillText(C.groupRemoveAria,{column:t(c)})),F.textContent="\xD7",F.addEventListener("click",()=>{a.groupBy(e.filter(K=>K!==c));}),F.draggable=false,b.append(x,F),E.appendChild(b),o.appendChild(E),$o===c&&($o=null,queueMicrotask(()=>b.focus()));}),qe.appendChild(o);let d=w("kanuni-datagrid-group-panel-actions"),s=document.createElement("button");s.type="button",s.textContent=C.groupExpandAll,s.addEventListener("click",()=>a.expandAllGroups());let r=document.createElement("button");r.type="button",r.textContent=C.groupCollapseAll,r.addEventListener("click",()=>a.collapseAllGroups()),d.append(s,r),qe.appendChild(d);}if($t){let e=t=>t.dataTransfer?.types.includes("text/x-kanuni-column")??false;qe.addEventListener("dragover",t=>{e(t)&&(t.preventDefault(),Un(true));}),qe.addEventListener("dragleave",t=>{let o=t.relatedTarget;o&&qe.contains(o)||Un(false);}),qe.addEventListener("drop",t=>{Un(false);let o=t.dataTransfer?.getData("text/x-kanuni-column");if(o){if(t.preventDefault(),qt){qt=null;return}fa(o);}});}let ga="";function ma(){if(!we)return;let e=[datagridCore.fillText(C.announceRows,{n:a.getVisibleCount()})],t=a.getSort();if(t.length>0){let i=t.map(d=>{let s=a.getColumnModel().getDef(d.columnId),r=s?.headerName??s?.field??d.columnId,c=d.direction==="desc"?C.announceDescending:C.announceAscending;return `${r} ${c}`}).join(", ");e.push(datagridCore.fillText(C.announceSortedBy,{columns:i}));}let o=a.getSelectedCount();o>0&&e.push(datagridCore.fillText(C.announceSelected,{n:o}));let n=e.join(", ");n!==ga&&(ga=n,cn.textContent=n);}function ba(){if(!Q)return;Gt.textContent="";let e=datagridCore.describeFilter(a.getEffectiveFilter(),a.getColumnModel(),{...ce,labels:{...datagridCore.filterLabels(C),...ce?.labels}});if(!e&&Q!=="always"){Gt.style.display="none";return}Gt.style.display="";let t=a.isFilterEnabled();Gt.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=C.filterRemove,o.setAttribute("aria-label",C.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=C.filterToggle,n.setAttribute("aria-label",C.filterToggle),n.setAttribute("data-testid","dg-filter-panel-toggle"),n.addEventListener("change",()=>a.setFilterEnabled(n.checked));let i=w("kanuni-datagrid-filter-panel-text","span");if(i.setAttribute("data-testid","dg-filter-panel-text"),i.textContent=e??C.filterNone,e&&(i.title=e),Gt.append(o,n,i),_){let d=document.createElement("button");d.type="button",d.className="kanuni-datagrid-filter-panel-builder",d.title=C.filterEditBuilder,d.setAttribute("aria-label",C.filterEditBuilder),d.setAttribute("data-testid","dg-filter-panel-builder"),d.textContent="\u25BE",d.addEventListener("click",()=>_()),Gt.appendChild(d);}}let Bo=new Set,ul=a.events.on("cellsFlashed",({rowKeys:e,columnIds:t,duration:o})=>{let n=e.length?e.map(r=>`[data-row-key="${datagridCore.cssEscape(String(r))}"]`).join(","):".kanuni-datagrid-row",i=t.length?t.map(r=>`[data-column-id="${datagridCore.cssEscape(r)}"]`).join(","):"[data-column-id]",d=[];pe.querySelectorAll(n).forEach(r=>{r.querySelectorAll(i).forEach(c=>d.push(c));});for(let r of d)r.classList.remove("kanuni-datagrid-cell--flash");B.offsetWidth;for(let r of d)r.classList.add("kanuni-datagrid-cell--flash");let s=setTimeout(()=>{for(let r of d)r.classList.remove("kanuni-datagrid-cell--flash");Bo.delete(s);},o);Bo.add(s);});function St(e){let t=e.target,o=t.closest(".kanuni-datagrid-row");if(!o||!pe.contains(o))return null;let n=o.getAttribute("data-row-key");if(n===null)return null;let i=a.getRows(),d=i.findIndex(r=>r!==void 0&&String(r.key)===n);if(d===-1)return null;let s=t.closest(".kanuni-datagrid-cell")?.getAttribute("data-column-id")??null;return {node:i[d],rowIndex:d,columnId:s}}let wa=e=>{let t=St(e);t&&(Le?.(t.node),a.notifyRow("rowClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellClicked",t.node,t.rowIndex,t.columnId));},ha=e=>{let t=St(e);if(t){if(Er){let o=zo(t,true);o&&Er(o);}Ne?.(t.node),a.notifyRow("rowDoubleClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellDoubleClicked",t.node,t.rowIndex,t.columnId);}};pe.addEventListener("click",wa),pe.addEventListener("dblclick",ha);function cl(e){let t=0,o=Me.querySelector(`[data-column-id="${datagridCore.cssEscape(e)}"]`);o&&(t=o.scrollWidth),pe.querySelectorAll(`[data-column-id="${datagridCore.cssEscape(e)}"]`).forEach(n=>{n.scrollWidth>t&&(t=n.scrollWidth);}),t>0&&a.setColumnWidth(e,t+12,true);}function pl(){if(_e)for(let e of Me.querySelectorAll('[role="columnheader"][data-column-id]')){let t=_e(e.getAttribute("data-column-id"))??"",o=e.dataset.slotClass??"";if(t!==o){for(let n of o.split(" "))n&&e.classList.remove(n);for(let n of t.split(" "))n&&e.classList.add(n);e.dataset.slotClass=t;}}}function fl(){if(J)for(let e of Me.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 Vo=false,ya=false,on=null;function zn(){on!==null&&(clearTimeout(on),on=null);}function Yn(e){un.style.display=e?"":"none";}function jn(){let e=a.getOverlay();if(Mn.style.display=e==="noRows"?"":"none",fo===false){zn(),Yn(false);return}if(!(e==="loading"&&(Vo||!ya))){zn(),Yn(false);return}if(Vo||vr<=0){zn(),Yn(true);return}on!==null||un.style.display===""||(on=setTimeout(()=>{on=null,Be||Yn(true);},vr));}let Ca=false,_o=false,Wo=false,qo=false,Be=false,Uo=new datagridCore.RowMotion;function gl(){if(_o=false,!Be){if(Wo)Wo=false,qo&&(qo=false,mt++),xo(),To(),No(),Vn();else {let e=Ue;xo(),Ue!==e?(mt++,To(),No(),Vn()):a.getPinnedRows("top").length+a.getPinnedRows("bottom").length>0&&Vn();}$n(),a.getAnimateRows()&&Uo.play(pe),Br(),Ho(),ea(),fl(),pl(),Oo(),ba(),ma(),jn();}}function Xn(e){Be||(e&&(Wo=true),!_o&&(_o=true,queueMicrotask(gl)));}let ml=[...G?[a.events.on("focusedRowChanged",e=>G({rowKey:e.rowKey,row:e.row}))]:[],...Jd.map(e=>a.events.on(e,()=>Xn(true))),...Qd.map(e=>a.events.on(e,()=>{qo=true;})),...Zd.map(e=>a.events.on(e,()=>Xn(false))),a.events.on("filterChanged",()=>Qi()),...["sortChanged","filterChanged","groupChanged","dataUpdated"].map(e=>a.events.on(e,()=>{a.getAnimateRows()&&Uo.capture(pe);})),a.events.on("rowPinningChanged",()=>{Be||(el(),Xn(true));}),a.events.on("overlayChanged",e=>{Vo=e.manual===true&&e.overlay==="loading",Be||jn();}),a.events.on("busyChanged",e=>{ya=e.background===true,Be||jn();}),a.events.on("paginationChanged",()=>{Be||Xn(false);}),a.events.on("bodyScroll",()=>{Be||Jr();}),a.events.on("cellsRefreshed",()=>{Be||qr();}),a.events.on("scrollRequested",e=>{if(Be)return;e.scrollTop!==void 0&&(ae.scrollTop=e.scrollTop),e.scrollLeft!==void 0&&(ae.scrollLeft=e.scrollLeft),a.setScroll(ae.scrollTop,Math.abs(ae.scrollLeft));let t=e.scrollTop;t===void 0||Math.abs(ae.scrollTop-t)<=1||setTimeout(()=>{Be||Math.abs(ae.scrollTop-t)<=1||(ae.scrollTop=t,a.setScroll(ae.scrollTop,Math.abs(ae.scrollLeft)));},0);}),...ue==="fitGrid"?[a.events.on("gridSizeChanged",()=>a.sizeColumnsToFit())]:[],...ue==="fitCells"?[a.events.on("firstDataRendered",()=>{Be||Ca||(Ca=true,queueMicrotask(()=>{if(!Be)for(let e of a.getColumnStates())e.visible&&!e.flex&&da(e.id);}));})]:[]];ue==="fitGrid"&&a.sizeColumnsToFit();function zo(e,t=false){if(!e.columnId||e.node.kind!=="data"&&!(t&&e.node.kind==="group"))return null;let o=ut.find(n=>n.id===e.columnId);return o?{node:e.node,columnId:e.columnId,rowIndex:e.rowIndex,columnIndex:o.visualIndex,value:e.node.kind==="data"?a.getColumnModel().getCellValue(e.node.data,o.id):void 0}:null}let va=e=>{let t=e.target;if(Pe){let r=St(e),c=r?zo(r):null;c&&Pe(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 i=a.getRows().find(r=>r!==void 0&&String(r.key)===n);if(!i||i.kind!=="data")return;let d=t.closest(".kanuni-datagrid-cell"),s=d?ut.find(r=>d.id.endsWith(`-${r.id}`))?.id:void 0;if(!(s&&!a.focusCell(i.key,s))){if(!s){if(a.isRowLeavePending())return;let r=a.getFocus();if(a.hasRowLeaving()&&r&&r.rowKey!==i.key&&!a.focusCell(i.key,r.columnId))return}a.handleRowClick(i.key,{ctrlKey:e.ctrlKey||Hi&&!e.shiftKey,metaKey:e.metaKey,shiftKey:e.shiftKey});}},ka=e=>{if(!at)return;let o=e.target.closest(".kanuni-datagrid-cell");if(!o||!pe.contains(o)||e.relatedTarget?.closest?.(".kanuni-datagrid-cell")===o)return;let i=St(e),d=i?zo(i):null;d&&at(d,e);};if(pe.addEventListener("mousedown",va),pe.addEventListener("contextmenu",ia),at&&pe.addEventListener("mouseover",ka),fn&&($e.addEventListener("dragstart",Fi),$e.addEventListener("dragover",Ki),$e.addEventListener("drop",Pi),$e.addEventListener("dragend",Gi),$e.addEventListener("dragleave",$i)),B.tabIndex=0,Ft){Qe=dr({controller:a,element:B},et,C,{surfaceClass:()=>lo(u).replace("kanuni-datagrid-root","").trim(),barHost:B},{isColumnEditable:t=>ii(a.getColumnModel().getDef(t),t)});let e=B.querySelector(':scope > [data-testid="dg-edit-bar"]');e&&B.insertBefore(e,B.firstChild),Qe.engine.setSavedDuration(nt?.savedDuration??0);}qr();let Ea=e=>{let t=Qe;if(!t||dn)return;let o=e.target;if(!o||!(o===B||o===ae||pe.contains(o)))return;let n=o.tagName;n==="INPUT"||n==="TEXTAREA"||n==="SELECT"||o.isContentEditable||t.handleKeyDown(e)&&e.stopImmediatePropagation();};Ft&&B.addEventListener("keydown",Ea,true);let Ra=e=>{let t=e.target;if(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable||rt.contains(t)||ft.contains(t)||t.closest?.('[data-testid="dg-edit-form"], [data-testid="dg-edit-bar"], [data-testid="dg-row-message"]')||Me.contains(t))return;if((Ce||ye||a.isRowPinningEnabled())&&(e.key==="ContextMenu"||e.key==="F10"&&e.shiftKey)){let d=a.getFocus(),s=d?pe.querySelector(`[id="${datagridCore.cssEscape(`${u.gridId}-cell-${String(d.rowKey)}-${d.columnId}`)}"]`):null;if(s){let r=s.getBoundingClientRect();s.dispatchEvent(new MouseEvent("contextmenu",{bubbles:true,cancelable:true,clientX:r.left+16,clientY:r.bottom})),e.preventDefault();}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"){Wn();return}if(o.type==="activate"){if(Ne){let d=a.getFocus(),s=d?a.getRows().find(r=>r!==void 0&&r.key===d.rowKey):void 0;s&&Ne(s);}o.preventDefault&&e.preventDefault();return}a.executeCommand(o),o.preventDefault&&e.preventDefault();let n=a.getFocusIndices();if(n){let s=a.getColumnLayout().center.findIndex(c=>c.state.id===a.getFocus()?.columnId),r=a.ensureVisible(n.rowIndex,s===-1?void 0:s);r&&(r.scrollTop!==void 0&&(ae.scrollTop=r.scrollTop),r.scrollLeft!==void 0&&(ae.scrollLeft=r.scrollLeft),a.setScroll(ae.scrollTop,Math.abs(ae.scrollLeft)));}let i=a.getFocus();B.setAttribute("aria-activedescendant",i?`${u.gridId}-cell-${String(i.rowKey)}-${i.columnId}`:"");};B.addEventListener("keydown",Ra);let bl=hr?datagridCore.attachStateStoring(a,hr):null,xa=typeof tt=="object"?tt.delay??400:400,Ta=tt!==false&&!(typeof tt=="object"&&tt.enabled===false),wl=typeof tt=="object"?tt.showOnTruncation!==false:true,La=typeof tt=="object"?tt.trigger??"hover":"hover",Sa=Ta&&La!=="focus",Yo=Ta&&La!=="hover",Jn=typeof tt=="object"&&tt.interactive===true,Aa=`${u.gridId}-tooltip`,Ut=null,ze=null,Ye=null,zt=null,jo=null;function At(){ze&&clearTimeout(ze),ze=null,zt=null,Xo();}function Xo(){Ye&&clearTimeout(Ye),Ye=null,jo?.removeAttribute("aria-describedby"),jo=null,Ut?.remove(),Ut=null;}let hl=e=>e.scrollWidth>e.clientWidth+1||e.scrollHeight>e.clientHeight+1;function yl(e){let o=e.closest(".kanuni-datagrid-row")?.getAttribute("data-row-key"),n=ut.find(p=>e.id.endsWith(`-${p.id}`));if(!o||!n)return null;let i=a.getRows().find(p=>p!==void 0&&String(p.key)===o);if(!i||i.kind!=="data")return null;let d=n.def,s=Mo(i.key,n.id,i.data);if(s)return s;let r={value:a.getColumnModel().getCellValue(i.data,n.id),row:i.data,node:i,column:d},c=d.renderTooltip;if(c){let p=c(r);return p===void 0||p===""?null:p}if(typeof d.tooltip=="function")return d.tooltip(r)??null;if(typeof d.tooltip=="string")return d.tooltip;if(d.tooltipField){let p=i.data[d.tooltipField];return p==null?null:String(p)}return wl&&hl(e)?e.textContent??null:null}function Ma(e,t){let o=yl(e);if(o===null||o==="")return;Xo();let n=e.getBoundingClientRect();Ut=w(`${lo(u)} kanuni-datagrid-portal`);let i=w(Jn?"kanuni-datagrid-tooltip kanuni-datagrid-tooltip--interactive":"kanuni-datagrid-tooltip");i.id=Aa,i.setAttribute("role","tooltip"),typeof o=="string"?i.textContent=o:i.appendChild(o),i.style.position="fixed",i.style.left=`${n.left}px`,i.style.top=`${n.bottom+4}px`,i.style.zIndex="1001",Jn&&(i.addEventListener("pointerenter",()=>{Ye&&clearTimeout(Ye),Ye=null,ze&&clearTimeout(ze),ze=null;}),i.addEventListener("pointerleave",At)),Ut.appendChild(i),datagridCore.portalTarget(u.portalContainer).appendChild(datagridCore.markPortal(Ut,u.portalContainer,"tooltip")),t&&(e.setAttribute("aria-describedby",Aa),jo=e);}let Da=e=>{if(!Sa)return;let t=e.target.closest(".kanuni-datagrid-cell");if(t&&t===zt){Ye&&clearTimeout(Ye),Ye=null;return}Jn&&Ut&&Ye?(ze&&clearTimeout(ze),ze=null):At(),!(!t||!pe.contains(t))&&(zt=t,ze=setTimeout(()=>{ze=null,!(zt!==t||!t.isConnected)&&Ma(t,false);},xa));},Na=e=>{if(!Sa)return;let t=e.relatedTarget;if(!(zt&&t&&zt.contains(t))){if(!Jn||!Ut){At();return}Ye&&clearTimeout(Ye),Ye=setTimeout(Xo,150);}};B.addEventListener("pointerover",Da),B.addEventListener("pointerout",Na),ae.addEventListener("scroll",At,{passive:true});let Ia=-1/0,Ha=()=>{Ia=Date.now();};Yo&&B.addEventListener("pointerdown",Ha);let Cl=Yo?a.events.on("focusChanged",()=>{At();let e=a.getFocus();e&&(ze=setTimeout(()=>{if(ze=null,!B.contains(document.activeElement)&&Date.now()-Ia>1500)return;let t=document.getElementById(`${u.gridId}-cell-${String(e.rowKey)}-${e.columnId}`);!t||!pe.contains(t)||(zt=t,Ma(t,true));},xa));}):null,Fa=e=>{e.key==="Escape"&&At();};Yo&&B.addEventListener("keydown",Fa);let Ka=()=>{if(a.setScroll(ae.scrollTop,Math.abs(ae.scrollLeft)),Mt)for(let e of Pa())e.scroller.scrollLeft!==ae.scrollLeft&&(e.scroller.scrollLeft=ae.scrollLeft);};ae.addEventListener("scroll",Ka,{passive:true});let Mt=null,Pa=()=>{if(!k||!Mt)return [];let e=En.get(k);return e?[...e].filter(t=>t!==Mt):[]},Ga=null;if(k){Mt={controller:a,scroller:ae};let e=En.get(k)??new Set;e.add(Mt),En.set(k,e),Ga=a.events.on("columnStateChanged",()=>{if(mr.has(k))return;let t=Pa();if(t.length===0)return;let o=a.getColumnStates();mr.add(k);try{for(let n of t)n.controller.applyColumnStates(o);}finally{mr.delete(k);}});}let $a=()=>{a.setViewportSize(ae.clientWidth,ae.clientHeight),ln&&Ii(datagridCore.cardViewWidth(ae)),ae.style.setProperty("--dg-viewport-width",`${ae.clientWidth}px`);let e=$e.getBoundingClientRect(),t=Ie.getBoundingClientRect();a.setChromeOffsets(e.top-t.top,t.bottom-e.bottom),datagridCore.calibrateMaxScrollOffset(ae,a);};$a();let Qn=null;typeof ResizeObserver<"u"&&(Qn=new ResizeObserver($a),Qn.observe(ae),Qn.observe(Ie)),xo(),To(),No(),Zi(),Vn(),$n(),Ho(),ea(),Oo(),ba(),ma(),jn(),Vt?.always&&Eo(true);let Jo=null;if(M){let e=null,t=()=>{let o=Me.offsetHeight,n=o>0?`${o}px`:null;n!==e&&(e=n,n?Ie.style.setProperty("--dg-header-actual",n):Ie.style.removeProperty("--dg-header-actual"));};t(),typeof ResizeObserver<"u"&&(Jo=new ResizeObserver(t),Jo.observe(Me));}return Sr=true,{controller:a,element:B,setData:e=>a.setData(e),setColumns:e=>a.setColumns(e),destroy:()=>{if(!Be){if(Be=true,ml.forEach(e=>e()),wn.forEach(e=>e()),wn=[],Qn?.disconnect(),Jo?.disconnect(),Or?.(),en&&(en=false,Xt--,Xt<=0&&(Xt=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),Ga?.(),k&&Mt){let e=En.get(k);e?.delete(Mt),e&&e.size===0&&En.delete(k),Mt=null;}ae.removeEventListener("scroll",Ka),pe.removeEventListener("mousedown",va),pe.removeEventListener("contextmenu",ia),ot.removeEventListener("contextmenu",_n),Uo.dispose(),kt.removeEventListener("contextmenu",_n),at&&pe.removeEventListener("mouseover",ka),pe.removeEventListener("click",wa),pe.removeEventListener("dblclick",ha),ul(),Zr?.(),zn();for(let e of Bo)clearTimeout(e);B.removeEventListener("keydown",Ra),B.removeEventListener("keydown",Ea,true),Qe?.dispose(),Qe=null,B.removeEventListener("pointerover",Da),B.removeEventListener("pointerout",Na),B.removeEventListener("keydown",Fa),B.removeEventListener("pointerdown",Ha),Cl?.(),ae.removeEventListener("scroll",At),At(),bl?.(),He(false),a.dispose(),B.remove();}}}}function ls(l){let u=document.createElement("button");u.type="button";let f={...l},T=()=>{let{icon:v,label:y,shortcut:S,disabledReason:A,showLabel:R,testId:z}=f;if(u.className=`kanuni-datagrid-app-button${R?"":" kanuni-datagrid-toolbar-icon-button"}`,u.textContent="",typeof v=="string"?u.insertAdjacentHTML("afterbegin",v):u.appendChild(v),R){let N=document.createElement("span");N.textContent=y,u.appendChild(N),u.removeAttribute("aria-label");}else u.setAttribute("aria-label",y);let q=S?`${y} (${S})`:y;u.title=A!==void 0?`${q} \u2014 ${A}`:q,S?u.setAttribute("aria-keyshortcuts",S):u.removeAttribute("aria-keyshortcuts"),A!==void 0?(u.setAttribute("aria-disabled","true"),u.setAttribute("aria-description",A)):(u.removeAttribute("aria-disabled"),u.removeAttribute("aria-description")),z&&u.setAttribute("data-testid",z);};return u.addEventListener("click",v=>{if(f.disabledReason!==void 0){v.preventDefault();return}f.onClick?.();}),u.update=v=>{f={...f,...v},T();},T(),u}Object.defineProperty(exports,"DENSITY_ROW_HEIGHT",{enumerable:true,get:function(){return datagridCore.DENSITY_ROW_HEIGHT}});Object.defineProperty(exports,"GRID_COLOR_SCHEMES",{enumerable:true,get:function(){return datagridCore.GRID_COLOR_SCHEMES}});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=so;exports.DETAIL_COLUMN_WIDTH=xn;exports.PRINT_MAX_ROWS=hi;exports.ROW_DRAG_MIME=uo;exports.ROW_NUMBER_COLUMN_WIDTH=Rn;exports.attachCellEditing=dr;exports.buildCellEditor=rr;exports.buildDateEditor=Yt;exports.buildEditForm=ir;exports.buildHeaderMenu=er;exports.createGrid=is;exports.measureBestFitWidth=oo;exports.openConfirmDialog=ar;exports.toolbarButton=ls;