@alaarab/ogrid-vue 2.5.5 → 2.5.7
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 +1 -1
- package/dist/esm/styles/ogrid-layout.css +18 -2
- package/dist/types/components/FormulaBar.d.ts +1 -1
- package/dist/types/components/FormulaRefOverlay.d.ts +1 -1
- package/dist/types/components/MarchingAntsOverlay.d.ts +17 -17
- package/dist/types/components/SheetTabs.d.ts +1 -1
- package/dist/types/components/StatusBar.d.ts +1 -1
- package/dist/types/components/createDataGridTable.d.ts +1 -1
- package/dist/types/components/createInlineCellEditor.d.ts +0 -5
- package/dist/types/components/createOGrid.d.ts +1 -1
- package/dist/types/composables/useFormulaBar.d.ts +1 -1
- package/dist/types/composables/useFormulaEngine.d.ts +2 -2
- package/dist/types/composables/useInlineCellEditorState.d.ts +5 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/types/dataGridTypes.d.ts +2 -2
- package/package.json +2 -2
package/dist/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {injectGlobalStyles,Z_INDEX,getStatusBarParts,measureRange,flattenColumns,getMultiSelectFilterFields,deriveFilterOptionsFromData,processClientSideData,processClientSideDataAsync,validateColumns,validateRowIds,computeRowSelectionState,parseTsvClipboard,applyPastedValues,applyCutClear,normalizeSelectionRange,applyCellDeletion,computeTabNavigation,computeArrowNavigation,buildCellIndex,applyFillValues,UndoRedoStack,CHECKBOX_COLUMN_WIDTH,DEFAULT_MIN_COLUMN_WIDTH,CELL_PADDING,measureColumnContentWidth,resolveResponsiveConfig,applyResponsiveHiding,computeAggregations,getDataGridStatusBarConfig,getPinStateForColumn,validateVirtualScrollConfig,computeVisibleRange,computeTotalHeight,computeVisibleColumnRange,getScrollTopForRow,partitionColumnsForVirtualization,formatCellReference,buildHeaderRows,indexToColumnLetter,ROW_NUMBER_COLUMN_ID,ROW_NUMBER_COLUMN_WIDTH,getHeaderFilterConfig,getCellRenderDescriptor,buildInlineEditorProps,buildPopoverEditorProps,resolveCellDisplayContent,resolveCellStyle,rangesEqual,formatSelectionAsTsv,calculateDropTarget,reorderColumnArray,parseValue,getCellValue,computeNextSortState,mergeFilter,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,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 o=ref(null),l=ref(null),t=0,u,m=computed(()=>e.copyRange??e.cutRange),f=()=>{let a=toValue(e.containerRef);if(!a){o.value=null,l.value=null;return}o.value=e.selectionRange?measureRange(a,e.selectionRange,e.colOffset):null,l.value=m.value?measureRange(a,m.value,e.colOffset):null;};onMounted(()=>{injectGlobalStyles("ogrid-marching-ants-keyframes","@keyframes ogrid-marching-ants{to{stroke-dashoffset:-8}}");}),watch([()=>e.selectionRange,m,()=>toValue(e.containerRef),()=>e.items,()=>e.visibleColumns,()=>e.columnSizingOverrides,()=>e.columnOrder],()=>{if(!e.selectionRange&&!m.value){o.value=null,l.value=null;return}t=requestAnimationFrame(f);let a=toValue(e.containerRef);a&&(u?.disconnect(),u=new ResizeObserver(f),u.observe(a));},{immediate:true}),onUnmounted(()=>{cancelAnimationFrame(t),u?.disconnect();});let s=computed(()=>{let a=e.selectionRange,g=m.value;return a!=null&&g!=null&&a.startRow===g.startRow&&a.startCol===g.startCol&&a.endRow===g.endRow&&a.endCol===g.endCol});return ()=>!o.value&&!l.value?null:h("div",{style:{position:"relative"}},[o.value&&!s.value&&!(e.selectionRange&&e.selectionRange.startRow===e.selectionRange.endRow&&e.selectionRange.startCol===e.selectionRange.endCol)?h("svg",{style:{position:"absolute",top:`${o.value.top}px`,left:`${o.value.left}px`,width:`${o.value.width}px`,height:`${o.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,o.value.width-2),height:Math.max(0,o.value.height-2),fill:"none",stroke:"var(--ogrid-selection, #217346)","stroke-width":2})]):null,l.value?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.CLIPBOARD_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, #217346)","stroke-width":2,"stroke-dasharray":"4 4",style:{animation:"ogrid-marching-ants 0.5s linear infinite"}})]):null])}});var Rn=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 o=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"}},o.map((l,t)=>h("span",{key:l.key,style:{display:"inline-flex",alignItems:"center",gap:"4px",...t<o.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))"}},l.label),h("span",{style:{fontWeight:"600"}},l.value.toLocaleString())])))}}});var bn=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:o}){let l=ref(null);return watch(()=>e.isEditing,t=>{t&&l.value&&l.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:l,type:"text",style:FORMULA_BAR_STYLES.input,value:e.formulaText,readonly:!e.isEditing,onInput:t=>o("inputChange",t.target.value),onKeydown:t=>handleFormulaBarKeyDown(t.key,()=>t.preventDefault(),()=>o("commit"),()=>o("cancel")),onClick:()=>{e.isEditing||o("startEditing");},onDblclick:()=>{e.isEditing||o("startEditing");},"aria-label":"Formula input",spellcheck:false,autocomplete:"off"})])}});var Qo={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"},el={background:"none",border:"none",cursor:"pointer",padding:"4px 10px",fontSize:"16px",lineHeight:"22px",color:"var(--ogrid-fg-secondary, #666)",flexShrink:0},Zn={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"},tl={...Zn,fontWeight:600,borderBottomColor:"var(--ogrid-primary, #217346)",background:"var(--ogrid-bg, #fff)"},yn=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:o}){return ()=>h("div",{style:Qo,role:"tablist","aria-label":"Sheet tabs"},[e.showAddButton?h("button",{type:"button",style:el,onClick:()=>o("sheetAdd"),title:"Add sheet","aria-label":"Add sheet"},"+"):null,...e.sheets.map(l=>{let t=l.id===e.activeSheet,u=t?tl:Zn,m=t&&l.color?{...u,borderBottomColor:l.color}:u;return h("button",{key:l.id,type:"button",role:"tab","aria-selected":t,style:m,onClick:()=>o("sheetChange",l.id)},l.name)})])}});function rl(e,o,l){let t=o.col+l,u=(o.endCol??o.col)+l,m=o.endRow??o.row,f=e.querySelector(`[data-row-index="${o.row}"][data-col-index="${t}"]`),s=e.querySelector(`[data-row-index="${m}"][data-col-index="${u}"]`);if(!f||!s)return null;let a=e.getBoundingClientRect(),g=f.getBoundingClientRect(),v=s.getBoundingClientRect();return {top:Math.round(g.top-a.top),left:Math.round(g.left-a.left),width:Math.round(v.right-g.left),height:Math.round(v.bottom-g.top),color:FORMULA_REF_COLORS[o.colorIndex%FORMULA_REF_COLORS.length]}}var wn=defineComponent({name:"FormulaRefOverlay",props:{containerEl:{type:Object,default:null},references:{type:Array,required:true},colOffset:{type:Number,required:true}},setup(e){let o=ref([]),l=0;function t(){let u=e.containerEl,m=e.references;if(!u||m.length===0){o.value=[];return}let f=[];for(let s of m){let a=rl(u,s,e.colOffset);a&&f.push(a);}o.value=f;}return watch(()=>[e.references,e.containerEl,e.colOffset],()=>{if(cancelAnimationFrame(l),!e.containerEl||e.references.length===0){o.value=[];return}l=requestAnimationFrame(t);},{immediate:true}),()=>o.value.length===0?null:o.value.map((u,m)=>h("svg",{key:m,style:{position:"absolute",top:`${u.top}px`,left:`${u.left}px`,width:`${u.width}px`,height:`${u.height}px`,pointerEvents:"none",zIndex:3,overflow:"visible"},"aria-hidden":"true"},[h("rect",{x:"1",y:"1",width:Math.max(0,u.width-2),height:Math.max(0,u.height-2),fill:"none",stroke:u.color,"stroke-width":"2",style:"shape-rendering: crispEdges"})]))}});function Tt(e,o){let l=ref({}),t=ref({}),u=computed(()=>[...o.value].sort().join(",")),m=async()=>{let f=e.value,s=o.value,a="fetchFilterOptions"in f&&typeof f.fetchFilterOptions=="function"?f.fetchFilterOptions.bind(f):void 0;if(!a){l.value={},t.value={};return}let g={};s.forEach(i=>{g[i]=true;}),t.value=g;let v={};await Promise.all(s.map(async i=>{try{v[i]=await a(i);}catch{v[i]=[];}})),l.value=v,t.value={};};return watch([e,u],()=>{m().catch(()=>{});},{immediate:true}),{filterOptions:l,loadingOptions:t}}function ze(e){let o=unref(e);return customRef((l,t)=>({get(){return isRef(e)&&(o=e.value),o},set(u){o=u,t();}}))}function to(e){let{formulas:o,items:l,flatColumns:t,initialFormulas:u,onFormulaRecalc:m,formulaFunctions:f,namedRanges:s,sheets:a}=e,g=ze(l),v=ze(t),i=ze(m),p=shallowRef(null),C=false,r=computed(()=>o?.value??false);function c(){return createGridDataAccessor(g.value,v.value)}watch(r,b=>{if(b&&!p.value){if(p.value=new FormulaEngine({customFunctions:f,namedRanges:s}),a)for(let[x,U]of Object.entries(a))p.value.registerSheet(x,U);if(u&&!C){C=true;let x=c(),U=p.value.loadFormulas(u,x);U.updatedCells.length>0&&i.value?.(U);}}else !b&&p.value&&(p.value=null);},{immediate:true});function d(b,x){return p.value?.getValue(b,x)}function R(b,x){return p.value?.hasFormula(b,x)??false}function w(b,x){return p.value?.getFormula(b,x)}function S(b,x,U){if(!p.value)return;let y=c(),j=p.value.setFormula(b,x,U,y);j.updatedCells.length>0&&i.value?.(j);}function D(b,x){if(!p.value)return;let U=c(),y=p.value.onCellChanged(b,x,U);y.updatedCells.length>0&&i.value?.(y);}function $(b,x){return p.value?.getPrecedents(b,x)??[]}function L(b,x){return p.value?.getDependents(b,x)??[]}function P(b,x){return p.value?.getAuditTrail(b,x)??null}return {enabled:r,getFormulaValue:d,hasFormula:R,getFormula:w,setFormula:S,onCellChanged:D,getPrecedents:$,getDependents:L,getAuditTrail:P}}function Et(e){let{activeCol:o,activeRow:l,activeCellRef:t,getFormula:u,getRawValue:m,setFormula:f,onCellValueChanged:s}=e,a=ref(false),g=ref(""),v=ref(false),i=computed(()=>deriveFormulaBarText(o.value,l.value,u,m));watch([o,l],()=>{a.value=false,v.value=false;});let p=()=>{g.value=i.value,a.value=true,v.value=true;},C=w=>{g.value=w;},r=()=>{let w=o.value,S=l.value;w==null||S==null||!f||(processFormulaBarCommit(g.value,w,S,f,s),a.value=false,v.value=false);},c=()=>{a.value=false,v.value=false,g.value="";},d=computed(()=>a.value?g.value:i.value),R=computed(()=>extractFormulaReferences(d.value));return {cellRef:t,formulaText:d,isEditing:a,onInputChange:C,onCommit:r,onCancel:c,startEditing:p,referencedCells:R,isFormulaBarEditing:v}}var no=["columns","filters"];function bt(e){let{config:o}=e,l=o!=null&&o!==false,t=(()=>{if(!l||o===true)return {panels:no,position:"right",defaultPanel:null};let g=o;return {panels:g.panels??no,position:g.position??"right",defaultPanel:g.defaultPanel??null}})(),u=ref(t.defaultPanel),m=g=>{u.value=g;},f=g=>{u.value=u.value===g?null:g;},s=()=>{u.value=null;},a=computed(()=>u.value!==null);return {isEnabled:l,activePanel:u,setActivePanel:m,panels:t.panels,position:t.position,isOpen:a,toggle:f,close:s}}var Al=25,kl={};function Ft(e){let o=computed(()=>{let n=e.value;return {columns:n.columns,columnOrder:n.columnOrder,onColumnOrderChange:n.onColumnOrderChange,onColumnResized:n.onColumnResized,onColumnPinned:n.onColumnPinned,columnChooser:n.columnChooser}}),l=computed(()=>{let n=e.value,F="data"in n?n.data:void 0,re="dataSource"in n?n.dataSource:void 0;return F&&re&&console.warn("[OGrid] Both data and dataSource provided. dataSource takes precedence."),{getRowId:n.getRowId,data:F,dataSource:re}}),t=computed(()=>{let n=e.value;return {page:n.page,pageSize:n.pageSize,sort:n.sort,filters:n.filters,visibleColumns:n.visibleColumns,isLoading:n.isLoading}}),u=computed(()=>{let n=e.value;return {onPageChange:n.onPageChange,onPageSizeChange:n.onPageSizeChange,onSortChange:n.onSortChange,onFiltersChange:n.onFiltersChange,onVisibleColumnsChange:n.onVisibleColumnsChange,onFirstDataRendered:n.onFirstDataRendered,onError:n.onError}}),m=computed(()=>{let n=e.value;return {defaultPageSize:n.defaultPageSize??Al,defaultSortBy:n.defaultSortBy,defaultSortDirection:n.defaultSortDirection??"asc",entityLabelPlural:n.entityLabelPlural??"items"}}),f=computed(()=>o.value.columnChooser===false?"none":o.value.columnChooser==="sidebar"?"sidebar":"toolbar"),s=computed(()=>flattenColumns(o.value.columns)),a=computed(()=>l.value.dataSource!=null),g=computed(()=>!a.value),v=ref([]),i=ref(false),p=computed(()=>l.value.data??v.value),C=computed(()=>t.value.isLoading??i.value),r=computed(()=>m.value.defaultSortBy??s.value[0]?.columnId??""),c=ref(1),d=ref(m.value.defaultPageSize),R=ref({field:r.value,direction:m.value.defaultSortDirection}),w=ref({}),S=ref((()=>{let n=s.value.filter(F=>F.defaultVisible!==false).map(F=>F.columnId);return new Set(n.length>0?n:s.value.map(F=>F.columnId))})()),D=ref({}),$={};for(let n of flattenColumns(e.value.columns))n.pinned&&($[n.columnId]=n.pinned);let L=ref($),P=computed(()=>t.value.page??c.value),b=computed(()=>t.value.pageSize??d.value),x=computed(()=>t.value.sort??R.value),U=computed(()=>t.value.filters??w.value),y=computed(()=>t.value.visibleColumns??S.value),j=n=>{t.value.page===void 0&&(c.value=n),u.value.onPageChange?.(n);},Q=n=>{t.value.pageSize===void 0&&(d.value=n),u.value.onPageSizeChange?.(n),j(1);},Z=n=>{t.value.sort===void 0&&(R.value=n),u.value.onSortChange?.(n),j(1);},h$1=n=>{t.value.filters===void 0&&(w.value=n),u.value.onFiltersChange?.(n),j(1);},I=n=>{t.value.visibleColumns===void 0&&(S.value=n),u.value.onVisibleColumnsChange?.(n);},E=(n,F)=>{Z(computeNextSortState(x.value,n,F));},H=(n,F)=>{h$1(mergeFilter(U.value,n,F));},T=(n,F)=>{let re=new Set(y.value);F?re.add(n):re.delete(n),I(re);},M=ref(new Set),A=computed(()=>e.value.selectedRows),O=computed(()=>A.value??M.value),V=n=>{A.value===void 0&&(M.value=new Set(n.selectedRowIds)),e.value.onSelectionChange?.(n);},z=computed(()=>getMultiSelectFilterFields(s.value)),oe=computed(()=>l.value.dataSource??{fetchFilterOptions:void 0}),{filterOptions:ne,loadingOptions:k}=Tt(oe,z),J=computed(()=>l.value.dataSource?.fetchFilterOptions!=null),ee=computed(()=>J.value?ne.value:deriveFilterOptionsFromData(p.value,s.value)),ce=computed(()=>!!e.value.workerSort),he=computed(()=>{if(!g.value||ce.value)return null;let n=processClientSideData(p.value,s.value,U.value,x.value.field,x.value.direction),F=n.length,re=(P.value-1)*b.value;return {items:n.slice(re,re+b.value),totalCount:F}}),Se=ref(null),ye=0;watch([g,ce,p,s,U,()=>x.value.field,()=>x.value.direction,P,b],()=>{if(!g.value||!ce.value)return;let n=p.value,F=s.value,re=U.value,Re=x.value.field,ot=x.value.direction,$e=P.value,qe=b.value,lt=++ye;processClientSideDataAsync(n,F,re,Re,ot).then(Ce=>{if(lt!==ye||Fe)return;let Xe=Ce.length,je=($e-1)*qe,gt=Ce.slice(je,je+qe);Se.value={items:gt,totalCount:Xe};}).catch(()=>{if(lt!==ye||Fe)return;let Ce=processClientSideData(n,F,re,Re,ot),Xe=Ce.length,je=($e-1)*qe,gt=Ce.slice(je,je+qe);Se.value={items:gt,totalCount:Xe};});},{immediate:true});let we=computed(()=>{let n=he.value;return n||Se.value}),Ze=ref([]),Oe=ref(0),De=ref(false),Be=0,Fe=false,Me=ref(0),_e=()=>{if(!a.value||!l.value.dataSource){a.value||(De.value=false);return}let n=++Be;De.value=true,l.value.dataSource.fetchPage({page:P.value,pageSize:b.value,sort:{field:x.value.field,direction:x.value.direction},filters:U.value}).then(F=>{n!==Be||Fe||(Ze.value=F.items,Oe.value=F.totalCount);}).catch(F=>{n!==Be||Fe||(u.value.onError?.(F),Ze.value=[],Oe.value=0);}).finally(()=>{n===Be&&!Fe&&(De.value=false);});};onMounted(()=>{validateColumns(s.value),_e();}),watch([()=>l.value.dataSource,P,b,()=>x.value.field,()=>x.value.direction,U,Me],()=>{_e();}),onUnmounted(()=>{Fe=true;});let me=computed(()=>g.value&&we.value?we.value.items:Ze.value),He=computed(()=>g.value&&we.value?we.value.totalCount:Oe.value),ie=computed(()=>!!e.value.formulas),Ve=ref(0),Je=n=>{Ve.value+=1,e.value.onFormulaRecalc?.(n);},se=to({formulas:ie,items:me,flatColumns:s,initialFormulas:e.value.initialFormulas,onFormulaRecalc:Je,formulaFunctions:e.value.formulaFunctions,namedRanges:e.value.namedRanges,sheets:e.value.sheets}),Qe=false,et=false;watch(me,n=>{!Qe&&n.length>0&&(Qe=true,u.value.onFirstDataRendered?.()),!et&&n.length>0&&(et=true,validateRowIds(n,l.value.getRowId));});let We=computed(()=>Object.values(U.value).some(n=>n!==void 0)),tt=computed(()=>s.value.map(n=>({columnId:n.columnId,name:n.name,required:n.required===true}))),at=computed(()=>{let n=e.value.statusBar;if(!n)return;if(typeof n=="object")return n;let F=g.value?l.value.data?.length??0:Oe.value,re=He.value;return {totalCount:F,filteredCount:We.value?re:void 0,selectedCount:O.value.size,suppressRowCount:true}}),it=(n,F)=>{D.value={...D.value,[n]:F},o.value.onColumnResized?.(n,F);},st=(n,F)=>{if(F===null){let{[n]:re,...Re}=L.value;L.value=Re;}else L.value={...L.value,[n]:F};o.value.onColumnPinned?.(n,F);},Ke=shallowRef(bt({config:e.value.sideBar}));watch(()=>e.value.sideBar,n=>{Ke.value=bt({config:n});});let Ge=computed(()=>s.value.filter(n=>n.filterable&&n.filterable.type).map(n=>({columnId:n.columnId,name:n.name,filterField:n.filterable?.filterField??n.columnId,filterType:n.filterable?.type}))),ut=computed(()=>{let n=Ke.value;if(!n.isEnabled)return null;n.activePanel.value;n.isOpen.value;return {get activePanel(){return n.activePanel.value},onPanelChange:n.setActivePanel,panels:n.panels,position:n.position,get isOpen(){return n.isOpen.value},toggle:n.toggle,close:n.close,columns:tt.value,visibleColumns:y.value,onVisibilityChange:T,onSetVisibleColumns:I,filterableColumns:Ge.value,filters:U.value,onFilterChange:H,filterOptions:ee.value}}),dt=()=>h$1({}),ct=computed(()=>a.value&&De.value||C.value),nt=ref(null),Te=ref(null),mt=n=>{if(nt.value=n,n){let F=n.match(/^([A-Z]+)(\d+)$/);F?Te.value={col:columnLetterToIndex(F[1]),row:parseInt(F[2],10)-1}:Te.value=null;}else Te.value=null;},ft=computed(()=>Te.value?.col??null),pt=computed(()=>Te.value?.row??null),vt=(n,F)=>{let re=me.value,Re=s.value;if(!(F<0||F>=re.length||n<0||n>=Re.length))return getCellValue(re[F],Re[n])},G=Et({activeCol:ft,activeRow:pt,activeCellRef:nt,getFormula:se.enabled.value?se.getFormula:void 0,getRawValue:vt,setFormula:se.enabled.value?se.setFormula:void 0}),Y=computed(()=>{let n=e.value,F=l.value.dataSource;return {items:me.value,columns:o.value.columns,getRowId:l.value.getRowId,sortBy:x.value.field,sortDirection:x.value.direction,onColumnSort:E,visibleColumns:y.value,columnOrder:o.value.columnOrder,onColumnOrderChange:o.value.onColumnOrderChange,onColumnResized:it,onColumnPinned:st,pinnedColumns:L.value,initialColumnWidths:D.value,editable:n.editable,cellSelection:n.cellSelection,onCellValueChanged:n.onCellValueChanged,onUndo:n.onUndo,onRedo:n.onRedo,canUndo:n.canUndo,canRedo:n.canRedo,rowSelection:n.rowSelection??"none",selectedRows:O.value,onSelectionChange:V,showRowNumbers:n.showRowNumbers||n.cellReferences||n.formulas,showColumnLetters:!!(n.cellReferences||n.formulas),showNameBox:!!(n.cellReferences&&!n.formulas),onActiveCellChange:n.cellReferences||n.formulas?mt:void 0,currentPage:P.value,pageSize:b.value,statusBar:at.value,isLoading:ct.value,filters:U.value,onFilterChange:H,filterOptions:ee.value,loadingFilterOptions:F?.fetchFilterOptions?k.value:kl,peopleSearch:F?.searchPeople,getUserByEmail:F?.getUserByEmail,layoutMode:n.layoutMode,suppressHorizontalScroll:n.suppressHorizontalScroll,stickyHeader:n.stickyHeader??true,columnReorder:n.columnReorder,responsiveColumns:n.responsiveColumns,virtualScroll:n.virtualScroll,rowHeight:n.rowHeight,density:n.density??"normal","aria-label":n["aria-label"],"aria-labelledby":n["aria-labelledby"],emptyState:{hasActiveFilters:We.value,onClearAll:dt,message:n.emptyState?.message,render:n.emptyState?.render},formulas:n.formulas,formulaVersion:Ve.value,...se.enabled.value?{getFormulaValue:se.getFormulaValue,hasFormula:se.hasFormula,getFormula:se.getFormula,setFormula:se.setFormula,onFormulaCellChanged:se.onCellChanged,getPrecedents:se.getPrecedents,getDependents:se.getDependents,getAuditTrail:se.getAuditTrail}:{},formulaReferences:G.referencedCells.value.length>0?G.referencedCells.value:void 0}}),le=computed(()=>({page:P.value,pageSize:b.value,displayTotalCount:He.value,setPage:j,setPageSize:Q,pageSizeOptions:e.value.pageSizeOptions,entityLabelPlural:m.value.entityLabelPlural})),de=computed(()=>({columns:tt.value,visibleColumns:y.value,onVisibilityChange:T,placement:f.value})),fe=computed(()=>{let n=e.value,F=!!n.formulas,re=!!n.cellReferences&&!F,Re=n.toolbar;re&&(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"},nt.value??"\u2014"),Re]);let ot=F?h(bn,{cellRef:G.cellRef.value,formulaText:G.formulaText.value,isEditing:G.isEditing.value,onInputChange:G.onInputChange,onCommit:G.onCommit,onCancel:G.onCancel,onStartEditing:G.startEditing}):void 0,$e=n.sheetDefs&&n.sheetDefs.length>0&&n.activeSheet&&n.onSheetChange?h(yn,{sheets:n.sheetDefs,activeSheet:n.activeSheet,showAddButton:!!n.onSheetAdd,onSheetChange:n.onSheetChange,onSheetAdd:n.onSheetAdd??(()=>{})}):void 0;return {toolbar:Re,toolbarBelow:n.toolbarBelow,className:n.className,emptyState:n.emptyState,sideBarProps:ut.value,fullScreen:n.fullScreen,formulaBar:ot,sheetTabs:$e}}),xe=computed(()=>({hasActiveFilters:We.value,setFilters:h$1})),ve=computed(()=>({setRowData:n=>{a.value||(v.value=n);},setLoading:n=>{i.value=n;},getColumnState:()=>({visibleColumns:Array.from(y.value),sort:x.value,columnOrder:o.value.columnOrder??void 0,columnWidths:Object.keys(D.value).length>0?D.value:void 0,filters:Object.keys(U.value).length>0?U.value:void 0,pinnedColumns:Object.keys(L.value).length>0?L.value:void 0}),applyColumnState:n=>{n.visibleColumns&&I(new Set(n.visibleColumns)),n.sort&&Z(n.sort),n.columnOrder&&o.value.onColumnOrderChange&&o.value.onColumnOrderChange(n.columnOrder),n.columnWidths&&(D.value=n.columnWidths),n.filters&&h$1(n.filters),n.pinnedColumns&&(L.value=n.pinnedColumns);},setFilterModel:h$1,getSelectedRows:()=>Array.from(O.value),setSelectedRows:n=>{A.value===void 0&&(M.value=new Set(n));},selectAll:()=>{let n=new Set(me.value.map(F=>l.value.getRowId(F)));A.value===void 0&&(M.value=n),e.value.onSelectionChange?.({selectedRowIds:Array.from(n),selectedItems:me.value});},deselectAll:()=>{A.value===void 0&&(M.value=new Set),e.value.onSelectionChange?.({selectedRowIds:[],selectedItems:[]});},clearFilters:()=>h$1({}),clearSort:()=>Z({field:r.value,direction:m.value.defaultSortDirection}),resetGridState:n=>{h$1({}),Z({field:r.value,direction:m.value.defaultSortDirection}),n?.keepSelection||(A.value===void 0&&(M.value=new Set),e.value.onSelectionChange?.({selectedRowIds:[],selectedItems:[]}));},getDisplayedRows:()=>me.value,refreshData:()=>{a.value&&Me.value++;},scrollToRow:()=>{},getColumnOrder:()=>o.value.columnOrder??s.value.map(n=>n.columnId),setColumnOrder:n=>{o.value.onColumnOrderChange?.(n);}}));return {dataGridProps:Y,pagination:le,columnChooser:de,layout:fe,filters:xe,api:ve}}function Ut(e){let{items:o,getRowId:l,rowSelection:t,controlledSelectedRows:u,onSelectionChange:m}=e,f=shallowRef(new Set),s=-1,a=computed(()=>{let r=u.value;return r!=null?r instanceof Set?r:new Set(r):f.value}),g=r=>{u.value!==void 0?isReadonly(u)||(u.value=r):f.value=r,m?.({selectedRowIds:Array.from(r),selectedItems:o.value.filter(c=>r.has(l(c)))});},v=(r,c,d,R)=>{if(t.value==="single"){g(c?new Set([r]):new Set),s=d;return}let w=o.value,S;R&&s>=0&&s!==d?S=applyRangeRowSelection(s,d,c,w,l,a.value):(S=new Set(a.value),c?S.add(r):S.delete(r)),s=d,g(S);},i=r=>{g(r?new Set(o.value.map(c=>l(c))):new Set);},p=computed(()=>computeRowSelectionState(a.value,o.value,l).allSelected),C=computed(()=>computeRowSelectionState(a.value,o.value,l).someSelected);return {selectedRowIds:a,updateSelection:g,handleRowCheckboxChange:v,handleSelectAll:i,allSelected:p,someSelected:C}}function Ot(e){let o=shallowRef(null),l=ref(void 0);return {editingCell:o,setEditingCell:m=>{if(m&&e?.scrollToRow&&e?.getRowIndex){let f=e.getRowIndex(m.rowId);f>=0&&e.scrollToRow(f,"center");}o.value=m;},pendingEditorValue:l,setPendingEditorValue:m=>{l.value=m;}}}function Mt(e,o){let l=shallowRef(null),t=0,u=m=>{let f=l.value;f!==m&&(f&&m&&f.rowIndex===m.rowIndex&&f.columnIndex===m.columnIndex||(l.value=m));};return watch([l,()=>o?.value],()=>{if(t&&(cancelAnimationFrame(t),t=0),l.value==null||!e?.value||o?.value!=null)return;let{rowIndex:m,columnIndex:f}=l.value;t=requestAnimationFrame(()=>{t=0;let s=e.value;if(!s)return;let a=l.value;if(!a||a.rowIndex!==m||a.columnIndex!==f)return;let g=`[data-row-index="${m}"][data-col-index="${f}"]`,v=s.querySelector(g);if(v){let i=s.querySelector("thead"),p=i?i.getBoundingClientRect().height:0,C=s.getBoundingClientRect(),r=v.getBoundingClientRect(),c=C.top+p;r.top<c?s.scrollTop-=c-r.top:r.bottom>C.bottom&&(s.scrollTop+=r.bottom-C.bottom),r.left<C.left?s.scrollLeft-=C.left-r.left:r.right>C.right&&(s.scrollLeft+=r.right-C.right),document.activeElement!==v&&typeof v.focus=="function"&&v.focus({preventScroll:true});}});},{flush:"post"}),onUnmounted(()=>{t&&(cancelAnimationFrame(t),t=0);}),{activeCell:l,setActiveCell:u}}var Fn="data-drag-range",St="data-drag-anchor",ge=40,jl=16;function At(e){let o=ze(e),{wrapperRef:l,setActiveCell:t}=e,u=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,m=shallowRef(null),f=ref(false),s=ref(false),a=ref(false),g=false,v=null,i=0,p=null,C=null,r=null,c=h=>{rangesEqual(m.value,h)||(m.value=h);},d=(h,I,E)=>{if(h.button!==0)return;let H=u();if(E<H)return;h.preventDefault();let T=E-H,M=m.value;if(h.shiftKey&&M!=null)c(normalizeSelectionRange({startRow:M.startRow,startCol:M.startCol,endRow:I,endCol:T})),t({rowIndex:I,columnIndex:E});else {v={row:I,col:T},g=false;let A={startRow:I,startCol:T,endRow:I,endCol:T};c(A),p=A,t({rowIndex:I,columnIndex:E}),s.value=true,setTimeout(()=>L(A),0);}},R=()=>{let{rowCount:h,visibleColCount:I}=o.value;h.value===0||I.value===0||(c({startRow:0,startCol:0,endRow:h.value-1,endCol:I.value-1}),t({rowIndex:0,columnIndex:u()}));},w=new Set,S=null,D=(h,I,E,H,T,M,A,O)=>{h.hasAttribute(Fn)||h.setAttribute(Fn,""),O&&I===O.row&&E===O.col?h.hasAttribute(St)||h.setAttribute(St,""):h.hasAttribute(St)&&h.removeAttribute(St);let z=[];I===H&&z.push("inset 0 2px 0 0 var(--ogrid-selection, #217346)"),I===T&&z.push("inset 0 -2px 0 0 var(--ogrid-selection, #217346)"),E===M&&z.push("inset 2px 0 0 0 var(--ogrid-selection, #217346)"),E===A&&z.push("inset -2px 0 0 0 var(--ogrid-selection, #217346)"),h.style.boxShadow=z.length>0?z.join(", "):"",w.add(h);},$=h=>{h.removeAttribute(Fn),h.removeAttribute(St),h.style.boxShadow="";},L=h=>{if(!l.value)return;let E=Math.min(h.startRow,h.endRow),H=Math.max(h.startRow,h.endRow),T=Math.min(h.startCol,h.endCol),M=Math.max(h.startCol,h.endCol),A=v,O=u();for(let z of w){let oe=parseInt(z.getAttribute("data-row-index")??"",10),ne=parseInt(z.getAttribute("data-col-index")??"",10)-O;oe>=E&&oe<=H&&ne>=T&&ne<=M||($(z),w.delete(z));}S||(S=buildCellIndex(l.value));let V=false;for(let z=E;z<=H;z++)for(let oe=T;oe<=M;oe++){let ne=`${z},${oe+O}`,k=S?.get(ne);k&&!k.isConnected&&!V&&(V=true,S=buildCellIndex(l.value),k=S?.get(ne)),k&&k.isConnected&&D(k,z,oe,E,H,T,M,A);}},P=()=>{for(let h of w)$(h);w.clear(),S=null;},b=(h,I)=>{if(!v)return null;let H=document.elementFromPoint(h,I)?.closest?.("[data-row-index][data-col-index]");if(!H)return null;let T=parseInt(H.getAttribute("data-row-index")??"",10),M=parseInt(H.getAttribute("data-col-index")??"",10),A=u();if(Number.isNaN(T)||Number.isNaN(M)||M<A)return null;let O=M-A;return normalizeSelectionRange({startRow:v.row,startCol:v.col,endRow:T,endCol:O})},x=()=>{C&&(clearInterval(C),C=null);},U=()=>{let h=l.value;if(!h||!r||!s.value){x();return}let I=h.getBoundingClientRect(),E=0,H=0;if(r.cy<I.top+ge?H=-computeAutoScrollSpeed(I.top+ge-r.cy):r.cy>I.bottom-ge&&(H=computeAutoScrollSpeed(r.cy-(I.bottom-ge))),r.cx<I.left+ge?E=-computeAutoScrollSpeed(I.left+ge-r.cx):r.cx>I.right-ge&&(E=computeAutoScrollSpeed(r.cx-(I.right-ge))),E===0&&H===0){x();return}C||(C=setInterval(()=>{let T=l.value,M=r;if(!T||!M||!s.value){x();return}let A=T.getBoundingClientRect(),O=0,V=0;if(M.cy<A.top+ge?V=-computeAutoScrollSpeed(A.top+ge-M.cy):M.cy>A.bottom-ge&&(V=computeAutoScrollSpeed(M.cy-(A.bottom-ge))),M.cx<A.left+ge?O=-computeAutoScrollSpeed(A.left+ge-M.cx):M.cx>A.right-ge&&(O=computeAutoScrollSpeed(M.cx-(A.right-ge))),O===0&&V===0){x();return}T.scrollTop+=V,T.scrollLeft+=O;let z=b(M.cx,M.cy);z&&(p=z,L(z));},jl));},y=h=>{!s.value||!v||(g||(g=true,f.value=true,S=buildCellIndex(l.value)),r={cx:h.clientX,cy:h.clientY},U(),i&&cancelAnimationFrame(i),i=requestAnimationFrame(()=>{if(i=0,!r)return;let I=b(r.cx,r.cy);if(!I)return;let E=p;E&&E.startRow===I.startRow&&E.startCol===I.startCol&&E.endRow===I.endRow&&E.endCol===I.endCol||(p=I,L(I));}));},j=()=>{if(!s.value)return;x(),i&&(cancelAnimationFrame(i),i=0),s.value=false;let h=g;if(h){if(r){let E=b(r.cx,r.cy);E&&(p=E);}let I=p;if(I){c(I);let E=v;E&&t({rowIndex:E.row,columnIndex:E.col+u()});}}P(),p=null,r=null,v=null,h&&(f.value=false);},Q=h=>{a.value||y(h);},Z=()=>{a.value||j();};return onMounted(()=>{window.addEventListener("pointermove",Q,true),window.addEventListener("pointerup",Z,true);}),onUnmounted(()=>{a.value=true,window.removeEventListener("pointermove",Q,true),window.removeEventListener("pointerup",Z,true),i&&cancelAnimationFrame(i),x();}),{selectionRange:m,setSelectionRange:c,handleCellMouseDown:d,handleSelectAllCells:R,isDragging:f}}function kt(){let e=shallowRef(null);return {contextMenuPosition:e,setContextMenuPosition:u=>{e.value=u;},handleCellContextMenu:u=>{u.preventDefault?.(),e.value={x:u.clientX,y:u.clientY};},closeContextMenu:()=>{e.value=null;}}}function Lt(e){let{items:o,visibleCols:l,selectionRange:t,activeCell:u,editable:m,onCellValueChanged:f,beginBatch:s,endBatch:a}=e,g=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,v=shallowRef(null),i=shallowRef(null),p=ref(null),C=()=>{let w=t.value,S=u.value,D=g();return w??(S!=null?{startRow:S.rowIndex,startCol:S.columnIndex-D,endRow:S.rowIndex,endCol:S.columnIndex-D}:null)},r=()=>{let w=C();if(w==null)return;let S=normalizeSelectionRange(w),D=formatSelectionAsTsv(o.value,l.value,S);p.value=D,i.value=S,navigator.clipboard.writeText(D).catch($=>{typeof console<"u"&&console.warn("[OGrid] Clipboard write failed:",$);});};return {handleCopy:r,handleCut:()=>{if(m.value===false)return;let w=C();if(w==null||f.value==null)return;let S=normalizeSelectionRange(w);v.value=S,i.value=null,r(),i.value=null;},handlePaste:async()=>{if(m.value===false)return;let w=f.value;if(w==null)return;let S;try{S=await navigator.clipboard.readText();}catch{S="";}if(!S.trim()&&p.value!=null&&(S=p.value),!S.trim())return;let D=C(),$=D?D.startRow:0,L=D?D.startCol:0,P=o.value,b=l.value,x=parseTsvClipboard(S);s?.();let U=applyPastedValues(x,$,L,P,b);for(let y of U)w(y);if(v.value){let y=applyCutClear(v.value,P,b);for(let j of y)w(j);v.value=null;}a?.(),i.value=null;},cutRange:v,copyRange:i,clearClipboardRanges:()=>{i.value=null,v.value=null;}}}function Bt(e){let o=ze(e);return {handleGridKeyDown:t=>{let{data:u,state:m,handlers:f,features:s}=o.value,a=u.items.value,g=u.visibleCols.value,{getRowId:v}=u,i=isRef(u.colOffset)?u.colOffset.value:u.colOffset,p=u.hasCheckboxCol.value,C=u.visibleColumnCount.value,r=m.activeCell.value,c=m.selectionRange.value,d=m.editingCell.value,R=m.selectedRowIds.value,{setActiveCell:w,setSelectionRange:S,setEditingCell:D,handleRowCheckboxChange:$,handleCopy:L,handleCut:P,handlePaste:b,setContextMenu:x,onUndo:U,onRedo:y,clearClipboardRanges:j}=f,Q=s.editable.value,Z=s.onCellValueChanged.value,h=s.rowSelection.value,I=s.wrapperRef,E=s.scrollToRow,{fillDown:H}=s,T=s.onKeyDown?.value;if(T&&(T(t),t.defaultPrevented))return;let M=a.length-1,A=C-1+i;if(a.length===0)return;if(r===null){["ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Tab","Enter","Home","End","PageDown","PageUp"].includes(t.key)&&(w({rowIndex:0,columnIndex:i}),t.preventDefault());return}let{rowIndex:O,columnIndex:V}=r,z=V-i,oe=t.shiftKey,ne=(k,J)=>{if(k<0||k>=a.length||J<0||J>=g.length)return true;let ee=getCellValue(a[k],g[J]);return ee==null||ee===""};switch(t.key){case "c":if(t.ctrlKey||t.metaKey){if(d!=null)break;t.preventDefault(),L();}break;case "x":if(t.ctrlKey||t.metaKey){if(d!=null)break;t.preventDefault(),P();}break;case "v":if(t.ctrlKey||t.metaKey){if(d!=null)break;t.preventDefault(),b();}break;case "d":if(t.ctrlKey||t.metaKey){if(d!=null)break;Q!==false&&H&&(t.preventDefault(),H());}break;case "ArrowDown":case "ArrowUp":case "ArrowRight":case "ArrowLeft":{if(d!=null)break;t.preventDefault();let{newRowIndex:k,newColumnIndex:J,newRange:ee}=computeArrowNavigation({direction:t.key,rowIndex:O,columnIndex:V,dataColIndex:z,colOffset:i,maxRowIndex:M,maxColIndex:A,visibleColCount:g.length,isCtrl:t.ctrlKey||t.metaKey,isShift:oe,selectionRange:c,isEmptyAt:ne});S(ee),w({rowIndex:k,columnIndex:J}),(t.key==="ArrowDown"||t.key==="ArrowUp")&&E?.(k,"center");break}case "Tab":{t.preventDefault();let{rowIndex:k,columnIndex:J}=computeTabNavigation(O,V,M,A,i,t.shiftKey),ee=J-i;S({startRow:k,startCol:ee,endRow:k,endCol:ee}),w({rowIndex:k,columnIndex:J});break}case "Home":{t.preventDefault();let k=t.ctrlKey?0:O;S({startRow:k,startCol:0,endRow:k,endCol:0}),w({rowIndex:k,columnIndex:i});break}case "End":{t.preventDefault();let k=t.ctrlKey?M:O;S({startRow:k,startCol:C-1,endRow:k,endCol:C-1}),w({rowIndex:k,columnIndex:A});break}case "PageDown":case "PageUp":{t.preventDefault();let k=I.value,J=10;if(k){let he=k.querySelector("tbody tr");he&&he.offsetHeight>0&&(J=Math.max(1,Math.floor(k.clientHeight/he.offsetHeight)));}let ee=t.key==="PageDown"?1:-1,ce=Math.max(0,Math.min(O+ee*J,M));S(oe?{startRow:c?.startRow??O,startCol:c?.startCol??z,endRow:ce,endCol:c?.endCol??z}:{startRow:ce,startCol:z,endRow:ce,endCol:z}),w({rowIndex:ce,columnIndex:V}),E?.(ce,"center");break}case "Enter":case "F2":{if(t.preventDefault(),z>=0&&z<g.length){let k=g[z],J=a[O];if(J&&k){let ee=k.editable===true||typeof k.editable=="function"&&k.editable(J);Q!==false&&ee&&Z!=null&&D({rowId:v(J),columnId:k.columnId});}}break}case "Escape":t.preventDefault(),d!=null?D(null):(j?.(),w(null),S(null));break;case " ":if(h!=="none"&&V===0&&p){t.preventDefault();let k=a[O];if(k){let J=v(k),ee=R.has(J);$(J,!ee,O,t.shiftKey);}}break;case "z":(t.ctrlKey||t.metaKey)&&d==null&&(t.shiftKey&&y?(t.preventDefault(),y()):!t.shiftKey&&U&&(t.preventDefault(),U()));break;case "y":(t.ctrlKey||t.metaKey)&&d==null&&y&&(t.preventDefault(),y());break;case "a":if(t.ctrlKey||t.metaKey){if(d!=null)break;t.preventDefault(),a.length>0&&C>0&&(S({startRow:0,startCol:0,endRow:a.length-1,endCol:C-1}),w({rowIndex:0,columnIndex:i}));}break;case "Delete":case "Backspace":{if(d!=null||Q===false||Z==null)break;let k=c??(r!=null?{startRow:r.rowIndex,startCol:r.columnIndex-i,endRow:r.rowIndex,endCol:r.columnIndex-i}:null);if(k==null)break;t.preventDefault();let J=applyCellDeletion(k,a,g);for(let ee of J)Z(ee);break}case "F10":if(t.shiftKey)if(t.preventDefault(),r!=null&&I.value){let k=`[data-row-index="${r.rowIndex}"][data-col-index="${r.columnIndex}"]`,J=I.value.querySelector(k);if(J){let ee=J.getBoundingClientRect();x({x:ee.left+ee.width/2,y:ee.top+ee.height/2});}else x({x:100,y:100});}else x({x:100,y:100});break;}}}}var Ht="data-drag-range";function Vt(e){let{items:o,visibleCols:l,editable:t,onCellValueChanged:u,selectionRange:m,setSelectionRange:f,setActiveCell:s,wrapperRef:a,beginBatch:g,endBatch:v,visibleRange:i}=e,p=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,C=shallowRef(null),r={endRow:0,endCol:0},c=0,d=null,R=null,w=null,S=P=>{C.value=P;},D=()=>{R&&(window.removeEventListener("pointermove",R,true),R=null),w&&(window.removeEventListener("pointerup",w,true),w=null),c&&(cancelAnimationFrame(c),c=0);};return watch(C,(P,b,x)=>{if(!P||t.value===false||!u.value||!a.value){D();return}r={endRow:P.startRow,endCol:P.startCol},d=null;let U=new Set,y=buildCellIndex(a.value),j=I=>{if(!a.value)return;let H=Math.min(I.startRow,I.endRow),T=Math.max(I.startRow,I.endRow),M=Math.min(I.startCol,I.endCol),A=Math.max(I.startCol,I.endCol),O=p();for(let V of U){let z=parseInt(V.getAttribute("data-row-index")??"",10),oe=parseInt(V.getAttribute("data-col-index")??"",10)-O;z>=H&&z<=T&&oe>=M&&oe<=A||(V.removeAttribute(Ht),U.delete(V));}for(let V=H;V<=T;V++)for(let z=M;z<=A;z++){let oe=`${V},${z+O}`,ne=y?.get(oe);ne&&!ne.isConnected&&(y=buildCellIndex(a.value),ne=y.get(oe)),ne&&(ne.hasAttribute(Ht)||ne.setAttribute(Ht,""),U.add(ne));}},Q=()=>{for(let I of U)I.removeAttribute(Ht);U.clear();},Z=null,h=(I,E)=>{let T=document.elementFromPoint(I,E)?.closest?.("[data-row-index][data-col-index]");if(!T||!a.value?.contains(T))return null;let M=parseInt(T.getAttribute("data-row-index")??"",10),A=parseInt(T.getAttribute("data-col-index")??"",10),O=p();if(Number.isNaN(M)||Number.isNaN(A)||A<O)return null;let V=A-O;return normalizeSelectionRange({startRow:P.startRow,startCol:P.startCol,endRow:M,endCol:V})};R=I=>{Z={cx:I.clientX,cy:I.clientY},c&&cancelAnimationFrame(c),c=requestAnimationFrame(()=>{if(c=0,!Z)return;let E=h(Z.cx,Z.cy);if(!E)return;let H=d;H&&H.startRow===E.startRow&&H.startCol===E.startCol&&H.endRow===E.endRow&&H.endCol===E.endCol||(d=E,r={endRow:E.endRow,endCol:E.endCol},j(E));});},w=()=>{if(c&&(cancelAnimationFrame(c),c=0),Z){let O=h(Z.cx,Z.cy);O&&(d=O,r={endRow:O.endRow,endCol:O.endCol});}Q();let I=r,E=normalizeSelectionRange({startRow:P.startRow,startCol:P.startCol,endRow:I.endRow,endCol:I.endCol}),H=i?.value;H&&(E.startRow=Math.max(E.startRow,H.startIndex),E.endRow=Math.min(E.endRow,H.endIndex)),f(E),s({rowIndex:P.startRow,columnIndex:P.startCol+p()});let T=o.value,M=l.value,A=u.value;if(A){let O=applyFillValues(E,P.startRow,P.startCol,T,M);if(O.length>0){g?.();for(let V of O)A(V);v?.();}}C.value=null,d=null,D();},window.addEventListener("pointermove",R,true),window.addEventListener("pointerup",w,true),x(()=>{D();});}),onUnmounted(()=>D()),{fillDrag:C,setFillDrag:S,handleFillHandleMouseDown:P=>{P.preventDefault(),P.stopPropagation();let b=m.value;b&&(C.value={startRow:b.startRow,startCol:b.startCol});},fillDown:()=>{let P=m.value;if(!P||t.value===false||!u.value)return;let b=normalizeSelectionRange(P),x=o.value,U=l.value,y=u.value,j=applyFillValues(b,b.startRow,b.startCol,x,U);if(j.length>0){g?.();for(let Q of j)y(Q);v?.();}}}}function Gt(e){let{onCellValueChanged:o,maxUndoDepth:l=100}=e,t=new UndoRedoStack(l),u=ref(false),m=ref(false),f=()=>{u.value=t.canUndo,m.value=t.canRedo;};return {onCellValueChanged:o?p=>{t.record(p),t.isBatching||f(),o(p);}:void 0,undo:()=>{if(!o)return;let p=t.undo();if(p){f();for(let C=p.length-1;C>=0;C--){let r=p[C];o({...r,oldValue:r.newValue,newValue:r.oldValue});}}},redo:()=>{if(!o)return;let p=t.redo();if(p){f();for(let C of p)o(C);}},canUndo:u,canRedo:m,beginBatch:()=>{t.beginBatch();},endBatch:()=>{t.endBatch(),f();},maxUndoDepth:l}}function zt(e){let{wrapperRef:o,visibleCols:l,flatColumns:t,hasCheckboxCol:u,initialColumnWidths:m,onColumnResized:f}=e,s=ref(0),a,g=()=>{let r=o.value;if(!r)return;let c=r.getBoundingClientRect(),d=window.getComputedStyle(r),R=(parseFloat(d.borderLeftWidth||"0")||0)+(parseFloat(d.borderRightWidth||"0")||0);s.value=Math.max(0,c.width-R);};onMounted(()=>{let r=o.value;r&&(typeof ResizeObserver<"u"&&(a=new ResizeObserver(g),a.observe(r)),g());}),onUnmounted(()=>{a?.disconnect();});let v=ref((()=>{if(!m)return {};let r={};for(let[c,d]of Object.entries(m))r[c]={widthPx:d};return r})()),i=r=>{v.value=r;},p=computed(()=>{let r=u.value?CHECKBOX_COLUMN_WIDTH:0;return l.value.reduce((c,d)=>c+(d.minWidth??DEFAULT_MIN_COLUMN_WIDTH)+CELL_PADDING,r)});watch(t,r=>{let c=new Set(r.map(S=>S.columnId)),d=v.value,R=Object.keys(d),w=R.filter(S=>c.has(S));if(w.length<R.length){let S={};for(let D of w)S[D]=d[D];v.value=S;}});let C=computed(()=>{let r=u.value?CHECKBOX_COLUMN_WIDTH:0;return l.value.reduce((c,d)=>{let R=v.value[d.columnId],w=R?R.widthPx:d.idealWidth??d.defaultWidth??d.minWidth??DEFAULT_MIN_COLUMN_WIDTH;return c+Math.max(d.minWidth??DEFAULT_MIN_COLUMN_WIDTH,w)+CELL_PADDING},r)});return {containerWidth:s,minTableWidth:p,desiredTableWidth:C,columnSizingOverrides:v,setColumnSizingOverrides:i,onColumnResized:f}}function Nt(e){let{columns:o,pinnedColumns:l,onColumnPinned:t}=e,u={};for(let p of o.value)p.pinned&&(u[p.columnId]=p.pinned);let m=ref(u),f=computed(()=>l?.value??m.value);return {pinnedColumns:f,pinColumn:(p,C)=>{let r={...f.value,[p]:C};m.value=r,t?.(p,C);},unpinColumn:p=>{let{[p]:C,...r}=f.value;m.value=r,t?.(p,null);},isPinned:p=>f.value[p],computeLeftOffsets:(p,C,r,c,d)=>{let R={},w=c?d:0;for(let S of p)f.value[S.columnId]==="left"&&(R[S.columnId]=w,w+=C[S.columnId]??r);return R},computeRightOffsets:(p,C,r)=>{let c={},d=0;for(let R=p.length-1;R>=0;R--){let w=p[R];f.value[w.columnId]==="right"&&(c[w.columnId]=d,d+=C[w.columnId]??r);}return c}}}function Wt(e){let{columns:o,pinnedColumns:l,onPinColumn:t,onUnpinColumn:u,onSort:m,onColumnResized:f,onAutosizeColumn:s,sortBy:a,sortDirection:g}=e,v=ref(false),i=ref(null),p=ref(null),C=(h,I)=>{i.value=h,p.value=I,v.value=true;},r=()=>{v.value=false,i.value=null,p.value=null;},c=computed(()=>i.value?o.value.find(h=>h.columnId===i.value):void 0),d=computed(()=>i.value?l.value[i.value]:void 0),R=computed(()=>d.value!=="left"),w=computed(()=>d.value!=="right"),S=computed(()=>!!d.value),D=computed(()=>!i.value||!a?.value||a.value!==i.value?null:g?.value??null),$=computed(()=>c.value?.sortable!==false),L=ref(true);return {isOpen:v,openForColumn:i,anchorElement:p,open:C,close:r,handlePinLeft:()=>{i.value&&R.value&&(t(i.value,"left"),r());},handlePinRight:()=>{i.value&&w.value&&(t(i.value,"right"),r());},handleUnpin:()=>{i.value&&S.value&&(u(i.value),r());},handleSortAsc:()=>{i.value&&m&&(m(i.value,"asc"),r());},handleSortDesc:()=>{i.value&&m&&(m(i.value,"desc"),r());},handleClearSort:()=>{i.value&&m&&(m(i.value,null),r());},handleAutosizeThis:()=>{let h=s??f;if(!i.value||!h||!L.value)return;let I=c.value;h(i.value,measureColumnContentWidth(i.value,I?.minWidth)),r();},handleAutosizeAll:()=>{let h=s??f;h&&(o.value.forEach(I=>{h(I.columnId,measureColumnContentWidth(I.columnId,I.minWidth));}),r());},canPinLeft:R,canPinRight:w,canUnpin:S,currentSort:D,isSortable:$,isResizable:L}}var ke=()=>{},Er=async()=>{},Dr=(e,o,l)=>{},Fr=e=>{},Ur=e=>{};function Kt(e){let{props:o,wrapperRef:l}=e,t=computed(()=>o.value.items),u=o.value.getRowId,m=computed(()=>o.value.rowSelection??"none"),f=computed(()=>o.value.selectedRows),s=computed(()=>o.value.editable),a=computed(()=>o.value.cellSelection!==false),g=computed(()=>o.value.pinnedColumns),v=Gt({onCellValueChanged:o.value.onCellValueChanged}),i=computed(()=>v.onCellValueChanged),p=computed(()=>flattenColumns(o.value.columns)),C=computed(()=>{let G=g.value;return !G||Object.keys(G).length===0?p.value:p.value.map(Y=>{let le=G[Y.columnId];return le&&Y.pinned!==le?{...Y,pinned:le}:Y})}),r=computed(()=>resolveResponsiveConfig(o.value.responsiveColumns)),c=computed(()=>{let G=o.value.visibleColumns,Y=o.value.columnOrder,le=G?C.value.filter(fe=>G.has(fe.columnId)):C.value;if(!Y?.length)return le;let de=new Map;for(let fe=0;fe<Y.length;fe++)de.set(Y[fe],fe);return [...le].sort((fe,xe)=>{let ve=de.get(fe.columnId)??-1,n=de.get(xe.columnId)??-1;return ve===-1&&n===-1?0:ve===-1?1:n===-1?-1:ve-n})}),d=ref(0),R=computed(()=>applyResponsiveHiding(c.value,d.value,r.value)),w=computed(()=>R.value.length),S=computed(()=>m.value==="multiple"),D=computed(()=>!!o.value.showRowNumbers),$=computed(()=>(S.value?1:0)+(D.value?1:0)),L=computed(()=>w.value+$.value),P=$,b=shallowRef(new Map);watch(t,G=>{let Y=b.value;Y.clear(),G.forEach((le,de)=>Y.set(u(le),de)),triggerRef(b);},{immediate:true});let x=Ut({items:t,getRowId:u,rowSelection:m,controlledSelectedRows:f,onSelectionChange:o.value.onSelectionChange}),{editingCell:U,setEditingCell:y,pendingEditorValue:j,setPendingEditorValue:Q}=Ot(),{activeCell:Z,setActiveCell:h}=Mt(l,U),I=computed(()=>t.value.length),E=computed(()=>R.value.length),{selectionRange:H,setSelectionRange:T,handleCellMouseDown:M,handleSelectAllCells:A,isDragging:O}=At({colOffset:P,rowCount:I,visibleColCount:E,setActiveCell:h,wrapperRef:l}),{contextMenuPosition:V,setContextMenuPosition:z,handleCellContextMenu:oe,closeContextMenu:ne}=kt(),{handleCopy:k,handleCut:J,handlePaste:ee,cutRange:ce,copyRange:he,clearClipboardRanges:Se}=Lt({items:t,visibleCols:R,colOffset:P,selectionRange:H,activeCell:Z,editable:s,onCellValueChanged:i,beginBatch:v.beginBatch,endBatch:v.endBatch}),ye=(G,Y,le)=>{G.button===0&&(l.value?.focus({preventScroll:true}),Se(),M(G,Y,le));},{handleFillHandleMouseDown:we,fillDown:Ze}=Vt({items:t,visibleCols:R,editable:s,onCellValueChanged:i,selectionRange:H,setSelectionRange:T,setActiveCell:h,colOffset:P,wrapperRef:l,beginBatch:v.beginBatch,endBatch:v.endBatch}),{handleGridKeyDown:Oe}=Bt({data:{items:t,visibleCols:R,colOffset:P,hasCheckboxCol:S,visibleColumnCount:w,getRowId:u},state:{activeCell:Z,selectionRange:H,editingCell:U,selectedRowIds:x.selectedRowIds},handlers:{setActiveCell:h,setSelectionRange:T,setEditingCell:y,handleRowCheckboxChange:x.handleRowCheckboxChange,handleCopy:k,handleCut:J,handlePaste:ee,setContextMenu:z,onUndo:v.undo,onRedo:v.redo,clearClipboardRanges:Se},features:{editable:s,onCellValueChanged:i,rowSelection:m,wrapperRef:l,fillDown:Ze,onKeyDown:computed(()=>o.value.onKeyDown)}}),{containerWidth:De,minTableWidth:Be,desiredTableWidth:Fe,columnSizingOverrides:Me,setColumnSizingOverrides:_e}=zt({wrapperRef:l,visibleCols:c,flatColumns:C,hasCheckboxCol:S,initialColumnWidths:o.value.initialColumnWidths,onColumnResized:(G,Y)=>o.value.onColumnResized?.(G,Y)});watch(De,G=>{d.value=G;},{immediate:true});let me=Nt({columns:C,pinnedColumns:g,onColumnPinned:o.value.onColumnPinned}),He=(G,Y)=>{_e({...Me.value,[G]:{widthPx:Y}}),o.value.onColumnResized?.(G,Y);},ie=Wt({columns:C,pinnedColumns:me.pinnedColumns,onPinColumn:me.pinColumn,onUnpinColumn:me.unpinColumn,onSort:o.value.onColumnSort,onColumnResized:o.value.onColumnResized,onAutosizeColumn:He,sortBy:computed(()=>o.value.sortBy),sortDirection:computed(()=>o.value.sortDirection)}),Ve=ref({});watch([R,De,Me],()=>{nextTick(()=>{let G=l.value;if(!G)return;let Y=G.querySelectorAll("th[data-column-id]");if(Y.length===0)return;let le={};Y.forEach(ve=>{let n=ve.getAttribute("data-column-id");n&&(le[n]=ve.offsetWidth);});let de=Ve.value,fe=Object.keys(le),xe=fe.length!==Object.keys(de).length;if(!xe){for(let ve of fe)if(de[ve]!==le[ve]){xe=true;break}}xe&&(Ve.value=le);});},{flush:"post"});let Je=computed(()=>{let G={};for(let Y of R.value){let le=Me.value[Y.columnId];G[Y.columnId]=le?le.widthPx:Y.idealWidth??Y.defaultWidth??Y.minWidth??DEFAULT_MIN_COLUMN_WIDTH;}return G}),se=computed(()=>me.computeLeftOffsets(R.value,Je.value,DEFAULT_MIN_COLUMN_WIDTH,S.value,CHECKBOX_COLUMN_WIDTH)),Qe=computed(()=>me.computeRightOffsets(R.value,Je.value,DEFAULT_MIN_COLUMN_WIDTH)),et=computed(()=>computeAggregations(t.value,R.value,a.value?H.value:null)),We=computed(()=>{let G=getDataGridStatusBarConfig(o.value.statusBar,t.value.length,x.selectedRowIds.value.size);return G?{...G,aggregation:et.value??void 0}:null}),tt=computed(()=>t.value.length===0&&!!o.value.emptyState&&!o.value.isLoading),at=computed(()=>H.value!=null||Z.value!=null),it=computed(()=>({sortBy:o.value.sortBy,sortDirection:o.value.sortDirection,onColumnSort:o.value.onColumnSort,filters:o.value.filters,onFilterChange:o.value.onFilterChange,filterOptions:o.value.filterOptions,loadingFilterOptions:o.value.loadingFilterOptions,peopleSearch:o.value.peopleSearch})),st=computed(()=>({editingCell:U.value,activeCell:a.value?Z.value:null,selectionRange:a.value?H.value:null,cutRange:a.value?ce.value:null,copyRange:a.value?he.value:null,colOffset:P.value,itemsLength:t.value.length,getRowId:u,editable:s.value,onCellValueChanged:i.value,isDragging:a.value?O.value:false,getFormulaValue:o.value.getFormulaValue,hasFormula:o.value.hasFormula,getFormula:o.value.getFormula,formulaVersion:o.value.formulaVersion})),Ke=ref(null),Ge=G=>{Ke.value=G;},ut=(G,Y,le,de,fe,xe)=>{let ve=R.value.find(n=>n.columnId===Y);if(ve){let n=parseValue(de,le,G,ve);if(!n.valid){y(null),Ge(null),Q(void 0);return}de=n.value;}if(i.value?.({item:G,columnId:Y,oldValue:le,newValue:de,rowIndex:fe}),y(null),Ge(null),Q(void 0),fe<t.value.length-1){let n=fe+1,F=xe-P.value;h({rowIndex:n,columnIndex:xe}),T({startRow:n,startCol:F,endRow:n,endCol:F});}},dt=()=>{y(null),Ge(null),Q(void 0);},ct=computed(()=>({flatColumns:C.value,visibleCols:R.value,visibleColumnCount:w.value,totalColCount:L.value,colOffset:P.value,hasCheckboxCol:S.value,hasRowNumbersCol:D.value,rowIndexByRowId:b.value,containerWidth:De.value,minTableWidth:Be.value,desiredTableWidth:Fe.value,columnSizingOverrides:Me.value,setColumnSizingOverrides:_e,onColumnResized:o.value.onColumnResized,measuredColumnWidths:Ve.value,stickyHeader:o.value.stickyHeader??true})),nt=computed(()=>({selectedRowIds:x.selectedRowIds.value,updateSelection:x.updateSelection,handleRowCheckboxChange:x.handleRowCheckboxChange,handleSelectAll:x.handleSelectAll,allSelected:x.allSelected.value,someSelected:x.someSelected.value})),Te=computed(()=>({editingCell:U.value,setEditingCell:y,pendingEditorValue:j.value,setPendingEditorValue:Q,commitCellEdit:ut,cancelPopoverEdit:dt,popoverAnchorEl:Ke.value,setPopoverAnchorEl:Ge})),mt=computed(()=>({activeCell:a.value?Z.value:null,setActiveCell:a.value?h:ke,selectionRange:a.value?H.value:null,setSelectionRange:a.value?T:ke,handleCellMouseDown:a.value?ye:Dr,handleSelectAllCells:a.value?A:ke,hasCellSelection:a.value?at.value:false,handleGridKeyDown:a.value?Oe:Fr,handleFillHandleMouseDown:a.value?we:ke,handleCopy:a.value?k:ke,handleCut:a.value?J:ke,handlePaste:a.value?ee:Er,cutRange:a.value?ce.value:null,copyRange:a.value?he.value:null,clearClipboardRanges:a.value?Se:ke,canUndo:v.canUndo.value,canRedo:v.canRedo.value,onUndo:v.undo,onRedo:v.redo,isDragging:a.value?O.value:false})),ft=computed(()=>({menuPosition:a.value?V.value:null,setMenuPosition:a.value?z:ke,handleCellContextMenu:a.value?oe:Ur,closeContextMenu:a.value?ne:ke})),pt=computed(()=>({headerFilterInput:it.value,cellDescriptorInput:st.value,statusBarConfig:We.value,showEmptyInGrid:tt.value,onCellError:o.value.onCellError})),vt=computed(()=>({pinnedColumns:me.pinnedColumns.value,pinColumn:me.pinColumn,unpinColumn:me.unpinColumn,isPinned:me.isPinned,leftOffsets:se.value,rightOffsets:Qe.value,headerMenu:{isOpen:ie.isOpen.value,openForColumn:ie.openForColumn.value,anchorElement:ie.anchorElement.value,open:ie.open,close:ie.close,handlePinLeft:ie.handlePinLeft,handlePinRight:ie.handlePinRight,handleUnpin:ie.handleUnpin,handleSortAsc:ie.handleSortAsc,handleSortDesc:ie.handleSortDesc,handleClearSort:ie.handleClearSort,handleAutosizeThis:ie.handleAutosizeThis,handleAutosizeAll:ie.handleAutosizeAll,canPinLeft:ie.canPinLeft.value,canPinRight:ie.canPinRight.value,canUnpin:ie.canUnpin.value,currentSort:ie.currentSort.value,isSortable:ie.isSortable.value,isResizable:ie.isResizable.value}}));return {layout:ct,rowSelection:nt,editing:Te,interaction:mt,contextMenu:ft,viewModels:pt,pinning:vt}}function $t(e){let{columnSizingOverrides:o,setColumnSizingOverrides:l,minWidth:t=80,defaultWidth:u=120,onColumnResized:m}=e,f=0,s=null;return onUnmounted(()=>{s?.(),s=null;}),{handleResizeStart:(i,p)=>{i.preventDefault(),i.stopPropagation();let C=i.clientX,r=p.columnId,c=i.currentTarget.parentElement,d=c?c.getBoundingClientRect().width:o.value[r]?.widthPx??p.idealWidth??p.defaultWidth??u,R=d,w=document.body.style.cursor,S=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let D=()=>{l({...o.value,[r]:{widthPx:R}});},$=r===ROW_NUMBER_COLUMN_ID?ROW_NUMBER_COLUMN_MIN_WIDTH:t,L=x=>{let U=x.clientX-C;R=Math.max($,d+U),f||(f=requestAnimationFrame(()=>{f=0,D();}));},P=()=>{document.removeEventListener("pointermove",L),document.removeEventListener("pointerup",b),s=null,document.body.style.cursor=w,document.body.style.userSelect=S,f&&(cancelAnimationFrame(f),f=0);},b=()=>{P(),D(),m?.(r,R);};document.addEventListener("pointermove",L),document.addEventListener("pointerup",b),s=P;},handleResizeDoubleClick:(i,p)=>{i.preventDefault(),i.stopPropagation();let C=p.columnId,c=(i.currentTarget.closest("th")??i.currentTarget.parentElement)?.closest("table")?.parentElement??void 0,d=measureColumnContentWidth(C,t,c);l({...o.value,[C]:{widthPx:d}}),m?.(C,d);},getColumnWidth:i=>o.value[i.columnId]?.widthPx??i.idealWidth??i.defaultWidth??u}}function qt(e,o){let l=ref(e.value),t;return watch(e,u=>{t!==void 0&&clearTimeout(t),t=setTimeout(()=>{l.value=u;},o);}),onUnmounted(()=>{t!==void 0&&clearTimeout(t);}),l}function Ro(e,o){let l,t=e,u,m=((...f)=>{t=e,u=f,l!==void 0&&clearTimeout(l),l=setTimeout(()=>{t(...f),u=void 0,l=void 0;},o);});return m.cancel=()=>{l!==void 0&&clearTimeout(l),l=void 0,u=void 0;},m.flush=()=>{if(l!==void 0&&u!==void 0){clearTimeout(l),l=void 0;let f=u;u=void 0,t(...f);}},onUnmounted(()=>{l!==void 0&&clearTimeout(l);}),m}function Xt(e){let{textValue:o="",onTextChange:l}=e,t=ref(o);return watch(e.isFilterOpen,s=>{s&&(t.value=e.textValue??"");}),{tempTextValue:t,setTempTextValue:s=>{t.value=s;},handleTextApply:()=>{l?.(t.value.trim());},handleTextClear:()=>{t.value="";}}}var Nr=150,Ln=[];function jt(e){let{onFilterChange:o}=e,l=ref(new Set(e.selectedValues??Ln)),t=ref(""),u=qt(t,Nr);watch(e.isFilterOpen,p=>{p&&(l.value=new Set(e.selectedValues??Ln),t.value="");});let m=computed(()=>{let p=e.options??Ln;if(!u.value.trim())return p;let C=u.value.toLowerCase().trim();return p.filter(r=>r.toLowerCase().includes(C))});return {tempSelected:l,setTempSelected:p=>{l.value=p;},searchText:t,setSearchText:p=>{t.value=p;},debouncedSearchText:u,filteredOptions:m,handleCheckboxChange:(p,C)=>{let r=new Set(l.value);C?r.add(p):r.delete(p),l.value=r;},handleSelectAll:()=>{l.value=new Set(m.value);},handleClearSelection:()=>{l.value=new Set;},handleApplyMultiSelect:()=>{o?.(Array.from(l.value));}}}var Wr=300;function Zt(e){let{onUserChange:o,filterType:l}=e,t=ref(null),u,m=ref([]),f=ref(false),s=ref(""),a=i=>{s.value=i;};return watch(e.isFilterOpen,i=>{i&&(s.value="",m.value=[],l==="people"&&setTimeout(()=>t.value?.focus(),50));}),watch([s,()=>e.peopleSearch,e.isFilterOpen],([i,p,C])=>{if(u&&clearTimeout(u),!(!p||!C||l!=="people")){if(!i.trim()){m.value=[];return}f.value=true,u=setTimeout(async()=>{try{let r=await p(i);m.value=r.slice(0,10);}catch{m.value=[];}finally{f.value=false;}},Wr);}}),onUnmounted(()=>{u&&clearTimeout(u);}),{peopleSuggestions:m,isPeopleLoading:f,peopleSearchText:s,setPeopleSearchText:a,peopleInputRef:t,handleUserSelect:i=>{o?.(i);},handleClearUser:()=>{o?.(void 0);}}}function Jt(e){let{onDateChange:o}=e,l=ref(e.dateValue?.from??""),t=ref(e.dateValue?.to??"");return watch(e.isFilterOpen,a=>{a&&(l.value=e.dateValue?.from??"",t.value=e.dateValue?.to??"");}),{tempDateFrom:l,setTempDateFrom:a=>{l.value=a;},tempDateTo:t,setTempDateTo:a=>{t.value=a;},handleDateApply:()=>{let a=l.value||void 0,g=t.value||void 0;o?.(a||g?{from:a,to:g}:void 0);},handleDateClear:()=>{l.value="",t.value="";}}}var Xr=[];function xo(e){let{filterType:o,onSort:l}=e,t=()=>e.selectedValues??Xr,u=ref(null),m=ref(null),f=ref(false),s=ref(null),a=h=>{f.value=h;},g=Xt({textValue:e.textValue,onTextChange:e.onTextChange,isFilterOpen:f}),v=jt({selectedValues:e.selectedValues,onFilterChange:e.onFilterChange,options:e.options,isFilterOpen:f}),i=Zt({selectedUser:e.selectedUser,onUserChange:e.onUserChange,peopleSearch:e.peopleSearch,isFilterOpen:f,filterType:o}),p=Jt({dateValue:e.dateValue,onDateChange:e.onDateChange,isFilterOpen:f});watch(f,h=>{h||(s.value=null);});let C=null,r=null,c,d=()=>{R(),C=h=>{let I=h.target;m.value&&!m.value.contains(I)&&u.value&&!u.value.contains(I)&&(f.value=false);},r=h=>{(h.key==="Escape"||h.key==="Esc")&&(h.preventDefault(),h.stopPropagation(),f.value=false);},c=setTimeout(()=>{C&&document.addEventListener("mousedown",C);},0),document.addEventListener("keydown",r,true);},R=()=>{c&&clearTimeout(c),C&&document.removeEventListener("mousedown",C),r&&document.removeEventListener("keydown",r,true),C=null,r=null;};watch(f,h=>{h?d():R();}),onUnmounted(()=>R());let w=h=>{if(h.stopPropagation(),h.preventDefault(),!f.value&&u.value){let I=u.value.getBoundingClientRect();s.value={top:I.bottom+4,left:I.left};}f.value=!f.value;},S=h=>{h.stopPropagation(),l?.();},D=()=>{v.handleApplyMultiSelect(),f.value=false;},$=()=>{g.handleTextApply(),f.value=false;},L=h=>{i.handleUserSelect(h),f.value=false;},P=()=>{i.handleClearUser(),f.value=false;},b=()=>{p.handleDateApply(),f.value=false;},x=h=>h.stopPropagation(),U=h=>h.stopPropagation(),y=h=>h.stopPropagation(),j=h=>h.stopPropagation(),Q=h=>{h.key!=="Escape"&&h.key!=="Esc"&&h.stopPropagation();},Z=computed(()=>o==="multiSelect"?t().length>0:o==="text"?!!(e.textValue??"").trim():o==="people"?!!e.selectedUser:o==="date"?!!(e.dateValue?.from||e.dateValue?.to):false);return {headerRef:u,popoverRef:m,peopleInputRef:i.peopleInputRef,isFilterOpen:f,setFilterOpen:a,tempSelected:v.tempSelected,setTempSelected:v.setTempSelected,tempTextValue:g.tempTextValue,setTempTextValue:g.setTempTextValue,searchText:v.searchText,setSearchText:v.setSearchText,debouncedSearchText:v.debouncedSearchText,filteredOptions:v.filteredOptions,peopleSuggestions:i.peopleSuggestions,isPeopleLoading:i.isPeopleLoading,peopleSearchText:i.peopleSearchText,setPeopleSearchText:i.setPeopleSearchText,tempDateFrom:p.tempDateFrom,setTempDateFrom:p.setTempDateFrom,tempDateTo:p.tempDateTo,setTempDateTo:p.setTempDateTo,hasActiveFilter:Z,popoverPosition:s,handlers:{handleFilterIconClick:w,handleApplyMultiSelect:D,handleTextApply:$,handleTextClear:g.handleTextClear,handleUserSelect:L,handleClearUser:P,handleCheckboxChange:v.handleCheckboxChange,handleSelectAll:v.handleSelectAll,handleClearSelection:v.handleClearSelection,handlePopoverClick:x,handleInputFocus:U,handleInputMouseDown:y,handleInputClick:j,handleInputKeyDown:Q,handleDateApply:b,handleDateClear:p.handleDateClear,handleSortClick:S}}}function Po(e){let{columns:o,visibleColumns:l,onVisibilityChange:t}=e,u=ref(false),m=null,f=()=>{s(),m=d=>{d.key==="Escape"&&(d.preventDefault(),u.value=false);},document.addEventListener("keydown",m,true);},s=()=>{m&&(document.removeEventListener("keydown",m,true),m=null);};watch(u,d=>{d?f():s();}),onUnmounted(()=>s());let a=d=>{u.value=d;},g=()=>{u.value=!u.value;},v=()=>{u.value=false;},i=d=>R=>{t(d,R);},p=()=>{o.value.forEach(d=>{l.value.has(d.columnId)||t(d.columnId,true);});},C=()=>{o.value.forEach(d=>{!d.required&&l.value.has(d.columnId)&&t(d.columnId,false);});},r=computed(()=>l.value.size),c=computed(()=>o.value.length);return {open:u,setOpen:a,handleToggle:g,handleClose:v,handleCheckboxChange:i,handleSelectAll:p,handleClearAll:C,visibleCount:r,totalCount:c}}function To(e){let{value:o,editorType:l,onCommit:t,onCancel:u}=e,m=ref((()=>{if(o==null)return "";if(l==="date"){let i=String(o);return i.match(/^\d{4}-\d{2}-\d{2}/)?i.substring(0,10):i}return String(o)})()),f=i=>{m.value=i;},s=i=>{t(i);},a=()=>{u();};return {localValue:m,setLocalValue:f,handleKeyDown:i=>{i.key==="Escape"&&(i.preventDefault(),i.stopPropagation(),a()),i.key==="Enter"&&(l==="text"||l==="date")&&(i.preventDefault(),i.stopPropagation(),s(m.value));},handleBlur:()=>{(l==="text"||l==="date")&&s(m.value);},commit:s,cancel:a}}function Do(e){let{values:o,formatValue:l,initialValue:t,onCommit:u,onCancel:m}=e,f=ref(""),s=o.findIndex(r=>String(r)===String(t)),a=ref(Math.max(s,0)),g=r=>{f.value=r;},v=r=>l?l(r):r!=null?String(r):"",i=computed(()=>{if(!f.value.trim())return o;let r=f.value.toLowerCase();return o.filter(c=>v(c).toLowerCase().includes(r))}),p=r=>{u(r);};return {searchText:f,setSearchText:g,filteredValues:i,highlightedIndex:a,handleKeyDown:r=>{switch(r.key){case "ArrowDown":r.preventDefault(),a.value=Math.min(a.value+1,i.value.length-1);break;case "ArrowUp":r.preventDefault(),a.value=Math.max(a.value-1,0);break;case "Enter":r.preventDefault(),r.stopPropagation(),i.value.length>0&&a.value<i.value.length&&p(i.value[a.value]);break;case "Escape":r.preventDefault(),r.stopPropagation(),m();break}},selectValue:p,getDisplayText:v}}var la=8,ra=5;function en(e){let{columnOrder:o,onColumnOrderChange:l,tableRef:t,pinnedColumns:u}=e,m=ref(false),f=ref(null),s=null,a="unpinned",g=0,v=null;return onUnmounted(()=>{v?.(),v=null;}),{isDragging:m,dropIndicatorX:f,handleHeaderMouseDown:(p,C)=>{if(C.button!==0)return;let r=C.target.closest("th");if(r){let x=r.getBoundingClientRect();if(C.clientX>x.right-la)return}if(C.preventDefault(),!t.value||!l.value)return;s=p,a=getPinStateForColumn(p,u?.value),f.value=null;let d=C.clientX,R=false,w=C.clientX,S=-1,D=document.body.style.cursor,$=document.body.style.userSelect;document.body.style.cursor="grabbing",document.body.style.userSelect="none";let L=x=>{!R&&Math.abs(x.clientX-d)<ra||(R||(R=true,m.value=true),w=x.clientX,g||(g=requestAnimationFrame(()=>{g=0;let U=t.value;if(!U||!s)return;let y=calculateDropTarget({mouseX:w,columnOrder:o.value,draggedColumnId:s,draggedPinState:a,tableElement:U,pinnedColumns:u?.value});y?(S=y.targetIndex,f.value=y.indicatorX):f.value=null;})));},P=()=>{window.removeEventListener("pointermove",L,true),window.removeEventListener("pointerup",b,true),v=null,document.body.style.cursor=D,document.body.style.userSelect=$,g&&(cancelAnimationFrame(g),g=0);},b=()=>{if(P(),R&&s&&S>=0&&l.value){let x=reorderColumnArray(o.value,s,S);l.value(x);}s=null,m.value=false,f.value=null,S=-1;};window.addEventListener("pointermove",L,true),window.addEventListener("pointerup",b,true),v=P;}}}var pa=100;function nn(e){let{totalRows:o,rowHeight:l,enabled:t,overscan:u=5,threshold:m=pa,columnsEnabled:f,columnWidths:s,columnOverscan:a=2}=e;onMounted(()=>{validateVirtualScrollConfig({enabled:t.value,rowHeight:l});});let g=ref(null),v=ref(0),i=ref(0),p=ref(0),C=ref(0),r=0,c,d=null,R=computed(()=>t.value&&o.value>=m),w=computed(()=>R.value?computeVisibleRange(v.value,l,p.value,o.value,u):{startIndex:0,endIndex:Math.max(0,o.value-1),offsetTop:0,offsetBottom:0}),S=computed(()=>t.value?computeTotalHeight(o.value,l):0),D=computed(()=>{if(!f?.value)return null;let b=s?.value;return !b||b.length===0?null:computeVisibleColumnRange(i.value,b,C.value,a)}),$=()=>{r||(r=requestAnimationFrame(()=>{r=0;let b=g.value;b&&(v.value=b.scrollTop,i.value=b.scrollLeft);}));},L=()=>{let b=g.value;b&&(p.value=b.clientHeight,C.value=b.clientWidth);};return watch(g,b=>{b!==d&&(d&&d.removeEventListener("scroll",$),c&&(c.disconnect(),c=void 0),d=b,b&&(b.addEventListener("scroll",$,{passive:true}),typeof ResizeObserver<"u"&&(c=new ResizeObserver(L),c.observe(b)),L(),v.value=b.scrollTop,i.value=b.scrollLeft));}),onUnmounted(()=>{let b=g.value;b&&b.removeEventListener("scroll",$),c?.disconnect(),r&&(cancelAnimationFrame(r),r=0);}),{containerRef:g,visibleRange:w,totalHeight:S,scrollToRow:(b,x="start")=>{let U=g.value;U&&(U.scrollTop=getScrollTopForRow(b,l,p.value,x));},columnRange:D,scrollLeft:i}}function ln(e){let{props:o}=e,l=ref(null),t=ref(null),u=ref(null),m=ref(false),f=Kt({props:o,wrapperRef:l}),s=computed(()=>{let L=o.value;return L.columnOrder?L.columnOrder:flattenColumns(L.columns).filter(P=>L.visibleColumns?.has(P.columnId)??true).map(P=>P.columnId)}),a=computed(()=>o.value.onColumnOrderChange),g=en({columnOrder:s,onColumnOrderChange:a,tableRef:u}),v=computed(()=>o.value.virtualScroll?.enabled??false),i=computed(()=>o.value.items.length),p=o.value.virtualScroll?.rowHeight??36,C=o.value.virtualScroll?.overscan??5,r=computed(()=>o.value.virtualScroll?.columns===true),c=o.value.virtualScroll?.columnOverscan??2,d=computed(()=>{let L=f.layout.value,{visibleCols:P,columnSizingOverrides:b}=L,x=o.value.pinnedColumns??{},U=[];for(let y of P){if(x[y.columnId]||y.pinned)continue;let j=b[y.columnId];U.push(j?j.widthPx:y.defaultWidth??y.minWidth??DEFAULT_MIN_COLUMN_WIDTH);}return U}),R=nn({totalRows:i,rowHeight:p,enabled:v,overscan:C,columnsEnabled:r,columnWidths:d,columnOverscan:c}),w=computed(()=>{if(!r.value)return null;let P=f.layout.value.visibleCols,b=R.columnRange.value,x=o.value.pinnedColumns;return partitionColumnsForVirtualization(P,b,x)}),S=computed(()=>{let P=f.layout.value.visibleCols,b=new Map;for(let x=0;x<P.length;x++)b.set(P[x].columnId,x);return b}),D=computed(()=>f.layout.value.columnSizingOverrides),$=$t({columnSizingOverrides:D,setColumnSizingOverrides:L=>f.layout.value.setColumnSizingOverrides(L)});return {wrapperRef:l,tableContainerRef:t,tableRef:u,lastMouseShift:m,state:f,columnReorder:g,virtualScroll:R,virtualScrollEnabled:v,columnResize:$,columnPartition:w,globalColIndexMap:S}}function rn(e,o,l){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:u=>{l.setEditingCell(null),l.handleCellMouseDown(u,e.rowIndex,e.globalColIndex);},onClick:()=>l.setActiveCell({rowIndex:e.rowIndex,columnIndex:e.globalColIndex}),onContextmenu:u=>l.handleCellContextMenu(u)};return e.canEditAny&&(t.role="button",t.onDblclick=()=>l.setEditingCell({rowId:e.rowId,columnId:o})),t}var Uo=()=>{};function Ia(e){return defineComponent({name:"DataGridTable",props:{gridProps:{type:Object,required:true}},setup(o){let l=computed(()=>o.gridProps),{wrapperRef:t,tableContainerRef:u,tableRef:m,lastMouseShift:f,state:s,columnReorder:{isDragging:a,dropIndicatorX:g,handleHeaderMouseDown:v},virtualScroll:{containerRef:i,visibleRange:p,totalHeight:C,scrollToRow:r},virtualScrollEnabled:c,columnResize:{handleResizeStart:d,handleResizeDoubleClick:R,getColumnWidth:w},columnPartition:S,globalColIndexMap:D}=ln({props:l}),$=computed(()=>{let y=l.value;return y.showRowNumbers||y.showColumnLetters?((y.currentPage??1)-1)*(y.pageSize??25):0});watch([()=>s.interaction.value.activeCell,$],([y,j])=>{let Q=l.value.onActiveCellChange;Q&&Q(y?formatCellReference(y.columnIndex-s.layout.value.colOffset,j+y.rowIndex+1):null);},{immediate:true});let L=y=>{f.value=y.shiftKey;},P=y=>y.preventDefault(),b=y=>y.stopPropagation(),x=computed(()=>buildHeaderRows(l.value.columns,l.value.visibleColumns)),U=computed(()=>{let y=s.layout.value,j=s.pinning.value,{visibleCols:Q,columnSizingOverrides:Z,measuredColumnWidths:h}=y,{leftOffsets:I,rightOffsets:E}=j,H={},T={},M={},A={};for(let O=0;O<Q.length;O++){let V=Q[O],z=V.pinned==="left",oe=V.pinned==="right",ne=w(V),k=!!Z[V.columnId],J=h[V.columnId],ee=V.minWidth??DEFAULT_MIN_COLUMN_WIDTH,ce=k?ne:Math.max(ee,J??0),he={minWidth:`${ce}px`,width:`${ne}px`,maxWidth:`${ne}px`},Se={minWidth:`${ce}px`,width:`${ne}px`,maxWidth:`${ne}px`},ye=["ogrid-data-cell"],we=["ogrid-header-cell"];z?(ye.push("ogrid-data-cell--pinned-left"),he.left=`${I[V.columnId]??0}px`,we.push("ogrid-header-cell--pinned-left"),Se.left=`${I[V.columnId]??0}px`):oe&&(ye.push("ogrid-data-cell--pinned-right"),he.right=`${E[V.columnId]??0}px`,we.push("ogrid-header-cell--pinned-right"),Se.right=`${E[V.columnId]??0}px`),H[V.columnId]=he,T[V.columnId]=ye.join(" "),M[V.columnId]=Se,A[V.columnId]=we.join(" ");}return {cellStyles:H,cellClasses:T,hdrStyles:M,hdrClasses:A}});return ()=>{let y=o.gridProps,j=s.layout.value,Q=s.rowSelection.value,Z=s.editing.value,h$1=s.interaction.value,I=s.contextMenu.value,E=s.viewModels.value,H=s.pinning.value,{headerMenu:T}=H,{visibleCols:M,hasCheckboxCol:A,hasRowNumbersCol:O,colOffset:V,containerWidth:z,minTableWidth:oe,desiredTableWidth:ne}=j,k=y.currentPage??1,J=y.pageSize??25,ee=O?(k-1)*J:0,{selectedRowIds:ce,handleRowCheckboxChange:he,handleSelectAll:Se,allSelected:ye,someSelected:we}=Q,{editingCell:Ze,setEditingCell:Oe,pendingEditorValue:De,setPendingEditorValue:Be,commitCellEdit:Fe,cancelPopoverEdit:Me,popoverAnchorEl:_e,setPopoverAnchorEl:me}=Z,{setActiveCell:He,setSelectionRange:ie,handleCellMouseDown:Ve,handleSelectAllCells:Je,selectionRange:se,hasCellSelection:Qe,handleGridKeyDown:et,handleFillHandleMouseDown:We,handleCopy:tt,handleCut:at,handlePaste:it,cutRange:st,copyRange:Ke,canUndo:Ge,canRedo:ut,onUndo:dt,onRedo:ct,isDragging:nt}=h$1,{menuPosition:Te,handleCellContextMenu:mt,closeContextMenu:ft}=I,{headerFilterInput:pt,cellDescriptorInput:vt,statusBarConfig:G,showEmptyInGrid:Y,onCellError:le}=E,de=y.items,fe=y.getRowId,xe=y.layoutMode??"fill",ve=y.rowSelection??"none",n=y.suppressHorizontalScroll,F=y.stickyHeader??true,re=y.isLoading??false,Re=y.loadingMessage??"Loading\u2026",ot=y["aria-label"],$e=y["aria-labelledby"],qe=xe==="content",lt=!n&&z>0&&(oe>z||ne>z),Ce=x.value,Xe={commitCellEdit:Fe,setEditingCell:Oe,setPendingEditorValue:Be,cancelPopoverEdit:Me},je={handleCellMouseDown:Ve,setActiveCell:He,setEditingCell:Oe,handleCellContextMenu:mt},gt=q=>{if(ve!=="single")return;let ae=q.currentTarget.dataset.rowId;ae&&Q.updateSelection(ce.has(ae)?new Set:new Set([ae]));},Ao=(q,W,ae,Ie)=>{try{return ko(q,W,ae,Ie)}catch(N){return le&&le(N instanceof Error?N:new Error(String(N)),void 0),""}},ko=(q,W,ae,Ie)=>{let N=getCellRenderDescriptor(q,W,ae,Ie,vt);if(N.mode==="editing-inline"){let ue=buildInlineEditorProps(q,W,N,Xe);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(N.mode==="editing-popover"&&typeof W.cellEditor=="function"){let ue=buildPopoverEditorProps(q,W,N,De,Xe),te=W.cellEditor;return h("div",[h("div",{ref:_n=>{_n&&me(_n);},class:"ogrid-popover-anchor","aria-hidden":"true"}),_e?h(te,ue):null])}let Pe=rn(N,W.columnId,je),be=["ogrid-cell-content"];W.type==="numeric"?be.push("ogrid-cell-content--numeric"):W.type==="boolean"&&be.push("ogrid-cell-content--boolean"),N.canEditAny&&be.push("ogrid-cell-content--editable"),N.isActive&&be.push("ogrid-cell-content--active"),N.isActive&&N.isInRange&&be.push("ogrid-cell-content--active-in-range"),N.isInRange&&!N.isActive&&be.push("ogrid-cell-in-range"),N.isInCutRange&&be.push("ogrid-cell-cut");let Ae;if(N.columnType==="boolean"){let ue=!!N.displayValue;Ae=h("input",{type:"checkbox",checked:ue,disabled:!N.canEditAny,onChange:N.canEditAny?()=>{Xe.commitCellEdit(q,W.columnId,ue,!ue,N.rowIndex,N.globalColIndex);}:void 0,onClick:te=>te.stopPropagation(),style:`margin:0;cursor:${N.canEditAny?"pointer":"default"};outline:none`,"aria-label":ue?"Checked":"Unchecked"});}else {let ue=resolveCellDisplayContent(W,q,N.displayValue),te=resolveCellStyle(W,q,N.displayValue);Ae=te?h("span",{style:te},ue):ue;}return h("div",{...Pe,class:be.join(" ")},[Ae,...N.canEditAny&&N.isSelectionEndCell?[h("div",{onPointerdown:We,"aria-label":"Fill handle",class:"ogrid-fill-handle"})]:[]])},{cellStyles:Lo,cellClasses:Bo,hdrStyles:Ho,hdrClasses:Vo}=U.value,Vn=M.map(q=>({col:q,tdClasses:Bo[q.columnId]||"ogrid-data-cell",tdDynamicStyle:Lo[q.columnId]||{}})),rt=S.value,Gn=Vn,Ct=0,ht=0;if(rt){let q=new Set;for(let W of rt.pinnedLeft)q.add(W.columnId);for(let W of rt.virtualizedUnpinned)q.add(W.columnId);for(let W of rt.pinnedRight)q.add(W.columnId);Gn=Vn.filter(W=>q.has(W.col.columnId)),Ct=rt.leftSpacerWidth,ht=rt.rightSpacerWidth;}let Go=D.value,zn=q=>{let W=Ho[q.columnId]||{};return {classes:Vo[q.columnId]||"ogrid-header-cell",style:{...W,cursor:a.value?"grabbing":"grab"}}},Nn={position:"relative",flex:"1",minHeight:re&&de.length===0?"200px":"0",width:qe?"fit-content":"100%",maxWidth:"100%",overflowX:n?"hidden":lt?"auto":"hidden",overflowY:"auto",backgroundColor:"#fff",willChange:"scroll-position"};return y.rowHeight&&(Nn["--ogrid-row-height"]=`${y.rowHeight}px`),h("div",{class:"ogrid-outer-container"},[h("div",{ref:q=>{t.value=q,i.value=q;},tabindex:0,role:"region","aria-label":ot??($e?void 0:"Data grid"),"aria-labelledby":$e,onPointerdown:L,onKeydown:et,onContextmenu:P,"data-overflow-x":lt?"true":"false","data-ogrid-scroll-container":"",style:Nn},[h("div",{class:"ogrid-scroll-wrapper"},[h("div",{style:{minWidth:lt?`${oe}px`:void 0,overflowX:"clip"}},[h("div",{ref:q=>{u.value=q;},class:["ogrid-table-container",re&&de.length>0?"ogrid-table-container--loading":""]},[...a.value&&g.value!==null?[h("div",{class:"ogrid-drop-indicator",style:{left:`${g.value}px`}})]:[],h("table",{ref:q=>{m.value=q;},class:"ogrid-table",role:"grid",style:{minWidth:`${oe}px`},...c.value?{"data-virtual-scroll":""}:{}},[h("thead",{class:F?"ogrid-thead ogrid-sticky-header":"ogrid-thead"},[...y.showColumnLetters?[h("tr",{class:"ogrid-column-letter-row"},[...A?[h("th",{class:"ogrid-column-letter-cell"})]:[],...O?[h("th",{class:"ogrid-column-letter-cell"})]:[],...M.map((q,W)=>{let{classes:ae,style:Ie}=zn(q);return h("th",{key:q.columnId,class:`ogrid-column-letter-cell ${ae}`,style:Ie},indexToColumnLetter(W))})])]:[],...Ce.map((q,W)=>h("tr",{key:W,class:"ogrid-header-row"},[...W===Ce.length-1&&A?[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:ye,indeterminate:we&&!ye,ariaLabel:"Select all rows",onChange:ae=>Se(!!ae)}))]:[],...W===0&&W<Ce.length-1&&A?[h("th",{rowSpan:Ce.length-1,class:"ogrid-checkbox-spacer",style:{width:`${CHECKBOX_COLUMN_WIDTH}px`,minWidth:`${CHECKBOX_COLUMN_WIDTH}px`}})]:[],...W===Ce.length-1&&O?[(()=>{let ae=j.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("th",{class:"ogrid-row-number-header",style:{width:`${ae}px`,minWidth:`${ae}px`,maxWidth:`${ae}px`,position:"sticky",left:A?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:3}},["#",h("div",{onPointerdown:Ie=>{He(null),ie(null),t.value?.focus({preventScroll:true}),Ie.stopPropagation(),d(Ie,{columnId:ROW_NUMBER_COLUMN_ID,name:"#"});},class:"ogrid-resize-handle"})])})()]:[],...W===0&&W<Ce.length-1&&O?[(()=>{let ae=j.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("th",{rowSpan:Ce.length-1,class:"ogrid-row-number-spacer",style:{width:`${ae}px`,position:"sticky",left:A?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:3}})})()]:[],...q.map((ae,Ie)=>{if(ae.isGroup)return h("th",{key:Ie,colSpan:ae.colSpan,scope:"colgroup",class:"ogrid-column-group-header"},ae.label);if(!ae.columnDef)return null;let N=ae.columnDef,{classes:Pe,style:be}=zn(N),ue=y.sortBy===N.columnId?y.sortDirection==="asc"?"ascending":"descending":void 0;return h("th",{key:N.columnId,scope:"col","data-column-id":N.columnId,rowSpan:Ce.length>1?Ce.length-W:void 0,class:Pe,style:be,"aria-sort":ue,onPointerdown:te=>v(N.columnId,te)},[h("div",{class:"ogrid-header-content"},[h(e.ColumnHeaderFilter,getHeaderFilterConfig(N,pt)),h("button",{onClick:te=>{te.stopPropagation(),T.isOpen&&T.openForColumn===N.columnId?T.close():T.open(N.columnId,te.currentTarget);},"aria-label":"Column options",title:"Column options",class:"ogrid-column-menu-btn"},"\u22EE")]),h("div",{onPointerdown:te=>{He(null),ie(null),t.value?.focus({preventScroll:true}),te.stopPropagation(),d(te,N);},onDblclick:te=>R(te,N),class:"ogrid-resize-handle"})])})]))]),...Y?[]:[h("tbody",{},(()=>{let q=c.value,W=p.value,ae=q?W.startIndex:0,Ie=q?Math.min(W.endIndex,de.length-1):de.length-1,N=[];q&&W.offsetTop>0&&N.push(h("tr",{key:"__vs-top",style:{height:`${W.offsetTop}px`}}));for(let Pe=ae;Pe<=Ie;Pe++){let be=de[Pe];if(!be)continue;let Ae=fe(be),ue=ce.has(Ae);N.push(h("tr",{key:Ae,"data-row-id":Ae,"aria-selected":ue||void 0,onClick:gt,style:{cursor:ve==="single"?"pointer":void 0}},[...A?[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":Pe,"data-col-index":0,onClick:b,class:"ogrid-checkbox-wrapper"},e.renderCheckbox({modelValue:ue,ariaLabel:`Select row ${Pe+1}`,onChange:te=>he(Ae,te,Pe,f.value)})))]:[],...O?[(()=>{let te=j.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("td",{class:"ogrid-row-number-cell",style:{width:`${te}px`,minWidth:`${te}px`,maxWidth:`${te}px`,padding:"6px",position:"sticky",left:A?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:2}},String(ee+Pe+1))})()]:[],...Ct>0?[h("td",{key:"__col-spacer-left",style:{width:`${Ct}px`,minWidth:`${Ct}px`,maxWidth:`${Ct}px`,padding:"0"}})]:[],...Gn.map(te=>h("td",{key:te.col.columnId,"data-column-id":te.col.columnId,class:te.tdClasses,style:te.tdDynamicStyle},[Ao(be,te.col,Pe,Go.get(te.col.columnId)??0)])),...ht>0?[h("td",{key:"__col-spacer-right",style:{width:`${ht}px`,minWidth:`${ht}px`,maxWidth:`${ht}px`,padding:"0"}})]:[]]));}return q&&W.offsetBottom>0&&N.push(h("tr",{key:"__vs-bottom",style:{height:`${W.offsetBottom}px`}})),N})())]]),...Y&&y.emptyState?[e.renderEmptyState(y.emptyState)]:[]])])])]),...Te?[h(Teleport,{to:"body"},h(e.GridContextMenu,{x:Te.x,y:Te.y,hasSelection:Qe,canUndo:Ge,canRedo:ut,onUndo:dt??Uo,onRedo:ct??Uo,onCopy:tt,onCut:at,onPaste:()=>{it();},onSelectAll:Je,onClose:ft}))]:[],h(hn,{containerRef:u,selectionRange:se,copyRange:Ke,cutRange:st,colOffset:V,items:de,visibleColumns:y.visibleColumns instanceof Set?Array.from(y.visibleColumns):y.visibleColumns,columnSizingOverrides:j.columnSizingOverrides,columnOrder:y.columnOrder}),...y.formulaReferences&&y.formulaReferences.length>0?[h(wn,{containerEl:u.value,references:y.formulaReferences,colOffset:V})]:[],h(e.ColumnHeaderMenu,{isOpen:T.isOpen,anchorElement:T.anchorElement,onClose:T.close,onPinLeft:T.handlePinLeft,onPinRight:T.handlePinRight,onUnpin:T.handleUnpin,onSortAsc:T.handleSortAsc,onSortDesc:T.handleSortDesc,onClearSort:T.handleClearSort,onAutosizeThis:T.handleAutosizeThis,onAutosizeAll:T.handleAutosizeAll,canPinLeft:T.canPinLeft,canPinRight:T.canPinRight,canUnpin:T.canUnpin,currentSort:T.currentSort,isSortable:T.isSortable,isResizable:T.isResizable}),...G?[h(Rn,{totalCount:G.totalCount,filteredCount:G.filteredCount,selectedCount:G.selectedCount??ce.size,selectedCellCount:se?(Math.abs(se.endRow-se.startRow)+1)*(Math.abs(se.endCol-se.startCol)+1):void 0,aggregation:G.aggregation,suppressRowCount:G.suppressRowCount})]:[],...re?[h("div",{class:"ogrid-loading-overlay"},e.renderSpinner(Re))]:[]])}}})}var vn={width:"100%",height:"100%",display:"flex",alignItems:"center",padding:"0 2px",boxSizing:"border-box"};function Fa(e){let{renderCheckbox:o,renderDatePicker: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 u=ref(null),m=ref(null),f=ref(null),s=ref(t.value),a=ref(0),g=()=>{let c=m.value,d=f.value;if(!c||!d)return;let R=c.getBoundingClientRect(),w=200,S=window.innerHeight-R.bottom,D=S<w&&R.top>S;d.style.position="fixed",d.style.left=`${R.left}px`,d.style.width=`${R.width}px`,d.style.maxHeight=`${w}px`,d.style.zIndex="9999",d.style.right="auto",d.style.textAlign="left",D?(d.style.top="auto",d.style.bottom=`${window.innerHeight-R.top}px`):d.style.top=`${R.bottom}px`;},v=null;onMounted(()=>{nextTick(()=>{if(m.value){m.value.focus({preventScroll:true}),g();let c=m.value,d=c.closest("[data-ogrid-scroll-container]")??c.closest('[style*="overflow"]'),R=()=>{t.onCancel&&t.onCancel();},w=requestAnimationFrame(()=>{d&&d.addEventListener("scroll",R,{passive:true}),window.addEventListener("scroll",R,{passive:true});});v=()=>{cancelAnimationFrame(w),d&&d.removeEventListener("scroll",R),window.removeEventListener("scroll",R);};return}u.value?.focus({preventScroll:true}),u.value?.select();});}),onUnmounted(()=>{v?.();}),watch(()=>t.value,c=>{s.value=c;}),(()=>{let d=(t.column.cellEditorParams?.values??[]).findIndex(R=>String(R)===String(t.value));a.value=Math.max(d,0);})();let p=()=>{nextTick(()=>{let c=f.value;if(!c)return;c.children[a.value]?.scrollIntoView({block:"nearest"});});},C=c=>{let d=t.column.cellEditorParams?.formatValue;return d?d(c):c!=null?String(c):""},r=c=>{let d=t.column.cellEditorParams?.values??[];switch(c.key){case "ArrowDown":c.preventDefault(),a.value=Math.min(a.value+1,d.length-1),p();break;case "ArrowUp":c.preventDefault(),a.value=Math.max(a.value-1,0),p();break;case "Enter":c.preventDefault(),c.stopPropagation(),d.length>0&&a.value<d.length&&t.onCommit(d[a.value]);break;case "Tab":c.preventDefault(),d.length>0&&a.value<d.length&&t.onCommit(d[a.value]);break;case "Escape":c.preventDefault(),c.stopPropagation(),t.onCancel();break}};return ()=>{if(t.editorType==="checkbox"){let c=!!t.value;return h("div",{style:{...vn,justifyContent:"center"}},o({checked:c,onChange:d=>t.onCommit(d),onCancel:t.onCancel}))}if(t.editorType==="select"){let c=t.column.cellEditorParams?.values??[];return h("div",{ref:d=>{m.value=d;},tabindex:0,style:{...vn,position:"relative"},onKeydown:r},[h("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",cursor:"pointer",fontSize:"13px",color:"inherit"}},[h("span",C(t.value)),h("span",{style:{marginLeft:"4px",fontSize:"10px",opacity:"0.5"}},"\u25BE")]),h("div",{ref:d=>{f.value=d;},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"}},c.map((d,R)=>h("div",{key:String(d),role:"option","aria-selected":R===a.value,onClick:()=>t.onCommit(d),style:{padding:"6px 8px",cursor:"pointer",color:"var(--ogrid-fg, #242424)",...R===a.value?{background:"var(--ogrid-bg-hover, #e8f0fe)"}:{}}},C(d))))])}if(t.editorType==="date"){let c="";if(s.value){let d=new Date(String(s.value));Number.isNaN(d.getTime())||(c=d.toISOString().slice(0,10));}return h("div",{style:vn},l({value:c,onChange:d=>t.onCommit(d),onCancel:t.onCancel}))}return h("div",{style:vn},h("input",{ref:c=>{u.value=c;},type:"text",value:s.value!=null?String(s.value):"",style:{width:"100%",height:"100%",border:"none",outline:"none",padding:"0 4px",fontSize:"inherit",boxSizing:"border-box"},onInput:c=>{s.value=c.target.value;},onKeydown:c=>{c.key==="Enter"&&(c.preventDefault(),t.onCommit(s.value)),c.key==="Escape"&&(c.preventDefault(),t.onCancel()),c.key==="Tab"&&(c.preventDefault(),t.onCommit(s.value));},onBlur:()=>t.onCommit(s.value)}))}}})}var La=240,Hn=36,gn={columns:"Columns",filters:"Filters"},Ba={columns:"\u2261",filters:"\u2A65"};function Mo(e){let o=e.activePanel!==null,l=e.position??"right",t={display:"flex",flexDirection:"column",width:`${Hn}px`,background:"var(--ogrid-header-bg, #f5f5f5)",...l==="right"?{borderLeft:"1px solid var(--ogrid-border, #e0e0e0)"}:{borderRight:"1px solid var(--ogrid-border, #e0e0e0)"}},u=h("div",{style:t,role:"tablist","aria-label":"Side bar tabs"},e.panels.map(s=>h("button",{key:s,role:"tab","aria-selected":e.activePanel===s,"aria-label":gn[s],title:gn[s],onClick:()=>e.onPanelChange(e.activePanel===s?null:s),style:{width:`${Hn}px`,height:`${Hn}px`,border:"none",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:"14px",display:"flex",alignItems:"center",justifyContent:"center",background:e.activePanel===s?"var(--ogrid-bg, #fff)":"transparent",fontWeight:e.activePanel===s?"bold":"normal"}},Ba[s]))),m=null;if(o&&e.activePanel){let s={width:`${La}px`,display:"flex",flexDirection:"column",overflow:"hidden",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",...l==="right"?{borderLeft:"1px solid var(--ogrid-border, #e0e0e0)"}:{borderRight:"1px solid var(--ogrid-border, #e0e0e0)"}},a=[];if(e.activePanel==="columns"){let g=e.columns.every(v=>e.visibleColumns.has(v.columnId));a.push(h("div",{style:{display:"flex",gap:"8px",marginBottom:"8px"}},[h("button",{disabled:g,onClick:()=>{let v=new Set(e.visibleColumns);e.columns.forEach(i=>v.add(i.columnId)),e.onSetVisibleColumns(v);},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 v=new Set;e.columns.forEach(i=>{i.required&&e.visibleColumns.has(i.columnId)&&v.add(i.columnId);}),e.onSetVisibleColumns(v);},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(v=>{a.push(h("label",{key:v.columnId,style:{display:"flex",alignItems:"center",gap:"6px",padding:"2px 0",cursor:"pointer"}},[h("input",{type:"checkbox",checked:e.visibleColumns.has(v.columnId),disabled:v.required,onChange:i=>e.onVisibilityChange(v.columnId,i.target.checked)}),h("span",null,v.name)]));});}e.activePanel==="filters"&&(e.filterableColumns.length===0?a.push(h("div",{style:{color:"var(--ogrid-muted, #999)",fontStyle:"italic"}},"No filterable columns")):e.filterableColumns.forEach(g=>{let v=g.filterField,i=[h("div",{style:{fontWeight:"500",marginBottom:"4px",fontSize:"13px"}},g.name)];if(g.filterType==="text"){let p=e.filters[v],C=p?.type==="text"?p.value:"";i.push(h("input",{type:"text",value:C,onInput:r=>{let c=r.target.value;e.onFilterChange(v,c?{type:"text",value:c}:void 0);},placeholder:`Filter ${g.name}...`,"aria-label":`Filter ${g.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(g.filterType==="multiSelect"){let C=(e.filterOptions[v]??[]).map(r=>{let c=e.filters[v],d=c?.type==="multiSelect"?c.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:d,onChange:R=>{let w=e.filters[v],S=w?.type==="multiSelect"?w.value:[],D=R.target.checked?[...S,r]:S.filter($=>$!==r);e.onFilterChange(v,D.length>0?{type:"multiSelect",value:D}:void 0);}}),h("span",null,r)])});i.push(h("div",{style:{maxHeight:"120px",overflowY:"auto"},role:"group","aria-label":`${g.name} options`},C));}if(g.filterType==="date"){let p=e.filters[v],C=p?.type==="date"?p.value:{from:void 0,to:void 0};i.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 c=r.target.value||void 0,d=C.to;e.onFilterChange(v,c||d?{type:"date",value:{from:c,to:d}}:void 0);},"aria-label":`${g.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 c=r.target.value||void 0,d=C.from;e.onFilterChange(v,d||c?{type:"date",value:{from:d,to:c}}:void 0);},"aria-label":`${g.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"}})])]));}a.push(h("div",{key:g.columnId,style:{marginBottom:"12px"}},i));})),m=h("div",{role:"tabpanel","aria-label":gn[e.activePanel],style:s},[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,gn[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"}},a)]);}let f=[];return l==="left"?(f.push(u),m&&f.push(m)):(m&&f.push(m),f.push(u)),h("div",{style:{display:"flex",flexDirection:"row",flexShrink:"0"},role:"complementary","aria-label":"Side bar"},f)}function Ha(e){return defineComponent({name:"OGrid",props:{gridProps:{type:Object,required:true}},setup(o,{expose:l}){let t=computed(()=>o.gridProps),{dataGridProps:u,pagination:m,columnChooser:f,layout:s,api:a}=Ft(t);l({api:a});let g=ref(false),v=()=>{g.value=!g.value;},i=p=>{p.key==="Escape"&&g.value&&(g.value=false);};return onMounted(()=>{document.addEventListener("keydown",i);}),onUnmounted(()=>{document.removeEventListener("keydown",i);}),()=>{let p=s.value.sideBarProps,C=p!=null,r=p?.position??"right",c=[];s.value.toolbar&&c.push(s.value.toolbar);let R=s.value.fullScreen===true?h("button",{type:"button",title:g.value?"Exit fullscreen":"Fullscreen","aria-label":g.value?"Exit fullscreen":"Fullscreen",onClick:v,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))"}},[g.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,w=f.value.placement==="toolbar"?h(e.ColumnChooser,{columns:f.value.columns,visibleColumns:f.value.visibleColumns,onVisibilityChange:f.value.onVisibilityChange}):null,S=h(e.PaginationControls,{currentPage:m.value.page,pageSize:m.value.pageSize,totalCount:m.value.displayTotalCount,onPageChange:m.value.setPage,onPageSizeChange:x=>{m.value.setPageSize(x);},pageSizeOptions:m.value.pageSizeOptions,entityLabelPlural:m.value.entityLabelPlural}),D=h("div",{style:{flex:"1",minWidth:"0",minHeight:"0",display:"flex",flexDirection:"column"}},[h(e.DataGridTable,{gridProps:u.value})]),$=[];C&&r==="left"&&$.push(Mo(p)),$.push(D),C&&r!=="left"&&$.push(Mo(p));let L=c.length>0||w!=null||R!=null,P=g.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"},b=g.value?{display:"flex",flexDirection:"column",flex:"1",minHeight:"0",overflow:"hidden",background:"var(--ogrid-bg, #fff)"}:void 0;return h("div",{class:s.value.className,style:P},[h("div",{style:b??{}},[...L?[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"}},c),h("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},[...w?[w]:[],...R?[R]:[]])])]:[],...s.value.toolbarBelow?[h("div",{style:{padding:"8px 12px",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))"}},[s.value.toolbarBelow])]:[],...s.value.formulaBar?[s.value.formulaBar]:[],h("div",{style:{display:"flex",flex:"1",minHeight:"0"}},$),...s.value.sheetTabs?[s.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{bn as FormulaBar,wn as FormulaRefOverlay,hn as MarchingAntsOverlay,yn as SheetTabs,Rn as StatusBar,Ia as createDataGridTable,Fa as createInlineCellEditor,Ha as createOGrid,rn as getCellInteractionProps,Mt as useActiveCell,Ot as useCellEditing,At as useCellSelection,Lt as useClipboard,Po as useColumnChooserState,xo as useColumnHeaderFilterState,Wt as useColumnHeaderMenuState,Nt as useColumnPinning,en as useColumnReorder,$t as useColumnResize,kt as useContextMenu,Kt as useDataGridState,ln as useDataGridTableSetup,Jt as useDateFilterState,qt as useDebounce,Ro as useDebouncedCallback,Vt as useFillHandle,Tt as useFilterOptions,Et as useFormulaBar,To as useInlineCellEditorState,Bt as useKeyboardNavigation,jt as useMultiSelectFilterState,Ft as useOGrid,Zt as usePeopleFilterState,Do as useRichSelectState,Ut as useRowSelection,bt as useSideBarState,zt as useTableLayout,Xt as useTextFilterState,Gt as useUndoRedo,nn as useVirtualScroll};
|
|
1
|
+
import {injectGlobalStyles,Z_INDEX,getStatusBarParts,measureRange,flattenColumns,getMultiSelectFilterFields,deriveFilterOptionsFromData,processClientSideData,processClientSideDataAsync,validateColumns,validateRowIds,computeRowSelectionState,parseTsvClipboard,applyPastedValues,applyCutClear,normalizeSelectionRange,applyCellDeletion,computeTabNavigation,computeArrowNavigation,buildCellIndex,applyFillValues,UndoRedoStack,CHECKBOX_COLUMN_WIDTH,DEFAULT_MIN_COLUMN_WIDTH,CELL_PADDING,measureColumnContentWidth,resolveResponsiveConfig,applyResponsiveHiding,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,parseUserInputDate,rangesEqual,formatSelectionAsTsv,calculateDropTarget,reorderColumnArray,parseValue,getCellValue,computeNextSortState,mergeFilter,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,areFillCompatible,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,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 Un=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 o=ref(null),t=ref(null),n=0,i,m=computed(()=>e.copyRange??e.cutRange),s=()=>{let u=toValue(e.containerRef);if(!u){o.value=null,t.value=null;return}o.value=e.selectionRange?measureRange(u,e.selectionRange,e.colOffset):null,t.value=m.value?measureRange(u,m.value,e.colOffset):null;};onMounted(()=>{injectGlobalStyles("ogrid-marching-ants-keyframes","@keyframes ogrid-marching-ants{to{stroke-dashoffset:-8}}");}),watch([()=>e.selectionRange,m,()=>toValue(e.containerRef),()=>e.items,()=>e.visibleColumns,()=>e.columnSizingOverrides,()=>e.columnOrder],()=>{if(!e.selectionRange&&!m.value){o.value=null,t.value=null;return}n=requestAnimationFrame(s);let u=toValue(e.containerRef);u&&(i?.disconnect(),i=new ResizeObserver(s),i.observe(u));},{immediate:true}),onUnmounted(()=>{cancelAnimationFrame(n),i?.disconnect();});let a=computed(()=>{let u=e.selectionRange,f=m.value;return u!=null&&f!=null&&u.startRow===f.startRow&&u.startCol===f.startCol&&u.endRow===f.endRow&&u.endCol===f.endCol});return ()=>!o.value&&!t.value?null:h("div",{style:{position:"relative"}},[o.value&&!a.value&&!(e.selectionRange&&e.selectionRange.startRow===e.selectionRange.endRow&&e.selectionRange.startCol===e.selectionRange.endCol)?h("svg",{style:{position:"absolute",top:`${o.value.top}px`,left:`${o.value.left}px`,width:`${o.value.width}px`,height:`${o.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,o.value.width-2),height:Math.max(0,o.value.height-2),fill:"none",stroke:"var(--ogrid-selection, #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, #217346)","stroke-width":2,"stroke-dasharray":"4 4",style:{animation:"ogrid-marching-ants 0.5s linear infinite"}})]):null])}});var On=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 o=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"}},o.map((t,n)=>h("span",{key:t.key,style:{display:"inline-flex",alignItems:"center",gap:"4px",...n<o.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 Mn=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:o}){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=>o("inputChange",n.target.value),onKeydown:n=>handleFormulaBarKeyDown(n.key,()=>n.preventDefault(),()=>o("commit"),()=>o("cancel")),onClick:()=>{e.isEditing||o("startEditing");},onDblclick:()=>{e.isEditing||o("startEditing");},"aria-label":"Formula input",spellcheck:false,autocomplete:"off"})])}});var tl={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"},nl={background:"none",border:"none",cursor:"pointer",padding:"4px 10px",fontSize:"16px",lineHeight:"22px",color:"var(--ogrid-fg-secondary, #666)",flexShrink:0},io={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"},ol={...io,fontWeight:600,borderBottomColor:"var(--ogrid-primary, #217346)",background:"var(--ogrid-bg, #fff)"},An=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:o}){return ()=>h("div",{style:tl,role:"tablist","aria-label":"Sheet tabs"},[e.showAddButton?h("button",{type:"button",style:nl,onClick:()=>o("sheetAdd"),title:"Add sheet","aria-label":"Add sheet"},"+"):null,...e.sheets.map(t=>{let n=t.id===e.activeSheet,i=n?ol:io,m=n&&t.color?{...i,borderBottomColor:t.color}:i;return h("button",{key:t.id,type:"button",role:"tab","aria-selected":n,style:m,onClick:()=>o("sheetChange",t.id)},t.name)})])}});function il(e,o,t){let n=o.col+t,i=(o.endCol??o.col)+t,m=o.endRow??o.row,s=e.querySelector(`[data-row-index="${o.row}"][data-col-index="${n}"]`),a=e.querySelector(`[data-row-index="${m}"][data-col-index="${i}"]`);if(!s||!a)return null;let u=e.getBoundingClientRect(),f=s.getBoundingClientRect(),p=a.getBoundingClientRect();return {top:Math.round(f.top-u.top),left:Math.round(f.left-u.left),width:Math.round(p.right-f.left),height:Math.round(p.bottom-f.top),color:FORMULA_REF_COLORS[o.colorIndex%FORMULA_REF_COLORS.length]}}var Ln=defineComponent({name:"FormulaRefOverlay",props:{containerEl:{type:Object,default:null},references:{type:Array,required:true},colOffset:{type:Number,required:true}},setup(e){let o=ref([]),t=0;function n(){let i=e.containerEl,m=e.references;if(!i||m.length===0){o.value=[];return}let s=[];for(let a of m){let u=il(i,a,e.colOffset);u&&s.push(u);}o.value=s;}return watch(()=>[e.references,e.containerEl,e.colOffset],()=>{if(cancelAnimationFrame(t),!e.containerEl||e.references.length===0){o.value=[];return}t=requestAnimationFrame(n);},{immediate:true}),()=>o.value.length===0?null:o.value.map((i,m)=>h("svg",{key:m,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 Gt(e,o){let t=ref({}),n=ref({}),i=computed(()=>[...o.value].sort().join(",")),m=async()=>{let s=e.value,a=o.value,u="fetchFilterOptions"in s&&typeof s.fetchFilterOptions=="function"?s.fetchFilterOptions.bind(s):void 0;if(!u){t.value={},n.value={};return}let f={};a.forEach(d=>{f[d]=true;}),n.value=f;let p={};await Promise.all(a.map(async d=>{try{p[d]=await u(d);}catch{p[d]=[];}})),t.value=p,n.value={};};return watch([e,i],()=>{m().catch(()=>{});},{immediate:true}),{filterOptions:t,loadingOptions:n}}function nt(e){let o=unref(e);return customRef((t,n)=>({get(){return isRef(e)&&(o=e.value),o},set(i){o=i,n();}}))}function mo(e){let{formulas:o,items:t,flatColumns:n,initialFormulas:i,onFormulaRecalc:m,formulaFunctions:s,namedRanges:a,sheets:u}=e,f=nt(t),p=nt(n),d=nt(m),c=shallowRef(null),C=false,r=computed(()=>o?.value??false);function v(){return createGridDataAccessor(f.value,p.value)}watch(r,y=>{if(y&&!c.value){if(c.value=new FormulaEngine({customFunctions:s,namedRanges:a}),u)for(let[x,F]of Object.entries(u))c.value.registerSheet(x,F);if(i&&!C){C=true;let x=v(),F=c.value.loadFormulas(i,x);F.updatedCells.length>0&&d.value?.(F);}}else !y&&c.value&&(c.value=null);},{immediate:true});function h(y,x){return c.value?.getValue(y,x)}function P(y,x){return c.value?.hasFormula(y,x)??false}function I(y,x){return c.value?.getFormula(y,x)}function w(y,x,F){if(!c.value)return;let S=v(),X=c.value.setFormula(y,x,F,S);X.updatedCells.length>0&&d.value?.(X);}function g(y,x){if(!c.value)return;let F=v(),S=c.value.onCellChanged(y,x,F);S.updatedCells.length>0&&d.value?.(S);}function b(y,x){return c.value?.getPrecedents(y,x)??[]}function E(y,x){return c.value?.getDependents(y,x)??[]}function D(y,x){return c.value?.getAuditTrail(y,x)??null}return {enabled:r,getFormulaValue:h,hasFormula:P,getFormula:I,setFormula:w,onCellChanged:g,getPrecedents:b,getDependents:E,getAuditTrail:D}}function zt(e){let{activeCol:o,activeRow:t,activeCellRef:n,getFormula:i,getRawValue:m,setFormula:s,onCellValueChanged:a}=e,u=ref(false),f=ref(""),p=ref(false),d=computed(()=>deriveFormulaBarText(o.value,t.value,i,m));watch([o,t],()=>{u.value=false,p.value=false;});let c=()=>{f.value=d.value,u.value=true,p.value=true;},C=I=>{f.value=I;},r=()=>{let I=o.value,w=t.value;I==null||w==null||!s||(processFormulaBarCommit(f.value,I,w,s,a),u.value=false,p.value=false);},v=()=>{u.value=false,p.value=false,f.value="";},h=computed(()=>u.value?f.value:d.value),P=computed(()=>extractFormulaReferences(h.value));return {cellRef:n,formulaText:h,isEditing:u,onInputChange:C,onCommit:r,onCancel:v,startEditing:c,referencedCells:P,isFormulaBarEditing:p}}var fo=["columns","filters"];function Ut(e){let{config:o}=e,t=o!=null&&o!==false,n=(()=>{if(!t||o===true)return {panels:fo,position:"right",defaultPanel:null};let f=o;return {panels:f.panels??fo,position:f.position??"right",defaultPanel:f.defaultPanel??null}})(),i=ref(n.defaultPanel),m=f=>{i.value=f;},s=f=>{i.value=i.value===f?null:f;},a=()=>{i.value=null;},u=computed(()=>i.value!==null);return {isEnabled:t,activePanel:i,setActivePanel:m,panels:n.panels,position:n.position,isOpen:u,toggle:s,close:a}}var Ll=25,Bl={};function _t(e){let o=computed(()=>{let l=e.value;return {columns:l.columns,columnOrder:l.columnOrder,onColumnOrderChange:l.onColumnOrderChange,onColumnResized:l.onColumnResized,onColumnPinned:l.onColumnPinned,columnChooser:l.columnChooser}}),t=computed(()=>{let l=e.value,k="data"in l?l.data:void 0,le="dataSource"in l?l.dataSource:void 0;return k&&le&&console.warn("[OGrid] Both data and dataSource provided. dataSource takes precedence."),{getRowId:l.getRowId,data:k,dataSource:le}}),n=computed(()=>{let l=e.value;return {page:l.page,pageSize:l.pageSize,sort:l.sort,filters:l.filters,visibleColumns:l.visibleColumns,isLoading:l.isLoading}}),i=computed(()=>{let l=e.value;return {onPageChange:l.onPageChange,onPageSizeChange:l.onPageSizeChange,onSortChange:l.onSortChange,onFiltersChange:l.onFiltersChange,onVisibleColumnsChange:l.onVisibleColumnsChange,onFirstDataRendered:l.onFirstDataRendered,onError:l.onError}}),m=computed(()=>{let l=e.value;return {defaultPageSize:l.defaultPageSize??Ll,defaultSortBy:l.defaultSortBy,defaultSortDirection:l.defaultSortDirection??"asc",entityLabelPlural:l.entityLabelPlural??"items"}}),s=computed(()=>o.value.columnChooser===false?"none":o.value.columnChooser==="sidebar"?"sidebar":"toolbar"),a=computed(()=>flattenColumns(o.value.columns)),u=computed(()=>t.value.dataSource!=null),f=computed(()=>!u.value),p=ref([]),d=ref(false),c=computed(()=>t.value.data??p.value),C=computed(()=>n.value.isLoading??d.value),r=computed(()=>m.value.defaultSortBy??a.value[0]?.columnId??""),v=ref(1),h$1=ref(m.value.defaultPageSize),P=ref({field:r.value,direction:m.value.defaultSortDirection}),I=ref({}),w=ref((()=>{let l=a.value.filter(k=>k.defaultVisible!==false).map(k=>k.columnId);return new Set(l.length>0?l:a.value.map(k=>k.columnId))})()),g=ref({}),b={};for(let l of flattenColumns(e.value.columns))l.pinned&&(b[l.columnId]=l.pinned);let E=ref(b),D=computed(()=>n.value.page??v.value),y=computed(()=>n.value.pageSize??h$1.value),x=computed(()=>n.value.sort??P.value),F=computed(()=>n.value.filters??I.value),S=computed(()=>n.value.visibleColumns??w.value),X=l=>{n.value.page===void 0&&(v.value=l),i.value.onPageChange?.(l);},Q=l=>{n.value.pageSize===void 0&&(h$1.value=l),i.value.onPageSizeChange?.(l),X(1);},J=ref(0),R=l=>{n.value.sort===void 0&&(P.value=l),i.value.onSortChange?.(l),X(1),J.value++;},T=l=>{n.value.filters===void 0&&(I.value=l),i.value.onFiltersChange?.(l),X(1);},U=l=>{n.value.visibleColumns===void 0&&(w.value=l),i.value.onVisibleColumnsChange?.(l);},_=(l,k)=>{R(computeNextSortState(x.value,l,k));},O=(l,k)=>{T(mergeFilter(F.value,l,k));},N=(l,k)=>{let le=new Set(S.value);k?le.add(l):le.delete(l),U(le);},B=ref(new Set),A=computed(()=>e.value.selectedRows),L=computed(()=>A.value??B.value),W=l=>{A.value===void 0&&(B.value=new Set(l.selectedRowIds)),e.value.onSelectionChange?.(l);},re=computed(()=>getMultiSelectFilterFields(a.value)),ne=computed(()=>t.value.dataSource??{fetchFilterOptions:void 0}),{filterOptions:H,loadingOptions:ee}=Gt(ne,re),te=computed(()=>t.value.dataSource?.fetchFilterOptions!=null),Ce=computed(()=>te.value?H.value:deriveFilterOptionsFromData(c.value,a.value)),be=computed(()=>!!e.value.workerSort),Pe=null,Me=-1,Ge=null,Rt=null,rt=-1,at=computed(()=>{if(!f.value||be.value)return null;let l=c.value,k=a.value,le=F.value,Se=J.value,Qe=x.value.field,et=x.value.direction,tt=Se!==Me||le!==Ge||k!==Rt||l.length!==rt,Ie;if(tt||Pe===null){Me=Se,Ge=le,Rt=k,rt=l.length;let fe=processClientSideData(l,k,le,Qe,et),He=new Map;for(let ve=0;ve<l.length;ve++)He.set(l[ve],ve);Pe=fe.map(ve=>{let De=He.get(ve);return De!==void 0?De:-1}).filter(ve=>ve!==-1),Ie=fe;}else Ie=Pe.map(fe=>l[fe]).filter(fe=>fe!==void 0);let Be=Ie.length,Ct=(D.value-1)*y.value;return {items:Ie.slice(Ct,Ct+y.value),totalCount:Be}}),je=ref(null),it=0,Fe=null,st=-1,we=null,ze=null,oe=-1;watch([f,be,c,a,F,J,D,y],()=>{if(!f.value||!be.value)return;let l=c.value,k=a.value,le=F.value,Se=J.value,Qe=x.value.field,et=x.value.direction,tt=D.value,Ie=y.value,Be=++it;if(Se!==st||le!==we||k!==ze||l.length!==oe||Fe===null)st=Se,we=le,ze=k,oe=l.length,Fe=null,processClientSideDataAsync(l,k,le,Qe,et).then(Re=>{if(Be!==it||_e)return;let fe=new Map;for(let M=0;M<l.length;M++)fe.set(l[M],M);Fe=Re.map(M=>{let z=fe.get(M);return z!==void 0?z:-1}).filter(M=>M!==-1);let He=Re.length,ve=(tt-1)*Ie,De=Re.slice(ve,ve+Ie);je.value={items:De,totalCount:He};}).catch(()=>{if(Be!==it||_e)return;let Re=processClientSideData(l,k,le,Qe,et),fe=new Map;for(let M=0;M<l.length;M++)fe.set(l[M],M);Fe=Re.map(M=>{let z=fe.get(M);return z!==void 0?z:-1}).filter(M=>M!==-1);let He=Re.length,ve=(tt-1)*Ie,De=Re.slice(ve,ve+Ie);je.value={items:De,totalCount:He};});else {let Re=Fe.map(De=>l[De]).filter(De=>De!==void 0),fe=Re.length,He=(tt-1)*Ie,ve=Re.slice(He,He+Ie);je.value={items:ve,totalCount:fe};}},{immediate:true});let Ne=computed(()=>{let l=at.value;return l||je.value}),Ye=ref([]),Ee=ref(0),Ze=ref(false),Je=0,_e=false,dt=ref(0),ct=()=>{if(!u.value||!t.value.dataSource){u.value||(Ze.value=false);return}let l=++Je;Ze.value=true,t.value.dataSource.fetchPage({page:D.value,pageSize:y.value,sort:{field:x.value.field,direction:x.value.direction},filters:F.value}).then(k=>{l!==Je||_e||(Ye.value=k.items,Ee.value=k.totalCount);}).catch(k=>{l!==Je||_e||(i.value.onError?.(k),Ye.value=[],Ee.value=0);}).finally(()=>{l===Je&&!_e&&(Ze.value=false);});};onMounted(()=>{validateColumns(a.value),ct();}),watch([()=>t.value.dataSource,D,y,()=>x.value.field,()=>x.value.direction,F,dt],()=>{ct();}),onUnmounted(()=>{_e=true;});let ke=computed(()=>f.value&&Ne.value?Ne.value.items:Ye.value),mt=computed(()=>f.value&&Ne.value?Ne.value.totalCount:Ee.value),ft=computed(()=>!!e.value.formulas),We=ref(0),bt=l=>{We.value+=1,e.value.onFormulaRecalc?.(l);},he=mo({formulas:ft,items:ke,flatColumns:a,initialFormulas:e.value.initialFormulas,onFormulaRecalc:bt,formulaFunctions:e.value.formulaFunctions,namedRanges:e.value.namedRanges,sheets:e.value.sheets}),pt=false,St=false;watch(ke,l=>{!pt&&l.length>0&&(pt=true,i.value.onFirstDataRendered?.()),!St&&l.length>0&&(St=true,validateRowIds(l,t.value.getRowId));});let Ke=computed(()=>Object.values(F.value).some(l=>l!==void 0)),vt=computed(()=>a.value.map(l=>({columnId:l.columnId,name:l.name,required:l.required===true}))),yt=computed(()=>{let l=e.value.statusBar;if(!l)return;if(typeof l=="object")return l;let k=f.value?t.value.data?.length??0:Ee.value,le=mt.value;return {totalCount:k,filteredCount:Ke.value?le:void 0,selectedCount:L.value.size,suppressRowCount:true}}),wt=(l,k)=>{g.value={...g.value,[l]:k},o.value.onColumnResized?.(l,k);},xt=(l,k)=>{if(k===null){let{[l]:le,...Se}=E.value;E.value=Se;}else E.value={...E.value,[l]:k};o.value.onColumnPinned?.(l,k);},$=shallowRef(Ut({config:e.value.sideBar}));watch(()=>e.value.sideBar,l=>{$.value=Ut({config:l});});let Z=computed(()=>a.value.filter(l=>l.filterable&&l.filterable.type).map(l=>({columnId:l.columnId,name:l.name,filterField:l.filterable?.filterField??l.columnId,filterType:l.filterable?.type}))),ae=computed(()=>{let l=$.value;if(!l.isEnabled)return null;l.activePanel.value;l.isOpen.value;return {get activePanel(){return l.activePanel.value},onPanelChange:l.setActivePanel,panels:l.panels,position:l.position,get isOpen(){return l.isOpen.value},toggle:l.toggle,close:l.close,columns:vt.value,visibleColumns:S.value,onVisibilityChange:N,onSetVisibleColumns:U,filterableColumns:Z.value,filters:F.value,onFilterChange:O,filterOptions:Ce.value}}),de=()=>T({}),pe=computed(()=>u.value&&Ze.value||C.value),xe=ref(null),ce=ref(null),me=l=>{if(xe.value=l,l){let k=l.match(/^([A-Z]+)(\d+)$/);k?ce.value={col:columnLetterToIndex(k[1]),row:parseInt(k[2],10)-1}:ce.value=null;}else ce.value=null;},gt=computed(()=>ce.value?.col??null),It=computed(()=>ce.value?.row??null),Pn=(l,k)=>{let le=ke.value,Se=a.value;if(!(k<0||k>=le.length||l<0||l>=Se.length))return getCellValue(le[k],Se[l])},Ae=zt({activeCol:gt,activeRow:It,activeCellRef:xe,getFormula:he.enabled.value?he.getFormula:void 0,getRawValue:Pn,setFormula:he.enabled.value?he.setFormula:void 0}),Lt=computed(()=>{let l=e.value,k=t.value.dataSource;return {items:ke.value,columns:o.value.columns,getRowId:t.value.getRowId,sortBy:x.value.field,sortDirection:x.value.direction,onColumnSort:_,visibleColumns:S.value,columnOrder:o.value.columnOrder,onColumnOrderChange:o.value.onColumnOrderChange,onColumnResized:wt,onColumnPinned:xt,pinnedColumns:E.value,initialColumnWidths:g.value,editable:l.editable,cellSelection:l.cellSelection,onCellValueChanged:l.onCellValueChanged,onUndo:l.onUndo,onRedo:l.onRedo,canUndo:l.canUndo,canRedo:l.canRedo,rowSelection:l.rowSelection??"none",selectedRows:L.value,onSelectionChange:W,showRowNumbers:l.showRowNumbers||l.cellReferences||l.formulas,showColumnLetters:!!(l.cellReferences||l.formulas),showNameBox:!!(l.cellReferences&&!l.formulas),onActiveCellChange:l.cellReferences||l.formulas?me:void 0,currentPage:D.value,pageSize:y.value,statusBar:yt.value,isLoading:pe.value,filters:F.value,onFilterChange:O,filterOptions:Ce.value,loadingFilterOptions:k?.fetchFilterOptions?ee.value:Bl,peopleSearch:k?.searchPeople,getUserByEmail:k?.getUserByEmail,layoutMode:l.layoutMode,suppressHorizontalScroll:l.suppressHorizontalScroll,stickyHeader:l.stickyHeader??true,columnReorder:l.columnReorder,responsiveColumns:l.responsiveColumns,virtualScroll:l.virtualScroll,rowHeight:l.rowHeight,density:l.density??"normal","aria-label":l["aria-label"],"aria-labelledby":l["aria-labelledby"],emptyState:{hasActiveFilters:Ke.value,onClearAll:de,message:l.emptyState?.message,render:l.emptyState?.render},formulas:l.formulas,formulaVersion:We.value,...he.enabled.value?{getFormulaValue:he.getFormulaValue,hasFormula:he.hasFormula,getFormula:he.getFormula,setFormula:he.setFormula,onFormulaCellChanged:he.onCellChanged,getPrecedents:he.getPrecedents,getDependents:he.getDependents,getAuditTrail:he.getAuditTrail}:{},formulaReferences:Ae.referencedCells.value.length>0?Ae.referencedCells.value:void 0}}),En=computed(()=>({page:D.value,pageSize:y.value,displayTotalCount:mt.value,setPage:X,setPageSize:Q,pageSizeOptions:e.value.pageSizeOptions,entityLabelPlural:m.value.entityLabelPlural})),Tt=computed(()=>({columns:vt.value,visibleColumns:S.value,onVisibilityChange:N,placement:s.value})),Le=computed(()=>{let l=e.value,k=!!l.formulas,le=!!l.cellReferences&&!k,Se=l.toolbar;le&&(Se=[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"},xe.value??"\u2014"),Se]);let Qe=k?h(Mn,{cellRef:Ae.cellRef.value,formulaText:Ae.formulaText.value,isEditing:Ae.isEditing.value,onInputChange:Ae.onInputChange,onCommit:Ae.onCommit,onCancel:Ae.onCancel,onStartEditing:Ae.startEditing}):void 0,et=l.sheetDefs&&l.sheetDefs.length>0&&l.activeSheet&&l.onSheetChange?h(An,{sheets:l.sheetDefs,activeSheet:l.activeSheet,showAddButton:!!l.onSheetAdd,onSheetChange:l.onSheetChange,onSheetAdd:l.onSheetAdd??(()=>{})}):void 0;return {toolbar:Se,toolbarBelow:l.toolbarBelow,className:l.className,emptyState:l.emptyState,sideBarProps:ae.value,fullScreen:l.fullScreen,formulaBar:Qe,sheetTabs:et}}),Pt=computed(()=>({hasActiveFilters:Ke.value,setFilters:T})),Dn=computed(()=>({setRowData:l=>{u.value||(p.value=l);},setLoading:l=>{d.value=l;},getColumnState:()=>({visibleColumns:Array.from(S.value),sort:x.value,columnOrder:o.value.columnOrder??void 0,columnWidths:Object.keys(g.value).length>0?g.value:void 0,filters:Object.keys(F.value).length>0?F.value:void 0,pinnedColumns:Object.keys(E.value).length>0?E.value:void 0}),applyColumnState:l=>{l.visibleColumns&&U(new Set(l.visibleColumns)),l.sort&&R(l.sort),l.columnOrder&&o.value.onColumnOrderChange&&o.value.onColumnOrderChange(l.columnOrder),l.columnWidths&&(g.value=l.columnWidths),l.filters&&T(l.filters),l.pinnedColumns&&(E.value=l.pinnedColumns);},setFilterModel:T,getSelectedRows:()=>Array.from(L.value),setSelectedRows:l=>{A.value===void 0&&(B.value=new Set(l));},selectAll:()=>{let l=new Set(ke.value.map(k=>t.value.getRowId(k)));A.value===void 0&&(B.value=l),e.value.onSelectionChange?.({selectedRowIds:Array.from(l),selectedItems:ke.value});},deselectAll:()=>{A.value===void 0&&(B.value=new Set),e.value.onSelectionChange?.({selectedRowIds:[],selectedItems:[]});},clearFilters:()=>T({}),clearSort:()=>R({field:r.value,direction:m.value.defaultSortDirection}),resetGridState:l=>{T({}),R({field:r.value,direction:m.value.defaultSortDirection}),l?.keepSelection||(A.value===void 0&&(B.value=new Set),e.value.onSelectionChange?.({selectedRowIds:[],selectedItems:[]}));},getDisplayedRows:()=>ke.value,refreshData:()=>{u.value&&dt.value++;},scrollToRow:()=>{},getColumnOrder:()=>o.value.columnOrder??a.value.map(l=>l.columnId),setColumnOrder:l=>{o.value.onColumnOrderChange?.(l);}}));return {dataGridProps:Lt,pagination:En,columnChooser:Tt,layout:Le,filters:Pt,api:Dn}}function Wt(e){let{items:o,getRowId:t,rowSelection:n,controlledSelectedRows:i,onSelectionChange:m}=e,s=shallowRef(new Set),a=-1,u=computed(()=>{let r=i.value;return r!=null?r instanceof Set?r:new Set(r):s.value}),f=r=>{i.value!==void 0?isReadonly(i)||(i.value=r):s.value=r,m?.({selectedRowIds:Array.from(r),selectedItems:o.value.filter(v=>r.has(t(v)))});},p=(r,v,h,P)=>{if(n.value==="single"){f(v?new Set([r]):new Set),a=h;return}let I=o.value,w;P&&a>=0&&a!==h?w=applyRangeRowSelection(a,h,v,I,t,u.value):(w=new Set(u.value),v?w.add(r):w.delete(r)),a=h,f(w);},d=r=>{f(r?new Set(o.value.map(v=>t(v))):new Set);},c=computed(()=>computeRowSelectionState(u.value,o.value,t).allSelected),C=computed(()=>computeRowSelectionState(u.value,o.value,t).someSelected);return {selectedRowIds:u,updateSelection:f,handleRowCheckboxChange:p,handleSelectAll:d,allSelected:c,someSelected:C}}function Kt(e){let o=shallowRef(null),t=ref(void 0);return {editingCell:o,setEditingCell:m=>{if(m&&e?.scrollToRow&&e?.getRowIndex){let s=e.getRowIndex(m.rowId);s>=0&&e.scrollToRow(s,"center");}o.value=m;},pendingEditorValue:t,setPendingEditorValue:m=>{t.value=m;}}}function $t(e,o){let t=shallowRef(null),n=0,i=m=>{let s=t.value;s!==m&&(s&&m&&s.rowIndex===m.rowIndex&&s.columnIndex===m.columnIndex||(t.value=m));};return watch([t,()=>o?.value],()=>{if(n&&(cancelAnimationFrame(n),n=0),t.value==null||!e?.value||o?.value!=null)return;let{rowIndex:m,columnIndex:s}=t.value;n=requestAnimationFrame(()=>{n=0;let a=e.value;if(!a)return;let u=t.value;if(!u||u.rowIndex!==m||u.columnIndex!==s)return;let f=`[data-row-index="${m}"][data-col-index="${s}"]`,p=a.querySelector(f);if(p){let d=a.querySelector("thead"),c=d?d.getBoundingClientRect().height:0,C=a.getBoundingClientRect(),r=p.getBoundingClientRect(),v=C.top+c;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!==p&&typeof p.focus=="function"&&p.focus({preventScroll:true});}});},{flush:"post"}),onUnmounted(()=>{n&&(cancelAnimationFrame(n),n=0);}),{activeCell:t,setActiveCell:i}}var _n="data-drag-range",Ot="data-drag-anchor",ye=40,Zl=16;function qt(e){let o=nt(e),{wrapperRef:t,setActiveCell:n}=e,i=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,m=shallowRef(null),s=ref(false),a=ref(false),u=ref(false),f=false,p=null,d=0,c=null,C=null,r=null,v=R=>{rangesEqual(m.value,R)||(m.value=R);},h=(R,T,U)=>{if(R.button!==0)return;let _=i();if(U<_)return;R.preventDefault();let O=U-_,N=m.value;if(R.shiftKey&&N!=null)v(normalizeSelectionRange({startRow:N.startRow,startCol:N.startCol,endRow:T,endCol:O})),n({rowIndex:T,columnIndex:U});else {p={row:T,col:O},f=false;let B={startRow:T,startCol:O,endRow:T,endCol:O};v(B),c=B,n({rowIndex:T,columnIndex:U}),a.value=true,setTimeout(()=>E(B),0);}},P=()=>{let{rowCount:R,visibleColCount:T}=o.value;R.value===0||T.value===0||(v({startRow:0,startCol:0,endRow:R.value-1,endCol:T.value-1}),n({rowIndex:0,columnIndex:i()}));},I=new Set,w=null,g=(R,T,U,_,O,N,B,A)=>{R.hasAttribute(_n)||R.setAttribute(_n,""),A&&T===A.row&&U===A.col?R.hasAttribute(Ot)||R.setAttribute(Ot,""):R.hasAttribute(Ot)&&R.removeAttribute(Ot);let W=[];T===_&&W.push("inset 0 2px 0 0 var(--ogrid-selection, #217346)"),T===O&&W.push("inset 0 -2px 0 0 var(--ogrid-selection, #217346)"),U===N&&W.push("inset 2px 0 0 0 var(--ogrid-selection, #217346)"),U===B&&W.push("inset -2px 0 0 0 var(--ogrid-selection, #217346)"),R.style.boxShadow=W.length>0?W.join(", "):"",I.add(R);},b=R=>{R.removeAttribute(_n),R.removeAttribute(Ot),R.style.boxShadow="";},E=R=>{if(!t.value)return;let U=Math.min(R.startRow,R.endRow),_=Math.max(R.startRow,R.endRow),O=Math.min(R.startCol,R.endCol),N=Math.max(R.startCol,R.endCol),B=p,A=i();for(let W of I){let re=parseInt(W.getAttribute("data-row-index")??"",10),ne=parseInt(W.getAttribute("data-col-index")??"",10)-A;re>=U&&re<=_&&ne>=O&&ne<=N||(b(W),I.delete(W));}w||(w=buildCellIndex(t.value));let L=false;for(let W=U;W<=_;W++)for(let re=O;re<=N;re++){let ne=`${W},${re+A}`,H=w?.get(ne);H&&!H.isConnected&&!L&&(L=true,w=buildCellIndex(t.value),H=w?.get(ne)),H&&H.isConnected&&g(H,W,re,U,_,O,N,B);}},D=()=>{for(let R of I)b(R);I.clear(),w=null;},y=(R,T)=>{if(!p)return null;let _=document.elementFromPoint(R,T)?.closest?.("[data-row-index][data-col-index]");if(!_)return null;let O=parseInt(_.getAttribute("data-row-index")??"",10),N=parseInt(_.getAttribute("data-col-index")??"",10),B=i();if(Number.isNaN(O)||Number.isNaN(N)||N<B)return null;let A=N-B;return normalizeSelectionRange({startRow:p.row,startCol:p.col,endRow:O,endCol:A})},x=()=>{C&&(clearInterval(C),C=null);},F=()=>{let R=t.value;if(!R||!r||!a.value){x();return}let T=R.getBoundingClientRect(),U=0,_=0;if(r.cy<T.top+ye?_=-computeAutoScrollSpeed(T.top+ye-r.cy):r.cy>T.bottom-ye&&(_=computeAutoScrollSpeed(r.cy-(T.bottom-ye))),r.cx<T.left+ye?U=-computeAutoScrollSpeed(T.left+ye-r.cx):r.cx>T.right-ye&&(U=computeAutoScrollSpeed(r.cx-(T.right-ye))),U===0&&_===0){x();return}C||(C=setInterval(()=>{let O=t.value,N=r;if(!O||!N||!a.value){x();return}let B=O.getBoundingClientRect(),A=0,L=0;if(N.cy<B.top+ye?L=-computeAutoScrollSpeed(B.top+ye-N.cy):N.cy>B.bottom-ye&&(L=computeAutoScrollSpeed(N.cy-(B.bottom-ye))),N.cx<B.left+ye?A=-computeAutoScrollSpeed(B.left+ye-N.cx):N.cx>B.right-ye&&(A=computeAutoScrollSpeed(N.cx-(B.right-ye))),A===0&&L===0){x();return}O.scrollTop+=L,O.scrollLeft+=A;let W=y(N.cx,N.cy);W&&(c=W,E(W));},Zl));},S=R=>{!a.value||!p||(f||(f=true,s.value=true,w=buildCellIndex(t.value)),r={cx:R.clientX,cy:R.clientY},F(),d&&cancelAnimationFrame(d),d=requestAnimationFrame(()=>{if(d=0,!r)return;let T=y(r.cx,r.cy);if(!T)return;let U=c;U&&U.startRow===T.startRow&&U.startCol===T.startCol&&U.endRow===T.endRow&&U.endCol===T.endCol||(c=T,E(T));}));},X=()=>{if(!a.value)return;x(),d&&(cancelAnimationFrame(d),d=0),a.value=false;let R=f;if(R){if(r){let U=y(r.cx,r.cy);U&&(c=U);}let T=c;if(T){v(T);let U=p;U&&n({rowIndex:U.row,columnIndex:U.col+i()});}}D(),c=null,r=null,p=null,R&&(s.value=false);},Q=R=>{u.value||S(R);},J=()=>{u.value||X();};return onMounted(()=>{window.addEventListener("pointermove",Q,true),window.addEventListener("pointerup",J,true);}),onUnmounted(()=>{u.value=true,window.removeEventListener("pointermove",Q,true),window.removeEventListener("pointerup",J,true),d&&cancelAnimationFrame(d),x();}),{selectionRange:m,setSelectionRange:v,handleCellMouseDown:h,handleSelectAllCells:P,isDragging:s}}function Xt(){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:o,visibleCols:t,selectionRange:n,activeCell:i,editable:m,onCellValueChanged:s,beginBatch:a,endBatch:u}=e,f=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,p=shallowRef(null),d=shallowRef(null),c=ref(null),C=()=>{let I=n.value,w=i.value,g=f();return I??(w!=null?{startRow:w.rowIndex,startCol:w.columnIndex-g,endRow:w.rowIndex,endCol:w.columnIndex-g}:null)},r=()=>{let I=C();if(I==null)return;let w=normalizeSelectionRange(I),g=formatSelectionAsTsv(o.value,t.value,w);c.value=g,d.value=w,navigator.clipboard.writeText(g).catch(b=>{typeof console<"u"&&console.warn("[OGrid] Clipboard write failed:",b);});};return {handleCopy:r,handleCut:()=>{if(m.value===false)return;let I=C();if(I==null||s.value==null)return;let w=normalizeSelectionRange(I);p.value=w,d.value=null,r(),d.value=null;},handlePaste:async()=>{if(m.value===false)return;let I=s.value;if(I==null)return;let w;try{w=await navigator.clipboard.readText();}catch{w="";}if(!w.trim()&&c.value!=null&&(w=c.value),!w.trim())return;let g=C(),b=g?g.startRow:0,E=g?g.startCol:0,D=o.value,y=t.value,x=parseTsvClipboard(w);a?.();let F=applyPastedValues(x,b,E,D,y);for(let S of F)I(S);if(p.value){let S=applyCutClear(p.value,D,y);for(let X of S)I(X);p.value=null;}u?.(),d.value=null;},cutRange:p,copyRange:d,clearClipboardRanges:()=>{d.value=null,p.value=null;}}}function Yt(e){let o=nt(e);return {handleGridKeyDown:n=>{let{data:i,state:m,handlers:s,features:a}=o.value,u=i.items.value,f=i.visibleCols.value,{getRowId:p}=i,d=isRef(i.colOffset)?i.colOffset.value:i.colOffset,c=i.hasCheckboxCol.value,C=i.visibleColumnCount.value,r=m.activeCell.value,v=m.selectionRange.value,h=m.editingCell.value,P=m.selectedRowIds.value,{setActiveCell:I,setSelectionRange:w,setEditingCell:g,handleRowCheckboxChange:b,handleCopy:E,handleCut:D,handlePaste:y,setContextMenu:x,onUndo:F,onRedo:S,clearClipboardRanges:X}=s,Q=a.editable.value,J=a.onCellValueChanged.value,R=a.rowSelection.value,T=a.wrapperRef,U=a.scrollToRow,{fillDown:_}=a,O=a.onKeyDown?.value;if(O&&(O(n),n.defaultPrevented))return;let N=u.length-1,B=C-1+d;if(u.length===0)return;if(r===null){["ArrowDown","ArrowUp","ArrowLeft","ArrowRight","Tab","Enter","Home","End","PageDown","PageUp"].includes(n.key)&&(I({rowIndex:0,columnIndex:d}),n.preventDefault());return}let{rowIndex:A,columnIndex:L}=r,W=L-d,re=n.shiftKey,ne=(H,ee)=>{if(H<0||H>=u.length||ee<0||ee>=f.length)return true;let te=getCellValue(u[H],f[ee]);return te==null||te===""};switch(n.key){case "c":if(n.ctrlKey||n.metaKey){if(h!=null)break;n.preventDefault(),E();}break;case "x":if(n.ctrlKey||n.metaKey){if(h!=null)break;n.preventDefault(),D();}break;case "v":if(n.ctrlKey||n.metaKey){if(h!=null)break;n.preventDefault(),y();}break;case "d":if(n.ctrlKey||n.metaKey){if(h!=null)break;Q!==false&&_&&(n.preventDefault(),_());}break;case "ArrowDown":case "ArrowUp":case "ArrowRight":case "ArrowLeft":{if(h!=null)break;n.preventDefault();let{newRowIndex:H,newColumnIndex:ee,newRange:te}=computeArrowNavigation({direction:n.key,rowIndex:A,columnIndex:L,dataColIndex:W,colOffset:d,maxRowIndex:N,maxColIndex:B,visibleColCount:f.length,isCtrl:n.ctrlKey||n.metaKey,isShift:re,selectionRange:v,isEmptyAt:ne});w(te),I({rowIndex:H,columnIndex:ee}),(n.key==="ArrowDown"||n.key==="ArrowUp")&&U?.(H,"center");break}case "Tab":{n.preventDefault();let{rowIndex:H,columnIndex:ee}=computeTabNavigation(A,L,N,B,d,n.shiftKey),te=ee-d;w({startRow:H,startCol:te,endRow:H,endCol:te}),I({rowIndex:H,columnIndex:ee});break}case "Home":{n.preventDefault();let H=n.ctrlKey?0:A;w({startRow:H,startCol:0,endRow:H,endCol:0}),I({rowIndex:H,columnIndex:d});break}case "End":{n.preventDefault();let H=n.ctrlKey?N:A;w({startRow:H,startCol:C-1,endRow:H,endCol:C-1}),I({rowIndex:H,columnIndex:B});break}case "PageDown":case "PageUp":{n.preventDefault();let H=T.value,ee=10;if(H){let be=H.querySelector("tbody tr");be&&be.offsetHeight>0&&(ee=Math.max(1,Math.floor(H.clientHeight/be.offsetHeight)));}let te=n.key==="PageDown"?1:-1,Ce=Math.max(0,Math.min(A+te*ee,N));w(re?{startRow:v?.startRow??A,startCol:v?.startCol??W,endRow:Ce,endCol:v?.endCol??W}:{startRow:Ce,startCol:W,endRow:Ce,endCol:W}),I({rowIndex:Ce,columnIndex:L}),U?.(Ce,"center");break}case "Enter":case "F2":{if(n.preventDefault(),W>=0&&W<f.length){let H=f[W],ee=u[A];if(ee&&H){let te=H.editable===true||typeof H.editable=="function"&&H.editable(ee);Q!==false&&te&&J!=null&&g({rowId:p(ee),columnId:H.columnId});}}break}case "Escape":n.preventDefault(),h!=null?g(null):(X?.(),I(null),w(null));break;case " ":if(R!=="none"&&L===0&&c){n.preventDefault();let H=u[A];if(H){let ee=p(H),te=P.has(ee);b(ee,!te,A,n.shiftKey);}}break;case "z":(n.ctrlKey||n.metaKey)&&h==null&&(n.shiftKey&&S?(n.preventDefault(),S()):!n.shiftKey&&F&&(n.preventDefault(),F()));break;case "y":(n.ctrlKey||n.metaKey)&&h==null&&S&&(n.preventDefault(),S());break;case "a":if(n.ctrlKey||n.metaKey){if(h!=null)break;n.preventDefault(),u.length>0&&C>0&&(w({startRow:0,startCol:0,endRow:u.length-1,endCol:C-1}),I({rowIndex:0,columnIndex:d}));}break;case "Delete":case "Backspace":{if(h!=null||Q===false||J==null)break;let H=v??(r!=null?{startRow:r.rowIndex,startCol:r.columnIndex-d,endRow:r.rowIndex,endCol:r.columnIndex-d}:null);if(H==null)break;n.preventDefault();let ee=applyCellDeletion(H,u,f);for(let te of ee)J(te);break}case "F10":if(n.shiftKey)if(n.preventDefault(),r!=null&&T.value){let H=`[data-row-index="${r.rowIndex}"][data-col-index="${r.columnIndex}"]`,ee=T.value.querySelector(H);if(ee){let te=ee.getBoundingClientRect();x({x:te.left+te.width/2,y:te.top+te.height/2});}else x({x:100,y:100});}else x({x:100,y:100});break;}}}}var Zt="data-drag-range";function Jt(e){let{items:o,visibleCols:t,editable:n,onCellValueChanged:i,selectionRange:m,setSelectionRange:s,setActiveCell:a,wrapperRef:u,beginBatch:f,endBatch:p,visibleRange:d}=e,c=()=>isRef(e.colOffset)?e.colOffset.value:e.colOffset,C=shallowRef(null),r={endRow:0,endCol:0},v=0,h=null,P=null,I=null,w=D=>{C.value=D;},g=()=>{P&&(window.removeEventListener("pointermove",P,true),P=null),I&&(window.removeEventListener("pointerup",I,true),I=null),v&&(cancelAnimationFrame(v),v=0);};return watch(C,(D,y,x)=>{if(!D||n.value===false||!i.value||!u.value){g();return}r={endRow:D.startRow,endCol:D.startCol},h=null;let F=new Set,S=buildCellIndex(u.value),X=T=>{if(!u.value)return;let _=Math.min(T.startRow,T.endRow),O=Math.max(T.startRow,T.endRow),N=Math.min(T.startCol,T.endCol),B=Math.max(T.startCol,T.endCol),A=c();for(let L of F){let W=parseInt(L.getAttribute("data-row-index")??"",10),re=parseInt(L.getAttribute("data-col-index")??"",10)-A;W>=_&&W<=O&&re>=N&&re<=B||(L.removeAttribute(Zt),F.delete(L));}for(let L=_;L<=O;L++)for(let W=N;W<=B;W++){let re=`${L},${W+A}`,ne=S?.get(re);ne&&!ne.isConnected&&(S=buildCellIndex(u.value),ne=S.get(re)),ne&&(ne.hasAttribute(Zt)||ne.setAttribute(Zt,""),F.add(ne));}},Q=()=>{for(let T of F)T.removeAttribute(Zt);F.clear();},J=null,R=(T,U)=>{let O=document.elementFromPoint(T,U)?.closest?.("[data-row-index][data-col-index]");if(!O||!u.value?.contains(O))return null;let N=parseInt(O.getAttribute("data-row-index")??"",10),B=parseInt(O.getAttribute("data-col-index")??"",10),A=c();if(Number.isNaN(N)||Number.isNaN(B)||B<A)return null;let L=B-A;return normalizeSelectionRange({startRow:D.startRow,startCol:D.startCol,endRow:N,endCol:L})};P=T=>{J={cx:T.clientX,cy:T.clientY},v&&cancelAnimationFrame(v),v=requestAnimationFrame(()=>{if(v=0,!J)return;let U=R(J.cx,J.cy);if(!U)return;let _=h;_&&_.startRow===U.startRow&&_.startCol===U.startCol&&_.endRow===U.endRow&&_.endCol===U.endCol||(h=U,r={endRow:U.endRow,endCol:U.endCol},X(U));});},I=()=>{if(v&&(cancelAnimationFrame(v),v=0),J){let A=R(J.cx,J.cy);A&&(h=A,r={endRow:A.endRow,endCol:A.endCol});}Q();let T=r,U=normalizeSelectionRange({startRow:D.startRow,startCol:D.startCol,endRow:T.endRow,endCol:T.endCol}),_=d?.value;_&&(U.startRow=Math.max(U.startRow,_.startIndex),U.endRow=Math.min(U.endRow,_.endIndex)),s(U),a({rowIndex:D.startRow,columnIndex:D.startCol+c()});let O=o.value,N=t.value,B=i.value;if(B){let A=applyFillValues(U,D.startRow,D.startCol,O,N);if(A.length>0){f?.();for(let L of A)B(L);p?.();}}C.value=null,h=null,g();},window.addEventListener("pointermove",P,true),window.addEventListener("pointerup",I,true),x(()=>{g();});}),onUnmounted(()=>g()),{fillDrag:C,setFillDrag:w,handleFillHandleMouseDown:D=>{D.preventDefault(),D.stopPropagation();let y=m.value;y&&(C.value={startRow:y.startRow,startCol:y.startCol});},fillDown:()=>{let D=m.value;if(!D||n.value===false||!i.value)return;let y=normalizeSelectionRange(D),x=o.value,F=t.value,S=i.value,X=applyFillValues(y,y.startRow,y.startCol,x,F);if(X.length>0){f?.();for(let Q of X)S(Q);p?.();}}}}function Qt(e){let{onCellValueChanged:o,maxUndoDepth:t=100}=e,n=new UndoRedoStack(t),i=ref(false),m=ref(false),s=()=>{i.value=n.canUndo,m.value=n.canRedo;};return {onCellValueChanged:o?c=>{n.record(c),n.isBatching||s(),o(c);}:void 0,undo:()=>{if(!o)return;let c=n.undo();if(c){s();for(let C=c.length-1;C>=0;C--){let r=c[C];o({...r,oldValue:r.newValue,newValue:r.oldValue});}}},redo:()=>{if(!o)return;let c=n.redo();if(c){s();for(let C of c)o(C);}},canUndo:i,canRedo:m,beginBatch:()=>{n.beginBatch();},endBatch:()=>{n.endBatch(),s();},maxUndoDepth:t}}function en(e){let{wrapperRef:o,visibleCols:t,flatColumns:n,hasCheckboxCol:i,initialColumnWidths:m,onColumnResized:s}=e,a=ref(0),u,f=()=>{let r=o.value;if(!r)return;let v=r.getBoundingClientRect(),h=window.getComputedStyle(r),P=(parseFloat(h.borderLeftWidth||"0")||0)+(parseFloat(h.borderRightWidth||"0")||0);a.value=Math.max(0,v.width-P);};onMounted(()=>{let r=o.value;r&&(typeof ResizeObserver<"u"&&(u=new ResizeObserver(f),u.observe(r)),f());}),onUnmounted(()=>{u?.disconnect();});let p=ref((()=>{if(!m)return {};let r={};for(let[v,h]of Object.entries(m))r[v]={widthPx:h};return r})()),d=r=>{p.value=r;},c=computed(()=>{let r=i.value?CHECKBOX_COLUMN_WIDTH:0;return t.value.reduce((v,h)=>v+(h.minWidth??DEFAULT_MIN_COLUMN_WIDTH)+CELL_PADDING,r)});watch(n,r=>{let v=new Set(r.map(w=>w.columnId)),h=p.value,P=Object.keys(h),I=P.filter(w=>v.has(w));if(I.length<P.length){let w={};for(let g of I)w[g]=h[g];p.value=w;}});let C=computed(()=>{let r=i.value?CHECKBOX_COLUMN_WIDTH:0;return t.value.reduce((v,h)=>{let P=p.value[h.columnId],I=P?P.widthPx:h.idealWidth??h.defaultWidth??h.minWidth??DEFAULT_MIN_COLUMN_WIDTH;return v+Math.max(h.minWidth??DEFAULT_MIN_COLUMN_WIDTH,I)+CELL_PADDING},r)});return {containerWidth:a,minTableWidth:c,desiredTableWidth:C,columnSizingOverrides:p,setColumnSizingOverrides:d,onColumnResized:s}}function tn(e){let{columns:o,pinnedColumns:t,onColumnPinned:n}=e,i={};for(let c of o.value)c.pinned&&(i[c.columnId]=c.pinned);let m=ref(i),s=computed(()=>t?.value??m.value);return {pinnedColumns:s,pinColumn:(c,C)=>{let r={...s.value,[c]:C};m.value=r,n?.(c,C);},unpinColumn:c=>{let{[c]:C,...r}=s.value;m.value=r,n?.(c,null);},isPinned:c=>s.value[c],computeLeftOffsets:(c,C,r,v,h)=>{let P={},I=v?h:0;for(let w of c)s.value[w.columnId]==="left"&&(P[w.columnId]=I,I+=C[w.columnId]??r);return P},computeRightOffsets:(c,C,r)=>{let v={},h=0;for(let P=c.length-1;P>=0;P--){let I=c[P];s.value[I.columnId]==="right"&&(v[I.columnId]=h,h+=C[I.columnId]??r);}return v}}}function on(e){let{columns:o,pinnedColumns:t,onPinColumn:n,onUnpinColumn:i,onSort:m,onColumnResized:s,onAutosizeColumn:a,sortBy:u,sortDirection:f}=e,p=ref(false),d=ref(null),c=ref(null),C=(R,T)=>{d.value=R,c.value=T,p.value=true;},r=()=>{p.value=false,d.value=null,c.value=null;},v=computed(()=>d.value?o.value.find(R=>R.columnId===d.value):void 0),h=computed(()=>d.value?t.value[d.value]:void 0),P=computed(()=>h.value!=="left"),I=computed(()=>h.value!=="right"),w=computed(()=>!!h.value),g=computed(()=>!d.value||!u?.value||u.value!==d.value?null:f?.value??null),b=computed(()=>v.value?.sortable!==false),E=ref(true);return {isOpen:p,openForColumn:d,anchorElement:c,open:C,close:r,handlePinLeft:()=>{d.value&&P.value&&(n(d.value,"left"),r());},handlePinRight:()=>{d.value&&I.value&&(n(d.value,"right"),r());},handleUnpin:()=>{d.value&&w.value&&(i(d.value),r());},handleSortAsc:()=>{d.value&&m&&(m(d.value,"asc"),r());},handleSortDesc:()=>{d.value&&m&&(m(d.value,"desc"),r());},handleClearSort:()=>{d.value&&m&&(m(d.value,null),r());},handleAutosizeThis:()=>{let R=a??s;if(!d.value||!R||!E.value)return;let T=v.value;R(d.value,measureColumnContentWidth(d.value,T?.minWidth)),r();},handleAutosizeAll:()=>{let R=a??s;R&&(o.value.forEach(T=>{R(T.columnId,measureColumnContentWidth(T.columnId,T.minWidth));}),r());},canPinLeft:P,canPinRight:I,canUnpin:w,currentSort:g,isSortable:b,isResizable:E}}var qe=()=>{},Fr=async()=>{},Ur=(e,o,t)=>{},Or=e=>{},Mr=e=>{};function ln(e){let{props:o,wrapperRef:t}=e,n=computed(()=>o.value.items),i=o.value.getRowId,m=computed(()=>o.value.rowSelection??"none"),s=computed(()=>o.value.selectedRows),a=computed(()=>o.value.editable),u=computed(()=>o.value.cellSelection!==false),f=computed(()=>o.value.pinnedColumns),p=Qt({onCellValueChanged:o.value.onCellValueChanged}),d=computed(()=>p.onCellValueChanged),c=computed(()=>flattenColumns(o.value.columns)),C=computed(()=>{let $=f.value;return !$||Object.keys($).length===0?c.value:c.value.map(Z=>{let ae=$[Z.columnId];return ae&&Z.pinned!==ae?{...Z,pinned:ae}:Z})}),r=computed(()=>resolveResponsiveConfig(o.value.responsiveColumns)),v=computed(()=>{let $=o.value.visibleColumns,Z=o.value.columnOrder,ae=$?C.value.filter(pe=>$.has(pe.columnId)):C.value;if(!Z?.length)return ae;let de=new Map;for(let pe=0;pe<Z.length;pe++)de.set(Z[pe],pe);return [...ae].sort((pe,xe)=>{let ce=de.get(pe.columnId)??-1,me=de.get(xe.columnId)??-1;return ce===-1&&me===-1?0:ce===-1?1:me===-1?-1:ce-me})}),h=ref(0),P=computed(()=>applyResponsiveHiding(v.value,h.value,r.value)),I=computed(()=>P.value.length),w=computed(()=>m.value==="multiple"),g=computed(()=>!!o.value.showRowNumbers),b=computed(()=>(w.value?1:0)+(g.value?1:0)),E=computed(()=>I.value+b.value),D=b,y=shallowRef(new Map);watch(n,$=>{let Z=y.value;Z.clear(),$.forEach((ae,de)=>Z.set(i(ae),de)),triggerRef(y);},{immediate:true});let x=Wt({items:n,getRowId:i,rowSelection:m,controlledSelectedRows:s,onSelectionChange:o.value.onSelectionChange}),{editingCell:F,setEditingCell:S,pendingEditorValue:X,setPendingEditorValue:Q}=Kt(),{activeCell:J,setActiveCell:R}=$t(t,F),T=computed(()=>n.value.length),U=computed(()=>P.value.length),{selectionRange:_,setSelectionRange:O,handleCellMouseDown:N,handleSelectAllCells:B,isDragging:A}=qt({colOffset:D,rowCount:T,visibleColCount:U,setActiveCell:R,wrapperRef:t}),{contextMenuPosition:L,setContextMenuPosition:W,handleCellContextMenu:re,closeContextMenu:ne}=Xt(),{handleCopy:H,handleCut:ee,handlePaste:te,cutRange:Ce,copyRange:be,clearClipboardRanges:Pe}=jt({items:n,visibleCols:P,colOffset:D,selectionRange:_,activeCell:J,editable:a,onCellValueChanged:d,beginBatch:p.beginBatch,endBatch:p.endBatch}),Me=($,Z,ae)=>{$.button===0&&(t.value?.focus({preventScroll:true}),Pe(),N($,Z,ae));},{handleFillHandleMouseDown:Ge,fillDown:Rt}=Jt({items:n,visibleCols:P,editable:a,onCellValueChanged:d,selectionRange:_,setSelectionRange:O,setActiveCell:R,colOffset:D,wrapperRef:t,beginBatch:p.beginBatch,endBatch:p.endBatch}),{handleGridKeyDown:rt}=Yt({data:{items:n,visibleCols:P,colOffset:D,hasCheckboxCol:w,visibleColumnCount:I,getRowId:i},state:{activeCell:J,selectionRange:_,editingCell:F,selectedRowIds:x.selectedRowIds},handlers:{setActiveCell:R,setSelectionRange:O,setEditingCell:S,handleRowCheckboxChange:x.handleRowCheckboxChange,handleCopy:H,handleCut:ee,handlePaste:te,setContextMenu:W,onUndo:p.undo,onRedo:p.redo,clearClipboardRanges:Pe},features:{editable:a,onCellValueChanged:d,rowSelection:m,wrapperRef:t,fillDown:Rt,onKeyDown:computed(()=>o.value.onKeyDown)}}),{containerWidth:at,minTableWidth:je,desiredTableWidth:it,columnSizingOverrides:Fe,setColumnSizingOverrides:st}=en({wrapperRef:t,visibleCols:v,flatColumns:C,hasCheckboxCol:w,initialColumnWidths:o.value.initialColumnWidths,onColumnResized:($,Z)=>o.value.onColumnResized?.($,Z)});watch(at,$=>{h.value=$;},{immediate:true});let we=tn({columns:C,pinnedColumns:f,onColumnPinned:o.value.onColumnPinned}),ze=($,Z)=>{st({...Fe.value,[$]:{widthPx:Z}}),o.value.onColumnResized?.($,Z);},oe=on({columns:C,pinnedColumns:we.pinnedColumns,onPinColumn:we.pinColumn,onUnpinColumn:we.unpinColumn,onSort:o.value.onColumnSort,onColumnResized:o.value.onColumnResized,onAutosizeColumn:ze,sortBy:computed(()=>o.value.sortBy),sortDirection:computed(()=>o.value.sortDirection)}),Ne=ref({});watch([P,at,Fe],()=>{nextTick(()=>{let $=t.value;if(!$)return;let Z=$.querySelectorAll("th[data-column-id]");if(Z.length===0)return;let ae={};Z.forEach(ce=>{let me=ce.getAttribute("data-column-id");me&&(ae[me]=ce.offsetWidth);});let de=Ne.value,pe=Object.keys(ae),xe=pe.length!==Object.keys(de).length;if(!xe){for(let ce of pe)if(de[ce]!==ae[ce]){xe=true;break}}xe&&(Ne.value=ae);});},{flush:"post"});let Ye=computed(()=>{let $={};for(let Z of P.value){let ae=Fe.value[Z.columnId];$[Z.columnId]=ae?ae.widthPx:Z.idealWidth??Z.defaultWidth??Z.minWidth??DEFAULT_MIN_COLUMN_WIDTH;}return $}),Ee=computed(()=>we.computeLeftOffsets(P.value,Ye.value,DEFAULT_MIN_COLUMN_WIDTH,w.value,CHECKBOX_COLUMN_WIDTH)),Ze=computed(()=>we.computeRightOffsets(P.value,Ye.value,DEFAULT_MIN_COLUMN_WIDTH)),Je=computed(()=>computeAggregations(n.value,P.value,u.value?_.value:null)),_e=computed(()=>{let $=getDataGridStatusBarConfig(o.value.statusBar,n.value.length,x.selectedRowIds.value.size);return $?{...$,aggregation:Je.value??void 0}:null}),dt=computed(()=>n.value.length===0&&!!o.value.emptyState&&!o.value.isLoading),ct=computed(()=>_.value!=null||J.value!=null),ke=computed(()=>({sortBy:o.value.sortBy,sortDirection:o.value.sortDirection,onColumnSort:o.value.onColumnSort,filters:o.value.filters,onFilterChange:o.value.onFilterChange,filterOptions:o.value.filterOptions,loadingFilterOptions:o.value.loadingFilterOptions,peopleSearch:o.value.peopleSearch})),mt=computed(()=>({editingCell:F.value,activeCell:u.value?J.value:null,selectionRange:u.value?_.value:null,cutRange:u.value?Ce.value:null,copyRange:u.value?be.value:null,colOffset:D.value,itemsLength:n.value.length,getRowId:i,editable:a.value,onCellValueChanged:d.value,isDragging:u.value?A.value:false,getFormulaValue:o.value.getFormulaValue,hasFormula:o.value.hasFormula,getFormula:o.value.getFormula,formulaVersion:o.value.formulaVersion})),ft=ref(null),We=$=>{ft.value=$;},bt=($,Z,ae,de,pe,xe)=>{let ce=P.value.find(me=>me.columnId===Z);if(ce){let me=parseValue(de,ae,$,ce);if(!me.valid){S(null),We(null),Q(void 0);return}de=me.value;}if(d.value?.({item:$,columnId:Z,oldValue:ae,newValue:de,rowIndex:pe}),S(null),We(null),Q(void 0),pe<n.value.length-1){let me=pe+1,gt=xe-D.value;R({rowIndex:me,columnIndex:xe}),O({startRow:me,startCol:gt,endRow:me,endCol:gt});}},he=()=>{S(null),We(null),Q(void 0);},pt=computed(()=>({flatColumns:C.value,visibleCols:P.value,visibleColumnCount:I.value,totalColCount:E.value,colOffset:D.value,hasCheckboxCol:w.value,hasRowNumbersCol:g.value,rowIndexByRowId:y.value,containerWidth:at.value,minTableWidth:je.value,desiredTableWidth:it.value,columnSizingOverrides:Fe.value,setColumnSizingOverrides:st,onColumnResized:o.value.onColumnResized,measuredColumnWidths:Ne.value,stickyHeader:o.value.stickyHeader??true})),St=computed(()=>({selectedRowIds:x.selectedRowIds.value,updateSelection:x.updateSelection,handleRowCheckboxChange:x.handleRowCheckboxChange,handleSelectAll:x.handleSelectAll,allSelected:x.allSelected.value,someSelected:x.someSelected.value})),Ke=computed(()=>({editingCell:F.value,setEditingCell:S,pendingEditorValue:X.value,setPendingEditorValue:Q,commitCellEdit:bt,cancelPopoverEdit:he,popoverAnchorEl:ft.value,setPopoverAnchorEl:We})),vt=computed(()=>({activeCell:u.value?J.value:null,setActiveCell:u.value?R:qe,selectionRange:u.value?_.value:null,setSelectionRange:u.value?O:qe,handleCellMouseDown:u.value?Me:Ur,handleSelectAllCells:u.value?B:qe,hasCellSelection:u.value?ct.value:false,handleGridKeyDown:u.value?rt:Or,handleFillHandleMouseDown:u.value?Ge:qe,handleCopy:u.value?H:qe,handleCut:u.value?ee:qe,handlePaste:u.value?te:Fr,cutRange:u.value?Ce.value:null,copyRange:u.value?be.value:null,clearClipboardRanges:u.value?Pe:qe,canUndo:p.canUndo.value,canRedo:p.canRedo.value,onUndo:p.undo,onRedo:p.redo,isDragging:u.value?A.value:false})),yt=computed(()=>({menuPosition:u.value?L.value:null,setMenuPosition:u.value?W:qe,handleCellContextMenu:u.value?re:Mr,closeContextMenu:u.value?ne:qe})),wt=computed(()=>({headerFilterInput:ke.value,cellDescriptorInput:mt.value,statusBarConfig:_e.value,showEmptyInGrid:dt.value,onCellError:o.value.onCellError})),xt=computed(()=>({pinnedColumns:we.pinnedColumns.value,pinColumn:we.pinColumn,unpinColumn:we.unpinColumn,isPinned:we.isPinned,leftOffsets:Ee.value,rightOffsets:Ze.value,headerMenu:{isOpen:oe.isOpen.value,openForColumn:oe.openForColumn.value,anchorElement:oe.anchorElement.value,open:oe.open,close:oe.close,handlePinLeft:oe.handlePinLeft,handlePinRight:oe.handlePinRight,handleUnpin:oe.handleUnpin,handleSortAsc:oe.handleSortAsc,handleSortDesc:oe.handleSortDesc,handleClearSort:oe.handleClearSort,handleAutosizeThis:oe.handleAutosizeThis,handleAutosizeAll:oe.handleAutosizeAll,canPinLeft:oe.canPinLeft.value,canPinRight:oe.canPinRight.value,canUnpin:oe.canUnpin.value,currentSort:oe.currentSort.value,isSortable:oe.isSortable.value,isResizable:oe.isResizable.value}}));return {layout:pt,rowSelection:St,editing:Ke,interaction:vt,contextMenu:yt,viewModels:wt,pinning:xt}}function rn(e){let{columnSizingOverrides:o,setColumnSizingOverrides:t,minWidth:n=80,defaultWidth:i=120,onColumnResized:m}=e,s=0,a=null;return onUnmounted(()=>{a?.(),a=null;}),{handleResizeStart:(d,c)=>{d.preventDefault(),d.stopPropagation();let C=d.clientX,r=c.columnId,v=d.currentTarget.parentElement,h=v?v.getBoundingClientRect().width:o.value[r]?.widthPx??c.idealWidth??c.defaultWidth??i,P=h,I=document.body.style.cursor,w=document.body.style.userSelect;document.body.style.cursor="col-resize",document.body.style.userSelect="none";let g=()=>{t({...o.value,[r]:{widthPx:P}});},b=r===ROW_NUMBER_COLUMN_ID?ROW_NUMBER_COLUMN_MIN_WIDTH:n,E=x=>{let F=x.clientX-C;P=Math.max(b,h+F),s||(s=requestAnimationFrame(()=>{s=0,g();}));},D=()=>{document.removeEventListener("pointermove",E),document.removeEventListener("pointerup",y),a=null,document.body.style.cursor=I,document.body.style.userSelect=w,s&&(cancelAnimationFrame(s),s=0);},y=()=>{D(),g(),m?.(r,P);};document.addEventListener("pointermove",E),document.addEventListener("pointerup",y),a=D;},handleResizeDoubleClick:(d,c)=>{d.preventDefault(),d.stopPropagation();let C=c.columnId,v=(d.currentTarget.closest("th")??d.currentTarget.parentElement)?.closest("table")?.parentElement??void 0,h=measureColumnContentWidth(C,n,v);t({...o.value,[C]:{widthPx:h}}),m?.(C,h);},getColumnWidth:d=>o.value[d.columnId]?.widthPx??d.idealWidth??d.defaultWidth??i}}function an(e,o){let t=ref(e.value),n;return watch(e,i=>{n!==void 0&&clearTimeout(n),n=setTimeout(()=>{t.value=i;},o);}),onUnmounted(()=>{n!==void 0&&clearTimeout(n);}),t}function Do(e,o){let t,n=e,i,m=((...s)=>{n=e,i=s,t!==void 0&&clearTimeout(t),t=setTimeout(()=>{n(...s),i=void 0,t=void 0;},o);});return m.cancel=()=>{t!==void 0&&clearTimeout(t),t=void 0,i=void 0;},m.flush=()=>{if(t!==void 0&&i!==void 0){clearTimeout(t),t=void 0;let s=i;i=void 0,n(...s);}},onUnmounted(()=>{t!==void 0&&clearTimeout(t);}),m}function sn(e){let{textValue:o="",onTextChange:t}=e,n=ref(o);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 Wr=150,jn=[];function un(e){let{onFilterChange:o}=e,t=ref(new Set(e.selectedValues??jn)),n=ref(""),i=an(n,Wr);watch(e.isFilterOpen,c=>{c&&(t.value=new Set(e.selectedValues??jn),n.value="");});let m=computed(()=>{let c=e.options??jn;if(!i.value.trim())return c;let C=i.value.toLowerCase().trim();return c.filter(r=>r.toLowerCase().includes(C))});return {tempSelected:t,setTempSelected:c=>{t.value=c;},searchText:n,setSearchText:c=>{n.value=c;},debouncedSearchText:i,filteredOptions:m,handleCheckboxChange:(c,C)=>{let r=new Set(t.value);C?r.add(c):r.delete(c),t.value=r;},handleSelectAll:()=>{t.value=new Set(m.value);},handleClearSelection:()=>{t.value=new Set;},handleApplyMultiSelect:()=>{o?.(Array.from(t.value));}}}var $r=300;function cn(e){let{onUserChange:o,filterType:t}=e,n=ref(null),i,m=ref([]),s=ref(false),a=ref(""),u=d=>{a.value=d;};return watch(e.isFilterOpen,d=>{d&&(a.value="",m.value=[],t==="people"&&setTimeout(()=>n.value?.focus(),50));}),watch([a,()=>e.peopleSearch,e.isFilterOpen],([d,c,C])=>{if(i&&clearTimeout(i),!(!c||!C||t!=="people")){if(!d.trim()){m.value=[];return}s.value=true,i=setTimeout(async()=>{try{let r=await c(d);m.value=r.slice(0,10);}catch{m.value=[];}finally{s.value=false;}},$r);}}),onUnmounted(()=>{i&&clearTimeout(i);}),{peopleSuggestions:m,isPeopleLoading:s,peopleSearchText:a,setPeopleSearchText:u,peopleInputRef:n,handleUserSelect:d=>{o?.(d);},handleClearUser:()=>{o?.(void 0);}}}function mn(e){let{onDateChange:o}=e,t=ref(e.dateValue?.from??""),n=ref(e.dateValue?.to??"");return watch(e.isFilterOpen,u=>{u&&(t.value=e.dateValue?.from??"",n.value=e.dateValue?.to??"");}),{tempDateFrom:t,setTempDateFrom:u=>{t.value=u;},tempDateTo:n,setTempDateTo:u=>{n.value=u;},handleDateApply:()=>{let u=t.value||void 0,f=n.value||void 0;o?.(u||f?{from:u,to:f}:void 0);},handleDateClear:()=>{t.value="",n.value="";}}}var Yr=[];function ko(e){let{filterType:o,onSort:t}=e,n=()=>e.selectedValues??Yr,i=ref(null),m=ref(null),s=ref(false),a=ref(null),u=R=>{s.value=R;},f=sn({textValue:e.textValue,onTextChange:e.onTextChange,isFilterOpen:s}),p=un({selectedValues:e.selectedValues,onFilterChange:e.onFilterChange,options:e.options,isFilterOpen:s}),d=cn({selectedUser:e.selectedUser,onUserChange:e.onUserChange,peopleSearch:e.peopleSearch,isFilterOpen:s,filterType:o}),c=mn({dateValue:e.dateValue,onDateChange:e.onDateChange,isFilterOpen:s});watch(s,R=>{R||(a.value=null);});let C=null,r=null,v,h=()=>{P(),C=R=>{let T=R.target;m.value&&!m.value.contains(T)&&i.value&&!i.value.contains(T)&&(s.value=false);},r=R=>{(R.key==="Escape"||R.key==="Esc")&&(R.preventDefault(),R.stopPropagation(),s.value=false);},v=setTimeout(()=>{C&&document.addEventListener("mousedown",C);},0),document.addEventListener("keydown",r,true);},P=()=>{v&&clearTimeout(v),C&&document.removeEventListener("mousedown",C),r&&document.removeEventListener("keydown",r,true),C=null,r=null;};watch(s,R=>{R?h():P();}),onUnmounted(()=>P());let I=R=>{if(R.stopPropagation(),R.preventDefault(),!s.value&&i.value){let T=i.value.getBoundingClientRect();a.value={top:T.bottom+4,left:T.left};}s.value=!s.value;},w=R=>{R.stopPropagation(),t?.();},g=()=>{p.handleApplyMultiSelect(),s.value=false;},b=()=>{f.handleTextApply(),s.value=false;},E=R=>{d.handleUserSelect(R),s.value=false;},D=()=>{d.handleClearUser(),s.value=false;},y=()=>{c.handleDateApply(),s.value=false;},x=R=>R.stopPropagation(),F=R=>R.stopPropagation(),S=R=>R.stopPropagation(),X=R=>R.stopPropagation(),Q=R=>{R.key!=="Escape"&&R.key!=="Esc"&&R.stopPropagation();},J=computed(()=>o==="multiSelect"?n().length>0:o==="text"?!!(e.textValue??"").trim():o==="people"?!!e.selectedUser:o==="date"?!!(e.dateValue?.from||e.dateValue?.to):false);return {headerRef:i,popoverRef:m,peopleInputRef:d.peopleInputRef,isFilterOpen:s,setFilterOpen:u,tempSelected:p.tempSelected,setTempSelected:p.setTempSelected,tempTextValue:f.tempTextValue,setTempTextValue:f.setTempTextValue,searchText:p.searchText,setSearchText:p.setSearchText,debouncedSearchText:p.debouncedSearchText,filteredOptions:p.filteredOptions,peopleSuggestions:d.peopleSuggestions,isPeopleLoading:d.isPeopleLoading,peopleSearchText:d.peopleSearchText,setPeopleSearchText:d.setPeopleSearchText,tempDateFrom:c.tempDateFrom,setTempDateFrom:c.setTempDateFrom,tempDateTo:c.tempDateTo,setTempDateTo:c.setTempDateTo,hasActiveFilter:J,popoverPosition:a,handlers:{handleFilterIconClick:I,handleApplyMultiSelect:g,handleTextApply:b,handleTextClear:f.handleTextClear,handleUserSelect:E,handleClearUser:D,handleCheckboxChange:p.handleCheckboxChange,handleSelectAll:p.handleSelectAll,handleClearSelection:p.handleClearSelection,handlePopoverClick:x,handleInputFocus:F,handleInputMouseDown:S,handleInputClick:X,handleInputKeyDown:Q,handleDateApply:y,handleDateClear:c.handleDateClear,handleSortClick:w}}}function Lo(e){let{columns:o,visibleColumns:t,onVisibilityChange:n}=e,i=ref(false),m=null,s=()=>{a(),m=h=>{h.key==="Escape"&&(h.preventDefault(),i.value=false);},document.addEventListener("keydown",m,true);},a=()=>{m&&(document.removeEventListener("keydown",m,true),m=null);};watch(i,h=>{h?s():a();}),onUnmounted(()=>a());let u=h=>{i.value=h;},f=()=>{i.value=!i.value;},p=()=>{i.value=false;},d=h=>P=>{n(h,P);},c=()=>{o.value.forEach(h=>{t.value.has(h.columnId)||n(h.columnId,true);});},C=()=>{o.value.forEach(h=>{!h.required&&t.value.has(h.columnId)&&n(h.columnId,false);});},r=computed(()=>t.value.size),v=computed(()=>o.value.length);return {open:i,setOpen:u,handleToggle:f,handleClose:p,handleCheckboxChange:d,handleSelectAll:c,handleClearAll:C,visibleCount:r,totalCount:v}}function Bo(e){let{value:o,editorType:t,onCommit:n,onCancel:i,dateFormat:m,dateEditorType:s}=e,a=m??DEFAULT_DATE_FORMAT,u=ref((()=>{if(o==null)return "";if(t==="date"){if(s==="native"){let v=String(o);return v.match(/^\d{4}-\d{2}-\d{2}/)?v.substring(0,10):v}return formatDateForDisplay(o,a)??""}return String(o)})()),f=v=>{u.value=v;},p=v=>{if(t==="date"&&s!=="native"){if(!v||!v.trim()){n(null);return}let h=parseUserInputDate(v,a);if(h!==null){let P=h.getUTCFullYear().toString().padStart(4,"0"),I=(h.getUTCMonth()+1).toString().padStart(2,"0"),w=h.getUTCDate().toString().padStart(2,"0");n(`${P}-${I}-${w}`);}else n(null);}else n(v);},d=v=>{n(v);},c=()=>{i();};return {localValue:u,setLocalValue:f,handleKeyDown:v=>{v.key==="Escape"&&(v.preventDefault(),v.stopPropagation(),c()),v.key==="Enter"&&(t==="text"||t==="date")&&(v.preventDefault(),v.stopPropagation(),p(u.value));},handleBlur:()=>{(t==="text"||t==="date")&&p(u.value);},commit:d,cancel:c}}function Vo(e){let{values:o,formatValue:t,initialValue:n,onCommit:i,onCancel:m}=e,s=ref(""),a=o.findIndex(r=>String(r)===String(n)),u=ref(Math.max(a,0)),f=r=>{s.value=r;},p=r=>t?t(r):r!=null?String(r):"",d=computed(()=>{if(!s.value.trim())return o;let r=s.value.toLowerCase();return o.filter(v=>p(v).toLowerCase().includes(r))}),c=r=>{i(r);};return {searchText:s,setSearchText:f,filteredValues:d,highlightedIndex:u,handleKeyDown:r=>{switch(r.key){case "ArrowDown":r.preventDefault(),u.value=Math.min(u.value+1,d.value.length-1);break;case "ArrowUp":r.preventDefault(),u.value=Math.max(u.value-1,0);break;case "Enter":r.preventDefault(),r.stopPropagation(),d.value.length>0&&u.value<d.value.length&&c(d.value[u.value]);break;case "Escape":r.preventDefault(),r.stopPropagation(),m();break}},selectValue:c,getDisplayText:p}}var ua=8,da=5;function pn(e){let{columnOrder:o,onColumnOrderChange:t,tableRef:n,pinnedColumns:i}=e,m=ref(false),s=ref(null),a=null,u="unpinned",f=0,p=null;return onUnmounted(()=>{p?.(),p=null;}),{isDragging:m,dropIndicatorX:s,handleHeaderMouseDown:(c,C)=>{if(C.button!==0)return;let r=C.target.closest("th");if(r){let x=r.getBoundingClientRect();if(C.clientX>x.right-ua)return}if(C.preventDefault(),!n.value||!t.value)return;a=c,u=getPinStateForColumn(c,i?.value),s.value=null;let h=C.clientX,P=false,I=C.clientX,w=-1,g=document.body.style.cursor,b=document.body.style.userSelect;document.body.style.cursor="grabbing",document.body.style.userSelect="none";let E=x=>{!P&&Math.abs(x.clientX-h)<da||(P||(P=true,m.value=true),I=x.clientX,f||(f=requestAnimationFrame(()=>{f=0;let F=n.value;if(!F||!a)return;let S=calculateDropTarget({mouseX:I,columnOrder:o.value,draggedColumnId:a,draggedPinState:u,tableElement:F,pinnedColumns:i?.value});S?(w=S.targetIndex,s.value=S.indicatorX):s.value=null;})));},D=()=>{window.removeEventListener("pointermove",E,true),window.removeEventListener("pointerup",y,true),p=null,document.body.style.cursor=g,document.body.style.userSelect=b,f&&(cancelAnimationFrame(f),f=0);},y=()=>{if(D(),P&&a&&w>=0&&t.value){let x=reorderColumnArray(o.value,a,w);t.value(x);}a=null,m.value=false,s.value=null,w=-1;};window.addEventListener("pointermove",E,true),window.addEventListener("pointerup",y,true),p=D;}}}var Ra=100;function gn(e){let{totalRows:o,rowHeight:t,enabled:n,overscan:i=5,threshold:m=Ra,columnsEnabled:s,columnWidths:a,columnOverscan:u=2}=e;onMounted(()=>{validateVirtualScrollConfig({enabled:n.value,rowHeight:t});});let f=ref(null),p=ref(0),d=ref(0),c=ref(0),C=ref(0),r=0,v,h=null,P=computed(()=>n.value&&o.value>=m),I=computed(()=>P.value?computeVisibleRange(p.value,t,c.value,o.value,i):{startIndex:0,endIndex:Math.max(0,o.value-1),offsetTop:0,offsetBottom:0}),w=computed(()=>n.value?computeTotalHeight(o.value,t):0),g=computed(()=>{if(!s?.value)return null;let y=a?.value;return !y||y.length===0?null:computeVisibleColumnRange(d.value,y,C.value,u)}),b=()=>{r||(r=requestAnimationFrame(()=>{r=0;let y=f.value;y&&(p.value=y.scrollTop,d.value=y.scrollLeft);}));},E=()=>{let y=f.value;y&&(c.value=y.clientHeight,C.value=y.clientWidth);};return watch(f,y=>{y!==h&&(h&&h.removeEventListener("scroll",b),v&&(v.disconnect(),v=void 0),h=y,y&&(y.addEventListener("scroll",b,{passive:true}),typeof ResizeObserver<"u"&&(v=new ResizeObserver(E),v.observe(y)),E(),p.value=y.scrollTop,d.value=y.scrollLeft));}),onUnmounted(()=>{let y=f.value;y&&y.removeEventListener("scroll",b),v?.disconnect(),r&&(cancelAnimationFrame(r),r=0);}),{containerRef:f,visibleRange:I,totalHeight:w,scrollToRow:(y,x="start")=>{let F=f.value;F&&(F.scrollTop=getScrollTopForRow(y,t,c.value,x));},columnRange:g,scrollLeft:d}}function hn(e){let{props:o}=e,t=ref(null),n=ref(null),i=ref(null),m=ref(false),s=ln({props:o,wrapperRef:t}),a=computed(()=>{let E=o.value;return E.columnOrder?E.columnOrder:flattenColumns(E.columns).filter(D=>E.visibleColumns?.has(D.columnId)??true).map(D=>D.columnId)}),u=computed(()=>o.value.onColumnOrderChange),f=pn({columnOrder:a,onColumnOrderChange:u,tableRef:i}),p=computed(()=>o.value.virtualScroll?.enabled??false),d=computed(()=>o.value.items.length),c=o.value.virtualScroll?.rowHeight??36,C=o.value.virtualScroll?.overscan??5,r=computed(()=>o.value.virtualScroll?.columns===true),v=o.value.virtualScroll?.columnOverscan??2,h=computed(()=>{let E=s.layout.value,{visibleCols:D,columnSizingOverrides:y}=E,x=o.value.pinnedColumns??{},F=[];for(let S of D){if(x[S.columnId]||S.pinned)continue;let X=y[S.columnId];F.push(X?X.widthPx:S.defaultWidth??S.minWidth??DEFAULT_MIN_COLUMN_WIDTH);}return F}),P=gn({totalRows:d,rowHeight:c,enabled:p,overscan:C,columnsEnabled:r,columnWidths:h,columnOverscan:v}),I=computed(()=>{if(!r.value)return null;let D=s.layout.value.visibleCols,y=P.columnRange.value,x=o.value.pinnedColumns;return partitionColumnsForVirtualization(D,y,x)}),w=computed(()=>{let D=s.layout.value.visibleCols,y=new Map;for(let x=0;x<D.length;x++)y.set(D[x].columnId,x);return y}),g=computed(()=>s.layout.value.columnSizingOverrides),b=rn({columnSizingOverrides:g,setColumnSizingOverrides:E=>s.layout.value.setColumnSizingOverrides(E)});return {wrapperRef:t,tableContainerRef:n,tableRef:i,lastMouseShift:m,state:s,columnReorder:f,virtualScroll:P,virtualScrollEnabled:p,columnResize:b,columnPartition:I,globalColIndexMap:w}}function Rn(e,o,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:o})),n}var zo=()=>{};function Fa(e){return defineComponent({name:"DataGridTable",props:{gridProps:{type:Object,required:true}},setup(o){let t=computed(()=>o.gridProps),{wrapperRef:n,tableContainerRef:i,tableRef:m,lastMouseShift:s,state:a,columnReorder:{isDragging:u,dropIndicatorX:f,handleHeaderMouseDown:p},virtualScroll:{containerRef:d,visibleRange:c,totalHeight:C,scrollToRow:r},virtualScrollEnabled:v,columnResize:{handleResizeStart:h$1,handleResizeDoubleClick:P,getColumnWidth:I},columnPartition:w,globalColIndexMap:g}=hn({props:t}),b=computed(()=>{let S=t.value;return S.showRowNumbers||S.showColumnLetters?((S.currentPage??1)-1)*(S.pageSize??25):0});watch([()=>a.interaction.value.activeCell,b],([S,X])=>{let Q=t.value.onActiveCellChange;Q&&Q(S?formatCellReference(S.columnIndex-a.layout.value.colOffset,X+S.rowIndex+1):null);},{immediate:true});let E=S=>{s.value=S.shiftKey;},D=S=>S.preventDefault(),y=S=>S.stopPropagation(),x=computed(()=>buildHeaderRows(t.value.columns,t.value.visibleColumns)),F=computed(()=>{let S=a.layout.value,X=a.pinning.value,{visibleCols:Q,columnSizingOverrides:J,measuredColumnWidths:R}=S,{leftOffsets:T,rightOffsets:U}=X,_={},O={},N={},B={};for(let A=0;A<Q.length;A++){let L=Q[A],W=L.pinned==="left",re=L.pinned==="right",ne=I(L),H=!!J[L.columnId],ee=R[L.columnId],te=L.minWidth??DEFAULT_MIN_COLUMN_WIDTH,Ce=H?ne:Math.max(te,ee??0),be={minWidth:`${Ce}px`,width:`${ne}px`,maxWidth:`${ne}px`},Pe={minWidth:`${Ce}px`,width:`${ne}px`,maxWidth:`${ne}px`},Me=["ogrid-data-cell"],Ge=["ogrid-header-cell"];W?(Me.push("ogrid-data-cell--pinned-left"),be.left=`${T[L.columnId]??0}px`,Ge.push("ogrid-header-cell--pinned-left"),Pe.left=`${T[L.columnId]??0}px`):re&&(Me.push("ogrid-data-cell--pinned-right"),be.right=`${U[L.columnId]??0}px`,Ge.push("ogrid-header-cell--pinned-right"),Pe.right=`${U[L.columnId]??0}px`),_[L.columnId]=be,O[L.columnId]=Me.join(" "),N[L.columnId]=Pe,B[L.columnId]=Ge.join(" ");}return {cellStyles:_,cellClasses:O,hdrStyles:N,hdrClasses:B}});return ()=>{let S=o.gridProps,X=a.layout.value,Q=a.rowSelection.value,J=a.editing.value,R=a.interaction.value,T=a.contextMenu.value,U=a.viewModels.value,_=a.pinning.value,{headerMenu:O}=_,{visibleCols:N,hasCheckboxCol:B,hasRowNumbersCol:A,colOffset:L,containerWidth:W,minTableWidth:re,desiredTableWidth:ne}=X,H=S.currentPage??1,ee=S.pageSize??25,te=A?(H-1)*ee:0,{selectedRowIds:Ce,handleRowCheckboxChange:be,handleSelectAll:Pe,allSelected:Me,someSelected:Ge}=Q,{editingCell:Rt,setEditingCell:rt,pendingEditorValue:at,setPendingEditorValue:je,commitCellEdit:it,cancelPopoverEdit:Fe,popoverAnchorEl:st,setPopoverAnchorEl:we}=J,{setActiveCell:ze,setSelectionRange:oe,handleCellMouseDown:Ne,handleSelectAllCells:Ye,selectionRange:Ee,hasCellSelection:Ze,handleGridKeyDown:Je,handleFillHandleMouseDown:_e,handleCopy:dt,handleCut:ct,handlePaste:ke,cutRange:mt,copyRange:ft,canUndo:We,canRedo:bt,onUndo:he,onRedo:pt,isDragging:St}=R,{menuPosition:Ke,handleCellContextMenu:vt,closeContextMenu:yt}=T,{headerFilterInput:wt,cellDescriptorInput:xt,statusBarConfig:$,showEmptyInGrid:Z,onCellError:ae}=U,de=S.items,pe=S.getRowId,xe=S.layoutMode??"fill",ce=S.rowSelection??"none",me=S.suppressHorizontalScroll,gt=S.stickyHeader??true,It=S.isLoading??false,Pn=S.loadingMessage??"Loading\u2026",Ae=S["aria-label"],Lt=S["aria-labelledby"],En=xe==="content",Tt=!me&&W>0&&(re>W||ne>W),Le=x.value,Pt={commitCellEdit:it,setEditingCell:rt,setPendingEditorValue:je,cancelPopoverEdit:Fe},Dn={handleCellMouseDown:Ne,setActiveCell:ze,setEditingCell:rt,handleCellContextMenu:vt},l=M=>{if(ce!=="single")return;let ie=M.currentTarget.dataset.rowId;ie&&Q.updateSelection(Ce.has(ie)?new Set:new Set([ie]));},k=(M,z,ie,Ue)=>{try{return le(M,z,ie,Ue)}catch(V){return ae&&ae(V instanceof Error?V:new Error(String(V)),void 0),""}},le=(M,z,ie,Ue)=>{let V=getCellRenderDescriptor(M,z,ie,Ue,xt);if(V.mode==="editing-inline"){let se=buildInlineEditorProps(M,z,V,Pt);return h("div",{class:"ogrid-editing-cell"},h(e.InlineCellEditor,{value:se.value,item:se.item,column:se.column,rowIndex:se.rowIndex,editorType:se.editorType,onCommit:se.onCommit,onCancel:se.onCancel}))}if(V.mode==="editing-popover"&&typeof z.cellEditor=="function"){let se=buildPopoverEditorProps(M,z,V,at,Pt),Y=z.cellEditor,Et=resolveCellDisplayContent(z,M,V.displayValue),Dt=resolveCellStyle(z,M,V.displayValue);return h("div",[h("div",{ref:Qn=>{Qn&&we(Qn);},class:"ogrid-popover-anchor"},[Dt?h("span",{style:Dt},[Et]):Et]),st?h(Y,se):null])}let Oe=Rn(V,z.columnId,Dn),Te=["ogrid-cell-content"];z.type==="numeric"?Te.push("ogrid-cell-content--numeric"):z.type==="boolean"&&Te.push("ogrid-cell-content--boolean"),V.canEditAny&&Te.push("ogrid-cell-content--editable"),V.isActive&&Te.push("ogrid-cell-content--active"),V.isActive&&V.isInRange&&Te.push("ogrid-cell-content--active-in-range"),V.isInRange&&!V.isActive&&Te.push("ogrid-cell-in-range"),V.isInCutRange&&Te.push("ogrid-cell-cut");let $e;if(V.columnType==="boolean"){let se=!!V.displayValue;$e=h("input",{type:"checkbox",checked:se,disabled:!V.canEditAny,onChange:V.canEditAny?()=>{let Y=V.rowIndex,Et=V.globalColIndex,Dt=V.globalColIndex-L;Pt.commitCellEdit(M,z.columnId,se,!se,Y,Et),setTimeout(()=>{ze({rowIndex:Y,columnIndex:Et}),oe({startRow:Y,startCol:Dt,endRow:Y,endCol:Dt});},0);}:void 0,onPointerdown:Y=>{Y.stopPropagation(),ze({rowIndex:V.rowIndex,columnIndex:V.globalColIndex}),oe({startRow:V.rowIndex,startCol:V.globalColIndex-L,endRow:V.rowIndex,endCol:V.globalColIndex-L});},onClick:Y=>Y.stopPropagation(),style:`margin:0;cursor:${V.canEditAny?"pointer":"default"};outline:none`,"aria-label":se?"Checked":"Unchecked"});}else {let se=resolveCellDisplayContent(z,M,V.displayValue),Y=resolveCellStyle(z,M,V.displayValue);$e=Y?h("span",{style:Y},se):se;}return h("div",{...Oe,class:Te.join(" ")},[$e,...V.canEditAny&&V.isSelectionEndCell?[h("div",{onPointerdown:_e,"aria-label":"Fill handle",class:"ogrid-fill-handle"})]:[]])},{cellStyles:Se,cellClasses:Qe,hdrStyles:et,hdrClasses:tt}=F.value,Ie=N.map(M=>({col:M,tdClasses:Qe[M.columnId]||"ogrid-data-cell",tdDynamicStyle:Se[M.columnId]||{}})),Be=w.value,Ct=Ie,Re=0,fe=0;if(Be){let M=new Set;for(let z of Be.pinnedLeft)M.add(z.columnId);for(let z of Be.virtualizedUnpinned)M.add(z.columnId);for(let z of Be.pinnedRight)M.add(z.columnId);Ct=Ie.filter(z=>M.has(z.col.columnId)),Re=Be.leftSpacerWidth,fe=Be.rightSpacerWidth;}let He=g.value,ve=M=>{let z=et[M.columnId]||{};return {classes:tt[M.columnId]||"ogrid-header-cell",style:{...z,cursor:u.value?"grabbing":"grab"}}},De={position:"relative",flex:"1",minHeight:It&&de.length===0?"200px":"0",width:En?"fit-content":"100%",maxWidth:"100%",overflowX:me?"hidden":Tt?"auto":"hidden",overflowY:"auto",backgroundColor:"#fff",willChange:"scroll-position"};return S.rowHeight&&(De["--ogrid-row-height"]=`${S.rowHeight}px`),h("div",{class:"ogrid-outer-container"},[h("div",{ref:M=>{n.value=M,d.value=M;},tabindex:0,role:"region","aria-label":Ae??(Lt?void 0:"Data grid"),"aria-labelledby":Lt,onPointerdown:E,onKeydown:Je,onContextmenu:D,"data-overflow-x":Tt?"true":"false","data-ogrid-scroll-container":"",style:De},[h("div",{class:"ogrid-scroll-wrapper"},[h("div",{style:{minWidth:Tt?`${re}px`:void 0,overflowX:"clip"}},[h("div",{ref:M=>{i.value=M;},class:["ogrid-table-container",It&&de.length>0?"ogrid-table-container--loading":""]},[...u.value&&f.value!==null?[h("div",{class:"ogrid-drop-indicator",style:{left:`${f.value}px`}})]:[],h("table",{ref:M=>{m.value=M;},class:"ogrid-table",role:"grid",style:{minWidth:`${re}px`},...v.value?{"data-virtual-scroll":""}:{}},[h("thead",{class:gt?"ogrid-thead ogrid-sticky-header":"ogrid-thead"},[...S.showColumnLetters?[h("tr",{class:"ogrid-column-letter-row"},[...B?[h("th",{class:"ogrid-column-letter-cell"})]:[],...A?[h("th",{class:"ogrid-column-letter-cell"})]:[],...N.map((M,z)=>{let{classes:ie,style:Ue}=ve(M);return h("th",{key:M.columnId,class:`ogrid-column-letter-cell ${ie}`,style:Ue},indexToColumnLetter(z))})])]:[],...Le.map((M,z)=>h("tr",{key:z,class:"ogrid-header-row"},[...z===Le.length-1&&B?[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:Me,indeterminate:Ge&&!Me,ariaLabel:"Select all rows",onChange:ie=>Pe(!!ie)}))]:[],...z===0&&z<Le.length-1&&B?[h("th",{rowSpan:Le.length-1,class:"ogrid-checkbox-spacer",style:{width:`${CHECKBOX_COLUMN_WIDTH}px`,minWidth:`${CHECKBOX_COLUMN_WIDTH}px`}})]:[],...z===Le.length-1&&A?[(()=>{let ie=X.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:B?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:3}},["#",h("div",{onPointerdown:Ue=>{ze(null),oe(null),n.value?.focus({preventScroll:true}),Ue.stopPropagation(),h$1(Ue,{columnId:ROW_NUMBER_COLUMN_ID,name:"#"});},class:"ogrid-resize-handle"})])})()]:[],...z===0&&z<Le.length-1&&A?[(()=>{let ie=X.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("th",{rowSpan:Le.length-1,class:"ogrid-row-number-spacer",style:{width:`${ie}px`,position:"sticky",left:B?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:3}})})()]:[],...M.map((ie,Ue)=>{if(ie.isGroup)return h("th",{key:Ue,colSpan:ie.colSpan,scope:"colgroup",class:"ogrid-column-group-header"},ie.label);if(!ie.columnDef)return null;let V=ie.columnDef,{classes:Oe,style:Te}=ve(V),se=S.sortBy===V.columnId?S.sortDirection==="asc"?"ascending":"descending":void 0;return h("th",{key:V.columnId,scope:"col","data-column-id":V.columnId,rowSpan:Le.length>1?Le.length-z:void 0,class:Oe,style:Te,"aria-sort":se,onPointerdown:Y=>p(V.columnId,Y)},[h("div",{class:"ogrid-header-content"},[h(e.ColumnHeaderFilter,getHeaderFilterConfig(V,wt)),h("button",{onClick:Y=>{Y.stopPropagation(),O.isOpen&&O.openForColumn===V.columnId?O.close():O.open(V.columnId,Y.currentTarget);},"aria-label":"Column options",title:"Column options",class:"ogrid-column-menu-btn"},"\u22EE")]),h("div",{onPointerdown:Y=>{ze(null),oe(null),n.value?.focus({preventScroll:true}),Y.stopPropagation(),h$1(Y,V);},onDblclick:Y=>P(Y,V),class:"ogrid-resize-handle"})])})]))]),...Z?[]:[h("tbody",{},(()=>{let M=v.value,z=c.value,ie=M?z.startIndex:0,Ue=M?Math.min(z.endIndex,de.length-1):de.length-1,V=[];M&&z.offsetTop>0&&V.push(h("tr",{key:"__vs-top",style:{height:`${z.offsetTop}px`}}));for(let Oe=ie;Oe<=Ue;Oe++){let Te=de[Oe];if(!Te)continue;let $e=pe(Te),se=Ce.has($e);V.push(h("tr",{key:$e,"data-row-id":$e,"aria-selected":se||void 0,onClick:l,style:{cursor:ce==="single"?"pointer":void 0}},[...B?[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":Oe,"data-col-index":0,onClick:y,class:"ogrid-checkbox-wrapper"},e.renderCheckbox({modelValue:se,ariaLabel:`Select row ${Oe+1}`,onChange:Y=>be($e,Y,Oe,s.value)})))]:[],...A?[(()=>{let Y=X.columnSizingOverrides[ROW_NUMBER_COLUMN_ID]?.widthPx??ROW_NUMBER_COLUMN_WIDTH;return h("td",{class:"ogrid-row-number-cell",style:{width:`${Y}px`,minWidth:`${Y}px`,maxWidth:`${Y}px`,padding:"6px",position:"sticky",left:B?`${CHECKBOX_COLUMN_WIDTH}px`:"0",zIndex:2}},String(te+Oe+1))})()]:[],...Re>0?[h("td",{key:"__col-spacer-left",style:{width:`${Re}px`,minWidth:`${Re}px`,maxWidth:`${Re}px`,padding:"0"}})]:[],...Ct.map(Y=>h("td",{key:Y.col.columnId,"data-column-id":Y.col.columnId,class:Y.tdClasses,style:Y.tdDynamicStyle},[k(Te,Y.col,Oe,He.get(Y.col.columnId)??0)])),...fe>0?[h("td",{key:"__col-spacer-right",style:{width:`${fe}px`,minWidth:`${fe}px`,maxWidth:`${fe}px`,padding:"0"}})]:[]]));}return M&&z.offsetBottom>0&&V.push(h("tr",{key:"__vs-bottom",style:{height:`${z.offsetBottom}px`}})),V})())]]),...Z&&S.emptyState?[e.renderEmptyState(S.emptyState)]:[]])])])]),...Ke?[h(Teleport,{to:"body"},h(e.GridContextMenu,{x:Ke.x,y:Ke.y,hasSelection:Ze,canUndo:We,canRedo:bt,onUndo:he??zo,onRedo:pt??zo,onCopy:dt,onCut:ct,onPaste:()=>{ke();},onSelectAll:Ye,onClose:yt}))]:[],h(Un,{containerRef:i,selectionRange:Ee,copyRange:ft,cutRange:mt,colOffset:L,items:de,visibleColumns:S.visibleColumns instanceof Set?Array.from(S.visibleColumns):S.visibleColumns,columnSizingOverrides:X.columnSizingOverrides,columnOrder:S.columnOrder}),...S.formulaReferences&&S.formulaReferences.length>0?[h(Ln,{containerEl:i.value,references:S.formulaReferences,colOffset:L})]:[],h(e.ColumnHeaderMenu,{isOpen:O.isOpen,anchorElement:O.anchorElement,onClose:O.close,onPinLeft:O.handlePinLeft,onPinRight:O.handlePinRight,onUnpin:O.handleUnpin,onSortAsc:O.handleSortAsc,onSortDesc:O.handleSortDesc,onClearSort:O.handleClearSort,onAutosizeThis:O.handleAutosizeThis,onAutosizeAll:O.handleAutosizeAll,canPinLeft:O.canPinLeft,canPinRight:O.canPinRight,canUnpin:O.canUnpin,currentSort:O.currentSort,isSortable:O.isSortable,isResizable:O.isResizable}),...$?[h(On,{totalCount:$.totalCount,filteredCount:$.filteredCount,selectedCount:$.selectedCount??Ce.size,selectedCellCount:Ee?(Math.abs(Ee.endRow-Ee.startRow)+1)*(Math.abs(Ee.endCol-Ee.startCol)+1):void 0,aggregation:$.aggregation,suppressRowCount:$.suppressRowCount})]:[],...It?[h("div",{class:"ogrid-loading-overlay"},e.renderSpinner(Pn))]:[]])}}})}var ht={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"};function Ga(e){let{renderCheckbox:o}=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),m=ref(null),s=ref(t.value),a=ref(0),u=()=>{let g=i.value,b=m.value;if(!g||!b)return;let E=g.getBoundingClientRect(),D=200,y=window.innerHeight-E.bottom,x=y<D&&E.top>y;b.style.position="fixed",b.style.left=`${E.left}px`,b.style.width=`${E.width}px`,b.style.maxHeight=`${D}px`,b.style.zIndex="9999",b.style.right="auto",b.style.textAlign="left",x?(b.style.top="auto",b.style.bottom=`${window.innerHeight-E.top}px`):b.style.top=`${E.bottom}px`;},f=null;onMounted(()=>{nextTick(()=>{if(i.value){t.editorType==="richSelect"&&v.value?v.value.focus({preventScroll:true}):i.value.focus({preventScroll:true}),u();let g=i.value,b=g.closest("[data-ogrid-scroll-container]")??g.closest('[style*="overflow"]'),E=()=>{t.onCancel&&t.onCancel();},D=requestAnimationFrame(()=>{b&&b.addEventListener("scroll",E,{passive:true}),window.addEventListener("scroll",E,{passive:true});});f=()=>{cancelAnimationFrame(D),b&&b.removeEventListener("scroll",E),window.removeEventListener("scroll",E);};return}n.value?.focus({preventScroll:true}),n.value?.select();});}),onUnmounted(()=>{f?.();}),watch(()=>t.value,g=>{s.value=g;}),(()=>{let b=(t.column.cellEditorParams?.values??[]).findIndex(E=>String(E)===String(t.value));a.value=Math.max(b,0);})();let d=()=>{nextTick(()=>{let g=m.value;if(!g)return;g.children[a.value]?.scrollIntoView({block:"nearest"});});},c=g=>{let b=t.column.cellEditorParams?.formatValue;return b?b(g):g!=null?String(g):""},C=g=>{let b=t.column.cellEditorParams?.values??[];switch(g.key){case "ArrowDown":g.preventDefault(),a.value=Math.min(a.value+1,b.length-1),d();break;case "ArrowUp":g.preventDefault(),a.value=Math.max(a.value-1,0),d();break;case "Enter":g.preventDefault(),g.stopPropagation(),b.length>0&&a.value<b.length&&t.onCommit(b[a.value]);break;case "Tab":g.preventDefault(),b.length>0&&a.value<b.length&&t.onCommit(b[a.value]);break;case "Escape":g.preventDefault(),g.stopPropagation(),t.onCancel();break}},r=ref(""),v=ref(null),h$1=ref(null),P=computed(()=>{let g=t.column.cellEditorParams?.values??[],b=r.value.trim().toLowerCase();return b?g.filter(E=>c(E).toLowerCase().includes(b)):g}),I=()=>{nextTick(()=>{let g=h$1.value;if(!g)return;g.children[a.value]?.scrollIntoView({block:"nearest"});});},w=g=>{let b=P.value;switch(g.key){case "ArrowDown":g.preventDefault(),a.value=Math.min(a.value+1,b.length-1),I();break;case "ArrowUp":g.preventDefault(),a.value=Math.max(a.value-1,0),I();break;case "Enter":g.preventDefault(),g.stopPropagation(),b.length>0&&a.value<b.length&&t.onCommit(b[a.value]);break;case "Escape":g.preventDefault(),g.stopPropagation(),t.onCancel();break}};return ()=>{if(t.editorType==="checkbox"){let g=!!t.value;return h("div",{style:{...ht,justifyContent:"center"}},o({checked:g,onChange:b=>t.onCommit(b),onCancel:t.onCancel}))}if(t.editorType==="select"){let g=t.column.cellEditorParams?.values??[];return h("div",{ref:b=>{i.value=b;},tabindex:0,style:{...ht,position:"relative"},onKeydown:C},[h("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",cursor:"pointer",fontSize:"13px",color:"inherit"}},[h("span",c(t.value)),h("span",{style:{marginLeft:"4px",fontSize:"10px",opacity:"0.5"}},"\u25BE")]),h("div",{ref:b=>{m.value=b;},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"}},[...g.map((b,E)=>h("div",{key:String(b),role:"option","aria-selected":E===a.value,onClick:()=>t.onCommit(b),style:{padding:"6px 8px",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:"13px",...E===a.value?{background:"var(--ogrid-bg-hover, #e8f0fe)"}:{}}},c(b)))])])}if(t.editorType==="richSelect"){let g=P.value;return h("div",{ref:b=>{i.value=b;},style:{...ht,position:"relative"}},[h("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",cursor:"pointer",fontSize:"13px",color:"inherit"}},[h("span",c(t.value)),h("span",{style:{marginLeft:"4px",fontSize:"10px",opacity:"0.5"}},"\u25BE")]),h("div",{ref:b=>{m.value=b;},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:b=>{v.value=b;},type:"text",value:r.value,placeholder:"Search...",onInput:b=>{r.value=b.target.value,a.value=0;},onKeydown:w,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:b=>{h$1.value=b;}},g.map((b,E)=>h("div",{key:String(b),role:"option","aria-selected":E===a.value,onClick:()=>t.onCommit(b),style:{padding:"6px 8px",cursor:"pointer",color:"var(--ogrid-fg, #242424)",fontSize:"13px",...E===a.value?{background:"var(--ogrid-bg-hover, #e8f0fe)"}:{}}},c(b)))),...g.length===0?[h("div",{style:{padding:"6px 8px",color:"var(--ogrid-muted, #999)",fontSize:"13px"}},"No matches")]:[]])])}if(t.editorType==="date"){let g=t.column.cellEditorParams?.dateFormat??t.column.dateFormat??DEFAULT_DATE_FORMAT,b=t.column.cellEditorParams?.editorType??"text",E=F=>{if(b!=="native"){let S=parseUserInputDate(F,g);if(S!==null){let X=S.getUTCFullYear().toString().padStart(4,"0"),Q=(S.getUTCMonth()+1).toString().padStart(2,"0"),J=S.getUTCDate().toString().padStart(2,"0");t.onCommit(`${X}-${Q}-${J}`);}else t.onCommit(F||null);}else t.onCommit(F);},D=F=>{F.key==="Enter"&&(F.preventDefault(),E(String(s.value??""))),F.key==="Escape"&&(F.preventDefault(),t.onCancel()),F.key==="Tab"&&(F.preventDefault(),E(String(s.value??"")));};if(b==="native"){let F=(()=>{if(s.value==null)return "";let S=String(s.value);return S.match(/^\d{4}-\d{2}-\d{2}/)?S.substring(0,10):S})();return h("div",{style:ht},h("input",{ref:S=>{n.value=S;},type:"date",value:F,style:{width:"100%",height:"100%",border:"none",outline:"none",padding:"0 4px",fontSize:"inherit",boxSizing:"border-box"},onInput:S=>{s.value=S.target.value;},onKeydown:D,onBlur:()=>E(String(s.value??""))}))}let y=formatDateForDisplay(t.value,g)??"";(s.value==null||s.value==="")&&(s.value=y);let x=getDateInputPlaceholder(g);return h("div",{style:ht},h("input",{ref:F=>{n.value=F;},type:"text",value:s.value,placeholder:x,style:{width:"100%",height:"100%",border:"none",outline:"none",padding:"0 4px",fontSize:"inherit",boxSizing:"border-box"},onInput:F=>{s.value=F.target.value;},onKeydown:D,onBlur:()=>E(String(s.value??""))}))}return h("div",{style:ht},h("input",{ref:g=>{n.value=g;},type:"text",value:s.value!=null?String(s.value):"",style:{width:"100%",height:"100%",border:"none",outline:"none",padding:"0 4px",fontSize:"inherit",boxSizing:"border-box"},onInput:g=>{s.value=g.target.value;},onKeydown:g=>{g.key==="Enter"&&(g.preventDefault(),t.onCommit(s.value)),g.key==="Escape"&&(g.preventDefault(),t.onCancel()),g.key==="Tab"&&(g.preventDefault(),t.onCommit(s.value));},onBlur:()=>t.onCommit(s.value)}))}}})}var $a=240,Jn=36,Tn={columns:"Columns",filters:"Filters"},qa={columns:"\u2261",filters:"\u2A65"};function No(e){let o=e.activePanel!==null,t=e.position??"right",n={display:"flex",flexDirection:"column",width:`${Jn}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":Tn[a],title:Tn[a],onClick:()=>e.onPanelChange(e.activePanel===a?null:a),style:{width:`${Jn}px`,height:`${Jn}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"}},qa[a]))),m=null;if(o&&e.activePanel){let a={width:`${$a}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)"}},u=[];if(e.activePanel==="columns"){let f=e.columns.every(p=>e.visibleColumns.has(p.columnId));u.push(h("div",{style:{display:"flex",gap:"8px",marginBottom:"8px"}},[h("button",{disabled:f,onClick:()=>{let p=new Set(e.visibleColumns);e.columns.forEach(d=>p.add(d.columnId)),e.onSetVisibleColumns(p);},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 p=new Set;e.columns.forEach(d=>{d.required&&e.visibleColumns.has(d.columnId)&&p.add(d.columnId);}),e.onSetVisibleColumns(p);},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(p=>{u.push(h("label",{key:p.columnId,style:{display:"flex",alignItems:"center",gap:"6px",padding:"2px 0",cursor:"pointer"}},[h("input",{type:"checkbox",checked:e.visibleColumns.has(p.columnId),disabled:p.required,onChange:d=>e.onVisibilityChange(p.columnId,d.target.checked)}),h("span",null,p.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(f=>{let p=f.filterField,d=[h("div",{style:{fontWeight:"500",marginBottom:"4px",fontSize:"13px"}},f.name)];if(f.filterType==="text"){let c=e.filters[p],C=c?.type==="text"?c.value:"";d.push(h("input",{type:"text",value:C,onInput:r=>{let v=r.target.value;e.onFilterChange(p,v?{type:"text",value:v}:void 0);},placeholder:`Filter ${f.name}...`,"aria-label":`Filter ${f.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(f.filterType==="multiSelect"){let C=(e.filterOptions[p]??[]).map(r=>{let v=e.filters[p],h$1=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:h$1,onChange:P=>{let I=e.filters[p],w=I?.type==="multiSelect"?I.value:[],g=P.target.checked?[...w,r]:w.filter(b=>b!==r);e.onFilterChange(p,g.length>0?{type:"multiSelect",value:g}:void 0);}}),h("span",null,r)])});d.push(h("div",{style:{maxHeight:"120px",overflowY:"auto"},role:"group","aria-label":`${f.name} options`},C));}if(f.filterType==="date"){let c=e.filters[p],C=c?.type==="date"?c.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,h=C.to;e.onFilterChange(p,v||h?{type:"date",value:{from:v,to:h}}:void 0);},"aria-label":`${f.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,h=C.from;e.onFilterChange(p,h||v?{type:"date",value:{from:h,to:v}}:void 0);},"aria-label":`${f.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:f.columnId,style:{marginBottom:"12px"}},d));})),m=h("div",{role:"tabpanel","aria-label":Tn[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,Tn[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 s=[];return t==="left"?(s.push(i),m&&s.push(m)):(m&&s.push(m),s.push(i)),h("div",{style:{display:"flex",flexDirection:"row",flexShrink:"0"},role:"complementary","aria-label":"Side bar"},s)}function Xa(e){return defineComponent({name:"OGrid",props:{gridProps:{type:Object,required:true}},setup(o,{expose:t}){let n=computed(()=>o.gridProps),{dataGridProps:i,pagination:m,columnChooser:s,layout:a,api:u}=_t(n);t({api:u});let f=ref(false),p=()=>{f.value=!f.value;},d=c=>{c.key==="Escape"&&f.value&&(f.value=false);};return onMounted(()=>{document.addEventListener("keydown",d);}),onUnmounted(()=>{document.removeEventListener("keydown",d);}),()=>{let c=a.value.sideBarProps,C=c!=null,r=c?.position??"right",v=[];a.value.toolbar&&v.push(a.value.toolbar);let P=a.value.fullScreen===true?h("button",{type:"button",title:f.value?"Exit fullscreen":"Fullscreen","aria-label":f.value?"Exit fullscreen":"Fullscreen",onClick:p,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))"}},[f.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,I=s.value.placement==="toolbar"?h(e.ColumnChooser,{columns:s.value.columns,visibleColumns:s.value.visibleColumns,onVisibilityChange:s.value.onVisibilityChange}):null,w=h(e.PaginationControls,{currentPage:m.value.page,pageSize:m.value.pageSize,totalCount:m.value.displayTotalCount,onPageChange:m.value.setPage,onPageSizeChange:x=>{m.value.setPageSize(x);},pageSizeOptions:m.value.pageSizeOptions,entityLabelPlural:m.value.entityLabelPlural}),g=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(No(c)),b.push(g),C&&r!=="left"&&b.push(No(c));let E=v.length>0||I!=null||P!=null,D=f.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"},y=f.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:D},[h("div",{style:y??{}},[...E?[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"}},[...I?[I]:[],...P?[P]:[]])])]:[],...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))"}},[w])])])}}})}export{Mn as FormulaBar,Ln as FormulaRefOverlay,Un as MarchingAntsOverlay,An as SheetTabs,On as StatusBar,Fa as createDataGridTable,Ga as createInlineCellEditor,Xa as createOGrid,Rn as getCellInteractionProps,$t as useActiveCell,Kt as useCellEditing,qt as useCellSelection,jt as useClipboard,Lo as useColumnChooserState,ko as useColumnHeaderFilterState,on as useColumnHeaderMenuState,tn as useColumnPinning,pn as useColumnReorder,rn as useColumnResize,Xt as useContextMenu,ln as useDataGridState,hn as useDataGridTableSetup,mn as useDateFilterState,an as useDebounce,Do as useDebouncedCallback,Jt as useFillHandle,Gt as useFilterOptions,zt as useFormulaBar,Bo as useInlineCellEditorState,Yt as useKeyboardNavigation,un as useMultiSelectFilterState,_t as useOGrid,cn as usePeopleFilterState,Vo as useRichSelectState,Wt as useRowSelection,Ut as useSideBarState,en as useTableLayout,sn as useTextFilterState,Qt as useUndoRedo,gn as useVirtualScroll};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/* OGrid Shared Layout Styles
|
|
1
|
+
/* OGrid Shared Layout Styles - consumed by vue-vuetify and vue-primevue */
|
|
2
2
|
|
|
3
3
|
/* Remove focus outline from scrollable wrapper (keyboard nav is handled via cell outlines).
|
|
4
4
|
[role="region"][tabindex] has attribute-selector specificity (0,2,0) which beats any
|
|
5
|
-
framework's single-class or element rule
|
|
5
|
+
framework's single-class or element rule - no !important needed. */
|
|
6
6
|
[role="region"][tabindex="0"] {
|
|
7
7
|
outline: none;
|
|
8
8
|
}
|
|
@@ -133,6 +133,22 @@
|
|
|
133
133
|
min-width: 24px;
|
|
134
134
|
height: 24px;
|
|
135
135
|
transition: background-color 0.15s;
|
|
136
|
+
/* Always reserve space so the sort arrow never shifts when the menu button appears.
|
|
137
|
+
On hover-capable devices: hidden by default, revealed on column hover. */
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@media (hover: hover) {
|
|
141
|
+
.ogrid-column-menu-btn {
|
|
142
|
+
visibility: hidden;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
th:hover .ogrid-column-menu-btn {
|
|
146
|
+
visibility: visible;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.ogrid-column-menu-btn:focus-visible {
|
|
151
|
+
visibility: visible;
|
|
136
152
|
}
|
|
137
153
|
|
|
138
154
|
.ogrid-column-menu-btn:hover {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* FormulaRefOverlay
|
|
2
|
+
* FormulaRefOverlay - Renders colored border overlays on cells referenced by
|
|
3
3
|
* the active formula, like Excel's reference highlighting.
|
|
4
4
|
*
|
|
5
5
|
* Port of React's FormulaRefOverlay component.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MarchingAntsOverlay
|
|
2
|
+
* MarchingAntsOverlay - Renders range overlays on top of the grid:
|
|
3
3
|
*
|
|
4
4
|
* 1. **Selection range**: solid green border around the current selection
|
|
5
5
|
* 2. **Copy/Cut range**: animated dashed border (marching ants) like Excel
|
|
@@ -14,44 +14,44 @@ export declare const MarchingAntsOverlay: import("vue").DefineComponent<import("
|
|
|
14
14
|
type: PropType<Ref<HTMLElement | null>>;
|
|
15
15
|
required: true;
|
|
16
16
|
};
|
|
17
|
-
/** Current selection range
|
|
17
|
+
/** Current selection range - solid green border */
|
|
18
18
|
selectionRange: {
|
|
19
19
|
type: PropType<ISelectionRange | null>;
|
|
20
20
|
default: null;
|
|
21
21
|
};
|
|
22
|
-
/** Copy range
|
|
22
|
+
/** Copy range - animated dashed border */
|
|
23
23
|
copyRange: {
|
|
24
24
|
type: PropType<ISelectionRange | null>;
|
|
25
25
|
default: null;
|
|
26
26
|
};
|
|
27
|
-
/** Cut range
|
|
27
|
+
/** Cut range - animated dashed border */
|
|
28
28
|
cutRange: {
|
|
29
29
|
type: PropType<ISelectionRange | null>;
|
|
30
30
|
default: null;
|
|
31
31
|
};
|
|
32
|
-
/** Column offset
|
|
32
|
+
/** Column offset - 1 when checkbox column is present, else 0 */
|
|
33
33
|
colOffset: {
|
|
34
34
|
type: NumberConstructor;
|
|
35
35
|
required: true;
|
|
36
36
|
};
|
|
37
|
-
/** Items array
|
|
37
|
+
/** Items array - triggers re-measurement when data changes (e.g., sorting) */
|
|
38
38
|
items: {
|
|
39
39
|
type: PropType<readonly unknown[]>;
|
|
40
40
|
required: true;
|
|
41
41
|
};
|
|
42
|
-
/** Visible columns
|
|
42
|
+
/** Visible columns - triggers re-measurement when columns are hidden/shown */
|
|
43
43
|
visibleColumns: {
|
|
44
44
|
type: PropType<readonly string[] | undefined>;
|
|
45
45
|
default: undefined;
|
|
46
46
|
};
|
|
47
|
-
/** Column sizing overrides
|
|
47
|
+
/** Column sizing overrides - triggers re-measurement when columns are resized */
|
|
48
48
|
columnSizingOverrides: {
|
|
49
49
|
type: PropType<Record<string, {
|
|
50
50
|
widthPx: number;
|
|
51
51
|
}>>;
|
|
52
52
|
required: true;
|
|
53
53
|
};
|
|
54
|
-
/** Column order
|
|
54
|
+
/** Column order - triggers re-measurement when columns are reordered */
|
|
55
55
|
columnOrder: {
|
|
56
56
|
type: PropType<readonly string[] | undefined>;
|
|
57
57
|
default: undefined;
|
|
@@ -64,44 +64,44 @@ export declare const MarchingAntsOverlay: import("vue").DefineComponent<import("
|
|
|
64
64
|
type: PropType<Ref<HTMLElement | null>>;
|
|
65
65
|
required: true;
|
|
66
66
|
};
|
|
67
|
-
/** Current selection range
|
|
67
|
+
/** Current selection range - solid green border */
|
|
68
68
|
selectionRange: {
|
|
69
69
|
type: PropType<ISelectionRange | null>;
|
|
70
70
|
default: null;
|
|
71
71
|
};
|
|
72
|
-
/** Copy range
|
|
72
|
+
/** Copy range - animated dashed border */
|
|
73
73
|
copyRange: {
|
|
74
74
|
type: PropType<ISelectionRange | null>;
|
|
75
75
|
default: null;
|
|
76
76
|
};
|
|
77
|
-
/** Cut range
|
|
77
|
+
/** Cut range - animated dashed border */
|
|
78
78
|
cutRange: {
|
|
79
79
|
type: PropType<ISelectionRange | null>;
|
|
80
80
|
default: null;
|
|
81
81
|
};
|
|
82
|
-
/** Column offset
|
|
82
|
+
/** Column offset - 1 when checkbox column is present, else 0 */
|
|
83
83
|
colOffset: {
|
|
84
84
|
type: NumberConstructor;
|
|
85
85
|
required: true;
|
|
86
86
|
};
|
|
87
|
-
/** Items array
|
|
87
|
+
/** Items array - triggers re-measurement when data changes (e.g., sorting) */
|
|
88
88
|
items: {
|
|
89
89
|
type: PropType<readonly unknown[]>;
|
|
90
90
|
required: true;
|
|
91
91
|
};
|
|
92
|
-
/** Visible columns
|
|
92
|
+
/** Visible columns - triggers re-measurement when columns are hidden/shown */
|
|
93
93
|
visibleColumns: {
|
|
94
94
|
type: PropType<readonly string[] | undefined>;
|
|
95
95
|
default: undefined;
|
|
96
96
|
};
|
|
97
|
-
/** Column sizing overrides
|
|
97
|
+
/** Column sizing overrides - triggers re-measurement when columns are resized */
|
|
98
98
|
columnSizingOverrides: {
|
|
99
99
|
type: PropType<Record<string, {
|
|
100
100
|
widthPx: number;
|
|
101
101
|
}>>;
|
|
102
102
|
required: true;
|
|
103
103
|
};
|
|
104
|
-
/** Column order
|
|
104
|
+
/** Column order - triggers re-measurement when columns are reordered */
|
|
105
105
|
columnOrder: {
|
|
106
106
|
type: PropType<readonly string[] | undefined>;
|
|
107
107
|
default: undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* StatusBar component
|
|
2
|
+
* StatusBar component - Shows row counts and aggregations at the bottom of the data grid.
|
|
3
3
|
* Displays filteredCount, totalCount, and optional aggregations (sum, avg, min, max, count).
|
|
4
4
|
*/
|
|
5
5
|
import { type PropType } from 'vue';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared DataGridTable factory for Vue UI packages.
|
|
3
3
|
*
|
|
4
|
-
* Both vue-vuetify and vue-primevue DataGridTable components are 97% identical
|
|
4
|
+
* Both vue-vuetify and vue-primevue DataGridTable components are 97% identical -
|
|
5
5
|
* they only differ in which checkbox and spinner components they render.
|
|
6
6
|
* This factory extracts all shared logic into one place.
|
|
7
7
|
*/
|
|
@@ -6,11 +6,6 @@ export interface CreateInlineCellEditorOptions {
|
|
|
6
6
|
onChange: (val: boolean) => void;
|
|
7
7
|
onCancel: () => void;
|
|
8
8
|
}) => VNode;
|
|
9
|
-
renderDatePicker: (props: {
|
|
10
|
-
value: string;
|
|
11
|
-
onChange: (val: string) => void;
|
|
12
|
-
onCancel: () => void;
|
|
13
|
-
}) => VNode;
|
|
14
9
|
}
|
|
15
10
|
export declare function createInlineCellEditor(options: CreateInlineCellEditorOptions): import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
16
11
|
value: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared OGrid factory for Vue UI packages.
|
|
3
3
|
*
|
|
4
|
-
* Both vue-vuetify and vue-primevue OGrid components are 100% identical
|
|
4
|
+
* Both vue-vuetify and vue-primevue OGrid components are 100% identical -
|
|
5
5
|
* they only differ in which DataGridTable, ColumnChooser, and PaginationControls
|
|
6
6
|
* components they use. This factory extracts all shared logic into one place.
|
|
7
7
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* useFormulaEngine
|
|
2
|
+
* useFormulaEngine - Vue composable for integrating the formula engine with the grid.
|
|
3
3
|
*
|
|
4
4
|
* Lazily creates a FormulaEngine instance when `formulas` ref is true.
|
|
5
5
|
* Provides accessor bridge between grid data and formula coordinates.
|
|
@@ -24,7 +24,7 @@ export interface UseFormulaEngineParams<T> {
|
|
|
24
24
|
onFormulaRecalc?: (result: IRecalcResult) => void;
|
|
25
25
|
/** Custom formula functions. */
|
|
26
26
|
formulaFunctions?: Record<string, IFormulaFunction>;
|
|
27
|
-
/** Named ranges: name
|
|
27
|
+
/** Named ranges: name to cell/range reference string. */
|
|
28
28
|
namedRanges?: Record<string, string>;
|
|
29
29
|
/** Sheet accessors for cross-sheet references. */
|
|
30
30
|
sheets?: Record<string, IGridDataAccessor>;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { ref } from 'vue';
|
|
2
|
+
import type { DateFormat } from '@alaarab/ogrid-core';
|
|
2
3
|
export type InlineCellEditorType = 'text' | 'select' | 'checkbox' | 'richSelect' | 'date';
|
|
3
4
|
export interface UseInlineCellEditorStateParams {
|
|
4
5
|
value: unknown;
|
|
5
6
|
editorType: InlineCellEditorType;
|
|
6
7
|
onCommit: (value: unknown) => void;
|
|
7
8
|
onCancel: () => void;
|
|
9
|
+
/** Date format pattern (e.g. 'MM/DD/YYYY'). Only used when editorType is 'date'. */
|
|
10
|
+
dateFormat?: DateFormat;
|
|
11
|
+
/** Date editor widget type. 'native' uses <input type="date">, 'text' uses text input. */
|
|
12
|
+
dateEditorType?: 'text' | 'native';
|
|
8
13
|
}
|
|
9
14
|
export interface UseInlineCellEditorStateResult {
|
|
10
15
|
localValue: ReturnType<typeof ref<string>>;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { ISheetDef, IColumnReorderConfig, CsvColumn, FormulaExportOptions, StatusBarPart, StatusBarPartsInput, PaginationViewModel, GridContextMenuItem, IColumnHeaderMenuItem, GridContextMenuHandlerProps, ColumnHeaderMenuInput, ColumnHeaderMenuHandlers, ParseValueResult, AggregationResult, GridRowComparatorProps, ColumnPinState, IDropTarget, ICalculateDropTargetParams, IVisibleRange, IVisibleColumnRange, SortFilterRequest, SortFilterResponse, OverlayRect, ISortState, ArrowNavigationContext, ArrowNavigationResult, IFillFormulaOptions, FormulaReference, IResponsiveColumnsConfig, ZIndexKey, ICellAddress, ICellRange, CellKey, FormulaErrorType, TokenType, Token, ASTNode, BinaryOp, IFormulaContext, IFormulaFunction, IEvaluator, IRecalcResult, IFormulaEngineConfig, IGridDataAccessor, INamedRange, IAuditEntry, IAuditTrail, } from '@alaarab/ogrid-core';
|
|
2
|
-
export { escapeCsvValue, buildCsvHeader, buildCsvRows, exportToCsv, triggerCsvDownload, getCellValue, isColumnEditable, createGridDataAccessor, flattenColumns, buildHeaderRows, isFilterConfig, getFilterField, mergeFilter, deriveFilterOptionsFromData, getMultiSelectFilterFields, getStatusBarParts, getDataGridStatusBarConfig, getPaginationViewModel, PAGE_SIZE_OPTIONS, MAX_PAGE_BUTTONS, GRID_CONTEXT_MENU_ITEMS, COLUMN_HEADER_MENU_ITEMS, getContextMenuHandlers, getColumnHeaderMenuItems, formatShortcut, parseValue, numberParser, currencyParser, dateParser, emailParser, booleanParser, computeAggregations, processClientSideData, areGridRowPropsEqual, isRowInRange, getPinStateForColumn, reorderColumnArray, calculateDropTarget, computeVisibleRange, computeTotalHeight, getScrollTopForRow, computeVisibleColumnRange, partitionColumnsForVirtualization, createSortFilterWorker, terminateSortFilterWorker, extractValueMatrix, processClientSideDataAsync, CellDescriptorCache, debounce, measureRange, buildCellIndex, injectGlobalStyles, computeNextSortState, measureColumnContentWidth, AUTOSIZE_EXTRA_PX, AUTOSIZE_MAX_PX, findCtrlArrowTarget, computeTabNavigation, computeArrowNavigation, applyCellDeletion, rangesEqual, clampSelectionToBounds, computeAutoScrollSpeed, applyRangeRowSelection, computeRowSelectionState, formatCellValueForTsv, formatSelectionAsTsv, parseTsvClipboard, applyPastedValues, applyCutClear, applyFillValues, UndoRedoStack, validateColumns, validateRowIds, validateVirtualScrollConfig, indexToColumnLetter, columnLetterToIndex, formatCellReference, getResponsiveHiddenColumns, RESPONSIVE_BREAKPOINTS, resolveResponsiveConfig, applyResponsiveHiding, } from '@alaarab/ogrid-core';
|
|
2
|
+
export { escapeCsvValue, buildCsvHeader, buildCsvRows, exportToCsv, triggerCsvDownload, getCellValue, isColumnEditable, createGridDataAccessor, flattenColumns, buildHeaderRows, isFilterConfig, getFilterField, mergeFilter, deriveFilterOptionsFromData, getMultiSelectFilterFields, getStatusBarParts, getDataGridStatusBarConfig, getPaginationViewModel, PAGE_SIZE_OPTIONS, MAX_PAGE_BUTTONS, GRID_CONTEXT_MENU_ITEMS, COLUMN_HEADER_MENU_ITEMS, getContextMenuHandlers, getColumnHeaderMenuItems, formatShortcut, parseValue, numberParser, currencyParser, dateParser, emailParser, booleanParser, computeAggregations, processClientSideData, areGridRowPropsEqual, isRowInRange, getPinStateForColumn, reorderColumnArray, calculateDropTarget, computeVisibleRange, computeTotalHeight, getScrollTopForRow, computeVisibleColumnRange, partitionColumnsForVirtualization, createSortFilterWorker, terminateSortFilterWorker, extractValueMatrix, processClientSideDataAsync, CellDescriptorCache, debounce, measureRange, buildCellIndex, injectGlobalStyles, computeNextSortState, measureColumnContentWidth, AUTOSIZE_EXTRA_PX, AUTOSIZE_MAX_PX, findCtrlArrowTarget, computeTabNavigation, computeArrowNavigation, applyCellDeletion, rangesEqual, clampSelectionToBounds, computeAutoScrollSpeed, applyRangeRowSelection, computeRowSelectionState, formatCellValueForTsv, formatSelectionAsTsv, parseTsvClipboard, applyPastedValues, applyCutClear, applyFillValues, areFillCompatible, UndoRedoStack, validateColumns, validateRowIds, validateVirtualScrollConfig, indexToColumnLetter, columnLetterToIndex, formatCellReference, getResponsiveHiddenColumns, RESPONSIVE_BREAKPOINTS, resolveResponsiveConfig, applyResponsiveHiding, } from '@alaarab/ogrid-core';
|
|
3
3
|
export { CHECKBOX_COLUMN_WIDTH, ROW_NUMBER_COLUMN_WIDTH, ROW_NUMBER_COLUMN_ID, ROW_NUMBER_COLUMN_MIN_WIDTH, DEFAULT_MIN_COLUMN_WIDTH, CELL_PADDING, GRID_BORDER_RADIUS, DEFAULT_DEBOUNCE_MS, PEOPLE_SEARCH_DEBOUNCE_MS, SIDEBAR_TRANSITION_MS, Z_INDEX, } from '@alaarab/ogrid-core';
|
|
4
4
|
export { FormulaError, FormulaEngine, FormulaEvaluator, DependencyGraph, tokenize, parse, createBuiltInFunctions, parseCellRef, parseRange, formatAddress, toCellKey, fromCellKey, adjustFormulaReferences, toNumber, formulaToString, toBoolean, flattenArgs, isFormulaError, REF_ERROR, DIV_ZERO_ERROR, VALUE_ERROR, NAME_ERROR, CIRC_ERROR, GENERAL_ERROR, NA_ERROR, extractFormulaReferences, processFormulaBarCommit, deriveFormulaBarText, handleFormulaBarKeyDown, canInsertReference, insertReferenceAtCursor, FORMULA_REF_COLORS, FORMULA_BAR_CSS, FORMULA_BAR_STYLES, } from '@alaarab/ogrid-core/formula';
|
|
5
5
|
export type { IColumnDef, ICellEditorProps, IOGridProps, IOGridClientProps, IOGridServerProps, IOGridDataGridProps, } from './types';
|
|
@@ -108,7 +108,7 @@ interface IOGridBaseProps<T> {
|
|
|
108
108
|
onFormulaRecalc?: (result: IRecalcResult) => void;
|
|
109
109
|
/** Custom formula functions to register with the formula engine (e.g. { MYFUNC: { minArgs: 1, maxArgs: 1, evaluate: ... } }). */
|
|
110
110
|
formulaFunctions?: Record<string, IFormulaFunction>;
|
|
111
|
-
/** Named ranges for the formula engine: name
|
|
111
|
+
/** Named ranges for the formula engine: name to cell/range ref string (e.g. { Revenue: 'A1:A10' }). */
|
|
112
112
|
namedRanges?: Record<string, string>;
|
|
113
113
|
/** Sheet accessors for cross-sheet formula references (e.g. { Sheet2: accessor }). */
|
|
114
114
|
sheets?: Record<string, IGridDataAccessor>;
|
|
@@ -232,7 +232,7 @@ export interface IOGridDataGridProps<T> {
|
|
|
232
232
|
getDependents?: (col: number, row: number) => IAuditEntry[];
|
|
233
233
|
/** Get full audit trail for a cell. */
|
|
234
234
|
getAuditTrail?: (col: number, row: number) => IAuditTrail | null;
|
|
235
|
-
/** Monotonic counter incremented on each formula recalculation
|
|
235
|
+
/** Monotonic counter incremented on each formula recalculation - used for cache invalidation. */
|
|
236
236
|
formulaVersion?: number;
|
|
237
237
|
/** Cell references to highlight (from active formula in formula bar). */
|
|
238
238
|
formulaReferences?: FormulaReference[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alaarab/ogrid-vue",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.7",
|
|
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.5.
|
|
39
|
+
"@alaarab/ogrid-core": "2.5.7"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"vue": "^3.3.0"
|