@kanunilabs/datagrid 1.9.6 → 1.9.8

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.js CHANGED
@@ -1,2 +1,2 @@
1
- import {DEFAULT_DATE_FORMAT,toDate,dateDigits,maskDate,portalContainerFor,portalTarget,markPortal,createDebouncedCommit,EditingEngine,isChromeColumn,getGridDictionary,summaryTypeLabels,datePeriodLabels,inferColumns,presetRowHeight,DataGridController,normalizeRowStatus,registerPortalContainer,isRtlLocale,resolveCardView,RowMotion,attachStateStoring,edgeEditableColumn,nextEditableColumn,lookupLabel,formatDateValue,GROUP_COLUMN_ID,fillText,rowMessageKeys,normalizeSearch,FILTER_PART_ROW,customFilterInputFromNode,findCustomFilterOperator,customFilterOperators,resolveToolbar,setCommandContent,pageButtonItems,summaryLabel,formatSummaryValue,summaryKey,distinctEntryKey,NONBLANK_KEY,distinctNonBlankTicked,BLANK_KEY,FILTER_PART_SET,selectedLabelsFromFilter,FILTER_PART_DEFAULT,allowedSummaryTypes,describeFilter,filterLabels,resolveGridCommand,cardViewWidth,calibrateMaxScrollOffset,isRowEditMode,periodSuggestionList,parseCustomFilterInput,parseFilterInput,dateDigitCount,parseDateValue,daysInMonth,toIsoDate,placeAnchoredLayer,bandDepth,computeHeaderBands,bandPath,distinctDisplayText,foldText,rowMessageModel,showsCards,downloadBlob,ExportAbortedError,resolveRowStatus,rowStatusClassName,rowStatusDescription,spanRoleAt,cardFields,cardColumnIds,cardHeight,DEFAULT_EDIT_FORM_HEIGHT,staticLookupItems}from'@kanunilabs/datagrid-core';export{DENSITY_ROW_HEIGHT,GRID_COLOR_SCHEMES,THEME_ROW_HEIGHT,isPackagedTheme,presetRowHeight}from'@kanunilabs/datagrid-core';function Jo(l,u){let{controller:f,maxGroupLevels:M,t:E}=u,C=l.columnId,A=f.getColumnModel().getDef(C),L=f.getSort(),x=L.find(O=>O.columnId===C),Z=f.getGroupLevels(),U=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:E.sortAsc,disabled:!H||x?.direction==="asc",onSelect:()=>f.setSort([{columnId:C,direction:"asc"}])},{id:"sort-desc",label:E.sortDesc,disabled:!H||x?.direction==="desc",onSelect:()=>f.setSort([{columnId:C,direction:"desc"}])},{id:"sort-clear",label:E.clearSort,disabled:!x,onSelect:()=>f.setSort(L.filter(O=>O.columnId!==C))},{id:"sep-1",separator:true},{id:"group",label:U?E.ungroupColumn:E.groupByColumn,disabled:!ce,onSelect:()=>{U?f.groupBy(Z.filter(O=>O!==C)):f.groupBy([...Z,C].slice(-M));}},{id:"group-panel",label:u.groupPanelVisible?E.hideGroupPanel:E.showGroupPanel,onSelect:u.onToggleGroupPanel},{id:"footer",label:u.footerVisible?E.hideFooter:E.showFooter,onSelect:u.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:E.hideColumn,disabled:f.getColumnStates().filter(O=>O.visible).length<=1,onSelect:()=>f.setColumnVisible(C,false)},{id:"field-chooser",label:E.fieldChooser,onSelect:u.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:E.bestFit,disabled:A?.resizable===false,onSelect:()=>u.onBestFit(C)},{id:"best-fit-all",label:E.bestFitAll,onSelect:u.onBestFitAll}],ee=f.getColumnStates().filter(O=>O.visible&&O.pinned===V).map(O=>O.id),Re=ee.indexOf(C),T=A?.reorderable!==false&&Re>=0;return se.push({id:"sep-4",separator:true},{id:"move-left",label:E.moveLeft,disabled:!T||Re<=0,onSelect:()=>f.moveColumn(C,ee[Re-1])},{id:"move-right",label:E.moveRight,disabled:!T||Re<0||Re>=ee.length-1,onSelect:()=>f.moveColumn(C,ee[Re+2])},{id:"fixed-position",label:E.fixedPosition,items:[{id:"pin-left",label:E.pinLeft,disabled:V==="left",onSelect:()=>f.setColumnPinned(C,"left")},{id:"pin-right",label:E.pinRight,disabled:V==="right",onSelect:()=>f.setColumnPinned(C,"right")},{id:"pin-sticky",label:E.pinSticky,disabled:V==="sticky",onSelect:()=>f.setColumnPinned(C,"sticky")}]},{id:"unpin",label:E.unpin,disabled:V===null,onSelect:()=>f.setColumnPinned(C,null)}),W?se:se.filter(O=>O.id!=="group"&&O.id!=="group-panel")}async function Qo(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 downloadBlob(f.blob,f.fileName),{completed:!0}}catch(f){return f instanceof ExportAbortedError?{completed:false}:{completed:false,error:f instanceof Error?f.message:String(f)}}}var $a=null;function pl(){return typeof document>"u"?null:($a??=document.createElement("canvas"),$a.getContext("2d"))}function Oa(l){let u=getComputedStyle(l);return `${u.fontStyle} ${u.fontWeight} ${u.fontSize} ${u.fontFamily}`}function fl(l){for(let u=l.firstElementChild;u;u=u.nextElementSibling)if(u.tagName!=="MARK")return true;return false}function gl(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 E=Math.ceil(M.getBoundingClientRect().width);E>f&&(f=E);}return l.forEach((M,E)=>{[M.style.width,M.style.minWidth,M.style.maxWidth]=u[E];}),f}function Zo(l,u){let f=pl();if(!f)return null;let M=typeof CSS<"u"&&CSS.escape?CSS.escape(u):u.replace(/"/g,'\\"'),E=l.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${M}"]`),C=l.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${M}"]`);if(!E&&C.length===0)return null;let A=0;if(E){let L=E.querySelector(".kanuni-datagrid-header-label")??E;f.font=Oa(L),A=f.measureText(L.textContent??"").width+44;}if(C.length>0){f.font=Oa(C[0]);let L=[];for(let x=0;x<C.length;x++){if(fl(C[x])){L.push(C[x]);continue}let Z=C[x].textContent??"";if(Z==="")continue;let U=f.measureText(Z).width+20;U>A&&(A=U);}L.length>0&&(A=Math.max(A,gl(L)));}return A===0?null:Math.round(Math.min(640,Math.max(48,A)))}function _a(l){let u=Number(l.weekStartsOn);return Number.isInteger(u)&&u>=0&&u<=6?u:0}function Rl(l){let u=[l.weekdaySu,l.weekdayMo,l.weekdayTu,l.weekdayWe,l.weekdayTh,l.weekdayFr,l.weekdaySa],f=_a(l);return [...u.slice(f),...u.slice(0,f)]}function xl(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 Tl(l,u){return !l||!u?false:l.getFullYear()===u.getFullYear()&&l.getMonth()===u.getMonth()&&l.getDate()===u.getDate()}var Va="http://www.w3.org/2000/svg";function Sl(){let l=document.createElementNS(Va,"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(Va,"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 Ut(l){let{t:u,format:f=DEFAULT_DATE_FORMAT,autoFocus:M=true}=l,E=xl(u),C=Rl(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 x=null,Z=false,U=null,H=toDate(l.value),V=H??new Date,ce=()=>x===null?formatDateValue(l.value,f):maskDate(x,f),W=()=>x===null?null:parseDateValue(maskDate(x,f),f),se=()=>x!==null&&x.length===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 Re=P=>{if(P===null){l.onChange(null);return}l.onChange(l.value instanceof Date?P:toIsoDate(P));},T=()=>{if(!U)return;if(!L.isConnected){Y();return}let P=L.getBoundingClientRect(),Ce=placeAnchoredLayer({anchor:{left:P.left,top:P.top,bottom:P.bottom},width:U.offsetWidth,height:U.offsetHeight,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});U.style.left=`${Ce.left}px`,U.style.top=`${Ce.top}px`;},O=()=>T();function J(){if(!U)return;U.textContent="";let P=document.createElement("div");P.className="kanuni-datagrid-date-popup-head";let Ce=document.createElement("button");Ce.type="button",Ce.setAttribute("aria-label",u.datePreviousMonth),Ce.setAttribute("data-testid","dg-date-prev"),Ce.textContent="\u2039",Ce.addEventListener("click",()=>{V=new Date(V.getFullYear(),V.getMonth()-1,1),J();});let Me=document.createElement("span");Me.setAttribute("data-testid","dg-date-title"),Me.textContent=`${E[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(Ce,Me,pe);let g=document.createElement("div");g.className="kanuni-datagrid-date-popup-grid",g.setAttribute("role","grid");for(let we of C){let j=document.createElement("span");j.className="kanuni-datagrid-date-weekday",j.setAttribute("role","columnheader"),j.textContent=we,g.appendChild(j);}let D=(new Date(V.getFullYear(),V.getMonth(),1).getDay()-_a(u)+7)%7,ye=daysInMonth(V.getFullYear(),V.getMonth()+1);for(let we=0;we<42;we++){let j=we-D+1,le=new Date(V.getFullYear(),V.getMonth(),j),ve=j<1||j>ye,Se=Tl(le,W()??H),_=document.createElement("button");_.type="button",_.setAttribute("role","gridcell"),_.className=`kanuni-datagrid-date-day${ve?" 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",toIsoDate(le)),_.textContent=String(le.getDate()),_.addEventListener("click",()=>q(le)),g.appendChild(_);}U.append(P,g);}function ae(){if(Z)return;Z=true,Q.setAttribute("aria-expanded","true"),V=W()??H??new Date,U=document.createElement("div"),U.className=`kanuni-datagrid-detached kanuni-datagrid-date-popup${l.surfaceClass?` ${l.surfaceClass}`:""}`,U.style.position="fixed",U.setAttribute("data-testid","dg-date-calendar"),U.setAttribute("role","dialog"),U.setAttribute("aria-label",l.ariaLabel?`${l.ariaLabel} ${u.dateCalendar}`:u.dateCalendar),U.addEventListener("mousedown",Ce=>Ce.preventDefault());let P=portalContainerFor(A);portalTarget(P).appendChild(markPortal(U,P)),window.addEventListener("scroll",O,true),window.addEventListener("resize",O),l.onPortalOpen?.(Y),J(),T();}function Y(){Z&&(Z=false,Q.setAttribute("aria-expanded","false"),window.removeEventListener("scroll",O,true),window.removeEventListener("resize",O),U?.remove(),U=null);}function q(P){x=null,Y(),Re(P),L.value=formatDateValue(l.value instanceof Date?P:toIsoDate(P),f),ee(),L.focus({preventScroll:true});}function te(){if(x===null)return;if(x.length===0){Re(null),x=null,L.value=ce(),ee();return}let P=W();P&&Re(P),x=null,L.value=ce(),ee();}L.addEventListener("input",()=>{x=dateDigits(L.value,f),L.value=maskDate(x,f),ee();}),L.addEventListener("keydown",P=>{if(P.key==="Escape"){if(P.preventDefault(),P.stopPropagation(),Z){Y();return}x=null,l.onCancel();return}if(Z){let Ce=P.key==="ArrowLeft"?-1:P.key==="ArrowRight"?1:P.key==="ArrowUp"?-7:P.key==="ArrowDown"?7:0;if(Ce!==0){P.preventDefault(),P.stopPropagation();let Me=W()??H??new Date,pe=new Date(Me.getFullYear(),Me.getMonth(),Me.getDate()+Ce);x=dateDigits(formatDateValue(pe,f),f),L.value=maskDate(x,f),V=pe,J(),ee();return}if(P.key==="Enter"){P.preventDefault(),P.stopPropagation();let Me=W();Y(),Me&&q(Me);return}}if(P.key==="Enter"){P.preventDefault(),P.stopPropagation(),te(),l.onCommit();return}if(P.key==="Tab"){te(),Y(),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?Y():ae(),L.focus({preventScroll:true});}),Q.appendChild(Sl()),A.append(L,Q),M&&queueMicrotask(()=>{L.isConnected&&(L.focus({preventScroll:true}),L.select());}),A}function Wa(l,u){return l==null?"":u==="date"&&l instanceof Date?l.toISOString().slice(0,10):String(l)}function qa(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 nr(l){let{value:u,dataType:f,error:M,seeded:E=false}=l,C=document.createDocumentFragment();if(l.options===null){let x=document.createElement("input");return x.type="text",x.value="\u2026",x.readOnly=true,x.disabled=true,x.className="kanuni-datagrid-editor",x.setAttribute("data-testid","dg-cell-editor"),C.appendChild(x),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:x=>l.onTab(x?-1:1)})),qa(C,M);if(f==="date"&&l.t)return C.appendChild(Ut({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:x=>l.onTab(x?-1:1)})),qa(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=Wa(u,f),A.addEventListener("input",()=>l.onChange(A.value===""?null:Number(A.value)))):(A.type="text",A.value=Wa(u,f),A.addEventListener("input",()=>l.onChange(A.value))),A.addEventListener("keydown",x=>{x.isComposing||x.keyCode===229||(x.key==="Enter"?(x.preventDefault(),x.stopPropagation(),l.onCommit(x.shiftKey?"none":"down")):x.key==="Tab"?(x.preventDefault(),x.stopPropagation(),L=true,l.onTab(x.shiftKey?-1:1)):x.key==="Escape"?(x.preventDefault(),x.stopPropagation(),l.onCancel()):x.stopPropagation());}),A.addEventListener("blur",()=>{L||l.onCommit("none");}),C.appendChild(A),M){let x=document.createElement("span");x.id="kanuni-datagrid-editor-error",x.setAttribute("role","alert"),x.className="kanuni-datagrid-editor-error",x.textContent=M,C.appendChild(x);}return queueMicrotask(()=>{if(A.isConnected&&(A.focus({preventScroll:true}),A.type!=="checkbox"))if(E){if(A.type==="text"||A.type==="search"){let x=A.value.length;A.setSelectionRange(x,x);}}else A.select();}),C}var Dl=0;function or(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,E=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(),E(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),Re=W.shiftKey?ee<=0?se.length-1:ee-1:ee===se.length-1?0:ee+1;W.preventDefault(),W.stopPropagation(),se[Re].focus();}};document.addEventListener("keydown",C,true);let A=document.createElement("div");A.className="kanuni-datagrid-dialog-overlay",A.addEventListener("mousedown",()=>E(false));let L=document.createElement("div");L.className="kanuni-datagrid-dialog",L.setAttribute("role","alertdialog"),L.setAttribute("aria-modal","true");let x=`dg-dialog-${++Dl}`;L.setAttribute("aria-labelledby",`${x}-title`),L.setAttribute("aria-describedby",`${x}-message`),L.setAttribute("data-testid","dg-dialog");let Z=document.createElement("div");Z.className="kanuni-datagrid-dialog-title",Z.id=`${x}-title`,Z.textContent=l.title;let U=document.createElement("div");U.className="kanuni-datagrid-dialog-message",U.id=`${x}-message`,U.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",()=>E(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",()=>E(true)),H.appendChild(V),L.append(Z,U,H),f.append(A,L);let ce=portalContainerFor(l.anchor);portalTarget(ce).appendChild(markPortal(f,ce)),V.focus();})}function Nl(l,u){switch(l){case "number":return u==null||u===""||!Number.isNaN(Number(u))?"number":"text";case "boolean":return "checkbox";default:return "text"}}function Il(l,u){if(u==="number"){if(l==="")return null;let f=Number(l);return Number.isNaN(f)?l:f}return l}function rr(l){let{t:u,popup:f=false,inline:M=false}=l,E=document.createElement("div");E.className=`kanuni-datagrid-edit-form${M?" kanuni-datagrid-edit-form--inline":""}`,E.setAttribute("data-testid","dg-edit-form"),E.setAttribute("data-row-key",String(l.rowKey)),f&&E.setAttribute("data-popup",""),E.setAttribute("role",f?"dialog":"group"),f&&E.setAttribute("aria-modal","true"),E.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 x=document.createElement("div");x.className="kanuni-datagrid-edit-form-fields";let Z=new Map,U=(T,O)=>{let J=l.getValue(T.columnId),ae=l.getSaving()||!T.editable,Y=`dg-field-${String(l.rowKey)}-${T.columnId}`;if(T.lookup&&!l.renderLookup){let te=document.createElement("input");te.id=Y,te.type="text",te.className="kanuni-datagrid-edit-form-input",te.setAttribute("data-testid",Y),te.disabled=true,te.readOnly=true;let Q=T.lookup.options?.find(P=>Object.is(P.value,J));return te.value=Q?Q.label:J==null?"":String(J),te}if(T.lookup&&l.renderLookup){let te=document.createElement("div");if(te.className="kanuni-datagrid-edit-form-lookup",T.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",Y),te.appendChild(Q),te}return te.appendChild(l.renderLookup({options:T.lookup.options,value:J,matchMode:T.lookup.matchMode,allowCustom:T.lookup.allowCustom,invalid:!!O,autoFocus:false,testId:Y,columnId:T.columnId,ariaLabel:T.label,surfaceClass:l.surfaceClass,onPortalOpen:l.onPortalOpen,noMatchText:u.editNoMatch,onChange:Q=>l.onChange(T.columnId,Q),commitOnPick:false,onCommit:()=>l.onSave(),onCancel:l.onCancel})),te}if(T.dataType==="date"){let te=document.createElement("div");return te.className="kanuni-datagrid-edit-form-lookup",te.appendChild(Ut({value:J,format:T.dateFormat,invalid:!!O,disabled:ae,autoFocus:false,testId:Y,columnId:T.columnId,ariaLabel:T.label,surfaceClass:l.surfaceClass,onPortalOpen:l.onPortalOpen,t:u,onChange:Q=>l.onChange(T.columnId,Q),onCommit:()=>l.onSave(),onCancel:l.onCancel})),te}let q=document.createElement("input");return q.id=Y,q.className="kanuni-datagrid-edit-form-input",q.setAttribute("data-testid",Y),q.disabled=ae,T.dataType==="boolean"?(q.type="checkbox",q.checked=J===true,q.addEventListener("change",()=>l.onChange(T.columnId,q.checked)),q):(q.type=Nl(T.dataType,J),O&&q.setAttribute("aria-invalid","true"),q.value=J==null?"":String(J),q.addEventListener("input",()=>l.onChange(T.columnId,Il(q.value,T.dataType))),q)},H=l.getErrors();for(let T of l.fields){let O=document.createElement("label");O.className="kanuni-datagrid-edit-form-field",O.setAttribute("data-field-id",T.columnId);let J=document.createElement("span");J.className="kanuni-datagrid-edit-form-label",J.textContent=T.label;let ae=document.createElement("span");ae.style.display="contents",ae.appendChild(U(T,H[T.columnId]??null));let Y=document.createElement("span");Y.className="kanuni-datagrid-edit-form-message",Y.setAttribute("role","alert"),Y.style.display="none",O.append(J,ae,Y),x.appendChild(O),Z.set(T.columnId,{wrap:O,message:Y,controlHost:ae,field:T});}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),E.append(C,L,x,V),E.addEventListener("keydown",T=>{if(T.key==="Escape"){T.preventDefault(),T.stopPropagation(),l.onCancel();return}if(T.key==="Enter"&&(T.ctrlKey||T.metaKey)){T.preventDefault(),T.stopPropagation(),l.onSave();return}if(T.key==="Enter"&&!(T.target instanceof HTMLButtonElement)){T.preventDefault();return}if(T.key!=="Tab"||!f)return;let O=Array.from(E.querySelectorAll("input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled])"));if(O.length===0)return;let J=O[0],ae=O[O.length-1];!T.shiftKey&&document.activeElement===ae?(T.preventDefault(),J.focus()):T.shiftKey&&document.activeElement===J&&(T.preventDefault(),ae.focus());});let Re=()=>{let T=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[Y,q]of Z){let te=T[Y]??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 ae=Object.keys(T)[0];ae&&Z.get(ae)?.wrap.querySelector("input:not([disabled])")?.focus();};return queueMicrotask(()=>{if(!E.isConnected)return;let T=E.querySelector("input:not([disabled]), select:not([disabled]), textarea:not([disabled])");T?.focus(),T instanceof HTMLInputElement&&T.type==="text"&&T.select(),l.onNaturalHeight&&l.onNaturalHeight(E.clientHeight-x.clientHeight+x.scrollHeight);}),{element:E,refresh:Re,setLookupOptions:(T,O)=>{let J=Z.get(T);if(!J)return;J.field.lookup={...J.field.lookup,options:O};let ae=l.getErrors();J.controlHost.textContent="",J.controlHost.appendChild(U(J.field,ae[T]??null));},dispose:()=>E.remove()}}function za(l){let{grid:u,engine:f,mode:M,t:E,extension:C}=l,A=u.controller,L=isRowEditMode(M),x=null,Z=async()=>{x=null;let k=await f.saveChanges();if(k.saved||k.superseded){_();return}x={message:k.error??E.editSaveFailed,rowKey:k.rowKey,columnId:k.columnId},_(),k.rowKey!==void 0&&k.columnId!==void 0&&(A.revealRow(k.rowKey),A.focusCell(k.rowKey,k.columnId));},U=()=>{x=null,f.cancelChanges();},H=null,V=null,ce=null,W=null,se=null,ee=new Map,Re=0,T=k=>(H=null,f.beginRowEdit(k)),O=null,J=(k,G,ne)=>!L||f.isEditingRow()||!f.canEditRow(k)||(A.scrollToCell(k,G),!T(k))?false:(M==="row"&&ne!==void 0&&(O=G,f.setRowEditValue(G,ne)),true),ae=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},Y=()=>{H=null,f.cancelRowEdit(),l.focusGrid();},q=k=>{let G=A.getColumnLayout(),ne=A.getColumnModel(),Ee=++Re;return [...G.left,...G.center,...G.right].filter(xe=>!isChromeColumn(xe.state.id)).map(xe=>{let he=xe.state.id,Ne=ne.getDef(he),yt=C.formLookup?C.formLookup(k,he,_e=>{Re===Ee&&ce?.setLookupOptions(he,_e);}):Ne?.lookup?{options:staticLookupItems(Ne)??[]}:void 0;return {columnId:he,label:Ne?.headerName??Ne?.field??he,dataType:ne.getEditorDataType(he),editable:f.canUpdate(k,he),dateFormat:Ne?.dateFormat,lookup:yt}})},te=()=>se??l.formHeight??DEFAULT_EDIT_FORM_HEIGHT,Q=(k,G)=>rr({rowKey:k,fields:q(k),getValue:ne=>f.rowEditValue(ne),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:E,onNaturalHeight:G?ne=>{let Ee=Math.ceil(ne);if(Ee>0&&Ee!==se){se=Ee;let xe=f.getRowSession();xe&&M==="form"&&A.setEditFormRow(xe.rowKey,{height:te(),atTop:xe.isNew});}}:void 0,onChange:(ne,Ee)=>f.setRowEditValue(ne,Ee),onSave:()=>{ae();},onCancel:Y}),P=()=>{ee.clear(),ce?.dispose(),ce=null,W?.remove(),W=null;};function Ce(){if(!L)return;let k=f.getRowSession();if(k&&M!=="row"?u.element.setAttribute("data-row-session",M):u.element.removeAttribute("data-row-session"),!k){V!==null&&(V=null,se=null,P(),M==="form"&&A.setEditFormRow(null));return}if(V===k.rowKey){ce?.refresh();return}if(P(),V=k.rowKey,M==="form"){A.setEditFormRow(k.rowKey,{height:te(),atTop:k.isNew}),A.revealRow(k.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 ne=document.createElement("div");ne.className="kanuni-datagrid-edit-popup-overlay",ne.addEventListener("mousedown",()=>Y()),ce=Q(k.rowKey,false),W.append(ne,ce.element);let Ee=portalContainerFor(l.barHost);portalTarget(Ee).appendChild(markPortal(W,Ee));return}A.revealRow(k.rowKey),queueMicrotask(()=>{let G=f.getRowSession();if(!G||G.rowKey!==V)return;let ne=u.element.querySelectorAll('[data-testid="dg-row-editor"]');if(ne.length===0)return;let Ee=A.getFocus(),he=(Ee&&String(Ee.rowKey)===String(G.rowKey)?u.element.querySelector(`[data-testid="dg-row-editor"][data-column-id="${CSS.escape(Ee.columnId)}"]`):null)??ne[0],Ne=O!==null&&he.getAttribute("data-column-id")===O;O=null,he.focus({preventScroll:true}),he instanceof HTMLInputElement&&(Ne?he.setSelectionRange(he.value.length,he.value.length):he.select());});}let Me=k=>{let G=ee.get(k);if(G)return G;let ne=A.getColumnModel(),Ee=ne.getDef(k),xe=ne.getEditorDataType(k),he=f.rowEditValue(k),Ne=f.getRowSession()?.errors[k]??null,yt=Ee?.headerName??k,_e,ht=C.resolveLookup?.(V,k);if(ht&&ht.options!==void 0&&C.renderLookup)_e=C.renderLookup({options:ht.options??[],value:he,matchMode:ht.matchMode,allowCustom:ht.allowCustom,invalid:!!Ne,autoFocus:false,testId:"dg-row-editor",columnId:k,ariaLabel:yt,surfaceClass:l.surfaceClass(),noMatchText:E.editNoMatch,onChange:Te=>f.setRowEditValue(k,Te),commitOnPick:false,onCommit:()=>{ae();},onCancel:Y});else if(xe==="date")_e=Ut({value:he,format:Ee?.dateFormat,invalid:!!Ne,autoFocus:false,testId:"dg-row-editor",columnId:k,ariaLabel:yt,surfaceClass:l.surfaceClass(),onPortalOpen:l.trackPortal,t:E,onChange:Te=>f.setRowEditValue(k,Te),onCommit:()=>{ae();},onCancel:Y});else {let Te=document.createElement("input");Te.className=`kanuni-datagrid-editor${Ne?" kanuni-datagrid-editor--invalid":""}`,Te.setAttribute("data-testid","dg-row-editor"),Te.setAttribute("data-column-id",k),Te.setAttribute("aria-label",yt),Ne&&(Te.title=Ne),xe==="boolean"?(Te.type="checkbox",Te.checked=he===true,Te.addEventListener("change",()=>f.setRowEditValue(k,Te.checked))):(Te.type=xe==="number"?"number":"text",Te.value=he==null?"":String(he),Te.addEventListener("input",()=>{let We=Te.value;f.setRowEditValue(k,xe==="number"?We===""?null:Number(We):We);})),Te.addEventListener("keydown",We=>{We.key==="Enter"?(We.preventDefault(),We.stopPropagation(),ae()):We.key==="Escape"?(We.preventDefault(),We.stopPropagation(),Y()):We.stopPropagation();}),_e=Te;}return ee.set(k,_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=(k,G,ne,Ee)=>{let xe=document.createElement("button");return xe.type="button",ne&&(xe.className="kanuni-datagrid-filter-primary"),xe.setAttribute("data-testid",k),xe.textContent=G,xe.addEventListener("click",Ee),xe},N=k=>{let G=document.createElement("span");return G.className="kanuni-datagrid-edit-form-error",G.setAttribute("data-testid",k),G.style.display="none",G},D=null,ye=null,we=null,j=null,le=null,ve=null,Se=null;M==="batch"&&(D=g("dg-save-changes",E.editSaveChanges,true,()=>{Z();}),ye=g("dg-discard-changes",E.editDiscardChanges,false,U),we=N("dg-save-error"),pe.append(D,ye,we)),M==="row"&&(j=document.createElement("span"),j.setAttribute("data-testid","dg-row-editing"),j.className="kanuni-datagrid-filter-active",j.style.display="none",le=g("dg-save-row",E.editSaveRow,true,()=>{ae();}),le.style.display="none",ve=g("dg-cancel-row",E.cancel,false,Y),ve.style.display="none",Se=N("dg-row-save-error"),pe.append(j,le,ve,Se)),pe.childElementCount>0&&l.barHost?.appendChild(pe);function _(){let k=f.hasChanges();if(D&&(D.style.display=k?"":"none",D.textContent=E.editSaveCount.replace("{n}",String(f.getChanges().length)),D.disabled=f.isSaving()),ye&&(ye.style.display=k?"":"none"),we&&(we.textContent=x?.message??"",we.style.display=x?"":"none"),j&&le&&ve&&Se){let G=f.getRowSession(),ne=G?"":"none";j.style.display=ne,le.style.display=ne,ve.style.display=ne,G&&(j.textContent=G.isNew?E.formAddTitle:E.editEditingRow.replace("{row}",String(G.rowKey)),le.disabled=G.saving,le.textContent=G.saving?E.editSaving:E.editSaveRow,ve.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(){x=null,_(),Ce();}return {rowModeActive:L,beginRowEdit:T,openRowFromKeys:J,saveRowEdit:ae,cancelRowEdit:Y,saveChanges:Z,cancelChanges:U,renderRowCell:k=>{if(!(M!=="row"||k.node.kind!=="data"||isChromeColumn(k.columnId))&&f.isEditingRow(k.node.key))return f.canUpdate(k.node.key,k.columnId)?Me(k.columnId):l.defaultContent(k,f.rowEditValue(k.columnId))},renderEditForm:k=>{if(M!=="form")return;let G=f.getRowSession();if(!(!G||G.rowKey!==k))return (!ce||ce.element.getAttribute("data-row-key")!==String(k))&&(ce?.dispose(),ce=Q(k,true)),ce.element},onCellDoubleClick:k=>L?(k.node.kind==="data"&&!f.isEditingRow()&&f.canEditRow(k.node.key)&&T(k.node.key),true):false,handleRowKeys:k=>!f.isEditingRow()||k.target?.closest?.('[data-testid="dg-edit-form"]')?false:k.key==="Enter"?(k.preventDefault(),ae(),true):k.key==="Escape"?(k.preventDefault(),Y(),true):false,sync:ue,dispose:()=>{P(),M==="form"&&V!==null&&A.setEditFormRow(null),V=null,u.element.removeAttribute("data-row-session"),pe.remove();}}}function ir(l,u,f,M,E={}){let C=l.controller,A=u.mode??"cell";u.formLabels&&(f={...f,...u.formLabels});let L=E.isColumnEditable??(g=>C.getColumnModel().getDef(g)?.editable!==false),x=()=>{C.refreshCells(),q.sync(),E.onChange?.(),Z.schedule("footer",()=>C.refreshSummaries());},Z=createDebouncedCommit(150),U=g=>C.getRowByKey(g),H=new EditingEngine({mode:A,messages:f,onChange:x,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),editableColumns:g=>{let N=C.getColumnLayout();return [...N.left,...N.center,...N.right].map(D=>D.state.id).filter(D=>!isChromeColumn(D)&&H.canUpdate(g,D))},readValue:(g,N)=>{let D=U(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:U,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),...E.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=>!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;or({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(),ye=D?{rowKey:D.rowKey,columnId:D.columnId}:C.getFocus();if(!ye||!H.commitEdit())return false;let we=C.getColumnModel().runtime().filter(_=>_.state.visible).map(_=>_.state.id);if(edgeEditableColumn(we,L,1)===null)return false;let j=C.getRows(),le=j.findIndex(_=>_.key===ye.rowKey);if(le<0)return false;let ve=nextEditableColumn(we,L,ye.columnId,g);if(ve===null){if(N.cycle===false)return false;let _=g;do le+=_;while(le>=0&&le<j.length&&j[le]?.kind!=="data");if(le<0||le>=j.length)return false;ve=edgeEditableColumn(we,L,g);}let Se=j[le];return !Se||Se.kind!=="data"?false:(C.focusCell(Se.key,ve),C.scrollToCell(Se.key,ve),N.open===true?H.beginEdit(Se.key,ve):(W(),true))},Re=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 ye=D==="number"?Number.isNaN(Number(g))?null:Number(g):g;return ye===null?false:q.rowModeActive?q.openRowFromKeys(N.rowKey,N.columnId,ye):(C.scrollToCell(N.rowKey,N.columnId),H.beginEdit(N.rowKey,N.columnId,ye))},T=null,O=new Set,J=g=>{let N=()=>{O.delete(N),g();};O.add(N);},ae=()=>{for(let g of [...O])g();O.clear();},Y=(g,N)=>{let D=C.getColumnModel().getDef(g.columnId),ye=g.node.data;if(D?.renderCell)return D.renderCell({value:N,row:ye,node:g.node,column:D});let we=lookupLabel(D,N);if(we!==null)return we;if(D?.valueFormatter){let j=D.valueFormatter(N,ye);return typeof j=="string"?j:String(j??"")}return D?.dateFormat&&D.dataType==="date"?formatDateValue(N,D.dateFormat):N==null?"":String(N)},q=za({grid:l,engine:H,mode:A,t:f,formHeight:u.formHeight,surfaceClass:()=>M.surfaceClass(),barHost:M.barHost,focusGrid:W,trackPortal:J,defaultContent:Y,extension:E}),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)){T&&T.rowKey===g.node.key&&T.columnId===g.columnId&&(T=null);let _=H.getMode()==="cell"?void 0:H.changes.get(g.node.key,g.columnId),ue=E.cellAdornment?.(g)??null;if(!_&&!ue)return;let k=_?_.newValue:g.value,G=document.createElement("span");G.style.display="contents";let ne=Y(g,k);return typeof ne=="string"?G.appendChild(document.createTextNode(ne)):G.appendChild(ne),ue&&G.appendChild(ue),G}let D=H.getSession();if(T&&T.rowKey===D.rowKey&&T.columnId===g.columnId)return T.setError(D.validation.message),T.container;let ye=C.getColumnModel().getDef(g.columnId),we=E.resolveLookup?.(D.rowKey,g.columnId)??{options:void 0},j=document.createElement("span");j.style.display="contents";let le=E.customEditors?ye?.renderEditor:void 0;if(le){let _=new Set,ue=le({value:H.getSession()?.value??D.value,row:H.effectiveRow(D.rowKey),columnId:g.columnId,error:D.validation.message,onErrorChange:k=>(_.add(k),()=>_.delete(k)),setValue:k=>H.setEditValue(k),commit:()=>{H.commitEdit()&&W();},cancel:()=>{H.cancelEdit(),W();}});return j.appendChild(ue),T={rowKey:D.rowKey,columnId:g.columnId,container:j,setError:k=>{for(let G of _)G(k);}},j}let ve=_=>{j.textContent="",j.appendChild(nr({value:H.getSession()?.value??D.value,dataType:C.getColumnModel().getEditorDataType(g.columnId),error:_,seeded:D.seeded,onPortalOpen:J,options:we.options,allowCustom:we.allowCustom,matchMode:we.matchMode,renderLookup:E.renderLookup,dateFormat:ye?.dateFormat,ariaLabel:ye?.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:E.keepEditingOnTab===true,cycle:u.focusCellOnCycle!==false});},onCancel:()=>{H.cancelEdit(),W();}}));};ve(D.validation.message);let Se=D.validation.message;if(T={rowKey:D.rowKey,columnId:g.columnId,container:j,setError:_=>{if(_===Se)return;Se=_,j.querySelector(".kanuni-datagrid-editor")?.classList.toggle("kanuni-datagrid-editor--invalid",!!_);let k=j.querySelector(".kanuni-datagrid-editor-error");_&&!k&&(k=document.createElement("span"),k.id="kanuni-datagrid-editor-error",k.setAttribute("role","alert"),k.className="kanuni-datagrid-editor-error",j.appendChild(k)),k&&(k.textContent=_??"",_||k.remove());}},we.options===null&&E.resolveLookup){let _=E.resolveLookup,ue=()=>{let G=_(D.rowKey,g.columnId);G.options!==null&&T&&T.rowKey===D.rowKey&&T.columnId===g.columnId&&H.isEditing(D.rowKey,g.columnId)&&(we.options=G.options,ve(H.getSession()?.validation.message??null));},k=C.events.on("cellsRefreshed",()=>{ue(),_(D.rowKey,g.columnId).options!==null&&k();});}return j},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)));},Ce=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"]')},Me=g=>Ce(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:E.keepEditingOnTab===true,cycle:u.focusCellOnCycle!==false})?(g.preventDefault(),true):false,pe=g=>{if(Ce(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()&&Re(g.key)?(g.preventDefault(),true):false};return {engine:H,renderCellContent:te,getCellClassName:Q,onCellDoubleClick:P,handleKeyDown:g=>Me(g)||pe(g),handleSessionKeys:Me,handleOpenKeys:pe,editAdjacentCell:ee,focusGrid:W,trackPortal:J,defaultContent:Y,renderEditForm:q.renderEditForm,beginRowEdit:q.beginRowEdit,saveRowEdit:q.saveRowEdit,cancelRowEdit:q.cancelRowEdit,saveChanges:q.saveChanges,cancelChanges:q.cancelChanges,dispose:()=>{ae(),q.dispose(),H.dispose(),Z.cancelAll(),ce.forEach(g=>g()),C.setPendingValueReader(null),C.setEditingDelegate(null);}}}function ja(l,u){return !l||isChromeColumn(u)?false:l.editable!==false&&l.lookup==null&&l.renderEditor==null&&l.allowFormulas!==true}var Xa=["rules","crud","allowAdding","allowUpdating","allowDeleting","onInitNewRow","onRowInserted","onRowUpdated","onRowRemoved","insertKey","appendOnArrowDown","newRowPosition","keepEditingOnTab","commandColumn","commandLabels","confirmDelete","confirmDeleteMessage","range"];var En=60,cr=24,Id=0,ao=36,kn=28,io="application/x-kanuni-row",vn=new Map,pr=new Set,li=5e3,Yt=0,Hd=["columnStateChanged","sortChanged"],Fd=["columnStateChanged"],Kd=["contentReady","viewportChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","cellsRefreshed","findChanged"],w=(l,u="div")=>{let f=document.createElement(u);return f.className=l,f},Rn="http://www.w3.org/2000/svg";function Pd(l,u){let f=E=>{u&&console.warn(`[datagrid] ${E} 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(E=>E.spanRows)&&(f("cell span/merge (spanRows) is"),M={...M,columns:M.columns.map(E=>E.spanRows?{...E,spanRows:void 0}:E)}),M.tree&&(f("tree data is"),delete M.tree),M.masterDetail&&(f("master-detail is"),delete M.masterDetail),M.grouping){let{groupBy:E,groupSummaries:C}=M.grouping,A=E==null?[]:typeof E=="string"?[E]:E;(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 Gd={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:""},lo=new Set;function $d(l){for(let u of Object.keys(l)){let f=Gd[u];f===void 0||f===""||lo.has(u)||(lo.add(u),console.warn(`[datagrid] \`${u}\` is a React-only option \u2014 ${f}.`));}}function Od(){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 Bd(){let l=document.createElementNS(Rn,"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(Rn,"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 Vd(l){let u=document.createElementNS(Rn,"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(Rn,"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=E=>{let C=document.createElementNS(Rn,"path");C.setAttribute("d",E),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 ii(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 ro(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 _d(l,u){let{theme:f,palette:M,density:E,dark:C,striped:A=true,rowNumbers:L=false,locale:x="en",footer:Z=false,footerMenu:U=true,footerPosition:H="bottom",notes:V,pinnedTopRows:ce=[],pinnedBottomRows:W=[],resizable:se=true,reorderable:ee=true,autoHeaderHeight:Re=false,filterRow:T=false,headerFilter:O=false,filterIconMode:J="hover",filterPanel:ae=false,onOpenFilterBuilder:Y,focusedRow:q=false,focusedRowKey:te,onFocusedRowChanged:Q,onRowClick:P,onRowActivate:Ce,autoSizeStrategy:Me="none",renderRow:pe,cardView:g,onCardViewChange:N,announcements:D=true,filterPanelLabels:ye,showRowCount:we=false,toolbarColumnChooser:j=false,cellMenu:le=true,rowMenu:ve,headerMenu:Se,rowDrag:_,alignedGrids:ue,printLayout:k,renderCellContent:G,getCellClassName:ne,getRowStatusSource:Ee,rowStatus:xe,onCellPointerDown:he,onCellPointerEnter:Ne,onCellDoubleClick:yt,editing:_e,onHeaderClick:ht,getHeaderClassName:Te,renderHeaderLabel:We,renderDetail:fr,renderEditForm:gr,enterpriseEdition:Ct=false,stateStoring:mr,tooltip:et=true,renderOverlay:so,filterDebounce:di,toolbar:br=false,highlightSearch:si=true,sortable:wr=true,toolbarItemsAfter:ui,toolbarItemsBefore:ci,toolbarExcel:pi=false,toolbarPdf:fi=false,searchDebounce:gi=200,...mi}=u;$d(u),we&&!lo.has("showRowCount:deprecated")&&(lo.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=getGridDictionary(x),{emptyText:bi=h.noData,loadingText:wi=h.busy,loadingOverlay:uo=true,...Qe}=mi,yr=typeof uo=="number"?uo:300,co=summaryTypeLabels(h),hr=datePeriodLabels(h);if((!Qe.columns||Qe.columns.length===0)&&u.autoColumns!==false){let e=Array.isArray(Qe.dataSource)?Qe.dataSource:[];Qe.columns=inferColumns(e,typeof u.autoColumns=="object"?u.autoColumns:{});}Qe.rowHeight===void 0&&(Qe.rowHeight=presetRowHeight(f,E,28));let yi=Ct?Qe:Pd(Qe,!!u.debugMode),Nt=Ct?V:void 0;!Ct&&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 DataGridController(yi);a.setEnterpriseEdition(Ct);let It=_e!=null&&typeof _e=="object"&&_e.enabled!==false,Ze=null;if(It&&u.debugMode)for(let e of Xa)_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=It?e=>Ze?.renderCellContent(e)??G?.(e):G,po=It?e=>{let t=Ze?.getCellClassName(e),o=ne?.(e);return t&&o?`${t} ${o}`:t??o}:ne,Cr=It?e=>{yt?.(e),Ze?.onCellDoubleClick(e);}:yt,hi=It?(e,t)=>Ze?.renderEditForm(e,t)??gr?.(e,t)??"":gr,rt=normalizeRowStatus(xe);te!=null&&a.focusRow(te);let B=w(ro(u));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),isRtlLocale(x)&&B.setAttribute("dir","rtl"),f&&B.setAttribute("data-theme",f),Re&&B.setAttribute("data-auto-header-height",""),B.style.setProperty("--dg-row-height",`${a.getRowHeight()}px`);let re=w("kanuni-datagrid-scroller"),Ie=w("kanuni-datagrid-canvas"),Ae=w("kanuni-datagrid-header");Ae.setAttribute("role","row");let $e=w("kanuni-datagrid-rows");$e.style.position="relative";let fe=w("kanuni-datagrid-viewport");$e.appendChild(fe);let tt=w("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--top"),vt=w("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--bottom"),Ht=()=>ce.length+a.getPinnedRows("top").length,vr=()=>W.length+a.getPinnedRows("bottom").length,qe=w("kanuni-datagrid-sticky-groups");qe.setAttribute("aria-hidden","true");let nt=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),U){let e=t=>{let n=t.target?.closest(".kanuni-datagrid-footer-cell")?.getAttribute("data-column-id");!n||isChromeColumn(n)||(t.preventDefault(),Ji(n,{left:t.clientX,top:t.clientY}));};Oe.addEventListener("click",e),Oe.addEventListener("contextmenu",e);}let xn=w("kanuni-datagrid-bands-host");xn.style.display="contents";let Et=w("kanuni-datagrid-filter-row");Et.setAttribute("role","row"),Ie.append(xn,Ae),T&&Ie.append(Et);let Ft=T?2:1,fo=0,go=()=>fo+Ft+Ht();Oe.style.setProperty("--dg-pinned-gap",String(ut?Ft:0)),tt.style.setProperty("--dg-pinned-gap",String(Ft+(nt&&ut?1:0))),nt&&ut&&Ie.append(Oe),Ht()>0&&Ie.append(tt),a.hasStickyGroupHeaders()&&(qe.style.setProperty("--dg-pinned-gap",String(Ft+(nt&&ut?1:0))),qe.style.setProperty("--dg-sticky-below",`${Ht()>0?Ht()*a.getRowHeight()+1:0}px`),Ie.append(qe)),Ie.append($e),vr()>0&&Ie.append(vt),nt&&!ut&&Ie.append(Oe),re.appendChild(Ie);let ct=w("kanuni-datagrid-toolbar"),ot=w("kanuni-datagrid-pager");ot.setAttribute("role","navigation"),ot.setAttribute("aria-label",h.pagerAria);let Kt=w("kanuni-datagrid-filter-panel"),Pt=!!Qe.grouping?.panel,Ue=w("kanuni-datagrid-group-panel"),an=resolveCardView(g),ln=false,Tn=[],kt=pe,dn=w("kanuni-datagrid-cardbar");dn.hidden=true;let Er=w("kanuni-datagrid-cardbar-label","label"),kr=w("","span");kr.textContent=h.cardSortBy;let at=w("kanuni-datagrid-cardbar-select","select"),Gt=w("kanuni-datagrid-cardbar-dir","button");Gt.type="button",Er.append(kr,at),dn.append(Er,Gt),at.addEventListener("change",()=>{let e=a.getSort()[0];a.setSort(at.value?[{columnId:at.value,direction:e?.direction??"asc"}]:[]);}),Gt.addEventListener("click",()=>{let e=a.getSort()[0];e&&a.setSort([{columnId:e.columnId,direction:e.direction==="desc"?"asc":"desc"}]);});let Ci=e=>{let[t,...o]=cardFields(a.getColumnModel(),Tn,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},Rr=()=>{if(!ln||!an)return;let e=a.getColumnModel(),t=cardColumnIds(e,an);t.join("\0")!==Tn.join("\0")&&(Tn=t,a.setDataRowHeight(cardHeight(t.length)));let o=wr?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??"",Gt.hidden=!i;let d=i?.direction==="desc";Gt.textContent=d?"\u2193":"\u2191",Gt.setAttribute("aria-label",d?h.sortAsc:h.sortDesc),Gt.title=d?h.sortAsc:h.sortDesc;},xr=false,vi=e=>{let t=showsCards(e,an);if(t!==ln){for(ln=t,B.classList.toggle("kanuni-datagrid-cards",t),kt=t?Ci:pe,Tn=[],t?Rr():(dn.hidden=true,a.setDataRowHeight(null));gt.length;)gt.pop().root.remove();Gn(),xr?N?.(t):queueMicrotask(()=>N?.(t));}};br&&B.appendChild(ct),Pt&&B.appendChild(Ue),an&&B.appendChild(dn),B.appendChild(re),ae&&B.appendChild(Kt);let Sn=Qe.pagination;Sn&&Sn.enabled!==false&&B.appendChild(ot);let sn=w("kanuni-datagrid-loading-overlay"),Tr=w("kanuni-datagrid-loading-card"),Sr=w("kanuni-datagrid-loading-spinner","span");Sr.setAttribute("aria-hidden","true");let Lr=w("kanuni-datagrid-loading-label","span");Lr.textContent=wi,Tr.append(Sr,Lr),sn.appendChild(Tr),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 Ln=w("kanuni-datagrid-empty");Ln.textContent=bi,Ln.style.display="none",B.append(sn,Ln),D&&B.appendChild(un),l.appendChild(B);let cn=Qe.selection,mo=a.getGroupDisplay()!=="fullWidth",Ar=a.getGroupDisplay()==="column",jt=(cn?.mode??"none")!=="none"&&(cn?.checkboxColumn??false),Ei=(cn?.rowClick??(jt?"toggle":"replace"))==="toggle",Xt=a.hasMasterDetail()&&!!fr,bo=()=>(L?1:0)+(Xt?1:0)+(jt?1:0),wo=rt?.icons===true,Mr=wo?cr:0,yo=Mr,ho=yo+(L?En:0),Dr=ho+(Xt?kn:0),it=Mr+(L?En:0)+(Xt?kn:0)+(jt?ao:0);a.setLeadWidth(it);let pn=!!_?.enabled,fn=_?.group??null,Nr=_?.allowReordering??true,Ir=_?.allowDropInsert??fn!==null,pt=null,An=null,Mn=false,$t=null,Rt=null;function Jt(e){$t=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 Hr=(e,t)=>{let o=t.getBoundingClientRect();return e.clientY<o.top+o.height/2?"before":"after"},Fr=e=>e.dataTransfer?.types.includes(io)?pt!==null?Nr:Ir&&fn!==null:false;function Kr(e,t,o){let n=null;try{let i=e.dataTransfer?.getData(io);n=i?JSON.parse(i):null;}catch{n=null;}if(n){if(n.gridId===a.gridId){if(!Nr)return;if(_?.onReorder){_.onReorder({dragKey:n.rowKey,targetKey:t,position:o,row:a.getRowByKey(n.rowKey)});return}a.moveRow(n.rowKey,t,o);return}!Ir||fn===null||n.group!==fn||_?.onAdd?.({row:n.row,rowKey:n.rowKey,otherGridId:n.gridId,targetKey:t,position:o});}}let ki=e=>{let t=St(e);if(!t||t.node.kind!=="data"||!e.dataTransfer)return;pt=t.node.key,An=t.node.key,Mn=false;let o={gridId:a.gridId,group:fn,rowKey:t.node.key,row:t.node.data};e.dataTransfer.setData(io,JSON.stringify(o)),e.dataTransfer.setData("text/plain",String(t.node.key)),e.dataTransfer.effectAllowed="move",a.notifyRowDrag("enter",{rowKey:t.node.key});},Ri=e=>{if(!Fr(e))return;e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move");let t=St(e);if(!t||t.node.kind!=="data")return;if(pt===t.node.key){Rt=null,Jt(null);return}let o=e.target.closest(".kanuni-datagrid-row"),n=Hr(e,o),i=$t?.key!==t.node.key||$t.side!==n;Rt={key:t.node.key,side:n},Jt({key:t.node.key,side:n}),i&&pt!==null&&a.notifyRowDrag("move",{rowKey:pt,overKey:t.node.key,position:n});},xi=e=>{if(!Fr(e)){Jt(null);return}e.preventDefault();let t=St(e);if(Mn=true,t&&t.node.kind==="data"){let o=e.target.closest(".kanuni-datagrid-row"),n=Hr(e,o);Rt={key:t.node.key,side:n},Kr(e,t.node.key,n);}else Rt=null,Kr(e,null,"after");pt=null,Jt(null);},Ti=()=>{An!==null&&a.notifyRowDragEnd({rowKey:An,dropped:Mn,overKey:Rt?.key??null,position:Rt?.side??null}),Mn=false,An=null,pt=null,Rt=null,Jt(null);},Si=e=>{let t=e.relatedTarget;t&&$e.contains(t)||pt!==null&&(Rt=null,Jt(null),a.notifyRowDrag("leave",{rowKey:pt}));},Ot=k===void 0||k===false?null:(()=>{let e=k===true?{}:k;return {always:e.always??false,maxRows:e.maxRows??li,onLimit:e.onLimit}})(),Qt=false;function Co(e){Qt!==e&&(Qt=e,B.classList.toggle("kanuni-datagrid-print",e),e?(Yt++,document.documentElement.classList.add("kanuni-datagrid-printing")):(Yt--,Yt<=0&&(Yt=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),Gn());}let Pr=null;if(Ot&&!Ot.always){let e=()=>{let o=a.getRows().length;if(o>Ot.maxRows){a.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${o} rows exceeds maxRows (${Ot.maxRows}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`),Ot.onLimit?.({rows:o,maxRows:Ot.maxRows});return}Co(true);},t=()=>Co(false);window.addEventListener("beforeprint",e),window.addEventListener("afterprint",t),Pr=()=>{window.removeEventListener("beforeprint",e),window.removeEventListener("afterprint",t);};}let ft=0,lt=[],ze=0,vo=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:ii(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);vo=Math.max(0,e.centerWidth-t.offsetX-i),Ie.style.minWidth=`${e.totalWidth+it}px`;}let Dn=26;function Li(){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=bandDepth(o);if(fo=n,xn.textContent="",Ae.style.top=`${n*Dn}px`,B.style.setProperty("--dg-band-offset",`${n*Dn}px`),n===0)return;computeHeaderBands(o,n).forEach((d,s)=>{let r=w("kanuni-datagrid-band-row");if(r.style.top=`${s*Dn}px`,r.style.height=`${Dn}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=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(Vd(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);}xn.appendChild(r);});}let Zt=null,Nn=null;function In(e,t){Nn&&Nn!==e&&Nn.classList.remove("kanuni-datagrid-header-cell--drop-before","kanuni-datagrid-header-cell--drop-after"),Nn=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 Gr(){if(!Zt)return;let e=a.getSelectedCount(),t=a.getSelectableCount(),o=t>0&&e>=t;Zt.checked=o,Zt.indeterminate=!o&&e>0,Zt.disabled=t===0&&e===0;}let gn=null;function $r(e){gn=e;for(let t of Array.from(Ae.querySelectorAll(".kanuni-datagrid-header-cell[data-column-id]")))t.tabIndex=t.getAttribute("data-column-id")===e?0:-1;}function ko(){Li();let e=document.activeElement,t=e&&Ae.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(Ae.textContent="",Zt=null,wo){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=`${cr}px`,r.style.flex="none",r.style.insetInlineStart="0px",Ae.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=`${yo}px`,Ae.appendChild(r);}if(Xt){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=`${kn}px`,r.style.flex="none",r.style.insetInlineStart=`${ho}px`,Ae.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=`${ao}px`,r.style.flex="none",r.style.insetInlineStart=`${Dr}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),Ae.appendChild(r),Zt=c,Gr();}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`,Ae.appendChild(y);}s=true;}let c=wr&&r.def.sortable!==false,p=r.id===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",()=>$r(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||ht){let y=r.id;b.addEventListener("click",$=>{ht?.(y,$)||c&&a.toggleSort(y,$.shiftKey);});}let I=Se!==false&&!isChromeColumn(r.id);if(I){let y=r.id;b.addEventListener("contextmenu",$=>{$.preventDefault(),ra(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",fillText(h.filterPopupAria,{column:r.def.headerName??r.id})),m.appendChild(Bd());let $=m;m.addEventListener("click",z=>{z.stopPropagation(),na(r.id,$);}),b.appendChild(m);}if(b.addEventListener("keydown",y=>{let $=n.indexOf(r.id),z;if(y.key==="ArrowRight")z=n[Math.min(n.length-1,$+1)];else if(y.key==="ArrowLeft")z=n[Math.max(0,$-1)];else if(y.key==="Home")z=n[0];else if(y.key==="End")z=n[n.length-1];else if(m&&y.altKey&&y.key==="ArrowDown")na(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();ra(r.id,{left:ge.left,top:ge.bottom});}else return;y.preventDefault(),y.stopPropagation(),z&&z!==r.id&&($r(z),No(z)?.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(),z=y.clientX<$.left+$.width/2;In(b,z?"before":"after");}),b.addEventListener("dragleave",y=>{let $=y.relatedTarget;(!$||!b.contains($))&&In(null,"before");}),b.addEventListener("drop",y=>{In(null,"before");let $=y.dataTransfer?.getData("text/x-kanuni-column");if(!$||$===r.id)return;y.preventDefault();let z=b.getBoundingClientRect();if(y.clientX<z.left+z.width/2)a.moveColumn($,r.id);else {let Pe=lt.findIndex(oe=>oe.id===r.id);a.moveColumn($,lt[Pe+1]?.id);}}),b.addEventListener("dragend",()=>In(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(),Zi(r.id);}),y.addEventListener("pointerdown",$=>{$.preventDefault(),$.stopPropagation();let z=$.clientX,ge=r.width,Pe=getComputedStyle(b).direction==="rtl"?-1:1;b.draggable=false;let oe=ge,ke=false,Ve=dt=>{ke=true,oe=ge+(dt.clientX-z)*Pe,a.setColumnWidth(r.id,oe,false);},bt=()=>{window.removeEventListener("pointermove",Ve),window.removeEventListener("pointerup",bt),window.removeEventListener("pointercancel",bt),ke&&a.setColumnWidth(r.id,oe,true),b.draggable=ee&&r.def.reorderable!==false;};window.addEventListener("pointermove",Ve),window.addEventListener("pointerup",bt),window.addEventListener("pointercancel",bt);}),b.appendChild(y);}Ae.appendChild(b);}t&&No(t)?.focus({preventScroll:true});}let Or=null,Hn=null;function Ai(e){if(e===Or)return;Or=e;let t=[];for(let o=0;o<e.length;o++){let n=e[o];n&&n.kind!=="data"&&t.push(o);}Hn=t.length>0?t:null;}function Mi(e){if(!Hn)return e+1;let t=0,o=Hn.length;for(;t<o;){let n=t+o>>1;Hn[n]<=e?t=n+1:o=n;}return e+1-t}let gt=[];function Fn(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"&&mo&&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 jt&&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(kt)return {kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:ft};if(wo){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=`${cr}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=`${yo}px`,t.appendChild(o));let n=null;if(Xt){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=`${kn}px`,p.style.flex="none",p.style.insetInlineStart=`${ho}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(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((L?1:0)+(Xt?1:0)+1)),p.style.width=`${ao}px`,p.style.flex="none",p.style.insetInlineStart=`${Dr}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 ${vo}px`,t.appendChild(c),{kind:e,root:t,cells:d,rowNumberCell:o,selectInput:i,detailToggle:n,leadingSpacer:s,trailingSpacer:c,epoch:ft}}let en="";function Kn(e,t){if(en===""||t===""){e.textContent=t;return}let o=foldText(t),n=o.indexOf(en);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+en.length),i.push(r),d=n+en.length,n=o.indexOf(en,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 Br(e,t,o){let n=a.getColumnModel().getCellValue(o.data,t.id),i=t.def;if(i.renderCell){let s=i.renderCell({value:n,row:o.data,node:o,column:i});typeof s=="string"?e.textContent=s:e.replaceChildren(s);return}let d=lookupLabel(i,n);if(d!==null){Kn(e,d);return}if(i.valueFormatter){let s=i.valueFormatter(n,o.data);Kn(e,typeof s=="string"?s:String(s??""));return}if(i.dateFormat&&i.dataType==="date"){Kn(e,formatDateValue(n,i.dateFormat));return}Kn(e,n==null?"":String(n));}function Di(e,t){return e.kind==="group"&&!t.group}function Ni(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:ii(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(bo()+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),Br(r,s,o);}function Ii(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 Vr(){if(!rt?.messages)return;let e=Ze?.engine??Ee?.()??null,t=rt.get,o=rowMessageKeys(rt,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 _r(e,t){let o=rt&&t?.kind==="data"?resolveRowStatus(rt,t.data,t.key,Ze?.engine??Ee?.()??null):null,n=e.getAttribute("data-row-status");if(n!==null&&e.classList.remove(`kanuni-datagrid-row--status-${n}`,"kanuni-datagrid-row--status-tint"),!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(...rowStatusClassName(o.status,rt.tint).split(" ")),e.setAttribute("aria-description",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 Ro(e,t,o){let n=e.root;if(n.setAttribute("aria-rowindex",String(o+1+go())),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=rt?rowMessageModel(rt,t.parentKey,t.data,Ze?.engine??Ee?.()??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(Ii(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 z=y?fr?.(t.data):t.parentKey===null?void 0:hi?.(t.parentKey,t.data);m.textContent="",typeof z=="string"?m.textContent=z:z&&m.appendChild(z);}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=Wr?"":`${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),_r(n,t);let c=t.kind==="data"&&!Di(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,vo-(c?.trailingDelta??0))}px`),Ni(e,c,t),pn){let m=$t!==null&&String($t.key)===String(t.key);n.classList.toggle("kanuni-datagrid-row--drop-before",m&&$t.side==="before"),n.classList.toggle("kanuni-datagrid-row--drop-after",m&&$t.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(Mi(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=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 z=m.aggregates??null;if(z)for(let ge of a.getSummaryDefs()){let Pe=w("kanuni-datagrid-group-aggregate","span"),oe=w("kanuni-datagrid-group-aggregate-label","span"),ke=a.getColumnModel().getDef(ge.columnId);oe.textContent=`${summaryLabel(ge,co)} ${ke?.headerName??ge.columnId}:`,Pe.append(oe,` ${formatSummaryValue(ge,z[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(kt&&v){let m=pn?1:0;for(;n.childNodes.length>m;)n.removeChild(n.lastChild);let y=w("kanuni-datagrid-cell");d?y.appendChild(qr(d)):(y.appendChild(Ur(t)),xo(y,t,t.tree)),n.appendChild(y);return}if(kt){let m=pn?1:0,y=kt({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&&Ar?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 z=(rn||po)&&!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=z&&rn?rn(z):ge?rn(ge):void 0,oe=false;if(Pe!==void 0?Pe instanceof Node&&m.childNodes.length===1&&m.firstChild===Pe?oe=true:typeof Pe=="string"?m.textContent=Pe:m.replaceChildren(Pe):d?y.id===F?m.replaceChildren(qr(d)):m.replaceChildren(...Pi(d,y.id)):p?y.id===K?(m.replaceChildren(Ur(t)),xo(m,t,R)):m.replaceChildren():(Br(m,y,t),R&&y.id===K&&xo(m,t,R)),I&&!oe){let Le=Fi(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 De=Pe!==void 0;if(Le?.kind==="covered"&&b!==y.id&&!De)m.replaceChildren();else if(Le?.kind==="draw"){let nn=w("kanuni-datagrid-span-box");nn.style.height=`${Le.height}px`,nn.append(...Array.from(m.childNodes)),m.appendChild(nn);}}else I||m.classList.remove("kanuni-datagrid-cell--span","kanuni-datagrid-cell--span-covered");if(Nt){let Le=!v&&!!To(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(bo()+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=z&&po?po(z):void 0,dt=y.def.cellClassName,de=[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(de){for(let Le of de.split(" "))m.classList.add(Le);m.setAttribute("data-slot-classes",de);}else Ve&&m.removeAttribute("data-slot-classes");}}let Wr=u.columns.some(e=>e.autoHeight);function Hi(){if(!Wr)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 Fi(e,t){let o=a.getCellSpans(t);if(o.length===0)return null;let n=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 Ki(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 qr(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=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})`,Ar?t.append(o,d,s):t.append(o,i,d,s),t}function Pi(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=formatSummaryValue(o,e.aggregates[summaryKey(o.columnId,o.type)],a.getColumnModel().getDef(t)),[n]}function Ur(e){let t=w("kanuni-datagrid-tree-path-label","span");return t.textContent=e.label,t}function xo(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 To=(e,t,o)=>Nt?Nt.get({rowKey:e,columnId:t,row:o})??null:null,zr=null,xt=so?w("kanuni-datagrid-overlay"):null;xt&&(xt.style.position="absolute",xt.style.inset="0",xt.style.pointerEvents="none",$e.appendChild(xt));function Gi(){if(!so||!xt)return;let e=so();e!==zr&&(zr=e,e?xt.replaceChildren(e):xt.replaceChildren());}function $i(e){let t=a.getColumnLayout(),o=Array.from(vt.children);B.setAttribute("aria-rowcount",String(go()+e+o.length)),B.setAttribute("aria-colcount",String(bo()+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(go()+e+i+1)));}function Gn(){Gi(),ln&&Rr();let e=a.getVirtualWindow(),t=a.getRows(),o=Qt?{...e,rows:{...e.rows,start:0,end:t.length,offsetY:0,totalHeight:0}}:e;Ai(t),$i(t.length),$e.style.height=`${o.rows.totalHeight}px`,fe.style.transform=`translateY(${o.rows.offsetY}px)`,en=a.getFindNeedle()||(si?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=Fn("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`,Ki(p.root,d);continue}let r=s.kind==="data"?"data":s.kind==="group"?mo?"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=Fn(r);c?fe.replaceChild(p.root,c.root):fe.appendChild(p.root),gt[i]=p,c=p;}Ro(c,s,d);}Hi(),Yr();}let $n=[];function Yr(){if(!a.hasStickyGroupHeaders())return;let e=Qt?[]:a.getStickyGroupRows();for(qe.style.width=`${a.getColumnLayout().totalWidth}px`;$n.length>e.length;)$n.pop().wrap.remove();let t=mo?"data":"group";e.forEach((o,n)=>{let i=$n[n];if(!i||i.rs.epoch!==ft||i.rs.kind!==t){let d=Fn(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;}Ro(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=createDebouncedCommit(di??(a.isRemote()?200:0));function jr(e,t,o,n){let i=a.getColumnModel().getDef(t);if(!i?.renderFilter)return ()=>{};let d=()=>o==="row"?a.getColumnFilter(t,FILTER_PART_ROW):a.getColumnFilter(t,FILTER_PART_SET)??a.getColumnFilter(t,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"?FILTER_PART_ROW:FILTER_PART_SET),close:n,onValueChange:p=>(s.add(p),()=>s.delete(p))});return ()=>{r(),s.clear(),typeof c=="function"&&c();}}let mn=[],bn=new Map,So=false;function Oi(){!T||So||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,FILTER_PART_ROW),i=bn.get(t)??"",d=e.parentElement?.querySelector("input.kanuni-datagrid-filter-input"),s=i;if(n){let r=customFilterInputFromNode(n,o);s=r?.operatorId??"",r&&d&&(d.value=r.text);}else findCustomFilterOperator(o,i)?.operandType==="none"&&(s="");bn.set(t,s),e.value=s,d&&(d.disabled=findCustomFilterOperator(o,s)?.operandType==="none");});}function Lo(){if(!T)return;if(mn.forEach(n=>n()),mn=[],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 periodSuggestionList(hr)){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),mn.push(jr(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",fillText(h.filterPopupAria,{column:n.def.headerName??n.id})),s.setAttribute("data-filter-for",n.id);let r=customFilterOperators(n.def),c=()=>findCustomFilterOperator(n.def,bn.get(n.id)??"");n.def.dataType==="date"&&!c()&&s.setAttribute("list",o());let p=()=>{let b=c();So=true;try{a.setColumnFilter(n.id,b?parseCustomFilterInput(n.id,s.value,b):parseFilterInput(n.id,s.value,n.def.dataType,hr),FILTER_PART_ROW);}finally{So=false;}};if(r.length>0){let b=document.createElement("select");b.className="kanuni-datagrid-filter-operator",b.setAttribute("aria-label",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=customFilterInputFromNode(a.getColumnFilter(n.id,FILTER_PART_ROW),n.def);F&&(bn.set(n.id,F.operatorId),s.value=F.text),b.value=c()?.id??"",s.disabled=c()?.operandType==="none",b.addEventListener("change",()=>{bn.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 Ao=()=>{},Xr=null;function Bi(){let e=resolveToolbar(br);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-${++Id}`,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);};Xr=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??gi));}),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??j){let I=document.createElement("button");I.type="button",setCommandContent(I,"columns",h.toolbarColumns??"Columns"),I.setAttribute("aria-haspopup","dialog"),I.addEventListener("click",()=>{let m=I.getBoundingClientRect();aa({left:m.left,top:m.bottom+2});}),p=I;}let v=Ct&&pi,b=Ct&&fi,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(Od());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 z=document.createElement("button");z.type="button",z.className="kanuni-datagrid-menu-item",z.setAttribute("role","menuitem"),z.setAttribute("data-testid",$.testId),z.textContent=$.label,$.kind==="excel-selected"&&a.getSelectedCount()===0&&(z.disabled=true),z.addEventListener("click",()=>{F=$.kind,R.disabled=true,He(),Qo(a,$.kind).then(ge=>{F=null,R.disabled=false,ge.error&&Ao(ge.error);});}),m.appendChild(z);}},"kanuni-datagrid-filter-popup kanuni-datagrid-export-menu");});for(let I of ci??[])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 ui??[])ct.append(I);let K=w("kanuni-datagrid-toolbar-error","span");K.setAttribute("role","alert"),K.style.display="none",ct.append(K),Ao=I=>{K.textContent=I,K.style.display="";};}function Jr(){if(!ot.isConnected)return;let e=a.getPage(),t=a.getPageCount(),o=document.activeElement,n=o instanceof HTMLElement&&ot.contains(o)?o.getAttribute("data-pager"):null;ot.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")),Sn?.pageButtons)for(let c of pageButtonItems(e,t,Sn.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")),ot.appendChild(d),n!==null){let c=ot.querySelector(`[data-pager="${n}"]`);(c&&!c.disabled?c:ot.querySelector('[aria-current="page"]')??ot.querySelector("button:not(:disabled)"))?.focus();}}function Mo(){if(!nt)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=`${summaryLabel(d,co)} \u2014 ${i.def.headerName??i.id}`;let c=w("kanuni-datagrid-footer-value","span");c.textContent=formatSummaryValue(d,t[summaryKey(d.columnId,d.type)],i.def),r.appendChild(c);}else {let c=w("kanuni-datagrid-footer-hint","span");c.textContent=U&&!isChromeColumn(i.id)?"\xB7":"",r.appendChild(c);}Oe.appendChild(r);}}function Vi(){Ht()>0?tt.isConnected||Ie.insertBefore(tt,qe.isConnected?qe:$e):tt.remove(),vr()>0?vt.isConnected||Ie.insertBefore(vt,$e.nextSibling):vt.remove(),qe.style.setProperty("--dg-sticky-below",`${Ht()>0?Ht()*a.getRowHeight()+1:0}px`);}function Bn(){let e=kt;kt=pe;try{_i();}finally{kt=e;}}function _i(){let e=(t,o,n,i)=>{t.textContent="",o.forEach((d,s)=>{let r=Fn("data");Ro(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(fo+Ft+s+1)),r.root.removeAttribute("aria-selected"),_r(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",tt,ce],["bottom",vt,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=Qr(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");};tt.addEventListener("contextmenu",Vn),vt.addEventListener("contextmenu",Vn);function Qr(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 Bt=null,Vt=null,Do=null;function He(e=true){Vt?.(),Vt=null,Bt?.remove(),Bt=null;let t=Do;Do=null,e&&t?.();}function No(e){return Ae.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${CSS.escape(e)}"]`)}function Zr(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=Bt?.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 ea(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){He(false);let i=document.activeElement instanceof HTMLElement?document.activeElement:null,d=i&&(i===B||!i.contains(B))?i:null,s=(d&&Ae.contains(d)?d.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null)??n??null;Bt=w(`${ro(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),Bt.appendChild(r),portalTarget(u.portalContainer).appendChild(markPortal(Bt,u.portalContainer)),ea(r,e),Do=()=>{let b=s?No(s):null,R=d?.isConnected?d:b;R?.focus({preventScroll:true}),R&&document.activeElement!==R&&b&&b.focus({preventScroll:true});},r.getAttribute("role")==="menu"&&(Zr(r),r.querySelector('[role="menuitem"]:not(:disabled)')?.focus({preventScroll:true}));let c=Bt,p=b=>{c.contains(b.target)||He(false);},v=b=>{b.key==="Escape"&&He();};document.addEventListener("pointerdown",p,true),document.addEventListener("keydown",v,true),Vt=()=>{document.removeEventListener("pointerdown",p,true),document.removeEventListener("keydown",v,true);};}let Tt=25,ta=8,Io=new Map,Ho=0;function na(e,t){let o=t.getBoundingClientRect(),n=++Ho;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",fillText(h.filterPopupAria,{column:a.getColumnModel().getDef(e)?.headerName??e})),v.setAttribute("data-column-id",e),v.tabIndex=-1,s=jr(v,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=Vt;Vt=()=>{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",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=S=>S.value===null||S.value===void 0,m=[],y=S=>S===K?NONBLANK_KEY:distinctEntryKey(S),$=S=>S===K?h.filterNonBlank:distinctDisplayText(S,{filterBlank:h.filterBlank,filterEmptyText:h.filterEmptyText,filterSpace:h.filterSpace,filterSpaces:h.filterSpaces}),z=null,ge="",Pe=[],oe=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;Y&&(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",()=>{He(),Y({columnId:e});}));let bt=w("kanuni-datagrid-filter-actions"),dt=document.createElement("button");dt.type="button",dt.textContent=h.filterSelectAll,dt.addEventListener("click",()=>{if(oe)return oe.selectAll();if(v=true,R.trim()==="")p=new Set(r.map(distinctEntryKey));else for(let S of F)p.add(distinctEntryKey(S));Xe();});let wn=document.createElement("button");wn.type="button",wn.textContent=h.clear,wn.addEventListener("click",()=>{if(oe)return oe.clear();if(v=true,R.trim()==="")p=new Set;else for(let S of F)p.delete(distinctEntryKey(S));Xe();}),bt.append(dt,wn);let de=w("kanuni-datagrid-filter-list");de.setAttribute("role","listbox"),de.setAttribute("aria-multiselectable","true");let Le=document.createElement("div");Le.style.position="relative";let De=document.createElement("div");Le.appendChild(De),de.appendChild(Le);let nn=()=>{let S=foldText(R.trim());if(!S){F=r;let X=r.findIndex(I);m=X<0?r:[...r.slice(0,X+1),K,...r.slice(X+1)];return}z||(z=r.map(X=>foldText(X.label))),F=ge!==""&&S.includes(ge)?Pe.filter(X=>foldText(X.label).includes(S)):r.filter((X,ie)=>z[ie].includes(S)),ge=S,Pe=F,m=F;},sl=S=>{let X=S.getRowCount(),ie=S.isLoading();de.setAttribute("aria-busy",String(ie)),de.setAttribute("aria-setsize",String(X));let me=document.activeElement instanceof HTMLElement?document.activeElement.closest(".kanuni-datagrid-filter-item")?.getAttribute("data-index")??null:null;if(De.textContent="",ie||X===0){Le.style.height="",De.style.transform="";let be=w("kanuni-datagrid-filter-empty");be.textContent=ie?h.filterLoading:h.filterNoMatch,De.appendChild(be);return}Le.style.height=`${S.getWindow(de.scrollTop,240).totalHeight}px`;let Fe=S.getWindow(de.scrollTop,Math.max(de.clientHeight,150));Le.style.height=`${Fe.totalHeight}px`,De.style.transform=`translateY(${Fe.offsetY}px)`;for(let be=Fe.start;be<Fe.end;be++){let Je=S.getRow(be),Ke=w("kanuni-datagrid-filter-item");if(Ke.setAttribute("role","option"),Ke.setAttribute("data-index",String(be)),!Je){Ke.classList.add("kanuni-datagrid-filter-item--pending"),Ke.setAttribute("aria-selected","false"),Ke.setAttribute("aria-busy","true");let on=document.createElement("span");on.setAttribute("aria-hidden","true"),on.textContent="\u2026",Ke.appendChild(on),De.appendChild(Ke);continue}let yn=S.isChecked(Je);Ke.setAttribute("aria-selected",String(yn)),Ke.tabIndex=0,Ke.setAttribute("data-value",Je.label),be===b&&Ke.classList.add("kanuni-datagrid-filter-item--active");let Ge=document.createElement("input");Ge.type="checkbox",Ge.readOnly=true,Ge.checked=yn,Ge.tabIndex=-1;let Dt=document.createElement("span");Dt.textContent=Je.nonBlank?h.filterNonBlank:distinctDisplayText({value:Je.blank?null:Je.value,label:Je.label},{filterBlank:h.filterBlank,filterEmptyText:h.filterEmptyText,filterSpace:h.filterSpace,filterSpaces:h.filterSpaces}),Ke.append(Ge,Dt),Ke.addEventListener("click",()=>S.toggle(Je)),Ke.addEventListener("focus",()=>{b=be;}),De.appendChild(Ke);}S.ensure(Fe.start,Fe.end),me!==null&&De.querySelector(`[data-index="${me}"]`)?.focus({preventScroll:true});},Xe=()=>{if(oe&&!c)return sl(oe);if(de.setAttribute("aria-busy",String(c)),de.setAttribute("aria-setsize",String(m.length)),c){Le.style.height="",De.textContent="";let be=w("kanuni-datagrid-filter-empty");be.textContent=h.filterLoading,De.appendChild(be);return}if(m.length===0){Le.style.height="",De.style.transform="",De.textContent="";let be=w("kanuni-datagrid-filter-empty");be.textContent=h.filterNoMatch,De.appendChild(be);return}let S=de.clientHeight||240,X=Math.max(0,Math.floor(de.scrollTop/Tt)-ta),ie=Math.ceil(S/Tt)+ta*2,me=Math.min(X,Math.max(0,m.length-1)),Fe=Math.min(m.length,me+ie);Le.style.height=`${m.length*Tt}px`,De.style.transform=`translateY(${me*Tt}px)`,De.textContent="";for(let be=me;be<Fe;be++){let Je=m[be],Ke=y(Je),yn=Je===K?distinctNonBlankTicked(r,p):p.has(Ke),Ge=w("kanuni-datagrid-filter-item");Ge.setAttribute("role","option"),Ge.setAttribute("aria-selected",String(yn)),Ge.tabIndex=0,Ge.setAttribute("data-value",Je.label),Ge.setAttribute("data-index",String(be)),be===b&&Ge.classList.add("kanuni-datagrid-filter-item--active");let Dt=document.createElement("input");Dt.type="checkbox",Dt.readOnly=true,Dt.checked=yn,Dt.tabIndex=-1;let on=document.createElement("span");on.textContent=$(Je),Ge.append(Dt,on),Ge.addEventListener("click",()=>Fa(Ke)),Ge.addEventListener("focus",()=>{b=be;}),De.appendChild(Ge);}},Fa=S=>{if(v=true,S===NONBLANK_KEY){let X=distinctNonBlankTicked(r,p);for(let ie of r)I(ie)&&!X?p.delete(BLANK_KEY):p.add(distinctEntryKey(ie));}else p.has(S)?p.delete(S):p.add(S);for(let X of De.querySelectorAll(".kanuni-datagrid-filter-item")){let ie=m[Number(X.getAttribute("data-index"))];if(!ie)continue;let me=ie===K?distinctNonBlankTicked(r,p):p.has(y(ie));X.setAttribute("aria-selected",String(me));let Fe=X.querySelector("input");Fe&&(Fe.checked=me);}};de.addEventListener("scroll",()=>{Io.set(e,de.scrollTop),Xe();});let Qn=null,jo=()=>{if(b=0,oe){let S=oe;Qn&&clearTimeout(Qn),Qn=setTimeout(()=>{Qn=null,S.getSearch()!==R.trim()&&(S.setSearch(R),de.scrollTop=0,Xe());},150);return}nn(),Xe();};ke.addEventListener("input",()=>{R=ke.value,jo();});let Xo=S=>{if(oe){let me=oe.getRowCount();if(me===0)return;b=Math.max(0,Math.min(me-1,S)),S<=0?de.scrollTop=0:S>=me-1&&(de.scrollTop=de.scrollHeight),Xe();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,S));let X=b*Tt,ie=de.clientHeight||240;X<de.scrollTop?de.scrollTop=X:X+Tt>de.scrollTop+ie&&(de.scrollTop=X+Tt-ie),Xe(),s.querySelector(`.kanuni-datagrid-filter-item[data-index="${b}"]`)?.focus();},Ka=()=>{if(c)return;if(oe){if(oe.isLoading())return;a.setColumnFilter(e,oe.buildFilter(e),FILTER_PART_SET),He();return}let S;if(p.size===r.length)S=null;else if(distinctNonBlankTicked(r,p))S={columnId:e,operator:"isnotnull"};else {let X=p.has(BLANK_KEY),ie=r.filter(me=>!I(me)&&p.has(distinctEntryKey(me)));ie.length===0?S=X?{columnId:e,operator:"isnull"}:null:X?S={logic:"or",nodes:[{columnId:e,operator:"in",value:ie.map(me=>me.value)},{columnId:e,operator:"isnull"}]}:S={columnId:e,operator:"in",value:ie.map(me=>me.value)};}a.setColumnFilter(e,S,FILTER_PART_SET),He();};s.tabIndex=-1,s.addEventListener("keydown",S=>{let X=S.target===ke;if(!((S.key==="Enter"||S.key===" ")&&S.target instanceof HTMLButtonElement)){if(S.key==="Tab"){let ie=Array.from(s.querySelectorAll('input:not([disabled]), button:not([disabled]), [tabindex="0"]')),me=ie[0],Fe=ie[ie.length-1],be=document.activeElement;me&&Fe&&(!S.shiftKey&&(be===Fe||be===s)?(S.preventDefault(),me.focus()):S.shiftKey&&(be===me||be===s)&&(S.preventDefault(),Fe.focus()));return}if(S.key==="Backspace"&&!X){S.preventDefault(),ke.focus(),R=R.slice(0,-1),ke.value=R,jo();return}if(S.key==="ArrowDown"){S.preventDefault(),Xo(X?0:b+1);return}if(S.key==="ArrowUp"){S.preventDefault(),Xo(X?oe?0:m.length-1:b-1);return}if(!X&&(S.key==="Home"||S.key==="End")){S.preventDefault(),Xo(S.key==="Home"?0:(oe?oe.getRowCount():m.length)-1);return}if(S.key===" "&&!X){if(S.preventDefault(),oe){let me=oe.getRow(b);me&&oe.toggle(me);return}let ie=m[b];ie&&Fa(y(ie));return}if(S.key==="Enter"){S.preventDefault(),Ka();return}!X&&S.key.length===1&&S.key!==" "&&!S.ctrlKey&&!S.metaKey&&!S.altKey&&(S.preventDefault(),ke.focus(),R+=S.key,ke.value=R,jo());}});let Pa=w("kanuni-datagrid-filter-footer"),Zn=document.createElement("button");Zn.type="button",Zn.textContent=h.cancel,Zn.addEventListener("click",()=>He());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",Ka),Pa.append(Zn,wt),s.append(ke,...Ve?[Ve]:[],bt,de,Pa),Xe(),queueMicrotask(()=>{ke.isConnected&&ke.focus();});let Ga=S=>{r=S,z=null,ge="",c=false,wt.disabled=false;let X=selectedLabelsFromFilter(a.getColumnFilter(e,FILTER_PART_SET)??a.getColumnFilter(e,FILTER_PART_DEFAULT),r,{text:a.getColumnModel().getDataType(e)==="string"});X?(v=true,p=new Set(X)):v||(p=new Set(r.map(distinctEntryKey))),nn();let ie=Io.get(e);Xe(),ie&&(de.scrollTop=ie,Xe());},Mt=a.openRemoteDistinct(e,Tt);if(Mt){oe=Mt,i=Mt,Mt.subscribe(()=>{s.isConnected&&oe===Mt&&Xe();}),Mt.start().then(S=>{if(Ho!==n||!s.isConnected){Mt.dispose();return}if(S.kind==="paged"){c=false,wt.disabled=false;let X=Io.get(e);Xe(),X&&(de.scrollTop=X,Xe());return}Mt.dispose(),oe=null,i=null,Ga(a.sortDistinctEntries(S.values));});return}a.getDistinctValueSetAsync(e).then(S=>{Ho!==n||!s.isConnected||Ga(S.entries);});},void 0,e);let d=Vt;Vt=()=>{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 Wi(e){if(le===false)return [];let t=le===true?{}:le,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:`${Ui}C`,onSelect:()=>_n()}),t.copyWithHeaders!==false&&n({id:"__dg-copy-headers",label:h.menuCopyWithHeaders,onSelect:()=>_n({includeHeaders:true})}),t.copyWithGroupHeaders!==false&&qi()&&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:()=>{Qo(a,r).then(c=>{c.error&&Ao(c.error);});}}))});}return o}function qi(){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 Ui=/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),He();}),F.appendChild(m);}e.parentElement?.appendChild(F),ea(F,{left:K.right,top:Math.max(0,K.top-4)}),n=F,c.setAttribute("aria-expanded","true"),Zr(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),He();});r.appendChild(c),e.appendChild(r);});}let oa=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),!ve&&!le&&!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 ve=="function"?ve(i):ve)??[],s=[...d,...zi(i,d.length>0)],r=[...s,...Qr(n.node.key,s.length>0)],c=Wi(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 zi(e,t){if(!Nt?.onChange||Nt.menu===false)return [];let o=e.columnId;if(!o)return [];let n=e.node.key,i=To(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:()=>Yi(n,o,e.row,i??"")}),i&&d.push({id:"__note-delete",label:h.deleteNote,onSelect:()=>Nt.onChange?.({rowKey:n,columnId:o,row:e.row,text:null})}),d}function Yi(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();He(),Nt?.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(),He());});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",()=>He());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){Pt!==e&&(Pt=e,e?(B.insertBefore(Ue,re),Po()):Ue.remove());}function Xi(e){if(nt!==e){if(nt=e,e){if(ut){let t=tt.isConnected?tt:qe.isConnected?qe:$e;Ie.insertBefore(Oe,t);}else Ie.append(Oe);Mo();}else Oe.remove();tt.style.setProperty("--dg-pinned-gap",String(Ft+(nt&&ut?1:0))),qe.style.setProperty("--dg-pinned-gap",String(Ft+(nt&&ut?1:0)));}}function Fo(e){let t=Zo(B,e);t!==null&&a.setColumnWidth(e,t);}function ra(e,t){let o=a.getColumnModel().getDef(e),n={columnId:e,headerName:o?.headerName??e},i=Jo(n,{controller:a,t:h,groupPanelVisible:Pt,footerVisible:nt,onToggleGroupPanel:()=>ji(!Pt),onToggleFooter:()=>Xi(!nt),onOpenFieldChooser:()=>aa(t),onBestFit:Fo,onBestFitAll:()=>{for(let s of a.getColumnStates())s.visible&&!s.flex&&Fo(s.id);},maxGroupLevels:Ct?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 Ji(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},...allowedSummaryTypes(o?.dataType).map(s=>({id:s,label:co[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 aa(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=>!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",()=>He()),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 _t=null,Ko=null,qn=e=>{Ue.classList.toggle("kanuni-datagrid-group-panel--over",e);};function ia(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;Ko=e,a.groupBy([...i.slice(0,s),e,...i.slice(s)]);}function la(e,t){let o=a.getGroupLevels(),n=o.indexOf(e),i=n+t;n<0||i<0||i>=o.length||ia(e,o[i],t===-1?"before":"after");}function da(e,t){if(!e)return;let o=a.getGroupLevels();if(o.includes(e))return;let n=Ct?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 Po(){if(!Pt)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",`${fillText(h.groupLevelAria,{n:p+1})}: ${t(c)}`),b.addEventListener("dragstart",K=>{_t=c,K.dataTransfer&&(K.dataTransfer.effectAllowed="move",K.dataTransfer.setData("text/x-kanuni-column",c));}),b.addEventListener("dragend",()=>{_t=null,i(null,null);}),b.addEventListener("keydown",K=>{let I=K.ctrlKey||K.metaKey;I&&(K.key==="ArrowUp"||K.key==="ArrowLeft")?(K.preventDefault(),la(c,-1)):I&&(K.key==="ArrowDown"||K.key==="ArrowRight")?(K.preventDefault(),la(c,1)):(K.key==="Delete"||K.key==="Backspace")&&(K.preventDefault(),a.groupBy(e.filter(m=>m!==c)));}),v.addEventListener("dragover",K=>{!_t&&!(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=_t;if(_t=null,m){ia(m,c,I);return}let y=K.dataTransfer?.getData("text/x-kanuni-column");y&&da(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",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),Ko===c&&(Ko=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(Pt){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(),_t){_t=null;return}da(o);}});}let sa="";function ua(){if(!D)return;let e=[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(fillText(h.announceSortedBy,{columns:i}));}let o=a.getSelectedCount();o>0&&e.push(fillText(h.announceSelected,{n:o}));let n=e.join(", ");n!==sa&&(sa=n,un.textContent=n);}function ca(){if(!ae)return;Kt.textContent="";let e=describeFilter(a.getEffectiveFilter(),a.getColumnModel(),{...ye,labels:{...filterLabels(h),...ye?.labels}});if(!e&&ae!=="always"){Kt.style.display="none";return}Kt.style.display="";let t=a.isFilterEnabled();Kt.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),Kt.append(o,n,i),Y){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",()=>Y()),Kt.appendChild(d);}}let Go=new Set,Qi=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");Go.delete(s);},o);Go.add(s);});function St(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 pa=e=>{let t=St(e);t&&(P?.(t.node),a.notifyRow("rowClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellClicked",t.node,t.rowIndex,t.columnId));},fa=e=>{let t=St(e);if(t){if(Cr){let o=Wo(t,true);o&&Cr(o);}Ce?.(t.node),a.notifyRow("rowDoubleClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellDoubleClicked",t.node,t.rowIndex,t.columnId);}};fe.addEventListener("click",pa),fe.addEventListener("dblclick",fa);function Zi(e){let t=0,o=Ae.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 el(){if(Te)for(let e of Ae.querySelectorAll('[role="columnheader"][data-column-id]')){let t=Te(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 tl(){if(O)for(let e of Ae.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 $o=false,ga=false,tn=null;function Un(){tn!==null&&(clearTimeout(tn),tn=null);}function zn(e){sn.style.display=e?"":"none";}function Yn(){let e=a.getOverlay();if(Ln.style.display=e==="noRows"?"":"none",uo===false){Un(),zn(false);return}if(!(e==="loading"&&($o||!ga))){Un(),zn(false);return}if($o||yr<=0){Un(),zn(true);return}tn!==null||sn.style.display===""||(tn=setTimeout(()=>{tn=null,Be||zn(true);},yr));}let ma=false,Oo=false,Bo=false,Vo=false,Be=false,_o=new RowMotion;function nl(){if(Oo=false,!Be){if(Bo)Bo=false,Vo&&(Vo=false,ft++),Eo(),ko(),Lo(),Bn();else {let e=ze;Eo(),ze!==e?(ft++,ko(),Lo(),Bn()):a.getPinnedRows("top").length+a.getPinnedRows("bottom").length>0&&Bn();}Gn(),a.getAnimateRows()&&_o.play(fe),Gr(),Mo(),Jr(),tl(),el(),Po(),ca(),ua(),Yn();}}function jn(e){Be||(e&&(Bo=true),!Oo&&(Oo=true,queueMicrotask(nl)));}let ol=[...Q?[a.events.on("focusedRowChanged",e=>Q({rowKey:e.rowKey,row:e.row}))]:[],...Hd.map(e=>a.events.on(e,()=>jn(true))),...Fd.map(e=>a.events.on(e,()=>{Vo=true;})),...Kd.map(e=>a.events.on(e,()=>jn(false))),a.events.on("filterChanged",()=>Oi()),...["sortChanged","filterChanged","groupChanged","dataUpdated"].map(e=>a.events.on(e,()=>{a.getAnimateRows()&&_o.capture(fe);})),a.events.on("rowPinningChanged",()=>{Be||(Vi(),jn(true));}),a.events.on("overlayChanged",e=>{$o=e.manual===true&&e.overlay==="loading",Be||Yn();}),a.events.on("busyChanged",e=>{ga=e.background===true,Be||Yn();}),a.events.on("paginationChanged",()=>{Be||jn(false);}),a.events.on("bodyScroll",()=>{Be||Yr();}),a.events.on("cellsRefreshed",()=>{Be||Vr();}),a.events.on("scrollRequested",e=>{if(Be)return;e.scrollTop!==void 0&&(re.scrollTop=e.scrollTop),e.scrollLeft!==void 0&&(re.scrollLeft=e.scrollLeft),a.setScroll(re.scrollTop,Math.abs(re.scrollLeft));let t=e.scrollTop;t===void 0||Math.abs(re.scrollTop-t)<=1||setTimeout(()=>{Be||Math.abs(re.scrollTop-t)<=1||(re.scrollTop=t,a.setScroll(re.scrollTop,Math.abs(re.scrollLeft)));},0);}),...Me==="fitGrid"?[a.events.on("gridSizeChanged",()=>a.sizeColumnsToFit())]:[],...Me==="fitCells"?[a.events.on("firstDataRendered",()=>{Be||ma||(ma=true,queueMicrotask(()=>{if(!Be)for(let e of a.getColumnStates())e.visible&&!e.flex&&Fo(e.id);}));})]:[]];Me==="fitGrid"&&a.sizeColumnsToFit();function Wo(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 ba=e=>{let t=e.target;if(he){let r=St(e),c=r?Wo(r):null;c&&he(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||Ei&&!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);},wa=e=>{if(!Ne)return;let o=e.target.closest(".kanuni-datagrid-cell");if(!o||!fe.contains(o)||e.relatedTarget?.closest?.(".kanuni-datagrid-cell")===o)return;let i=St(e),d=i?Wo(i):null;d&&Ne(d,e);};if(fe.addEventListener("mousedown",ba),fe.addEventListener("contextmenu",oa),Ne&&fe.addEventListener("mouseover",wa),pn&&($e.addEventListener("dragstart",ki),$e.addEventListener("dragover",Ri),$e.addEventListener("drop",xi),$e.addEventListener("dragend",Ti),$e.addEventListener("dragleave",Si)),B.tabIndex=0,It){Ze=ir({controller:a,element:B},_e,h,{surfaceClass:()=>ro(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(rt?.savedDuration??0);}Vr();let ya=e=>{let t=Ze;if(!t||ln)return;let o=e.target;if(!o||!(o===B||o===re||fe.contains(o)))return;let n=o.tagName;n==="INPUT"||n==="TEXTAREA"||n==="SELECT"||o.isContentEditable||t.handleKeyDown(e)&&e.stopImmediatePropagation();};It&&B.addEventListener("keydown",ya,true);let ha=e=>{let t=e.target;if(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable||ot.contains(t)||ct.contains(t)||t.closest?.('[data-testid="dg-edit-form"], [data-testid="dg-edit-bar"], [data-testid="dg-row-message"]')||Ae.contains(t))return;if((ve||le||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=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(Ce){let d=a.getFocus(),s=d?a.getRows().find(r=>r!==void 0&&r.key===d.rowKey):void 0;s&&Ce(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&&(re.scrollTop=r.scrollTop),r.scrollLeft!==void 0&&(re.scrollLeft=r.scrollLeft),a.setScroll(re.scrollTop,Math.abs(re.scrollLeft)));}let i=a.getFocus();B.setAttribute("aria-activedescendant",i?`${u.gridId}-cell-${String(i.rowKey)}-${i.columnId}`:"");};B.addEventListener("keydown",ha);let rl=mr?attachStateStoring(a,mr):null,Ca=typeof et=="object"?et.delay??400:400,va=et!==false&&!(typeof et=="object"&&et.enabled===false),al=typeof et=="object"?et.showOnTruncation!==false:true,Ea=typeof et=="object"?et.trigger??"hover":"hover",ka=va&&Ea!=="focus",qo=va&&Ea!=="hover",Xn=typeof et=="object"&&et.interactive===true,Ra=`${u.gridId}-tooltip`,Wt=null,Ye=null,je=null,qt=null,Uo=null;function Lt(){Ye&&clearTimeout(Ye),Ye=null,qt=null,zo();}function zo(){je&&clearTimeout(je),je=null,Uo?.removeAttribute("aria-describedby"),Uo=null,Wt?.remove(),Wt=null;}let il=e=>e.scrollWidth>e.clientWidth+1||e.scrollHeight>e.clientHeight+1;function ll(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=To(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 al&&il(e)?e.textContent??null:null}function xa(e,t){let o=ll(e);if(o===null||o==="")return;zo();let n=e.getBoundingClientRect();Wt=w(`${ro(u)} kanuni-datagrid-portal`);let i=w(Xn?"kanuni-datagrid-tooltip kanuni-datagrid-tooltip--interactive":"kanuni-datagrid-tooltip");i.id=Ra,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",Lt)),Wt.appendChild(i),portalTarget(u.portalContainer).appendChild(markPortal(Wt,u.portalContainer,"tooltip")),t&&(e.setAttribute("aria-describedby",Ra),Uo=e);}let Ta=e=>{if(!ka)return;let t=e.target.closest(".kanuni-datagrid-cell");if(t&&t===qt){je&&clearTimeout(je),je=null;return}Xn&&Wt&&je?(Ye&&clearTimeout(Ye),Ye=null):Lt(),!(!t||!fe.contains(t))&&(qt=t,Ye=setTimeout(()=>{Ye=null,!(qt!==t||!t.isConnected)&&xa(t,false);},Ca));},Sa=e=>{if(!ka)return;let t=e.relatedTarget;if(!(qt&&t&&qt.contains(t))){if(!Xn||!Wt){Lt();return}je&&clearTimeout(je),je=setTimeout(zo,150);}};B.addEventListener("pointerover",Ta),B.addEventListener("pointerout",Sa),re.addEventListener("scroll",Lt,{passive:true});let La=-1/0,Aa=()=>{La=Date.now();};qo&&B.addEventListener("pointerdown",Aa);let dl=qo?a.events.on("focusChanged",()=>{Lt();let e=a.getFocus();e&&(Ye=setTimeout(()=>{if(Ye=null,!B.contains(document.activeElement)&&Date.now()-La>1500)return;let t=document.getElementById(`${u.gridId}-cell-${String(e.rowKey)}-${e.columnId}`);!t||!fe.contains(t)||(qt=t,xa(t,true));},Ca));}):null,Ma=e=>{e.key==="Escape"&&Lt();};qo&&B.addEventListener("keydown",Ma);let Da=()=>{if(a.setScroll(re.scrollTop,Math.abs(re.scrollLeft)),At)for(let e of Na())e.scroller.scrollLeft!==re.scrollLeft&&(e.scroller.scrollLeft=re.scrollLeft);};re.addEventListener("scroll",Da,{passive:true});let At=null,Na=()=>{if(!ue||!At)return [];let e=vn.get(ue);return e?[...e].filter(t=>t!==At):[]},Ia=null;if(ue){At={controller:a,scroller:re};let e=vn.get(ue)??new Set;e.add(At),vn.set(ue,e),Ia=a.events.on("columnStateChanged",()=>{if(pr.has(ue))return;let t=Na();if(t.length===0)return;let o=a.getColumnStates();pr.add(ue);try{for(let n of t)n.controller.applyColumnStates(o);}finally{pr.delete(ue);}});}let Ha=()=>{a.setViewportSize(re.clientWidth,re.clientHeight),an&&vi(cardViewWidth(re)),re.style.setProperty("--dg-viewport-width",`${re.clientWidth}px`);let e=$e.getBoundingClientRect(),t=Ie.getBoundingClientRect();a.setChromeOffsets(e.top-t.top,t.bottom-e.bottom),calibrateMaxScrollOffset(re,a);};Ha();let Jn=null;typeof ResizeObserver<"u"&&(Jn=new ResizeObserver(Ha),Jn.observe(re),Jn.observe(Ie)),Eo(),ko(),Lo(),Bi(),Bn(),Gn(),Mo(),Jr(),Po(),ca(),ua(),Yn(),Ot?.always&&Co(true);let Yo=null;if(Re){let e=null,t=()=>{let o=Ae.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"&&(Yo=new ResizeObserver(t),Yo.observe(Ae));}return xr=true,{controller:a,element:B,setData:e=>a.setData(e),setColumns:e=>a.setColumns(e),destroy:()=>{if(!Be){if(Be=true,ol.forEach(e=>e()),mn.forEach(e=>e()),mn=[],Jn?.disconnect(),Yo?.disconnect(),Pr?.(),Qt&&(Qt=false,Yt--,Yt<=0&&(Yt=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),Ia?.(),ue&&At){let e=vn.get(ue);e?.delete(At),e&&e.size===0&&vn.delete(ue),At=null;}re.removeEventListener("scroll",Da),fe.removeEventListener("mousedown",ba),fe.removeEventListener("contextmenu",oa),tt.removeEventListener("contextmenu",Vn),_o.dispose(),vt.removeEventListener("contextmenu",Vn),Ne&&fe.removeEventListener("mouseover",wa),fe.removeEventListener("click",pa),fe.removeEventListener("dblclick",fa),Qi(),Xr?.(),Un();for(let e of Go)clearTimeout(e);B.removeEventListener("keydown",ha),B.removeEventListener("keydown",ya,true),Ze?.dispose(),Ze=null,B.removeEventListener("pointerover",Ta),B.removeEventListener("pointerout",Sa),B.removeEventListener("keydown",Ma),B.removeEventListener("pointerdown",Aa),dl?.(),re.removeEventListener("scroll",Lt),Lt(),rl?.(),He(false),a.dispose(),B.remove();}}}}function Wd(l){let u=document.createElement("button");u.type="button";let f={...l},M=()=>{let{icon:E,label:C,shortcut:A,disabledReason:L,showLabel:x,testId:Z}=f;if(u.className=`kanuni-datagrid-app-button${x?"":" kanuni-datagrid-toolbar-icon-button"}`,u.textContent="",typeof E=="string"?u.insertAdjacentHTML("afterbegin",E):u.appendChild(E),x){let H=document.createElement("span");H.textContent=C,u.appendChild(H),u.removeAttribute("aria-label");}else u.setAttribute("aria-label",C);let U=A?`${C} (${A})`:C;u.title=L!==void 0?`${U} \u2014 ${L}`:U,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",E=>{if(f.disabledReason!==void 0){E.preventDefault();return}f.onClick?.();}),u.update=E=>{f={...f,...E},M();},M(),u}export{ao as CHECKBOX_COLUMN_WIDTH,kn as DETAIL_COLUMN_WIDTH,li as PRINT_MAX_ROWS,io as ROW_DRAG_MIME,En as ROW_NUMBER_COLUMN_WIDTH,ir as attachCellEditing,nr as buildCellEditor,Ut as buildDateEditor,rr as buildEditForm,Jo as buildHeaderMenu,_d as createGrid,Zo as measureBestFitWidth,or as openConfirmDialog,Wd as toolbarButton};
1
+ import {DEFAULT_DATE_FORMAT,toDate,dateDigits,maskDate,portalContainerFor,portalTarget,markPortal,createDebouncedCommit,EditingEngine,isChromeColumn,getGridDictionary,summaryTypeLabels,datePeriodLabels,inferColumns,presetRowHeight,DataGridController,normalizeRowStatus,registerPortalContainer,isRtlLocale,resolveCardView,RowMotion,attachStateStoring,edgeEditableColumn,nextEditableColumn,lookupLabel,formatDateValue,GROUP_COLUMN_ID,fillText,rowMessageKeys,normalizeSearch,FILTER_PART_ROW,customFilterInputFromNode,findCustomFilterOperator,customFilterOperators,resolveToolbar,setCommandContent,pageButtonItems,summaryLabel,formatSummaryValue,summaryKey,distinctEntryKey,NONBLANK_KEY,distinctNonBlankTicked,BLANK_KEY,FILTER_PART_SET,selectedLabelsFromFilter,FILTER_PART_DEFAULT,allowedSummaryTypes,describeFilter,filterLabels,resolveGridCommand,cardViewWidth,calibrateMaxScrollOffset,isRowEditMode,periodSuggestionList,parseCustomFilterInput,parseFilterInput,dateDigitCount,parseDateValue,daysInMonth,toIsoDate,placeAnchoredLayer,bandDepth,computeHeaderBands,bandPath,distinctDisplayText,foldText,rowMessageModel,showsCards,downloadBlob,ExportAbortedError,resolveRowStatus,rowStatusClassName,rowStatusDescription,spanRoleAt,cardFields,cardColumnIds,cardHeight,DEFAULT_EDIT_FORM_HEIGHT,staticLookupItems}from'@kanunilabs/datagrid-core';export{DENSITY_ROW_HEIGHT,GRID_COLOR_SCHEMES,THEME_ROW_HEIGHT,isPackagedTheme,presetRowHeight}from'@kanunilabs/datagrid-core';function Qo(l,u){let{controller:f,maxGroupLevels:M,t:E}=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:E.sortAsc,disabled:!H||T?.direction==="asc",onSelect:()=>f.setSort([{columnId:C,direction:"asc"}])},{id:"sort-desc",label:E.sortDesc,disabled:!H||T?.direction==="desc",onSelect:()=>f.setSort([{columnId:C,direction:"desc"}])},{id:"sort-clear",label:E.clearSort,disabled:!T,onSelect:()=>f.setSort(L.filter(O=>O.columnId!==C))},{id:"sep-1",separator:true},{id:"group",label:z?E.ungroupColumn:E.groupByColumn,disabled:!ce,onSelect:()=>{z?f.groupBy(Z.filter(O=>O!==C)):f.groupBy([...Z,C].slice(-M));}},{id:"group-panel",label:u.groupPanelVisible?E.hideGroupPanel:E.showGroupPanel,onSelect:u.onToggleGroupPanel},{id:"footer",label:u.footerVisible?E.hideFooter:E.showFooter,onSelect:u.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:E.hideColumn,disabled:f.getColumnStates().filter(O=>O.visible).length<=1,onSelect:()=>f.setColumnVisible(C,false)},{id:"field-chooser",label:E.fieldChooser,onSelect:u.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:E.bestFit,disabled:A?.resizable===false,onSelect:()=>u.onBestFit(C)},{id:"best-fit-all",label:E.bestFitAll,onSelect:u.onBestFitAll}],ee=f.getColumnStates().filter(O=>O.visible&&O.pinned===V).map(O=>O.id),ke=ee.indexOf(C),S=A?.reorderable!==false&&ke>=0;return se.push({id:"sep-4",separator:true},{id:"move-left",label:E.moveLeft,disabled:!S||ke<=0,onSelect:()=>f.moveColumn(C,ee[ke-1])},{id:"move-right",label:E.moveRight,disabled:!S||ke<0||ke>=ee.length-1,onSelect:()=>f.moveColumn(C,ee[ke+2])},{id:"fixed-position",label:E.fixedPosition,items:[{id:"pin-left",label:E.pinLeft,disabled:V==="left",onSelect:()=>f.setColumnPinned(C,"left")},{id:"pin-right",label:E.pinRight,disabled:V==="right",onSelect:()=>f.setColumnPinned(C,"right")},{id:"pin-sticky",label:E.pinSticky,disabled:V==="sticky",onSelect:()=>f.setColumnPinned(C,"sticky")}]},{id:"unpin",label:E.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 downloadBlob(f.blob,f.fileName),{completed:!0}}catch(f){return f instanceof 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 E=Math.ceil(M.getBoundingClientRect().width);E>f&&(f=E);}return l.forEach((M,E)=>{[M.style.width,M.style.minWidth,M.style.maxWidth]=u[E];}),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,'\\"'),E=l.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${M}"]`),C=l.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${M}"]`);if(!E&&C.length===0)return null;let A=0;if(E){let L=E.querySelector(".kanuni-datagrid-header-label")??E;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=DEFAULT_DATE_FORMAT,autoFocus:M=true}=l,E=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=toDate(l.value),V=H??new Date,ce=()=>T===null?formatDateValue(l.value,f):maskDate(T,f),W=()=>T===null?null:parseDateValue(maskDate(T,f),f),se=()=>T!==null&&T.length===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 ke=P=>{if(P===null){l.onChange(null);return}l.onChange(l.value instanceof Date?P:toIsoDate(P));},S=()=>{if(!z)return;if(!L.isConnected){j();return}let P=L.getBoundingClientRect(),he=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=`${E[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=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",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=portalContainerFor(A);portalTarget(P).appendChild(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(),ke(P),L.value=formatDateValue(l.value instanceof Date?P:toIsoDate(P),f),ee(),L.focus({preventScroll:true});}function te(){if(T===null)return;if(T.length===0){ke(null),T=null,L.value=ce(),ee();return}let P=W();P&&ke(P),T=null,L.value=ce(),ee();}L.addEventListener("input",()=>{T=dateDigits(L.value,f),L.value=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=dateDigits(formatDateValue(pe,f),f),L.value=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:E=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(E){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,E=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(),E(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),ke=W.shiftKey?ee<=0?se.length-1:ee-1:ee===se.length-1?0:ee+1;W.preventDefault(),W.stopPropagation(),se[ke].focus();}};document.addEventListener("keydown",C,true);let A=document.createElement("div");A.className="kanuni-datagrid-dialog-overlay",A.addEventListener("mousedown",()=>E(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",()=>E(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",()=>E(true)),H.appendChild(V),L.append(Z,z,H),f.append(A,L);let ce=portalContainerFor(l.anchor);portalTarget(ce).appendChild(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,E=document.createElement("div");E.className=`kanuni-datagrid-edit-form${M?" kanuni-datagrid-edit-form--inline":""}`,E.setAttribute("data-testid","dg-edit-form"),E.setAttribute("data-row-key",String(l.rowKey)),f&&E.setAttribute("data-popup",""),E.setAttribute("role",f?"dialog":"group"),f&&E.setAttribute("aria-modal","true"),E.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),E.append(C,L,T,V),E.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(E.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 ke=()=>{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(!E.isConnected)return;let S=E.querySelector("input:not([disabled]), select:not([disabled]), textarea:not([disabled])");S?.focus(),S instanceof HTMLInputElement&&S.type==="text"&&S.select(),l.onNaturalHeight&&l.onNaturalHeight(E.clientHeight-T.clientHeight+T.scrollHeight);}),{element:E,refresh:ke,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:()=>E.remove()}}function ja(l){let{grid:u,engine:f,mode:M,t:E,extension:C}=l,A=u.controller,L=isRowEditMode(M),T=null,Z=async()=>{T=null;let k=await f.saveChanges();if(k.saved||k.superseded){_();return}T={message:k.error??E.editSaveFailed,rowKey:k.rowKey,columnId:k.columnId},_(),k.rowKey!==void 0&&k.columnId!==void 0&&(A.revealRow(k.rowKey),A.focusCell(k.rowKey,k.columnId));},z=()=>{T=null,f.cancelChanges();},H=null,V=null,ce=null,W=null,se=null,ee=new Map,ke=0,S=k=>(H=null,f.beginRowEdit(k)),O=null,J=(k,G,oe)=>!L||f.isEditingRow()||!f.canEditRow(k)||(A.scrollToCell(k,G),!S(k))?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=k=>{let G=A.getColumnLayout(),oe=A.getColumnModel(),ve=++ke;return [...G.left,...G.center,...G.right].filter(Re=>!isChromeColumn(Re.state.id)).map(Re=>{let ye=Re.state.id,Ie=oe.getDef(ye),ht=C.formLookup?C.formLookup(k,ye,_e=>{ke===ve&&ce?.setLookupOptions(ye,_e);}):Ie?.lookup?{options:staticLookupItems(Ie)??[]}:void 0;return {columnId:ye,label:Ie?.headerName??Ie?.field??ye,dataType:oe.getEditorDataType(ye),editable:f.canUpdate(k,ye),dateFormat:Ie?.dateFormat,lookup:ht}})},te=()=>se??l.formHeight??DEFAULT_EDIT_FORM_HEIGHT,Q=(k,G)=>ar({rowKey:k,fields:q(k),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:E,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 k=f.getRowSession();if(k&&M!=="row"?u.element.setAttribute("data-row-session",M):u.element.removeAttribute("data-row-session"),!k){V!==null&&(V=null,se=null,P(),M==="form"&&A.setEditFormRow(null));return}if(V===k.rowKey){ce?.refresh();return}if(P(),V=k.rowKey,M==="form"){A.setEditFormRow(k.rowKey,{height:te(),atTop:k.isNew}),A.revealRow(k.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(k.rowKey,false),W.append(oe,ce.element);let ve=portalContainerFor(l.barHost);portalTarget(ve).appendChild(markPortal(W,ve));return}A.revealRow(k.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=k=>{let G=ee.get(k);if(G)return G;let oe=A.getColumnModel(),ve=oe.getDef(k),Re=oe.getEditorDataType(k),ye=f.rowEditValue(k),Ie=f.getRowSession()?.errors[k]??null,ht=ve?.headerName??k,_e,Ct=C.resolveLookup?.(V,k);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:k,ariaLabel:ht,surfaceClass:l.surfaceClass(),noMatchText:E.editNoMatch,onChange:xe=>f.setRowEditValue(k,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:k,ariaLabel:ht,surfaceClass:l.surfaceClass(),onPortalOpen:l.trackPortal,t:E,onChange:xe=>f.setRowEditValue(k,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",k),xe.setAttribute("aria-label",ht),Ie&&(xe.title=Ie),Re==="boolean"?(xe.type="checkbox",xe.checked=ye===true,xe.addEventListener("change",()=>f.setRowEditValue(k,xe.checked))):(xe.type=Re==="number"?"number":"text",xe.value=ye==null?"":String(ye),xe.addEventListener("input",()=>{let We=xe.value;f.setRowEditValue(k,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(k,_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=(k,G,oe,ve)=>{let Re=document.createElement("button");return Re.type="button",oe&&(Re.className="kanuni-datagrid-filter-primary"),Re.setAttribute("data-testid",k),Re.textContent=G,Re.addEventListener("click",ve),Re},N=k=>{let G=document.createElement("span");return G.className="kanuni-datagrid-edit-form-error",G.setAttribute("data-testid",k),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",E.editSaveChanges,true,()=>{Z();}),we=g("dg-discard-changes",E.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",E.editSaveRow,true,()=>{ie();}),de.style.display="none",Ce=g("dg-cancel-row",E.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 k=f.hasChanges();if(D&&(D.style.display=k?"":"none",D.textContent=E.editSaveCount.replace("{n}",String(f.getChanges().length)),D.disabled=f.isSaving()),we&&(we.style.display=k?"":"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?E.formAddTitle:E.editEditingRow.replace("{row}",String(G.rowKey)),de.disabled=G.saving,de.textContent=G.saving?E.editSaving:E.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:k=>{if(!(M!=="row"||k.node.kind!=="data"||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(M!=="form")return;let G=f.getRowSession();if(!(!G||G.rowKey!==k))return (!ce||ce.element.getAttribute("data-row-key")!==String(k))&&(ce?.dispose(),ce=Q(k,true)),ce.element},onCellDoubleClick:k=>L?(k.node.kind==="data"&&!f.isEditingRow()&&f.canEditRow(k.node.key)&&S(k.node.key),true):false,handleRowKeys:k=>!f.isEditingRow()||k.target?.closest?.('[data-testid="dg-edit-form"]')?false:k.key==="Enter"?(k.preventDefault(),ie(),true):k.key==="Escape"?(k.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,E={}){let C=l.controller,A=u.mode??"cell";u.formLabels&&(f={...f,...u.formLabels});let L=E.isColumnEditable??(g=>C.getColumnModel().getDef(g)?.editable!==false),T=()=>{C.refreshCells(),q.sync(),E.onChange?.(),Z.schedule("footer",()=>C.refreshSummaries());},Z=createDebouncedCommit(150),z=g=>C.getRowByKey(g),H=new 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),editableColumns:g=>{let N=C.getColumnLayout();return [...N.left,...N.center,...N.right].map(D=>D.state.id).filter(D=>!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),...E.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=>!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(edgeEditableColumn(me,L,1)===null)return false;let X=C.getRows(),de=X.findIndex(_=>_.key===we.rowKey);if(de<0)return false;let Ce=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=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))},ke=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=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"?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:E}),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=E.cellAdornment?.(g)??null;if(!_&&!ue)return;let k=_?_.newValue:g.value,G=document.createElement("span");G.style.display="contents";let oe=j(g,k);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=E.resolveLookup?.(D.rowKey,g.columnId)??{options:void 0},X=document.createElement("span");X.style.display="contents";let de=E.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:k=>(_.add(k),()=>_.delete(k)),setValue:k=>H.setEditValue(k),commit:()=>{H.commitEdit()&&W();},cancel:()=>{H.cancelEdit(),W();}});return X.appendChild(ue),S={rowKey:D.rowKey,columnId:g.columnId,container:X,setError:k=>{for(let G of _)G(k);}},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:E.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:E.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 k=X.querySelector(".kanuni-datagrid-editor-error");_&&!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=_??"",_||k.remove());}},me.options===null&&E.resolveLookup){let _=E.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));},k=C.events.on("cellsRefreshed",()=>{ue(),_(D.rowKey,g.columnId).options!==null&&k();});}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:E.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()&&ke(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||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,Fd=0,io=36,kn=28,lo="application/x-kanuni-row",vn=new Map,fr=new Set,si=5e3,jt=0,Kd=["columnStateChanged","sortChanged"],Pd=["columnStateChanged"],Gd=["contentReady","viewportChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","cellsRefreshed","findChanged"],w=(l,u="div")=>{let f=document.createElement(u);return f.className=l,f},Rn="http://www.w3.org/2000/svg";function $d(l,u){let f=E=>{u&&console.warn(`[datagrid] ${E} 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(E=>E.spanRows)&&(f("cell span/merge (spanRows) is"),M={...M,columns:M.columns.map(E=>E.spanRows?{...E,spanRows:void 0}:E)}),M.tree&&(f("tree data is"),delete M.tree),M.masterDetail&&(f("master-detail is"),delete M.masterDetail),M.grouping){let{groupBy:E,groupSummaries:C}=M.grouping,A=E==null?[]:typeof E=="string"?[E]:E;(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 Od={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 Bd(l){for(let u of Object.keys(l)){let f=Od[u];f===void 0||f===""||so.has(u)||(so.add(u),console.warn(`[datagrid] \`${u}\` is a React-only option \u2014 ${f}.`));}}function Vd(){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 _d(){let l=document.createElementNS(Rn,"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(Rn,"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 Wd(l){let u=document.createElementNS(Rn,"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(Rn,"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=E=>{let C=document.createElementNS(Rn,"path");C.setAttribute("d",E),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 qd(l,u){let{theme:f,palette:M,density:E,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:ke=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:k,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;Bd(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=getGridDictionary(T),{emptyText:yi=h.noData,loadingText:hi=h.busy,loadingOverlay:co=true,...Qe}=wi,hr=typeof co=="number"?co:300,po=summaryTypeLabels(h),Cr=datePeriodLabels(h);if((!Qe.columns||Qe.columns.length===0)&&u.autoColumns!==false){let e=Array.isArray(Qe.dataSource)?Qe.dataSource:[];Qe.columns=inferColumns(e,typeof u.autoColumns=="object"?u.autoColumns:{});}Qe.rowHeight===void 0&&(Qe.rowHeight=presetRowHeight(f,E,28));let Ci=vt?Qe:$d(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 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,rt=normalizeRowStatus(Re);te!=null&&a.focusRow(te);let B=w(ao(u));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),isRtlLocale(T)&&B.setAttribute("dir","rtl"),f&&B.setAttribute("data-theme",f),ke&&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 tt=w("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--top"),Et=w("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--bottom"),Ft=()=>ce.length+a.getPinnedRows("top").length,Er=()=>W.length+a.getPinnedRows("bottom").length,qe=w("kanuni-datagrid-sticky-groups");qe.setAttribute("aria-hidden","true");let nt=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||isChromeColumn(n)||(t.preventDefault(),Zi(n,{left:t.clientX,top:t.clientY}));};Oe.addEventListener("click",e),Oe.addEventListener("contextmenu",e);}let xn=w("kanuni-datagrid-bands-host");xn.style.display="contents";let kt=w("kanuni-datagrid-filter-row");kt.setAttribute("role","row"),He.append(xn,Me),S&&He.append(kt);let Kt=S?2:1,go=0,mo=()=>go+Kt+Ft();Oe.style.setProperty("--dg-pinned-gap",String(ut?Kt:0)),tt.style.setProperty("--dg-pinned-gap",String(Kt+(nt&&ut?1:0))),nt&&ut&&He.append(Oe),Ft()>0&&He.append(tt),a.hasStickyGroupHeaders()&&(qe.style.setProperty("--dg-pinned-gap",String(Kt+(nt&&ut?1:0))),qe.style.setProperty("--dg-sticky-below",`${Ft()>0?Ft()*a.getRowHeight()+1:0}px`),He.append(qe)),He.append($e),Er()>0&&He.append(Et),nt&&!ut&&He.append(Oe),ae.appendChild(He);let ct=w("kanuni-datagrid-toolbar"),ot=w("kanuni-datagrid-pager");ot.setAttribute("role","navigation"),ot.setAttribute("aria-label",h.pagerAria);let Pt=w("kanuni-datagrid-filter-panel"),Gt=!!Qe.grouping?.panel,Ue=w("kanuni-datagrid-group-panel"),an=resolveCardView(g),ln=false,Tn=[],Rt=pe,dn=w("kanuni-datagrid-cardbar");dn.hidden=true;let kr=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",kr.append(Rr,at),dn.append(kr,$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 Ei=e=>{let[t,...o]=cardFields(a.getColumnModel(),Tn,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=cardColumnIds(e,an);t.join("\0")!==Tn.join("\0")&&(Tn=t,a.setDataRowHeight(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,ki=e=>{let t=showsCards(e,an);if(t!==ln){for(ln=t,B.classList.toggle("kanuni-datagrid-cards",t),Rt=t?Ei:pe,Tn=[],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 Sn=Qe.pagination;Sn&&Sn.enabled!==false&&B.appendChild(ot);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 Ln=w("kanuni-datagrid-empty");Ln.textContent=yi,Ln.style.display="none",B.append(sn,Ln),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=rt?.icons===true,Dr=yo?pr:0,ho=Dr,Co=ho+(L?En:0),Nr=Co+(Jt?kn:0),it=Dr+(L?En:0)+(Jt?kn:0)+(Xt?io:0);a.setLeadWidth(it);let pn=!!_?.enabled,fn=_?.group??null,Ir=_?.allowReordering??true,Hr=_?.allowDropInsert??fn!==null,pt=null,An=null,Mn=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,An=t.node.key,Mn=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(Mn=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=()=>{An!==null&&a.notifyRowDragEnd({rowKey:An,dropped:Mn,overKey:xt?.key??null,position:xt?.side??null}),Mn=false,An=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=k===void 0||k===false?null:(()=>{let e=k===true?{}:k;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,Eo=0;function ko(){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);Eo=Math.max(0,e.centerWidth-t.offsetX-i),He.style.minWidth=`${e.totalWidth+it}px`;}let Dn=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=bandDepth(o);if(go=n,xn.textContent="",Me.style.top=`${n*Dn}px`,B.style.setProperty("--dg-band-offset",`${n*Dn}px`),n===0)return;computeHeaderBands(o,n).forEach((d,s)=>{let r=w("kanuni-datagrid-band-row");if(r.style.top=`${s*Dn}px`,r.style.height=`${Dn}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=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(Wd(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);}xn.appendChild(r);});}let en=null,Nn=null;function In(e,t){Nn&&Nn!==e&&Nn.classList.remove("kanuni-datagrid-header-cell--drop-before","kanuni-datagrid-header-cell--drop-after"),Nn=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=`${kn}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===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&&!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",fillText(h.filterPopupAria,{column:r.def.headerName??r.id})),m.appendChild(_d());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;In(b,Y?"before":"after");}),b.addEventListener("dragleave",y=>{let $=y.relatedTarget;(!$||!b.contains($))&&In(null,"before");}),b.addEventListener("drop",y=>{In(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",()=>In(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,Ee=false,Ve=dt=>{Ee=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),Ee&&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,Hn=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);}Hn=t.length>0?t:null;}function Ni(e){if(!Hn)return e+1;let t=0,o=Hn.length;for(;t<o;){let n=t+o>>1;Hn[n]<=e?t=n+1:o=n;}return e+1-t}let gt=[];function Fn(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=`${kn}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 ${Eo}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 Kn(e,t){if(tn===""||t===""){e.textContent=t;return}let o=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 s=i.renderCell({value:n,row:o.data,node:o,column:i});typeof s=="string"?e.textContent=s:e.replaceChildren(s);return}let d=lookupLabel(i,n);if(d!==null){Kn(e,d);return}if(i.valueFormatter){let s=i.valueFormatter(n,o.data);Kn(e,typeof s=="string"?s:String(s??""));return}if(i.dateFormat&&i.dataType==="date"){Kn(e,formatDateValue(n,i.dateFormat));return}Kn(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(!rt?.messages)return;let e=Ze?.engine??ve?.()??null,t=rt.get,o=rowMessageKeys(rt,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=rt&&t?.kind==="data"?resolveRowStatus(rt,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"),!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(...rowStatusClassName(o.status,rt.tint).split(" ")),e.setAttribute("aria-description",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=rt?rowMessageModel(rt,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,Eo-(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=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"),Ee=a.getColumnModel().getDef(ge.columnId);re.textContent=`${summaryLabel(ge,po)} ${Ee?.headerName??ge.columnId}:`,Pe.append(re,` ${formatSummaryValue(ge,Y[summaryKey(ge.columnId,ge.type)],Ee)}`),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?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 Ee=t.kind==="data"?a.getFindMatchKind(t.key,y.id):null;m.classList.toggle("kanuni-datagrid-cell--find-match",Ee!==null),m.classList.toggle("kanuni-datagrid-cell--find-active",Ee==="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=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=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=formatSummaryValue(o,e.aggregates[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(Et.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?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=Fn("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=Fn(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=Fn(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=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,FILTER_PART_ROW):a.getColumnFilter(t,FILTER_PART_SET)??a.getColumnFilter(t,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"?FILTER_PART_ROW:FILTER_PART_SET),close:n,onValueChange:p=>(s.add(p),()=>s.delete(p))});return ()=>{r(),s.clear(),typeof c=="function"&&c();}}let mn=[],bn=new Map,Lo=false;function Vi(){!S||Lo||kt.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,FILTER_PART_ROW),i=bn.get(t)??"",d=e.parentElement?.querySelector("input.kanuni-datagrid-filter-input"),s=i;if(n){let r=customFilterInputFromNode(n,o);s=r?.operatorId??"",r&&d&&(d.value=r.text);}else findCustomFilterOperator(o,i)?.operandType==="none"&&(s="");bn.set(t,s),e.value=s,d&&(d.disabled=findCustomFilterOperator(o,s)?.operandType==="none");});}function Ao(){if(!S)return;if(mn.forEach(n=>n()),mn=[],kt.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",kt.appendChild(n);}let e=false,t=null,o=()=>{if(!t){t=document.createElement("datalist"),t.id=`${u.gridId}-filter-periods`;for(let n of periodSuggestionList(Cr)){let i=document.createElement("option");i.value=n,t.appendChild(i);}kt.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",kt.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),mn.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",fillText(h.filterPopupAria,{column:n.def.headerName??n.id})),s.setAttribute("data-filter-for",n.id);let r=customFilterOperators(n.def),c=()=>findCustomFilterOperator(n.def,bn.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?parseCustomFilterInput(n.id,s.value,b):parseFilterInput(n.id,s.value,n.def.dataType,Cr),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",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=customFilterInputFromNode(a.getColumnFilter(n.id,FILTER_PART_ROW),n.def);F&&(bn.set(n.id,F.operatorId),s.value=F.text),b.value=c()?.id??"",s.disabled=c()?.operandType==="none",b.addEventListener("change",()=>{bn.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);}kt.appendChild(i);}}let Mo=()=>{},Jr=null;function _i(){let e=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-${++Fd}`,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",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(Vd());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(!ot.isConnected)return;let e=a.getPage(),t=a.getPageCount(),o=document.activeElement,n=o instanceof HTMLElement&&ot.contains(o)?o.getAttribute("data-pager"):null;ot.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")),Sn?.pageButtons)for(let c of pageButtonItems(e,t,Sn.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")),ot.appendChild(d),n!==null){let c=ot.querySelector(`[data-pager="${n}"]`);(c&&!c.disabled?c:ot.querySelector('[aria-current="page"]')??ot.querySelector("button:not(:disabled)"))?.focus();}}function Do(){if(!nt)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=`${summaryLabel(d,po)} \u2014 ${i.def.headerName??i.id}`;let c=w("kanuni-datagrid-footer-value","span");c.textContent=formatSummaryValue(d,t[summaryKey(d.columnId,d.type)],i.def),r.appendChild(c);}else {let c=w("kanuni-datagrid-footer-hint","span");c.textContent=z&&!isChromeColumn(i.id)?"\xB7":"",r.appendChild(c);}Oe.appendChild(r);}}function Wi(){Ft()>0?tt.isConnected||He.insertBefore(tt,qe.isConnected?qe:$e):tt.remove(),Er()>0?Et.isConnected||He.insertBefore(Et,$e.nextSibling):Et.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=Fn("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",tt,ce],["bottom",Et,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");};tt.addEventListener("contextmenu",Vn),Et.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),portalTarget(u.portalContainer).appendChild(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",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",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?NONBLANK_KEY:distinctEntryKey(x),$=x=>x===K?h.filterNonBlank:distinctDisplayText(x,{filterBlank:h.filterBlank,filterEmptyText:h.filterEmptyText,filterSpace:h.filterSpace,filterSpaces:h.filterSpaces}),Y=null,ge="",Pe=[],re=null,Ee=document.createElement("input");Ee.type="search",Ee.className="kanuni-datagrid-filter-search",Ee.placeholder=h.search,Ee.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(distinctEntryKey));else for(let x of F)p.add(distinctEntryKey(x));Xe();});let wn=document.createElement("button");wn.type="button",wn.textContent=h.clear,wn.addEventListener("click",()=>{if(re)return re.clear();if(v=true,R.trim()==="")p=new Set;else for(let x of F)p.delete(distinctEntryKey(x));Xe();}),bt.append(dt,wn);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=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=>foldText(U.label))),F=ge!==""&&x.includes(ge)?Pe.filter(U=>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 yn=x.isChecked(Ae);De.setAttribute("aria-selected",String(yn)),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=yn,Nt.tabIndex=-1;let Je=document.createElement("span");Je.textContent=Ae.nonBlank?h.filterNonBlank: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],yn=y(De),Nt=De===K?distinctNonBlankTicked(r,p):p.has(yn),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(yn)),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===NONBLANK_KEY){let U=distinctNonBlankTicked(r,p);for(let ne of r)I(ne)&&!U?p.delete(BLANK_KEY):p.add(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?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();};Ee.addEventListener("input",()=>{R=Ee.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),FILTER_PART_SET),Fe();return}let x;if(p.size===r.length)x=null;else if(distinctNonBlankTicked(r,p))x={columnId:e,operator:"isnotnull"};else {let U=p.has(BLANK_KEY),ne=r.filter(be=>!I(be)&&p.has(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,FILTER_PART_SET),Fe();};s.tabIndex=-1,s.addEventListener("keydown",x=>{let U=x.target===Ee;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(),Ee.focus(),R=R.slice(0,-1),Ee.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(),Ee.focus(),R+=x.key,Ee.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(Ee,...Ve?[Ve]:[],bt,le,Ga),Xe(),queueMicrotask(()=>{Ee.isConnected&&Ee.focus();});let $a=x=>{r=x,Y=null,ge="",c=false,wt.disabled=false;let U=selectedLabelsFromFilter(a.getColumnFilter(e,FILTER_PART_SET)??a.getColumnFilter(e,FILTER_PART_DEFAULT),r,{text:a.getColumnModel().getDataType(e)==="string"});U?(v=true,p=new Set(U)):v||(p=new Set(r.map(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(nt!==e){if(nt=e,e){if(ut){let t=tt.isConnected?tt:qe.isConnected?qe:$e;He.insertBefore(Oe,t);}else He.append(Oe);Do();}else Oe.remove();tt.style.setProperty("--dg-pinned-gap",String(Kt+(nt&&ut?1:0))),qe.style.setProperty("--dg-pinned-gap",String(Kt+(nt&&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:nt,onToggleGroupPanel:()=>Ji(!Gt),onToggleFooter:()=>Qi(!nt),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},...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=>!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",`${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",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=[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(fillText(h.announceSortedBy,{columns:i}));}let o=a.getSelectedCount();o>0&&e.push(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=describeFilter(a.getEffectiveFilter(),a.getColumnModel(),{...we,labels:{...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(Ln.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 RowMotion;function rl(){if(Bo=false,!Be){if(Vo)Vo=false,_o&&(_o=false,ft++),ko(),Ro(),Ao(),Bn();else {let e=ze;ko(),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}))]:[],...Kd.map(e=>a.events.on(e,()=>jn(true))),...Pd.map(e=>a.events.on(e,()=>{_o=true;})),...Gd.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(rt?.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||ot.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=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?attachStateStoring(a,br):null,va=typeof et=="object"?et.delay??400:400,Ea=et!==false&&!(typeof et=="object"&&et.enabled===false),ll=typeof et=="object"?et.showOnTruncation!==false:true,ka=typeof et=="object"?et.trigger??"hover":"hover",Ra=Ea&&ka!=="focus",Uo=Ea&&ka!=="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),portalTarget(u.portalContainer).appendChild(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=vn.get(ue);return e?[...e].filter(t=>t!==Mt):[]},Ha=null;if(ue){Mt={controller:a,scroller:ae};let e=vn.get(ue)??new Set;e.add(Mt),vn.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&&ki(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),calibrateMaxScrollOffset(ae,a);};Fa();let Jn=null;typeof ResizeObserver<"u"&&(Jn=new ResizeObserver(Fa),Jn.observe(ae),Jn.observe(He)),ko(),Ro(),Ao(),_i(),Bn(),Gn(),Do(),Qr(),Go(),pa(),ca(),Yn(),Bt?.always&&vo(true);let jo=null;if(ke){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()),mn.forEach(e=>e()),mn=[],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=vn.get(ue);e?.delete(Mt),e&&e.size===0&&vn.delete(ue),Mt=null;}ae.removeEventListener("scroll",Na),fe.removeEventListener("mousedown",wa),fe.removeEventListener("contextmenu",ra),tt.removeEventListener("contextmenu",Vn),Wo.dispose(),Et.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 Ud(l){let u=document.createElement("button");u.type="button";let f={...l},M=()=>{let{icon:E,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 E=="string"?u.insertAdjacentHTML("afterbegin",E):u.appendChild(E),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",E=>{if(f.disabledReason!==void 0){E.preventDefault();return}f.onClick?.();}),u.update=E=>{f={...f,...E},M();},M(),u}export{io as CHECKBOX_COLUMN_WIDTH,kn as DETAIL_COLUMN_WIDTH,si as PRINT_MAX_ROWS,lo as ROW_DRAG_MIME,En as ROW_NUMBER_COLUMN_WIDTH,lr as attachCellEditing,or as buildCellEditor,zt as buildDateEditor,ar as buildEditForm,Qo as buildHeaderMenu,qd as createGrid,er as measureBestFitWidth,rr as openConfirmDialog,Ud as toolbarButton};