@kanunilabs/datagrid 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/datagrid.umd.js +8 -8
- package/dist/index.cjs +2 -2
- package/dist/index.js +2 -2
- package/dist/styles.css +32 -4
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {DEFAULT_DATE_FORMAT,toDate,dateDigits,maskDate,createDebouncedCommit,EditingEngine,getGridDictionary,summaryTypeLabels,datePeriodLabels,inferColumns,presetRowHeight,DataGridController,isRtlLocale,resolveCardView,RowMotion,attachStateStoring,edgeEditableColumn,nextEditableColumn,lookupLabel,formatDateValue,isChromeColumn,GROUP_COLUMN_ID,normalizeSearch,FILTER_PART_ROW,customFilterInputFromNode,findCustomFilterOperator,customFilterOperators,fillText,pageButtonItems,summaryLabel,formatSummaryValue,summaryKey,selectedLabelsFromFilter,FILTER_PART_SET,FILTER_PART_DEFAULT,foldText,allowedSummaryTypes,describeFilter,filterLabels,resolveGridCommand,calibrateMaxScrollOffset,periodSuggestionList,parseCustomFilterInput,parseFilterInput,dateDigitCount,parseDateValue,daysInMonth,toIsoDate,placeAnchoredLayer,bandDepth,computeHeaderBands,bandPath,showsCards,downloadBlob,ExportAbortedError,spanRoleAt,cardFields,cardColumnIds,cardHeight}from'@kanunilabs/datagrid-core';export{DENSITY_ROW_HEIGHT,GRID_COLOR_SCHEMES,THEME_ROW_HEIGHT,isPackagedTheme,presetRowHeight}from'@kanunilabs/datagrid-core';function Co(u,p){let{controller:h,maxGroupLevels:D,t:T}=p,k=u.columnId,M=h.getColumnModel().getDef(k),A=h.getSort(),R=A.find(z=>z.columnId===k),X=h.getGroupLevels(),x=X.includes(k),oe=M?.sortable!==false,O=h.getColumnStates().find(z=>z.id===k)?.pinned??null,_=M?.groupable!==false,ee=h.canGroup(),pe=[{id:"sort-asc",label:T.sortAsc,disabled:!oe||R?.direction==="asc",onSelect:()=>h.setSort([{columnId:k,direction:"asc"}])},{id:"sort-desc",label:T.sortDesc,disabled:!oe||R?.direction==="desc",onSelect:()=>h.setSort([{columnId:k,direction:"desc"}])},{id:"sort-clear",label:T.clearSort,disabled:!R,onSelect:()=>h.setSort(A.filter(z=>z.columnId!==k))},{id:"sep-1",separator:true},{id:"group",label:x?T.ungroupColumn:T.groupByColumn,disabled:!_,onSelect:()=>{x?h.groupBy(X.filter(z=>z!==k)):h.groupBy([...X,k].slice(-D));}},{id:"group-panel",label:p.groupPanelVisible?T.hideGroupPanel:T.showGroupPanel,onSelect:p.onToggleGroupPanel},{id:"footer",label:p.footerVisible?T.hideFooter:T.showFooter,onSelect:p.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:T.hideColumn,disabled:h.getColumnStates().filter(z=>z.visible).length<=1,onSelect:()=>h.setColumnVisible(k,false)},{id:"field-chooser",label:T.fieldChooser,onSelect:p.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:T.bestFit,disabled:M?.resizable===false,onSelect:()=>p.onBestFit(k)},{id:"best-fit-all",label:T.bestFitAll,onSelect:p.onBestFitAll}],de=h.getColumnStates().filter(z=>z.visible&&z.pinned===O).map(z=>z.id),q=de.indexOf(k),be=M?.reorderable!==false&&q>=0;return pe.push({id:"sep-4",separator:true},{id:"move-left",label:T.moveLeft,disabled:!be||q<=0,onSelect:()=>h.moveColumn(k,de[q-1])},{id:"move-right",label:T.moveRight,disabled:!be||q<0||q>=de.length-1,onSelect:()=>h.moveColumn(k,de[q+2])},{id:"fixed-position",label:T.fixedPosition,items:[{id:"pin-left",label:T.pinLeft,disabled:O==="left",onSelect:()=>h.setColumnPinned(k,"left")},{id:"pin-right",label:T.pinRight,disabled:O==="right",onSelect:()=>h.setColumnPinned(k,"right")},{id:"pin-sticky",label:T.pinSticky,disabled:O==="sticky",onSelect:()=>h.setColumnPinned(k,"sticky")}]},{id:"unpin",label:T.unpin,disabled:O===null,onSelect:()=>h.setColumnPinned(k,null)}),ee?pe:pe.filter(z=>z.id!=="group"&&z.id!=="group-panel")}async function ko(u,p){try{let h=p==="csv"?await u.exportToCsv():p==="excel"?await u.exportToExcel():p==="excel-selected"?await u.exportToExcel({selectedOnly:!0}):await u.exportToPdf();return downloadBlob(h.blob,h.fileName),{completed:!0}}catch(h){return h instanceof ExportAbortedError?{completed:false}:{completed:false,error:h instanceof Error?h.message:String(h)}}}var li=null;function Sr(){return typeof document>"u"?null:(li??=document.createElement("canvas"),li.getContext("2d"))}function di(u){let p=getComputedStyle(u);return `${p.fontStyle} ${p.fontWeight} ${p.fontSize} ${p.fontFamily}`}function Lr(u){for(let p=u.firstElementChild;p;p=p.nextElementSibling)if(p.tagName!=="MARK")return true;return false}function Ar(u){let p=u.map(D=>[D.style.width,D.style.minWidth,D.style.maxWidth]);for(let D of u)D.style.width="max-content",D.style.minWidth="0",D.style.maxWidth="none";let h=0;for(let D of u){let T=Math.ceil(D.getBoundingClientRect().width);T>h&&(h=T);}return u.forEach((D,T)=>{[D.style.width,D.style.minWidth,D.style.maxWidth]=p[T];}),h}function vo(u,p){let h=Sr();if(!h)return null;let D=typeof CSS<"u"&&CSS.escape?CSS.escape(p):p.replace(/"/g,'\\"'),T=u.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${D}"]`),k=u.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${D}"]`);if(!T&&k.length===0)return null;let M=0;if(T){let A=T.querySelector(".kanuni-datagrid-header-label")??T;h.font=di(A),M=h.measureText(A.textContent??"").width+44;}if(k.length>0){h.font=di(k[0]);let A=[];for(let R=0;R<k.length;R++){if(Lr(k[R])){A.push(k[R]);continue}let X=k[R].textContent??"";if(X==="")continue;let x=h.measureText(X).width+20;x>M&&(M=x);}A.length>0&&(M=Math.max(M,Ar(A)));}return M===0?null:Math.round(Math.min(640,Math.max(48,M)))}function ci(u){let p=Number(u.weekStartsOn);return Number.isInteger(p)&&p>=0&&p<=6?p:0}function Gr(u){let p=[u.weekdaySu,u.weekdayMo,u.weekdayTu,u.weekdayWe,u.weekdayTh,u.weekdayFr,u.weekdaySa],h=ci(u);return [...p.slice(h),...p.slice(0,h)]}function Kr(u){return [u.monthJanuary,u.monthFebruary,u.monthMarch,u.monthApril,u.monthMay,u.monthJune,u.monthJuly,u.monthAugust,u.monthSeptember,u.monthOctober,u.monthNovember,u.monthDecember]}function Fr(u,p){return !u||!p?false:u.getFullYear()===p.getFullYear()&&u.getMonth()===p.getMonth()&&u.getDate()===p.getDate()}var ui="http://www.w3.org/2000/svg";function $r(){let u=document.createElementNS(ui,"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 p=document.createElementNS(ui,"path");return p.setAttribute("d","M3 4h10v9H3z M3 6.5h10 M5.5 2.5v2 M10.5 2.5v2"),p.setAttribute("fill","none"),p.setAttribute("stroke","currentColor"),p.setAttribute("stroke-width","1.3"),p.setAttribute("stroke-linecap","round"),u.appendChild(p),u}function Ro(u){let{t:p,format:h=DEFAULT_DATE_FORMAT,autoFocus:D=true}=u,T=Kr(p),k=Gr(p),M=document.createElement("span");M.className="kanuni-datagrid-date-editor";let A=document.createElement("input");A.type="text",A.inputMode="numeric",A.autocomplete="off",A.placeholder=h,u.ariaLabel&&A.setAttribute("aria-label",u.ariaLabel),u.testId&&A.setAttribute("data-testid",u.testId),u.columnId&&A.setAttribute("data-column-id",u.columnId),u.disabled&&(A.disabled=true);let R=null,X=false,x=null,oe=toDate(u.value),O=oe??new Date,_=()=>R===null?formatDateValue(u.value,h):maskDate(R,h),ee=()=>R===null?null:parseDateValue(maskDate(R,h),h),pe=()=>R!==null&&R.length===dateDigitCount(h)&&ee()===null,de=()=>{let N=pe()||!!u.invalid;A.className=`kanuni-datagrid-editor${N?" kanuni-datagrid-editor--invalid":""}`,N?A.setAttribute("aria-invalid","true"):A.removeAttribute("aria-invalid");};A.value=_(),de();let q=N=>{if(N===null){u.onChange(null);return}u.onChange(u.value instanceof Date?N:toIsoDate(N));},be=()=>{if(!x)return;if(!A.isConnected){Te();return}let N=A.getBoundingClientRect(),g=placeAnchoredLayer({anchor:{left:N.left,top:N.top,bottom:N.bottom},width:x.offsetWidth,height:x.offsetHeight,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});x.style.left=`${g.left}px`,x.style.top=`${g.top}px`;},z=()=>be();function Ue(){if(!x)return;x.textContent="";let N=document.createElement("div");N.className="kanuni-datagrid-date-popup-head";let g=document.createElement("button");g.type="button",g.setAttribute("aria-label",p.datePreviousMonth),g.setAttribute("data-testid","dg-date-prev"),g.textContent="\u2039",g.addEventListener("click",()=>{O=new Date(O.getFullYear(),O.getMonth()-1,1),Ue();});let v=document.createElement("span");v.setAttribute("data-testid","dg-date-title"),v.textContent=`${T[O.getMonth()]} ${O.getFullYear()}`;let I=document.createElement("button");I.type="button",I.setAttribute("aria-label",p.dateNextMonth),I.setAttribute("data-testid","dg-date-next"),I.textContent="\u203A",I.addEventListener("click",()=>{O=new Date(O.getFullYear(),O.getMonth()+1,1),Ue();}),N.append(g,v,I);let Q=document.createElement("div");Q.className="kanuni-datagrid-date-popup-grid",Q.setAttribute("role","grid");for(let fe of k){let $=document.createElement("span");$.className="kanuni-datagrid-date-weekday",$.setAttribute("role","columnheader"),$.textContent=fe,Q.appendChild($);}let ue=(new Date(O.getFullYear(),O.getMonth(),1).getDay()-ci(p)+7)%7,ge=daysInMonth(O.getFullYear(),O.getMonth()+1);for(let fe=0;fe<42;fe++){let $=fe-ue+1,B=new Date(O.getFullYear(),O.getMonth(),$),U=$<1||$>ge,ce=Fr(B,ee()??oe),te=document.createElement("button");te.type="button",te.setAttribute("role","gridcell"),te.className=`kanuni-datagrid-date-day${U?" kanuni-datagrid-date-day--outside":""}${ce?" kanuni-datagrid-date-day--selected":""}`,te.setAttribute("aria-selected",String(ce)),te.setAttribute("data-testid","dg-date-day"),te.setAttribute("data-date",toIsoDate(B)),te.textContent=String(B.getDate()),te.addEventListener("click",()=>lt(B)),Q.appendChild(te);}x.append(N,Q);}function Ye(){X||(X=true,ae.setAttribute("aria-expanded","true"),O=ee()??oe??new Date,x=document.createElement("div"),x.className=`kanuni-datagrid-detached kanuni-datagrid-date-popup${u.surfaceClass?` ${u.surfaceClass}`:""}`,x.style.position="fixed",x.setAttribute("data-testid","dg-date-calendar"),x.setAttribute("role","dialog"),x.setAttribute("aria-label",u.ariaLabel?`${u.ariaLabel} ${p.dateCalendar}`:p.dateCalendar),x.addEventListener("mousedown",N=>N.preventDefault()),document.body.appendChild(x),window.addEventListener("scroll",z,true),window.addEventListener("resize",z),u.onPortalOpen?.(Te),Ue(),be());}function Te(){X&&(X=false,ae.setAttribute("aria-expanded","false"),window.removeEventListener("scroll",z,true),window.removeEventListener("resize",z),x?.remove(),x=null);}function lt(N){R=null,Te(),q(N),A.value=formatDateValue(u.value instanceof Date?N:toIsoDate(N),h),de(),A.focus({preventScroll:true});}function Oe(){if(R===null)return;if(R.length===0){q(null),R=null,A.value=_(),de();return}let N=ee();N&&q(N),R=null,A.value=_(),de();}A.addEventListener("input",()=>{R=dateDigits(A.value,h),A.value=maskDate(R,h),de();}),A.addEventListener("keydown",N=>{if(N.key==="Escape"){if(N.preventDefault(),N.stopPropagation(),X){Te();return}R=null,u.onCancel();return}if(X){let g=N.key==="ArrowLeft"?-1:N.key==="ArrowRight"?1:N.key==="ArrowUp"?-7:N.key==="ArrowDown"?7:0;if(g!==0){N.preventDefault(),N.stopPropagation();let v=ee()??oe??new Date,I=new Date(v.getFullYear(),v.getMonth(),v.getDate()+g);R=dateDigits(formatDateValue(I,h),h),A.value=maskDate(R,h),O=I,Ue(),de();return}if(N.key==="Enter"){N.preventDefault(),N.stopPropagation();let v=ee();Te(),v&<(v);return}}if(N.key==="Enter"){N.preventDefault(),N.stopPropagation(),Oe(),u.onCommit();return}if(N.key==="Tab"){Oe(),Te(),u.onTab&&(N.preventDefault(),N.stopPropagation(),u.onTab(N.shiftKey));return}if(N.key.length===1&&!N.ctrlKey&&!N.metaKey&&!/\d/.test(N.key)){N.preventDefault();return}N.stopPropagation();}),A.addEventListener("blur",()=>{X||Oe();});let ae=document.createElement("button");return ae.type="button",ae.className="kanuni-datagrid-date-button",ae.setAttribute("aria-label",u.ariaLabel?`${u.ariaLabel} \u2014 ${p.dateOpenCalendar}`:p.dateOpenCalendar),ae.setAttribute("aria-expanded","false"),ae.setAttribute("data-testid","dg-date-open"),u.disabled&&(ae.disabled=true),ae.tabIndex=-1,ae.addEventListener("mousedown",N=>N.preventDefault()),ae.addEventListener("click",()=>{X?Te():Ye(),A.focus({preventScroll:true});}),ae.appendChild($r()),M.append(A,ae),D&&queueMicrotask(()=>{A.isConnected&&(A.focus({preventScroll:true}),A.select());}),M}function pi(u,p){return u==null?"":p==="date"&&u instanceof Date?u.toISOString().slice(0,10):String(u)}function gi(u,p){if(p){let h=document.createElement("span");h.id="kanuni-datagrid-editor-error",h.setAttribute("role","alert"),h.className="kanuni-datagrid-editor-error",h.textContent=p,u.appendChild(h);}return u}function To(u){let{value:p,dataType:h,error:D,seeded:T=false}=u,k=document.createDocumentFragment();if(u.options===null){let R=document.createElement("input");return R.type="text",R.value="\u2026",R.readOnly=true,R.disabled=true,R.className="kanuni-datagrid-editor",R.setAttribute("data-testid","dg-cell-editor"),k.appendChild(R),k}if(u.options&&u.options.length>0&&u.renderLookup)return k.appendChild(u.renderLookup({options:u.options,value:p,matchMode:u.matchMode,allowCustom:u.allowCustom,invalid:!!D,testId:"dg-cell-editor",ariaLabel:u.ariaLabel,surfaceClass:u.surfaceClass,onPortalOpen:u.onPortalOpen,noMatchText:u.t?.editNoMatch??"No match",onChange:u.onChange,onCommit:()=>u.onCommit("none"),onCancel:u.onCancel,onTab:R=>u.onTab(R?-1:1)})),gi(k,D);if(h==="date"&&u.t)return k.appendChild(Ro({value:p,format:u.dateFormat,invalid:!!D,testId:"dg-cell-editor",ariaLabel:u.ariaLabel,surfaceClass:u.surfaceClass,onPortalOpen:u.onPortalOpen,t:u.t,onChange:u.onChange,onCommit:()=>u.onCommit("none"),onCancel:u.onCancel,onTab:R=>u.onTab(R?-1:1)})),gi(k,D);let M=document.createElement("input");M.className=`kanuni-datagrid-editor${D?" kanuni-datagrid-editor--invalid":""}`,M.setAttribute("data-testid","dg-cell-editor"),M.setAttribute("aria-invalid",String(!!D)),D&&M.setAttribute("aria-errormessage","kanuni-datagrid-editor-error");let A=false;if(h==="boolean"?(M.type="checkbox",M.checked=p===true,M.addEventListener("change",()=>u.onChange(M.checked))):h==="number"?(M.type=Number.isNaN(Number(p))&&p!==null&&p!==void 0&&p!==""?"text":"number",M.value=pi(p,h),M.addEventListener("input",()=>u.onChange(M.value===""?null:Number(M.value)))):(M.type="text",M.value=pi(p,h),M.addEventListener("input",()=>u.onChange(M.value))),M.addEventListener("keydown",R=>{R.isComposing||R.keyCode===229||(R.key==="Enter"?(R.preventDefault(),R.stopPropagation(),u.onCommit(R.shiftKey?"none":"down")):R.key==="Tab"?(R.preventDefault(),R.stopPropagation(),A=true,u.onTab(R.shiftKey?-1:1)):R.key==="Escape"?(R.preventDefault(),R.stopPropagation(),u.onCancel()):R.stopPropagation());}),M.addEventListener("blur",()=>{A||u.onCommit("none");}),k.appendChild(M),D){let R=document.createElement("span");R.id="kanuni-datagrid-editor-error",R.setAttribute("role","alert"),R.className="kanuni-datagrid-editor-error",R.textContent=D,k.appendChild(R);}return queueMicrotask(()=>{if(M.isConnected&&(M.focus({preventScroll:true}),M.type!=="checkbox"))if(T){if(M.type==="text"||M.type==="search"){let R=M.value.length;M.setSelectionRange(R,R);}}else M.select();}),k}var Or=0;function So(u){return new Promise(p=>{let h=document.createElement("div");h.className=`kanuni-datagrid-detached kanuni-datagrid-dialog-root${u.surfaceClass?` ${u.surfaceClass}`:""}`,h.setAttribute("role","presentation");let D=document.activeElement,T=_=>{document.removeEventListener("keydown",k,true);let ee=h.contains(document.activeElement);h.remove(),ee&&D?.isConnected&&D.focus({preventScroll:true}),p(_);},k=_=>{if(_.key==="Escape"){_.stopPropagation(),T(false);return}if(_.key==="Tab"){let ee=Array.from(oe.querySelectorAll("button:not([disabled])"));if(ee.length===0)return;let pe=ee.indexOf(document.activeElement),de=_.shiftKey?pe<=0?ee.length-1:pe-1:pe===ee.length-1?0:pe+1;_.preventDefault(),_.stopPropagation(),ee[de].focus();}};document.addEventListener("keydown",k,true);let M=document.createElement("div");M.className="kanuni-datagrid-dialog-overlay",M.addEventListener("mousedown",()=>T(false));let A=document.createElement("div");A.className="kanuni-datagrid-dialog",A.setAttribute("role","alertdialog"),A.setAttribute("aria-modal","true");let R=`dg-dialog-${++Or}`;A.setAttribute("aria-labelledby",`${R}-title`),A.setAttribute("aria-describedby",`${R}-message`),A.setAttribute("data-testid","dg-dialog");let X=document.createElement("div");X.className="kanuni-datagrid-dialog-title",X.id=`${R}-title`,X.textContent=u.title;let x=document.createElement("div");x.className="kanuni-datagrid-dialog-message",x.id=`${R}-message`,x.textContent=u.message;let oe=document.createElement("div");if(oe.className="kanuni-datagrid-dialog-actions",u.cancelLabel!==void 0){let _=document.createElement("button");_.type="button",_.setAttribute("data-testid","dg-dialog-cancel"),_.textContent=u.cancelLabel,_.addEventListener("click",()=>T(false)),oe.appendChild(_);}let O=document.createElement("button");O.type="button",O.className=`kanuni-datagrid-dialog-primary${u.danger?" kanuni-datagrid-dialog-primary--danger":""}`,O.setAttribute("data-testid","dg-dialog-confirm"),O.textContent=u.confirmLabel,O.addEventListener("click",()=>T(true)),oe.appendChild(O),A.append(X,x,oe),h.append(M,A),document.body.appendChild(h),O.focus();})}function Lo(u,p,h,D,T={}){let k=u.controller,M=T.isColumnEditable??(g=>k.getColumnModel().getDef(g)?.editable!==false),A=()=>{k.refreshCells(),T.onChange?.(),R.schedule("footer",()=>k.refreshSummaries());},R=createDebouncedCommit(150),X=g=>k.getRowByKey(g),x=new EditingEngine({mode:"cell",messages:h,onChange:A,onAutoSaveFailed:g=>ee(g),onCellValueChanged:g=>k.notifyCellValueChanged(g),onEditingStarted:g=>k.notifyEditingStarted(g),onEditingStopped:g=>k.notifyEditingStopped(g),readValue:(g,v)=>{let I=X(g);return I?k.getColumnModel().getStoredValue(I,v):void 0},formatForEdit:(g,v,I)=>k.formatCellForEdit(v,I),parseFromEdit:(g,v,I)=>k.parseCellFromEdit(v,I,g),readRow:X,isColumnEditable:M,applyValue:(g,v,I)=>k.writeCellValue(g,v,I),storedValue:(g,v,I)=>k.valueAfterWrite(g,v,I),onSave:g=>p.onSave?.(g),...T.engine});k.setPendingValueReader({effectiveValue:(g,v,I)=>x.changes.effectiveValue(g,v,I),effectiveRow:(g,v)=>x.changes.applyPendingTo(g,v),hasPending:()=>x.changes.hasChanges()}),k.setEditingDelegate({startEditingCell:(g,v)=>(k.scrollToCell(g,v),x.beginEdit(g,v)),stopEditing:async g=>{if(!x.getSession())return false;if(g)return x.cancelEdit(),_(),true;let v=x.commitEdit();return v&&_(),v},getEditingCells:()=>{let g=x.getSession();return g?[{rowKey:g.rowKey,columnId:g.columnId}]:[]}});let oe=false,O=[k.events.on("rowsChanged",g=>{oe=g.removed===0;}),k.events.on("dataUpdated",()=>{let g=oe;oe=false,!g&&x.retainKeys(new Set(k.getDataRows().map(v=>v.key)));})];function _(){let g=u.element.querySelector(".kanuni-datagrid-scroller");(g&&g.tabIndex>=0?g:u.element).focus({preventScroll:true});}function ee(g){let v=g.columnId!==void 0?k.getColumnModel().getDef(g.columnId)?.headerName??g.columnId:null,I=g.error??h.editSaveFailed;So({title:h.editCannotSave,message:v?`${v}: ${I}`:I,confirmLabel:h.ok,surfaceClass:D.surfaceClass()}),g.rowKey!==void 0&&g.columnId!==void 0&&(k.revealRow(g.rowKey),k.focusCell(g.rowKey,g.columnId));}let pe=(g,v={})=>{let I=x.getSession(),Q=I?{rowKey:I.rowKey,columnId:I.columnId}:k.getFocus();if(!Q||!x.commitEdit())return false;let Z=k.getColumnModel().runtime().filter(B=>B.state.visible).map(B=>B.state.id);if(edgeEditableColumn(Z,M,1)===null)return false;let ue=k.getRows(),ge=ue.findIndex(B=>B.key===Q.rowKey);if(ge<0)return false;let fe=nextEditableColumn(Z,M,Q.columnId,g);if(fe===null){if(v.cycle===false)return false;let B=g;do ge+=B;while(ge>=0&&ge<ue.length&&ue[ge]?.kind!=="data");if(ge<0||ge>=ue.length)return false;fe=edgeEditableColumn(Z,M,g);}let $=ue[ge];return !$||$.kind!=="data"?false:(k.focusCell($.key,fe),k.scrollToCell($.key,fe),v.open===true?x.beginEdit($.key,fe):(_(),true))},de=g=>{if(x.getSession())return false;let v=k.getFocus();if(!v||!M(v.columnId))return false;let I=k.getColumnModel().getEditorDataType(v.columnId);if(I==="boolean"||I==="date")return false;let Q=I==="number"?Number.isNaN(Number(g))?null:Number(g):g;return Q===null?false:(k.scrollToCell(v.rowKey,v.columnId),x.beginEdit(v.rowKey,v.columnId,Q))},q=null,be=new Set,z=g=>{let v=()=>{be.delete(v),g();};be.add(v);},Ue=()=>{for(let g of [...be])g();be.clear();},Ye=(g,v)=>{let I=k.getColumnModel().getDef(g.columnId),Q=g.node.data;if(I?.renderCell)return I.renderCell({value:v,row:Q,node:g.node,column:I});let Z=lookupLabel(I,v);if(Z!==null)return Z;if(I?.valueFormatter){let ue=I.valueFormatter(v,Q);return typeof ue=="string"?ue:String(ue??"")}return I?.dateFormat&&I.dataType==="date"?formatDateValue(v,I.dateFormat):v==null?"":String(v)},Te=g=>{if(g.node.kind!=="data")return;if(!x.isEditing(g.node.key,g.columnId)){q&&q.rowKey===g.node.key&&q.columnId===g.columnId&&(q=null);let $=x.getMode()==="cell"?void 0:x.changes.get(g.node.key,g.columnId),B=T.cellAdornment?.(g)??null;if(!$&&!B)return;let U=$?$.newValue:g.value,ce=document.createElement("span");ce.style.display="contents";let te=Ye(g,U);return typeof te=="string"?ce.appendChild(document.createTextNode(te)):ce.appendChild(te),B&&ce.appendChild(B),ce}let v=x.getSession();if(q&&q.rowKey===v.rowKey&&q.columnId===g.columnId)return q.setError(v.validation.message),q.container;let I=k.getColumnModel().getDef(g.columnId),Q=T.resolveLookup?.(v.rowKey,g.columnId)??{options:void 0},Z=document.createElement("span");Z.style.display="contents";let ue=T.customEditors?I?.renderEditor:void 0;if(ue){let $=new Set,B=ue({value:x.getSession()?.value??v.value,row:x.effectiveRow(v.rowKey),columnId:g.columnId,error:v.validation.message,onErrorChange:U=>($.add(U),()=>$.delete(U)),setValue:U=>x.setEditValue(U),commit:()=>{x.commitEdit()&&_();},cancel:()=>{x.cancelEdit(),_();}});return Z.appendChild(B),q={rowKey:v.rowKey,columnId:g.columnId,container:Z,setError:U=>{for(let ce of $)ce(U);}},Z}let ge=$=>{Z.textContent="",Z.appendChild(To({value:x.getSession()?.value??v.value,dataType:k.getColumnModel().getEditorDataType(g.columnId),error:$,seeded:v.seeded,onPortalOpen:z,options:Q.options,allowCustom:Q.allowCustom,matchMode:Q.matchMode,renderLookup:T.renderLookup,dateFormat:I?.dateFormat,ariaLabel:I?.headerName??g.columnId,surfaceClass:D.surfaceClass(),t:h,onChange:B=>x.setEditValue(B),onCommit:B=>{x.commitEdit()&&(B==="down"&&k.moveFocus("down"),_());},onTab:B=>{if(p.focusCellOnTab===false){x.commitEdit();return}pe(B,{open:T.keepEditingOnTab===true,cycle:p.focusCellOnCycle!==false});},onCancel:()=>{x.cancelEdit(),_();}}));};ge(v.validation.message);let fe=v.validation.message;if(q={rowKey:v.rowKey,columnId:g.columnId,container:Z,setError:$=>{if($===fe)return;fe=$,Z.querySelector(".kanuni-datagrid-editor")?.classList.toggle("kanuni-datagrid-editor--invalid",!!$);let U=Z.querySelector(".kanuni-datagrid-editor-error");$&&!U&&(U=document.createElement("span"),U.id="kanuni-datagrid-editor-error",U.setAttribute("role","alert"),U.className="kanuni-datagrid-editor-error",Z.appendChild(U)),U&&(U.textContent=$??"",$||U.remove());}},Q.options===null&&T.resolveLookup){let $=T.resolveLookup,B=()=>{let ce=$(v.rowKey,g.columnId);ce.options!==null&&q&&q.rowKey===v.rowKey&&q.columnId===g.columnId&&x.isEditing(v.rowKey,g.columnId)&&(Q.options=ce.options,ge(x.getSession()?.validation.message??null));},U=k.events.on("cellsRefreshed",()=>{B(),$(v.rowKey,g.columnId).options!==null&&U();});}return Z},lt=g=>{if(g.node.kind!=="data")return;let v=[];return x.isEditing(g.node.key,g.columnId)&&v.push("kanuni-datagrid-cell--editing"),x.changes.isDirty(g.node.key,g.columnId)&&v.push("kanuni-datagrid-cell--dirty"),x.isRemoved(g.node.key)&&v.push("kanuni-datagrid-cell--removed"),v.length?v.join(" "):void 0},Oe=g=>{g.node.kind==="data"&&x.canUpdate(g.node.key,g.columnId)&&(k.scrollToCell(g.node.key,g.columnId),x.beginEdit(g.node.key,g.columnId));},ae=g=>g.key==="Escape"&&x.getSession()?(g.preventDefault(),x.cancelEdit(),true):g.key==="Tab"&&p.focusCellOnTab!==false&&!x.getSession()&&k.getFocus()&&pe(g.shiftKey?-1:1,{open:T.keepEditingOnTab===true,cycle:p.focusCellOnCycle!==false})?(g.preventDefault(),true):false,N=g=>{let v=g.ctrlKey||g.metaKey;if(g.key==="F2"){let I=k.getFocus();if(I)return g.preventDefault(),k.scrollToCell(I.rowKey,I.columnId),x.beginEdit(I.rowKey,I.columnId),true}return p.editOnKeyPress!==false&&!v&&!g.altKey&&g.key.length===1&&g.key!==" "&&!x.getSession()&&de(g.key)?(g.preventDefault(),true):false};return {engine:x,renderCellContent:Te,getCellClassName:lt,onCellDoubleClick:Oe,handleKeyDown:g=>ae(g)||N(g),handleSessionKeys:ae,handleOpenKeys:N,editAdjacentCell:pe,focusGrid:_,trackPortal:z,defaultContent:Ye,dispose:()=>{Ue(),R.cancelAll(),O.forEach(g=>g()),k.setPendingValueReader(null),k.setEditingDelegate(null);}}}function mi(u,p){return !u||isChromeColumn(p)?false:u.editable!==false&&u.lookup==null&&u.renderEditor==null&&u.allowFormulas!==true}var bi=["mode","rules","crud","allowAdding","allowUpdating","allowDeleting","onInitNewRow","onRowInserted","onRowUpdated","onRowRemoved","insertKey","appendOnArrowDown","newRowPosition","keepEditingOnTab","commandColumn","commandLabels","confirmDelete","confirmDeleteMessage","formHeight","formLabels","range"];var Xt=60,Nn=36,Jt=28,Hn="application/x-kanuni-row",jt=new Map,Ho=new Set,vi=5e3,kt=0,Rl=["columnStateChanged","sortChanged"],Tl=["columnStateChanged"],Sl=["contentReady","viewportChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","cellsRefreshed","findChanged"],m=(u,p="div")=>{let h=document.createElement(p);return h.className=u,h},Qt="http://www.w3.org/2000/svg";function Ll(u,p){let h=T=>{p&&console.warn(`[datagrid] ${T} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);};if(u.viewportDatasource)throw new Error("[datagrid] viewportDatasource is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.");let D={...u};if(D.dataSource!=null&&!Array.isArray(D.dataSource)&&D.grouping&&(h("grouping a server-side DataSource is"),delete D.grouping),D.columns?.some(T=>T.spanRows)&&(h("cell span/merge (spanRows) is"),D={...D,columns:D.columns.map(T=>T.spanRows?{...T,spanRows:void 0}:T)}),D.tree&&(h("tree data is"),delete D.tree),D.masterDetail&&(h("master-detail is"),delete D.masterDetail),D.grouping){let{groupBy:T,groupSummaries:k}=D.grouping,M=T==null?[]:typeof T=="string"?[T]:T;(M.length>1||k)&&(h("multi-level grouping and group summaries are"),D={...D,grouping:{...D.grouping,groupBy:M.slice(0,1),groupSummaries:false}});}return D}var Al={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:""},Pn=new Set;function Ml(u){for(let p of Object.keys(u)){let h=Al[p];h===void 0||h===""||Pn.has(p)||(Pn.add(p),console.warn(`[datagrid] \`${p}\` is a React-only option \u2014 ${h}.`));}}function Dl(){let u=document.createElementNS("http://www.w3.org/2000/svg","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 p=document.createElementNS("http://www.w3.org/2000/svg","path");return p.setAttribute("d","M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"),p.setAttribute("fill","none"),p.setAttribute("stroke","currentColor"),p.setAttribute("stroke-width","1.5"),p.setAttribute("stroke-linecap","round"),p.setAttribute("stroke-linejoin","round"),u.appendChild(p),u}function Il(){let u=document.createElementNS(Qt,"svg");u.setAttribute("width","11"),u.setAttribute("height","11"),u.setAttribute("viewBox","0 0 16 16"),u.setAttribute("aria-hidden","true"),u.setAttribute("focusable","false");let p=document.createElementNS(Qt,"path");return p.setAttribute("d","M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z"),p.setAttribute("fill","currentColor"),p.setAttribute("stroke","currentColor"),p.setAttribute("stroke-width","0.6"),p.setAttribute("stroke-linejoin","round"),u.appendChild(p),u}function Nl(u){let p=document.createElementNS(Qt,"svg");p.setAttribute("width","14"),p.setAttribute("height","14"),p.setAttribute("viewBox","0 0 16 16"),p.setAttribute("aria-hidden","true"),p.setAttribute("focusable","false");let h=document.createElementNS(Qt,"rect");h.setAttribute("x","2"),h.setAttribute("y","2"),h.setAttribute("width","12"),h.setAttribute("height","12"),h.setAttribute("rx","2"),h.setAttribute("fill","none"),h.setAttribute("stroke","currentColor"),h.setAttribute("stroke-width","1.3"),p.appendChild(h);let D=T=>{let k=document.createElementNS(Qt,"path");k.setAttribute("d",T),k.setAttribute("fill","none"),k.setAttribute("stroke","currentColor"),k.setAttribute("stroke-width","1.3"),k.setAttribute("stroke-linecap","round"),p.appendChild(k);};return D("M5 8h6"),u&&D("M8 5v6"),p}function ki(u,p){let h=u??(p==="number"||p==="bigint"?"right":"left");return h==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":h==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function In(u){let p="kanuni-datagrid-root";return u.dark&&(p+=" kanuni-datagrid-dark"),u.theme&&(p+=` kanuni-datagrid-theme-${u.theme}`),u.palette&&(p+=` kanuni-datagrid-palette-${u.palette}`),u.density&&(p+=` kanuni-datagrid-density-${u.density}`),p}function Hl(u,p){let{theme:h,palette:D,density:T,dark:k,striped:M=true,rowNumbers:A=false,locale:R="en",footer:X=false,footerMenu:x=true,footerPosition:oe="bottom",notes:O,pinnedTopRows:_=[],pinnedBottomRows:ee=[],resizable:pe=true,reorderable:de=true,autoHeaderHeight:q=false,filterRow:be=false,headerFilter:z=false,filterIconMode:Ue="hover",filterPanel:Ye=false,onOpenFilterBuilder:Te,focusedRow:lt=false,focusedRowKey:Oe,onFocusedRowChanged:ae,onRowClick:N,onRowActivate:g,autoSizeStrategy:v="none",renderRow:I,cardView:Q,onCardViewChange:Z,announcements:ue=true,filterPanelLabels:ge,showRowCount:fe=false,toolbarColumnChooser:$=false,cellMenu:B=true,rowMenu:U,headerMenu:ce,rowDrag:te,alignedGrids:Me,printLayout:Zt,renderCellContent:Po,getCellClassName:Go,onCellPointerDown:Ko,onCellPointerEnter:en,onCellDoubleClick:Fo,editing:It,onHeaderClick:$o,getHeaderClassName:Oo,renderHeaderLabel:Ei,renderDetail:Bo,renderEditForm:xi,enterpriseEdition:je=false,stateStoring:Vo,tooltip:De=true,renderOverlay:Gn,filterDebounce:Ri,toolbar:_o=false,highlightSearch:Ti=true,sortable:Wo=true,toolbarItemsAfter:Si,toolbarItemsBefore:Li,toolbarExcel:Ai=false,toolbarPdf:Mi=false,searchDebounce:Di=200,...Ii}=p;Ml(p),fe&&!Pn.has("showRowCount:deprecated")&&(Pn.add("showRowCount:deprecated"),console.warn("[datagrid] `showRowCount` was retired on 2026-08-15 and does nothing in either renderer. The row count lives in the status bar (Enterprise) or the pager."));let C=getGridDictionary(R),{emptyText:Ni=C.noData,loadingText:Hi=C.busy,loadingOverlay:Kn=true,...Se}=Ii,qo=typeof Kn=="number"?Kn:300,Fn=summaryTypeLabels(C),zo=datePeriodLabels(C);if((!Se.columns||Se.columns.length===0)&&p.autoColumns!==false){let e=Array.isArray(Se.dataSource)?Se.dataSource:[];Se.columns=inferColumns(e,typeof p.autoColumns=="object"?p.autoColumns:{});}Se.rowHeight===void 0&&(Se.rowHeight=presetRowHeight(h,T,28));let Pi=je?Se:Ll(Se,!!p.debugMode),dt=je?O:void 0;!je&&O&&p.debugMode&&console.warn("[datagrid] cell notes are an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to show them.");let i=new DataGridController(Pi);i.setEnterpriseEdition(je);let vt=It!=null&&typeof It=="object"&&It.enabled!==false,st=null;if(vt&&p.debugMode)for(let e of bi){let t=It[e];t===void 0||e==="mode"&&t==="cell"||console.warn(`[datagrid] editing.${e} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);}let Nt=vt?e=>st?.renderCellContent(e)??Po?.(e):Po,$n=vt?e=>{let t=st?.getCellClassName(e),o=Go?.(e);return t&&o?`${t} ${o}`:t??o}:Go,Uo=vt?e=>{Fo?.(e),st?.onCellDoubleClick(e);}:Fo;Oe!=null&&i.focusRow(Oe);let G=m(In(p));G.style.height="100%",G.setAttribute("role","grid"),G.setAttribute("aria-label",p.ariaLabel??p.gridId),G.setAttribute("data-grid-id",p.gridId),isRtlLocale(R)&&G.setAttribute("dir","rtl"),h&&G.setAttribute("data-theme",h),q&&G.setAttribute("data-auto-header-height",""),G.style.setProperty("--dg-row-height",`${i.getRowHeight()}px`);let V=m("kanuni-datagrid-scroller"),se=m("kanuni-datagrid-canvas"),ie=m("kanuni-datagrid-header");ie.setAttribute("role","row");let we=m("kanuni-datagrid-rows");we.style.position="relative";let Y=m("kanuni-datagrid-viewport");we.appendChild(Y);let Ie=m("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--top"),Xe=m("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--bottom"),ut=()=>_.length+i.getPinnedRows("top").length,Yo=()=>ee.length+i.getPinnedRows("bottom").length,ke=m("kanuni-datagrid-sticky-groups");ke.setAttribute("aria-hidden","true");let Ne=X,Be=oe==="top",he=m(`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${Be?"top":"bottom"}`);if(he.setAttribute("role","row"),he.setAttribute("aria-label",C.columnTotalsAria),x){let e=t=>{let n=t.target?.closest(".kanuni-datagrid-footer-cell")?.getAttribute("data-column-id");!n||isChromeColumn(n)||(t.preventDefault(),pr(n,{left:t.clientX,top:t.clientY}));};he.addEventListener("click",e),he.addEventListener("contextmenu",e);}let tn=m("kanuni-datagrid-bands-host");tn.style.display="contents";let Je=m("kanuni-datagrid-filter-row");Je.setAttribute("role","row"),se.append(tn,ie),be&&se.append(Je);let ct=be?2:1,On=0,Bn=()=>On+ct+ut();he.style.setProperty("--dg-pinned-gap",String(Be?ct:0)),Ie.style.setProperty("--dg-pinned-gap",String(ct+(Ne&&Be?1:0))),Ne&&Be&&se.append(he),ut()>0&&se.append(Ie),i.hasStickyGroupHeaders()&&(ke.style.setProperty("--dg-pinned-gap",String(ct+(Ne&&Be?1:0))),ke.style.setProperty("--dg-sticky-below",`${ut()>0?ut()*i.getRowHeight()+1:0}px`),se.append(ke)),se.append(we),Yo()>0&&se.append(Xe),Ne&&!Be&&se.append(he),V.appendChild(se);let Qe=m("kanuni-datagrid-toolbar"),He=m("kanuni-datagrid-pager");He.setAttribute("role","navigation"),He.setAttribute("aria-label",C.pagerAria);let pt=m("kanuni-datagrid-filter-panel"),gt=!!Se.grouping?.panel,ve=m("kanuni-datagrid-group-panel"),Ht=resolveCardView(Q),Pt=false,nn=[],Ze=I,Gt=m("kanuni-datagrid-cardbar");Gt.hidden=true;let jo=m("kanuni-datagrid-cardbar-label","label"),Xo=m("","span");Xo.textContent=C.cardSortBy;let Pe=m("kanuni-datagrid-cardbar-select","select"),ft=m("kanuni-datagrid-cardbar-dir","button");ft.type="button",jo.append(Xo,Pe),Gt.append(jo,ft),Pe.addEventListener("change",()=>{let e=i.getSort()[0];i.setSort(Pe.value?[{columnId:Pe.value,direction:e?.direction??"asc"}]:[]);}),ft.addEventListener("click",()=>{let e=i.getSort()[0];e&&i.setSort([{columnId:e.columnId,direction:e.direction==="desc"?"asc":"desc"}]);});let Gi=e=>{let[t,...o]=cardFields(i.getColumnModel(),nn,e.row),n=m("kanuni-datagrid-card");n.setAttribute("role","gridcell");let a=m("kanuni-datagrid-card-title");if(a.textContent=t?.text??"",n.appendChild(a),o.length){let r=m("kanuni-datagrid-card-fields","dl");for(let d of o){let l=m("kanuni-datagrid-card-field"),s=m("","dt");s.textContent=d.label;let c=m("","dd");c.textContent=d.text,l.append(s,c),r.appendChild(l);}n.appendChild(r);}return n},Jo=()=>{if(!Pt||!Ht)return;let e=i.getColumnModel(),t=cardColumnIds(e,Ht);t.join("\0")!==nn.join("\0")&&(nn=t,i.setDataRowHeight(cardHeight(t.length)));let o=Wo?e.getOrder().filter(d=>e.getState(d)?.visible!==false&&e.getDef(d)?.sortable!==false):[];Gt.hidden=o.length===0;let n=["",...o].join("\0");if(Pe.dataset.ids!==n){Pe.dataset.ids=n,Pe.replaceChildren();let d=document.createElement("option");d.value="",d.textContent=C.none,Pe.appendChild(d);for(let l of o){let s=document.createElement("option");s.value=l,s.textContent=e.getDef(l)?.headerName??l,Pe.appendChild(s);}}let a=i.getSort()[0];Pe.value=a?.columnId??"",ft.hidden=!a;let r=a?.direction==="desc";ft.textContent=r?"\u2193":"\u2191",ft.setAttribute("aria-label",r?C.sortAsc:C.sortDesc),ft.title=r?C.sortAsc:C.sortDesc;},Qo=false,Ki=e=>{let t=showsCards(e,Ht);if(t!==Pt){for(Pt=t,G.classList.toggle("kanuni-datagrid-cards",t),Ze=t?Gi:I,nn=[],t?Jo():(Gt.hidden=true,i.setDataRowHeight(null));We.length;)We.pop().root.remove();mn(),Qo?Z?.(t):queueMicrotask(()=>Z?.(t));}};_o&&G.appendChild(Qe),gt&&G.appendChild(ve),Ht&&G.appendChild(Gt),G.appendChild(V),Ye&&G.appendChild(pt);let on=Se.pagination;on&&on.enabled!==false&&G.appendChild(He);let Kt=m("kanuni-datagrid-loading-overlay"),Zo=m("kanuni-datagrid-loading-card"),ea=m("kanuni-datagrid-loading-spinner","span");ea.setAttribute("aria-hidden","true");let ta=m("kanuni-datagrid-loading-label","span");ta.textContent=Hi,Zo.append(ea,ta),Kt.appendChild(Zo),Kt.style.display="none";let Ft=m("kanuni-datagrid-sr-only","div");Ft.setAttribute("role","status"),Ft.setAttribute("aria-live","polite"),Ft.setAttribute("aria-atomic","true");let an=m("kanuni-datagrid-empty");an.textContent=Ni,an.style.display="none",G.append(Kt,an),ue&&G.appendChild(Ft),u.appendChild(G);let $t=Se.selection,Vn=i.getGroupDisplay()!=="fullWidth",na=i.getGroupDisplay()==="column",Et=($t?.mode??"none")!=="none"&&($t?.checkboxColumn??false),Fi=($t?.rowClick??(Et?"toggle":"replace"))==="toggle",xt=i.hasMasterDetail()&&!!Bo,_n=()=>(A?1:0)+(xt?1:0)+(Et?1:0),Wn=A?Xt:0,oa=Wn+(xt?Jt:0),Ge=(A?Xt:0)+(xt?Jt:0)+(Et?Nn:0);i.setLeadWidth(Ge);let Ot=!!te?.enabled,Bt=te?.group??null,aa=te?.allowReordering??true,ia=te?.allowDropInsert??Bt!==null,Ve=null,rn=null,ln=false,mt=null,et=null;function Rt(e){mt=e;for(let t of Y.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 ra=(e,t)=>{let o=t.getBoundingClientRect();return e.clientY<o.top+o.height/2?"before":"after"},la=e=>e.dataTransfer?.types.includes(Hn)?Ve!==null?aa:ia&&Bt!==null:false;function da(e,t,o){let n=null;try{let a=e.dataTransfer?.getData(Hn);n=a?JSON.parse(a):null;}catch{n=null;}if(n){if(n.gridId===i.gridId){if(!aa)return;if(te?.onReorder){te.onReorder({dragKey:n.rowKey,targetKey:t,position:o,row:i.getRowByKey(n.rowKey)});return}i.moveRow(n.rowKey,t,o);return}!ia||Bt===null||n.group!==Bt||te?.onAdd?.({row:n.row,rowKey:n.rowKey,otherGridId:n.gridId,targetKey:t,position:o});}}let $i=e=>{let t=nt(e);if(!t||t.node.kind!=="data"||!e.dataTransfer)return;Ve=t.node.key,rn=t.node.key,ln=false;let o={gridId:i.gridId,group:Bt,rowKey:t.node.key,row:t.node.data};e.dataTransfer.setData(Hn,JSON.stringify(o)),e.dataTransfer.setData("text/plain",String(t.node.key)),e.dataTransfer.effectAllowed="move",i.notifyRowDrag("enter",{rowKey:t.node.key});},Oi=e=>{if(!la(e))return;e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move");let t=nt(e);if(!t||t.node.kind!=="data")return;if(Ve===t.node.key){et=null,Rt(null);return}let o=e.target.closest(".kanuni-datagrid-row"),n=ra(e,o),a=mt?.key!==t.node.key||mt.side!==n;et={key:t.node.key,side:n},Rt({key:t.node.key,side:n}),a&&Ve!==null&&i.notifyRowDrag("move",{rowKey:Ve,overKey:t.node.key,position:n});},Bi=e=>{if(!la(e)){Rt(null);return}e.preventDefault();let t=nt(e);if(ln=true,t&&t.node.kind==="data"){let o=e.target.closest(".kanuni-datagrid-row"),n=ra(e,o);et={key:t.node.key,side:n},da(e,t.node.key,n);}else et=null,da(e,null,"after");Ve=null,Rt(null);},Vi=()=>{rn!==null&&i.notifyRowDragEnd({rowKey:rn,dropped:ln,overKey:et?.key??null,position:et?.side??null}),ln=false,rn=null,Ve=null,et=null,Rt(null);},_i=e=>{let t=e.relatedTarget;t&&we.contains(t)||Ve!==null&&(et=null,Rt(null),i.notifyRowDrag("leave",{rowKey:Ve}));},Vt=Zt===void 0||Zt===false?null:(()=>{let e=Zt===true?{}:Zt;return {always:e.always??false,maxRows:e.maxRows??vi}})(),Tt=false;function qn(e){Tt!==e&&(Tt=e,G.classList.toggle("kanuni-datagrid-print",e),e?(kt++,document.documentElement.classList.add("kanuni-datagrid-printing")):(kt--,kt<=0&&(kt=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),mn());}let sa=null;if(Vt&&!Vt.always){let e=()=>{let o=i.getRows().length;if(o>Vt.maxRows){i.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${o} rows exceeds maxRows (${Vt.maxRows}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}qn(true);},t=()=>qn(false);window.addEventListener("beforeprint",e),window.addEventListener("afterprint",t),sa=()=>{window.removeEventListener("beforeprint",e),window.removeEventListener("afterprint",t);};}let _e=0,Ke=[],Ee=0,zn=0;function Un(){let e=i.getColumnLayout(),t=i.getVirtualWindow().columns,o=[],n=(r,d,l,s)=>{let c=r.def;o.push({def:c,id:r.state.id,width:r.state.width,pinned:d,inset:l,className:ki(c.align,c.dataType)+(d?" kanuni-datagrid-cell--pinned":"")+(c.autoHeight?" kanuni-datagrid-cell--wrap":""),visualIndex:s});};e.left.forEach((r,d)=>n(r,"left",e.leftOffsets[d]+Ge,d));for(let r=t.start;r<t.end&&r<e.center.length;r++)n(e.center[r],null,0,e.left.length+r);e.right.forEach((r,d)=>n(r,"right",e.rightOffsets[d],e.left.length+e.center.length+d)),Ke=o,Ee=t.offsetX;let a=(e.centerOffsets[Math.min(t.end,e.center.length)]??0)-(e.centerOffsets[Math.min(t.start,e.center.length)]??0);zn=Math.max(0,e.centerWidth-t.offsetX-a),se.style.minWidth=`${e.totalWidth+Ge}px`;}let dn=26;function Wi(){let e=i.getColumnLayout(),t=i.getVirtualWindow().columns,o=[...e.left,...e.center.slice(t.start,Math.min(t.end,e.center.length)),...e.right],n=bandDepth(o);if(On=n,tn.textContent="",ie.style.top=`${n*dn}px`,G.style.setProperty("--dg-band-offset",`${n*dn}px`),n===0)return;computeHeaderBands(o,n).forEach((r,d)=>{let l=m("kanuni-datagrid-band-row");if(l.style.top=`${d*dn}px`,l.style.height=`${dn}px`,Ge>0){let s=m("kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned");s.style.width=`${Ge}px`,s.style.flex="none",s.style.insetInlineStart="0px",l.appendChild(s);}if(Ee>0){let s=m("kanuni-datagrid-spacer");s.style.width=`${Ee}px`,s.style.flex="none",l.appendChild(s);}for(let s of r){let c=m(`kanuni-datagrid-band-cell${s.spacer?" kanuni-datagrid-band-cell--spacer":""}`);if(c.style.width=`${s.width}px`,c.style.flex="none",!s.spacer){if(s.columnIds.length>0){let b=bandPath(i.getColumnModel().getDef(s.columnIds[0])).slice(0,d+1);if(b.length===d+1&&i.isBandCollapsible(b)){let L=i.isBandCollapsed(b),E=document.createElement("button");E.type="button",E.className="kanuni-datagrid-band-toggle",E.setAttribute("aria-expanded",String(!L));let S=L?C.expandColumnGroup:C.collapseColumnGroup;E.setAttribute("aria-label",S),E.title=S,E.appendChild(Nl(L)),E.addEventListener("click",F=>{F.stopPropagation(),i.toggleBand(b);}),c.appendChild(E);}}let y=m("kanuni-datagrid-band-label","span");y.textContent=s.label,c.appendChild(y);}l.appendChild(c);}tn.appendChild(l);});}let St=null,sn=null;function un(e,t){sn&&sn!==e&&sn.classList.remove("kanuni-datagrid-header-cell--drop-before","kanuni-datagrid-header-cell--drop-after"),sn=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 ua(){if(!St)return;let e=i.getSelectedCount(),t=i.getSelectableCount(),o=t>0&&e>=t;St.checked=o,St.indeterminate=!o&&e>0,St.disabled=t===0&&e===0;}let _t=null;function ca(e){_t=e;for(let t of Array.from(ie.querySelectorAll(".kanuni-datagrid-header-cell[data-column-id]")))t.tabIndex=t.getAttribute("data-column-id")===e?0:-1;}function Yn(){Wi();let e=document.activeElement,t=e&&ie.contains(e)?e.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null,o=i.getColumnLayout(),n=[...o.left,...o.center,...o.right].map(l=>l.state.id);(!_t||!n.includes(_t))&&(_t=n[0]??null);let a=i.getSort(),r=new Map(a.map((l,s)=>[l.columnId,{direction:l.direction,order:s}]));if(ie.textContent="",St=null,A){let l=m("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell");l.setAttribute("role","columnheader"),l.style.width=`${Xt}px`,l.style.flex="none",l.style.insetInlineStart="0px",ie.appendChild(l);}if(xt){let l=m("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell");l.setAttribute("role","columnheader"),l.setAttribute("aria-label",C.detailsAria),l.style.width=`${Jt}px`,l.style.flex="none",l.style.insetInlineStart=`${Wn}px`,ie.appendChild(l);}if(Et){let l=m("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell");l.setAttribute("role","columnheader"),l.style.width=`${Nn}px`,l.style.flex="none",l.style.insetInlineStart=`${oa}px`;let s=document.createElement("input");s.type="checkbox",s.setAttribute("aria-label",C.selectAllRows),s.addEventListener("change",()=>{i.getSelectedCount()>0?i.clearSelection():i.selectAll();}),l.appendChild(s),ie.appendChild(l),St=s,ua();}let d=false;for(let l of Ke){if(!l.pinned&&!d){if(Ee>0){let w=document.createElement("div");w.style.flex=`0 0 ${Ee}px`,ie.appendChild(w);}d=true;}let s=Wo&&l.def.sortable!==false,c=l.id===GROUP_COLUMN_ID,y=r.get(c?i.getGroupLevels()[0]??l.id:l.id),b=m(`kanuni-datagrid-header-cell${s?" kanuni-datagrid-header-cell--sortable":""}${l.pinned?" kanuni-datagrid-header-cell--pinned":""}${l.def.wrapHeaderText?" kanuni-datagrid-header-cell--wrap":""}`);b.setAttribute("role","columnheader"),b.setAttribute("data-column-id",l.id),b.tabIndex=l.id===_t?0:-1,b.addEventListener("focus",()=>ca(l.id)),b.setAttribute("aria-sort",y?y.direction==="asc"?"ascending":"descending":"none");let L=l.def.headerTooltip;L&&(b.title=L),b.style.width=`${l.width}px`,b.style.flex="none",l.pinned==="left"&&(b.style.insetInlineStart=`${l.inset}px`),l.pinned==="right"&&(b.style.insetInlineEnd=`${l.inset}px`);let E=m("kanuni-datagrid-header-label","span");E.id=`${encodeURIComponent(p.gridId)}-hdr-${encodeURIComponent(l.id)}`,b.setAttribute("aria-labelledby",E.id);let S=Ei?.(l.id);if(S)E.appendChild(S);else if(l.def.renderHeader){let w=l.def.renderHeader({column:l.def});typeof w=="string"?E.textContent=w:E.appendChild(w);}else E.textContent=l.def.headerName??l.id;if(b.appendChild(E),y){let w=m("kanuni-datagrid-sort-indicator","span");if(w.setAttribute("aria-hidden","true"),w.textContent=y.direction==="asc"?"\u25B2":"\u25BC",b.appendChild(w),a.length>1&&!c){let P=m("kanuni-datagrid-sort-order","span");P.setAttribute("aria-hidden","true"),P.textContent=String(y.order+1),b.appendChild(P);}}if(s||$o){let w=l.id;b.addEventListener("click",P=>{$o?.(w,P)||s&&i.toggleSort(w,P.shiftKey);});}let F=ce!==false&&!isChromeColumn(l.id);if(F){let w=l.id;b.addEventListener("contextmenu",P=>{P.preventDefault(),Aa(w,{left:P.clientX,top:P.clientY});});}let f=null;if(z&&l.def.filterable!==false){f=document.createElement("button"),f.type="button",f.tabIndex=-1;let w=i.getColumnFilter(l.id)!==null;f.className=`kanuni-datagrid-filter-button${w?" kanuni-datagrid-filter-button--active":""}${Ue==="always"?" kanuni-datagrid-filter-button--pinned":""}`,f.setAttribute("aria-haspopup","dialog"),f.setAttribute("aria-label",`${l.def.headerName??l.id} filter`),f.appendChild(Il());let P=f;f.addEventListener("click",K=>{K.stopPropagation(),Sa(l.id,P);}),b.appendChild(f);}if(b.addEventListener("keydown",w=>{let P=n.indexOf(l.id),K;if(w.key==="ArrowRight")K=n[Math.min(n.length-1,P+1)];else if(w.key==="ArrowLeft")K=n[Math.max(0,P-1)];else if(w.key==="Home")K=n[0];else if(w.key==="End")K=n[n.length-1];else if(f&&w.altKey&&w.key==="ArrowDown")Sa(l.id,f);else if(s&&(w.key==="Enter"||w.key===" "))i.toggleSort(l.id,w.shiftKey);else if(F&&(w.key==="ContextMenu"||w.key==="F10"&&w.shiftKey)){let j=b.getBoundingClientRect();Aa(l.id,{left:j.left,top:j.bottom});}else return;w.preventDefault(),w.stopPropagation(),K&&K!==l.id&&(ca(K),oo(K)?.focus());}),de&&l.def.reorderable!==false&&(b.draggable=true,b.addEventListener("dragstart",w=>{w.dataTransfer?.setData("text/x-kanuni-column",l.id),w.dataTransfer&&(w.dataTransfer.effectAllowed="move");}),b.addEventListener("dragover",w=>{if(!w.dataTransfer?.types.includes("text/x-kanuni-column"))return;w.preventDefault();let P=b.getBoundingClientRect(),K=w.clientX<P.left+P.width/2;un(b,K?"before":"after");}),b.addEventListener("dragleave",w=>{let P=w.relatedTarget;(!P||!b.contains(P))&&un(null,"before");}),b.addEventListener("drop",w=>{un(null,"before");let P=w.dataTransfer?.getData("text/x-kanuni-column");if(!P||P===l.id)return;w.preventDefault();let K=b.getBoundingClientRect();if(w.clientX<K.left+K.width/2)i.moveColumn(P,l.id);else {let J=Ke.findIndex(me=>me.id===l.id);i.moveColumn(P,Ke[J+1]?.id);}}),b.addEventListener("dragend",()=>un(null,"before"))),pe&&l.def.resizable!==false){let w=m("kanuni-datagrid-resize-handle","span");w.setAttribute("data-resize-handle",l.id),w.setAttribute("role","presentation"),w.addEventListener("click",P=>P.stopPropagation()),w.addEventListener("dblclick",P=>{P.stopPropagation(),fr(l.id);}),w.addEventListener("pointerdown",P=>{P.preventDefault(),P.stopPropagation();let K=P.clientX,j=l.width,J=getComputedStyle(b).direction==="rtl"?-1:1;b.draggable=false;let me=j,re=false,ze=it=>{re=true,me=j+(it.clientX-K)*J,i.setColumnWidth(l.id,me,false);},Fe=()=>{window.removeEventListener("pointermove",ze),window.removeEventListener("pointerup",Fe),window.removeEventListener("pointercancel",Fe),re&&i.setColumnWidth(l.id,me,true),b.draggable=de&&l.def.reorderable!==false;};window.addEventListener("pointermove",ze),window.addEventListener("pointerup",Fe),window.addEventListener("pointercancel",Fe);}),b.appendChild(w);}ie.appendChild(b);}t&&oo(t)?.focus({preventScroll:true});}let pa=null,cn=null;function qi(e){if(e===pa)return;pa=e;let t=[];for(let o=0;o<e.length;o++){let n=e[o];n&&n.kind!=="data"&&t.push(o);}cn=t.length>0?t:null;}function zi(e){if(!cn)return e+1;let t=0,o=cn.length;for(;t<o;){let n=t+o>>1;cn[n]<=e?t=n+1:o=n;}return e+1-t}let We=[];function pn(e="data"){let t=m("kanuni-datagrid-row");if(t.setAttribute("role","row"),e==="loading"){t.classList.add("kanuni-datagrid-row--loading"),t.setAttribute("aria-busy","true");let c=m("kanuni-datagrid-cell kanuni-datagrid-loading-cell");return c.setAttribute("role","gridcell"),c.setAttribute("aria-colindex","1"),c.appendChild(m("kanuni-datagrid-loading-bar","span")),t.appendChild(c),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:_e}}if(e==="data"&&Vn&&t.addEventListener("click",()=>{if(!t.classList.contains("kanuni-datagrid-group-row--aligned"))return;let c=t.getAttribute("data-group-key");c!==null&&i.toggleGroup(c);}),e==="panel"){let c=document.createElement("div");return c.setAttribute("role","gridcell"),c.setAttribute("aria-colindex","1"),t.appendChild(c),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,panelCell:c,epoch:_e}}if(e==="group"){let c=m("kanuni-datagrid-group-cell");c.setAttribute("role","gridcell"),c.setAttribute("aria-colindex","1");let y=m("kanuni-datagrid-group-twisty","span");y.setAttribute("aria-hidden","true");let b=m("kanuni-datagrid-group-caption","span"),L=m("kanuni-datagrid-group-label","span"),E=m("kanuni-datagrid-group-count","span"),S=m("kanuni-datagrid-group-aggregates","span"),F=null;return Et&&$t?.mode==="multiple"&&(F=document.createElement("input"),F.type="checkbox",F.className="kanuni-datagrid-group-checkbox",F.tabIndex=-1,F.addEventListener("change",()=>{let f=t.getAttribute("data-group-key");f!==null&&i.toggleGroupSelection(f);}),F.addEventListener("click",f=>f.stopPropagation()),F.addEventListener("mousedown",f=>f.stopPropagation()),c.appendChild(F)),c.append(y,b,L,E,S),t.appendChild(c),t.addEventListener("click",()=>{let f=t.getAttribute("data-group-key");f!==null&&i.toggleGroup(f);}),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,group:{cell:c,check:F,twisty:y,caption:b,label:L,count:E,aggregates:S},epoch:_e}}if(Ot){let c=m("kanuni-datagrid-row-grip","span");c.setAttribute("aria-hidden","true"),c.title=C.dragToReorder??"Drag to reorder",c.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>',c.addEventListener("mouseenter",()=>{t.draggable=true;}),c.addEventListener("mouseleave",()=>{t.draggable=false;}),t.appendChild(c);}if(Ze)return {kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:_e};let o=null;A&&(o=m("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=`${Xt}px`,o.style.flex="none",o.style.insetInlineStart="0px",t.appendChild(o));let n=null;if(xt){let c=m("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell");c.setAttribute("role","gridcell"),c.setAttribute("aria-colindex",String((A?1:0)+1)),c.style.width=`${Jt}px`,c.style.flex="none",c.style.insetInlineStart=`${Wn}px`;let y=document.createElement("button");y.type="button",y.className="kanuni-datagrid-detail-toggle",y.tabIndex=-1,y.addEventListener("click",b=>{b.stopPropagation();let L=t.getAttribute("data-row-key");if(L===null)return;let E=i.getRows().find(S=>S!==void 0&&String(S.key)===L);E&&E.kind==="data"&&i.toggleDetail(E.key);}),y.addEventListener("mousedown",b=>b.stopPropagation()),c.appendChild(y),t.appendChild(c),n=y;}let a=null;if(Et){let c=m("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell");c.setAttribute("role","gridcell"),c.setAttribute("aria-colindex",String((A?1:0)+(xt?1:0)+1)),c.style.width=`${Nn}px`,c.style.flex="none",c.style.insetInlineStart=`${oa}px`;let y=document.createElement("input");y.type="checkbox",y.tabIndex=-1;let b=()=>{let L=t.getAttribute("data-row-key");if(L===null)return;let E=i.getRows().find(S=>S!==void 0&&String(S.key)===L);E?.kind==="group"?i.toggleGroupSelection(String(E.key)):E&&i.toggleRow(E.key);};c.addEventListener("mousedown",L=>L.stopPropagation()),c.addEventListener("click",L=>{L.target.tagName!=="INPUT"&&(L.stopPropagation(),b());}),y.addEventListener("change",b),y.addEventListener("click",L=>L.stopPropagation()),y.addEventListener("mousedown",L=>L.stopPropagation()),c.appendChild(y),t.appendChild(c),a=y;}let r=[],d=null,l=false;for(let c of Ke){!c.pinned&&!l&&(d=document.createElement("div"),d.style.flex=`0 0 ${Ee}px`,t.appendChild(d),l=true);let y=m(c.className);y.setAttribute("role","gridcell"),y.setAttribute("data-column-id",c.id),y.style.width=`${c.width}px`,y.style.flex="none",c.pinned==="left"&&(y.style.insetInlineStart=`${c.inset}px`),c.pinned==="right"&&(y.style.insetInlineEnd=`${c.inset}px`),t.appendChild(y),r.push({el:y,slot:c});}let s=document.createElement("div");return s.style.flex=`0 0 ${zn}px`,t.appendChild(s),{kind:e,root:t,cells:r,rowNumberCell:o,selectInput:a,detailToggle:n,leadingSpacer:d,trailingSpacer:s,epoch:_e}}let Lt="";function gn(e,t){if(Lt===""||t===""){e.textContent=t;return}let o=foldText(t),n=o.indexOf(Lt);if(n===-1){e.textContent=t;return}let a=[],r=0;for(;n!==-1;){n>r&&a.push(document.createTextNode(t.slice(r,n)));let d=document.createElement("mark");d.className="kanuni-datagrid-highlight",d.textContent=t.slice(n,n+Lt.length),a.push(d),r=n+Lt.length,n=o.indexOf(Lt,r);}r<t.length&&a.push(document.createTextNode(t.slice(r))),e.replaceChildren(...a);}function ga(e,t,o){let n=i.getColumnModel().getCellValue(o.data,t.id),a=t.def;if(a.renderCell){let d=a.renderCell({value:n,row:o.data,node:o,column:a});typeof d=="string"?e.textContent=d:e.replaceChildren(d);return}let r=lookupLabel(a,n);if(r!==null){gn(e,r);return}if(a.valueFormatter){let d=a.valueFormatter(n,o.data);gn(e,typeof d=="string"?d:String(d??""));return}if(a.dateFormat&&a.dataType==="date"){gn(e,formatDateValue(n,a.dateFormat));return}gn(e,n==null?"":String(n));}function Ui(e,t){return e.kind==="group"&&!t.group}function Yi(e,t,o){let n=t?.lead??null;if(!n||!e.leadingSpacer||o.kind!=="data"){e.leadCell?.remove(),e.leadCell=null;return}let a=i.getColumnLayout(),r=n.column.def,d={def:r,id:n.column.state.id,width:n.width,className:ki(r.align,r.dataType),visualIndex:a.left.length+a.center.indexOf(n.column)},l=e.leadCell??m(d.className);e.leadCell=l,l.className=d.className,l.setAttribute("role","gridcell"),l.setAttribute("data-column-id",d.id),l.setAttribute("aria-colspan",String(t.spans.get(d.id)??1)),l.setAttribute("aria-colindex",String(_n()+d.visualIndex+1)),l.id=`${p.gridId}-cell-${String(o.key)}-${d.id}`,l.style.width=`${n.width}px`,l.style.flex="none",e.leadingSpacer.nextSibling!==l&&e.leadingSpacer.after(l),ga(l,d,o);}function jn(e,t,o){let n=e.root;if(n.setAttribute("aria-rowindex",String(o+1+Bn())),n.setAttribute("data-row-key",String(t.key)),t.kind==="detail"||t.kind==="editform"){let f=e.panelCell,w=t.kind==="detail";n.className=`kanuni-datagrid-row ${w?"kanuni-datagrid-detail-row":"kanuni-datagrid-editform-row"}`,n.style.height=`${t.height}px`,w?(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")),f.className=w?"kanuni-datagrid-detail-cell":"kanuni-datagrid-editform-cell";let P=`${t.kind}:${String(t.key)}`;if(n.getAttribute("data-panel-for")!==P){n.setAttribute("data-panel-for",P);let K=w?Bo?.(t.data):t.parentKey===null?void 0:xi?.(t.parentKey,t.data);f.textContent="",typeof K=="string"?f.textContent=K:K&&f.appendChild(K);}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 a=t.kind==="data"?i.getDataRowHeight():null;n.style.height=fa?"":`${a??i.getRowHeight()}px`;let r=t.kind==="group"&&!e.group?t:null;if(!e.group){n.classList.remove("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned");for(let f of Array.from(n.classList))f.startsWith("kanuni-datagrid-group-row--level-")&&n.classList.remove(f);r?(n.classList.add("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned",`kanuni-datagrid-group-row--level-${r.level}`),n.setAttribute("aria-expanded",String(r.expanded)),n.setAttribute("aria-level",String(r.level+1)),n.setAttribute("data-group-key",String(r.key)),n.setAttribute("data-group-level",String(r.level))):(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",M&&o%2===1);let d=i.isRowSelected(t.key);n.classList.toggle("kanuni-datagrid-row--selected",d),t.kind==="data"&&i.getSelectionMode()!=="none"?n.setAttribute("aria-selected",String(d)):n.removeAttribute("aria-selected");let l=i.getFocus();n.classList.toggle("kanuni-datagrid-row--focused",lt&&l!==null&&l.rowKey===t.key);let s=t.kind==="data"&&!Ui(t,e)?i.planRowColSpans(t,i.getVirtualWindow().columns):null;if(e.leadingSpacer&&(e.leadingSpacer.style.flex=`0 0 ${Math.max(0,Ee-(s?.leadingDelta??0))}px`),e.trailingSpacer&&(e.trailingSpacer.style.flex=`0 0 ${Math.max(0,zn-(s?.trailingDelta??0))}px`),Yi(e,s,t),Ot){let f=mt!==null&&String(mt.key)===String(t.key);n.classList.toggle("kanuni-datagrid-row--drop-before",f&&mt.side==="before"),n.classList.toggle("kanuni-datagrid-row--drop-after",f&&mt.side==="after");}let c=t.kind==="treePath",y=c||r!==null;if(n.classList.toggle("kanuni-datagrid-row--tree-path",c),e.rowNumberCell&&(e.rowNumberCell.textContent=y?"":String(zi(o))),e.detailToggle&&(e.detailToggle.hidden=y),e.selectInput){let f=r!==null&&$t?.mode==="multiple";if(e.selectInput.hidden=c||r!==null&&!f,e.selectInput.classList.toggle("kanuni-datagrid-group-checkbox",f),f){let w=i.getGroupSelectionState(String(r.key));e.selectInput.checked=w==="all",e.selectInput.indeterminate=w==="some",e.selectInput.disabled=false,e.selectInput.setAttribute("aria-label",C.selectGroupAria.replace("{count}",String(r.count)).replace("{group}",r.display??r.label));}else e.selectInput.indeterminate=false,e.selectInput.checked=i.isRowSelected(t.key),e.selectInput.disabled=t.kind==="data"&&!i.isRowSelectable(t.key),e.selectInput.setAttribute("aria-label",C.selectRowAria.replace("{row}",String(t.key)));}if(e.detailToggle&&t.kind==="data"){let f=i.isDetailExpanded(t.key);e.detailToggle.textContent=f?"\u25BE":"\u25B8",e.detailToggle.setAttribute("aria-expanded",String(f)),e.detailToggle.setAttribute("aria-label",f?C.collapseDetails:C.expandDetails);}if(t.kind==="group"&&e.group){let f=t;n.className=`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${f.level}`,n.setAttribute("aria-expanded",String(f.expanded)),n.setAttribute("aria-level",String(f.level+1)),n.setAttribute("data-group-key",String(f.key)),n.setAttribute("data-group-level",String(f.level)),e.group.cell.style.paddingLeft=f.level>0?`${8+f.level*18}px`:"",e.group.twisty.textContent=f.expanded?"\u25BE":"\u25B8";let w=i.getColumnModel().getDef(f.columnId),P=w?.headerName??f.columnId;if(e.group.caption.textContent=`${P}:`,e.group.label.textContent=lookupLabel(w,f.value)??f.display??(f.label===""?C.filterBlank:f.label),e.group.count.textContent=`(${f.count})`,e.group.check){let j=i.getGroupSelectionState(String(f.key));e.group.check.checked=j==="all",e.group.check.indeterminate=j==="some",e.group.check.setAttribute("aria-label",C.selectGroupAria.replace("{count}",String(f.count)).replace("{group}",e.group.label.textContent??""));}e.group.aggregates.textContent="";let K=f.aggregates??null;if(K)for(let j of i.getSummaryDefs()){let J=m("kanuni-datagrid-group-aggregate","span"),me=m("kanuni-datagrid-group-aggregate-label","span"),re=i.getColumnModel().getDef(j.columnId);me.textContent=`${summaryLabel(j,Fn)} ${re?.headerName??j.columnId}:`,J.append(me,` ${formatSummaryValue(j,K[summaryKey(j.columnId,j.type)],re)}`),e.group.aggregates.appendChild(J);}return}if(t.kind!=="data"&&!c&&!r){for(let{el:f}of e.cells)f.textContent="";return}if(Ze&&y){let f=Ot?1:0;for(;n.childNodes.length>f;)n.removeChild(n.lastChild);let w=m("kanuni-datagrid-cell");r?w.appendChild(ma(r)):(w.appendChild(ba(t)),Xn(w,t,t.tree)),n.appendChild(w);return}if(Ze){let f=Ot?1:0,w=Ze({row:t.data,node:t,rowIndex:o,selected:i.isRowSelected(t.key),focused:lt&&l!==null&&l.rowKey===t.key});if(w instanceof Node&&n.childNodes.length===f+1&&n.childNodes[f]===w)return;for(;n.childNodes.length>f;)n.removeChild(n.lastChild);typeof w=="string"?n.appendChild(document.createTextNode(w)):w&&n.appendChild(w);return}let b=l!==null&&l.rowKey===t.key?l.columnId:null,L=r?void 0:t.tree,E=r&&na?GROUP_COLUMN_ID:L||r?(()=>{let f=i.getColumnLayout();return (f.left[0]??f.center[0]??f.right[0])?.state.id??null})():null,S=L?E:null,F=i.hasCellSpans();for(let{el:f,slot:w}of e.cells){f.style.display=s?.covered.has(w.id)?"none":"",f.style.width=`${s?.widths.get(w.id)??w.width}px`;let P=s?.spans.get(w.id);P?f.setAttribute("aria-colspan",String(P)):f.removeAttribute("aria-colspan");let K=(Nt||$n)&&!y?{node:t,columnId:w.id,rowIndex:o,columnIndex:w.visualIndex,value:i.getColumnModel().getCellValue(t.data,w.id)}:null,j=Nt&&r&&w.id!==E?{node:t,columnId:w.id,rowIndex:o,columnIndex:w.visualIndex,value:void 0}:null,J=K&&Nt?Nt(K):j?Nt(j):void 0,me=false;if(J!==void 0?J instanceof Node&&f.childNodes.length===1&&f.firstChild===J?me=true:typeof J=="string"?f.textContent=J:f.replaceChildren(J):r?w.id===E?f.replaceChildren(ma(r)):f.replaceChildren(...Qi(r,w.id)):c?w.id===S?(f.replaceChildren(ba(t)),Xn(f,t,L)):f.replaceChildren():(ga(f,w,t),L&&w.id===S&&Xn(f,t,L)),F&&!me){let ne=Xi(o,w.id);f.classList.toggle("kanuni-datagrid-cell--span",ne?.kind==="draw"),f.classList.toggle("kanuni-datagrid-cell--span-covered",ne?.kind==="covered");let H=J!==void 0;if(ne?.kind==="covered"&&b!==w.id&&!H)f.replaceChildren();else if(ne?.kind==="draw"){let W=m("kanuni-datagrid-span-box");W.style.height=`${ne.height}px`,W.append(...Array.from(f.childNodes)),f.appendChild(W);}}else F||f.classList.remove("kanuni-datagrid-cell--span","kanuni-datagrid-cell--span-covered");if(dt){let ne=!y&&!!Jn(t.key,w.id,t.data);f.classList.toggle("kanuni-datagrid-cell--noted",ne);}f.id=`${p.gridId}-cell-${String(t.key)}-${w.id}`,f.setAttribute("aria-colindex",String(_n()+w.visualIndex+1)),f.classList.toggle("kanuni-datagrid-cell--focused",b===w.id);let re=t.kind==="data"?i.getFindMatchKind(t.key,w.id):null;f.classList.toggle("kanuni-datagrid-cell--find-match",re!==null),f.classList.toggle("kanuni-datagrid-cell--find-active",re==="active");let ze=f.getAttribute("data-slot-classes");if(ze)for(let ne of ze.split(" "))f.classList.remove(ne);let Fe=K&&$n?$n(K):void 0,it=w.def.cellClassName,rt=[y?void 0:typeof it=="function"?it({value:i.getColumnModel().getCellValue(t.data,w.id),row:t.data,node:t,column:w.def}):it,Fe].filter(Boolean).join(" ")||void 0;if(rt){for(let ne of rt.split(" "))f.classList.add(ne);f.setAttribute("data-slot-classes",rt);}else ze&&f.removeAttribute("data-slot-classes");}}let fa=p.columns.some(e=>e.autoHeight);function ji(){if(!fa)return;let e=i.getVirtualWindow(),t=i.getRows(),o=new Map(i.getMeasuredRowHeights()),n=false;for(let a=e.rows.start;a<e.rows.end&&a<t.length;a++){let r=t[a];if(!r||r.kind!=="data")continue;let d=a-e.rows.start,l=We[d]?.root;if(!l)continue;let s=l.getBoundingClientRect().height;s>0&&o.get(r.key)!==s&&(o.set(r.key,s),n=true);}n&&i.setMeasuredRowHeights(o);}let fn={start:0,end:0};function Xi(e,t){let o=i.getCellSpans(t);if(o.length===0)return null;let n=spanRoleAt(o,e,fn.start,fn.end);if(!n)return null;if(n.role==="covered")return {kind:"covered"};let a=i.getRowOffset(n.drawStart);return {kind:"draw",height:i.getRowOffset(n.drawEnd)+i.getRowHeightAt(n.drawEnd)-a}}function Ji(e,t){let o=i.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 a=e.firstElementChild;if(!o)a.replaceChildren(m("kanuni-datagrid-loading-bar","span"));else {let r=m("kanuni-datagrid-load-failed-text","span");r.textContent=C.rowsLoadFailed;let d=document.createElement("button");d.className="kanuni-datagrid-retry-button",d.type="button",d.setAttribute("data-retry-load",""),d.textContent=C.retryLoad,d.addEventListener("click",()=>i.retryFailedLoads()),a.replaceChildren(r,d);}}function ma(e){let t=m("kanuni-datagrid-group-inline","span");t.style.paddingInlineStart=`${e.level*16}px`;let o=m("kanuni-datagrid-group-twisty","span");o.setAttribute("aria-hidden","true"),o.textContent=e.expanded?"\u25BE":"\u25B8";let n=i.getColumnModel().getDef(e.columnId),a=m("kanuni-datagrid-group-caption","span");a.textContent=`${n?.headerName??e.columnId}:`;let r=m("kanuni-datagrid-group-label","span");r.textContent=lookupLabel(n,e.value)??e.display??(e.label===""?C.filterBlank:e.label);let d=m("kanuni-datagrid-group-count","span");return d.textContent=`(${e.count})`,na?t.append(o,r,d):t.append(o,a,r,d),t}function Qi(e,t){if(!e.aggregates)return [];let o=i.getSummaryDefs().find(a=>a.columnId===t);if(!o)return [];let n=m("kanuni-datagrid-group-aggregate-value","span");return n.textContent=formatSummaryValue(o,e.aggregates[summaryKey(o.columnId,o.type)],i.getColumnModel().getDef(t)),[n]}function ba(e){let t=m("kanuni-datagrid-tree-path-label","span");return t.textContent=e.label,t}function Xn(e,t,o){let n=m(`kanuni-datagrid-tree-cell${o.ancestorOnly?" kanuni-datagrid-tree-cell--ancestor":""}`,"span");if(n.style.paddingInlineStart=`${o.depth*16}px`,o.hasChildren){let a=document.createElement("button");a.type="button",a.className="kanuni-datagrid-tree-toggle",a.setAttribute("data-tree-toggle",""),a.setAttribute("aria-expanded",String(o.expanded)),a.setAttribute("aria-label",o.expanded?C.collapseTreeRow:C.expandTreeRow),a.textContent=o.expanded?"\u25BE":"\u25B8",a.addEventListener("mousedown",r=>r.stopPropagation()),a.addEventListener("click",r=>{r.stopPropagation(),i.toggleTreeRow(t.key);}),n.appendChild(a);}else n.appendChild(m("kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf","span"));n.append(...Array.from(e.childNodes)),e.appendChild(n);}let Jn=(e,t,o)=>dt?dt.get({rowKey:e,columnId:t,row:o})??null:null,wa=null,tt=Gn?m("kanuni-datagrid-overlay"):null;tt&&(tt.style.position="absolute",tt.style.inset="0",tt.style.pointerEvents="none",we.appendChild(tt));function Zi(){if(!Gn||!tt)return;let e=Gn();e!==wa&&(wa=e,e?tt.replaceChildren(e):tt.replaceChildren());}function er(e){let t=i.getColumnLayout(),o=Array.from(Xe.children);G.setAttribute("aria-rowcount",String(Bn()+e+o.length)),G.setAttribute("aria-colcount",String(_n()+t.left.length+t.center.length+t.right.length)),i.getSelectionMode()==="multiple"?G.setAttribute("aria-multiselectable","true"):G.removeAttribute("aria-multiselectable"),o.forEach((n,a)=>n.setAttribute("aria-rowindex",String(Bn()+e+a+1)));}function mn(){Zi(),Pt&&Jo();let e=i.getVirtualWindow(),t=i.getRows(),o=Tt?{...e,rows:{...e.rows,start:0,end:t.length,offsetY:0,totalHeight:0}}:e;qi(t),er(t.length),we.style.height=`${o.rows.totalHeight}px`,Y.style.transform=`translateY(${o.rows.offsetY}px)`,Lt=i.getFindNeedle()||(Ti?normalizeSearch(i.getSearchText()):"");let n=Math.max(0,Math.min(o.rows.end,t.length)-o.rows.start);for(fn.start=o.rows.start,fn.end=Math.min(o.rows.end,t.length)-1;We.length>n;)We.pop().root.remove();for(let a=0;a<n;a++){let r=o.rows.start+a,d=t[r];if(!d){let c=We[a];if(!c||c.kind!=="loading"){let y=pn("loading");c?Y.replaceChild(y.root,c.root):Y.appendChild(y.root),We[a]=y,c=y;}c.root.setAttribute("aria-rowindex",String(r+2)),c.root.style.height=`${i.getDataRowHeight()??i.getRowHeight()}px`,Ji(c.root,r);continue}let l=d.kind==="data"?"data":d.kind==="group"?Vn?"data":"group":d.kind==="detail"||d.kind==="editform"?"panel":"stub",s=We[a];if(!s||s.epoch!==_e||s.kind!==l){let c=pn(l);s?Y.replaceChild(c.root,s.root):Y.appendChild(c.root),We[a]=c,s=c;}jn(s,d,r);}ji(),ha();}let bn=[];function ha(){if(!i.hasStickyGroupHeaders())return;let e=Tt?[]:i.getStickyGroupRows();for(ke.style.width=`${i.getColumnLayout().totalWidth}px`;bn.length>e.length;)bn.pop().wrap.remove();let t=Vn?"data":"group";e.forEach((o,n)=>{let a=bn[n];if(!a||a.rs.epoch!==_e||a.rs.kind!==t){let r=pn(t),d=a?.wrap??m("kanuni-datagrid-sticky-group");d.textContent="",d.appendChild(r.root),a||ke.appendChild(d),a={wrap:d,rs:r},bn[n]=a;}jn(a.rs,o.node,o.index),a.rs.root.removeAttribute("aria-rowindex"),a.wrap.style.top=`${o.offset}px`,a.wrap.style.height=`${o.height}px`,a.wrap.style.zIndex=String(e.length-n),a.wrap.classList.toggle("kanuni-datagrid-sticky-group--last",n===e.length-1),a.wrap.querySelectorAll("button, input, select, textarea, a[href], [tabindex]").forEach(r=>r.setAttribute("tabindex","-1"));});}ke.addEventListener("click",e=>{let o=e.target.closest("[data-group-key]")?.getAttribute("data-group-key");o&&i.scrollToRow(o);});let wn=createDebouncedCommit(Ri??(i.isRemote()?200:0));function ya(e,t,o,n){let a=i.getColumnModel().getDef(t);if(!a?.renderFilter)return ()=>{};let r=()=>o==="row"?i.getColumnFilter(t,FILTER_PART_ROW):i.getColumnFilter(t,FILTER_PART_SET)??i.getColumnFilter(t,FILTER_PART_DEFAULT),d=new Set,l=i.events.on("filterChanged",()=>{let c=r();d.forEach(y=>y(c));}),s=a.renderFilter(e,{columnId:t,column:a,surface:o,getValue:r,setValue:c=>i.setColumnFilter(t,c,o==="row"?FILTER_PART_ROW:FILTER_PART_SET),close:n,onValueChange:c=>(d.add(c),()=>d.delete(c))});return ()=>{l(),d.clear(),typeof s=="function"&&s();}}let Wt=[],qt=new Map,Qn=false;function tr(){!be||Qn||Je.querySelectorAll("select[data-filter-operator-for]").forEach(e=>{let t=e.getAttribute("data-filter-operator-for");if(wn.isPending(t))return;let o=i.getColumnModel().getDef(t),n=i.getColumnFilter(t,FILTER_PART_ROW),a=qt.get(t)??"",r=e.parentElement?.querySelector("input.kanuni-datagrid-filter-input"),d=a;if(n){let l=customFilterInputFromNode(n,o);d=l?.operatorId??"",l&&r&&(r.value=l.text);}else findCustomFilterOperator(o,a)?.operandType==="none"&&(d="");qt.set(t,d),e.value=d,r&&(r.disabled=findCustomFilterOperator(o,d)?.operandType==="none");});}function Zn(){if(!be)return;if(Wt.forEach(n=>n()),Wt=[],Je.textContent="",Ge>0){let n=m("kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned");n.setAttribute("role","gridcell"),n.style.width=`${Ge}px`,n.style.flex="none",n.style.insetInlineStart="0px",Je.appendChild(n);}let e=false,t=null,o=()=>{if(!t){t=document.createElement("datalist"),t.id=`${p.gridId}-filter-periods`;for(let n of periodSuggestionList(zo)){let a=document.createElement("option");a.value=n,t.appendChild(a);}Je.appendChild(t);}return t.id};for(let n of Ke){if(!n.pinned&&!e){if(Ee>0){let d=m("kanuni-datagrid-spacer");d.style.width=`${Ee}px`,d.style.flex="none",Je.appendChild(d);}e=true;}let a=m(`kanuni-datagrid-filter-cell${n.pinned?" kanuni-datagrid-filter-cell--pinned":""}`);a.setAttribute("role","gridcell"),a.style.width=`${n.width}px`,a.style.flex="none",n.pinned==="left"&&(a.style.insetInlineStart=`${n.inset}px`),n.pinned==="right"&&(a.style.insetInlineEnd=`${n.inset}px`);let r=n.def.renderFilter;if(n.def.filterable!==false&&r){let d=m("kanuni-datagrid-filter-custom");d.setAttribute("data-filter-for",n.id),a.appendChild(d),Wt.push(ya(d,n.id,"row",()=>{}));}else if(n.def.filterable!==false){let d=document.createElement("input");d.className="kanuni-datagrid-filter-input",d.setAttribute("aria-label",`${n.def.headerName??n.id} filter`),d.setAttribute("data-filter-for",n.id);let l=customFilterOperators(n.def),s=()=>findCustomFilterOperator(n.def,qt.get(n.id)??"");n.def.dataType==="date"&&!s()&&d.setAttribute("list",o());let c=()=>{let b=s();Qn=true;try{i.setColumnFilter(n.id,b?parseCustomFilterInput(n.id,d.value,b):parseFilterInput(n.id,d.value,n.def.dataType,zo),FILTER_PART_ROW);}finally{Qn=false;}};if(l.length>0){let b=document.createElement("select");b.className="kanuni-datagrid-filter-operator",b.setAttribute("aria-label",fillText(C.filterOperatorAria,{column:n.def.headerName??n.id})),b.setAttribute("data-filter-operator-for",n.id);let L=[["",C.filterOperatorDefault],...l.map(S=>[S.id,S.label])];for(let[S,F]of L){let f=document.createElement("option");f.value=S,f.textContent=F,b.appendChild(f);}let E=customFilterInputFromNode(i.getColumnFilter(n.id,FILTER_PART_ROW),n.def);E&&(qt.set(n.id,E.operatorId),d.value=E.text),b.value=s()?.id??"",d.disabled=s()?.operandType==="none",b.addEventListener("change",()=>{qt.set(n.id,b.value),d.disabled=s()?.operandType==="none",s()?d.removeAttribute("list"):n.def.dataType==="date"&&d.setAttribute("list",o()),wn.cancel(n.id),c();}),a.appendChild(b);}d.addEventListener("input",()=>wn.schedule(n.id,c));let y=()=>{wn.cancel(n.id),c();};d.addEventListener("keydown",b=>{b.key==="Enter"&&y();}),d.addEventListener("blur",y),a.appendChild(d);}Je.appendChild(a);}}let eo=()=>{};function nr(){if(!_o)return;let e=document.createElement("input");e.type="search",e.className="kanuni-datagrid-toolbar-search",e.placeholder=C.toolbarSearch,e.setAttribute("aria-label",C.toolbarSearch);let t=null;e.addEventListener("input",()=>{t&&clearTimeout(t),t=setTimeout(()=>i.setSearchText(e.value),Di);});let o=m("kanuni-datagrid-toolbar-spacer"),n=null;if($){let c=document.createElement("button");c.type="button",c.textContent=C.toolbarColumns??"Columns",c.setAttribute("aria-haspopup","dialog"),c.addEventListener("click",()=>{let y=c.getBoundingClientRect();Ma({left:y.left,top:y.bottom+2});}),n=c;}let a=je&&Ai,r=je&&Mi,d=document.createElement("button");d.type="button",d.className="kanuni-datagrid-toolbar-icon-button",d.setAttribute("aria-haspopup","menu"),d.setAttribute("aria-label",C.exportMenu),d.setAttribute("data-testid","dg-export-menu"),d.title=C.exportMenu,d.appendChild(Dl());let l=null;d.addEventListener("click",()=>{if(l)return;let c=d.getBoundingClientRect();qe({left:c.right-190,top:c.bottom+2},y=>{y.setAttribute("role","menu"),y.setAttribute("aria-label",C.exportMenu);let b=[{kind:"csv",label:C.exportCsv,testId:"dg-export-csv",on:i.canExportAll()},{kind:"excel",label:C.exportExcel,testId:"dg-export-excel",on:a},{kind:"excel-selected",label:C.exportExcelSelected,testId:"dg-export-excel-selected",on:a},{kind:"pdf",label:C.exportPdf,testId:"dg-export-pdf",on:r}];for(let L of b){if(!L.on)continue;let E=document.createElement("button");E.type="button",E.className="kanuni-datagrid-menu-item",E.setAttribute("role","menuitem"),E.setAttribute("data-testid",L.testId),E.textContent=L.label,L.kind==="excel-selected"&&i.getSelectedCount()===0&&(E.disabled=true),E.addEventListener("click",()=>{l=L.kind,d.disabled=true,ye(),ko(i,L.kind).then(S=>{l=null,d.disabled=false,S.error&&eo(S.error);});}),y.appendChild(E);}},"kanuni-datagrid-filter-popup kanuni-datagrid-export-menu");});for(let c of Li??[])Qe.append(c);Qe.append(e,o),n&&Qe.append(n),(i.canExportAll()||a||r)&&Qe.append(d);for(let c of Si??[])Qe.append(c);let s=m("kanuni-datagrid-toolbar-error","span");s.setAttribute("role","alert"),s.style.display="none",Qe.append(s),eo=c=>{s.textContent=c,s.style.display="";};}function Ca(){if(!He.isConnected)return;let e=i.getPage(),t=i.getPageCount(),o=document.activeElement,n=o instanceof HTMLElement&&He.contains(o)?o.getAttribute("data-pager"):null;He.textContent="";let a=(s,c,y,b,L)=>{let E=document.createElement("button");return E.type="button",E.textContent=s,E.setAttribute("aria-label",c),E.setAttribute("data-pager",L),E.disabled=y,E.addEventListener("click",b),E},r=m("kanuni-datagrid-pager-buttons"),d=e<=0,l=e>=t-1;if(r.append(a("\xAB",C.pagerFirst??"First",d,()=>i.setPage(0),"first"),a("\u2039",C.pagerPrevious??"Previous",d,()=>i.setPage(e-1),"previous")),on?.pageButtons)for(let s of pageButtonItems(e,t,on.maxPageButtons)){if(typeof s!="number"){let b=m("kanuni-datagrid-pager-gap","span");b.textContent="\u2026",b.setAttribute("aria-hidden","true"),r.append(b);continue}let c=String(s+1),y=a(c,C.pagerPageButton.replace("{n}",c),false,()=>i.setPage(s),`page-${s}`);y.classList.add("kanuni-datagrid-pager-page"),s===e&&y.setAttribute("aria-current","page"),r.append(y);}else {let s=m("kanuni-datagrid-pager-current","span");s.textContent=`${e+1} / ${t}`,r.append(s);}if(r.append(a("\u203A",C.pagerNext??"Next",l,()=>i.setPage(e+1),"next"),a("\xBB",C.pagerLast??"Last",l,()=>i.setPage(t-1),"last")),He.appendChild(r),n!==null){let s=He.querySelector(`[data-pager="${n}"]`);(s&&!s.disabled?s:He.querySelector('[aria-current="page"]')??He.querySelector("button:not(:disabled)"))?.focus();}}function to(){if(!Ne)return;let e=i.getColumnLayout(),t=i.getSummaries(),o=new Map(i.getSummaryDefs().map(a=>[a.columnId,a]));if(he.textContent="",he.style.width=`${e.totalWidth+Ge}px`,Ge>0){let a=m("kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned");a.style.width=`${Ge}px`,a.style.insetInlineStart="0px",he.appendChild(a);}let n=false;for(let a of Ke){if(!a.pinned&&!n){if(Ee>0){let s=m("kanuni-datagrid-spacer");s.style.width=`${Ee}px`,he.appendChild(s);}n=true;}let r=o.get(a.id),d=a.def.dataType==="number"||a.def.dataType==="bigint",l=m(`kanuni-datagrid-footer-cell${a.pinned?" kanuni-datagrid-footer-cell--pinned":""}${d?" kanuni-datagrid-footer-cell--number":""}${r?" kanuni-datagrid-footer-cell--active":""}`);if(l.setAttribute("role","gridcell"),l.setAttribute("data-column-id",a.id),l.setAttribute("data-summary-type",r?.type??""),l.style.width=`${a.width}px`,a.pinned==="left"&&(l.style.insetInlineStart=`${a.inset}px`),a.pinned==="right"&&(l.style.insetInlineEnd=`${a.inset}px`),r){l.title=`${summaryLabel(r,Fn)} \u2014 ${a.def.headerName??a.id}`;let s=m("kanuni-datagrid-footer-value","span");s.textContent=formatSummaryValue(r,t[summaryKey(r.columnId,r.type)],a.def),l.appendChild(s);}else {let s=m("kanuni-datagrid-footer-hint","span");s.textContent=x&&!isChromeColumn(a.id)?"\xB7":"",l.appendChild(s);}he.appendChild(l);}}function or(){ut()>0?Ie.isConnected||se.insertBefore(Ie,ke.isConnected?ke:we):Ie.remove(),Yo()>0?Xe.isConnected||se.insertBefore(Xe,we.nextSibling):Xe.remove(),ke.style.setProperty("--dg-sticky-below",`${ut()>0?ut()*i.getRowHeight()+1:0}px`);}function hn(){let e=Ze;Ze=I;try{ar();}finally{Ze=e;}}function ar(){let e=(t,o,n,a)=>{t.textContent="",o.forEach((r,d)=>{let l=pn("data");jn(l,{kind:"data",key:`__pinned-${n}-${d}`,sourceIndex:-1,data:r},d),l.root.classList.remove("kanuni-datagrid-row--odd"),l.root.setAttribute("aria-rowindex",String(On+ct+d+1)),l.root.removeAttribute("aria-selected"),l.rowNumberCell&&(l.rowNumberCell.textContent="");let s=a[d-(o.length-a.length)];s!==void 0?l.root.setAttribute("data-pinned-row-key",String(s)):l.root.removeAttribute("data-pinned-row-key"),t.appendChild(l.root);});};for(let[t,o,n]of [["top",Ie,_],["bottom",Xe,ee]]){let a=i.getPinnedRows(t);if(n.length+a.length===0){o.textContent="";continue}e(o,[...n,...a.map(r=>r.row)],t,a.map(r=>r.key));}}let yn=e=>{let t=e.target.closest("[data-pinned-row-key]");if(!t)return;let o=t.getAttribute("data-pinned-row-key"),n=i.getPinnedRowKeys(),a=[...n.top,...n.bottom].find(s=>String(s)===o);if(a===void 0)return;let r=ka(a,false);if(r.length===0)return;e.preventDefault();let d=i.getPinnedRows(i.getRowPinSide(a)??"top").find(s=>s.key===a)?.row,l={row:d,node:{kind:"data",key:a,sourceIndex:-1,data:d},rowIndex:-1,columnId:e.target.closest("[data-column-id]")?.getAttribute("data-column-id")??null,selectedKeys:i.getSelectedKeys()};qe({left:e.clientX,top:e.clientY},s=>{s.setAttribute("role","menu"),kn(s,r,l);},"kanuni-datagrid-context-menu");};Ie.addEventListener("contextmenu",yn),Xe.addEventListener("contextmenu",yn);function ka(e,t){if(!i.isRowPinningEnabled()||!i.canPinRow(e))return [];let o=i.getRowPinSide(e),n=[];return o!=="top"&&n.push({id:"__dg-pin-top",label:C.pinRowTop,onSelect:()=>i.pinRow(e,"top")}),o!=="bottom"&&n.push({id:"__dg-pin-bottom",label:C.pinRowBottom,onSelect:()=>i.pinRow(e,"bottom")}),o&&n.push({id:"__dg-unpin",label:C.unpinRow,onSelect:()=>i.pinRow(e,null)}),t&&n.length>0?[{id:"__dg-sep-pin",separator:true},...n]:n}let bt=null,zt=null,no=null;function ye(e=true){zt?.(),zt=null,bt?.remove(),bt=null;let t=no;no=null,e&&t?.();}function oo(e){return ie.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${CSS.escape(e)}"]`)}function va(e,t){e.addEventListener("keydown",o=>{let n=Array.from(e.querySelectorAll('[role="menuitem"]:not(:disabled)'));if(n.length===0)return;let a=n.indexOf(document.activeElement),r=n[a],d;switch(o.key){case "ArrowDown":d=n[(a+1)%n.length];break;case "ArrowUp":d=n[a<=0?n.length-1:a-1];break;case "Home":d=n[0];break;case "End":d=n[n.length-1];break;case "ArrowRight":case "Enter":case " ":if(r?.getAttribute("aria-haspopup")!=="menu")return;r.click(),d=bt?.querySelector('.kanuni-datagrid-submenu [role="menuitem"]:not(:disabled)')??void 0;break;case "ArrowLeft":if(!t)return;t();break;case "Tab":ye();break;default:return}o.preventDefault(),o.stopPropagation(),d?.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 qe(e,t,o="kanuni-datagrid-filter-popup"){ye(false);let n=document.activeElement instanceof HTMLElement?document.activeElement:null,a=n&&ie.contains(n)?n.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null;bt=m(`${In(p)} kanuni-datagrid-portal`);let r=m(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),document.body.appendChild(bt),Ea(r,e),no=()=>{(n?.isConnected?n:a?oo(a):null)?.focus({preventScroll:true});},r.getAttribute("role")==="menu"&&(va(r),r.querySelector('[role="menuitem"]:not(:disabled)')?.focus({preventScroll:true}));let d=bt,l=c=>{d.contains(c.target)||ye(false);},s=c=>{c.key==="Escape"&&ye();};document.addEventListener("pointerdown",l,true),document.addEventListener("keydown",s,true),zt=()=>{document.removeEventListener("pointerdown",l,true),document.removeEventListener("keydown",s,true);};}let wt=25,xa=8,Ra=new Map,Ta=0;function Sa(e,t){let o=t.getBoundingClientRect(),n=++Ta;if(i.getColumnModel().getDef(e)?.renderFilter){let a=null,r=null;qe({left:o.left,top:o.bottom+2},s=>{r=s,s.classList.add("kanuni-datagrid-filter-popup--custom"),s.setAttribute("role","dialog"),s.setAttribute("aria-label",`${i.getColumnModel().getDef(e)?.headerName??e} filter`),s.setAttribute("data-column-id",e),s.tabIndex=-1,a=ya(s,e,"popup",()=>ye());});let d=r;d&&(d.querySelector('input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])')??d).focus({preventScroll:true});let l=zt;zt=()=>{l?.(),a?.(),a=null;};return}qe({left:o.left,top:o.bottom+2},a=>{a.setAttribute("role","dialog"),a.setAttribute("aria-label",`${i.getColumnModel().getDef(e)?.headerName??e} filter`);let r=[],d=true,l=new Set,s=false,c=0,y="",b=[],L=null,E="",S=[],F=document.createElement("input");F.type="search",F.className="kanuni-datagrid-filter-search",F.placeholder=C.search,F.setAttribute("data-testid","dg-filter-search");let f=m("kanuni-datagrid-filter-actions"),w=document.createElement("button");w.type="button",w.textContent=C.filterSelectAll,w.addEventListener("click",()=>{s=true,l=new Set(r.map(H=>H.label)),re();});let P=document.createElement("button");P.type="button",P.textContent=C.clear,P.addEventListener("click",()=>{s=true,l=new Set,re();}),f.append(w,P);let K=m("kanuni-datagrid-filter-list");K.setAttribute("role","listbox"),K.setAttribute("aria-multiselectable","true");let j=document.createElement("div");j.style.position="relative";let J=document.createElement("div");j.appendChild(J),K.appendChild(j);let me=()=>{let H=foldText(y.trim());if(!H){b=r;return}L||(L=r.map(W=>foldText(W.label))),b=E!==""&&H.includes(E)?S.filter(W=>foldText(W.label).includes(H)):r.filter((W,le)=>L[le].includes(H)),E=H,S=b;},re=()=>{if(K.setAttribute("aria-busy",String(d)),K.setAttribute("aria-setsize",String(b.length)),d){j.style.height="",J.textContent="";let Ae=m("kanuni-datagrid-filter-empty");Ae.textContent=C.filterLoading,J.appendChild(Ae);return}if(b.length===0){j.style.height="",J.style.transform="",J.textContent="";let Ae=m("kanuni-datagrid-filter-empty");Ae.textContent=C.filterNoMatch,J.appendChild(Ae);return}let H=K.clientHeight||240,W=Math.max(0,Math.floor(K.scrollTop/wt)-xa),le=Math.ceil(H/wt)+xa*2,Le=Math.min(W,Math.max(0,b.length-1)),xr=Math.min(b.length,Le+le);j.style.height=`${b.length*wt}px`,J.style.transform=`translateY(${Le*wt}px)`,J.textContent="";for(let Ae=Le;Ae<xr;Ae++){let Mt=b[Ae],$e=m("kanuni-datagrid-filter-item");$e.setAttribute("role","option"),$e.setAttribute("aria-selected",String(l.has(Mt.label))),$e.tabIndex=0,$e.setAttribute("data-value",Mt.label),$e.setAttribute("data-index",String(Ae)),Ae===c&&$e.classList.add("kanuni-datagrid-filter-item--active");let Ut=document.createElement("input");Ut.type="checkbox",Ut.readOnly=true,Ut.checked=l.has(Mt.label),Ut.tabIndex=-1;let ri=document.createElement("span");ri.textContent=Mt.label===""?C.filterBlank:Mt.label,$e.append(Ut,ri),$e.addEventListener("click",()=>ze(Mt.label)),$e.addEventListener("focus",()=>{c=Ae;}),J.appendChild($e);}},ze=H=>{s=true,l.has(H)?l.delete(H):l.add(H);for(let W of J.querySelectorAll(".kanuni-datagrid-filter-item")){if(W.getAttribute("data-value")!==H)continue;W.setAttribute("aria-selected",String(l.has(H)));let le=W.querySelector("input");le&&(le.checked=l.has(H));}};K.addEventListener("scroll",()=>{Ra.set(e,K.scrollTop),re();}),F.addEventListener("input",()=>{y=F.value,c=0,me(),re();});let Fe=H=>{if(b.length===0)return;c=Math.max(0,Math.min(b.length-1,H));let W=c*wt,le=K.clientHeight||240;W<K.scrollTop?K.scrollTop=W:W+wt>K.scrollTop+le&&(K.scrollTop=W+wt-le),re(),a.querySelector(`.kanuni-datagrid-filter-item[data-index="${c}"]`)?.focus();},it=()=>{if(d)return;let H;if(l.size===r.length)H=null;else {let W=l.has(""),le=r.filter(Le=>Le.label!==""&&l.has(Le.label));le.length===0?H=W?{columnId:e,operator:"isnull"}:null:W?H={logic:"or",nodes:[{columnId:e,operator:"in",value:le.map(Le=>Le.value)},{columnId:e,operator:"isnull"}]}:H={columnId:e,operator:"in",value:le.map(Le=>Le.value)};}i.setColumnFilter(e,H,FILTER_PART_SET),ye();};a.tabIndex=-1,a.addEventListener("keydown",H=>{let W=H.target===F;if(H.key==="Backspace"&&!W){H.preventDefault(),F.focus(),y=y.slice(0,-1),F.value=y,c=0,me(),re();return}if(H.key==="ArrowDown"){H.preventDefault(),Fe(W?0:c+1);return}if(H.key==="ArrowUp"){H.preventDefault(),Fe(W?b.length-1:c-1);return}if(!W&&(H.key==="Home"||H.key==="End")){H.preventDefault(),Fe(H.key==="Home"?0:b.length-1);return}if(H.key===" "&&!W){H.preventDefault();let le=b[c];le&&ze(le.label);return}if(H.key==="Enter"){H.preventDefault(),it();return}!W&&H.key.length===1&&H.key!==" "&&!H.ctrlKey&&!H.metaKey&&!H.altKey&&(H.preventDefault(),F.focus(),y+=H.key,F.value=y,c=0,me(),re());});let yo=m("kanuni-datagrid-filter-footer"),rt=document.createElement("button");rt.type="button",rt.textContent=C.cancel,rt.addEventListener("click",()=>ye());let ne=document.createElement("button");ne.type="button",ne.className="kanuni-datagrid-filter-primary",ne.setAttribute("data-testid","dg-filter-apply"),ne.textContent=C.apply,ne.disabled=true,ne.addEventListener("click",it),yo.append(rt,ne),a.append(F,f,K,yo),re(),queueMicrotask(()=>{F.isConnected&&F.focus();}),i.getDistinctValueSetAsync(e).then(H=>{if(Ta!==n||!a.isConnected)return;r=H.entries,L=null,E="",d=false,ne.disabled=false;let W=selectedLabelsFromFilter(i.getColumnFilter(e,FILTER_PART_SET)??i.getColumnFilter(e,FILTER_PART_DEFAULT),r);W?(s=true,l=new Set(W)):s||(l=new Set(r.map(Le=>Le.label))),me();let le=Ra.get(e);re(),le&&(K.scrollTop=le,re());});});}function Cn(e={}){let t=i.getClipboardText(e);i.notifyClipboardGesture("copy",t?t.split(`
|
|
2
|
-
`).length:0,()=>i.writeClipboard(t,"copy"));}function ir(e){if(B===false)return [];let t=B===true?{}:B,o=[],n=r=>{e&&o.length===0&&o.push({separator:true,id:"__dg-sep"}),o.push(r);};t.copy!==false&&n({id:"__dg-copy",label:C.menuCopy,shortcut:`${lr}C`,onSelect:()=>Cn()}),t.copyWithHeaders!==false&&n({id:"__dg-copy-headers",label:C.menuCopyWithHeaders,onSelect:()=>Cn({includeHeaders:true})}),t.copyWithGroupHeaders!==false&&rr()&&n({id:"__dg-copy-group-headers",label:C.menuCopyWithGroupHeaders,onSelect:()=>Cn({includeGroupHeaders:true})});let a=(t.export===false?[]:Array.isArray(t.export)?t.export:["csv","excel","excel-selected","pdf"]).filter(r=>r!=="csv"||i.canExportAll());if(a.length>0){let r=i.getSelectedCount()===0,d={csv:C.exportCsv,excel:C.exportExcel,"excel-selected":C.exportExcelSelected,pdf:C.exportPdf};n({id:"__dg-export",label:C.menuExport,items:a.map(l=>({id:`__dg-export-${l}`,label:d[l],disabled:l==="excel-selected"&&r,onSelect:()=>{ko(i,l).then(s=>{s.error&&eo(s.error);});}}))});}return o}function rr(){let e=i.getColumnModel();return i.getVisualColumnIds().some(t=>{let o=e.getDef(t)?.band;return typeof o=="string"?o!=="":Array.isArray(o)&&o.length>0})}let lr=/Mac|iPhone|iPad|iPod/.test(navigator.platform??"")?"\u2318":"Ctrl+";function kn(e,t,o){let n=null,a=()=>{n?.remove(),n=null;};t.forEach((r,d)=>{if(r.separator){let b=m("kanuni-datagrid-menu-separator");b.setAttribute("role","separator"),e.appendChild(b);return}let l=m("kanuni-datagrid-menu-row"),s=document.createElement("button");if(s.type="button",s.className="kanuni-datagrid-menu-item",s.setAttribute("role","menuitem"),s.setAttribute("data-item-index",String(d)),r.disabled&&(s.disabled=true),r.icon!==void 0){let b=m("kanuni-datagrid-menu-icon","span");typeof r.icon=="string"?b.textContent=r.icon:b.appendChild(r.icon),s.appendChild(b);}let c=m("kanuni-datagrid-menu-label","span");if(c.textContent=r.label??"",s.appendChild(c),r.shortcut){let b=m("kanuni-datagrid-menu-shortcut","span");b.textContent=r.shortcut,s.appendChild(b);}let y=r.items??[];if(y.length>0){let b=m("kanuni-datagrid-menu-caret","span");b.textContent="\u203A",s.appendChild(b),s.setAttribute("aria-haspopup","menu"),s.setAttribute("aria-expanded","false");let L=()=>{a();let E=m("kanuni-datagrid-context-menu kanuni-datagrid-submenu");E.setAttribute("role","menu");let S=s.getBoundingClientRect();E.style.left=`${S.right}px`,E.style.top=`${Math.max(0,S.top-4)}px`;for(let F of y){if(F.separator){let P=m("kanuni-datagrid-menu-separator");P.setAttribute("role","separator"),E.appendChild(P);continue}let f=document.createElement("button");f.type="button",f.className="kanuni-datagrid-menu-item",f.setAttribute("role","menuitem"),F.disabled&&(f.disabled=true);let w=m("kanuni-datagrid-menu-label","span");w.textContent=F.label??"",f.appendChild(w),f.addEventListener("click",()=>{F.onSelect?.(o),ye();}),E.appendChild(f);}e.parentElement?.appendChild(E),Ea(E,{left:S.right,top:Math.max(0,S.top-4)}),n=E,s.setAttribute("aria-expanded","true"),va(E,()=>{a(),s.setAttribute("aria-expanded","false"),s.focus();});};s.addEventListener("mouseenter",L),s.addEventListener("click",L);}else s.addEventListener("mouseenter",a),s.addEventListener("click",()=>{r.onSelect?.(o),ye();});l.appendChild(s),e.appendChild(l);});}let La=e=>{let o=e.target.closest(".kanuni-datagrid-row");if(!o||o.classList.contains("kanuni-datagrid-group-row"))return;let n=nt(e);if(n?.columnId&&i.notifyCell("cellContextMenu",n.node,n.rowIndex,n.columnId),!U&&!B&&!i.isRowPinningEnabled()||!n||n.node.kind!=="data")return;e.preventDefault(),i.isRowSelected(n.node.key)||i.handleRowClick(n.node.key,{}),n.columnId&&i.focusCell(n.node.key,n.columnId);let a={row:n.node.data,node:n.node,rowIndex:n.rowIndex,columnId:n.columnId,selectedKeys:i.getSelectedKeys()},r=(typeof U=="function"?U(a):U)??[],d=[...r,...dr(a,r.length>0)],l=[...d,...ka(n.node.key,d.length>0)],s=ir(l.length>0);l.length===0&&s.length===0||qe({left:e.clientX,top:e.clientY},c=>{c.setAttribute("role","menu"),kn(c,[...l,...s],a);},"kanuni-datagrid-context-menu");};function dr(e,t){if(!dt?.onChange||dt.menu===false)return [];let o=e.columnId;if(!o)return [];let n=e.node.key,a=Jn(n,o,e.row),r=[];return t&&r.push({separator:true,id:"__note-sep"}),r.push({id:"__note-edit",label:a?C.editNote:C.addNote,onSelect:()=>sr(n,o,e.row,a??"")}),a&&r.push({id:"__note-delete",label:C.deleteNote,onSelect:()=>dt.onChange?.({rowKey:n,columnId:o,row:e.row,text:null})}),r}function sr(e,t,o,n){let r=(G.querySelector(`[data-row-key="${CSS.escape(String(e))}"] [data-column-id="${CSS.escape(t)}"]`)??G).getBoundingClientRect();queueMicrotask(()=>{qe({left:r.left,top:r.bottom+2},d=>{d.setAttribute("aria-label",C.noteEditorAria);let l=document.createElement("textarea");l.className="kanuni-datagrid-note-input",l.rows=4,l.value=n,l.setAttribute("aria-label",C.noteEditorAria),l.placeholder=C.notePlaceholder,l.setAttribute("data-testid","dg-note-input");let s=()=>{let L=l.value.trim();ye(),dt?.onChange?.({rowKey:e,columnId:t,row:o,text:L===""?null:L});};l.addEventListener("keydown",L=>{L.key==="Enter"&&(L.ctrlKey||L.metaKey)&&(L.preventDefault(),s()),L.key==="Escape"&&(L.preventDefault(),ye());});let c=m("kanuni-datagrid-note-actions"),y=document.createElement("button");y.type="button",y.className="kanuni-datagrid-note-cancel",y.textContent=C.cancel,y.addEventListener("click",()=>ye());let b=document.createElement("button");b.type="button",b.className="kanuni-datagrid-note-save",b.setAttribute("data-testid","dg-note-save"),b.textContent=C.save,b.addEventListener("click",s),c.append(y,b),d.append(l,c),queueMicrotask(()=>{l.focus(),l.select();});},"kanuni-datagrid-filter-popup kanuni-datagrid-note-editor");});}function ur(e){gt!==e&&(gt=e,e?(G.insertBefore(ve,V),ro()):ve.remove());}function cr(e){if(Ne!==e){if(Ne=e,e){if(Be){let t=Ie.isConnected?Ie:ke.isConnected?ke:we;se.insertBefore(he,t);}else se.append(he);to();}else he.remove();Ie.style.setProperty("--dg-pinned-gap",String(ct+(Ne&&Be?1:0))),ke.style.setProperty("--dg-pinned-gap",String(ct+(Ne&&Be?1:0)));}}function ao(e){let t=vo(G,e);t!==null&&i.setColumnWidth(e,t);}function Aa(e,t){let o=i.getColumnModel().getDef(e),n={columnId:e,headerName:o?.headerName??e},a=Co(n,{controller:i,t:C,groupPanelVisible:gt,footerVisible:Ne,onToggleGroupPanel:()=>ur(!gt),onToggleFooter:()=>cr(!Ne),onOpenFieldChooser:()=>Ma(t),onBestFit:ao,onBestFitAll:()=>{for(let d of i.getColumnStates())d.visible&&!d.flex&&ao(d.id);},maxGroupLevels:je?Number.POSITIVE_INFINITY:1}),r=typeof ce=="function"?ce(n,a):a;r.length!==0&&qe(t,d=>{d.setAttribute("role","menu"),kn(d,r,n);},"kanuni-datagrid-context-menu");}function pr(e,t){let o=i.getColumnModel().getDef(e),n=i.getColumnSummary(e),a={columnId:e,headerName:o?.headerName??o?.field??e},r=[{id:"none",label:C.noTotal,disabled:n===null,onSelect:()=>i.setColumnSummary(e,null)},{id:"sep",separator:true},...allowedSummaryTypes(o?.dataType).map(d=>({id:d,label:Fn[d],disabled:n?.type===d,onSelect:()=>i.setColumnSummary(e,d)}))];qe(t,d=>{d.setAttribute("role","menu"),kn(d,r,a);},"kanuni-datagrid-context-menu");}function Ma(e){qe(e,t=>{let o=m("kanuni-datagrid-filter-list");for(let n of i.getColumnStates()){let a=document.createElement("label");a.className="kanuni-datagrid-filter-item";let r=document.createElement("input");r.type="checkbox",r.checked=n.visible,r.addEventListener("change",()=>{i.setColumnVisible(n.id,r.checked);});let d=document.createElement("span"),l=i.getColumnModel().getDef(n.id);d.textContent=l?.headerName??n.id,a.append(r,d),o.appendChild(a);}t.appendChild(o);},"kanuni-datagrid-filter-popup kanuni-datagrid-column-chooser");}let ht=null,io=null,vn=e=>{ve.classList.toggle("kanuni-datagrid-group-panel--over",e);};function Da(e,t,o){let n=i.getGroupLevels();if(e===t)return;let a=n.filter(l=>l!==e),r=a.indexOf(t);if(r<0)return;let d=o==="before"?r:r+1;io=e,i.groupBy([...a.slice(0,d),e,...a.slice(d)]);}function Ia(e,t){let o=i.getGroupLevels(),n=o.indexOf(e),a=n+t;n<0||a<0||a>=o.length||Da(e,o[a],t===-1?"before":"after");}function Na(e,t){if(!e)return;let o=i.getGroupLevels();if(o.includes(e))return;let n=je?Number.POSITIVE_INFINITY:1;if(o.length>=n){i.groupBy([...o.slice(0,n-1),e]);return}let a=t??o.length;i.groupBy([...o.slice(0,a),e,...o.slice(a)]);}function ro(){if(!gt)return;ve.textContent="";let e=i.getGroupLevels();if(e.length===0){let s=m("kanuni-datagrid-group-panel-hint","span");s.textContent=C.groupPanelHint??"Drag a column header here to group by it",ve.appendChild(s);return}let t=s=>i.getColumnModel().getDef(s)?.headerName??s,o=m("kanuni-datagrid-group-levels"),n=(s,c)=>s<c.top+c.height/2?"before":"after",a=(s,c)=>{for(let y of ve.querySelectorAll(".kanuni-datagrid-group-level"))y.classList.remove("kanuni-datagrid-group-level--drop-before","kanuni-datagrid-group-level--drop-after");s&&c&&s.classList.add(`kanuni-datagrid-group-level--drop-${c}`);};e.forEach((s,c)=>{let y=m("kanuni-datagrid-group-level");y.style.setProperty("--dg-group-level",String(c)),y.setAttribute("data-group-level",String(c));let b=m("kanuni-datagrid-group-chip");if(b.setAttribute("role","button"),b.tabIndex=0,e.length>1&&(b.draggable=true),b.setAttribute("aria-label",`${fillText(C.groupLevelAria,{n:c+1})}: ${t(s)}`),b.addEventListener("dragstart",S=>{ht=s,S.dataTransfer&&(S.dataTransfer.effectAllowed="move",S.dataTransfer.setData("text/x-kanuni-column",s));}),b.addEventListener("dragend",()=>{ht=null,a(null,null);}),b.addEventListener("keydown",S=>{let F=S.ctrlKey||S.metaKey;F&&(S.key==="ArrowUp"||S.key==="ArrowLeft")?(S.preventDefault(),Ia(s,-1)):F&&(S.key==="ArrowDown"||S.key==="ArrowRight")?(S.preventDefault(),Ia(s,1)):(S.key==="Delete"||S.key==="Backspace")&&(S.preventDefault(),i.groupBy(e.filter(f=>f!==s)));}),y.addEventListener("dragover",S=>{!ht&&!(S.dataTransfer?.types.includes("text/x-kanuni-column")??false)||(S.preventDefault(),S.stopPropagation(),a(y,n(S.clientY,y.getBoundingClientRect())));}),y.addEventListener("drop",S=>{S.preventDefault(),S.stopPropagation();let F=n(S.clientY,y.getBoundingClientRect());a(null,null),vn(false);let f=ht;if(ht=null,f){Da(f,s,F);return}let w=S.dataTransfer?.getData("text/x-kanuni-column");w&&Na(w,F==="before"?c:c+1);}),e.length>1){let S=m("kanuni-datagrid-group-chip-level","span");S.textContent=String(c+1),b.appendChild(S);}let L=document.createElement("span");L.textContent=t(s);let E=document.createElement("button");E.type="button",E.setAttribute("aria-label",fillText(C.groupRemoveAria,{column:t(s)})),E.textContent="\xD7",E.addEventListener("click",()=>{i.groupBy(e.filter(S=>S!==s));}),E.draggable=false,b.append(L,E),y.appendChild(b),o.appendChild(y),io===s&&(io=null,queueMicrotask(()=>b.focus()));}),ve.appendChild(o);let r=m("kanuni-datagrid-group-panel-actions"),d=document.createElement("button");d.type="button",d.textContent=C.groupExpandAll,d.addEventListener("click",()=>i.expandAllGroups());let l=document.createElement("button");l.type="button",l.textContent=C.groupCollapseAll,l.addEventListener("click",()=>i.collapseAllGroups()),r.append(d,l),ve.appendChild(r);}if(gt){let e=t=>t.dataTransfer?.types.includes("text/x-kanuni-column")??false;ve.addEventListener("dragover",t=>{e(t)&&(t.preventDefault(),vn(true));}),ve.addEventListener("dragleave",t=>{let o=t.relatedTarget;o&&ve.contains(o)||vn(false);}),ve.addEventListener("drop",t=>{vn(false);let o=t.dataTransfer?.getData("text/x-kanuni-column");if(o){if(t.preventDefault(),ht){ht=null;return}Na(o);}});}let Ha="";function Pa(){if(!ue)return;let e=[fillText(C.announceRows,{n:i.getVisibleCount()})],t=i.getSort();if(t.length>0){let a=t.map(r=>{let d=i.getColumnModel().getDef(r.columnId),l=d?.headerName??d?.field??r.columnId,s=r.direction==="desc"?C.announceDescending:C.announceAscending;return `${l} ${s}`}).join(", ");e.push(fillText(C.announceSortedBy,{columns:a}));}let o=i.getSelectedCount();o>0&&e.push(fillText(C.announceSelected,{n:o}));let n=e.join(", ");n!==Ha&&(Ha=n,Ft.textContent=n);}function Ga(){if(!Ye)return;pt.textContent="";let e=describeFilter(i.getEffectiveFilter(),i.getColumnModel(),{...ge,labels:{...filterLabels(C),...ge?.labels}});if(!e&&Ye!=="always"){pt.style.display="none";return}pt.style.display="";let t=i.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=C.filterRemove,o.setAttribute("aria-label",C.filterRemove),o.setAttribute("data-testid","dg-filter-panel-clear"),o.disabled=e===null,o.textContent="\xD7",o.addEventListener("click",()=>{i.setFilter(null),i.clearColumnFilters(),i.setFilterEnabled(true);});let n=document.createElement("input");n.type="checkbox",n.className="kanuni-datagrid-filter-panel-toggle",n.checked=t,n.disabled=e===null,n.title=C.filterToggle,n.setAttribute("aria-label",C.filterToggle),n.setAttribute("data-testid","dg-filter-panel-toggle"),n.addEventListener("change",()=>i.setFilterEnabled(n.checked));let a=m("kanuni-datagrid-filter-panel-text","span");if(a.setAttribute("data-testid","dg-filter-panel-text"),a.textContent=e??C.filterNone,e&&(a.title=e),pt.append(o,n,a),Te){let r=document.createElement("button");r.type="button",r.className="kanuni-datagrid-filter-panel-builder",r.title=C.filterEditBuilder,r.setAttribute("aria-label",C.filterEditBuilder),r.setAttribute("data-testid","dg-filter-panel-builder"),r.textContent="\u25BE",r.addEventListener("click",Te),pt.appendChild(r);}}let lo=new Set,gr=i.events.on("cellsFlashed",({rowKeys:e,columnIds:t,duration:o})=>{let n=e.length?e.map(l=>`[data-row-key="${CSS.escape(String(l))}"]`).join(","):".kanuni-datagrid-row",a=t.length?t.map(l=>`[data-column-id="${CSS.escape(l)}"]`).join(","):"[data-column-id]",r=[];Y.querySelectorAll(n).forEach(l=>{l.querySelectorAll(a).forEach(s=>r.push(s));});for(let l of r)l.classList.remove("kanuni-datagrid-cell--flash");G.offsetWidth;for(let l of r)l.classList.add("kanuni-datagrid-cell--flash");let d=setTimeout(()=>{for(let l of r)l.classList.remove("kanuni-datagrid-cell--flash");lo.delete(d);},o);lo.add(d);});function nt(e){let t=e.target,o=t.closest(".kanuni-datagrid-row");if(!o||!Y.contains(o))return null;let n=o.getAttribute("data-row-key");if(n===null)return null;let a=i.getRows(),r=a.findIndex(l=>l!==void 0&&String(l.key)===n);if(r===-1)return null;let d=t.closest(".kanuni-datagrid-cell")?.getAttribute("data-column-id")??null;return {node:a[r],rowIndex:r,columnId:d}}let Ka=e=>{let t=nt(e);t&&(N?.(t.node),i.notifyRow("rowClicked",t.node,t.rowIndex),t.columnId&&i.notifyCell("cellClicked",t.node,t.rowIndex,t.columnId));},Fa=e=>{let t=nt(e);if(t){if(Uo){let o=fo(t,true);o&&Uo(o);}g?.(t.node),i.notifyRow("rowDoubleClicked",t.node,t.rowIndex),t.columnId&&i.notifyCell("cellDoubleClicked",t.node,t.rowIndex,t.columnId);}};Y.addEventListener("click",Ka),Y.addEventListener("dblclick",Fa);function fr(e){let t=0,o=ie.querySelector(`[data-column-id="${CSS.escape(e)}"]`);o&&(t=o.scrollWidth),Y.querySelectorAll(`[data-column-id="${CSS.escape(e)}"]`).forEach(n=>{n.scrollWidth>t&&(t=n.scrollWidth);}),t>0&&i.setColumnWidth(e,t+12,true);}function mr(){if(Oo)for(let e of ie.querySelectorAll('[role="columnheader"][data-column-id]')){let t=Oo(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 br(){if(z)for(let e of ie.querySelectorAll(".kanuni-datagrid-filter-button")){let t=e.parentElement?.getAttribute("data-column-id");t&&e.classList.toggle("kanuni-datagrid-filter-button--active",i.getColumnFilter(t)!==null);}}let so=false,$a=false,At=null;function En(){At!==null&&(clearTimeout(At),At=null);}function xn(e){Kt.style.display=e?"":"none";}function Rn(){let e=i.getOverlay();if(an.style.display=e==="noRows"?"":"none",Kn===false){En(),xn(false);return}if(!(e==="loading"&&(so||!$a))){En(),xn(false);return}if(so||qo<=0){En(),xn(true);return}At!==null||Kt.style.display===""||(At=setTimeout(()=>{At=null,Ce||xn(true);},qo));}let Oa=false,uo=false,co=false,po=false,Ce=false,go=new RowMotion;function wr(){if(uo=false,!Ce){if(co)co=false,po&&(po=false,_e++),Un(),Yn(),Zn(),hn();else {let e=Ee;Un(),Ee!==e?(_e++,Yn(),Zn(),hn()):i.getPinnedRows("top").length+i.getPinnedRows("bottom").length>0&&hn();}mn(),i.getAnimateRows()&&go.play(Y),ua(),to(),Ca(),br(),mr(),ro(),Ga(),Pa(),Rn();}}function Tn(e){Ce||(e&&(co=true),!uo&&(uo=true,queueMicrotask(wr)));}let hr=[...ae?[i.events.on("focusedRowChanged",e=>ae({rowKey:e.rowKey,row:e.row}))]:[],...Rl.map(e=>i.events.on(e,()=>Tn(true))),...Tl.map(e=>i.events.on(e,()=>{po=true;})),...Sl.map(e=>i.events.on(e,()=>Tn(false))),i.events.on("filterChanged",()=>tr()),...["sortChanged","filterChanged","groupChanged","dataUpdated"].map(e=>i.events.on(e,()=>{i.getAnimateRows()&&go.capture(Y);})),i.events.on("rowPinningChanged",()=>{Ce||(or(),Tn(true));}),i.events.on("overlayChanged",e=>{so=e.manual===true&&e.overlay==="loading",Ce||Rn();}),i.events.on("busyChanged",e=>{$a=e.background===true,Ce||Rn();}),i.events.on("paginationChanged",()=>{Ce||Tn(false);}),i.events.on("bodyScroll",()=>{Ce||ha();}),i.events.on("scrollRequested",e=>{if(Ce)return;e.scrollTop!==void 0&&(V.scrollTop=e.scrollTop),e.scrollLeft!==void 0&&(V.scrollLeft=e.scrollLeft),i.setScroll(V.scrollTop,Math.abs(V.scrollLeft));let t=e.scrollTop;t===void 0||Math.abs(V.scrollTop-t)<=1||setTimeout(()=>{Ce||Math.abs(V.scrollTop-t)<=1||(V.scrollTop=t,i.setScroll(V.scrollTop,Math.abs(V.scrollLeft)));},0);}),...v==="fitGrid"?[i.events.on("gridSizeChanged",()=>i.sizeColumnsToFit())]:[],...v==="fitCells"?[i.events.on("firstDataRendered",()=>{Ce||Oa||(Oa=true,queueMicrotask(()=>{if(!Ce)for(let e of i.getColumnStates())e.visible&&!e.flex&&ao(e.id);}));})]:[]];v==="fitGrid"&&i.sizeColumnsToFit();function fo(e,t=false){if(!e.columnId||e.node.kind!=="data"&&!(t&&e.node.kind==="group"))return null;let o=Ke.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"?i.getColumnModel().getCellValue(e.node.data,o.id):void 0}:null}let Ba=e=>{let t=e.target;if(Ko){let l=nt(e),s=l?fo(l):null;s&&Ko(s,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 a=i.getRows().find(l=>l!==void 0&&String(l.key)===n);if(!a||a.kind!=="data")return;i.handleRowClick(a.key,{ctrlKey:e.ctrlKey||Fi&&!e.shiftKey,metaKey:e.metaKey,shiftKey:e.shiftKey});let r=t.closest(".kanuni-datagrid-cell"),d=r?Ke.find(l=>r.id.endsWith(`-${l.id}`))?.id:void 0;d&&i.focusCell(a.key,d);},Va=e=>{if(!en)return;let o=e.target.closest(".kanuni-datagrid-cell");if(!o||!Y.contains(o)||e.relatedTarget?.closest?.(".kanuni-datagrid-cell")===o)return;let a=nt(e),r=a?fo(a):null;r&&en(r,e);};Y.addEventListener("mousedown",Ba),Y.addEventListener("contextmenu",La),en&&Y.addEventListener("mouseover",Va),Ot&&(we.addEventListener("dragstart",$i),we.addEventListener("dragover",Oi),we.addEventListener("drop",Bi),we.addEventListener("dragend",Vi),we.addEventListener("dragleave",_i)),G.tabIndex=0,vt&&(st=Lo({controller:i,element:G},It,C,{surfaceClass:()=>In(p).replace("kanuni-datagrid-root","").trim()},{isColumnEditable:e=>mi(i.getColumnModel().getDef(e),e)}));let _a=e=>{let t=st;if(!t||Pt)return;let o=e.target;if(!o||!(o===G||o===V||Y.contains(o)))return;let n=o.tagName;n==="INPUT"||n==="TEXTAREA"||n==="SELECT"||o.isContentEditable||t.handleKeyDown(e)&&e.stopImmediatePropagation();};vt&&G.addEventListener("keydown",_a,true);let Wa=e=>{let t=e.target;if(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable||He.contains(t)||Qe.contains(t)||ie.contains(t))return;if((U||B||i.isRowPinningEnabled())&&(e.key==="ContextMenu"||e.key==="F10"&&e.shiftKey)){let r=i.getFocus(),d=r?Y.querySelector(`[id="${CSS.escape(`${p.gridId}-cell-${String(r.rowKey)}-${r.columnId}`)}"]`):null;if(d){let l=d.getBoundingClientRect();d.dispatchEvent(new MouseEvent("contextmenu",{bubbles:true,cancelable:true,clientX:l.left+16,clientY:l.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"){Cn();return}if(o.type==="activate"){if(g){let r=i.getFocus(),d=r?i.getRows().find(l=>l!==void 0&&l.key===r.rowKey):void 0;d&&g(d);}o.preventDefault&&e.preventDefault();return}i.executeCommand(o),o.preventDefault&&e.preventDefault();let n=i.getFocusIndices();if(n){let d=i.getColumnLayout().center.findIndex(s=>s.state.id===i.getFocus()?.columnId),l=i.ensureVisible(n.rowIndex,d===-1?void 0:d);l&&(l.scrollTop!==void 0&&(V.scrollTop=l.scrollTop),l.scrollLeft!==void 0&&(V.scrollLeft=l.scrollLeft),i.setScroll(V.scrollTop,Math.abs(V.scrollLeft)));}let a=i.getFocus();G.setAttribute("aria-activedescendant",a?`${p.gridId}-cell-${String(a.rowKey)}-${a.columnId}`:"");};G.addEventListener("keydown",Wa);let yr=Vo?attachStateStoring(i,Vo):null,qa=typeof De=="object"?De.delay??400:400,za=De!==false&&!(typeof De=="object"&&De.enabled===false),Cr=typeof De=="object"?De.showOnTruncation!==false:true,Ua=typeof De=="object"?De.trigger??"hover":"hover",Ya=za&&Ua!=="focus",mo=za&&Ua!=="hover",Sn=typeof De=="object"&&De.interactive===true,ja=`${p.gridId}-tooltip`,yt=null,xe=null,Re=null,Ct=null,bo=null;function ot(){xe&&clearTimeout(xe),xe=null,Ct=null,wo();}function wo(){Re&&clearTimeout(Re),Re=null,bo?.removeAttribute("aria-describedby"),bo=null,yt?.remove(),yt=null;}let kr=e=>e.scrollWidth>e.clientWidth+1||e.scrollHeight>e.clientHeight+1;function vr(e){let o=e.closest(".kanuni-datagrid-row")?.getAttribute("data-row-key"),n=Ke.find(c=>e.id.endsWith(`-${c.id}`));if(!o||!n)return null;let a=i.getRows().find(c=>c!==void 0&&String(c.key)===o);if(!a||a.kind!=="data")return null;let r=n.def,d=Jn(a.key,n.id,a.data);if(d)return d;let l={value:i.getColumnModel().getCellValue(a.data,n.id),row:a.data,node:a,column:r},s=r.renderTooltip;if(s){let c=s(l);return c===void 0||c===""?null:c}if(typeof r.tooltip=="function")return r.tooltip(l)??null;if(typeof r.tooltip=="string")return r.tooltip;if(r.tooltipField){let c=a.data[r.tooltipField];return c==null?null:String(c)}return Cr&&kr(e)?e.textContent??null:null}function Xa(e,t){let o=vr(e);if(o===null||o==="")return;wo();let n=e.getBoundingClientRect();yt=m(`${In(p)} kanuni-datagrid-portal`);let a=m(Sn?"kanuni-datagrid-tooltip kanuni-datagrid-tooltip--interactive":"kanuni-datagrid-tooltip");a.id=ja,a.setAttribute("role","tooltip"),typeof o=="string"?a.textContent=o:a.appendChild(o),a.style.position="fixed",a.style.left=`${n.left}px`,a.style.top=`${n.bottom+4}px`,a.style.zIndex="1001",Sn&&(a.addEventListener("pointerenter",()=>{Re&&clearTimeout(Re),Re=null,xe&&clearTimeout(xe),xe=null;}),a.addEventListener("pointerleave",ot)),yt.appendChild(a),document.body.appendChild(yt),t&&(e.setAttribute("aria-describedby",ja),bo=e);}let Ja=e=>{if(!Ya)return;let t=e.target.closest(".kanuni-datagrid-cell");if(t&&t===Ct){Re&&clearTimeout(Re),Re=null;return}Sn&&yt&&Re?(xe&&clearTimeout(xe),xe=null):ot(),!(!t||!Y.contains(t))&&(Ct=t,xe=setTimeout(()=>{xe=null,!(Ct!==t||!t.isConnected)&&Xa(t,false);},qa));},Qa=e=>{if(!Ya)return;let t=e.relatedTarget;if(!(Ct&&t&&Ct.contains(t))){if(!Sn||!yt){ot();return}Re&&clearTimeout(Re),Re=setTimeout(wo,150);}};G.addEventListener("pointerover",Ja),G.addEventListener("pointerout",Qa),V.addEventListener("scroll",ot,{passive:true});let Za=-1/0,ei=()=>{Za=Date.now();};mo&&G.addEventListener("pointerdown",ei);let Er=mo?i.events.on("focusChanged",()=>{ot();let e=i.getFocus();e&&(xe=setTimeout(()=>{if(xe=null,!G.contains(document.activeElement)&&Date.now()-Za>1500)return;let t=document.getElementById(`${p.gridId}-cell-${String(e.rowKey)}-${e.columnId}`);!t||!Y.contains(t)||(Ct=t,Xa(t,true));},qa));}):null,ti=e=>{e.key==="Escape"&&ot();};mo&&G.addEventListener("keydown",ti);let ni=()=>{if(i.setScroll(V.scrollTop,Math.abs(V.scrollLeft)),at)for(let e of oi())e.scroller.scrollLeft!==V.scrollLeft&&(e.scroller.scrollLeft=V.scrollLeft);};V.addEventListener("scroll",ni,{passive:true});let at=null,oi=()=>{if(!Me||!at)return [];let e=jt.get(Me);return e?[...e].filter(t=>t!==at):[]},ai=null;if(Me){at={controller:i,scroller:V};let e=jt.get(Me)??new Set;e.add(at),jt.set(Me,e),ai=i.events.on("columnStateChanged",()=>{if(Ho.has(Me))return;let t=oi();if(t.length===0)return;let o=i.getColumnStates();Ho.add(Me);try{for(let n of t)n.controller.applyColumnStates(o);}finally{Ho.delete(Me);}});}let ii=()=>{i.setViewportSize(V.clientWidth,V.clientHeight),Ht&&Ki(V.clientWidth),V.style.setProperty("--dg-viewport-width",`${V.clientWidth}px`);let e=we.getBoundingClientRect(),t=se.getBoundingClientRect();i.setChromeOffsets(e.top-t.top,t.bottom-e.bottom),calibrateMaxScrollOffset(V,i);};ii();let Ln=null;typeof ResizeObserver<"u"&&(Ln=new ResizeObserver(ii),Ln.observe(V),Ln.observe(se)),Un(),Yn(),Zn(),nr(),hn(),mn(),to(),Ca(),ro(),Ga(),Pa(),Rn(),Vt?.always&&qn(true);let ho=null;if(q){let e=null,t=()=>{let o=ie.offsetHeight,n=o>0?`${o}px`:null;n!==e&&(e=n,n?se.style.setProperty("--dg-header-actual",n):se.style.removeProperty("--dg-header-actual"));};t(),typeof ResizeObserver<"u"&&(ho=new ResizeObserver(t),ho.observe(ie));}return Qo=true,{controller:i,element:G,setData:e=>i.setData(e),setColumns:e=>i.setColumns(e),destroy:()=>{if(!Ce){if(Ce=true,hr.forEach(e=>e()),Wt.forEach(e=>e()),Wt=[],Ln?.disconnect(),ho?.disconnect(),sa?.(),Tt&&(Tt=false,kt--,kt<=0&&(kt=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),ai?.(),Me&&at){let e=jt.get(Me);e?.delete(at),e&&e.size===0&&jt.delete(Me),at=null;}V.removeEventListener("scroll",ni),Y.removeEventListener("mousedown",Ba),Y.removeEventListener("contextmenu",La),Ie.removeEventListener("contextmenu",yn),go.dispose(),Xe.removeEventListener("contextmenu",yn),en&&Y.removeEventListener("mouseover",Va),Y.removeEventListener("click",Ka),Y.removeEventListener("dblclick",Fa),gr(),En();for(let e of lo)clearTimeout(e);G.removeEventListener("keydown",Wa),G.removeEventListener("keydown",_a,true),st?.dispose(),st=null,G.removeEventListener("pointerover",Ja),G.removeEventListener("pointerout",Qa),G.removeEventListener("keydown",ti),G.removeEventListener("pointerdown",ei),Er?.(),V.removeEventListener("scroll",ot),ot(),yr?.(),ye(false),i.dispose(),G.remove();}}}}export{Nn as CHECKBOX_COLUMN_WIDTH,Jt as DETAIL_COLUMN_WIDTH,vi as PRINT_MAX_ROWS,Hn as ROW_DRAG_MIME,Xt as ROW_NUMBER_COLUMN_WIDTH,Lo as attachCellEditing,To as buildCellEditor,Ro as buildDateEditor,Co as buildHeaderMenu,Hl as createGrid,vo as measureBestFitWidth,So as openConfirmDialog};
|
|
1
|
+
import {DEFAULT_DATE_FORMAT,toDate,dateDigits,maskDate,createDebouncedCommit,EditingEngine,getGridDictionary,summaryTypeLabels,datePeriodLabels,inferColumns,presetRowHeight,DataGridController,isRtlLocale,resolveCardView,RowMotion,attachStateStoring,edgeEditableColumn,nextEditableColumn,lookupLabel,formatDateValue,isChromeColumn,GROUP_COLUMN_ID,normalizeSearch,FILTER_PART_ROW,customFilterInputFromNode,findCustomFilterOperator,customFilterOperators,fillText,setCommandContent,pageButtonItems,summaryLabel,formatSummaryValue,summaryKey,selectedLabelsFromFilter,FILTER_PART_SET,FILTER_PART_DEFAULT,foldText,allowedSummaryTypes,describeFilter,filterLabels,resolveGridCommand,calibrateMaxScrollOffset,periodSuggestionList,parseCustomFilterInput,parseFilterInput,dateDigitCount,parseDateValue,daysInMonth,toIsoDate,placeAnchoredLayer,bandDepth,computeHeaderBands,bandPath,showsCards,downloadBlob,ExportAbortedError,spanRoleAt,cardFields,cardColumnIds,cardHeight}from'@kanunilabs/datagrid-core';export{DENSITY_ROW_HEIGHT,GRID_COLOR_SCHEMES,THEME_ROW_HEIGHT,isPackagedTheme,presetRowHeight}from'@kanunilabs/datagrid-core';function ko(u,p){let{controller:h,maxGroupLevels:D,t:S}=p,k=u.columnId,M=h.getColumnModel().getDef(k),A=h.getSort(),T=A.find(z=>z.columnId===k),X=h.getGroupLevels(),R=X.includes(k),oe=M?.sortable!==false,O=h.getColumnStates().find(z=>z.id===k)?.pinned??null,_=M?.groupable!==false,ee=h.canGroup(),pe=[{id:"sort-asc",label:S.sortAsc,disabled:!oe||T?.direction==="asc",onSelect:()=>h.setSort([{columnId:k,direction:"asc"}])},{id:"sort-desc",label:S.sortDesc,disabled:!oe||T?.direction==="desc",onSelect:()=>h.setSort([{columnId:k,direction:"desc"}])},{id:"sort-clear",label:S.clearSort,disabled:!T,onSelect:()=>h.setSort(A.filter(z=>z.columnId!==k))},{id:"sep-1",separator:true},{id:"group",label:R?S.ungroupColumn:S.groupByColumn,disabled:!_,onSelect:()=>{R?h.groupBy(X.filter(z=>z!==k)):h.groupBy([...X,k].slice(-D));}},{id:"group-panel",label:p.groupPanelVisible?S.hideGroupPanel:S.showGroupPanel,onSelect:p.onToggleGroupPanel},{id:"footer",label:p.footerVisible?S.hideFooter:S.showFooter,onSelect:p.onToggleFooter},{id:"sep-2",separator:true},{id:"hide-column",label:S.hideColumn,disabled:h.getColumnStates().filter(z=>z.visible).length<=1,onSelect:()=>h.setColumnVisible(k,false)},{id:"field-chooser",label:S.fieldChooser,onSelect:p.onOpenFieldChooser},{id:"sep-3",separator:true},{id:"best-fit",label:S.bestFit,disabled:M?.resizable===false,onSelect:()=>p.onBestFit(k)},{id:"best-fit-all",label:S.bestFitAll,onSelect:p.onBestFitAll}],de=h.getColumnStates().filter(z=>z.visible&&z.pinned===O).map(z=>z.id),q=de.indexOf(k),we=M?.reorderable!==false&&q>=0;return pe.push({id:"sep-4",separator:true},{id:"move-left",label:S.moveLeft,disabled:!we||q<=0,onSelect:()=>h.moveColumn(k,de[q-1])},{id:"move-right",label:S.moveRight,disabled:!we||q<0||q>=de.length-1,onSelect:()=>h.moveColumn(k,de[q+2])},{id:"fixed-position",label:S.fixedPosition,items:[{id:"pin-left",label:S.pinLeft,disabled:O==="left",onSelect:()=>h.setColumnPinned(k,"left")},{id:"pin-right",label:S.pinRight,disabled:O==="right",onSelect:()=>h.setColumnPinned(k,"right")},{id:"pin-sticky",label:S.pinSticky,disabled:O==="sticky",onSelect:()=>h.setColumnPinned(k,"sticky")}]},{id:"unpin",label:S.unpin,disabled:O===null,onSelect:()=>h.setColumnPinned(k,null)}),ee?pe:pe.filter(z=>z.id!=="group"&&z.id!=="group-panel")}async function vo(u,p){try{let h=p==="csv"?await u.exportToCsv():p==="excel"?await u.exportToExcel():p==="excel-selected"?await u.exportToExcel({selectedOnly:!0}):await u.exportToPdf();return downloadBlob(h.blob,h.fileName),{completed:!0}}catch(h){return h instanceof ExportAbortedError?{completed:false}:{completed:false,error:h instanceof Error?h.message:String(h)}}}var li=null;function Sr(){return typeof document>"u"?null:(li??=document.createElement("canvas"),li.getContext("2d"))}function di(u){let p=getComputedStyle(u);return `${p.fontStyle} ${p.fontWeight} ${p.fontSize} ${p.fontFamily}`}function Lr(u){for(let p=u.firstElementChild;p;p=p.nextElementSibling)if(p.tagName!=="MARK")return true;return false}function Ar(u){let p=u.map(D=>[D.style.width,D.style.minWidth,D.style.maxWidth]);for(let D of u)D.style.width="max-content",D.style.minWidth="0",D.style.maxWidth="none";let h=0;for(let D of u){let S=Math.ceil(D.getBoundingClientRect().width);S>h&&(h=S);}return u.forEach((D,S)=>{[D.style.width,D.style.minWidth,D.style.maxWidth]=p[S];}),h}function Eo(u,p){let h=Sr();if(!h)return null;let D=typeof CSS<"u"&&CSS.escape?CSS.escape(p):p.replace(/"/g,'\\"'),S=u.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${D}"]`),k=u.querySelectorAll(`.kanuni-datagrid-cell[data-column-id="${D}"]`);if(!S&&k.length===0)return null;let M=0;if(S){let A=S.querySelector(".kanuni-datagrid-header-label")??S;h.font=di(A),M=h.measureText(A.textContent??"").width+44;}if(k.length>0){h.font=di(k[0]);let A=[];for(let T=0;T<k.length;T++){if(Lr(k[T])){A.push(k[T]);continue}let X=k[T].textContent??"";if(X==="")continue;let R=h.measureText(X).width+20;R>M&&(M=R);}A.length>0&&(M=Math.max(M,Ar(A)));}return M===0?null:Math.round(Math.min(640,Math.max(48,M)))}function ci(u){let p=Number(u.weekStartsOn);return Number.isInteger(p)&&p>=0&&p<=6?p:0}function Gr(u){let p=[u.weekdaySu,u.weekdayMo,u.weekdayTu,u.weekdayWe,u.weekdayTh,u.weekdayFr,u.weekdaySa],h=ci(u);return [...p.slice(h),...p.slice(0,h)]}function Kr(u){return [u.monthJanuary,u.monthFebruary,u.monthMarch,u.monthApril,u.monthMay,u.monthJune,u.monthJuly,u.monthAugust,u.monthSeptember,u.monthOctober,u.monthNovember,u.monthDecember]}function Fr(u,p){return !u||!p?false:u.getFullYear()===p.getFullYear()&&u.getMonth()===p.getMonth()&&u.getDate()===p.getDate()}var ui="http://www.w3.org/2000/svg";function $r(){let u=document.createElementNS(ui,"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 p=document.createElementNS(ui,"path");return p.setAttribute("d","M3 4h10v9H3z M3 6.5h10 M5.5 2.5v2 M10.5 2.5v2"),p.setAttribute("fill","none"),p.setAttribute("stroke","currentColor"),p.setAttribute("stroke-width","1.3"),p.setAttribute("stroke-linecap","round"),u.appendChild(p),u}function To(u){let{t:p,format:h=DEFAULT_DATE_FORMAT,autoFocus:D=true}=u,S=Kr(p),k=Gr(p),M=document.createElement("span");M.className="kanuni-datagrid-date-editor";let A=document.createElement("input");A.type="text",A.inputMode="numeric",A.autocomplete="off",A.placeholder=h,u.ariaLabel&&A.setAttribute("aria-label",u.ariaLabel),u.testId&&A.setAttribute("data-testid",u.testId),u.columnId&&A.setAttribute("data-column-id",u.columnId),u.disabled&&(A.disabled=true);let T=null,X=false,R=null,oe=toDate(u.value),O=oe??new Date,_=()=>T===null?formatDateValue(u.value,h):maskDate(T,h),ee=()=>T===null?null:parseDateValue(maskDate(T,h),h),pe=()=>T!==null&&T.length===dateDigitCount(h)&&ee()===null,de=()=>{let N=pe()||!!u.invalid;A.className=`kanuni-datagrid-editor${N?" kanuni-datagrid-editor--invalid":""}`,N?A.setAttribute("aria-invalid","true"):A.removeAttribute("aria-invalid");};A.value=_(),de();let q=N=>{if(N===null){u.onChange(null);return}u.onChange(u.value instanceof Date?N:toIsoDate(N));},we=()=>{if(!R)return;if(!A.isConnected){Te();return}let N=A.getBoundingClientRect(),g=placeAnchoredLayer({anchor:{left:N.left,top:N.top,bottom:N.bottom},width:R.offsetWidth,height:R.offsetHeight,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});R.style.left=`${g.left}px`,R.style.top=`${g.top}px`;},z=()=>we();function Ue(){if(!R)return;R.textContent="";let N=document.createElement("div");N.className="kanuni-datagrid-date-popup-head";let g=document.createElement("button");g.type="button",g.setAttribute("aria-label",p.datePreviousMonth),g.setAttribute("data-testid","dg-date-prev"),g.textContent="\u2039",g.addEventListener("click",()=>{O=new Date(O.getFullYear(),O.getMonth()-1,1),Ue();});let v=document.createElement("span");v.setAttribute("data-testid","dg-date-title"),v.textContent=`${S[O.getMonth()]} ${O.getFullYear()}`;let I=document.createElement("button");I.type="button",I.setAttribute("aria-label",p.dateNextMonth),I.setAttribute("data-testid","dg-date-next"),I.textContent="\u203A",I.addEventListener("click",()=>{O=new Date(O.getFullYear(),O.getMonth()+1,1),Ue();}),N.append(g,v,I);let Q=document.createElement("div");Q.className="kanuni-datagrid-date-popup-grid",Q.setAttribute("role","grid");for(let fe of k){let $=document.createElement("span");$.className="kanuni-datagrid-date-weekday",$.setAttribute("role","columnheader"),$.textContent=fe,Q.appendChild($);}let ue=(new Date(O.getFullYear(),O.getMonth(),1).getDay()-ci(p)+7)%7,ge=daysInMonth(O.getFullYear(),O.getMonth()+1);for(let fe=0;fe<42;fe++){let $=fe-ue+1,B=new Date(O.getFullYear(),O.getMonth(),$),U=$<1||$>ge,ce=Fr(B,ee()??oe),te=document.createElement("button");te.type="button",te.setAttribute("role","gridcell"),te.className=`kanuni-datagrid-date-day${U?" kanuni-datagrid-date-day--outside":""}${ce?" kanuni-datagrid-date-day--selected":""}`,te.setAttribute("aria-selected",String(ce)),te.setAttribute("data-testid","dg-date-day"),te.setAttribute("data-date",toIsoDate(B)),te.textContent=String(B.getDate()),te.addEventListener("click",()=>lt(B)),Q.appendChild(te);}R.append(N,Q);}function Ye(){X||(X=true,ae.setAttribute("aria-expanded","true"),O=ee()??oe??new Date,R=document.createElement("div"),R.className=`kanuni-datagrid-detached kanuni-datagrid-date-popup${u.surfaceClass?` ${u.surfaceClass}`:""}`,R.style.position="fixed",R.setAttribute("data-testid","dg-date-calendar"),R.setAttribute("role","dialog"),R.setAttribute("aria-label",u.ariaLabel?`${u.ariaLabel} ${p.dateCalendar}`:p.dateCalendar),R.addEventListener("mousedown",N=>N.preventDefault()),document.body.appendChild(R),window.addEventListener("scroll",z,true),window.addEventListener("resize",z),u.onPortalOpen?.(Te),Ue(),we());}function Te(){X&&(X=false,ae.setAttribute("aria-expanded","false"),window.removeEventListener("scroll",z,true),window.removeEventListener("resize",z),R?.remove(),R=null);}function lt(N){T=null,Te(),q(N),A.value=formatDateValue(u.value instanceof Date?N:toIsoDate(N),h),de(),A.focus({preventScroll:true});}function Oe(){if(T===null)return;if(T.length===0){q(null),T=null,A.value=_(),de();return}let N=ee();N&&q(N),T=null,A.value=_(),de();}A.addEventListener("input",()=>{T=dateDigits(A.value,h),A.value=maskDate(T,h),de();}),A.addEventListener("keydown",N=>{if(N.key==="Escape"){if(N.preventDefault(),N.stopPropagation(),X){Te();return}T=null,u.onCancel();return}if(X){let g=N.key==="ArrowLeft"?-1:N.key==="ArrowRight"?1:N.key==="ArrowUp"?-7:N.key==="ArrowDown"?7:0;if(g!==0){N.preventDefault(),N.stopPropagation();let v=ee()??oe??new Date,I=new Date(v.getFullYear(),v.getMonth(),v.getDate()+g);T=dateDigits(formatDateValue(I,h),h),A.value=maskDate(T,h),O=I,Ue(),de();return}if(N.key==="Enter"){N.preventDefault(),N.stopPropagation();let v=ee();Te(),v&<(v);return}}if(N.key==="Enter"){N.preventDefault(),N.stopPropagation(),Oe(),u.onCommit();return}if(N.key==="Tab"){Oe(),Te(),u.onTab&&(N.preventDefault(),N.stopPropagation(),u.onTab(N.shiftKey));return}if(N.key.length===1&&!N.ctrlKey&&!N.metaKey&&!/\d/.test(N.key)){N.preventDefault();return}N.stopPropagation();}),A.addEventListener("blur",()=>{X||Oe();});let ae=document.createElement("button");return ae.type="button",ae.className="kanuni-datagrid-date-button",ae.setAttribute("aria-label",u.ariaLabel?`${u.ariaLabel} \u2014 ${p.dateOpenCalendar}`:p.dateOpenCalendar),ae.setAttribute("aria-expanded","false"),ae.setAttribute("data-testid","dg-date-open"),u.disabled&&(ae.disabled=true),ae.tabIndex=-1,ae.addEventListener("mousedown",N=>N.preventDefault()),ae.addEventListener("click",()=>{X?Te():Ye(),A.focus({preventScroll:true});}),ae.appendChild($r()),M.append(A,ae),D&&queueMicrotask(()=>{A.isConnected&&(A.focus({preventScroll:true}),A.select());}),M}function pi(u,p){return u==null?"":p==="date"&&u instanceof Date?u.toISOString().slice(0,10):String(u)}function gi(u,p){if(p){let h=document.createElement("span");h.id="kanuni-datagrid-editor-error",h.setAttribute("role","alert"),h.className="kanuni-datagrid-editor-error",h.textContent=p,u.appendChild(h);}return u}function So(u){let{value:p,dataType:h,error:D,seeded:S=false}=u,k=document.createDocumentFragment();if(u.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"),k.appendChild(T),k}if(u.options&&u.options.length>0&&u.renderLookup)return k.appendChild(u.renderLookup({options:u.options,value:p,matchMode:u.matchMode,allowCustom:u.allowCustom,invalid:!!D,testId:"dg-cell-editor",ariaLabel:u.ariaLabel,surfaceClass:u.surfaceClass,onPortalOpen:u.onPortalOpen,noMatchText:u.t?.editNoMatch??"No match",onChange:u.onChange,onCommit:()=>u.onCommit("none"),onCancel:u.onCancel,onTab:T=>u.onTab(T?-1:1)})),gi(k,D);if(h==="date"&&u.t)return k.appendChild(To({value:p,format:u.dateFormat,invalid:!!D,testId:"dg-cell-editor",ariaLabel:u.ariaLabel,surfaceClass:u.surfaceClass,onPortalOpen:u.onPortalOpen,t:u.t,onChange:u.onChange,onCommit:()=>u.onCommit("none"),onCancel:u.onCancel,onTab:T=>u.onTab(T?-1:1)})),gi(k,D);let M=document.createElement("input");M.className=`kanuni-datagrid-editor${D?" kanuni-datagrid-editor--invalid":""}`,M.setAttribute("data-testid","dg-cell-editor"),M.setAttribute("aria-invalid",String(!!D)),D&&M.setAttribute("aria-errormessage","kanuni-datagrid-editor-error");let A=false;if(h==="boolean"?(M.type="checkbox",M.checked=p===true,M.addEventListener("change",()=>u.onChange(M.checked))):h==="number"?(M.type=Number.isNaN(Number(p))&&p!==null&&p!==void 0&&p!==""?"text":"number",M.value=pi(p,h),M.addEventListener("input",()=>u.onChange(M.value===""?null:Number(M.value)))):(M.type="text",M.value=pi(p,h),M.addEventListener("input",()=>u.onChange(M.value))),M.addEventListener("keydown",T=>{T.isComposing||T.keyCode===229||(T.key==="Enter"?(T.preventDefault(),T.stopPropagation(),u.onCommit(T.shiftKey?"none":"down")):T.key==="Tab"?(T.preventDefault(),T.stopPropagation(),A=true,u.onTab(T.shiftKey?-1:1)):T.key==="Escape"?(T.preventDefault(),T.stopPropagation(),u.onCancel()):T.stopPropagation());}),M.addEventListener("blur",()=>{A||u.onCommit("none");}),k.appendChild(M),D){let T=document.createElement("span");T.id="kanuni-datagrid-editor-error",T.setAttribute("role","alert"),T.className="kanuni-datagrid-editor-error",T.textContent=D,k.appendChild(T);}return queueMicrotask(()=>{if(M.isConnected&&(M.focus({preventScroll:true}),M.type!=="checkbox"))if(S){if(M.type==="text"||M.type==="search"){let T=M.value.length;M.setSelectionRange(T,T);}}else M.select();}),k}var Or=0;function Lo(u){return new Promise(p=>{let h=document.createElement("div");h.className=`kanuni-datagrid-detached kanuni-datagrid-dialog-root${u.surfaceClass?` ${u.surfaceClass}`:""}`,h.setAttribute("role","presentation");let D=document.activeElement,S=_=>{document.removeEventListener("keydown",k,true);let ee=h.contains(document.activeElement);h.remove(),ee&&D?.isConnected&&D.focus({preventScroll:true}),p(_);},k=_=>{if(_.key==="Escape"){_.stopPropagation(),S(false);return}if(_.key==="Tab"){let ee=Array.from(oe.querySelectorAll("button:not([disabled])"));if(ee.length===0)return;let pe=ee.indexOf(document.activeElement),de=_.shiftKey?pe<=0?ee.length-1:pe-1:pe===ee.length-1?0:pe+1;_.preventDefault(),_.stopPropagation(),ee[de].focus();}};document.addEventListener("keydown",k,true);let M=document.createElement("div");M.className="kanuni-datagrid-dialog-overlay",M.addEventListener("mousedown",()=>S(false));let A=document.createElement("div");A.className="kanuni-datagrid-dialog",A.setAttribute("role","alertdialog"),A.setAttribute("aria-modal","true");let T=`dg-dialog-${++Or}`;A.setAttribute("aria-labelledby",`${T}-title`),A.setAttribute("aria-describedby",`${T}-message`),A.setAttribute("data-testid","dg-dialog");let X=document.createElement("div");X.className="kanuni-datagrid-dialog-title",X.id=`${T}-title`,X.textContent=u.title;let R=document.createElement("div");R.className="kanuni-datagrid-dialog-message",R.id=`${T}-message`,R.textContent=u.message;let oe=document.createElement("div");if(oe.className="kanuni-datagrid-dialog-actions",u.cancelLabel!==void 0){let _=document.createElement("button");_.type="button",_.setAttribute("data-testid","dg-dialog-cancel"),_.textContent=u.cancelLabel,_.addEventListener("click",()=>S(false)),oe.appendChild(_);}let O=document.createElement("button");O.type="button",O.className=`kanuni-datagrid-dialog-primary${u.danger?" kanuni-datagrid-dialog-primary--danger":""}`,O.setAttribute("data-testid","dg-dialog-confirm"),O.textContent=u.confirmLabel,O.addEventListener("click",()=>S(true)),oe.appendChild(O),A.append(X,R,oe),h.append(M,A),document.body.appendChild(h),O.focus();})}function Ao(u,p,h,D,S={}){let k=u.controller,M=S.isColumnEditable??(g=>k.getColumnModel().getDef(g)?.editable!==false),A=()=>{k.refreshCells(),S.onChange?.(),T.schedule("footer",()=>k.refreshSummaries());},T=createDebouncedCommit(150),X=g=>k.getRowByKey(g),R=new EditingEngine({mode:"cell",messages:h,onChange:A,onAutoSaveFailed:g=>ee(g),onCellValueChanged:g=>k.notifyCellValueChanged(g),onEditingStarted:g=>k.notifyEditingStarted(g),onEditingStopped:g=>k.notifyEditingStopped(g),readValue:(g,v)=>{let I=X(g);return I?k.getColumnModel().getStoredValue(I,v):void 0},formatForEdit:(g,v,I)=>k.formatCellForEdit(v,I),parseFromEdit:(g,v,I)=>k.parseCellFromEdit(v,I,g),readRow:X,isColumnEditable:M,applyValue:(g,v,I)=>k.writeCellValue(g,v,I),storedValue:(g,v,I)=>k.valueAfterWrite(g,v,I),onSave:g=>p.onSave?.(g),...S.engine});k.setPendingValueReader({effectiveValue:(g,v,I)=>R.changes.effectiveValue(g,v,I),effectiveRow:(g,v)=>R.changes.applyPendingTo(g,v),hasPending:()=>R.changes.hasChanges()}),k.setEditingDelegate({startEditingCell:(g,v)=>(k.scrollToCell(g,v),R.beginEdit(g,v)),stopEditing:async g=>{if(!R.getSession())return false;if(g)return R.cancelEdit(),_(),true;let v=R.commitEdit();return v&&_(),v},getEditingCells:()=>{let g=R.getSession();return g?[{rowKey:g.rowKey,columnId:g.columnId}]:[]}});let oe=false,O=[k.events.on("rowsChanged",g=>{oe=g.removed===0;}),k.events.on("dataUpdated",()=>{let g=oe;oe=false,!g&&R.retainKeys(new Set(k.getDataRows().map(v=>v.key)));})];function _(){let g=u.element.querySelector(".kanuni-datagrid-scroller");(g&&g.tabIndex>=0?g:u.element).focus({preventScroll:true});}function ee(g){let v=g.columnId!==void 0?k.getColumnModel().getDef(g.columnId)?.headerName??g.columnId:null,I=g.error??h.editSaveFailed;Lo({title:h.editCannotSave,message:v?`${v}: ${I}`:I,confirmLabel:h.ok,surfaceClass:D.surfaceClass()}),g.rowKey!==void 0&&g.columnId!==void 0&&(k.revealRow(g.rowKey),k.focusCell(g.rowKey,g.columnId));}let pe=(g,v={})=>{let I=R.getSession(),Q=I?{rowKey:I.rowKey,columnId:I.columnId}:k.getFocus();if(!Q||!R.commitEdit())return false;let Z=k.getColumnModel().runtime().filter(B=>B.state.visible).map(B=>B.state.id);if(edgeEditableColumn(Z,M,1)===null)return false;let ue=k.getRows(),ge=ue.findIndex(B=>B.key===Q.rowKey);if(ge<0)return false;let fe=nextEditableColumn(Z,M,Q.columnId,g);if(fe===null){if(v.cycle===false)return false;let B=g;do ge+=B;while(ge>=0&&ge<ue.length&&ue[ge]?.kind!=="data");if(ge<0||ge>=ue.length)return false;fe=edgeEditableColumn(Z,M,g);}let $=ue[ge];return !$||$.kind!=="data"?false:(k.focusCell($.key,fe),k.scrollToCell($.key,fe),v.open===true?R.beginEdit($.key,fe):(_(),true))},de=g=>{if(R.getSession())return false;let v=k.getFocus();if(!v||!M(v.columnId))return false;let I=k.getColumnModel().getEditorDataType(v.columnId);if(I==="boolean"||I==="date")return false;let Q=I==="number"?Number.isNaN(Number(g))?null:Number(g):g;return Q===null?false:(k.scrollToCell(v.rowKey,v.columnId),R.beginEdit(v.rowKey,v.columnId,Q))},q=null,we=new Set,z=g=>{let v=()=>{we.delete(v),g();};we.add(v);},Ue=()=>{for(let g of [...we])g();we.clear();},Ye=(g,v)=>{let I=k.getColumnModel().getDef(g.columnId),Q=g.node.data;if(I?.renderCell)return I.renderCell({value:v,row:Q,node:g.node,column:I});let Z=lookupLabel(I,v);if(Z!==null)return Z;if(I?.valueFormatter){let ue=I.valueFormatter(v,Q);return typeof ue=="string"?ue:String(ue??"")}return I?.dateFormat&&I.dataType==="date"?formatDateValue(v,I.dateFormat):v==null?"":String(v)},Te=g=>{if(g.node.kind!=="data")return;if(!R.isEditing(g.node.key,g.columnId)){q&&q.rowKey===g.node.key&&q.columnId===g.columnId&&(q=null);let $=R.getMode()==="cell"?void 0:R.changes.get(g.node.key,g.columnId),B=S.cellAdornment?.(g)??null;if(!$&&!B)return;let U=$?$.newValue:g.value,ce=document.createElement("span");ce.style.display="contents";let te=Ye(g,U);return typeof te=="string"?ce.appendChild(document.createTextNode(te)):ce.appendChild(te),B&&ce.appendChild(B),ce}let v=R.getSession();if(q&&q.rowKey===v.rowKey&&q.columnId===g.columnId)return q.setError(v.validation.message),q.container;let I=k.getColumnModel().getDef(g.columnId),Q=S.resolveLookup?.(v.rowKey,g.columnId)??{options:void 0},Z=document.createElement("span");Z.style.display="contents";let ue=S.customEditors?I?.renderEditor:void 0;if(ue){let $=new Set,B=ue({value:R.getSession()?.value??v.value,row:R.effectiveRow(v.rowKey),columnId:g.columnId,error:v.validation.message,onErrorChange:U=>($.add(U),()=>$.delete(U)),setValue:U=>R.setEditValue(U),commit:()=>{R.commitEdit()&&_();},cancel:()=>{R.cancelEdit(),_();}});return Z.appendChild(B),q={rowKey:v.rowKey,columnId:g.columnId,container:Z,setError:U=>{for(let ce of $)ce(U);}},Z}let ge=$=>{Z.textContent="",Z.appendChild(So({value:R.getSession()?.value??v.value,dataType:k.getColumnModel().getEditorDataType(g.columnId),error:$,seeded:v.seeded,onPortalOpen:z,options:Q.options,allowCustom:Q.allowCustom,matchMode:Q.matchMode,renderLookup:S.renderLookup,dateFormat:I?.dateFormat,ariaLabel:I?.headerName??g.columnId,surfaceClass:D.surfaceClass(),t:h,onChange:B=>R.setEditValue(B),onCommit:B=>{R.commitEdit()&&(B==="down"&&k.moveFocus("down"),_());},onTab:B=>{if(p.focusCellOnTab===false){R.commitEdit();return}pe(B,{open:S.keepEditingOnTab===true,cycle:p.focusCellOnCycle!==false});},onCancel:()=>{R.cancelEdit(),_();}}));};ge(v.validation.message);let fe=v.validation.message;if(q={rowKey:v.rowKey,columnId:g.columnId,container:Z,setError:$=>{if($===fe)return;fe=$,Z.querySelector(".kanuni-datagrid-editor")?.classList.toggle("kanuni-datagrid-editor--invalid",!!$);let U=Z.querySelector(".kanuni-datagrid-editor-error");$&&!U&&(U=document.createElement("span"),U.id="kanuni-datagrid-editor-error",U.setAttribute("role","alert"),U.className="kanuni-datagrid-editor-error",Z.appendChild(U)),U&&(U.textContent=$??"",$||U.remove());}},Q.options===null&&S.resolveLookup){let $=S.resolveLookup,B=()=>{let ce=$(v.rowKey,g.columnId);ce.options!==null&&q&&q.rowKey===v.rowKey&&q.columnId===g.columnId&&R.isEditing(v.rowKey,g.columnId)&&(Q.options=ce.options,ge(R.getSession()?.validation.message??null));},U=k.events.on("cellsRefreshed",()=>{B(),$(v.rowKey,g.columnId).options!==null&&U();});}return Z},lt=g=>{if(g.node.kind!=="data")return;let v=[];return R.isEditing(g.node.key,g.columnId)&&v.push("kanuni-datagrid-cell--editing"),R.changes.isDirty(g.node.key,g.columnId)&&v.push("kanuni-datagrid-cell--dirty"),R.isRemoved(g.node.key)&&v.push("kanuni-datagrid-cell--removed"),v.length?v.join(" "):void 0},Oe=g=>{g.node.kind==="data"&&R.canUpdate(g.node.key,g.columnId)&&(k.scrollToCell(g.node.key,g.columnId),R.beginEdit(g.node.key,g.columnId));},ae=g=>g.key==="Escape"&&R.getSession()?(g.preventDefault(),R.cancelEdit(),true):g.key==="Tab"&&p.focusCellOnTab!==false&&!R.getSession()&&k.getFocus()&&pe(g.shiftKey?-1:1,{open:S.keepEditingOnTab===true,cycle:p.focusCellOnCycle!==false})?(g.preventDefault(),true):false,N=g=>{let v=g.ctrlKey||g.metaKey;if(g.key==="F2"){let I=k.getFocus();if(I)return g.preventDefault(),k.scrollToCell(I.rowKey,I.columnId),R.beginEdit(I.rowKey,I.columnId),true}return p.editOnKeyPress!==false&&!v&&!g.altKey&&g.key.length===1&&g.key!==" "&&!R.getSession()&&de(g.key)?(g.preventDefault(),true):false};return {engine:R,renderCellContent:Te,getCellClassName:lt,onCellDoubleClick:Oe,handleKeyDown:g=>ae(g)||N(g),handleSessionKeys:ae,handleOpenKeys:N,editAdjacentCell:pe,focusGrid:_,trackPortal:z,defaultContent:Ye,dispose:()=>{Ue(),T.cancelAll(),O.forEach(g=>g()),k.setPendingValueReader(null),k.setEditingDelegate(null);}}}function mi(u,p){return !u||isChromeColumn(p)?false:u.editable!==false&&u.lookup==null&&u.renderEditor==null&&u.allowFormulas!==true}var bi=["mode","rules","crud","allowAdding","allowUpdating","allowDeleting","onInitNewRow","onRowInserted","onRowUpdated","onRowRemoved","insertKey","appendOnArrowDown","newRowPosition","keepEditingOnTab","commandColumn","commandLabels","confirmDelete","confirmDeleteMessage","formHeight","formLabels","range"];var Xt=60,Hn=36,Jt=28,Pn="application/x-kanuni-row",jt=new Map,Ho=new Set,vi=5e3,kt=0,Tl=["columnStateChanged","sortChanged"],Sl=["columnStateChanged"],Ll=["contentReady","viewportChanged","filterChanged","selectionChanged","focusChanged","summariesChanged","cellsRefreshed","findChanged"],b=(u,p="div")=>{let h=document.createElement(p);return h.className=u,h},Qt="http://www.w3.org/2000/svg";function Al(u,p){let h=S=>{p&&console.warn(`[datagrid] ${S} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);};if(u.viewportDatasource)throw new Error("[datagrid] viewportDatasource is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.");let D={...u};if(D.dataSource!=null&&!Array.isArray(D.dataSource)&&D.grouping&&(h("grouping a server-side DataSource is"),delete D.grouping),D.columns?.some(S=>S.spanRows)&&(h("cell span/merge (spanRows) is"),D={...D,columns:D.columns.map(S=>S.spanRows?{...S,spanRows:void 0}:S)}),D.tree&&(h("tree data is"),delete D.tree),D.masterDetail&&(h("master-detail is"),delete D.masterDetail),D.grouping){let{groupBy:S,groupSummaries:k}=D.grouping,M=S==null?[]:typeof S=="string"?[S]:S;(M.length>1||k)&&(h("multi-level grouping and group summaries are"),D={...D,grouping:{...D.grouping,groupBy:M.slice(0,1),groupSummaries:false}});}return D}var Ml={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:""},Gn=new Set;function Dl(u){for(let p of Object.keys(u)){let h=Ml[p];h===void 0||h===""||Gn.has(p)||(Gn.add(p),console.warn(`[datagrid] \`${p}\` is a React-only option \u2014 ${h}.`));}}function Il(){let u=document.createElementNS("http://www.w3.org/2000/svg","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 p=document.createElementNS("http://www.w3.org/2000/svg","path");return p.setAttribute("d","M8 1v8m0 0L5 6m3 3 3-3M2 11v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"),p.setAttribute("fill","none"),p.setAttribute("stroke","currentColor"),p.setAttribute("stroke-width","1.5"),p.setAttribute("stroke-linecap","round"),p.setAttribute("stroke-linejoin","round"),u.appendChild(p),u}function Nl(){let u=document.createElementNS(Qt,"svg");u.setAttribute("width","11"),u.setAttribute("height","11"),u.setAttribute("viewBox","0 0 16 16"),u.setAttribute("aria-hidden","true"),u.setAttribute("focusable","false");let p=document.createElementNS(Qt,"path");return p.setAttribute("d","M1.5 2.5h13L9.5 8.6v4.3l-3 1.6V8.6L1.5 2.5Z"),p.setAttribute("fill","currentColor"),p.setAttribute("stroke","currentColor"),p.setAttribute("stroke-width","0.6"),p.setAttribute("stroke-linejoin","round"),u.appendChild(p),u}function Hl(u){let p=document.createElementNS(Qt,"svg");p.setAttribute("width","14"),p.setAttribute("height","14"),p.setAttribute("viewBox","0 0 16 16"),p.setAttribute("aria-hidden","true"),p.setAttribute("focusable","false");let h=document.createElementNS(Qt,"rect");h.setAttribute("x","2"),h.setAttribute("y","2"),h.setAttribute("width","12"),h.setAttribute("height","12"),h.setAttribute("rx","2"),h.setAttribute("fill","none"),h.setAttribute("stroke","currentColor"),h.setAttribute("stroke-width","1.3"),p.appendChild(h);let D=S=>{let k=document.createElementNS(Qt,"path");k.setAttribute("d",S),k.setAttribute("fill","none"),k.setAttribute("stroke","currentColor"),k.setAttribute("stroke-width","1.3"),k.setAttribute("stroke-linecap","round"),p.appendChild(k);};return D("M5 8h6"),u&&D("M8 5v6"),p}function ki(u,p){let h=u??(p==="number"||p==="bigint"?"right":"left");return h==="right"?"kanuni-datagrid-cell kanuni-datagrid-cell--number":h==="center"?"kanuni-datagrid-cell kanuni-datagrid-cell--center":"kanuni-datagrid-cell"}function Nn(u){let p="kanuni-datagrid-root";return u.dark&&(p+=" kanuni-datagrid-dark"),u.theme&&(p+=` kanuni-datagrid-theme-${u.theme}`),u.palette&&(p+=` kanuni-datagrid-palette-${u.palette}`),u.density&&(p+=` kanuni-datagrid-density-${u.density}`),p}function Pl(u,p){let{theme:h,palette:D,density:S,dark:k,striped:M=true,rowNumbers:A=false,locale:T="en",footer:X=false,footerMenu:R=true,footerPosition:oe="bottom",notes:O,pinnedTopRows:_=[],pinnedBottomRows:ee=[],resizable:pe=true,reorderable:de=true,autoHeaderHeight:q=false,filterRow:we=false,headerFilter:z=false,filterIconMode:Ue="hover",filterPanel:Ye=false,onOpenFilterBuilder:Te,focusedRow:lt=false,focusedRowKey:Oe,onFocusedRowChanged:ae,onRowClick:N,onRowActivate:g,autoSizeStrategy:v="none",renderRow:I,cardView:Q,onCardViewChange:Z,announcements:ue=true,filterPanelLabels:ge,showRowCount:fe=false,toolbarColumnChooser:$=false,cellMenu:B=true,rowMenu:U,headerMenu:ce,rowDrag:te,alignedGrids:Me,printLayout:Zt,renderCellContent:Po,getCellClassName:Go,onCellPointerDown:Ko,onCellPointerEnter:en,onCellDoubleClick:Fo,editing:It,onHeaderClick:$o,getHeaderClassName:Oo,renderHeaderLabel:Ei,renderDetail:Bo,renderEditForm:xi,enterpriseEdition:je=false,stateStoring:Vo,tooltip:De=true,renderOverlay:Kn,filterDebounce:Ri,toolbar:_o=false,highlightSearch:Ti=true,sortable:Wo=true,toolbarItemsAfter:Si,toolbarItemsBefore:Li,toolbarExcel:Ai=false,toolbarPdf:Mi=false,searchDebounce:Di=200,...Ii}=p;Dl(p),fe&&!Gn.has("showRowCount:deprecated")&&(Gn.add("showRowCount:deprecated"),console.warn("[datagrid] `showRowCount` was retired on 2026-08-15 and does nothing in either renderer. The row count lives in the status bar (Enterprise) or the pager."));let C=getGridDictionary(T),{emptyText:Ni=C.noData,loadingText:Hi=C.busy,loadingOverlay:Fn=true,...Se}=Ii,qo=typeof Fn=="number"?Fn:300,$n=summaryTypeLabels(C),zo=datePeriodLabels(C);if((!Se.columns||Se.columns.length===0)&&p.autoColumns!==false){let e=Array.isArray(Se.dataSource)?Se.dataSource:[];Se.columns=inferColumns(e,typeof p.autoColumns=="object"?p.autoColumns:{});}Se.rowHeight===void 0&&(Se.rowHeight=presetRowHeight(h,S,28));let Pi=je?Se:Al(Se,!!p.debugMode),dt=je?O:void 0;!je&&O&&p.debugMode&&console.warn("[datagrid] cell notes are an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to show them.");let a=new DataGridController(Pi);a.setEnterpriseEdition(je);let vt=It!=null&&typeof It=="object"&&It.enabled!==false,st=null;if(vt&&p.debugMode)for(let e of bi){let t=It[e];t===void 0||e==="mode"&&t==="cell"||console.warn(`[datagrid] editing.${e} is an Enterprise feature \u2014 use createEnterpriseGrid from @kanunilabs/datagrid-enterprise to use it.`);}let Nt=vt?e=>st?.renderCellContent(e)??Po?.(e):Po,On=vt?e=>{let t=st?.getCellClassName(e),o=Go?.(e);return t&&o?`${t} ${o}`:t??o}:Go,Uo=vt?e=>{Fo?.(e),st?.onCellDoubleClick(e);}:Fo;Oe!=null&&a.focusRow(Oe);let K=b(Nn(p));K.style.height="100%",K.setAttribute("role","grid"),K.setAttribute("aria-label",p.ariaLabel??p.gridId),K.setAttribute("data-grid-id",p.gridId),isRtlLocale(T)&&K.setAttribute("dir","rtl"),h&&K.setAttribute("data-theme",h),q&&K.setAttribute("data-auto-header-height",""),K.style.setProperty("--dg-row-height",`${a.getRowHeight()}px`);let V=b("kanuni-datagrid-scroller"),se=b("kanuni-datagrid-canvas"),ie=b("kanuni-datagrid-header");ie.setAttribute("role","row");let he=b("kanuni-datagrid-rows");he.style.position="relative";let Y=b("kanuni-datagrid-viewport");he.appendChild(Y);let Ie=b("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--top"),Xe=b("kanuni-datagrid-pinned-rows kanuni-datagrid-pinned-rows--bottom"),ut=()=>_.length+a.getPinnedRows("top").length,Yo=()=>ee.length+a.getPinnedRows("bottom").length,ke=b("kanuni-datagrid-sticky-groups");ke.setAttribute("aria-hidden","true");let Ne=X,Be=oe==="top",ye=b(`kanuni-datagrid-footer-row kanuni-datagrid-footer-row--${Be?"top":"bottom"}`);if(ye.setAttribute("role","row"),ye.setAttribute("aria-label",C.columnTotalsAria),R){let e=t=>{let n=t.target?.closest(".kanuni-datagrid-footer-cell")?.getAttribute("data-column-id");!n||isChromeColumn(n)||(t.preventDefault(),pr(n,{left:t.clientX,top:t.clientY}));};ye.addEventListener("click",e),ye.addEventListener("contextmenu",e);}let tn=b("kanuni-datagrid-bands-host");tn.style.display="contents";let Je=b("kanuni-datagrid-filter-row");Je.setAttribute("role","row"),se.append(tn,ie),we&&se.append(Je);let ct=we?2:1,Bn=0,Vn=()=>Bn+ct+ut();ye.style.setProperty("--dg-pinned-gap",String(Be?ct:0)),Ie.style.setProperty("--dg-pinned-gap",String(ct+(Ne&&Be?1:0))),Ne&&Be&&se.append(ye),ut()>0&&se.append(Ie),a.hasStickyGroupHeaders()&&(ke.style.setProperty("--dg-pinned-gap",String(ct+(Ne&&Be?1:0))),ke.style.setProperty("--dg-sticky-below",`${ut()>0?ut()*a.getRowHeight()+1:0}px`),se.append(ke)),se.append(he),Yo()>0&&se.append(Xe),Ne&&!Be&&se.append(ye),V.appendChild(se);let Qe=b("kanuni-datagrid-toolbar"),He=b("kanuni-datagrid-pager");He.setAttribute("role","navigation"),He.setAttribute("aria-label",C.pagerAria);let pt=b("kanuni-datagrid-filter-panel"),gt=!!Se.grouping?.panel,ve=b("kanuni-datagrid-group-panel"),Ht=resolveCardView(Q),Pt=false,nn=[],Ze=I,Gt=b("kanuni-datagrid-cardbar");Gt.hidden=true;let jo=b("kanuni-datagrid-cardbar-label","label"),Xo=b("","span");Xo.textContent=C.cardSortBy;let Pe=b("kanuni-datagrid-cardbar-select","select"),ft=b("kanuni-datagrid-cardbar-dir","button");ft.type="button",jo.append(Xo,Pe),Gt.append(jo,ft),Pe.addEventListener("change",()=>{let e=a.getSort()[0];a.setSort(Pe.value?[{columnId:Pe.value,direction:e?.direction??"asc"}]:[]);}),ft.addEventListener("click",()=>{let e=a.getSort()[0];e&&a.setSort([{columnId:e.columnId,direction:e.direction==="desc"?"asc":"desc"}]);});let Gi=e=>{let[t,...o]=cardFields(a.getColumnModel(),nn,e.row),n=b("kanuni-datagrid-card");n.setAttribute("role","gridcell");let i=b("kanuni-datagrid-card-title");if(i.textContent=t?.text??"",n.appendChild(i),o.length){let l=b("kanuni-datagrid-card-fields","dl");for(let d of o){let r=b("kanuni-datagrid-card-field"),s=b("","dt");s.textContent=d.label;let c=b("","dd");c.textContent=d.text,r.append(s,c),l.appendChild(r);}n.appendChild(l);}return n},Jo=()=>{if(!Pt||!Ht)return;let e=a.getColumnModel(),t=cardColumnIds(e,Ht);t.join("\0")!==nn.join("\0")&&(nn=t,a.setDataRowHeight(cardHeight(t.length)));let o=Wo?e.getOrder().filter(d=>e.getState(d)?.visible!==false&&e.getDef(d)?.sortable!==false):[];Gt.hidden=o.length===0;let n=["",...o].join("\0");if(Pe.dataset.ids!==n){Pe.dataset.ids=n,Pe.replaceChildren();let d=document.createElement("option");d.value="",d.textContent=C.none,Pe.appendChild(d);for(let r of o){let s=document.createElement("option");s.value=r,s.textContent=e.getDef(r)?.headerName??r,Pe.appendChild(s);}}let i=a.getSort()[0];Pe.value=i?.columnId??"",ft.hidden=!i;let l=i?.direction==="desc";ft.textContent=l?"\u2193":"\u2191",ft.setAttribute("aria-label",l?C.sortAsc:C.sortDesc),ft.title=l?C.sortAsc:C.sortDesc;},Qo=false,Ki=e=>{let t=showsCards(e,Ht);if(t!==Pt){for(Pt=t,K.classList.toggle("kanuni-datagrid-cards",t),Ze=t?Gi:I,nn=[],t?Jo():(Gt.hidden=true,a.setDataRowHeight(null));We.length;)We.pop().root.remove();mn(),Qo?Z?.(t):queueMicrotask(()=>Z?.(t));}};_o&&K.appendChild(Qe),gt&&K.appendChild(ve),Ht&&K.appendChild(Gt),K.appendChild(V),Ye&&K.appendChild(pt);let on=Se.pagination;on&&on.enabled!==false&&K.appendChild(He);let Kt=b("kanuni-datagrid-loading-overlay"),Zo=b("kanuni-datagrid-loading-card"),ea=b("kanuni-datagrid-loading-spinner","span");ea.setAttribute("aria-hidden","true");let ta=b("kanuni-datagrid-loading-label","span");ta.textContent=Hi,Zo.append(ea,ta),Kt.appendChild(Zo),Kt.style.display="none";let Ft=b("kanuni-datagrid-sr-only","div");Ft.setAttribute("role","status"),Ft.setAttribute("aria-live","polite"),Ft.setAttribute("aria-atomic","true");let an=b("kanuni-datagrid-empty");an.textContent=Ni,an.style.display="none",K.append(Kt,an),ue&&K.appendChild(Ft),u.appendChild(K);let $t=Se.selection,_n=a.getGroupDisplay()!=="fullWidth",na=a.getGroupDisplay()==="column",Et=($t?.mode??"none")!=="none"&&($t?.checkboxColumn??false),Fi=($t?.rowClick??(Et?"toggle":"replace"))==="toggle",xt=a.hasMasterDetail()&&!!Bo,Wn=()=>(A?1:0)+(xt?1:0)+(Et?1:0),qn=A?Xt:0,oa=qn+(xt?Jt:0),Ge=(A?Xt:0)+(xt?Jt:0)+(Et?Hn:0);a.setLeadWidth(Ge);let Ot=!!te?.enabled,Bt=te?.group??null,aa=te?.allowReordering??true,ia=te?.allowDropInsert??Bt!==null,Ve=null,rn=null,ln=false,mt=null,et=null;function Rt(e){mt=e;for(let t of Y.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 ra=(e,t)=>{let o=t.getBoundingClientRect();return e.clientY<o.top+o.height/2?"before":"after"},la=e=>e.dataTransfer?.types.includes(Pn)?Ve!==null?aa:ia&&Bt!==null:false;function da(e,t,o){let n=null;try{let i=e.dataTransfer?.getData(Pn);n=i?JSON.parse(i):null;}catch{n=null;}if(n){if(n.gridId===a.gridId){if(!aa)return;if(te?.onReorder){te.onReorder({dragKey:n.rowKey,targetKey:t,position:o,row:a.getRowByKey(n.rowKey)});return}a.moveRow(n.rowKey,t,o);return}!ia||Bt===null||n.group!==Bt||te?.onAdd?.({row:n.row,rowKey:n.rowKey,otherGridId:n.gridId,targetKey:t,position:o});}}let $i=e=>{let t=nt(e);if(!t||t.node.kind!=="data"||!e.dataTransfer)return;Ve=t.node.key,rn=t.node.key,ln=false;let o={gridId:a.gridId,group:Bt,rowKey:t.node.key,row:t.node.data};e.dataTransfer.setData(Pn,JSON.stringify(o)),e.dataTransfer.setData("text/plain",String(t.node.key)),e.dataTransfer.effectAllowed="move",a.notifyRowDrag("enter",{rowKey:t.node.key});},Oi=e=>{if(!la(e))return;e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move");let t=nt(e);if(!t||t.node.kind!=="data")return;if(Ve===t.node.key){et=null,Rt(null);return}let o=e.target.closest(".kanuni-datagrid-row"),n=ra(e,o),i=mt?.key!==t.node.key||mt.side!==n;et={key:t.node.key,side:n},Rt({key:t.node.key,side:n}),i&&Ve!==null&&a.notifyRowDrag("move",{rowKey:Ve,overKey:t.node.key,position:n});},Bi=e=>{if(!la(e)){Rt(null);return}e.preventDefault();let t=nt(e);if(ln=true,t&&t.node.kind==="data"){let o=e.target.closest(".kanuni-datagrid-row"),n=ra(e,o);et={key:t.node.key,side:n},da(e,t.node.key,n);}else et=null,da(e,null,"after");Ve=null,Rt(null);},Vi=()=>{rn!==null&&a.notifyRowDragEnd({rowKey:rn,dropped:ln,overKey:et?.key??null,position:et?.side??null}),ln=false,rn=null,Ve=null,et=null,Rt(null);},_i=e=>{let t=e.relatedTarget;t&&he.contains(t)||Ve!==null&&(et=null,Rt(null),a.notifyRowDrag("leave",{rowKey:Ve}));},Vt=Zt===void 0||Zt===false?null:(()=>{let e=Zt===true?{}:Zt;return {always:e.always??false,maxRows:e.maxRows??vi}})(),Tt=false;function zn(e){Tt!==e&&(Tt=e,K.classList.toggle("kanuni-datagrid-print",e),e?(kt++,document.documentElement.classList.add("kanuni-datagrid-printing")):(kt--,kt<=0&&(kt=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),mn());}let sa=null;if(Vt&&!Vt.always){let e=()=>{let o=a.getRows().length;if(o>Vt.maxRows){a.isDebugMode()&&console.warn(`[datagrid] print layout skipped: ${o} rows exceeds maxRows (${Vt.maxRows}). Printing the visible rows instead \u2014 use exportPdf() for the whole result.`);return}zn(true);},t=()=>zn(false);window.addEventListener("beforeprint",e),window.addEventListener("afterprint",t),sa=()=>{window.removeEventListener("beforeprint",e),window.removeEventListener("afterprint",t);};}let _e=0,Ke=[],Ee=0,Un=0;function Yn(){let e=a.getColumnLayout(),t=a.getVirtualWindow().columns,o=[],n=(l,d,r,s)=>{let c=l.def;o.push({def:c,id:l.state.id,width:l.state.width,pinned:d,inset:r,className:ki(c.align,c.dataType)+(d?" kanuni-datagrid-cell--pinned":"")+(c.autoHeight?" kanuni-datagrid-cell--wrap":""),visualIndex:s});};e.left.forEach((l,d)=>n(l,"left",e.leftOffsets[d]+Ge,d));for(let l=t.start;l<t.end&&l<e.center.length;l++)n(e.center[l],null,0,e.left.length+l);e.right.forEach((l,d)=>n(l,"right",e.rightOffsets[d],e.left.length+e.center.length+d)),Ke=o,Ee=t.offsetX;let i=(e.centerOffsets[Math.min(t.end,e.center.length)]??0)-(e.centerOffsets[Math.min(t.start,e.center.length)]??0);Un=Math.max(0,e.centerWidth-t.offsetX-i),se.style.minWidth=`${e.totalWidth+Ge}px`;}let dn=26;function Wi(){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(Bn=n,tn.textContent="",ie.style.top=`${n*dn}px`,K.style.setProperty("--dg-band-offset",`${n*dn}px`),n===0)return;computeHeaderBands(o,n).forEach((l,d)=>{let r=b("kanuni-datagrid-band-row");if(r.style.top=`${d*dn}px`,r.style.height=`${dn}px`,Ge>0){let s=b("kanuni-datagrid-band-cell kanuni-datagrid-band-cell--spacer kanuni-datagrid-band-cell--pinned");s.style.width=`${Ge}px`,s.style.flex="none",s.style.insetInlineStart="0px",r.appendChild(s);}if(Ee>0){let s=b("kanuni-datagrid-spacer");s.style.width=`${Ee}px`,s.style.flex="none",r.appendChild(s);}for(let s of l){let c=b(`kanuni-datagrid-band-cell${s.spacer?" kanuni-datagrid-band-cell--spacer":""}`);if(c.style.width=`${s.width}px`,c.style.flex="none",!s.spacer){if(s.columnIds.length>0){let f=bandPath(a.getColumnModel().getDef(s.columnIds[0])).slice(0,d+1);if(f.length===d+1&&a.isBandCollapsible(f)){let L=a.isBandCollapsed(f),E=document.createElement("button");E.type="button",E.className="kanuni-datagrid-band-toggle",E.setAttribute("aria-expanded",String(!L));let x=L?C.expandColumnGroup:C.collapseColumnGroup;E.setAttribute("aria-label",x),E.title=x,E.appendChild(Hl(L)),E.addEventListener("click",G=>{G.stopPropagation(),a.toggleBand(f);}),c.appendChild(E);}}let y=b("kanuni-datagrid-band-label","span");y.textContent=s.label,c.appendChild(y);}r.appendChild(c);}tn.appendChild(r);});}let St=null,sn=null;function un(e,t){sn&&sn!==e&&sn.classList.remove("kanuni-datagrid-header-cell--drop-before","kanuni-datagrid-header-cell--drop-after"),sn=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 ua(){if(!St)return;let e=a.getSelectedCount(),t=a.getSelectableCount(),o=t>0&&e>=t;St.checked=o,St.indeterminate=!o&&e>0,St.disabled=t===0&&e===0;}let _t=null;function ca(e){_t=e;for(let t of Array.from(ie.querySelectorAll(".kanuni-datagrid-header-cell[data-column-id]")))t.tabIndex=t.getAttribute("data-column-id")===e?0:-1;}function jn(){Wi();let e=document.activeElement,t=e&&ie.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);(!_t||!n.includes(_t))&&(_t=n[0]??null);let i=a.getSort(),l=new Map(i.map((r,s)=>[r.columnId,{direction:r.direction,order:s}]));if(ie.textContent="",St=null,A){let r=b("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-rownum-cell");r.setAttribute("role","columnheader"),r.style.width=`${Xt}px`,r.style.flex="none",r.style.insetInlineStart="0px",ie.appendChild(r);}if(xt){let r=b("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-detail-toggle-cell");r.setAttribute("role","columnheader"),r.setAttribute("aria-label",C.detailsAria),r.style.width=`${Jt}px`,r.style.flex="none",r.style.insetInlineStart=`${qn}px`,ie.appendChild(r);}if(Et){let r=b("kanuni-datagrid-header-cell kanuni-datagrid-header-cell--pinned kanuni-datagrid-select-cell");r.setAttribute("role","columnheader"),r.style.width=`${Hn}px`,r.style.flex="none",r.style.insetInlineStart=`${oa}px`;let s=document.createElement("input");s.type="checkbox",s.setAttribute("aria-label",C.selectAllRows),s.addEventListener("change",()=>{a.getSelectedCount()>0?a.clearSelection():a.selectAll();}),r.appendChild(s),ie.appendChild(r),St=s,ua();}let d=false;for(let r of Ke){if(!r.pinned&&!d){if(Ee>0){let w=document.createElement("div");w.style.flex=`0 0 ${Ee}px`,ie.appendChild(w);}d=true;}let s=Wo&&r.def.sortable!==false,c=r.id===GROUP_COLUMN_ID,y=l.get(c?a.getGroupLevels()[0]??r.id:r.id),f=b(`kanuni-datagrid-header-cell${s?" kanuni-datagrid-header-cell--sortable":""}${r.pinned?" kanuni-datagrid-header-cell--pinned":""}${r.def.wrapHeaderText?" kanuni-datagrid-header-cell--wrap":""}`);f.setAttribute("role","columnheader"),f.setAttribute("data-column-id",r.id),f.tabIndex=r.id===_t?0:-1,f.addEventListener("focus",()=>ca(r.id)),f.setAttribute("aria-sort",y?y.direction==="asc"?"ascending":"descending":"none");let L=r.def.headerTooltip;L&&(f.title=L),f.style.width=`${r.width}px`,f.style.flex="none",r.pinned==="left"&&(f.style.insetInlineStart=`${r.inset}px`),r.pinned==="right"&&(f.style.insetInlineEnd=`${r.inset}px`);let E=b("kanuni-datagrid-header-label","span");E.id=`${encodeURIComponent(p.gridId)}-hdr-${encodeURIComponent(r.id)}`,f.setAttribute("aria-labelledby",E.id);let x=Ei?.(r.id);if(x)E.appendChild(x);else if(r.def.renderHeader){let w=r.def.renderHeader({column:r.def});typeof w=="string"?E.textContent=w:E.appendChild(w);}else E.textContent=r.def.headerName??r.id;if(f.appendChild(E),y){let w=b("kanuni-datagrid-sort-indicator","span");if(w.setAttribute("aria-hidden","true"),w.textContent=y.direction==="asc"?"\u25B2":"\u25BC",f.appendChild(w),i.length>1&&!c){let P=b("kanuni-datagrid-sort-order","span");P.setAttribute("aria-hidden","true"),P.textContent=String(y.order+1),f.appendChild(P);}}if(s||$o){let w=r.id;f.addEventListener("click",P=>{$o?.(w,P)||s&&a.toggleSort(w,P.shiftKey);});}let G=ce!==false&&!isChromeColumn(r.id);if(G){let w=r.id;f.addEventListener("contextmenu",P=>{P.preventDefault(),Aa(w,{left:P.clientX,top:P.clientY});});}let m=null;if(z&&r.def.filterable!==false){m=document.createElement("button"),m.type="button",m.tabIndex=-1;let w=a.getColumnFilter(r.id)!==null;m.className=`kanuni-datagrid-filter-button${w?" kanuni-datagrid-filter-button--active":""}${Ue==="always"?" kanuni-datagrid-filter-button--pinned":""}`,m.setAttribute("aria-haspopup","dialog"),m.setAttribute("aria-label",`${r.def.headerName??r.id} filter`),m.appendChild(Nl());let P=m;m.addEventListener("click",F=>{F.stopPropagation(),Sa(r.id,P);}),f.appendChild(m);}if(f.addEventListener("keydown",w=>{let P=n.indexOf(r.id),F;if(w.key==="ArrowRight")F=n[Math.min(n.length-1,P+1)];else if(w.key==="ArrowLeft")F=n[Math.max(0,P-1)];else if(w.key==="Home")F=n[0];else if(w.key==="End")F=n[n.length-1];else if(m&&w.altKey&&w.key==="ArrowDown")Sa(r.id,m);else if(s&&(w.key==="Enter"||w.key===" "))a.toggleSort(r.id,w.shiftKey);else if(G&&(w.key==="ContextMenu"||w.key==="F10"&&w.shiftKey)){let j=f.getBoundingClientRect();Aa(r.id,{left:j.left,top:j.bottom});}else return;w.preventDefault(),w.stopPropagation(),F&&F!==r.id&&(ca(F),ao(F)?.focus());}),de&&r.def.reorderable!==false&&(f.draggable=true,f.addEventListener("dragstart",w=>{w.dataTransfer?.setData("text/x-kanuni-column",r.id),w.dataTransfer&&(w.dataTransfer.effectAllowed="move");}),f.addEventListener("dragover",w=>{if(!w.dataTransfer?.types.includes("text/x-kanuni-column"))return;w.preventDefault();let P=f.getBoundingClientRect(),F=w.clientX<P.left+P.width/2;un(f,F?"before":"after");}),f.addEventListener("dragleave",w=>{let P=w.relatedTarget;(!P||!f.contains(P))&&un(null,"before");}),f.addEventListener("drop",w=>{un(null,"before");let P=w.dataTransfer?.getData("text/x-kanuni-column");if(!P||P===r.id)return;w.preventDefault();let F=f.getBoundingClientRect();if(w.clientX<F.left+F.width/2)a.moveColumn(P,r.id);else {let J=Ke.findIndex(be=>be.id===r.id);a.moveColumn(P,Ke[J+1]?.id);}}),f.addEventListener("dragend",()=>un(null,"before"))),pe&&r.def.resizable!==false){let w=b("kanuni-datagrid-resize-handle","span");w.setAttribute("data-resize-handle",r.id),w.setAttribute("role","presentation"),w.addEventListener("click",P=>P.stopPropagation()),w.addEventListener("dblclick",P=>{P.stopPropagation(),fr(r.id);}),w.addEventListener("pointerdown",P=>{P.preventDefault(),P.stopPropagation();let F=P.clientX,j=r.width,J=getComputedStyle(f).direction==="rtl"?-1:1;f.draggable=false;let be=j,re=false,ze=it=>{re=true,be=j+(it.clientX-F)*J,a.setColumnWidth(r.id,be,false);},Fe=()=>{window.removeEventListener("pointermove",ze),window.removeEventListener("pointerup",Fe),window.removeEventListener("pointercancel",Fe),re&&a.setColumnWidth(r.id,be,true),f.draggable=de&&r.def.reorderable!==false;};window.addEventListener("pointermove",ze),window.addEventListener("pointerup",Fe),window.addEventListener("pointercancel",Fe);}),f.appendChild(w);}ie.appendChild(f);}t&&ao(t)?.focus({preventScroll:true});}let pa=null,cn=null;function qi(e){if(e===pa)return;pa=e;let t=[];for(let o=0;o<e.length;o++){let n=e[o];n&&n.kind!=="data"&&t.push(o);}cn=t.length>0?t:null;}function zi(e){if(!cn)return e+1;let t=0,o=cn.length;for(;t<o;){let n=t+o>>1;cn[n]<=e?t=n+1:o=n;}return e+1-t}let We=[];function pn(e="data"){let t=b("kanuni-datagrid-row");if(t.setAttribute("role","row"),e==="loading"){t.classList.add("kanuni-datagrid-row--loading"),t.setAttribute("aria-busy","true");let c=b("kanuni-datagrid-cell kanuni-datagrid-loading-cell");return c.setAttribute("role","gridcell"),c.setAttribute("aria-colindex","1"),c.appendChild(b("kanuni-datagrid-loading-bar","span")),t.appendChild(c),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:_e}}if(e==="data"&&_n&&t.addEventListener("click",()=>{if(!t.classList.contains("kanuni-datagrid-group-row--aligned"))return;let c=t.getAttribute("data-group-key");c!==null&&a.toggleGroup(c);}),e==="panel"){let c=document.createElement("div");return c.setAttribute("role","gridcell"),c.setAttribute("aria-colindex","1"),t.appendChild(c),{kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,panelCell:c,epoch:_e}}if(e==="group"){let c=b("kanuni-datagrid-group-cell");c.setAttribute("role","gridcell"),c.setAttribute("aria-colindex","1");let y=b("kanuni-datagrid-group-twisty","span");y.setAttribute("aria-hidden","true");let f=b("kanuni-datagrid-group-caption","span"),L=b("kanuni-datagrid-group-label","span"),E=b("kanuni-datagrid-group-count","span"),x=b("kanuni-datagrid-group-aggregates","span"),G=null;return Et&&$t?.mode==="multiple"&&(G=document.createElement("input"),G.type="checkbox",G.className="kanuni-datagrid-group-checkbox",G.tabIndex=-1,G.addEventListener("change",()=>{let m=t.getAttribute("data-group-key");m!==null&&a.toggleGroupSelection(m);}),G.addEventListener("click",m=>m.stopPropagation()),G.addEventListener("mousedown",m=>m.stopPropagation()),c.appendChild(G)),c.append(y,f,L,E,x),t.appendChild(c),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:c,check:G,twisty:y,caption:f,label:L,count:E,aggregates:x},epoch:_e}}if(Ot){let c=b("kanuni-datagrid-row-grip","span");c.setAttribute("aria-hidden","true"),c.title=C.dragToReorder??"Drag to reorder",c.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>',c.addEventListener("mouseenter",()=>{t.draggable=true;}),c.addEventListener("mouseleave",()=>{t.draggable=false;}),t.appendChild(c);}if(Ze)return {kind:e,root:t,cells:[],rowNumberCell:null,selectInput:null,detailToggle:null,leadingSpacer:null,trailingSpacer:null,epoch:_e};let o=null;A&&(o=b("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=`${Xt}px`,o.style.flex="none",o.style.insetInlineStart="0px",t.appendChild(o));let n=null;if(xt){let c=b("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-detail-toggle-cell");c.setAttribute("role","gridcell"),c.setAttribute("aria-colindex",String((A?1:0)+1)),c.style.width=`${Jt}px`,c.style.flex="none",c.style.insetInlineStart=`${qn}px`;let y=document.createElement("button");y.type="button",y.className="kanuni-datagrid-detail-toggle",y.tabIndex=-1,y.addEventListener("click",f=>{f.stopPropagation();let L=t.getAttribute("data-row-key");if(L===null)return;let E=a.getRows().find(x=>x!==void 0&&String(x.key)===L);E&&E.kind==="data"&&a.toggleDetail(E.key);}),y.addEventListener("mousedown",f=>f.stopPropagation()),c.appendChild(y),t.appendChild(c),n=y;}let i=null;if(Et){let c=b("kanuni-datagrid-cell kanuni-datagrid-cell--center kanuni-datagrid-cell--pinned kanuni-datagrid-select-cell");c.setAttribute("role","gridcell"),c.setAttribute("aria-colindex",String((A?1:0)+(xt?1:0)+1)),c.style.width=`${Hn}px`,c.style.flex="none",c.style.insetInlineStart=`${oa}px`;let y=document.createElement("input");y.type="checkbox",y.tabIndex=-1;let f=()=>{let L=t.getAttribute("data-row-key");if(L===null)return;let E=a.getRows().find(x=>x!==void 0&&String(x.key)===L);E?.kind==="group"?a.toggleGroupSelection(String(E.key)):E&&a.toggleRow(E.key);};c.addEventListener("mousedown",L=>L.stopPropagation()),c.addEventListener("click",L=>{L.target.tagName!=="INPUT"&&(L.stopPropagation(),f());}),y.addEventListener("change",f),y.addEventListener("click",L=>L.stopPropagation()),y.addEventListener("mousedown",L=>L.stopPropagation()),c.appendChild(y),t.appendChild(c),i=y;}let l=[],d=null,r=false;for(let c of Ke){!c.pinned&&!r&&(d=document.createElement("div"),d.style.flex=`0 0 ${Ee}px`,t.appendChild(d),r=true);let y=b(c.className);y.setAttribute("role","gridcell"),y.setAttribute("data-column-id",c.id),y.style.width=`${c.width}px`,y.style.flex="none",c.pinned==="left"&&(y.style.insetInlineStart=`${c.inset}px`),c.pinned==="right"&&(y.style.insetInlineEnd=`${c.inset}px`),t.appendChild(y),l.push({el:y,slot:c});}let s=document.createElement("div");return s.style.flex=`0 0 ${Un}px`,t.appendChild(s),{kind:e,root:t,cells:l,rowNumberCell:o,selectInput:i,detailToggle:n,leadingSpacer:d,trailingSpacer:s,epoch:_e}}let Lt="";function gn(e,t){if(Lt===""||t===""){e.textContent=t;return}let o=foldText(t),n=o.indexOf(Lt);if(n===-1){e.textContent=t;return}let i=[],l=0;for(;n!==-1;){n>l&&i.push(document.createTextNode(t.slice(l,n)));let r=document.createElement("mark");r.className="kanuni-datagrid-highlight",r.textContent=t.slice(n,n+Lt.length),i.push(r),l=n+Lt.length,n=o.indexOf(Lt,l);}l<t.length&&i.push(document.createTextNode(t.slice(l)));let d=document.createElement("span");d.className="kanuni-datagrid-cell-text",d.append(...i),e.replaceChildren(d);}function ga(e,t,o){let n=a.getColumnModel().getCellValue(o.data,t.id),i=t.def;if(i.renderCell){let d=i.renderCell({value:n,row:o.data,node:o,column:i});typeof d=="string"?e.textContent=d:e.replaceChildren(d);return}let l=lookupLabel(i,n);if(l!==null){gn(e,l);return}if(i.valueFormatter){let d=i.valueFormatter(n,o.data);gn(e,typeof d=="string"?d:String(d??""));return}if(i.dateFormat&&i.dataType==="date"){gn(e,formatDateValue(n,i.dateFormat));return}gn(e,n==null?"":String(n));}function Ui(e,t){return e.kind==="group"&&!t.group}function Yi(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(),l=n.column.def,d={def:l,id:n.column.state.id,width:n.width,className:ki(l.align,l.dataType),visualIndex:i.left.length+i.center.indexOf(n.column)},r=e.leadCell??b(d.className);e.leadCell=r,r.className=d.className,r.setAttribute("role","gridcell"),r.setAttribute("data-column-id",d.id),r.setAttribute("aria-colspan",String(t.spans.get(d.id)??1)),r.setAttribute("aria-colindex",String(Wn()+d.visualIndex+1)),r.id=`${p.gridId}-cell-${String(o.key)}-${d.id}`,r.style.width=`${n.width}px`,r.style.flex="none",e.leadingSpacer.nextSibling!==r&&e.leadingSpacer.after(r),ga(r,d,o);}function Xn(e,t,o){let n=e.root;if(n.setAttribute("aria-rowindex",String(o+1+Vn())),n.setAttribute("data-row-key",String(t.key)),t.kind==="detail"||t.kind==="editform"){let m=e.panelCell,w=t.kind==="detail";n.className=`kanuni-datagrid-row ${w?"kanuni-datagrid-detail-row":"kanuni-datagrid-editform-row"}`,n.style.height=`${t.height}px`,w?(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=w?"kanuni-datagrid-detail-cell":"kanuni-datagrid-editform-cell";let P=`${t.kind}:${String(t.key)}`;if(n.getAttribute("data-panel-for")!==P){n.setAttribute("data-panel-for",P);let F=w?Bo?.(t.data):t.parentKey===null?void 0:xi?.(t.parentKey,t.data);m.textContent="",typeof F=="string"?m.textContent=F:F&&m.appendChild(F);}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=fa?"":`${i??a.getRowHeight()}px`;let l=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);l?(n.classList.add("kanuni-datagrid-group-row","kanuni-datagrid-group-row--aligned",`kanuni-datagrid-group-row--level-${l.level}`),n.setAttribute("aria-expanded",String(l.expanded)),n.setAttribute("aria-level",String(l.level+1)),n.setAttribute("data-group-key",String(l.key)),n.setAttribute("data-group-level",String(l.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",M&&o%2===1);let d=a.isRowSelected(t.key);n.classList.toggle("kanuni-datagrid-row--selected",d),t.kind==="data"&&a.getSelectionMode()!=="none"?n.setAttribute("aria-selected",String(d)):n.removeAttribute("aria-selected");let r=a.getFocus();n.classList.toggle("kanuni-datagrid-row--focused",lt&&r!==null&&r.rowKey===t.key);let s=t.kind==="data"&&!Ui(t,e)?a.planRowColSpans(t,a.getVirtualWindow().columns):null;if(e.leadingSpacer&&(e.leadingSpacer.style.flex=`0 0 ${Math.max(0,Ee-(s?.leadingDelta??0))}px`),e.trailingSpacer&&(e.trailingSpacer.style.flex=`0 0 ${Math.max(0,Un-(s?.trailingDelta??0))}px`),Yi(e,s,t),Ot){let m=mt!==null&&String(mt.key)===String(t.key);n.classList.toggle("kanuni-datagrid-row--drop-before",m&&mt.side==="before"),n.classList.toggle("kanuni-datagrid-row--drop-after",m&&mt.side==="after");}let c=t.kind==="treePath",y=c||l!==null;if(n.classList.toggle("kanuni-datagrid-row--tree-path",c),e.rowNumberCell&&(e.rowNumberCell.textContent=y?"":String(zi(o))),e.detailToggle&&(e.detailToggle.hidden=y),e.selectInput){let m=l!==null&&$t?.mode==="multiple";if(e.selectInput.hidden=c||l!==null&&!m,e.selectInput.classList.toggle("kanuni-datagrid-group-checkbox",m),m){let w=a.getGroupSelectionState(String(l.key));e.selectInput.checked=w==="all",e.selectInput.indeterminate=w==="some",e.selectInput.disabled=false,e.selectInput.setAttribute("aria-label",C.selectGroupAria.replace("{count}",String(l.count)).replace("{group}",l.display??l.label));}else e.selectInput.indeterminate=false,e.selectInput.checked=a.isRowSelected(t.key),e.selectInput.disabled=t.kind==="data"&&!a.isRowSelectable(t.key),e.selectInput.setAttribute("aria-label",C.selectRowAria.replace("{row}",String(t.key)));}if(e.detailToggle&&t.kind==="data"){let m=a.isDetailExpanded(t.key);e.detailToggle.textContent=m?"\u25BE":"\u25B8",e.detailToggle.setAttribute("aria-expanded",String(m)),e.detailToggle.setAttribute("aria-label",m?C.collapseDetails:C.expandDetails);}if(t.kind==="group"&&e.group){let m=t;n.className=`kanuni-datagrid-row kanuni-datagrid-group-row kanuni-datagrid-group-row--level-${m.level}`,n.setAttribute("aria-expanded",String(m.expanded)),n.setAttribute("aria-level",String(m.level+1)),n.setAttribute("data-group-key",String(m.key)),n.setAttribute("data-group-level",String(m.level)),e.group.cell.style.paddingLeft=m.level>0?`${8+m.level*18}px`:"",e.group.twisty.textContent=m.expanded?"\u25BE":"\u25B8";let w=a.getColumnModel().getDef(m.columnId),P=w?.headerName??m.columnId;if(e.group.caption.textContent=`${P}:`,e.group.label.textContent=lookupLabel(w,m.value)??m.display??(m.label===""?C.filterBlank:m.label),e.group.count.textContent=`(${m.count})`,e.group.check){let j=a.getGroupSelectionState(String(m.key));e.group.check.checked=j==="all",e.group.check.indeterminate=j==="some",e.group.check.setAttribute("aria-label",C.selectGroupAria.replace("{count}",String(m.count)).replace("{group}",e.group.label.textContent??""));}e.group.aggregates.textContent="";let F=m.aggregates??null;if(F)for(let j of a.getSummaryDefs()){let J=b("kanuni-datagrid-group-aggregate","span"),be=b("kanuni-datagrid-group-aggregate-label","span"),re=a.getColumnModel().getDef(j.columnId);be.textContent=`${summaryLabel(j,$n)} ${re?.headerName??j.columnId}:`,J.append(be,` ${formatSummaryValue(j,F[summaryKey(j.columnId,j.type)],re)}`),e.group.aggregates.appendChild(J);}return}if(t.kind!=="data"&&!c&&!l){for(let{el:m}of e.cells)m.textContent="";return}if(Ze&&y){let m=Ot?1:0;for(;n.childNodes.length>m;)n.removeChild(n.lastChild);let w=b("kanuni-datagrid-cell");l?w.appendChild(ma(l)):(w.appendChild(ba(t)),Jn(w,t,t.tree)),n.appendChild(w);return}if(Ze){let m=Ot?1:0,w=Ze({row:t.data,node:t,rowIndex:o,selected:a.isRowSelected(t.key),focused:lt&&r!==null&&r.rowKey===t.key});if(w instanceof Node&&n.childNodes.length===m+1&&n.childNodes[m]===w)return;for(;n.childNodes.length>m;)n.removeChild(n.lastChild);typeof w=="string"?n.appendChild(document.createTextNode(w)):w&&n.appendChild(w);return}let f=r!==null&&r.rowKey===t.key?r.columnId:null,L=l?void 0:t.tree,E=l&&na?GROUP_COLUMN_ID:L||l?(()=>{let m=a.getColumnLayout();return (m.left[0]??m.center[0]??m.right[0])?.state.id??null})():null,x=L?E:null,G=a.hasCellSpans();for(let{el:m,slot:w}of e.cells){m.style.display=s?.covered.has(w.id)?"none":"",m.style.width=`${s?.widths.get(w.id)??w.width}px`;let P=s?.spans.get(w.id);P?m.setAttribute("aria-colspan",String(P)):m.removeAttribute("aria-colspan");let F=(Nt||On)&&!y?{node:t,columnId:w.id,rowIndex:o,columnIndex:w.visualIndex,value:a.getColumnModel().getCellValue(t.data,w.id)}:null,j=Nt&&l&&w.id!==E?{node:t,columnId:w.id,rowIndex:o,columnIndex:w.visualIndex,value:void 0}:null,J=F&&Nt?Nt(F):j?Nt(j):void 0,be=false;if(J!==void 0?J instanceof Node&&m.childNodes.length===1&&m.firstChild===J?be=true:typeof J=="string"?m.textContent=J:m.replaceChildren(J):l?w.id===E?m.replaceChildren(ma(l)):m.replaceChildren(...Qi(l,w.id)):c?w.id===x?(m.replaceChildren(ba(t)),Jn(m,t,L)):m.replaceChildren():(ga(m,w,t),L&&w.id===x&&Jn(m,t,L)),G&&!be){let ne=Xi(o,w.id);m.classList.toggle("kanuni-datagrid-cell--span",ne?.kind==="draw"),m.classList.toggle("kanuni-datagrid-cell--span-covered",ne?.kind==="covered");let H=J!==void 0;if(ne?.kind==="covered"&&f!==w.id&&!H)m.replaceChildren();else if(ne?.kind==="draw"){let W=b("kanuni-datagrid-span-box");W.style.height=`${ne.height}px`,W.append(...Array.from(m.childNodes)),m.appendChild(W);}}else G||m.classList.remove("kanuni-datagrid-cell--span","kanuni-datagrid-cell--span-covered");if(dt){let ne=!y&&!!Qn(t.key,w.id,t.data);m.classList.toggle("kanuni-datagrid-cell--noted",ne);}m.id=`${p.gridId}-cell-${String(t.key)}-${w.id}`,m.setAttribute("aria-colindex",String(Wn()+w.visualIndex+1)),m.classList.toggle("kanuni-datagrid-cell--focused",f===w.id);let re=t.kind==="data"?a.getFindMatchKind(t.key,w.id):null;m.classList.toggle("kanuni-datagrid-cell--find-match",re!==null),m.classList.toggle("kanuni-datagrid-cell--find-active",re==="active");let ze=m.getAttribute("data-slot-classes");if(ze)for(let ne of ze.split(" "))m.classList.remove(ne);let Fe=F&&On?On(F):void 0,it=w.def.cellClassName,rt=[y?void 0:typeof it=="function"?it({value:a.getColumnModel().getCellValue(t.data,w.id),row:t.data,node:t,column:w.def}):it,Fe].filter(Boolean).join(" ")||void 0;if(rt){for(let ne of rt.split(" "))m.classList.add(ne);m.setAttribute("data-slot-classes",rt);}else ze&&m.removeAttribute("data-slot-classes");}}let fa=p.columns.some(e=>e.autoHeight);function ji(){if(!fa)return;let e=a.getVirtualWindow(),t=a.getRows(),o=new Map(a.getMeasuredRowHeights()),n=false;for(let i=e.rows.start;i<e.rows.end&&i<t.length;i++){let l=t[i];if(!l||l.kind!=="data")continue;let d=i-e.rows.start,r=We[d]?.root;if(!r)continue;let s=r.getBoundingClientRect().height;s>0&&o.get(l.key)!==s&&(o.set(l.key,s),n=true);}n&&a.setMeasuredRowHeights(o);}let fn={start:0,end:0};function Xi(e,t){let o=a.getCellSpans(t);if(o.length===0)return null;let n=spanRoleAt(o,e,fn.start,fn.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 Ji(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(b("kanuni-datagrid-loading-bar","span"));else {let l=b("kanuni-datagrid-load-failed-text","span");l.textContent=C.rowsLoadFailed;let d=document.createElement("button");d.className="kanuni-datagrid-retry-button",d.type="button",d.setAttribute("data-retry-load",""),d.textContent=C.retryLoad,d.addEventListener("click",()=>a.retryFailedLoads()),i.replaceChildren(l,d);}}function ma(e){let t=b("kanuni-datagrid-group-inline","span");t.style.paddingInlineStart=`${e.level*16}px`;let o=b("kanuni-datagrid-group-twisty","span");o.setAttribute("aria-hidden","true"),o.textContent=e.expanded?"\u25BE":"\u25B8";let n=a.getColumnModel().getDef(e.columnId),i=b("kanuni-datagrid-group-caption","span");i.textContent=`${n?.headerName??e.columnId}:`;let l=b("kanuni-datagrid-group-label","span");l.textContent=lookupLabel(n,e.value)??e.display??(e.label===""?C.filterBlank:e.label);let d=b("kanuni-datagrid-group-count","span");return d.textContent=`(${e.count})`,na?t.append(o,l,d):t.append(o,i,l,d),t}function Qi(e,t){if(!e.aggregates)return [];let o=a.getSummaryDefs().find(i=>i.columnId===t);if(!o)return [];let n=b("kanuni-datagrid-group-aggregate-value","span");return n.textContent=formatSummaryValue(o,e.aggregates[summaryKey(o.columnId,o.type)],a.getColumnModel().getDef(t)),[n]}function ba(e){let t=b("kanuni-datagrid-tree-path-label","span");return t.textContent=e.label,t}function Jn(e,t,o){let n=b(`kanuni-datagrid-tree-cell${o.ancestorOnly?" kanuni-datagrid-tree-cell--ancestor":""}`,"span");if(n.style.paddingInlineStart=`${o.depth*16}px`,o.hasChildren){let i=document.createElement("button");i.type="button",i.className="kanuni-datagrid-tree-toggle",i.setAttribute("data-tree-toggle",""),i.setAttribute("aria-expanded",String(o.expanded)),i.setAttribute("aria-label",o.expanded?C.collapseTreeRow:C.expandTreeRow),i.textContent=o.expanded?"\u25BE":"\u25B8",i.addEventListener("mousedown",l=>l.stopPropagation()),i.addEventListener("click",l=>{l.stopPropagation(),a.toggleTreeRow(t.key);}),n.appendChild(i);}else n.appendChild(b("kanuni-datagrid-tree-toggle kanuni-datagrid-tree-toggle--leaf","span"));n.append(...Array.from(e.childNodes)),e.appendChild(n);}let Qn=(e,t,o)=>dt?dt.get({rowKey:e,columnId:t,row:o})??null:null,wa=null,tt=Kn?b("kanuni-datagrid-overlay"):null;tt&&(tt.style.position="absolute",tt.style.inset="0",tt.style.pointerEvents="none",he.appendChild(tt));function Zi(){if(!Kn||!tt)return;let e=Kn();e!==wa&&(wa=e,e?tt.replaceChildren(e):tt.replaceChildren());}function er(e){let t=a.getColumnLayout(),o=Array.from(Xe.children);K.setAttribute("aria-rowcount",String(Vn()+e+o.length)),K.setAttribute("aria-colcount",String(Wn()+t.left.length+t.center.length+t.right.length)),a.getSelectionMode()==="multiple"?K.setAttribute("aria-multiselectable","true"):K.removeAttribute("aria-multiselectable"),o.forEach((n,i)=>n.setAttribute("aria-rowindex",String(Vn()+e+i+1)));}function mn(){Zi(),Pt&&Jo();let e=a.getVirtualWindow(),t=a.getRows(),o=Tt?{...e,rows:{...e.rows,start:0,end:t.length,offsetY:0,totalHeight:0}}:e;qi(t),er(t.length),he.style.height=`${o.rows.totalHeight}px`,Y.style.transform=`translateY(${o.rows.offsetY}px)`,Lt=a.getFindNeedle()||(Ti?normalizeSearch(a.getSearchText()):"");let n=Math.max(0,Math.min(o.rows.end,t.length)-o.rows.start);for(fn.start=o.rows.start,fn.end=Math.min(o.rows.end,t.length)-1;We.length>n;)We.pop().root.remove();for(let i=0;i<n;i++){let l=o.rows.start+i,d=t[l];if(!d){let c=We[i];if(!c||c.kind!=="loading"){let y=pn("loading");c?Y.replaceChild(y.root,c.root):Y.appendChild(y.root),We[i]=y,c=y;}c.root.setAttribute("aria-rowindex",String(l+2)),c.root.style.height=`${a.getDataRowHeight()??a.getRowHeight()}px`,Ji(c.root,l);continue}let r=d.kind==="data"?"data":d.kind==="group"?_n?"data":"group":d.kind==="detail"||d.kind==="editform"?"panel":"stub",s=We[i];if(!s||s.epoch!==_e||s.kind!==r){let c=pn(r);s?Y.replaceChild(c.root,s.root):Y.appendChild(c.root),We[i]=c,s=c;}Xn(s,d,l);}ji(),ha();}let bn=[];function ha(){if(!a.hasStickyGroupHeaders())return;let e=Tt?[]:a.getStickyGroupRows();for(ke.style.width=`${a.getColumnLayout().totalWidth}px`;bn.length>e.length;)bn.pop().wrap.remove();let t=_n?"data":"group";e.forEach((o,n)=>{let i=bn[n];if(!i||i.rs.epoch!==_e||i.rs.kind!==t){let l=pn(t),d=i?.wrap??b("kanuni-datagrid-sticky-group");d.textContent="",d.appendChild(l.root),i||ke.appendChild(d),i={wrap:d,rs:l},bn[n]=i;}Xn(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(l=>l.setAttribute("tabindex","-1"));});}ke.addEventListener("click",e=>{let o=e.target.closest("[data-group-key]")?.getAttribute("data-group-key");o&&a.scrollToRow(o);});let wn=createDebouncedCommit(Ri??(a.isRemote()?200:0));function ya(e,t,o,n){let i=a.getColumnModel().getDef(t);if(!i?.renderFilter)return ()=>{};let l=()=>o==="row"?a.getColumnFilter(t,FILTER_PART_ROW):a.getColumnFilter(t,FILTER_PART_SET)??a.getColumnFilter(t,FILTER_PART_DEFAULT),d=new Set,r=a.events.on("filterChanged",()=>{let c=l();d.forEach(y=>y(c));}),s=i.renderFilter(e,{columnId:t,column:i,surface:o,getValue:l,setValue:c=>a.setColumnFilter(t,c,o==="row"?FILTER_PART_ROW:FILTER_PART_SET),close:n,onValueChange:c=>(d.add(c),()=>d.delete(c))});return ()=>{r(),d.clear(),typeof s=="function"&&s();}}let Wt=[],qt=new Map,Zn=false;function tr(){!we||Zn||Je.querySelectorAll("select[data-filter-operator-for]").forEach(e=>{let t=e.getAttribute("data-filter-operator-for");if(wn.isPending(t))return;let o=a.getColumnModel().getDef(t),n=a.getColumnFilter(t,FILTER_PART_ROW),i=qt.get(t)??"",l=e.parentElement?.querySelector("input.kanuni-datagrid-filter-input"),d=i;if(n){let r=customFilterInputFromNode(n,o);d=r?.operatorId??"",r&&l&&(l.value=r.text);}else findCustomFilterOperator(o,i)?.operandType==="none"&&(d="");qt.set(t,d),e.value=d,l&&(l.disabled=findCustomFilterOperator(o,d)?.operandType==="none");});}function eo(){if(!we)return;if(Wt.forEach(n=>n()),Wt=[],Je.textContent="",Ge>0){let n=b("kanuni-datagrid-filter-cell kanuni-datagrid-filter-cell--pinned");n.setAttribute("role","gridcell"),n.style.width=`${Ge}px`,n.style.flex="none",n.style.insetInlineStart="0px",Je.appendChild(n);}let e=false,t=null,o=()=>{if(!t){t=document.createElement("datalist"),t.id=`${p.gridId}-filter-periods`;for(let n of periodSuggestionList(zo)){let i=document.createElement("option");i.value=n,t.appendChild(i);}Je.appendChild(t);}return t.id};for(let n of Ke){if(!n.pinned&&!e){if(Ee>0){let d=b("kanuni-datagrid-spacer");d.style.width=`${Ee}px`,d.style.flex="none",Je.appendChild(d);}e=true;}let i=b(`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 l=n.def.renderFilter;if(n.def.filterable!==false&&l){let d=b("kanuni-datagrid-filter-custom");d.setAttribute("data-filter-for",n.id),i.appendChild(d),Wt.push(ya(d,n.id,"row",()=>{}));}else if(n.def.filterable!==false){let d=document.createElement("input");d.className="kanuni-datagrid-filter-input",d.setAttribute("aria-label",`${n.def.headerName??n.id} filter`),d.setAttribute("data-filter-for",n.id);let r=customFilterOperators(n.def),s=()=>findCustomFilterOperator(n.def,qt.get(n.id)??"");n.def.dataType==="date"&&!s()&&d.setAttribute("list",o());let c=()=>{let f=s();Zn=true;try{a.setColumnFilter(n.id,f?parseCustomFilterInput(n.id,d.value,f):parseFilterInput(n.id,d.value,n.def.dataType,zo),FILTER_PART_ROW);}finally{Zn=false;}};if(r.length>0){let f=document.createElement("select");f.className="kanuni-datagrid-filter-operator",f.setAttribute("aria-label",fillText(C.filterOperatorAria,{column:n.def.headerName??n.id})),f.setAttribute("data-filter-operator-for",n.id);let L=[["",C.filterOperatorDefault],...r.map(x=>[x.id,x.label])];for(let[x,G]of L){let m=document.createElement("option");m.value=x,m.textContent=G,f.appendChild(m);}let E=customFilterInputFromNode(a.getColumnFilter(n.id,FILTER_PART_ROW),n.def);E&&(qt.set(n.id,E.operatorId),d.value=E.text),f.value=s()?.id??"",d.disabled=s()?.operandType==="none",f.addEventListener("change",()=>{qt.set(n.id,f.value),d.disabled=s()?.operandType==="none",s()?d.removeAttribute("list"):n.def.dataType==="date"&&d.setAttribute("list",o()),wn.cancel(n.id),c();}),i.appendChild(f);}d.addEventListener("input",()=>wn.schedule(n.id,c));let y=()=>{wn.cancel(n.id),c();};d.addEventListener("keydown",f=>{f.key==="Enter"&&y();}),d.addEventListener("blur",y),i.appendChild(d);}Je.appendChild(i);}}let to=()=>{};function nr(){if(!_o)return;let e=document.createElement("input");e.type="search",e.className="kanuni-datagrid-toolbar-search",e.placeholder=C.toolbarSearch,e.setAttribute("aria-label",C.toolbarSearch);let t=null;e.addEventListener("input",()=>{t&&clearTimeout(t),t=setTimeout(()=>a.setSearchText(e.value),Di);});let o=b("kanuni-datagrid-toolbar-spacer"),n=null;if($){let c=document.createElement("button");c.type="button",setCommandContent(c,"columns",C.toolbarColumns??"Columns"),c.setAttribute("aria-haspopup","dialog"),c.addEventListener("click",()=>{let y=c.getBoundingClientRect();Ma({left:y.left,top:y.bottom+2});}),n=c;}let i=je&&Ai,l=je&&Mi,d=document.createElement("button");d.type="button",d.className="kanuni-datagrid-toolbar-icon-button",d.setAttribute("aria-haspopup","menu"),d.setAttribute("aria-label",C.exportMenu),d.setAttribute("data-testid","dg-export-menu"),d.title=C.exportMenu,d.appendChild(Il());let r=null;d.addEventListener("click",()=>{if(r)return;let c=d.getBoundingClientRect();qe({left:c.right-190,top:c.bottom+2},y=>{y.setAttribute("role","menu"),y.setAttribute("aria-label",C.exportMenu);let f=[{kind:"csv",label:C.exportCsv,testId:"dg-export-csv",on:a.canExportAll()},{kind:"excel",label:C.exportExcel,testId:"dg-export-excel",on:i},{kind:"excel-selected",label:C.exportExcelSelected,testId:"dg-export-excel-selected",on:i},{kind:"pdf",label:C.exportPdf,testId:"dg-export-pdf",on:l}];for(let L of f){if(!L.on)continue;let E=document.createElement("button");E.type="button",E.className="kanuni-datagrid-menu-item",E.setAttribute("role","menuitem"),E.setAttribute("data-testid",L.testId),E.textContent=L.label,L.kind==="excel-selected"&&a.getSelectedCount()===0&&(E.disabled=true),E.addEventListener("click",()=>{r=L.kind,d.disabled=true,me(),vo(a,L.kind).then(x=>{r=null,d.disabled=false,x.error&&to(x.error);});}),y.appendChild(E);}},"kanuni-datagrid-filter-popup kanuni-datagrid-export-menu");});for(let c of Li??[])Qe.append(c);Qe.append(e,o),n&&Qe.append(n),(a.canExportAll()||i||l)&&Qe.append(d);for(let c of Si??[])Qe.append(c);let s=b("kanuni-datagrid-toolbar-error","span");s.setAttribute("role","alert"),s.style.display="none",Qe.append(s),to=c=>{s.textContent=c,s.style.display="";};}function Ca(){if(!He.isConnected)return;let e=a.getPage(),t=a.getPageCount(),o=document.activeElement,n=o instanceof HTMLElement&&He.contains(o)?o.getAttribute("data-pager"):null;He.textContent="";let i=(s,c,y,f,L)=>{let E=document.createElement("button");return E.type="button",E.textContent=s,E.setAttribute("aria-label",c),E.setAttribute("data-pager",L),E.disabled=y,E.addEventListener("click",f),E},l=b("kanuni-datagrid-pager-buttons"),d=e<=0,r=e>=t-1;if(l.append(i("\xAB",C.pagerFirst??"First",d,()=>a.setPage(0),"first"),i("\u2039",C.pagerPrevious??"Previous",d,()=>a.setPage(e-1),"previous")),on?.pageButtons)for(let s of pageButtonItems(e,t,on.maxPageButtons)){if(typeof s!="number"){let f=b("kanuni-datagrid-pager-gap","span");f.textContent="\u2026",f.setAttribute("aria-hidden","true"),l.append(f);continue}let c=String(s+1),y=i(c,C.pagerPageButton.replace("{n}",c),false,()=>a.setPage(s),`page-${s}`);y.classList.add("kanuni-datagrid-pager-page"),s===e&&y.setAttribute("aria-current","page"),l.append(y);}else {let s=b("kanuni-datagrid-pager-current","span");s.textContent=`${e+1} / ${t}`,l.append(s);}if(l.append(i("\u203A",C.pagerNext??"Next",r,()=>a.setPage(e+1),"next"),i("\xBB",C.pagerLast??"Last",r,()=>a.setPage(t-1),"last")),He.appendChild(l),n!==null){let s=He.querySelector(`[data-pager="${n}"]`);(s&&!s.disabled?s:He.querySelector('[aria-current="page"]')??He.querySelector("button:not(:disabled)"))?.focus();}}function no(){if(!Ne)return;let e=a.getColumnLayout(),t=a.getSummaries(),o=new Map(a.getSummaryDefs().map(i=>[i.columnId,i]));if(ye.textContent="",ye.style.width=`${e.totalWidth+Ge}px`,Ge>0){let i=b("kanuni-datagrid-footer-cell kanuni-datagrid-footer-cell--pinned");i.style.width=`${Ge}px`,i.style.insetInlineStart="0px",ye.appendChild(i);}let n=false;for(let i of Ke){if(!i.pinned&&!n){if(Ee>0){let s=b("kanuni-datagrid-spacer");s.style.width=`${Ee}px`,ye.appendChild(s);}n=true;}let l=o.get(i.id),d=i.def.dataType==="number"||i.def.dataType==="bigint",r=b(`kanuni-datagrid-footer-cell${i.pinned?" kanuni-datagrid-footer-cell--pinned":""}${d?" kanuni-datagrid-footer-cell--number":""}${l?" kanuni-datagrid-footer-cell--active":""}`);if(r.setAttribute("role","gridcell"),r.setAttribute("data-column-id",i.id),r.setAttribute("data-summary-type",l?.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`),l){r.title=`${summaryLabel(l,$n)} \u2014 ${i.def.headerName??i.id}`;let s=b("kanuni-datagrid-footer-value","span");s.textContent=formatSummaryValue(l,t[summaryKey(l.columnId,l.type)],i.def),r.appendChild(s);}else {let s=b("kanuni-datagrid-footer-hint","span");s.textContent=R&&!isChromeColumn(i.id)?"\xB7":"",r.appendChild(s);}ye.appendChild(r);}}function or(){ut()>0?Ie.isConnected||se.insertBefore(Ie,ke.isConnected?ke:he):Ie.remove(),Yo()>0?Xe.isConnected||se.insertBefore(Xe,he.nextSibling):Xe.remove(),ke.style.setProperty("--dg-sticky-below",`${ut()>0?ut()*a.getRowHeight()+1:0}px`);}function hn(){let e=Ze;Ze=I;try{ar();}finally{Ze=e;}}function ar(){let e=(t,o,n,i)=>{t.textContent="",o.forEach((l,d)=>{let r=pn("data");Xn(r,{kind:"data",key:`__pinned-${n}-${d}`,sourceIndex:-1,data:l},d),r.root.classList.remove("kanuni-datagrid-row--odd"),r.root.setAttribute("aria-rowindex",String(Bn+ct+d+1)),r.root.removeAttribute("aria-selected"),r.rowNumberCell&&(r.rowNumberCell.textContent="");let s=i[d-(o.length-i.length)];s!==void 0?r.root.setAttribute("data-pinned-row-key",String(s)):r.root.removeAttribute("data-pinned-row-key"),t.appendChild(r.root);});};for(let[t,o,n]of [["top",Ie,_],["bottom",Xe,ee]]){let i=a.getPinnedRows(t);if(n.length+i.length===0){o.textContent="";continue}e(o,[...n,...i.map(l=>l.row)],t,i.map(l=>l.key));}}let yn=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(s=>String(s)===o);if(i===void 0)return;let l=ka(i,false);if(l.length===0)return;e.preventDefault();let d=a.getPinnedRows(a.getRowPinSide(i)??"top").find(s=>s.key===i)?.row,r={row:d,node:{kind:"data",key:i,sourceIndex:-1,data:d},rowIndex:-1,columnId:e.target.closest("[data-column-id]")?.getAttribute("data-column-id")??null,selectedKeys:a.getSelectedKeys()};qe({left:e.clientX,top:e.clientY},s=>{s.setAttribute("role","menu"),kn(s,l,r);},"kanuni-datagrid-context-menu");};Ie.addEventListener("contextmenu",yn),Xe.addEventListener("contextmenu",yn);function ka(e,t){if(!a.isRowPinningEnabled()||!a.canPinRow(e))return [];let o=a.getRowPinSide(e),n=[];return o!=="top"&&n.push({id:"__dg-pin-top",label:C.pinRowTop,onSelect:()=>a.pinRow(e,"top")}),o!=="bottom"&&n.push({id:"__dg-pin-bottom",label:C.pinRowBottom,onSelect:()=>a.pinRow(e,"bottom")}),o&&n.push({id:"__dg-unpin",label:C.unpinRow,onSelect:()=>a.pinRow(e,null)}),t&&n.length>0?[{id:"__dg-sep-pin",separator:true},...n]:n}let bt=null,zt=null,oo=null;function me(e=true){zt?.(),zt=null,bt?.remove(),bt=null;let t=oo;oo=null,e&&t?.();}function ao(e){return ie.querySelector(`.kanuni-datagrid-header-cell[data-column-id="${CSS.escape(e)}"]`)}function va(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),l=n[i],d;switch(o.key){case "ArrowDown":d=n[(i+1)%n.length];break;case "ArrowUp":d=n[i<=0?n.length-1:i-1];break;case "Home":d=n[0];break;case "End":d=n[n.length-1];break;case "ArrowRight":case "Enter":case " ":if(l?.getAttribute("aria-haspopup")!=="menu")return;l.click(),d=bt?.querySelector('.kanuni-datagrid-submenu [role="menuitem"]:not(:disabled)')??void 0;break;case "ArrowLeft":if(!t)return;t();break;case "Tab":me();break;default:return}o.preventDefault(),o.stopPropagation(),d?.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 qe(e,t,o="kanuni-datagrid-filter-popup"){me(false);let n=document.activeElement instanceof HTMLElement?document.activeElement:null,i=n&&ie.contains(n)?n.closest("[data-column-id]")?.getAttribute("data-column-id")??null:null;bt=b(`${Nn(p)} kanuni-datagrid-portal`);let l=b(o);l.style.position="fixed",l.style.left=`${e.left}px`,l.style.top=`${e.top}px`,l.style.zIndex="1000",t(l),bt.appendChild(l),document.body.appendChild(bt),Ea(l,e),oo=()=>{(n?.isConnected?n:i?ao(i):null)?.focus({preventScroll:true});},l.getAttribute("role")==="menu"&&(va(l),l.querySelector('[role="menuitem"]:not(:disabled)')?.focus({preventScroll:true}));let d=bt,r=c=>{d.contains(c.target)||me(false);},s=c=>{c.key==="Escape"&&me();};document.addEventListener("pointerdown",r,true),document.addEventListener("keydown",s,true),zt=()=>{document.removeEventListener("pointerdown",r,true),document.removeEventListener("keydown",s,true);};}let wt=25,xa=8,Ra=new Map,Ta=0;function Sa(e,t){let o=t.getBoundingClientRect(),n=++Ta;if(a.getColumnModel().getDef(e)?.renderFilter){let i=null,l=null;qe({left:o.left,top:o.bottom+2},s=>{l=s,s.classList.add("kanuni-datagrid-filter-popup--custom"),s.setAttribute("role","dialog"),s.setAttribute("aria-label",`${a.getColumnModel().getDef(e)?.headerName??e} filter`),s.setAttribute("data-column-id",e),s.tabIndex=-1,i=ya(s,e,"popup",()=>me());});let d=l;d&&(d.querySelector('input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])')??d).focus({preventScroll:true});let r=zt;zt=()=>{r?.(),i?.(),i=null;};return}qe({left:o.left,top:o.bottom+2},i=>{i.setAttribute("role","dialog"),i.setAttribute("aria-label",`${a.getColumnModel().getDef(e)?.headerName??e} filter`);let l=[],d=true,r=new Set,s=false,c=0,y="",f=[],L=null,E="",x=[],G=document.createElement("input");G.type="search",G.className="kanuni-datagrid-filter-search",G.placeholder=C.search,G.setAttribute("data-testid","dg-filter-search");let m=b("kanuni-datagrid-filter-actions"),w=document.createElement("button");w.type="button",w.textContent=C.filterSelectAll,w.addEventListener("click",()=>{s=true,r=new Set(l.map(H=>H.label)),re();});let P=document.createElement("button");P.type="button",P.textContent=C.clear,P.addEventListener("click",()=>{s=true,r=new Set,re();}),m.append(w,P);let F=b("kanuni-datagrid-filter-list");F.setAttribute("role","listbox"),F.setAttribute("aria-multiselectable","true");let j=document.createElement("div");j.style.position="relative";let J=document.createElement("div");j.appendChild(J),F.appendChild(j);let be=()=>{let H=foldText(y.trim());if(!H){f=l;return}L||(L=l.map(W=>foldText(W.label))),f=E!==""&&H.includes(E)?x.filter(W=>foldText(W.label).includes(H)):l.filter((W,le)=>L[le].includes(H)),E=H,x=f;},re=()=>{if(F.setAttribute("aria-busy",String(d)),F.setAttribute("aria-setsize",String(f.length)),d){j.style.height="",J.textContent="";let Ae=b("kanuni-datagrid-filter-empty");Ae.textContent=C.filterLoading,J.appendChild(Ae);return}if(f.length===0){j.style.height="",J.style.transform="",J.textContent="";let Ae=b("kanuni-datagrid-filter-empty");Ae.textContent=C.filterNoMatch,J.appendChild(Ae);return}let H=F.clientHeight||240,W=Math.max(0,Math.floor(F.scrollTop/wt)-xa),le=Math.ceil(H/wt)+xa*2,Le=Math.min(W,Math.max(0,f.length-1)),xr=Math.min(f.length,Le+le);j.style.height=`${f.length*wt}px`,J.style.transform=`translateY(${Le*wt}px)`,J.textContent="";for(let Ae=Le;Ae<xr;Ae++){let Mt=f[Ae],$e=b("kanuni-datagrid-filter-item");$e.setAttribute("role","option"),$e.setAttribute("aria-selected",String(r.has(Mt.label))),$e.tabIndex=0,$e.setAttribute("data-value",Mt.label),$e.setAttribute("data-index",String(Ae)),Ae===c&&$e.classList.add("kanuni-datagrid-filter-item--active");let Ut=document.createElement("input");Ut.type="checkbox",Ut.readOnly=true,Ut.checked=r.has(Mt.label),Ut.tabIndex=-1;let ri=document.createElement("span");ri.textContent=Mt.label===""?C.filterBlank:Mt.label,$e.append(Ut,ri),$e.addEventListener("click",()=>ze(Mt.label)),$e.addEventListener("focus",()=>{c=Ae;}),J.appendChild($e);}},ze=H=>{s=true,r.has(H)?r.delete(H):r.add(H);for(let W of J.querySelectorAll(".kanuni-datagrid-filter-item")){if(W.getAttribute("data-value")!==H)continue;W.setAttribute("aria-selected",String(r.has(H)));let le=W.querySelector("input");le&&(le.checked=r.has(H));}};F.addEventListener("scroll",()=>{Ra.set(e,F.scrollTop),re();}),G.addEventListener("input",()=>{y=G.value,c=0,be(),re();});let Fe=H=>{if(f.length===0)return;c=Math.max(0,Math.min(f.length-1,H));let W=c*wt,le=F.clientHeight||240;W<F.scrollTop?F.scrollTop=W:W+wt>F.scrollTop+le&&(F.scrollTop=W+wt-le),re(),i.querySelector(`.kanuni-datagrid-filter-item[data-index="${c}"]`)?.focus();},it=()=>{if(d)return;let H;if(r.size===l.length)H=null;else {let W=r.has(""),le=l.filter(Le=>Le.label!==""&&r.has(Le.label));le.length===0?H=W?{columnId:e,operator:"isnull"}:null:W?H={logic:"or",nodes:[{columnId:e,operator:"in",value:le.map(Le=>Le.value)},{columnId:e,operator:"isnull"}]}:H={columnId:e,operator:"in",value:le.map(Le=>Le.value)};}a.setColumnFilter(e,H,FILTER_PART_SET),me();};i.tabIndex=-1,i.addEventListener("keydown",H=>{let W=H.target===G;if(H.key==="Backspace"&&!W){H.preventDefault(),G.focus(),y=y.slice(0,-1),G.value=y,c=0,be(),re();return}if(H.key==="ArrowDown"){H.preventDefault(),Fe(W?0:c+1);return}if(H.key==="ArrowUp"){H.preventDefault(),Fe(W?f.length-1:c-1);return}if(!W&&(H.key==="Home"||H.key==="End")){H.preventDefault(),Fe(H.key==="Home"?0:f.length-1);return}if(H.key===" "&&!W){H.preventDefault();let le=f[c];le&&ze(le.label);return}if(H.key==="Enter"){H.preventDefault(),it();return}!W&&H.key.length===1&&H.key!==" "&&!H.ctrlKey&&!H.metaKey&&!H.altKey&&(H.preventDefault(),G.focus(),y+=H.key,G.value=y,c=0,be(),re());});let Co=b("kanuni-datagrid-filter-footer"),rt=document.createElement("button");rt.type="button",rt.textContent=C.cancel,rt.addEventListener("click",()=>me());let ne=document.createElement("button");ne.type="button",ne.className="kanuni-datagrid-filter-primary",ne.setAttribute("data-testid","dg-filter-apply"),ne.textContent=C.apply,ne.disabled=true,ne.addEventListener("click",it),Co.append(rt,ne),i.append(G,m,F,Co),re(),queueMicrotask(()=>{G.isConnected&&G.focus();}),a.getDistinctValueSetAsync(e).then(H=>{if(Ta!==n||!i.isConnected)return;l=H.entries,L=null,E="",d=false,ne.disabled=false;let W=selectedLabelsFromFilter(a.getColumnFilter(e,FILTER_PART_SET)??a.getColumnFilter(e,FILTER_PART_DEFAULT),l);W?(s=true,r=new Set(W)):s||(r=new Set(l.map(Le=>Le.label))),be();let le=Ra.get(e);re(),le&&(F.scrollTop=le,re());});});}function Cn(e={}){let t=a.getClipboardText(e);a.notifyClipboardGesture("copy",t?t.split(`
|
|
2
|
+
`).length:0,()=>a.writeClipboard(t,"copy"));}function ir(e){if(B===false)return [];let t=B===true?{}:B,o=[],n=l=>{e&&o.length===0&&o.push({separator:true,id:"__dg-sep"}),o.push(l);};t.copy!==false&&n({id:"__dg-copy",label:C.menuCopy,shortcut:`${lr}C`,onSelect:()=>Cn()}),t.copyWithHeaders!==false&&n({id:"__dg-copy-headers",label:C.menuCopyWithHeaders,onSelect:()=>Cn({includeHeaders:true})}),t.copyWithGroupHeaders!==false&&rr()&&n({id:"__dg-copy-group-headers",label:C.menuCopyWithGroupHeaders,onSelect:()=>Cn({includeGroupHeaders:true})});let i=(t.export===false?[]:Array.isArray(t.export)?t.export:["csv","excel","excel-selected","pdf"]).filter(l=>l!=="csv"||a.canExportAll());if(i.length>0){let l=a.getSelectedCount()===0,d={csv:C.exportCsv,excel:C.exportExcel,"excel-selected":C.exportExcelSelected,pdf:C.exportPdf};n({id:"__dg-export",label:C.menuExport,items:i.map(r=>({id:`__dg-export-${r}`,label:d[r],disabled:r==="excel-selected"&&l,onSelect:()=>{vo(a,r).then(s=>{s.error&&to(s.error);});}}))});}return o}function rr(){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 lr=/Mac|iPhone|iPad|iPod/.test(navigator.platform??"")?"\u2318":"Ctrl+";function kn(e,t,o){let n=null,i=()=>{n?.remove(),n=null;};t.forEach((l,d)=>{if(l.separator){let f=b("kanuni-datagrid-menu-separator");f.setAttribute("role","separator"),e.appendChild(f);return}let r=b("kanuni-datagrid-menu-row"),s=document.createElement("button");if(s.type="button",s.className="kanuni-datagrid-menu-item",s.setAttribute("role","menuitem"),s.setAttribute("data-item-index",String(d)),l.disabled&&(s.disabled=true),l.icon!==void 0){let f=b("kanuni-datagrid-menu-icon","span");typeof l.icon=="string"?f.textContent=l.icon:f.appendChild(l.icon),s.appendChild(f);}let c=b("kanuni-datagrid-menu-label","span");if(c.textContent=l.label??"",s.appendChild(c),l.shortcut){let f=b("kanuni-datagrid-menu-shortcut","span");f.textContent=l.shortcut,s.appendChild(f);}let y=l.items??[];if(y.length>0){let f=b("kanuni-datagrid-menu-caret","span");f.textContent="\u203A",s.appendChild(f),s.setAttribute("aria-haspopup","menu"),s.setAttribute("aria-expanded","false");let L=()=>{i();let E=b("kanuni-datagrid-context-menu kanuni-datagrid-submenu");E.setAttribute("role","menu");let x=s.getBoundingClientRect();E.style.left=`${x.right}px`,E.style.top=`${Math.max(0,x.top-4)}px`;for(let G of y){if(G.separator){let P=b("kanuni-datagrid-menu-separator");P.setAttribute("role","separator"),E.appendChild(P);continue}let m=document.createElement("button");m.type="button",m.className="kanuni-datagrid-menu-item",m.setAttribute("role","menuitem"),G.disabled&&(m.disabled=true);let w=b("kanuni-datagrid-menu-label","span");w.textContent=G.label??"",m.appendChild(w),m.addEventListener("click",()=>{G.onSelect?.(o),me();}),E.appendChild(m);}e.parentElement?.appendChild(E),Ea(E,{left:x.right,top:Math.max(0,x.top-4)}),n=E,s.setAttribute("aria-expanded","true"),va(E,()=>{i(),s.setAttribute("aria-expanded","false"),s.focus();});};s.addEventListener("mouseenter",L),s.addEventListener("click",L);}else s.addEventListener("mouseenter",i),s.addEventListener("click",()=>{l.onSelect?.(o),me();});r.appendChild(s),e.appendChild(r);});}let La=e=>{let o=e.target.closest(".kanuni-datagrid-row");if(!o||o.classList.contains("kanuni-datagrid-group-row"))return;let n=nt(e);if(n?.columnId&&a.notifyCell("cellContextMenu",n.node,n.rowIndex,n.columnId),!U&&!B&&!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()},l=(typeof U=="function"?U(i):U)??[],d=[...l,...dr(i,l.length>0)],r=[...d,...ka(n.node.key,d.length>0)],s=ir(r.length>0);r.length===0&&s.length===0||qe({left:e.clientX,top:e.clientY},c=>{c.setAttribute("role","menu"),kn(c,[...r,...s],i);},"kanuni-datagrid-context-menu");};function dr(e,t){if(!dt?.onChange||dt.menu===false)return [];let o=e.columnId;if(!o)return [];let n=e.node.key,i=Qn(n,o,e.row),l=[];return t&&l.push({separator:true,id:"__note-sep"}),l.push({id:"__note-edit",label:i?C.editNote:C.addNote,onSelect:()=>sr(n,o,e.row,i??"")}),i&&l.push({id:"__note-delete",label:C.deleteNote,onSelect:()=>dt.onChange?.({rowKey:n,columnId:o,row:e.row,text:null})}),l}function sr(e,t,o,n){let l=(K.querySelector(`[data-row-key="${CSS.escape(String(e))}"] [data-column-id="${CSS.escape(t)}"]`)??K).getBoundingClientRect();queueMicrotask(()=>{qe({left:l.left,top:l.bottom+2},d=>{d.setAttribute("aria-label",C.noteEditorAria);let r=document.createElement("textarea");r.className="kanuni-datagrid-note-input",r.rows=4,r.value=n,r.setAttribute("aria-label",C.noteEditorAria),r.placeholder=C.notePlaceholder,r.setAttribute("data-testid","dg-note-input");let s=()=>{let L=r.value.trim();me(),dt?.onChange?.({rowKey:e,columnId:t,row:o,text:L===""?null:L});};r.addEventListener("keydown",L=>{L.key==="Enter"&&(L.ctrlKey||L.metaKey)&&(L.preventDefault(),s()),L.key==="Escape"&&(L.preventDefault(),me());});let c=b("kanuni-datagrid-note-actions"),y=document.createElement("button");y.type="button",y.className="kanuni-datagrid-note-cancel",y.textContent=C.cancel,y.addEventListener("click",()=>me());let f=document.createElement("button");f.type="button",f.className="kanuni-datagrid-note-save",f.setAttribute("data-testid","dg-note-save"),f.textContent=C.save,f.addEventListener("click",s),c.append(y,f),d.append(r,c),queueMicrotask(()=>{r.focus(),r.select();});},"kanuni-datagrid-filter-popup kanuni-datagrid-note-editor");});}function ur(e){gt!==e&&(gt=e,e?(K.insertBefore(ve,V),lo()):ve.remove());}function cr(e){if(Ne!==e){if(Ne=e,e){if(Be){let t=Ie.isConnected?Ie:ke.isConnected?ke:he;se.insertBefore(ye,t);}else se.append(ye);no();}else ye.remove();Ie.style.setProperty("--dg-pinned-gap",String(ct+(Ne&&Be?1:0))),ke.style.setProperty("--dg-pinned-gap",String(ct+(Ne&&Be?1:0)));}}function io(e){let t=Eo(K,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=ko(n,{controller:a,t:C,groupPanelVisible:gt,footerVisible:Ne,onToggleGroupPanel:()=>ur(!gt),onToggleFooter:()=>cr(!Ne),onOpenFieldChooser:()=>Ma(t),onBestFit:io,onBestFitAll:()=>{for(let d of a.getColumnStates())d.visible&&!d.flex&&io(d.id);},maxGroupLevels:je?Number.POSITIVE_INFINITY:1}),l=typeof ce=="function"?ce(n,i):i;l.length!==0&&qe(t,d=>{d.setAttribute("role","menu"),kn(d,l,n);},"kanuni-datagrid-context-menu");}function pr(e,t){let o=a.getColumnModel().getDef(e),n=a.getColumnSummary(e),i={columnId:e,headerName:o?.headerName??o?.field??e},l=[{id:"none",label:C.noTotal,disabled:n===null,onSelect:()=>a.setColumnSummary(e,null)},{id:"sep",separator:true},...allowedSummaryTypes(o?.dataType).map(d=>({id:d,label:$n[d],disabled:n?.type===d,onSelect:()=>a.setColumnSummary(e,d)}))];qe(t,d=>{d.setAttribute("role","menu"),kn(d,l,i);},"kanuni-datagrid-context-menu");}function Ma(e){qe(e,t=>{t.setAttribute("role","dialog"),t.setAttribute("aria-label",C.columns);let o=b("kanuni-datagrid-chooser-title");o.textContent=C.columns,t.appendChild(o);let n=()=>a.getColumnStates().filter(f=>!isChromeColumn(f.id)),i=f=>a.getColumnModel().getDef(f)?.headerName??f,l="";if(n().length>8){let f=document.createElement("input");f.type="search",f.className="kanuni-datagrid-filter-search",f.placeholder=C.search,f.setAttribute("aria-label",C.search),f.addEventListener("input",()=>{l=f.value.trim().toLocaleLowerCase(),y();}),t.appendChild(f);}let d=b("kanuni-datagrid-filter-list");t.appendChild(d);let r=b("kanuni-datagrid-filter-footer"),s=document.createElement("button");s.type="button",s.textContent=C.showAll,s.addEventListener("click",()=>{for(let f of n())f.visible||a.setColumnVisible(f.id,true);y();});let c=document.createElement("button");c.type="button",c.className="kanuni-datagrid-filter-primary",c.textContent=C.ok,c.addEventListener("click",()=>me()),r.append(s,c),t.appendChild(r);function y(){let f=n(),L=f.filter(x=>x.visible).length;d.textContent="";let E=l?f.filter(x=>i(x.id).toLocaleLowerCase().includes(l)):f;if(E.length===0){let x=b("kanuni-datagrid-chooser-empty");x.textContent=C.noData,d.appendChild(x);}for(let x of E){let G=document.createElement("label");G.className="kanuni-datagrid-filter-item";let m=document.createElement("input");m.type="checkbox",m.checked=x.visible,m.disabled=x.visible&&L===1,m.setAttribute("data-column-toggle",x.id),m.addEventListener("change",()=>{a.setColumnVisible(x.id,m.checked),y();});let w=document.createElement("span");w.textContent=i(x.id),G.append(m,w),d.appendChild(G);}s.disabled=L===f.length;}y();},"kanuni-datagrid-filter-popup kanuni-datagrid-column-chooser");}let ht=null,ro=null,vn=e=>{ve.classList.toggle("kanuni-datagrid-group-panel--over",e);};function Da(e,t,o){let n=a.getGroupLevels();if(e===t)return;let i=n.filter(r=>r!==e),l=i.indexOf(t);if(l<0)return;let d=o==="before"?l:l+1;ro=e,a.groupBy([...i.slice(0,d),e,...i.slice(d)]);}function Ia(e,t){let o=a.getGroupLevels(),n=o.indexOf(e),i=n+t;n<0||i<0||i>=o.length||Da(e,o[i],t===-1?"before":"after");}function Na(e,t){if(!e)return;let o=a.getGroupLevels();if(o.includes(e))return;let n=je?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 lo(){if(!gt)return;ve.textContent="";let e=a.getGroupLevels();if(e.length===0){let s=b("kanuni-datagrid-group-panel-hint","span");s.textContent=C.groupPanelHint??"Drag a column header here to group by it",ve.appendChild(s);return}let t=s=>a.getColumnModel().getDef(s)?.headerName??s,o=b("kanuni-datagrid-group-levels"),n=(s,c)=>s<c.top+c.height/2?"before":"after",i=(s,c)=>{for(let y of ve.querySelectorAll(".kanuni-datagrid-group-level"))y.classList.remove("kanuni-datagrid-group-level--drop-before","kanuni-datagrid-group-level--drop-after");s&&c&&s.classList.add(`kanuni-datagrid-group-level--drop-${c}`);};e.forEach((s,c)=>{let y=b("kanuni-datagrid-group-level");y.style.setProperty("--dg-group-level",String(c)),y.setAttribute("data-group-level",String(c));let f=b("kanuni-datagrid-group-chip");if(f.setAttribute("role","button"),f.tabIndex=0,e.length>1&&(f.draggable=true),f.setAttribute("aria-label",`${fillText(C.groupLevelAria,{n:c+1})}: ${t(s)}`),f.addEventListener("dragstart",x=>{ht=s,x.dataTransfer&&(x.dataTransfer.effectAllowed="move",x.dataTransfer.setData("text/x-kanuni-column",s));}),f.addEventListener("dragend",()=>{ht=null,i(null,null);}),f.addEventListener("keydown",x=>{let G=x.ctrlKey||x.metaKey;G&&(x.key==="ArrowUp"||x.key==="ArrowLeft")?(x.preventDefault(),Ia(s,-1)):G&&(x.key==="ArrowDown"||x.key==="ArrowRight")?(x.preventDefault(),Ia(s,1)):(x.key==="Delete"||x.key==="Backspace")&&(x.preventDefault(),a.groupBy(e.filter(m=>m!==s)));}),y.addEventListener("dragover",x=>{!ht&&!(x.dataTransfer?.types.includes("text/x-kanuni-column")??false)||(x.preventDefault(),x.stopPropagation(),i(y,n(x.clientY,y.getBoundingClientRect())));}),y.addEventListener("drop",x=>{x.preventDefault(),x.stopPropagation();let G=n(x.clientY,y.getBoundingClientRect());i(null,null),vn(false);let m=ht;if(ht=null,m){Da(m,s,G);return}let w=x.dataTransfer?.getData("text/x-kanuni-column");w&&Na(w,G==="before"?c:c+1);}),e.length>1){let x=b("kanuni-datagrid-group-chip-level","span");x.textContent=String(c+1),f.appendChild(x);}let L=document.createElement("span");L.textContent=t(s);let E=document.createElement("button");E.type="button",E.setAttribute("aria-label",fillText(C.groupRemoveAria,{column:t(s)})),E.textContent="\xD7",E.addEventListener("click",()=>{a.groupBy(e.filter(x=>x!==s));}),E.draggable=false,f.append(L,E),y.appendChild(f),o.appendChild(y),ro===s&&(ro=null,queueMicrotask(()=>f.focus()));}),ve.appendChild(o);let l=b("kanuni-datagrid-group-panel-actions"),d=document.createElement("button");d.type="button",d.textContent=C.groupExpandAll,d.addEventListener("click",()=>a.expandAllGroups());let r=document.createElement("button");r.type="button",r.textContent=C.groupCollapseAll,r.addEventListener("click",()=>a.collapseAllGroups()),l.append(d,r),ve.appendChild(l);}if(gt){let e=t=>t.dataTransfer?.types.includes("text/x-kanuni-column")??false;ve.addEventListener("dragover",t=>{e(t)&&(t.preventDefault(),vn(true));}),ve.addEventListener("dragleave",t=>{let o=t.relatedTarget;o&&ve.contains(o)||vn(false);}),ve.addEventListener("drop",t=>{vn(false);let o=t.dataTransfer?.getData("text/x-kanuni-column");if(o){if(t.preventDefault(),ht){ht=null;return}Na(o);}});}let Ha="";function Pa(){if(!ue)return;let e=[fillText(C.announceRows,{n:a.getVisibleCount()})],t=a.getSort();if(t.length>0){let i=t.map(l=>{let d=a.getColumnModel().getDef(l.columnId),r=d?.headerName??d?.field??l.columnId,s=l.direction==="desc"?C.announceDescending:C.announceAscending;return `${r} ${s}`}).join(", ");e.push(fillText(C.announceSortedBy,{columns:i}));}let o=a.getSelectedCount();o>0&&e.push(fillText(C.announceSelected,{n:o}));let n=e.join(", ");n!==Ha&&(Ha=n,Ft.textContent=n);}function Ga(){if(!Ye)return;pt.textContent="";let e=describeFilter(a.getEffectiveFilter(),a.getColumnModel(),{...ge,labels:{...filterLabels(C),...ge?.labels}});if(!e&&Ye!=="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=C.filterRemove,o.setAttribute("aria-label",C.filterRemove),o.setAttribute("data-testid","dg-filter-panel-clear"),o.disabled=e===null,o.textContent="\xD7",o.addEventListener("click",()=>{a.setFilter(null),a.clearColumnFilters(),a.setFilterEnabled(true);});let n=document.createElement("input");n.type="checkbox",n.className="kanuni-datagrid-filter-panel-toggle",n.checked=t,n.disabled=e===null,n.title=C.filterToggle,n.setAttribute("aria-label",C.filterToggle),n.setAttribute("data-testid","dg-filter-panel-toggle"),n.addEventListener("change",()=>a.setFilterEnabled(n.checked));let i=b("kanuni-datagrid-filter-panel-text","span");if(i.setAttribute("data-testid","dg-filter-panel-text"),i.textContent=e??C.filterNone,e&&(i.title=e),pt.append(o,n,i),Te){let l=document.createElement("button");l.type="button",l.className="kanuni-datagrid-filter-panel-builder",l.title=C.filterEditBuilder,l.setAttribute("aria-label",C.filterEditBuilder),l.setAttribute("data-testid","dg-filter-panel-builder"),l.textContent="\u25BE",l.addEventListener("click",Te),pt.appendChild(l);}}let so=new Set,gr=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]",l=[];Y.querySelectorAll(n).forEach(r=>{r.querySelectorAll(i).forEach(s=>l.push(s));});for(let r of l)r.classList.remove("kanuni-datagrid-cell--flash");K.offsetWidth;for(let r of l)r.classList.add("kanuni-datagrid-cell--flash");let d=setTimeout(()=>{for(let r of l)r.classList.remove("kanuni-datagrid-cell--flash");so.delete(d);},o);so.add(d);});function nt(e){let t=e.target,o=t.closest(".kanuni-datagrid-row");if(!o||!Y.contains(o))return null;let n=o.getAttribute("data-row-key");if(n===null)return null;let i=a.getRows(),l=i.findIndex(r=>r!==void 0&&String(r.key)===n);if(l===-1)return null;let d=t.closest(".kanuni-datagrid-cell")?.getAttribute("data-column-id")??null;return {node:i[l],rowIndex:l,columnId:d}}let Ka=e=>{let t=nt(e);t&&(N?.(t.node),a.notifyRow("rowClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellClicked",t.node,t.rowIndex,t.columnId));},Fa=e=>{let t=nt(e);if(t){if(Uo){let o=mo(t,true);o&&Uo(o);}g?.(t.node),a.notifyRow("rowDoubleClicked",t.node,t.rowIndex),t.columnId&&a.notifyCell("cellDoubleClicked",t.node,t.rowIndex,t.columnId);}};Y.addEventListener("click",Ka),Y.addEventListener("dblclick",Fa);function fr(e){let t=0,o=ie.querySelector(`[data-column-id="${CSS.escape(e)}"]`);o&&(t=o.scrollWidth),Y.querySelectorAll(`[data-column-id="${CSS.escape(e)}"]`).forEach(n=>{n.scrollWidth>t&&(t=n.scrollWidth);}),t>0&&a.setColumnWidth(e,t+12,true);}function mr(){if(Oo)for(let e of ie.querySelectorAll('[role="columnheader"][data-column-id]')){let t=Oo(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 br(){if(z)for(let e of ie.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 uo=false,$a=false,At=null;function En(){At!==null&&(clearTimeout(At),At=null);}function xn(e){Kt.style.display=e?"":"none";}function Rn(){let e=a.getOverlay();if(an.style.display=e==="noRows"?"":"none",Fn===false){En(),xn(false);return}if(!(e==="loading"&&(uo||!$a))){En(),xn(false);return}if(uo||qo<=0){En(),xn(true);return}At!==null||Kt.style.display===""||(At=setTimeout(()=>{At=null,Ce||xn(true);},qo));}let Oa=false,co=false,po=false,go=false,Ce=false,fo=new RowMotion;function wr(){if(co=false,!Ce){if(po)po=false,go&&(go=false,_e++),Yn(),jn(),eo(),hn();else {let e=Ee;Yn(),Ee!==e?(_e++,jn(),eo(),hn()):a.getPinnedRows("top").length+a.getPinnedRows("bottom").length>0&&hn();}mn(),a.getAnimateRows()&&fo.play(Y),ua(),no(),Ca(),br(),mr(),lo(),Ga(),Pa(),Rn();}}function Tn(e){Ce||(e&&(po=true),!co&&(co=true,queueMicrotask(wr)));}let hr=[...ae?[a.events.on("focusedRowChanged",e=>ae({rowKey:e.rowKey,row:e.row}))]:[],...Tl.map(e=>a.events.on(e,()=>Tn(true))),...Sl.map(e=>a.events.on(e,()=>{go=true;})),...Ll.map(e=>a.events.on(e,()=>Tn(false))),a.events.on("filterChanged",()=>tr()),...["sortChanged","filterChanged","groupChanged","dataUpdated"].map(e=>a.events.on(e,()=>{a.getAnimateRows()&&fo.capture(Y);})),a.events.on("rowPinningChanged",()=>{Ce||(or(),Tn(true));}),a.events.on("overlayChanged",e=>{uo=e.manual===true&&e.overlay==="loading",Ce||Rn();}),a.events.on("busyChanged",e=>{$a=e.background===true,Ce||Rn();}),a.events.on("paginationChanged",()=>{Ce||Tn(false);}),a.events.on("bodyScroll",()=>{Ce||ha();}),a.events.on("scrollRequested",e=>{if(Ce)return;e.scrollTop!==void 0&&(V.scrollTop=e.scrollTop),e.scrollLeft!==void 0&&(V.scrollLeft=e.scrollLeft),a.setScroll(V.scrollTop,Math.abs(V.scrollLeft));let t=e.scrollTop;t===void 0||Math.abs(V.scrollTop-t)<=1||setTimeout(()=>{Ce||Math.abs(V.scrollTop-t)<=1||(V.scrollTop=t,a.setScroll(V.scrollTop,Math.abs(V.scrollLeft)));},0);}),...v==="fitGrid"?[a.events.on("gridSizeChanged",()=>a.sizeColumnsToFit())]:[],...v==="fitCells"?[a.events.on("firstDataRendered",()=>{Ce||Oa||(Oa=true,queueMicrotask(()=>{if(!Ce)for(let e of a.getColumnStates())e.visible&&!e.flex&&io(e.id);}));})]:[]];v==="fitGrid"&&a.sizeColumnsToFit();function mo(e,t=false){if(!e.columnId||e.node.kind!=="data"&&!(t&&e.node.kind==="group"))return null;let o=Ke.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(Ko){let r=nt(e),s=r?mo(r):null;s&&Ko(s,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||Fi&&!e.shiftKey,metaKey:e.metaKey,shiftKey:e.shiftKey});let l=t.closest(".kanuni-datagrid-cell"),d=l?Ke.find(r=>l.id.endsWith(`-${r.id}`))?.id:void 0;d&&a.focusCell(i.key,d);},Va=e=>{if(!en)return;let o=e.target.closest(".kanuni-datagrid-cell");if(!o||!Y.contains(o)||e.relatedTarget?.closest?.(".kanuni-datagrid-cell")===o)return;let i=nt(e),l=i?mo(i):null;l&&en(l,e);};Y.addEventListener("mousedown",Ba),Y.addEventListener("contextmenu",La),en&&Y.addEventListener("mouseover",Va),Ot&&(he.addEventListener("dragstart",$i),he.addEventListener("dragover",Oi),he.addEventListener("drop",Bi),he.addEventListener("dragend",Vi),he.addEventListener("dragleave",_i)),K.tabIndex=0,vt&&(st=Ao({controller:a,element:K},It,C,{surfaceClass:()=>Nn(p).replace("kanuni-datagrid-root","").trim()},{isColumnEditable:e=>mi(a.getColumnModel().getDef(e),e)}));let _a=e=>{let t=st;if(!t||Pt)return;let o=e.target;if(!o||!(o===K||o===V||Y.contains(o)))return;let n=o.tagName;n==="INPUT"||n==="TEXTAREA"||n==="SELECT"||o.isContentEditable||t.handleKeyDown(e)&&e.stopImmediatePropagation();};vt&&K.addEventListener("keydown",_a,true);let Wa=e=>{let t=e.target;if(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.isContentEditable||He.contains(t)||Qe.contains(t)||ie.contains(t))return;if((U||B||a.isRowPinningEnabled())&&(e.key==="ContextMenu"||e.key==="F10"&&e.shiftKey)){let l=a.getFocus(),d=l?Y.querySelector(`[id="${CSS.escape(`${p.gridId}-cell-${String(l.rowKey)}-${l.columnId}`)}"]`):null;if(d){let r=d.getBoundingClientRect();d.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"){Cn();return}if(o.type==="activate"){if(g){let l=a.getFocus(),d=l?a.getRows().find(r=>r!==void 0&&r.key===l.rowKey):void 0;d&&g(d);}o.preventDefault&&e.preventDefault();return}a.executeCommand(o),o.preventDefault&&e.preventDefault();let n=a.getFocusIndices();if(n){let d=a.getColumnLayout().center.findIndex(s=>s.state.id===a.getFocus()?.columnId),r=a.ensureVisible(n.rowIndex,d===-1?void 0:d);r&&(r.scrollTop!==void 0&&(V.scrollTop=r.scrollTop),r.scrollLeft!==void 0&&(V.scrollLeft=r.scrollLeft),a.setScroll(V.scrollTop,Math.abs(V.scrollLeft)));}let i=a.getFocus();K.setAttribute("aria-activedescendant",i?`${p.gridId}-cell-${String(i.rowKey)}-${i.columnId}`:"");};K.addEventListener("keydown",Wa);let yr=Vo?attachStateStoring(a,Vo):null,qa=typeof De=="object"?De.delay??400:400,za=De!==false&&!(typeof De=="object"&&De.enabled===false),Cr=typeof De=="object"?De.showOnTruncation!==false:true,Ua=typeof De=="object"?De.trigger??"hover":"hover",Ya=za&&Ua!=="focus",bo=za&&Ua!=="hover",Sn=typeof De=="object"&&De.interactive===true,ja=`${p.gridId}-tooltip`,yt=null,xe=null,Re=null,Ct=null,wo=null;function ot(){xe&&clearTimeout(xe),xe=null,Ct=null,ho();}function ho(){Re&&clearTimeout(Re),Re=null,wo?.removeAttribute("aria-describedby"),wo=null,yt?.remove(),yt=null;}let kr=e=>e.scrollWidth>e.clientWidth+1||e.scrollHeight>e.clientHeight+1;function vr(e){let o=e.closest(".kanuni-datagrid-row")?.getAttribute("data-row-key"),n=Ke.find(c=>e.id.endsWith(`-${c.id}`));if(!o||!n)return null;let i=a.getRows().find(c=>c!==void 0&&String(c.key)===o);if(!i||i.kind!=="data")return null;let l=n.def,d=Qn(i.key,n.id,i.data);if(d)return d;let r={value:a.getColumnModel().getCellValue(i.data,n.id),row:i.data,node:i,column:l},s=l.renderTooltip;if(s){let c=s(r);return c===void 0||c===""?null:c}if(typeof l.tooltip=="function")return l.tooltip(r)??null;if(typeof l.tooltip=="string")return l.tooltip;if(l.tooltipField){let c=i.data[l.tooltipField];return c==null?null:String(c)}return Cr&&kr(e)?e.textContent??null:null}function Xa(e,t){let o=vr(e);if(o===null||o==="")return;ho();let n=e.getBoundingClientRect();yt=b(`${Nn(p)} kanuni-datagrid-portal`);let i=b(Sn?"kanuni-datagrid-tooltip kanuni-datagrid-tooltip--interactive":"kanuni-datagrid-tooltip");i.id=ja,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",Sn&&(i.addEventListener("pointerenter",()=>{Re&&clearTimeout(Re),Re=null,xe&&clearTimeout(xe),xe=null;}),i.addEventListener("pointerleave",ot)),yt.appendChild(i),document.body.appendChild(yt),t&&(e.setAttribute("aria-describedby",ja),wo=e);}let Ja=e=>{if(!Ya)return;let t=e.target.closest(".kanuni-datagrid-cell");if(t&&t===Ct){Re&&clearTimeout(Re),Re=null;return}Sn&&yt&&Re?(xe&&clearTimeout(xe),xe=null):ot(),!(!t||!Y.contains(t))&&(Ct=t,xe=setTimeout(()=>{xe=null,!(Ct!==t||!t.isConnected)&&Xa(t,false);},qa));},Qa=e=>{if(!Ya)return;let t=e.relatedTarget;if(!(Ct&&t&&Ct.contains(t))){if(!Sn||!yt){ot();return}Re&&clearTimeout(Re),Re=setTimeout(ho,150);}};K.addEventListener("pointerover",Ja),K.addEventListener("pointerout",Qa),V.addEventListener("scroll",ot,{passive:true});let Za=-1/0,ei=()=>{Za=Date.now();};bo&&K.addEventListener("pointerdown",ei);let Er=bo?a.events.on("focusChanged",()=>{ot();let e=a.getFocus();e&&(xe=setTimeout(()=>{if(xe=null,!K.contains(document.activeElement)&&Date.now()-Za>1500)return;let t=document.getElementById(`${p.gridId}-cell-${String(e.rowKey)}-${e.columnId}`);!t||!Y.contains(t)||(Ct=t,Xa(t,true));},qa));}):null,ti=e=>{e.key==="Escape"&&ot();};bo&&K.addEventListener("keydown",ti);let ni=()=>{if(a.setScroll(V.scrollTop,Math.abs(V.scrollLeft)),at)for(let e of oi())e.scroller.scrollLeft!==V.scrollLeft&&(e.scroller.scrollLeft=V.scrollLeft);};V.addEventListener("scroll",ni,{passive:true});let at=null,oi=()=>{if(!Me||!at)return [];let e=jt.get(Me);return e?[...e].filter(t=>t!==at):[]},ai=null;if(Me){at={controller:a,scroller:V};let e=jt.get(Me)??new Set;e.add(at),jt.set(Me,e),ai=a.events.on("columnStateChanged",()=>{if(Ho.has(Me))return;let t=oi();if(t.length===0)return;let o=a.getColumnStates();Ho.add(Me);try{for(let n of t)n.controller.applyColumnStates(o);}finally{Ho.delete(Me);}});}let ii=()=>{a.setViewportSize(V.clientWidth,V.clientHeight),Ht&&Ki(V.clientWidth),V.style.setProperty("--dg-viewport-width",`${V.clientWidth}px`);let e=he.getBoundingClientRect(),t=se.getBoundingClientRect();a.setChromeOffsets(e.top-t.top,t.bottom-e.bottom),calibrateMaxScrollOffset(V,a);};ii();let Ln=null;typeof ResizeObserver<"u"&&(Ln=new ResizeObserver(ii),Ln.observe(V),Ln.observe(se)),Yn(),jn(),eo(),nr(),hn(),mn(),no(),Ca(),lo(),Ga(),Pa(),Rn(),Vt?.always&&zn(true);let yo=null;if(q){let e=null,t=()=>{let o=ie.offsetHeight,n=o>0?`${o}px`:null;n!==e&&(e=n,n?se.style.setProperty("--dg-header-actual",n):se.style.removeProperty("--dg-header-actual"));};t(),typeof ResizeObserver<"u"&&(yo=new ResizeObserver(t),yo.observe(ie));}return Qo=true,{controller:a,element:K,setData:e=>a.setData(e),setColumns:e=>a.setColumns(e),destroy:()=>{if(!Ce){if(Ce=true,hr.forEach(e=>e()),Wt.forEach(e=>e()),Wt=[],Ln?.disconnect(),yo?.disconnect(),sa?.(),Tt&&(Tt=false,kt--,kt<=0&&(kt=0,document.documentElement.classList.remove("kanuni-datagrid-printing"))),ai?.(),Me&&at){let e=jt.get(Me);e?.delete(at),e&&e.size===0&&jt.delete(Me),at=null;}V.removeEventListener("scroll",ni),Y.removeEventListener("mousedown",Ba),Y.removeEventListener("contextmenu",La),Ie.removeEventListener("contextmenu",yn),fo.dispose(),Xe.removeEventListener("contextmenu",yn),en&&Y.removeEventListener("mouseover",Va),Y.removeEventListener("click",Ka),Y.removeEventListener("dblclick",Fa),gr(),En();for(let e of so)clearTimeout(e);K.removeEventListener("keydown",Wa),K.removeEventListener("keydown",_a,true),st?.dispose(),st=null,K.removeEventListener("pointerover",Ja),K.removeEventListener("pointerout",Qa),K.removeEventListener("keydown",ti),K.removeEventListener("pointerdown",ei),Er?.(),V.removeEventListener("scroll",ot),ot(),yr?.(),me(false),a.dispose(),K.remove();}}}}export{Hn as CHECKBOX_COLUMN_WIDTH,Jt as DETAIL_COLUMN_WIDTH,vi as PRINT_MAX_ROWS,Pn as ROW_DRAG_MIME,Xt as ROW_NUMBER_COLUMN_WIDTH,Ao as attachCellEditing,So as buildCellEditor,To as buildDateEditor,ko as buildHeaderMenu,Pl as createGrid,Eo as measureBestFitWidth,Lo as openConfirmDialog};
|