@alaarab/ogrid-vue 2.8.1 → 2.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/esm/index.js CHANGED
@@ -1 +1 @@
1
- import {injectGlobalStyles,Z_INDEX,getStatusBarParts,measureRange,flattenColumns,getMultiSelectFilterFields,deriveFilterOptionsFromData,shouldUseWorkerSort,processClientSideData,processClientSideDataAsync,validateColumns,validateRowIds,computeRowSelectionState,parseTsvClipboard,applyPastedValues,applyCutClear,normalizeSelectionRange,applyCellDeletion,computeTabNavigation,computeArrowNavigation,buildCellIndex,applyFillValues,UndoRedoStack,CHECKBOX_COLUMN_WIDTH,estimateHeaderMinWidth,CELL_PADDING,measureColumnContentWidth,resolveResponsiveConfig,applyResponsiveHiding,DEFAULT_MIN_COLUMN_WIDTH,computeAggregations,getDataGridStatusBarConfig,formatDateForDisplay,DEFAULT_DATE_FORMAT,getPinStateForColumn,validateVirtualScrollConfig,computeVisibleRange,computeTotalHeight,computeVisibleColumnRange,getScrollTopForRow,partitionColumnsForVirtualization,formatCellReference,buildHeaderRows,indexToColumnLetter,ROW_NUMBER_COLUMN_ID,ROW_NUMBER_COLUMN_WIDTH,getHeaderFilterConfig,getDateInputPlaceholder,getCellRenderDescriptor,buildInlineEditorProps,buildPopoverEditorProps,resolveCellDisplayContent,resolveCellStyle,handleBooleanCellPointerDown,parseUserInputDate,rangesEqual,cellIndexKey,formatSelectionAsTsv,calculateDropTarget,reorderColumnArray,parseValue,computeNextSortState,mergeFilter,getCellValue,columnLetterToIndex,applyRangeRowSelection,ROW_NUMBER_COLUMN_MIN_WIDTH,createGridDataAccessor,computeAutoScrollSpeed}from'@alaarab/ogrid-core';export{AUTOSIZE_EXTRA_PX,AUTOSIZE_MAX_PX,CELL_PADDING,CHECKBOX_COLUMN_WIDTH,COLUMN_HEADER_MENU_ITEMS,CellDescriptorCache,DEFAULT_DEBOUNCE_MS,DEFAULT_MIN_COLUMN_WIDTH,GRID_BORDER_RADIUS,GRID_CONTEXT_MENU_ITEMS,MAX_PAGE_BUTTONS,PAGE_SIZE_OPTIONS,PEOPLE_SEARCH_DEBOUNCE_MS,RESPONSIVE_BREAKPOINTS,ROW_NUMBER_COLUMN_ID,ROW_NUMBER_COLUMN_MIN_WIDTH,ROW_NUMBER_COLUMN_WIDTH,SIDEBAR_TRANSITION_MS,UndoRedoStack,Z_INDEX,applyCellDeletion,applyCutClear,applyFillValues,applyPastedValues,applyRangeRowSelection,applyResponsiveHiding,areGridRowPropsEqual,booleanParser,buildCellIndex,buildCsvHeader,buildCsvRows,buildHeaderRows,buildInlineEditorProps,buildPopoverEditorProps,calculateDropTarget,clampSelectionToBounds,columnLetterToIndex,computeAggregations,computeArrowNavigation,computeAutoScrollSpeed,computeNextSortState,computeRowSelectionState,computeTabNavigation,computeTotalHeight,computeVisibleColumnRange,computeVisibleRange,createGridDataAccessor,createSortFilterWorker,currencyParser,dateParser,debounce,deriveFilterOptionsFromData,emailParser,escapeCsvValue,exportToCsv,extractValueMatrix,findCtrlArrowTarget,flattenColumns,formatCellReference,formatCellValueForTsv,formatSelectionAsTsv,formatShortcut,getCellRenderDescriptor,getCellValue,getColumnHeaderMenuItems,getContextMenuHandlers,getDataGridStatusBarConfig,getFilterField,getHeaderFilterConfig,getMultiSelectFilterFields,getPaginationViewModel,getPinStateForColumn,getResponsiveHiddenColumns,getScrollTopForRow,getStatusBarParts,handleBooleanCellPointerDown,indexToColumnLetter,injectGlobalStyles,isColumnEditable,isFilterConfig,isInSelectionRange,isRowInRange,measureColumnContentWidth,measureRange,mergeFilter,normalizeSelectionRange,numberParser,parseTsvClipboard,parseValue,partitionColumnsForVirtualization,processClientSideData,processClientSideDataAsync,rangesEqual,reorderColumnArray,resolveCellDisplayContent,resolveCellStyle,resolveResponsiveConfig,terminateSortFilterWorker,toUserLike,triggerCsvDownload,validateColumns,validateRowIds,validateVirtualScrollConfig}from'@alaarab/ogrid-core';import {FORMULA_BAR_STYLES,handleFormulaBarKeyDown,FORMULA_REF_COLORS,deriveFormulaBarText,extractFormulaReferences,processFormulaBarCommit,FormulaEngine}from'@alaarab/ogrid-core/formula';export{CIRC_ERROR,DIV_ZERO_ERROR,DependencyGraph,FORMULA_BAR_CSS,FORMULA_BAR_STYLES,FORMULA_REF_COLORS,FormulaEngine,FormulaError,FormulaEvaluator,GENERAL_ERROR,NAME_ERROR,NA_ERROR,REF_ERROR,VALUE_ERROR,adjustFormulaReferences,canInsertReference,createBuiltInFunctions,deriveFormulaBarText,extractFormulaReferences,flattenArgs,formatAddress,formulaToString,fromCellKey,handleFormulaBarKeyDown,insertReferenceAtCursor,isFormulaError,parse,parseCellRef,parseRange,processFormulaBarCommit,toBoolean,toCellKey,toNumber,tokenize}from'@alaarab/ogrid-core/formula';import {defineComponent,ref,computed,onMounted,watch,toValue,onUnmounted,h,shallowRef,isRef,triggerRef,nextTick,Teleport,isReadonly,unref,customRef}from'vue';var Hn=defineComponent({name:"MarchingAntsOverlay",props:{containerRef:{type:Object,required:true},selectionRange:{type:Object,default:null},copyRange:{type:Object,default:null},cutRange:{type:Object,default:null},colOffset:{type:Number,required:true},items:{type:Array,required:true},visibleColumns:{type:Array,default:void 0},columnSizingOverrides:{type:Object,required:true},columnOrder:{type:Array,default:void 0}},setup(e){let l=ref(null),t=ref(null),n=0,i,f=computed(()=>e.copyRange??e.cutRange),c=()=>{let s=toValue(e.containerRef);if(!s){l.value=null,t.value=null;return}l.value=e.selectionRange?measureRange(s,e.selectionRange,e.colOffset):null,t.value=f.value?measureRange(s,f.value,e.colOffset):null;};onMounted(()=>{injectGlobalStyles("ogrid-marching-ants-keyframes","@keyframes ogrid-marching-ants{to{stroke-dashoffset:-8}}");}),watch([()=>e.selectionRange,f,()=>toValue(e.containerRef),()=>e.items,()=>e.visibleColumns,()=>e.columnSizingOverrides,()=>e.columnOrder],()=>{if(!e.selectionRange&&!f.value){l.value=null,t.value=null;return}n=requestAnimationFrame(c);let s=toValue(e.containerRef);s&&(i?.disconnect(),i=new ResizeObserver(c),i.observe(s));},{immediate:true}),onUnmounted(()=>{cancelAnimationFrame(n),i?.disconnect();});let a=computed(()=>{let s=e.selectionRange,m=f.value;return s!=null&&m!=null&&s.startRow===m.startRow&&s.startCol===m.startCol&&s.endRow===m.endRow&&s.endCol===m.endCol});return ()=>!l.value&&!t.value?null:h("div",{style:{position:"relative"}},[l.value&&!a.value&&!(e.selectionRange&&e.selectionRange.startRow===e.selectionRange.endRow&&e.selectionRange.startCol===e.selectionRange.endCol)?h("svg",{style:{position:"absolute",top:`${l.value.top}px`,left:`${l.value.left}px`,width:`${l.value.width}px`,height:`${l.value.height}px`,pointerEvents:"none",zIndex:Z_INDEX.SELECTION_OVERLAY,overflow:"visible"},"aria-hidden":"true"},[h("rect",{x:1,y:1,width:Math.max(0,l.value.width-2),height:Math.max(0,l.value.height-2),fill:"none",stroke:"var(--ogrid-selection-color, #217346)","stroke-width":2})]):null,t.value?h("svg",{style:{position:"absolute",top:`${t.value.top}px`,left:`${t.value.left}px`,width:`${t.value.width}px`,height:`${t.value.height}px`,pointerEvents:"none",zIndex:Z_INDEX.CLIPBOARD_OVERLAY,overflow:"visible"},"aria-hidden":"true"},[h("rect",{x:1,y:1,width:Math.max(0,t.value.width-2),height:Math.max(0,t.value.height-2),fill:"none",stroke:"var(--ogrid-selection-color, #217346)","stroke-width":2,"stroke-dasharray":"4 4",style:{animation:"ogrid-marching-ants 0.5s linear infinite"}})]):null])}});var Bn=defineComponent({name:"StatusBar",props:{totalCount:{type:Number,required:true},filteredCount:{type:Number,default:void 0},selectedCount:{type:Number,default:void 0},selectedCellCount:{type:Number,default:void 0},aggregation:{type:Object,default:void 0},suppressRowCount:{type:Boolean,default:false}},setup(e){return ()=>{let l=getStatusBarParts(e);return h("div",{role:"status","aria-live":"polite",style:{marginTop:"auto",padding:"6px 12px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",backgroundColor:"var(--ogrid-header-bg, rgba(0,0,0,0.04))",display:"flex",alignItems:"center",gap:"16px",fontSize:"0.875rem",lineHeight:"20px",minHeight:"33px",boxSizing:"border-box"}},l.map((t,n)=>h("span",{key:t.key,style:{display:"inline-flex",alignItems:"center",gap:"4px",...n<l.length-1?{marginRight:"16px",borderRight:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",paddingRight:"16px"}:{}}},[h("span",{style:{color:"var(--ogrid-fg-secondary, rgba(0,0,0,0.6))"}},t.label),h("span",{style:{fontWeight:"600"}},t.value.toLocaleString())])))}}});var Vn=defineComponent({name:"FormulaBar",props:{cellRef:{type:[String,null],default:null},formulaText:{type:String,required:true},isEditing:{type:Boolean,required:true}},emits:["inputChange","commit","cancel","startEditing"],setup(e,{emit:l}){let t=ref(null);return watch(()=>e.isEditing,n=>{n&&t.value&&t.value.focus();}),()=>h("div",{style:FORMULA_BAR_STYLES.bar,role:"toolbar","aria-label":"Formula bar"},[h("div",{style:FORMULA_BAR_STYLES.nameBox,"aria-label":"Active cell reference"},e.cellRef??"\u2014"),h("div",{style:FORMULA_BAR_STYLES.fxLabel,"aria-hidden":"true"},"fx"),h("input",{ref:t,type:"text",style:FORMULA_BAR_STYLES.input,value:e.formulaText,readonly:!e.isEditing,onInput:n=>l("inputChange",n.target.value),onKeydown:n=>handleFormulaBarKeyDown(n.key,()=>n.preventDefault(),()=>l("commit"),()=>l("cancel")),onClick:()=>{e.isEditing||l("startEditing");},onDblclick:()=>{e.isEditing||l("startEditing");},"aria-label":"Formula input",spellcheck:false,autocomplete:"off"})])}});var dl={display:"flex",alignItems:"center",borderTop:"1px solid var(--ogrid-border, #e0e0e0)",background:"var(--ogrid-header-bg, #f5f5f5)",minHeight:"30px",overflowX:"auto",overflowY:"hidden",gap:"0",fontSize:"12px"},cl={background:"none",border:"none",cursor:"pointer",padding:"4px 10px",fontSize:"16px",lineHeight:"22px",color:"var(--ogrid-fg-secondary, #666)",flexShrink:0},fo={background:"none",border:"none",borderBottom:"2px solid transparent",cursor:"pointer",padding:"4px 16px",fontSize:"12px",lineHeight:"22px",color:"var(--ogrid-fg, #242424)",whiteSpace:"nowrap",position:"relative"},ml={...fo,fontWeight:600,borderBottomColor:"var(--ogrid-primary, #217346)",background:"var(--ogrid-bg, #fff)"},zn=defineComponent({name:"SheetTabs",props:{sheets:{type:Array,required:true},activeSheet:{type:String,required:true},showAddButton:{type:Boolean,default:false}},emits:["sheetChange","sheetAdd"],setup(e,{emit:l}){return ()=>h("div",{style:dl,role:"tablist","aria-label":"Sheet tabs"},[e.showAddButton?h("button",{type:"button",style:cl,onClick:()=>l("sheetAdd"),title:"Add sheet","aria-label":"Add sheet"},"+"):null,...e.sheets.map(t=>{let n=t.id===e.activeSheet,i=n?ml:fo,f=n&&t.color?{...i,borderBottomColor:t.color}:i;return h("button",{key:t.id,type:"button",role:"tab","aria-selected":n,style:f,onClick:()=>l("sheetChange",t.id)},t.name)})])}});function gl(e,l,t){let n=l.col+t,i=(l.endCol??l.col)+t,f=l.endRow??l.row,c=e.querySelector(`[data-row-index="${l.row}"][data-col-index="${n}"]`),a=e.querySelector(`[data-row-index="${f}"][data-col-index="${i}"]`);if(!c||!a)return null;let s=e.getBoundingClientRect(),m=c.getBoundingClientRect(),g=a.getBoundingClientRect();return {top:Math.round(m.top-s.top),left:Math.round(m.left-s.left),width:Math.round(g.right-m.left),height:Math.round(g.bottom-m.top),color:FORMULA_REF_COLORS[l.colorIndex%FORMULA_REF_COLORS.length]}}var Nn=defineComponent({name:"FormulaRefOverlay",props:{containerEl:{type:Object,default:null},references:{type:Array,required:true},colOffset:{type:Number,required:true}},setup(e){let l=ref([]),t=0;function n(){let i=e.containerEl,f=e.references;if(!i||f.length===0){l.value=[];return}let c=[];for(let a of f){let s=gl(i,a,e.colOffset);s&&c.push(s);}l.value=c;}return watch(()=>[e.references,e.containerEl,e.colOffset],()=>{if(cancelAnimationFrame(t),!e.containerEl||e.references.length===0){l.value=[];return}t=requestAnimationFrame(n);},{immediate:true}),()=>l.value.length===0?null:l.value.map((i,f)=>h("svg",{key:f,style:{position:"absolute",top:`${i.top}px`,left:`${i.left}px`,width:`${i.width}px`,height:`${i.height}px`,pointerEvents:"none",zIndex:3,overflow:"visible"},"aria-hidden":"true"},[h("rect",{x:"1",y:"1",width:Math.max(0,i.width-2),height:Math.max(0,i.height-2),fill:"none",stroke:i.color,"stroke-width":"2",style:"shape-rendering: crispEdges"})]))}});function Wt(e,l){let t=ref({}),n=ref({}),i=computed(()=>[...l.value].sort().join(",")),f=async()=>{let c=e.value,a=l.value,s="fetchFilterOptions"in c&&typeof c.fetchFilterOptions=="function"?c.fetchFilterOptions.bind(c):void 0;if(!s){t.value={},n.value={};return}let m={};a.forEach(d=>{m[d]=true;}),n.value=m;let g={};await Promise.all(a.map(async d=>{try{g[d]=await s(d);}catch{g[d]=[];}})),t.value=g,n.value={};};return watch([e,i],()=>{f().catch(()=>{});},{immediate:true}),{filterOptions:t,loadingOptions:n}}function dt(e){let l=unref(e);return customRef((t,n)=>({get(){return isRef(e)&&(l=e.value),l},set(i){l=i,n();}}))}function Co(e){let{formulas:l,items:t,flatColumns:n,initialFormulas:i,onFormulaRecalc:f,formulaFunctions:c,namedRanges:a,sheets:s}=e,m=dt(t),g=dt(n),d=dt(f),u=shallowRef(null),C=false,r=computed(()=>l?.value??false);function v(){return createGridDataAccessor(m.value,g.value)}watch(r,x=>{if(x&&!u.value){if(u.value=new FormulaEngine({customFunctions:c,namedRanges:a}),s)for(let[P,O]of Object.entries(s))u.value.registerSheet(P,O);if(i&&!C){C=true;let P=v(),O=u.value.loadFormulas(i,P);O.updatedCells.length>0&&d.value?.(O);}}else !x&&u.value&&(u.value=null);},{immediate:true});function R(x,P){return u.value?.getValue(x,P)}function D(x,P){return u.value?.hasFormula(x,P)??false}function T(x,P){return u.value?.getFormula(x,P)}function S(x,P,O){if(!u.value)return;let M=v(),b=u.value.setFormula(x,P,O,M);b.updatedCells.length>0&&d.value?.(b);}function A(x,P){if(!u.value)return;let O=v(),M=u.value.onCellChanged(x,P,O);M.updatedCells.length>0&&d.value?.(M);}function B(x,P){return u.value?.getPrecedents(x,P)??[]}function V(x,P){return u.value?.getDependents(x,P)??[]}function F(x,P){return u.value?.getAuditTrail(x,P)??null}return {enabled:r,getFormulaValue:R,hasFormula:D,getFormula:T,setFormula:S,onCellChanged:A,getPrecedents:B,getDependents:V,getAuditTrail:F}}function _t(e){let{activeCol:l,activeRow:t,activeCellRef:n,getFormula:i,getRawValue:f,setFormula:c,onCellValueChanged:a}=e,s=ref(false),m=ref(""),g=ref(false),d=computed(()=>deriveFormulaBarText(l.value,t.value,i,f));watch([l,t],()=>{s.value=false,g.value=false;});let u=()=>{m.value=d.value,s.value=true,g.value=true;},C=T=>{m.value=T;},r=()=>{let T=l.value,S=t.value;T==null||S==null||!c||(processFormulaBarCommit(m.value,T,S,c,a),s.value=false,g.value=false);},v=()=>{s.value=false,g.value=false,m.value="";},R=computed(()=>s.value?m.value:d.value),D=computed(()=>extractFormulaReferences(R.value));return {cellRef:n,formulaText:R,isEditing:s,onInputChange:C,onCommit:r,onCancel:v,startEditing:u,referencedCells:D,isFormulaBarEditing:g}}var ho=["columns","filters"];function Mt(e){let{config:l}=e,t=l!=null&&l!==false,n=(()=>{if(!t||l===true)return {panels:ho,position:"right",defaultPanel:null};let m=l;return {panels:m.panels??ho,position:m.position??"right",defaultPanel:m.defaultPanel??null}})(),i=ref(n.defaultPanel),f=m=>{i.value=m;},c=m=>{i.value=i.value===m?null:m;},a=()=>{i.value=null;},s=computed(()=>i.value!==null);return {isEnabled:t,activePanel:i,setActivePanel:f,panels:n.panels,position:n.position,isOpen:s,toggle:c,close:a}}var $l=25,ql={};function $t(e){let l=computed(()=>{let o=e.value;return {columns:o.columns,columnOrder:o.columnOrder,onColumnOrderChange:o.onColumnOrderChange,onColumnResized:o.onColumnResized,onAutosizeColumn:o.onAutosizeColumn,onColumnPinned:o.onColumnPinned,columnChooser:o.columnChooser}}),t=computed(()=>{let o=e.value,k="data"in o?o.data:void 0,le="dataSource"in o?o.dataSource:void 0;return k&&le&&console.warn("[OGrid] Both data and dataSource provided. dataSource takes precedence."),{getRowId:o.getRowId,data:k,dataSource:le}}),n=computed(()=>{let o=e.value;return {page:o.page,pageSize:o.pageSize,sort:o.sort,filters:o.filters,visibleColumns:o.visibleColumns,isLoading:o.isLoading}}),i=computed(()=>{let o=e.value;return {onPageChange:o.onPageChange,onPageSizeChange:o.onPageSizeChange,onSortChange:o.onSortChange,onFiltersChange:o.onFiltersChange,onVisibleColumnsChange:o.onVisibleColumnsChange,onFirstDataRendered:o.onFirstDataRendered,onError:o.onError}}),f=computed(()=>{let o=e.value;return {defaultPageSize:o.defaultPageSize??$l,defaultSortBy:o.defaultSortBy,defaultSortDirection:o.defaultSortDirection??"asc",entityLabelPlural:o.entityLabelPlural??"items"}}),c=computed(()=>l.value.columnChooser===false?"none":l.value.columnChooser==="sidebar"?"sidebar":"toolbar"),a=computed(()=>flattenColumns(l.value.columns)),s=computed(()=>t.value.dataSource!=null),m=computed(()=>!s.value),g=ref([]),d=ref(false),u=computed(()=>t.value.data??g.value),C=computed(()=>n.value.isLoading??d.value),r=computed(()=>f.value.defaultSortBy??a.value[0]?.columnId??""),v=ref(1),R=ref(f.value.defaultPageSize),D=ref({field:r.value,direction:f.value.defaultSortDirection}),T=ref({}),S=ref(void 0),A=ref((()=>{let o=a.value.filter(k=>k.defaultVisible!==false).map(k=>k.columnId);return new Set(o.length>0?o:a.value.map(k=>k.columnId))})()),B=ref({}),V={};for(let o of flattenColumns(e.value.columns))o.pinned&&(V[o.columnId]=o.pinned);let F=ref(V),x=computed(()=>n.value.page??v.value),P=computed(()=>n.value.pageSize??R.value),O=computed(()=>n.value.sort??D.value),M=computed(()=>n.value.filters??T.value),b=computed(()=>l.value.columnOrder??S.value),w=computed(()=>n.value.visibleColumns??A.value),y=o=>{n.value.page===void 0&&(v.value=o),i.value.onPageChange?.(o);},E=o=>{n.value.pageSize===void 0&&(R.value=o),i.value.onPageSizeChange?.(o),y(1);},h$1=ref(0),p=o=>{n.value.sort===void 0&&(D.value=o),i.value.onSortChange?.(o),y(1),h$1.value++;},I=o=>{n.value.filters===void 0&&(T.value=o),i.value.onFiltersChange?.(o),y(1);},H=o=>{n.value.visibleColumns===void 0&&(A.value=o),i.value.onVisibleColumnsChange?.(o);},_=(o,k)=>{p(computeNextSortState(O.value,o,k));},K=(o,k)=>{I(mergeFilter(M.value,o,k));},U=(o,k)=>{let le=new Set(w.value);k?le.add(o):le.delete(o),H(le);},X=ref(new Set),J=computed(()=>e.value.selectedRows),Y=computed(()=>J.value??X.value),q=o=>{J.value===void 0&&(X.value=new Set(o.selectedRowIds)),e.value.onSelectionChange?.(o);},G=computed(()=>getMultiSelectFilterFields(a.value)),Z=computed(()=>t.value.dataSource??{fetchFilterOptions:void 0}),{filterOptions:ne,loadingOptions:we}=Wt(Z,G),Fe=computed(()=>t.value.dataSource?.fetchFilterOptions!=null),Ke=computed(()=>Fe.value?ne.value:deriveFilterOptionsFromData(u.value,a.value)),Pe=computed(()=>shouldUseWorkerSort(e.value.workerSort,u.value.length,{columns:a.value,filters:M.value,sortBy:O.value.field})),xe=null,Ne=-1,Be=null,We=null,$e=-1,tt=computed(()=>{if(!m.value||Pe.value)return null;let o=u.value,k=a.value,le=M.value,Re=h$1.value,st=O.value.field,ut=O.value.direction,Xe=Re!==Ne||le!==Be||k!==We||o.length!==$e,fe;if(Xe||xe===null){Ne=Re,Be=le,We=k,$e=o.length;let be=processClientSideData(o,k,le,st,ut),Ae=new Map;for(let pe=0;pe<o.length;pe++)Ae.set(o[pe],pe);xe=be.map(pe=>{let De=Ae.get(pe);return De!==void 0?De:-1}).filter(pe=>pe!==-1),fe=be;}else fe=xe.map(be=>o[be]).filter(be=>be!==void 0);let vt=fe.length,je=(x.value-1)*P.value;return {items:fe.slice(je,je+P.value),totalCount:vt}}),nt=ref(null),mt=0,Ue=null,ft=-1,Ie=null,Ct=null,ae=-1;watch([m,Pe,u,a,M,h$1,x,P],()=>{if(!m.value||!Pe.value)return;let o=u.value,k=a.value,le=M.value,Re=h$1.value,st=O.value.field,ut=O.value.direction,Xe=x.value,fe=P.value,vt=++mt;if(Re!==ft||le!==Ie||k!==Ct||o.length!==ae||Ue===null)ft=Re,Ie=le,Ct=k,ae=o.length,Ue=null,processClientSideDataAsync(o,k,le,st,ut).then(Ce=>{if(vt!==mt||_e)return;let be=new Map;for(let L=0;L<o.length;L++)be.set(o[L],L);Ue=Ce.map(L=>{let z=be.get(L);return z!==void 0?z:-1}).filter(L=>L!==-1);let Ae=Ce.length,pe=(Xe-1)*fe,De=Ce.slice(pe,pe+fe);nt.value={items:De,totalCount:Ae};}).catch(()=>{if(vt!==mt||_e)return;let Ce=processClientSideData(o,k,le,st,ut),be=new Map;for(let L=0;L<o.length;L++)be.set(o[L],L);Ue=Ce.map(L=>{let z=be.get(L);return z!==void 0?z:-1}).filter(L=>L!==-1);let Ae=Ce.length,pe=(Xe-1)*fe,De=Ce.slice(pe,pe+fe);nt.value={items:De,totalCount:Ae};});else {let Ce=Ue.map(De=>o[De]).filter(De=>De!==void 0),be=Ce.length,Ae=(Xe-1)*fe,pe=Ce.slice(Ae,Ae+fe);nt.value={items:pe,totalCount:be};}},{immediate:true});let Oe=computed(()=>{let o=tt.value;return o||nt.value}),ot=ref([]),lt=ref(0),Ee=ref(false),rt=0,at=null,_e=false,ht=ref(0),Rt=()=>{if(!s.value||!t.value.dataSource){s.value||(Ee.value=false);return}let o=++rt;at?.abort();let k=new AbortController;at=k,Ee.value=true,t.value.dataSource.fetchPage({page:x.value,pageSize:P.value,sort:{field:O.value.field,direction:O.value.direction},filters:M.value,signal:k.signal}).then(le=>{o!==rt||_e||k.signal.aborted||(ot.value=le.items,lt.value=le.totalCount);}).catch(le=>{o!==rt||_e||k.signal.aborted||(i.value.onError?.(le),ot.value=[],lt.value=0);}).finally(()=>{o===rt&&!_e&&!k.signal.aborted&&(Ee.value=false);});};onMounted(()=>{validateColumns(a.value),Rt();}),watch([()=>t.value.dataSource,x,P,()=>O.value.field,()=>O.value.direction,M,ht],()=>{Rt();}),onUnmounted(()=>{_e=true,at?.abort(),at=null;});let Ve=computed(()=>m.value&&Oe.value?Oe.value.items:ot.value),pt=computed(()=>m.value&&Oe.value?Oe.value.totalCount:lt.value),it=computed(()=>!!e.value.formulas),bt=ref(0),It=o=>{bt.value+=1,e.value.onFormulaRecalc?.(o);},ve=Co({formulas:it,items:Ve,flatColumns:a,initialFormulas:e.value.initialFormulas,onFormulaRecalc:It,formulaFunctions:e.value.formulaFunctions,namedRanges:e.value.namedRanges,sheets:e.value.sheets}),St=false,Tt=false;watch(Ve,o=>{!St&&o.length>0&&(St=true,i.value.onFirstDataRendered?.()),!Tt&&o.length>0&&(Tt=true,validateRowIds(o,t.value.getRowId));});let qe=computed(()=>Object.values(M.value).some(o=>o!==void 0)),yt=computed(()=>a.value.map(o=>({columnId:o.columnId,name:o.name,required:o.required===true}))),Pt=computed(()=>{let o=e.value.statusBar;if(!o)return;if(typeof o=="object")return o;let k=m.value?t.value.data?.length??0:lt.value,le=pt.value;return {totalCount:k,filteredCount:qe.value?le:void 0,selectedCount:Y.value.size,suppressRowCount:true}}),Et=(o,k)=>{B.value={...B.value,[o]:k},l.value.onColumnResized?.(o,k);},te=(o,k)=>{B.value={...B.value,[o]:k},(l.value.onAutosizeColumn??l.value.onColumnResized)?.(o,k);},Q=(o,k)=>{if(k===null){let{[o]:le,...Re}=F.value;F.value=Re;}else F.value={...F.value,[o]:k};l.value.onColumnPinned?.(o,k);},re=shallowRef(Mt({config:e.value.sideBar}));watch(()=>e.value.sideBar,o=>{re.value=Mt({config:o});});let me=computed(()=>a.value.filter(o=>o.filterable&&o.filterable.type).map(o=>({columnId:o.columnId,name:o.name,filterField:o.filterable?.filterField??o.columnId,filterType:o.filterable?.type}))),se=computed(()=>{let o=re.value;if(!o.isEnabled)return null;o.activePanel.value;o.isOpen.value;return {get activePanel(){return o.activePanel.value},onPanelChange:o.setActivePanel,panels:o.panels,position:o.position,get isOpen(){return o.isOpen.value},toggle:o.toggle,close:o.close,columns:yt.value,visibleColumns:w.value,onVisibilityChange:U,onSetVisibleColumns:H,filterableColumns:me.value,filters:M.value,onFilterChange:K,filterOptions:Ke.value}}),Me=()=>I({}),ye=computed(()=>s.value&&Ee.value||C.value),he=ref(null),ge=ref(null),wt=o=>{if(he.value=o,o){let k=o.match(/^([A-Z]+)(\d+)$/);k?ge.value={col:columnLetterToIndex(k[1]),row:parseInt(k[2],10)-1}:ge.value=null;}else ge.value=null;},Dt=computed(()=>ge.value?.col??null),Un=computed(()=>ge.value?.row??null),On=(o,k)=>{let le=Ve.value,Re=a.value;if(!(k<0||k>=le.length||o<0||o>=Re.length))return getCellValue(le[k],Re[o])},ke=_t({activeCol:Dt,activeRow:Un,activeCellRef:he,getFormula:ve.enabled.value?ve.getFormula:void 0,getRawValue:On,setFormula:ve.enabled.value?ve.setFormula:void 0}),Mn=computed(()=>{let o=e.value,k=t.value.dataSource;return {items:Ve.value,columns:l.value.columns,getRowId:t.value.getRowId,sortBy:O.value.field,sortDirection:O.value.direction,onColumnSort:_,visibleColumns:w.value,columnOrder:b.value,onColumnOrderChange:l.value.onColumnOrderChange,onColumnResized:Et,onAutosizeColumn:te,onColumnPinned:Q,pinnedColumns:F.value,initialColumnWidths:B.value,editable:o.editable,cellSelection:o.cellSelection,onCellValueChanged:o.onCellValueChanged,onUndo:o.onUndo,onRedo:o.onRedo,canUndo:o.canUndo,canRedo:o.canRedo,rowSelection:o.rowSelection??"none",selectedRows:Y.value,onSelectionChange:q,showRowNumbers:o.showRowNumbers||o.cellReferences||o.formulas,showColumnLetters:!!(o.cellReferences||o.formulas),showNameBox:!!(o.cellReferences&&!o.formulas),onActiveCellChange:o.cellReferences||o.formulas?wt:void 0,currentPage:x.value,pageSize:P.value,statusBar:Pt.value,isLoading:ye.value,filters:M.value,onFilterChange:K,filterOptions:Ke.value,loadingFilterOptions:k?.fetchFilterOptions?we.value:ql,peopleSearch:k?.searchPeople,getUserByEmail:k?.getUserByEmail,layoutMode:o.layoutMode,suppressHorizontalScroll:o.suppressHorizontalScroll,stickyHeader:o.stickyHeader??true,columnReorder:o.columnReorder,responsiveColumns:o.responsiveColumns,virtualScroll:o.virtualScroll,rowHeight:o.rowHeight,density:o.density??"normal","aria-label":o["aria-label"],"aria-labelledby":o["aria-labelledby"],emptyState:{hasActiveFilters:qe.value,onClearAll:Me,message:o.emptyState?.message,render:o.emptyState?.render},formulas:o.formulas,formulaVersion:bt.value,...ve.enabled.value?{getFormulaValue:ve.getFormulaValue,hasFormula:ve.hasFormula,getFormula:ve.getFormula,setFormula:ve.setFormula,onFormulaCellChanged:ve.onCellChanged,getPrecedents:ve.getPrecedents,getDependents:ve.getDependents,getAuditTrail:ve.getAuditTrail}:{},formulaReferences:ke.referencedCells.value.length>0?ke.referencedCells.value:void 0}}),Ft=computed(()=>({page:x.value,pageSize:P.value,displayTotalCount:pt.value,setPage:y,setPageSize:E,pageSizeOptions:e.value.pageSizeOptions,entityLabelPlural:f.value.entityLabelPlural})),Ge=computed(()=>({columns:yt.value,visibleColumns:w.value,onVisibilityChange:U,placement:c.value})),Ut=computed(()=>{let o=e.value,k=!!o.formulas,le=!!o.cellReferences&&!k,Re=o.toolbar;le&&(Re=[h("div",{style:{display:"inline-flex",alignItems:"center",padding:"0 8px",fontFamily:"'Consolas', 'Courier New', monospace",fontSize:"12px",border:"1px solid rgba(0,0,0,0.12)",borderRadius:"3px",height:"24px",marginRight:"8px",background:"#fff",minWidth:"40px",color:"rgba(0,0,0,0.6)"},"aria-label":"Active cell reference"},he.value??"\u2014"),Re]);let st=k?h(Vn,{cellRef:ke.cellRef.value,formulaText:ke.formulaText.value,isEditing:ke.isEditing.value,onInputChange:ke.onInputChange,onCommit:ke.onCommit,onCancel:ke.onCancel,onStartEditing:ke.startEditing}):void 0,ut=o.sheetDefs&&o.sheetDefs.length>0&&o.activeSheet&&o.onSheetChange?h(zn,{sheets:o.sheetDefs,activeSheet:o.activeSheet,showAddButton:!!o.onSheetAdd,onSheetChange:o.onSheetChange,onSheetAdd:o.onSheetAdd??(()=>{})}):void 0;return {toolbar:Re,toolbarBelow:o.toolbarBelow,className:o.className,emptyState:o.emptyState,sideBarProps:se.value,fullScreen:o.fullScreen,formulaBar:st,sheetTabs:ut}}),kn=computed(()=>({hasActiveFilters:qe.value,setFilters:I})),An=computed(()=>({setRowData:o=>{s.value||(g.value=o);},setLoading:o=>{d.value=o;},getColumnState:()=>({visibleColumns:Array.from(w.value),sort:O.value,columnOrder:b.value??void 0,columnWidths:Object.keys(B.value).length>0?B.value:void 0,filters:Object.keys(M.value).length>0?M.value:void 0,pinnedColumns:Object.keys(F.value).length>0?F.value:void 0}),applyColumnState:o=>{o.visibleColumns&&H(new Set(o.visibleColumns)),o.sort&&p(o.sort),o.columnOrder&&(l.value.columnOrder===void 0&&(S.value=o.columnOrder),l.value.onColumnOrderChange?.(o.columnOrder)),o.columnWidths&&(B.value=o.columnWidths),o.filters&&I(o.filters),o.pinnedColumns&&(F.value=o.pinnedColumns);},setFilterModel:I,getSelectedRows:()=>Array.from(Y.value),setSelectedRows:o=>{J.value===void 0&&(X.value=new Set(o));},selectAll:()=>{let o=new Set(Ve.value.map(k=>t.value.getRowId(k)));J.value===void 0&&(X.value=o),e.value.onSelectionChange?.({selectedRowIds:Array.from(o),selectedItems:Ve.value});},deselectAll:()=>{J.value===void 0&&(X.value=new Set),e.value.onSelectionChange?.({selectedRowIds:[],selectedItems:[]});},clearFilters:()=>I({}),clearSort:()=>p({field:r.value,direction:f.value.defaultSortDirection}),resetGridState:o=>{I({}),p({field:r.value,direction:f.value.defaultSortDirection}),o?.keepSelection||(J.value===void 0&&(X.value=new Set),e.value.onSelectionChange?.({selectedRowIds:[],selectedItems:[]}));},getDisplayedRows:()=>Ve.value,refreshData:()=>{s.value&&ht.value++;},scrollToRow:()=>{},getColumnOrder:()=>b.value??a.value.map(o=>o.columnId),setColumnOrder:o=>{l.value.columnOrder===void 0&&(S.value=o),l.value.onColumnOrderChange?.(o);}}));return {dataGridProps:Mn,pagination:Ft,columnChooser:Ge,layout:Ut,filters:kn,api:An}}var Jl=25;function yo(e){let{columns:l,data:t,getRowId:n,initialSort:i,initialFilters:f={},initialPage:c=1,initialPageSize:a=Jl}=e,s=ref(i??{field:"",direction:"asc"}),m=ref({...f}),g=ref(c),d=ref(a),u=computed(()=>toValue(l)),C=computed(()=>toValue(t)),r=computed(()=>{let p=s.value.field;return processClientSideData(C.value,u.value,m.value,p||void 0,p?s.value.direction:void 0)}),v=computed(()=>r.value.length),R=computed(()=>Math.max(1,Math.ceil(v.value/d.value))),D=computed(()=>{let p=(g.value-1)*d.value;return r.value.slice(p,p+d.value)}),T=p=>{g.value=p;},S=p=>{d.value=p,g.value=1;},A=p=>{s.value=p,g.value=1;},B=p=>{A(computeNextSortState(s.value,p));},V=p=>{m.value=p,g.value=1;},F=(p,I)=>{V(mergeFilter(m.value,p,I));},x=computed(()=>Object.values(m.value).some(p=>p!==void 0)),P=computed(()=>{let p=new Map;for(let I of u.value)p.set(I.columnId,I);return p}),O=(p,I)=>{let H=P.value.get(I);if(H)return getCellValue(p,H)},M=p=>computed(()=>s.value.field!==p?"":s.value.direction==="asc"?"\u25B2":"\u25BC"),b=ref(new Set);return {columns:u,rows:D,totalCount:v,totalPages:R,allFilteredRows:r,sort:s,setSort:A,toggleSort:B,sortIndicator:M,filters:m,setFilters:V,setFilter:F,hasActiveFilters:x,page:g,pageSize:d,setPage:T,setPageSize:S,getRowId:n,getCellValue:O,selectedRowIds:b,isRowSelected:p=>b.value.has(n(p)),toggleRowSelection:p=>{let I=n(p),H=new Set(b.value);H.has(I)?H.delete(I):H.add(I),b.value=H;},selectAllOnPage:()=>{let p=new Set(b.value);for(let I of D.value)p.add(n(I));b.value=p;},clearSelection:()=>{b.value=new Set;}}}function qt(e){let{items:l,getRowId:t,rowSelection:n,controlledSelectedRows:i,onSelectionChange:f}=e,c=shallowRef(new Set),a=-1,s=computed(()=>{let r=i.value;return r!=null?r instanceof Set?r:new Set(r):c.value}),m=r=>{i.value!==void 0?isReadonly(i)||(i.value=r):c.value=r,f?.({selectedRowIds:Array.from(r),selectedItems:l.value.filter(v=>r.has(t(v)))});},g=(r,v,R,D)=>{if(n.value==="single"){m(v?new Set([r]):new Set),a=R;return}let T=l.value,S;D&&a>=0&&a!==R?S=applyRangeRowSelection(a,R,v,T,t,s.value):(S=new Set(s.value),v?S.add(r):S.delete(r)),a=R,m(S);},d=r=>{m(r?new Set(l.value.map(v=>t(v))):new Set);},u=computed(()=>computeRowSelectionState(s.value,l.value,t).allSelected),C=computed(()=>computeRowSelectionState(s.value,l.value,t).someSelected);return {selectedRowIds:s,updateSelection:m,handleRowCheckboxChange:g,handleSelectAll:d,allSelected:u,someSelected:C}}function Xt(e){let l=shallowRef(null),t=ref(void 0);return {editingCell:l,setEditingCell:f=>{if(f&&e?.scrollToRow&&e?.getRowIndex){let c=e.getRowIndex(f.rowId);c>=0&&e.scrollToRow(c,"center");}l.value=f;},pendingEditorValue:t,setPendingEditorValue:f=>{t.value=f;}}}function jt(e,l){let t=shallowRef(null),n=0,i=f=>{let c=t.value;c!==f&&(c&&f&&c.rowIndex===f.rowIndex&&c.columnIndex===f.columnIndex||(t.value=f));};return watch([t,()=>l?.value],()=>{if(n&&(cancelAnimationFrame(n),n=0),t.value==null||!e?.value||l?.value!=null)return;let{rowIndex:f,columnIndex:c}=t.value;n=requestAnimationFrame(()=>{n=0;let a=e.value;if(!a)return;let s=t.value;if(!s||s.rowIndex!==f||s.columnIndex!==c)return;let m=`[data-row-index="${f}"][data-col-index="${c}"]`,g=a.querySelector(m);if(g){let d=a.querySelector("thead"),u=d?d.getBoundingClientRect().height:0,C=a.getBoundingClientRect(),r=g.getBoundingClientRect(),v=C.top+u;r.top<v?a.scrollTop-=v-r.top:r.bottom>C.bottom&&(a.scrollTop+=r.bottom-C.bottom),a.scrollWidth>a.clientWidth&&(r.left<C.left?a.scrollLeft-=C.left-r.left:r.right>C.right&&(a.scrollLeft+=r.right-C.right)),document.activeElement!==g&&typeof g.focus=="function"&&g.focus({preventScroll:true});}});},{flush:"post"}),onUnmounted(()=>{n&&(cancelAnimationFrame(n),n=0);}),{activeCell:t,setActiveCell:i}}var jn="data-drag-range",At="data-drag-anchor",Se=40;function Yt(e){let l=dt(e),{wrapperRef:t,setActiveCell:n}=e,i=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,f=shallowRef(null),c=ref(false),a=ref(false),s=ref(false),m=false,g=null,d=0,u=null,C=null,r=null,v=h=>{rangesEqual(f.value,h)||(f.value=h);},R=(h,p,I)=>{if(h.button!==0)return;let H=i();if(I<H)return;h.preventDefault();let _=I-H,K=f.value;if(h.shiftKey&&K!=null)v(normalizeSelectionRange({startRow:K.startRow,startCol:K.startCol,endRow:p,endCol:_})),n({rowIndex:p,columnIndex:I});else {g={row:p,col:_},m=false;let U={startRow:p,startCol:_,endRow:p,endCol:_};v(U),u=U,n({rowIndex:p,columnIndex:I}),a.value=true,V(U);}},D=()=>{let{rowCount:h,visibleColCount:p}=l.value;h.value===0||p.value===0||(v({startRow:0,startCol:0,endRow:h.value-1,endCol:p.value-1}),n({rowIndex:0,columnIndex:i()}));},T=new Set,S=null,A=(h,p,I,H,_,K,U,X)=>{h.hasAttribute(jn)||h.setAttribute(jn,""),X&&p===X.row&&I===X.col?h.hasAttribute(At)||h.setAttribute(At,""):h.hasAttribute(At)&&h.removeAttribute(At);let Y=[];p===H&&Y.push("inset 0 2px 0 0 var(--ogrid-selection-color, #217346)"),p===_&&Y.push("inset 0 -2px 0 0 var(--ogrid-selection-color, #217346)"),I===K&&Y.push("inset 2px 0 0 0 var(--ogrid-selection-color, #217346)"),I===U&&Y.push("inset -2px 0 0 0 var(--ogrid-selection-color, #217346)"),h.style.boxShadow=Y.length>0?Y.join(", "):"",T.add(h);},B=h=>{h.removeAttribute(jn),h.removeAttribute(At),h.style.boxShadow="";},V=h=>{if(!t.value)return;let I=Math.min(h.startRow,h.endRow),H=Math.max(h.startRow,h.endRow),_=Math.min(h.startCol,h.endCol),K=Math.max(h.startCol,h.endCol),U=g,X=i();for(let Y of T){let q=parseInt(Y.getAttribute("data-row-index")??"",10),G=parseInt(Y.getAttribute("data-col-index")??"",10)-X;q>=I&&q<=H&&G>=_&&G<=K||(B(Y),T.delete(Y));}S||(S=buildCellIndex(t.value));let J=false;for(let Y=I;Y<=H;Y++)for(let q=_;q<=K;q++){let G=cellIndexKey(Y,q+X),Z=S?.get(G);Z&&!Z.isConnected&&!J&&(J=true,S=buildCellIndex(t.value),Z=S?.get(G)),Z&&Z.isConnected&&A(Z,Y,q,I,H,_,K,U);}},F=()=>{for(let h of T)B(h);T.clear(),S=null;},x=(h,p)=>{if(!g)return null;let H=document.elementFromPoint(h,p)?.closest?.("[data-row-index][data-col-index]");if(!H)return null;let _=parseInt(H.getAttribute("data-row-index")??"",10),K=parseInt(H.getAttribute("data-col-index")??"",10),U=i();if(Number.isNaN(_)||Number.isNaN(K)||K<U)return null;let X=K-U;return normalizeSelectionRange({startRow:g.row,startCol:g.col,endRow:_,endCol:X})},P=()=>{C&&(cancelAnimationFrame(C),C=null);},O=()=>{let h=t.value,p=r;if(!h||!p||!a.value){C=null;return}let I=h.getBoundingClientRect(),H=0,_=0;if(p.cy<I.top+Se?_=-computeAutoScrollSpeed(I.top+Se-p.cy):p.cy>I.bottom-Se&&(_=computeAutoScrollSpeed(p.cy-(I.bottom-Se))),p.cx<I.left+Se?H=-computeAutoScrollSpeed(I.left+Se-p.cx):p.cx>I.right-Se&&(H=computeAutoScrollSpeed(p.cx-(I.right-Se))),H===0&&_===0){C=null;return}h.scrollTop+=_,h.scrollLeft+=H;let K=x(p.cx,p.cy);K&&(u=K,V(K)),C=requestAnimationFrame(O);},M=()=>{let h=t.value;if(!h||!r||!a.value){P();return}let p=h.getBoundingClientRect(),I=0,H=0;if(r.cy<p.top+Se?H=-computeAutoScrollSpeed(p.top+Se-r.cy):r.cy>p.bottom-Se&&(H=computeAutoScrollSpeed(r.cy-(p.bottom-Se))),r.cx<p.left+Se?I=-computeAutoScrollSpeed(p.left+Se-r.cx):r.cx>p.right-Se&&(I=computeAutoScrollSpeed(r.cx-(p.right-Se))),I===0&&H===0){P();return}C||(C=requestAnimationFrame(O));},b=h=>{!a.value||!g||(m||(m=true,c.value=true,S=buildCellIndex(t.value)),r={cx:h.clientX,cy:h.clientY},M(),d&&cancelAnimationFrame(d),d=requestAnimationFrame(()=>{if(d=0,!r)return;let p=x(r.cx,r.cy);if(!p)return;let I=u;I&&I.startRow===p.startRow&&I.startCol===p.startCol&&I.endRow===p.endRow&&I.endCol===p.endCol||(u=p,V(p));}));},w=()=>{if(!a.value)return;P(),d&&(cancelAnimationFrame(d),d=0),a.value=false;let h=m;if(h){if(r){let I=x(r.cx,r.cy);I&&(u=I);}let p=u;if(p){v(p);let I=g;I&&n({rowIndex:I.row,columnIndex:I.col+i()});}}F(),u=null,r=null,g=null,h&&(c.value=false);},y=h=>{s.value||b(h);},E=()=>{s.value||w();};return onMounted(()=>{window.addEventListener("pointermove",y,true),window.addEventListener("pointerup",E,true);}),onUnmounted(()=>{s.value=true,window.removeEventListener("pointermove",y,true),window.removeEventListener("pointerup",E,true),d&&cancelAnimationFrame(d),P();}),{selectionRange:f,setSelectionRange:v,handleCellMouseDown:R,handleSelectAllCells:D,isDragging:c}}function Zt(){let e=shallowRef(null);return {contextMenuPosition:e,setContextMenuPosition:i=>{e.value=i;},handleCellContextMenu:i=>{i.preventDefault?.(),e.value={x:i.clientX,y:i.clientY};},closeContextMenu:()=>{e.value=null;}}}function Jt(e){let{items:l,visibleCols:t,selectionRange:n,activeCell:i,editable:f,onCellValueChanged:c,beginBatch:a,endBatch:s}=e,m=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,g=shallowRef(null),d=shallowRef(null),u=ref(null),C=()=>{let T=n.value,S=i.value,A=m();return T??(S!=null?{startRow:S.rowIndex,startCol:S.columnIndex-A,endRow:S.rowIndex,endCol:S.columnIndex-A}:null)},r=()=>{let T=C();if(T==null)return;let S=normalizeSelectionRange(T),A=formatSelectionAsTsv(l.value,t.value,S);u.value=A,d.value=S,navigator.clipboard.writeText(A).catch(B=>{typeof console<"u"&&console.warn("[OGrid] Clipboard write failed:",B);});};return {handleCopy:r,handleCut:()=>{if(f.value===false)return;let T=C();if(T==null||c.value==null)return;let S=normalizeSelectionRange(T);g.value=S,d.value=null,r(),d.value=null;},handlePaste:async()=>{if(f.value===false)return;let T=c.value;if(T==null)return;let S;try{S=await navigator.clipboard.readText();}catch{S="";}if(!S.trim()&&u.value!=null&&(S=u.value),!S.trim())return;let A=C(),B=A?A.startRow:0,V=A?A.startCol:0,F=l.value,x=t.value,P=parseTsvClipboard(S);a?.();let O=applyPastedValues(P,B,V,F,x);for(let M of O)T(M);if(g.value){let M=applyCutClear(g.value,F,x);for(let b of M)T(b);g.value=null;}s?.(),d.value=null;},cutRange:g,copyRange:d,clearClipboardRanges:()=>{d.value=null,g.value=null;}}}function Qt(e){let l=dt(e);return {handleGridKeyDown:n=>{let{data:i,state:f,handlers:c,features:a}=l.value,s=i.items.value,m=i.visibleCols.value,{getRowId:g}=i,d=isRef(i.colOffset)?i.colOffset.value:i.colOffset,u=i.hasCheckboxCol.value,C=i.visibleColumnCount.value,r=f.activeCell.value,v=f.selectionRange.value,R=f.editingCell.value,D=f.selectedRowIds.value,{setActiveCell:T,setSelectionRange:S,setEditingCell:A,handleRowCheckboxChange:B,handleCopy:V,handleCut:F,handlePaste:x,setContextMenu:P,onUndo:O,onRedo:M,clearClipboardRanges:b}=c,w=a.editable.value,y=a.onCellValueChanged.value,E=a.rowSelection.value,h=a.wrapperRef,p=a.scrollToRow,{fillDown:I}=a,H=a.onKeyDown?.value;if(H&&(H(n),n.defaultPrevented))return;let _=s.length-1,K=C-1+d;if(s.length===0)return;if(r===null){["ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Tab","Enter","Home","End","PageDown","PageUp"].includes(n.key)&&(T({rowIndex:0,columnIndex:d}),n.preventDefault());return}let{rowIndex:U,columnIndex:X}=r,J=X-d,Y=n.shiftKey,q=(G,Z)=>{if(G<0||G>=s.length||Z<0||Z>=m.length)return true;let ne=getCellValue(s[G],m[Z]);return ne==null||ne===""};switch(n.key){case "c":if(n.ctrlKey||n.metaKey){if(R!=null)break;n.preventDefault(),V();}break;case "x":if(n.ctrlKey||n.metaKey){if(R!=null)break;n.preventDefault(),F();}break;case "v":if(n.ctrlKey||n.metaKey){if(R!=null)break;n.preventDefault(),x();}break;case "d":if(n.ctrlKey||n.metaKey){if(R!=null)break;w!==false&&I&&(n.preventDefault(),I());}break;case "ArrowDown":case "ArrowUp":case "ArrowRight":case "ArrowLeft":{if(R!=null)break;n.preventDefault();let{newRowIndex:G,newColumnIndex:Z,newRange:ne}=computeArrowNavigation({direction:n.key,rowIndex:U,columnIndex:X,dataColIndex:J,colOffset:d,maxRowIndex:_,maxColIndex:K,visibleColCount:m.length,isCtrl:n.ctrlKey||n.metaKey,isShift:Y,selectionRange:v,isEmptyAt:q});S(ne),T({rowIndex:G,columnIndex:Z}),(n.key==="ArrowDown"||n.key==="ArrowUp")&&p?.(G,"center");break}case "Tab":{n.preventDefault();let{rowIndex:G,columnIndex:Z}=computeTabNavigation(U,X,_,K,d,n.shiftKey),ne=Z-d;S({startRow:G,startCol:ne,endRow:G,endCol:ne}),T({rowIndex:G,columnIndex:Z});break}case "Home":{n.preventDefault();let G=n.ctrlKey?0:U;S({startRow:G,startCol:0,endRow:G,endCol:0}),T({rowIndex:G,columnIndex:d});break}case "End":{n.preventDefault();let G=n.ctrlKey?_:U;S({startRow:G,startCol:C-1,endRow:G,endCol:C-1}),T({rowIndex:G,columnIndex:K});break}case "PageDown":case "PageUp":{n.preventDefault();let G=h.value,Z=10;if(G){let Fe=G.querySelector("tbody tr");Fe&&Fe.offsetHeight>0&&(Z=Math.max(1,Math.floor(G.clientHeight/Fe.offsetHeight)));}let ne=n.key==="PageDown"?1:-1,we=Math.max(0,Math.min(U+ne*Z,_));S(Y?{startRow:v?.startRow??U,startCol:v?.startCol??J,endRow:we,endCol:v?.endCol??J}:{startRow:we,startCol:J,endRow:we,endCol:J}),T({rowIndex:we,columnIndex:X}),p?.(we,"center");break}case "Enter":case "F2":{if(n.preventDefault(),J>=0&&J<m.length){let G=m[J],Z=s[U];if(Z&&G){let ne=G.editable===true||typeof G.editable=="function"&&G.editable(Z);w!==false&&ne&&y!=null&&A({rowId:g(Z),columnId:G.columnId});}}break}case "Escape":n.preventDefault(),R!=null?A(null):(b?.(),T(null),S(null));break;case " ":if(E!=="none"&&X===0&&u){n.preventDefault();let G=s[U];if(G){let Z=g(G),ne=D.has(Z);B(Z,!ne,U,n.shiftKey);}}break;case "z":(n.ctrlKey||n.metaKey)&&R==null&&(n.shiftKey&&M?(n.preventDefault(),M()):!n.shiftKey&&O&&(n.preventDefault(),O()));break;case "y":(n.ctrlKey||n.metaKey)&&R==null&&M&&(n.preventDefault(),M());break;case "a":if(n.ctrlKey||n.metaKey){if(R!=null)break;n.preventDefault(),s.length>0&&C>0&&(S({startRow:0,startCol:0,endRow:s.length-1,endCol:C-1}),T({rowIndex:0,columnIndex:d}));}break;case "Delete":case "Backspace":{if(R!=null||w===false||y==null)break;let G=v??(r!=null?{startRow:r.rowIndex,startCol:r.columnIndex-d,endRow:r.rowIndex,endCol:r.columnIndex-d}:null);if(G==null)break;n.preventDefault();let Z=applyCellDeletion(G,s,m);for(let ne of Z)y(ne);break}case "F10":if(n.shiftKey)if(n.preventDefault(),r!=null&&h.value){let G=`[data-row-index="${r.rowIndex}"][data-col-index="${r.columnIndex}"]`,Z=h.value.querySelector(G);if(Z){let ne=Z.getBoundingClientRect();P({x:ne.left+ne.width/2,y:ne.top+ne.height/2});}else P({x:100,y:100});}else P({x:100,y:100});break;}}}}var en="data-drag-range";function tn(e){let{items:l,visibleCols:t,editable:n,onCellValueChanged:i,selectionRange:f,setSelectionRange:c,setActiveCell:a,wrapperRef:s,beginBatch:m,endBatch:g,visibleRange:d}=e,u=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,C=shallowRef(null),r={endRow:0,endCol:0},v=0,R=null,D=null,T=null,S=F=>{C.value=F;},A=()=>{D&&(window.removeEventListener("pointermove",D,true),D=null),T&&(window.removeEventListener("pointerup",T,true),T=null),v&&(cancelAnimationFrame(v),v=0);};return watch(C,(F,x,P)=>{if(!F||n.value===false||!i.value||!s.value){A();return}r={endRow:F.startRow,endCol:F.startCol},R=null;let O=new Set,M=buildCellIndex(s.value),b=h=>{if(!s.value)return;let I=Math.min(h.startRow,h.endRow),H=Math.max(h.startRow,h.endRow),_=Math.min(h.startCol,h.endCol),K=Math.max(h.startCol,h.endCol),U=u();for(let X of O){let J=parseInt(X.getAttribute("data-row-index")??"",10),Y=parseInt(X.getAttribute("data-col-index")??"",10)-U;J>=I&&J<=H&&Y>=_&&Y<=K||(X.removeAttribute(en),O.delete(X));}for(let X=I;X<=H;X++)for(let J=_;J<=K;J++){let Y=cellIndexKey(X,J+U),q=M?.get(Y);q&&!q.isConnected&&(M=buildCellIndex(s.value),q=M.get(Y)),q&&(q.hasAttribute(en)||q.setAttribute(en,""),O.add(q));}},w=()=>{for(let h of O)h.removeAttribute(en);O.clear();},y=null,E=(h,p)=>{let H=document.elementFromPoint(h,p)?.closest?.("[data-row-index][data-col-index]");if(!H||!s.value?.contains(H))return null;let _=parseInt(H.getAttribute("data-row-index")??"",10),K=parseInt(H.getAttribute("data-col-index")??"",10),U=u();if(Number.isNaN(_)||Number.isNaN(K)||K<U)return null;let X=K-U;return normalizeSelectionRange({startRow:F.startRow,startCol:F.startCol,endRow:_,endCol:X})};D=h=>{y={cx:h.clientX,cy:h.clientY},v&&cancelAnimationFrame(v),v=requestAnimationFrame(()=>{if(v=0,!y)return;let p=E(y.cx,y.cy);if(!p)return;let I=R;I&&I.startRow===p.startRow&&I.startCol===p.startCol&&I.endRow===p.endRow&&I.endCol===p.endCol||(R=p,r={endRow:p.endRow,endCol:p.endCol},b(p));});},T=()=>{if(v&&(cancelAnimationFrame(v),v=0),y){let U=E(y.cx,y.cy);U&&(R=U,r={endRow:U.endRow,endCol:U.endCol});}w();let h=r,p=normalizeSelectionRange({startRow:F.startRow,startCol:F.startCol,endRow:h.endRow,endCol:h.endCol}),I=d?.value;I&&(p.startRow=Math.max(p.startRow,I.startIndex),p.endRow=Math.min(p.endRow,I.endIndex)),c(p),a({rowIndex:F.startRow,columnIndex:F.startCol+u()});let H=l.value,_=t.value,K=i.value;if(K){let U=applyFillValues(p,F.startRow,F.startCol,H,_);if(U.length>0){m?.();for(let X of U)K(X);g?.();}}C.value=null,R=null,A();},window.addEventListener("pointermove",D,true),window.addEventListener("pointerup",T,true),P(()=>{A();});}),onUnmounted(()=>A()),{fillDrag:C,setFillDrag:S,handleFillHandleMouseDown:F=>{F.preventDefault(),F.stopPropagation();let x=f.value;x&&(C.value={startRow:x.startRow,startCol:x.startCol});},fillDown:()=>{let F=f.value;if(!F||n.value===false||!i.value)return;let x=normalizeSelectionRange(F),P=l.value,O=t.value,M=i.value,b=applyFillValues(x,x.startRow,x.startCol,P,O);if(b.length>0){m?.();for(let w of b)M(w);g?.();}}}}function nn(e){let{onCellValueChanged:l,maxUndoDepth:t=100,afterChange:n}=e,i=new UndoRedoStack(t),f=ref(false),c=ref(false),a=()=>{f.value=i.canUndo,c.value=i.canRedo;};return {onCellValueChanged:l?C=>{i.record(C),i.isBatching||a(),l(C),i.isBatching||n?.();}:void 0,undo:()=>{if(!l)return;let C=i.undo();if(C){a();for(let r=C.length-1;r>=0;r--){let v=C[r];l({...v,oldValue:v.newValue,newValue:v.oldValue});}n?.();}},redo:()=>{if(!l)return;let C=i.redo();if(C){a();for(let r of C)l(r);n?.();}},canUndo:f,canRedo:c,beginBatch:()=>{i.beginBatch();},endBatch:()=>{i.endBatch(),a(),n?.();},maxUndoDepth:t}}function on(e){let{wrapperRef:l,visibleCols:t,flatColumns:n,hasCheckboxCol:i,initialColumnWidths:f,onColumnResized:c}=e,a=ref(0),s,m=()=>{let r=l.value;if(!r)return;let v=r.getBoundingClientRect(),R=window.getComputedStyle(r),D=(parseFloat(R.borderLeftWidth||"0")||0)+(parseFloat(R.borderRightWidth||"0")||0);a.value=Math.max(0,v.width-D);};onMounted(()=>{let r=l.value;r&&(typeof ResizeObserver<"u"&&(s=new ResizeObserver(m),s.observe(r)),m());}),onUnmounted(()=>{s?.disconnect();});let g=ref((()=>{if(!f)return {};let r={};for(let[v,R]of Object.entries(f))r[v]={widthPx:R};return r})()),d=r=>{g.value=r;},u=computed(()=>{let r=i.value?CHECKBOX_COLUMN_WIDTH:0;return t.value.reduce((v,R)=>v+(R.minWidth??estimateHeaderMinWidth(R.name))+CELL_PADDING,r)});watch(n,r=>{let v=new Set(r.map(S=>S.columnId)),R=g.value,D=Object.keys(R),T=D.filter(S=>v.has(S));if(T.length<D.length){let S={};for(let A of T)S[A]=R[A];g.value=S;}});let C=computed(()=>{let r=i.value?CHECKBOX_COLUMN_WIDTH:0;return t.value.reduce((v,R)=>{let D=g.value[R.columnId],T=R.minWidth??estimateHeaderMinWidth(R.name),S=D?D.widthPx:R.idealWidth??R.defaultWidth??T;return v+Math.max(T,S)+CELL_PADDING},r)});return {containerWidth:a,minTableWidth:u,desiredTableWidth:C,columnSizingOverrides:g,setColumnSizingOverrides:d,onColumnResized:c}}function ln(e){let{columns:l,pinnedColumns:t,onColumnPinned:n}=e,i={};for(let u of l.value)u.pinned&&(i[u.columnId]=u.pinned);let f=ref(i),c=computed(()=>t?.value??f.value);return {pinnedColumns:c,pinColumn:(u,C)=>{let r={...c.value,[u]:C};f.value=r,n?.(u,C);},unpinColumn:u=>{let{[u]:C,...r}=c.value;f.value=r,n?.(u,null);},isPinned:u=>c.value[u],computeLeftOffsets:(u,C,r,v,R)=>{let D={},T=v?R:0;for(let S of u)c.value[S.columnId]==="left"&&(D[S.columnId]=T,T+=C[S.columnId]??r);return D},computeRightOffsets:(u,C,r)=>{let v={},R=0;for(let D=u.length-1;D>=0;D--){let T=u[D];c.value[T.columnId]==="right"&&(v[T.columnId]=R,R+=C[T.columnId]??r);}return v}}}function an(e){let{columns:l,pinnedColumns:t,onPinColumn:n,onUnpinColumn:i,onSort:f,onColumnResized:c,onAutosizeColumn:a,sortBy:s,sortDirection:m}=e,g=ref(false),d=ref(null),u=ref(null),C=(E,h)=>{d.value=E,u.value=h,g.value=true;},r=()=>{g.value=false,d.value=null,u.value=null;},v=computed(()=>d.value?l.value.find(E=>E.columnId===d.value):void 0),R=computed(()=>d.value?t.value[d.value]:void 0),D=computed(()=>R.value!=="left"),T=computed(()=>R.value!=="right"),S=computed(()=>!!R.value),A=computed(()=>!d.value||!s?.value||s.value!==d.value?null:m?.value??null),B=computed(()=>v.value?.sortable!==false),V=ref(true);return {isOpen:g,openForColumn:d,anchorElement:u,open:C,close:r,handlePinLeft:()=>{d.value&&D.value&&(n(d.value,"left"),r());},handlePinRight:()=>{d.value&&T.value&&(n(d.value,"right"),r());},handleUnpin:()=>{d.value&&S.value&&(i(d.value),r());},handleSortAsc:()=>{d.value&&f&&(f(d.value,"asc"),r());},handleSortDesc:()=>{d.value&&f&&(f(d.value,"desc"),r());},handleClearSort:()=>{d.value&&f&&(f(d.value,null),r());},handleAutosizeThis:()=>{let E=a??c;if(!d.value||!E||!V.value)return;let h=v.value;E(d.value,measureColumnContentWidth(d.value,h?.minWidth)),r();},handleAutosizeAll:()=>{let E=a??c;E&&(l.value.forEach(h=>{E(h.columnId,measureColumnContentWidth(h.columnId,h.minWidth));}),r());},canPinLeft:D,canPinRight:T,canUnpin:S,currentSort:A,isSortable:B,isResizable:V}}var Je=()=>{},$r=async()=>{},qr=(e,l,t)=>{},Xr=e=>{},jr=e=>{};function un(e){let{props:l,wrapperRef:t}=e,n=computed(()=>l.value.items),i=l.value.getRowId,f=computed(()=>l.value.rowSelection??"none"),c=computed(()=>l.value.selectedRows),a=computed(()=>l.value.editable),s=computed(()=>l.value.cellSelection!==false),m=computed(()=>l.value.pinnedColumns),g=ref(0),d=()=>{g.value++;},u=nn({onCellValueChanged:l.value.onCellValueChanged,afterChange:d}),C=computed(()=>u.onCellValueChanged),r=computed(()=>flattenColumns(l.value.columns)),v=computed(()=>{let te=m.value;return !te||Object.keys(te).length===0?r.value:r.value.map(Q=>{let re=te[Q.columnId];return re&&Q.pinned!==re?{...Q,pinned:re}:Q})}),R=computed(()=>resolveResponsiveConfig(l.value.responsiveColumns)),D=computed(()=>{let te=l.value.visibleColumns,Q=l.value.columnOrder,re=te?v.value.filter(se=>te.has(se.columnId)):v.value;if(!Q?.length)return re;let me=new Map;for(let se=0;se<Q.length;se++)me.set(Q[se],se);return [...re].sort((se,Me)=>{let ye=me.get(se.columnId)??-1,he=me.get(Me.columnId)??-1;return ye===-1&&he===-1?0:ye===-1?1:he===-1?-1:ye-he})}),T=ref(0),S=computed(()=>applyResponsiveHiding(D.value,T.value,R.value)),A=computed(()=>S.value.length),B=computed(()=>f.value==="multiple"),V=computed(()=>!!l.value.showRowNumbers),F=computed(()=>(B.value?1:0)+(V.value?1:0)),x=computed(()=>A.value+F.value),P=F,O=shallowRef(new Map);watch(n,te=>{let Q=O.value;Q.clear(),te.forEach((re,me)=>Q.set(i(re),me)),triggerRef(O);},{immediate:true});let M=qt({items:n,getRowId:i,rowSelection:f,controlledSelectedRows:c,onSelectionChange:l.value.onSelectionChange}),{editingCell:b,setEditingCell:w,pendingEditorValue:y,setPendingEditorValue:E}=Xt(),{activeCell:h,setActiveCell:p}=jt(t,b),I=computed(()=>n.value.length),H=computed(()=>S.value.length),{selectionRange:_,setSelectionRange:K,handleCellMouseDown:U,handleSelectAllCells:X,isDragging:J}=Yt({colOffset:P,rowCount:I,visibleColCount:H,setActiveCell:p,wrapperRef:t}),{contextMenuPosition:Y,setContextMenuPosition:q,handleCellContextMenu:G,closeContextMenu:Z}=Zt(),{handleCopy:ne,handleCut:we,handlePaste:Fe,cutRange:Ke,copyRange:Pe,clearClipboardRanges:xe}=Jt({items:n,visibleCols:S,colOffset:P,selectionRange:_,activeCell:h,editable:a,onCellValueChanged:C,beginBatch:u.beginBatch,endBatch:u.endBatch}),Ne=(te,Q,re)=>{te.button===0&&(t.value?.focus({preventScroll:true}),xe(),U(te,Q,re));},{handleFillHandleMouseDown:Be,fillDown:We}=tn({items:n,visibleCols:S,editable:a,onCellValueChanged:C,selectionRange:_,setSelectionRange:K,setActiveCell:p,colOffset:P,wrapperRef:t,beginBatch:u.beginBatch,endBatch:u.endBatch}),{handleGridKeyDown:$e}=Qt({data:{items:n,visibleCols:S,colOffset:P,hasCheckboxCol:B,visibleColumnCount:A,getRowId:i},state:{activeCell:h,selectionRange:_,editingCell:b,selectedRowIds:M.selectedRowIds},handlers:{setActiveCell:p,setSelectionRange:K,setEditingCell:w,handleRowCheckboxChange:M.handleRowCheckboxChange,handleCopy:ne,handleCut:we,handlePaste:Fe,setContextMenu:q,onUndo:u.undo,onRedo:u.redo,clearClipboardRanges:xe},features:{editable:a,onCellValueChanged:C,rowSelection:f,wrapperRef:t,fillDown:We,onKeyDown:computed(()=>l.value.onKeyDown)}}),{containerWidth:tt,minTableWidth:nt,desiredTableWidth:mt,columnSizingOverrides:Ue,setColumnSizingOverrides:ft}=on({wrapperRef:t,visibleCols:D,flatColumns:v,hasCheckboxCol:B,initialColumnWidths:l.value.initialColumnWidths,onColumnResized:(te,Q)=>l.value.onColumnResized?.(te,Q)});watch(tt,te=>{T.value=te;},{immediate:true});let Ie=ln({columns:v,pinnedColumns:m,onColumnPinned:l.value.onColumnPinned}),Ct=(te,Q)=>{ft({...Ue.value,[te]:{widthPx:Q}}),l.value.onColumnResized?.(te,Q);},ae=an({columns:v,pinnedColumns:Ie.pinnedColumns,onPinColumn:Ie.pinColumn,onUnpinColumn:Ie.unpinColumn,onSort:l.value.onColumnSort,onColumnResized:l.value.onColumnResized,onAutosizeColumn:Ct,sortBy:computed(()=>l.value.sortBy),sortDirection:computed(()=>l.value.sortDirection)}),Oe=ref({});watch([S,tt,Ue],()=>{nextTick(()=>{let te=t.value;if(!te)return;let Q=te.querySelectorAll("th[data-column-id]");if(Q.length===0)return;let re={};Q.forEach(ye=>{let he=ye.getAttribute("data-column-id");he&&(re[he]=ye.offsetWidth);});let me=Oe.value,se=Object.keys(re),Me=se.length!==Object.keys(me).length;if(!Me){for(let ye of se)if(me[ye]!==re[ye]){Me=true;break}}Me&&(Oe.value=re);});},{flush:"post"});let ot=computed(()=>{let te={};for(let Q of S.value){let re=Ue.value[Q.columnId];te[Q.columnId]=re?re.widthPx:Q.idealWidth??Q.defaultWidth??Q.minWidth??DEFAULT_MIN_COLUMN_WIDTH;}return te}),lt=computed(()=>Ie.computeLeftOffsets(S.value,ot.value,DEFAULT_MIN_COLUMN_WIDTH,B.value,CHECKBOX_COLUMN_WIDTH)),Ee=computed(()=>Ie.computeRightOffsets(S.value,ot.value,DEFAULT_MIN_COLUMN_WIDTH)),rt=computed(()=>computeAggregations(n.value,S.value,s.value?_.value:null)),at=computed(()=>{let te=getDataGridStatusBarConfig(l.value.statusBar,n.value.length,M.selectedRowIds.value.size);return te?{...te,aggregation:rt.value??void 0}:null}),_e=computed(()=>n.value.length===0&&!!l.value.emptyState&&!l.value.isLoading),ht=computed(()=>_.value!=null||h.value!=null),Rt=computed(()=>({sortBy:l.value.sortBy,sortDirection:l.value.sortDirection,onColumnSort:l.value.onColumnSort,filters:l.value.filters,onFilterChange:l.value.onFilterChange,filterOptions:l.value.filterOptions,loadingFilterOptions:l.value.loadingFilterOptions,peopleSearch:l.value.peopleSearch})),Ve=computed(()=>({editingCell:b.value,activeCell:s.value?h.value:null,selectionRange:s.value?_.value:null,cutRange:s.value?Ke.value:null,copyRange:s.value?Pe.value:null,colOffset:P.value,itemsLength:n.value.length,getRowId:i,editable:a.value,onCellValueChanged:C.value,isDragging:s.value?J.value:false,getFormulaValue:l.value.getFormulaValue,hasFormula:l.value.hasFormula,getFormula:l.value.getFormula,formulaVersion:l.value.formulaVersion})),pt=ref(null),it=te=>{pt.value=te;},bt=(te,Q,re,me,se,Me,ye)=>{let he=S.value.find(ge=>ge.columnId===Q);if(he){let ge=parseValue(me,re,te,he);if(!ge.valid){w(null),it(null),E(void 0);return}me=ge.value;}if(w(null),it(null),E(void 0),Object.is(me,re)||C.value?.({item:te,columnId:Q,oldValue:re,newValue:me,rowIndex:se}),!ye?.skipAdvance&&se<n.value.length-1){let ge=se+1,wt=Me-P.value;p({rowIndex:ge,columnIndex:Me}),K({startRow:ge,startCol:wt,endRow:ge,endCol:wt});}},It=()=>{w(null),it(null),E(void 0);},ve=computed(()=>({flatColumns:v.value,visibleCols:S.value,visibleColumnCount:A.value,totalColCount:x.value,colOffset:P.value,hasCheckboxCol:B.value,hasRowNumbersCol:V.value,rowIndexByRowId:O.value,containerWidth:tt.value,minTableWidth:nt.value,desiredTableWidth:mt.value,columnSizingOverrides:Ue.value,setColumnSizingOverrides:ft,onColumnResized:l.value.onColumnResized,measuredColumnWidths:Oe.value,stickyHeader:l.value.stickyHeader??true})),St=computed(()=>({selectedRowIds:M.selectedRowIds.value,updateSelection:M.updateSelection,handleRowCheckboxChange:M.handleRowCheckboxChange,handleSelectAll:M.handleSelectAll,allSelected:M.allSelected.value,someSelected:M.someSelected.value})),Tt=computed(()=>({editingCell:b.value,setEditingCell:w,pendingEditorValue:y.value,setPendingEditorValue:E,commitCellEdit:bt,cancelPopoverEdit:It,popoverAnchorEl:pt.value,setPopoverAnchorEl:it})),qe=computed(()=>(g.value,{activeCell:s.value?h.value:null,setActiveCell:s.value?p:Je,selectionRange:s.value?_.value:null,setSelectionRange:s.value?K:Je,handleCellMouseDown:s.value?Ne:qr,handleSelectAllCells:s.value?X:Je,hasCellSelection:s.value?ht.value:false,handleGridKeyDown:s.value?$e:Xr,handleFillHandleMouseDown:s.value?Be:Je,handleCopy:s.value?ne:Je,handleCut:s.value?we:Je,handlePaste:s.value?Fe:$r,cutRange:s.value?Ke.value:null,copyRange:s.value?Pe.value:null,clearClipboardRanges:s.value?xe:Je,canUndo:u.canUndo.value,canRedo:u.canRedo.value,onUndo:u.undo,onRedo:u.redo,isDragging:s.value?J.value:false})),yt=computed(()=>({menuPosition:s.value?Y.value:null,setMenuPosition:s.value?q:Je,handleCellContextMenu:s.value?G:jr,closeContextMenu:s.value?Z:Je})),Pt=computed(()=>({headerFilterInput:Rt.value,cellDescriptorInput:Ve.value,statusBarConfig:at.value,showEmptyInGrid:_e.value,onCellError:l.value.onCellError})),Et=computed(()=>({pinnedColumns:Ie.pinnedColumns.value,pinColumn:Ie.pinColumn,unpinColumn:Ie.unpinColumn,isPinned:Ie.isPinned,leftOffsets:lt.value,rightOffsets:Ee.value,headerMenu:{isOpen:ae.isOpen.value,openForColumn:ae.openForColumn.value,anchorElement:ae.anchorElement.value,open:ae.open,close:ae.close,handlePinLeft:ae.handlePinLeft,handlePinRight:ae.handlePinRight,handleUnpin:ae.handleUnpin,handleSortAsc:ae.handleSortAsc,handleSortDesc:ae.handleSortDesc,handleClearSort:ae.handleClearSort,handleAutosizeThis:ae.handleAutosizeThis,handleAutosizeAll:ae.handleAutosizeAll,canPinLeft:ae.canPinLeft.value,canPinRight:ae.canPinRight.value,canUnpin:ae.canUnpin.value,currentSort:ae.currentSort.value,isSortable:ae.isSortable.value,isResizable:ae.isResizable.value}}));return {layout:ve,rowSelection:St,editing:Tt,interaction:qe,contextMenu:yt,viewModels:Pt,pinning:Et}}function dn(e){let{columnSizingOverrides:l,setColumnSizingOverrides:t,minWidth:n=80,defaultWidth:i=120,onColumnResized:f}=e,c=0,a=null;return onUnmounted(()=>{a?.(),a=null;}),{handleResizeStart:(d,u)=>{d.preventDefault(),d.stopPropagation();let C=d.clientX,r=u.columnId,v=d.currentTarget.parentElement,R=v?v.getBoundingClientRect().width:l.value[r]?.widthPx??u.idealWidth??u.defaultWidth??i,D=R,T=document.body.style.cursor,S=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let A=()=>{t({...l.value,[r]:{widthPx:D}});},B=r===ROW_NUMBER_COLUMN_ID?ROW_NUMBER_COLUMN_MIN_WIDTH:n,V=P=>{let O=P.clientX-C;D=Math.max(B,R+O),c||(c=requestAnimationFrame(()=>{c=0,A();}));},F=()=>{document.removeEventListener("pointermove",V),document.removeEventListener("pointerup",x),a=null,document.body.style.cursor=T,document.body.style.userSelect=S,c&&(cancelAnimationFrame(c),c=0);},x=()=>{F(),A(),f?.(r,D);};document.addEventListener("pointermove",V),document.addEventListener("pointerup",x),a=F;},handleResizeDoubleClick:(d,u)=>{d.preventDefault(),d.stopPropagation();let C=u.columnId,v=(d.currentTarget.closest("th")??d.currentTarget.parentElement)?.closest("table")?.parentElement??void 0,R=measureColumnContentWidth(C,n,v);t({...l.value,[C]:{widthPx:R}}),f?.(C,R);},getColumnWidth:d=>l.value[d.columnId]?.widthPx??d.idealWidth??d.defaultWidth??i}}function cn(e,l){let t=ref(e.value),n;return watch(e,i=>{n!==void 0&&clearTimeout(n),n=setTimeout(()=>{t.value=i;},l);}),onUnmounted(()=>{n!==void 0&&clearTimeout(n);}),t}function Ho(e,l){let t,n=e,i,f=((...c)=>{n=e,i=c,t!==void 0&&clearTimeout(t),t=setTimeout(()=>{n(...c),i=void 0,t=void 0;},l);});return f.cancel=()=>{t!==void 0&&clearTimeout(t),t=void 0,i=void 0;},f.flush=()=>{if(t!==void 0&&i!==void 0){clearTimeout(t),t=void 0;let c=i;i=void 0,n(...c);}},onUnmounted(()=>{t!==void 0&&clearTimeout(t);}),f}function mn(e){let{textValue:l="",onTextChange:t}=e,n=ref(l);return watch(e.isFilterOpen,a=>{a&&(n.value=e.textValue??"");}),{tempTextValue:n,setTempTextValue:a=>{n.value=a;},handleTextApply:()=>{t?.(n.value.trim());},handleTextClear:()=>{n.value="";}}}var aa=150,Qn=[];function fn(e){let{onFilterChange:l}=e,t=ref(new Set(e.selectedValues??Qn)),n=ref(""),i=cn(n,aa);watch(e.isFilterOpen,u=>{u&&(t.value=new Set(e.selectedValues??Qn),n.value="");});let f=computed(()=>{let u=e.options??Qn;if(!i.value.trim())return u;let C=i.value.toLowerCase().trim();return u.filter(r=>r.toLowerCase().includes(C))});return {tempSelected:t,setTempSelected:u=>{t.value=u;},searchText:n,setSearchText:u=>{n.value=u;},debouncedSearchText:i,filteredOptions:f,handleCheckboxChange:(u,C)=>{let r=new Set(t.value);C?r.add(u):r.delete(u),t.value=r;},handleSelectAll:()=>{t.value=new Set(f.value);},handleClearSelection:()=>{t.value=new Set;},handleApplyMultiSelect:()=>{l?.(Array.from(t.value));}}}var sa=300;function vn(e){let{onUserChange:l,filterType:t}=e,n=ref(null),i,f=ref([]),c=ref(false),a=ref(""),s=d=>{a.value=d;};return watch(e.isFilterOpen,d=>{d&&(a.value="",f.value=[],t==="people"&&setTimeout(()=>n.value?.focus(),50));}),watch([a,()=>e.peopleSearch,e.isFilterOpen],([d,u,C])=>{if(i&&clearTimeout(i),!(!u||!C||t!=="people")){if(!d.trim()){f.value=[];return}c.value=true,i=setTimeout(async()=>{try{let r=await u(d);f.value=r.slice(0,10);}catch{f.value=[];}finally{c.value=false;}},sa);}}),onUnmounted(()=>{i&&clearTimeout(i);}),{peopleSuggestions:f,isPeopleLoading:c,peopleSearchText:a,setPeopleSearchText:s,peopleInputRef:n,handleUserSelect:d=>{l?.(d);},handleClearUser:()=>{l?.(void 0);}}}function gn(e){let{onDateChange:l}=e,t=ref(e.dateValue?.from??""),n=ref(e.dateValue?.to??"");return watch(e.isFilterOpen,s=>{s&&(t.value=e.dateValue?.from??"",n.value=e.dateValue?.to??"");}),{tempDateFrom:t,setTempDateFrom:s=>{t.value=s;},tempDateTo:n,setTempDateTo:s=>{n.value=s;},handleDateApply:()=>{let s=t.value||void 0,m=n.value||void 0;l?.(s||m?{from:s,to:m}:void 0);},handleDateClear:()=>{t.value="",n.value="";}}}var ma=[];function No(e){let{filterType:l,onSort:t}=e,n=()=>e.selectedValues??ma,i=ref(null),f=ref(null),c=ref(false),a=ref(null),s=E=>{c.value=E;},m=mn({textValue:e.textValue,onTextChange:e.onTextChange,isFilterOpen:c}),g=fn({selectedValues:e.selectedValues,onFilterChange:e.onFilterChange,options:e.options,isFilterOpen:c}),d=vn({selectedUser:e.selectedUser,onUserChange:e.onUserChange,peopleSearch:e.peopleSearch,isFilterOpen:c,filterType:l}),u=gn({dateValue:e.dateValue,onDateChange:e.onDateChange,isFilterOpen:c});watch(c,E=>{E||(a.value=null);});let C=null,r=null,v,R=()=>{D(),C=E=>{let h=E.target;f.value&&!f.value.contains(h)&&i.value&&!i.value.contains(h)&&(c.value=false);},r=E=>{(E.key==="Escape"||E.key==="Esc")&&(E.preventDefault(),E.stopPropagation(),c.value=false);},v=setTimeout(()=>{C&&document.addEventListener("mousedown",C);},0),document.addEventListener("keydown",r,true);},D=()=>{v&&clearTimeout(v),C&&document.removeEventListener("mousedown",C),r&&document.removeEventListener("keydown",r,true),C=null,r=null;};watch(c,E=>{E?R():D();}),onUnmounted(()=>D());let T=E=>{if(E.stopPropagation(),E.preventDefault(),!c.value&&i.value){let h=i.value.getBoundingClientRect();a.value={top:h.bottom+4,left:h.left};}c.value=!c.value;},S=E=>{E.stopPropagation(),t?.();},A=()=>{g.handleApplyMultiSelect(),c.value=false;},B=()=>{m.handleTextApply(),c.value=false;},V=E=>{d.handleUserSelect(E),c.value=false;},F=()=>{d.handleClearUser(),c.value=false;},x=()=>{u.handleDateApply(),c.value=false;},P=E=>E.stopPropagation(),O=E=>E.stopPropagation(),M=E=>E.stopPropagation(),b=E=>E.stopPropagation(),w=E=>{E.key!=="Escape"&&E.key!=="Esc"&&E.stopPropagation();},y=computed(()=>l==="multiSelect"?n().length>0:l==="text"?!!(e.textValue??"").trim():l==="people"?!!e.selectedUser:l==="date"?!!(e.dateValue?.from||e.dateValue?.to):false);return {headerRef:i,popoverRef:f,peopleInputRef:d.peopleInputRef,isFilterOpen:c,setFilterOpen:s,tempSelected:g.tempSelected,setTempSelected:g.setTempSelected,tempTextValue:m.tempTextValue,setTempTextValue:m.setTempTextValue,searchText:g.searchText,setSearchText:g.setSearchText,debouncedSearchText:g.debouncedSearchText,filteredOptions:g.filteredOptions,peopleSuggestions:d.peopleSuggestions,isPeopleLoading:d.isPeopleLoading,peopleSearchText:d.peopleSearchText,setPeopleSearchText:d.setPeopleSearchText,tempDateFrom:u.tempDateFrom,setTempDateFrom:u.setTempDateFrom,tempDateTo:u.tempDateTo,setTempDateTo:u.setTempDateTo,hasActiveFilter:y,popoverPosition:a,handlers:{handleFilterIconClick:T,handleApplyMultiSelect:A,handleTextApply:B,handleTextClear:m.handleTextClear,handleUserSelect:V,handleClearUser:F,handleCheckboxChange:g.handleCheckboxChange,handleSelectAll:g.handleSelectAll,handleClearSelection:g.handleClearSelection,handlePopoverClick:P,handleInputFocus:O,handleInputMouseDown:M,handleInputClick:b,handleInputKeyDown:w,handleDateApply:x,handleDateClear:u.handleDateClear,handleSortClick:S}}}function _o(e){let{columns:l,visibleColumns:t,onVisibilityChange:n}=e,i=ref(false),f=null,c=()=>{a(),f=R=>{R.key==="Escape"&&(R.preventDefault(),i.value=false);},document.addEventListener("keydown",f,true);},a=()=>{f&&(document.removeEventListener("keydown",f,true),f=null);};watch(i,R=>{R?c():a();}),onUnmounted(()=>a());let s=R=>{i.value=R;},m=()=>{i.value=!i.value;},g=()=>{i.value=false;},d=R=>D=>{n(R,D);},u=()=>{l.value.forEach(R=>{t.value.has(R.columnId)||n(R.columnId,true);});},C=()=>{l.value.forEach(R=>{!R.required&&t.value.has(R.columnId)&&n(R.columnId,false);});},r=computed(()=>t.value.size),v=computed(()=>l.value.length);return {open:i,setOpen:s,handleToggle:m,handleClose:g,handleCheckboxChange:d,handleSelectAll:u,handleClearAll:C,visibleCount:r,totalCount:v}}function Ko(e){let{value:l,editorType:t,onCommit:n,onCancel:i,dateFormat:f,dateEditorType:c}=e,a=f??DEFAULT_DATE_FORMAT,s=ref((()=>{if(l==null)return "";if(t==="date"){if(c==="native"){let v=String(l);return v.match(/^\d{4}-\d{2}-\d{2}/)?v.substring(0,10):v}return formatDateForDisplay(l,a)??""}return String(l)})()),m=v=>{s.value=v;},g=v=>{if(t==="date"&&c!=="native"){if(!v||!v.trim()){n(null);return}let R=parseUserInputDate(v,a);if(R!==null){let D=R.getUTCFullYear().toString().padStart(4,"0"),T=(R.getUTCMonth()+1).toString().padStart(2,"0"),S=R.getUTCDate().toString().padStart(2,"0");n(`${D}-${T}-${S}`);}else n(null);}else n(v);},d=v=>{n(v);},u=()=>{i();};return {localValue:s,setLocalValue:m,handleKeyDown:v=>{v.key==="Escape"&&(v.preventDefault(),v.stopPropagation(),u()),v.key==="Enter"&&(t==="text"||t==="date")&&(v.preventDefault(),v.stopPropagation(),g(s.value));},handleBlur:()=>{(t==="text"||t==="date")&&g(s.value);},commit:d,cancel:u}}function qo(e){let{values:l,formatValue:t,initialValue:n,onCommit:i,onCancel:f}=e,c=ref(""),a=l.findIndex(r=>String(r)===String(n)),s=ref(Math.max(a,0)),m=r=>{c.value=r;},g=r=>t?t(r):r!=null?String(r):"",d=computed(()=>{if(!c.value.trim())return l;let r=c.value.toLowerCase();return l.filter(v=>g(v).toLowerCase().includes(r))}),u=r=>{i(r);};return {searchText:c,setSearchText:m,filteredValues:d,highlightedIndex:s,handleKeyDown:r=>{switch(r.key){case "ArrowDown":r.preventDefault(),s.value=Math.min(s.value+1,d.value.length-1);break;case "ArrowUp":r.preventDefault(),s.value=Math.max(s.value-1,0);break;case "Enter":r.preventDefault(),r.stopPropagation(),d.value.length>0&&s.value<d.value.length&&u(d.value[s.value]);break;case "Escape":r.preventDefault(),r.stopPropagation(),f();break}},selectValue:u,getDisplayText:g}}var Ia=8,Ta=5;function hn(e){let{columnOrder:l,onColumnOrderChange:t,tableRef:n,pinnedColumns:i}=e,f=ref(false),c=ref(null),a=null,s="unpinned",m=0,g=null;return onUnmounted(()=>{g?.(),g=null;}),{isDragging:f,dropIndicatorX:c,handleHeaderMouseDown:(u,C)=>{if(C.button!==0)return;let r=C.target.closest("th");if(r){let P=r.getBoundingClientRect();if(C.clientX>P.right-Ia)return}if(C.preventDefault(),!n.value||!t.value)return;a=u,s=getPinStateForColumn(u,i?.value),c.value=null;let R=C.clientX,D=false,T=C.clientX,S=-1,A=document.body.style.cursor,B=document.body.style.userSelect;document.body.style.cursor="grabbing",document.body.style.userSelect="none";let V=P=>{!D&&Math.abs(P.clientX-R)<Ta||(D||(D=true,f.value=true),T=P.clientX,m||(m=requestAnimationFrame(()=>{m=0;let O=n.value;if(!O||!a)return;let M=calculateDropTarget({mouseX:T,columnOrder:l.value,draggedColumnId:a,draggedPinState:s,tableElement:O,pinnedColumns:i?.value});M?(S=M.targetIndex,c.value=M.indicatorX):c.value=null;})));},F=()=>{window.removeEventListener("pointermove",V,true),window.removeEventListener("pointerup",x,true),g=null,document.body.style.cursor=A,document.body.style.userSelect=B,m&&(cancelAnimationFrame(m),m=0);},x=()=>{if(F(),D&&a&&S>=0&&t.value){let P=reorderColumnArray(l.value,a,S);t.value(P);}a=null,f.value=false,c.value=null,S=-1;};window.addEventListener("pointermove",V,true),window.addEventListener("pointerup",x,true),g=F;}}}var Aa=100;function bn(e){let{totalRows:l,rowHeight:t,enabled:n,overscan:i=5,threshold:f=Aa,columnsEnabled:c,columnWidths:a,columnOverscan:s=2}=e;onMounted(()=>{validateVirtualScrollConfig({enabled:n.value,rowHeight:t});});let m=ref(null),g=ref(0),d=ref(0),u=ref(0),C=ref(0),r=0,v,R=null,D=computed(()=>n.value&&l.value>=f),T=computed(()=>D.value?computeVisibleRange(g.value,t,u.value,l.value,i):{startIndex:0,endIndex:Math.max(0,l.value-1),offsetTop:0,offsetBottom:0}),S=computed(()=>n.value?computeTotalHeight(l.value,t):0),A=computed(()=>{if(!c?.value)return null;let x=a?.value;return !x||x.length===0?null:computeVisibleColumnRange(d.value,x,C.value,s)}),B=()=>{r||(r=requestAnimationFrame(()=>{r=0;let x=m.value;x&&(g.value=x.scrollTop,d.value=x.scrollLeft);}));},V=()=>{let x=m.value;x&&(u.value=x.clientHeight,C.value=x.clientWidth);};return watch(m,x=>{x!==R&&(R&&R.removeEventListener("scroll",B),v&&(v.disconnect(),v=void 0),R=x,x&&(x.addEventListener("scroll",B,{passive:true}),typeof ResizeObserver<"u"&&(v=new ResizeObserver(V),v.observe(x)),V(),g.value=x.scrollTop,d.value=x.scrollLeft));}),onUnmounted(()=>{let x=m.value;x&&x.removeEventListener("scroll",B),v?.disconnect(),r&&(cancelAnimationFrame(r),r=0);}),{containerRef:m,visibleRange:T,totalHeight:S,scrollToRow:(x,P="start")=>{let O=m.value;O&&(O.scrollTop=getScrollTopForRow(x,t,u.value,P));},columnRange:A,scrollLeft:d}}function yn(e){let{props:l}=e,t=ref(null),n=ref(null),i=ref(null),f=ref(false),c=un({props:l,wrapperRef:t}),a=computed(()=>{let V=l.value;return V.columnOrder?V.columnOrder:flattenColumns(V.columns).filter(F=>V.visibleColumns?.has(F.columnId)??true).map(F=>F.columnId)}),s=computed(()=>l.value.onColumnOrderChange),m=hn({columnOrder:a,onColumnOrderChange:s,tableRef:i}),g=computed(()=>l.value.virtualScroll?.enabled??false),d=computed(()=>l.value.items.length),u=l.value.virtualScroll?.rowHeight??36,C=l.value.virtualScroll?.overscan??5,r=computed(()=>l.value.virtualScroll?.columns===true),v=l.value.virtualScroll?.columnOverscan??2,R=computed(()=>{let V=c.layout.value,{visibleCols:F,columnSizingOverrides:x}=V,P=l.value.pinnedColumns??{},O=[];for(let M of F){if(P[M.columnId]||M.pinned)continue;let b=x[M.columnId];O.push(b?b.widthPx:M.defaultWidth??M.minWidth??DEFAULT_MIN_COLUMN_WIDTH);}return O}),D=bn({totalRows:d,rowHeight:u,enabled:g,overscan:C,columnsEnabled:r,columnWidths:R,columnOverscan:v}),T=computed(()=>{if(!r.value)return null;let F=c.layout.value.visibleCols,x=D.columnRange.value,P=l.value.pinnedColumns;return partitionColumnsForVirtualization(F,x,P)}),S=computed(()=>{let F=c.layout.value.visibleCols,x=new Map;for(let P=0;P<F.length;P++)x.set(F[P].columnId,P);return x}),A=computed(()=>c.layout.value.columnSizingOverrides),B=dn({columnSizingOverrides:A,setColumnSizingOverrides:V=>c.layout.value.setColumnSizingOverrides(V)});return {wrapperRef:t,tableContainerRef:n,tableRef:i,lastMouseShift:f,state:c,columnReorder:m,virtualScroll:D,virtualScrollEnabled:g,columnResize:B,columnPartition:T,globalColIndexMap:S}}function wn(e,l,t){let n={"data-row-index":e.rowIndex,"data-col-index":e.globalColIndex,...e.isActive?{"data-active-cell":"true"}:{},...e.isInRange?{"data-in-range":"true"}:{},tabindex:e.isActive?0:-1,onPointerdown:i=>{t.setEditingCell(null),t.handleCellMouseDown(i,e.rowIndex,e.globalColIndex);},onClick:()=>t.setActiveCell({rowIndex:e.rowIndex,columnIndex:e.globalColIndex}),onContextmenu:i=>t.handleCellContextMenu(i)};return e.canEditAny&&(n.role="button",n.onDblclick=()=>t.setEditingCell({rowId:e.rowId,columnId:l})),n}var jo=()=>{};function qa(e){return defineComponent({name:"DataGridTable",props:{gridProps:{type:Object,required:true}},setup(l){let t=computed(()=>l.gridProps),{wrapperRef:n,tableContainerRef:i,tableRef:f,lastMouseShift:c,state:a,columnReorder:{isDragging:s,dropIndicatorX:m,handleHeaderMouseDown:g},virtualScroll:{containerRef:d,visibleRange:u,totalHeight:C,scrollToRow:r},virtualScrollEnabled:v,columnResize:{handleResizeStart:R,handleResizeDoubleClick:D,getColumnWidth:T},columnPartition:S,globalColIndexMap:A}=yn({props:t}),B=computed(()=>{let y=t.value;return y.showRowNumbers||y.showColumnLetters?((y.currentPage??1)-1)*(y.pageSize??25):0});watch([()=>a.interaction.value.activeCell,B],([y,E])=>{let h=t.value.onActiveCellChange;h&&h(y?formatCellReference(y.columnIndex-a.layout.value.colOffset,E+y.rowIndex+1):null);},{immediate:true});let V=y=>{c.value=y.shiftKey;},F=y=>{y.button===0&&y.preventDefault();},x=y=>{y.button===0&&y.preventDefault();},P=y=>{y.preventDefault();},O=y=>y.preventDefault(),M=y=>y.stopPropagation(),b=computed(()=>buildHeaderRows(t.value.columns,t.value.visibleColumns)),w=computed(()=>{let y=a.layout.value,E=a.pinning.value,{visibleCols:h,columnSizingOverrides:p,measuredColumnWidths:I}=y,{leftOffsets:H,rightOffsets:_}=E,K={},U={},X={},J={};for(let Y=0;Y<h.length;Y++){let q=h[Y],G=q.pinned==="left",Z=q.pinned==="right",ne=T(q),we=!!p[q.columnId],Fe=I[q.columnId],Ke=q.minWidth??estimateHeaderMinWidth(q.name),Pe=we?ne:Math.max(Ke,Fe??0),xe=q.width,Ne={minWidth:`${Pe}px`,width:xe??`${ne}px`,...xe?{}:{maxWidth:`${ne}px`}},Be={minWidth:`${Pe}px`,width:xe??`${ne}px`,...xe?{}:{maxWidth:`${ne}px`}},We=["ogrid-data-cell"],$e=["ogrid-header-cell"];G?(We.push("ogrid-data-cell--pinned-left"),Ne.left=`${H[q.columnId]??0}px`,$e.push("ogrid-header-cell--pinned-left"),Be.left=`${H[q.columnId]??0}px`):Z&&(We.push("ogrid-data-cell--pinned-right"),Ne.right=`${_[q.columnId]??0}px`,$e.push("ogrid-header-cell--pinned-right"),Be.right=`${_[q.columnId]??0}px`),K[q.columnId]=Ne,U[q.columnId]=We.join(" "),X[q.columnId]=Be,J[q.columnId]=$e.join(" ");}return {cellStyles:K,cellClasses:U,hdrStyles:X,hdrClasses:J}});return ()=>{let y=l.gridProps,E=a.layout.value,h$1=a.rowSelection.value,p=a.editing.value,I=a.interaction.value,H=a.contextMenu.value,_=a.viewModels.value,K=a.pinning.value,{headerMenu:U}=K,{visibleCols:X,hasCheckboxCol:J,hasRowNumbersCol:Y,colOffset:q,containerWidth:G,minTableWidth:Z,desiredTableWidth:ne}=E,we=y.currentPage??1,Fe=y.pageSize??25,Ke=Y?(we-1)*Fe:0,{selectedRowIds:Pe,handleRowCheckboxChange:xe,handleSelectAll:Ne,allSelected:Be,someSelected:We}=h$1,{editingCell:$e,setEditingCell:tt,pendingEditorValue:nt,setPendingEditorValue:mt,commitCellEdit:Ue,cancelPopoverEdit:ft,popoverAnchorEl:Ie,setPopoverAnchorEl:Ct}=p,{setActiveCell:ae,setSelectionRange:Oe,handleCellMouseDown:ot,handleSelectAllCells:lt,selectionRange:Ee,hasCellSelection:rt,handleGridKeyDown:at,handleFillHandleMouseDown:_e,handleCopy:ht,handleCut:Rt,handlePaste:Ve,cutRange:pt,copyRange:it,canUndo:bt,canRedo:It,onUndo:ve,onRedo:St,isDragging:Tt}=I,{menuPosition:qe,handleCellContextMenu:yt,closeContextMenu:Pt}=H,{headerFilterInput:Et,cellDescriptorInput:te,statusBarConfig:Q,showEmptyInGrid:re,onCellError:me}=_,se=y.items,Me=y.getRowId,ye=y.layoutMode??"fill",he=y.rowSelection??"none",ge=y.suppressHorizontalScroll,wt=y.stickyHeader??true,Dt=y.isLoading??false,Un=y.loadingMessage??"Loading\u2026",On=y["aria-label"],ke=y["aria-labelledby"],Mn=ye==="content",Ft=!ge&&G>0&&(Z>G||ne>G),Ge=b.value,Ut={commitCellEdit:Ue,setEditingCell:tt,setPendingEditorValue:mt,cancelPopoverEdit:ft},kn={handleCellMouseDown:ot,setActiveCell:ae,setEditingCell:tt,handleCellContextMenu:yt},An=L=>{if(he!=="single")return;let ie=L.currentTarget.dataset.rowId;ie&&h$1.updateSelection(Pe.has(ie)?new Set:new Set([ie]));},o=(L,z,ie,Le)=>{try{return k(L,z,ie,Le)}catch(W){return me&&me(W instanceof Error?W:new Error(String(W)),void 0),""}},k=(L,z,ie,Le)=>{let W=getCellRenderDescriptor(L,z,ie,Le,te);if(W.mode==="editing-inline"){let ue=buildInlineEditorProps(L,z,W,Ut);return h("div",{class:"ogrid-editing-cell"},h(e.InlineCellEditor,{value:ue.value,item:ue.item,column:ue.column,rowIndex:ue.rowIndex,editorType:ue.editorType,onCommit:ue.onCommit,onCancel:ue.onCancel}))}if(W.mode==="editing-popover"&&z.cellEditor!=null&&typeof z.cellEditor!="string"){let ue=buildPopoverEditorProps(L,z,W,nt,Ut),oe=z.cellEditor,Vt=resolveCellDisplayContent(z,L,W.displayValue),oo=resolveCellStyle(z,L,W.displayValue);return h("div",[h("div",{ref:lo=>{lo&&Ct(lo);},class:"ogrid-popover-anchor"},[oo?h("span",{style:oo},[Vt]):Vt]),Ie?h(oe,ue):null])}let He=wn(W,z.columnId,kn),Te=["ogrid-cell-content"];z.type==="numeric"?Te.push("ogrid-cell-content--numeric"):z.type==="boolean"&&Te.push("ogrid-cell-content--boolean"),W.canEditAny&&Te.push("ogrid-cell-content--editable"),W.isActive&&Te.push("ogrid-cell-content--active"),W.isActive&&W.isInRange&&Te.push("ogrid-cell-content--active-in-range"),W.isInRange&&!W.isActive&&Te.push("ogrid-cell-in-range"),W.isInCutRange&&Te.push("ogrid-cell-cut");let Ye;if(W.columnType==="boolean"){let ue=!!W.displayValue;Ye=h("input",{type:"checkbox",checked:ue,disabled:!W.canEditAny,onChange:W.canEditAny?()=>{let oe=W.rowIndex,Vt=W.globalColIndex;Ut.commitCellEdit(L,z.columnId,ue,!ue,oe,Vt,{skipAdvance:true});}:void 0,onPointerdown:oe=>handleBooleanCellPointerDown(oe,W.rowIndex,W.globalColIndex,q,{setActiveCell:ae,setSelectionRange:Oe}),onClick:oe=>oe.stopPropagation(),style:`margin:0;cursor:${W.canEditAny?"pointer":"default"};outline:none`,"aria-label":ue?"Checked":"Unchecked"});}else {let ue=resolveCellDisplayContent(z,L,W.displayValue),oe=resolveCellStyle(z,L,W.displayValue);Ye=oe?h("span",{style:oe},ue):ue;}return h("div",{...He,class:Te.join(" ")},[Ye,...W.canEditAny&&W.isSelectionEndCell?[h("div",{onPointerdown:_e,"aria-label":"Fill handle",class:"ogrid-fill-handle"})]:[]])},{cellStyles:le,cellClasses:Re,hdrStyles:st,hdrClasses:ut}=w.value,Xe=X.map(L=>({col:L,tdClasses:Re[L.columnId]||"ogrid-data-cell",tdDynamicStyle:le[L.columnId]||{}})),fe=S.value,vt=Xe,je=0,Ce=0;if(fe){let L=new Set;for(let z of fe.pinnedLeft)L.add(z.columnId);for(let z of fe.virtualizedUnpinned)L.add(z.columnId);for(let z of fe.pinnedRight)L.add(z.columnId);vt=Xe.filter(z=>L.has(z.col.columnId)),je=fe.leftSpacerWidth,Ce=fe.rightSpacerWidth;}let be=A.value,Ae=L=>{let z=st[L.columnId]||{};return {classes:ut[L.columnId]||"ogrid-header-cell",style:{...z,cursor:s.value?"grabbing":"grab"}}},pe=v.value,De={position:"relative",width:Mn?"fit-content":"100%",maxWidth:"100%",overflowX:ge?"hidden":Ft?"auto":"hidden",overflowY:"auto",backgroundColor:"#fff",willChange:"scroll-position",...pe?{flex:"1",minHeight:"0"}:{minHeight:Dt&&se.length===0?"200px":"auto"}};return y.rowHeight&&(De["--ogrid-row-height"]=`${y.rowHeight}px`),h("div",{class:"ogrid-outer-container"},[h("div",{ref:L=>{n.value=L,d.value=L;},tabindex:0,role:"region","aria-label":On??(ke?void 0:"Data grid"),"aria-labelledby":ke,onPointerdown:V,onKeydown:at,onContextmenu:O,"data-overflow-x":Ft?"true":"false","data-ogrid-scroll-container":"",style:De},[h("div",{class:"ogrid-scroll-wrapper"},[h("div",{style:{minWidth:Ft?`${Z}px`:void 0,overflowX:"clip"}},[h("div",{ref:L=>{i.value=L;},class:["ogrid-table-container",Dt&&se.length>0?"ogrid-table-container--loading":""]},[...s.value&&m.value!==null?[h("div",{class:"ogrid-drop-indicator",style:{left:`${m.value}px`}})]:[],h("table",{ref:L=>{f.value=L;},class:"ogrid-table",role:"grid",style:{minWidth:`${Z}px`},...v.value?{"data-virtual-scroll":""}:{}},[h("thead",{class:wt?"ogrid-thead ogrid-sticky-header":"ogrid-thead"},[...y.showColumnLetters?[h("tr",{class:"ogrid-column-letter-row"},[...J?[h("th",{class:"ogrid-column-letter-cell"})]:[],...Y?[h("th",{class:"ogrid-column-letter-cell"})]:[],...X.map((L,z)=>{let{classes:ie,style:Le}=Ae(L);return h("th",{key:L.columnId,class:`ogrid-column-letter-cell ${ie}`,style:Le},indexToColumnLetter(z))})])]:[],...Ge.map((L,z)=>h("tr",{key:z,class:"ogrid-header-row"},[...z===Ge.length-1&&J?[h("th",{class:"ogrid-checkbox-header",style:{width:`${CHECKBOX_COLUMN_WIDTH}px`,minWidth:`${CHECKBOX_COLUMN_WIDTH}px`,maxWidth:`${CHECKBOX_COLUMN_WIDTH}px`}},e.renderCheckbox({modelValue:Be,indeterminate:We&&!Be,ariaLabel:"Select all rows",onChange:ie=>Ne(!!ie)}))]:[],...z===0&&z<Ge.length-1&&J?[h("th",{rowSpan:Ge.length-1,class:"ogrid-checkbox-spacer",style:{width:`${CHECKBOX_COLUMN_WIDTH}px`,minWidth:`${CHECKBOX_COLUMN_WIDTH}px`}})]:[],...z===Ge.length-1&&Y?[(()=>{let ie=E.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("th",{class:"ogrid-row-number-header",style:{width:`${ie}px`,minWidth:`${ie}px`,maxWidth:`${ie}px`,position:"sticky",left:J?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:3},onPointerdown:F,onMousedown:x,onSelectstart:P},["#",h("div",{onPointerdown:Le=>{ae(null),Oe(null),n.value?.focus({preventScroll:true}),Le.stopPropagation(),R(Le,{columnId:ROW_NUMBER_COLUMN_ID,name:"#"});},class:"ogrid-resize-handle",role:"separator","aria-label":"Resize row numbers"})])})()]:[],...z===0&&z<Ge.length-1&&Y?[(()=>{let ie=E.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("th",{rowSpan:Ge.length-1,class:"ogrid-row-number-spacer",style:{width:`${ie}px`,position:"sticky",left:J?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:3}})})()]:[],...L.map((ie,Le)=>{if(ie.isGroup)return h("th",{key:Le,colSpan:ie.colSpan,scope:"colgroup",class:"ogrid-column-group-header"},ie.label);if(!ie.columnDef)return null;let W=ie.columnDef,{classes:He,style:Te}=Ae(W),ue=y.sortBy===W.columnId?y.sortDirection==="asc"?"ascending":"descending":void 0;return h("th",{key:W.columnId,scope:"col","data-column-id":W.columnId,rowSpan:Ge.length>1?Ge.length-z:void 0,class:He,style:Te,"aria-sort":ue,onPointerdown:oe=>g(W.columnId,oe)},[h("div",{class:"ogrid-header-content"},[h(e.ColumnHeaderFilter,getHeaderFilterConfig(W,Et)),h("button",{onClick:oe=>{oe.stopPropagation(),U.isOpen&&U.openForColumn===W.columnId?U.close():U.open(W.columnId,oe.currentTarget);},"aria-label":"Column options",title:"Column options",class:"ogrid-column-menu-btn"},"\u22EE")]),h("div",{onPointerdown:oe=>{ae(null),Oe(null),n.value?.focus({preventScroll:true}),oe.stopPropagation(),R(oe,W);},onDblclick:oe=>D(oe,W),class:"ogrid-resize-handle",role:"separator","aria-label":`Resize ${W.name??W.columnId}`})])})]))]),...re?[]:[h("tbody",{},(()=>{let L=v.value,z=u.value,ie=L?z.startIndex:0,Le=L?Math.min(z.endIndex,se.length-1):se.length-1,W=[];L&&z.offsetTop>0&&W.push(h("tr",{key:"__vs-top",style:{height:`${z.offsetTop}px`}}));for(let He=ie;He<=Le;He++){let Te=se[He];if(!Te)continue;let Ye=Me(Te),ue=Pe.has(Ye);W.push(h("tr",{key:Ye,"data-row-id":Ye,"aria-selected":ue||void 0,onClick:An,style:{cursor:he==="single"?"pointer":void 0}},[...J?[h("td",{class:"ogrid-checkbox-cell",style:{width:`${CHECKBOX_COLUMN_WIDTH}px`,minWidth:`${CHECKBOX_COLUMN_WIDTH}px`,maxWidth:`${CHECKBOX_COLUMN_WIDTH}px`}},h("div",{"data-row-index":He,"data-col-index":0,onClick:M,class:"ogrid-checkbox-wrapper"},e.renderCheckbox({modelValue:ue,ariaLabel:`Select row ${He+1}`,onChange:oe=>xe(Ye,oe,He,c.value)})))]:[],...Y?[(()=>{let oe=E.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("td",{class:"ogrid-row-number-cell",style:{width:`${oe}px`,minWidth:`${oe}px`,maxWidth:`${oe}px`,padding:"6px",position:"sticky",left:J?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:2,userSelect:"none",WebkitUserSelect:"none"},onPointerdown:F,onMousedown:x,onSelectstart:P},String(Ke+He+1))})()]:[],...je>0?[h("td",{key:"__col-spacer-left",style:{width:`${je}px`,minWidth:`${je}px`,maxWidth:`${je}px`,padding:"0"}})]:[],...vt.map(oe=>h("td",{key:oe.col.columnId,"data-column-id":oe.col.columnId,class:oe.tdClasses,style:{...oe.tdDynamicStyle,userSelect:"none",WebkitUserSelect:"none"},onPointerdown:F,onMousedown:x,onSelectstart:P},[o(Te,oe.col,He,be.get(oe.col.columnId)??0)])),...Ce>0?[h("td",{key:"__col-spacer-right",style:{width:`${Ce}px`,minWidth:`${Ce}px`,maxWidth:`${Ce}px`,padding:"0"}})]:[]]));}return L&&z.offsetBottom>0&&W.push(h("tr",{key:"__vs-bottom",style:{height:`${z.offsetBottom}px`}})),W})())]]),...re&&y.emptyState?[e.renderEmptyState(y.emptyState)]:[]])])])]),...qe?[h(Teleport,{to:"body"},h(e.GridContextMenu,{x:qe.x,y:qe.y,hasSelection:rt,canUndo:bt,canRedo:It,onUndo:ve??jo,onRedo:St??jo,onCopy:ht,onCut:Rt,onPaste:()=>{Ve();},onSelectAll:lt,onClose:Pt}))]:[],h(Hn,{containerRef:i,selectionRange:Ee,copyRange:it,cutRange:pt,colOffset:q,items:se,visibleColumns:y.visibleColumns instanceof Set?Array.from(y.visibleColumns):y.visibleColumns,columnSizingOverrides:E.columnSizingOverrides,columnOrder:y.columnOrder}),...y.formulaReferences&&y.formulaReferences.length>0?[h(Nn,{containerEl:i.value,references:y.formulaReferences,colOffset:q})]:[],h(e.ColumnHeaderMenu,{isOpen:U.isOpen,anchorElement:U.anchorElement,onClose:U.close,onPinLeft:U.handlePinLeft,onPinRight:U.handlePinRight,onUnpin:U.handleUnpin,onSortAsc:U.handleSortAsc,onSortDesc:U.handleSortDesc,onClearSort:U.handleClearSort,onAutosizeThis:U.handleAutosizeThis,onAutosizeAll:U.handleAutosizeAll,canPinLeft:U.canPinLeft,canPinRight:U.canPinRight,canUnpin:U.canUnpin,currentSort:U.currentSort,isSortable:U.isSortable,isResizable:U.isResizable}),...Q?[h(Bn,{totalCount:Q.totalCount,filteredCount:Q.filteredCount,selectedCount:Q.selectedCount??Pe.size,selectedCellCount:Ee?(Math.abs(Ee.endRow-Ee.startRow)+1)*(Math.abs(Ee.endCol-Ee.startCol)+1):void 0,aggregation:Q.aggregation,suppressRowCount:Q.suppressRowCount})]:[],...Dt?[h("div",{class:"ogrid-loading-overlay"},e.renderSpinner(Un))]:[]])}}})}var xt={width:"100%",height:"100%",display:"flex",alignItems:"center",paddingTop:"var(--ogrid-cell-padding-vertical, 6px)",paddingBottom:"var(--ogrid-cell-padding-vertical, 6px)",paddingLeft:"var(--ogrid-cell-padding-horizontal, 10px)",paddingRight:"var(--ogrid-cell-padding-horizontal, 10px)",boxSizing:"border-box",overflow:"hidden",minWidth:"0"};function ni(e){let{renderCheckbox:l}=e;return defineComponent({name:"InlineCellEditor",props:{value:{default:void 0},item:{type:Object,required:true},column:{type:Object,required:true},rowIndex:{type:Number,required:true},editorType:{type:String,required:true},onCommit:{type:Function,required:true},onCancel:{type:Function,required:true}},setup(t){let n=ref(null),i=ref(null),f=ref(null),c=ref(t.value),a=ref(0),s=ref(false),m=b=>{c.value=b.target.value;},g=b=>b?.target?.value??String(c.value??""),d=b=>{if(t.editorType==="date"){let w=t.column.cellEditorParams?.dateFormat??t.column.dateFormat??DEFAULT_DATE_FORMAT;if((t.column.cellEditorParams?.editorType??"text")==="native"){if(b==null){c.value="";return}let E=String(b);c.value=E.match(/^\d{4}-\d{2}-\d{2}/)?E.substring(0,10):E;return}c.value=formatDateForDisplay(b,w)??"";return}c.value=b;};d(t.value);let u=b=>{s.value=true,t.onCommit(b);},C=()=>{s.value=true,t.onCancel();},r=()=>s.value?(s.value=false,true):false,v=()=>{let b=i.value,w=f.value;if(!b||!w)return;let y=b.getBoundingClientRect(),E=200,h=window.innerHeight-y.bottom,p=h<E&&y.top>h;w.style.position="fixed",w.style.left=`${y.left}px`,w.style.width=`${y.width}px`,w.style.maxHeight=`${E}px`,w.style.zIndex="9999",w.style.right="auto",w.style.textAlign="left",p?(w.style.top="auto",w.style.bottom=`${window.innerHeight-y.top}px`):w.style.top=`${y.bottom}px`;},R=null,D=null;onMounted(()=>{let b=w=>{w.key==="Escape"&&(w.preventDefault(),w.stopPropagation(),C());};document.addEventListener("keydown",b,true),D=()=>{document.removeEventListener("keydown",b,true);},nextTick(()=>{if(i.value){t.editorType==="richSelect"&&F.value?F.value.focus({preventScroll:true}):i.value.focus({preventScroll:true}),v();let w=i.value,y=w.closest("[data-ogrid-scroll-container]")??w.closest('[style*="overflow"]'),E=()=>{t.onCancel&&t.onCancel();},h=requestAnimationFrame(()=>{y&&y.addEventListener("scroll",E,{passive:true}),window.addEventListener("scroll",E,{passive:true});});R=()=>{cancelAnimationFrame(h),y&&y.removeEventListener("scroll",E),window.removeEventListener("scroll",E);};return}n.value?.focus({preventScroll:true}),n.value?.select();});}),onUnmounted(()=>{R?.(),D?.();}),watch(()=>t.value,d),(()=>{let w=(t.column.cellEditorParams?.values??[]).findIndex(y=>String(y)===String(t.value));a.value=Math.max(w,0);})();let S=()=>{nextTick(()=>{let b=f.value;if(!b)return;b.children[a.value]?.scrollIntoView({block:"nearest"});});},A=b=>{let w=t.column.cellEditorParams?.formatValue;return w?w(b):b!=null?String(b):""},B=b=>{let w=t.column.cellEditorParams?.values??[];switch(b.key){case "ArrowDown":b.preventDefault(),a.value=Math.min(a.value+1,w.length-1),S();break;case "ArrowUp":b.preventDefault(),a.value=Math.max(a.value-1,0),S();break;case "Enter":b.preventDefault(),b.stopPropagation(),w.length>0&&a.value<w.length&&u(w[a.value]);break;case "Tab":b.preventDefault(),w.length>0&&a.value<w.length&&u(w[a.value]);break;case "Escape":b.preventDefault(),b.stopPropagation(),C();break}},V=ref(""),F=ref(null),x=ref(null),P=computed(()=>{let b=t.column.cellEditorParams?.values??[],w=V.value.trim().toLowerCase();return w?b.filter(y=>A(y).toLowerCase().includes(w)):b}),O=()=>{nextTick(()=>{let b=x.value;if(!b)return;b.children[a.value]?.scrollIntoView({block:"nearest"});});},M=b=>{let w=P.value;switch(b.key){case "ArrowDown":b.preventDefault(),a.value=Math.min(a.value+1,w.length-1),O();break;case "ArrowUp":b.preventDefault(),a.value=Math.max(a.value-1,0),O();break;case "Enter":b.preventDefault(),b.stopPropagation(),w.length>0&&a.value<w.length&&u(w[a.value]);break;case "Escape":b.preventDefault(),b.stopPropagation(),C();break}};return ()=>{if(t.editorType==="checkbox"){let b=!!t.value;return h("div",{style:{...xt,justifyContent:"center"}},l({checked:b,onChange:w=>u(w),onCancel:C}))}if(t.editorType==="select"){let b=t.column.cellEditorParams?.values??[];return h("div",{ref:w=>{i.value=w;},tabindex:0,style:{...xt,position:"relative"},onKeydown:B},[h("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",cursor:"pointer",fontSize:"13px",color:"inherit"}},[h("span",A(t.value)),h("span",{style:{marginLeft:"4px",fontSize:"10px",opacity:"0.5"}},"\u25BE")]),h("div",{ref:w=>{f.value=w;},role:"listbox",style:{position:"absolute",top:"100%",left:"0",right:"0",maxHeight:"200px",overflowY:"auto",background:"var(--ogrid-bg, #fff)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",zIndex:"10",boxShadow:"0 4px 16px rgba(0,0,0,0.2)",textAlign:"left",fontSize:"13px",fontFamily:"inherit"}},[...b.map((w,y)=>h("div",{key:String(w),role:"option","aria-selected":y===a.value,onClick:()=>u(w),style:{padding:"6px 8px",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:"13px",...y===a.value?{background:"var(--ogrid-bg-hover, #e8f0fe)"}:{}}},A(w)))])])}if(t.editorType==="richSelect"){let b=P.value;return h("div",{ref:w=>{i.value=w;},style:{...xt,position:"relative"}},[h("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",cursor:"pointer",fontSize:"13px",color:"inherit"}},[h("span",A(t.value)),h("span",{style:{marginLeft:"4px",fontSize:"10px",opacity:"0.5"}},"\u25BE")]),h("div",{ref:w=>{f.value=w;},role:"listbox",style:{position:"absolute",top:"100%",left:"0",right:"0",maxHeight:"200px",overflowY:"auto",background:"var(--ogrid-bg, #fff)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",zIndex:"10",boxShadow:"0 4px 16px rgba(0,0,0,0.2)",textAlign:"left",fontSize:"13px",fontFamily:"inherit"}},[h("input",{ref:w=>{F.value=w;},type:"text",value:V.value,placeholder:"Search...",onInput:w=>{V.value=w.target.value,a.value=0;},onKeydown:M,style:{width:"100%",padding:"6px 8px",border:"none",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",background:"var(--ogrid-bg, #fff)",color:"inherit",font:"inherit",fontSize:"13px",outline:"none",boxSizing:"border-box",position:"sticky",top:"0",zIndex:"1"}}),h("div",{ref:w=>{x.value=w;}},b.map((w,y)=>h("div",{key:String(w),role:"option","aria-selected":y===a.value,onClick:()=>u(w),style:{padding:"6px 8px",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:"13px",...y===a.value?{background:"var(--ogrid-bg-hover, #e8f0fe)"}:{}}},A(w)))),...b.length===0?[h("div",{style:{padding:"6px 8px",color:"var(--ogrid-muted, #999)",fontSize:"13px"}},"No matches")]:[]])])}if(t.editorType==="date"){let b=t.column.cellEditorParams?.dateFormat??t.column.dateFormat??DEFAULT_DATE_FORMAT,w=t.column.cellEditorParams?.editorType??"text",y=p=>{if(w!=="native"){let I=parseUserInputDate(p,b);if(I!==null){let H=I.getUTCFullYear().toString().padStart(4,"0"),_=(I.getUTCMonth()+1).toString().padStart(2,"0"),K=I.getUTCDate().toString().padStart(2,"0");u(`${H}-${_}-${K}`);}else u(p||null);}else u(p);},E=p=>{p.stopPropagation(),p.key==="Enter"&&(p.preventDefault(),y(g(p))),p.key==="Escape"&&(p.preventDefault(),C()),p.key==="Tab"&&(p.preventDefault(),y(g(p)));};if(w==="native"){let p=(()=>{if(c.value==null)return "";let I=String(c.value);return I.match(/^\d{4}-\d{2}-\d{2}/)?I.substring(0,10):I})();return h("div",{style:xt},h("input",{ref:I=>{n.value=I;},type:"date",value:p,style:{width:"100%",height:"100%",border:"none",outline:"none",padding:"0 4px",fontSize:"inherit",boxSizing:"border-box"},onInput:m,onChange:m,onKeyup:m,onKeydown:E,onBlur:I=>{r()||y(g(I));}}))}let h$1=getDateInputPlaceholder(b);return h("div",{style:xt},h("input",{ref:p=>{n.value=p;},type:"text",value:String(c.value??""),placeholder:h$1,style:{width:"100%",height:"100%",border:"none",outline:"none",padding:"0 4px",fontSize:"inherit",boxSizing:"border-box"},onInput:m,onChange:m,onKeyup:m,onKeydown:E,onBlur:p=>{r()||y(g(p));}}))}return h("div",{style:xt},h("input",{ref:b=>{n.value=b;},type:"text",value:c.value!=null?String(c.value):"",style:{width:"100%",height:"100%",border:"none",outline:"none",padding:"0 4px",fontSize:"inherit",boxSizing:"border-box"},onInput:m,onChange:m,onKeyup:m,onKeydown:b=>{b.stopPropagation(),b.key==="Enter"&&(b.preventDefault(),u(g(b))),b.key==="Escape"&&(b.preventDefault(),C()),b.key==="Tab"&&(b.preventDefault(),u(g(b)));},onBlur:b=>{r()||u(g(b));}}))}}})}var si=240,no=36,Fn={columns:"Columns",filters:"Filters"},ui={columns:"\u2261",filters:"\u2A65"};function Zo(e){let l=e.activePanel!==null,t=e.position??"right",n={display:"flex",flexDirection:"column",width:`${no}px`,background:"var(--ogrid-header-bg, #f5f5f5)",...t==="right"?{borderLeft:"1px solid var(--ogrid-border, #e0e0e0)"}:{borderRight:"1px solid var(--ogrid-border, #e0e0e0)"}},i=h("div",{style:n,role:"tablist","aria-label":"Side bar tabs"},e.panels.map(a=>h("button",{key:a,role:"tab","aria-selected":e.activePanel===a,"aria-label":Fn[a],title:Fn[a],onClick:()=>e.onPanelChange(e.activePanel===a?null:a),style:{width:`${no}px`,height:`${no}px`,border:"none",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:"14px",display:"flex",alignItems:"center",justifyContent:"center",background:e.activePanel===a?"var(--ogrid-bg, #fff)":"transparent",fontWeight:e.activePanel===a?"bold":"normal"}},ui[a]))),f=null;if(l&&e.activePanel){let a={width:`${si}px`,display:"flex",flexDirection:"column",overflow:"hidden",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",...t==="right"?{borderLeft:"1px solid var(--ogrid-border, #e0e0e0)"}:{borderRight:"1px solid var(--ogrid-border, #e0e0e0)"}},s=[];if(e.activePanel==="columns"){let m=e.columns.every(g=>e.visibleColumns.has(g.columnId));s.push(h("div",{style:{display:"flex",gap:"8px",marginBottom:"8px"}},[h("button",{disabled:m,onClick:()=>{let g=new Set(e.visibleColumns);e.columns.forEach(d=>g.add(d.columnId)),e.onSetVisibleColumns(g);},style:{flex:"1",cursor:"pointer",background:"var(--ogrid-bg-subtle, #f3f2f1)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:"4px",padding:"4px 8px"}},"Select All"),h("button",{onClick:()=>{let g=new Set;e.columns.forEach(d=>{d.required&&e.visibleColumns.has(d.columnId)&&g.add(d.columnId);}),e.onSetVisibleColumns(g);},style:{flex:"1",cursor:"pointer",background:"var(--ogrid-bg-subtle, #f3f2f1)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:"4px",padding:"4px 8px"}},"Clear All")])),e.columns.forEach(g=>{s.push(h("label",{key:g.columnId,style:{display:"flex",alignItems:"center",gap:"6px",padding:"2px 0",cursor:"pointer"}},[h("input",{type:"checkbox",checked:e.visibleColumns.has(g.columnId),disabled:g.required,onChange:d=>e.onVisibilityChange(g.columnId,d.target.checked)}),h("span",null,g.name)]));});}e.activePanel==="filters"&&(e.filterableColumns.length===0?s.push(h("div",{style:{color:"var(--ogrid-muted, #999)",fontStyle:"italic"}},"No filterable columns")):e.filterableColumns.forEach(m=>{let g=m.filterField,d=[h("div",{style:{fontWeight:"500",marginBottom:"4px",fontSize:"13px"}},m.name)];if(m.filterType==="text"){let u=e.filters[g],C=u?.type==="text"?u.value:"";d.push(h("input",{type:"text",value:C,onInput:r=>{let v=r.target.value;e.onFilterChange(g,v?{type:"text",value:v}:void 0);},placeholder:`Filter ${m.name}...`,"aria-label":`Filter ${m.name}`,style:{width:"100%",boxSizing:"border-box",padding:"4px 6px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:"4px"}}));}if(m.filterType==="multiSelect"){let C=(e.filterOptions[g]??[]).map(r=>{let v=e.filters[g],R=v?.type==="multiSelect"?v.value.includes(r):false;return h("label",{key:r,style:{display:"flex",alignItems:"center",gap:"4px",padding:"1px 0",cursor:"pointer",fontSize:"13px"}},[h("input",{type:"checkbox",checked:R,onChange:D=>{let T=e.filters[g],S=T?.type==="multiSelect"?T.value:[],A=D.target.checked?[...S,r]:S.filter(B=>B!==r);e.onFilterChange(g,A.length>0?{type:"multiSelect",value:A}:void 0);}}),h("span",null,r)])});d.push(h("div",{style:{maxHeight:"120px",overflowY:"auto"},role:"group","aria-label":`${m.name} options`},C));}if(m.filterType==="date"){let u=e.filters[g],C=u?.type==="date"?u.value:{from:void 0,to:void 0};d.push(h("div",{style:{display:"flex",flexDirection:"column",gap:"4px"}},[h("label",{style:{display:"flex",alignItems:"center",gap:"4px",fontSize:"12px"}},["From:",h("input",{type:"date",value:C.from??"",onInput:r=>{let v=r.target.value||void 0,R=C.to;e.onFilterChange(g,v||R?{type:"date",value:{from:v,to:R}}:void 0);},"aria-label":`${m.name} from date`,style:{flex:"1",padding:"2px 4px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:"4px"}})]),h("label",{style:{display:"flex",alignItems:"center",gap:"4px",fontSize:"12px"}},["To:",h("input",{type:"date",value:C.to??"",onInput:r=>{let v=r.target.value||void 0,R=C.from;e.onFilterChange(g,R||v?{type:"date",value:{from:R,to:v}}:void 0);},"aria-label":`${m.name} to date`,style:{flex:"1",padding:"2px 4px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:"4px"}})])]));}s.push(h("div",{key:m.columnId,style:{marginBottom:"12px"}},d));})),f=h("div",{role:"tabpanel","aria-label":Fn[e.activePanel],style:a},[h("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 12px",borderBottom:"1px solid var(--ogrid-border, #e0e0e0)",fontWeight:"600"}},[h("span",null,Fn[e.activePanel]),h("button",{onClick:()=>e.onPanelChange(null),style:{border:"none",background:"transparent",cursor:"pointer",fontSize:"16px",color:"var(--ogrid-fg, #242424)"},"aria-label":"Close panel"},"\xD7")]),h("div",{style:{flex:"1",overflowY:"auto",padding:"8px 12px"}},s)]);}let c=[];return t==="left"?(c.push(i),f&&c.push(f)):(f&&c.push(f),c.push(i)),h("div",{style:{display:"flex",flexDirection:"row",flexShrink:"0"},role:"complementary","aria-label":"Side bar"},c)}function di(e){return defineComponent({name:"OGrid",props:{gridProps:{type:Object,required:true}},setup(l,{expose:t}){let n=computed(()=>l.gridProps),{dataGridProps:i,pagination:f,columnChooser:c,layout:a,api:s}=$t(n);t({api:s});let m=ref(false),g=()=>{m.value=!m.value;},d=u=>{u.key==="Escape"&&m.value&&(m.value=false);};return onMounted(()=>{document.addEventListener("keydown",d);}),onUnmounted(()=>{document.removeEventListener("keydown",d);}),()=>{let u=a.value.sideBarProps,C=u!=null,r=u?.position??"right",v=[];a.value.toolbar&&v.push(a.value.toolbar);let D=a.value.fullScreen===true?h("button",{type:"button",title:m.value?"Exit fullscreen":"Fullscreen","aria-label":m.value?"Exit fullscreen":"Fullscreen",onClick:g,style:{background:"none",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"4px",padding:"4px 6px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--ogrid-fg, rgba(0,0,0,0.87))"}},[m.value?h("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round",innerHTML:'<polyline points="4 10 0 10 0 14"/><polyline points="12 6 16 6 16 2"/><line x1="0" y1="10" x2="4" y2="6"/><line x1="16" y1="6" x2="12" y2="10"/>'}):h("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round",innerHTML:'<polyline points="10 2 14 2 14 6"/><polyline points="6 14 2 14 2 10"/><line x1="14" y1="2" x2="10" y2="6"/><line x1="2" y1="14" x2="6" y2="10"/>'})]):null,T=c.value.placement==="toolbar"?h(e.ColumnChooser,{columns:c.value.columns,visibleColumns:c.value.visibleColumns,onVisibilityChange:c.value.onVisibilityChange}):null,S=h(e.PaginationControls,{currentPage:f.value.page,pageSize:f.value.pageSize,totalCount:f.value.displayTotalCount,onPageChange:f.value.setPage,onPageSizeChange:P=>{f.value.setPageSize(P);},pageSizeOptions:f.value.pageSizeOptions,entityLabelPlural:f.value.entityLabelPlural}),A=h("div",{style:{flex:"1",minWidth:"0",minHeight:"0",display:"flex",flexDirection:"column"}},[h(e.DataGridTable,{gridProps:i.value})]),B=[];C&&r==="left"&&B.push(Zo(u)),B.push(A),C&&r!=="left"&&B.push(Zo(u));let V=v.length>0||T!=null||D!=null,F=m.value?{position:"fixed",inset:"0",zIndex:9999,display:"flex",flexDirection:"column",background:"var(--ogrid-bg, #fff)"}:{display:"flex",flexDirection:"column",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"4px",overflow:"hidden"},x=m.value?{display:"flex",flexDirection:"column",flex:"1",minHeight:"0",overflow:"hidden",background:"var(--ogrid-bg, #fff)"}:void 0;return h("div",{class:a.value.className,style:F},[h("div",{style:x??{}},[...V?[h("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 12px",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",gap:"8px"}},[h("div",{style:{display:"flex",alignItems:"center",gap:"8px",flex:"1"}},v),h("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},[...T?[T]:[],...D?[D]:[]])])]:[],...a.value.toolbarBelow?[h("div",{style:{padding:"8px 12px",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))"}},[a.value.toolbarBelow])]:[],...a.value.formulaBar?[a.value.formulaBar]:[],h("div",{style:{display:"flex",flex:"1",minHeight:"0"}},B),...a.value.sheetTabs?[a.value.sheetTabs]:[],h("div",{style:{display:"flex",alignItems:"center",padding:"8px 0",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))"}},[S])])])}}})}export{Vn as FormulaBar,Nn as FormulaRefOverlay,Hn as MarchingAntsOverlay,zn as SheetTabs,Bn as StatusBar,qa as createDataGridTable,ni as createInlineCellEditor,di as createOGrid,wn as getCellInteractionProps,jt as useActiveCell,Xt as useCellEditing,Yt as useCellSelection,Jt as useClipboard,_o as useColumnChooserState,No as useColumnHeaderFilterState,an as useColumnHeaderMenuState,ln as useColumnPinning,hn as useColumnReorder,dn as useColumnResize,Zt as useContextMenu,un as useDataGridState,yn as useDataGridTableSetup,gn as useDateFilterState,cn as useDebounce,Ho as useDebouncedCallback,tn as useFillHandle,Wt as useFilterOptions,_t as useFormulaBar,yo as useHeadlessGrid,Ko as useInlineCellEditorState,Qt as useKeyboardNavigation,fn as useMultiSelectFilterState,$t as useOGrid,vn as usePeopleFilterState,qo as useRichSelectState,qt as useRowSelection,Mt as useSideBarState,on as useTableLayout,mn as useTextFilterState,nn as useUndoRedo,bn as useVirtualScroll};
1
+ import {injectGlobalStyles,Z_INDEX,getStatusBarParts,measureRange,flattenColumns,getMultiSelectFilterFields,deriveFilterOptionsFromData,shouldUseWorkerSort,processClientSideData,processClientSideDataAsync,validateColumns,validateRowIds,computeRowSelectionState,parseTsvClipboard,applyPastedValues,applyCutClear,normalizeSelectionRange,applyCellDeletion,computeTabNavigation,computeArrowNavigation,UndoRedoStack,CHECKBOX_COLUMN_WIDTH,estimateHeaderMinWidth,CELL_PADDING,measureColumnContentWidth,resolveResponsiveConfig,applyResponsiveHiding,DEFAULT_MIN_COLUMN_WIDTH,computeAggregations,getDataGridStatusBarConfig,isInSelectionRange,applyFillValues,formatSelectionAsTsv,formatDateForDisplay,DEFAULT_DATE_FORMAT,getPinStateForColumn,validateVirtualScrollConfig,computeVisibleRange,computeTotalHeight,computeVisibleColumnRange,getScrollTopForRow,partitionColumnsForVirtualization,formatCellReference,buildHeaderRows,indexToColumnLetter,ROW_NUMBER_COLUMN_ID,ROW_NUMBER_COLUMN_WIDTH,getHeaderFilterConfig,getDateInputPlaceholder,getCellRenderDescriptor,buildInlineEditorProps,buildPopoverEditorProps,resolveCellDisplayContent,resolveCellStyle,handleBooleanCellPointerDown,parseUserInputDate,rangesEqual,buildCellIndex,cellIndexKey,calculateDropTarget,reorderColumnArray,parseValue,computeNextSortState,mergeFilter,getCellValue,isColumnEditable,columnLetterToIndex,applyRangeRowSelection,ROW_NUMBER_COLUMN_MIN_WIDTH,createGridDataAccessor,computeAutoScrollSpeed}from'@alaarab/ogrid-core';export{AUTOSIZE_EXTRA_PX,AUTOSIZE_MAX_PX,CELL_PADDING,CHECKBOX_COLUMN_WIDTH,COLUMN_HEADER_MENU_ITEMS,CellDescriptorCache,DEFAULT_DEBOUNCE_MS,DEFAULT_MIN_COLUMN_WIDTH,GRID_BORDER_RADIUS,GRID_CONTEXT_MENU_ITEMS,MAX_PAGE_BUTTONS,PAGE_SIZE_OPTIONS,PEOPLE_SEARCH_DEBOUNCE_MS,RESPONSIVE_BREAKPOINTS,ROW_NUMBER_COLUMN_ID,ROW_NUMBER_COLUMN_MIN_WIDTH,ROW_NUMBER_COLUMN_WIDTH,SIDEBAR_TRANSITION_MS,UndoRedoStack,Z_INDEX,applyCellDeletion,applyCutClear,applyFillValues,applyPastedValues,applyRangeRowSelection,applyResponsiveHiding,areGridRowPropsEqual,booleanParser,buildCellIndex,buildCsvHeader,buildCsvRows,buildHeaderRows,buildInlineEditorProps,buildPopoverEditorProps,calculateDropTarget,clampSelectionToBounds,columnLetterToIndex,computeAggregations,computeArrowNavigation,computeAutoScrollSpeed,computeNextSortState,computeRowSelectionState,computeTabNavigation,computeTotalHeight,computeVisibleColumnRange,computeVisibleRange,createGridDataAccessor,createSortFilterWorker,currencyParser,dateParser,debounce,deriveFilterOptionsFromData,emailParser,escapeCsvValue,exportToCsv,extractValueMatrix,findCtrlArrowTarget,flattenColumns,formatCellReference,formatCellValueForTsv,formatSelectionAsTsv,formatShortcut,getCellRenderDescriptor,getCellValue,getColumnHeaderMenuItems,getContextMenuHandlers,getDataGridStatusBarConfig,getFilterField,getHeaderFilterConfig,getMultiSelectFilterFields,getPaginationViewModel,getPinStateForColumn,getResponsiveHiddenColumns,getScrollTopForRow,getStatusBarParts,handleBooleanCellPointerDown,indexToColumnLetter,injectGlobalStyles,isColumnEditable,isFilterConfig,isInSelectionRange,isRowInRange,measureColumnContentWidth,measureRange,mergeFilter,normalizeSelectionRange,numberParser,parseTsvClipboard,parseValue,partitionColumnsForVirtualization,processClientSideData,processClientSideDataAsync,rangesEqual,reorderColumnArray,resolveCellDisplayContent,resolveCellStyle,resolveResponsiveConfig,terminateSortFilterWorker,toUserLike,triggerCsvDownload,validateColumns,validateRowIds,validateVirtualScrollConfig}from'@alaarab/ogrid-core';import {FORMULA_BAR_STYLES,handleFormulaBarKeyDown,FORMULA_REF_COLORS,deriveFormulaBarText,extractFormulaReferences,processFormulaBarCommit,FormulaEngine}from'@alaarab/ogrid-core/formula';export{CIRC_ERROR,DIV_ZERO_ERROR,DependencyGraph,FORMULA_BAR_CSS,FORMULA_BAR_STYLES,FORMULA_REF_COLORS,FormulaEngine,FormulaError,FormulaEvaluator,GENERAL_ERROR,NAME_ERROR,NA_ERROR,REF_ERROR,VALUE_ERROR,adjustFormulaReferences,canInsertReference,createBuiltInFunctions,deriveFormulaBarText,extractFormulaReferences,flattenArgs,formatAddress,formulaToString,fromCellKey,handleFormulaBarKeyDown,insertReferenceAtCursor,isFormulaError,parse,parseCellRef,parseRange,processFormulaBarCommit,toBoolean,toCellKey,toNumber,tokenize}from'@alaarab/ogrid-core/formula';import {defineComponent,ref,computed,onMounted,watch,toValue,onUnmounted,h,shallowRef,isRef,triggerRef,nextTick,Teleport,isReadonly,unref,customRef}from'vue';var Ln=defineComponent({name:"MarchingAntsOverlay",props:{containerRef:{type:Object,required:true},selectionRange:{type:Object,default:null},copyRange:{type:Object,default:null},cutRange:{type:Object,default:null},colOffset:{type:Number,required:true},items:{type:Array,required:true},visibleColumns:{type:Array,default:void 0},columnSizingOverrides:{type:Object,required:true},columnOrder:{type:Array,default:void 0}},setup(e){let l=ref(null),n=ref(null),t=0,i,s=computed(()=>e.copyRange??e.cutRange),d=()=>{let u=toValue(e.containerRef);if(!u){l.value=null,n.value=null;return}l.value=e.selectionRange?measureRange(u,e.selectionRange,e.colOffset):null,n.value=s.value?measureRange(u,s.value,e.colOffset):null;};onMounted(()=>{injectGlobalStyles("ogrid-marching-ants-keyframes","@keyframes ogrid-marching-ants{to{stroke-dashoffset:-8}}");}),watch([()=>e.selectionRange,s,()=>toValue(e.containerRef),()=>e.items,()=>e.visibleColumns,()=>e.columnSizingOverrides,()=>e.columnOrder],()=>{if(!e.selectionRange&&!s.value){l.value=null,n.value=null;return}t=requestAnimationFrame(d);let u=toValue(e.containerRef);u&&(i?.disconnect(),i=new ResizeObserver(d),i.observe(u));},{immediate:true}),onUnmounted(()=>{cancelAnimationFrame(t),i?.disconnect();});let a=computed(()=>{let u=e.selectionRange,v=s.value;return u!=null&&v!=null&&u.startRow===v.startRow&&u.startCol===v.startCol&&u.endRow===v.endRow&&u.endCol===v.endCol});return ()=>!l.value&&!n.value?null:h("div",{style:{position:"relative"}},[l.value&&!a.value&&!(e.selectionRange&&e.selectionRange.startRow===e.selectionRange.endRow&&e.selectionRange.startCol===e.selectionRange.endCol)?h("svg",{style:{position:"absolute",top:`${l.value.top}px`,left:`${l.value.left}px`,width:`${l.value.width}px`,height:`${l.value.height}px`,pointerEvents:"none",zIndex:Z_INDEX.SELECTION_OVERLAY,overflow:"visible"},"aria-hidden":"true"},[h("rect",{x:1,y:1,width:Math.max(0,l.value.width-2),height:Math.max(0,l.value.height-2),fill:"none",stroke:"var(--ogrid-selection-color, #217346)","stroke-width":2})]):null,n.value?h("svg",{style:{position:"absolute",top:`${n.value.top}px`,left:`${n.value.left}px`,width:`${n.value.width}px`,height:`${n.value.height}px`,pointerEvents:"none",zIndex:Z_INDEX.CLIPBOARD_OVERLAY,overflow:"visible"},"aria-hidden":"true"},[h("rect",{x:1,y:1,width:Math.max(0,n.value.width-2),height:Math.max(0,n.value.height-2),fill:"none",stroke:"var(--ogrid-selection-color, #217346)","stroke-width":2,"stroke-dasharray":"4 4",style:{animation:"ogrid-marching-ants 0.5s linear infinite"}})]):null])}});var Hn=defineComponent({name:"StatusBar",props:{totalCount:{type:Number,required:true},filteredCount:{type:Number,default:void 0},selectedCount:{type:Number,default:void 0},selectedCellCount:{type:Number,default:void 0},aggregation:{type:Object,default:void 0},suppressRowCount:{type:Boolean,default:false}},setup(e){return ()=>{let l=getStatusBarParts(e);return h("div",{role:"status","aria-live":"polite",style:{marginTop:"auto",padding:"6px 12px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",backgroundColor:"var(--ogrid-header-bg, rgba(0,0,0,0.04))",display:"flex",alignItems:"center",gap:"16px",fontSize:"0.875rem",lineHeight:"20px",minHeight:"33px",boxSizing:"border-box"}},l.map((n,t)=>h("span",{key:n.key,style:{display:"inline-flex",alignItems:"center",gap:"4px",...t<l.length-1?{marginRight:"16px",borderRight:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",paddingRight:"16px"}:{}}},[h("span",{style:{color:"var(--ogrid-fg-secondary, rgba(0,0,0,0.6))"}},n.label),h("span",{style:{fontWeight:"600"}},n.value.toLocaleString())])))}}});var Vn=defineComponent({name:"FormulaBar",props:{cellRef:{type:[String,null],default:null},formulaText:{type:String,required:true},isEditing:{type:Boolean,required:true}},emits:["inputChange","commit","cancel","startEditing"],setup(e,{emit:l}){let n=ref(null);return watch(()=>e.isEditing,t=>{t&&n.value&&n.value.focus();}),()=>h("div",{style:FORMULA_BAR_STYLES.bar,role:"toolbar","aria-label":"Formula bar"},[h("div",{style:FORMULA_BAR_STYLES.nameBox,"aria-label":"Active cell reference"},e.cellRef??"\u2014"),h("div",{style:FORMULA_BAR_STYLES.fxLabel,"aria-hidden":"true"},"fx"),h("input",{ref:n,type:"text",style:FORMULA_BAR_STYLES.input,value:e.formulaText,readonly:!e.isEditing,onInput:t=>l("inputChange",t.target.value),onKeydown:t=>handleFormulaBarKeyDown(t.key,()=>t.preventDefault(),()=>l("commit"),()=>l("cancel")),onClick:()=>{e.isEditing||l("startEditing");},onDblclick:()=>{e.isEditing||l("startEditing");},"aria-label":"Formula input",spellcheck:false,autocomplete:"off"})])}});var wl={display:"flex",alignItems:"center",borderTop:"1px solid var(--ogrid-border, #e0e0e0)",background:"var(--ogrid-header-bg, #f5f5f5)",minHeight:"30px",overflowX:"auto",overflowY:"hidden",gap:"0",fontSize:"12px"},yl={background:"none",border:"none",cursor:"pointer",padding:"4px 10px",fontSize:"16px",lineHeight:"22px",color:"var(--ogrid-fg-secondary, #666)",flexShrink:0},mo={background:"none",border:"none",borderBottom:"2px solid transparent",cursor:"pointer",padding:"4px 16px",fontSize:"12px",lineHeight:"22px",color:"var(--ogrid-fg, #242424)",whiteSpace:"nowrap",position:"relative"},xl={...mo,fontWeight:600,borderBottomColor:"var(--ogrid-primary, #217346)",background:"var(--ogrid-bg, #fff)"},Gn=defineComponent({name:"SheetTabs",props:{sheets:{type:Array,required:true},activeSheet:{type:String,required:true},showAddButton:{type:Boolean,default:false}},emits:["sheetChange","sheetAdd"],setup(e,{emit:l}){return ()=>h("div",{style:wl,role:"tablist","aria-label":"Sheet tabs"},[e.showAddButton?h("button",{type:"button",style:yl,onClick:()=>l("sheetAdd"),title:"Add sheet","aria-label":"Add sheet"},"+"):null,...e.sheets.map(n=>{let t=n.id===e.activeSheet,i=t?xl:mo,s=t&&n.color?{...i,borderBottomColor:n.color}:i;return h("button",{key:n.id,type:"button",role:"tab","aria-selected":t,style:s,onClick:()=>l("sheetChange",n.id)},n.name)})])}});function El(e,l,n){let t=l.col+n,i=(l.endCol??l.col)+n,s=l.endRow??l.row,d=e.querySelector(`[data-row-index="${l.row}"][data-col-index="${t}"]`),a=e.querySelector(`[data-row-index="${s}"][data-col-index="${i}"]`);if(!d||!a)return null;let u=e.getBoundingClientRect(),v=d.getBoundingClientRect(),C=a.getBoundingClientRect();return {top:Math.round(v.top-u.top),left:Math.round(v.left-u.left),width:Math.round(C.right-v.left),height:Math.round(C.bottom-v.top),color:FORMULA_REF_COLORS[l.colorIndex%FORMULA_REF_COLORS.length]}}var zn=defineComponent({name:"FormulaRefOverlay",props:{containerEl:{type:Object,default:null},references:{type:Array,required:true},colOffset:{type:Number,required:true}},setup(e){let l=ref([]),n=0;function t(){let i=e.containerEl,s=e.references;if(!i||s.length===0){l.value=[];return}let d=[];for(let a of s){let u=El(i,a,e.colOffset);u&&d.push(u);}l.value=d;}return watch(()=>[e.references,e.containerEl,e.colOffset],()=>{if(cancelAnimationFrame(n),!e.containerEl||e.references.length===0){l.value=[];return}n=requestAnimationFrame(t);},{immediate:true}),()=>l.value.length===0?null:l.value.map((i,s)=>h("svg",{key:s,style:{position:"absolute",top:`${i.top}px`,left:`${i.left}px`,width:`${i.width}px`,height:`${i.height}px`,pointerEvents:"none",zIndex:3,overflow:"visible"},"aria-hidden":"true"},[h("rect",{x:"1",y:"1",width:Math.max(0,i.width-2),height:Math.max(0,i.height-2),fill:"none",stroke:i.color,"stroke-width":"2",style:"shape-rendering: crispEdges"})]))}});function Wt(e,l){let n=ref({}),t=ref({}),i=computed(()=>[...l.value].sort().join(",")),s=async()=>{let d=e.value,a=l.value,u="fetchFilterOptions"in d&&typeof d.fetchFilterOptions=="function"?d.fetchFilterOptions.bind(d):void 0;if(!u){n.value={},t.value={};return}let v={};a.forEach(p=>{v[p]=true;}),t.value=v;let C={};await Promise.all(a.map(async p=>{try{C[p]=await u(p);}catch{C[p]=[];}})),n.value=C,t.value={};};return watch([e,i],()=>{s().catch(()=>{});},{immediate:true}),{filterOptions:n,loadingOptions:t}}function dt(e){let l=unref(e);return customRef((n,t)=>({get(){return isRef(e)&&(l=e.value),l},set(i){l=i,t();}}))}function go(e){let{formulas:l,items:n,flatColumns:t,initialFormulas:i,onFormulaRecalc:s,formulaFunctions:d,namedRanges:a,sheets:u}=e,v=dt(n),C=dt(t),p=dt(s),f=shallowRef(null),c=false,o=computed(()=>l?.value??false);function m(){return createGridDataAccessor(v.value,C.value)}watch(o,T=>{if(T&&!f.value){if(f.value=new FormulaEngine({customFunctions:d,namedRanges:a}),u)for(let[E,O]of Object.entries(u))f.value.registerSheet(E,O);if(i&&!c){c=true;let E=m(),O=f.value.loadFormulas(i,E);O.updatedCells.length>0&&p.value?.(O);}}else !T&&f.value&&(f.value=null);},{immediate:true});function g(T,E){return f.value?.getValue(T,E)}function R(T,E){return f.value?.hasFormula(T,E)??false}function S(T,E){return f.value?.getFormula(T,E)}function b(T,E,O){if(!f.value)return;let A=m(),y=f.value.setFormula(T,E,O,A);y.updatedCells.length>0&&p.value?.(y);}function U(T,E){if(!f.value)return;let O=m(),A=f.value.onCellChanged(T,E,O);A.updatedCells.length>0&&p.value?.(A);}function k(T,E){return f.value?.getPrecedents(T,E)??[]}function B(T,E){return f.value?.getDependents(T,E)??[]}function F(T,E){return f.value?.getAuditTrail(T,E)??null}return {enabled:o,getFormulaValue:g,hasFormula:R,getFormula:S,setFormula:b,onCellChanged:U,getPrecedents:k,getDependents:B,getAuditTrail:F}}function _t(e){let{activeCol:l,activeRow:n,activeCellRef:t,getFormula:i,getRawValue:s,setFormula:d,onCellValueChanged:a}=e,u=ref(false),v=ref(""),C=ref(false),p=computed(()=>deriveFormulaBarText(l.value,n.value,i,s));watch([l,n],()=>{u.value=false,C.value=false;});let f=()=>{v.value=p.value,u.value=true,C.value=true;},c=S=>{v.value=S;},o=()=>{let S=l.value,b=n.value;S==null||b==null||!d||(processFormulaBarCommit(v.value,S,b,d,a),u.value=false,C.value=false);},m=()=>{u.value=false,C.value=false,v.value="";},g=computed(()=>u.value?v.value:p.value),R=computed(()=>extractFormulaReferences(g.value));return {cellRef:t,formulaText:g,isEditing:u,onInputChange:c,onCommit:o,onCancel:m,startEditing:f,referencedCells:R,isFormulaBarEditing:C}}var Co=["columns","filters"];function Mt(e){let{config:l}=e,n=l!=null&&l!==false,t=(()=>{if(!n||l===true)return {panels:Co,position:"right",defaultPanel:null};let v=l;return {panels:v.panels??Co,position:v.position??"right",defaultPanel:v.defaultPanel??null}})(),i=ref(t.defaultPanel),s=v=>{i.value=v;},d=v=>{i.value=i.value===v?null:v;},a=()=>{i.value=null;},u=computed(()=>i.value!==null);return {isEnabled:n,activePanel:i,setActivePanel:s,panels:t.panels,position:t.position,isOpen:u,toggle:d,close:a}}var lr=25,rr={};function $t(e){let l=computed(()=>{let r=e.value;return {columns:r.columns,columnOrder:r.columnOrder,onColumnOrderChange:r.onColumnOrderChange,onColumnResized:r.onColumnResized,onAutosizeColumn:r.onAutosizeColumn,onColumnPinned:r.onColumnPinned,columnChooser:r.columnChooser}}),n=computed(()=>{let r=e.value,L="data"in r?r.data:void 0,le="dataSource"in r?r.dataSource:void 0;return L&&le&&console.warn("[OGrid] Both data and dataSource provided. dataSource takes precedence."),{getRowId:r.getRowId,data:L,dataSource:le}}),t=computed(()=>{let r=e.value;return {page:r.page,pageSize:r.pageSize,sort:r.sort,filters:r.filters,visibleColumns:r.visibleColumns,isLoading:r.isLoading}}),i=computed(()=>{let r=e.value;return {onPageChange:r.onPageChange,onPageSizeChange:r.onPageSizeChange,onSortChange:r.onSortChange,onFiltersChange:r.onFiltersChange,onVisibleColumnsChange:r.onVisibleColumnsChange,onFirstDataRendered:r.onFirstDataRendered,onError:r.onError}}),s=computed(()=>{let r=e.value;return {defaultPageSize:r.defaultPageSize??lr,defaultSortBy:r.defaultSortBy,defaultSortDirection:r.defaultSortDirection??"asc",entityLabelPlural:r.entityLabelPlural??"items"}}),d=computed(()=>l.value.columnChooser===false?"none":l.value.columnChooser==="sidebar"?"sidebar":"toolbar"),a=computed(()=>flattenColumns(l.value.columns)),u=computed(()=>n.value.dataSource!=null),v=computed(()=>!u.value),C=ref([]),p=ref(false),f=computed(()=>n.value.data??C.value),c=computed(()=>t.value.isLoading??p.value),o=computed(()=>s.value.defaultSortBy??a.value[0]?.columnId??""),m=ref(1),g=ref(s.value.defaultPageSize),R=ref({field:o.value,direction:s.value.defaultSortDirection}),S=ref({}),b=ref(void 0),U=ref((()=>{let r=a.value.filter(L=>L.defaultVisible!==false).map(L=>L.columnId);return new Set(r.length>0?r:a.value.map(L=>L.columnId))})()),k=ref({}),B={};for(let r of flattenColumns(e.value.columns))r.pinned&&(B[r.columnId]=r.pinned);let F=ref(B),T=computed(()=>t.value.page??m.value),E=computed(()=>t.value.pageSize??g.value),O=computed(()=>t.value.sort??R.value),A=computed(()=>t.value.filters??S.value),y=computed(()=>l.value.columnOrder??b.value),I=computed(()=>t.value.visibleColumns??U.value),x=r=>{t.value.page===void 0&&(m.value=r),i.value.onPageChange?.(r);},D=r=>{t.value.pageSize===void 0&&(g.value=r),i.value.onPageSizeChange?.(r),x(1);},w=ref(0),h$1=r=>{t.value.sort===void 0&&(R.value=r),i.value.onSortChange?.(r),x(1),w.value++;},P=r=>{t.value.filters===void 0&&(S.value=r),i.value.onFiltersChange?.(r),x(1);},V=r=>{t.value.visibleColumns===void 0&&(U.value=r),i.value.onVisibleColumnsChange?.(r);},_=(r,L)=>{h$1(computeNextSortState(O.value,r,L));},K=(r,L)=>{P(mergeFilter(A.value,r,L));},M=(r,L)=>{let le=new Set(I.value);L?le.add(r):le.delete(r),V(le);},j=ref(new Set),J=computed(()=>e.value.selectedRows),Y=computed(()=>J.value??j.value),q=r=>{J.value===void 0&&(j.value=new Set(r.selectedRowIds)),e.value.onSelectionChange?.(r);},G=computed(()=>getMultiSelectFilterFields(a.value)),Z=computed(()=>n.value.dataSource??{fetchFilterOptions:void 0}),{filterOptions:ne,loadingOptions:ye}=Wt(Z,G),Fe=computed(()=>n.value.dataSource?.fetchFilterOptions!=null),Ke=computed(()=>Fe.value?ne.value:deriveFilterOptionsFromData(f.value,a.value)),Pe=computed(()=>shouldUseWorkerSort(e.value.workerSort,f.value.length,{columns:a.value,filters:A.value,sortBy:O.value.field})),xe=null,Ne=-1,Ve=null,We=null,$e=-1,tt=computed(()=>{if(!v.value||Pe.value)return null;let r=f.value,L=a.value,le=A.value,Re=w.value,st=O.value.field,ut=O.value.direction,je=Re!==Ne||le!==Ve||L!==We||r.length!==$e,fe;if(je||xe===null){Ne=Re,Ve=le,We=L,$e=r.length;let be=processClientSideData(r,L,le,st,ut),Ae=new Map;for(let pe=0;pe<r.length;pe++)Ae.set(r[pe],pe);xe=be.map(pe=>{let De=Ae.get(pe);return De!==void 0?De:-1}).filter(pe=>pe!==-1),fe=be;}else fe=xe.map(be=>r[be]).filter(be=>be!==void 0);let vt=fe.length,Xe=(T.value-1)*E.value;return {items:fe.slice(Xe,Xe+E.value),totalCount:vt}}),nt=ref(null),mt=0,Ue=null,ft=-1,Ie=null,Ct=null,ae=-1;watch([v,Pe,f,a,A,w,T,E],()=>{if(!v.value||!Pe.value)return;let r=f.value,L=a.value,le=A.value,Re=w.value,st=O.value.field,ut=O.value.direction,je=T.value,fe=E.value,vt=++mt;if(Re!==ft||le!==Ie||L!==Ct||r.length!==ae||Ue===null)ft=Re,Ie=le,Ct=L,ae=r.length,Ue=null,processClientSideDataAsync(r,L,le,st,ut).then(Ce=>{if(vt!==mt||_e)return;let be=new Map;for(let H=0;H<r.length;H++)be.set(r[H],H);Ue=Ce.map(H=>{let z=be.get(H);return z!==void 0?z:-1}).filter(H=>H!==-1);let Ae=Ce.length,pe=(je-1)*fe,De=Ce.slice(pe,pe+fe);nt.value={items:De,totalCount:Ae};}).catch(()=>{if(vt!==mt||_e)return;let Ce=processClientSideData(r,L,le,st,ut),be=new Map;for(let H=0;H<r.length;H++)be.set(r[H],H);Ue=Ce.map(H=>{let z=be.get(H);return z!==void 0?z:-1}).filter(H=>H!==-1);let Ae=Ce.length,pe=(je-1)*fe,De=Ce.slice(pe,pe+fe);nt.value={items:De,totalCount:Ae};});else {let Ce=Ue.map(De=>r[De]).filter(De=>De!==void 0),be=Ce.length,Ae=(je-1)*fe,pe=Ce.slice(Ae,Ae+fe);nt.value={items:pe,totalCount:be};}},{immediate:true});let ke=computed(()=>{let r=tt.value;return r||nt.value}),ot=ref([]),lt=ref(0),Ee=ref(false),rt=0,at=null,_e=false,ht=ref(0),Rt=()=>{if(!u.value||!n.value.dataSource){u.value||(Ee.value=false);return}let r=++rt;at?.abort();let L=new AbortController;at=L,Ee.value=true,n.value.dataSource.fetchPage({page:T.value,pageSize:E.value,sort:{field:O.value.field,direction:O.value.direction},filters:A.value,signal:L.signal}).then(le=>{r!==rt||_e||L.signal.aborted||(ot.value=le.items,lt.value=le.totalCount);}).catch(le=>{r!==rt||_e||L.signal.aborted||(i.value.onError?.(le),ot.value=[],lt.value=0);}).finally(()=>{r===rt&&!_e&&!L.signal.aborted&&(Ee.value=false);});};onMounted(()=>{validateColumns(a.value),Rt();}),watch([()=>n.value.dataSource,T,E,()=>O.value.field,()=>O.value.direction,A,ht],()=>{Rt();}),onUnmounted(()=>{_e=true,at?.abort(),at=null;});let Be=computed(()=>v.value&&ke.value?ke.value.items:ot.value),pt=computed(()=>v.value&&ke.value?ke.value.totalCount:lt.value),it=computed(()=>!!e.value.formulas),bt=ref(0),It=r=>{bt.value+=1,e.value.onFormulaRecalc?.(r);},ve=go({formulas:it,items:Be,flatColumns:a,initialFormulas:e.value.initialFormulas,onFormulaRecalc:It,formulaFunctions:e.value.formulaFunctions,namedRanges:e.value.namedRanges,sheets:e.value.sheets}),St=false,Tt=false;watch(Be,r=>{!St&&r.length>0&&(St=true,i.value.onFirstDataRendered?.()),!Tt&&r.length>0&&(Tt=true,validateRowIds(r,n.value.getRowId));});let qe=computed(()=>Object.values(A.value).some(r=>r!==void 0)),wt=computed(()=>a.value.map(r=>({columnId:r.columnId,name:r.name,required:r.required===true}))),Pt=computed(()=>{let r=e.value.statusBar;if(!r)return;if(typeof r=="object")return r;let L=v.value?n.value.data?.length??0:lt.value,le=pt.value;return {totalCount:L,filteredCount:qe.value?le:void 0,selectedCount:Y.value.size,suppressRowCount:true}}),Et=(r,L)=>{k.value={...k.value,[r]:L},l.value.onColumnResized?.(r,L);},te=(r,L)=>{k.value={...k.value,[r]:L},(l.value.onAutosizeColumn??l.value.onColumnResized)?.(r,L);},Q=(r,L)=>{if(L===null){let{[r]:le,...Re}=F.value;F.value=Re;}else F.value={...F.value,[r]:L};l.value.onColumnPinned?.(r,L);},re=shallowRef(Mt({config:e.value.sideBar}));watch(()=>e.value.sideBar,r=>{re.value=Mt({config:r});});let me=computed(()=>a.value.filter(r=>r.filterable&&r.filterable.type).map(r=>({columnId:r.columnId,name:r.name,filterField:r.filterable?.filterField??r.columnId,filterType:r.filterable?.type}))),se=computed(()=>{let r=re.value;if(!r.isEnabled)return null;r.activePanel.value;r.isOpen.value;return {get activePanel(){return r.activePanel.value},onPanelChange:r.setActivePanel,panels:r.panels,position:r.position,get isOpen(){return r.isOpen.value},toggle:r.toggle,close:r.close,columns:wt.value,visibleColumns:I.value,onVisibilityChange:M,onSetVisibleColumns:V,filterableColumns:me.value,filters:A.value,onFilterChange:K,filterOptions:Ke.value}}),Me=()=>P({}),we=computed(()=>u.value&&Ee.value||c.value),he=ref(null),ge=ref(null),yt=r=>{if(he.value=r,r){let L=r.match(/^([A-Z]+)(\d+)$/);L?ge.value={col:columnLetterToIndex(L[1]),row:parseInt(L[2],10)-1}:ge.value=null;}else ge.value=null;},Dt=computed(()=>ge.value?.col??null),Fn=computed(()=>ge.value?.row??null),Un=(r,L)=>{let le=Be.value,Re=a.value;if(!(L<0||L>=le.length||r<0||r>=Re.length))return getCellValue(le[L],Re[r])},Oe=_t({activeCol:Dt,activeRow:Fn,activeCellRef:he,getFormula:ve.enabled.value?ve.getFormula:void 0,getRawValue:Un,setFormula:ve.enabled.value?ve.setFormula:void 0}),kn=computed(()=>{let r=e.value,L=n.value.dataSource;return {items:Be.value,columns:l.value.columns,getRowId:n.value.getRowId,sortBy:O.value.field,sortDirection:O.value.direction,onColumnSort:_,visibleColumns:I.value,columnOrder:y.value,onColumnOrderChange:l.value.onColumnOrderChange,onColumnResized:Et,onAutosizeColumn:te,onColumnPinned:Q,pinnedColumns:F.value,initialColumnWidths:k.value,editable:r.editable,cellSelection:r.cellSelection,onCellValueChanged:r.onCellValueChanged,onUndo:r.onUndo,onRedo:r.onRedo,canUndo:r.canUndo,canRedo:r.canRedo,rowSelection:r.rowSelection??"none",selectedRows:Y.value,onSelectionChange:q,showRowNumbers:r.showRowNumbers||r.cellReferences||r.formulas,showColumnLetters:!!(r.cellReferences||r.formulas),showNameBox:!!(r.cellReferences&&!r.formulas),onActiveCellChange:r.cellReferences||r.formulas?yt:void 0,currentPage:T.value,pageSize:E.value,statusBar:Pt.value,isLoading:we.value,filters:A.value,onFilterChange:K,filterOptions:Ke.value,loadingFilterOptions:L?.fetchFilterOptions?ye.value:rr,peopleSearch:L?.searchPeople,getUserByEmail:L?.getUserByEmail,layoutMode:r.layoutMode,suppressHorizontalScroll:r.suppressHorizontalScroll,stickyHeader:r.stickyHeader??true,columnReorder:r.columnReorder,responsiveColumns:r.responsiveColumns,virtualScroll:r.virtualScroll,rowHeight:r.rowHeight,density:r.density??"normal","aria-label":r["aria-label"],"aria-labelledby":r["aria-labelledby"],emptyState:{hasActiveFilters:qe.value,onClearAll:Me,message:r.emptyState?.message,render:r.emptyState?.render},formulas:r.formulas,formulaVersion:bt.value,...ve.enabled.value?{getFormulaValue:ve.getFormulaValue,hasFormula:ve.hasFormula,getFormula:ve.getFormula,setFormula:ve.setFormula,onFormulaCellChanged:ve.onCellChanged,getPrecedents:ve.getPrecedents,getDependents:ve.getDependents,getAuditTrail:ve.getAuditTrail}:{},formulaReferences:Oe.referencedCells.value.length>0?Oe.referencedCells.value:void 0}}),Ft=computed(()=>({page:T.value,pageSize:E.value,displayTotalCount:pt.value,setPage:x,setPageSize:D,pageSizeOptions:e.value.pageSizeOptions,entityLabelPlural:s.value.entityLabelPlural})),Ge=computed(()=>({columns:wt.value,visibleColumns:I.value,onVisibilityChange:M,placement:d.value})),Ut=computed(()=>{let r=e.value,L=!!r.formulas,le=!!r.cellReferences&&!L,Re=r.toolbar;le&&(Re=[h("div",{style:{display:"inline-flex",alignItems:"center",padding:"0 8px",fontFamily:"'Consolas', 'Courier New', monospace",fontSize:"12px",border:"1px solid rgba(0,0,0,0.12)",borderRadius:"3px",height:"24px",marginRight:"8px",background:"#fff",minWidth:"40px",color:"rgba(0,0,0,0.6)"},"aria-label":"Active cell reference"},he.value??"\u2014"),Re]);let st=L?h(Vn,{cellRef:Oe.cellRef.value,formulaText:Oe.formulaText.value,isEditing:Oe.isEditing.value,onInputChange:Oe.onInputChange,onCommit:Oe.onCommit,onCancel:Oe.onCancel,onStartEditing:Oe.startEditing}):void 0,ut=r.sheetDefs&&r.sheetDefs.length>0&&r.activeSheet&&r.onSheetChange?h(Gn,{sheets:r.sheetDefs,activeSheet:r.activeSheet,showAddButton:!!r.onSheetAdd,onSheetChange:r.onSheetChange,onSheetAdd:r.onSheetAdd??(()=>{})}):void 0;return {toolbar:Re,toolbarBelow:r.toolbarBelow,className:r.className,emptyState:r.emptyState,sideBarProps:se.value,fullScreen:r.fullScreen,formulaBar:st,sheetTabs:ut}}),Mn=computed(()=>({hasActiveFilters:qe.value,setFilters:P})),On=computed(()=>({setRowData:r=>{u.value||(C.value=r);},setLoading:r=>{p.value=r;},getColumnState:()=>({visibleColumns:Array.from(I.value),sort:O.value,columnOrder:y.value??void 0,columnWidths:Object.keys(k.value).length>0?k.value:void 0,filters:Object.keys(A.value).length>0?A.value:void 0,pinnedColumns:Object.keys(F.value).length>0?F.value:void 0}),applyColumnState:r=>{r.visibleColumns&&V(new Set(r.visibleColumns)),r.sort&&h$1(r.sort),r.columnOrder&&(l.value.columnOrder===void 0&&(b.value=r.columnOrder),l.value.onColumnOrderChange?.(r.columnOrder)),r.columnWidths&&(k.value=r.columnWidths),r.filters&&P(r.filters),r.pinnedColumns&&(F.value=r.pinnedColumns);},setFilterModel:P,getSelectedRows:()=>Array.from(Y.value),setSelectedRows:r=>{J.value===void 0&&(j.value=new Set(r));},selectAll:()=>{let r=new Set(Be.value.map(L=>n.value.getRowId(L)));J.value===void 0&&(j.value=r),e.value.onSelectionChange?.({selectedRowIds:Array.from(r),selectedItems:Be.value});},deselectAll:()=>{J.value===void 0&&(j.value=new Set),e.value.onSelectionChange?.({selectedRowIds:[],selectedItems:[]});},clearFilters:()=>P({}),clearSort:()=>h$1({field:o.value,direction:s.value.defaultSortDirection}),resetGridState:r=>{P({}),h$1({field:o.value,direction:s.value.defaultSortDirection}),r?.keepSelection||(J.value===void 0&&(j.value=new Set),e.value.onSelectionChange?.({selectedRowIds:[],selectedItems:[]}));},getDisplayedRows:()=>Be.value,refreshData:()=>{u.value&&ht.value++;},scrollToRow:()=>{},getColumnOrder:()=>y.value??a.value.map(r=>r.columnId),setColumnOrder:r=>{l.value.columnOrder===void 0&&(b.value=r),l.value.onColumnOrderChange?.(r);}}));return {dataGridProps:kn,pagination:Ft,columnChooser:Ge,layout:Ut,filters:Mn,api:On}}var dr=25;function So(e){let{columns:l,data:n,getRowId:t,initialSort:i,initialFilters:s={},initialPage:d=1,initialPageSize:a=dr}=e,u=ref(i??{field:"",direction:"asc"}),v=ref({...s}),C=ref(d),p=ref(a),f=computed(()=>toValue(l)),c=computed(()=>toValue(n)),o=computed(()=>{let h=u.value.field;return processClientSideData(c.value,f.value,v.value,h||void 0,h?u.value.direction:void 0)}),m=computed(()=>o.value.length),g=computed(()=>Math.max(1,Math.ceil(m.value/p.value))),R=computed(()=>{let h=(C.value-1)*p.value;return o.value.slice(h,h+p.value)}),S=h=>{C.value=h;},b=h=>{p.value=h,C.value=1;},U=h=>{u.value=h,C.value=1;},k=h=>{U(computeNextSortState(u.value,h));},B=h=>{v.value=h,C.value=1;},F=(h,P)=>{B(mergeFilter(v.value,h,P));},T=computed(()=>Object.values(v.value).some(h=>h!==void 0)),E=computed(()=>{let h=new Map;for(let P of f.value)h.set(P.columnId,P);return h}),O=(h,P)=>{let V=E.value.get(P);if(V)return getCellValue(h,V)},A=h=>computed(()=>u.value.field!==h?"":u.value.direction==="asc"?"\u25B2":"\u25BC"),y=ref(new Set);return {columns:f,rows:R,totalCount:m,totalPages:g,allFilteredRows:o,sort:u,setSort:U,toggleSort:k,sortIndicator:A,filters:v,setFilters:B,setFilter:F,hasActiveFilters:T,page:C,pageSize:p,setPage:S,setPageSize:b,getRowId:t,getCellValue:O,selectedRowIds:y,isRowSelected:h=>y.value.has(t(h)),toggleRowSelection:h=>{let P=t(h),V=new Set(y.value);V.has(P)?V.delete(P):V.add(P),y.value=V;},selectAllOnPage:()=>{let h=new Set(y.value);for(let P of R.value)h.add(t(P));y.value=h;},clearSelection:()=>{y.value=new Set;}}}function qt(e){let{items:l,getRowId:n,rowSelection:t,controlledSelectedRows:i,onSelectionChange:s}=e,d=shallowRef(new Set),a=-1,u=computed(()=>{let o=i.value;return o!=null?o instanceof Set?o:new Set(o):d.value}),v=o=>{i.value!==void 0?isReadonly(i)||(i.value=o):d.value=o,s?.({selectedRowIds:Array.from(o),selectedItems:l.value.filter(m=>o.has(n(m)))});},C=(o,m,g,R)=>{if(t.value==="single"){v(m?new Set([o]):new Set),a=g;return}let S=l.value,b;R&&a>=0&&a!==g?b=applyRangeRowSelection(a,g,m,S,n,u.value):(b=new Set(u.value),m?b.add(o):b.delete(o)),a=g,v(b);},p=o=>{v(o?new Set(l.value.map(m=>n(m))):new Set);},f=computed(()=>computeRowSelectionState(u.value,l.value,n).allSelected),c=computed(()=>computeRowSelectionState(u.value,l.value,n).someSelected);return {selectedRowIds:u,updateSelection:v,handleRowCheckboxChange:C,handleSelectAll:p,allSelected:f,someSelected:c}}function jt(e){let l=shallowRef(null),n=ref(void 0);return {editingCell:l,setEditingCell:s=>{if(s&&e?.scrollToRow&&e?.getRowIndex){let d=e.getRowIndex(s.rowId);d>=0&&e.scrollToRow(d,"center");}l.value=s;},pendingEditorValue:n,setPendingEditorValue:s=>{n.value=s;}}}function Xt(e,l){let n=shallowRef(null),t=0,i=s=>{let d=n.value;d!==s&&(d&&s&&d.rowIndex===s.rowIndex&&d.columnIndex===s.columnIndex||(n.value=s));};return watch([n,()=>l?.value],()=>{if(t&&(cancelAnimationFrame(t),t=0),n.value==null||!e?.value||l?.value!=null)return;let{rowIndex:s,columnIndex:d}=n.value;t=requestAnimationFrame(()=>{t=0;let a=e.value;if(!a)return;let u=n.value;if(!u||u.rowIndex!==s||u.columnIndex!==d)return;let v=`[data-row-index="${s}"][data-col-index="${d}"]`,C=a.querySelector(v);if(C){let p=a.querySelector("thead"),f=p?p.getBoundingClientRect().height:0,c=a.getBoundingClientRect(),o=C.getBoundingClientRect(),m=c.top+f;o.top<m?a.scrollTop-=m-o.top:o.bottom>c.bottom&&(a.scrollTop+=o.bottom-c.bottom),a.scrollWidth>a.clientWidth&&(o.left<c.left?a.scrollLeft-=c.left-o.left:o.right>c.right&&(a.scrollLeft+=o.right-c.right)),document.activeElement!==C&&typeof C.focus=="function"&&C.focus({preventScroll:true});}});},{flush:"post"}),onUnmounted(()=>{t&&(cancelAnimationFrame(t),t=0);}),{activeCell:n,setActiveCell:i}}var jn="data-drag-range",At="data-drag-anchor",Se=40;function Yt(e){let l=dt(e),{wrapperRef:n,setActiveCell:t}=e,i=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,s=shallowRef(null),d=ref(false),a=ref(false),u=ref(false),v=false,C=null,p=0,f=null,c=null,o=null,m=w=>{rangesEqual(s.value,w)||(s.value=w);},g=(w,h,P)=>{if(w.button!==0)return;let V=i();if(P<V)return;w.preventDefault();let _=P-V,K=s.value;if(w.shiftKey&&K!=null)m(normalizeSelectionRange({startRow:K.startRow,startCol:K.startCol,endRow:h,endCol:_})),t({rowIndex:h,columnIndex:P});else {C={row:h,col:_},v=false;let M={startRow:h,startCol:_,endRow:h,endCol:_};m(M),f=M,t({rowIndex:h,columnIndex:P}),a.value=true,B(M);}},R=()=>{let{rowCount:w,visibleColCount:h}=l.value;w.value===0||h.value===0||(m({startRow:0,startCol:0,endRow:w.value-1,endCol:h.value-1}),t({rowIndex:0,columnIndex:i()}));},S=new Set,b=null,U=(w,h,P,V,_,K,M,j)=>{w.hasAttribute(jn)||w.setAttribute(jn,""),j&&h===j.row&&P===j.col?w.hasAttribute(At)||w.setAttribute(At,""):w.hasAttribute(At)&&w.removeAttribute(At);let Y=[];h===V&&Y.push("inset 0 2px 0 0 var(--ogrid-selection-color, #217346)"),h===_&&Y.push("inset 0 -2px 0 0 var(--ogrid-selection-color, #217346)"),P===K&&Y.push("inset 2px 0 0 0 var(--ogrid-selection-color, #217346)"),P===M&&Y.push("inset -2px 0 0 0 var(--ogrid-selection-color, #217346)"),w.style.boxShadow=Y.length>0?Y.join(", "):"",S.add(w);},k=w=>{w.removeAttribute(jn),w.removeAttribute(At),w.style.boxShadow="";},B=w=>{if(!n.value)return;let P=Math.min(w.startRow,w.endRow),V=Math.max(w.startRow,w.endRow),_=Math.min(w.startCol,w.endCol),K=Math.max(w.startCol,w.endCol),M=C,j=i();for(let Y of S){let q=parseInt(Y.getAttribute("data-row-index")??"",10),G=parseInt(Y.getAttribute("data-col-index")??"",10)-j;q>=P&&q<=V&&G>=_&&G<=K||(k(Y),S.delete(Y));}b||(b=buildCellIndex(n.value));let J=false;for(let Y=P;Y<=V;Y++)for(let q=_;q<=K;q++){let G=cellIndexKey(Y,q+j),Z=b?.get(G);Z&&!Z.isConnected&&!J&&(J=true,b=buildCellIndex(n.value),Z=b?.get(G)),Z&&Z.isConnected&&U(Z,Y,q,P,V,_,K,M);}},F=()=>{for(let w of S)k(w);S.clear(),b=null;},T=(w,h)=>{if(!C)return null;let V=document.elementFromPoint(w,h)?.closest?.("[data-row-index][data-col-index]");if(!V)return null;let _=parseInt(V.getAttribute("data-row-index")??"",10),K=parseInt(V.getAttribute("data-col-index")??"",10),M=i();if(Number.isNaN(_)||Number.isNaN(K)||K<M)return null;let j=K-M;return normalizeSelectionRange({startRow:C.row,startCol:C.col,endRow:_,endCol:j})},E=()=>{c&&(cancelAnimationFrame(c),c=null);},O=()=>{let w=n.value,h=o;if(!w||!h||!a.value){c=null;return}let P=w.getBoundingClientRect(),V=0,_=0;if(h.cy<P.top+Se?_=-computeAutoScrollSpeed(P.top+Se-h.cy):h.cy>P.bottom-Se&&(_=computeAutoScrollSpeed(h.cy-(P.bottom-Se))),h.cx<P.left+Se?V=-computeAutoScrollSpeed(P.left+Se-h.cx):h.cx>P.right-Se&&(V=computeAutoScrollSpeed(h.cx-(P.right-Se))),V===0&&_===0){c=null;return}w.scrollTop+=_,w.scrollLeft+=V;let K=T(h.cx,h.cy);K&&(f=K,B(K)),c=requestAnimationFrame(O);},A=()=>{let w=n.value;if(!w||!o||!a.value){E();return}let h=w.getBoundingClientRect(),P=0,V=0;if(o.cy<h.top+Se?V=-computeAutoScrollSpeed(h.top+Se-o.cy):o.cy>h.bottom-Se&&(V=computeAutoScrollSpeed(o.cy-(h.bottom-Se))),o.cx<h.left+Se?P=-computeAutoScrollSpeed(h.left+Se-o.cx):o.cx>h.right-Se&&(P=computeAutoScrollSpeed(o.cx-(h.right-Se))),P===0&&V===0){E();return}c||(c=requestAnimationFrame(O));},y=w=>{!a.value||!C||(v||(v=true,d.value=true,b=buildCellIndex(n.value)),o={cx:w.clientX,cy:w.clientY},A(),p&&cancelAnimationFrame(p),p=requestAnimationFrame(()=>{if(p=0,!o)return;let h=T(o.cx,o.cy);if(!h)return;let P=f;P&&P.startRow===h.startRow&&P.startCol===h.startCol&&P.endRow===h.endRow&&P.endCol===h.endCol||(f=h,B(h));}));},I=()=>{if(!a.value)return;E(),p&&(cancelAnimationFrame(p),p=0),a.value=false;let w=v;if(w){if(o){let P=T(o.cx,o.cy);P&&(f=P);}let h=f;if(h){m(h);let P=C;P&&t({rowIndex:P.row,columnIndex:P.col+i()});}}F(),f=null,o=null,C=null,w&&(d.value=false);},x=w=>{u.value||y(w);},D=()=>{u.value||I();};return onMounted(()=>{window.addEventListener("pointermove",x,true),window.addEventListener("pointerup",D,true);}),onUnmounted(()=>{u.value=true,window.removeEventListener("pointermove",x,true),window.removeEventListener("pointerup",D,true),p&&cancelAnimationFrame(p),E();}),{selectionRange:s,setSelectionRange:m,handleCellMouseDown:g,handleSelectAllCells:R,isDragging:d}}function Zt(){let e=shallowRef(null);return {contextMenuPosition:e,setContextMenuPosition:i=>{e.value=i;},handleCellContextMenu:i=>{i.preventDefault?.(),e.value={x:i.clientX,y:i.clientY};},closeContextMenu:()=>{e.value=null;}}}function Jt(e){let{items:l,visibleCols:n,selectionRange:t,activeCell:i,editable:s,onCellValueChanged:d,beginBatch:a,endBatch:u}=e,v=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,C=shallowRef(null),p=shallowRef(null),f=ref(null),c=()=>{let S=t.value,b=i.value,U=v();return S??(b!=null?{startRow:b.rowIndex,startCol:b.columnIndex-U,endRow:b.rowIndex,endCol:b.columnIndex-U}:null)},o=()=>{let S=c();if(S==null)return;let b=normalizeSelectionRange(S),U=formatSelectionAsTsv(l.value,n.value,b);f.value=U,p.value=b,navigator.clipboard.writeText(U).catch(k=>{typeof console<"u"&&console.warn("[OGrid] Clipboard write failed:",k);});};return {handleCopy:o,handleCut:()=>{if(s.value===false)return;let S=c();if(S==null||d.value==null)return;let b=normalizeSelectionRange(S);C.value=b,p.value=null,o(),p.value=null;},handlePaste:async()=>{if(s.value===false)return;let S=d.value;if(S==null)return;let b;try{b=await navigator.clipboard.readText();}catch{b="";}if(!b.trim()&&f.value!=null&&(b=f.value),!b.trim())return;let U=c(),k=U?U.startRow:0,B=U?U.startCol:0,F=l.value,T=n.value,E=parseTsvClipboard(b);a?.();let O=applyPastedValues(E,k,B,F,T);for(let A of O)S(A);if(C.value){let A=applyCutClear(C.value,F,T);for(let y of A)S(y);C.value=null;}u?.(),p.value=null;},cutRange:C,copyRange:p,clearClipboardRanges:()=>{p.value=null,C.value=null;}}}function Qt(e){let l=dt(e);return {handleGridKeyDown:t=>{let{data:i,state:s,handlers:d,features:a}=l.value,u=i.items.value,v=i.visibleCols.value,{getRowId:C}=i,p=isRef(i.colOffset)?i.colOffset.value:i.colOffset,f=i.hasCheckboxCol.value,c=i.visibleColumnCount.value,o=s.activeCell.value,m=s.selectionRange.value,g=s.editingCell.value,R=s.selectedRowIds.value,{setActiveCell:S,setSelectionRange:b,setEditingCell:U,handleRowCheckboxChange:k,handleCopy:B,handleCut:F,handlePaste:T,setContextMenu:E,onUndo:O,onRedo:A,clearClipboardRanges:y}=d,I=a.editable.value,x=a.onCellValueChanged.value,D=a.rowSelection.value,w=a.wrapperRef,h=a.scrollToRow,{fillDown:P}=a,V=a.onKeyDown?.value;if(V&&(V(t),t.defaultPrevented))return;let _=u.length-1,K=c-1+p;if(u.length===0)return;if(o===null){["ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Tab","Enter","Home","End","PageDown","PageUp"].includes(t.key)&&(S({rowIndex:0,columnIndex:p}),t.preventDefault());return}let{rowIndex:M,columnIndex:j}=o,J=j-p,Y=t.shiftKey,q=(G,Z)=>{if(G<0||G>=u.length||Z<0||Z>=v.length)return true;let ne=getCellValue(u[G],v[Z]);return ne==null||ne===""};switch(t.key){case "c":if(t.ctrlKey||t.metaKey){if(g!=null)break;t.preventDefault(),B();}break;case "x":if(t.ctrlKey||t.metaKey){if(g!=null)break;t.preventDefault(),F();}break;case "v":if(t.ctrlKey||t.metaKey){if(g!=null)break;t.preventDefault(),T();}break;case "d":if(t.ctrlKey||t.metaKey){if(g!=null)break;I!==false&&P&&(t.preventDefault(),P());}break;case "ArrowDown":case "ArrowUp":case "ArrowRight":case "ArrowLeft":{if(g!=null)break;t.preventDefault();let{newRowIndex:G,newColumnIndex:Z,newRange:ne}=computeArrowNavigation({direction:t.key,rowIndex:M,columnIndex:j,dataColIndex:J,colOffset:p,maxRowIndex:_,maxColIndex:K,visibleColCount:v.length,isCtrl:t.ctrlKey||t.metaKey,isShift:Y,selectionRange:m,isEmptyAt:q});b(ne),S({rowIndex:G,columnIndex:Z}),(t.key==="ArrowDown"||t.key==="ArrowUp")&&h?.(G,"center");break}case "Tab":{t.preventDefault();let{rowIndex:G,columnIndex:Z}=computeTabNavigation(M,j,_,K,p,t.shiftKey),ne=Z-p;b({startRow:G,startCol:ne,endRow:G,endCol:ne}),S({rowIndex:G,columnIndex:Z});break}case "Home":{t.preventDefault();let G=t.ctrlKey?0:M;b({startRow:G,startCol:0,endRow:G,endCol:0}),S({rowIndex:G,columnIndex:p});break}case "End":{t.preventDefault();let G=t.ctrlKey?_:M;b({startRow:G,startCol:c-1,endRow:G,endCol:c-1}),S({rowIndex:G,columnIndex:K});break}case "PageDown":case "PageUp":{t.preventDefault();let G=w.value,Z=10;if(G){let Fe=G.querySelector("tbody tr");Fe&&Fe.offsetHeight>0&&(Z=Math.max(1,Math.floor(G.clientHeight/Fe.offsetHeight)));}let ne=t.key==="PageDown"?1:-1,ye=Math.max(0,Math.min(M+ne*Z,_));b(Y?{startRow:m?.startRow??M,startCol:m?.startCol??J,endRow:ye,endCol:m?.endCol??J}:{startRow:ye,startCol:J,endRow:ye,endCol:J}),S({rowIndex:ye,columnIndex:j}),h?.(ye,"center");break}case "Enter":case "F2":{if(t.preventDefault(),J>=0&&J<v.length){let G=v[J],Z=u[M];if(Z&&G){let ne=G.editable===true||typeof G.editable=="function"&&G.editable(Z);I!==false&&ne&&x!=null&&U({rowId:C(Z),columnId:G.columnId});}}break}case "Escape":t.preventDefault(),g!=null?U(null):(y?.(),S(null),b(null));break;case " ":if(D!=="none"&&j===0&&f){t.preventDefault();let G=u[M];if(G){let Z=C(G),ne=R.has(Z);k(Z,!ne,M,t.shiftKey);}}break;case "z":(t.ctrlKey||t.metaKey)&&g==null&&(t.shiftKey&&A?(t.preventDefault(),A()):!t.shiftKey&&O&&(t.preventDefault(),O()));break;case "y":(t.ctrlKey||t.metaKey)&&g==null&&A&&(t.preventDefault(),A());break;case "a":if(t.ctrlKey||t.metaKey){if(g!=null)break;t.preventDefault(),u.length>0&&c>0&&(b({startRow:0,startCol:0,endRow:u.length-1,endCol:c-1}),S({rowIndex:0,columnIndex:p}));}break;case "Delete":case "Backspace":{if(g!=null||I===false||x==null)break;let G=m??(o!=null?{startRow:o.rowIndex,startCol:o.columnIndex-p,endRow:o.rowIndex,endCol:o.columnIndex-p}:null);if(G==null)break;t.preventDefault();let Z=applyCellDeletion(G,u,v);for(let ne of Z)x(ne);break}case "F10":if(t.shiftKey)if(t.preventDefault(),o!=null&&w.value){let G=`[data-row-index="${o.rowIndex}"][data-col-index="${o.columnIndex}"]`,Z=w.value.querySelector(G);if(Z){let ne=Z.getBoundingClientRect();E({x:ne.left+ne.width/2,y:ne.top+ne.height/2});}else E({x:100,y:100});}else E({x:100,y:100});break;}}}}var en="data-drag-range";function Eo(e){let{items:l,visibleCols:n,editable:t,onCellValueChanged:i,selectionRange:s,setSelectionRange:d,setActiveCell:a,wrapperRef:u,beginBatch:v,endBatch:C,visibleRange:p}=e,f=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,c=shallowRef(null),o={endRow:0,endCol:0},m=0,g=null,R=null,S=null,b=F=>{c.value=F;},U=()=>{R&&(window.removeEventListener("pointermove",R,true),R=null),S&&(window.removeEventListener("pointerup",S,true),S=null),m&&(cancelAnimationFrame(m),m=0);};return watch(c,(F,T,E)=>{if(!F||t.value===false||!i.value||!u.value){U();return}o={endRow:F.startRow,endCol:F.startCol},g=null;let O=new Set,A=buildCellIndex(u.value),y=w=>{if(!u.value)return;let P=Math.min(w.startRow,w.endRow),V=Math.max(w.startRow,w.endRow),_=Math.min(w.startCol,w.endCol),K=Math.max(w.startCol,w.endCol),M=f();for(let j of O){let J=parseInt(j.getAttribute("data-row-index")??"",10),Y=parseInt(j.getAttribute("data-col-index")??"",10)-M;J>=P&&J<=V&&Y>=_&&Y<=K||(j.removeAttribute(en),O.delete(j));}for(let j=P;j<=V;j++)for(let J=_;J<=K;J++){let Y=cellIndexKey(j,J+M),q=A?.get(Y);q&&!q.isConnected&&(A=buildCellIndex(u.value),q=A.get(Y)),q&&(q.hasAttribute(en)||q.setAttribute(en,""),O.add(q));}},I=()=>{for(let w of O)w.removeAttribute(en);O.clear();},x=null,D=(w,h)=>{let V=document.elementFromPoint(w,h)?.closest?.("[data-row-index][data-col-index]");if(!V||!u.value?.contains(V))return null;let _=parseInt(V.getAttribute("data-row-index")??"",10),K=parseInt(V.getAttribute("data-col-index")??"",10),M=f();if(Number.isNaN(_)||Number.isNaN(K)||K<M)return null;let j=K-M;return normalizeSelectionRange({startRow:F.startRow,startCol:F.startCol,endRow:_,endCol:j})};R=w=>{x={cx:w.clientX,cy:w.clientY},m&&cancelAnimationFrame(m),m=requestAnimationFrame(()=>{if(m=0,!x)return;let h=D(x.cx,x.cy);if(!h)return;let P=g;P&&P.startRow===h.startRow&&P.startCol===h.startCol&&P.endRow===h.endRow&&P.endCol===h.endCol||(g=h,o={endRow:h.endRow,endCol:h.endCol},y(h));});},S=()=>{if(m&&(cancelAnimationFrame(m),m=0),x){let M=D(x.cx,x.cy);M&&(g=M,o={endRow:M.endRow,endCol:M.endCol});}I();let w=o,h=normalizeSelectionRange({startRow:F.startRow,startCol:F.startCol,endRow:w.endRow,endCol:w.endCol}),P=p?.value;P&&(h.startRow=Math.max(h.startRow,P.startIndex),h.endRow=Math.min(h.endRow,P.endIndex)),d(h),a({rowIndex:F.startRow,columnIndex:F.startCol+f()});let V=l.value,_=n.value,K=i.value;if(K){let M=applyFillValues(h,F.startRow,F.startCol,V,_);if(M.length>0){v?.();for(let j of M)K(j);C?.();}}c.value=null,g=null,U();},window.addEventListener("pointermove",R,true),window.addEventListener("pointerup",S,true),E(()=>{U();});}),onUnmounted(()=>U()),{fillDrag:c,setFillDrag:b,handleFillHandleMouseDown:F=>{F.preventDefault(),F.stopPropagation();let T=s.value;T&&(c.value={startRow:T.startRow,startCol:T.startCol});},fillDown:()=>{let F=s.value;if(!F||t.value===false||!i.value)return;let T=normalizeSelectionRange(F),E=l.value,O=n.value,A=i.value,y=applyFillValues(T,T.startRow,T.startCol,E,O);if(y.length>0){v?.();for(let I of y)A(I);C?.();}}}}function tn(e){let{onCellValueChanged:l,maxUndoDepth:n=100,afterChange:t}=e,i=new UndoRedoStack(n),s=ref(false),d=ref(false),a=()=>{s.value=i.canUndo,d.value=i.canRedo;};return {onCellValueChanged:l?c=>{i.record(c),i.isBatching||a(),l(c),i.isBatching||t?.();}:void 0,undo:()=>{if(!l)return;let c=i.undo();if(c){a();for(let o=c.length-1;o>=0;o--){let m=c[o];l({...m,oldValue:m.newValue,newValue:m.oldValue});}t?.();}},redo:()=>{if(!l)return;let c=i.redo();if(c){a();for(let o of c)l(o);t?.();}},canUndo:s,canRedo:d,beginBatch:()=>{i.beginBatch();},endBatch:()=>{i.endBatch(),a(),t?.();},maxUndoDepth:n}}function nn(e){let{wrapperRef:l,visibleCols:n,flatColumns:t,hasCheckboxCol:i,initialColumnWidths:s,onColumnResized:d}=e,a=ref(0),u,v=()=>{let o=l.value;if(!o)return;let m=o.getBoundingClientRect(),g=window.getComputedStyle(o),R=(parseFloat(g.borderLeftWidth||"0")||0)+(parseFloat(g.borderRightWidth||"0")||0);a.value=Math.max(0,m.width-R);};onMounted(()=>{let o=l.value;o&&(typeof ResizeObserver<"u"&&(u=new ResizeObserver(v),u.observe(o)),v());}),onUnmounted(()=>{u?.disconnect();});let C=ref((()=>{if(!s)return {};let o={};for(let[m,g]of Object.entries(s))o[m]={widthPx:g};return o})()),p=o=>{C.value=o;},f=computed(()=>{let o=i.value?CHECKBOX_COLUMN_WIDTH:0;return n.value.reduce((m,g)=>m+(g.minWidth??estimateHeaderMinWidth(g.name))+CELL_PADDING,o)});watch(t,o=>{let m=new Set(o.map(b=>b.columnId)),g=C.value,R=Object.keys(g),S=R.filter(b=>m.has(b));if(S.length<R.length){let b={};for(let U of S)b[U]=g[U];C.value=b;}});let c=computed(()=>{let o=i.value?CHECKBOX_COLUMN_WIDTH:0;return n.value.reduce((m,g)=>{let R=C.value[g.columnId],S=g.minWidth??estimateHeaderMinWidth(g.name),b=R?R.widthPx:g.idealWidth??g.defaultWidth??S;return m+Math.max(S,b)+CELL_PADDING},o)});return {containerWidth:a,minTableWidth:f,desiredTableWidth:c,columnSizingOverrides:C,setColumnSizingOverrides:p,onColumnResized:d}}function on(e){let{columns:l,pinnedColumns:n,onColumnPinned:t}=e,i={};for(let f of l.value)f.pinned&&(i[f.columnId]=f.pinned);let s=ref(i),d=computed(()=>n?.value??s.value);return {pinnedColumns:d,pinColumn:(f,c)=>{let o={...d.value,[f]:c};s.value=o,t?.(f,c);},unpinColumn:f=>{let{[f]:c,...o}=d.value;s.value=o,t?.(f,null);},isPinned:f=>d.value[f],computeLeftOffsets:(f,c,o,m,g)=>{let R={},S=m?g:0;for(let b of f)d.value[b.columnId]==="left"&&(R[b.columnId]=S,S+=c[b.columnId]??o);return R},computeRightOffsets:(f,c,o)=>{let m={},g=0;for(let R=f.length-1;R>=0;R--){let S=f[R];d.value[S.columnId]==="right"&&(m[S.columnId]=g,g+=c[S.columnId]??o);}return m}}}function rn(e){let{columns:l,pinnedColumns:n,onPinColumn:t,onUnpinColumn:i,onSort:s,onColumnResized:d,onAutosizeColumn:a,sortBy:u,sortDirection:v}=e,C=ref(false),p=ref(null),f=ref(null),c=(D,w)=>{p.value=D,f.value=w,C.value=true;},o=()=>{C.value=false,p.value=null,f.value=null;},m=computed(()=>p.value?l.value.find(D=>D.columnId===p.value):void 0),g=computed(()=>p.value?n.value[p.value]:void 0),R=computed(()=>g.value!=="left"),S=computed(()=>g.value!=="right"),b=computed(()=>!!g.value),U=computed(()=>!p.value||!u?.value||u.value!==p.value?null:v?.value??null),k=computed(()=>m.value?.sortable!==false),B=ref(true);return {isOpen:C,openForColumn:p,anchorElement:f,open:c,close:o,handlePinLeft:()=>{p.value&&R.value&&(t(p.value,"left"),o());},handlePinRight:()=>{p.value&&S.value&&(t(p.value,"right"),o());},handleUnpin:()=>{p.value&&b.value&&(i(p.value),o());},handleSortAsc:()=>{p.value&&s&&(s(p.value,"asc"),o());},handleSortDesc:()=>{p.value&&s&&(s(p.value,"desc"),o());},handleClearSort:()=>{p.value&&s&&(s(p.value,null),o());},handleAutosizeThis:()=>{let D=a??d;if(!p.value||!D||!B.value)return;let w=m.value;D(p.value,measureColumnContentWidth(p.value,w?.minWidth)),o();},handleAutosizeAll:()=>{let D=a??d;D&&(l.value.forEach(w=>{D(w.columnId,measureColumnContentWidth(w.columnId,w.minWidth));}),o());},canPinLeft:R,canPinRight:S,canUnpin:b,currentSort:U,isSortable:k,isResizable:B}}var Je=()=>{},la=async()=>{},ra=(e,l,n)=>{},aa=e=>{},ia=e=>{};function sn(e){let{props:l,wrapperRef:n}=e,t=computed(()=>l.value.items),i=l.value.getRowId,s=computed(()=>l.value.rowSelection??"none"),d=computed(()=>l.value.selectedRows),a=computed(()=>l.value.editable),u=computed(()=>l.value.cellSelection!==false),v=computed(()=>l.value.pinnedColumns),C=ref(0),p=()=>{C.value++;},f=tn({onCellValueChanged:l.value.onCellValueChanged,afterChange:p}),c=computed(()=>f.onCellValueChanged),o=computed(()=>flattenColumns(l.value.columns)),m=computed(()=>{let te=v.value;return !te||Object.keys(te).length===0?o.value:o.value.map(Q=>{let re=te[Q.columnId];return re&&Q.pinned!==re?{...Q,pinned:re}:Q})}),g=computed(()=>resolveResponsiveConfig(l.value.responsiveColumns)),R=computed(()=>{let te=l.value.visibleColumns,Q=l.value.columnOrder,re=te?m.value.filter(se=>te.has(se.columnId)):m.value;if(!Q?.length)return re;let me=new Map;for(let se=0;se<Q.length;se++)me.set(Q[se],se);return [...re].sort((se,Me)=>{let we=me.get(se.columnId)??-1,he=me.get(Me.columnId)??-1;return we===-1&&he===-1?0:we===-1?1:he===-1?-1:we-he})}),S=ref(0),b=computed(()=>applyResponsiveHiding(R.value,S.value,g.value)),U=computed(()=>b.value.length),k=computed(()=>s.value==="multiple"),B=computed(()=>!!l.value.showRowNumbers),F=computed(()=>(k.value?1:0)+(B.value?1:0)),T=computed(()=>U.value+F.value),E=F,O=shallowRef(new Map);watch(t,te=>{let Q=O.value;Q.clear(),te.forEach((re,me)=>Q.set(i(re),me)),triggerRef(O);},{immediate:true});let A=qt({items:t,getRowId:i,rowSelection:s,controlledSelectedRows:d,onSelectionChange:l.value.onSelectionChange}),{editingCell:y,setEditingCell:I,pendingEditorValue:x,setPendingEditorValue:D}=jt(),{activeCell:w,setActiveCell:h}=Xt(n,y),P=computed(()=>t.value.length),V=computed(()=>b.value.length),{selectionRange:_,setSelectionRange:K,handleCellMouseDown:M,handleSelectAllCells:j,isDragging:J}=Yt({colOffset:E,rowCount:P,visibleColCount:V,setActiveCell:h,wrapperRef:n}),{contextMenuPosition:Y,setContextMenuPosition:q,handleCellContextMenu:G,closeContextMenu:Z}=Zt(),{handleCopy:ne,handleCut:ye,handlePaste:Fe,cutRange:Ke,copyRange:Pe,clearClipboardRanges:xe}=Jt({items:t,visibleCols:b,colOffset:E,selectionRange:_,activeCell:w,editable:a,onCellValueChanged:c,beginBatch:f.beginBatch,endBatch:f.endBatch}),Ne=(te,Q,re)=>{te.button===0&&(n.value?.focus({preventScroll:true}),xe(),M(te,Q,re));},{handleFillHandleMouseDown:Ve,fillDown:We}=Eo({items:t,visibleCols:b,editable:a,onCellValueChanged:c,selectionRange:_,setSelectionRange:K,setActiveCell:h,colOffset:E,wrapperRef:n,beginBatch:f.beginBatch,endBatch:f.endBatch}),{handleGridKeyDown:$e}=Qt({data:{items:t,visibleCols:b,colOffset:E,hasCheckboxCol:k,visibleColumnCount:U,getRowId:i},state:{activeCell:w,selectionRange:_,editingCell:y,selectedRowIds:A.selectedRowIds},handlers:{setActiveCell:h,setSelectionRange:K,setEditingCell:I,handleRowCheckboxChange:A.handleRowCheckboxChange,handleCopy:ne,handleCut:ye,handlePaste:Fe,setContextMenu:q,onUndo:f.undo,onRedo:f.redo,clearClipboardRanges:xe},features:{editable:a,onCellValueChanged:c,rowSelection:s,wrapperRef:n,fillDown:We,onKeyDown:computed(()=>l.value.onKeyDown)}}),{containerWidth:tt,minTableWidth:nt,desiredTableWidth:mt,columnSizingOverrides:Ue,setColumnSizingOverrides:ft}=nn({wrapperRef:n,visibleCols:R,flatColumns:m,hasCheckboxCol:k,initialColumnWidths:l.value.initialColumnWidths,onColumnResized:(te,Q)=>l.value.onColumnResized?.(te,Q)});watch(tt,te=>{S.value=te;},{immediate:true});let Ie=on({columns:m,pinnedColumns:v,onColumnPinned:l.value.onColumnPinned}),Ct=(te,Q)=>{ft({...Ue.value,[te]:{widthPx:Q}}),l.value.onColumnResized?.(te,Q);},ae=rn({columns:m,pinnedColumns:Ie.pinnedColumns,onPinColumn:Ie.pinColumn,onUnpinColumn:Ie.unpinColumn,onSort:l.value.onColumnSort,onColumnResized:l.value.onColumnResized,onAutosizeColumn:Ct,sortBy:computed(()=>l.value.sortBy),sortDirection:computed(()=>l.value.sortDirection)}),ke=ref({});watch([b,tt,Ue],()=>{nextTick(()=>{let te=n.value;if(!te)return;let Q=te.querySelectorAll("th[data-column-id]");if(Q.length===0)return;let re={};Q.forEach(we=>{let he=we.getAttribute("data-column-id");he&&(re[he]=we.offsetWidth);});let me=ke.value,se=Object.keys(re),Me=se.length!==Object.keys(me).length;if(!Me){for(let we of se)if(me[we]!==re[we]){Me=true;break}}Me&&(ke.value=re);});},{flush:"post"});let ot=computed(()=>{let te={};for(let Q of b.value){let re=Ue.value[Q.columnId];te[Q.columnId]=re?re.widthPx:Q.idealWidth??Q.defaultWidth??Q.minWidth??DEFAULT_MIN_COLUMN_WIDTH;}return te}),lt=computed(()=>Ie.computeLeftOffsets(b.value,ot.value,DEFAULT_MIN_COLUMN_WIDTH,k.value,CHECKBOX_COLUMN_WIDTH)),Ee=computed(()=>Ie.computeRightOffsets(b.value,ot.value,DEFAULT_MIN_COLUMN_WIDTH)),rt=computed(()=>computeAggregations(t.value,b.value,u.value?_.value:null)),at=computed(()=>{let te=getDataGridStatusBarConfig(l.value.statusBar,t.value.length,A.selectedRowIds.value.size);return te?{...te,aggregation:rt.value??void 0}:null}),_e=computed(()=>t.value.length===0&&!!l.value.emptyState&&!l.value.isLoading),ht=computed(()=>_.value!=null||w.value!=null),Rt=computed(()=>({sortBy:l.value.sortBy,sortDirection:l.value.sortDirection,onColumnSort:l.value.onColumnSort,filters:l.value.filters,onFilterChange:l.value.onFilterChange,filterOptions:l.value.filterOptions,loadingFilterOptions:l.value.loadingFilterOptions,peopleSearch:l.value.peopleSearch})),Be=computed(()=>({editingCell:y.value,activeCell:u.value?w.value:null,selectionRange:u.value?_.value:null,cutRange:u.value?Ke.value:null,copyRange:u.value?Pe.value:null,colOffset:E.value,itemsLength:t.value.length,getRowId:i,editable:a.value,onCellValueChanged:c.value,isDragging:u.value?J.value:false,getFormulaValue:l.value.getFormulaValue,hasFormula:l.value.hasFormula,getFormula:l.value.getFormula,formulaVersion:l.value.formulaVersion})),pt=ref(null),it=te=>{pt.value=te;},bt=(te,Q,re,me,se,Me,we)=>{let he=b.value.find(ge=>ge.columnId===Q);if(he){let ge=parseValue(me,re,te,he);if(!ge.valid){I(null),it(null),D(void 0);return}me=ge.value;}if(I(null),it(null),D(void 0),Object.is(me,re)||c.value?.({item:te,columnId:Q,oldValue:re,newValue:me,rowIndex:se}),!we?.skipAdvance&&se<t.value.length-1){let ge=se+1,yt=Me-E.value;h({rowIndex:ge,columnIndex:Me}),K({startRow:ge,startCol:yt,endRow:ge,endCol:yt});}},It=()=>{I(null),it(null),D(void 0);},ve=computed(()=>({flatColumns:m.value,visibleCols:b.value,visibleColumnCount:U.value,totalColCount:T.value,colOffset:E.value,hasCheckboxCol:k.value,hasRowNumbersCol:B.value,rowIndexByRowId:O.value,containerWidth:tt.value,minTableWidth:nt.value,desiredTableWidth:mt.value,columnSizingOverrides:Ue.value,setColumnSizingOverrides:ft,onColumnResized:l.value.onColumnResized,measuredColumnWidths:ke.value,stickyHeader:l.value.stickyHeader??true})),St=computed(()=>({selectedRowIds:A.selectedRowIds.value,updateSelection:A.updateSelection,handleRowCheckboxChange:A.handleRowCheckboxChange,handleSelectAll:A.handleSelectAll,allSelected:A.allSelected.value,someSelected:A.someSelected.value})),Tt=computed(()=>({editingCell:y.value,setEditingCell:I,pendingEditorValue:x.value,setPendingEditorValue:D,commitCellEdit:bt,cancelPopoverEdit:It,popoverAnchorEl:pt.value,setPopoverAnchorEl:it})),qe=computed(()=>(C.value,{activeCell:u.value?w.value:null,setActiveCell:u.value?h:Je,selectionRange:u.value?_.value:null,setSelectionRange:u.value?K:Je,handleCellMouseDown:u.value?Ne:ra,handleSelectAllCells:u.value?j:Je,hasCellSelection:u.value?ht.value:false,handleGridKeyDown:u.value?$e:aa,handleFillHandleMouseDown:u.value?Ve:Je,handleCopy:u.value?ne:Je,handleCut:u.value?ye:Je,handlePaste:u.value?Fe:la,cutRange:u.value?Ke.value:null,copyRange:u.value?Pe.value:null,clearClipboardRanges:u.value?xe:Je,canUndo:f.canUndo.value,canRedo:f.canRedo.value,onUndo:f.undo,onRedo:f.redo,isDragging:u.value?J.value:false})),wt=computed(()=>({menuPosition:u.value?Y.value:null,setMenuPosition:u.value?q:Je,handleCellContextMenu:u.value?G:ia,closeContextMenu:u.value?Z:Je})),Pt=computed(()=>({headerFilterInput:Rt.value,cellDescriptorInput:Be.value,statusBarConfig:at.value,showEmptyInGrid:_e.value,onCellError:l.value.onCellError})),Et=computed(()=>({pinnedColumns:Ie.pinnedColumns.value,pinColumn:Ie.pinColumn,unpinColumn:Ie.unpinColumn,isPinned:Ie.isPinned,leftOffsets:lt.value,rightOffsets:Ee.value,headerMenu:{isOpen:ae.isOpen.value,openForColumn:ae.openForColumn.value,anchorElement:ae.anchorElement.value,open:ae.open,close:ae.close,handlePinLeft:ae.handlePinLeft,handlePinRight:ae.handlePinRight,handleUnpin:ae.handleUnpin,handleSortAsc:ae.handleSortAsc,handleSortDesc:ae.handleSortDesc,handleClearSort:ae.handleClearSort,handleAutosizeThis:ae.handleAutosizeThis,handleAutosizeAll:ae.handleAutosizeAll,canPinLeft:ae.canPinLeft.value,canPinRight:ae.canPinRight.value,canUnpin:ae.canUnpin.value,currentSort:ae.currentSort.value,isSortable:ae.isSortable.value,isResizable:ae.isResizable.value}}));return {layout:ve,rowSelection:St,editing:Tt,interaction:qe,contextMenu:wt,viewModels:Pt,pinning:Et}}function Ho(e){let{rangeSelection:l,rows:n,columns:t,onFillCells:i}=e,s=ref(null),d=computed(()=>s.value!==null),a=computed(()=>{let c=l.range.value;return c?s.value?normalizeSelectionRange({startRow:Math.min(c.startRow,s.value.row),startCol:Math.min(c.startCol,s.value.col),endRow:Math.max(c.endRow,s.value.row),endCol:Math.max(c.endCol,s.value.col)}):c:null});return {fillTarget:s,isFilling:d,startFill:()=>{let c=l.range.value;c&&(s.value={row:c.endRow,col:c.endCol});},updateFill:(c,o)=>{s.value!==null&&(s.value={row:c,col:o});},commitFill:()=>{let c=l.range.value,o=a.value;if(!c||!o){s.value=null;return}if(o.startRow===c.startRow&&o.startCol===c.startCol&&o.endRow===c.endRow&&o.endCol===c.endCol){s.value=null;return}let m=applyFillValues(o,c.startRow,c.startCol,n,t);m.length>0&&i(m),s.value=null;},cancelFill:()=>{s.value=null;},fillRange:a,isInFillRange:(c,o)=>{let m=a.value;return m?isInSelectionRange(m,c,o):false}}}function Bo(e){let{columns:l,getRowId:n,onCellEdit:t,isCellEditable:i}=e,s=ref(null),d=ref(void 0),a=shallowRef(null),u=g=>l.find(R=>R.columnId===g),v=(g,R)=>{if(i)return i(g,R);let S=u(R);return S?isColumnEditable(S,g):false},C=(g,R)=>{let S=s.value;return S?S.rowId===n(g)&&S.columnId===R:false},p=g=>{d.value=g;},f=(g,R)=>{if(!v(g,R))return;let S=u(R);if(!S)return;let b=getCellValue(g,S);s.value={rowId:n(g),columnId:R},a.value={item:g,oldValue:b},d.value=b;},c=()=>{s.value=null,a.value=null,d.value=void 0;},o=()=>{let g=s.value,R=a.value;if(!g||!R)return;let S=u(g.columnId);if(!S){c();return}let b=d.value,U=parseValue(b,R.oldValue,R.item,S);if(!U.valid){c();return}if(b=U.value,b===R.oldValue){c();return}t({item:R.item,columnId:g.columnId,oldValue:R.oldValue,newValue:b}),s.value=null,a.value=null,d.value=void 0;};return {editingCell:s,pendingValue:d,setPendingValue:p,startEdit:f,commitEdit:o,cancelEdit:c,isEditing:C,canEdit:v,getEditorProps:(g,R)=>({value:d.value,onChange:p,onCommit:o,onCancel:c,onKeyDown:S=>{S.key==="Enter"?(S.preventDefault?.(),o()):S.key==="Escape"&&(S.preventDefault?.(),c());},onBlur:o})}}function No(e){let{rowCount:l,colCount:n}=e,t=ref(null),i=ref(null),s=computed(()=>!t.value||!i.value?null:normalizeSelectionRange({startRow:t.value.row,startCol:t.value.col,endRow:i.value.row,endCol:i.value.col}));return {range:s,anchor:t,focus:i,startRange:(o,m)=>{t.value={row:o,col:m},i.value={row:o,col:m};},extendRange:(o,m)=>{t.value||(t.value={row:o,col:m}),i.value={row:o,col:m};},setRange:o=>{if(!o){t.value=null,i.value=null;return}let m=normalizeSelectionRange(o);t.value={row:m.startRow,col:m.startCol},i.value={row:m.endRow,col:m.endCol};},clearRange:()=>{t.value=null,i.value=null;},selectAll:()=>{l<=0||n<=0||(t.value={row:0,col:0},i.value={row:l-1,col:n-1});},isInRange:(o,m)=>{let g=s.value;return g?isInSelectionRange(g,o,m):false},getRangeRows:()=>{let o=s.value;if(!o)return [];let m=[];for(let g=o.startRow;g<=o.endRow;g+=1)m.push(g);return m},getRangeCells:()=>{let o=s.value;if(!o)return [];let m=[];for(let g=o.startRow;g<=o.endRow;g+=1)for(let R=o.startCol;R<=o.endCol;R+=1)m.push({row:g,col:R});return m}}}var wa={readText:()=>typeof navigator<"u"&&navigator.clipboard?.readText?navigator.clipboard.readText():Promise.resolve(""),writeText:e=>typeof navigator<"u"&&navigator.clipboard?.writeText?navigator.clipboard.writeText(e):Promise.resolve()};function Ko(e){let{rangeSelection:l,rows:n,columns:t,onCellEdit:i,clipboard:s=wa}=e,d=ref(null),a=ref(null),u=computed(()=>typeof navigator<"u"&&!!navigator.clipboard?.readText);return {copyRange:async()=>{let c=l.range.value;if(!c)return;let o=formatSelectionAsTsv(n,t,c);await s.writeText(o),a.value=c,d.value=null;},cutRange:async()=>{let c=l.range.value;if(!c)return;let o=formatSelectionAsTsv(n,t,c);await s.writeText(o),d.value=c,a.value=null;},pasteRange:async()=>{let c=l.range.value;if(!c)return;let o=await s.readText(),m=parseTsvClipboard(o);if(m.length===0)return;let g=applyPastedValues(m,c.startRow,c.startCol,n,t),R=g;if(d.value){let S=applyCutClear(d.value,n,t),b=new Set(g.map(k=>`${k.rowIndex}|${k.columnId}`)),U=S.filter(k=>!b.has(`${k.rowIndex}|${k.columnId}`));R=[...g,...U];}R.length>0&&i(R),d.value=null,a.value=null;},canPaste:u,activeCutRange:d,activeCopyRange:a,clearClipboard:()=>{d.value=null,a.value=null;}}}var $o=(e,l,n)=>Math.max(l,Math.min(n,e));function qo(e){let{rowCount:l,colCount:n,pageSize:t=10,rangeSelection:i}=e,s=ref(null),d=R=>{s.value=R;},a=(R,S,b=false)=>{if(l<=0||n<=0)return;let U=s.value??{row:0,col:0},k={row:$o(U.row+R,0,l-1),col:$o(U.col+S,0,n-1)};i&&(b?i.extendRange(k.row,k.col):i.startRange(k.row,k.col)),s.value=k;},u=(R=1)=>a(-R,0),v=(R=1)=>a(R,0),C=(R=1)=>a(0,-R),p=(R=1)=>a(0,R),f=()=>{let R=s.value?.row??0;s.value={row:R,col:0},i?.startRange(R,0);},c=()=>{let R=s.value?.row??0,S=Math.max(0,n-1);s.value={row:R,col:S},i?.startRange(R,S);},o=()=>{s.value={row:0,col:0},i?.startRange(0,0);},m=()=>{let R={row:Math.max(0,l-1),col:Math.max(0,n-1)};s.value=R,i?.startRange(R.row,R.col);};return {activeCell:s,setActiveCell:d,moveUp:u,moveDown:v,moveLeft:C,moveRight:p,moveToRowStart:f,moveToRowEnd:c,moveToStart:o,moveToEnd:m,getKeyDownHandler:()=>R=>{let S=R.shiftKey===true,b=R.ctrlKey===true||R.metaKey===true;switch(R.key){case "ArrowUp":R.preventDefault?.(),a(-1,0,S);break;case "ArrowDown":R.preventDefault?.(),a(1,0,S);break;case "ArrowLeft":R.preventDefault?.(),a(0,-1,S);break;case "ArrowRight":case "Tab":R.preventDefault?.(),a(0,S&&R.key==="Tab"?-1:1,false);break;case "Enter":R.preventDefault?.(),a(S?-1:1,0,false);break;case "Home":R.preventDefault?.(),b?o():f();break;case "End":R.preventDefault?.(),b?m():c();break;case "PageUp":R.preventDefault?.(),a(-t,0,S);break;case "PageDown":R.preventDefault?.(),a(t,0,S);break;}}}}function un(e){let{columnSizingOverrides:l,setColumnSizingOverrides:n,minWidth:t=80,defaultWidth:i=120,onColumnResized:s}=e,d=0,a=null;return onUnmounted(()=>{a?.(),a=null;}),{handleResizeStart:(p,f)=>{p.preventDefault(),p.stopPropagation();let c=p.clientX,o=f.columnId,m=p.currentTarget.parentElement,g=m?m.getBoundingClientRect().width:l.value[o]?.widthPx??f.idealWidth??f.defaultWidth??i,R=g,S=document.body.style.cursor,b=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let U=()=>{n({...l.value,[o]:{widthPx:R}});},k=o===ROW_NUMBER_COLUMN_ID?ROW_NUMBER_COLUMN_MIN_WIDTH:t,B=E=>{let O=E.clientX-c;R=Math.max(k,g+O),d||(d=requestAnimationFrame(()=>{d=0,U();}));},F=()=>{document.removeEventListener("pointermove",B),document.removeEventListener("pointerup",T),a=null,document.body.style.cursor=S,document.body.style.userSelect=b,d&&(cancelAnimationFrame(d),d=0);},T=()=>{F(),U(),s?.(o,R);};document.addEventListener("pointermove",B),document.addEventListener("pointerup",T),a=F;},handleResizeDoubleClick:(p,f)=>{p.preventDefault(),p.stopPropagation();let c=f.columnId,m=(p.currentTarget.closest("th")??p.currentTarget.parentElement)?.closest("table")?.parentElement??void 0,g=measureColumnContentWidth(c,t,m);n({...l.value,[c]:{widthPx:g}}),s?.(c,g);},getColumnWidth:p=>l.value[p.columnId]?.widthPx??p.idealWidth??p.defaultWidth??i}}function dn(e,l){let n=ref(e.value),t;return watch(e,i=>{t!==void 0&&clearTimeout(t),t=setTimeout(()=>{n.value=i;},l);}),onUnmounted(()=>{t!==void 0&&clearTimeout(t);}),n}function Xo(e,l){let n,t=e,i,s=((...d)=>{t=e,i=d,n!==void 0&&clearTimeout(n),n=setTimeout(()=>{t(...d),i=void 0,n=void 0;},l);});return s.cancel=()=>{n!==void 0&&clearTimeout(n),n=void 0,i=void 0;},s.flush=()=>{if(n!==void 0&&i!==void 0){clearTimeout(n),n=void 0;let d=i;i=void 0,t(...d);}},onUnmounted(()=>{n!==void 0&&clearTimeout(n);}),s}function cn(e){let{textValue:l="",onTextChange:n}=e,t=ref(l);return watch(e.isFilterOpen,a=>{a&&(t.value=e.textValue??"");}),{tempTextValue:t,setTempTextValue:a=>{t.value=a;},handleTextApply:()=>{n?.(t.value.trim());},handleTextClear:()=>{t.value="";}}}var Oa=150,Jn=[];function mn(e){let{onFilterChange:l}=e,n=ref(new Set(e.selectedValues??Jn)),t=ref(""),i=dn(t,Oa);watch(e.isFilterOpen,f=>{f&&(n.value=new Set(e.selectedValues??Jn),t.value="");});let s=computed(()=>{let f=e.options??Jn;if(!i.value.trim())return f;let c=i.value.toLowerCase().trim();return f.filter(o=>o.toLowerCase().includes(c))});return {tempSelected:n,setTempSelected:f=>{n.value=f;},searchText:t,setSearchText:f=>{t.value=f;},debouncedSearchText:i,filteredOptions:s,handleCheckboxChange:(f,c)=>{let o=new Set(n.value);c?o.add(f):o.delete(f),n.value=o;},handleSelectAll:()=>{n.value=new Set(s.value);},handleClearSelection:()=>{n.value=new Set;},handleApplyMultiSelect:()=>{l?.(Array.from(n.value));}}}var La=300;function pn(e){let{onUserChange:l,filterType:n}=e,t=ref(null),i,s=ref([]),d=ref(false),a=ref(""),u=p=>{a.value=p;};return watch(e.isFilterOpen,p=>{p&&(a.value="",s.value=[],n==="people"&&setTimeout(()=>t.value?.focus(),50));}),watch([a,()=>e.peopleSearch,e.isFilterOpen],([p,f,c])=>{if(i&&clearTimeout(i),!(!f||!c||n!=="people")){if(!p.trim()){s.value=[];return}d.value=true,i=setTimeout(async()=>{try{let o=await f(p);s.value=o.slice(0,10);}catch{s.value=[];}finally{d.value=false;}},La);}}),onUnmounted(()=>{i&&clearTimeout(i);}),{peopleSuggestions:s,isPeopleLoading:d,peopleSearchText:a,setPeopleSearchText:u,peopleInputRef:t,handleUserSelect:p=>{l?.(p);},handleClearUser:()=>{l?.(void 0);}}}function vn(e){let{onDateChange:l}=e,n=ref(e.dateValue?.from??""),t=ref(e.dateValue?.to??"");return watch(e.isFilterOpen,u=>{u&&(n.value=e.dateValue?.from??"",t.value=e.dateValue?.to??"");}),{tempDateFrom:n,setTempDateFrom:u=>{n.value=u;},tempDateTo:t,setTempDateTo:u=>{t.value=u;},handleDateApply:()=>{let u=n.value||void 0,v=t.value||void 0;l?.(u||v?{from:u,to:v}:void 0);},handleDateClear:()=>{n.value="",t.value="";}}}var Ga=[];function el(e){let{filterType:l,onSort:n}=e,t=()=>e.selectedValues??Ga,i=ref(null),s=ref(null),d=ref(false),a=ref(null),u=D=>{d.value=D;},v=cn({textValue:e.textValue,onTextChange:e.onTextChange,isFilterOpen:d}),C=mn({selectedValues:e.selectedValues,onFilterChange:e.onFilterChange,options:e.options,isFilterOpen:d}),p=pn({selectedUser:e.selectedUser,onUserChange:e.onUserChange,peopleSearch:e.peopleSearch,isFilterOpen:d,filterType:l}),f=vn({dateValue:e.dateValue,onDateChange:e.onDateChange,isFilterOpen:d});watch(d,D=>{D||(a.value=null);});let c=null,o=null,m,g=()=>{R(),c=D=>{let w=D.target;s.value&&!s.value.contains(w)&&i.value&&!i.value.contains(w)&&(d.value=false);},o=D=>{(D.key==="Escape"||D.key==="Esc")&&(D.preventDefault(),D.stopPropagation(),d.value=false);},m=setTimeout(()=>{c&&document.addEventListener("mousedown",c);},0),document.addEventListener("keydown",o,true);},R=()=>{m&&clearTimeout(m),c&&document.removeEventListener("mousedown",c),o&&document.removeEventListener("keydown",o,true),c=null,o=null;};watch(d,D=>{D?g():R();}),onUnmounted(()=>R());let S=D=>{if(D.stopPropagation(),D.preventDefault(),!d.value&&i.value){let w=i.value.getBoundingClientRect();a.value={top:w.bottom+4,left:w.left};}d.value=!d.value;},b=D=>{D.stopPropagation(),n?.();},U=()=>{C.handleApplyMultiSelect(),d.value=false;},k=()=>{v.handleTextApply(),d.value=false;},B=D=>{p.handleUserSelect(D),d.value=false;},F=()=>{p.handleClearUser(),d.value=false;},T=()=>{f.handleDateApply(),d.value=false;},E=D=>D.stopPropagation(),O=D=>D.stopPropagation(),A=D=>D.stopPropagation(),y=D=>D.stopPropagation(),I=D=>{D.key!=="Escape"&&D.key!=="Esc"&&D.stopPropagation();},x=computed(()=>l==="multiSelect"?t().length>0:l==="text"?!!(e.textValue??"").trim():l==="people"?!!e.selectedUser:l==="date"?!!(e.dateValue?.from||e.dateValue?.to):false);return {headerRef:i,popoverRef:s,peopleInputRef:p.peopleInputRef,isFilterOpen:d,setFilterOpen:u,tempSelected:C.tempSelected,setTempSelected:C.setTempSelected,tempTextValue:v.tempTextValue,setTempTextValue:v.setTempTextValue,searchText:C.searchText,setSearchText:C.setSearchText,debouncedSearchText:C.debouncedSearchText,filteredOptions:C.filteredOptions,peopleSuggestions:p.peopleSuggestions,isPeopleLoading:p.isPeopleLoading,peopleSearchText:p.peopleSearchText,setPeopleSearchText:p.setPeopleSearchText,tempDateFrom:f.tempDateFrom,setTempDateFrom:f.setTempDateFrom,tempDateTo:f.tempDateTo,setTempDateTo:f.setTempDateTo,hasActiveFilter:x,popoverPosition:a,handlers:{handleFilterIconClick:S,handleApplyMultiSelect:U,handleTextApply:k,handleTextClear:v.handleTextClear,handleUserSelect:B,handleClearUser:F,handleCheckboxChange:C.handleCheckboxChange,handleSelectAll:C.handleSelectAll,handleClearSelection:C.handleClearSelection,handlePopoverClick:E,handleInputFocus:O,handleInputMouseDown:A,handleInputClick:y,handleInputKeyDown:I,handleDateApply:T,handleDateClear:f.handleDateClear,handleSortClick:b}}}function nl(e){let{columns:l,visibleColumns:n,onVisibilityChange:t}=e,i=ref(false),s=null,d=()=>{a(),s=g=>{g.key==="Escape"&&(g.preventDefault(),i.value=false);},document.addEventListener("keydown",s,true);},a=()=>{s&&(document.removeEventListener("keydown",s,true),s=null);};watch(i,g=>{g?d():a();}),onUnmounted(()=>a());let u=g=>{i.value=g;},v=()=>{i.value=!i.value;},C=()=>{i.value=false;},p=g=>R=>{t(g,R);},f=()=>{l.value.forEach(g=>{n.value.has(g.columnId)||t(g.columnId,true);});},c=()=>{l.value.forEach(g=>{!g.required&&n.value.has(g.columnId)&&t(g.columnId,false);});},o=computed(()=>n.value.size),m=computed(()=>l.value.length);return {open:i,setOpen:u,handleToggle:v,handleClose:C,handleCheckboxChange:p,handleSelectAll:f,handleClearAll:c,visibleCount:o,totalCount:m}}function ol(e){let{value:l,editorType:n,onCommit:t,onCancel:i,dateFormat:s,dateEditorType:d}=e,a=s??DEFAULT_DATE_FORMAT,u=ref((()=>{if(l==null)return "";if(n==="date"){if(d==="native"){let m=String(l);return m.match(/^\d{4}-\d{2}-\d{2}/)?m.substring(0,10):m}return formatDateForDisplay(l,a)??""}return String(l)})()),v=m=>{u.value=m;},C=m=>{if(n==="date"&&d!=="native"){if(!m||!m.trim()){t(null);return}let g=parseUserInputDate(m,a);if(g!==null){let R=g.getUTCFullYear().toString().padStart(4,"0"),S=(g.getUTCMonth()+1).toString().padStart(2,"0"),b=g.getUTCDate().toString().padStart(2,"0");t(`${R}-${S}-${b}`);}else t(null);}else t(m);},p=m=>{t(m);},f=()=>{i();};return {localValue:u,setLocalValue:v,handleKeyDown:m=>{m.key==="Escape"&&(m.preventDefault(),m.stopPropagation(),f()),m.key==="Enter"&&(n==="text"||n==="date")&&(m.preventDefault(),m.stopPropagation(),C(u.value));},handleBlur:()=>{(n==="text"||n==="date")&&C(u.value);},commit:p,cancel:f}}function rl(e){let{values:l,formatValue:n,initialValue:t,onCommit:i,onCancel:s}=e,d=ref(""),a=l.findIndex(o=>String(o)===String(t)),u=ref(Math.max(a,0)),v=o=>{d.value=o;},C=o=>n?n(o):o!=null?String(o):"",p=computed(()=>{if(!d.value.trim())return l;let o=d.value.toLowerCase();return l.filter(m=>C(m).toLowerCase().includes(o))}),f=o=>{i(o);};return {searchText:d,setSearchText:v,filteredValues:p,highlightedIndex:u,handleKeyDown:o=>{switch(o.key){case "ArrowDown":o.preventDefault(),u.value=Math.min(u.value+1,p.value.length-1);break;case "ArrowUp":o.preventDefault(),u.value=Math.max(u.value-1,0);break;case "Enter":o.preventDefault(),o.stopPropagation(),p.value.length>0&&u.value<p.value.length&&f(p.value[u.value]);break;case "Escape":o.preventDefault(),o.stopPropagation(),s();break}},selectValue:f,getDisplayText:C}}var Qa=8,ei=5;function Cn(e){let{columnOrder:l,onColumnOrderChange:n,tableRef:t,pinnedColumns:i}=e,s=ref(false),d=ref(null),a=null,u="unpinned",v=0,C=null;return onUnmounted(()=>{C?.(),C=null;}),{isDragging:s,dropIndicatorX:d,handleHeaderMouseDown:(f,c)=>{if(c.button!==0)return;let o=c.target.closest("th");if(o){let E=o.getBoundingClientRect();if(c.clientX>E.right-Qa)return}if(c.preventDefault(),!t.value||!n.value)return;a=f,u=getPinStateForColumn(f,i?.value),d.value=null;let g=c.clientX,R=false,S=c.clientX,b=-1,U=document.body.style.cursor,k=document.body.style.userSelect;document.body.style.cursor="grabbing",document.body.style.userSelect="none";let B=E=>{!R&&Math.abs(E.clientX-g)<ei||(R||(R=true,s.value=true),S=E.clientX,v||(v=requestAnimationFrame(()=>{v=0;let O=t.value;if(!O||!a)return;let A=calculateDropTarget({mouseX:S,columnOrder:l.value,draggedColumnId:a,draggedPinState:u,tableElement:O,pinnedColumns:i?.value});A?(b=A.targetIndex,d.value=A.indicatorX):d.value=null;})));},F=()=>{window.removeEventListener("pointermove",B,true),window.removeEventListener("pointerup",T,true),C=null,document.body.style.cursor=U,document.body.style.userSelect=k,v&&(cancelAnimationFrame(v),v=0);},T=()=>{if(F(),R&&a&&b>=0&&n.value){let E=reorderColumnArray(l.value,a,b);n.value(E);}a=null,s.value=false,d.value=null,b=-1;};window.addEventListener("pointermove",B,true),window.addEventListener("pointerup",T,true),C=F;}}}var ui=100;function Rn(e){let{totalRows:l,rowHeight:n,enabled:t,overscan:i=5,threshold:s=ui,columnsEnabled:d,columnWidths:a,columnOverscan:u=2}=e;onMounted(()=>{validateVirtualScrollConfig({enabled:t.value,rowHeight:n});});let v=ref(null),C=ref(0),p=ref(0),f=ref(0),c=ref(0),o=0,m,g=null,R=computed(()=>t.value&&l.value>=s),S=computed(()=>R.value?computeVisibleRange(C.value,n,f.value,l.value,i):{startIndex:0,endIndex:Math.max(0,l.value-1),offsetTop:0,offsetBottom:0}),b=computed(()=>t.value?computeTotalHeight(l.value,n):0),U=computed(()=>{if(!d?.value)return null;let T=a?.value;return !T||T.length===0?null:computeVisibleColumnRange(p.value,T,c.value,u)}),k=()=>{o||(o=requestAnimationFrame(()=>{o=0;let T=v.value;T&&(C.value=T.scrollTop,p.value=T.scrollLeft);}));},B=()=>{let T=v.value;T&&(f.value=T.clientHeight,c.value=T.clientWidth);};return watch(v,T=>{T!==g&&(g&&g.removeEventListener("scroll",k),m&&(m.disconnect(),m=void 0),g=T,T&&(T.addEventListener("scroll",k,{passive:true}),typeof ResizeObserver<"u"&&(m=new ResizeObserver(B),m.observe(T)),B(),C.value=T.scrollTop,p.value=T.scrollLeft));}),onUnmounted(()=>{let T=v.value;T&&T.removeEventListener("scroll",k),m?.disconnect(),o&&(cancelAnimationFrame(o),o=0);}),{containerRef:v,visibleRange:S,totalHeight:b,scrollToRow:(T,E="start")=>{let O=v.value;O&&(O.scrollTop=getScrollTopForRow(T,n,f.value,E));},columnRange:U,scrollLeft:p}}function Sn(e){let{props:l}=e,n=ref(null),t=ref(null),i=ref(null),s=ref(false),d=sn({props:l,wrapperRef:n}),a=computed(()=>{let B=l.value;return B.columnOrder?B.columnOrder:flattenColumns(B.columns).filter(F=>B.visibleColumns?.has(F.columnId)??true).map(F=>F.columnId)}),u=computed(()=>l.value.onColumnOrderChange),v=Cn({columnOrder:a,onColumnOrderChange:u,tableRef:i}),C=computed(()=>l.value.virtualScroll?.enabled??false),p=computed(()=>l.value.items.length),f=l.value.virtualScroll?.rowHeight??36,c=l.value.virtualScroll?.overscan??5,o=computed(()=>l.value.virtualScroll?.columns===true),m=l.value.virtualScroll?.columnOverscan??2,g=computed(()=>{let B=d.layout.value,{visibleCols:F,columnSizingOverrides:T}=B,E=l.value.pinnedColumns??{},O=[];for(let A of F){if(E[A.columnId]||A.pinned)continue;let y=T[A.columnId];O.push(y?y.widthPx:A.defaultWidth??A.minWidth??DEFAULT_MIN_COLUMN_WIDTH);}return O}),R=Rn({totalRows:p,rowHeight:f,enabled:C,overscan:c,columnsEnabled:o,columnWidths:g,columnOverscan:m}),S=computed(()=>{if(!o.value)return null;let F=d.layout.value.visibleCols,T=R.columnRange.value,E=l.value.pinnedColumns;return partitionColumnsForVirtualization(F,T,E)}),b=computed(()=>{let F=d.layout.value.visibleCols,T=new Map;for(let E=0;E<F.length;E++)T.set(F[E].columnId,E);return T}),U=computed(()=>d.layout.value.columnSizingOverrides),k=un({columnSizingOverrides:U,setColumnSizingOverrides:B=>d.layout.value.setColumnSizingOverrides(B)});return {wrapperRef:n,tableContainerRef:t,tableRef:i,lastMouseShift:s,state:d,columnReorder:v,virtualScroll:R,virtualScrollEnabled:C,columnResize:k,columnPartition:S,globalColIndexMap:b}}function wn(e,l,n){let t={"data-row-index":e.rowIndex,"data-col-index":e.globalColIndex,...e.isActive?{"data-active-cell":"true"}:{},...e.isInRange?{"data-in-range":"true"}:{},tabindex:e.isActive?0:-1,onPointerdown:i=>{n.setEditingCell(null),n.handleCellMouseDown(i,e.rowIndex,e.globalColIndex);},onClick:()=>n.setActiveCell({rowIndex:e.rowIndex,columnIndex:e.globalColIndex}),onContextmenu:i=>n.handleCellContextMenu(i)};return e.canEditAny&&(t.role="button",t.onDblclick=()=>n.setEditingCell({rowId:e.rowId,columnId:l})),t}var il=()=>{};function Si(e){return defineComponent({name:"DataGridTable",props:{gridProps:{type:Object,required:true}},setup(l){let n=computed(()=>l.gridProps),{wrapperRef:t,tableContainerRef:i,tableRef:s,lastMouseShift:d,state:a,columnReorder:{isDragging:u,dropIndicatorX:v,handleHeaderMouseDown:C},virtualScroll:{containerRef:p,visibleRange:f,totalHeight:c,scrollToRow:o},virtualScrollEnabled:m,columnResize:{handleResizeStart:g,handleResizeDoubleClick:R,getColumnWidth:S},columnPartition:b,globalColIndexMap:U}=Sn({props:n}),k=computed(()=>{let x=n.value;return x.showRowNumbers||x.showColumnLetters?((x.currentPage??1)-1)*(x.pageSize??25):0});watch([()=>a.interaction.value.activeCell,k],([x,D])=>{let w=n.value.onActiveCellChange;w&&w(x?formatCellReference(x.columnIndex-a.layout.value.colOffset,D+x.rowIndex+1):null);},{immediate:true});let B=x=>{d.value=x.shiftKey;},F=x=>{x.button===0&&x.preventDefault();},T=x=>{x.button===0&&x.preventDefault();},E=x=>{x.preventDefault();},O=x=>x.preventDefault(),A=x=>x.stopPropagation(),y=computed(()=>buildHeaderRows(n.value.columns,n.value.visibleColumns)),I=computed(()=>{let x=a.layout.value,D=a.pinning.value,{visibleCols:w,columnSizingOverrides:h,measuredColumnWidths:P}=x,{leftOffsets:V,rightOffsets:_}=D,K={},M={},j={},J={};for(let Y=0;Y<w.length;Y++){let q=w[Y],G=q.pinned==="left",Z=q.pinned==="right",ne=S(q),ye=!!h[q.columnId],Fe=P[q.columnId],Ke=q.minWidth??estimateHeaderMinWidth(q.name),Pe=ye?ne:Math.max(Ke,Fe??0),xe=q.width,Ne={minWidth:`${Pe}px`,width:xe??`${ne}px`,...xe?{}:{maxWidth:`${ne}px`}},Ve={minWidth:`${Pe}px`,width:xe??`${ne}px`,...xe?{}:{maxWidth:`${ne}px`}},We=["ogrid-data-cell"],$e=["ogrid-header-cell"];G?(We.push("ogrid-data-cell--pinned-left"),Ne.left=`${V[q.columnId]??0}px`,$e.push("ogrid-header-cell--pinned-left"),Ve.left=`${V[q.columnId]??0}px`):Z&&(We.push("ogrid-data-cell--pinned-right"),Ne.right=`${_[q.columnId]??0}px`,$e.push("ogrid-header-cell--pinned-right"),Ve.right=`${_[q.columnId]??0}px`),K[q.columnId]=Ne,M[q.columnId]=We.join(" "),j[q.columnId]=Ve,J[q.columnId]=$e.join(" ");}return {cellStyles:K,cellClasses:M,hdrStyles:j,hdrClasses:J}});return ()=>{let x=l.gridProps,D=a.layout.value,w=a.rowSelection.value,h$1=a.editing.value,P=a.interaction.value,V=a.contextMenu.value,_=a.viewModels.value,K=a.pinning.value,{headerMenu:M}=K,{visibleCols:j,hasCheckboxCol:J,hasRowNumbersCol:Y,colOffset:q,containerWidth:G,minTableWidth:Z,desiredTableWidth:ne}=D,ye=x.currentPage??1,Fe=x.pageSize??25,Ke=Y?(ye-1)*Fe:0,{selectedRowIds:Pe,handleRowCheckboxChange:xe,handleSelectAll:Ne,allSelected:Ve,someSelected:We}=w,{editingCell:$e,setEditingCell:tt,pendingEditorValue:nt,setPendingEditorValue:mt,commitCellEdit:Ue,cancelPopoverEdit:ft,popoverAnchorEl:Ie,setPopoverAnchorEl:Ct}=h$1,{setActiveCell:ae,setSelectionRange:ke,handleCellMouseDown:ot,handleSelectAllCells:lt,selectionRange:Ee,hasCellSelection:rt,handleGridKeyDown:at,handleFillHandleMouseDown:_e,handleCopy:ht,handleCut:Rt,handlePaste:Be,cutRange:pt,copyRange:it,canUndo:bt,canRedo:It,onUndo:ve,onRedo:St,isDragging:Tt}=P,{menuPosition:qe,handleCellContextMenu:wt,closeContextMenu:Pt}=V,{headerFilterInput:Et,cellDescriptorInput:te,statusBarConfig:Q,showEmptyInGrid:re,onCellError:me}=_,se=x.items,Me=x.getRowId,we=x.layoutMode??"fill",he=x.rowSelection??"none",ge=x.suppressHorizontalScroll,yt=x.stickyHeader??true,Dt=x.isLoading??false,Fn=x.loadingMessage??"Loading\u2026",Un=x["aria-label"],Oe=x["aria-labelledby"],kn=we==="content",Ft=!ge&&G>0&&(Z>G||ne>G),Ge=y.value,Ut={commitCellEdit:Ue,setEditingCell:tt,setPendingEditorValue:mt,cancelPopoverEdit:ft},Mn={handleCellMouseDown:ot,setActiveCell:ae,setEditingCell:tt,handleCellContextMenu:wt},On=H=>{if(he!=="single")return;let ie=H.currentTarget.dataset.rowId;ie&&w.updateSelection(Pe.has(ie)?new Set:new Set([ie]));},r=(H,z,ie,Le)=>{try{return L(H,z,ie,Le)}catch(W){return me&&me(W instanceof Error?W:new Error(String(W)),void 0),""}},L=(H,z,ie,Le)=>{let W=getCellRenderDescriptor(H,z,ie,Le,te);if(W.mode==="editing-inline"){let ue=buildInlineEditorProps(H,z,W,Ut);return h("div",{class:"ogrid-editing-cell"},h(e.InlineCellEditor,{value:ue.value,item:ue.item,column:ue.column,rowIndex:ue.rowIndex,editorType:ue.editorType,onCommit:ue.onCommit,onCancel:ue.onCancel}))}if(W.mode==="editing-popover"&&z.cellEditor!=null&&typeof z.cellEditor!="string"){let ue=buildPopoverEditorProps(H,z,W,nt,Ut),oe=z.cellEditor,Bt=resolveCellDisplayContent(z,H,W.displayValue),no=resolveCellStyle(z,H,W.displayValue);return h("div",[h("div",{ref:oo=>{oo&&Ct(oo);},class:"ogrid-popover-anchor"},[no?h("span",{style:no},[Bt]):Bt]),Ie?h(oe,ue):null])}let He=wn(W,z.columnId,Mn),Te=["ogrid-cell-content"];z.type==="numeric"?Te.push("ogrid-cell-content--numeric"):z.type==="boolean"&&Te.push("ogrid-cell-content--boolean"),W.canEditAny&&Te.push("ogrid-cell-content--editable"),W.isActive&&Te.push("ogrid-cell-content--active"),W.isActive&&W.isInRange&&Te.push("ogrid-cell-content--active-in-range"),W.isInRange&&!W.isActive&&Te.push("ogrid-cell-in-range"),W.isInCutRange&&Te.push("ogrid-cell-cut");let Ye;if(W.columnType==="boolean"){let ue=!!W.displayValue;Ye=h("input",{type:"checkbox",checked:ue,disabled:!W.canEditAny,onChange:W.canEditAny?()=>{let oe=W.rowIndex,Bt=W.globalColIndex;Ut.commitCellEdit(H,z.columnId,ue,!ue,oe,Bt,{skipAdvance:true});}:void 0,onPointerdown:oe=>handleBooleanCellPointerDown(oe,W.rowIndex,W.globalColIndex,q,{setActiveCell:ae,setSelectionRange:ke}),onClick:oe=>oe.stopPropagation(),style:`margin:0;cursor:${W.canEditAny?"pointer":"default"};outline:none`,"aria-label":ue?"Checked":"Unchecked"});}else {let ue=resolveCellDisplayContent(z,H,W.displayValue),oe=resolveCellStyle(z,H,W.displayValue);Ye=oe?h("span",{style:oe},ue):ue;}return h("div",{...He,class:Te.join(" ")},[Ye,...W.canEditAny&&W.isSelectionEndCell?[h("div",{onPointerdown:_e,"aria-label":"Fill handle",class:"ogrid-fill-handle"})]:[]])},{cellStyles:le,cellClasses:Re,hdrStyles:st,hdrClasses:ut}=I.value,je=j.map(H=>({col:H,tdClasses:Re[H.columnId]||"ogrid-data-cell",tdDynamicStyle:le[H.columnId]||{}})),fe=b.value,vt=je,Xe=0,Ce=0;if(fe){let H=new Set;for(let z of fe.pinnedLeft)H.add(z.columnId);for(let z of fe.virtualizedUnpinned)H.add(z.columnId);for(let z of fe.pinnedRight)H.add(z.columnId);vt=je.filter(z=>H.has(z.col.columnId)),Xe=fe.leftSpacerWidth,Ce=fe.rightSpacerWidth;}let be=U.value,Ae=H=>{let z=st[H.columnId]||{};return {classes:ut[H.columnId]||"ogrid-header-cell",style:{...z,cursor:u.value?"grabbing":"grab"}}},pe=m.value,De={position:"relative",width:kn?"fit-content":"100%",maxWidth:"100%",overflowX:ge?"hidden":Ft?"auto":"hidden",overflowY:"auto",backgroundColor:"#fff",willChange:"scroll-position",...pe?{flex:"1",minHeight:"0"}:{minHeight:Dt&&se.length===0?"200px":"auto"}};return x.rowHeight&&(De["--ogrid-row-height"]=`${x.rowHeight}px`),h("div",{class:"ogrid-outer-container"},[h("div",{ref:H=>{t.value=H,p.value=H;},tabindex:0,role:"region","aria-label":Un??(Oe?void 0:"Data grid"),"aria-labelledby":Oe,onPointerdown:B,onKeydown:at,onContextmenu:O,"data-overflow-x":Ft?"true":"false","data-ogrid-scroll-container":"",style:De},[h("div",{class:"ogrid-scroll-wrapper"},[h("div",{style:{minWidth:Ft?`${Z}px`:void 0,overflowX:"clip"}},[h("div",{ref:H=>{i.value=H;},class:["ogrid-table-container",Dt&&se.length>0?"ogrid-table-container--loading":""]},[...u.value&&v.value!==null?[h("div",{class:"ogrid-drop-indicator",style:{left:`${v.value}px`}})]:[],h("table",{ref:H=>{s.value=H;},class:"ogrid-table",role:"grid",style:{minWidth:`${Z}px`},...m.value?{"data-virtual-scroll":""}:{}},[h("thead",{class:yt?"ogrid-thead ogrid-sticky-header":"ogrid-thead"},[...x.showColumnLetters?[h("tr",{class:"ogrid-column-letter-row"},[...J?[h("th",{class:"ogrid-column-letter-cell"})]:[],...Y?[h("th",{class:"ogrid-column-letter-cell"})]:[],...j.map((H,z)=>{let{classes:ie,style:Le}=Ae(H);return h("th",{key:H.columnId,class:`ogrid-column-letter-cell ${ie}`,style:Le},indexToColumnLetter(z))})])]:[],...Ge.map((H,z)=>h("tr",{key:z,class:"ogrid-header-row"},[...z===Ge.length-1&&J?[h("th",{class:"ogrid-checkbox-header",style:{width:`${CHECKBOX_COLUMN_WIDTH}px`,minWidth:`${CHECKBOX_COLUMN_WIDTH}px`,maxWidth:`${CHECKBOX_COLUMN_WIDTH}px`}},e.renderCheckbox({modelValue:Ve,indeterminate:We&&!Ve,ariaLabel:"Select all rows",onChange:ie=>Ne(!!ie)}))]:[],...z===0&&z<Ge.length-1&&J?[h("th",{rowSpan:Ge.length-1,class:"ogrid-checkbox-spacer",style:{width:`${CHECKBOX_COLUMN_WIDTH}px`,minWidth:`${CHECKBOX_COLUMN_WIDTH}px`}})]:[],...z===Ge.length-1&&Y?[(()=>{let ie=D.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("th",{class:"ogrid-row-number-header",style:{width:`${ie}px`,minWidth:`${ie}px`,maxWidth:`${ie}px`,position:"sticky",left:J?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:3},onPointerdown:F,onMousedown:T,onSelectstart:E},["#",h("div",{onPointerdown:Le=>{ae(null),ke(null),t.value?.focus({preventScroll:true}),Le.stopPropagation(),g(Le,{columnId:ROW_NUMBER_COLUMN_ID,name:"#"});},class:"ogrid-resize-handle",role:"separator","aria-label":"Resize row numbers"})])})()]:[],...z===0&&z<Ge.length-1&&Y?[(()=>{let ie=D.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("th",{rowSpan:Ge.length-1,class:"ogrid-row-number-spacer",style:{width:`${ie}px`,position:"sticky",left:J?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:3}})})()]:[],...H.map((ie,Le)=>{if(ie.isGroup)return h("th",{key:Le,colSpan:ie.colSpan,scope:"colgroup",class:"ogrid-column-group-header"},ie.label);if(!ie.columnDef)return null;let W=ie.columnDef,{classes:He,style:Te}=Ae(W),ue=x.sortBy===W.columnId?x.sortDirection==="asc"?"ascending":"descending":void 0;return h("th",{key:W.columnId,scope:"col","data-column-id":W.columnId,rowSpan:Ge.length>1?Ge.length-z:void 0,class:He,style:Te,"aria-sort":ue,onPointerdown:oe=>C(W.columnId,oe)},[h("div",{class:"ogrid-header-content"},[h(e.ColumnHeaderFilter,getHeaderFilterConfig(W,Et)),h("button",{onClick:oe=>{oe.stopPropagation(),M.isOpen&&M.openForColumn===W.columnId?M.close():M.open(W.columnId,oe.currentTarget);},"aria-label":"Column options",title:"Column options",class:"ogrid-column-menu-btn"},"\u22EE")]),h("div",{onPointerdown:oe=>{ae(null),ke(null),t.value?.focus({preventScroll:true}),oe.stopPropagation(),g(oe,W);},onDblclick:oe=>R(oe,W),class:"ogrid-resize-handle",role:"separator","aria-label":`Resize ${W.name??W.columnId}`})])})]))]),...re?[]:[h("tbody",{},(()=>{let H=m.value,z=f.value,ie=H?z.startIndex:0,Le=H?Math.min(z.endIndex,se.length-1):se.length-1,W=[];H&&z.offsetTop>0&&W.push(h("tr",{key:"__vs-top",style:{height:`${z.offsetTop}px`}}));for(let He=ie;He<=Le;He++){let Te=se[He];if(!Te)continue;let Ye=Me(Te),ue=Pe.has(Ye);W.push(h("tr",{key:Ye,"data-row-id":Ye,"aria-selected":ue||void 0,onClick:On,style:{cursor:he==="single"?"pointer":void 0}},[...J?[h("td",{class:"ogrid-checkbox-cell",style:{width:`${CHECKBOX_COLUMN_WIDTH}px`,minWidth:`${CHECKBOX_COLUMN_WIDTH}px`,maxWidth:`${CHECKBOX_COLUMN_WIDTH}px`}},h("div",{"data-row-index":He,"data-col-index":0,onClick:A,class:"ogrid-checkbox-wrapper"},e.renderCheckbox({modelValue:ue,ariaLabel:`Select row ${He+1}`,onChange:oe=>xe(Ye,oe,He,d.value)})))]:[],...Y?[(()=>{let oe=D.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("td",{class:"ogrid-row-number-cell",style:{width:`${oe}px`,minWidth:`${oe}px`,maxWidth:`${oe}px`,padding:"6px",position:"sticky",left:J?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:2,userSelect:"none",WebkitUserSelect:"none"},onPointerdown:F,onMousedown:T,onSelectstart:E},String(Ke+He+1))})()]:[],...Xe>0?[h("td",{key:"__col-spacer-left",style:{width:`${Xe}px`,minWidth:`${Xe}px`,maxWidth:`${Xe}px`,padding:"0"}})]:[],...vt.map(oe=>h("td",{key:oe.col.columnId,"data-column-id":oe.col.columnId,class:oe.tdClasses,style:{...oe.tdDynamicStyle,userSelect:"none",WebkitUserSelect:"none"},onPointerdown:F,onMousedown:T,onSelectstart:E},[r(Te,oe.col,He,be.get(oe.col.columnId)??0)])),...Ce>0?[h("td",{key:"__col-spacer-right",style:{width:`${Ce}px`,minWidth:`${Ce}px`,maxWidth:`${Ce}px`,padding:"0"}})]:[]]));}return H&&z.offsetBottom>0&&W.push(h("tr",{key:"__vs-bottom",style:{height:`${z.offsetBottom}px`}})),W})())]]),...re&&x.emptyState?[e.renderEmptyState(x.emptyState)]:[]])])])]),...qe?[h(Teleport,{to:"body"},h(e.GridContextMenu,{x:qe.x,y:qe.y,hasSelection:rt,canUndo:bt,canRedo:It,onUndo:ve??il,onRedo:St??il,onCopy:ht,onCut:Rt,onPaste:()=>{Be();},onSelectAll:lt,onClose:Pt}))]:[],h(Ln,{containerRef:i,selectionRange:Ee,copyRange:it,cutRange:pt,colOffset:q,items:se,visibleColumns:x.visibleColumns instanceof Set?Array.from(x.visibleColumns):x.visibleColumns,columnSizingOverrides:D.columnSizingOverrides,columnOrder:x.columnOrder}),...x.formulaReferences&&x.formulaReferences.length>0?[h(zn,{containerEl:i.value,references:x.formulaReferences,colOffset:q})]:[],h(e.ColumnHeaderMenu,{isOpen:M.isOpen,anchorElement:M.anchorElement,onClose:M.close,onPinLeft:M.handlePinLeft,onPinRight:M.handlePinRight,onUnpin:M.handleUnpin,onSortAsc:M.handleSortAsc,onSortDesc:M.handleSortDesc,onClearSort:M.handleClearSort,onAutosizeThis:M.handleAutosizeThis,onAutosizeAll:M.handleAutosizeAll,canPinLeft:M.canPinLeft,canPinRight:M.canPinRight,canUnpin:M.canUnpin,currentSort:M.currentSort,isSortable:M.isSortable,isResizable:M.isResizable}),...Q?[h(Hn,{totalCount:Q.totalCount,filteredCount:Q.filteredCount,selectedCount:Q.selectedCount??Pe.size,selectedCellCount:Ee?(Math.abs(Ee.endRow-Ee.startRow)+1)*(Math.abs(Ee.endCol-Ee.startCol)+1):void 0,aggregation:Q.aggregation,suppressRowCount:Q.suppressRowCount})]:[],...Dt?[h("div",{class:"ogrid-loading-overlay"},e.renderSpinner(Fn))]:[]])}}})}var xt={width:"100%",height:"100%",display:"flex",alignItems:"center",paddingTop:"var(--ogrid-cell-padding-vertical, 6px)",paddingBottom:"var(--ogrid-cell-padding-vertical, 6px)",paddingLeft:"var(--ogrid-cell-padding-horizontal, 10px)",paddingRight:"var(--ogrid-cell-padding-horizontal, 10px)",boxSizing:"border-box",overflow:"hidden",minWidth:"0"};function Fi(e){let{renderCheckbox:l}=e;return defineComponent({name:"InlineCellEditor",props:{value:{default:void 0},item:{type:Object,required:true},column:{type:Object,required:true},rowIndex:{type:Number,required:true},editorType:{type:String,required:true},onCommit:{type:Function,required:true},onCancel:{type:Function,required:true}},setup(n){let t=ref(null),i=ref(null),s=ref(null),d=ref(n.value),a=ref(0),u=ref(false),v=y=>{d.value=y.target.value;},C=y=>y?.target?.value??String(d.value??""),p=y=>{if(n.editorType==="date"){let I=n.column.cellEditorParams?.dateFormat??n.column.dateFormat??DEFAULT_DATE_FORMAT;if((n.column.cellEditorParams?.editorType??"text")==="native"){if(y==null){d.value="";return}let D=String(y);d.value=D.match(/^\d{4}-\d{2}-\d{2}/)?D.substring(0,10):D;return}d.value=formatDateForDisplay(y,I)??"";return}d.value=y;};p(n.value);let f=y=>{u.value=true,n.onCommit(y);},c=()=>{u.value=true,n.onCancel();},o=()=>u.value?(u.value=false,true):false,m=()=>{let y=i.value,I=s.value;if(!y||!I)return;let x=y.getBoundingClientRect(),D=200,w=window.innerHeight-x.bottom,h=w<D&&x.top>w;I.style.position="fixed",I.style.left=`${x.left}px`,I.style.width=`${x.width}px`,I.style.maxHeight=`${D}px`,I.style.zIndex="9999",I.style.right="auto",I.style.textAlign="left",h?(I.style.top="auto",I.style.bottom=`${window.innerHeight-x.top}px`):I.style.top=`${x.bottom}px`;},g=null,R=null;onMounted(()=>{let y=I=>{I.key==="Escape"&&(I.preventDefault(),I.stopPropagation(),c());};document.addEventListener("keydown",y,true),R=()=>{document.removeEventListener("keydown",y,true);},nextTick(()=>{if(i.value){n.editorType==="richSelect"&&F.value?F.value.focus({preventScroll:true}):i.value.focus({preventScroll:true}),m();let I=i.value,x=I.closest("[data-ogrid-scroll-container]")??I.closest('[style*="overflow"]'),D=()=>{n.onCancel&&n.onCancel();},w=requestAnimationFrame(()=>{x&&x.addEventListener("scroll",D,{passive:true}),window.addEventListener("scroll",D,{passive:true});});g=()=>{cancelAnimationFrame(w),x&&x.removeEventListener("scroll",D),window.removeEventListener("scroll",D);};return}t.value?.focus({preventScroll:true}),t.value?.select();});}),onUnmounted(()=>{g?.(),R?.();}),watch(()=>n.value,p),(()=>{let I=(n.column.cellEditorParams?.values??[]).findIndex(x=>String(x)===String(n.value));a.value=Math.max(I,0);})();let b=()=>{nextTick(()=>{let y=s.value;if(!y)return;y.children[a.value]?.scrollIntoView({block:"nearest"});});},U=y=>{let I=n.column.cellEditorParams?.formatValue;return I?I(y):y!=null?String(y):""},k=y=>{let I=n.column.cellEditorParams?.values??[];switch(y.key){case "ArrowDown":y.preventDefault(),a.value=Math.min(a.value+1,I.length-1),b();break;case "ArrowUp":y.preventDefault(),a.value=Math.max(a.value-1,0),b();break;case "Enter":y.preventDefault(),y.stopPropagation(),I.length>0&&a.value<I.length&&f(I[a.value]);break;case "Tab":y.preventDefault(),I.length>0&&a.value<I.length&&f(I[a.value]);break;case "Escape":y.preventDefault(),y.stopPropagation(),c();break}},B=ref(""),F=ref(null),T=ref(null),E=computed(()=>{let y=n.column.cellEditorParams?.values??[],I=B.value.trim().toLowerCase();return I?y.filter(x=>U(x).toLowerCase().includes(I)):y}),O=()=>{nextTick(()=>{let y=T.value;if(!y)return;y.children[a.value]?.scrollIntoView({block:"nearest"});});},A=y=>{let I=E.value;switch(y.key){case "ArrowDown":y.preventDefault(),a.value=Math.min(a.value+1,I.length-1),O();break;case "ArrowUp":y.preventDefault(),a.value=Math.max(a.value-1,0),O();break;case "Enter":y.preventDefault(),y.stopPropagation(),I.length>0&&a.value<I.length&&f(I[a.value]);break;case "Escape":y.preventDefault(),y.stopPropagation(),c();break}};return ()=>{if(n.editorType==="checkbox"){let y=!!n.value;return h("div",{style:{...xt,justifyContent:"center"}},l({checked:y,onChange:I=>f(I),onCancel:c}))}if(n.editorType==="select"){let y=n.column.cellEditorParams?.values??[];return h("div",{ref:I=>{i.value=I;},tabindex:0,style:{...xt,position:"relative"},onKeydown:k},[h("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",cursor:"pointer",fontSize:"13px",color:"inherit"}},[h("span",U(n.value)),h("span",{style:{marginLeft:"4px",fontSize:"10px",opacity:"0.5"}},"\u25BE")]),h("div",{ref:I=>{s.value=I;},role:"listbox",style:{position:"absolute",top:"100%",left:"0",right:"0",maxHeight:"200px",overflowY:"auto",background:"var(--ogrid-bg, #fff)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",zIndex:"10",boxShadow:"0 4px 16px rgba(0,0,0,0.2)",textAlign:"left",fontSize:"13px",fontFamily:"inherit"}},[...y.map((I,x)=>h("div",{key:String(I),role:"option","aria-selected":x===a.value,onClick:()=>f(I),style:{padding:"6px 8px",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:"13px",...x===a.value?{background:"var(--ogrid-bg-hover, #e8f0fe)"}:{}}},U(I)))])])}if(n.editorType==="richSelect"){let y=E.value;return h("div",{ref:I=>{i.value=I;},style:{...xt,position:"relative"}},[h("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",cursor:"pointer",fontSize:"13px",color:"inherit"}},[h("span",U(n.value)),h("span",{style:{marginLeft:"4px",fontSize:"10px",opacity:"0.5"}},"\u25BE")]),h("div",{ref:I=>{s.value=I;},role:"listbox",style:{position:"absolute",top:"100%",left:"0",right:"0",maxHeight:"200px",overflowY:"auto",background:"var(--ogrid-bg, #fff)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",zIndex:"10",boxShadow:"0 4px 16px rgba(0,0,0,0.2)",textAlign:"left",fontSize:"13px",fontFamily:"inherit"}},[h("input",{ref:I=>{F.value=I;},type:"text",value:B.value,placeholder:"Search...",onInput:I=>{B.value=I.target.value,a.value=0;},onKeydown:A,style:{width:"100%",padding:"6px 8px",border:"none",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",background:"var(--ogrid-bg, #fff)",color:"inherit",font:"inherit",fontSize:"13px",outline:"none",boxSizing:"border-box",position:"sticky",top:"0",zIndex:"1"}}),h("div",{ref:I=>{T.value=I;}},y.map((I,x)=>h("div",{key:String(I),role:"option","aria-selected":x===a.value,onClick:()=>f(I),style:{padding:"6px 8px",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:"13px",...x===a.value?{background:"var(--ogrid-bg-hover, #e8f0fe)"}:{}}},U(I)))),...y.length===0?[h("div",{style:{padding:"6px 8px",color:"var(--ogrid-muted, #999)",fontSize:"13px"}},"No matches")]:[]])])}if(n.editorType==="date"){let y=n.column.cellEditorParams?.dateFormat??n.column.dateFormat??DEFAULT_DATE_FORMAT,I=n.column.cellEditorParams?.editorType??"text",x=h=>{if(I!=="native"){let P=parseUserInputDate(h,y);if(P!==null){let V=P.getUTCFullYear().toString().padStart(4,"0"),_=(P.getUTCMonth()+1).toString().padStart(2,"0"),K=P.getUTCDate().toString().padStart(2,"0");f(`${V}-${_}-${K}`);}else f(h||null);}else f(h);},D=h=>{h.stopPropagation(),h.key==="Enter"&&(h.preventDefault(),x(C(h))),h.key==="Escape"&&(h.preventDefault(),c()),h.key==="Tab"&&(h.preventDefault(),x(C(h)));};if(I==="native"){let h$1=(()=>{if(d.value==null)return "";let P=String(d.value);return P.match(/^\d{4}-\d{2}-\d{2}/)?P.substring(0,10):P})();return h("div",{style:xt},h("input",{ref:P=>{t.value=P;},type:"date",value:h$1,style:{width:"100%",height:"100%",border:"none",outline:"none",padding:"0 4px",fontSize:"inherit",boxSizing:"border-box"},onInput:v,onChange:v,onKeyup:v,onKeydown:D,onBlur:P=>{o()||x(C(P));}}))}let w=getDateInputPlaceholder(y);return h("div",{style:xt},h("input",{ref:h=>{t.value=h;},type:"text",value:String(d.value??""),placeholder:w,style:{width:"100%",height:"100%",border:"none",outline:"none",padding:"0 4px",fontSize:"inherit",boxSizing:"border-box"},onInput:v,onChange:v,onKeyup:v,onKeydown:D,onBlur:h=>{o()||x(C(h));}}))}return h("div",{style:xt},h("input",{ref:y=>{t.value=y;},type:"text",value:d.value!=null?String(d.value):"",style:{width:"100%",height:"100%",border:"none",outline:"none",padding:"0 4px",fontSize:"inherit",boxSizing:"border-box"},onInput:v,onChange:v,onKeyup:v,onKeydown:y=>{y.stopPropagation(),y.key==="Enter"&&(y.preventDefault(),f(C(y))),y.key==="Escape"&&(y.preventDefault(),c()),y.key==="Tab"&&(y.preventDefault(),f(C(y)));},onBlur:y=>{o()||f(C(y));}}))}}})}var Li=240,to=36,Dn={columns:"Columns",filters:"Filters"},Hi={columns:"\u2261",filters:"\u2A65"};function ul(e){let l=e.activePanel!==null,n=e.position??"right",t={display:"flex",flexDirection:"column",width:`${to}px`,background:"var(--ogrid-header-bg, #f5f5f5)",...n==="right"?{borderLeft:"1px solid var(--ogrid-border, #e0e0e0)"}:{borderRight:"1px solid var(--ogrid-border, #e0e0e0)"}},i=h("div",{style:t,role:"tablist","aria-label":"Side bar tabs"},e.panels.map(a=>h("button",{key:a,role:"tab","aria-selected":e.activePanel===a,"aria-label":Dn[a],title:Dn[a],onClick:()=>e.onPanelChange(e.activePanel===a?null:a),style:{width:`${to}px`,height:`${to}px`,border:"none",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:"14px",display:"flex",alignItems:"center",justifyContent:"center",background:e.activePanel===a?"var(--ogrid-bg, #fff)":"transparent",fontWeight:e.activePanel===a?"bold":"normal"}},Hi[a]))),s=null;if(l&&e.activePanel){let a={width:`${Li}px`,display:"flex",flexDirection:"column",overflow:"hidden",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",...n==="right"?{borderLeft:"1px solid var(--ogrid-border, #e0e0e0)"}:{borderRight:"1px solid var(--ogrid-border, #e0e0e0)"}},u=[];if(e.activePanel==="columns"){let v=e.columns.every(C=>e.visibleColumns.has(C.columnId));u.push(h("div",{style:{display:"flex",gap:"8px",marginBottom:"8px"}},[h("button",{disabled:v,onClick:()=>{let C=new Set(e.visibleColumns);e.columns.forEach(p=>C.add(p.columnId)),e.onSetVisibleColumns(C);},style:{flex:"1",cursor:"pointer",background:"var(--ogrid-bg-subtle, #f3f2f1)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:"4px",padding:"4px 8px"}},"Select All"),h("button",{onClick:()=>{let C=new Set;e.columns.forEach(p=>{p.required&&e.visibleColumns.has(p.columnId)&&C.add(p.columnId);}),e.onSetVisibleColumns(C);},style:{flex:"1",cursor:"pointer",background:"var(--ogrid-bg-subtle, #f3f2f1)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:"4px",padding:"4px 8px"}},"Clear All")])),e.columns.forEach(C=>{u.push(h("label",{key:C.columnId,style:{display:"flex",alignItems:"center",gap:"6px",padding:"2px 0",cursor:"pointer"}},[h("input",{type:"checkbox",checked:e.visibleColumns.has(C.columnId),disabled:C.required,onChange:p=>e.onVisibilityChange(C.columnId,p.target.checked)}),h("span",null,C.name)]));});}e.activePanel==="filters"&&(e.filterableColumns.length===0?u.push(h("div",{style:{color:"var(--ogrid-muted, #999)",fontStyle:"italic"}},"No filterable columns")):e.filterableColumns.forEach(v=>{let C=v.filterField,p=[h("div",{style:{fontWeight:"500",marginBottom:"4px",fontSize:"13px"}},v.name)];if(v.filterType==="text"){let f=e.filters[C],c=f?.type==="text"?f.value:"";p.push(h("input",{type:"text",value:c,onInput:o=>{let m=o.target.value;e.onFilterChange(C,m?{type:"text",value:m}:void 0);},placeholder:`Filter ${v.name}...`,"aria-label":`Filter ${v.name}`,style:{width:"100%",boxSizing:"border-box",padding:"4px 6px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:"4px"}}));}if(v.filterType==="multiSelect"){let c=(e.filterOptions[C]??[]).map(o=>{let m=e.filters[C],g=m?.type==="multiSelect"?m.value.includes(o):false;return h("label",{key:o,style:{display:"flex",alignItems:"center",gap:"4px",padding:"1px 0",cursor:"pointer",fontSize:"13px"}},[h("input",{type:"checkbox",checked:g,onChange:R=>{let S=e.filters[C],b=S?.type==="multiSelect"?S.value:[],U=R.target.checked?[...b,o]:b.filter(k=>k!==o);e.onFilterChange(C,U.length>0?{type:"multiSelect",value:U}:void 0);}}),h("span",null,o)])});p.push(h("div",{style:{maxHeight:"120px",overflowY:"auto"},role:"group","aria-label":`${v.name} options`},c));}if(v.filterType==="date"){let f=e.filters[C],c=f?.type==="date"?f.value:{from:void 0,to:void 0};p.push(h("div",{style:{display:"flex",flexDirection:"column",gap:"4px"}},[h("label",{style:{display:"flex",alignItems:"center",gap:"4px",fontSize:"12px"}},["From:",h("input",{type:"date",value:c.from??"",onInput:o=>{let m=o.target.value||void 0,g=c.to;e.onFilterChange(C,m||g?{type:"date",value:{from:m,to:g}}:void 0);},"aria-label":`${v.name} from date`,style:{flex:"1",padding:"2px 4px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:"4px"}})]),h("label",{style:{display:"flex",alignItems:"center",gap:"4px",fontSize:"12px"}},["To:",h("input",{type:"date",value:c.to??"",onInput:o=>{let m=o.target.value||void 0,g=c.from;e.onFilterChange(C,g||m?{type:"date",value:{from:g,to:m}}:void 0);},"aria-label":`${v.name} to date`,style:{flex:"1",padding:"2px 4px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, #e0e0e0)",borderRadius:"4px"}})])]));}u.push(h("div",{key:v.columnId,style:{marginBottom:"12px"}},p));})),s=h("div",{role:"tabpanel","aria-label":Dn[e.activePanel],style:a},[h("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"8px 12px",borderBottom:"1px solid var(--ogrid-border, #e0e0e0)",fontWeight:"600"}},[h("span",null,Dn[e.activePanel]),h("button",{onClick:()=>e.onPanelChange(null),style:{border:"none",background:"transparent",cursor:"pointer",fontSize:"16px",color:"var(--ogrid-fg, #242424)"},"aria-label":"Close panel"},"\xD7")]),h("div",{style:{flex:"1",overflowY:"auto",padding:"8px 12px"}},u)]);}let d=[];return n==="left"?(d.push(i),s&&d.push(s)):(s&&d.push(s),d.push(i)),h("div",{style:{display:"flex",flexDirection:"row",flexShrink:"0"},role:"complementary","aria-label":"Side bar"},d)}function Vi(e){return defineComponent({name:"OGrid",props:{gridProps:{type:Object,required:true}},setup(l,{expose:n}){let t=computed(()=>l.gridProps),{dataGridProps:i,pagination:s,columnChooser:d,layout:a,api:u}=$t(t);n({api:u});let v=ref(false),C=()=>{v.value=!v.value;},p=f=>{f.key==="Escape"&&v.value&&(v.value=false);};return onMounted(()=>{document.addEventListener("keydown",p);}),onUnmounted(()=>{document.removeEventListener("keydown",p);}),()=>{let f=a.value.sideBarProps,c=f!=null,o=f?.position??"right",m=[];a.value.toolbar&&m.push(a.value.toolbar);let R=a.value.fullScreen===true?h("button",{type:"button",title:v.value?"Exit fullscreen":"Fullscreen","aria-label":v.value?"Exit fullscreen":"Fullscreen",onClick:C,style:{background:"none",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"4px",padding:"4px 6px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--ogrid-fg, rgba(0,0,0,0.87))"}},[v.value?h("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round",innerHTML:'<polyline points="4 10 0 10 0 14"/><polyline points="12 6 16 6 16 2"/><line x1="0" y1="10" x2="4" y2="6"/><line x1="16" y1="6" x2="12" y2="10"/>'}):h("svg",{width:16,height:16,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round",innerHTML:'<polyline points="10 2 14 2 14 6"/><polyline points="6 14 2 14 2 10"/><line x1="14" y1="2" x2="10" y2="6"/><line x1="2" y1="14" x2="6" y2="10"/>'})]):null,S=d.value.placement==="toolbar"?h(e.ColumnChooser,{columns:d.value.columns,visibleColumns:d.value.visibleColumns,onVisibilityChange:d.value.onVisibilityChange}):null,b=h(e.PaginationControls,{currentPage:s.value.page,pageSize:s.value.pageSize,totalCount:s.value.displayTotalCount,onPageChange:s.value.setPage,onPageSizeChange:E=>{s.value.setPageSize(E);},pageSizeOptions:s.value.pageSizeOptions,entityLabelPlural:s.value.entityLabelPlural}),U=h("div",{style:{flex:"1",minWidth:"0",minHeight:"0",display:"flex",flexDirection:"column"}},[h(e.DataGridTable,{gridProps:i.value})]),k=[];c&&o==="left"&&k.push(ul(f)),k.push(U),c&&o!=="left"&&k.push(ul(f));let B=m.length>0||S!=null||R!=null,F=v.value?{position:"fixed",inset:"0",zIndex:9999,display:"flex",flexDirection:"column",background:"var(--ogrid-bg, #fff)"}:{display:"flex",flexDirection:"column",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"4px",overflow:"hidden"},T=v.value?{display:"flex",flexDirection:"column",flex:"1",minHeight:"0",overflow:"hidden",background:"var(--ogrid-bg, #fff)"}:void 0;return h("div",{class:a.value.className,style:F},[h("div",{style:T??{}},[...B?[h("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 12px",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",gap:"8px"}},[h("div",{style:{display:"flex",alignItems:"center",gap:"8px",flex:"1"}},m),h("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},[...S?[S]:[],...R?[R]:[]])])]:[],...a.value.toolbarBelow?[h("div",{style:{padding:"8px 12px",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))"}},[a.value.toolbarBelow])]:[],...a.value.formulaBar?[a.value.formulaBar]:[],h("div",{style:{display:"flex",flex:"1",minHeight:"0"}},k),...a.value.sheetTabs?[a.value.sheetTabs]:[],h("div",{style:{display:"flex",alignItems:"center",padding:"8px 0",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))"}},[b])])])}}})}export{Vn as FormulaBar,zn as FormulaRefOverlay,Ln as MarchingAntsOverlay,Gn as SheetTabs,Hn as StatusBar,Si as createDataGridTable,Fi as createInlineCellEditor,Vi as createOGrid,wn as getCellInteractionProps,Xt as useActiveCell,Ko as useCellClipboard,jt as useCellEditing,Yt as useCellSelection,Jt as useClipboard,nl as useColumnChooserState,el as useColumnHeaderFilterState,rn as useColumnHeaderMenuState,on as useColumnPinning,Cn as useColumnReorder,un as useColumnResize,Zt as useContextMenu,sn as useDataGridState,Sn as useDataGridTableSetup,vn as useDateFilterState,dn as useDebounce,Xo as useDebouncedCallback,Ho as useFillHandle,Wt as useFilterOptions,_t as useFormulaBar,qo as useGridFocus,So as useHeadlessGrid,ol as useInlineCellEditorState,Bo as useInlineEdit,Qt as useKeyboardNavigation,mn as useMultiSelectFilterState,$t as useOGrid,pn as usePeopleFilterState,No as useRangeSelection,rl as useRichSelectState,qt as useRowSelection,Mt as useSideBarState,nn as useTableLayout,cn as useTextFilterState,tn as useUndoRedo,Rn as useVirtualScroll};
@@ -16,8 +16,18 @@ export { useRowSelection } from './useRowSelection';
16
16
  export type { UseRowSelectionParams, UseRowSelectionResult } from './useRowSelection';
17
17
  export { useKeyboardNavigation } from './useKeyboardNavigation';
18
18
  export type { UseKeyboardNavigationParams, UseKeyboardNavigationResult } from './useKeyboardNavigation';
19
+ export { useFillHandleInternal } from './useFillHandleInternal';
20
+ export type { UseFillHandleInternalParams, UseFillHandleInternalResult, } from './useFillHandleInternal';
19
21
  export { useFillHandle } from './useFillHandle';
20
22
  export type { UseFillHandleParams, UseFillHandleResult } from './useFillHandle';
23
+ export { useInlineEdit } from './useInlineEdit';
24
+ export type { UseInlineEditParams, UseInlineEditResult, InlineEditEvent, InlineEditorProps, } from './useInlineEdit';
25
+ export { useRangeSelection } from './useRangeSelection';
26
+ export type { UseRangeSelectionParams, UseRangeSelectionResult, CellCoord, } from './useRangeSelection';
27
+ export { useCellClipboard } from './useCellClipboard';
28
+ export type { UseCellClipboardParams, UseCellClipboardResult, } from './useCellClipboard';
29
+ export { useGridFocus } from './useGridFocus';
30
+ export type { UseGridFocusParams, UseGridFocusResult, } from './useGridFocus';
21
31
  export { useUndoRedo } from './useUndoRedo';
22
32
  export type { UseUndoRedoParams, UseUndoRedoResult } from './useUndoRedo';
23
33
  export { useContextMenu } from './useContextMenu';
@@ -0,0 +1,28 @@
1
+ /**
2
+ * useCellClipboard (Vue) — TSV copy/cut/paste for cell ranges.
3
+ *
4
+ * Mirrors the React API. Honors clipboardFormatter (copy) + valueParser (paste).
5
+ */
6
+ import { type ComputedRef, type Ref } from 'vue';
7
+ import type { IColumnDef as ICoreColumnDef, ISelectionRange, ICellValueChangedEvent } from '@alaarab/ogrid-core';
8
+ import type { UseRangeSelectionResult } from './useRangeSelection';
9
+ export interface UseCellClipboardParams<T> {
10
+ rangeSelection: UseRangeSelectionResult;
11
+ rows: T[];
12
+ columns: ICoreColumnDef<T>[];
13
+ onCellEdit: (events: ICellValueChangedEvent<T>[]) => void;
14
+ clipboard?: {
15
+ readText: () => Promise<string>;
16
+ writeText: (text: string) => Promise<void>;
17
+ };
18
+ }
19
+ export interface UseCellClipboardResult {
20
+ copyRange: () => Promise<void>;
21
+ cutRange: () => Promise<void>;
22
+ pasteRange: () => Promise<void>;
23
+ canPaste: ComputedRef<boolean>;
24
+ activeCutRange: Ref<ISelectionRange | null>;
25
+ activeCopyRange: Ref<ISelectionRange | null>;
26
+ clearClipboard: () => void;
27
+ }
28
+ export declare function useCellClipboard<T>(params: UseCellClipboardParams<T>): UseCellClipboardResult;
@@ -1,34 +1,26 @@
1
- import { type Ref, type ShallowRef } from 'vue';
2
- import type { ISelectionRange, IActiveCell, IColumnDef, ICellValueChangedEvent } from '../types';
3
- import type { IVisibleRange } from '@alaarab/ogrid-core';
1
+ /**
2
+ * useFillHandle (Vue) headless drag-to-fill.
3
+ *
4
+ * Mirrors React useFillHandle. Pairs with useRangeSelection. On commit,
5
+ * applies fill via core's applyFillValues and emits cell-change events.
6
+ */
7
+ import { type ComputedRef, type Ref } from 'vue';
8
+ import type { IColumnDef as ICoreColumnDef, ISelectionRange, ICellValueChangedEvent } from '@alaarab/ogrid-core';
9
+ import type { CellCoord, UseRangeSelectionResult } from './useRangeSelection';
4
10
  export interface UseFillHandleParams<T> {
5
- items: Ref<T[]>;
6
- visibleCols: Ref<IColumnDef<T>[]>;
7
- editable: Ref<boolean | undefined>;
8
- onCellValueChanged: Ref<((event: ICellValueChangedEvent<T>) => void) | undefined>;
9
- selectionRange: Ref<ISelectionRange | null> | ShallowRef<ISelectionRange | null>;
10
- setSelectionRange: (range: ISelectionRange | null) => void;
11
- setActiveCell: (cell: IActiveCell | null) => void;
12
- colOffset: Ref<number> | number;
13
- wrapperRef: Ref<HTMLElement | null> | ShallowRef<HTMLElement | null>;
14
- beginBatch?: () => void;
15
- endBatch?: () => void;
16
- visibleRange?: Ref<IVisibleRange | null>;
11
+ rangeSelection: UseRangeSelectionResult;
12
+ rows: T[];
13
+ columns: ICoreColumnDef<T>[];
14
+ onFillCells: (events: ICellValueChangedEvent<T>[]) => void;
17
15
  }
18
16
  export interface UseFillHandleResult {
19
- fillDrag: ShallowRef<{
20
- startRow: number;
21
- startCol: number;
22
- } | null>;
23
- setFillDrag: (value: {
24
- startRow: number;
25
- startCol: number;
26
- } | null) => void;
27
- handleFillHandleMouseDown: (e: PointerEvent) => void;
28
- /** Fill the current selection down from the top row (Ctrl+D). No-op if no selection or editable=false. */
29
- fillDown: () => void;
17
+ fillTarget: Ref<CellCoord | null>;
18
+ isFilling: ComputedRef<boolean>;
19
+ startFill: () => void;
20
+ updateFill: (row: number, col: number) => void;
21
+ commitFill: () => void;
22
+ cancelFill: () => void;
23
+ fillRange: ComputedRef<ISelectionRange | null>;
24
+ isInFillRange: (row: number, col: number) => boolean;
30
25
  }
31
- /**
32
- * Manages Excel-style fill handle drag-to-fill for cell ranges.
33
- */
34
26
  export declare function useFillHandle<T>(params: UseFillHandleParams<T>): UseFillHandleResult;
@@ -0,0 +1,34 @@
1
+ import { type Ref, type ShallowRef } from 'vue';
2
+ import type { ISelectionRange, IActiveCell, IColumnDef, ICellValueChangedEvent } from '../types';
3
+ import type { IVisibleRange } from '@alaarab/ogrid-core';
4
+ export interface UseFillHandleInternalParams<T> {
5
+ items: Ref<T[]>;
6
+ visibleCols: Ref<IColumnDef<T>[]>;
7
+ editable: Ref<boolean | undefined>;
8
+ onCellValueChanged: Ref<((event: ICellValueChangedEvent<T>) => void) | undefined>;
9
+ selectionRange: Ref<ISelectionRange | null> | ShallowRef<ISelectionRange | null>;
10
+ setSelectionRange: (range: ISelectionRange | null) => void;
11
+ setActiveCell: (cell: IActiveCell | null) => void;
12
+ colOffset: Ref<number> | number;
13
+ wrapperRef: Ref<HTMLElement | null> | ShallowRef<HTMLElement | null>;
14
+ beginBatch?: () => void;
15
+ endBatch?: () => void;
16
+ visibleRange?: Ref<IVisibleRange | null>;
17
+ }
18
+ export interface UseFillHandleInternalResult {
19
+ fillDrag: ShallowRef<{
20
+ startRow: number;
21
+ startCol: number;
22
+ } | null>;
23
+ setFillDrag: (value: {
24
+ startRow: number;
25
+ startCol: number;
26
+ } | null) => void;
27
+ handleFillHandleMouseDown: (e: PointerEvent) => void;
28
+ /** Fill the current selection down from the top row (Ctrl+D). No-op if no selection or editable=false. */
29
+ fillDown: () => void;
30
+ }
31
+ /**
32
+ * Manages Excel-style fill handle drag-to-fill for cell ranges.
33
+ */
34
+ export declare function useFillHandleInternal<T>(params: UseFillHandleInternalParams<T>): UseFillHandleInternalResult;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * useGridFocus (Vue) — headless arrow-key cell navigation.
3
+ *
4
+ * Mirrors React API with Vue refs.
5
+ */
6
+ import { type Ref } from 'vue';
7
+ import type { CellCoord, UseRangeSelectionResult } from './useRangeSelection';
8
+ export interface UseGridFocusParams {
9
+ rowCount: number;
10
+ colCount: number;
11
+ pageSize?: number;
12
+ rangeSelection?: UseRangeSelectionResult;
13
+ }
14
+ export interface UseGridFocusResult {
15
+ activeCell: Ref<CellCoord | null>;
16
+ setActiveCell: (cell: CellCoord | null) => void;
17
+ moveUp: (n?: number) => void;
18
+ moveDown: (n?: number) => void;
19
+ moveLeft: (n?: number) => void;
20
+ moveRight: (n?: number) => void;
21
+ moveToRowStart: () => void;
22
+ moveToRowEnd: () => void;
23
+ moveToStart: () => void;
24
+ moveToEnd: () => void;
25
+ getKeyDownHandler: () => (e: {
26
+ key: string;
27
+ shiftKey?: boolean;
28
+ ctrlKey?: boolean;
29
+ metaKey?: boolean;
30
+ preventDefault?: () => void;
31
+ }) => void;
32
+ }
33
+ export declare function useGridFocus(params: UseGridFocusParams): UseGridFocusResult;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * useInlineEdit (Vue) — headless inline-edit lifecycle for OGrid cells.
3
+ *
4
+ * Mirrors the React useInlineEdit API with Vue-native reactivity (refs,
5
+ * computeds). Pairs with `useHeadlessGrid` for shadcn-style table chrome.
6
+ */
7
+ import { type Ref } from 'vue';
8
+ import type { IColumnDef as ICoreColumnDef } from '@alaarab/ogrid-core';
9
+ export type RowId = string | number;
10
+ export interface InlineEditEvent<T> {
11
+ item: T;
12
+ columnId: string;
13
+ oldValue: unknown;
14
+ newValue: unknown;
15
+ }
16
+ export interface UseInlineEditParams<T> {
17
+ columns: ICoreColumnDef<T>[];
18
+ getRowId: (row: T) => RowId;
19
+ onCellEdit: (event: InlineEditEvent<T>) => void;
20
+ isCellEditable?: (row: T, columnId: string) => boolean;
21
+ }
22
+ export interface InlineEditorProps {
23
+ value: unknown;
24
+ onChange: (value: unknown) => void;
25
+ onCommit: () => void;
26
+ onCancel: () => void;
27
+ onKeyDown: (e: {
28
+ key: string;
29
+ preventDefault?: () => void;
30
+ stopPropagation?: () => void;
31
+ }) => void;
32
+ onBlur: () => void;
33
+ }
34
+ export interface UseInlineEditResult<T> {
35
+ editingCell: Ref<{
36
+ rowId: RowId;
37
+ columnId: string;
38
+ } | null>;
39
+ pendingValue: Ref<unknown>;
40
+ setPendingValue: (value: unknown) => void;
41
+ startEdit: (row: T, columnId: string) => void;
42
+ commitEdit: () => void;
43
+ cancelEdit: () => void;
44
+ isEditing: (row: T, columnId: string) => boolean;
45
+ canEdit: (row: T, columnId: string) => boolean;
46
+ getEditorProps: (row: T, columnId: string) => InlineEditorProps;
47
+ }
48
+ export declare function useInlineEdit<T>(params: UseInlineEditParams<T>): UseInlineEditResult<T>;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * useRangeSelection (Vue) — headless cell-range selection for OGrid.
3
+ *
4
+ * Mirrors the React API with Vue refs/computeds. Anchor + focus model.
5
+ * Foundation for useFillHandle and useCellClipboard.
6
+ */
7
+ import { type ComputedRef, type Ref } from 'vue';
8
+ import type { ISelectionRange } from '@alaarab/ogrid-core';
9
+ export interface CellCoord {
10
+ row: number;
11
+ col: number;
12
+ }
13
+ export interface UseRangeSelectionParams {
14
+ rowCount: number;
15
+ colCount: number;
16
+ }
17
+ export interface UseRangeSelectionResult {
18
+ range: ComputedRef<ISelectionRange | null>;
19
+ anchor: Ref<CellCoord | null>;
20
+ focus: Ref<CellCoord | null>;
21
+ startRange: (row: number, col: number) => void;
22
+ extendRange: (row: number, col: number) => void;
23
+ setRange: (range: ISelectionRange | null) => void;
24
+ clearRange: () => void;
25
+ selectAll: () => void;
26
+ isInRange: (row: number, col: number) => boolean;
27
+ getRangeRows: () => number[];
28
+ getRangeCells: () => CellCoord[];
29
+ }
30
+ export declare function useRangeSelection(params: UseRangeSelectionParams): UseRangeSelectionResult;
@@ -10,8 +10,8 @@ export { StatusBar, type StatusBarProps } from './components/StatusBar';
10
10
  export { FormulaBar, type FormulaBarProps } from './components/FormulaBar';
11
11
  export { SheetTabs, type SheetTabsProps } from './components/SheetTabs';
12
12
  export { FormulaRefOverlay } from './components/FormulaRefOverlay';
13
- export { useOGrid, useHeadlessGrid, useDataGridState, useActiveCell, useCellEditing, useCellSelection, useClipboard, useRowSelection, useKeyboardNavigation, useFillHandle, useUndoRedo, useContextMenu, useColumnResize, useColumnReorder, useVirtualScroll, useFilterOptions, useDebounce, useDebouncedCallback, useTableLayout, useColumnHeaderFilterState, useTextFilterState, useMultiSelectFilterState, usePeopleFilterState, useDateFilterState, useColumnChooserState, useInlineCellEditorState, useRichSelectState, useSideBarState, useColumnPinning, useColumnHeaderMenuState, useDataGridTableSetup, useFormulaBar, } from './composables';
14
- export type { UseOGridResult, UseOGridPagination, UseOGridColumnChooser, UseOGridLayout, UseOGridFilters, ColumnChooserPlacement, UseHeadlessGridParams, UseHeadlessGridResult, HeadlessGridRowId, HeadlessGridSortState, UseDataGridStateParams, UseDataGridStateResult, DataGridLayoutState, DataGridRowSelectionState, DataGridEditingState, DataGridCellInteractionState, DataGridContextMenuState, DataGridViewModelState, DataGridPinningState, UseActiveCellResult, EditingCell, UseCellEditingParams, UseCellEditingResult, UseCellSelectionParams, UseCellSelectionResult, UseClipboardParams, UseClipboardResult, UseRowSelectionParams, UseRowSelectionResult, UseKeyboardNavigationParams, UseKeyboardNavigationResult, UseFillHandleParams, UseFillHandleResult, UseUndoRedoParams, UseUndoRedoResult, ContextMenuPosition, UseContextMenuResult, UseColumnResizeParams, UseColumnResizeResult, UseColumnReorderParams, UseColumnReorderResult, UseVirtualScrollParams, UseVirtualScrollResult, UseFilterOptionsResult, UseTableLayoutParams, UseTableLayoutResult, UseColumnHeaderFilterStateParams, UseColumnHeaderFilterStateResult, UseTextFilterStateParams, UseTextFilterStateResult, UseMultiSelectFilterStateParams, UseMultiSelectFilterStateResult, UsePeopleFilterStateParams, UsePeopleFilterStateResult, UseDateFilterStateParams, UseDateFilterStateResult, UseColumnChooserStateParams, UseColumnChooserStateResult, InlineCellEditorType, UseInlineCellEditorStateParams, UseInlineCellEditorStateResult, UseRichSelectStateParams, UseRichSelectStateResult, UseSideBarStateParams, UseSideBarStateResult, DebouncedFn, UseColumnPinningParams, UseColumnPinningResult, UseColumnHeaderMenuStateParams, UseColumnHeaderMenuStateResult, UseDataGridTableSetupParams, UseDataGridTableSetupResult, MaybeShallowRef, UseFormulaBarParams, UseFormulaBarResult, } from './composables';
13
+ export { useOGrid, useHeadlessGrid, useDataGridState, useActiveCell, useCellEditing, useCellSelection, useClipboard, useRowSelection, useKeyboardNavigation, useFillHandle, useUndoRedo, useInlineEdit, useRangeSelection, useCellClipboard, useGridFocus, useContextMenu, useColumnResize, useColumnReorder, useVirtualScroll, useFilterOptions, useDebounce, useDebouncedCallback, useTableLayout, useColumnHeaderFilterState, useTextFilterState, useMultiSelectFilterState, usePeopleFilterState, useDateFilterState, useColumnChooserState, useInlineCellEditorState, useRichSelectState, useSideBarState, useColumnPinning, useColumnHeaderMenuState, useDataGridTableSetup, useFormulaBar, } from './composables';
14
+ export type { UseOGridResult, UseOGridPagination, UseOGridColumnChooser, UseOGridLayout, UseOGridFilters, ColumnChooserPlacement, UseHeadlessGridParams, UseHeadlessGridResult, HeadlessGridRowId, HeadlessGridSortState, UseDataGridStateParams, UseDataGridStateResult, DataGridLayoutState, DataGridRowSelectionState, DataGridEditingState, DataGridCellInteractionState, DataGridContextMenuState, DataGridViewModelState, DataGridPinningState, UseActiveCellResult, EditingCell, UseCellEditingParams, UseCellEditingResult, UseCellSelectionParams, UseCellSelectionResult, UseClipboardParams, UseClipboardResult, UseRowSelectionParams, UseRowSelectionResult, UseKeyboardNavigationParams, UseKeyboardNavigationResult, UseFillHandleParams, UseFillHandleResult, UseInlineEditParams, UseInlineEditResult, InlineEditEvent, InlineEditorProps, UseRangeSelectionParams, UseRangeSelectionResult, CellCoord, UseCellClipboardParams, UseCellClipboardResult, UseGridFocusParams, UseGridFocusResult, UseUndoRedoParams, UseUndoRedoResult, ContextMenuPosition, UseContextMenuResult, UseColumnResizeParams, UseColumnResizeResult, UseColumnReorderParams, UseColumnReorderResult, UseVirtualScrollParams, UseVirtualScrollResult, UseFilterOptionsResult, UseTableLayoutParams, UseTableLayoutResult, UseColumnHeaderFilterStateParams, UseColumnHeaderFilterStateResult, UseTextFilterStateParams, UseTextFilterStateResult, UseMultiSelectFilterStateParams, UseMultiSelectFilterStateResult, UsePeopleFilterStateParams, UsePeopleFilterStateResult, UseDateFilterStateParams, UseDateFilterStateResult, UseColumnChooserStateParams, UseColumnChooserStateResult, InlineCellEditorType, UseInlineCellEditorStateParams, UseInlineCellEditorStateResult, UseRichSelectStateParams, UseRichSelectStateResult, UseSideBarStateParams, UseSideBarStateResult, DebouncedFn, UseColumnPinningParams, UseColumnPinningResult, UseColumnHeaderMenuStateParams, UseColumnHeaderMenuStateResult, UseDataGridTableSetupParams, UseDataGridTableSetupResult, MaybeShallowRef, UseFormulaBarParams, UseFormulaBarResult, } from './composables';
15
15
  export { getHeaderFilterConfig, getCellRenderDescriptor, resolveCellDisplayContent, resolveCellStyle, buildInlineEditorProps, buildPopoverEditorProps, getCellInteractionProps, } from './utils';
16
16
  export type { HeaderFilterConfigInput, HeaderFilterConfig, CellRenderDescriptorInput, CellRenderDescriptor, CellRenderMode, CellInteractionHandlers, CellInteractionProps, } from './utils';
17
17
  export { createDataGridTable, type IDataGridTableUIBindings } from './components/createDataGridTable';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alaarab/ogrid-vue",
3
- "version": "2.8.1",
3
+ "version": "2.9.0",
4
4
  "description": "OGrid Vue – Vue 3 composables, headless components, and utilities for OGrid data grids.",
5
5
  "main": "dist/esm/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -36,7 +36,7 @@
36
36
  "node": ">=18"
37
37
  },
38
38
  "dependencies": {
39
- "@alaarab/ogrid-core": "2.8.1"
39
+ "@alaarab/ogrid-core": "2.9.0"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "vue": "^3.3.0"